From 1705624d0d720267ba7e19db12b8ab84757ef1a9 Mon Sep 17 00:00:00 2001 From: Zhao Zuohong <1040110848@qq.com> Date: Mon, 3 Oct 2022 11:17:04 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=97=83=EF=B8=8F=20Added=20ranged=20weapon?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/clean/31-2/data.sqlite3 | Bin 114688 -> 167936 bytes data/convert/31-2/db.py | 8 +++++ data/convert/31-2/ranged.py | 68 +++++++++++++++++++++++++++++++++++ data/render/31-2/server.py | 2 +- 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 data/convert/31-2/ranged.py diff --git a/data/clean/31-2/data.sqlite3 b/data/clean/31-2/data.sqlite3 index cd2c3f95646c07e189e10782e420685bb20104ca..3732a4df44653f609cb0cc51be862513a84fafac 100644 GIT binary patch delta 40954 zcmY&f1z1$w)}EoeTUxr2ZjeSglm=<(Zk(aJySux)q(tfN9$G+Rf{qL-Xo;bM1|KS3<3I&9CR9+NK?Nl; zR8agGl^o{J4Z*<00+3VSV(a|_;g}-eV2}V5=wgYYKuA#rq^JqfmAKai-ml7s#KuGF zg1GjRY7c6v4{{3<{ded=dGb;cnx0wNS~iM_ABaAS&H?QhZ zVU5rzz&w&P(ng$y3YxAJEHCh9FRvAF4l8mswwJrK+D0z7F(L#HnN9SQ+ULc;WtuV{ zXrjaq`aJnrQ}l>oydg1bFY7kzO7#4pEA@4pR2epf!!ILBaTv`7(C7M97g?kmKH%wl1x{;wT{ACkHoJ7K+0=k6M75eY+l0Dx)TaLO%WKe!^bNEQPZlw-O0FQCh< zd`M!CymU|Dw;0p`5mhA`@f?`XzkjCfWcO31m>t%LXQD}TL{8&W=%mxlG+}1k9D1(5pFgJaj z*jGKQFy_5Dv8AM()s>v;#?*i!`pi#nGSZpS(?6AqS0%xMa6Fw(*)WtmC2&%E1Y-iS zvLmQI0Jb(j$J0}H+3F+f$WKd?)K0Ll5 zY+c{EED-Ftnkkz;PFwa(TxRB-on+u#Bqhl#V)`O}Rlrw+C zeqTC94?3g*ST}X#QA%#eOV^WjaVGSLD0tRLC|hK0@4t>^YycwaUd z?`%UsLg0*XzuoctBxb-pWL4WvY{aTs&MxWeyv=Pxo2!FrO(|=wLkGDEPP)-;@E8+d zD8NXBD527qq@JgIuG9WvCd(=u!e3!Q~bV$TqfwPUugW0dr=r2y>h`bed+$TGbUAE`P%I&c@aGqeyeHvb=Kbf&unHvJ1TOmBpBQ%}pNXMUXZfZb7AQIA8iYJ?nOP4tII6u;0Nle_*fPZXa|T zGqA8!Zpp?!(dFmo6|k(6{{lV347_d*-fhCA%u$Jo*&F~)W(1)=R=3H)IhoFet^0_$(-Jk^=yNjVw-sESo6Mui$*SE`pu4?N(rL_IfVFi3>YOD%;O4hSaeI9fJLjy7G3x z0sGnD{p!yB`j7X<|O*N(t+T6|N2b3WCz=9bK+sp zWbUoseDDCk2va#MZoWZ@>GkFFqY~ zXihIgsz-o$P*Y5jhmVPJpB`njzOn=d(0*qb3ZNZl2_8!@4`FF6DyLOKmoJdV32a8O zLDOY!Lcl94s7{^#z?$#mLjD+>Nlq4!#0${hGuvx}-mCOmp)AA^OIq;IZ*~REXH10Z zYQE>tB1mD09-SSGD@qwWW3ic26c_b0+2)`3)t6rMW1b>K&TAwOqmyn+Ck96aqI-rxzvqIm^LVFep+h!@slD z@$wdwXhvb|YI`YigVt2>GO~4CiCe`(RIRF;pP4}>;s<+t@$C2O7dqhUX~LDQp<(H7 z4|`3&LiUEE9viEk7hOTn^!U2UkNx;_KF(jwyC#ZN3nbAzC^kI0Hc>H+buxv5_8a{f zcH>PT3$oV(fiu(1sqxzq$`qXi)@T@_Zn`)iyEaoL*iXqr6VvRCwxi@ZLcj5oOEQ`S zFHHJ}_vGQGkN~72pJQTbx~|bW+e#;o`Rl-tyc<6aTz8>3?2DpE4@E4zc#QsjO3$VG;9PtDGE)YKg+0AAV=xFY( z=p8yNFz1IGebQ29GR^Tjdvm78opbW>x?rvOGbf*W?ch@-Fj1TLlz8tnJQN?si5CUW zDu9ye{c9M=B0Z3y#wyd)`DP838hGXf@??gd{POE<#$00UnDeLj0_P_m7V8%pOBL6d zwjX*s`jj3y3TLBN;A@=a2rwKFdrq(RHAQy~g1Ra75Wd~9#&b*v!>3M=NUDiXM!AG z^OR=_?#kS5U*I{c7gmhz3wNfy2u<_xRfKFPr5x5_M$7-~sFg>brIL9v|Zu zQaRa0!y3g{`5d1vBxM+Uc1_={Quawo>Lg}?;s)9Eg}HBE;E8pVZn<706P<~ z9DD+7H6MUzp!yqyhUu(#;?A@7VsnWl^}#`ck^klfPd4;SW2Ms?BH9A_8Vq*n@n-l* zl6}>-Hc4itvI!<3CNC6dQF zUE!sc2#_+%cFM`I1mkbz7vz(!5wBP$6iZ7DLpvESU(vjXCiO3N0 zUHD-|n)mV239es|(DTJPy~u>2wCA`ohI_i6tmU}5d{|e~ga?WMhK&;r&4%@3j*+dG ze|y~DJ8Yy97Pwtdq}0*COb3eu{41#Z!PKxoeE^CZLK{%O-d`DL8=(V_3}8n0H%;UP z9_2P3fpa0z`H-5P{hSIYriO%eLSkzV%6pH%v3~=|pFoq`yB`$}sSDYU@;~UT{@V>2 zXCSrh2US&2NDhgM{@Z!4J@QY$$q3pH2k&Qvr`Ev%ML=*_f1^xsih(Vj7TyTxc7g>j zF7{I=1x$-1RU9=Ow^~4xRA0-_;JF1Rg)nurOYAM6bhI!Mwj4KuOu=0+QE*tnop_$F zR8w$7&|7>(j;3PP=%&?gDR?~d6C$Fv9vylscUwxliS1kmw_*p+lUY?b*a@kHYkTPU zi87$)N%c{f80TVPu~e#+0;`Il*XPgNWpcez2#^P8ySbq~Z^{B(6P@v=Z&zn|o(J$o zgKGBFswRuW0qS{fj}>?f>kk_I{T-q}+4eV9I}i7#8k?L zHwo`jv`xc|3~lHgEWh>iTDM}raz1w>IO=Z?En_o*>~6StsEL5H9y2(d8KXnhWTKCI zH}}sv^g9VlfF%HC??%!iHTd`Tic)$Zw><|cSldsqIrFpSMo!yKi?j>2OXnmtj65j1 za5zq>>eHhreJ5n}`CK%PCqz|-h>tr8Z2r*(b#-B>rG#~5TqwDRPqcnNncMljlp}RC z;M-ZQL;)=sq~dsAdGrHH^%uCN7*s3iz8PQ7j)hRr?LJIXb$aK%r-POs{vjL(T{PO< zxt0>AmOy>luXL7iY zN5=r!?}bFz9Vt;?h>%o%rv37h?V45WDy&#sRy52E=c*YBrAKw89bi5#d5r{u7dS}5 z4#eJG*il0=79I%06y$`-ArgMAS>5o}AUE7)(Sh+Ijr%vu0q(`X2WRY{g79W0y6CXJ z08FkhLzp8@w3jyAK-D&(AWOJOq7u8WeWTXh=sEiR#e;z}r7PH+nsZ8t#3vTv*aK%| zAdQ|Cx*xNdMA#^z-^>nb?0aEABhkNmigmNnO2)moMg_G_7(RqdD9Gw%)QTY&CP^=U zbI(Y%BIKCFT$oEFFHt}K%=&V%gn)X4t?+FXi!;lPfgo@s0NGMwOc9B!Jl6S8K~H}W zX`ZkPFA?ZjHn`KbPp)9p0OI$p%j~TX!kSd=s6xk%{gQPB>#mT1m4hTQJhhuHnn(uu z_GMDm*{U($Y!*wI^fcea=mWLfZ%G93F2jd?m9LaZ#KY{Hg@+ zLLOu@^}qZ(%&9{{1fp8Y&2f1fT`UMl%5q zqGF(U8tMz7sC+*%94a9_Vf(=aPzSl!9RkUM0_!YDQP6&lKcuSz>KzXv)1lsUKb$!7 zk3Y-;AB5Ha@tObhJ8aE9DCta`Y~%*P68tA`k*s2cD}gr*!o>+Mr=HVe$Ciq>s#nWc zfWu~7(r_TCrcA-{t|N!*M#>M(=p;XtU^QWHDc-m#l9u44QmWVEWYxkRqurtczEYBW zMT$9UYtdM#C8oWU?RV94+bzZw(4qmrLBI6Ty~sVh4h5Q(Sfc=H_vb)waC{1I`oiY) z!xN6|^i;#kR1QzV%VG^d+7=Zh7Yv2ZBRU4aOP>t?s>KqP^bNZ7jTErH_K~T3RkqYz z>4I&V&zw@N7)!9ibi0oS(36++8I zSvqvs*G|5hY?<906YgAbb_=@2C|l!WWK8A4GDRWvOho)ltf9Jsd1~4K)8-!EmlNvl z=ei4%P|wdlI;xHRwc{{z7x>o@hATG51;CEX+}!GBQr5ht*F>Or65QMcA~8Iet@T#c z?_Si$lG5uP>>51MdM{Y%70Xrr$}<|PNg~Zk<$K38-`ZC@U)eGqm)pH9#E-;Oa<(8g zouBM<&~qhN@B-~4C2JZ6_yOD!COioNVmag78gS$9p%1IDsY_ylB~j5q?~~52GlFEz z9C4OIB5}T?MF)@|K111inr^t8fCvR9cG!AK*z&GH9owG4ADiSNznAOXZNk{1xU*Xc zG#K+CahhMnh?~C}AS#8>7+U92%K4S&?j zBJVYz7tj`)?P6Wb1@DI=jgL0PjSFNUm`KRKK5l0AVO)5cL!M#_yALS+X$aZHJlUi1 zJo3jMB$Oe8LzHoW$>ZlNKDBkB+(#v!p!b<_D0na;9Mx2MJ8QnYAXdc7pEKpE17{*J zFK_jtiUNY_4=Y;~i+p#vy_L-ImUG|+r?g$SqfHtvd*dU_+)sNv@gGuc|1!!*B-lSx z*)NF{xSyJLlpY6VxR9_Gs73C8vkvS0p;UK2qJAG-_NTq50-8L88r}{#dk35Z{T{~D z?}vp!EqFhrc0ZN(&+(A1_QU8}Xs5&894NZkYpaIZD-_5;q0OHmdV?V~89w_NO;CFl zmz4B7@A6Od*L)3voBV6K$;m#7$!cYffu2M(3 zQb``7DnoH9p-BRgluk7*ILj1VY+5$noEfE8bbL!zd>LN>}f@d>Ulb{8g4_KUvUtOtXusHR(Bke|-@vYvHlM$X^ zal*L`O)gH$@BY+eZ4QCh&joye`POYHd>=AbV0FfSX>&DhL?R$XBm}>ZKO4wt!9^fTQk>mkUjX) zJsG<#xBRMtsf?+;(V}p8>a5}*=DW140}a`@lIt94BYcB~>GCdfSsC>(7-^k&{{7ND zi1dg1ULJMZ0IH^z=W#k*lRVL^Pan)(yKl%2Ze-7Ne_NUE_r(hmfa>NaM+*Tp{EW;@ z+x^6>GM8d^_ODd7K0MS2T2!<)B<0G8=e}(rCj&-mU@3>-WGf6kQ%D#-_WX{=k$WdI zECBjC!x&Z;N7|1`DD*y>DGI9$4kosNe!$lB^rk0OeJZO@Z#C!Q_f)|(BR{2+MYDVzg-4n^_^*J^P~%+CJ0o+}kjo*ESvCuGAb;*u3~R!#f(o42y# zm!3?liY(+gNh%23&#rZ9dleaBg?!yyP(~3Mfwd*<@Z`g5F#n+vQ2+@Unb<2`&({_qo(tV~vEBWL1 zR24glV`G3zb1e#vaA=jti6|WtZS?eHF(=!2e^NWDRW^UbQb#7{7Fmz+cwpCHStbRCPox!V{a%UVOu|51|%t z0f6>{8cW}cj!MfL{AqK64FyqQN|P>@1R9TPk(SOxFapC z-O{miDMXajPO|-_CmX=c%{_K_a$*C0SFO@PeSLj((9bOaYlgP3*mkr{>Pf@=5J4a4 zwti>ugOMcOzufLW6(>Ld0PQ_e7yK9?Al~0uCqfn(ijO2eCRzZGLZcx$k&v!(s2@J; zjsFXA{^TpeLJk7j4to+Ip?_cz6aXFMR{#C=Z#8EhT>7`519jB@F6lJ=^{>q-ev0q4 zNJqp*92Gg4EZU)z~qz0B)-g8R- zZebnhJ1Tx#cC>G!k@D&FEB{%__Jf>^xZ8yoEe|w(PBx3VLw~ zTJMR&JLvY42WWYKzRj}TO*^-7UroRX9fv=-UmpxD52d>wE~98a@}4tg&o)zH}ZWS)U{ z;Fdh{0yG%;oviX1L4chQcvxGocNgx9lOaMH&akVPpPHrik!8~@Fx;k;>3f4GgO1Cd z1)EHub_#?}hZf^!$JPmRLGprN(Z&FVp;Xk5fLFU9N9SK=^VHSaDfkIi-x~l(0n(HXCrPWk4Fwp`?DPeg# zF^-kJ>g+PF@uw?RY1kKge$~0!2ab_HcaVz3$JW}=>fQ7z{94Li8t&)CFt7b(zWzv! z%#ZF4n$Cx<=1D)ghQSh;|32@Gi8)LVKgEq-&#Fx5sUyG?h2Lp!92Mvkg(}QsleJ=S z5xurg$s9z<)olnp;aX-zVu97lRzIQIxAZU7L?it~q4}<@8mhBX_ukE+%C$!dypFQ**GSxR|H) zyZ=H4ZKY76h<>YyAq}+Ae7|a zcklzm_eoB-0XD)Mh@LxIzk=vBkJz#Ca%T6UV+W_7(>8AmVWE%zg8Eig>D18b}H zOf4-tcTwX$RhL&)ks^%c1#)sUBsYe>8njENrKPp1zUR2|TfUeXAR4)FzTO6HrM369 ziZf54Qu6Rz|N24pW2VQOm}ohI6{C4^)&6>KXUF8WaHc96CN6_V8lJgl73~p@o7_H5 z>>gF(j!+BxXlAv+gW`XkC_=Cu(x0NXY$Os85>odkUk0u5A)Vs# zl74^kX{iA~AR{RFKm0I7%w|=bXc$DO--U-_P>G>a%}%Lez?Fuzwk;|ixhUQvPS%l1 zV=CuigFK9M%vgC1-?S3kv6-KfgV7n}iq+HNo-s*eJ4AE2sY-=p5}5@xhjUj}D@dl4k<2H*E48!^E)$wo`Ze)(sxD4_N9 zkq`Y1Jq!ct2{OOXehnhuEzi-zx$)V@jw2T}12tt^v?LZpA_pphhc>1ZvyvYIfd z?3xEHGmJo_mQ68I&wkJ%CUgPBZu>Auw}4xU2l=GIQ*s`OrI zXSgKcqcZL6(&mNwRKk&kzJ{NJvS}Ln6*ZpJc+~-8UpDkffgwDW8;o0)1c%EnsEMu0&3e2J1Y0uBKBhw zpo!wc&_+mI{QpnrfTm0S)-L}LuSE0yHz1hH|1hm2C1{d_C?r=WV5k3GLlO}jDvp&m z2fn1HJ6;n(d~xUoQviXKv=oD<1_P3JCFNT@xOzm?x4}69QhF$F{E3oy37H2213*h= z?1p%AKjS9c`IhJIaxBsvdM$g5w)rz&wA$kr05JxHFAdFrk~xPb?V}ty2uMbEal^2* z?f7?|JthDvrZ8Q-_xi0}u<0@tLOoIHTPb2hw>@`qAxlnrX1GE|zL}1;;~k3#es=?; z!~zOJ^5a6En;=Svj4plXRT2stgJlNhT%Di+7!g*+E4QAWjkK>V;;#TX z;yhHyIaM$39Nn?N>&-f1y@1i}E{F5(7X&OAR;3nlyb6D(y7Lt+Q7r<%()AX4{hG5Z zbH++h19`5E6UDE_yR7Onq@T~CV$PLM^t+^#DS8CGhChBBQjdUYB5NbHL>G6Ueaovx zCU;!i^#!H7dSf*guI#F}Vv7UbSu{!Wema7OsXKp0rXbK{x%;UmOE@dOG7DL9%SW-| zjKi3R-+K3vfDxOjPqFbR_j_~`Moj=im^x_!&i0bqx5#N&Vy=n2`GMIgX_;vZwTM*p z1~DR~%yxvjF?-ObSW1DcSbbas9M=tL`j6dT`AAd*oQ2L~Uo5bSr`Az6ODq8?ri(*a zRd&a2Ag~@&2GP&V2s?GVm4)k)4~Yx3j%w zd;1rE8%Y4+eA<+?qSbeP_L>f=-QrQ}k)4PH^}VE>8ucg_>D;PE?GU}{^u#M~Q-fDu zT|bQ@!rgvP{bDM>qI&Z$RgQ283wq(*8Yw?1<|ZAR{O5kN;3s2wue zxQUjZP*-xX{9luU3#CW+gSus-#ew_P#gO1;Xas@Ak-fGKDDd77OFOLTIjqTtV(&k} zrKb8X>i#b#|C@HC`VY2F7O}$9gBE4ztL`Zkw(>D|?5V>7tm17G4NT)Ht#$+CKcb-4 zx8g|q3HRd{INVBH@G#DXXum3bC59MRa@V$yY#5*$18Kh(7JRdoKKh36b^FS;Plyh zPw;Bc>}##ZBMD1f`a#2eK-g5}t>3#Ery|@4J~yxz%LYZRXT;dP+u-ICJ4(RC#Rk3M z=lf~wv#LqhDNjd2!|LTpqBX;zKFH?NVe@VH6EXNI_4a4OBZfHgl|vUf@gYXvr;l0J zUZ8Yx!G2c^gVWgU+13r2359%1%^v}Vm_Zyi?_JkOH{ttEuU>%KqrXPy_TNN4jksC6 zq_6ydMfOy}XZ#hlb63O5RGgG5<48M8k9MHBNDfpL6By2!1!Y(&+OcKM9f#(q0T5b0 z6qhKZqQBW#z2)__0)`Nn{7hD)2+n3DcmT!1UgTRQL2qrE2ds^#6xr>Cd;*|kP8TJb z_;jYQ)y~HU+cy(@t~g;|=Xw>ZsY^d$Sd`WaOBr)Mj5yxVmiV>}IQuJTJB#FQv6Q0l zL!n>@t1S!F)*ai>hA-B0{{Uy#(NKXBW{8X82BLuvc2zcMB$ZL3-HLRiKu_duCkT)b z5Nc;zyUYW;>v}FI1ZRVG?MN_|q;K~v3R-vyhn-$xZi=ZnT3oj~{ay{QPU^j0%glx0 zkXADpR=AO-2=rZG}6xeGm zQiMEAwCQbXAH?Y_`P4tA=Dg*>*Sa|il6;%@OTV`~L&FhPzZ9{0!z_DN3lT~%EFYk=_o)K%fs z0O)LpDsXD`{*rLk!9Hln09tf^z6cf|lmtV~?r$>jFSY%XN$d*h&)biDOHVs%=yo_(5XB0 zpbvk|w>nwON<#uljZ+tG6|9h5kuVH!I)q6ikb`99Tgp`RDMEN9=`AJlO)0bC>GOfG zJ4{Iy?~oI4)K#4r*->_|B#@G^oRDh|;?{Pb-d$Ebr|hkhZJs}!-L`KcGtxd!HARu& zwb;S$ztEX{-1(470R4jJnxf`FO=HyPrqe|imK?Z=T!BYy3&IFY%&=4brF~Qv$ex7D zTMLPN0AHUJ_^rm9S71fz6J9kL;Kx`AA*1BgY}o0E543#~j>)Z~xu+zzB9XEqA`_hu zj>L8wASn#!;qsa&nG`zDak2p zry!k7{Y@qFK`4sX13jw|#N_^}3=Obzlys3;vZz>JzZsPR6c;j*u1%*wEuJDlQ_1v) zfo@sxs3KV3vg8kFAWx<<%@D2*eG1`YQ}2UyTbVq*`skyYWQebnR- z{m{BDSbFT)GiGyOYghFZ50KfhFr&f!FEL`q67k57Zw0|`|(YT)v1h4U*pp)WdtEmO8bsdbO z1-o}}&CU$r1lx8NbqpD>^aYJ>2;aF)fysC%wzpv9sJT? z^>G>*^!ss&v6TkdgQgq_3`ZF4Hvck;&0L{qrL?v5E3|%uhJhN6b42W#KV;r`^}r|q zC31m<_6?iPOZ4DXs>;CliMHfhSdIz>ZB6!d0XJj^cbAX#C?WHGbtFmT!g8zS8i200 zOG%t857kZmfdrka4k_xzsezQfhr6!ptowQ_kWVWXvJ^m*ob|RCeWKwks{_vMX_WT? zKE=psTf`4Viim?Pcd5+Gdi|iB-yH^iFmgsYzNb9l=l2-c0Gmbhix?yTQ%shykH=?; z^9e@lc6H|M`tS%O*b#`!=Ga>T!ZCpV91q(diU~Hy)@A7kHuhR)Ng>r^BBfkHPWto# zXum6Dgw9$E)aT?|3J1(AV>Z?_ao z6CIY?Y8Q%6baV(0x5)uWCP+d(n{UN_f^bt4WD+}dXL_8E#(k5`ozo2!;9In$Z1Z&Th!PclzA$|jW5@Rv80Z$!E11(0L^?6?>u zOk%F^)cmBXZq7H90-d9 zyLQ8c&`ZVm=kTnrQxkSQvNf)z5=Vb+UP-~{#5Fa6Dp-_*af_)7e}jmhDR322y^bhn zA>Jt@UmAlG@606mGYPrXxj(^};4W06D-NA=0X=s^9qP~~`mp22m~9+1yIfB;G$h*g z-8|MlWBO!m#B-w66SciM?#Id@e*rP&+KDQeZ6i(e3c`&n39BdIVo72}8fyp19*jYp zO?l2mc`4vBjw^;DzO?1XV$BScFLv12P;x|;F ztIEYhj{IUq*kW2nN2&zl3Ms%CsKGvypxpVY&Uc-82k6RjeH|mHB2uez_WesLL0y$AMRm@rAKmve@W|)sWgnkrIs7cJ zD40=%_&!U`4R#yj4w7g_QiH5_G={L3ac3=Y2!HeyUi@5{Ki&NO<9Omr9aJr?teFH} zht&VLO6E4IKrWL59!yO)>0g1RRbOZ}a%cKZ#^5qJj0W0fYqM$@V6nY_#gtYb6#z&@ zRo@GnnYpW}dQT3TT~w+F&A=MxDQGJ&+{9U3Fjvr_@=AaFo%G%4AP)4#8-_>A+*9v( zaMf2WU<)8AV?js;J)Sh_W-vwS@pGc`6W7!!TBd}?s`>9`EmNXRsub2O4b?J{4-@n6 zZ|&%p;^LR3@kf+%;NyC_VeZe(5KtNu=w?^-B(>zIZ|pgZnSOr&_oWl5F8)9Q%pjWo zV%+S$T02CK)Fw@oJOhpCEScisuN?S~lT^NLEX5|q4=*i=u6U=_2HKFW&8jC_5T}}7 zB;B@N{qY)DChUG``+j3-LkK~5WEJ++Qn&qhw7+TNuzQqv{EbmqUy0urx9S^EW8EPf zyw&yGx6SmN^z57!1pj~e?O+uYC|5xDi@*Z1LR0knDRofR4J~*cbf*6|WB&xlgGgH?M-H3q8) zbxd7Y8s!Cmm>586P4jKp4FL;IZO`XwUshVmb2LB~7XY8PRQ0JgKv#11^UW!B8PALa zJRp-Pir1Dsqv;xHV(NjNndP%l-si`+ot4ufIUuaL3|=i&?V7#xsCxjo>AFi53=3e% z%N5z^c|g7v@Xw94^0@ZgG%l(R?eSI@8I$v;Q5Xco^)Gc?an`VZPz&c;(v(obGmgKp zbhHyO_P>~p0uwu0uiuBcw}0Vf{D?E`niqQ`rYQ`5 z7EnKl;a$UpLRnghi&_JgUtaZxe&QJhmwqj-R#D4-VyhF=1~YmWzFQ6tw@XDn%dUXD za%*la^oCjrLM5$4M>MIR)xx)5*G!18UADJCtC1mT1#+oN{D>O3joD4tR|08kupnDs zSOiNvBYyD?N@r&T+Ah(`%Y}5Q1pK(?1xnvLL-55%c~?~az|wp~!2LHo#N=PRUWI$N zu9H~@r{Lp{p6=g$yj0`%f0GfA$uT{{^tBv~J`#UJ{Fj3MgQa0`0VqQ7P0)Y;`qanX z0u4gRG5?vdC=g{0{98>p_TprB9gx_J9V1~$OnSC`H!Bb7|Cg#nkUz=@Ns-?W)L?r&P6-6vV7tg-f@KpwR>B276!lJ#o z@=KrB9l>5&ZTj-`1K<(fk@;GuyrjU*?5*K@kxe(mzHgTej9Wv$U~;9fHBb|s*-(x7 zjh3rYT!!!q@i1f6@s~j3Qr}4dKiS1DE#lLROm5ua#M3P58g#~UQk4NsDI-<*x9atr z!!`C4^luFXPhkNKaP0~sPyLy#uLDbnZBySb!j011B)eVax1~ODuK(KDchfgTIchW7 z)A82%GUsLsPSNwIhSdAE<_0Jj{yghrcXxXL+<7ttH(sip5u|_wp{rkp-CKaJBEDd~ z@^b^AcF(7^ z5uFcswd_n}Z5AxwX=s7X~cEo1DCJl`fm1{ z8@gCP)Qf2_=Tx(}bhEfAye}}sM{VM7@^@U5GAucSymMXG*!8)*OWnp9XmFWEgLEC~ zN&u1wG-S7^yNq}y$Q+dIyKgClU@j%DBtjgd19ZS^iH9H%)vz*ZR=K|&eLniH#4^xU zm-(v=@v1Ers+9zcqMd0g!@S^{v9nY)7#mmwO9TC5v9rnjv1$ZoCYmHs!IdCO9K@&oi(;7 zWB5LYI82c0I{KHrfq$80I2^`5eD-4;9uPVo7!ua;2l4-z9{gwR-T%%I{x328V{C!l zkfK~jYzlOV$v;fszXgr|+TGv0FLW15WueCVhw~yrNpEdCBsg)p@eK&}`(IluPByaA z*TNbGS-#M9elS2@S#RmF(;W>2B2)J?!Oca;g|9McN}mQ;_+dqGGlZ@BU6`LF8WX;4 zt=Al~;;q-6l46o>LLpGhQ9lg81mZG90?!wQ_cta(eH?DxmF$XODJ(4}veLN@#?nn` z>WSaDQG+XYO2$A!Co~_APZ3M}fAn23T`H?I3-m0cPL_S;Dw)6(f3s{|;-3SZVFulx zTljs6jK7TVcy9!}0d$Mwv@r*D`YXzv!K?Qe;K%{O4+!LZx#cG2bk-S!UWbP)>2YM) zho$-p`78EcyqC;Efj>ger$A z=o<)eu*_LJ55Mlt$q-4bPrC4$d%Ll%tj^{~RkCjJ22k6jNZ;i*ly=(`NHRXa zdHM933&m9CI+#IUl8E>xBkov^GS!Tg(ri(by|;YB_mf=dp=0f0DkJ zU5Z1f_1g8Px=VYb=kcMjhOqCY|iP2U2i8Qc=|cV)kv5Xdreo?N}ijRDBeM{b3nePp0E}O-{KGyj34w zlbRKwideAf{vjmAh+$wF$0d@7{JJV+g{{|ENMR+$nuka!jgHJ2& zN$8ZH-p?$@*+>4cdS}0g?RR8tKu*>~CcO+2@a`rI_8A{{ge`vUJMHepMD~#&toDl} zG5hxqD{Qz6aBO!!eiLvny9KFjjT$#leTG+umt?;{a2%WK7QpZ3Dxtdhjk*gzP*m$v zZR}Y~l>vq?`YD=)cM)Ct4j&C;3*Z1V(&1rABeG8+fmWLlpn#I4MO`;JTXW7K7KjJ`YOEA^nOw)+cL4*0xzuk8uEfrL#H=>r)wmN zQ3ZQ4`rd`Ct)%|(q+}xfqGmvB#o}zMg~8b-akUTx=#54s2#L!1H!_WUi~gq+%9A1m zgw#SaVRg`af)51wzaAs;te6#K`u~C1PchjXTK$~#VUWVYbi{(+BZYizRo(t=GN19T zm6B=h(Ky5^PG=%3xFl1r`SAOi;;eqT`RnE~+WhL2=J~G*Q>v=eRfS41zNLBa*TNnk zQejth{gaKHZcx{xkI^J_U7F8&EDkncExi%Wd|JI%)+t%_sR;CrBN|X~(Wct^(|Q#d zCM`{k(xrevgUFW)I#uWm>DS`D&sdxQxmkjj985E-m$5lnq>Q)}cCJG5;V`OAy|GbK z3I?#ej*ArID~4co0tFo!=HQCuc&dKxl1)t}jlgx%yAdGD36&p9RXdU|r?!8X#6gsQ zhPzbI;3$_AV zRM&CducDi>WLSFwYSsGXUh1m9Vdzu*zScYrEF}%q^qki}H(6v|bFOAQ&sbKhqKKM^ZhkGQ z?XQP_K=Z=>WHoL3X?5%SuQ7Q*3qs(^z8=79JzG*qbiPSNK*Jg0B$E8CrkdmHeOB3! zaet}EHG}zU_BXh%GsZ5EZj3s^lNg7-*i|wJA#>m1OdeU8KK7jtVmzMV4%4Q?Xl6;H zjO=`v8jOMgsRb&rxk4A%vDl`dztbT-wS(*iq+e*Uw#iDoW3N&Qy02tUJ#wTn0Yomx z)28VamfhV6kh`*M8*kR0c6zXx!6;IBscl*b}0Oa@-=t|85yhHn=H}T39%FHQwW_OuDjP zDgemiU$|A2%V6`u#{5VZRNv|=prA7r#VmYQm5PNCSSJmA?_`LVBIi-F$+Defa}bV0Kg5O0^U@n0BftFuzV_qQb(k((}D$Wh$z6W;YkTe(KM_FY&2y@?h@e552ha``rwdTE& zow5=={tSyf@N^@6NQ&5Lvq)v~wL#_P9crIBkK;wql_` zrYR)-*QPo+EeMlC?|*$eDbsCE(olN9yR#U4Moi%mwsP(dm_tPlJKWa7GyT5x)PV7A zQt{(Vm{}92m8sR4NU(c!LC0x4c(14bH4%uDCRjTD+~BLqb?3Y}VA^Rpfe0phnJpT*y6EhS``mjY)#A`aq%X`1a%&9#t;nOhob z+mbM(7fV{2O;)J3>hwIP3I8z|!)Xr3W4(3dvRafcry@Yl&# zC)+8`|KsFeNL7Dj4G45)4+xNAkjibqUD_!~q!E12sA&nAw{A>ttgfx89&f%L#e9=_ zr{0*=1VI#2)$8FV6WHh0R}QDf!ODX3 zilVVFDYxihK?|v8#{`XFWbZvCc~I{q}!sy#-Vp>(VtmgS!(*aCdii0t5-c0>Og2 z1c$&N!QI{6-912nKyV38aCZ$5{wADz?|J|Av4*u8rn{M8o~oy6SM6OWF~b~t00%ks zolC3+MxOm0cMCtuIVQH<$Q19y6@eZ0%uK3+c&c`V7H1R+fc^pF1mSv|>YsYJNHL%gW1;rRfa#C+M-k%~#Z6F`iB= z%#Q9}3a`=gumNQ{1PT>o1X3s+p2{p`w*FsThqB~x(L?z&)M0FOjg22MJfR_{=dHqo zw$^J$S0*8i2WtUdq4S!~pg`H_uCF#T0VQVq_2@$;ze28~UJPeH?7<#53s_s1e|8)%`%Uvy1@BKeexpryM`}@ zP`vygOD6Gpw5sh2?U&sP;n+%>dP!WiTG^SE=0>_8x8UUrw0CV{_kS2)McfB<=O`V* zkq#Q|Z+uf-`yPrf`~c5@eiajq`3+wJLYkzo#1q(*e?Hz~hC|Nk;f!Pxnds_5Ul>7H zphskqCfIF6Z+nWs7WxTaaJjc;k6^KrUy>3lyW|i5U0^9Kq}3NE_WUPVbtK;P@{%G7 z=E(FcTUIJ|bdy4ht``$*>koswS&D7T?evECu)_gX5|qE1wao79}N1vN zCDZ%yqFcSf2B&7Fr{*t$W7D?RRBmgaaEITh8UNY;6wPh!Nl47@XyjHJp$V&1wIj8Q zTUWEz9;_eKUH)D$Hf>#IJjQgp7-FPcVSzj{^Ksy#&1!NySeJ8lS;bgHu`toOg=q z0nT3{MATzFC_(j@P}$E&TK{!ifZu`*WWxjkOa_JsG%%2kZY759#wTo5H9hgPIhqo6gsM$go8>zq$GjgS zCzm==Wja--^)V<7sy0CFO^Xvk(uyXJ@q2HDyhm0T#3`QY7f<_vN-Kp>JcV=6#CiKJ zBT%zZ8G*JHg1_8_a=tDCbm!2NgkL^$k!v`LnOG{!dZN2d|6bF*ZJp8fBIdw zH!(jts=cRK;kcV_gTN-*_Ox~cx$2`EzxC;z!n%{rSPPwe-Nh4i(slhlB_+#li2d^0 zb`bm;a(+4!=aNqL=IOShQ19#b-nW>i{#!dxK$lcEjJSz;(q{QKB89&p8Vaem&&(e| zKN9&aGYARZwf5IMm{_bAM@wY4gQkz(_@Ho63geGADxB}MHIoT$@$u+C!rn}L)j+G@ zZ8G`wAvECos&1suE_M@_@t??-Hjx|2LQ|T4prDd9Sw(0%QZFkFEPE~=J5v6^<^pnE zs5Y1+BW;f>;qH?glW!4WpCC?fvagOJ+Ph}yc)1{Us2*psUp4f);j7$L1PAGGNwH`p zTAIC~zbo>MwG$x1Ai_Y2y|X(?RnR^p`e=N_<3-|;;%F+c#G)e&CGmPe-J~V;H0_&r zC)s}M@$H?O{iQuo)c*BuG;kz$`5*mtBp@)1wE z*Oja0*PVJcLWlfVg}OtTb?koK)lQ8b!`_rMI{`)OYKJ+;J6Sr_>i0HZs?!A&Ol zaz!4vRT_7$C9N*i^T83mjE#nOFIzh*H&by_!W?q`u-yK@jgqe`f8b zi4amBX&&F81{qwOaev?ZA~mwCFj}s-pm^HJbp!tOMcIi}czBx;q1z6RQNs%U*|eM& ziV#mw*KPhn>5-Zr5)zCbWU>IuJB_Ji3lT(Nfh0O!ed&rxSKGl$PW2|wNLG)q7zev9 zKt>x5<|RfR8P@DtX{^Y?juvV(@H@c;!GJo(H)iBc-3xgNRLyO$EHpC59^I?su#7OD z+=iBFrQC{7s%C5MFE8#0KBMK2;333rTPd5X3{LB@L}%k|oV}2SOvOpphHuP-3wQtA zZ|l^xs*9hN4wjKR)Bh!$egh@CefZ_E|9x4qxB;?=MkQ3%pF;t4e!dL7+ag@8%f4c{ zj@g0WU+kAB4m5NSdg3vFyW6v}yue7IF25v#S+w_n>`XMy+Yy=O>KVCWLDp1}QRlZsY z2!RrdmcnCX%8D5%y`uBFsFX5(m&0DHzd(&3mI_@tO7H`wI*EB=ZuC<}Gm?3zis)%Mmr z+eMNh@(e?UeNqIiokIKjMI7RkKhbK#+QtTt7IVL;kW!YXwPsomcTU*)m~wEz8LHry zJ3?;-8=+KTLX+hvnu+c$eA{+luJGIlmnYBo$64_VAhw ztGX^G3F>TgeWSyaAG3SurYb-XI9B+YFx~HYF%_loq7>-46+1t_2c@t-uG-6`+Y}aY z_0#gN^w^#X+1j&}+Tts#w6##R{J8}_1A1Z4`sLMTu8fgQ8Wu}JxjYlkN968%=zG{` zg@^1`Io6f`V|jl=d2l`m`4sjDoL}ve2!;en;{rf0n~zR}D|j<3aVsJ5xq)}1J!`YE zX1g^K&=T5c2>>?Bt*pSEimGSx1Z;Any>rvQ0kBLqE})GGFhthpmZrb$OAK7>yE*Bb zc?r*U3S7Ne;JcNPwo{q^e1pGt%|33!2-^%w{^!oYKzmef?9(pn`48*^V89=oaQa0W zd4$cRWNA0#-d7EaL?OQ;7)rzW(sCu6@QoY=lX6@PN#aFJ;oyLOjuNIZovQI-JFUD? zdNKh@A*@~iW~=P4BeA%VFHv1BKlijqX6!!8KpJ^|C_Ff<_D4FfT;B<8dyELdW0K)V z$g&b*WBz)CWcWrLU&HjURWp#U8#?P@;fi)%!xEYIQmnmZ?~2IZR!JHcB!pHv1uK0VZx6X+)kFNW|)W%<_E4`K|$sxA6LBC-=8EOk2wAzi5y^9 zb2c3t*U5PLb`1o&3U;so1+Jy4CcxX5NP)BzUY|pxEu^|iJlM}}W*W?(%L{VLAIhrd z>1)+0npZh?aeznsrWhzr9(V~1S+XXS;#VQv-@bE#=33J|42@F`aQ%j5U>LH3smT`y zg&ZDsN9O}^$EpV@Kxv&<;cu>XXxq;24BI~c7D}^-Zk)9NN4*R_8CPnhbM>_RPzUzD zg1D3;(>oPv8P%&fcSkA^|MJlaFaH$Yr|&o9P{^9=HiFUzVm+D~43ivKPX89-_!$-r zuX-JuoXrZjqw|8u#UT{L$#1QbhvMAlmFq2;RbqT2B+(RQ#0pD2 z@BR!5!0@po=|nSQNxdDjkNj;rQ~Byn(I?|oT}lM-dAL2sNDQz_;gYN#tYf!1c?5g( zzp;w91Tj*-($3g-oL#0Hv*4cx3C~#YYaJEI0^(gUZH^Q_>~@?wi0WG{a$4TZEkmkv z*j;n+pY(h zsbmqgLrtxt?^Br`8{V0WcgddiKI)U>szOu3K1Y|O!3gT2v9TiZ4|9J`Bj+EKEIRj8 zBC>KUWoN6K!}QXRyhM+2ypIk+Y`>P6&wd}4}qsP z1Hu9I$gNKAt-98ypdzwzqcwk{Eo;}?2k5wbzAGT%uSt8`r(n3QTlOd%4BzidF1r0jH>diFNY?|IJwTGLcS-hBdZJz!yEgHiwjSD z8^ofJb|!VE`H>jk7{(@e#s&gg>ziu-g>p;S*)uwb0uBTl^U;rJ5q@BnFAo~kixX;-J$I7z8MC#P{T` z2-UA-3+>hdrwbm-w^^^btBSAOB8V*tJ311IO;g8Mw8kaMv%cH%z@6VvoOAN_c~Cj> zW07YeK!WJk45`TF$QrR;zsBLn@nM42Tm2c$EgfEBeAdh*=-|cmX_eu(YGbv>@w@dj z3_{mJ7#1EdEJ-YUuq`He*LFFBeCL7}6nOIO=v7MM&6ybih4d7;;x12dijGHO@*>@` zpM&pph|;txIvE0)**ojy{q(Jf(WBIwV@#T*xb_$6`3tSqxG4hY=ES%dqf6~g? zi9_tZ=ZdgUS@HH|CR(_;{W7>zB-a5R#ZbpzFi2r&f1ZUPH%PeJ_G3+!z9#t4$i%Iw zth~COagK=>rM+8!fYyR;2H&+AGK8DSK=u9pv7ju<32LCmn+cBF)_wA)0qH1=)GoU* z>k#g2MSj}p3GfnC;t&V|< z9f%Jz$KKo3)^-KK)9)q;WjYlj(qfLx>Z{siv~fje;@R&}a6-isaM((+>e-X$cl z*V4Fq#!4^SPkMCqYcQ((OObwFnx-@aecWvdYkw>%%|QLo;*gpncsZ2>(^o>>NZcv~ zB7C!T=|8*DokptzLQC% zIhQxw_y%WZs<#M)n|u?n$_1sB2OE(Y*t_o5cyD7uQd0`wm&(=|EEW{-r%JQpwV~RF z>ZGOJS-$!aO;C6OrBmtErME;4rC%_`leohoLUkVD8N{4F_)3jF0IPIw!%WQV)-%_6 zV3}os%Q-WR3-mbk;uf7;nZ)s7_xP z$h#9y_0r^`0&+60Z$6VIMcqK5O9p*O!YBD%goSDOra0v-tY6PKeYR|Icq0CSLAhx0 z*u0!=+(;Va)^2`KUO*ySU~bSTlf&b|^7yjSP?nqx>go+tw8r}`$j%t6xOWi$Yo-K@ z4u2|4C*igEwvrVuvE|wT0jQcS4iLgm0hp7SZk-!XVI<$V14h05^nnU!6y?IxD{snt zd5Bv2XSIb(U5&t_mG%z;6x$cyc5B7ivXefmamih;^vbi5vzVk&B&<}Z(Bg<=MY9k@ z6Rb}cy>Bk@c1cq@h0Jk<@F_GJ#k|l@AgO@)=FK+X->{ykubnt=+Bmt&xmw#uyG8g0 zIi~t2f~kqYMF+$;ZB1_a~c4AV0y^nz_l`cqOp%nwaA zUd?>@RT%My*Yh;+`ffgR%z;doiNgVe?DOt}f4y#LDT&0lvGz+iXr zl1_9Lck*{`N+^mPFP*t6&ZQ>OW!%tBrc6-@Z3|mX8k+4PyXEO7ZaNHXmnxbucp~xp zb-e@yuT$KM)ljHOg`ET!-XnD?Cgf!MO)W zH_;GI`2VVgTm-lXBnXHMAxns}(bec-9}Ab%H+R>`zu;7Ru zJbn~8{5!h)Tk3&()elXg61Ey@@buD>v&~an|Lo?ki9&} zb0uZYmzd5DlBgX2Wn;dS(ZkX?q{B@8hJ;Xi`C<9`uH*P&ITQ=iT{B7JYXGW)*H>Gj zpgr7D6fqbG77sN3wE&u{?p_!f^10kvFMUPVXZdJ8v?@f^)QBH5JhqJFAu@Xs2JvXP zq6Io#8 zFpU{AZLd+1<&UEsm&w&1F@0#l_jw)6NSnQ=E3VZJDZYJQ+A@_4!z=19sj$8(oqa9m z=eoI3&Tb!P{S|geiHiJ-%P8^{;?2Wq`bC@9M^Bly8YQ4{px~>w;@EVsR%s3frf&+9 z*pCE#7)(sbFT34o^5|PRD~C#`d2m?6xrTnCzFFkmGD9@v7{gbVuTd5;wBLKp#!E^f zNUy>8Kzd_QrK3>P-Xs?MSPZD7))h8zX_KR}ye7Uzn@vEvP(JTIB3$GCtTs4*b~>mf zxyF6(2tlFE3baG95N;YXedQagj!82|RQc%>of4Jho3vhj4BP+?S^tp^>Ta4I)`J6_ zEDNVe^saQ4&^A}yps6ozRKI*-NWZG&MN=vn%3Q z)2p9uuGN;oz`Iz6+zf60Qs>hXNnP#U**3b$N|kp=t>|R3*tXNShZ&q{rvM3CKf1l;vtFm0*$vVhoKWpIhuHIX~@F4%ye})a@#DA)&`XT~WwjEc$n*nG7WbG6N zY=z`)r*=Hq63`(R4J1Hy&l~TvK>?5p6_7@4X0~i+d;d3M+KdVVcHbwZmDCC#t9icc z`2ql@0SuCz%LDiun}LaPE6tun}W+AF?kf`4O3_`%1TXb_tt&}q1 zuJuTbg75h;GVHOEd<=YZ#L(6_nABLV)fXuIT1%J5s*WL5hqAzU2bs)Y?bwPplL{s- zrI^C7pv|M6>T2lPH%-Z_YhH~sq!N=+D3!ZV3D%`kRx9Vc;Ux$jEjG4rUIi9CNda)`ifra#D;p#zVJK zs9jXrCH4e;35cD%J0!8uefOdZT{!G)5e^N3t3-fO0QQ0oD(iD$@4!!# z6*}hrN{f~wA<~nAlCBS=A-m!1ihqu*J7X3+ak)%f=-&uvT+TRC@zsBvY&=o>fm8*u zOUPJ9j$^)_r00*TMW}pxFX;k)|4I=`FxPPd-(-V6-9r9Yhy+5(c^Ni=$CWX`-<@H} zGw0wY5HgYbA)HqXwqrtMEAHsdOWA`@y+%{26&w_wN7Z5#FI;-1NRLh^y8Ez7f&Hqk z=#<&u&OBdrafb4>&uAAigS1|d+atE$-4*m4A)`fG=)!&qW!1~i)#2Y0x2S1X=H!5m z{=3?Mot~2N=xhl63KSOy=a;FCJ0jss$6^tdI(_AJYR*gXl7L}GiH1k5$!}x5W5Z>d z1czNeXBt~W&v23jrI=|&mG!;9?V^gSH1ddYpf1C%infh{fqe?yTs?sK%ab> zz?o~MLe<6L6KUk0{|JbeWEV4VIvp~R%xjrv%1ckDj0!;ri<^*+(l1(zc*QOD2n2&D z!zgFwvN97|G1H|)FNyMtd3JVD1|0-CKp2w*py*0m(?+F-&2ND|KYZ;T>1XCZ+Iti}$y=K_D0n{DdO}c_%_AfXSHH+5fkD0Y>x;F8o(leLDkaj|~8X z;{bdEFv&zOFqjE~@Sp9i6AF>moM}~E=J1u!pLM8)4D1o3gZ(t}>>r~SP@yo`D zsedVvHX+_W0_SGV5l5+ylpl&Mf5?nQ#Een;=0)IY@xlPfdbl&2QC z2xRteah%fz)yS4l^*0+gD9wyDUfm>&E_Z&;fnj9YLm{1Zl6ZxjW}mWn)YdrI$_!(7 zBOeF}sBAw}4cZBrq>m%x7CmfW*%4@O7qmBfvA(391&^R@- zLo@aSqs*kHpXhusdT>VsE#eZ08Wl^*5X)|pR`B++6TUY=C$J${IYci84f?#dqN}d@ zLbFAd!FR~&bz|oAOI^VUqcXGz`y2x}s}+(-H1(6EgQ14UL3<;t_TG z`g>7(4cmbWTkG$aSCNW3Z9lDiFzG&3-RczJHx3go4hd;l*0CPAoE{d19=g1a=Iimo zBhBgba^6J`$wzwNbt;}Ycw4QSZBQ&OiSsR3qwjG{1iZZJMVX<{pQO+qEs@j`dS<3M zzN?PM7pQ8gUp{WY)#OGh3+Jn-oR8{am-NjPm2_Tih76i7tCGD$G$ z3dkHm=BYn2`%+z;9GCGYiJRJn_^vaKGafrUn*Swm#JwtVUYaxG7eiw^1tmj=CDFRx(>Y=^0 zen}DRup}XOWqerhb*m7f?WMeW@bZLTyFvKY*M7Fr%Va?B{11-;a`l$A#?YE-WVF$y z?3MBDL63;5i{k_{3aNk&MN|IAhClpeE*uV3stl+ht%vKNk2@gdnu28vLKaUt2K zFd=&O)2AaL{L&h6&i9w)a3#!da+rX(!W>#>=y)pyAmltWZn}`+xk;-B#D`R5$xJ5j z$z+#YkAFi=L)J+BGTTVT9P&Zn1_S$Ti2UOg)Og_=$xPX>+iuCpNNRo=s-i48%Dc@pmZtDB3ODFHqe0U(B+f1JBQmRR-m=`4CcWQ2W07K+J-Dr1f~zzJ5wF{hlhWx}g-pvNdm?Q+)Yl$T;NwvgN0T=$ zh7}Op;QQ;lclnUrTH7Y<2BYH)9k0WQ3W%jN%T$K~<}HNOA(K|%)89O-wk!AKAcAvQ z6H}ysc@F)hZ74oUwoj6#_blsF+Y+8FSgO<_|28j}r-By@R4NE10|^m!5GoZIlLTcH zz(Dl3y?JrfE35@`&Vau-;K$%`3FvP97?xcc3}5@!#Rf zxMR1MX*6z^ID!-cC;BmvetHbb`h?ykLW%1+*KOB=42f7x87CvDQcj zYSy`tW(MqShWRDs4w~Q8f8bKKN4c_HIRC*DY(@hI5v$xcXcbkq+e~e=+PJZ3K`Xgu z>xAG*u*`~kKP**4;9YBtW9MoRw^pJkg7A9o^GDcuqU+ZcKCbwKmn*tlQ+;UK$6g30 z_PYH^I`=xr5Jz3JrHH{^uXXM{folzL|6lhXwvnojhK0)dR<1o*$=~knKNEG;bq5fPU1@{o5*F zgM6w7m#HN4#W(07M3M}*8*66L2L|}n$Mil~U{GT}h zf2$_{lEZyk{r~S&1MVr;;9^bWZw0^lC(D3#eYS}F86}{qLI{5{n(D^4Imyj+qkaVs z<7Wkfs4-3A-Dtgsy4n-FsZ|W4CO7gAm zjS-UM%O9AYOh@g<>CN;^zrXr89NnfLA3yRnVxiV;y23=RvD_d2Dca7Bk354ciwcW` zt1DGC+dZOp^nZOMC6QC)#l`s1hgH_!FWd8ef;E6_s?=w!4Yp8zReCVRy~9Rqf_37^ zIO!E}PfX^@>0Gl)^4CI_MVP@>PYPv=nzv&Rqe6{Ys~TvI_o3YzU+{a)u$VaT^Wg#$ zOMZQiP8W8&Q3@S>G+Vu8DfD!K6mD55Wm37=I14i4Gzs;i6jbq=<4+C;<*H)GCYa;e zOFedba(7mBH|~h6tiEe4S@O`3`4BHS=wQsOv>u;FW**7jriz`po%eCT;x<`Iwuc~v ze0Hg zOEjZ1jGqv2Q4TUV)th+J5Hrx?;1iq?kvE!OP5y|j@pb3(Y6|hv93J}kGcvYcglgc3rzvdfzB_r z8pkzmUaRY9#-tLlz}atZe1JG-@~syu9<_J`_9!0p3`eKy9yc40q{9!FEttXoiBkKS zLHmQB@5BJ36L;fqnKY~!-rskAygn zufhm+OscF9rvvGUsvC#Qj@o}6upEl^tnHJ({g3>s>AM6Q`&2=%N+{MPw5g73=S5Cw9{*4 z`zu?B&z$wey7I{}4WL4rlSwjy-xZfRkPxoyHBVO`-bn3E9CYuRC7WP|w9!)=t2yvy z7AA@Ackwh3Tf3v;onSK;nYE6FYcoLx00N_Bp!02(dymAv-c?5ynTP4{AW7-22d0|x zv0%7P+~bRaS?dca;Y?qyRP8uDU%uNok1W6njxU==TRuIa|AD|hu)Xit-%5P=w?BaK z$0B$t>iS3oDT0CB5ZDs|J#7FmcnUiMTeji>&Uguc?QQ!NK6!<|HQrsH*yk}+PnsXk zQf~j-|Ngs0K7$VbI13qU8nG;fOZl28E1?D*j?J5gcYgw4{?;v%kO3Ao2?ml}wt2?;Vxucq^Zr z8T9t0>wX_`&^`n7DVm>8BqaiSC3;cWZ&L4D-77Y~MR&Gw97)NuBOFMsv7KfW%CUD* z-UM+lEEWucPaN0#zB$spduZ5%tq;{54OM0+bUzw%=+Qu|*j=@T@J$Nm?yUYadYG{o zlkdF8G~R4!!dwxntw(Sr7|B`KYVkE4hTB=2fL-eoJ)=bHOgW|evwMB?Z82a|=j zSWYbb_I1VW_jk4UmkSUaCzc5|S;jF=bed}rlr#v&Zzqp|^Z`~{#6@T7_q@2-yl~Qy z0auk$%Ik+FGeB2pX7+`&p3ClC0!pn!n3;+M|1#NrBOOAPbqwizCSSH1>b2|;`!YDH z#=tFRg`T?))PZO+F#XAZ3&Z(>Qmn4n{2M6D=|M|%`Rk|t=?{=kK03YYT76yYCcq0D z!{)-S(Ho6uQ$0>9e(_`@7oYtHsa zcMEA;ev!C}4p$CO4Pz{7G-leI6Y`-MwUoJ(hQ3-eiS*2?1ClyNa(#f#fF}0RgB0KT ze+$kK=*Ylm-gAxFW=~itUAZYNPzzbM-&zRS9`1Ox~aCv;ErHb-X8xfQ07xJC8iR`{+ zOKb!z`xlG4fy4Pm%8yV>d*t7;*;3#5Z6{R;H_@1Fg^Cp>>ktb4a3B` z-EnL4@#}Z+=!C@A?GB@n$F~{haX}ck^%9ETk|I5W=JP|LR?8JGxUr(6CZY&YA-B>J zpT=#KFN;DLD$%8QUv$szDaU8O?_%4Uj_}G*6C<^a(Eo&i52JqBnyeUjEXpW~L5b*F zW274Mut7Rd#b+d@mc_{qRqRekj;v;(nCP*{v>=LAgQ#y0tG6*&3r)sF11d0<)p69m2JTc@57-*`NY2|=1C4a52J{2jTx?d~>1u9rss zMd=4I?`o8NYBx)4yUJiAg@$-L=Y#}21#<~4Q+^`hqa$(>v~ugl!O|A7&wD%Po98;) z<|iZ5v~P43ic=VGUZ#&7(C&?E{IuygR*_40iQ}F<<*ulWDp@aA;03=Rh=LFW#$W$# zTY_WmHh?~!*9{YkkrIG!`UKu%(LYD7@zMat4dP31u;OTa{gIeJhodE)jccIj?b(H6 zV|iKRd}jzZC46WsA<_RaET$nCF@j>DtAhYkH3jqHozoN%j0_=tf_yGA*Y_CZniTZ8 zWTAp7v}U{5@N-J#-5l1`Kq|-~zPplB73@I?;%cy6+b%Qb=i5o-^;%AxF5XanTWR|O zvPf)=&|Fivopr(CnAMC{#Dd1<0I2sC{AjtMOeNrTs6wA%t9zV+Ms;y8VF~vgAFA=e zn^<^wYlr^tXXg*RlI^Q9y*x?&;zRs>c+K@wf2y^Y6Auep3vDjtBqQ~`OUB|Da}m=r zG;n*=vC_IR4u$^FoYM*yN|DG1v^FXIaUho!R8`%y2fCb4#&ji zK)=nu2O`8Y(nFxrpZ)oCf{y$LWBh)IEuA9+-JF&%QjAkvJeW-!&P4jPwzTgcc`DwA zix7g!7wzN=ZKV9+rzX_Mx|r+X$}9mDE%=Z>SAh^?SA}}hzq)s*yQE``vac6$(? zBkNno?l#o0x#_{LA!jEAzmWzKhAoi^Z!r7`~kD$#yreN zBO>T4Qw*H^>a{<($k7PgJ#MJebqsp1^-6Z-15}qt0qgxyaZX%Yr+?B3T+^##eec&o zQSr{{0dRP^JSb!O4qudJ3A0k8G&zzeUo-+F(Rp@*-@+5M=ii(k_C|Z+-y%JRe52|c znJu(hyWlzf%7j%nd%&}Lgpko97e$Im3LEk}szi%}O)Vw^5l2W?j<&CU&`G#iSO*5) zaBO2ph=uLtp)@zBDihmQgxpReKdq|xJ&bipn5 zdD4mFSj9|s13$X^vf>+mkFdArteIO$>_{IQg1bMq#?NlTSV+RQqi|sjGsQ1o2~P#J zFbUe8T#a9!Ea@4r6=hYFP-4B>PJ6Yh30p($zNm0fV8cAT)2+XFa^If3_8W|>qk1gADySx`p`F?EMJMe?pxBv~pC)eoZJ?X1F@7@4v`Md-FBj!*auPmctkKYG@ARA+1`VYsCHN3)X z-{5?2Bj!Km_p?Wf>d=^4oP1IqfnrZeLNbX?T3JehcrC24=DT8^%rPJZh_Tup}LtfmyQrW$R@m8Arrkqk&S4Is zt=KaXNBl+5T6$&3!DDLM?Q9`Q6=5(Q)S~BQqSUQR9f!fd9$|0`b(9LJ*d1ng`7Y~X zNA9Bl7yI#Nai1K*+$jr6SelXo!UKl&d5I>KCGVVGQ?G%J)HfYeNI0ALRNg=Gx~E;? zKzbTcVV9P4%NpMrriR*(@zy3@^=_5#(_R;hbFzx?4QovTH>*qL{3-t`#I~`>=}iWv z_eo(u)2|(99Rz!*a(5z#hF8b0>8oRlEl_#p0(jMG;Ap)|F6VuICtcKj7Pk?_|c%X1i0Sx0UQ8i=HS z0t6LFt1RFbE}*;cqmQ&c$Mz4b&`GtdL~)uk!oWL_-N?_^%}%eW7>9g@=yE??VuEZ0 z(V5?X3LumgOHIi7BaKv=_u!m7LbJ}y<(&U(MbIQqAiiuUBY3wwZmTx_scZ!7m^gnY z?*2b3Ly6B@X1O}sldQWZo}74~C|onxtyqvhkBnHbL8NOJ<6Y4@8W(;GQn>$jKSZOj zd+3lQSs!YnllgpN4*bTYLq|LFeYAWq9{-I~lwwP)szCn3YE@L{dF%D^wWp~V7AVTH z0TEQ{uK?=G)5X0Z5yJ}Dk9L5u#9{1#T*_dDCd{3hJKy`eoko_j>7f}o-_zP+4j_S6 z>BZh)G~Job+#b=`zVGz`jd2I)XzpDjJZ+GH(DKXAI)B_U!#BNT|e z=$l@v%w-ku(l5IZOCe(Jxio9imD@JUT*UUG_MD8JM$L8gK@+2a&GYp}EB^=)fhCn8 zpS5zRuL{=7WdV8PjRL^!!6=I%EE51((F}B+GdL*$>Z&si&0PmX=4@WxHVS{) z^j?qk4!2`%anU>fG+)zqc?$u?&{K(jmzx|Gvz-~^LJMb5x4{{C3;YxwoDOD?+?liq%vS- zm#-=k=cEj(<&9VF_kVWCPHs?-P?*>AhP!c{EovAN%MJ3S-G*=(xY|SV&|~OdI$Hno z)XQXgV_JGuB6J?)qJ_nu5lAiIwMxo%oExsmrTz`*rQh7=Mk0RuHGGI9S ze-?S5H1Xe*jU-&_KPejklV|;VYQYm!7##lJ>>r3TH=4qM`184L`b;NzmIXp?-Dr<| zO74J@0ih3|JCOO=Ai@(A%v3dSygLcXrC?3RvFvc2$acR<@$?}!hE}x19xZcF##`0- zV}9|SC*g52&ORfpMew2K#Qr+WPM{$k?bd;(%?rx|_U9&$!b{0}net_PvhTs|`p3=` zbl}}ly2q%?h|o5%v{W4|L%BRdfDC6el#EKiF$8&&RP@aVJ~Ta%JFoNl;{mcUjCUK9 zn}0$YnR;D z=s@DX{}9IyX9DJV34LLJ;3@LGFO!c~%XClu6A~a!Xr^F;E1;1TpKKJ!O55{VJ1Lve zEpf+YRzmzOvjbI7;54UqokfaSJ35AV3dcJAV?~euvSrM)HM%ltDc@p~HBQ*aWUdtg z#?<;iSbfsL>AuW^Sr%6JE>T{S1Y-Pla~H^B6Doud%0z57+jQ1Rh?SO{N@$3xP@FnO zdjX4`O$%F$`^S6i&Lc^~IC;t(Ch{|9Z-E_Bmy%H=Q4=z>I@N%tTLG}q3xoElAjzTD zvssN%A<;Za^`Qstsd$@VF4z z0nU>=7I;i+^7$C;#Zwo;@hj!HvnW*QPYG{wqGRI7PpJ4;$mWhGZe1o5ZM2|;FkQ{t zRrtn=M03B+PY?=q&~f#lCcqEX@o`kF-9~JPUUn7Q?U;d!Q!yE>CcKmgaxEwO-b6x{ zpnnrPYrd5OrEw+2DZxOA_&98~LiY{CxtPdx zY6wVv+OzX&*UwHCMF}3otQ?>~K?UumB~$Z(3(2LNZRB1m zF-N=3QRL??d$%4sw;yj(XU>sVpo<#8-sJG0g_0ZS)6K7uR5ag`==s>b#W_d=4Gh== zaudqX68Zl&)aNEXkS7Rv2f-I+9poA9V+{#1q(TCb_#pejN3er;dd-?Q|wRRi*P1w!&I=vs(Zv24J;MN#tKG zuxA>@Rz%TeoA-0{2RyskSOnbXS>g-08~1a*`HanM#bi7sn}0bVK&AmHLfYF)B@ri6yU@?f+vu6P22b&Q-%@5{*q51LKh%P_)P?0!*p1|LPF3-OHFhbHg z_PaF6B0ODwubFuWi*$%@oEEYt?K{|dAoNxFG0b|^ubqq#DI^wjK z)(Q;>h3Mzi9O*_>7hT58*J-zpquc4qWIcNh%B?@IaV&N+K7hOWG6ilMu*fFI<~WMHBjC90wc|1#m8ruXQ6F$1MyLjB&kRbJnWD^R!}55i3FQ4XYCG7nC;$)ps7HFG%Tu zB`h&vwhc^VvC;1nyI&7u}8u7NwKaE1H@qL)yH+<=8<(UOFJva@r z++#xscup6OG{E;Grz(ycmpb9R_^D~<-K9ee->2d!ITRIQUfx6#Ui>r){JLqS1}#FZu>-4~AH*|2Rpqy*W50%X-S!)O-*h?aUhQcQ{}xiF z%!*F-*rL17dWGeqPFUA)r0myxA7{kJI>jhbKQ%R<@a%3Ya?(COokU{?f&O zn?F$ro(NoFyNN!GU_l5}@3R-EkJph=`3PW4AEc#Jf^t&uuqcB_f^%*))CnP=S2n`+Ua zGgGfO)3)y+kB<%=^5O_rHNzeyXnE$TVzb^ylEzZFeiaZfJwr(quI{u!3cbJ{EgkcE z`Zg0)pRp{MnhZwKl*X_;HlVhK@cl-?WcTO*yHdqs!mN2#97uuBrFTi=`X>@{0PRiKsXio<&TEiinpnUwMgFHDkFGtRuH?kqA4*IoXuxXmFBD|Q0odAgMm@Wb8-MYFH zBz%r>eOddg`VpII-CnwO|EF7%lfTr%E$uM3sx3G%i1!4|$utG0hTQi}FzCG8{D{^H zRzHhtyIby6Rro)%?{6+^-*~oPuyzC-2|+SGDlt7ega689mMXERQd|+^z#kG7-3;r? z7EhLgbmUh{-gj{Ze=-m5T^*7YYG5~%o{CO5e7{iPpE|afm|1WP;)9>Vh}CXmMUDLp zaCwGQ6nNA|i!!ns#>;5d{UZV2I?xE3469HRzlzy$Q6-h8WbYT2RAo17fnKZ7uF|Q? zvEKDE@FxgnO6wB+@bYi<4?7=>v}8Ja2a!=g%lO2!WVTs~K2P6l!(YpEbsxgl7Ov|i zs+v6kIAJG%!EB#LKW?6Lv}kDjpU3l@|1q~1XI{|UY$H?>1VFZuuFXWyFUEl=$4z)T zXi{4mO~v4R320@YgT~ZUZYAXII=6aRbGW?Wh} zTm+AW={zw_s=o-#FTj%LCEl{6Ke`f`f74Qgq&BNDB&Lt?pDv^cnmEsdY);Y4&eyuE zbmN-z6)}@&gSBbRgm^JwP}YFd1Pv>@OER2lLdv)ZX42NPl)_KY?wZcjp&2F}l!r>+ z(y#Zb1H^WBcEfO?INUCeP3hN;R-ol3(_r3pWP}P+Q39!;hG^bL~a4Z5+ zABe4+<#*7NI2%#eFXr405u!Si?bN}!uZno-`Tkr_UH(YN8+OzE3}Ct3ipKIBkb7 z3GVwC`B|?(iIv||X+T<*YSn7$@p$xRd5=vmnHaJB^J&$4f*++!m&5dk>UJG16W@qO zk!2CO55jXomB;g1U%jkLN|SlNya@8uTjd-s;DujL9-`O1%VP8QEPm_tZmKffWa(4<_&&65| zrlUX1Se9~hi~-8p>c2k@<%~r>5@uJT!7MMGJ|k%hi?^1T8WrMh4$|7NY=U;LLKeG1 z7WS3$M~mF_x8vk3WH^65JYngeH$$u9iarU~xRW2H1jfn+shXd_yV~OU4>WE(9#($1 z+H~f<(g*%DGlOJFGJ#vu#Fvhl%m&ox#cG`5MusIV8iBG^i^j68+vQzc9k!2n!1ZCt z^qACJj)z2EY`1P`&F%dsC%qI)&+{iI^+^^0C%Ia8YX8QhAV_#8KL!N#{#^vIzZYQN zUL>fJ^zRP#g**EHj)(yA@9g|J*KL>ddE5KXQ$auUXY4X>^GW4SRAokSh8%!z_SaVC z^kXf|nTWox_+cmtBuKDjV|JP-vV53U@w85KJpxK}AxzO;8ohe_>fvS>9 z_Q>aChT3HN8Mmi=oko(T6?%hq$L&_ew=5QeI$8Z#guP(j4aiY5M`ZL9!6jdiPA%Bp zyNYQU?t`Z_GHngsY>|jY`yrEx`vH0HAYbmp8auV*n8yiIiEaL9*MDt>meGAvOSe%q zu)o^+ZuH5lHek+SV*z((m(?r5>CH6pc^4&d2VW;NsTf@C6(3paaWR82ry=g#wZkSW z-IwWdncQr8vhbR=hd$J#!m{SqbBKq1O=lE|Y2NXGJ;Q4Dal>h_pS={Hd5diP)yd1< zCKWF8UyH&VBmACclL^+POMe}%dWJ2k=_CsBsVclpln<~LevDNyisSo$67hiTqu+0x4h7qr z99PE)<-hbc%*8}~Q#_QcqbFE7o|9`4W{z8Q-MF=J%hNzQkH9N-U$E}|F-A`AMceV2 z1!H(0+9(xxILkfDQ-#nlx1Ao747jXZC!|>E72NnFWSw9stLt@bC+ua5!m*9adQv{E zea^Bodd8HjrL9Xz7B=42vYM4JLVXi^Aa?&Jq}j63ZRf2dUjm2y#{tXs{MML{VUJ(L zI}`GSxSmwLPVf=^gdP%1`Rf1sCnDzghibafw|Vv+z^}!=+ZsAB!vnR_{Gwl-jd24+ zq>&RA5_jczh8`G-8(OK6@96f9b{DIer7Uj_-YBD@nUXj3=1c;7t0J4!6#Y|RBJhMf zYzwbwzWhrHK8lk0#rdb~RSOzxDi{)7*zcSV{}CX*P+fw~Lr4dS)u8i@5kpWQ-t`J8 zgg=5N!Z;nABS>llN2M_}sI9E0V9NS$i^s&I?4WYN)&>}ip4)Q9^DQ{yJXA%3++Vrd zPg1v^o|6?|;!3t+`*xlto>#7Vi_TXv3&Fs56W+6hjNR-)fM>z|Ao%Sf>J^cogO zhtZdz6I(!%z-dqmxn5zE3~u2q`@&oS>#pJ9f>3Qv_W3hC5P$j-w8@*x5X z0B-`a-XG9UIP^+^VinH|FDQbSCPh72p zckt9)DP5KDil4c=jITn`)+Dwy7>ZW_+!DJlP@gs$Vo*CDV1@hO*3f;U-{_{_X|L-f zep2hSI>F`s+odxv$sOu+k`#rg1qe!K@Koz`^s54y3A?X$V~5;EQIWL%%*rjJg@i?4 z2TWgedq)v)Y06sTZ$Qoat8EVzG$Eo{c$BsFWc{}HaZm?KM`cK@%GukPG>zQ@;0~AW zVbQesiYTUee&&lDsgO;C_!o?L{~^Pu>b2rwp=*ll9=_)8aLLts8N*+yCq}Mhq$JXC z+T9qt5$_6=NKW%*q{tcg+rRbQq7Bt~gmx+s*emK4eiR%2= z<9Gc>fyB21yfmVYZZE?(< zb&Y-_`b3I|)ua5EpGY3#k)!mPZ*pnlCb|jL)MK0O zE9fH@2w`_Mo;Hasn{7n64>kO1R7Tm=3}X_tH{R{ka2BSWHs7zG0(L8egTJd<(&J{zYWzc%=9^}P;p%UB&P1XYip#YY1%D+=A$4; z<(06Jo?+^`)JT{xH!i1jdUE8d;?AA(1FKC*2s19@4Vwe$i3vN#kg@;=BgLIOOL^UK z#7me#;0j)B>e%~$uUm9d4yXGZfpz*^Zg=U_lL}h9Fo&y)gESEGg8W9SrDkm#mVI6& zg-6T7j4J4d3K<_fCH(GbwaPHEm1Hf&ClWN7Rt#nZ@Mj{*imOOPTd?uY+W|XtqWT0} z4*@pFDB#0%s>g)W=Le*R#m6rZc6`jU`N=+na7zrhZroEdIN6yC9BQjU{0l=FL_a+!0IUCv>IX-sUe=TnH)mf+^WSt+YS0YoNYI@)MNjf9Q z?!foeN7DIfPTZH-ogsrlpzLd6Ffms z*b5fH9?SN(c?A{*cd~225*-HF^C$3$-fU>xtV`VJN&u635bApoGi|pQZiDgB9~S@f zZGR?8E}Fn#5OrP+NKLw^>Vc{KpFu#P)UEs$@CA9n2Y@&6H-0kj(^WU7`~9p(Tar4g z^XHZ-^y#}H&Hny%C4=9#Qz36e#ydL|_-XJ>a+CE`P+xug z3FX=W*B%@fE#=zYp(&ai^3Xp}?U!aCUVor-l=n~Q%=;x=zxf^+gqnoNGlKc&)<{#x zcFvaBRMj(z?`zaF$Pqt~rD(Dqs>9)$Y=mswh~8cU#0w!ae-+XXw;pPNW{wvfI+$( z=%bzRz`FBJdgD3P0*FfhZ`o!}3wU=xuMDnk#btn(3v`_qu6Hw~bh{)0bjBCgO;T3k z;xM@XKVzk;H*bdh5Bj?GCr{pPYX)T~K^9ZCf>66}aQilo)$LsJ!YLrUi z?M2a~{fuA&1!^-@*YJ5ASPN_Z0qN#qRbe%oj#Z|2T4y}lmzH)7x>G(s{ZQcP=%&{* zJd8w!zCBs-+wH{BpmMo5IQdx;K#md34xe?!VKdr_W?~vvr*&2jmtc`W!0Oc`zu(y) zvgq4%sxZ-;Q$l>hC*|67Ri%L>BY%fOa3B^OdA5`~5SKWgk z@bO=2+>zesP{aiDB{i?N&f6wjOnocZpO@4dMAiO(oC(~vDMDi4N};KwmkO~>6&Eg3;~^;&Eqigl;HPcym(u-tD`xz{d?n0x-CNJFsClg&YTgU zuk}xH648!CVO}tZ|2_f&(#`yT&XYb!MZzhhW-UhSDn@RKj%V3_p%M-Z_v(9+=hj@) zCM>r1dy^P<=CXmu(48RSiFJakX+^{bwmeWPU|n6lT-y|Yxh((7C94rjLt4ujss{sV_TKBQd^H6%tp?yXeRj=$Cbpu;95)qW0#=^nJ%mFO|d_Nz-#6zIw_zjQ4(`u`E z<3#8a+}Yk0O7uT>bq`cbkphRe7?}O8}&sk+LVxFCu+R`ek4w|MJz2fsLK7!%i zHtyj=v67UxiJMy*a|Re`Z{W}Zgi(bJ-zJFT%F0G1lZ$m5QB#9^FU}yS0%pig5HSx* zwysop=Fu=EiY8frSX2M(j@p?2!!U{QS09AgPnFdHszFyV%kPzub;=>R^n1$lx6& zsnO#@F@&!<9-pArexDV;kx6pAmj5B6PYdg(Uo*s-ML}HSEBNbo%U;b*k#ip9rn-zA z>Sp0Hu;ZI4utUgEQk@$-n5*u(OP6hJzB6cr2@r8sGK?nMy_8;S^K6eB-b;}17s6d4 Q{6<$!!?}DP`5$lme<3Df#sB~S delta 85 zcmZozz}3*eK0#WLnSp^p28dyRX`+s?Ff)T*xEC)_h?(~(1HUZaY2K%s4F!sMH$UZ- h7vf;zf62iAmH*{tMT2wv69f30U+Qmvsm~}r0RX(>6$k(T diff --git a/data/convert/31-2/db.py b/data/convert/31-2/db.py index b262dd3..94ab555 100755 --- a/data/convert/31-2/db.py +++ b/data/convert/31-2/db.py @@ -22,6 +22,14 @@ class Shield(db.Entity): stats = Required(int) +class Ranged(db.Entity): + name = Required(str) + description = Optional(str) + mechanism = Optional(str) + icon = Required(bytes) + stats = Required(int) + + if __name__ == "__main__": db.bind(provider="sqlite", filename="../../clean/31-2/data.sqlite3") db.generate_mapping(create_tables=True) diff --git a/data/convert/31-2/ranged.py b/data/convert/31-2/ranged.py new file mode 100755 index 0000000..d27112f --- /dev/null +++ b/data/convert/31-2/ranged.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# # -*- coding: utf-8 -*- + +import json +import re +import io +from db import * +from PIL import Image + +with open("../../extraction/raw-31-2/data.cdb.json") as f: + raw = json.load(f) +with open("../../clean/31-2/main.zh.mo.json") as f: + trans = json.load(f) +img = Image.open("../../extraction/raw-31-2/cardIcons.png") + +db.bind(provider="sqlite", filename="../../clean/31-2/data.sqlite3") +db.generate_mapping() + +lines = raw["sheets"][1]["lines"] + +with db_session: + for i in lines: + if i["group"] == 5: + i["name"] = trans[i["name"].strip()]["msgstr"][0] + if "ambiantDesc" in i: + i["ambiantDesc"] = trans[i["ambiantDesc"].strip()]["msgstr"][0] + else: + i["ambiantDesc"] = "" + if "gameplayDesc" in i: + i["gameplayDesc"] = trans[i["gameplayDesc"].strip()]["msgstr"][0] + if i["props"]: + + def replace_props(m): + prop_name = m.group(1) + if prop_name == "ShockAffectDuration": + prop_name = "duration" # 雷盾带电手动触发 + result = i["props"][prop_name] + if isinstance(result, list): + result = result[0] + if not isinstance(result, str): + result = str(result) + return result + + i["gameplayDesc"], _ = re.subn( + r"::[\+|\*]?(.*?)::", replace_props, i["gameplayDesc"] + ) + else: + i["gameplayDesc"] = "" + x = i["icon"]["x"] * 24 + y = i["icon"]["y"] * 24 + box = (x, y, x + 24, y + 24) + region = img.crop(box) + region_arr = io.BytesIO() + region.save(region_arr, format="PNG") + + stats_map = {"Brutality": 1, "Survival": 2, "Tactic": 4} + stats = 0 + for t in ["tier1", "tier2"]: + if t in i: + stats += stats_map[i[t]] + + Ranged( + name=i["name"], + description=i["ambiantDesc"], + mechanism=i["gameplayDesc"], + icon=region_arr.getbuffer().tobytes(), + stats=stats, + ) diff --git a/data/render/31-2/server.py b/data/render/31-2/server.py index 3744e6d..cf42bd7 100755 --- a/data/render/31-2/server.py +++ b/data/render/31-2/server.py @@ -15,7 +15,7 @@ db.generate_mapping() @route("/") @view("weapon") -def melee(name): +def weapon(name): with db_session: query = select(w for w in Melee if w.name == name) if query.count() > 0: