From bab78aa61a192b66ed653b5fcd16744eb24da184 Mon Sep 17 00:00:00 2001 From: Nyeogmi Date: Wed, 10 Apr 2024 12:34:19 -0700 Subject: [PATCH] Forego phone-sized floats for now --- inputs/avatar2_small.png | Bin 0 -> 48584 bytes src/decode_tile.rs | 7 +++++-- src/encode_tile.rs | 7 +++++-- src/main.rs | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 inputs/avatar2_small.png diff --git a/inputs/avatar2_small.png b/inputs/avatar2_small.png new file mode 100644 index 0000000000000000000000000000000000000000..f7168083d75187bdca8cec0eecdd6d0f4c4d2c85 GIT binary patch literal 48584 zcmeFYWl&sQ(>6M|yF&tly9^G&9fCs$4uiY9yL)hVNg%ifceg-rcPF@i4r^)XeO?dv#x{`|4h6X3Gj!l$S(7Bt!%N04UN@V#;q@zds*%*thQ<0q_U_z=G_d zs_vu=b_Low*qWGI83Uc%?TmrOZssNcfZJkGrbf*+_q6U>bA&D=gn>3H?6mBM$=}YX zWZ!Q#nzFrPmfo;N;C;A#5$u)JQw@jo~F zJT@XdH&1Pak@+t8GW~qj-Vg5}2@=G^?-*$LXnUPQ0&edRywy{f_IcHNxv7}EHi6{}<@O|~GqKJbzV-})+U?uOxXU7WB|yOXowIvz_S$rE z&GYk$WbKOi+wa@8ZeO40huc}1iwUi4-;C|ww>hsD*Yw-3Kj=&kUk}F1p6|7ue*H3h z8QXJyT{_MgdUbgmXS>8E$0=@kaxd*5-g%0?t$sJ8)fkzV)cV_Z7xVh*@X12#nhg7< z?R2OT$0MwK08e=y9K`%%ZvqEbRQ96HV22s>{Vo%4NyRYs$o@H@qZ{vNCg+)5%|6Rm zLE*`hVPm;r?TFXaa@iejl@JP#4f^Fs@0ahR{}~$&B*E*gHt0KkmQ~2c@cjo{L-Fog zQ{~IF^$wrsN8j&9J%}cz3)ly;$4@#2yXU^~>pV!$=l!EO9q*8xUz-6cy%lVM2x#=3 zUxTSbF;58%QT)TL7$)`ijifTmg$8+SUJEM{Y72N48 zXL7m>iW0+f(g{KAzrU!AH*cqFow_HM6efJ6t%r{&5a7_^_@!)VUH@w;J6RK!%hIx< zamvsaFt+@$vh8|xU_CpK9!-GXtp}fN+_X5YQo|(6`i2L0qjq}uTY1akq2+N?4vNol z&5=#(*+oc-qQ^|e+V8o>w&(XGc{lvOQre%ADt%6l*6uuKUl@*F@2>UAHScOIF3J;a z%Y7>eE9V}5Q3lv0=&<23=+ahg&Qbz%3oKn4Yse&F({yUzYlGBS+DLbq zpXyycKUI{{-@ew{e3pByvAKA4-eF2P?a*$1ZMJzepKV~T8;^LdnUroLsX6oRxKD0C zylfJxYH%<{70J4meqKyU3ZTThY(}C*VZvE^86BlouF!7wa_7@q3vXV`Rb0{2xo#Ut z_1>$|nEzJT7kzWtwhk^W612vyp_?^LtgJ}kIkWawo(ZYboR8m=uD7!cS;^M!r+ZwK zePY`K_^l1iZq=^E6IQ{O?LGv@pLWw5vz`u44tVUj3ZBWgb?E7>Wo)|5Bw3;%$Q;vq znFm+Tc|B&iP@X?}vbo+$fpCY_9b^F{Hy%7l zL779^)~oo>k93_JcsZVPjZNM^Bp$+M(aJs7+7Kr01xV^HtMO%Ft1pY5P;k$-*!+KG zS01A%Mc@7W)#cdr<9jj*vH6}xR#(z6fHs?FH>|eNRU!W+>kBoSY`<5SR5nWunR95G zgH$t32-EAXo{#TbJ3=00t$?Fse=M%7VRv*A!;iG0W(0q(Rp&VG30?Y>YcFT*(W}p^ z8BwHAC1)AIdGS;k=16=}NF*d=4@f{?$2Jb>NN#UAtg14_81&aOPo530eTC*6ByP zmb(g)v-k6No=R!4_}i@vq9PU(>)Ktrc)?}zTaB>G2H4B-V_PvuLGy6XCj-GSO$ zv}I`OChovJ)QLvTtU|q}CPbvEp4%$SGpt{$x2=fxBHZ4$huci9QQ-@kj~}UN^;nT1 zvNn5AvM)Eqm%YKniS`WyzNPP3^`6VT$5y&J8JOa3c82trIll0%Q8`efA>p@u@Hrxz zmon-8@>!C+KDAf+p+;u3YaKL3oe~bQZH#H%+0=$W(M-Sr=~1b}+-=^--B=ks)Jf$K z>YPf>MhUz_(T1d6^I>Cy(gc}qJhSHV+(sZLvdHZ~-Z!QxtWr=baFf4VMLdqn=8A(o z_~BerM*x?CfUuJOMYq!3al+o&;R%f}u|s%0rxRe0V`0?AwuxN* z)HfH&Mhu}0S>jD_Cr(mtFRDP%U?qVnflzA1?I29cNBV{Tl948!>t2rH@I}*8+V;1_ zDutS-L`SldT$F#z6N__NqnPgK7Ulaj4(ZLz)ZWy4I2t5nZvIhu@Yhwzh!@_PV#ik{ zr2G40gg$Q=mvCF?;!V7n^e^FVTq9yl+uaVGOe~+DfM3QQQXQ^6jvx_2xJQp&)*gf{ z{n55(;iPcfM}C&o_>o-3cTHZa>B3&6;;Qcl#&l~Rs^=33DVt507MOWZdS=A z83wIQ1oyE0zSro#`1!>*=iGFam5S*@CVD2)iY=^%Zhf`D*7dvBkO?OW7cCaxioI50 z8fP)*0emqfwG(s-XMZU-E$0g(r~QBt|M*3P41YL|vl@QYAxYRkh7sU_*=g(oJL*6+ zAJ?0fk;Z1Kl=Q1zAr7`^kRb#O?ZG50VP~7bwW}V$=z2ED(ZsY&gB_5feYTvOh9=b8 za!9Y=c~qL_*>$4F7}kfT9%3&QN4SpMiN1YMC_iBhi=g_O+6Y%R@Fnw?Oesf*)XR^y zUwl)0BuZ6)Ry1$?@3L!!rK3)*iPz=73%y}P^es4hJ zjC+$}sanU(+M$$&1kTQ67JsN`FX0Chq|1Bz@u(!th1u?Gtc@7W4R2h%wzaWn~03u+^P@_nVN3Dt<=3>=Wik z`~4&VgFwN($UuL78FzG91%}`|;T%i!FbNYTJ%Dvb-teLGfP_svgn7RN09X(XR>uTI ze+b+nj0(2Uur<3y@>#~b3+U~yXK@kFM@2H{#>&T7DUhX*VPhgGosg;%vlBo@aDz(u z#nog9)hhKJwaIIHQH+KUcC|d$7h*0KE972w-7sFnOh%bxTEsBniG~E5be+{5op~{D z&%RpLh}v+Ulr70*lFmO;1G;MxD2O(mHymomPcJOZiYZ1diJr7z@J<9N?den?-=L6< zCLyi!P$}%QPj#XZS1;VSjaVc`P{lGX)UD?Wh}B1~Z>X0kft3||6!8mQ{1Lq3t}{{D zr8l@a*RZD@^DHVb6rjaouFey7bZ8e^jIlCN)J1-LDU!XYSn{e{Hb%++Ct6J{)lPW8nr4 zp&Bb7n}|vKeO|+0q9H1zcS6SBPK9X{F)DCaRqR+8<;ONKERa&|jK4+FRNX$$^D0MB` zNRuqv%cnIK+2y6&n#wRuWEygoO|etZfCNpixsO_zD|$5>@|C<#E%ZLECzOF`SiBU6 z7@GY2SvoCt!7N+8Ch!jZ!lGPwE_G&N6sEk<=akaIZ!ZjAoZkQ`HQp*M zKOSF*?`D}`tHv7379AFm=Qrl?zB@ob9dGB#e37mWfTnYHF4N@7@Y7EMS6N9f?p%Tb zdIlhgHxIv;2$G*KAR(kS+XrW52YAw+Oe;pcD{yJi4^D85Wek-m7da_l7L}^5fWJ3P zK^GNTtTM1~&0oc(*Np#$LDot-YuX$8Lm1|F>6c!U#YUfUmv2JIaMm}ces@T-8Y*-* z(R>?IHKNqandqHF$GtWf>617T-{PqYHq64^_+Y7Y$*bIygXqesufTNi7wSq;Gb*sT z;Si|F46NajKY?qyLI7*wd1_+3k%_T&gYC}gkcU*OopV~rwAY=iM_dl}e9}nT z!F|PHUdN6_{XVv=ShgoZiH=GXDj+=-JjiT>H3voV1ECB&MNA{**)@JgR0pftqYibt zd8rFVP0@#t#vNd_t>ED?a$tEj}MB1dto};?QVN{k7mM8zPa<&W;?uKLl3y$d1LV3q9>* z5S^P1Jlr3w?>8sK(l5sPNj)j0A8IlPf*m#(zQqa|w;CNDq}IEj1YcU#ZWEW;+?xHK zo#0NbSAe$e!waITxEebR@sa2`_T8KV85v3~ib# zXsYT8U4eP@D%#N?&uz~2kRPJ=*&A=vzrr|6o&L_R&rhQo6y1SbiWrSVCx-r=SV|%= zLHzxFEf?{pIC22}Hy6QW91*HV(e&sGjk!;OK*=QlYh#G-yTlM;8Kr9WO=RQVbXTqd z)faS=x$nZ-sba`9QE;+fu0NG=T+s@!T_9eedvAia$|r($-0c`W1I*#rhL%|+x3TT3 zCTIB4L{^vm#HVIUaUcyf9bj^(zX}!&XRg9Gd5i3IU+w=KOVni91iTL?o_v=8cga&l zeT2Y(QH$C>{H-hjw5XbdsKWaeL}cSIP-HJ`^f8oLB7%w z<4R|_Xn6zZ-lHDC{-V!#i8G=g&iJo-D$Yh6FVkHTaeD|032QCOp-n>Iijkh5*s zYU2`3Z>lKWmwYgzC5R4gFS8+Di@5`756j=@%cF9w>;kbX^Jr}<+QGh{Z6 zIt{_O3WSg`*X)d8y`?GHdq>%BYo@DgMSC8_<8L0BX)c~ecX)2no^5A zz`FC`$Fr!R@Md(q7mJm1OIg5b>BQd4q5Vf+Lb_p;1n`GbjHSNU#-FT0^iOr4oJZ=R zz1*)V`6v>gB>Oa1gl4Dcgt%EZA>xy0+d$hR7D_E$?x*C{xqV5DFh5}Pm8wCYTMd2p z@(s4vuOsGZ*sA2okI_uR(LY~=@fm#GY!iB&#p%Y)z?nj3dVM{CMi;6`T1JP!Q#Ala zB9n$@(Z-$ua1ts6<52xnw6m~qiYv0I!FWT7{3>Q7z&?IA?0|6@0V(QhL1sGvb5t-+ zQ&0abLzzZHJz~kKNM(voO58*-?wwWzD;Wu>m|LSeeK{y2<2SzcJ+bn2Lup=5=#Kz| zgbk<2DSFAwX%Gz|G9#vZpAKwTW^Smv+w%i_`G5|kpaOBZz$t-rDWVIs$ww;wLfOnq zf9lqW7A^-{^4dV%I6IhF&O`;x_$4<8zO{yO$ji6@cMWvW5R=~DCQNoX=$iLJvu5vq z-b*|*5LB)}bFezequ%Px5g#|Qa*lE4AuemI__CZ*o z^AumFKujvDhpD;-TIq45ajejx^EECE24U9n<1k>4;x04WAb}!6!6=mK@6@)dP3IN@ zC%??E-YM9?tOiQi@k~TS2U1xuPf+EjqMKf|wj0a6oXm2<0}|dJcUfnGGtmR zP2dyD9gb`L28>H+r3DLpBT~M1fbwW6QgXHTiBw%o1c+JjN?ryjb3QO?iAVyq!g3bj zfd(DS7f!z(0vCnc0yWl;=|fwB3ZXR)iN} zx{ECO(Y(RSi$DRD4*wV;j{j@VC-`s(_B+&>HYm3~EHV?(WXf*+H1>Dn+Q|DFj`PDc zTHJc$#U$roQ_c9s&EE7A>Yk|gW2qQ`aD9za)C=f&JEUEbuXg^|xRkb=?;;0{*aYz; z{DSQe!Lk9x#`IpNJ6O@NJD>COgtCR;Y$-D&wlG=rgkKE(0IPfDi`062rr!D}CM#|3 zBaQ+u7iOcr=6X%BPZ!>UOv=YIqj8V6TkoGmhA5>lb=cN+cNvBg9D>VGp+gP+@4Om}oKYQyD@-1j$|C<%_;>lv{u@^W?JGe%c*2_5I*(9o^U; zRM6=Tvx25W+y;cyBt)Cjep$!lwJ8NkP$VNk63873@Wkh3Z6{0DN<^DmBJYQ{;bysR&2&&DO;<`JVF3KF*BSs3T+Tv=)xxgSo>K zTWrV@ERwPi-22es3jE?^ZeTGU5vz zzolT6WsOf!P+}JQh`F3~VbBkux74k05%&RAjs!-ZUJ*sN>*I{%< zT?HtJGqQn*E5sq)q#C%=(jr#WjKfKDAIG^GpF{|7hN=D4{nDquwLx^peih?2^xj%n z5ik#+jF@nlQ9HLNPhSBJeZ}gW6fwC5waL1FC=E;(PwekTp0fbonoJ>l>aNquW*Q(u zW67BB)vTy42WcpaLTN=y+>>b@LxRs0147ylyBQzJ-r0;aDPoaC@-4%h8>;HZ$cFjp zV^r1QUzgsh$9Zt#DfW-Er(F&|$v%HHV$EO}u0R>agBq5h?EPuJ)I>cvPY?(bElCf} z+1BE_j<^@RN<$}aV&iu*Xl8)&*`1VMGy)ZeipunXjgbi1q2(wpmrNElZ>-G-upc2g z$k%O&q^_kf;WDa2N=dYej<|moCJ$RO;Zpf2{|SIsqB)p>^khdz;LttNF$LuG09D!$ z9~by2{g&})OiR^%ng9l?6W(rte||7Tb2#w^kKuC98%6BaGL24*L208Mabpy!m%V5x zEzMIdf0`Gdk*RZ$1umRp8m>rdttG44KT0BPQSo%3=N=S#ModUdcpZ( zr7{CI``Ma>m!;J1_Y#A}xQN8><)Lh)=~}VdAva#G<-_+%c$F}Uk7{8&-D9l!XeD&% zT?NJYYZzF@7i?Oh@OaZ=U(C)_Ea0I&&dZR0E8TXzw@%dfC8WB1BeBlzTINA8xeyQ) ztr3g?$}POEPPy=|uo7?eW$bxmgjo&Be!%4&jc)f@SO+X)K%8lm8^u#01Ut6?pwX$}9 z0D1}DMIU?~U>!M#eulICnywss(c(YaXm)-W-R9azc|9_Oy%uJRi2$#Og;+Ug!ol=Ho1^xS<9s2;JLOF%k#FZ7H}9icsZCO;8KxLMS)a`@l1E z+p#IGQnE-^@3IHR1i4T5SpBZ)2~J$S&WEQ=Ni4oA;@id6__$lCsr1!eDCa^5U(`IG zG33pp;;@9}yLYB>1RMpb=1<0->X`L^M3hYUlv4dHo-u4T@nA@4-OI9yUF;o=2@M?h zHrXxO>Ktp}_7nVQ#k;#-@Grt9gF=J@kvoF=LES4?;r5_E6w z+(dB-z{K@~(DHgq$T6d3rL*t#F)}T&8eEQq!&&dMIucCZw#b+fE=CE$Cib0g^Cy%= zZT`heA$T~$){VWJ3}K$fob4&S4ALecmoJN>+!JuOc{8{USqF%xA7YM3J#3DBS`_dU zJqfmq?yf=(di?OPe8BOz482mXQZ&6}?^+BC$0T06Pn`XxsL%t=kFVdcX@?WP4 z)Z14l4G$l)kBc8HTSKhFlc~;0CcI%{jPR=TKi0U zci^~5C(@r+u_O#$77fAglF5FgudvBN1BAT3Iq>?=R3t3Mnoiv}g2F_`pjLl$X=ERN z!rDDk_Ce<*THL;bc&N$1lZ5sB4i9VBXe>yqjuO>Vq9|M2+0gYJPHh(#KW7B>GDe%i zHFfmnynoz^7(#k3c8QY#cU;HM2WXt2q!VI2s@!mAeE(F#5AD@f0WSCYpttm_hGIWp zwe<{+&lVh6rO%c@EoiRZ9dXr>1yIjk_EcJ$_&V@F%Ycc$n%ZC zrFLuFpv!YWAUq3SLj|5J1ugWRtsKAMqQaB4E?+rgLDSaTt;HATz%JdhJGW9uU4!dz zYIW#$V);GdIG=mrIcr~<$z70c5WEAu+^gOJ1%G9aW*L8%5sEk--n}g+DRp82Q|y)U2~O>KLw6qWI0lAV4W<(wdDxr%ig7DwnRmkSgG!@{&VZ3G zd~(3;4iW*%Cm~er4aXw%LSh@pXtr*$h2Jze`A;WT{KKm%4%EsGCmI@~9hDO=g082+ zX3dZvXNiZb=P!10PNxL3TPC47TGOPGY;JJ~OSWjkAmLeazZ?tJ1{mle$FmHPWa!g} z3Hfv{MOgwWp|=*=`}+m6>BZJeJT>T1FO&r9ZNTk^Hp8rPKlVQLE z4*5_zU+atbIh^n)l*KZHAk>x%#XFG)ryqVF8gg2Abia>lo#IQj<`GBq3mwaXOCpq{F$UNpeC<4@*HiKIj$Ms&XvdHGUO{z)Jt zIS%wCSey&KjP(!C59km06@ zY)!z-m;NC)Rm9AD%TZ8473IoJosPF3vx2)K95fE+=FU07*g)Z`TYZ=}w~R-}(29~* zKOEZJsq9JI@vFd^8|Q->SwEh>`qSWyT+YdMB~h+QERl>aQ+{Y-tE7Z~)(zt$J|d)N zsJ`p|a|nZ2JF&uIhvxeb2~J4tulyS>!-Bs$`>(L*V?SJy1RVI^BAQfj^HJ?-wWQRNlrxZpW5QyILxH^x(a7}2UYlJRssrS^qbikA40Hm8L{Vt#<%V~qiGLsUQ|l3HSk zn2(Sc|JzMk82Fawo5{ow_fkn$fgy3~wYEgP*LE|`Ri~t3tgKTn(`LEYy{yhtEgQvHK5R|sb??*Mla!v&BKZ2Eha!Du@ z(3oE}i5-M4GfFbMvu+yFkxo$SliEp^Xq?c7vD&*KF^(?}?>%7<7DfmVuZc9dCwt$W zAaU+u#a1l3_+nHNp)LB7>RH9Nolq|(lzoJgfD&XLFZ~ptz(@9jVsA;*EedZTD6p>l zB#-O>wRYsSgHF}Pugn^K`TdUvt^s-BD5WJF zGmb^s&JdU$nHz+R4@J~$ZG(FSd^|`u(%8nDb#XjszIbU31KmUuG5q){OhHC3q=S~Nh7~DLm|H% z1LB~OF{Qd^i@HBP-q!fd0TeC6p-!#oWE}bexw~3k;%H%sY3ErGn<;pRAAN{eIsvS` z??VZ1?oTzW#w8V?3dy>W>*!)@NIwy$7&H{NpBJQ4^X|BPVZr|4cTrJxG8K! zYO5H9RQuPCJMnI8eCw9pz)|2*&9y=6O3#J)7ox?|Oa%?JZUaR1rU7X-r^PBmzW8{2 zl)BQN9*boB-#Kv2UV?ewtWcw@gBvB>vyKw3OhIvW5T- zHydkDYaLvn+`C^ko_8)N3T7OvHe!~=x%t-x%b0nFX~F|N!>zw=zlF&l@8#aOYU)TW zs2-~c!7S|Qd{S*~pI<~`hr26JrqpuXtE3>2FL_{0E>F(m*%WMTLzvC(xh}?(_DPoF zNnuKzHD4iU3K$YrNTyrB<6Synyje&wK_$Pd3#Am56Mda$drV`O+3xWZH*lH!>M;LE z?|061e}?S_A{&>X76DP={&uB1D`4A~QFayj7P`{kH-h{qPmF{ov8+g#?G9<(&V>Ut zLC2ap<}hYGw@^F7r^DeB+M-?gts1xhH4~AiRp!r$S^qWebT^T5l4GgT@!joic2AU8 z*ZU-r!qIge=588KME&Y3NzV4H5;H0B&0ny5-RJB}zkX$N2QV=zRFWN4E2Q_c9y>Md zHoWiz<9Xr|s$w1=4d|^Oan+*q=W*I^_(@R1#5K&32*lF1&8lFQjz0c=)E_Ua-H^uW zD9;TH;nbCMTh=7u7G=59L7lV?`rXXZn9ekJmD-NGBU{6 zTUVDW#Le##3IXh55Mqz>dVRyyMsU&nLc~2q%$@9Gxmxj`$6Z-f71CEcYwVWbD9L8E zm)NwBFK&MJhe9_%^_;Gw_4OCM{Emd)5s}SB)TPNP(aOT9;V8S|S}$p|K6DwJujsYn zQSt^FcYM<%WO0p<)vjW-gtn}>;XGrIrlXE*!-al+!8yubOZOx2w11cVE$99r>tQ?~ z)S1jL5SopOkd@5+1$!salu&y)P%J!_-^fqmLE7{eBt+|P@yrENL`go*lI!UPgI-&# z>ac6|!5aEdW2eqi^+MDaEkw5Nd)O_S62;A5w2Wl5dl13@ zVR_sk1%zJwVS*^V>TxJALSOxPvL}0<8@HqMAxui73vv!8My?yy!ziei_iJU74=K|X z>%&ZP!V(A502pgD}=7=P(|@2$=g|BBv+z@SEIUjA-_s7;fXuMb%=3crnFt^!ddDCAt9d`f7( z6AVDi+M(t^V?az_jIg-fML4WPUY&aigwYoFx>&)~)^E+EaxQ~MX*d&HTdGkrO2U)f zYQHflD&d}VWlKrk?hACnx~Q+&U_WviKpY|<4cFyhQbBUe# zt3h-M03xs_-X4mV8`L^XR?YNFf-6Juipb9ozq9hZa08@TciP%8=G8Mtp*4~9ViGwr zfQgYPhP|E=63SezCEAp&Pt=hNgS}bDbQPn*d3~ak2V$Du`&Qb34Ek=@9$f4mnbGS# z;r^T@@}q!gQs@Ye;Sy~tOsM_?VvZp#f~!%c*81)3LHXBIRq+g>Jzf=^nssr*UWMI^*Bb?fqc|9nul!NUpy@ouVb|@Zh9j(@QfQycmQN@?2@4MmLy>H6^_vFoL? zxTzqk!HQ!uUvdD8){4hOz-Zm^M&n>$^uXx99YttE4NB&PJ83^`*phYL{_2 z(O-XY6Y(uKtSFwxx1U)r-N7P}dUhA(K!r~Y`J9m}KfA^XzCiUtzGzaj&=VT)fEjIKt>$FYrPcM1ILW$!&M&>O-HmutP)AY&AILcjbL5 zhW_}=Wu^ObpNm7IgGq}*?8M`dF9iLeD?d}`?IUb*NWs)zUNg96?#BF_Y@p#W?zAzk ze(D7~vTQO@;(SW#r~Af{+kCpX_=$>mDw#2&LvHJcStR;Y3*$QveYBVxBp{#4%_3BN z3a?5QN^Vxe(j+IFD^_9S+L(kC={8^NxQNI>sO_@>l|mheA^)0xfb3bKuIcd}HHf%} zhkij#e#QC`p=tGqV9caG0{pFH9wG)OmJFxE`{xH2QUeFKxcmgaEqcLkYV#6!xRNY_QGv@={qGoHGQ~i)WsR!i44fJ~pPaQ5mxMna0g=;*q zbQVXl-yRtsdk9aS&G4S&9T=T$UYBhrWJF{yRwa#O-KXZy-s$yasYFW;l9S%Y#3rVHz?Xk6yP< zQ1*`Z>BQ7GY+2Ylu}zI)BHRn!i>u-y$5m?7+L}W29IRLZC*e)W?;}hd_Dnns=c85e zauXP#;eE<*BkxCtLuB~G-+fYz{vDh-g1E;xZc)^)dArSwj8nIR{L37b)L)z;J^-G8 z!zvdN38cxPEL&(Uc)AhG{esUcOkg8h17jvPYrD6F8~^~Hpqm}o(9+lmXkct=Zo^M@*4jY^G&kZW z`^+K7B4;ORY-TRy;b5%dA+KuaVQI)?L?$SJ$mhoU24HRM1O~cUTiH1By780!h0FW4 z|3}PB2K-CK$&#N;T}}}wYU^MOWM^V$Vqp|_Gk0Mn6F>y=IT)GnDvL?{9pdeXpUlk3 z$&Qzq+11sR$(4=C*1?n+#KXhG%)-jd%F6hr!RY92;{Rk|AKL$j{V(M= zEjc+}F-RU z@Nk2b4?C9;2O}#7iyOw*S{o+ zR$wQSH-on^U~Xe%>+1L~WmR))V-+XxA3i}`ZxL{Daj+oa{Wt5&Dg>5trq{F zf>@Z?SpRDIlNjE&aNei||EbhBfWPE#(eR2o7=xW`9aL>?t@z3QxB&cP`Ojv#w*h4Y zb^?omos8c=Sy$rbEi zENuG5;~Q6R1^O3PK$^d&iuOPCUCoUDc<{xc!| zBbj{6|BrP4P2t~W&^KECCVQKi-zIwIf6nxO=j+d$`oH-4dzt+&_V5P%-%kEV{Qj4& z|I+n8V&H$I{NL*OFJ1p52L4CN|E;e7-{?a8*SVsx&D$S5*S9l41#3a%x3frCgO8G8 zfY(1Klx);qmv0*cJ1GrE0Dy`7&j-S-NYLd?2qb)7? zzNVkYS{RuR7ugRb?_Zd)ldDklQD7pINfk=K60Vp5vY;NEJ2GwBZ!>FevjuP3Z#hP4 zEb)nEXQOW)+FZ|2ExnH(+v{WQUcUUYPA3ck;LuEq6$C*7NYSUCXEh_MfQ6m-5dD7G z>Xs{e(CVF<4;?{v9ToNP(6EX%x3(hF-==)(rj21o~- z`Hf}D&2sh`%q)xV38S@Het)>z%SWGHROsZLZ^V~ns>-uO7 zI7};WnWn(T#}~Br_NX$mdBqw9X_bh6kq}*DnTT|GoD}Uc5{7;hW%zRjb{yf6z>aO{ z2LxP0hJJh&Sa9@f)oZ&*T=6NVx*-N)xeF3)oS7xYG|4+s7F;921gR(-d`p0TeYYgw zXf@FOgAOr+G9e8HO>hDxEwl_g-a%rdoiKWn-1XjyStHlIG6Vy@^3IwUGaL=;De?BPy@7G*+~DoJAl9)9_Gdg?}}!;j(4ym(-EZ->a*t`g30I@$Tmu z+a+rk?#mo7*aur zW?P&yH=N3?=%peX$`LM+(@V0H(7X#R&(kFGW!f@`*fg{({pdl6I5Mtlg`J29)7Ibj z+g#{{q!^})$g%?Jom$@~*hJOi8lnjA`>0`uY)A4mDkGKPoRK`m9*?r{H-vgY>Qn%&Y;uKj6;y4hjpP~jDz z?{TmBuw*i&`KS;uxA-14e9bAc4GFI)8eqA+NkBgN!X+$c-qUk#ZtU-9m{ zFdg2fDqK=Z`0y#gFxv8!hv<_&mnUmzS_aLMx+Uvr_WLgML;rv|LTD$=_sO^^X6%~1 z_96-RQ7{!Kyw{ewLS&Cq5?6jGckp|hi};aKAwc+tG8t+AKozE0jV=2iYyrlmtNNDq zaU$C+ z)+M?`&zbH}hZ6`eI=s`Nd_v+2`dv<7EKNWDEA{C*K~;ag_h5>EGW-UaNP=bnAQ8Fr z`>(1+Ru=aCnV3*S+?Eq)DEK4J#u*Eh*j9WfB`UEJ+AJ4SBv17mpF-#@&RHiEy0|L{ z=r*(5N2L7dR`G5~5pcypAVyx{N052<*zM}pX3{q)0!RdVZBv&e{My*1^V@?{$bMDbj0V7meLWiAnW$?L$9Q3)6CsQM`PRUOWFaZvj{ySv zJpqW%#pKVV=QvPI(5-y*)oSQLF9YU*zVt88g;sB#<03*Cvy!S)@XAe@i>%9|7-AJb z3x`M)4EHa>R!GREx2R+m_ZN`}(Yc=2ODlY3#)H@#kExO z@6>D*YJ*xR=W@RuW9toc;*kB4_;@{j1Dnb&I>^)RGqi?y!g&m53JLo4S605ISk z`uHkLG9=n!up@rHRrM9u&!iUAk7kBm^;^otSMlR6I_mM$;=@AH(?5YxLeQxDh&$f^ zw1H${j(stf(PLl1Yjn`{7c^x~ZT=A$%P0^<* z`S+U1B{Ydwsi6-CjoAd&7tvV~Svs}oAO<5FCV?bELkZq7w0fm)qL(xjQi(q-Wu!AX zI$jo*0dpd0a3YNI!&pY|MuAeG?@k=aKglgg4??Y;Li)-`kttRrWZ(5FIwplD#ubJD zF$=4yu%KxO$Pyj=rhH$CCnqIlBq6&u-h*Lax6o>Y7goW2m3hLqOd)U;D`MnPt@une z1ml^4u?Z07i+Qu^RHvM2%e6T}L(+OKFUVwmouQUfP+E{h+NfW;gISg&f7>WQ7O^b0 zVc;M-rPtKe^mm_#|K7p8_e$n(bx|J0QSyh}P^xk1j2F7H+>(NMfz^VBz}njCwNKHk z7+db{I@F`0E4ul%Q^Z)`4+`#<+*>|H23$}7B{5;Y7lL|ediI`a)fUobuGOc zS2nYd&T87LrQdOxvnLBn^-C1dLp#a6vL0U1_+a6&(-f5| z)S7v2iR(49w3&KdRvz(ba6xlZRsD!TAbe77M(g*WLdaNRe)(gU4?ho`nRME^iT1|h zi_^WB3|>!HR72>FGglC^171YtJbAbapduO>a=~7{dmsjX^Ys!_e#2_o9zMG$zIQ+cM2_IGe65=*V zSzdWWiVTzWbMmC2+4~taW0r76MP*c09!oslv{gF^SY%h$#oKGEb1sG`{Z++bA#CaL zqpBsn*W=@aqHUeV(!7{k0<>ilPh${vvNq=kza$zfKgUqEj_1(c@9i4W53bgRlDr=) zX7qi0;vYPc!w)nH?T+<LN~{p;2Kz6$+KQcQf!3$69){t4W~qC}EH((m{yRw_^+ zV=Sy9gN(1R=&)FA#YRKtikC;<=a45CoF_ zd*0>b(c|pjy$3;riX_9~5QQCiuFuVJ{k@Cq+_sl&6u5j3;5X42hroMUg%W}!NxcT* z@Pjs%ICc@NM{uOt^zo5L9PUzRO%S+h32D*B5Gd)jiMv8Qmc*pA+HH!tysI39VBN0s z_N@yTqiMA^5kgWb4lyx4%k<1RgM))xoXAi80MJ9bVvBU?6Dyk4wGA#@zQokzB=39R z0ViO%nxLOLWB^*ba4&_sMN$X|pj~UQQLpmmTjzN5t+#13V=Ts37=kouBZNe!ZQ{6v zwU%tY1SUj=8OI@{3Fj|d<>J+w9NM>?|LX63f^vBPgd<)?hX*?5J=_t5vLPafVIaQ?gVAc#st*%CtoyU6D&t~wAQ)>z)Xv`i*?mQyE= zW3hbasi)Yi*Qqrcw9*dUw9SVed)$S2e{YQuSmn^|7PsK49apnkClGl(+Tz$g>A4Xp zMgLN`bg8kP(stE>1uK2B6LgcFa%c$yMI6U&T~$EZYO%1iNTRi5hnenkPW@lyy!^p{}zWi~E=gK9Q?tFMfqP1pe zWs_IVyvgOO7g<`|B&Caz0Z9_GvT~VLYmK;C&r+`~ zVNA+Ed74sjkmdC|R2u=^?)uMc^8o^F9IuZ6lUmj{)>&LxX8)f36mkWG5`7LmHNw%G zcot52O4Hx|&AQw8*WY}d%~~6&B(bj1Y%I}iuF`BSU~P&J3MsQ>vK52~J-MWM^cX>= zh)LSS@j9z(7ihJsj87c#hb{jn&k7jpB)j@JMrzfNjHw! zxow7gF8>2Q0Lhk%#~XOu##zf+waV42mw55D*I8IzBW^e8BpcLf3$&X{Xx&DNEK=oA zDua|!Uwx#nJ6ivz%SBRU38Nv>q)M|n&+S|5WOGv#3MIm@2uQSs&CN?R8%r3Y$z&pi z1}kXo(o>ITa3YRV*{rrMr6}14y4E;}Szs~3fk($xSno+N2&oX-v3D4+TpHmSR4=T0 zEkk%9EPP}Q!-#I&p;51M`RWa-)n#OmXRtKHV7bDD%P*l#i$;Bs>({TcxVXf&*;%5D z?5nQE8kAH&1s))Ec~J@oMZnm|h>xeZ4g(lQ{7Cw zg6Oe_2#_j5iI8k2%h>2RVIVQ0=g4sjsQWfmaRXmPy7Kck_jI zyoe*3dJ?qT7%4oth4HGV>Emjn4Plg_THT;jP`q>TGRAbt=Y|*?oh6RjY*d#JqJTv6 z+UxJKva-zXUAq8SU*F*6S6*lP_H7(GxbG*P9)d7*wX89gFv@s$mE#0buXPLQwu(Ta zQ-LuF&31z~-g=AI&z|Sj+!boIdFr(}(zJyIg0O@N^C%f?DQZ$s$mS@ODrBQ98?`mM zoetf&i}n%V2j8ARsR$`Ug0SEh-j`ZF^(ZVx1w^9Bu|p40E)KavW?ZEqyjVn^*AOmr z8)t>nMmy6+PwqCx-8dZh3zTx|pt24FCEg7vycJA1!AB}bpMxL@6gqWfWEh5&3q|hC z-(hJrp;mv7Fw8SNI7($`oLjdqqEwN5euOyQM5j%zT)D!bL;I=MJN)q<|69@&{`qhJ z)Bob;_rw2yF+S1P2K>%DY8$&{N)g~Z8KRHcd&X8Jx9|=)LaQfH zyPqe~()RPbz=>f}`S35C&%qc_f$a-vVHmQww8X+&Rgmgg2( zt}W2RC>D(n3XEl9be!$eyBH`9A*3RX8${VWGm|p}p>$=KR2XeAMmsPoB%w6UrDJX1 zh1An1OzIcGuU(+LM-l4}kL}}wKq-vZ5uE82!azB&>C#&?n{|whP(hX?)d&pPOqOlg-3*m0 zjBiY_yuQr(#wy*o#b9xe>4|Mjj?cJF6cU|ukh)7$C{rp8_z*4--jytnq}C$65tDxZ zg6*dhYe0oAH7<;}i6vykaUAp2uYH?8`lCN%W25G^ z2>k;+8UMczKo8d&;|UMn1K>;>nr6Gsv!}nuUw`ehtgYSj2s~h*JjRJ*4{_}9DUKYv zA8j1vxpVt=D#HV$i6E3MD)KCgUSh6!S$_egy(+Q;dy~LBQY9i%`B(1}|o6)3EB;4e*`$s`C=pGYz$bvQ>UT8$33 zZeC$@#HFmIl^ZnIHz~>t1Hk~h#vUNEe>?L-3F)g%qI!;%r8=iizsR%Cp60*#%%=&% zUf5sf$tR!Uv!DHstSqmQq%l#HB@9BR&-{>m1kMs>y#Ae9l#nFaQJC#cgYP~2b-wxC zFS5RIi=vS1ncmCLzLR|Vqo1KNI6`1DT${hi=wOB8hY$C?b3JCUXDt`f87ia@D5aR3 znBnmce}aYi+nhQ3BF#<%Y?C++$!1D!1C1do3}ZuMj1G^Xgd#~(!a$LvU9?FtCS_`R zJKJY>k;z6VC9tL!$*gnd2=}v{k<=Mel@QLduB|u4x^?J5UMa0JbV^AYCnzCt(m8!s zv9J~^Br5RMbz}R4lJp%^##lDiH^3@}2gWJpOI)e1A*CTNv+NtWj}ya>LpOsOoTs&a zjLdQd6LmOw@+cqw_=m~moj2ghl{-B7&F}DqFMgBNJB!4=K}JZ+*x0Z?0QQGE1c5QO z|KbHbkDH)guk+Vm`wu+z^jGM_F*^=C!293#QBKY5WbDu}Of%;8{5)YkgkGl-{@-osDx1|!k~Cp_Vv24msID%NC1hguC=XA4ln3lV ztTjYo$lBlni!vfRSmf7#{nr^A8zoIOw{NfV^wTf$)vtVu<)sCV9N$Z$(dFF>*HI|S zv4Lci&(rH_79_a6k9o|9;}wu(r0!bI-lN zpZv*Zi6Y7G{?4!QE5Gs?zWUX_;eY(S{~c{KM~>{JSj=IJ{-F*+Absg$gbUB>Yim6J z!nf(h3IF(4{yPrtKg!5RmhM`Hwe?Nb*VhSxfCGE?I{MRF!<~2TuBHuN7I_ZF@#85( zVZ`{v6qhca=jJOof)8;G}x>yvA#Y>7=~1aD;zp- z94VEff4v*XTIas)3qig9Lt!AetN8?nCGb6t+Bg~)A&`ON4U879N-zMvAp!`4z`tH+ zFmeM}iVZfa`3rOL*iv|YDWHOP* zZ$Atb?CD)01@(HBGw0r5YUThBJv7VA^eo+OOt+JAr+S-I8z!blD2HW)w@f41a>Dc~ z3FFM4<}eCrc&Bh#cEyc2g{rnVY*o9Ji24B2+{q1B^9jtv$VJFj%Zk2vk56Wf>@q zu(3JE=H@ylkKNBuW!O8EMc-7?GpkD31O6WUTemsR@#A|C0{q51onLE%@?{=?3MD!< zjuJK&rL4D~yOcoB@9%pO`=Hu7#C|^cza3+Ge3U1j{2rhC+?RRlt;-Ay6!@S1mw&;L!v`qjbF^9=Zrr$q zl#YSS=L z<$ImF+pMJP^E1}*0?xkHqoxJMO0Ncren~BWoA2Gkn3N<*xO(j@*23N_|2SAX$u_}lNEW_Ym3Z~nLckiY+#Pcb<;)+c%D^*X0d zzll@*sNu&I7T6tb-=1ei}rkVZ1sl; z=|rL)qi^Z4Zd(+t=T=ZkFg3H2efth`>C#&yaT`M6YJ00uRw0!_r-|#d)hU=5tvgIi z?BUq4psn%!fF9`^-{rhj=7Tg&Wb*&k9WL8P@~+PJAXO<+t(^f(Nv|XHEOXB7 zllpcv*Bjs>T^PEu(;AHmT+~R7q22C)46xSFY}d#h*iHE06oDyFo{X5$g5|76epqoa zzQURR^E`j@h5wh-7-nZC_?_SRb?&|A1cO5ZKj0GD*xV#e(tg!Z9w`5)mM}}VtEtth zXk!=~86{uHI(xKC$q>0sNqy+^Dzf=y=%&(h9C?a7vOdOel$ol2uqrzRI62#3}|)g zEY-+7VOuD?x}n1Ar|KgWOl3!mih;eAM{ z{u7JX{QM%u<0dI#XlUq1?F$fOBE|5~kRwi%K&KAXhf+C^=dIxw9C4BupSK0d;Ctk7 zJ#f9+)DLeE2;UPYk;d7gdmKTUXvzb_R4S7!E#5|X_0LJeAxWAbg>xfY-Jv`%$RqFj zFk@qr{pJiX2rCJcYYDT;^}GvT@(IXLfpj?W`e*+0O$9& z`mTl)@2GN^rH6YY!V1>g8y?RHuH8J3+%?9~Z@iDf_#oYCmRluZRU7~SAOJ~3K~#2~ z?|%Db-gxN@XXY+r3X<~v34ZbM5A!P@`xs-xLx1Py1HAtF8I%msNy_Z(7}L{JKVENO z--mWrixXD-K+j#E1UfN&myj?Ha0ySNOW|6tm2#jjpA&Qww-NPvm2TYO(&ei(nlIudeU4$KBmCxiu5Oc@Twh9D>m) zsSaq=Hz@3!B^b+dZ*8277cTJ6zV>HSS6j@FtS~TM;mD(>c=*xx^Rc7%F(ei0KO^eI zam>=2e>RYwXTt&XAL8V&apx=!BD&os!o+Ob zxu2Qo-2^i9em?)YjC1h_&0UhQb#$?ICJhfG2m*YEvR4WH3;=;^_K-f$JA1pU6ngD! zz5aD6jE{20DW&2rf&uFzMM`Rc)DWi~x=BD|X^}^Few<`tnB3Fz{J|gnKPV~Cql&@& z0Kf66PjlpBPhd;KL>4-UV?5R0f$Zz`1{W{h@Op*dg|v&czGN-MNIdF+w;nX02;04i#7- zvBHpAxV^MMqt#}1W)D-NQv^XCYc0icnd8SEAeYU$UOy>_!iYw@iAgp2e1y@WAE_i; zBV(|FF!YWcZO|UYTjNO`-_j+e2cOc*zuqZidxIdn70lv*UN2(y23tufu*OwX(nw?= zkwTJ@5i6^=7zu~@jm^i%eSHU==~cclP-MAXMV7J@C(3-{!yn;hahSY-jn)R`ObIFe zZbD~uZG)B7O(#HMIDGivkL(l*1ij7|ao3;&&klMgto7diBn6T7@*jQAn-HK=O*d}y zy=Twx(rcgR-AnIMuWgbf9h8vXCZ+o2lh(1{3`HOVRFJ{gE~^_$w7M3Prc8`YQ!ET} z?C3*`j!aixAkA2x1S|NRBvgutyKSv>uija`B)uK=tWU4#D)H4Gt z{3;BVimWFsL?{_37l;Z4v=DTYbuu=l7-asly#e)lgJ!EkqEiOSIVzRPkA48QfD(NM z3omk539T?Co4WqGz}u;9uMCnsS8U3KOYiXV>(BGti(hAb;||seq{xv8@?VUG39MK(4UIQ!OH z?A~<`AARCu9Nc@r0kEEs2Yi9OUIMFA zC;TYs+P7cZXU7x&!zU$B0`?YTQ7T?0n5ZQC?cQyYeUX9tY9u z^}|b}-fbfU?PiP9FFnIkPk)v3?>>(pzyvv>Y!NeH35zAhYNM38c|YOHpiPmyDpMTX z&SHL%_{vRe93!P72m-=Po;2;UzIlt&uUzA`bEmPogB619+Yj)IpZcfVbL=>!;s8P5 z2pE(4@pTT_`QA#YKFV?{#8)m#^D+skXwo5XOPqp4n4aWT5(!KNOxl3?x#! zNg_RB2`_s~0mb|vvxRY%I}rmjJDK~GBy3ss6hbP)gM>E~bsIw>xFZaSZgSz>i@Y0` z7(RBAFp}Ol`vXUSrKJ_LNr+R!J@*`;SSe5vACvRo6=y#8$#<=>} z-;Rald7k?I-|(%cKF`|PEl2kT5;0=wjtWGnhz=FY!%a#Xc`DT$agxv!F;;{Obu7)n zLDmn>qA%Tou6E&BXoAcz=q_oxiB6j2vg3T{gCFC8Qy=E={=I}@(0|R=*Zk7YBeK?M z{ciM~+f)^}E+4cD-QLIHH3EF^fW`U&Nd0QU&lWSDh19;`R4Ii{wPQqsttpwVZCs;d z$Y_*fGCxEv4cSrJNjz0zp{UqrCAnPIiBAp9wT(3{H0Bs>#5}P79=`s!FOahl_Z~Y) zl=;B}5O))9%`Lb{Y&Fxnpm8}FfY8I&&YIxZpADN6bS=1ry6>qSaR z6q2mUb71!&&dMRmN4AqM6(|Ov5=$nGK)cI!_uG^+S9&?sDh$k{jt41U&NCLqFCq$pGmJV%^X2wx2T%c#6~dqQJF-UAXiX|L#Bh zK9{bX!^t-1s=9 zgr8K_AE`kQY)vnfxS0r8OJTT#8XVx{{5aFE3!({uo`_j*)JRN>FqX`E!t$$&Y@Z%Q zb}iGxqsUs!vroUu#`+4UP968R+|6KYwOVMSx##3wCdS5o%+@gNha3ra1C)||&L8U= zAUy(3lay;Wukx2){8KJpecfr#R&xK?1MDg7q>?RAkk0XgQB>m=<@Jb+2zh5pa&;_$ zrr@4$k29SubE~yRJFw_nhm}f#X$B0fPtcB=tajhSkRn7tt^OW~9%I|Y!yMQ<&i2_| zSCf= zR`MU#1@r?4Ad{6opP2rj$lla1DIiI<#=Ks-dYM1{^FQR$<<}sH7|T?+Z}2!r2X`^J ztHA0B%kojhU=nitg)*6oaIv<`_A5hFKVD;bSn;{{*ZIS%`x#$InHm_PBf4yi8s03% z)YF*J+acTKL6VIo8{K7!r3rrd)4#<>-v53oqa!^BrZZ|7)8lebp+w0oJGKzJJTO#Xa465{a2aD#e(T}iMT{4@lI^k(q>SEJ<=XOXOcWuzDYn(2U<>4B z1|6rKsWj|8a0nAbeD+Vjh*AOf-+uxjBy)2MSZn$8r#?n5m-%rcfVV>#)34F3aEocZ zhcAc%u3o#&GpC=Y9ZQ022|cPgs*Z3h+|Gd=)13JyRla_rL7WLtCS+|p{G%_;5S^2( z+BS#6EJ0B-P|08qXPBtw$;&Kl)8VKZ$V`HN~iAkaMuF0NT^>UwC(}LP&m8YM1mihS=M5@pw2o7vxc6pK=c91>g0sj4- zHM)6_Qe&_@wJYIMyGGf4d4%a>1s>URlwhhvh$Q-jHfDGpp1Fy#Fs;hSsXTO2l4(m} zIYfvGljXh0r~p>cZguDiNhzNJ>8M^;mP*pZIdeuPGGwv=nLJ#-agFaj^&(&U+6zcO zyI4v^7&_zRwrx`g0jsNb*w}D6BBOksm4YNq-K-z!20RJl1fN8^N=QjTR0x@vC@?uS zNDxWp=a>23)91PH?j3I2xXS70-t0$aledIXNDzgHtf13wW4k>r!BQC0j-2{M2{QYJoDE*I$2w+c)Oe zT$`uUyhHxs35ruA9I6g+Ff&DEJjX^wAfo_5h!vV7l&tTNJeD6KnHj?j521sQtW<=R zJo1xeq5~sjp1aOe9fm3yR^kHO?lPGvQnN9(yo;N3xpeg!v$NX>dt+Eq2qQ=SWJ&>} z`69V;z^%Ef+`hcP=l|+E%r8_iSTdO$LRg|GLwO+2{(ZYRbm%CLKX!_IA>eoZ#sA9c z+9iy(6iP*u^59W9f1nV;%h|5XD-<&1iV>630}NC$Y;4we_W4(M@ufF7clIJ{Yjr9k zC5DEEAq=*fU#%d~DM@Td8eL=}N#c}58w$Cc>--V!xdM(ya8U@Q7_N-)slWGgoICdp zjb@W>r^_$@@+T>mOFx-0an?PWjzk-bjTjsW85z&9y12-jSI+S5Z=B)6 z#W~`*LzHoT0<54^ia2`YAUk$!=fMXbWNaj&QW>C83kXB{BkU2@*{bidboT~ESPN;I zlF0>472y0T6$K$uNg@%^F-=sc z$b_MrCf0k>hyWFY437>mJ~m3MQ?A{-&gVb>H(b4TosWL>QH~rr_!F5U8)v`Yo8 zW{c(3Ri?+rdG@6jIrHY5bXG2Kq_BtMcqEsp%MV9;SJIc1%2_Crr7~5vXiNY)h zMbb4i>!NRG^X)^vvBc&7QXxwwjQVC4W8LJhPN&Pcv#)aI+7)hHpQqdHAcKG~%rG@M z!LA*mq;ocJ`$Ymptl2)_M=f3=9-kX~zUoKJaHV{IP z2_yITnAG%T_e_*!V%sSBLXnPc@YGYM`O=rZ#M1H-2M%oK<3Im6#bV(n69GhjIESZD zfmhymow%Fu`rBtoJGTkS83x97a8OTjEF5K`HA-e!v;JtA>lw?vmm`Yh3?JI8@WH3D zh*TkJAtD!2FUGw1bDPu)7HI{KUK=5(1A##(iA*i+yd)py*cJ|QWMZ0QzkQTWK4CM| zoV|LP7r*hhJb(HMrE*A`7SURg%?IQ%Wj^?U2iduEoCEv!ux)ybOr%H>OS2KsYW4(_ ztzj3&*t?!;Vu<6en@pC?BHi2@Qr#gP7<5VkrPDG0-mFbtR&A7S6_ zo#e84;-pJ1ljYFvU3}~#PcSxGA(zed?QzyZWw6XY`sKgRb1$9dNXN&|F$#^u!F&bdlMsqfA6&OrIT~@*6|EQNGE)e)KB8J5b_KGRS}` zg3LgoAgfp%OL*?YDsRpui$e1;NUP%eCP=(!^3?2JKu9{<<_~V zrILg)VrX!PcDuzJ7cTJRli%ih&pd}kQz&Nn&ENdT96GfBCpsl0=ruFC$y#o}?#$#g zyY|g;;ngd&O^b9qPh*!rhZ(Z#(}+ETOurrQ;sMLZ@DP9TP>oX^%eGF!_U<6Y!jkIn zZfTS2VHGVjqcy`XK0Qh<7obC6TaIw&Hfqu`(CTpUb8qtOYiGIj^>b`=4ArpC;P44ti+|3KAKql$v~Ncjo4({NgrL!E zktU8ZoSqm1YkB+KTfFefbG&`&CS)VXW*8qD;)C~}qB1(p`sN063-bV+IC6}^fkEfT z4|}8Gy>8-X2T3LTbC8^DjL2~Ry$>)tGREir`b$*n4JO7%oq42`aZLZ|VEwW8z1wdrMyD<+XoCzTt#%8;Rs-pqZ=dD6&pgNadKIN4;&uG4wtW8W!uaYkM4VjOx8_GHQq0Pe;QiPN#w@Hi>>xFuQdl!5o7~)Zr{nN zdr$KGi!U-cIYhhD=1>0JpK|`fd8*YWjYfkY5PabNd&uVVOiYY9v*}NIMv(Q*8=_~U zvW`~G4QF}cu_su)d5+hwze1;N zvPWPH#Tv}si8yvTL$_At-?pCT`8O`H@YQ*un&#k+{k-q~hxp{jet}a{_fk}4iekuh z+z_LwQlA>6K}Z;EJ*=Wr{djEiVVLO&4%ncH{=yU$<7zbY=5WB z$?O<1;|!WM24Pb~r-3dsIMcYondCa1f+3g7GLq!@-T(f7;P@janaB*Ft|&xJK&z*1 z7(_n876Zpm^fuo@VxZfGPTM_f%1@SaZJE9k$@+Y6yrO8W=_7t)H3rG*+A6y321TZ^ z!4@pSq&)o4DIPg>Kar4#C}MP^;1l#a%_~-ufEEwXU;M*Jj9{>2YBSyLLw=O6m3h69f`3mryR#h;s-@`%Fkw08CcGh=d1f@>c2&Q%jhw&2seae%@ZZjxjZcbd3`eJK5G4BiT@}3T()q zcMgn&u^QQsII|5AbelBb)~dkt5{D3U88lvEOt&NttQMcil8U7 zVn)4h_dZ5P#yEQL02eM_VfVgSwogogNhp+Mv)gBCYT`f60rPUk$gf0R#M8)x_32GvE4wt*E(3RD~<4r(dg6qb~t z)A0BO$ohs_KV@uc3caD=2GA9XP7zu}Ka}C7Dws5S_QJ+G6g`<#+py4zqTG1kJw?9= zaxEcsIBUT=*{L2|IH8U^&Yi!Eb>Ss%pB(0Mulx+BpE^aQQVp4eNk}qr)|Dw{X%hSn zee?=UjO>12Y6+a=3>bq9tvpE<*w9)lbn3;JBFr7EEoiq}JoD6PjvP43xyv8%qxars zY-F4r+oxIESfkw@{*Po9E!JqL;AJ11CbK0Trdl6o_nznZ%JevIKX{XmK7Nnhw(Z=h zFYu$MpYRJaQ#^fVh#m7o!C}mJeBEO!o_mc=-k5s8>)qSD^9K(wn+0mqQgl10Lc=`| zOKQMH%z%c%ji+?*EI$c!^F$jYh_p1e_FD`foKVS7agJ~0#RW@uZ^Mg;*6!B#Sz2BJ z@2RB;U;eqzbNt9jvaE_yPB;=mVK1X^b%>0!TNO^B)+o(1QCP1^`nnUoMTpRqc3UXr z(Tm87aR$y&sid4b{xnaPo^bKv6*fC-RB9>K7Uk4amAQqUjg1W+Jb8q3j&0-9wA)RT zl5E=l|D3>R1s8~LS~PGTAa|I)qS>Bc_xL#5W{-1Z{Q|%D`WvjC+Q-URpWm8VVb@rV zDO+bpZb-bM?;V}Ya^9?RIaz0IVV?fV26|x?)^nUs(AP~kEv)SR8ZZpqs^(#*VChMp zdNn1>6092R^r%CO#h!Ok<+}oKp^%DV4r|5XE2x-KqZys3vD#VT;ln4`qF~paT^v7p zoHWhEjZEa^&XMO)JQDbhUhYeyqqk{T5DtfSs!Z2X5^AMo!W!k{cqNJ?H_$GMX2BD3 z8(;U z*Gti7%rUT5j2^wm6+U?WJBt@{$x!f#n|W>pj0q3AQc0QKUZ>H{IRE-px|^YBdHVQK z(xg%vMaHxb=j1+DP71i7fz;7FS-gaG5@cLjN%UTt2p2JM2+FXEMEHfcpvbl{^3;l$ zHWZUiG?nU1c;%HBICAU&y>6Gk^LPFae4+VsU;XoFr8s;3 z48Qr`|F8VU-}r01@WL~q7W$Jrhh%c5N#3D0f$o=T$GKGPtp7>dF% z|9C;t(KPK=Tl@{e(I2vn1~9I3;d=B%2+6eKh!IoK!C`GU5tJFIk3(k_QqesYWx4P zKYj9PMuvv@-~QfjQ>)cDe&UGuAOCdhAlbgF#l73B;T}>^aVw%v74ERG5Ve`eDK;CZjM}Jx;f6S>M&3BXK43RvTMt{eWuHGcZlXtA5{!9 zy!|kDn;Dt2WJ*&RR#cQitCXTVTek`?WdVpFQmOE=k>g%#Sp-^+e{W0b^w3a^@oiPo z#IUl^XLX~)`3u)W5Oe~=L&K%5t5Ujj8%I%oFWxDP89-)HY8IVFm7L|aZy_-QfGFw; z(1BzU1vqkI1RMJhCTUVh7n9t>5}gq(LQN?nq80!EAOJ~3K~&c{wD%BWL*wk6+Rmee z1zvyWEe;(#NW0mh-Donq{~$%-`1^nVpYY%Q#;=Gj;By!5>pp1fDb_Tkigq=lH8jbN7rsEg-r?Sz2i(7Omv7yDm*vG(7U!R^y1Y#4 zn8JJ~ZjgF75JbVZ)?{U3dYfBW6nLv&lr z_p2znn}OTsOE-_u;(19F_iAA66+M7_5vutR*)I3K^ILp$6(&u%M?;2Gl!zErII9Us$d>rv=T5#&_~gR zX|KdHtei@P8bJ@d1g&*)?+5OoR=)H&j0K{T)+ff$guC65rU^>b*t2V=bQXcho9T?% zy|a9Dc9nnrFTTNV{Q6(}snf&c@#76@^@PdkI_s-_>h+Z6#SYz$#cu^uw8w~9L7Am% z#az+^>6MRieH$P-jS@qNgkHBpq7AuN(D(8@#I*Txu?yi*=m~C6VTZfjm4J?uAjgmf z>dI>iA#gU^8KdJBwDvr>waUh3KeUD3v$(Lvnpkm7$>_s?{1`a1wQ&WHEt6j&Z^QR!BiAKaA0#_HedLKqvz!Tp33b;bCzebrxqN zw@9FEC22I)snXL~o1o@)&V`z$Z%a!aXG1JbmZa?2yPqHZ=j89B* zLa%66i}rjS^{Dk_7MM;4AD)8=5Rl zD2iNwsu<4`u4E&J2$FCTn9Z7^AA_ueR#QtZagwGq8$*2N)1T&df9LnuyJsic{umLd zD1+keb3C}S%Kba*)anV1RzkC-=yn~s+cIJ$xL+9Y$&W2l@TiMPnK3{ztmO5L?v@My zN25^-y@nrn3vNwU^|Gt&mPuap9|W*@Xr1D!NfN{8M3pp!yLZ>=clz`?o7}tqi1U}u z^ZuDL%s;-*#s+kIn+&y^jE{|T;`l)nnkP>larW#7bT+$GvNqk`8V?>m;L_#ueD??6 zr&?`MtyFmag-^3*VvO-^+tCC`x`}}k1Ro?NaJYAtz8v{cJgQ_)5t2mZ1sj9T3#l)Z zcpHRO?eHN1rEro^5;6)RktYCox?EhY2m#gBT57clwfZ>2_eOZ@o%i`uU-@|n0NXkY zvXncsOwdw}&PI>T^=+w|?r3{Z`EHCzXu(&~IeVx0H?sMVNW!`-M zeHIoL>2$huIvZ${&}uh$@!8Wn|ID)twI;yjT)%pq<&`B8Q)6>;g?_%t!^e+!>gnfr z@wt~v=aKi$e8kl&7ddj^5XX-mrajc6=(^A{zUBzrF} zM372|nCXro*W!5M!#~j#RPM#NNmC>`Cw3;nO zN1EgXWdR6*#S=u9;l9S%GQuT5sFY$5ohXttWpXORS$O{(v@!4G-*w-8Lqx=49RVK=zKiSodeoK7Y43GXyIQH+d?^3t=<@{j+~|HH9k z2idl5XPG~cD5Xf!fI_882jop$vO_jN3>B1JF6@~k0f$(nI7>904jQ^Je>X`Oj1+|n zZke`+a|Opa+dZ`lf$#KJbU_6?A^6HkUlkdiMuTdi!T%_YfD_ca*;|_rQ7c^_h62f zU;24I`_j+QXfz~zDil}B1kZ$8HKpFFa(d`#cJ18B8*jeO+?_do=B3XBdb$o*skH&} zRVBI?UR078nIVb0x-mjviCuvW_O#xDNyKQ|V-iDRf}M>M#j+P(g4Ri>!Mu{TIK=Yh z{er}3X7|mqu(ZVA{ky-#-~QWwi_y`Ms03kiR>yWb<+& zloDJZNd>ESkfkZ@W`l0Gk1-joc7uAgfz6{MS2S_-6otbl9xYeH+Que%-sjgpP|Zr#Jz>!{6jl!8XB&bFyB_U+xtk%Nbso|vXusZy&|O4EoiLJrtI z3KkZgkmos@oek!f=K0*uevxONd68zLiPE0Jg3m(&sCD58Z!|Kt?HD1er98ObrdF$Q z{=xhh#ptN?8O(c8- zCB?Qa{R*9=l#5G=3Y2$+7P}iwsuaf#9pSZ~yvF%+7x>I)Uy7W-aCErB;-qpni7D?0 zm%B25FSI;C=44~$E(#Y%np@mLi$da9bucoh*XwA#j?tD{Eu&hk(eL=O@-L#(CZ45* zC06gR@Zr_7T)B3YCyPtWKY4;evAMB{!%DrQsP%gcjg2tWZu8XfV;nzxgt4)aa-I=N z3F%b4MHQ+vgzWY@T)TFe&F%*G=kN0JXTHGmr(R~HJxngeNs{WYP#G9$EiZLhTD;GW zT_fz9-Nww$aYjc2Pyc&A_&z`TnU~nMZ3o(DjADyXMF7@e0SS)uA@2dpF*MGhZ!MLI4t~4Nm9c3tdNmAO0yEZVa7NQ;C?3x*lId~r46>}O zE-`oa4mWPz=E9|m%s*OUePdk|HZC}MV9{Drt<;$qYqNLP3`Y(gW^81XsmbZUxRG`& znn!B6Z=LgGS&FqzPA|=+OBc9%|1P@L;6M4LU**{0W29+{CGgCYgie=zxg2{YOGwj< zyzjVr;Q>?ITAY4PTd%r%#dyNyZ6=VvH^Wx}0-(Wy&B*FG!kJ z3gwf44hr$KY$LV8IE_jb{k%YFLzZOZc?{Gvl8_1}(;+I?+OoACY7Eiobhe5^<#5t5 z>Qd~_<+zI7L7BOv2mZgx5A4~s3Wkk^M6jeua0rb7&b@w5f}#_yUti~2-@d@3N7v}} zdu(<#x&L6EmDN?e_2hXU>k9gLfzg^YsWG!{n7zAZ*uHI&{d;DqRcqAi4XX8OVB!|h znqImqv5|>%w`d8AVD9Vdn>={?Yp-Jq%#U7yrNJJZ55TYLQnNWv1}B! zXX$VDQQk5>*M%*LK8;??NVt@j8X(%R*&>iolpGh~CEZ*mz{mb8$`9f$fz4H{d zk5-0bhxRfyI>PRm-As%R(QHgGJ~krLxRf*vlej$M@Jf-p0fvD0*g}cAR}wzUcswmS z$Ufa(hv%RFEZZix2cKhkOHLJ7JnKs<^!r^@TA|fy1lLX);%)vZ@Rz^YB6C~UA-)k;agqQ(}GWJ(k+ zK|$;!fHC^#Iy;zWm-br>m@xMq-lyGa@bK|ttj+P>;C(^8nljXEF}-bqr;Z21`iwIG@DT73IdnOGjsu7O*ZcL6QbdJsRYWXk77aB0NnKeC_j&}z5&g`fX3m?V%` zTrPwX!o7Ow$|e5jTVH2=eU0W&lM_czapLevwoh&&Z5#Tl7N3TzW@&MajV#5XDS8FQ zXtqsE@|7=sky~^3!jMNCQiEl!4)iq1MnbMjYi%gHrM@v@6>E#4L zTguis{=Bv)J_EuzcyR9t+jdNEVFd>w09IbS7jvZ|7YsUy7(au1YKyI$k4f4-!kgiX zS?5c`=ZUd#o_Xpiy4^1AR+X`_N%rsA$Ns(hsa7itwc8TmIvB^s;tiR%8?CT0A6J5{ z0{u(QAequ>74}1PJ&`d@IoWhdP9?9&Dp|lWa*IxaKZ4PQwaywBE`3BTOPHA1iFKY2 z-u)48y#9T@_@!Us6(|8)2dv=l4n}woPrPR%;Bd72#Y2JGl^3U*rK& z4}lticv9p}HkdG0fH&C zAEa_y%0T5PG0F7%c9g6%D9nZBV(@9`4D~qoZxQ4(``-l1HoDP+%z$H$-$WkQ=;r0tYL+CJZiYxYwPJ z)2v{{s%=7IGNvXc%Pe5;LcNe?Mk-ui8aIZ-AeoqzyE`1?Vct+mn(&0e)A<1k7mTCB ziI60Ln1T2Q+dO{8Ku#8Mj?s}Z{_Vd-=>xjuK3mDM%A``YW=+hj^l{NQM|jEjNHg91;B zMZ7BjW5W(E2L99G{|DFZ+1Y(mE7gI-i-0P6DR^QKgc8pJEdwU!x2A~?atNaaFi8e5 zs8t{^Ph7@(yD1S)bznuMCd z7$c+l=Wy%;hBofX!x!*ixw-7BP z6@i!Mr6r4VYvn_0m?WN}P>c+Xlnf9r=^BIb%}aEA#B?bUpI=IVC4ebP4eAcO3RwWM)3nqPn2#OD<`MkhR+pXbE0N6LChPJr<6wI0N!=hji=AtlQ@j}if;mSBa*X3;{M9S|7& zU~(v&_>f2FOR4tODEAmv9ld;G>V{FVU@9L+P}&OI8QM8{ATrV{Y@o6$37jdzt)imV zcyNkL;^n+JjC;u#Qp%N8b`o0(iIG*p;}1Ol1V^}!rza+9KGz`25}~d+IhsW^9F3@D zkvlnWqHCo{K5L_8pQdYvX!-Ed^#^Z&@ z%*=d2zKF&CAgnYR$npsJC$Oe8la`vsDW-h(SvvI=>`_JorH*T$CG?VNryT$2fPO zBwP-T{=STk)6|sw1Lv$vCxzavLW-GIigv3Z{kkh#wb&7f<9O4*kNDCJDwsy=JJURnjCJ-4o;E3=fa6b7lwCN}I9K5hf=lFggj7 zy_7PIJcKQTt3;bHr#40neEUUop?s8IgJA@?^}>FU&hmw z^8i6Pjf{6ap)E>HFvqq|?q*>Hmvx8yJ4tlV8#;l`%ODAH54S}iXB1kJR9qRZfsA|; z1%*h*&>CCVl1~}32qJ7NpbrB)#wf5lo+<%&^MyF1T3dELfwbx+A}2)QS!>xlyMtD1 z=o2#YggE6wV%3#mY#%8B0Ao ztWCSwW@hFPQ&ZbGa^MI%XZFx+Hfc9UNYeykggjD&-nX#AbrT-GcWO)YYvdSc5qnyR zh*Kqr)GN7uB5%Nk%EyZiFLo|vf~mAj!W>8IQ1@sPUWE5sRl5T$He6?VK;8DfOdAhH zoD(5QNElC3MbYFDG^xw}79Q?4hyf+m??O}$8hdFfM053iNBK=;E3zx5Q z=G^OCzIKaSx84klJ!i>_F1>z-wY7&le0Ukq{9B#SZcQ^XG|G`f$C=%Kl;NQ<4$dB; z)@YD=Pm&snT*xMJI>eBQSQ;s{g$$v#;0|)h+o%IbRC(3JHquH3ZsUR=5GO;Fy_hlB zkOCfVg#b3m`;CmYlA-I%`^=LUp*k-U$Q@-pR9-XIm-tG&2jZ0wc>X%%4R}v(Ltz%$ z=&)do7l&=ukOO z1)D8wp8?(7v)=7+?!w1Bd~}!h&%Dl!o99?wc`PksJ?vBk-WBBiUYUKTO@-01y&OKU zoym#geCqTmTFo{??I9YqdO)_6kR_!z)&`263o>zS%6R)YvGfMCQz!#@PZon7v_7%T zQW0c|&RsSTJ$&JC+Lbwg&U=ZP*QGD7F(HvWO4K44qY#JHGD3C`H5VdhY&n)zM%33a zSD@^!R8RvcCHjCs0u86K#Nf!_r3AICD-%qDm?u0Btde<52*mPY0{-anV{Sjb&ewkP zzZ`*Kb|s?e~62k*~41 z`~k(-24*R zi)>tB_c|Z41e|A!idc|7I}o?%E!=-4t&Y~ZTp&@PV(lQxF7^>xNp!6a3Fppvw1>i3 z3`*>EBn7PqLen$n-skYsd-&zA{^EZ?3s>Ly*EhV5Mh3+oG1JM>76G3C1;doT4`r36KkHc|uyR7&ds-KyVrphE6%D)y^^L#O10 zNl|D6A%nPcN=x`q2nOALxEzgE0>?^xjM70I8bPs`E+%ZK@O4CHr*$BF#8XublFGD_ zK0opYwJs%K&JDBziEtcTIqKb#>?R!tVr83XBSa8e)~?-dk5_;49sc%j{tdRzZ2RNA zg7E>AFj^2ODMFAiCNI>aQmqoX|3=2hSX%8i%|?r_&g|tEzVu6ceBm5tKl%yhF22K) zg-5Kc-lEf4s7jR_ zj!_*sDRL((9k8LSs)E*~Z%eVO5~i+piD2(y+MvSAQG(c6AIK~aT0kc)l$U8@fSX-e zX?ttY#t0eHi!do*?$MhtK;c^OkuY0vHtHI~Ib*hvLCd>J3!zh#SO{57w zzX_jN$r34+<@*y4q96a{O%5G9z{KSEA1e(rfBCDw@wGB9(8r+G@PJ}QZe;d^U8l-Q zOT}NuLP<1l%|?rv?K2!c@H9sbpQ6ziM(LC%3wP;uVQoXReft!Z>IjuA3p6PVwOWPN zP@9?UJ2^OefSoh@sn@E3$x}GF2M6)&T9p8z=oKXDJsDudy1b&D7)l5}F34RRdT1FT z$L;I|MT_;Z$#y7G5mM@Q~Kln$ygt;|~&7K#s`R8b6a8Ojz>uA6Ai5&Qwd3-;Ec zlGrs2qS%wf2*fSLs1xW>Y8943qc3+%%+%G| zl!a6PuT*J>dSKi^T_16gju=+~(5N^St)sw^-Zg^UTRZy!^sRcJJIz zr7}{ks{zq8KFq=H(p$s|-Uo-P*sr^CgcU~EF)T`za&lG99wOT*GIOHn!=Nc5!BP?- zrE`=ps!-vpEv8i^5-RwE(ztz<6-ByaP0!S4v+IIU;Q&b)nico@Q-f$qKJ3NAW1W-Y(s9)VECfs ziKTB)54%9RmPndp4YI zLebVGlpbme6DC4997|6ga%=t$|HWVbPnp^A(}N||tN-SEMUcbtdCr{YBdl!dhXW6%R zmR7StR;h-1MBrhy#ULpTP^=Vj;lvt9$W-jnm9$Yh7&?L`vY?zWaGW35y+oOI$Ocm4 z1SUX{@cD|qLzyt22vf*lQR9S->!B32h61#}s3c$-N{3oR@cbYW37vtHpG65Y?d0o) zYeY+Mm6Bku!3zxoB>C$_0Ej7tp+ zkCaDJveaP2=!KON$HpcMl9b$ca)U^_7G9!J14+12iXt!Q=RM{Z=DB$3G9P^WA$egL z9UkKNv7;QGJxIIRrdDgnL~;Q3MC&$6Dp+{nYRj&QeYcWvf{n@=9d?bgp0pxLo!AnJ z>115-i7;z5$ap&F`81(x2;I(r;_k}?doO&)FsLe`TFC@nVNo~|ksL=RNYUf967 zwURF=spE2$Sy5V*g|`b{g2BW~ZJEGo;Z24U%vtE#4PJfyHU7u{@H)c*f;3rixp zq*a_xhkiQ|AjPO~WV+%L?dL$o4dq?ye8?G!t{q7-FjI&_nZblk(mW;7)%!m6dd9Au zyP2BW#^p;FID77Wc5L5Iz24-#_uuBNH-E&`?pZ$n>Cez^HZewrBiIg#F9Z(NNRF@( z-J_+vQ=PK`REmL+49G7*suhbv`SliB+`ywqM$)lr7Nh8RCnL^c-iKp6)(VlCYpo~2 z(6>3pgf7TBixEmULPo*s@>&X>48j(Yfu@QH>BeDuecpZl3`dUar`>LTLIwQO{xW~* zm;c7sl$bjxlzgZXyAnMZLMXulWKgfsGR+gDYAcW3sexsQ8dRUrK3y#G0t_k-CeeeG zvPzaRy=@zNcJE_;evStZ?=m@YfL*(G^YFn#J~;CZNt!S*HXahkb!dA+t)jPZ<_5k4 ziilgt_*qdRoN*Bpg)9C2LWq+VnHA-9F}9(BYDLNO^FC@Eh0`w@g7Dc&!YEYfB{Xo8 zQ6+r~37_`P%7Dj+m{gb7vsMaajA%4X31JuBbK~-D&itgqjk`BEdU7X|Q{&~8{Zkjf zU-=7v^J`%YtV$QkGK&{An7{~~Icfvc7Jj-G&?RIK4-6AjR2xOJL@RM`(kBN(hZ-C$ zUX^tN4r;X;`}ZDV$MzkptUThztvl@AeVCEqG0t815Niu|?${aNS*-@>q#8JJmB%hy zT3JsS{up~s??iTPwlZ@l=MhQ@jlqc##IIURGQ!u^;w`vECho&RiYH}&-Q`6}%4#gG zwGJvFB(tcdFiu!`R6`IxATC-#rtfZ+|BoX^gV9eyn%ONV1yqCRS*@85>lj= zzTC_Gu8C3aLC&p>>~tSaL%+4Hi;U#hei?-4KRDTZ**STfH$ed6LQCeYEy*6PBy)zi z+d{mOQ4Fm?kdnU`BHy!X(DCc>2~)3qb7PEHT(7NJIo(F}f%FO)El z2WXv93TIVm1fk=uR*+>GL+v3B>^;or=os@4Z_)Ld3zsjkYi2v`p`lQuxe#z2y^Kmv zBf<3pO6agYoNh@3jR@^tB(dr;l|qW1Xupz%mv52*)?o_<_VHVGn>OMgYE((M*!K@7wA(Cdbyv}D>!mELN$*t_Qd2lwu$T1`2B;WD#3c3^7taEzDu z?_ei;Lf{jGX7)M3W zDyn*{@GxZtD^a!L0#-P=LUlO;j&+Ull#9qHO}}TkcH;);KYGaQN<^V ziXZ&wC+s;q!nW;081o-O!TRG1k6Bpge*rtO(=>*tYEalD;}z zb*dOht;=Fj;MQ1aTCYf=ph!*&A85hh6pc()!4}GEN9nN2wF;7K*-zT2(tk+H5w5n> z7S2PZk})~CjrY#HPnM*NjEt10i+9=${SUsyqnmA%w@i-gq+K0FsRXSIN*N%bS)E|*F}!)^RSq4UVRWqZ30T;C z`ITS$TG8!rYwj}VF1^F}=rr|4i%hs^_g%`2RQl%g?P?f?Fu4SU7^q`oGW7e&> zK_J0Mp{57&vJ&DHJDMo>j?`zR1}xtw7|qfem8`~(-+F`Defy|atASN3d}Hfibh1v~ z^QuYRmc35BUu(94}v(u;F&BOQWAWMT4Y`t1X;psbJElTB% zw4{YNerTmikjGh9@(aU!L!-0_axP7|;6mn*E>8=kG`^tRNZnqKAN=@7TsfE0NVnmv zXSg{{vo;lKhKB62=Sl8i=sl9@`2m6b<)=X>9!*?ylB zM-OrQ=up~3cR-tJDCJlvBlB!^S z=)3?hVkIZFL@=8em{8yXLN~j2H;?A`^5K~e`Rq%tkY(Wtvo?%}*H`-V`KUR+sN{`|cGMmY1>C(P}iv(h8L%qh3v^R#J?%3=g&0zjrSu4j-eI zX6Sl`EfLSqmuG20UKD|#5$sYz9b`hi5Ckw9oye|mN(NAnrYS{XC0Zsa^M<^GexCF3 z`H%Sc>;~h_V{`_C~9F;5?M8_Is zs8;G!CwAj}hogs|;@pK z>RE+qmQbyFIvZW`wI_V^(KlIGxXsea93NlZWaZH^`(_WZZ|A`v5J|%K+VAG1CJE|k ziJ?b(3gP!>nJI&&yi#EU6dJD}&n;9_K&I+5| zRg%PzNCy>xFeSJ|tKR11jxX_t|Ktyup18m(KYxtG7?OBzX(inDBB$T)@(W-5)7-m% zpDVYo@SWFwpPiE@IQ8@_t#-2{P7F{lKB2pFQE9owL*MA&cUw*yrPwp#GeCKV`YoM@ z^xraj&@zg)vFMa27-fRUvQ}&J(z7q}-5+kZ81Besl1J`kst9fVim)Uc6Zt2uJ$03V+F zkl*=N|1uzjGt*2>P4m?8lXUlWxU+Phzx1oW%*dz_XqqyJveOCSlTjbNzOlrexig$Q z`%Px|9%cXRG49P>qS?$?zITTw_n)w`yvfJ!&2i`2b-L@83+F%LX$hNbwi_rDsOJ5m z5RQXJOl}2g_a))PS{dvh1t^M`e6z5$z#o0{yHwp#s!5x?a9AgG2eQEYAXYE<5Ji+$ zxE&5g^*+|u`h4SezsKan80x?Jm46TeQo`iQcIbANIdS3?FTVH+&N&L>Ah*mvdd%A& zyvO4w581PGC$szaF+4QP#ONq_9`5+k(@+>Zu@Y8WEM`2u1UF)jZnQ9A1h^MpFOe=Q zVPA_CnxV8wli~S*yy`7W%ZuUIH5Ho8IwTrn9V?p~{Qft8pa1E9{_D)_953gBu_&Iq z1@FB9tE&YMA70_Y#qTk9^DL*1onp_<J3 zWTU^%t-DuospIKSJcVLTxE05l0jty?4>K_~N#+yKhHcZ^`Nc1Ph53i`oV)Td-~7(2JXu;MO)^GCnhXz(Fh1NS zNt57nV;$C7*4EZB+62an_9Q03n1pI23D~+0k?ECc#z=ddc4H{qXGv&#;snw;C6;HD zY@-1&BBpL6j0{f*)mlcc1nG1o&DdP&vAWhR|497Pn;VX67Ypv*U+1Iq-@>>DoIbIS z7f&7F+O12x@!mHmdX{HSyh5$g;MnocQ>|nqI-#?`B3#0HY1{~q4 z2ztLngVSL9ps?h*BQ@zDsl-E~6An#%ic24C5cISjlr}+KLyC7fwr9C~67aOdt_r$Wy(YHOE&AD^u7OSg|Lk^Hm#YR?w zrNm0M)7>O5`t*B!cI=p8baag4M^3PB&mQXaI>rQRHk(71DGDEG>`9{W+GBH%N)!}P zjVvvtc6fn&70_iGbb>Z1DhZPG+{3uv$M}u|T)TOmfB298cTRum z1&$p#$>_*PXs0FgQVZCl(GsIQ)r!GeaId{nSj%Hhc7IZ z$~bBKJmp#IY;b4(4x61dp5A|oYL=93BnlE!;n37eB#-8=F*UglqmodeD$u%$?QQVj z;Ug9n=Gn1*r#L|PAmeu6NU7Hn8Vwj}k4k2)4H9yh#hb*F_brF^p5)q%E8Lm8i1R5X zsh|R=E`Wu20P6&2Ju4fJc{2Zqe{uc{CaF`eH#z;(Q%p_{)2!Fov27n|QlZtTklVmP zi1`6lhzcVr|Lp&MouNvD&%N{#JGRwHl6qkM z8c(7P6C2(qj62Z0{Z((tM#Ja0jJIV7NdEV#Zg$um@exLQt9`zbDN5+`i zKE|m7Cm9-QwQdT^5%XxOMAeuDgQu&N{t*pEPR- zAJXA^p(1ulbLH9`J7>1>^7Ee+ALB5x)m~wNPN&OzXW!>r-+qg2t)Ic@dO*t@D2(J0 z1X0F)=nxR%r** zBjd^Y%cP0n3!ncpOpZ?q>%|Yq7P268634883Kfg1sL``dm_OceRc}3pu zv$V3n+?~5zzjhs4gfo*ewXt%Kc>?On#?R| z^UBjl#Q`Op0=A&^O*Ef=>Q}y&CK;o{(=04KpvXHkvY~QFlJ|0|^^Ea}8PT~35FCd- zT0!wi9)UJ-vK^*?I{x5ZGdwcF*w7^1!m_&j1Qm4NRFVp5l2X_LlO!T_O3^A5kJc7~ znTH`vTB%XZnv9K3Gcq(uB};hp@F5?Z`G7ay`w2^n^U%*pYqjve1dFevRkn>xarnR? zPMvs)V~1v`WLcO-#`&i>i-b|Ku#1fn=d@2)cm@>@&}t1aIy%mQ*@Lu(+B}+nNI$nI zlZfCm3z98qJF2xhL$wj!di!;5&)uQZhr%a(eC9pgeshsla)fF&f>ufSbA!fUNOcA8 zL$#OpyCg}$zUku_rFi)GE{~R%(7J*`Gumo1J~SHK%Zq`?H%Y?jmOOZHoy4RhCZkaw zqqDxo-25fBPaYsORh;cJck@1{PWqC#5k;aU+bA7)3F{;hNqpI=>)`w#*GIzij%n&c zEt=Jg^B2zpeQaT=R2vwTpq-|crS$r}@UgZaNy9({nOH`8x3!imOQ=;RsAdhuMt9Qf zZZiL1fph0RqM!FUdgLgRn4lWJCpniV{dngIZ% zJgDFNl{w$(t+Ted!qWOxy7?L_y#=Zj%gFE$Dh+%2@ZrOJ{&QapzBLG<7w6pKm>K(g zl2YIrTr8qnxAUcma{xv9T)TOZk3Krf+S&?QSJ9>-lg9AClf;xhdht#dg*}c?IQENP z>BbooI+7&8c}u_FV`1Sw8=K3lY%Wo$)M(TjJbUVSMutY1n4VyyHAa$Tf%YwA5LXO5 zh`h7qkj6zahk#t65O;Jsedg!y^WFzt-N>QZJ-YOCmejPFnQz7YUv`_G^U}JTGecN}jYx^Ot-n_-?#u_?pkR=sX zS1s&Jn7!y#?@tv zev`4W5t@w_6QiTl8`U7HbVNC>nq%vyUn?? zA7gEbPO9i61Cd<83TF`)j>|I+)|+C`V`Sln3` zBGE7&*Kw@otE}~x*(lcN`3F?$mdUXeyJvUOYStMU8pD_rtv_Lkfh*!fk3fNr{(e#S zrz{KePx$!!TU@(-jWlhMBnc*|46<-ymYjE`v`TALX7D)SWyRw;`esGr#;6R?TYgWc zyMae>YPCkpVh${5MN#y*apMNpZd~W_ z;{}v9q^64Zh9pbmy3lyn=jPqp%s;%1$|so|IZZ7c$5DjAmewe5f>5RixVBMgs6$jz zGJusV1dYMygidFje(xbK9sdH?=N_=p?U7YlBqn2{_n4jIb@oplAxl!E1PZo1vPq2w z_1pio4{j!cu}5#f_)l)bG|rX!#$XL!I8APIHoILOuH2+h>-3XFb{uN4e{2Vn+s1;L zN1Te3(~(-o78kaGT1Q*@{XS>UzQ@Ps&Va6wCKa)C(V#4;3gS)Y1A?Y?U zwu}9H_E8i${i4r>ix+wD;7MROtAyMZRFV{wrrTXdDb1t#C)|5@mAury?2)N^>?W@!rUTJn$h8Hq*;qJtzmR9gk0TNrQ6$JY3V+9@7<bt~M>q^=QW1ek zj;Bj4Yl=gfT+aqvE_?_PVT`q6kkGOGR{Tfo>ft^m=`q-L)}h z+J{;1bm`pb@Y=;I6xkZhVarn|4l+D6OuN}8FZyh3uJho*eXd-+M5o)K-|L~ZCMC3u zg%C3%S1)iDy(DmEl5CQOZ_6P*`yv9BFk)8(gc1}^oJK8<1jXj&I_v8jY@e!??&3+3 zQo)lb4Z1?onr38Z2YJzBap^8AtB+afEOY+Sdw3MpY8zuJf!k;u&FUnXnPS)Q^HkCX zT35)DjGpbXvT+r~Au`h}5!2w*=Fuu4(PAxcb99yjma*3XG4)2QdqQDqT_5ioY;-qC zD=n0&pp~N2>oU}AQcV*?)rOJNHW7}e4~GbeNrQ1@h&CI{spAomZgCZhYUVPTLqpz= z(JX|JLt*kNZ5U}a7;;T^jE|GMob`<^AHH^rO>VQ;J42%Sq^5?^|8G%elhZ&9L*Xxu zGo2PyDo`O-R7fm9;tbsX6u=Qis7380PFTbpPT)=C=smxmH6jU#k=3|E{Qoo0y}825 zwz!al&?@F3*3!f;h7r+z!?#}O>yO6Sy=qJMq0N( for _ in 0..quality { let ix = reader.read_u8()?; - let val = decode_value(reader.read_u8()?); + let val = decode_value(reader.read_u16()?); coefs[ix as usize] = val; } @@ -48,7 +48,9 @@ pub fn decode_tile( Ok(()) } -pub fn decode_value(enc: u8) -> i32 { +pub fn decode_value(enc: u16) -> i32 { + return (enc as i16) as i32 * 16; + /* // mu law let sign = enc & 0x80 != 0; let exponent = (enc >> 4) & 0x7; @@ -59,4 +61,5 @@ pub fn decode_value(enc: u8) -> i32 { // unquantize return value * 32; + */ } \ No newline at end of file diff --git a/src/encode_tile.rs b/src/encode_tile.rs index 085a003..597ecd4 100644 --- a/src/encode_tile.rs +++ b/src/encode_tile.rs @@ -57,12 +57,14 @@ pub fn encode_tile( for i in 0..quality { let ix = indices[i as usize]; writer.write_u8(ix as u8)?; - writer.write_u8(encode_value(coefs[ix]))?; + writer.write_u16(encode_value(coefs[ix]))?; }; Ok(()) } -pub fn encode_value(value: i32) -> u8 { +pub fn encode_value(value: i32) -> u16 { + return ((value / 16) as i16) as u16; + /* // quantize let value = value / 32; @@ -101,4 +103,5 @@ mod test { canon == decode_value(encode_value(canon as i32)) } + */ } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 12da4ab..3e8189f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,6 +15,7 @@ fn main() { run_for("lohikar".to_string()); run_for("zonked".to_string()); run_for("avatar2".to_string()); + run_for("avatar2_small".to_string()); } fn run_for(name: String) { let image = png_utils::load_image(