From 961d89d11bdbb23623656bcda2833a7c7efd9ff2 Mon Sep 17 00:00:00 2001 From: mio Date: Mon, 4 Sep 2023 02:40:47 +0000 Subject: [PATCH] Add giraffe script, deprecate old scripts --- {ftg => deprecated/ftg}/config.sample.yml | 0 {ftg => deprecated/ftg}/formatter.py | 0 {ftg => deprecated/ftg}/hashi.py | 0 {ftg => deprecated/ftg}/main.py | 0 {ftg => deprecated/ftg}/readme.md | 0 {opml => deprecated/opml}/mug.of.opml | 0 {opml => deprecated/opml}/opml.sh | 0 {opml => deprecated/opml}/readme.md | 0 {opml => deprecated/opml}/urls | 0 {saiba80 => deprecated/saiba80}/readme.md | 0 {saiba80 => deprecated/saiba80}/saiba80 | 0 {saiba80 => deprecated/saiba80}/saiba80.py | 0 .../saiba80}/saiba80_game_titles.py | 0 .../saiba80}/sources/combined.txt | 0 .../saiba80}/sources/fashion.txt | 0 .../saiba80}/sources/films.txt | 0 .../saiba80}/sources/games.txt | 0 .../saiba80}/sources/readme.md | 0 .../saiba80}/sources/toys.txt | 0 .../saiba80}/sources/tv.txt | 0 {twtxt => deprecated/twtxt}/tw2txt | 0 {twtxt => deprecated/twtxt}/txtsh | 0 thirdparty/our/coffee | Bin 101392 -> 0 bytes .../{coffee.nim => coffeefact/coffeefact.nim} | 0 thirdparty/our/giraffe/giraffe.json | 7 + thirdparty/our/giraffe/giraffe.nim | 289 ++++++++++++++++++ thirdparty/our/giraffe/giraffeData.json | 117 +++++++ thirdparty/our/giraffe/readme.md | 23 ++ thirdparty/readme.md | 2 +- 29 files changed, 437 insertions(+), 1 deletion(-) rename {ftg => deprecated/ftg}/config.sample.yml (100%) rename {ftg => deprecated/ftg}/formatter.py (100%) rename {ftg => deprecated/ftg}/hashi.py (100%) rename {ftg => deprecated/ftg}/main.py (100%) rename {ftg => deprecated/ftg}/readme.md (100%) rename {opml => deprecated/opml}/mug.of.opml (100%) rename {opml => deprecated/opml}/opml.sh (100%) rename {opml => deprecated/opml}/readme.md (100%) rename {opml => deprecated/opml}/urls (100%) rename {saiba80 => deprecated/saiba80}/readme.md (100%) rename {saiba80 => deprecated/saiba80}/saiba80 (100%) rename {saiba80 => deprecated/saiba80}/saiba80.py (100%) rename {saiba80 => deprecated/saiba80}/saiba80_game_titles.py (100%) rename {saiba80 => deprecated/saiba80}/sources/combined.txt (100%) rename {saiba80 => deprecated/saiba80}/sources/fashion.txt (100%) rename {saiba80 => deprecated/saiba80}/sources/films.txt (100%) rename {saiba80 => deprecated/saiba80}/sources/games.txt (100%) rename {saiba80 => deprecated/saiba80}/sources/readme.md (100%) rename {saiba80 => deprecated/saiba80}/sources/toys.txt (100%) rename {saiba80 => deprecated/saiba80}/sources/tv.txt (100%) rename {twtxt => deprecated/twtxt}/tw2txt (100%) rename {twtxt => deprecated/twtxt}/txtsh (100%) delete mode 100755 thirdparty/our/coffee rename thirdparty/our/{coffee.nim => coffeefact/coffeefact.nim} (100%) create mode 100644 thirdparty/our/giraffe/giraffe.json create mode 100644 thirdparty/our/giraffe/giraffe.nim create mode 100644 thirdparty/our/giraffe/giraffeData.json create mode 100644 thirdparty/our/giraffe/readme.md diff --git a/ftg/config.sample.yml b/deprecated/ftg/config.sample.yml similarity index 100% rename from ftg/config.sample.yml rename to deprecated/ftg/config.sample.yml diff --git a/ftg/formatter.py b/deprecated/ftg/formatter.py similarity index 100% rename from ftg/formatter.py rename to deprecated/ftg/formatter.py diff --git a/ftg/hashi.py b/deprecated/ftg/hashi.py similarity index 100% rename from ftg/hashi.py rename to deprecated/ftg/hashi.py diff --git a/ftg/main.py b/deprecated/ftg/main.py similarity index 100% rename from ftg/main.py rename to deprecated/ftg/main.py diff --git a/ftg/readme.md b/deprecated/ftg/readme.md similarity index 100% rename from ftg/readme.md rename to deprecated/ftg/readme.md diff --git a/opml/mug.of.opml b/deprecated/opml/mug.of.opml similarity index 100% rename from opml/mug.of.opml rename to deprecated/opml/mug.of.opml diff --git a/opml/opml.sh b/deprecated/opml/opml.sh similarity index 100% rename from opml/opml.sh rename to deprecated/opml/opml.sh diff --git a/opml/readme.md b/deprecated/opml/readme.md similarity index 100% rename from opml/readme.md rename to deprecated/opml/readme.md diff --git a/opml/urls b/deprecated/opml/urls similarity index 100% rename from opml/urls rename to deprecated/opml/urls diff --git a/saiba80/readme.md b/deprecated/saiba80/readme.md similarity index 100% rename from saiba80/readme.md rename to deprecated/saiba80/readme.md diff --git a/saiba80/saiba80 b/deprecated/saiba80/saiba80 similarity index 100% rename from saiba80/saiba80 rename to deprecated/saiba80/saiba80 diff --git a/saiba80/saiba80.py b/deprecated/saiba80/saiba80.py similarity index 100% rename from saiba80/saiba80.py rename to deprecated/saiba80/saiba80.py diff --git a/saiba80/saiba80_game_titles.py b/deprecated/saiba80/saiba80_game_titles.py similarity index 100% rename from saiba80/saiba80_game_titles.py rename to deprecated/saiba80/saiba80_game_titles.py diff --git a/saiba80/sources/combined.txt b/deprecated/saiba80/sources/combined.txt similarity index 100% rename from saiba80/sources/combined.txt rename to deprecated/saiba80/sources/combined.txt diff --git a/saiba80/sources/fashion.txt b/deprecated/saiba80/sources/fashion.txt similarity index 100% rename from saiba80/sources/fashion.txt rename to deprecated/saiba80/sources/fashion.txt diff --git a/saiba80/sources/films.txt b/deprecated/saiba80/sources/films.txt similarity index 100% rename from saiba80/sources/films.txt rename to deprecated/saiba80/sources/films.txt diff --git a/saiba80/sources/games.txt b/deprecated/saiba80/sources/games.txt similarity index 100% rename from saiba80/sources/games.txt rename to deprecated/saiba80/sources/games.txt diff --git a/saiba80/sources/readme.md b/deprecated/saiba80/sources/readme.md similarity index 100% rename from saiba80/sources/readme.md rename to deprecated/saiba80/sources/readme.md diff --git a/saiba80/sources/toys.txt b/deprecated/saiba80/sources/toys.txt similarity index 100% rename from saiba80/sources/toys.txt rename to deprecated/saiba80/sources/toys.txt diff --git a/saiba80/sources/tv.txt b/deprecated/saiba80/sources/tv.txt similarity index 100% rename from saiba80/sources/tv.txt rename to deprecated/saiba80/sources/tv.txt diff --git a/twtxt/tw2txt b/deprecated/twtxt/tw2txt similarity index 100% rename from twtxt/tw2txt rename to deprecated/twtxt/tw2txt diff --git a/twtxt/txtsh b/deprecated/twtxt/txtsh similarity index 100% rename from twtxt/txtsh rename to deprecated/twtxt/txtsh diff --git a/thirdparty/our/coffee b/thirdparty/our/coffee deleted file mode 100755 index c06373c38b1f192d9d3ec090d0a548ecdc90c121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101392 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

tWNf7-YQdINo}=N^(wLHh+4hF zC(O%s3^iYByBDd25va$cFD2zBkSz2vsB*QUdKVJClzjqlFSN6}(C62u*y=`u*tA=( zZvVz#I;Y5Qn|8JTw;%6laS>o4N?n~d+JbG8~q@+lIODuDlr_!96xpTWoCt!Y8a{q>R?Jc0DG(51ez5}&jLSs zPO4VuYE}PU-Lw;Y+_167t@lvv!7ZULyHiq_BRB18*xch4qQl9@^UJZPI!d0yHsc|l zT4Ec~wMu|(1hEYaruj>@(uxJG>A&e)Fiqz!rj~SQ6=?Q|O*@2-<;+ZTnl(K7SZC)Rdz9QA+L09rW2kwng*}X#F})_G zxN?tD@hEZ%eY0u|f~<_q7oivZz$Vj*b(Em4fZ3Jht67mjeF=yg{p{2OB{?kB^*YdNA)X-S4zc4 zG&Yd}*U^3|~Y_sUu&U>5kcs zj%tI+PAl;kKIbEAbUJgug<0XdWl@++v)TT4Ba#oFdqL3;(M4y@xCL?T= zK0$M#ou}+CUnB+%pFm|s+7$<4rHx=4jo83Cut!Se@8%gA1Y6$5hsNWYf*@NnE4^USdK|uk-)B9Bb(U(}9qoTv35m3)tReX3!h5V%wqz2Ay+scXiTo;v zdhE>BtWY}fw>W)e1f{5@f8K$lAf*6W5f(>Fs;Cs`WJ5`-*6-nVqfb8D4~yFs+bz0zMA2+kD7m7r@_dZ0Jf^hhR-j0>WpB>BTNN}!6#U$L6T2l_`w3NK2m^JtZ0 zAc&#DA|>)q*I1DrE9Idu2P<-q5mRTBifvU#G^&e!sR9Hm%MMYw=FD`l=rG>;E6c6` zhs4iImli*2C&9+sJR`5BMITSck$A%#q^W2x|6o?fR7}OPErsyfUb@kAENl+lUBd69 zPKgr^Zoh#TEe^Mf&FLBGEh^$*_$QcsD_`QqNM3i%0-j|`#TM?u5TyOZ-Q7R%-t|7qM z!&$E)=0jj;8g&S@Ig$td+G~wzz?j*zq7%76N`(f7QBAEEM&U&w4cj?{yN3Xi#m1zJ z6s^r;v|J|%rSls&!Zw)kE}-3SI=9Q7=#gioDQ4G!rl!|uoM~C{E>REO0=0}iYiMCj zr~=T)bVwCOXP8OQGN~U9Ks%BnnmM&V%ey91SvHF~9-nn2gE~>sl_Kf}uxt-^K)|i< zQ#(Sm?n{(U8p$V;7%}-|49n8Y>HY%EOI@55Hu2SJi_9_kQ8*g>-2K@2IV;M~f5sTL z%FmVCV*Gq#l%KEr-}3V|)EUpu?;_^6^E2t9u%s|{H|J-IzRGbA-;Vcqe(nr@#sF=? z2hF%%^79-}0X>cOAAr|j=>cHr9eB-DbKfp2K^QFE87xg}EMPW9zYwfY6#z?9K-erj zz>l>j%XQ-Ga;PB9`MSvAYst`5rDSj`9V(uiwN-O4`~#S`q3fl9#zZZQ@HvjZAD8^y z7Bw?#JA94R3~}`;;(4@;qz6rYu=oI*#nD0|87z(`+Jz<1ur$rQzJM4SBx-rrg3HN? zgZl!!&!Etjxm;?n;e+7J6;b``v2R=B?~~&BdjR-5kOcmw{?3B$M0f$Q_?gIW%e#2~ zhLK)hi+zr7_LHTSwiXs0mXO^@Lu$^+Qh7}S$R3R@YmvptN#XBX(HJO51a6C?EIvQR z;+prx@^k|5I)ZEsvQMpUN`!1-cCHb|UmOjpb2x%JLAQg~pCjn-_d(XPHFLqQ!S&JE z`ylZ_9D74QhQCg-W|kxkHIf^+N!Y6af6oPfLoZwgDpaFOF>Mn_#1=h)ro%Et?#E@& z5Qh1O<|Y52RCGYPqa${qjbqe_P*5Ya1s190CQBM&D{eC<&7CB zqRrEU+iGYnn43-N9M<%GYTXcKa;wW{RPftr(o|ymbjbBa0>9rS`Tb;2BJmuI{T{W= zjprn76Y+eg(fJ2-Kn%|{b8f*XFf0N?KmPa?iQ7e%;q7Drzh62wq22>*~E&w65IjQfE}7;uC)l za1%_3UBYAskH`HVL5Y?J+dt4Re>w6?4aS}!v(tqhXH$e@S*KG`h*DWi+#kxnkV6$6 zQH;=g9XKV)6aE*ztdR2{|KsnyX!+EnOO2v^Q@KT?&uP%OX*0c|7THweWZt)T=EG-l zK5QzRPxIl@JY-ZV&ZF{=s={1mx6905Pj!+2nV*qnRqQ1e&c6zTp#a37XEk#+CP;rd zLCz;%GBc+i5`YXVgJgv<7PF&U*Ao$C4svEkxAqhU2-OXiv*X}qDmu>NDYjmL+Dm5E zUSD@j!m=f`BZ`mQM(b1FU^4SFK%})B>O*w8Y!y8}OPDTWXu8z6)t^g^k?6F3&r)^CQ3S-{_jx7}?qMDY(vO6f1`w(ChR>sU^wn1``9Zo7w#%E+lCWJ4 zGxJYi2G;%F8>N~>8QpmXk+UJ#-=0XKj*pwb@`;s&Yfh0;tD0A3K#?Mrf|MB!9%*q> z34NQ@?_*M=;5G*-LuW4K!k`v!kSq4265ehd{WPhXurR=K9g_;X?I-T@dIl*g>s*s+ zs8O-T-vfnUQk@tke-x~zD5O**BcSEYmGh}TvbyF|v02u_e5&q(EYbP&6^D2}X?m~6 z5sJ+x5L3CA<`apRqI&myvgHfub*iDTe8DQ%5SgOqr%;O^U;ab$NkG0Jqf*hE=hHCE zhM|Do^`t*hV0dgv5Svf)P$#;Oc*Ae?j_`cyKx7hoz(`(8?UM5eJ5=3C;Fvkzoty+M z?y&U{)`6;VHO;5>a8*#v;^=&O6=CdMMy1V@n^3e4BVEFrVm*%M6ME!Ml#BWFCLVF~ z>7zYFWakX)4(Kbd@{$4~Xe*Wr8Po+XF;q=sn>eqA8XEdj7u*?8x(cCmksLy2u^^&( zmCN%AU8qyq%JoXc2RyF|<>F!u&8w)r0`sd7B*o^JrWeut(g=a5Bag>QRWm5gnQ2h` z@O7y1lH@HtYp5>SOw;G4gkR#BhCUZ0uTn72Xkb}hb*6cC%Z}#q>PpSbxg#~nvpOps z*340)iN0TKKAZVTQ&Ztcnrl$u4nyFRw~C);mo+NP!`lm)Ffp)$ItC-V0`p6l1{EUo z&yXJD+W{%81_D=egkPAqq`@Hr;+D++uz!1fpTltgW9Iv4EefiGt0)-GBYGZ$9kSX( z1=S72o+3R%DG1VEb-2wB;%T9eN)vU1_@mMZdu3z@vVBTj_8VaOs?H!X0O66d5O3i> zV|ZfykGg3eF=rA!DLp%yl%g+EIQEf5d9ImfO+y;)qjyQMWhf%$HuPPl1Rh(vtp};X z93R7-KcQ)@;?CO}h^eJ^`#jAVHb^|q-75_edNpw8F8EVOgM`E#4BY+SvM~SHg*y=D zn;qOaCG15Z5PG&gX5-IyAjZ~n&HT4egbRN(a|SptQJxnB8MtSPto+V z{(w;U5xm>-JjaI;!4yfVF>;%fEri3-_1j9+F4u40IqNsk)1vj8$X#1Dm)0z59&#!b zrz7Rj7jQ#)-b1T77-sw-U&NKWm_3(45`z_?>COOq4#u#;K+z2Ze~U!L`gh>Z=}2OY z{tn4m)$OGnN8m%-<$A9IdXFvSG9C7U%W||oZM-=v1LXj3it&it?~>n>K$LYh$e|_N z7Y@GAW);*iUf!YM&hic-Jhr^UL_yajuJ2SG-9n`2T@R?al%WQlrBhmxE8j5G*ekp( z2srw`ng6Nf!Wp=hf!{O$%u}CJ<3|E-04sh7aLGC>!1HGP|^06m++mny3} zqzLc(=4Dtb?rkeJH40Pg;6*Gg-!)?ZC@%o5u;|zk5EL*L!;a58p>lIhfmzNUfhB|Oz-GAf-T;0{xGaWV~3cWVw%w8FGa(LqQ}Ta zki8<_oNU`euT=FP=)eUW34zS;7a~KkcL{I%7%&v?z^Rb7fdD+P;TcV4i>T{Ibkkjl zjADAFJ`xbHIP-oxrH%T3Y=mk<{vWpU#hHZ%u!9vm4Kp`IV)}k|rf_2!}2T_4lxB zX8yERRn-^)Rbo^M zq(q9F0Dq*XdtDPamFun-btILWiuAD9v}S0J&imnnk%DqTTz_Txy?Bg;fe3}$0w#PG zq^RT@j<$TL6CQMwO{Hq#<)ET!csii=x1Hu67lD@=kN^21kNg{uMGk(n;V#@|CfJV| z86{<5cCjA8PGb0eP;0k?>nBj|Z(Xy^b|tK}Dz{@NOrS~p1*;tDm;(MzufRm>S|m~R z2$38f8ZD3Io#S8EN96SZYv`}6f<2e4H~PmS?@Isdi!Er$=wo<>o-Sg>oy|pP_`Lh&+Urzf4_79(O40d1T5YkWb$SKvBD2}ItBfu}|8_5R>L zv7dqI4Ui)p%?R;V;|i!p&_r9YDF*t&?hvg9`yuSbVlb_!fH#`R#U?~=OqU}c9mDfm z&U}Uag^8u67+8CvISV>K1GZynHJU;#4t61rBw-8(&q-4C0bo6J5jjN|#|h(RZ0pQR z51tBj3=t~QA(FOghPl#Vd&z)P){RJ8njSn;=rc`8 z=lAUVrmZ3QSWW+|gSG`5C?~`cJAC@OIAzwBKk&IgDQvWY8`+|r5-k%t`*x@gG{zv;|eL}yGlP39QK@QkLKsCy#UsPiS^^1n@t#?hK(uos8 z8BPg%>tNrtTLc%C6f_y742NoWG9H<#PQ0^bK`+Qr_-ZIZQ8!>bli}BaU8D}5sJbdw zIhwAf73&=~sNTZN8sWvMvf-J)Mgrep3Fkxsia?98ZN%G9B1y~B>imH}qt|JkvegcZ zOMwAtYF%LpSvN?IYWn-=OE^#z`olfoRJB4zF#Vk+d6P;bn3?O=Y+T2{0W}GpXARg_e%yogp{QVqBTIH+|gbA*HBK&@(L<=7$88}>h`uSD@G5yzY375w`5{eqSlsr&K3>^=%! zDV=;Zl$PM?iZ$p~;8p5+iXn_(et>}0M}r@R0kB}IYK0$EL)$nN2^_>K1Y#8-##@jn z^>W6oVGeF7mGh|w3H2Q80!Z1|Rh(B;JvT5#HL%QxVHX7my9!*`RSWA)Xe%whu{j=| z0FyBAs}|kN4H`~iVtp9nr&lRGeOWO2g|BADh~gO5bL(k=9QbFHF&=PjC&=?Sl0RNJ z#QgDXo8QDAuOT^DB6T)$NBN@+k>HP6R8%~F{6cP0|8Mih2R}1^Y{27J`QtH4OZ;&` zmCYYdQq2En_+#Ry4u2HFi^|O(*%Ws3hd=3e@`us(iR6Hf{ zVz8TLTnB@}d2m6ClY;hoLdwBswxExXCI=^x)xeg6nu&uZQV!DE!jXd$R>#Xh!beS? zNJ+!t)GX@dEjEKV3oryb!Ml<{n~IZD)|1#srlZqIML%#tBqHTN(UIC`CCBp-o!Ab>SfF|-*Va*uVqpB%c_6M#jW{D_65HyTgt z+9WE33PwS}SE!3Zd;QiGm}x>E7u__KI3?F#+z4S@4s{&6p6`er^};BHsX60g0>zW}z1-}K4T25@#kub& zw=N;1?FrZO#x`YT@FGT+kwLY;C(uQhBX39lzav8ZHY0;1AQ)aut z5t(|84|er<$EloJZ{Mtd{-*wduJ;4(z<|SKB-whM@O9;X&};CImp;$c-@>S}Lv4?9 z18^0L)#a>bU_Jp;qQQ;HfguaK;pq+FVu{A2U=OmaD6b^<#o$z+#b|S=F(rs~8~NWM zdIioa$#JKID>-2~r$d+$u)gOizjWasE`L0iKinzbH9q90cNy%UYv!DUDyqrKb)0+r zk~gA8Nymu}9g%eoec4r!H{|+D(i3^s=1WOWp)tI`3mFa|Ehuhjn+Gtr zHBx@U>0}c6GI}KmIBN&|!LVTNoPjbSeKDf6er_jvZXjD|^CPXDUzO_*9#1p>EV#!< z9s?b6e6hZ$!)dBhNPmI8gEIUWK-hPTA+}x6;S)}u*FVtR!8g585d7u#5B`XScN*Fz z`KJ!zuBnOn$IY{xUvES*$&VD~z9JT}=Yv3*dHvDx=YXEv&G7VAR(^=~Zx8@hoFIm( zle_t*Z$w^6+U)IizBu~WerX>Ti!SUtMsA>Sl=|Q`(q1S}d9`LQ#4Q5#=-x$Nk_LMq z$xHWYz{;@bAlvPrlEZT=xAvy#B6M@6mkd=n;WBs)nuc~DU+zVvs>mx%DIJK#60N*p z6AE^Xn5}d*P(>wrg-fVqxu%wi9?83x&ng> zMD9&lbH35cq6-SZv&hkaBT7}^0e9xO3B%(Zz3*m(SoGb!tZ~DERhVyNRG|$nPOHeE zrCD~Bb@D4sO*B%l&{txGiC!#%L!|i+{*GnmB^#j$;VK2Qf{VbmHvHI1OT(WdtsK{4 zr55|%Isv);;}NFldl<9Wu&O)EmN&L0#DvZ3Y;xM9>}Q?eN|&%7Wh$F zwhi`y~8B04*I7PWSsy_GFy}_)gX{(DLtw8G&ea7d;5`rs#pBkD6?j_RSCSy0 zu0pYfK!O|h(?>GMS|`$`qWn0w08=L`{5dt9^p|Et42%)+Gp))Pm> z6ZFx9XGS~`kFxNRBk#KQ<_>r#h(&J`x45>Eip`l-YVH@x;yZDr7!;U3A9y|CY$)te zc~ET3OB^j@Hm~07ad(DiAmL%$xW|TP+4(rt+#(10oq=|7&_Ozc7*~>ugQjyy%{a)I z4Y$51FT%ZDHRnyWo@-XpaIj3FpNiDQ4-Bps)y2;H-ao%fqueVSIvb}t&K3Q#P`!^v~GxOT@jbGu=&{ab%#(v~PPA~PqKf7)gF>u=<@Zq}PaEtD zxJ+NFUKpD;0qjp7+q9uQ#VP+rk#cVCj!j&6Em&8aI@zxh68Yd*3Ar_+ zoTlh!FGOo}(Q<3XQu_EF`7y+Sh`e|Sx-H>IVu!fEY~nG~0k7YOLrN8&11|jukD}?_!LxzoGsDtGJc= zg*C8Q{a<0Gwo<=q9Jao9?Cl?Bz4u(Sm2vGKW7V)LD9akV{m-;szpMYp{)YOmv5H%% zf2uXGS^cH0*FPjSF}J>Z?CmeH-g~y?_RqCy$YmmKCKRH6$fUoo^Lo_WZL>4OXTcy} zY+Mgan+_W~rIm_^R3Eh5ACx6YND_mhIbX-rhsSui%j(1X3F^bbr)(}OhUF|Cfm{P! z{~r`>uPosziaoX=S*lT5z-D%7dKY>{#`83-cRfQ^tReUYb3_SrhKh_;6u<2ov_PL# zKzYMC&{?d0Na@n>UXQm4Cd5#$#q>%>shXDe=lT3D z)VlugoP+}v+^OE9t$NjbhFq%1V+hv+jJsDeU-b6`bYpp<84KC53f|wrap6;-B{=JV zP<|u413keG@H9CsL+RP=TLj_FO?Ephmf`C50wS!UFXQcY%cWfxR}k#8)@?_t$*p`1 z`T%#}!8AL0w--XCKMs!Xhpjom$gHOh#%Fu0Z28Tk+QpgM$UGl4$12O8M5*!S)!=QS zWz(vbS5z}ssThI=9g}%g-^Zp^tF7IF%1b~Dd5~d^3HNij>7Z_4HFjCrz!_DwuP34} z>}-cIirQEBqCwhxXWHU6yR=R5wqrPgAO^PM@LFhdyxxf0?5uH25z9X(puH>o4z;0CbE8raDnKqBk>r?IV{4Vq%|K_B@a>0nhwil=je=|zWbT6M_v z3i$CkcpBRLh$|eXueTX;gl0~@7q&vpe3_S7zrv4GQHqNn|BPT9KlVU`^%6$RZAV`I zG%~?BPW;&Si)Q@z@z+P?$Cdbe%>39MH60^A!qopZ`0-!Al^^GPE?dC-h`l~|BHC_> z_MTr5UYm%MOsMZ$?N0|ybN)A0*brV%(gI{I)65c8shmkeppto`Rh8 z=kkek93V$Tt5rJD`O0`!uaMcA^E>uRK8oje?3Eyf_0x++od6da zeHiRw-;Y9e+E{epY%Om9+oSeMdlXLQzt6rn(jawaQN3TetBUP?E^#5xe@h=MXTKSi zL6#j|AT!2Qlb|rm{8DaQMnP4#;DX}mK?}Z1rzS!#e{j4Mw$r$qp#l~XuhYZrny`rY zTo0wuS1Cz&FGv5tx(Mv)o_xy&AZctwarsIV!4$fwsR$+f4*UvP>6Gz~{doM^K8{Qa zkvVo;csy2VZzY@)YI3RI0ik{f$n+n6whO)fh2G%5yaZ?Uhh1x^=ztR1^;8#Zz zNP(fhDvVeRQ3bre_W>F)8>eqz4}-rDjZ1hoGhhJ*MB;Iv+QH(;D=vnS_XXhm=MtJy zbj*RTvg2EH`qnPVLQycjleafg(7@t7lT@vAT;<6!d@_b|Q1$_*|1LGIYJjJ~Ponyp zwzwcLcv|=zByg>#LTkNZBThn|gy;h`-oRd!EwwvgPYu)7g1op3lYFf+$va2hapjkM zvC6Ucz0=CwQ1{>(styOd-oP>qo;K>DMzZlK%f80YA|ex83tnaMESBDH-g_?b{)BYg z#EdI^UVZ{Wx<(4SKSpP|usC>Xq^Hw9dq2hb6u`O8p_r!!2KbYe%I;JiPqwa@Z2RA& z*=53MzEDoL?J{Bkj=by==m%^2R-iIEqw)ugmgEz-7J6|5bBa>=Z^S_*qE4=S0PiA% zUWZ+r1|t`vpi~ABTUc93g9N25?m&-bsIcDMSU{H?<-V_kDyaY+Hiu&UT@5FRbll>M zW0~;C6u6WN+RIP2-k{M|Qs|&}&NxjE7aI>#->AlF?h|wm`bF!p#lfzVBG+(##G(S1 z%l<%SX)&)3!y>+(cjbXx``U^#i+=V8daB+p;5S&D`(5cWoY)j(EffX_(F_n4{sahX z)1!vwLGMjNcRu64?vZ-`b_O8!xJHS&>`?oLk3on^i9sg85z0(yL zq>m~bRA*&nZ`Gi!aZ9fWs(NjuT7S@hUnGtAP^oi6fadL-`7iQ(UfKCJSWoWdF4Pmz3)wEwRr{fC3Y ztQ3^t;6Y5ErMZL+C)*3!d~OA14tApU(Q?Xq8QqUL0fb3*c87Rc#BC6^v*m}tEV&OxwBoWLXZEhcrCjhq!@Q`%23T+0cyuI~ zA=<;OyEokI;C)S}=&)^dts15HL#CLBT|Nf=1%`C1gHip7^zVByb_o@tUr-_TN!!og zfR%N$hTy}>%3=QUpHB`fDE~Q4sa#AQ0vrp~`U4A8V*z$`VGb3QO=YuiyKkgu1tv7E zD*ii?(HV!(8oyG07X=zNh#uG$y9B%gfK#3WZr9;1vj*HmX~DqY(Q;8v;2c?XNg8i# zViWTDRm2C8T5J!bQCm5?bq_LdbLCA9D+l=dog6r&ALttd+~pA@EZG2~diX*@V&f)P zZaRk(J`K^a<>^|#~I8_wq`NAws&Fhecu57D!+owDQ%d?IgnP=68967{8D zMCAv~PwKzRU7KW~@5F(@oxH)G%F4_9j|C$?iCK^%XPccZ@7gmoxWm6GnODcM{b!gz5V6qde`T(G1zv$!!uVi=A>cLCPVxb zLjv8WHUPe=%8WtTdy4h9akN6!*Ay$yeWQB63-l>u%KwOi43hM-BTVRRJ@@USnU=~Pwr zCXD;I1kKhKa2W*7aZD#2;ys}}_pt`mB3;w@IPNCR`&A$xM>EjFeL!b1cky{VQ{YP6 zu!cHVsr(XTHNXH=&`GHzKUI2fi}PInz&j~NB6oU53jCcBEH-AQVIuMjMrA^$DuNG1 zwy@lula4Jxa;BmBp?X4Z$Xm1&mTS<>u=~6$#f^DEAf4pb*{u4kT^C6aUC1Z zUP;x2+KBQp!_OdzY6Q7ra?~MzmGBUBEtQU&(5=BJGTa9dNR=k;6UGUm;UK~KvL1+} zd&kjveW4X;`eB^hSM@KT0ig|(GO|>hUR0ht3|A9$g67?4U5u%y=6)CG2;(Af=#t0| z!UYXi*kF?qrG(!nf}Qb;$)nhD9C_=fva)Tzq(Jw6ZRDL_{k%%WLhftF@0jmN05hiJ zkPLXQ@GTk~9Ct7K93C&3Lyg{6`6b>!I-R84ZQV(YW3Jj8c*FHQxC3`@qQlCdJvCzV zgI%>5yM4F#GJVAmAv((e{p};mZ>5#** zrNp)q8YenGgg~Y+pleR{9Fp&_a2O*uK-EGEVPt`95js5=c-ob&Loe7%?Nfoe^)CRo zs1~XFf5pL=AX6&Ij%f=srGjJ<3p8Gm@D2NZrQ%v7(To{>x-)6nCILJJA%ddRaz^hPnR8Ll`HMKG0+UXDatDJ2>Pq#QXtV;N5XqV!uR zIPXP*j#}{=m1{jq{rWEW%}R#z9PyzGR@vZ?S+F#a0aHT_$bTML$j4p9mO8cI5rnA) zb1-kETs{Rb6_v{!DL`_WR0>2_qZ#khabfR9oX!YbBq1e>A*D!JIWnUQV|P5T1m{Rl z30^G$C3p#UMD9<4vtVS$dA+FwB?M_o^fYb?)~MduILDl^7YH7jVE7wP!TiVv(u ziE&@B`$;u&i}cObIJhrI9%3Al6a5m=05*lWmq4>(Q1;ho#4lU`?SJBT6N(t6ydPNC zVrxRnos^NLRQw5q5Kw^Nr5Kb=E`RSLLAa9hF zg`|9>^-BvRLq>V%b9gjH%%&UR%{X)eo~`qTw}bi?%6I>E5-R%JI%tx#mhYh%XFd2V z45PTpJ{9KMtU@fPnnvP2dn}OPt%3V-jk69F;9~o&_WYQ{5F zcu=Zt*;{RWHh}U-YsTI8)P5@WTbk^0RNQM7M?WGSRP`f7HWnX${sc~!e0h<578*DF zgchdZG;D{AGDXuHEDIY+YN#yDv+#Rdg>nV8$XNXdHIg?$o+d+wgHLSZAT3kwQ@r{9 zQSHJHg3VJY%~hZy*SbJi1$QRtOQ+$?J&$VqWme*CLZ`oxZ=;w(SyN zsJLvA2&LVI#Y8gw@qWV{v>jzzcJYl;(H~xEAwqvv0XBWf(A$Xi{4Wf>s(v?>?jk@n zW@Z%|Qwrc)$+gj<`cxXw0$Nvpjy~t%+yDn-T1Vr^V1soB#2SVb%0@$MzJ+J(Ax3#j1ZvLB`?Ww*?JHg zgjlf(qp}2JuH{y#idH3b4k40lf^=DCEexc=j^P~ivm8I1*T;nlxREmV9r8QG&B*$w zsUif=hPPOik>_%*hx`q3h*}?10yefXJ_U6~XWcA91iE-$!y2w~3?d6Fe4o2-IMB7r}2dcXUWWY24Z7b(3MNLqNWZ%feoq*Ut3CGq$>1)BeAlKWiZxt)Oh@k#|4e> z>sI+EAKJ|sDMC9BsX9vNF3f@Qns%(O^HY%96C_L1-<|-ky+#w;@I8(9*XWieS8wP( z6R}}ZYaD!~O0YZPR8sl?MOdzgzfuI0N+*S~BuI>l$Sv;3YwXAk?nu6l04d=^9Lr8> zxiGa0Fk0EdIGIgm=i>rttaVNnde?9|zQ^=`p`W%!wiY_wW^BxP>Cmu|`Vn3+tn;VC zCUnKCq#V&o_C8YcW6R>_kjQ!md!*4NG0b3wZw2Kwa_*x?XszE_787f|X>#Y4;S-fd z8_BQH@jboQ4V)=;BtLxP=%Jss0Ynwz)f=XxvkCebE&zd=bjhF!?6m)r2Eyo$U4LQD z^x~F|k^g}iBMtf;ba+)iEdwbRG;z|KDJgz&uc8O%fped6yjX=!p}+pHqG{$dtj^Xg zT*$ikxs(di!2VphS*cjZ%#&PzAo4LZph7dLKNfFF^t$nOXnX?tUaK%=v+U#>s)IVoVhBX z*qsexL}=iCIGZMCNL#70SSr7;k&**O=v%O{w3jMN_+mEP*MUy5`n?CF+|8X?PGsRs zg6B25$w|%Ks4B(KL_ZehO`XEMPzCij|CATnRtVcZMC>@|h$LeFiKP{OWK+it8lLb7 zPFq36$@GP9Qi+AH(ku*rMbkZoFA4gmv|k(uv>00#fpoI40mJ~?h$~S62rcltZ$axE9t-RyKI45w+!~Cayw{%WiOB4_he$PN zrMvFKpx-Ki_gL7@_b!)EkrMq5Lh6a)w>#a@27HLe^re zrqOeycyBg6eSbo1coh#&0h&kmDyQZk4(_jXpW4rGKY&eyx>4YMWm;)hY$IZfVh?V! z!+i?r*e1$s;X<{ar@|n}DThJt8p>x?f%X(|U#KSaIWxZ}>Wto}_Vq)cIF$d!dd|=H zsnt>cC>0IdE?jFQ0O4lN14uzXWf*#lRxjh}LbbWoh=Ro)7*D^5)om)mEFLDOK=H!; z_yE$8i>ds$Jx!(q;My6+yPP5vi~Egc;1PG9TE!zoB<@oi2m*iCeQM}W=iDycr-noI zbf4PK@KD(+?y-*J8Dhc0-ZkMG1YGmo%>Vvxu6vF!7ij}GcAwho zcS!k$L9%Zygl!3uu7&&5NPP=WhkC{QO82P+qW7s`%RQWmnyqtDo@-6d^O=736gKc1 zuntZ^?;M(k?dc(qj`}b59sDu;7sek~k#GWMX4l}6yB1oj1)T3>?Ig7q+9Yd{#z}-b zB)(w_3$5{5Z7K;{cFM^(HR^vT9S?C{Z>9K9O%zX-AL4}h0m>{d0Zg<0h|N?mZ99;G z>A{z3;x4WrnD(!j_P7M_ba|=fZrtyQZE5R+M`)z!%Gq9TucmT(y@^M$J|#u1YfHi# zbGGIod@xeqr3Z_;n+ZW$7In&!eEt|GqLd|>cBD&8DNE=+vu2{|2sbK0RE6!xI8pVH z9T_L8(1R#5PE;w2>!~8C{%U%5m^4M=uTXv#ngn25#`8J9=0V`pw(qG!d>`PwIZnNR z*f4oPkzQoqqiP}!dqPRrrra)Z%0QvfdsOMFd)%W+E&$E$6;_t9(*jP1sd>n(RFGv7 z^N!F7Q1v0*{TP28e0U^RUXFojU6e!?p$UAN1XfpWI*Ag42+^HeY9UJAcmo)PTWTFq zg8SU6A);V>Z0(lXPGMNSKp>Q7z%j|U=>4?&kkchch~=8gksIGe7Nv3y<~KV34hjVd z;ZFN!yoImfSx@?nT!U%)MTCx!tkFvb<-U}L9a$_2&O?pf$mdg5*m&8iGfDwo=2KxO zabXqIP0@Q@HDs`qdtLXse$mP`$Z_|&;yyi$t9>g0?w`bMXl4l7T2-f=PRO8a(y{?D9hj!0djolGOp8WFas<^n@SK?%|J#ET4ClrL`2lU z8)NvJNUaZq%xz<1S;M{5oKz3xXDmCNIJ#vln=?78ws(h42{}0sJHNKqY0O*;R<=+o z7@JgdNR?X9-I1fZOQwN%tba6G<4rK9;s_JNS^jeBV5e#FqB|5hOoZyO*ENU#mufkf7` zB#@$dJlO^Ul-I~vfCt@h?r;>j4?MbnJMCIZVRO{OFO$&ibvb8B?aL2eAtzwlz*%_p zhR5+_kn>&g6YUMsJ@~k>n180$cld51*|!%DW!VbJMxV;KcU~d6OZ%`e>QjNlO3>Z* zS^Mt?L5U`%7b%yK`UX9iht4<(4^4CN5cr4hbBE`qb>)1N9AhFWj~+ph1dx)CE=0(> zEW%yVAMefis0U*C&bgNOXfeswI6k_O%S~7tUS&td@e%FxQua7Ly1a;vYt%5jG5AN~gR^C{cpnEvm5| zBy6Qy73#n+*iLL|zh*Tnm~e|CV`!boZ2+7#pq#2z(w`XTacVn3IjrX2O&W?4A;pq2 zU`hc`q`6D9fA5OVx6qa~AtdXQ*nT^pDe7LRy|z7y_RRFdWB_y7ves$2mSP$p^fiV+ zY^Ze=_=zqI3)#BN&JgC`eNNKt=8kAcTLl^c>CI z&vyZ_O$Tj6~Y~GDs7fHeV<6UAnCR{*cQqo0uYfDb#^R#h8W9^~y zL@{Y@kI$7vaIO1>(ARAi@QYlS<9%hfgVmJcZGfN~@Jh-5<1m1->iWV?uI$`HiK1THSyIBqBw*E8J2Fn@4YniWuqxY*jKiwa?8rE*A}mUjd1ts}-uIaOuop{t z_wEV;gl!V1)*wg&6U+sMZtgiP3%tU#wO9I|RNb z@!ov24aBM@ZgMg6w@~7zv0j&4Tm51p*ItJN_}TXodN9|vC9cKKAmSDrZ=*0S76z69 zN8kj0HXX z&J}STky6F?iNc)O*ltb$*ZpEE1^aWSL^{y^!Y+g^LP*nZfRc!72Wd9hiX!f0$zXLt z#SPN>2nmm`2GAo3BZKyn@`WF^J3X?J=ZStAK+0FN3^0C{gF(dWhjFXB!cw{bW@SLgHw=dDK6{BMy+51>TS!pLy11 zfi|dHvcUcL!v4M};&Hq;XMv@N1$KQ(McCN&&)Xa>c>RS$E|@^+jMVGt!CYYRz_e&g zSC)`4Bjv=cG~b+{?37NU2p4#ij-dz_aFhrH;khuYyeFfR+@g_F1VWnk#$?&~RX^qtP=)ugHM`SZZ1(EO#Jt)9!x-gDHA7^Rs#iuH!@6)c({XWq=jM>&v%tEn&L z&)!15Vt**)o30aYO#pM){wKW82#k9Wp8xP4wSL^rTCuO+MCh*Qa*#k;UU(9+$gw*I zMOX`-#CGN>TucQL#rb!TO<1YG4>(`|p&YjXNP{g8$LYuPYoN<2P<~WD?jqn9iUOnh z@j;~$D?~8gW?MTpe9tWfHz>uMp&jFjZqkmynztiTS*B4^!?%D^G|*1g#BCF_Rid-i{*VMXwq!%1qJ8Yvs5@{t3YX_ujz>xiU-OqPK?mT6Fi06Q^G`*{>hn2I@3ZmV ze0sM>Z1`4Y!~!~(h^0-KjBsqvaE$-GpQa(L#VFzsj9l6+`hw_?zX&YXH}T4EIq{dK zXAuAX&tl@=uHX_nvID&cVQc^6U`8L}n&IW@oj^3+bbR9}ykP&Cj1$-sBKw4J-C$Le z(HBnW&M_?O{C#p348Df=q>fgI;1)PWVh=39j6DcU0y7G7q!W4cIg<>u%SPcd;Q%}B zHUe*Nr}Ux52bGFz@Rq$5o_~Qhs?i-+{y}9p5I6|}5I2@Qu#LKQPzv3th zhxG_nT=Ms1DW#;u@K4bLehef$mW*JEH63OK+Iq;sMgq3EW+2O3a5uE+rquIgYA!#! z%BBJr!PTsy9MaDK#>TGj(GbdITf!vpV=FFPSgDGQa6-8eP8T@p*T7p%*4nKYJF^ss zb&cEUqL_Xv7}HDB{l(_BSm5AC(ZP0BpBpf6u&<`@RuntYZ>&ta_|x(4 z*?w$>;Fqt_9J=`D)_;K%A{h5<4@sf2UnQKtAKXT&xq{q{3*V&QZJL@O*~r`{yzAN1 zLga1)+riV~BlfiDi%+rkMg1*cpGW`g`HUH$W6sqCiytx%q}aDHmLq}fZ}A2ROzCbx z-c>yAL9Fc$1Qa={YcXNC$9Y)jCtK+E(qBCe*<$0U+2cqDF}-s9Lu(-pXhTn)$b6Qp z9|-r2-n11ggr@EgJ2H6}}wbpz^gs;DdS`^Swt4s7UY6SAUZ&%+rx-#|~L=7JITLIcnL=`X;5 z0(hOettq5evwZ+Vc+~So?Lq{>zD5)xjBZ{Exy~EyK=iSmH=2R8fVA+->umhN0uc9} zpY#rSO9NL$45=Z&UNHX~;i=icrtCavqx6`*$vq8+cQNsn+;4yWvP2|xI} z(HVF>*7HVnizM~!AZ2Yi?W{MV2TgHx3oKH!CA1M7i{0e?@&s3&5BRg>Fh&=rxRi7$YQ3`zv0596U3z5YcZx+iZAWS@P@jqfiM$#soI>a$!$g>5^-*g^LsbF7J@?b*ua9{l!bd(=TDow{aNkz5__@jN# zwE6ymU^oq+!1>D$wF!Jnhak}g&Ku~3e997>Ii)pLM?3F_GVfr@dl~_XBR^Ffp@Bev zyqHK36x!pb>=i2dQCU)kW}}dG3nc*%O*A-ODulercpYlYf_lG4seB9{sjzf}0#8N@ zdJoZ5BA+z}u}TH)S2$o$vjW9WL-A1A$b|LmTEH|K<8(ye8T-Rs_6MhxO2t4TSLT{) zf5bT0-FFW_Zmj%jD-7WgNW^;Y9zQc+mD#+A+QkL$refS3OAG*e#zk`2K)L_%b#)JNH2_9XY+Yqzxob zTRi``0Ceo6on@O2jem;4w;A!EV>=$as+8A4S)YK{K*u_chUFW3gCAih2s=41a|YkT zc!V#7Zm>e)VXtQ>p73yAi}laJXKRA1e#S+^cO@5>GoEwD`eC%JUm)69?2bhJ=!YE6 z;5!|U@bR(wb9!+Jt+#(ZwZFW1`w>s=$0M%&@BpUvbF|(5`(^t%gYRKH!p9%tRJY@u zC(hpx4!?zmAepem6eZcCi}E_|LC%Ra`=9*57D%B-4` z)rHSzBkp(L^OF!dE`0tH!DGhf8FpS9pC6~Zrvcf16Fz6!h1mE!feQIA;`91>=xm9! zCsf5VRurFqdMgntUHH7k{uo2W7V!B+Bsyk%z6>N;w?TzDc6>gSvRrLviBa;a`25w} z7(RDL_IP|w<-P$fw0tgn8!}t#=f`lt#--JW2QJjn!*wqFt*d#)KaXe!pWon3oo)|t z2H#>lTEu6QOKKILuEb}n&_#!h&waSqoc?&Y@#!K-Mrt!>6WhB^@*_n<=li~6&U;%$6>|D|}wisJLj_J90z=h;Yf%=ml)NV0}Q zr8#!}dFu>hIo-|@qvTid`7z{k@Ok^4iTM06z8(diAErum+A@f@Z z48BY7h{NY%E}`}I<1;+tV)Z-izd^PikGS>^m+j|hyZtzd2YmjRGx%2H;o$SX@qX<1 zJQAs`dv1@PM*ls0?j`9v9S`91*%V5|=Ol`h_}p-PEBL$%ACP}H9-QBe&ub`B=6}V` z-wdB0r!+>le>wSG_#BF5pKE82!{-}h*6B`G7d{U`-0#qz*H4SX=OmPJ%=nCx%#7_e zKG!1n+woc0h1mGKhzj{H;&XT^I$PQ|&VMeRv7-2#YJX@EpBv$FML-%u#TM{+6A~RW zKFRQlfKNG`!FM_yaroSe;#k#eW^G6lj4=-~D-@|ys;qxg z#~3QMfX^2q(J|xm``3cYJ3*y7c6@$-vTW03mKY_!iq8{~&%x)vA$vSN--WM7(VwrT zO4TXNaOo1tX56wUqKFxer`hKKDjSDI7-++zEd055ZBYi%O!bC&}Pvls|3z*`>Y%5xM990 z`;v1Cd9TJ3RZeuuqW@#vi7j2nKdJD_V%6?N$fn16)+ZqVsPQgG4 zE*AwL!a*2gekL3d$a@jToN$eL0bQd$2)-IsfirN799zk_6v(}u+ySl$);Q!lmldNK z>3k=pISf~NCKssqVF(N;%1&N`!)|^Y@WMTI*QCRxVV{FlCmqlJg@vQ|ZgjYLczVNe z3+FCz15-ZvRm;P?)(y49*!W>La!mv_T>6Zg!K68r|H;1_B8rKtSncv%5*wY<8F34J1f47Nw*ih}E{V>esYYORa73 z`+5Pj8blHAc&SBeYichpY8CHTmHq$D%$dFAqW-@={XhTb`Q8U|-uE|i&di*dIdf*- z*>@s2IIo9V#4quT$VZ_mdK?zP|D<3lRdl-y-owFHiQvCcFntw1x|V`L2T??*){Ma>0U&>1CClvbuXum0SchM=g%oH8(z35ZqB}--O7q<`6cUZ6XVnb8i z;2LbF!=A2R(e9?q0#*8B`0Nw*W}cX=fp0z_3iV@3UuuB%HnRqPCv=a!Kd(gpn{+>9 zxdid(@yDVnM92=@sxRzs+yYZMH2*#$s@DL?@uu@*1f(>bjC&~ivgx3Wk8L{Zsf}k{ zg0@kM9W?P~bOOG77jH&+c!+NK7?K8c&#y)bWx7W|^0s|N*hJm0C3YKj4&)7;2<+Z^ z(HP4=MnLq*uTmDMVgLOKDt%4zF9*I!tb?WJ9!_s zhk((feca6i97+PJ2uR+?Z6Y9fA2)WOr~Pu^Qp(dN{z20@uT7($v&f$f(C-7VwOGFg z{T!e73FzLY3Ldh&hMLKnS#ty}=bc**)A!%;1F^raf*c&ROHV`Py?BaV{|lkit8qVe zi*`HE!*^0_YGgm7^3%2}?4$k~CDL*t|3)p*&*t1uqAle}omyFQH$d$xQ09&+iqY-bU4rZLrfZbwcZ)7CMDyQA3v7MSFQA`t~Ahv00A9 z?wuo>z+3pucyy~2b}I?P*nc8|5_x-VH~d=U;K~*#UJ*ZABI6or z`DZ;W@ihmURF zCTdaV0z`X`ZF1A^5N%f<&@BcU?Jt-6lk7Vv%qr^s7RfcAxbSHa>|@7hN$KiN5s)rN zkQVG={3D%sfsfvytG@qrM4xnQn@$C5xB`XTv=JiV+T9PHylX}vJnuKiF?~nxNlIx@ zmM6ZWS$?`5X9rXHv61ns;&-q0gXTH-UOkNY3cTctdM-pepiS4%;o%J+Wk>keb!f7S z#eLGRm8-Gk{L4QV-T-dxLrvI;{=WRU(1UObqCbH&^rzVD5-OL-Few#z)6F6TiW$&N zqx@fOL*up&mcMruDIgZPI64S-=kPf|*?$?FzlZXJPr%=c{Nn~c=CKbPj$SX*h%N#> zJQeYycV2)$8_}SX8l)UQm+$!(Smm$HKSE15ijt-@fG7atNd1tTK9umvJNBRLpNf?5 zyGLXRHsoR`+J)4AcN)aNl_K-84=uTV5I>RJqxbZ>Ji&^|rxx2A1omjI3E86x|{Rqyx z8qE*@hinkD?z=#7t4xybL!yPAIV zV#n8Nulg6MFYnro^gI-V$N2P~r-0C4I;4By97uvHqxqzgL7~R~q4?V#qUu5&k>aii z67yA`2ua(%g$GiwP$@aiq|(+h#7I%;wGSX3RS`^R^eF^Wv@(h|<-x<(A#6LfNBrij z7yjfw>^OW6hlb@3V1sl0tfTlPNB&X!+@n(-w9nnY_n(;qhu^W^dN>L$nzu`vyas!6 z#Lu$T{$`cKYZoG(@#(`bWx|iH8xj?H+TngQaPZUj)blI0H0DF=*#AuB8Te;K-fx@d z9cv$GE6a zOVc)ek`d{+w_E~`2_Pr3LdEz<0LMjY?mb1u*mgFtWJk>Ro+^PI0?3MddDAB|c7Flb zy?GP>i+}{ai$K_jVIq0eN29MJF9UBH-;X|Hp_?^_F91!dQIWs)yf;VeL-V5z&_%vp z9t&msBTYDPkm~&#@cZ(-z>JsatMfB;`|t?zm_&8=2z168umW8G679oVUNFqQ6G1|p z{qr2!X&*Rr)m{ymP^WgjnKyHG5#-tjW=|#Yr%3UqFZ*|ipL_ammk9BPK%#f!-R!?3 z*T`;=6%Jp3=U0{Ojt$o4}z4+vd(b9J=uHgE1(9U#%S=_PMM z^Z68oEH-`iJmr{FwdOTO^Rv&R1O|2X5I8YT;4_NB*+|zao^>ZvsO%omZ{v-x7|)b_ zeF-e(Kbrw3;3UlU&lVgPLc|DutgKs)P@Hu(3};BRKeWAPVSMkyWEBa$5&cRrvOe&} zeKd86p282u(ZdXW$fgI4AF}A-9TVz}6mcIC)z%#TE1ofK$o$|eroBfq>AR1dzn*&J zJ(0iTD7ypk{H;XjzDBrdMQec%S-$ZlBoMk-b@HP^bfSNwqhL+x-|)SfGqA>u=8^c6 zP_+EIl-?@sulR=0kmYIQiX1jflWQ^6yBHlF)4IX(z94e@z(r)<%DZuo0^CLgxDyaQ zQ+z&hpSr%V90kZv@(-)&ca^%Q{{&W{qP%N=0F|N|9YWd+J68Pc1Jh+~4$VIqqXjDU zM-+cx)INYuTElydo&bGCZx&&1h?<(t2`eRc_6`=rR;9db431eZd}{1@{XD7(P?Zh0lhOg`#H^5ye+EM(NMn zi1#~~wYyG-OODXj2|Uz3Fnc#ZFoy)Q?+t?g1*I+}OE`DNG+JAjJHH8|0+?Py#0o^j zde>9WP;L6&WZAQq(zr1&;}O9o<3keWmm3ZWk%;@op3~3=kdODUU;AEKYK3GPZzzHg zbZ|E<|B%@G&Y)}#%y@yi;m|?@x@Rk5pNi~I?8742_5s~pBKNu~sezyB1veLBKzD}> zt&y2}0|bSbfA$>8#dRZ8?E^ZEP>6(rW{1EJo8tvU7jBP(V7m6}UILi0UzZIsbH8pc z^7V!Nx^oab1<~lo8&tix^&v!Zlyl(upk$yBm=_Ohx~B!pZy=_9Xb<+-P^JDE75PI7MMa>hkE65^@n80V@>7JI*=t1na-R|hhF;tw z^7oJpG@oT6_osJpre1<5{1W}TM)Uo}cp1>yA|(sy5-Qz@C%X3Qh7gr1z+YUB>5nyo+J;Czui|K?o!3+3cv8Q(vA1y=QvoaeYd zQNCD)e|6k&%qQOyXCR1gSzehPEv3c5!OIKC*Ev_->&cVCGfv7rnS>T45V-=e z=uPi~b*LP#N-^nqAp7uEJSXKyo)MdTT?nEJ{^mhc<}(yL z3TMxNPx_Lrq35URPZT_R(C!iGSyT@FUJA%JVDs=Tg<-_Li4sA?rx4@!h_O+|r~$z| z;5)>MP|DT!PM6uB?$!=2C&*AYeQdB4N!61m9jzmwQEanBC zBGHEs`wtMg64CbSZUT=`+9+a=PzfK>(Qmov!fhqrg6FaQx@(ah*}$!!9N|O0-LHEZ zcj$wIFluPFH*nPJKzUTWh$4V(zwRWuLvaowF35l+l_2|dk0M2Kq34j|hjf3&z^L>( z1rQ2z7h(`ZMHc!(eIWBRZ~-|Dq2PN@$eeKnQlhv|BIGU@UzFoGtbt z5RXb$2}%ROew~YvR!}_<1fGuQa%gxT(ot3iBvKdb6-Iux6H#FU&KE>i3=rq{iT*{e zz4o1r<0-{_Vqd~LmEpTdo%BBX>Q8W!x9x5GtypOvS`e#Pf%E$CIhNl6>91(6xCe!d z$>kgV%qD$3gx<^64ZO5??gx4O_aNq?p;_nEm%Y5c%J{HxWZ_W6qE!$4>%NPSO7wB$ zg4ROpSNQ9v9KkEc;1%^{?_9AE3&(x1a-5&^Yp%JZ~;~0p9N( z#u7(NFzyrYdk zt4AWIlRKSH%X%3g?t9?a@GWPDia_jB?Ol+_Ka%}#2;s(sfF&b|sQzJ74V*NI>&%<%_$ z&Wx6msvH6{YU(c)=dVxPyE>`Z>yV_c-PH9Q<%=>34yY z?SV(&y4*`16o#L~`SN6Thk@puZ~!%R#eVuTLVq5yAOBpBKH5wsMYS(P#vJzqn)b*@ zPuJ~({X6GbvW!LveGUOLc=$HKEQ~SWwaZgK+{Dd#z%kN5-s`(w6(wF)}xJ1xj*zG z%I@Dwf1WTt&CMCh>Qn3=e1Nuz6OQS~3-s^$geW_brJnJ`X?P1Q`U6_@UPP6m@_hG; zE|KVK@%<>vaVk{OC$)uX#An){yMo@ZzltTq=vni{Yg7B&KS$PJR|-~r7UQhgW3h-M zUM~9wc;%IqXE%Om-}@xWg%2R1e?F=DXT9;Ex+!}@FXG$C;zi0sl&gnvY}^O$%i`6b zEOY3j>ZDJa()U_1XF6)1@}%hM2aZRaGwcH>nCP7Lz5fseecEn3Lh?q$%P1-+eGg>3 zGdHQf$#2^zr>pGP*Ql78RLqO!Q7e3dirJ3Ukr?@?gEKVpfT^%;X@xEOe_PnOx?3Qc z%BwaasrEBod9f`=6?n~fC9b#>8oVE^u>nGpom2Kd<%f&;d+D-r>o&bUr58t_d?L;U zhsOCU!1Pt-4`)FW=5wKm!5N>x1I7loV<2^#KE_@$`i^>B3w0m7iz?6MrfkQLBUSr* z1t5-m`U8&d4ZTQ}EI#lo+jISp@Au?M;PcqJn@RpPPxl^=k5lJeyB5Qic#Zvs=$taX1>{Qfu2tZlMC@vcnZ@FO%@<@3P@ zfBqN0PVt_VKaWMVQu&ED?7F#FyW&jjMdI^c@ols};hiboec}Aq0NCwiYqTp5(=PxcoupTNjHm?cJTdX--Q zf&0Wr1Xm#XF!De<0P>>^l%*G5!=GC*l2cy(ITOueNJsnj_v>N-nI%nTX|Ej1rim;; z5c2c{VjxdLy5)E|OENLYBY)BN@xoi=RAw03QLA~B;lh2<-=CJWp1d55wi?1|3sjmS zjU&->UL{$&OOOQE0}6-QAF++%xN-sVLlcyRuUeyW!8(}j#R1<^Tz zQ|@j8=h)p%d7D3k!v@YDNzP5D)6*J#^wsZBnzZ-tkCf(koIjDAos#omlm(oH(Or^L zY_*txbGhU!lALeCGXa=uGH#2YGKE;+5y3neEugG`v)JMnHB<-ALB zUJl0)Y1*P0lG8Q`r$ch~OU}QXEI94a1K$=JvQNS}LvqsZ36a}c$=Mj)COI1?;k+9Q z(#Y*}$@w_uSIBKkv{`btOv34voKNGocu4b|lLTjL^c2b2Itk}Vl5>aTTqQX>qoX&7 za&}I_`5@NOklU|H&igRNA-BQkZIUxM31?Vx&XJrolCwAJlbpSiaGohSU!~vK;rsD0 z#P-3P`_Z4G=LzO(=zbFZhqFYUZd_*Y5(b0j~#qeT7>5r07P)BPm;QzZYZoud3Xl7E!=&y)Og zKMDU&DR^-H?UKK1x=24t{BLd-<)?e%AAeWin&_6d5pA&CO9JrSVZ^4RI^eWm8jSDl zKa?N+$9ojR8vU;ykib{uq@0|Mf1XJJ$u2_PHUCZZAr>SspGJ*dcOFK*XIEeyi+bcM$#t24}TjVyJv6;WrTeofN!`@QsAaule><#*yBcgu4m< z2PTOLImZ)TPx!VJ{H-G3X2MHS@aG9XjqpF?WpYB!Uc$2o-<*Q~lXh!tWvciWJ;Q_$`E=or2d9zLoGN{*^4pNO*+sjVbuagkMVdIVt!Q!m9~C z^kK4`!}Ed9BYblT{uJS}2sfwTdkFuy8TiXbljZ!7@V^nhJp~^i{4v5WO2O9>{wu<1 zb4fx!s|de|@b9PK6@*_+xIG1*OSq5l_uo&JGn4RU!f#2zKb!~rLc)uINB{c-xTIqJ z@bDkri}Q>17QBDCRQk^4@B{YiR^WGltsj0NM)Ld#QEh#N6 zwU(Ay4OXMoWG%LutrlyEwbW|0mX#rkWk|jZqRYTm2B;z&_JktdfWO+)?r}x5c4x%t zEAo50wQyf}0X;|^TvA)LM(=X^{eg%+^>uy-3iSjd9=E=&PhS-Y`Q}#@P16wGR8zYG5qv&R z2gHXXfsnJqqj$Poo^ZHGUsw@|c)EiTq=pP37ww@yx8CpdT|5_aB;v2AT!sWH+Wdh~ zHv}M^Zm-`-Wrh54%hTZtw2fbqw2-hC=!xh9?fPy{cOcX^O>0=^3AOtI>sgD-oc<0E z-`Dxwo?eA}LQZd3g&>a$8f%cnkT=rV?TL6@dgvk$lEts9uTPXd5CkV@y~p3>53Kj= z!`=?R(kfBl!BD{EcXoR;pV#lv+PyxHc#4Fa zE|1m|9Iutb8xt2(TL1-|uMdRuJt&SS>UdlU48FIxnA-dSwcR=3msKV-kzh!>OHY5D z)7RtCv(`hT-ZX}^N7}qZ7gL*_8m`x`H|UFs^uRGw5EoOMmugARAjr9V%ap@8{k8zK z5T1wj4Sfgv5hv6d(tE>tYLI<`6TWdWwQ;hHY8vdRxR{FkA$yE!8oY6FF|~~?|M_~3 zGA@Z}Q>J9#%H%66?b3b9b=?2*n)?6orIZqblb?Jky({b>1D9M9l6_MelJiwKd{l9z zwFj++I_ml84V_NE+vjm(8@q`2u40gEn#K(wo1Yamq&*j;JumQjd~Sm#h*8@R@O#|N z-fqtV7&)SK-9cX}TH(Gd9spT|Y4Y;Zp0P?IE~YkEd-N(dS^h#}nPHyZXq~HXZFl;@ zo>o1_O(tjZ15+C@2f77&vB?5<1K4|uocasP^}R)HV`Qk;6zV-gvTV9v$^cW_0w=7N zn=FUd?~Qn!KJNxkSl{LhdzvE7h=;ni%!0l<;O_BZoCxbxnR+3tYM{CX57l9Hubme15y;n&xNyx~sRoA!1O zmDlC#aYF?XUEk>qcX|4R{BTc)GbHXJfnX3y6REo}NOmWZXkqzGk$;!7y?x(K$Pa}) z5z_O-B}tUf=Uv+q2+h-ndt9BQ@-|X+AB__oA!jh?OeDzZDKe&fP@1!g2059sU+;Ax z>s;Dyr`sb3__#_%biXVcqUv2eZJuxNiAeLyr8@!;z8 z!q;&pT1~gNSJhs4y~h*LC)MGY`V$J1EpPmq3kG^Z5Jv+!=~kAoJ>p5$A+-^`)9t2s zG)xC4EMgOvk15L6(L>n}b&L9oS5tDTJ{T^2*oVY1c7_Aw@pPjF!vS5V%1If6db_>8 zF+DV)Te>UbN2W->of_P}pK|p=P`p-MRA!ZeQ}1*3K?Tr$dmy<-q{{yxKQe{+eXd$9UOAYijOvdSzRVc%1X}=&0x^@!rcqDFp5ENv$GLhC04wiu}WRMB+UguAdubR2reA z7DxR|WV_SpL-T}xGmrX=6vh8v4cA}teqd2|SA49A*>d1wwEvX<1M=RsA79PYzB zLo|CQN`{2v4Z#&~1)M0rdbqY+z&1{wDbnu_xH_GpabmjTa(Us=qN9nVg~n91&(o9j zrxq-&h^rIQeKbai49wHJouMw($o271rC3f^Ju;>AJ-$9CCCP;ri6-Y<6s;4ULLZov z1H+W~otPX=kZ0CP81p1wQjJg24NEwmOd%gdq;WW&zp$! zhLna4(XweIgHuGK2w8`u@voTk#}xTlyF!@dGfl|%_4qqvD@bT~KKZF`J*v~+m85MlujD{^vGgGuGTfg|v95yZ z!7xliOQNyDGa?R^;nen&D7n0IFu+vi52Ir)u9IGoG^WXk_V_~{ zvIejMPS})mhi?I=&orJsY#R+`a&Sm0S#o#W;-}%w8*a+?q zeS9ny1&xBz!bSG6W3hMVXqpvtC-B19u~-3cYi2Cw2DN9$V!J@2poc(@f*vLO_*iV# zR889fY5=uQi^V!YTR=Aw4tfjdA<)M_3vyzyzkwEl((kQXK&N8@y92Zkv~zka)(mu0QLeP1j1t-U1Sm)C0p#7kSKyLxfJ_US)gFXhj<j7;P6W1jQkwS_^0)=oZimL3e;Qg6;%$gYE|H1w9J7 z6|?~Fn}+EbAI>=fYHf_gvhlj}z%t|;bT{5{41*Tp-OjH-TUuhVkLmdm)E5@wte}^I z?f~5Z8U_6oXv?M0D`+R^#}p1)a3c8DK!2bup!J|TKwCkNI%2UqK&?*H6Bf1#-AEVI zie31p;q~{9cBBKE-5HDR1nmU92eiNo{n4{87PH|6d$u3-2U-|JIOx%}C=V7I3qp_s z+6ihU8i9U6t-Z0>v!J^{^Rdu!^lL~5)ZUNsfNuFZ!a)y!9sw=b1bHVT{A%b2bT?=a z)QZoE{fg)S@_!2SJqZ1P+PB4GH-H}64t;=HZ$SFk*wG1E54!W)Xb+(F8<9V3GKmf& zKIoR)(4VjXQ+NmZ1L%P}p-0fp-^OAQY=Ft$gZ2ix8#If426Y$O8>sc}SgZxK1vCPB z^j@?d&@J~tA4K;;U!Xf5Kzr9iE@&fY^g*;w&;oprYbWS#&<8-XA3?c6t)N+Fq8>o? zpgTd$phrRNpq-DReSz)<-3YqlG1MREfv3?AK@WjG26_~96tv(OvNC?+5*}N+WQBT6SVLU;!`+iHXN&7(9=K*o=3j{Jql_EjlKXr&>eq7`9Zh57>kX7 z_WlWW3bgajhzI+)1+*1(CulF|0nn|W1usEQgo7ReZNX2Frk@4=S5a@ETR`hU=~C;k zQ#LHqru61dId%Hf?Cnz|jw;l)96c60n<7?EMbFYSh@%gHX`}BQiy074%gtYqTd*)M zXMJ|RcJV3apHn;sC6xS^f=1sz788sF;-d5-_&*Aqe)FR)J8rh(fA)vRV%b@^S&*B5 zZAN8o!M4oGT>Vg1Wp3eCT}7^8^KsR=)=g8ZbAy?4GN$EP0afG{A_}5b=H^%CX4mA9 ztV8(!7{-$sy0Nlq;<748RxMz;0967KF_M zZ+aN%`WA$>BJ8KcC(^H>^s6a-JEgxM*N|~lZec~PzCvk%l6?_;hrmZFpo_|K1lY5{ zN(q3%wq{i47HrO3n5(}uw*a|?0!6%n3{86-@ro&4MQ;A)40~?Drp(%0eQRz3o>4YY zmo~)9!nmA>r-@&Fv;dz6T%}F<@c}CYHkV}LqH^~Gs|IEvAW3J1c)ST=od~<1!ccC` zD~h=(>&j^&8^~@|4(aFs;!e-P50~R{7g4#OqfJ>E%i@tMa#kxonNRv9iW_`iAwFD` z&so6wfi(#PQuH1bj7WiHOcKV zs4Oj%2k?KIms?RliO^T|>xm4a%y-8&W8@wpDG4qA-Wz`8;my%Cj5Q~+^+s1fhv{MiOWii4RvJCmyo^|ldMIM_5S#>YIAH*)w__@`bGG1+;6s#Js-+kLTw6T!)9GA zwW;b{TgHvk#PE{bvd})L{;ZfUTzEz-Hb0)9w6fVLKXsI!`rOvcm&VV}!W?Q>S3{Qm zOR?BTxTlM-9l)l4ITl+g5Tpfq2e1}ktGRBrWndf_qVaKSRyE}tZD!MPnQo+2hz^p{ z8OUC|4*p*J%4#O_C)?AErE&XGk&|&l{DF)O<%i}&mwqJ{`xfVC4(NrzqQE{PJ+8~m z&v-UBJL5OG`RGa63vwDULP$I1#?8oF_)>VLF=vRzbsoRO_z8WlksUa0rfQHbr9tzp zIp@S;Ih5xONaG;V*q@pP#XEp_(=p$fMe(jcyhjo5Ar-GhWi(Xg>Gx zd9m2txYw3Zo`r2iOV~`h-b8K0k(OsNl%%U>@b(*GFRy=6c=GzfK3N>ZW4AAutH#lBy1P3YG7pY=px<+ zfZ2edYQ;s^Az&8*1Bqj=eFMY)Aua?Iq*ekZNHc4?vc$ z0(&thl7(@SWi5lO-;6J-PS~Sa)1lYuSj>ey(p8QBg}{8k=8$~UH~TX%Gnr>X7Q2Lt zb21v@54AZNEqJIE!z$bkQRX1zG-JO0cs!qV@o_KBFDD;=*ZBFY5c#|ZvJTlXx1mhp zqJDc256=Q~5Rm9+b#WVs2?P8En4M&!F8j)KG{~dittZ~3HcRcV5MlG`u#=F&Qpyi6 zo=abq)1+=iySx-Uo#0VzmHI^xm>bwxaXHi)r2n-QVZ8|3Mq$YN){JKIF_F$CIb63v$F5za44MYQ*{tr@f8FN**VKzbo2r z=2@t-!UaiUtGIt11iyJ{EaoJBjJ0F(F6PkekGE#*8#nXtQmJj7hCeOK5CPVk-96pJm2`%9utLNh$K7yi-$vUPT}$(yK6O64Uh zX<-ieLBE15J=XGWnn*`rL?8bEDnh@HYo3NgVI$rJfB#CXy-?e0jJIhyS6mlw)Rj3I zhvmaUIZvl@7-pjXu8PH;{B-?R!|(gel<^uaN)7W*3ITi7mPCxq=n58>G{EI~#5p_=N0@^LkI zhrxRR8A|Xbx7oxv$aA4!W=SU6M$MRYpK6hhgOGIt)?4jt`-U=V$=4L^Q}~+HK5rYV z5Gup;6R~F2fi>7TFWL_KsY1WR`~5Utl!EHb4&FPwJjO4ixicIg;Ir`Gjj)3VtHQmu zI9K1J#(&`1mnHnVmuv|88^UZ|SR>?e zZ6lqGnK#s7zB7XP4oV7b#d{4LaT*T`QIL(@vDgRP=f?Q(&`l#$lf2ZhASZK>>{K#F zl}>r;g}iwI%;(~HLW)DQcER&{VdpRh%iIAG>6uz6e4cwCqXlc@J6Ogf`m2UbISfHo zh($9+g4ju_ln3A2GK|vb%S3dE)A+%gMM(wum@Hu8zL62z}q^Xdw7k5D3(O#_g;F+#w{2u`}tMA`CK1U$8 z0Ph_>hTLK9lgZ-{TF7Qvi^W{?MAAocbAi)Gb~hP<9fbu*nUUIa#EK18!{S=Q*h}ed zN4j&a{LiOL?^o)t{?Dh|k8~pg|M_%}BHf#|{pZsS!dN|U{eL!H>fceM`}&TA&yYNa zCbRyhX}Nl=(5gjTA0E+JI!p<{)N3282I=aIp_uxC*XHiZ$kbpF z$oo*51P}Rao#5O0!&r>InMvgsGcGU89nP1-1#Cy$dx2Lh%eE8zzFT53y!Jy!rTOO) zF}{+H9za+SVJFhql$e`A=^1~J-Uc**6=8~d1aaNBVm&w>7in#x_XHWQCdZ{Q^|Vuw zZ@k0&Htwa|j6q72sRFDQogq%o*D7P9M_(kzY@48Kk$0szaV|%qPX_} zi~bMR@(4iOMTqOh?X$p-06&H5cs2QxVr^E;HL%vUmDcX~JtFy4H;(HTROhsbDJ>?L z3vwHi=a-b4Xag7GUG~mj#bUP+Aj*XGSZV`}85`nl2|gI*pS~tH@7Jkyx)E3*u#1Qv z7scBStQpvM1R~3M3$RgO;=K&Ynekk1wkSXFoxj05d5TLu-%GjKB;#4&{dmXzLzY2p zCJOAd-Lcr;2^0M<@eVOQcR;RFoVBW)D^h22s2i}G@y>n(vR-CcypD{9gm-P5qwaXDXjQ``_$FuHZBl zRWAw_Yo+SpGtk&Nt8Smuy zZ>spyWPDX$xoBsUe;eZ}UE2Ra_{i}xzLHbVcq`*7|6PoaW~a*kCgc5#tN1@?zJfFuehP5c;YFtzJG2m0QQ?xCOGN1CVrcKKt{0o{Ir&N3+ za7tH=lL{{v@n>sl+*A0az{kt~jT7L{On_%&ARJGQbpqTCoboxs0}vj?buHru8CU-F z4#xB0XVXaA8J~iIoAQ%?xdg;}JKWA;y#MPG zSN6A-@!_i_F5W}o*1`C$of1D&675RH^|wnvtmoqPHpWMOnTkKoc-R; z{*due#+96tvt_y?jO$r`8RHtuw=up7IF&c}j0D6y5Vx0ed|O(&Hwyd|t#u6y3$9l5 zE4uDsT+eu+gteC#*BDp%%)o#*UOO)aPWiFDA_btCiE9<(jf^XEu%7W?8vbp@w==HV z|J}gJ4)nLl{P(jV_#@-3jH6|U>l4N`w~Vjye+C@V@$$cT0{lwg)E-8UlL;DF{(nsn z{~*WjpDN>ba{PZXu4mlJ_(b+|8XV;*n6V!c8y+|^lkxIjfcT{Ue7%fxKgXS~@Q?(= zUJTsY7~lR~iHkj5xLwTnNRh+xb0!w_PoT|&DCyTT;DA5MR*M7H{L4ai+8fPEm!di zB`)@{<8}q(2Va%ASWCvOpYf5iCC=*5wlW@kL*m@5wVyCPx>Mq+J^wf3`X-6 z^3(d)DC0-olJPki?JdT4^+;Uor^0Q1zSPe_ZYLHQtewmFE-u$B#;Y0Ez9a$hI|tl4 z75<#W#rqrFZU#O@J4s8Q7hlWqw{u4q`+X4qcE(4yNI7E932tdGkFY1T5*K@uar>Z( z|F*bi~o{$I+Z`#F-x3Zq0Msc+>KFabJFy0Fs z9|w%Dk1(ulQ}Masi#FrsLKiVWCmT>&Hf$RA`ndG7Y z&x9Y<%JV5z-a{u-eEeZt@tleHRF6ToM2s9z&iF2FP;BnCX2uViWJK{>5Zrbs+$V9d z?-sWk7(a4M;&9u<^$p-u-WK-XR6chw-pF_s$NwSA+5S%naJSL!X58>SiHp5QxP5@- z45#VgWsa}s`kKb_KN0b!+&t`mNzQnJQM6)rzi^roi zjJtqSd2MO!`C5)YJWobE%<+H9_>l`FAbyX6+q;41qaIcLa&+x}mcKKt{k*_q#C0Cy+qt}jj4xnZzd{14{j{j~?@0Wc9KRJf=|Ru+ ztMq(1#~)rPBmRKnf0yIi((J|v$KUn3jCc{p|2^Z|*8R zOF7^K_@m?5fwKrF{cwjkm*ZamoXXXome2MHNnQ9g&$@-r1LgvLwv6vD~w zy(!aG{=<2U2hWr^t3z8bfgA^LO1D3)oo{3OK&w=Mvj0DuK+b)@^)ktnzfTA`SU-o? zMArcheTU_brj@t)RLalETKfBlr2;=i8%fJ&5AgBy^9_z~yCk)Ke?qw6koi&L*Kat! zp4TyKoX;r9hn`1vNI>}^Zz}oRu9SWLgyU~NL&n#!oG)PhMtU}+*;U$0GhY5L=J>4~ z-^Oxi{|x14*Ub_T`(|<5BjTT|>3O_R@xRG(hSTiHtt_YY1t~}DgTn1^fak+M8Rm3l zD8@CGGm_RGUQl?No?oQ)4@tYYa6C=Yj#0Y6_3ui_KjQ?Bga0l1FZ?FD#BcvW&td!s zk0aj^q3~}R-{qFTAoo-9f~JPc?} zEJu4w3V502xLD4PG&z?uZc8igZ7ipe^P}o&Aojn2M-QCJ+nR14IKIYy3)};7EoFTBALaA68Fw%~s+Yh3oqx>q;sA0!g$*9DjFOy>v0I zrHywtF@7j5{vO6h&XpbFAUi;h0H<`dm?o}LNwmKMCp~Lv`8?@N8Q;eK2`_tTUm~1& zlSwgfk~7Tds_~+Fg7_;%{IPzri{exJX9t$uUhNx<4};RxB#Cx2p7ng6On%GpTUSW5 zl>?t;{2==k%09oxxc+$=5!EWLlfESLGrB}RtNE{ial3C2abPZt^pB$IvJ0Y>slqJUcxyUlHS7jcD7@+%yl>8yQ(Fyl<~(IHw;NY{N@I? zF94_cX@A7=37Nkhvf4K*4j4>nF7Y??fHa(x*m zSD0~fjTt9bnQ?NR87EhoadNGhCfAy2a;=#r*P3Z^t(hj*nrU*anI_koX>zTZCfAy2 za;+5`H1y(dqz5O1yEJ?pmJhygM7kX~XTk3YqkFpp4tY9+!;K>F(|WOVX2rK6suI)z)29WDBqJ;EU@a zTNu`4zOksJ$Y`+P+sbXWa5&<&;ltzJb@=A2E$sGocq8GSh}Rcp!}DqEefSh(w=L{c zCxd)WJ~w@T5uYNJR_-$<<_&zF_#Af}8`)D?)>dk1Sl+m-W=XiRqQ_j}4|p0Yw2*WC zN}RIc(eM#e=&dP&PjPk>;fRa~Y6v-9#x>h4PBf_xxST#IUB$tt8exHjY8*IHMKXP;AUuL2JA%ksabyStP40Yb+ z;flaAQ<-aNTC`;g{q}}7;46y#o+XG|-L-w?93S zdtrUY(!N#Q6)RRPU1|3=G*wnM_f=@>fSS1Wij6!tOsE;7v{Vy^e@eZwg`b#T+LMXH zrL~$kT$-zi!%N1N+GH)WrnH&K+s3Dq&`>08{e)R4c36t!Xfa`wQU`W3!rhtFN(J#X zdK*43i!Z>ZcW2RN?cs&q<;z`YX!c6?@+z;vzP_uexk3!zB}>|>*RQ|KvS5|LQr2ed z*kGy%SFB#@kR!=Nq2{!9T;{Z_GdC=4^wq8nSC}l`z!Gccf>o2JVBoS(lt!@wTQ?`o zqY26}eKzF;lx99fmBQew!!8oeWw_bUzOtjEIn>hW?_FA2*5)g7TK)D8NAYJ%UY?r4 zl|zlHqHa-Fho{$2yxMq~*|N~(aduTTS3uk(fh8Es7A&h+T;r%&QtfbPJ|C=Nz?JB; zIK4{4C+@qN;*g~jepc8MsrUFhBAqbRDOM22WEE@9NVhu>!9Qn&$3fhn+nRD;WNa6ZgJ9x!$B=~wN#G7WGxYX6oh$^@{(4dZ!N=_8E#pA;nV3jDF zt1}*g6Uxfqop?Nz-j1qH96l8fF`KPrQeEPVD{&-_NyB&daW+d_nK%*)AC*t4adU~a z7?HYhD1#73N7^iQVnFVV3ob4*SftduX->ruEa6F2ov=mvUDwijrsesi9_s3CeA{U{y%7I2Hs;V-8 z15&!RFiCAfVHK0Zf}`9toc^+2=wdO>e!-Dt@lYJ)R`R*4GNtJzRU&zX$dd9&OvPo^ zw5D6plhCNiT2i99JU(BOCsN~wf0mRjbD7yZsSgCX>r;Cz4x~$AsTBvONsmdxnGa}w z72ys)47uhP9*#=8v4=VeyHRD9F&)E!6Y`3w$Bk`l77Xruk`F|nud&5*$Sx?_QgdKT zOG4RXUlsL~(sxTsWxcNRhP@H$#wo4KWGS1l+oF=4 z($K!x(;Zhqaf#KU1;X|C&bnwZY+M3ihuMJYq^W;6(hwG9OSDONI{E`0Ajo;-Sxg)4}xjN9Xj2jK`q)8}rhY<8r+)2uDp z0hTf-8Hb~G$#O@HoyP@x^)lITm(lqrq8xQNhLDbXl3lV6npXKr?v|Dk4d2dBw5L)d z5Jzo&LuEz1qhY~XvUY4UA_*7tWaBReO+Z0JR(z(h5B@b zE8<;8=XE6yc4h+&cH#`Zgc{8_oKkD=@nhWRqT>ovBsm-y)Lk$En7ui=onC)Dv{?8J zjRACL4Bc@hT8hgoXmy@Y$RBV(q&P@1&P17`78~!&kRqnv$s>u$Qesv%Y?*U?9S-0@ z;t5NJWe7(d+@Qo7LG$7&S|MnrBQY^j;3$kpN|HDkj814w9~~_?CzJ*?*y$8oiE~7? zv~jc)o)ev}6O88ro|8da;>B?4_1F1vCLuISr-j9fhB2VqT}21_APui@YtsE0ixvq$ z1i4)uc8@dYb=TsYh!76UNQ|o%YL(vb1odgwIz2u(7^#wBX(-8fUd>i321D`;D%Say z1l);X5-ozf2zkb6la~&;w4;7-wp5%M7S%)zF+NDEM%x%!)!W#;%F<%M+DQAl-iifn z3xi7?)cWi_9n#^5OEKec)iIgEf{n+Gb5Au-uWL-QIE9sxMUeCk9gdcoK3AwJ-0iVc zS*up8tXNg!a#tcjc{FN$Vj&?+d1!FCdV*e$J9!K+mcc8a5l=W3@yr#Mp(oQhQE|kA z<7KtRkcVnli=TX#s$~;~JJp*SLUpO^7;ceyanhyIm%k)ZThnM?)YVy9W2|T_YrCx2 zurh@F`*D6ws%S_iFK}EnmT6)^D{T-=Hl)`cw9 zfo9`nb@k1)?q$AJ>x>Png6mN}VZKsoNRBnhj;QG9Wbtd0+JxC?rL|*Ju`Ad|4LmNS zxJa~a91F*%2CMe%YA$n?wb_04reK9}X|sP(oBc9>T^9!Wo`?%WRs{1p^fi&Rm>N2a zI7OOPl(5{H=sVQd9gYs1zQbcI90jq6Y&004%n4?>!XDE>!}YxuD@kv*SjDlWbYI^< z#}Z>!;OKCLG2f<9xGQYI;nWSy4o7LPe^GBumC5W16|Y_0cUf^qOR)*cgSNu~hdf}F zw5`fn-{xtmUDwgLp>{)yA1}e2bzKYBE=Dn>vf_%uG6J|zLk>r1nWb_=$XIRZ3iSp8 z#wD&LeIDX))HP6vynaUyPH3X&lwHcV#VXrbq%R1aEwDDMTkGp>>8ov7*5qAO<}$Wd zRj)uErCY1XHvn=16sEp0(&Ev`!5b zP4Mo|p^+=rOanG3nb>MiII*~5GGiol^@Kw4<&1b|fJ0M)K{j=<14EzRt)Xt5zKNQP z@GfPxP;sT*3)Xdq8|oK%yGqMkUQ=gFm%RqvnthPZurvaXt;-u+CUmi+r@PIAHz+A9 zESTfFJ*l2U8TxT35JAsQ?nRiTQ|D|{U6QS?#fpBEzKl-#4Fv)bRI$U+7wPj>EnK_E zTwLZ{Q0A)hw)HGq5v)KlgxyUyyTwvL%V^CY-S;-5&9;TZY#_SH7^j*VVejIVU^Zgt zj~^i%ucUOTWmv<&kS`4fdvtg$*5O)!@ye6triw8h<7bkOGSPxP%u|u!9R_$qb!dsyB+vM?J4w2j<@wNfk5q^U>YF)hOb2tL^eSyxU zr46Q*hIO_6c3(p{Y^{MU;^mo?L7)t;eKBtdgm^7Uyu?Z#ZQ(e`B9C!}Cwl1vXIQM( zjN5>XXjO@&KZ^=cW- zvS}2TfX%ZO2QEiK0nF*S$s{jFVBKoGH5nDvVX|Th#53-6n^Fo-A8jbv6E@ z`Y0-`q3tsEfiPU6MW&?DQR82yX+`0_?ufGuG!l}uQ{4$KDX10s0})SAhrg$YUT>G@|^qwQ>@Q^l{oL!{^tj;PX4FF$Q}B>qZ{ zr@m{X=q@fW@srNd`F{wEqA2zPkc1E;TKaBw`CpQQ0O z@`h$bRs4zgcct;SGQXnwPf34I8o%0?tmtofUv_%>>iNDje)W4GMb&<86+c~n4>G^1 z|3nLw8K>_}Ctv#H2i!l7{}fa4tKX3-N@tcPU+L-p5rN74+5CfHMW0n0OIe6&KT77` zaYMi1VY3teUW$P}@PjKozIs;lEyT&gf5or9&tmQnrg9uB$6u+YMnTKTl`0r$FlD{>X8Tb0MXZq|9$x`X7efO=* zZ%g}Ka5_JIR*6zFq{&tMyq!88N^$8*rmF485czjIr@xEqA3qDwevJRB+{*qQ4@~7< ka>~E9R++-vUrI(3=_-`E>v;U8O_E>zeqF^^`Bu;W52|978vp= leaves: + chara.leaves -= leaves + leavesDiff = join([" (-", intToStr(leaves), ")"]) + return join(["You ", sample(data.verbs.eats), + " some of the best leaves. Yum! Leaves: ", intToStr(chara.leaves), + leavesDiff]) + else: + chara.leaves = 0 + return join(["You ", sample(data.verbs.eats), + " all the best leaves. Yum! Leaves: ", intToStr(chara.leaves)]) + else: + chara.leaves += leaves + return join(["You ", sample(data.verbs.trees), " ", + sample(data.trees.names), ". Leaves: ", intToStr(chara.leaves), + " (+", intToStr(leaves), ")"]) + else: + return join(["You ", sample(data.verbs.trees), " ", + sample(data.trees.names), " with the best leaves, but your neck ", + "is too short and you cannot reach them. Sorrow! Hunger! Yearning!"]) + + +proc randOutcome(): Outcome = + randomize() + var + roll = rand(1..6) + eval = "a failure." + evolve = 0 + isLikeGir = sample([true, false]) + like = "giraffe" + if not isLikeGir: + like = "human" + if roll == chara.giraffe: + eval = "… GIRAFFE?!! You have an epiphany." + elif (isLikeGir and roll == 1) or + (not isLikeGir and roll == 6): + eval = "an exceptional success! (+1 G)" + evolve = 1 + elif (isLikeGir and roll < chara.giraffe) or + (not isLikeGir and roll > chara.giraffe): + eval = "a success." + elif (isLikeGir and roll == 6) or + (not isLikeGir and roll == 1): + eval = "an exceptional failure! (-1 G)" + evolve = -1 + return (eval: eval, like: like, evolve: evolve) + + +proc doOutcome(action: string): string = + if chara.hasEntEnc: + var oc = randOutcome() + chara.giraffe += oc.evolve + chara.hasEntEnc = false + chara.lastEnc = "" + return join(["You ", action, " like a ", oc.like, ". It was ", oc.eval, + " ", getGiraffe()]) + else: + return "You haven't encountered anyone yet. " & getGiraffe() + + +proc endGame(): string = + if chara.giraffe == 6: + chara.gameEnded = true + return "You evolve into the platonic ideal of a giraffe. " & + "Your neck is so long. You can easily reach all the best leaves." + elif chara.giraffe == 1: + chara.gameEnded = true + return "You devolve into a miserable human. " & + "You never get the best leaves. Instead you have to go get a job and " & + "work for the rest of your life." + + +proc handleLook(): string = + # Remind of existing encounter + if not chara.gameEnded and chara.hasEntEnc: + return join([chara.lastEnc, getGiraffe()], " ") + # Show new encounter + elif not chara.gameEnded and not chara.hasEntEnc: + return randEncounter() + # Get best leaves + else: + return randEncounter("tree") + + +proc run(): void = + var + p = initOptParser(quoteShellCommand(commandLineParams())) + args: seq[string] + + for kind, k, _ in p.getopt(): + case kind + of cmdArgument: + add(args, k) + of cmdShortOption, cmdLongOption, cmdEnd: + discard + + # When running within `our` bot, the args sequence received is + # @[input, nick!username@cloak, channel], with input being the string to + # parse. Reset the args sequence. + if env.our.on: + var input = args[0] + args = unicode.split(input) + + # Command run without args + if len(args) == 0: + loadData() + # Show ending only once per game session + if (chara.giraffe == 6 or chara.giraffe == 1) and not chara.gameEnded: + echo endGame() + else: + echo handleLook() + saveChara() + + # Command run with args + elif len(args) == 1: + case args[0] + of "g", "giraffe": + loadData() + echo getGiraffe(true) + + of "n", "name", "nick": + loadData() + echo randName() + + of "r", "reset": + resetChara() + saveChara() + echo "Game reset." + + of "h", "help", "halp": + echo "Options: get a giraffe [n]ame, show this [h]elp message," & + " [r]eset, [v]ersion" + + of "v", "version": + echo join([env.modName, " ", env.modVer, " ~ ", env.modDesc]) + + else: + loadData() + if not chara.gameEnded: + echo doOutcome(join(args[0..^1], " ")) + saveChara() + + +run() diff --git a/thirdparty/our/giraffe/giraffeData.json b/thirdparty/our/giraffe/giraffeData.json new file mode 100644 index 0000000..08a057b --- /dev/null +++ b/thirdparty/our/giraffe/giraffeData.json @@ -0,0 +1,117 @@ +{ + "giraffeNames": { + "adjs": [ + "big", "little", "long", "short", "tall", "spotted", + "black", "brown", "red", "yellow", "fast", "hungry", + "jumpy", "sleepy", "walking", + "chubby", "skinny", "stocky", "stubby", "sturdy", "wiry", + "auburn", "caramel", "chocolate", "ebony", "orange", "rainbow", + "dotty", "furry", "striped", "motley", "splotchy", "sprinkly", + "adventurous", "alluring", "amenable", "amiable", "aquatic", "awesome", + "beany", "beautiful", "bewildered", "bewitching", "bold", "brave", + "caring", "compassionate", "cool", "curly", "curvy", "cute", + "dangerous", "daring", "dashing", "delightful", "dippy", "divine", + "early", "earnest", "eccentric", "efficient", "elegant", "energetic", + "fanciful", "fearsome", "felicitous", "floppy", "friendly", "frisky", + "gummy", "horsey", "inquisitive", "jelly", "kickass", "lazy", + "meandering", "nifty", "oatmeal", "plush", "questing", "rocky", + "sprightly", "tanasinn", "uniquely", "vintage", "wise", "xoxo", + "yummy", "zippy", "funky", "funny", "party", "spiffy" + ], + "names": [ + "chandler", "ingrid", "irving", "irwin", "joey", "johnny", + "martha", "monica", "phoebe", "rachel", "ross", "suzie", + "thelma", + "aaron", "ahmed", "andy", "armand", "antonio", "atticus", + "abigail", "arashi", "alex", "anita", "anna", "artemis", + "barack", "benny", "bento", "bharat", "billy", "boris", + "becky", "bella", "beryl", "betty", "bianca", "britney", + "carlos", "cecil", "chris", "chucky", "corey", "craig", + "carla", "chandra", "chloe", "christina", "coco", "cordelia", + "danny", "david", "denzel", "derek", "drake", "duncan", + "dahlia", "dana", "daniella", "deepa", "delilah", "diana", + "earl", "eddie", "elijah", "emilio", "ernest", "evan", + "ekaterina", "elsa", "emily", "emma", "erin", "evi", + "eliot", "ellis", "elvis", "enid", "esther", "ethan", + "farad", "felix", "finn", "fran", "floyd", "fred", + "fariah", "fatima", "felicity", "fiona", "flora", "francesca", + "garry", "george", "gerald", "gilbert", "gunther", "guy", + "gabby", "georgina", "geri", "gina", "giselle", "greta", + "hansel", "harry", "hassan", "henri", "herman", "hyde", + "halle", "hannah", "haram", "harriet", "hazel", "henrietta", + "ian", "ibrahim", "icarus", "igor", "isaac", "ivan", + "ida", "ioana", "iliana", "irma", "isabella", "ivanka", + "jack", "jan", "jean", "jimmy", "jin", "johannes", + "janet", "jeanne", "jen", "jessie", "joanna", "june", + "karim", "keanu", "keigo", "kenny", "kingsley", "kyle", + "karin", "kate", "katya", "kelly", "kiera", "kim", + "lars", "larry", "leslie", "leviticus", "lionel", "luke", + "leah", "lena", "libby", "lily", "louise", "lucy", + "manfred", "mark", "matt", "merlin", "mike", "mortimer", + "maria", "marion", "maya", "mel", "moira", "mona", + "mahmud", "mehdi", "mustafa", "megan", "mikhaela", "mikuru", + "nate", "neil", "nick", "nigel", "norm", "nasheen", + "nala", "natasha", "nelly", "netta", "nigella", "nora", + "ollie", "omar", "oren", "oriol", "oscar", "octavia", + "pablo", "paul", "percy", "phineas", "pierre", "pete", + "pasha", "patty", "paula", "penelope", "petra", "priscilla", + "rand", "ricky", "ringo", "robbie", "rory", "rupert", + "reema", "ren", "rika", "rita", "ruby", "rukia", + "sam", "sergey", "sid", "sara", "selena", "sofia", + "takeshi", "teddy", "thebault", "timmy", "tommy", "tristan", + "tabitha", "tamara", "tammy", "tina", "tori", "trudy", + "uma", "ursula", "valentin", "valentina", "vicky", "victoria", + "vassily", "verne", "victor", "vincy", "vito", "vanessa", + "wally", "wayne", "willy", "wanda", "wendy", "wilma", + "yuki", "yuri", "yana", "yuna", "zach", "zedekiah" + ], + "nouns": [ + "hoof", "horn", "leaf", "legs", "neck", "kick", + "spots", "tongue", "tree", + "ear", "head", "heart", "knee", "mane", "tail", + "bark", "bud", "calyx", "petals", "root", "trunk" + ] + }, + "entities": { + "names": [ + "a crocodile", "a mongoose", "a lion", + "a warthog", "a zebra", "a wildebeast", + "humans", "some wild dogs", "a cheetah", + "a giraffe", "an elephant", "a hyena" + ], + "statuses": [ + "hungry", "just wanting to chill", "hunting", + "wallowing", "on a pilgrimage", "passing through", + "poaching", "caring for the dead", "laying an ambush", + "looking for a mate", "digging for water", "setting up a lair" + ], + "comps": [ + ", suffering from a toothache.", " but there are snakes!", " but bored.", + " and injured.", " while fleeing from someone or something.", + " and paranoid.", + " and lost.", " but it was all a ruse!", ", having been blackmailed.", + ", way too awkward.", " with a sick child at home.", + " having been tricked." + ] + }, + "trees": { + "names": [ + "an atlas cedar", "a baobab", "a camphor tree", "a gum tree", + "a large oak", "a mahogany tree", "a walnut tree", "a white lead tree", + "a yew tree" + ], + "maxLeaves": 12 + }, + "verbs": { + "ents": [ + "bump into", "come upon", "cross paths with", "run into", "see", "spot", + "spy" + ], + "trees": [ + "come upon", "discover", "find", "stumble upon" + ], + "eats": [ + "eat", "munch on", "nibble on", "snack on" + ] + } +} diff --git a/thirdparty/our/giraffe/readme.md b/thirdparty/our/giraffe/readme.md new file mode 100644 index 0000000..5f6223d --- /dev/null +++ b/thirdparty/our/giraffe/readme.md @@ -0,0 +1,23 @@ +# giraffe + +A minigame for the our bot based on dozens' [giraffe] TTRPG. + + +## Install + +``` +# Build executable +nim c -d:release giraffe.nim + +# Copy executable to the our bot scripts directory +cp giraffe /town/our/ + +# Copy *.json files to the our bot data directory +cp *.json /town/our/data/ +chmod 666 /town/our/data/giraffe.json +``` + +If running outside of our bot, set `env.our.on` to `false` in giraffe.nim before building the executable. The `.json` files should be in the same directory as the giraffe executable. + + +[giraffe]: https://tilde.town/~dozens/giraffe diff --git a/thirdparty/readme.md b/thirdparty/readme.md index 1d027e1..df65b05 100644 --- a/thirdparty/readme.md +++ b/thirdparty/readme.md @@ -1,3 +1,3 @@ -# Readme +# thirdparty/ Content for other townies' applications and bots.