From 79b0c01998aff44667871119a22b46bf4a0892ea Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Thu, 4 Dec 2025 19:02:19 +0800 Subject: [PATCH 1/6] Avoid hard-coding definition vocabulary to be compatible with different sizes --- src/whisper.cpp | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/whisper.cpp b/src/whisper.cpp index f6793cb237b..da1d8064ceb 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -453,7 +453,7 @@ struct whisper_vocab { } int num_languages() const { - return n_vocab - 51765 - (is_multilingual() ? 1 : 0); + return n_vocab - token_to_id.size() - 1509; } }; @@ -1621,22 +1621,20 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con //printf("%s: vocab[%d] = '%s'\n", __func__, i, word.c_str()); } - vocab.n_vocab = model.hparams.n_vocab; - if (vocab.is_multilingual()) { - vocab.token_eot++; - vocab.token_sot++; - - // account for variable number of language tokens - const int dt = vocab.num_languages() - 98; - - vocab.token_translate += dt; - vocab.token_transcribe += dt; - vocab.token_solm += dt; - vocab.token_prev += dt; - vocab.token_nosp += dt; - vocab.token_not += dt; - vocab.token_beg += dt; - } + size_t common_vocab_size = vocab.token_to_id.size(); // common vocab size, excluding special tokens + vocab.n_vocab = model.hparams.n_vocab; // all tokens, including special tokens + + vocab.token_eot = common_vocab_size; // <|endoftext|> + vocab.token_sot = common_vocab_size + 1; // <|startoftext|> + // [common_vocab_size + 2, vocab.n_vocab - 1504) are language tokens + // num_language = vocab.token_translate - vocab.token_sot = vocab.n_vocab - vocab.token_to_id.size() - 1509 + vocab.token_translate = vocab.n_vocab - 1507; // <|translate|> + vocab.token_transcribe = vocab.n_vocab - 1506; // <|transcribe|> + vocab.token_solm = vocab.n_vocab - 1505; // <|startoflm|> + vocab.token_prev = vocab.n_vocab - 1504; // <|startofprev|> + vocab.token_nosp = vocab.n_vocab - 1503; // <|nospeech|> + vocab.token_not = vocab.n_vocab - 1502; // <|notimestamps|> + vocab.token_beg = vocab.n_vocab - 1501; // timestamps from <|0.00|> to <|30.00|>, 1501 tokens if (n_vocab < model.hparams.n_vocab) { WHISPER_LOG_INFO("%s: adding %d extra tokens\n", __func__, model.hparams.n_vocab - n_vocab); From 43d873ca5c4703d630387a7329886355256c99e8 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Thu, 4 Dec 2025 20:04:50 +0800 Subject: [PATCH 2/6] modify comment --- src/whisper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whisper.cpp b/src/whisper.cpp index da1d8064ceb..0f64ca49521 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -1626,7 +1626,7 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con vocab.token_eot = common_vocab_size; // <|endoftext|> vocab.token_sot = common_vocab_size + 1; // <|startoftext|> - // [common_vocab_size + 2, vocab.n_vocab - 1504) are language tokens + // [common_vocab_size + 2, vocab.n_vocab - 1507) are language tokens // num_language = vocab.token_translate - vocab.token_sot = vocab.n_vocab - vocab.token_to_id.size() - 1509 vocab.token_translate = vocab.n_vocab - 1507; // <|translate|> vocab.token_transcribe = vocab.n_vocab - 1506; // <|transcribe|> From ccd9b6ef80e9c3df5d843c67b584fbbfb35c5a96 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Sat, 6 Dec 2025 20:19:13 +0800 Subject: [PATCH 3/6] fix num_language(): incorrect after loading special tokens --- src/whisper.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/whisper.cpp b/src/whisper.cpp index 0f64ca49521..d88e0ad4d9c 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -453,7 +453,7 @@ struct whisper_vocab { } int num_languages() const { - return n_vocab - token_to_id.size() - 1509; + return token_translate - token_sot - 1; } }; @@ -1621,13 +1621,12 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con //printf("%s: vocab[%d] = '%s'\n", __func__, i, word.c_str()); } - size_t common_vocab_size = vocab.token_to_id.size(); // common vocab size, excluding special tokens vocab.n_vocab = model.hparams.n_vocab; // all tokens, including special tokens - vocab.token_eot = common_vocab_size; // <|endoftext|> - vocab.token_sot = common_vocab_size + 1; // <|startoftext|> - // [common_vocab_size + 2, vocab.n_vocab - 1507) are language tokens - // num_language = vocab.token_translate - vocab.token_sot = vocab.n_vocab - vocab.token_to_id.size() - 1509 + vocab.token_eot = n_vocab; // <|endoftext|> 50256 for en, 50257 for multilingual, others for custom model + vocab.token_sot = n_vocab + 1; // <|startoftext|> + // [n_vocab + 2, vocab.n_vocab - 1507) are language tokens + // num_language = vocab.token_translate - vocab.token_sot - 1 = vocab.n_vocab - n_vocab - 1509 vocab.token_translate = vocab.n_vocab - 1507; // <|translate|> vocab.token_transcribe = vocab.n_vocab - 1506; // <|transcribe|> vocab.token_solm = vocab.n_vocab - 1505; // <|startoflm|> From 1ab1804e9708865ff3d76bbf729566c134a50bc7 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Sat, 6 Dec 2025 20:20:08 +0800 Subject: [PATCH 4/6] fix convert script: remove special token `<|endoftext|>` --- models/convert-h5-to-ggml.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models/convert-h5-to-ggml.py b/models/convert-h5-to-ggml.py index 80244d735e9..9f004d9bce5 100644 --- a/models/convert-h5-to-ggml.py +++ b/models/convert-h5-to-ggml.py @@ -107,6 +107,8 @@ def bytes_to_unicode(): fname_out = dir_out / "ggml-model.bin" tokens = json.load(open(dir_tokenizer / "vocab.json", "r", encoding="utf8")) +if "<|endoftext|>" in tokens: + del tokens["<|endoftext|>"] # use 16-bit or 32-bit floats use_f16 = True From 85dacc2516b03d702fc75fab8b11cf88bb956ea4 Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Tue, 9 Dec 2025 13:00:27 +0800 Subject: [PATCH 5/6] modify comment & `n_vocab` -> `n_common_vocab` --- src/whisper.cpp | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/whisper.cpp b/src/whisper.cpp index d88e0ad4d9c..a85e1388162 100644 --- a/src/whisper.cpp +++ b/src/whisper.cpp @@ -1587,21 +1587,16 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con // load vocab { - int32_t n_vocab = 0; - read_safe(loader, n_vocab); - - //if (n_vocab != model.hparams.n_vocab) { - // WHISPER_LOG_ERROR("%s: invalid model file '%s' (bad vocab size %d != %d)\n", - // __func__, fname.c_str(), n_vocab, model.hparams.n_vocab); - // return false; - //} + int32_t n_common_vocab = 0; + read_safe(loader, n_common_vocab); + WHISPER_LOG_INFO("%s: n_common_vocab = %d\n", __func__, n_common_vocab); std::string word; std::vector tmp; tmp.reserve(128); - for (int i = 0; i < n_vocab; i++) { + for (int i = 0; i < n_common_vocab; i++) { uint32_t len; read_safe(loader, len); @@ -1621,12 +1616,12 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con //printf("%s: vocab[%d] = '%s'\n", __func__, i, word.c_str()); } - vocab.n_vocab = model.hparams.n_vocab; // all tokens, including special tokens + vocab.n_vocab = model.hparams.n_vocab; // all tokens, including special tokens - vocab.token_eot = n_vocab; // <|endoftext|> 50256 for en, 50257 for multilingual, others for custom model - vocab.token_sot = n_vocab + 1; // <|startoftext|> - // [n_vocab + 2, vocab.n_vocab - 1507) are language tokens - // num_language = vocab.token_translate - vocab.token_sot - 1 = vocab.n_vocab - n_vocab - 1509 + vocab.token_eot = n_common_vocab; // <|endoftext|> 50256 for en, 50257 for multilingual, others for custom model + vocab.token_sot = n_common_vocab + 1; // <|startoftranscribe|> + // [n_common_vocab + 2, vocab.n_vocab - 1507) are language tokens + // num_language = vocab.token_translate - vocab.token_sot - 1 = vocab.n_vocab - n_common_vocab - 1509 vocab.token_translate = vocab.n_vocab - 1507; // <|translate|> vocab.token_transcribe = vocab.n_vocab - 1506; // <|transcribe|> vocab.token_solm = vocab.n_vocab - 1505; // <|startoflm|> @@ -1635,9 +1630,9 @@ static bool whisper_model_load(struct whisper_model_loader * loader, whisper_con vocab.token_not = vocab.n_vocab - 1502; // <|notimestamps|> vocab.token_beg = vocab.n_vocab - 1501; // timestamps from <|0.00|> to <|30.00|>, 1501 tokens - if (n_vocab < model.hparams.n_vocab) { - WHISPER_LOG_INFO("%s: adding %d extra tokens\n", __func__, model.hparams.n_vocab - n_vocab); - for (int i = n_vocab; i < model.hparams.n_vocab; i++) { + if (n_common_vocab < model.hparams.n_vocab) { + WHISPER_LOG_INFO("%s: adding %d extra tokens\n", __func__, model.hparams.n_vocab - n_common_vocab); + for (int i = n_common_vocab; i < model.hparams.n_vocab; i++) { if (i > vocab.token_beg) { word = "[_TT_" + std::to_string(i - vocab.token_beg) + "]"; } else if (i == vocab.token_eot) { From b99c4d959ee76a23bc38f583182ef4cf66dfc05b Mon Sep 17 00:00:00 2001 From: Jaffe2718 Date: Tue, 9 Dec 2025 13:07:38 +0800 Subject: [PATCH 6/6] regenerate the test model: use latest `gpt2.tiktoken` and `multilingual.tiktoken` & remove `<|endoftext|>` --- models/for-tests-ggml-base.bin | Bin 575451 -> 572465 bytes models/for-tests-ggml-base.en.bin | Bin 586836 -> 586218 bytes models/for-tests-ggml-large.bin | Bin 575451 -> 572465 bytes models/for-tests-ggml-medium.bin | Bin 575451 -> 572465 bytes models/for-tests-ggml-medium.en.bin | Bin 586836 -> 586218 bytes models/for-tests-ggml-small.bin | Bin 575451 -> 572465 bytes models/for-tests-ggml-small.en.bin | Bin 586836 -> 586218 bytes models/for-tests-ggml-tiny.bin | Bin 575451 -> 572465 bytes models/for-tests-ggml-tiny.en.bin | Bin 586836 -> 586218 bytes models/gen-test-models.py | 136 ++++++++++++++++++++++++++++ 10 files changed, 136 insertions(+) create mode 100644 models/gen-test-models.py diff --git a/models/for-tests-ggml-base.bin b/models/for-tests-ggml-base.bin index 93cd25b9ea3dc6387bc5aa4bae0be70962ca2588..76492eb0eb45d0eaa66d43e8496b397b9d1c8e2c 100644 GIT binary patch delta 19050 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 HQC|H&sJlNg diff --git a/models/for-tests-ggml-base.en.bin b/models/for-tests-ggml-base.en.bin index 8d9635c4b450392a35db038aee147198f6bcce97..737c439a8350836c3f727a68a4e3fd8dfe8814db 100644 GIT binary patch delta 3518 zcmX|@cW_kK6^Hfuqso{B!(gm67)%)mp#%seW(-Ndc5ncNnt&+*4-7aAvSSRR2GWWJ z(Ih=pnm|GnfhhV(s2O8S2Q`osnzYh3st`8C$dEnnJo%q*-r0N4xu@N8x6<3=Zheo< zBbBf{2QQAw85<-Wnz6e`s1Ohku#2#pkWSb`*h|PDWD@ofvIzSL2M7lV z*@VM{BZM5nQNl68al#2gE&+r*LO$W75D*#=P(YuBgd##Qp@i@);S}LJ!fC?ygfoO6 z2xkfB2WXeCs1G?(fl5!OwZ)7BJh-@(&IXs7W?1YQmlf_aYDX9K_JE;?yCg5Vh6V z79vh!eHZSAh*g3qH00sjSK>O$vKztSVo*mbHwjoBC*FG7+~+IC+#K22|K2kWpn zqpDH#nkzOB&OR3By=e-rJs2oU`}wTB+tJWkDzj`?p{T30Nwo~58dJMV{aNt)5Yt_n z-Njmp!Gn>~k#@RF9)@STkU2r>$L5^|YGz4YIb}8$-snQhsouGc_kZ;C31PIPIRu@ zuK8)3zcgg!{KZt1WPBMSd#wu^Z!BCTk7TVQ$n<|(JyIWzyAF9Cdll=zKQ_ug@lo3n z5u7NG;1zcw;*;cuoMzj7ICjasIZN&YoJ^N{2AZ~O_riTtUdpL;CSt}ZIfA2b+Tpw; ze<)i48t7jpFJarRz1UGMujFf;6oGEnTa;{PkXa}DxHzT7rATU!uk$SM?!uRnB64_j z`3Th%%ORH?*{zgn>&B;IW1w=M4_fCyWCvyKZ(6#_jSjt(C~Gu5!j3^oXZF0I5XB!T z*VrT1AtaAeGC6eDdi?ccMX|cH4#A%)gII7CB6g}$ZZ(qs0xzDXEaHLWO2zdrlse1Y zW)!bf9tWBE@^^1;oN|FP`7q3gHWa(L;4{!EQQ2oD{}9e3DF(NZI}P&>D#2FjVo-8O zX)Q>NI}&jzTdCmEx$=;auQc=N3CTEEp$y?N)aJu;TdCya*zVzUgVM{o2r+1EQsUXJ zHw+toROWC|T`5MBq~2kN(@-s|$F0+WZK}GP7RF|-$o)o+os;*(d9fLI^)e@`w z41737U7?w6Rh3kQ;_>Q+wx(2_S&b=^)vtNV`NB~#U3IXQ&;MS{QtO3ZZ=V-a{;Brj zovuuT%~xw$CPE@U`?orm1GasS^NUnFw}LMk)0eA1bM~fcm+0f&3Hv+2NM-6l}%P6KbB-Um56^ueN)O+b9KpDpfyWAKk~Wtx|QiHpi3; z-`r8Ft%$c^rd!Rh^rN8NRj+fk+$YfROr2oWF#$s)E$%(j^3h_W{C$nz7S~4ORBtU$ zp{cV4VSO|&KYev4uzaxAx0RV@nwfi%K1zGV@2V#i`=)3QdYjg23ysv(+GF!OVn2*E zn%y#yhhEXz3wAAc9r`%5Aj{8_m=vq+lKic|1y8nU=UKt-#SbZ3sFf!Fd-KUo?S1Px z^Uvwk8QLk`nnBSRe^|?D8M$eAbw(RywSNJ|p4I-$RjAEE>{V@ub?RZ9FV`+`Cq~2~ zty=R~_df!TTiO)f=H3Zct)_9eg&)9Er#72)T(QOsul6@HQg;@zz1ncjuIB(AJkf?) zyEdTD3#}g~#~p@Q@9Haf#p6I_FMWn(IRV4^=wbZu)S;-K?&JUt79y*^{&#l9mk#0g z`dHTY?#F~b=oP%p1N0cKkK=6z67ipr`YmfE9>Jsa)7%B#!$#0Y`Z3dIXE^*IQfr+4G2>sgDz%k)5v=2zzU z5WTfonyg$mCWq=?-JAqjxfo~HHP&uS!{ivff$e%DF?xeO(`sS|wr|zzdE0|{*yHqR z>}72R+=kw>r|JJ87{4vj`P*y9*dpD=yIj#&{H>Sv|@17at+egFUf delta 4153 zcmd^BX-rgC6z0AA?lPkTf(F4VU|2+LAtG84Tu@V&#;szEON$G%RH+(3D=vj%Rorkv zeW=kOA|O>Nq59M+My#=giUNvIiW^2p5dp=$*3JyfJ$HWeH$VDk$l)yCIp0~{eN^Xp z&FHx`7~5qYDGA9Bbw>r^$n}*pxgh>+wUmJD?CcuPoo%l_3GEASXTopC>g`PU?Fw&~ z(7y1EUH@bBQhnd&{@-R(Htm8(oaJ|p`S8*iG85;hQHUiH6JJL&MQN8z-G(-pPHzoO!i>Uvxo1Ep$v8VNu z^X)~o{ct%fQ22)$6(>)GaA)J>8xr^4vs7LqV0kCX?gAm7rpmS5xvk$Zxl|ScYjS~H zPq_NoDfzcnb=~SS=0^N_My?T9Idoa>EkhpHugIqi+<8Z>{N9l()jf@}kxN=~lRVdn zn>NWPmxyVk>rk11^KCb@g>Yxp&=Y;cB`vfknkBR*b1*t)u*9nSKF^%et71aZgKkP(rh3eL(pvVG-v+2AU!BP@@l_V!_!Z2c`2N zRSSPY3%O;$F;pg4>I%?Po90VJ=$$>cR?5(A!MeTz`3a(XC9;Pt>i;M5mnKCsB!+>dvHz;#kt2O0hPOEC8^4tcwVwVyGbvUIdPbg$f(iLB5Utosf?ZA=3^Ob05 zLD@Ma3F@0(qKp*A;@}l!0bq0~Q{s?Ve9ASGFMvAVRvyYaY~u22p*dwzr&Pj4x+`Is z*RDOnSV+)?;VL*dFAVsxP3=Yp{6iOUI^(?XS~!{~`e7F+$ZZ(D4wvus2%ODFRm&QO zu~1(A1RMYOAj97C_Sj0?8_njt7x*5Nde{iJ_Lky0P2L(6fiRbWeK=QKY^BgcbNu40w=H1Vw)Z%SJDU2hb1+13K*B( zq}1m1QgfTm;v1n3xlbopY0ctZI zS5xiH?%LelguZMtBv|RkLLpR-Kvn@Pycobn*>qxf5UT~XXE3|K2T6TAh86Hq4vl4X zfRQquEd~r_3cCZ`*3V>@VXq6nU=B9PR)n)29eLOn3z+HFnOdFAVwv6mXUE)qhgHnT z#8dQc4Wp2)ejU39KrQRp3|Nq`t*j0#hiqrlAo)EznYXtvt?I?o%$sM_beeg9t#ctO zZ#^Y#54+|fRst<8DrFuZ8LL@YXB~f_tA!10u4S%0pRh~F(O^0)AuA&nMlAX=E^=Ai H%Ax-Pp%23F diff --git a/models/for-tests-ggml-large.bin b/models/for-tests-ggml-large.bin index 6f73b5bf401199e0fd5116d3ed16e40ac15eda8d..f0eb8853d9ce0440bdcd3f7acbf29496fc1e5ea7 100644 GIT binary patch delta 19050 zcmX{;cR$@= zP%S`>09ypuDgX*lD?pt9+t^KC+;mgDXf_D&l>plX*df490d@)SwE(*X*dxGR0rm;- zjR5-vI3U150S*c9tpJAw_)dWD1vnzWQ2~w#a9n^deh~1406z-QD8NYpP6=>YfHMO8 zB*4!C{35_v0h$CjCqT0R=LNVRK#Ksa0yqU|6QEsy4gp*OxCQXAw>i8hnwJE)EWob< z{3gH^0j>&gO@RLs;CBK35a7B1e+uxI0DlYcj{yG)a3lS~jSZ5!;o>twfJgzN1c(+O zMu1oWmJ1LkK)e760wfBMBtWtND+EXpAXR`g0agl-EQ;uk^ z5@59exdP+~kT1X*0SW}zh|3sjW0uC-K1VP}XZPv!;f8dJO}BO4ab)`u_|;--WXJgk z1e-mfrnsQd!4}h~iX-^;&Foi3Ut5mgv`%azyHzgTETB6NZtKj#X#L%g*qH&fJMf_{ z>;qczd^o1w#!l0RClfxoojpYxM?&@OY?N%f65-2V)nUuxu81}miw^t4~d^@ zTmpvqnjHEB1%`%+&)r3a_zVv6r}6oa)0Z6`D!P15%Abxdx5P*2T;HG|@x!oT!{iEn zzHD)Zed`Y|VuU1KHd1_trQl z8OXjS5_KSaGKh7T9nMv-Vi22mhr}mK!0##rY^i{*53p5o%!PWWe1Pqt4f0{xgRICD zV=lm;huBE@b4M-uKE&p-?sA=IiC;iaD3QZmfUSesK$7mp%tp9t2n&_d%3ZK>2zySp zo9gh?5H^)Y`M648syLxOp@iOygR@;oMWqr>8iQ z&mM<>vw}lD^$qbCzqF*_y-%};X=ttsrjB7R6Pnv$-58~??gBV9hQ-R?<6IE<3@euH z_HgX}EE_xdH}{Wv|e>F|cebdrl#m4SUA2sj?&7 z1wJpbvz_I1SA|3_6}pULlVx{$Aq0$LZ}pJBZ<3l2GAAE z+AI#1k7om9yRrhdjAx5vJIMu)PhfA!w$Jwf6WD#S?asxoCa_svnkK^Fm)SVlGFNUH z65#7MhvcCO;$LQa=p0R(aQZ9kZ#9n_+_xt&7m+2k5np|kCDBK;3og8-@F}aoJEpKv z)REVKQ(kAcss-GU;6Ig(aR{w-XK{n}0>|?a+oj&m4P10H|MUqB^9>0LoHtv_lsm7+1@qoe65UaUyWe1)Xr&8vc;Zdg zg`~331)jIrvywciE_iGPJ1*Ppk=XSecE(beM8g$dHiU?{3J1+(cc`_t!*hP@N!gL% zf+#<=RC5j-@M8<)?=6`y&YvBW?ba&j9-u_9Z3oN>P~N9K0?q}nq4!IY@1ckx6W_G z&u6n+2=B;jSUHEiLpa6b)j4c5b-1(P(T~`t{lrSH5=qJ+->?9wSAlcqhXgNFA{hrq zK4R61JR2bKW0p#%t%H6+%8xoTU}q3}QVmK4ZpsqnptcQ=K38d9bS@sA%eK(=Eom4Z z%4arP%{tXG7hpelsjkRs&Mn9+#!q0EP7wT5GJ82gZ-26q&^yoe2y z)}bX`p29CUC@5eyk!m%@FJgmeUa1SVEoPUct!-H?)nQf$_dS9V1j)`V35N4OxKx_E82WZ_WSs4~czSZZ+VFHzz0U==|MzwHdISZFNv}VDQIJWm@uNt}G zm3THwc4fuEws{3nC;qg4uA_+S=$+ba&M zAOYA6Q>+yQ9$@?AzV15Mmd!G#U4_$g*n8dyv9N6w>pN1?CQ8ah@ch7efx+{nWr>Uw z9c|^eaOg8Fcy2&g;M{;v@tZReZePt3SLk?odRSdq)dDee`*nOyd?B4JjI z3;X49zozsc6JE$?+ttWiaI9f3(MLxmytT$F?_727EMVv4;?8LNtAH<{#67nWdaq-B z)pB((ejS@aNUXrTb!;<{t0e)Z6|u(%(;P@GVqt1VDcoAjUZ;*y@GoXV6*3jDs+hTC zhdUOMN?49;SH;02rEIU7odSQCs*tKZ3!f?DE?tJyZJPysTCyN_1G`_&YeCq*fqgIA zo@~hflJ%19wk^2hOFoGPCBw0eY=dlH+5u6U*nZh=&x5I()%o+|U`&Pbqiv;-Rl!cm zG0xSnpi=SISq@#RSU+`=^*FkUJw~FkHVKwgEAQ#ffuE~YBz>vMHRkmBpq1QgPNw(Kkz_ESob24BjOHM_fgm=GT zWr|K|jd0t3)`wQefl>R}VcFgq4V@0C_^<_F!2xzkQifYaeDffiLsHRRkNdu5FVM%D za=hbv7OF{$k)A7K#jW9xdsHpoz8ZHOWnB~-mcx(7*c)=MmTfrlI9skuvl559eq{bM zs3Zv=Imuqu$c%CYg~-$FCpo7LA>fQ^Z?1)jKe5e9k0W_pZT`&eyHirGLXfdFM;eMu z9+Umdt`obt(HZj#8!Z=0FMx<&*dW<<=D_A(*b-ClvJ8iv^+r%_W!UfBe?fksbO#ec zeCNsdwXFn7n%Ok9ausOjSstOe9E;C;Vyxvb!b6I%+FiaN8yJKRS&o8$Z6phLC+NE_Y$kWp;u5 ze`^AyUS(g%O`O}I`!$sowQk1uuCa0CWQxn7{QuaOYOyN#;CF_!PbE)DeE#qzEv@2 zEk+WK83#v zLj30VhDx#ZWZLrKxr!UOXl355b*7o^fMvb-Msm%R99Vm=)?2pQ3vlnf+9v8K zuf@;$XugWM9d*!ppZ1=lYf`uir}%hRbEcqwU#{K6X&z&~)?ZV)kpvg|YvD=+$}nhv z_6bRcD-tgZ)Ka`Ys|J=ns8vc7O5)(LhqR&n1r1ykGA;}Y2nh)clg;_Tp9X}4N=kC8 z5dV-yDUT-${03`OS!ybR%)y$n7Ooha|FHHdZMq=__Yc($DjMWq&M@r>>S?RMlOr_c zG$9p!8>vMrf!a{&!iZ5?PbPI^H55FmQP$eB5)M78eI$`?Ex@NA(;P~;TopW@dhH1< zRV|UpS=jM}c7;g%C0=+^dxZAQPs83%Yqx9n5SKEeUD90!1<&TSCvnO~p88CFMmwO0 z>q&t=&uNrRJGWxQbJ|y`$6XKOU(i05q|W0-jqNXJi82i3$?UYT+6+yizX7(6)AEQP zo(Onnyhg<)PaZnQYdZ+3mMGZxvbJ7gn~?!CUeTz+*2;a=D_rY(OJqB+!6j95tgoz+ zokYR0_9W0JX$9)wi9AK!G)Yr|TrIdJY5nE0?yYdwWNjSzu!KSn_)pgQ%AU;)kTO~8 zC3}4Q&ecQJWbGH((^3iWsaRYo2q>PWQ9e``jqm+WTSfxWwjG+LYlGy@E{-|g{)RR{iN{)a`YnwTg2-}s z^lj}7p_BwYW@y#2T~q@<%+OwtZBGpLen*>5>&9-uW$$X!NUPhkNvo@QV14dAE(S_B zVxi}U+QaH&BTV{G+bmad)}!XDO(Hbf*TQr^?X)89R<4Aj{W*%g#2MS-q<)0X2@DAG zCuz#&XIMH*`$fM;>WjOk6CdZ}A2@4Ppx=U^u*Krn0{rwNt&tFoDuTCyw2?C5be77* z!gpR+pkLs8u|Yu`lm==4BbFuRy3m^I)vMHOd_Pz#qL4(SgU~rd$&51w&x{+z&|;Lzata~4aS=K6;D&7q7Y z4-*z@DmQag!?sVgLgGsS1T4}%qJ2D>ym)qckv2=wErHicCN9>-%UGx-TWsV7H5JlT;h}8pNu3aPr^Bte z+EsbF))ch!w9kkHYx7{m8YLO+#c*wnc2*85D1u)Kw5t>VxHy9%;per=w6?E@SJ!D@ z$iS^_qm1*WO&Rz6L~-!)254KS?Vyb!aMOBiGf}6h3jB+-vC`(1;HDyN5BYF+K4<>2 z5-mhdaej%{N;Ge2&y$5WmuYipfwmm{Y=d@DmnM`4>kZn!@@Q@G@b6dJ8%pHM zIU7INt~tEEVhaZE(4uJvC&HgQwJ0?*k|$+xyEwxoCmVUCWc+UJJ~grkgZ5}g2$$AM z7`tEdmzxz=K;?cd<3T}+mT1YM(6A6P8!hW)n6uE=&o_*hD8!JMObk2VHGRn$F044D z-J+!2oy`N4z29<|NG2nJdyuB@c=RLA7+r{Wey@!ulC3XAzoXg%-g&V}F3dWn`Dyy) zHQD(0586U+PXTAaXFn?U(wYuMKWh21c+cHrLWV%7bveG-s4b#(xr_brloqS#5yP)u zW}nt{suOr*%H)iIMQ60x^61>{ww}?-N$z>vy6PwGec92n7H<5c9UdaqZ>uJm2@I07 z7|ZRMe@MVQ$+nO{)o}6b5dZ#JQw9IlB7EemcGjzwfZfk&eM!LL;F)G^ncT&b2)mlK z!Ak8i;A*oromdi$)6R3xBtP2MK<5taY1wWq!zmrwugb>B+8tNq*W6lw>~2ehdbf7B zY&*;Fj9ZIU3Xym}?ZA#+u;J^)KeckJ7^tb5ef?Al#^ySJ- z^Pnj)&V|1-y`8$X5NjGh&Ew2Qu4sY4`&-k}foy7QG--c8@_W!@_Mw7cGm z@bNhTIX(1^a&ex7@Ho1suC8fX@?h!R`f`bn(8Jq$=?iF5W)iNrM{lMNXCZvrTlbTg z*21~o`XiFuskzvzkG@PXh0`>@pPsLDz!k~M1QQ16fpTP8DsCH~zpcyCtFv0h4WIf3 zh6Tv9-CY9@KcKfM<}~ny`aGzQCSS3p0cH---;-w54SR>^K61h08n`q>Pr6sgx;sKT z^Ec%cD!VAv@ATm5ogHr^Pe z2a&wxV#woq55>?TOnpKRB!r3^P#>c|sgBvfb6%M6j6PB><*LGnXY{d3tm@&=bNZ{Y zBR>`UKd%q*+6V3u@SPWQ+e@nqo;c4PtLM;mt(&m(IQ<#gu5}wueObRiA5B|v%&U4o zTEArt%$lMqBWmO)5GA^n2-JLn(Bgt*<7&Y{Sj7^|^GY_89E{ zkzPeERfchAKh{&d`Mc0ZTryWz*VPqexOSdCf^?zAorpgN>xraIxfuM3ew;9>Zh%P( z^qz9FmJIxOfewlRYvATjb;>|0av}6neI;pZM+0rGWf#0L>OljgGJ=h>hi1-Be zF4I-|D&p;tpX)BAlCI4#FkFw2yG2D{WjMDG@}q4V9Es4$xVF^ev`BrMMGLxk(hEJ~ z_21;U=4`w@frmSif*EjMvYsPMZ>N%J%DVF@M*(V>Wj##h1_8#iR#w^#nA{Ja8%N(gJS$_t^OXd&&@4Sp-u_7vkLDl(vOp@wAG-eM4zC^5==fm zwLzci)z<0)7i52_7n2>@A>#&r--UFK;p2&cH_H`^s%xRST&EDZJr{ax)TvhBEQaql z>dkbpM5x`QtK7m}$cc5|X8lD|_T`7e+#3BC7Nq~N@3_>F6Kf=6AJOS!~86Ay8<42nMd>+67e|bbW{%_#4GXhqx#RfGC2j&E}V5j z|CFUm*eIw>}=%XC8L=v9^CsQ#e4>w=eUnjgOCZia7cW27SRYM!&04&!65jxKQ+BS;>&5vXw(Pm+*3YvF2V<3))`dn`QL z#h@!aAqi<+j7qs0FFW#wQj=~oK9LGphI?)^e09=z?t|cwJB>qfg|--E-Hdr&k1a}A zOS&8VWnW7U6m~a4Es>pbe)sKRM06H95$!5!kpE(J52G*9b$t^4($jd+AYF>)4*KEV z20eLcT`R+3|A3%Co*c+hd;!evZCp@?TZz;97(C(>g1H70e2fCpvV>9`HNY5S$ht>G zrifn_gaypwwF>g3S^OMn4;cOu*W?Dc@qqD{;sjS;G#@g~6K-t)mj)XLppFT}iwMkT3v988~V zkkwgLhDno+epD1F;tsfeigC)j0$&~1Of#NUdAW#N+Wu#B&_VN)@TWJ7M@?x0QlaO& z##55Ct;IOwUE@W%8Y#4V zOBH(j3^#o^3$Q7`I75#4#M%?MXEtZ7+%7r}rw1Be{AcL6SvebIEFe+N;fd?}bBzQ; zsW3NBiE!l;W1yVcu^oIuj1Z;4`J7yNAqIutHHFYM)OeBP!yN_Q97$L3jbMXoFKH^@px*H;ZT(0;TF0U8;vy3T?q%48DA5%R^iIej8AP^ z+>^o8qFam+E&JNbU`>n>A=~Q<;GtNfpBGm_s#xP`S}(Ey^Wuz!%1*iS3-~oapG4zp zH8`5P2v?%5@owN7Jo`Ih7-aq>!8~TBZlU<>NvuMD~!V=FEzL*)fna_ zaUHi+)#=8oR1xezM}{$uI8znvf*F~{UvhOUg%7ffH3|t)jJz3)v$WZoc>FEf@byY~ z1ux&fzsjhfPG<$)m21R1{!1O@TdVRy<3%ZI(fE6z5um2JHgFN0U2L4BsjVeAzSKyi ziVzq1rZ0_Q)YDXrJvJI^=);wYUu`lb(}&L`yraUn)w>{1d*H!JW4k;d=s2w#t1`Xa~^j4(Y$UOsWF)rRuc4M0q_67dF zbEp;^JeOMm8CJQo8alRM`BuYwb(DnvqH#!Ry08Mr>y6vVnHJQ+#ofm1y~JW%EmNXp zxZ|o0CsnG=aKQ(AjG2n~*@Yhbc8?KA=V;vyPwz8+rgQMREB61!c%O2(aEv=(w0TLf zm1pcr4;jy?c-Y+lyT3KwmV_yZz=4O2ZK}t$1KPeb>eYcu__R&m8+97hgKFWEW5$nU zCGgebMm=GXRfBh)Ff?Kne=c_4Nn@8>x-}V{Cyh`V)l!DOr@fqNTMb*zDCe1;2l`LO z0J&^A4*kiP>kS^FaQ!ca3R|Kpu)4|UZb(bsx)WOQR{mXS5)ueR=rTF$G;}5TC6Q<_f-;83yyR;5(y=qLe z<%yc3an@hP6=e%V#ozBAW2UzbyCd_k`GFkQ7L6mBdEI+yjF0K2s_Nwyzz2qTLpqye z3^2_%sf3Wvxp&}ZlT%R~q#^@P+-mkE^xBf}pDyNdoyR$;xcm-tJ0Z5AjK2Xl-;yWd zk5ah7ujyvqZ%S5G*TDI^O{yyRc({b)kG;%vwOkg=?`_Ue0TnMfufp@a&7WxFOSQPK zues!AGMASSUK(tA-&iJL++cGQd5J9CJAHo!4l+^sM<7VPBDi z8=g0RAQ2I{LgI^NlUz>Jeiw~1|0nk;Ddg{9O(4VOg0S)CK4QHmg9j7iCYa9}GHqBs z(cDPnY~PMgO*RiI)9Bh<>%y+Dn|_1=e-|{>94A+9Du#Vi&3M^%CgU5^%zH?}&PU^- zx6MO@W<&!{e%CDVn#DY>@;BZyy^_+L1%bZiKw^Qo8!yCFzUDh5M+Mw_X#wWfR4dD^`8-*wAehQ$posp0UudrKBlC# z0)xLWx2VH*ho|OOt@)U! zd8c9Kdb5|1p+cxCF`ttwwXMMGCFTl;GBPE+(zUX}TupT0@9z0Srzfh+vBdVqTv0+< zUS;ZZl(u9@t2XOKklE*NQ)FxzuxNg8NSM5VZ{1iVolBVS%)mg|DIT|oo73`0;c?G_9hOmE3Jm+*RAH;D2({~Gu!`9@9eG0i*n1X9Gww(^6d|hKuJ1(9QP?zVm#A zV#+I(h4)xphhgmt&OT%yrBpfVZBPmt799~kFcPd4EWB`+pTF61g|p6@Z*uz zG4BaVxEj9ngr(l4xp!mnK>C2SIs-m_FG$MONJt#U0!1trb|%$sU`=8*m)DisI3W8EMk$3(-B_pDr!*f>1$p7o}7mtZN6D`ahkdqZ*P z)KqxsLyP|Ss1>h#XuYFOwH2rPSrO_o#La6Evn`X?Q1}#=sH1vjQ;-s~0D3^_0t_OGx8$bo!c z{uKE46;>a4K%f24JH;9!+s=ISO|jna=6gJ#Ou(BGjNL5r~5Lo^y z+U(elCs$di>L|hjhvZpJitX-XoUz6-yjC=wr&fV$tzh~C12?8LTj&gD!i97<6s59;UOO z%f~*v{6Pn3j>L!Rxye&pF6AhX+iv;Lfy8?T2;OPE+*wM8D*t8UzMWPCO?Rf@t6y8W zj7&p33z)czHrDYCAPRkf${3MT%^TW3Zd^|i}KkD z3_5IGqZutB+fkIH z@cW^4qwHhE#SB>bnB6ML*t!AdJZ^tZ^D{E=@{{(1HsN$W2Kzp5o8IV(?^OW9U$o1p z*OP|LFWSE``3Jh~4KgTniTeXC-R`R6A2v_S185*)%(etWtXs-u9MV;T7v0NiH}z!_JmRX^+Fe zckJJ^u2QDCx$CGG8sDCbbKkcQD9^#oG(7jAeN`e+#$E37zV?G&rsNBMv~Z?9PU0b` zn}~a7+M`v!$k;RR7JoZ~60Slhnq%imajL+V0_`spjtThPT>B`=+}e#;7HmJI5bmfh zb>XE??1PG*+z9h9KGfc)28Tn&0{d}!n&?V6vB35xV)N&G&o8vUraGC(IiT|rd%Ad? z00B$vWI3U2C0<`*t4DtAsW9p@d!e$QncUrP`OHpGw#>y}6Nwvu$zRyL9hCLqC(CV* zSIE{1uNZHK({a*@@Jg~h%S&?Me*9DI=@iq{@Eg3{8TNx+B?|ea_y7W*1mMHes4iS&HeR(r2vn|KBt4r#SE#c|c)@OYga zBk|(0wXe?3C+fSmz{mBrs^+>xfOS`ctwNoR@sRzM9ilSS4DleX`*wRiP2|CF@(z2j zB6b${y1RGSKYH~hDxUx8Y~gPEkRq=~aAV0{J4!_;qB3mnw|TXv3qK2w$u}IZYm~|3 z9)}C{LHk+SsCWlf9pY@1#BSMuV-MSY|3%E)163Zi|M2dT#8so_xV>CrB}*wV?gzU; zPOVPEPA9miD3X;o2+79Djkb$!x!U2G)Akf8dZN;~`m}wCWT7S=GS1rcXt}8rUTU(d zbB! zJ%!8|Ppk0O-|T4R1>E&KkcZX3+uz(KALS~OBOa}V{$Z;!c62KIdfk4CbjP&`M*V5; zl>Fw8`v3jY?jhUUBHs6xJ%-ZZiXxn)IVN}|hCfsUtkoTty%^>Tb6sOOj!PHr$>uyx zvmFN%kGX{LN=!f}M+%!KIC*9>3>ZQEAg5@tAdpNRa zY+_pua;EeO<|1ZO067WO}8Nt6(YoJjg-MotkR!^aGA*niN6q*d8D3I72pj zb0OaQh-0)x#jP6r@KMKXuQ99S=JVL&j@wDcE3(k@q~me#H4kvXdE|MAo5`n#&2+ao zpZ|pk1-=2iWFURU3jsm11AXP+!>G8+UsEW1jk`1!0pv& zzT_yd5R?jRn7!K&9B zugJAa;^E?Jj@^=;y!Ki@#i1#7@l@I)ZjKL4b=)tzBeU_(sgB{Q{01Z5bUY@1udcz6 zHyx+w9wR>sr+?^JtEsTNBu>VIX!toM>9TadamY^ejfMCa0s+5?4Z3`Vwk|E{g zpuvkAX{?i|;Ru{W!hc{f=e4k`wHerXiQ_WKSR7}>Ez2DLPtuZPAvh7sBL zU!(=3Ic8Y04#e;3gy8eP0{Iaf?GizEI_}GMEL296{}~33U+swc&-(Gbe#mv0gvi!# zJfH6sQlCcpL=23Ll~r4Gb!znUlFk%~|Buz*>WP zFs*8fKm(fvLQXH$%yCMCfu z_BLu<3S3|Vtds^HLe3l-S{9rtted1v*(}XeF9+(fXVJiNpc)@cDF+(y_i%POPz3V1 zlNG?vmFe2nAHPA-7JHYI8DHpFMKGE_Ub7OY%1NQVmB0)!%But>Netn^mBCY3oYLmx zKJo?krKeD9KTt)`807~pi&3+x@@gZif(HH)tESM_$Qc((h=+tm(MhzUDoExmx2Oi% zNDJbL)j$n%#Ky+z3uvWdahs_)f0IN8~Q8mFyKB!d-Y}W0^(3M)C z37f!0YJ(_Ho)RG3hepQQS~11Ki|T*?+Y$0sSV%ck7sN^$K~3v{_c^V}^+12gr@pHX z9+st)tv|t`E+!zl*Z}lp@1d#dndL!^v0|8Epr--<4``t+q(POPCzcHa>BciRT zypKOQf-+G4VP8|wPnfkxbI`nuVJ(u6_nX88E4W{C zP@X@Cqg#M@N!gI*KY;t@<-9A*1)e46W(Fb4s*ID1i3<}dT?rMP!C8vp>NuN zo?L=*ZADl>AG8Itm1zXsYIJq70m+9c$?ZG8jfh}z<7w&Wkk z&qYABI)VQ3Leo2eAO95tBRhi+(BkfqeO_Ph>3+P6vf5`x#CQpAaM1pA=J|b3fID(fuIN{ zhyNY~-j$J$N(==ZWDO4<3clkyZ8!|v(m7|S#Ar~T&vh9MN^-hrL=b2tlUW@EIN!x=01RTyY3ByAZECa^?8 zqGe=ITqtqqh^QEsGeIEzayZBq%9|en7BiBl>NtS-;OIEeN<8<^I53}2rHluSWJXVo z2m3fHczP75;KlaZXlX?}%n3S67~B{G-Vj=TdCN_W;_aUTKS3+k1x71;-R21(pdwWr zkuBI685ug3X%ojKfSO(_ub%*ZsYG8OP9Nq9iVBsYOy)$elav2=5(pryP{7WaB-I!w zXA;=TAB~y}j08*vOd(GPp`{=^3CCmlTbd2{uSN zMQRf0EHm?A5(r_DgU}3$j&{aJGa#Ky0=bMKv@RKx=j))HWH6mib)5xH**sApOU(vh z^19PzgYME8UziQ*$U4P;%>k3aze=DP^T0E<2%az>)aH`mEenA0uNoB}TxbR_gPH>O zPBAldVar8K#hL$PZd?rHfPl9x1=YORxV#JulVH?%1^BoSH!NDb0-R>-pb@EHIUC^L zQo%^+y^qsCRW^qb(?BU!I2JZ}@f+Zb3XO}1vMU|Sq`T6iIj*3x6I_M!r1?iHzpv*PkC$(!>sEL2t0GhKYRAr;QKSs^ zEn@G0k8Lpvmv<>P8APjW1vNOa9$Ue;d{AW@sK^Gm-8N8E@crQzU^|;aZ@vKE@WI6$ z;3qG3c7pzVvgj^woe%PN3Hzg@-Jlxh8t>c%~ThtZc{ zo!GkI_WOX37o~w;fko6*8J4N?zmgPG7X!#W1U1TEaeQ*>p^WOMc2Gzi0l3#sx47_H1p~=U= zLp}&Q0d`69po%BK)S@J`U(dXeL?k{5wl%b4>k=x4-x#xMiVG*~=N``8mus^Wb>cAN zWx^?NQ6}5#GzjKvW}gN(h)PMY#>>utaE><&&Vf!|fv4vM5DUwR$Yk=s!^{zM_7ZrH z5yl0Vz`H_+AQuegQzLW1Y=uX=C*Oe(87p|eRnXI3l~!V#^1u)5Wi;zL_(7H?{07)f zgUgH^mX7>x0$;XOvQ+SJ)U(p#V=Un%Dnm~2p4ar+<4dXr7z zhIgd>7_mopS5P$DC!jBX1Ovn(Mel+&{LS5W<;t=1J#dIkA@x3Jzy~ewgV}s=>OS~R z&|CX67!W{>OW+sgj37LWaXH6_T6@hn7oEmsAAqu)Z4~$rxR`24T{I@hC2FCA4?(pu z!nXO@>sYmhJP$!2;|BXb0-xCiD_B8l+04ga5ua`I1niN`iJs@1#S*mun&Afh>I-ua zCSu}Uv1Fyt*ckG+lZ#X(`TH$bMX%jpAQv7F^nm)HnBdZU0?#P`Ka0A^^*=C;af5#U zpS1IB_Z)PU^D3J20(`+qqt-70CSb_lL)uHPU&La`DXqDVpKkl{($h97w}Ih zP?Y|!6xajENf-6f;PompY}&PJXAPZWCo#0N(_uBibf^KR*c9B^#LoE!eD1A!bl(BD z8kQ9;J1i~)GobwjMMjIFFqYdQt0?3F8Qm=k|7J7zelb{uA<7EC$Wa_7znw8x7Kg`$ z^kaOWNN@*z;9%K}%a(wPYcuc)te8cfHSjY57aSfG%PZxxCE!y~k}81&Qg`M8i;dHz zU~SIiuccsbp`31I;KzcS%rY?YJql}gN)mx}V57!O2{8|{;u5Z378c|02kK-qBw*;2v4u*#WRY4OxG2p)OZM9Fac8IU$t# zx200GCggipbh{=L9nE)ZK@sHe<65w<7y8@Qh3AC&iq?lM1$(_3Lho{8bR(EVp}T#n zrTl_M(Ci6W`m~rR90>iHT~X6OIF1eQraCDa8g59msT1U_QrxgJ%;9Q7FT28xvKiNOgS-)pmF{LN z@FRlcV{3a){Hb#g>FZy|)Y_<154eu1XZ|KjU+x}I)Ydh7!s<*{s9#Uml`Q9(N1j~M z6IOjY7q~)WgDujr;Uoq4MLM0ap~RhnE#eP*!aJPaxnA%aduh*#Io9mz-mn#$#W#Dy zULq;f`4GPUc0ft^5DpT0y7D31DJcUd_k&Y7-jLBB)+DoTA|-C#ANmVLjvfe~N$;XT zgWxU32x>kUX3LY$2E$Hl61Nxv2YGq)(xGs`Td{})U;J{Ii8R4(oe{8}7>yhOcXOI0 zN5VdWw~$ZZO=_U8tb!GHA8oSE5&^MqYJbDhi zqDsu*mJ8twNsMEQ;0PLz?acrVSOP_R4gItf{!L!b-$%6ha2XV}_T1&Lm2}W}7QvTH z3HU@B{9F#)sM~4@XFFEIA0@8Pl63ge%gQNhMAATS*1&0AjkN*&x_0a>p?-M=%;75! zTMKt{1)z7=!_F)(;lb)Fjr)W<0oK<%xS%o zaCt)tZ{mNkajpnvHopjE=*u^>xkukxD2au6)IO?Mrlz8 zyXP%uF(m5>oG7f=;3}L&m6vSASA66uRQ}bvx^NAS<)mBX!5utaAWt3~#i#mRhZkA! zwGkK*NtD*vjJ_eRP;xTp=ZXl8CboAkBN?IB4OmauXUa|Zqh#wbKftO2u5)g~DSWlU zcVJz?NZUJbkYq`W?!auFKilsCY|93C=>zyb8kNnIL!)xaBN$qfD#_ygr$Z}A`R3O# zKF&$HoF7XC-#*R7Q!Hm4Z{tD)+=2Q_CyCT!x3`m4-5qDpgRXNcPOAqGV9VbI%}~gSM(Ha_f`4nH)MpWlRh%W{?n{I7mt7kVe&qDV^x_ z8bU65n5izN9klafZ+(E_$}#csH=~p^ET z8=`z^KT9j-xnas;rg*Yp#nrYKshLRlPTs zk|5bJYK-;!gB2-H)-Rwq#d?f_gy0)LRYprdK!se&QV~x!xRgM<1)jIu-a6lLDNfZ^ zq+Rpj!4s6Aw`0`NiHcha5m}R!L}?M+;xjX>F%6+XQxu*@aNZQX>kvP(mEAB`;jLdBJWn|% zYZx_Ipo9{JJ$9;Jw?LWruc9JF3FAWG`HPiANF)1<9qtUPLO|u0DH~+Dzh0*F^jfF* z3MHHi@c9a5Gu14)Q-kWID*dFI1kFfQoHkcqlG^HZs&Y`RDnz!nHn~}s6U};VPwr9v zJHD`587aWraIM0-K6vz6mvV=L63^eQ zwBhha=d*-wqVPS+Q~AXaU()DaFpq3l`(!I0_)3-7vP}dgeS^k|A8}T;@=&NN9V$_JG;9Eu|jD*WIQXCG7sg2F{j4VmItnkjZzip1RxE6?T961C4!h6wS} zbCetw5e|_^7II8k@0BfzoKWsiA0ah4dVWHwFUgH-oKzB7c(m*AtW(NVp|mDv6tDBc z7iSdxEqte*Q{Hgt)bmOtvlmV{uiRGbniRb4AJKOXGXr zDd!4tT3_Ba7nV6c`lIp+@Q_1xVPF5GbmN>9xu=|etDd-hPZ8&i__LptrVg3nK9ACe zW?y%fRpX+<&y2m`b*_b{pZRDK=kwQv=_=p!qKn2RCWP!?Z&n($y%}FtgK}n z1&(JIjogcgk8b%*8Nig4M%rY`ABsPhzy2ReCa~az^8QpBQJc=Utd4yCQd-&p#l373 z-F*-IOVOAtnU->J@IQ*L0P7r}HldbTO>}n>sN>}j(hRDB0&3AvZKW|@&`v|`!Uw+_ zYFBSPqs|W1ZadT48h<;~PkFG2Eu;q7+e{Bh*XW0$>Ul;D?<}T9Q@%ZR8`s}Qt?S;o`zwPWz~d?7YUk`7n)Scwh;&sthyySxL2vT>}*)StSZOQ&#n3tpKvu2?>pi zFt>=LhiN_VrmXt2kUzhi+Cb{u;wlx@b@E;rpQxg?Q^|3&`Lg+sRgc8Sg+`m5HM=xP zwQ31ev6>np0SYBmQ~#v4{E9fpoa*N3A{Y158tOSd=op|rFF|uN57|d>hnniIQU+~Z zTcvk6-21K6f~VD1XR|0Vli;d&UDeJGHmfM9uIdq@PN=7TL~&S~;e1)Z&;BrA20qAtN1887ay zV7-O9m5GpUJ%n*fHH7^#hcM~iT7B&mAF8)gZ&IACA|}^5s?#Lh<9Qv`85&x&fIQlHN_kG_;pY92BS$<#kcyX9c(>#>~gYNUo~G=3@+JE zZKmo7F|R2E>M=pgEJXA!+54p&n+pm5od zsz;0*pQyL&Qs?S=ORM>#O{mB!nlMJ4#$wVs5)t2os`2EBf|b^(3!W0D&ZAWxJ$&>T zuLdvyP}}jUi-wsDf;~K5m3LhzAX4qZv4=j5RO1MBzu<6_I(izZ-sOSgyC}7pP{zA4 z>Qy1hlTTF#)v{e1zjmp4{9$x0UOmou!Wjwb1jA;kU^(&1_ok{zY#MEyswPT0KnYdN6}l#?^VtAjOI90mIZ(0L zYO?*J`v9@<>e=c=4nZ6>S8c@Xae(Y%w=7WmlD4GjllYGX<{e*eM51ns)IVi$x~HgX zDQk9T|5=LqqnFXYU!n#v-^$u*8M*y3HH-6zUoKbYI(Tb>hWNQ_%#^^w@0B%bD5c=u zZuuU5f3135Px>)Xk;=P;HMq)aDv$|G{QZm&KM0~^dwyH%LZF?jC`!@BcBq2Vu zU5(?fqh>qQhh(-OktECNJJp6v`Do})^-2@sE%|$=n|xZa%o!ayiNv%4aq%QG#EuV* z42^Tr=GRV=Er;z=pVnlNkA%YbkRbbRPpmV_3|&&t$C0~LaUhM4WSKP*;mBi0uEl%R z5^^1aG7qaC`H3>qJf|irxwEI+j=kUVJXG?CI))n3J`4K%h#Dc}_8e7j+j5ih4}3XC z9VI#hO^>UOnHImY9MdcW)%S&(QRFFgn5@+Er__Ve^nx?$A&S#X@_N5-)B{k8ov8SE z^%@66{(1F~7skH0s6rV5C_7g@#>|2zUshweB>2S@698-ub^BiJA~A**f3N!Ubq;*5 zM#=SAp6XpQwz{E~Reimpf2nVHB0m4OIz;sj3b;1ZO!bSrfg5XDRUR(!P(z!okgd$U z!rDptjPB!qTQ%fIvOYX{H?z!T9qQ+E6dE-)g0O|JL3JebrXG%k*Vp#d6#= z?KJynm5zUJry&-?(en1%X{x*BqF@V7llx*=3AO;8LF-4V*D7Y4X};n zA*m3z9;;o391T9>w2!C{x@TFj9gmCDMzK>}v!!l>_xmVqs2qrJ;HTORDDB8`i8!sf zm#=&t4NTF#;w)f=K^G{)fPEy zytwV1X!ot!YFmMMEAp(fKIGn}b*5YSbh~@la=WH*u%nJ&Xa}0x$#095#mOcibYhIt z6-Pejd$@D670mqNg2qHdkaK(UP9nVlQg4U$_^qM{SK6g@Vi-R{>e#T|S{sobx9rjS z+1o|W0pbGx?9)oCl*1)9hm{X%kwVFfj%sh7%)XbhF;;(hi zYVRpNR`Fm;l(&LrB|P|oHjFv;Hc~w9|5m%i^*ujVOA+4dm!}osYQl}LYvuVGR=JM* z-_$hO_ITuN%|{6kk)PBqJ%VCm$-g8-#081M1JA#!tu-WYphk}=wC^WwwCr~Au~x-4 zt$oQFzkIB{;%<(gdo)p_ql-_qauP9||5TeTc%Sf#=7e0sq{#Z^xt7RbG~tDInnyR> z=~u0zSZD4lt*r8|Z|QdYsflZhKm4ivBQJjUFYP?5q{-HN-#)#F$SkKc-G|dhw;cM{ z%m8RzA^jfX3e733(_V~cB~kdX!n&LJWAp|3;OXUbvx1^##;?ljd2EyR zB?0I4D!SJPlDM$1PLCVR)h*;4_tUefi?~y)OoXOZ)5{m)txB}InjT@>-b3#A;9}MF zWU(gl*Ne$j3ff*n&!*4sB_(56fX-SywCQ@gmcEldV&73)R$K2Y0_)@2I`aDV(r-X_ zfn>a_j(&wnnQ1u=j&7)%`*-G8H5%)Al0zy@^l`i>!LiNs3-o0V%Cf}m(OR!zGviKN zV^N#XT7PYDoyK?47Yk~rXcv8zWMRCci+;ln)CDuG?1L6|)4dw0eY@*&+oo4fT~v6x zd+MJ%!WndZmYZPt7s2`^#F}3W3H8>aOns=Nuis-RatHlmC>e1eGB6X^^4Nk)_)zb z_xUKjkwz++e_VP^7(jw}-Zm0V?TuEH(-~)8ar5FIb&l7s)1?oPYTQ3T&#_(COdpoB zV9z9dh7Es@{ar}H6#cT?nC&xFU+)zLUnJ_2I5LoHrv6!DswnsRbaL}7Hz)V#<>{AG za_y_g!Qm0E7}l}%tRzlUF-fPN3>M6@oFBDG)<0$dL93E=f5NxPCHa)*OtSu-0JA$; zZ^v|n8_d!Nv%qa{02a;BY2oczL+ZeR^YrUpA_OkdL&O#VuUVomraG|GOS9$rT>(&B zIaOEL63Z-r0xOk?1jV5IB zSuTG1g}#iJDSO@9ND^PTQ?JLPHqOb?rQ1#C_Lvc!;%F-o=KfyY&lcBh-v}&%^`39{ z(Sxv_$bo_%@7L39Hca(cI-GYzf5@j%LXKXG+jLWoURQY7)nocrTiI^AX`g&T58znI zI-!g1$?FsPulz;y^0Xdkr-~$ku?A=KY3x1xP-=zT#bv~<~u_d&t7F6n-?k|Ut zcIWhwqR3f$LEp|#NO9j>{k10G+4q{>l`oTaP4Dl8lwb1nO?+Lv>W2OctELc%4$E%o z{pD@|cHh=VQ*)W0Zn^D~rXfG-eK-}g?XEt>7L*)F;QBx5A5)W)d-*8kfo``R=|!w! z5A_q|1vfeV#n&I|y(xUN4_ol9`$S(a;SXJTqVw}%bS__CK;u{XI_ke;+!Dc}F`VTrAd+aJArto+GD5{L!!a zHk)%BR$sl+&4YJJ2Bp8&bNS%YKlB*Rz@tC(Hcat{NXD!Cmu_AcA&z5zzW(@co!%78 z-(#5uh5e&P%b2+NkKUHK^eW4Xka_Fw2w%dyZquGce*5}F9mCknr>`1@88Sq`#?K2G zon_fjn<565A9z*7m?n(=c`>5~lMQDUGt%Cw)KRzM#vY1k0A>g1lDwlE!8!;G8UF3}>R+QKWWR1FIljsRS;k}(|c zp0um7QQm8}xcEJzH!}&jREvN1HR{{OwOggQVm0HUm(B|Ojp|a@s$5NDrq`BqT^-|! zfWw4(#zU_E;QGc?FItZp8nq3jygxv8I###!j}k?|asw5wziu^De&1{!B6>g~F*%wXfCH!Ij@h*6sv zHp5QHorf~`*l1WX)M(9YXLqKq4l|bX%{Pi3Wu$Yk7XQSUCOBUnY+Uw=kmEy*HdK`S z?5&nMcaJsBQR?O~t@X={2;;Q;66!nNXdwrz`QwccVXNQ98^`Smz}{h^ubsvqtDZvT zV~mAdOJBqo(uMK|E+c{Z&k9mKg~S^3Xe4$g?|0iLe1F6lRUE7(fGdA)6fixkCvmOh zG-J9~-bGtN~?|VkRkiXz( zqu*OST-@c6kwkN#hoo6_#bcZ)QOts>9WLpgG|MJ!=;}<4S1`!Bd{nPl)HcuJ>Qr2I_SyuTH zZ10=t*z>lGZ4}2xx@1JOw291|&o$yW(@Zz;zR zSep8s`5}=cT7|NX1bXzm*}`dRIY&KdIrL3A$1*u)TwSOw=?`W+{OW;0r9AjC?CbbeiT+d$P-Lur*S!V28zZ-$u20?_OKSW<};_ z;rkBh4t;h{XOk8-7V?6^+<{Z0j$NPsk z`Y3e-*XAcQ7DUANrxEc{_W5bSERwQn4R@GV7$}VJ;Sr7>Z6|ZjPqTEoag^h%SLAR7 zJ35!4kDG_5cEONJNSzLL91*Sex#JzJyz<32k&Y#H1#0q2n^Gas4*5SlfHy@uetD}( z#j9f+fAgXct#LU5Y0TY7;?Q-MI(@q$%uf+K}uIsX7bclcySQqTNODDQ!JXtr=($lE+EHX{+r$N!VS_KPD%afQIzW8Vx4$a0KRr3Y~8UdL3i&8@KC HQC|H&sJlNg diff --git a/models/for-tests-ggml-medium.bin b/models/for-tests-ggml-medium.bin index 6ca087929c5827f653424efef88c8dd02279036c..60839c2d7f353ac44d8a276b3aa99ab144130e14 100644 GIT binary patch delta 19050 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 HQC|H&sJlNg diff --git a/models/for-tests-ggml-medium.en.bin b/models/for-tests-ggml-medium.en.bin index 281ebdbb41c2d9b30ad55cab57724bdfbc7c8e81..8a56885713986b89d1294b16b2948edfef6f6dbe 100644 GIT binary patch delta 3518 zcmX|@cW_kK6^Hfuqso{B!(gm67)%)mp#%seW(-Ndc5ncNnt&+*4-7aAvSSRR2GWWJ z(Ih=pnm|GnfhhV(s2O8S2Q`osnzYh3st`8C$dEnnJo%q*-r0N4xu@N8x6<3=Zheo< zBbBf{2QQAw85<-Wnz6e`s1Ohku#2#pkWSb`*h|PDWD@ofvIzSL2M7lV z*@VM{BZM5nQNl68al#2gE&+r*LO$W75D*#=P(YuBgd##Qp@i@);S}LJ!fC?ygfoO6 z2xkfB2WXeCs1G?(fl5!OwZ)7BJh-@(&IXs7W?1YQmlf_aYDX9K_JE;?yCg5Vh6V z79vh!eHZSAh*g3qH00sjSK>O$vKztSVo*mbHwjoBC*FG7+~+IC+#K22|K2kWpn zqpDH#nkzOB&OR3By=e-rJs2oU`}wTB+tJWkDzj`?p{T30Nwo~58dJMV{aNt)5Yt_n z-Njmp!Gn>~k#@RF9)@STkU2r>$L5^|YGz4YIb}8$-snQhsouGc_kZ;C31PIPIRu@ zuK8)3zcgg!{KZt1WPBMSd#wu^Z!BCTk7TVQ$n<|(JyIWzyAF9Cdll=zKQ_ug@lo3n z5u7NG;1zcw;*;cuoMzj7ICjasIZN&YoJ^N{2AZ~O_riTtUdpL;CSt}ZIfA2b+Tpw; ze<)i48t7jpFJarRz1UGMujFf;6oGEnTa;{PkXa}DxHzT7rATU!uk$SM?!uRnB64_j z`3Th%%ORH?*{zgn>&B;IW1w=M4_fCyWCvyKZ(6#_jSjt(C~Gu5!j3^oXZF0I5XB!T z*VrT1AtaAeGC6eDdi?ccMX|cH4#A%)gII7CB6g}$ZZ(qs0xzDXEaHLWO2zdrlse1Y zW)!bf9tWBE@^^1;oN|FP`7q3gHWa(L;4{!EQQ2oD{}9e3DF(NZI}P&>D#2FjVo-8O zX)Q>NI}&jzTdCmEx$=;auQc=N3CTEEp$y?N)aJu;TdCya*zVzUgVM{o2r+1EQsUXJ zHw+toROWC|T`5MBq~2kN(@-s|$F0+WZK}GP7RF|-$o)o+os;*(d9fLI^)e@`w z41737U7?w6Rh3kQ;_>Q+wx(2_S&b=^)vtNV`NB~#U3IXQ&;MS{QtO3ZZ=V-a{;Brj zovuuT%~xw$CPE@U`?orm1GasS^NUnFw}LMk)0eA1bM~fcm+0f&3Hv+2NM-6l}%P6KbB-Um56^ueN)O+b9KpDpfyWAKk~Wtx|QiHpi3; z-`r8Ft%$c^rd!Rh^rN8NRj+fk+$YfROr2oWF#$s)E$%(j^3h_W{C$nz7S~4ORBtU$ zp{cV4VSO|&KYev4uzaxAx0RV@nwfi%K1zGV@2V#i`=)3QdYjg23ysv(+GF!OVn2*E zn%y#yhhEXz3wAAc9r`%5Aj{8_m=vq+lKic|1y8nU=UKt-#SbZ3sFf!Fd-KUo?S1Px z^Uvwk8QLk`nnBSRe^|?D8M$eAbw(RywSNJ|p4I-$RjAEE>{V@ub?RZ9FV`+`Cq~2~ zty=R~_df!TTiO)f=H3Zct)_9eg&)9Er#72)T(QOsul6@HQg;@zz1ncjuIB(AJkf?) zyEdTD3#}g~#~p@Q@9Haf#p6I_FMWn(IRV4^=wbZu)S;-K?&JUt79y*^{&#l9mk#0g z`dHTY?#F~b=oP%p1N0cKkK=6z67ipr`YmfE9>Jsa)7%B#!$#0Y`Z3dIXE^*IQfr+4G2>sgDz%k)5v=2zzU z5WTfonyg$mCWq=?-JAqjxfo~HHP&uS!{ivff$e%DF?xeO(`sS|wr|zzdE0|{*yHqR z>}72R+=kw>r|JJ87{4vj`P*y9*dpD=yIj#&{H>Sv|@17at+egFUf delta 4153 zcmd^BX-rgC6z0AA?lPkTf(F4VU|2+LAtG84Tu@V&#;szEON$G%RH+(3D=vj%Rorkv zeW=kOA|O>Nq59M+My#=giUNvIiW^2p5dp=$*3JyfJ$HWeH$VDk$l)yCIp0~{eN^Xp z&FHx`7~5qYDGA9Bbw>r^$n}*pxgh>+wUmJD?CcuPoo%l_3GEASXTopC>g`PU?Fw&~ z(7y1EUH@bBQhnd&{@-R(Htm8(oaJ|p`S8*iG85;hQHUiH6JJL&MQN8z-G(-pPHzoO!i>Uvxo1Ep$v8VNu z^X)~o{ct%fQ22)$6(>)GaA)J>8xr^4vs7LqV0kCX?gAm7rpmS5xvk$Zxl|ScYjS~H zPq_NoDfzcnb=~SS=0^N_My?T9Idoa>EkhpHugIqi+<8Z>{N9l()jf@}kxN=~lRVdn zn>NWPmxyVk>rk11^KCb@g>Yxp&=Y;cB`vfknkBR*b1*t)u*9nSKF^%et71aZgKkP(rh3eL(pvVG-v+2AU!BP@@l_V!_!Z2c`2N zRSSPY3%O;$F;pg4>I%?Po90VJ=$$>cR?5(A!MeTz`3a(XC9;Pt>i;M5mnKCsB!+>dvHz;#kt2O0hPOEC8^4tcwVwVyGbvUIdPbg$f(iLB5Utosf?ZA=3^Ob05 zLD@Ma3F@0(qKp*A;@}l!0bq0~Q{s?Ve9ASGFMvAVRvyYaY~u22p*dwzr&Pj4x+`Is z*RDOnSV+)?;VL*dFAVsxP3=Yp{6iOUI^(?XS~!{~`e7F+$ZZ(D4wvus2%ODFRm&QO zu~1(A1RMYOAj97C_Sj0?8_njt7x*5Nde{iJ_Lky0P2L(6fiRbWeK=QKY^BgcbNu40w=H1Vw)Z%SJDU2hb1+13K*B( zq}1m1QgfTm;v1n3xlbopY0ctZI zS5xiH?%LelguZMtBv|RkLLpR-Kvn@Pycobn*>qxf5UT~XXE3|K2T6TAh86Hq4vl4X zfRQquEd~r_3cCZ`*3V>@VXq6nU=B9PR)n)29eLOn3z+HFnOdFAVwv6mXUE)qhgHnT z#8dQc4Wp2)ejU39KrQRp3|Nq`t*j0#hiqrlAo)EznYXtvt?I?o%$sM_beeg9t#ctO zZ#^Y#54+|fRst<8DrFuZ8LL@YXB~f_tA!10u4S%0pRh~F(O^0)AuA&nMlAX=E^=Ai H%Ax-Pp%23F diff --git a/models/for-tests-ggml-small.bin b/models/for-tests-ggml-small.bin index e9439e99f87b825d10bcf9e08c4ad4fc905b06fc..c87e07c492dd45dfb3ecddd19a14270bf7fbc889 100644 GIT binary patch delta 19050 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 HQC|H&sJlNg diff --git a/models/for-tests-ggml-small.en.bin b/models/for-tests-ggml-small.en.bin index 8b301de0a63748c6dda6a9fe7443544362a4ac0b..04f01ff1dc102a13cdeb65a5efcf5d74499df8ff 100644 GIT binary patch delta 3518 zcmX|@cW_kK6^Hfuqso{B!(gm67)%)mp#%seW(-Ndc5ncNnt&+*4-7aAvSSRR2GWWJ z(Ih=pnm|GnfhhV(s2O8S2Q`osnzYh3st`8C$dEnnJo%q*-r0N4xu@N8x6<3=Zheo< zBbBf{2QQAw85<-Wnz6e`s1Ohku#2#pkWSb`*h|PDWD@ofvIzSL2M7lV z*@VM{BZM5nQNl68al#2gE&+r*LO$W75D*#=P(YuBgd##Qp@i@);S}LJ!fC?ygfoO6 z2xkfB2WXeCs1G?(fl5!OwZ)7BJh-@(&IXs7W?1YQmlf_aYDX9K_JE;?yCg5Vh6V z79vh!eHZSAh*g3qH00sjSK>O$vKztSVo*mbHwjoBC*FG7+~+IC+#K22|K2kWpn zqpDH#nkzOB&OR3By=e-rJs2oU`}wTB+tJWkDzj`?p{T30Nwo~58dJMV{aNt)5Yt_n z-Njmp!Gn>~k#@RF9)@STkU2r>$L5^|YGz4YIb}8$-snQhsouGc_kZ;C31PIPIRu@ zuK8)3zcgg!{KZt1WPBMSd#wu^Z!BCTk7TVQ$n<|(JyIWzyAF9Cdll=zKQ_ug@lo3n z5u7NG;1zcw;*;cuoMzj7ICjasIZN&YoJ^N{2AZ~O_riTtUdpL;CSt}ZIfA2b+Tpw; ze<)i48t7jpFJarRz1UGMujFf;6oGEnTa;{PkXa}DxHzT7rATU!uk$SM?!uRnB64_j z`3Th%%ORH?*{zgn>&B;IW1w=M4_fCyWCvyKZ(6#_jSjt(C~Gu5!j3^oXZF0I5XB!T z*VrT1AtaAeGC6eDdi?ccMX|cH4#A%)gII7CB6g}$ZZ(qs0xzDXEaHLWO2zdrlse1Y zW)!bf9tWBE@^^1;oN|FP`7q3gHWa(L;4{!EQQ2oD{}9e3DF(NZI}P&>D#2FjVo-8O zX)Q>NI}&jzTdCmEx$=;auQc=N3CTEEp$y?N)aJu;TdCya*zVzUgVM{o2r+1EQsUXJ zHw+toROWC|T`5MBq~2kN(@-s|$F0+WZK}GP7RF|-$o)o+os;*(d9fLI^)e@`w z41737U7?w6Rh3kQ;_>Q+wx(2_S&b=^)vtNV`NB~#U3IXQ&;MS{QtO3ZZ=V-a{;Brj zovuuT%~xw$CPE@U`?orm1GasS^NUnFw}LMk)0eA1bM~fcm+0f&3Hv+2NM-6l}%P6KbB-Um56^ueN)O+b9KpDpfyWAKk~Wtx|QiHpi3; z-`r8Ft%$c^rd!Rh^rN8NRj+fk+$YfROr2oWF#$s)E$%(j^3h_W{C$nz7S~4ORBtU$ zp{cV4VSO|&KYev4uzaxAx0RV@nwfi%K1zGV@2V#i`=)3QdYjg23ysv(+GF!OVn2*E zn%y#yhhEXz3wAAc9r`%5Aj{8_m=vq+lKic|1y8nU=UKt-#SbZ3sFf!Fd-KUo?S1Px z^Uvwk8QLk`nnBSRe^|?D8M$eAbw(RywSNJ|p4I-$RjAEE>{V@ub?RZ9FV`+`Cq~2~ zty=R~_df!TTiO)f=H3Zct)_9eg&)9Er#72)T(QOsul6@HQg;@zz1ncjuIB(AJkf?) zyEdTD3#}g~#~p@Q@9Haf#p6I_FMWn(IRV4^=wbZu)S;-K?&JUt79y*^{&#l9mk#0g z`dHTY?#F~b=oP%p1N0cKkK=6z67ipr`YmfE9>Jsa)7%B#!$#0Y`Z3dIXE^*IQfr+4G2>sgDz%k)5v=2zzU z5WTfonyg$mCWq=?-JAqjxfo~HHP&uS!{ivff$e%DF?xeO(`sS|wr|zzdE0|{*yHqR z>}72R+=kw>r|JJ87{4vj`P*y9*dpD=yIj#&{H>Sv|@17at+egFUf delta 4153 zcmd^BX-rgC6z0AA?lPkTf(F4VU|2+LAtG84Tu@V&#;szEON$G%RH+(3D=vj%Rorkv zeW=kOA|O>Nq59M+My#=giUNvIiW^2p5dp=$*3JyfJ$HWeH$VDk$l)yCIp0~{eN^Xp z&FHx`7~5qYDGA9Bbw>r^$n}*pxgh>+wUmJD?CcuPoo%l_3GEASXTopC>g`PU?Fw&~ z(7y1EUH@bBQhnd&{@-R(Htm8(oaJ|p`S8*iG85;hQHUiH6JJL&MQN8z-G(-pPHzoO!i>Uvxo1Ep$v8VNu z^X)~o{ct%fQ22)$6(>)GaA)J>8xr^4vs7LqV0kCX?gAm7rpmS5xvk$Zxl|ScYjS~H zPq_NoDfzcnb=~SS=0^N_My?T9Idoa>EkhpHugIqi+<8Z>{N9l()jf@}kxN=~lRVdn zn>NWPmxyVk>rk11^KCb@g>Yxp&=Y;cB`vfknkBR*b1*t)u*9nSKF^%et71aZgKkP(rh3eL(pvVG-v+2AU!BP@@l_V!_!Z2c`2N zRSSPY3%O;$F;pg4>I%?Po90VJ=$$>cR?5(A!MeTz`3a(XC9;Pt>i;M5mnKCsB!+>dvHz;#kt2O0hPOEC8^4tcwVwVyGbvUIdPbg$f(iLB5Utosf?ZA=3^Ob05 zLD@Ma3F@0(qKp*A;@}l!0bq0~Q{s?Ve9ASGFMvAVRvyYaY~u22p*dwzr&Pj4x+`Is z*RDOnSV+)?;VL*dFAVsxP3=Yp{6iOUI^(?XS~!{~`e7F+$ZZ(D4wvus2%ODFRm&QO zu~1(A1RMYOAj97C_Sj0?8_njt7x*5Nde{iJ_Lky0P2L(6fiRbWeK=QKY^BgcbNu40w=H1Vw)Z%SJDU2hb1+13K*B( zq}1m1QgfTm;v1n3xlbopY0ctZI zS5xiH?%LelguZMtBv|RkLLpR-Kvn@Pycobn*>qxf5UT~XXE3|K2T6TAh86Hq4vl4X zfRQquEd~r_3cCZ`*3V>@VXq6nU=B9PR)n)29eLOn3z+HFnOdFAVwv6mXUE)qhgHnT z#8dQc4Wp2)ejU39KrQRp3|Nq`t*j0#hiqrlAo)EznYXtvt?I?o%$sM_beeg9t#ctO zZ#^Y#54+|fRst<8DrFuZ8LL@YXB~f_tA!10u4S%0pRh~F(O^0)AuA&nMlAX=E^=Ai H%Ax-Pp%23F diff --git a/models/for-tests-ggml-tiny.bin b/models/for-tests-ggml-tiny.bin index 1351aeba9b17d782f15baf46716c34dcfba0a30c..6837ddf0df0370395109775574dd0d3659c0b5a3 100644 GIT binary patch delta 19050 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 HQC|H&sJlNg diff --git a/models/for-tests-ggml-tiny.en.bin b/models/for-tests-ggml-tiny.en.bin index 30868e1c8e3a6e56c88c5fed48aa5e5192a88c2b..e8fe2044b1851f3bff5acd00655a82f1ab10614f 100644 GIT binary patch delta 3518 zcmX|@cW_kK6^Hfuqso{B!(gm67)%)mp#%seW(-Ndc5ncNnt&+*4-7aAvSSRR2GWWJ z(Ih=pnm|GnfhhV(s2O8S2Q`osnzYh3st`8C$dEnnJo%q*-r0N4xu@N8x6<3=Zheo< zBbBf{2QQAw85<-Wnz6e`s1Ohku#2#pkWSb`*h|PDWD@ofvIzSL2M7lV z*@VM{BZM5nQNl68al#2gE&+r*LO$W75D*#=P(YuBgd##Qp@i@);S}LJ!fC?ygfoO6 z2xkfB2WXeCs1G?(fl5!OwZ)7BJh-@(&IXs7W?1YQmlf_aYDX9K_JE;?yCg5Vh6V z79vh!eHZSAh*g3qH00sjSK>O$vKztSVo*mbHwjoBC*FG7+~+IC+#K22|K2kWpn zqpDH#nkzOB&OR3By=e-rJs2oU`}wTB+tJWkDzj`?p{T30Nwo~58dJMV{aNt)5Yt_n z-Njmp!Gn>~k#@RF9)@STkU2r>$L5^|YGz4YIb}8$-snQhsouGc_kZ;C31PIPIRu@ zuK8)3zcgg!{KZt1WPBMSd#wu^Z!BCTk7TVQ$n<|(JyIWzyAF9Cdll=zKQ_ug@lo3n z5u7NG;1zcw;*;cuoMzj7ICjasIZN&YoJ^N{2AZ~O_riTtUdpL;CSt}ZIfA2b+Tpw; ze<)i48t7jpFJarRz1UGMujFf;6oGEnTa;{PkXa}DxHzT7rATU!uk$SM?!uRnB64_j z`3Th%%ORH?*{zgn>&B;IW1w=M4_fCyWCvyKZ(6#_jSjt(C~Gu5!j3^oXZF0I5XB!T z*VrT1AtaAeGC6eDdi?ccMX|cH4#A%)gII7CB6g}$ZZ(qs0xzDXEaHLWO2zdrlse1Y zW)!bf9tWBE@^^1;oN|FP`7q3gHWa(L;4{!EQQ2oD{}9e3DF(NZI}P&>D#2FjVo-8O zX)Q>NI}&jzTdCmEx$=;auQc=N3CTEEp$y?N)aJu;TdCya*zVzUgVM{o2r+1EQsUXJ zHw+toROWC|T`5MBq~2kN(@-s|$F0+WZK}GP7RF|-$o)o+os;*(d9fLI^)e@`w z41737U7?w6Rh3kQ;_>Q+wx(2_S&b=^)vtNV`NB~#U3IXQ&;MS{QtO3ZZ=V-a{;Brj zovuuT%~xw$CPE@U`?orm1GasS^NUnFw}LMk)0eA1bM~fcm+0f&3Hv+2NM-6l}%P6KbB-Um56^ueN)O+b9KpDpfyWAKk~Wtx|QiHpi3; z-`r8Ft%$c^rd!Rh^rN8NRj+fk+$YfROr2oWF#$s)E$%(j^3h_W{C$nz7S~4ORBtU$ zp{cV4VSO|&KYev4uzaxAx0RV@nwfi%K1zGV@2V#i`=)3QdYjg23ysv(+GF!OVn2*E zn%y#yhhEXz3wAAc9r`%5Aj{8_m=vq+lKic|1y8nU=UKt-#SbZ3sFf!Fd-KUo?S1Px z^Uvwk8QLk`nnBSRe^|?D8M$eAbw(RywSNJ|p4I-$RjAEE>{V@ub?RZ9FV`+`Cq~2~ zty=R~_df!TTiO)f=H3Zct)_9eg&)9Er#72)T(QOsul6@HQg;@zz1ncjuIB(AJkf?) zyEdTD3#}g~#~p@Q@9Haf#p6I_FMWn(IRV4^=wbZu)S;-K?&JUt79y*^{&#l9mk#0g z`dHTY?#F~b=oP%p1N0cKkK=6z67ipr`YmfE9>Jsa)7%B#!$#0Y`Z3dIXE^*IQfr+4G2>sgDz%k)5v=2zzU z5WTfonyg$mCWq=?-JAqjxfo~HHP&uS!{ivff$e%DF?xeO(`sS|wr|zzdE0|{*yHqR z>}72R+=kw>r|JJ87{4vj`P*y9*dpD=yIj#&{H>Sv|@17at+egFUf delta 4153 zcmd^BX-rgC6z0AA?lPkTf(F4VU|2+LAtG84Tu@V&#;szEON$G%RH+(3D=vj%Rorkv zeW=kOA|O>Nq59M+My#=giUNvIiW^2p5dp=$*3JyfJ$HWeH$VDk$l)yCIp0~{eN^Xp z&FHx`7~5qYDGA9Bbw>r^$n}*pxgh>+wUmJD?CcuPoo%l_3GEASXTopC>g`PU?Fw&~ z(7y1EUH@bBQhnd&{@-R(Htm8(oaJ|p`S8*iG85;hQHUiH6JJL&MQN8z-G(-pPHzoO!i>Uvxo1Ep$v8VNu z^X)~o{ct%fQ22)$6(>)GaA)J>8xr^4vs7LqV0kCX?gAm7rpmS5xvk$Zxl|ScYjS~H zPq_NoDfzcnb=~SS=0^N_My?T9Idoa>EkhpHugIqi+<8Z>{N9l()jf@}kxN=~lRVdn zn>NWPmxyVk>rk11^KCb@g>Yxp&=Y;cB`vfknkBR*b1*t)u*9nSKF^%et71aZgKkP(rh3eL(pvVG-v+2AU!BP@@l_V!_!Z2c`2N zRSSPY3%O;$F;pg4>I%?Po90VJ=$$>cR?5(A!MeTz`3a(XC9;Pt>i;M5mnKCsB!+>dvHz;#kt2O0hPOEC8^4tcwVwVyGbvUIdPbg$f(iLB5Utosf?ZA=3^Ob05 zLD@Ma3F@0(qKp*A;@}l!0bq0~Q{s?Ve9ASGFMvAVRvyYaY~u22p*dwzr&Pj4x+`Is z*RDOnSV+)?;VL*dFAVsxP3=Yp{6iOUI^(?XS~!{~`e7F+$ZZ(D4wvus2%ODFRm&QO zu~1(A1RMYOAj97C_Sj0?8_njt7x*5Nde{iJ_Lky0P2L(6fiRbWeK=QKY^BgcbNu40w=H1Vw)Z%SJDU2hb1+13K*B( zq}1m1QgfTm;v1n3xlbopY0ctZI zS5xiH?%LelguZMtBv|RkLLpR-Kvn@Pycobn*>qxf5UT~XXE3|K2T6TAh86Hq4vl4X zfRQquEd~r_3cCZ`*3V>@VXq6nU=B9PR)n)29eLOn3z+HFnOdFAVwv6mXUE)qhgHnT z#8dQc4Wp2)ejU39KrQRp3|Nq`t*j0#hiqrlAo)EznYXtvt?I?o%$sM_beeg9t#ctO zZ#^Y#54+|fRst<8DrFuZ8LL@YXB~f_tA!10u4S%0pRh~F(O^0)AuA&nMlAX=E^=Ai H%Ax-Pp%23F diff --git a/models/gen-test-models.py b/models/gen-test-models.py new file mode 100644 index 00000000000..7d5ae511bef --- /dev/null +++ b/models/gen-test-models.py @@ -0,0 +1,136 @@ +import base64 +import os +import shutil +import struct +import numpy as np + +# ggml magic number +GGML_FILE_MAGIC = 0x67676d6c # "ggml" + + +# Hyperparameter settings (configuration using tiny.en model) +class HyperParams: + def __init__(self, + n_vocab=51865, + n_audio_ctx=1500, + n_audio_state=384, + n_audio_head=6, + n_audio_layer=4, + n_text_ctx=448, + n_text_state=384, + n_text_head=6, + n_text_layer=4, + n_mels=80): + self.n_vocab = n_vocab + self.n_audio_ctx = n_audio_ctx + self.n_audio_state = n_audio_state + self.n_audio_head = n_audio_head + self.n_audio_layer = n_audio_layer + self.n_text_ctx = n_text_ctx + self.n_text_state = n_text_state + self.n_text_head = n_text_head + self.n_text_layer = n_text_layer + self.n_mels = n_mels + self.ftype = True # True: fp16, False: fp32 + +def write_ggml_metadata(fout, hparams): + # write magic number + fout.write(struct.pack("i", GGML_FILE_MAGIC)) + + # write hyperparameters + fout.write(struct.pack("i", hparams.n_vocab)) + fout.write(struct.pack("i", hparams.n_audio_ctx)) + fout.write(struct.pack("i", hparams.n_audio_state)) + fout.write(struct.pack("i", hparams.n_audio_head)) + fout.write(struct.pack("i", hparams.n_audio_layer)) + fout.write(struct.pack("i", hparams.n_text_ctx)) + fout.write(struct.pack("i", hparams.n_text_state)) + fout.write(struct.pack("i", hparams.n_text_head)) + fout.write(struct.pack("i", hparams.n_text_layer)) + fout.write(struct.pack("i", hparams.n_mels)) + fout.write(struct.pack("i", hparams.ftype)) + +def write_mel_filters(fout, hparams, mel_filters_path): + print("loading real Mel filter data...") + # load the Mel filter from the npz file + with np.load(mel_filters_path) as f: + filters = f[f"mel_{hparams.n_mels}"] + fout.write(struct.pack("i", filters.shape[0])) + fout.write(struct.pack("i", filters.shape[1])) + for i in range(filters.shape[0]): + for j in range(filters.shape[1]): + fout.write(struct.pack("f", filters[i][j])) + +def write_tokenizer(fout, tokenizer_path): + # read tokenizer file + with open(tokenizer_path, "r") as f: + tokens = {base64.b64decode(token): int(rank) for token, rank in (line.split() for line in f.readlines() if line)} + # write size of tokenizer + fout.write(struct.pack("i", len(tokens))) + # write vocabulary + for t in tokens: + fout.write(struct.pack("i", len(t))) + fout.write(t) + +def generate_empty_model(filename, hparams): + print(f"generate empty model file: {filename}") + with open(filename, "wb") as f: + write_ggml_metadata(f, hparams) + write_mel_filters(f, hparams, "whisper/whisper/assets/mel_filters.npz") + write_tokenizer(f, f"whisper/whisper/assets/{'gpt2' if hparams.n_vocab < 51865 else 'multilingual'}.tiktoken") + # ignore the rest of the model + +if __name__ == "__main__": + os.system("git clone https://github.com/openai/whisper.git") + + # Base models + generate_empty_model("for-tests-ggml-base.bin", HyperParams( + n_vocab=51865, n_audio_state=512, n_audio_head=8, n_audio_layer=6, + n_text_state=512, n_text_head=8, n_text_layer=6 + )) + generate_empty_model("for-tests-ggml-base.en.bin", HyperParams( + n_vocab=51864, n_audio_state=512, n_audio_head=8, n_audio_layer=6, + n_text_state=512, n_text_head=8, n_text_layer=6 + )) + + # Small models + generate_empty_model("for-tests-ggml-small.bin", HyperParams( + n_vocab=51865, n_audio_state=768, n_audio_head=12, n_audio_layer=12, + n_text_state=768, n_text_head=12, n_text_layer=12 + )) + generate_empty_model("for-tests-ggml-small.en.bin", HyperParams( + n_vocab=51864, n_audio_state=768, n_audio_head=12, n_audio_layer=12, + n_text_state=768, n_text_head=12, n_text_layer=12 + )) + + # Medium models + generate_empty_model("for-tests-ggml-medium.bin", HyperParams( + n_vocab=51865, n_audio_state=1024, n_audio_head=16, n_audio_layer=24, + n_text_state=1024, n_text_head=16, n_text_layer=24 + )) + generate_empty_model("for-tests-ggml-medium.en.bin", HyperParams( + n_vocab=51864, n_audio_state=1024, n_audio_head=16, n_audio_layer=24, + n_text_state=1024, n_text_head=16, n_text_layer=24 + )) + + # Large models + generate_empty_model("for-tests-ggml-large.bin", HyperParams( + n_vocab=51865, n_audio_state=1280, n_audio_head=20, n_audio_layer=32, + n_text_state=1280, n_text_head=20, n_text_layer=32 + )) + # generate_empty_model("for-tests-ggml-large-v3.bin", HyperParams( # add <|yue|> + # n_vocab=51866, n_audio_state=1280, n_audio_head=20, n_audio_layer=32, + # n_text_state=1280, n_text_head=20, n_text_layer=32 + # )) + + # Tiny models + generate_empty_model("for-tests-ggml-tiny.bin", HyperParams(n_vocab=51865)) + generate_empty_model("for-tests-ggml-tiny.en.bin", HyperParams(n_vocab=51864)) + + # Turbo model (based on large-v3 with optimizations) + # generate_empty_model("for-tests-ggml-turbo.bin", HyperParams( # add <|yue|> + # n_vocab=51866, n_audio_state=1280, n_audio_head=20, n_audio_layer=32, + # n_text_state=1280, n_text_head=20, n_text_layer=32 + # )) + + shutil.rmtree("whisper", ignore_errors=True)