From b22413fb94672ac65305680e7233dd4d299a19d9 Mon Sep 17 00:00:00 2001 From: Sorvigolova Date: Thu, 24 May 2018 05:05:30 +0400 Subject: [PATCH] Added more info Metadata section headers Signature info --- Release/scetool.exe | Bin 259072 -> 259584 bytes src/ecdsa.h | 1 + src/elf.h | 12 ++++++------ src/sce.cpp | 39 ++++++++++++++++++++++++++++++--------- src/sce.h | 12 ++++++------ src/self.cpp | 30 +++++++++++++++--------------- src/tables.cpp | 9 +++++++++ src/tables.h | 3 +++ 8 files changed, 70 insertions(+), 36 deletions(-) diff --git a/Release/scetool.exe b/Release/scetool.exe index 20023d025a64189aecb596d03ce28160b6ea1a7f..158e95e2b9f0b32e97436eb89eda75e1f076f76a 100644 GIT binary patch delta 41434 zcmceNAvXR9b+{-RQQh2A6urBcxrjBUlJ zm-ezUljxR}m4>-wW{@V@)zq@Gv{JL~%do;S#U%IpJoDN`?B4tS{P)Gj?97~V=FFLy zGc#w-%&x0d|J9fLx3b=Wz8z-j+<#|vocS`NPIsK^bQ76?-u1KGo8|CDyXA*j2Dj{x zKV-u=KPLal`m&ehUc6r?X#xoAy>zCwpPRgrzKlVlK%Us`?M;w*6n_~I*uhf2P z`WNHfUaoz;tBb(3+k5q9yz|rY@!mQ7nT@qkefqN=jtxwAWBP{k>St;v^=)M)xe6qcT5Si6aYyH%1;ak>Md$icU&h>W%_0}yRFEJ(z~P$@}U8v%_$_9Y9%srWqF~? z<&sk5?$MThZi$ZwiI1uQe^J4#Hle))W7Ktbbl>#EN_X#|b8MGl(D`Y)xR31VtvQZj zV`chDX#;9;6&tLoZ%3UD6#=AG{9KEuI9)}pN1})FhILQHn7eNSxhNx~mL$qfqmLAM zP)zp`R8-{EpIWK7;3cTkui62qQuR z7ogw$7c&f!H>HW}hz3hF6Y#hIM%0`|tfsVMeO&H1uqV49M-7Z*d*#UkLuud_4eUGm zZ{7IbpVW=$lU)UYR@KkKbTm4<4yNzYxkqTkRiZGL*FW?%hUoaf&@Ng}6#z~>SAkCW zYv7Q4!B~v~Kf%FWx<&BMs!TuP(GK+oK_c)u>M1w9N4*Z+LXsNg0!BaRr@^@F<4 z6O}-Ftm;oxy{566zHPSVs?*)H=#3n;;*U0pT=fxT#AFy1cXaNYnd&EY&-@WnP)wp7 zSOjRE8V660*IM%jX+t}0{m8AoW$xC!Bed7kI(g&Z@KIX97u^MSxe1rJwG)ET%%B#K z)applxntekBR3BY3MK}aOxDWsX;6NvTJCO!93E?7E98{e0epIeyePIOjp(}A=lRo* z$}*Rs+kk<9hLz*2-Z+gM!2WLg%eC`M0Yxen%^* z)XpIR@|>YQA%w3?S0Um_gnFy`vWH^T(C$(0(vT2n_337et(V1hcA-vJZlD|+A2d=F&;gvz zqL4GIqbL_xnK25vV0DliHwC#+)#A?0N6w;l?JjRl2#s2@4jsDE;AplT(A$@%lwb8P z8;55MlhnTInda@5CtbR;#})>Sfe z0Qx*;f@p?7C!v!Z#RdQt*fWgPSBMjlT8Y%zj?}7}Kw4_gFoD*dW3F!Tkd_c>%gwk5h6@(M`+Iot=4IsH>Io8Oz7}- zXscQxsU5%fx#5Xh0HU*O0x z`0q~XxS-*jVS(=|CjWpxw*lu%rZ& z2JM_Hy+pvzZSp-yLvI215>U3uFC{%ws!;~GmPWXiTBK8i`QcHL#^_ktTEKJF&azHd zS!l{p->F8ECr1HepAhB9h_R=|c*OFzPLZxq(bu%11uR$n;wdz~-c(?*s;>tSLz6u% z)>9x1ePyv0=%hPMG%2Q2`|Cm3wJT8uQ~7JR$}jSikN=PI5mdaJr}$@GWZ&dezWOP7 za&jF1S6A7VJYta6!kz`X99MBGs!XIJ={9$byo;!@(aWQ8KP8VA8aE~Dz10lkxr8VW z7;@G7MM7xXOtOD-qzdA+5mW*{?mzIm2w%Kf{&4g^cx4xP$Q^+}8Ee|~riJvz1;gDD zcuAgp$AHi`ONoBG%{N) zUn6A9RadN$OHy1@-|?qBw7qCRj+8>A+gD<;tc2-q$W~{IzR~BZ)3k)UX;K~$+B}5% zY&G6P7`?joaH=<(I;V3xz7<41eZ?)l9kll3s(%T&JY6PjCBhgFA^3iy;d9lKt7J=B zNM`FJLi}uXhX?V>Z5(o>dg_SJ1sTTN{x|Fe!a5(3SEmK{K7)C!YfNvY1*Eu(Wby^d zuJNbwqe0t~HZWtd26B&Su4tFup5B6Wy)wNu*P5f&8rznaVsnm^NQ{Ct2{cu31fG!x zjvX1?N;OuW!e?E|?pCK|yQse*_y9+oeU z9l*OkEQh6!;a@x?-<@9Qe-@lDa=Gsw0ExpTPni}~+Rt`_6$fH`OLRKv2o>$|5cQd% z$xpgKS)<5eOz(PJhjT~^j#(8{n-R77m%oqBkV1{1yHJ8w6&qm%v-JX>BM3l?^9B*@ z2LY+s$|DBacsc0a&a^&A8-WaV|j%r#-B$#+bCXmRTvbu+M@!&2}Gidc2wgeJo z=+PWhN~vTKf7?m>Qv zl?@zobJQgs&|7x-t*r3UEKmN2&qz3fC>j95!5)OMSQ|O@IzbNTv4E<-Xi0Zh`TMN#nv&EjN%KsZp1e_`mJ28KkpG;N z#2c5(!zV}f-?PNctyBo@;Wk{VBW{~L*t?g><&zWmnC0@`$q)EmdeB{HXR(}c=Y70t zxxD4hDqpqG4Su6Y9${VRyTp?pUL?O|o#pH6$sb=TcboE&Z_;8ny>6-e1oI0B{t;5@=|tt(>tO{Ljf9W;%_xy<|E9NfLe&8fld-iGr)Z8V7t^sh$;&B(h*> z^@kwqtdU{5b+Jl%6A6?pNR3Ush{z~FDQ-|_DFwz$j+YuM$-8HTQ@hZhQJ>z|zCp8o zZ)?!IKvYNlUky^^&a?WK8c@XDo;Q~L_xAkJd|P`)gY$oD&nFsL`}PC~(%agjbA#ON z;cBz|$L!uTJ|S~@P&8~#UJ?z2`f4auYnp5?ZY_RlrYk`JBLq-yPo|u<^LQK#wo3*y zSUwCkh<==tH=3HSUhi=`8v!g5K(L|Q?QGUuGGNiAWAci*!9mC8VTbUn#;`J>`8jIt z68ZJH7E|;hrmHM(C5N5Ps`gtVpPp;!dSfB=j_DTsitLx)n>Q|$hvfIPp-=EJ2DnhYR*g?*QQ`gc5mr8 zmm1WIzfuDYHADo4UDvE^P3Z}4II!sNmYeejkRv1XZc9+qz1kkGrz67CqAj`VTZMA= z-MvhY7PN26szSN!?p^^?0K`b&YRmXSx$f@XJhVVQb9Z>@4NNA1rUt;DLOlUP`WGP% zNn#UCGg*szsQ;QP+BJ7hT>VU~X=`&J4Qvqj-^k_YrEb$mJiAlp9BE=#jNi#wRMLP# zbr=^6R@~8<>NphcO{I?tIHKZHBbrT;O6!xzi{y2oPjMH6l{&u6iG z;~q=EX))#64dKZLIu#rqqKr!0KrfFT0Et$pKKZm(O2RK9d>Eb>#0pu?80{Ju3 zSf&A5}kiRFpm&ErGvvGl0-Zn2QWah0Vuo<_Su*V`_Uoazh!9D-23E)|9Uzl&= z6n7IQ-Yq|M-)KFtRkjXbk@EHXI`^bpuKFwdO-}GFL=pFE1S!&7Im^GB%YH$mcqLh((=CrM-!_Qj1g2v<<#Dgri)Ez zYC&cnf&S(DHuO4-HzttdAUvj|%(Q&%Ef_}2*OdY*MHvgH@GaT$GYflmUrO@@2Yk%l zVz0T__F$YBSaQ^r7vvKQ10tmhI-NZ;sxl+CAj;a98G-dgr)CRaOl3wMd7slS$Q>8; zqSYW~QF7@K3>LVxn~`I2pF?7JW}u%G)dh{H(FoN~(PVr1UQ(a>Vv972aF1y?@@}}N zwQIuPndB4U9F0&ap-dil$m*gLv!8$(+7&OKAdmV-zWEu9r&tEt_;#5f@A$_HvumKM zwE4I_7Ja1_VtCvt$eV&Za4a5XT0EQr@wdezX1pe%Q1#oEi|r4D25p|+*3Y+A$v*eW z-#yUF|0>p^Tg%07vj5`V0UwF=sof&E?;d&V;@-S!mMkp}4_@p+-?m7GpOar$+^t`- zr~9<|e zy()kFpoPYn+A|Avxb@~%d%mA5hcD@6+AXG;X9s(Gu54Y>E1(>}+gANmbLFxny}5OU zylqK%@L&)6wg!Fojr`q`kkUUVyT?syP+hvaL83KzT5H@ZNjBXT{bI?7(8Y)gU3{{9ilevK?L<%cM9)SWp%nR+6eWU!YXN3M4H(iYCGV`?8#@hrV=p$$ zh;yqOdzP|)qJ&0#fwE0)S(UP9+On4@d$cXvd@ik2cX3}^o;=4F-)hUYPMf z6C7_((9}}@TNfp|no`uwsN)VSkeARcQ;VDcf1)Gr%q*NBAd?~evQjAjDD0S@)q%KkF zXG%o{BK19`3Mus!rRpekj8gh;NPR@96iU5EsR~N%q|_-&y+Wyopi(5Cr=%2wluW65 zO4*UZJ+@>HMrH+p^C-21QrjsdQR)<>=1|HKg48rh&7;(KN^PZ73Z;%yY8a(V-I0o+ zR34>zmkL5k22-kqQk^N4(gP_yrK%|P=V+wPP^y_ymQbXAM2ciwM47J$yp2-FD0PWa zA5kin`uaUVYARsr#yfAbxny~DkXX4__Z~xfqw_CQ;i1owE(M_2bYdU|X9A_@M5v}x zY7to*3(~L@;;dqVP11$VDVJr_nm&C0csXHBIBuz@ujy-g1bg4D9c;N(cC4`kOaSn< zGs{@3yl+ipQhR8Q13JXxp@78h-$--!i;YzHZyup!BE&qqT| zd&jk}tnN;E{G*nDbpYO0S^1sv%13*Z<_WmDDL`6{#z-aju&Qb8iLL6NXUXc)lh4q9 zg!f+bPjQm80W~(k&F_(K7fCQ~)a~-^PjJh3max$pR_h4K7>?Ce4zu~1KEVcjt9L%0 zEGOD50b2mPO<-lRywKLGv_QcBCh+w3#8%b#&3_1NmV!}VleZL)NS&7?8cy@Ay;C%@0qD~xf5v;e^Xp1elVKP;wU!qHOR z$Ya)xw#Dy>CXlHQG!i|M9Kp5PLZpQyBd(t0DFG>zapM8qiM8nRDr> z(pPSfI4e8S4K<1ADq)krOtW2@MZS-Y>&KQZannh8r~%$uOnF*fU{w^I&dx31w8Xps z3ol3Aj%i9ZrpfW0?R)=aU30S0ssd(J^Kcpf*y{$}JLaelf;v|%NB0x$sT`bZd#FEX zI}v(urh9y@_a~Xnv-jr~uxyo&#iUF>WzEf2-+V_tyMBcA8X)3PQ$tPxD==HteORcF ztW1BEayvY^3k3$N`XX}K>dQk(&P-H=0ka)QbX&`)QqAjMd;b&ty-NRl4}L|u$Tp(? z3|2|%g=y*o|6d^zIcgj@0H^u+S{l&jhf$!7x{Rm|w8v{In3Ic#3Q`e9FIO!F5(c+xm{cY5^O1Kg(@Wb#E_VpK0~K0qqxG(3M%OY! zaW{2c3dvkA@QH%8xv8^sQskpV-sD;{;_h!i#Z-v`*k_w1T$edU?X8aQ<+Nyl7M34pRYj zOpqUVE=YcBQxNYNBOltdp0AIV^PXAHZp#0DW^zzHo!F=Df(_?7xQ$Vt9UxD9 zc71p!(to-oj6hA<(pC^;tA9W@#qw4!cW;XGs_V~WYg3%zfIzP3FBd#FlxOvqw>&qP z2lbbaA^I`usm+7=J5lnG&4YWDMN#ol?gPK}{6dUU3>f69^P}W7n*(C9-WE6YrpgQx ztqs!zF0KtIZlz}lV9&SZ`pw;VhqvWZo5MRfX5%ia0BttOQ*L(e8_;mx;CsUN_*Cim zztGHkcB135&A6*gGdezYJVI^7b-wbm4-3B2e|K6C?(-er`F@Nm{l+PdNybQ>3zmoD zL8Jdm-9ev%l|e&-kA5 z{SEH~a?eUWo0NFER-NX>fPABnhCU9Z<1M zVrCzjDn_YLKK;T-{y~Hsv~_eynIL^A0w+%_)7d%FDcrr}s`+oq4{XgGz5=VH`y}f~ zH)T6!8|<^I=tyfX-jE9iiI2JwdsI_LtNQ-O+R~g};mC-P_t*84P1W9|qI3PXUo-d~ zccgDv^KY2pu7+O>zF$st#j2S#V*K&?Po?qS4oR}rN8bR@tRA*NAhSKaO#MKl9H-RX zln8XRsBgG&>(m+z*Q`E^gkw^fe{Q{F`Z{Y44y3Fx)uh91pzyjjrjetFl0J=@o+O{z zI7Xxojxpn7 zZKq{2n24?FFLv0HOJmg1ryqB@=q;CPX{>q|fanBAR(vI1!vP{5$E5~Zr>JkO18PD{ z<@8OMhWjEQYL$Z}@!~$V2EFY=z3mtM(qAz==&5?DahIs^F0DqeM6)4&`pHJT#Kqq} z65Ej%@A#|~PuLutk_^QIh)cc3NU9UXBYF!(YjZvQ8i+20ZCg1ZP%x;Rep1LVpq&iv zq8EGJUUZkIXj&k>TFbVo;b=GP*XTVbQP;bzSStO~Kb|6;5jDS#;$nXa)?QIA6UF7X zW(3QRy_msP%AdSAh5amBYMu|g!wk}l5?7(wRcLZ#O!VqtRioukYliZQX1T*ltJ$*J z$6k7Zu^;82m)~dGy+E->ZTms`~Gf8wD{h6PjwCh~Y>nA9ZzQQkt?SoK5*bTQVR8KE}HWv}!V zXPH-;dCL9rmTi6cshRS@ZN1IcI)f*ARJes;;|epWbz6^q2_Im%>AFSp3c-KT%i~yl z!(9fC5gX*uul8ck%lWVN=h>3%cy$Y3dY2siT3Ez}`%peJ-^<5pbuEjkEGHLHK?+$S zd-4c_d+P|gx0YAG78}#5ohG2PUE0RFho2@HMxotxgSTJpnb&?Z8dr3L{bIFe#Hjj> z^4HGysddlPEsfcVX9k*ncUz+A_dXHFs%sHDCdXHjGLu%T-g4r*iGvs4gdU;;g!M?a z;~Y0Y_$1winbB2<+iZjS)*1PQcYEB?w%%Ye(lT#VSNWi?t&V23m=bW0okDX}No24Z z%ymQ05Ok`1{oO4*Jy(8aPnge-;~>@hXXRc+-3Dh^gc{_~aQdh>a%i#2sw_W=Lbih` zIXT(6*2?k=)Q={sx_MkJfA23=dKNyPHu*K{_oy4BwE!cliAhf-m&Qx$gnob00diug z%E459NkDd0iIolyFav4+ZWF*40K|QAHmsKOB+gh2kLELTcaOa4eM9&GJQ~0*Wwpb- zYqDqQ9h1!VEFmNvJtIaiAB3&abubDuOV8fB^bVcFVY<9!S2#txWK zcsACUfkV5_OErK*Oetf53H|GyQok`gZp<{Ri}t{yo*AspLtGGL&kR*h$xA=z%j5RQ z&wbFFRm%H5=*eQ`Z$60Qx)Zfs>tnq5`rUHM{>A+LcjTS>=M41viv+}Np>}`Za9uf) zqN_fBD~JgO7cot++EE8qG2VNky!WFWVX>o019s6MABbu)Ysp+`6SeNBY(F?Bu%%fW zV(mf=uN|~WdQd8@(+*#lHv#Q#59Yh+v9`cckADIDX(HpW@U^FR$2&4iJ1veJvs&C0 z{o*_{r9m}WrB+lbjlvm3&BG}9J2MO-XN9d=Nb;pYntdAUa^cng4BO|zVdu`97Js5krcH}2v?AB!+w2R&{+9#unKyDHKC*+-kxf3q?I(L z7~`R-NWtt_B(u*gY=YeT^C;F^p741e7|Dx2@89KZxODAlQ5cz+hO^!{QpvA=zHC;d zc>X|#rCy!^9!7_UVODALPz+l)RS54&H#AN45CjSW*RodWIFbAgvj-E5NCuM#%Zv^k zZDha6k9=`ItB`;AVsTh79(j?#DQyC$vRJ{|v)&_i8Lsaf({T(89%G+wXqxLG?a_|Z zwX8*JK(6dM)q_oydwjK+otGV7U1VR##a|B|I1vMe`JRGFzu0>gGEJS4qVJgqP^#EG zQ!F^fsn2hbPkh}C*P-gy3)md_&eJLUo9E>xPlvFr^6RIgdR=^tRNR<@>E^Evg>aZu zV%p8#PsJa8UcPcVpIw!wpP3XleiWe%Oua$QS9)z>x?FN5u-ckyh= zgek2qlRrNb6X|;%ZJuPLLwRZ<`p3`p;3z!NyYMx!Gv-jytj)E3zj?*iC#65lfFbfp zb$#FQ^9T=Hw3QyPHPW!mHc0b8k*%&3W#I;@mn$w-1s4k7k6%#%6P{p+2QS&`=W^^% zPx`G8$Yc#ETbd&K73ii)ro+&X9ru8#`>>ZSZ4iW4PKj0$YaGFtQ=Z(EkhN8y9uX)! zMb;cFgZ+1B;3U6G;O5?r3jog7DjgEIG!5sNY?Qk^+g<*lsY}%EyKmJzEmt}t=&pY$ zdc?y&-cum)k_ishahDQ&R6(~|F25xEv?6U)f0V<2?o-+lL+9MR+6B+m%phLWS<($8 z*tRy99x#J|ZD@lT05b{L>Nc1OuwVgO)CRKvW)ZNwHdqQ^Q35vBqygQ&0c@l4xy|NI zX1atkG0_5)pmGP5+ev(KJ^UWIeK&s!calj|8mCE z6hTocD2$b97ORveApZb_PGOa4Rx%S737~bB2bfR56#|&l1}r4ty4r@ziHvQQ|NJe2 z)yv_(E4;A3T=)BcpdBD5>#Ean6324!U8paq6iB*|wi0gEF~XUoleN`X1~5FiKJrIA zxUj2&%d=Mpgm}0_!S@L+?qeqL0Z|*Dk|S>6I z`Z!i5Pq`k&4#*E*k7uXkx2^}X7WvTicpf}RzIi=}Ck~Q>{v68l2FVlt9L!4w$t(UG z%r?o}|BPjI@;CTAC3n6NiZanR!g=sudE$*8JaMpm|BZ6CTK@G$nxSIIt>LYm*4lxw zDtYE#+d3u2k{ULBq!T_FdFah<9mWFG6iqG~{ZwgUti1f@pFA&CUg{da^9IW=xZ=8> zf?hQREpVin7BrkSU@wRL+l3r9E%GH-e2?HkZgkgM=m0_|4%(Q+s1+L*vvqvY;EjK= z^{h%+$JkSBmlDny+M!rE!?R1Jkh4&WCSro$zqB+iEKCF?U0;MDC%VP&BA9Q5@Tlbu3*~p&YSp$`S8rgcDKTt{V zV^0Q@pue)!sNL|WWUJ%8gDp^{eC5aD*apR~Ga9{38Qq!1vod9AXE-|Qm1jG%q3on` zv@@>UE-9V;SuEE@D=GeLFb|Ga9`t9`yl8-8HnADzssXsrPB*SOPyQPCaC|@BQ{h}= zVx1V^}>(vG{5HNm#@_QFHz!(g3CR;rLPmvU>^zX`^ zU|Gt$6csAt0uXIdz6!ud)hmn4?21_hHSt~drqJ&ulVplgiUQdN9v`K2>c)N#m=&c_ z{3?#*CQy_qrXY3$?KK92(Q)O4U>4%n0FEFdN8I`YKm~Sv0FuEFr9K z)Pke5b?ImCulg}ERp$x6BJFaA_`a#S;J(fWLf8wev;PNTr^BY%O)|tOJ$f)p*r+&c zDBf_bfDc|ozg>Teq$Ezs>%pc6l)fim?r997n|03m9xR5jdgsrf>;sN*e_O<_atq!nZFQcouq+l%{hXtIUM)Hl>S>ZR$bN!Y1~?OYvm{(A3{i^v;0x0!LzJU^ z*hAoz8NqU(j$0zwA{;3dV?+&f9M_jUz&gx_WZKHCbn4H{&Zd5BH}ic2 zHyaLLM}z5%BR_pI+ zMvvyI-t=O<7^ZRuykm_g$nPaM4?8osRSFgP?~#X%CB=)}=OSm2CW>66$Qh-1BKIzG zIPkfanaQ`jB3_v=fpy0mSulZ}nzCJx?10^gqrm}@si6!wpB1@{B1isfsZ{{V1VHc# zP9Vva0zl{6j9{x2pP)Q3kp=OI3CgyKY*b7k>@;0*Sfe*3U>xbx4R~;1l}eCRPY)NG zp=AaoDyB)yg=t`#%tF`!Wx!;XXFifdH7wGsO#j{bIIDD0d3rLN%bJy|li7FdjPk{u zY%yEp%&@Y%I6JFUPi0l?taE5K3-aPRNtuwtx_8#y56$V+p!)dlUac!|;@#I>0(or4 zeu9j5RwyzK@;q>Y|g%ZGucfYfCA^XNFX8b6; z-CnyIz2fiGS7wRaI(KfO$l=f~aFa(l_bz6B%>NL;jVaS`ABf0$NI6x=wsUENvi3oC zkyoTE4=!PAf?i4o5eoy&#R;Iq@x3u6xG-JmxRlLgb#-6 zuy;&qK@GD2aaX%ggA1T?aTS}&wko4a*?6|s`B*6%!cqIXYuGt-k@B34)pJ9pb9Nb9 z$9Pnxf-mhYN>1W)on)@uqIXaCc+($rsAPWs;+BUs;(YketD|y zIKp2DUDu}St{|*@ELCSiIF68Ak*Zr_Pt|Q$m#TXf;o$mI-QXuub-SxlbsV85n zJ(a3!L8z2dbZk2sD{O$x07+piYT{6`y|siLt6C5 z$CS!e?yF)WZ|_+Up>uER+4?FLfnjj|Sj7f<`5Z5V8^pRu>AnG5$yw#z4XnTM$`PpP znnYin&T!PZX#GRNr8+dTu$Y zbbp)8>})xjrUMG=T%)(;sMGc~+r|0z_mvUvU|&T1)u!VoGgr($2i$UiXV1r+trs&HVS5?xsLVo-*F79y8okJ z)55kVa+h;_9ebTk4?YA7;_S6XFYqf4Y`Dm6=e=y#4NC_6{!drLM#5G(8ut*^c2U2? zXgllWb;uP_9@B_o5tUJdN4y=`s!{lm5Y{y+GR9QGcYH)_{m!d&|bmCi#F{5;}a z*Tjn^@#;_l6hvHg2#%a|J*(6nl%Ei%kz<$F#|+B z3-mem1j4Ct}S9 z-&pz#Org)PQS_ORNT12^_*}3qFkeJ|(?k>&DjFiAN=~C|`aCznRkLy$LG8@UI%kTwTpHWE;J+@JVttdQTK+dOexvP8I0$7S`(; zSI(p_j7iV-_DueW8}$LH4Y%=>>do zoGwhR3J;)3S^XK#2%sRsU5qjk7bxo6BM>LF1|o#ZZ$ z2Qu_B$Q2lWLm6|FO=dlmCy%ni89R1@Xl(?B(x5KxkCL|et>7X-RhfU;VX$oUuA&T5 zkEfenq`7KaY1H|bZwADbFbb785-ezg>kG#z`|OkDr;CbQ35hq9yFOvb0qxQD^iu-y z+9x@<7|7lV)KZAg_LuB3j+0+qDS*b+M9I6q^n zSiUmsBziAj*>aL4AUb)H4M5~N$)1Jz`RwPc4|4lHXLdwcU$9+>{`!I?^VqkYqrPPO z8MnTzu&-Dp?={+4^%Z;Fixqw9ST@UY;(*zleouhmwDe4Z=G8#5p!E zW)~2)W6YjR3A`*8v2EoQpA`uOK5>UDi!bE)zi98^I7kJ<&$FHuLCE9kuQlj&CSB1a z+b8-)Z{kmL*bb`M=UMPb0(fbFV`;i=mZAXLCl-y)yA7<}EP3vTqd<==*X2 zvgLa=#8?M5;tJW7P^X;!9*1&^5_f@>WTaqvUCS^Up-RQmY@^=a3qoD?dyq(19GR^? zgs(2y^#V$}O8|ZsrhwZs4E7Fr_{9->hQ6t*!}$JQ5d-c{zo%;_xIxL;lFQh;|`_czu}7d=`ZJyf3t~RtWH_=6T8HAITtpur3~5cF2NOYK=J(< z+e^JO_Gh-00ej*X)}Qz6aWz%f=Sr$B7vVL876k7XVEg)hjc8V}qj(U@+*CNjmFF)y;EZi-h?;Ho|0I6k)1Fh(4R0 zlS_lJ<2RN^P3`nMd$LyyG!YLoC5qLPA+#Flv5a)a6%;KbF*lUGzr%|M@~?kqDTtk+ zSK#%6j#>X;76a|-E3>Qfm6AVL-(Iv0JM=qjcnj(Z%)(q3d$=ophdTaWF4qi@eeef6 z3#ZZ6t1Qw;W&JDHLQEh|TxGp52YagB}Tu_u&u*I19Pv1qd^PzQE+8JCm0 z5Ab)dv3|^|oV&()hFCvM)2%o^ch3F-gVaLn!3z9FmMxh!_ZAjOT<&Or*9~!D3+qO4 zMGK4RKwLjKr0i*75kZ2*S9rmgGDmbQ?x5p80^uJmtbbhai9sb!xcCY{SbG!CKOWP)@Eaaqk$@RC0H&iWAKZ89C5*)FcYILD~>-| zzerONl)O`lttDv5<+yr0S&9%Qs5<-SHT!DreA8t=Fu>aYBfcKVNk#)U2FnJ_FEV1Ld1W$uodQSoXE#^CQ=4ch@^iff8!QD4T#_Q zb13x$qTwY^?q|k>`fYRPgnP9}?>dg_z`!!}ni!bs z?H=N2&bu3Scyg0C?_XL4g)hJQP-L|kHN{<}8X$aeYmr}0<)qdruH&|rhl^Q;J%I@0 z>dUXr@qeM7UVG%^N=4`=S6~(DaU{ghXNyz?P_F9>jg7RKay2A*8|WngBJl;N6tzh^ z1dJNdMz&XgNbok$DFGts+d!%S?P?Ed6`;EIAaf~6v9~=aMu6)7#FviRn578Vf%ati z0(7W7s6>E{vs<9Zel2i@RV`GSy?O6Z$0%oOaTUep zs{6I{&7uhW2Fz|`9L>26H@(%@k+hu+pV4r(gBK<#X6%eP;vhD;1D`P{u@)YPM&eDf zKh>ZWrd?D0hW4%l#`Z9=^?8vXD}8u^u@~gVPh^nL(aJs_9)e4ZQ$9S*nD$d!U*2>w z1J7k0rlITAua!9+d5ljU(mCoE%99;=uus0oIF%igStK%>lw%$Fh`=uQ(84Gd)}MuA z)$H<4QNlX$KFa7$Jg9Sh&=`+#fqlbyZztZ7@dd%o2Yh)TyJadljC_WVZYQ=_-A<*+ z$U}S#lrij7eEs+%A$b@9%}%LCcj~P8?FYAU@`4{%d(vs3CJ`U>1;~P6I0J7>xU3hmK8lLXLOL)bjim59f-hBmV>090@=mA}E*Mh&)No15XVw~>o z%KHbc#(3h}iz~FKM2m{nDAiqgw|<*Yn7s71mYc<0ak57in>QNu5*mfCVYU1vz{ zp;?=hmacp%?6nC2d(m(lctsMmIwgfbKdh+MKJm{skFXF4qAf^U)dGHA3`*!JD-neLwA0hC+<=f^xz3(W<1}62Lrsj z2l(bIu)B8?^xaV26WLRt{G)EdP#GH%{$gJRF9D2|gd-C8AH?l8~cvn^wT;SzFC->yN!2-W>LI#l1laD}jLW_LE z`9|cb!+Bpshr+o9(Zz5+3sHuJXW&R(Y2hJV)Gwi3MHd~j&-m}|;J%I66M6dPcgAjeyoA(PBLZ`PB zbV5;YhjF8pzb+W*H|8theME1T_u*wcZ-l4$SA%9EZ&IXrHBUh=gEi`_UD@r=?Cx|EdS|fJ_nh((fkJ^$yYJ9 zQ@qe3YmDg5C5@Yv8)LB6w@|u2 zJTXaW{6*$J_Dq^C;5XaKR$a08yQVYBrLlbN;8VM>Pz1g~$FY|%M|H(91s&8sc0w@C zd!zw<)jKh{U2u_9r}JJoEbmX}C8ZT#!RcyD^4oyezpO7N^@y--VB%kP1Y_#&^v<~s zZwcaQ?s%#@wo<%cL|7K$;xG_QL?W9gC%Y-eQ#>WN$^181cD8j2d~gf&;Gg64<{+~j zh@p}?cgdR&fby*rqmCv`#kdB~ZR!Se8&ol6^7%gNzQQ_|yh&M+ z$*1wBZW1@)Y6k2y|FZokXHOvU7y1!;6jtyBwq)ueU6FC2xBfa{UWYU&4UVp;dvzXS z$lk?Xd?p$c$^+wgI4&aAkK>8laNT)m9Dj}Z8=-Ygcr$KpILjS%Dax7&yxeFaU`M>D zajYJzbe+hP{RCMjkU2(`rzo=~@`zFzf*R_2dl+@4`^88NjR1b1$!bsDgp`_rpFxAw zS3LH9e67q2ONk#5KvWSw)Ok&VZdPA!mmd)~b*ZCF(xDZdafjngAdSo(MmpTI8J<=5 zKee;sn#iy6;CGa3llZ;2T#C2f6F4UG*E)PZ6E53UXVRTm;&|da%8ORM3X`wb6fF41 zmB~~1@J_ z$>qWkcghrx8RD%zx6kE*5ht7hALL)h(erd}c174cI*|k(f<8DB$n9xQhP|52@9j_s zw_eR6XX-Tm1T$&2jJNvWUY84w%x%iq>3o&@au7;F&29|IbYE)7!6jUY3GdVnL0690rQV8RxyuPHDt%a}hv$c2?2RZyC z$k^no#Wj+0Hit*kI_;OsLwM9tB`TNC=|qR@YbWfuvQVmWd2OKB=R+M0wsYYPE#3|1 zu*+jB%gf`-pryz1_;gmGM9$#vlJjo{9|~aCyLc_4gLm=tpb8q46$)B0|AJ0^hkk9Z znJlQ@GojuXlvy)*KDV59?wg4{2#>9<&*p<^FB&k1_Ym8m|Gu$adfQo6v?N!(BN*+5 z1Hh4fRtPa~4zCR$2azlAEcN>-d{1}I2=6@SfVtd@xiKcf9Kz2_53nWYIaBiar}Tws z#e5Hs4OoQ!a649X23&zj*0oCRJ={`iT}w&&a1{bds|0>y0W05U zQW1e`h?RyTSebwo-UizwU`6d=H7k(Ai6$C(#PQ4SRFGMf*dW^1))hEP`OgCdU+`W2$k)6hpDM_`cNs>?!XxpQhPB z31vnhPorzmErq-<*PT%g7V=+U_rCKWj|#j}DV9ymUq!A6;p&o>@S#e?5z(>C)xG<<_Hw5A`R!&6{SVMc`(Y2;=qX5}p|?=4l=VuerhHZTm62;l~cR z9-tCe$9C4UqGa2s&aR^2wq!U=4G*Etd?ofFK0%w`J^wzxs~+MbBLvH7j;|coVdUR3 z@kxkLKCWW?Kr49t@(>O-`AW#cd=$nb=V6%4re^F+bnxn=ejSK|f3vdo5g7Vb<-{YR z<(D48!kq8yvVxZ}V-TAYM*}Dv)D&ErJPv9BTF|x7%~m?cVLghH+z!2H@P9djTR7dlJ{me zPV(OBhJ2zyLX*5-azplN5KEHxHaFxo4HA*$z1jy- zl9J?o$PKwigN#k`KH`R0HAq&H_i;C5v<8`&7dWXNG0lNzAE!xK7ytk5{=OD|dg3+C?6jq7z-t$#_A#xp`6o-t#PeQ(C zW!#fI!gvO?xdQdL@2zQeKJ+AZ6Exs!nYYrT;x9Lf16<2SK4~<~gvZAYiHKNZWEF^; z;#VJDT`_UE-eG*c4fm*#H=SR7u9V{61d<;mXP`qFx-G)y|G;y3-=V39Qt2vFh8<$lxxrP z`?=*CXY(dBzEkKo*fKth_6A_x3;bp5ecveY)x4^6FcALhUc^d+=L+8_`J4H=$QZ!l zPJ1N~F74t*!X*%F&3w2GU8P=^1!DFZszYlfVv&}i<6~54G zn88nD_sxzmy1_fg=QTfE57g4u&#O@Bf8{w;oIx6N3J*_JhQU z{smr@sSMw2zema1!FzSy8izBQ7+U&ol$7N=cw~eTH`U}r#iFY^Qt=(pSam$e90!|< z@Y}}lX?9YJl=>ZfEQ?XRcVdQYQWAD@OW1BAqF;S;%V$=Pq)>0nv7sWs$n-YX`j^R1db$2tze4MV_Wf72p7fugER>iZgeg|g~xcy?AO@4U@px-{uQ z1-%rK$CBjW7c%_#6#C9`th&+9!#6-RYvn(SCB7G5f#$eb2dLMvw4%y7WlSwB+`US1 zEtaE8%DGxNDfEhA7k{C94ZZ=4uckTDTkH(>lRZ`6)CJFrtZJ~*u!|2F5JGH=4gUM^ zwZUWG!X9p!-(<{y_sFWQI7B~%Go$#jK)$VnzQgbH%gLk@Y^8oQermnDQuPiGF)zl& ztT3R8`JDYZ^rud8zW)wyW=gXY?>zpm_k%g78sYH$pYI0=`(NJ=UOI?k5tS<85ig>+ z6|g8ICN_>yChTE-y-->y+Qa&Y#It)?kG{kYZ}pBL+KaFYVLQT02%8Z$Agn{7(|cHE zAkjKpR6{dDD}w3J7-jf-?B3*}!-Nu#2qTdEACCx24hb2FxT*r_?Fc8q;>-6~PcJ}~ zmiO?=vFNaJ?mZscm&m{<3Q;UVB0>s67J?Na4`Ct7EZ@sA&076s0IfsVjIiUd^QpbO z2=4-%KKuAv!mz8W=lF60RIB1czIT9b2dv7>1-6x|bwyp1p+)t@zL@c`l7SF@NgozR zBHK$c?NA=r&+!c?ykgl8h0Rh9?uVaoo3qaWp418a=YGP6@h~gx!oT%`!X(ps6t-d} z&UM>TipInEI;*^W93EN37mjmxXenoIlXlC2&WKKgewTTIxn3WAr>J8!HO^k zp$K6u!X|__5e^_6NB9Y$6~X+jm##0uFoZD(c?b&-N)R?6yp8Z7!cPdlA#~W|RjTX0 z2Za#g5yl`)M94>2gs=*s3gKCVml57Zs7Lq|;XJ}sgbwd{=`0At5GEolKv;qBG{O#q z0|=iYs0e(om##B{1tAt;%-%^}x~WLqgHVXD9^vnQtB>FXdsC{e`!A`wyL*h$C5MmE zMa&x0M)ujpF}mSf#^`=OlKNz?kRhJ`S&)O^egtWU7k(H(W9z|Ta_aD6M|Tpqlg^Ew z^P)7iROuYz^+cFu+ye_1kED0dI?GgqY=kU?$p{miZ-#ii!jw-8UOq}yFE72~7lo96 zAFmF>E#v0Rf1t>cHUI8;^OsoeT(Ds2{346R5?c}(J7n0RMS0+8NuQYUcLIe)c?Eb2 zlw#`R73oVf+4Ju$x_|Klilw)gS+VxO5_ z{m_cEbW6_sB}<9xzW?F* zD1BRlv;Pa7yKDZhIy}5QG&2Xxwpf=ezHiCh|IoU*>-`JvzxQtHBezr|J2{&|y-u*e z|F69B509d{|NSHzAi)$@!5WYs5dy@5I=_FIkS`Hzq#UYsq@Y8kxQbvXP1_6M|oUWe9E~^1t&*Z65W+Eq%8i+#)>Wz z=^?z)m7PitmGb#-z@LRbDpf9=!QN=nKbWqQ>QerEQc{NSixj`okTsCb%pe^VY2_sK zB%2&m4>Wu2iM$(eS1`4t4=nD{NAYFLLgVl7w)*4=sKg^`~hk$kzex#^=tkyVM! zye-2+5UKDwUJiwIP&9&FkcnQ(zrI*H3f91*g&&R-{u_!V9?VEJkoT&jy->XMZr2n` z$H8_u7UtbpERBZ?-~{1^`7nM{v2?s7snRYI6LD;=EtYs?P?DDxOEUlWah_zttonKW)&K{D8{;F6Ky)_Stewq(?+$|NtA<%|HVG$G+ zR|-Yp%b+NHITVGjguJUHRYB3i>Nk>K?yDPK5XAzX9z4q4}}$Q7_5TX zuo~vT5+3**0qfAYa5?-DY=$FXTNCfj97&=BM-;AuM?uk0kA|Y5j)a@>kAgekF|Zf@ z819F8upf?wSLbP@DQ8@ zvmY*&X2Vf%4$Oyh;dEFAZ8#5>z;j_4JP%gD3*ZvC5Z1!Qa5-E8Ti~s*9cEqFet+u z=)>W#6p97md^jdSqLPFMm%t2$zFL?C8{jaw0_MP0I2^8qxv&e4fg7O*dte4b#UFLJ#UNk-?Z*LLvv2!Qrq1j)7IsgLNM%p5p9(*mE&Q-t_;tFe z@WZ(9!&>3DsWGA93ZZ>!OlY`T=pt%NXt+_Zgp58${~umTPK9GOITb9Uzrw6qNs=C? zCSVkbQE?`&8irHyDCOb18b+C5#8!ab1!cG!`tY}~6t=?o@LpI6-+@cuAH{H6L*hMH z4}T3C;Y+XuZiMZy2d;(UQr&P1+yY;RyWnP6NyfwkwFmtOJOmfReEed@8`WAYT@Lfe zaE9=s6V!q$W(eJ`K_z_$Vcfw}) z7Hoqrzz(<`u7f+^X4nRIz%{TJ{u%Cv55Rud3$vaqmR^C;1c_}V#=^hALii!n;m5ED zegJ2~KR}s#ISH1d7s4vE2u2p5m%vi=6c|TWiTxC4IIKm_h7IgLNf3Q4OvE|h2ofuB ztbna>C0q@kgI(}UxDmbxx5ITXo8AzEJ?IAE=fon)*^5p#YR;RBK7ba%NF)12R3tq` zoDFudpD`#Q<>L4ajyx!Wkvew#2o|8{!g4-X2xat7VH7<9`shnx1ILemrD%F?GO#=n z&PR&}vz72H*vxTJxCA{9)^VN_MOJHYT!W((hXU)-HBf|6E^I{qLhR=RM?n!bg|G$x zop3cg8@6-23cJuZ!Xor!xDkB?w9y4{J9-i9f%k~2inC)H+>7HXcmUo8B`zeMi%4z7 z(lXG;aURS?*TZJC4D-;B!UA{$l;L&Ihv&d{GJZ5HML!7V!}+ihCYnfeaKK2o1jpTQ zGbc7-4f+ z?Fe$=6EF|{4i>;?pbSri{;JNK8X{kg$^2_u)1s#$i}J;nE`2=F6DON@cFEaq6lTty zbncQfpQ)O8<)r3g|I)PosYvw^y+33~-N$B1Wwn|29e+$yU0WnC^4{Asnr?23jLYoV z-t=%=WJ1QfO}pD7<0B(?ru;j1HjP<{BfDq75gGbXDsjV~Q;9o!Q;FO63?wouKX2O2 zhcXNHH62_T88h_j{WGNDe;e>^&1`a?j*K61Y1T|~JFrd5YTDKw88fMQ$bj!Ze8D63 z)TTJ7pB%ws+Le)U!&Z(;9@z9wd*qm5-;S9nUGXerNrJ$2!~%{zSI(UYDY z5Qi_yt6%@iMK3=u^{GGdq7j?O?&uNETs-seCtkcbStUpAxg_oT*CjKX5^a&unMeZ*!isZ#R-Zh>u;KOTOAH(P;9+shalid&rnD7X@uFxr16$oX z(!HXA{Qv&sHu_(m+;$%QY~7glIm(s&hx-q4*Q@SOkQ}VtObDE+rL>fkSr2K>V=t}8G)739TrcUbqFS~c7^kBC3 z8pUEL;8fYX-ZuKhNT^BXK*=&vm*{FIKS^zkX3XC_b4`eGzIk)Qr-MwXNx)zg}a zDU13kO>Q}TJX)I8xZ=_BwC4DDv@)&9aXea;(tMb3Bp$6zYr>IuBHEaC5QoI0tJ9jW zA|BnC*38!NXir)*Ime@YY0YFDk7iqkD}%{69?eT@Cfj&)dRjBtCgRbOv?EU(Fh8xC zRO8W_v}R6>N1M}{DTxfHHB%88PU{Im??`KINIbeXt&bR61EOg?N$A3~ zE)d#JYXYfwv@ETs2wj=hOkwfplC&mbj7RIz`h5EqPsXEiS~Gcai_-cuq35S{sn8W^O*9{m zE=cQnLf57>ksk#*gibuN+J4E0Wk8Vk8X6SgdH?0o|eITvB7g}-;m-q*vv(uU< ze(~tov>q;W!Jwx8j}Q)h&_O66bV*vXmgF9%b%xO8X?;lO1!?`g(DAhXLFl@)rYH7I z7#s{QMA47?CJc^-Xa=yp3H9j@u=4Ahusp3Ud3ODWKZf&9V-HDv29Fg5jcx&i@5GF zO?=CjJ#ugyY)j^X0NX8oV14Ge#E#TwC~I=-Nnbyy_og)0Pi}oFJvapSr}W^=AbA6K ze{g2VPU*p!A)3;unIR$Nr5s{SEw=oWre>2{K}w4isMw~bv{=xIO;2gDpc7kBN;7~a zx7jHz)@5R=NNEO8HnP3I`|oR_I&~m-Cbo{+tk@+DUTiS49RtU1e>Kt- z=}M+gDqF(o_=Tqot~VYN6)1j>O8n}R*u>gkuu`QZP1|0JOw6hLZeU+!=eMs#Zq6Li zd@T>II&WMb`D^CX=A|>G{|lql6?eY1G4f@EALw{tbL6hfA<_pdftpTvJEA2H{GwRu z#|~lAZ9G%Lvawt&isfPXSRtlkMOY~|A1lWyuu5zJR)sCW;#f6SgVkbnSUt8JYsOkJ zaeVu2tTj7GbYb1t7HkLBi|xnyumhM>&texF>@)eK3o#k9u_CM#E5pjMDy#-;z*?{l ztQ*^b^tVye|Fb1h+b)h@&hh^{6Xz6HKI0jlXkmlf;F>9=J73=x znH%Yp-^=XI=p6B02!5ZWNu=z^K*Br`;mL8ceVFx?=|mBZ=rv^zsa8;91*LH zy&U^@Y;yRMPz%MA1Mvjwm-=o)>Sj$(`Uc}+GwM!sE%!>V#%u8I^ZI=8L~**fs*TA(d6 znvK=Q2IB*x-n!5F-paM5KGyRbyT%C2a`Ota-^{U|uy$HsTHjhzZPUKozQ#`2_t=lv z@7kZ)2keQC;#}Cd~3e7&pNZTBhCZPB=<#kvwO%r(YwsM(_6=_{mT2^ zJITMq&*c1Z&fgYG{5G~D_Lta?!o09Ol=3r@Pp)lwvwWdare3D@tAEpe(7w~}G1`si zjZY|9iCJpSHp|TU+=L1<$DU@NYPa|Y{6#@`kQ0syj|-=SlAMujAD7Fo$fk0)a!{F} zPI7eTX7OyNEF<|~@?m+Z@`&=>|#RPy2wJe`n>`$J&!^$3D$I$3DsNoYS2PoW;&k z=Rs$O^O3XP`PTWt9qk3)HQw#sL*8fJ8@>@VhEnCg#g3O9?Huh=?N##w^D}dc^Gx_| zD8)09?dxRuBV{Np>m~hu`w6?wzsGO!pYdM`HU)|5*d^g7;Wyk}sV*b=Xm!4vZQR01 z=2)xj5A2hj^PLXw_ufu#8vUYOwA#juh%Zx9dCfU3!n+o6z^@d-eS^oO_L@j9Fg7 zTju@BYwmto>HqUQ=Zq}&~|EHXydJIRZuc#Br<)xv46hEQ?u_JDE>qQnnypRO-qH4H-)Up?D*X*TVoWm}<1;g2 zjkP9O(=6H2E!(=(y2Dy&t+qO>wN{t4&g!-{TAQt-?L2#|oo^S|zqEg4ci5fwI=kE6 zNH;w);mmMKo!L&AGv6t9Dx6AZf%BZR*6DKAIo-|_Pw{*&%b)7s>ObPQ`82J{H6(V%NrgL8tvHl(uI`d#DWlZbx1$ z?~^Z47AXzNy-KFKhK`%qMEf41AE6(mAFGek3-oEasylj-ewscA>K0th`d5OqbiB z{9T!#-l?upEp5N{6a61F>1pnLZnOKcyWYLnTkKuWn6Sc2w0NI*-_gi&{qcUGulP68 zz#15cHu>B99ljk*h@BWKiOr4O68ki^KX!m2>BMkmIGgtIa|Whm;iIDG^kqnuAR)gl zza?*%A5orF)+@crG*wkg)p_a)HPlYkmT1>%pKATu1pO-O0(%?9J?KaYcY-_F?e@M5 z{vP}@_&PWk{3pna4UI{m9+rkR;jQ6gVLzA1l*Etd+$BFCKf~ZOTnW`m^$PVK^%1pI zeNMesdqL~gKG6*QCcR02l!@k5y4dIXKlJaoRVNx38`m3c#;=WS#;3*?#t3tg8Jd;m z~x{>?yg7t=#MSGoM&$Lgs=h_!Bwba;m(sEnur|j44&Gy%J z4vlrGyTX0lJ?NcC*DUqx{N?@@f1jTpctKsTEVw)PBp5^8-4a_9>x{h`+Zy|0?8DfX z)ZoEbPB=0g9Zn04&`X5phKs1m8^U|TCmDjD3ttFd3pa#sGJ5?f>QTyQWr8wQnXagctAxra%9#us z8tJEmBFofKt+^0OGJf^fMtCim>oyzOVM&&K#J!Plzk@A`HrP8PLE8o+( zj!>iOkJa&N0d1g2oui(^Y_eEYHBbAM)~Wqo`$ii^Pb*32<@!SXrwk~knl)yV`Jy@8 zI>kE6s<5whZlZ~NK!5nwx!%3mz1w}3>VCt$#=F6*^&aqgyidJ--i3apf2Dt&f0O^T zzuNzuzrp{v|D7)dxxuJlOfV&w7RZ4S#26PJ4E`AG4n7U`24B(6BC*QYPh+>o68Fab z6SJ6R%fg#zYz^FoRpE(TzA^=aev(-|*b)Zf(4X9QSl@UOHIt}Hd5GRIjLSPQJ%toim` z_DZ|YUgc~`ICr~Gy6?E3x!<{?yy@Ot?{a2nBF`^UMdvT}wJSE8z?-l*QIzOC+6hiU7z zx3$l;lc@28zEUqVT8zY4^8)j7^H%d;X1DbZtKXVKe4;y{GtXJ%6uOEVc&B=*U+dpa zlr)TroJLIer`VyGRFs*VGfp-Q^YL(H_-y!F8Y~$o%S?V9FUdcVw<^1p%hapXU#N}h z@6>6UriI#UZN65aEnqabPP;{0meB6k9@bXVBwp7xF~RJj3csLn{Gct=7wfN4iM{&S z#`#92vBAD#PMneT zX6Fv)KBwL3a9(rXb#@X-eCD3vo#kEY-Q-R76OBQX>EgQB(%8qbJ;XtUVG*O-g<)Oz zdr_LoOcCr#Bk63Re1UweTrWQ;KTB77MP4s&lBX%M(yhLu4%Lp<&ebl{ex@ze8nmZr z-)~Wv@3bH56Lm#*nN6-IT)S7_pnsu%uV)(?v&C!1D05rF%wWLz&N|9I!(MHF?qs@q z-8|3m&i1N^bB6gp@<;n+ew9Bim=v5GWQIpEE}jz33eO9#2(MxQzAb!!=SH- zqtrt6eDyu`9&NMsq1K^aVC*pFnpK2T&s*PE&)UBK1g&5)p+;%2Jh(qt8?-U5?T+=v z#xf_AF_hgON_CmZZ_ab&tL3lcUgaG1es!caS-VSHrG2G+uZ`9#^q&y{_2|Qmz$i`_ zvy9t~t&GcG8+qmgbFrB)UpBX!J=9A!Bf%VNuQlFYWM5~mAY}N^mYmz&Mz_O##r@Fz z-0k-ye@(1A_Ia#7Har{~p2W?Y7cK~|rz1a1&v-5Th|!Z;Xym&zkU=pc zHx3#@&BPM(YV!v37A|?YWB-FdDNTtYd27knJ_2jgRQ?DW`0vCCss zV!Cb3Os)mqBu>6e$zrsdp2LH(<0XlH5HXl+`l{sU`)9AktrDj6qCGzyLBhGJNT zXUs58q1bbY7S2x?R~R1~5@qeMXR;*dAp+=gesJz$ROoTf_OA1n`jeSJHpI>f&u7xD z7NzOPOnz-D$;Yy4`apK{S^DeN25Xb`w)KwnK5L>6tv_3zT7M;~-p1{!3MPi1iqCat zCSNw#pzqVa)mNGuD0JdebD!DA@}b{6-a5@%Xf3hgR<%`Q)mn8{z13j7XYI0j2p0EP zXAqXh?HlY`yUwm>{CbB@mhI#c$Bc6FoUu;6Q{eo}sdj3dTBpwW+I>2>UR-p0W-_YQ z2A!IGew@wT4ZzanS}+JeqYBK}sQ{SG4iZle6{MEJb~_kDW5 zE*aT|)EXIh2PAn5d0b2mD&$JJP$^Za2ua(O&B|USn?6{oR;dkYo7%2!X4pQUMm1S0 zqkwU(k)g6f+s-T#)n&bmbw?xD+dhShL=D*}Gb#u@>y1{Un-(saxn?2DwFPuxsXHPq z@BHE)kxMg9%OlXU30cbh8bZBh;_A(QufK;yT)&^od}#-3!!F|Hh?GaP(VEQ2YPCaM zt9GgD)NXa7dcdr6>YLVl6|p81xP|U?LRHA6V4wo#&sCHk{-i>Eg{Gw7k5a)F3S3F; zmA&kyrQt2RdCS6FEHh9OEGsH2ODim^mtlovhDz@DdFHi?*uD4t`R|L5*_nBsGiT2H zo;fqS7GE+ItEOG7cXQD3SvvP$qmDBlX4L5#xK1~T2{iAL+?!?abFa$}vQ)n175OL| z!MlARUuS(;cR7sr>l`@|j5S_5omHOB2eOal^}HWDUG+TIci|UK$@|RF{P*XpzBa$d zc;A0kz0}P`aMixB-i-I!CO7oX;4eN=71^gh>-n_Ibf<3p&2(Jaa7hnUc0h4*8fH=ppoo=*Rm%C4U-` z-2Kp2j{uQ4%AGi>Zzz9td)4H=t;}4x87z}q?Z=HV@6S_LZ?4LY+|5W#YyZCYCp3=L z*-oTf(EV;IO8H(Lc+=&|^Op!sS8v{mWU7}%q$1^lAllUPw}=%fC7Cug`i9G8Kc0k$ zTYwGBa0hJaHjoIEHxCHtEpk-%Un8g@WrthbF2qIZ1JVq+e!yspjucaE#Ac}|&3Cz6 zl1}b1(Av+f@hPG4`>NkxlyH2T(q2L^^16Fq-<0v2+_i(sv0sWp<&V|Hyi=ain&Buk zR-~MkW*`?=p~0s5bkgaN5g;w&r&~nEDJpV3HE}QBd-#NrL<sk6e)n zdXG*0iL%#vtk&Ol*fQ0bZeG+zhFbPV8%L)45F%nQB*eTwf8K2M>oU*y5kpW6qWzcz zXq*~{%p9(j<`3!(?Rx7w?%rGCF5T;*_j*bvZyOStpe20Ho$!F0ak;y9LNOW{R07gk z9VIGvoV$AD<{<%rBmjfSR#7?wo!_RGx{D!)Mq62eoD@BPFL+d565WehbW`+B{`@2I zz@Zb3*^g)?qV6X@JajPA$*&GgHhfj8!SdXgFn*v^4jC2@AQ}*T-bRCepPKzUN=d0+ z9qK2~8`d$1=oKj{R6Gq=V^g2^aI7EJBhsB38iK4o*{mfNNlx1`GSn-iFo~-fW(n3r zX<{lt`c{@Y651F{8xe zue2c;|Apo!+VGtwPj|iodAk%XrXSXhS=o;!*`9Bf-vkX6{!}RtI({@a>pVO zv#66O=3kMTfLNe9+D)5=Sg;!Hjx9jUs`d_&cfN(kcjt%_Pma?r1E_I?naNaEyPjUo+B^X1}1xr(WYM62#LNbc#Jck~ z)~kU`SDqRO&fSMSY`chUWqUTsd<@V8e`rvTD%2{ln{3c zkalF7S|+ly3dO?fQX^?!QJ>T#{7UZTANQ-Q#~T0>r#i4c!z((d3oT-(C`}=knI?~ zJdDHZQsV@p@9FdM(vkhUzTBR1ntCum-a9g`=n_>z3o4=1Wh$xH>vWmwp;CxHLkiDr zEj?>0c^qgS{-vwmY@#MLme!a`vH;o>*FtGl*hdluM{yLmgxF3mxMP zrh`eH7S^6OEcB^&q!<^L2aGp*_`8~%wKgfA(tKo>SB`qJt0vu)o+*_PI>0W6#K)R7 zv`eP6hrsV2mhXulb_+aAVCBQ|p7^JVG)_O)ig4Eot8|7ae{7)IGCJ0^=J8B*@Z&mN zMZP&h{d5>JfSGS_@HRe34O?|T)2{f0F zjrJr6L0wsGc{*vTnFhrII~Z!f*}E%o22%O}p?>4S z#@*q+Po8_{fZ!wRNs@l{{COmPy84c&485b-;lE$5ytDs3YyQSitTEU!(pB$A+j?Ch zM0)DUS4!#x9g?(!>1wYMV#9o6Dly&0mPKqq>*c{oefqt0ftU>T7FO6VL(+E!<@`EP z$aHmEvCuJ7-Bc{EPI66urwhf=+Y1I{NJ+$ccr6CYI&9qy>FWKWZuFUIt`=|?P0Auh z*~6$$SI2o6U&#_NV|wJ!NUl-KMTE~z=d_P zb!TlEwM6G*JE*=}$dk4m~t}dmOCXm9e zlGz8Or$jSU|z3CY0b1{sKuv)%5CEv6QlF)LQhmM2A;gYA#h%D-7zrhOqGu0idbUNu2 zB^|h0R7R7pbb+G5B8n<~uv~|8NK2;LwTyBzA~#d%Tc`{v*a*HWt5B*!BX+@I6@s22 z7{H6;2r+yD2I^+(P8m$480@;;m(GusA5EP&dWE2P27EEZzo4LoXvOBKX~v#IBz=d%iaGKI$am zjx*GXN?OE}^1m@`aWk}Jre~;rMWTSH%29tCc+<6H8EW)eV!^;GFoQ+zJibS8n1^vZ-rU$?GP))BnP9clvbXSU!EFe0a)IpVoYLqS^vE zcIqO&Yo+|m)GaUkiT*Qqy_^Wep@N)PPgZ;R*+*bz< zhwmvw%Y6^y)8Sj+SY=P&$avg+vT5dMKL3V1b>>*!<3`mJGw$`2zo}MJ~&l z$%|U#Z?eYl_!hZO_L#`DKhXmx(}uGwc{puBr4kb=|@VhfatkAkh2#)je6)h6l9q|m*B)z}n9Ohy6O+)x)O37eM;FEweAd~i-Em5U1W z?ZWm2TJl?4flh+3Tm8QZ^uj_>pg^Q?7wG-M|6U;P=GzK11)~33fxiA#u(dBxAHjNC zfy{2mT_CRN9nV2L?3WizUJ{9n0tw z*rTb79*|#}Z#Bm+X1a>fRe@f1W1~&FRIRdGfRz z%fLmVstof`SN^3Dxjf~m>{s*hIOq;y&w%I7E6xYoHKwd8Nqj31LE${7I8hD5uOxf$yDE7 zCa2#WW`6v>_GNi&nOt&rnBUz1(bBidGHaP!eRppjb)S6h?$9D1519%8g9_CIcG5o! zbx0GtD4N+;&{I7-Pn2u^yqKEVTG5`I32m?mfdP(ej$UfD#^PC?x@1U`x}p6p%%+qE zB&w$UFC@G_Tg^t|-jw>(sogCox7*T7T|wBI+Babhs`NjaFm0*)-aS@xPmKFp#S2&} z-?+!>*CfVVyC%GFzdZQfFz#F=PrJ7lSK#GXBGWF3a#9<53Q7&QaPDml7(PS(_q`!$ z?JcB+%ovyYQFooLlKL<L><9Mt6Dp!tp_KFc-u*TJmuAW3#ASf5C`rQ{M=aJ1xi#T!@}5mUnC` z&`_nW0#l}t`QU<(ytwIF&gvxe5zp$^R-0}M`z<4{D8hLQia_J1eGz`0c6$-ng4>FK zfyoy7^F!0*$lMTq=pIo9F(MaQhE5thyo1 z6idaDR^FMYN}w3)|#|O_2BB|Loi< z^j2Dd+;)q;QVR)eoGRFx0z5co5DU#9b%OA>86@E@t(>B>-!^CLTN)g&Z$?`^-TGr4r!F1UDmzd zWKZ>JlYr0oTZ#$2qTS2Uxn;w6ZJKP(kK{_4JSu-0AD32Dk>8JXpMnA+G1b-kVv@um zLG2*F`+$|&naZ;SdAR${t@8XnPYzukWfr zOWwOYH1JLj`L+W6dQSdkc~DX3DeiXD3RFMNT_8~!B&5aFJ(r}@jZtQvt^D;GbO+Ud zl#Vlq?yRQhwaKJ)p1J(3QxyFPQAA4XDe{#&a-1R!#5mbdUfO_I)v6UOoaZE0J+Sga z&Nq*i$E@jBbOnPMD~-Os!dOo?J35>z>AJ@ZAGmhiV-a9@Ww;xRB+f_y##P3_KjEE# zPZuRfAX=iJO{$y>pFpyAdruQ!PUYQhFc;u>?*#%as4RqEO}YQi_59GM+ImhZyVrB9 zQer(nohnB^7{fnLl@~lXg+H1qzy9E`!97z&b;Ew!oT+xvBJ(geXtv!#0|?&2+M8!k z`=!eM52f-KQslW04dW|P`P!0jz#eUROv|X>H^ZdoYwkVku zE_P~*(i#2Yb)?Xk_fWK{ElRfKi|5*+`zZQ;TXg^Vu|>LzN7~|KKfd@%Ta;|X7k9Nq z$+~b6Mmu*-H57fgElQT!rj?o!^%Tz2!eo+dnx};uC_G&YpQdo??y;hXXDBjCBb=k~ zU@hE8;oe&K0)@M4VU@z2weY3$a?-kpq7pzWT~`p~kT0z3mV5<~rVb8q;<6_aCpyl+%l4aWZ7+v@b0yK~ z`awDzf|)TaNpu~x5n4+sAtw2b_1_c?xs&OnKnvm#6dF&Vo)lU_p{^9#OQDVwxUB4$-&3R1yC+59&yDnKS4iGbUaqltIZ*-;-6?Xaz>5?CkEg%7+ab{D9&V}kU z3N4}C#>z363UOdDV^7kR4l7JHZ|K86xl4}S5Q@9%nH&0=9a#HrtzeH%l^q+bezO7I zc5s<7RX(yIBEFBnEf*)^y40R1dUjziDWMngN=p#k2a}67)7Qo#Z){{e#=Q{)K`Tm5zbye+eBQ{;6IhZRWzw>0@l#VCxl8Xq<_y*;x{z1~Q>EH{SJ@@+3~mQ_sMX#evL$p*QlCqk}(vstsG+aF@K%bUg0k% z%W-zA-^&1RQ}~6+@?v{f(Srj2o5Bm)Guu?-SO1}~MG8cIP2SRQcxu5Yp{HAu9Ma@! zL1Biw_yM=+<2RW@kw7dAy`-E_*{8%Z@kcS|w>z&iP9h!yc!q-q^+=VO;TB&e>aiSdI*{TM- z`+x?X_82FfBPkP+O6^D0PNu};pX2e#6~bc(H+k?SpHX$0+hjlMmTga@nNwE~>WZC5 zQ>S{mR@7@7@t(t~4whaP zFM3{lG=;aEmzy8`io1@7{^B}F*)cvvhrIYEGZV1C!>~~<6(q27m z?9cx(NWNoZ1VmNM+ZfJzi-oq(ihCw=Mam_*YKpU>SQY4{qJkzImG?MS@alnb(58NT z^FVpbrcpe7puB!lFwG7-HbwOAGSJ3#v-&Nuaj<(j0my(CM*pMGw3Aq%7nBn=OVsO)uD06r4@Z%;Pl0 zyn-EGhI$yol=hfr$2a!xOe?!(q@z@M%%(~csPmY;ZqV&xhPnaVnd&xFKk=T)z~Q#1 z`iHg>p%!Pm+ozMr*fRH6W*$pdyN$)5OgUrAOjnN_kQ*NxY3m3v;%QTDMjp$v*whd1 zf);tKBIQMj)p%kT@(echHN?`@gF{KrOk^c?%W>}AGO|>q$g2A`_xCF5{3fi6be(NP z{TXbM6oz5i5mvx_1TxgIkN}!y?Q5w;oqzEL^>jCP32__961YXMTQqjpDx+(aL7kUG zhraECavi&R&Fm)aIu0?93o+IrNLxg_5OLQ^y|h=v7Dcl=k)hQ-TJKtE zbgeWLc31b^NjldE`gkGQ($qydE#h$^Zg#CSOP2)DFIxUkKINM|1lmMG*-UlH5P9zt zNz5o;d}1-*UR{;3?God!Makoo8TvURdFj&u@+;c|_~3zZ{r1QBGXvzTrygTnQMh_Is+Z2g>b3rfdW5WYmB4 zmnZ$>vCtmW4e72h966;+yTE{}On~m3t~bSa)kiWp`cjPHxFBwdl=Ge*#jXPzFy z`$fth!n@k<@f}0>JN@LLJBEZk(T|cRxDWhd1Zu4m1p%3AVLy4p4!@|ZSH*q3xgym} zbHfZl8`}noyXiRs9Q>+Wv!grj{;GUtN9ZULWptz&9hnx#yN*?66vmOJcg#nrt~icH z=v+Eo?Rm3LeeF-U#!m~_@U4azeBPCJyDUY({5JgH#vC_%KEM_Kv1yLUMv>C-fYG$) zrn&YKi1tI*SWNKveD5HbJDc$6EIP(Kbbdt3t#8cU^xJAS9^9JP*5AYBMl0y?na%2Xtf z?|f!N=f@(br32Aavh7!kEI%{K8W=$p8Vv#sq%KmVh+9S6;FxHYH$2-z?)dDiz&JtJ z5l)O|Fxo_XQ@Fh5+30?`A~Hh|4enNxmI(09cA$LzoL@&#`%;12^z119O&_`6uF*kd zg7c|9IK5)3PtTCf;1(xSE&jK>eplM){9C7CM~XS!G1ow6;_|{RnXs^QRQF<$YwBcE z8{XCC_LL_aso{<|$A^x5J>Fr-|2`DrU8@>=K9X zP#|6X=RTU+o-iFu9d1*rH)1=tGD^*HxLow6%C$0D4F~3!I=li;(h#Mz70Ld#Y3kYv z;8UV1W^Tue&?Dh!Kso2R;G%s(Y8<3uKjJ7tI@Od}Q zzMEW_$f?9Y97km8a?Rl2A!hQAuXC zIS7fG^UN9LtE_6_Kk=L;)e5dWGg%Z;&FVdXC~l=_v|0=Hyy)_@aMda2?(IvvflYgx zxiwE-|6*TWJx6~2#om@5yFezYQ*1-9Hj8b@xfgr(^RGdB(w&B8b%A{#%wxFQ=}u!) z^N-5C{uRb5M>bJ# zI~-28!*b3`(NX8li++o~+_kNteS9^|&;-?VVAgg{e;BI{zx12YxTF*I2e$ImDD}z{ z@*CA}QR&tkS`oEnBkJJbSaja2%h7pPM5)iLAU|4N2;VVfxah6o5##rA;2Uv6=HEo$ zLj{Q48STxcxB>T33l)PI#+9$9Ta?XT$whDUyz`c2$}txY1M+O@(vGNWo1KmnMa z&Y-wzmWVi7)TwUt9HC?6FWz{DM`X!s-VEt@Vgj^!t5FUs=sqOXD!M@iHD^clY$nyo z_=?igNMt{el#!91iTjfaRF7txx^_a3Y13b;qqp3URss|N^99tT2Z<|& zOIy&nGu0y<#6;ttfswyUAbYlm=>X3h{b@SbBf!l7aci5Nsiu5K>WoA4Xf`Q#^~m#% z7(x$tp{XVtZRIeZn#;%Q9g{8Po{Ok)V8(W$VscA) zO0#RkG@E)x{^Q8vJ09jV(Dfd>>>%*as|=|bil}?BBG8=MX129tN>P15*eok=OEY>R zEmc2uj^)@xeE{yd4(Ky@oK=^KL$S_FZDH;qWy~|9e%(XrTcG7>c;WdbEY@j(>Nxm$ zk>zQ@YQ3CZ)0g|bDL+)xo2`?dsp-Y6@>?}A+}cp}TTPS~U+R>t$CvS)2j#8D=MDP3 zl@!F4oMxYQxGblVbhRJea$+mBKzJ;se+JL~*RH$UbU?1U}5AYZ$jEcnt>yAvF# z=2xwb42!y;8|uYbKdn|Z+oUVVRBAnsoX4Y;OwLq;h}p0glt`Zku2LzjO+K0G`<1ZF zAFGe&>&HKSGN8vh@uW$3Q*v#i7Y4kwqLfNxQ}3T34?St+K8bSr$r#>!f?Rg;37(Wt z)$84pod5G>`QoW0?)9>K^Zo7evG+&v=zmw;e7`4SPgeE#FofN@5kv2y7lY-KRU8*; zFPf)Gx_)%(f9wWkLGeoZl4KM}GbRQxYX>h*QFCM7kNH>~R<*w2FJ}GdT}%Y4!qe5P zdYmas!fClnq08{SA~;HZ`r{;aSw8o1GT;1uRp=*HHsn@)?8Jitbiit=oOS~MtvXH0 zMb)?pjcTsE^z=QJFp^KZs_X zxH@lmd9uMVc6D8naX5M^Lau0aj(q-8D~p%;XOXO%Jn*wV>=$|JXZ^cA2a{>}*hsWY zRBfZTO?_N0|7_))b>fi$9WTN>4LpK2=Ob)V@Gvx62URHVN-;D|_b~Vi2G`0~$wn;S z{n*Abgj85*bm(Xy`&OR)`F(7){LbggLJaik2nr{)DV)@%@FjWLnf~mk{Lq{0pP z87o^Te}1NK*N}@Ih2w<6zH*l@*3G!Ay~lyV13mhrx>g3eRtD0j_o!X)J@T80V^-jp z@|lLF`5xAu?O0taTeJeC$=`g@lZ}yYe6bAQ9a{Y5MRr1-d3MMkaV|3Kab7uw}mL=1~lVr|xtq4{( z?j%_T`%Uk{xsn+}T3sl={#8`Ojq@n;WFsAVljBf7zODxn@DT3wmn6=ZK}jQbR(1IL z1)q)$ku(CrpLo!=oa@gu{vs&xd!PHIMUUXA}!1;#j^C%mcSMPe)a_=Fyo<< zcvh0Gz9XBPw)*P(Q;I;-x7 zrP%S2g0xtW@ZMLmUkt&95(ni3L7RFz%?~smymS||7>(wbVwAi7qlf&?rLK|B-+e3R z8JSY9;Jf&_s1T3*;hqG6KbzS;x&P0x9rFcWzP#XPxnl{!HuW>v^>d%1)lqbe-1nJK z{c2hOFX$o_3v7EErUzCgu#z^+0BnoE^4l;ouZ|>FInh{%aAEm50F3nCB<-R0J`Y_hmXv5_VDql{T3T{pN8pDzMTAP3_mwOUis?_ zym^2e+WZ(BFTdOz%_RAo=9Hk~fmE_LKJhdPrYcrA9ETl}BWGStFz*Ygqw}JTt z8mnIYEsn8Z`KRB*S+Q)oqVSeTdGD100nw-z+FNyQAib>@525o?j{-|q>Z?SX^C8j9 z(u}IDe+*!F)o}Rga7ej)RY=+R=YSxOlt|nfL5lnQMRLH@CTI02w;Z{!WfBYyM_UFn zi+s7og0;QFwPqG2|9R~$rk9hiN3wBp-u2-uOMdoxAm+d7>%;l>LGmxx19BjAGDu!>V+aeBcif0(aq|24%#v^32u7Not)YDTU^$_+C$AnXXSbHZl<`gL zSc75ct>_g4qT%<{yWdplPTq4sNf2S+DZJmlW4?j4Q;Y8psU{dDQn5P6a7IzKaH z+r4Z6KQnmSW){;UYY;dB7COe77uGf!u##i<+m*~AtGAtF!+UP`kh|R?`w_W%kTQ@l zDuyzju}%EaVC84V9%E)@EoYD8#BB0nD2kHg#X{L?CC7^eqcF;PFGi(tKJCT4v3F8- z>)BXCb-MyNJ9y(b#%qQ;$97}}#;b=YlMQTaC#@uoDS8^$%A7&WAWGzX+ra7=GI+Ez z>&y2?DX(;9|9b!^VLpsTfRf?EXb31S_$)zr!N?}~iJ7K+uCdS`J=B_xPN!G&zHBqE zk5abzvd4I1loHW}ZS`wGk4sl058|>UUCsUmn*phRK z^=0FgjV3mX%~9Smu_RWY+%&OhUN%69HnSmo*8t^iGuzEu`z!jcEZY)@k&EL(J9Eh! zX6FN4S!c$q3ZDN*nx4Q^L|r=WHQIUfSE{Kl z$d7GiNy>}l3yR+Z@ zg587ZS8*6OgCpU|Kz0Ld+!_cutCh_`EXa4eSRO{agj^3qDz68zLEILhTnJ(V*-pjW zgY}JE`M%h6&ONr}YIw5F<6H=vA~ZJ+eq@AmUJv#x>k|65Sn056c9+VADL%o>8giJn z9Nv|rsUGi+kK(L}#Za)c3{%DjvzdOIu@iTn-EletQ#ly7#q(*shaUskKLj^F+$9eh8!bgZ+~ZG9~RH}o@ix3IKGx# z6Ro@z&elNI9T6-8RRJr}5*#U&)(Doua+NWC*;Tg3IkF#H$~qK6Gi`2GuJ>ma=h;Yh zkoh=pbKvlC)S3>aD|ZfMAlK49GNigUzJmg`4(?-<7%-4sq>D;o zIbmbVSgv!#G&YMfo3b^XZDBTN?-?w>i{~#=;xk!~F8LDrP3Ky*qv>FA{(a7SGubRb ze0$b^5`UbO6f^7(}q=1Qqfal^waN_V@mlW7IPPw*%&1R9#nFXv$&&D}Btzm_XUy+sK z2Qk{RlrJA-1#F3P>O(9GbNx8w#kH6n;h$a0X7K$f%FuNzl5a|J&R)l6^8P9^x%eO+ z974Qfatm@ebt~J&8ZJQPiy}51Yf)4&o4}%+tBToBj@(~-n4L!zDUK3W!&j#|CzrBK zjBig>&OX8x^ZlvL@sBbqD=J%;tm|HstUC-hsyJD91a9hvWZgBm-u7f&16*NAvaS)% zw-gwh{*h!|1)L1m2zT$J$-0Njl689=$+~~ReO8gIyYsPR-HFY~y8c^|b=TpnTa$H$ z$CGtC;a-Hh@o=*4@zP`;-HQ--3huj7<+n1nQ)_YU8-w=sqQz6G#s68(p7-YUsmkQd zY*=Xh1iW{$RMbzw5`tB{ruJeWMNH1R2qBRNio&0uD$L^0lO3fN*!xW19S4TUdyu#Q&DB%mUNA|A!l7l+5KBtIGVxv*;Y2lt7B3=j370OmCoC+knB>@x3T`l1E(-LHpKbp zboHm4W!u<59(N%R1Jr)_vGtu%y@d~%4wij)8zKSu_BJFL$oV{Hlfq)eL}GoKy==(` zOL^fH`XbLd2pX7BQJt@R`!p*ti}}asc(3*%W}x!?`;?VC*iLf`_~~i(T4D~ah<5hb z$(}Uu3wh2r|H*C|LbH}b)07L_;gzSTO~b3tJTO)_h;tmnQyQxSoo8NV(R$u^O6gq1 zW_M{sxj@1^SLfY$%DJM79pL=%VWs~;tcvhA9AuA@-`UA}lRwyr%}&W-v> ztb3yer8YYX!lMrDIIR5TWFaIxxSCBOKd)L_tm>*+0`^Y&L#&@E|3l2_riZ_ziS3Pu z0_Uhh>?JlcvMyQYYW%a#3-Sv6YcF#9w_f&ZhUEi(|EDW_8&S77>fRu#{i1%k(cb9g zRqqNfO*nyM;T3U2hkqE+EtBxE8g9o4Wz?IjACIh4?tK$248QzM792ssD(=#S!ZX6@ z;ab6d1@02u1-Nr3ly~1`<1NJMaFO&RxJht1bxPmEEH~kJJyHJr0+|*d2zeg$u4(EG zB=zc%0vyD=<1 z)+-C&V&na^%ufS32X_fh=d67T&!_{1X}ZRKl8y9jZNj|pM9r~0qg1?K8T~dpffn$t zVZB+t5?RBti^6@z;V#@V5Bsi;)zl4|I>et?*U@pJk|=q4n>v0ZUT<3w$<78-uRMK5 zc`VV?A-55{^Lk{>I~Mctp=NZaawE6bS}UgOH(aBZUe|Fq320Jb8a<{uM(A|KiIaZC z@?H?*t&WJro*|a#D$FT5djth_*~h9$5Zy`8u~`w z%C1_rke_Q-3`bck`F9>g2ZTTGC<|wSPWw@|kPXz|Kz{fJdmQpDgpIc8-b@(cdX9`u z08o&w-Zx68L-{6vL$MrZnS9rN<^JPrJ+IlX{Cu1(H(39~R=~U3tSowmg}GyIn3XN> zU}u)^^g6*_Wdp+@OZ^3sXcxYHG)j|55ULKZubFxplx(S!URR?oRKBTW)*{2ts4QPS zefsO@GowkkB)kY!c!Ms$+p*a@5G;-qU8Pa@ z`bsnW3Ov~erg-T&{4PnIcNSO~{_O@aQ&(w0w9earPtvQ-+bGENHZjm0%F|~puF=&M z2P01Ngcf)BQa3A~kGA0Bvq41VYaAL>dPGKp8Ni%wS1Q=*VM*_|HG zPw3r^%m2!CW!ML73JXy-e8BRvt*?UVk#IDnL0#4#dD$1VLP{jMDl?UwgvdH?8$}S> zm|}j8#;SdtQD-XM0mK#CicB1_R+Pc@nd40P+|#9J3kqDZE!UL^AF@Qh_T=)EGlKAs z4{@f7R4#wWUSUbj-3{y=#yTmBKE|Fq$Jz2R>NvoVtW#}2^uf&{Y%jtyk!fCc1 z$L7ADqV}xHW1q5Ec*j3w1K|DoDf)h$PuJ5sSK0Xu&V)MUyKmUjKFw6+3@4>ZNhxn+BZFv)sm#KM%@rFB&lMYmPqk{7 za<-ApMJuw}4rpELfCaQeJ_AMKXdAjIZmK#+7 zg8f5Qo=5?_+ZDcj-Ib1OWAi%3oUACkkY#$Vyo2KeB{Y4 z(ARmBd>X^$;F|m$3mip&mj-+|R=3w$;Aj89s_}WZ!P>o&=Y}{E{CJ9>Jo_E{g`H9! zyTFDTS3``rKz7BhR^GdSBYAJ7&-ZL~st&{J&s3ukU8!(}J>jjjVAQ3*35|4x5$Wn0 z3v|&7lvWo%{Ps#7FHbd;cgVu8dX%T?o4PrSZ>?3%f6pdFp8FCrb=Tdy&SLkImX9Y7 z)i~av%&GeM@!khM1JU0x#jqROwI5hAb)F}GU@zX9sndRB5$@O_vr_OQTh?8-0=3#` zYC<(R-a3r4hv~@SI;(Q+N7$jRw>raAHpvT?fTd0B5-V`dzQk6Lnd-xzVF)QvZv2ep zrPyixh3#UX*8a-+^Iil0NY=&to~&C0_XeEdO0v!$Za&=ZKNQ1ntc71{Q26g`n7`V9 z1ggbwee{?{y5IteCX!3nm3>!W!UOxeS6C8!r|}P% zyf9pnt}?5ER`qr1yRC|JmGupyW!RzLZ^sKvm;ZQ-b+LxKhVNG=yytRdgYA{8tP%F8 zEq}5IBc(M}JOVXAsQr_LLFjjX;{0Y+MzpYTytzSH+roNwYetz}{yK=myR(eUBfwv5 zVf}E-`>2KW3Nn8@R=4)s`SXtD86@d7lwvLYZdD>J?$=lZNf~ktCO7yw*I0M*S6^dM z9Z2fiWy-&6=t5K)ha6&~-&W?{2 zpqKpvm;I)z@Eu1T+2zqBs9{IqnPw&VItwzK!?s_VlZ z4A`ECj6He0t>xkJpM-jdIazrQTH&kx+iD%Pl(8$eu~`{*1AP$wtQ*)Ss?EwnH(0-j zV)WO7&Pn!`faRBCYVcq||4s=Y_tTA53^M8ybvIaIkqViZ%&($FHr#B*r>P_vbji97 z>zxG!mzu$$KDB^)i81CZ@-H1q40`(LeHnJgg_Q$-r`F1XmPc-2+Q10yDb0X@48fqz z(GpWq%0~k$0VZXq*;^7;#%jppK=Qn#5+tlJrtCwuj@m(#!$&Oxn=_`V4k5-uV)m1m zO&%4GG&d{nwz4R`eVwzVm6bA<;9QR{C@^03n$qfGLqo*6dmX1Ql)+x_x;PtJR? z1{5{P?i_?-yivJtbKc#M>xq5Ec|bqO9TUda0==sNcY*#Ts5H?oyO(&FdwTI6hI~&f z(Tn#lvZ241UR@Kh`!vBfDp7D=}rb}!dwnjpzYu}adt4YCM`3IM1`Y z4_O5CL_4T*J0emf;ce=VD-vuw+ObKw0@~FcDi+Y5_RuZ??QIVo5YWE%P=kQ>w}&nW zsM-w`QFBXI1a_c3o4%Nebhtfa5l~HgC|p3t+e1kLs&5a?5YVaiP_BR)uBWwY%hdv- ze(0&6$}@;aWrTYmX|Lcq*N$s`W#e_FZwH=feBlz#7rO2k!sWs9L<@vH@(#t z5wtgkX4f`$@WMdFsLh@yPGSiidG_GFv`jQMxm+=49lw_sUcfo)D1Hks8$V{{xKX~Y zF+NdSn+`&+-B#sTN8Y!n6TY3Bjrpczg8;F1xrSF~s@bsLXJcg(D_`~1B%{5+h>Q1q z0#0js+|dmAO}4x^wIjaWn(e3;tmVe)(vtO!)K}z>m_8EB4fFx8co=7#Z)Z)?Bg6kVQB-~vvC}DX)?}Swa0c!G3ZB^Xr z{MEoSS%>3j5%r8RsWXr2SdVaqdRi&!%mX_%h{)^8GZZ-|B2OxBb><`eP501*DJI;X zg~8S0^42LnKD>_-?Zf@MG;|;1*>qq%ai;t5PK>V%aLzMwe|BpN^^h;m?wG$HOK<*u z<*Y9c>bROBtM@B6eECB`^=KGv|FRpkth3=~7u=hc&0VgXDQ5cltW?=^%YjF~$&8otY)PB-rTLuDk8 z$|(9ETIFzj%srMDjw`u4yYlHBh`c*eQM&Tcy@_EreKhre1&-3}rjI5gVw7(8aOKag z{5~Ju!&r4bDxZ03w_aJ?jpMDS@<=znnzw9t(vRQKBLS>)kJ%G-WVI;lmiL!Bnf5Am zXr^g?ynjG5niF3cyrg-m=3OXOw)*kz{j!jljQ94In}ywQ;71f|I?A*MWonADxBMkw z$EUL`O1y;+r7hu73omDZtmw`MFiCl)JAVZELRYhH>rZM;Tl7E z*7X;S8V|e{%xC!MEY(H*4`2=?O$sQaRzE#Sw9y~TcMXy}( zkmKvx8{Uqa_8&uQf9&AU@3boGdmx2X+0%osf!C`iUjVP9CvV_;tCWmj9*g~lQW4Ap z0Y4uMu~y}BFh5A>iy<6u3zhm1{!VwXeHj-N=}2iVpAi)0n0y6>d#h5}3*UFJDh<83 ze*m#;92Xdo(79kDS|P2Bk8$Y1)7py%2DyoSLBw0Lg1|g44|z~1?+p>QP}&zMkB0J* z@M<;hMkwEg*j6j=3$NPBt?<6E@;UHEgz;1ywAY34psssAN9QWI=$L!Xbg+ZzNbz3f zg)ouigD@VfDb^viY+O);Bjt+yx>sQrhq2VEz;c`gL9=@E$KYM;&G*CmM;|^I-pM|^ zU#L(zr6sR3l6pIg+qC#KAxOW?s+ht>Z5D>}5?)`W+z98fJ*gc`b_crlf40TM2x<%G z0}|Kyx9Zzc6e6?@Eh=&2l9FFrbhAa zjig}NxX!~xH%b~L>T}T`UW*d+AIvQb{^%imG<;=UG{LxD=AQ>-pQcr)!Ey9&2Y^At zcm+;WZw?cs`h1wEiob^OVIA38XY?q(tdrk?Gnn|QtHtMj@tLH&HkOC80}4)S7Nuz{ zruu3M_hYH=2QX3i|C>%}xfr9m!l=9s z>L0H{G0mu?fj;U~3~m=JCtFi_7)&5lseECDIJ>wxI+H&wv&r%|EIr*e4W_w;ddSak zdLKn@_Ty2MvIar&kGTEAOc)p1e4)-)ZBkDWuo9W_nPbox`nceq@q@}eb4IX|8+kD|icMRmCBzEnFd zDR%?vx9~w~=$7(z$MM~w)p4N(1-o;UqPw_%Q4Uhzh~Lqs&R7keOts$umn+GpKDr;V z>`IMXh}GvbYFBqL1fQ9iDhE?`63kOXS9es2ZAvNjLw|uu)6DcV?5S?)zIaK$3MtA% z2$1se;qtG+ViGg)YAQBwrjlbwR~}31FZLyJ0w(Z<_C%^7U4e12_i@6!>NS+wMpw{d zcOZP|-nG2&+(2+B^Cs|6Tu-c@z~gv*i?ezH{}(fzg0-g!@5n8+joeYKQy!SaON|W# zcETeYN3mYvlX;@AVCxJvM?$GinKYS)7f};bQq`A-P*u90gH=)s;D?cH<%wAcsj2t@ zGHeA4$K8joa(Q7Y@g)YRD*QEFHq`3o^!0Z65_416YKp|yukC`H9dCj(w(=0_!c9A1 zZ*~7uyC}a-=2v;y0p-Uj{N7uJ#znW?9y~Oa|Et6AvtY=*=^SXo6vy`-P#&Mg*JHix zIvo@K7G?Bwen)3v`m$_rHGZiSO$S?!^8Iuyqd7{KbUxbLKx1$qz40zI)TPdmlsV}b z$y<~S={%XA`%*cc&Zqk9oP%7HmtC&P9HrL`48j~GX$Fs(nFGyf1K!1^P6gHOOMol; zqW>P33n$-c(>%KnZ}sUTE*G|N!bI@4^%_p3XEW2wLc(d6=3kHg;D~KTxI8gQsh`2` z?GO!PUuBeY=uEzunYFEqxB9?gmkZ`iNomO7BYeqLii;&z!Mg1#B?^9Z{I?Ud}*ZbOAyb1#x zzLC(Y$w%`mBbA0sK9J_=zcP6cS5GN{S$tk+I*k4KQ8_L$l;SL2t5oXY-ZlrEh2RnRplGKZ_qCli(~q3?QG)tKc1+%~Jwes8QA`D8+&cI`wt> zox5h*Ky{mg?u|y7G>7N##xI>O&%qkR0+oyN_z+r)dd%lN#d2smGR{kHZ)63_Gu1l- zQEu1;94U=Li5c^Gl^>anT>gzz?`QDc*m)zp1D!o`xEFI%%tWcj4?7RACk8sB@8%!V zmy{L#y*%14iq=le+@dqkF9y_R+)ep2ERoLCt_QAUKyvT_wr!_HL0`<&-22z zE)MLD5Q@gv6-*tONXZM*kfAF!K}pHwV}dA4(87U1ZiuTv{MwQ~Hr%^%vE_pB}WeHsy>IyA+dUfLy7*iC*G*VClq9ZX*d20dB^cP+9C6Mv88=M0{&PMV2FXVV7 z>YTNZ4`(b+*}RC4v=HaO%e6Q8pI^^+oPhmtAg&?LE#jxqV9wVh&hS+X<-lS-771Dw zqmx;k`8AEBSn7IAMim$26m3x^d(*L!r0$4%M;rX>abQ z`O}92%3Tlev25N9~CY{&TxF; zxQ0#stt~z&kq5o#jS;8!Zq^y!RY8 z(x@SU@!mOZ4LcbOZxM?=QNdv9_hHVqjc@4dy1jMk7z@!n4;Z`*mVyT-c-z8XOv?>)(l+(;DV zGsJt_+{i@@iH`SP?M6P=km2#(Yn^>d_>+3P{(GwoN8(|-UdPnE`#zWJNaL4dbt7X% zjSt8(s_T|QEbVJEB*N6fj}gzV#B6TZ$a6a;y@K7*g>}vq8+ixL#ycO}goy_|M6RG7 zqBK5ScNllJ(H=JPrf-YS7ZKj%=V72>xIz(z0p)px$FX~qZxkNPK2cf~ zK8aS73ETM)R;N6;ov$t0f~SLLzny!my7k}~Tp{Pe{-VAO^~exY=PluLO$`y2AoPg{ zlmwtD*$Uu4m23v;QL@#o zr2Z>SNuqg_B&?m1U?n93N$7u3Ql|v&;r%RjOPh`xE)}BybcvL{hbJ1Jn$l)&oT2Oh z!cQG^p54RedHETTll`Y0db8$>ZS$JWZ%EEbd--Co5k9_}xSw7bqf6L7M)xFK9bDwA zV{|XU9f#}p+8A9YxclJd!Nt6${QMGschrQDv{+h7U2C}G23|44e$f%%C&eD7lbVr= z?`3vxGFPPel=X_QUu99p5z>2pd7P??Q!e8@D|1SheScNh zD;P^3D}!I*lX1XZ`wGk;Ta{Lm}i?(-OS1qO8nnjfNK~4^+WWRHW>!;!$0H(Sys= zk)uiT?;&r7NVZAChOS?yQl^Z}SU zIx05~@Mn8G|1FYD#!0WGoM9VQo~&=`inmMn9=&qlbv|@JFo`WRn2z8Zi64KBZFS3n zCSxj$P&Ty)U*;^W$u7Jsh_5TAgM87b>@+$ESLjFMx6(s6X=$b(yUUR9OhJ1X%;R2Cjjk$ z+Xq)u?|k?zUcm5-?$0Cq6|rU9Tg&lP2=ubm$N1p^`50YIX$$S^igg9u649}03Vkpq zL`$oQ;2VFmFapsqsrVIT-fqF(wsqeq&wT`2FZ|OVafNoT_kYY~CO7crqClsYE*fq;Tozm| z9G?E^O5k?E?T4#@`vC3&+*LS3wU@3J+;F%gxLI&Z;7Z`0gnJ(DHMn}X&)`%z{UI-1 zZ@6J_v*7N5TY1Q2y1 zEpX4n9ftc1?h;&wH@$RLxZ!YP;IiPB!>xzg0=En9wKpew>5d}sFMNJPu+cRXI}Br zovGBsdT1D+I=m9njoa^~8|U2iDK8l79X%||YE?Q1d2Q}GsG8w!SWUNEnC_q_WwmENhq#$?6Rc= z%a<+rpSs^hPrvWM1<(YtXSWsZHU@X$|Eq9!VmEE}fVtMTddpp~w7@!k!QHtFmZPGb z_l9_V#C+Qe?(DoP)N8(3sUG6By{KV6UQ*+q0nTu!am4s&);E{NJJ4*Kja&4=@1l+B;Av2q=b}3LbOr@idM>nVg%USrjyYK z3t%%8fq4u38QchGz|HVz*a44$o$y$=8y3NCcpU73$HP8o!2QsK{ZRD3Lof!VdrKsr z>q}WA0vLhCFc+Qx^C34(Duks_h9^M_o(zlODXC=ODJ+L^I3L!) zvtS)eoI|34#09WXWWZ(^q7$rz8E_*E!#0=+bLl_BU?=)8*ae5f9+(C9!4a^Hr+Xt| zKRO2vz)>)(i9P|xHI*c!(IoQ8h`=Iv1QZ>03=|!8EVRfU2TS3RupEwu3t=u?3Mas7 zI1$#tqu?r-2b~L{xiFMPcPk)~DLe}IdN`EPBcKbj zVHwPU^I!y4!m+Rlj)OIDJgkQkVI!ObH^L&=1|8T1eb@s_;6AuKi|#%^Lj2#uIrmc# zmAp3A14roCtfM1N&hppIfw!<6sWVhPlvz1u#@VLBxJoEcV0MVn3`9`wJB%MLHEEG_#WH@`BQwU1Gd1O@DA7wUxU5yE#YqWlXwFjgpWaKJwGi6a^Oyw3wvP! z6qk}=7j)qtVHw;F#RMcKsCnr7VHI2s8_5?lUOoDkP)zk9k&jN$3es8<*TIdjUF_fh z5oC9wPZas+OxT4M6HgDk8H$)-7~F@Z5tFfjh!y(L55WP*UtvpGErS!)IQV;XK70Z) z-z1VVT@e|#ks*SL;m}2k8BGKiS+ETKFq{Yf3@hO#SOs5#HSjK254XWa_ySxD+u%m{ zHf)34uoIpJyTqHBog{k5coT{!W(3@aejWD1y>I}&1G641kzR)5;1-wI^2!E0E%Ek z1S5OURZs*cKZAYfrD8u7%7zEfv!Mt+W(uOOfC&+&jUHk#M&Khb5B?Sw!qcG! zx58q$9f}~rhqKWQA|EZHoCLr;O5(C0xBP#z9D(2U$M2ly!-S7;U#pfch7d;n> zaO^ly)cs^!PDX?hM&Utp4Xi-hP ze+o79MQ|g!02ZS!gtOu8qNzlncr2_S;}W<8u7q(;C>~$L(Ko?Lv;%9=^)L%9!v^#^ zxCX9(E$~XX37!daIsX{gfxZ{+g!5oGOf-?m=YX-WmyFfW;=~5rkN!0*WdAsL5IrBt z=p&)jIv7aiz-DAFTm=i^dT7Cof*d~{mZ2+PG5RNPUMu7OY!V_ubzvn3+z6}Sqp${E z1?%BjSk4D0z((`}*o>YA*P@rejqo|x0e8UNa5LhU3tGf<^FISPD15h44OD$%T)C)#%^AI(RP3ry?p`g}w%g$hsIdqi=;}XbWyc z*TM1x88H%VWLyuIa^gJLiCzS|;ICku{7J9}y%@@TPKW!@wXlKx`LG{-KCD4ch6CtI zSjh1j%-T>QJpl9JwQz1H2hJd2k#R9Bg_pu|7>1SbBN&H`uogZD8{pG$4SXE7z?0yn z4ei;tgg={@@vn!QzIix&VZQj*rII&&#mVOWqVyLJ{&3e{E`bc<6#%m`ujeI0LDPy3!Y1t#;$>Hg5 zr!qcyyXkR}k^BB&MtFR0Dsl4%sl@STp>Q=8(DetOibrsW&LlZLmC zO&-{^__6Sj!$qz1 zY@)am4&Qd}tRFw|;{R}hst54bhzoVE#Vo{i~no)yp$d))>6GB=?=Dpvv_Z6!q#x0 z)};;!r7qQw()lUfn9@^Ix_R&vEnCA`iI((dLzz;3q%Ey!nDWT>l%}+tJ|5Yf)?~#a zJ!#GH@kn1oT)=WnfIIX7$Juj`fA@Ru4w4O?^6_3=VGp30H8q<2Z&>PdbK*h>ZMn2GLqPBBwPoH#JIYCd_!GBCSoKtJ0c@n+m11 zE%d6iE*82mt@&{wGB&0&C|W$SIjxyMxkYJxve0|dx=iTav?ijDNA{)lT%iZjn&^)T z$A(%UA)>E%#QHHq1YhyU?6hW6@=1-Hj=k`#I#W3!lGUN;wpcu#f zQ--`D8VA-tB{Tg2R)76da?+Z`Q~#84Y0X-xe@b3jv&QM4Qefkza?6r)cTsv@(pkzW zJ?K*iw9-21Y==B?I9WC#!9jl&eT=&SP%^W*+$PczA zOMy4DOYVL?V^U&X>NC_exh+gzKdG0dG}ljV@su8N!8Iv8G&9tt^w7-EkkUglLt{#( zW`=~+oXQaEYO%GXG%cIlT2orALdCWzrNyF7Y;7qm7Ik9lOlcfwa_dTIu{IN1Z%X4p z*(mnD|D`1krVixJB)6fO47J2SYX4A64ApF?C58$<)DoG_V7D7;iJX*9wS*=`QW@Ne zN^!+;DNO;Anp-Ba#S?_MV4gEL`#l%#2p1;PGdq`;Na6>eLY!kVCK^Tj{FL~SC$Wi` zf2g72%bO1WV|dz#{O zIMmqw_3rR(8N)hzIBV05uY}dak{fu~fK_2}tQxDqYOy-30c*sXu~uv|)`9KBc4J*w zH?{}s!FsViY#+8CJAn0L2eAPxYb6!H#PPW+OMEFGQHaTyiUjy9e* z{$*sF6U>v%`Q}RVE_1#4Tk{$7pXM-YoHffj!}_(AOY!E%mc@P@yDPRKwk@_dHpVWn z%k6smD5t%DuuC%jJYTYqw} zHTWnv6o_zEJSAw9TjW=wlG3c~RC<+awO)N)m9!(Z!}N0fYJIK#TYZ=QnLeN&X`EtQ zV?1H>8l%i(%u~&a%rDG*OR*MN=fuLcVV5QBEA7jibxx=AhVysla5vwLxtF-#ySI6h z{W<=n{wn`5e>0ap$fc!7DEV+EUp_-wpx&;w@Duy@>d)$5>Y0XYEHS<}GR;xuRx@Oc z<-bE!V=u;fVmY>FUvA%LciG?BA!n51JC{0RxI!IQX!D-;68pS=dXxM@zr!yJdc;NY zL&-pR<6&}EA)kWrM^U8s#oa~Oo!&*EHKOtWeeJ6U6 z@+q|#$z7dc>gFltS>^?%Z=GhHZ7s8|wN_gjtbNw!)_^r4HrhVgKHa{-zQ=yd{@Q-a zInizLqk&WzN_Ngulna#0lt1gA>R;=<);9kyeh^6UQ1aV`&*kyTG0IEoL+01_2zVXrL=kQp1mZ$6zh(?7yBfZ>tE?#?@OKh_m@=G zjNTE=Rb1sm<$GnMdW>45zNL=U9PJeCYkjOyWT=K?6dR>RnQ@uXWNb0E8=b~ZW4F;| zbQ^n&9%GtW$Y7RD&HRn|h}miGGP@FHx4Fms+ML3Ot*{namDUn#sa0jgt!nEzYp1o_ z>aw~m!#=^DZI5$I=T7Gdr^DIhyiSe3biQ@6-CTFNd#r1@v)rZbeeMSLDfdlR^2U34 z-c0XwugY8L-NgV71!IEg!L`Bnfz%xmE=RglzDjPE6YJ$M(PtUO@6gYWRF6`psx#E% zR84i%S?Vcjxq6nmNWD<~m3ozWgL)fx^l^eZb`J2I9ZJ0?~fJ1-WpbM2qnQQF~TyTV>!ueO`)b-3ME z>~6c){);U+o1NkQj9`oClzkzo4(JTMH|77x$4BprJ{vt*8BlEX2RgJ9doZ>!_Hyj? z*stuwwf0T8hgLe;m-a}ySe`S}v78f}Tj*ZRIHh--51f5YnR~qFdGox*-tFF3-hh|s zPxd{3uD_7}k-$ma>p$t=5xf?>7xak&^oOKM@Pzz~{JPvPJJDIuis<>#*618%zEZ2K zRK8NO)Z^9bjAaS)1L~ViU5}6Hv2Oc2_djlicbJ#$9qx_cE=K%Pzrt_u@AQA`X9f2M z4+qR4;+wOF>}F)%BbRMtAZ&i9V&p5`{X z_qyxcFWqBkyW72IyU|f(FObuoP#|K(q2eX2cgVTdEgL8t)U}AUqj<4of`qsm-q-Ae!Xl+iFEc2n%O*t*y= zH1=Du8|<6yRrbU70sAZadwaPPcdmABbZ&LFI@_H;Id3|{+>vg?&2tOfV_d^^++z1c z_viS;4enpv&)l!vLvDy(Hr7kTy=%OCy!GDU{>e916)hAaM1*-s;Ws|;61Q^sr6S82w6^_SYkT3owIyIpG~82MPs(8ubz z`ea?!4gCcDRQ)V{F(Juny-9yj@76Cj>lmO%P=y6n9iH_ztI2xM>aaSkSFOKTpAbiU z9XrQPoM*4JZ?$!&#m#5BxY1kfec>G>BC`B)yxVfW(SO6A9vm0U36=#bgEb7OXMz`q zZ(a}H5jCvLNPday(9GS@52NFiY08Dl<;t&>)x?Hdl{b|4sLV+9XR4x}pq|QXaub2u zdi729TXmF{tCb{}E?(6N^bhnSa5y8)spdK6cJmu+Ozcps&_2=rrCmdm^Al&1bF@?G z)HuhvsvEdt{HgfGGyMhrMg9u^Ivnub{=-CyPtk3k^>_HM_^7iGF1a9TMK6wi6n#MHQU0!Us>`%} z+F}Cluk{_qaDwdF&hO|2I)O%oyViZk-RZXB*FN+5y&~p>N?h4PeqL~WAk}3gzX}gA z2V4++C^}uymHU-;C8Um0k5;SHUyJzXfI3k-UHgT$K)XlVi(fuWFVv6Muhs9+U)KBd z1GGynzF?7Y$e3wfW!`AE5;6SUj9B-?T4J5CS7LvUeG|)aBF?j3xA%>g%sbn=#Jj?)@!l0p*piW)YM0|5$3>4K&b>bR zcJyD-6P5Fn8(^#c_1D;Lsc2dJdH16euWTS$DU{Ub5K-!#<{ObB7wL%>V zvwDp_W1q3#I6!E3kam0DQQRxtW0EEqdZj>im`dz0ON>MwSsZ z&N8kvYK=Oh-e@pZ8I8soquKcA$CI5yKwf9wY_2jJ%{As0^F#9pE7!^+gekBJts+ad zG!|a z$D*?6^Ke0;)9G@02s-+m0ixP*tci+TsWO~&GiBy%v)r6#R+tOTN^^<1)T}b4csTi` zcMnUkdP46tgx#%#+--#0I|;S-sJ+D42Z*l+)J!c$8%NMqpcN6aQI@)}=%vy=dB1#s zZdz*0o@&f97P6eG!b{iE4y$N`wMMJ4$!H^@-AOdt-t~F7H8j1_Tk6H>2z6eA*XT8S zE#5|Nv)93baW{9W$LsUXkO5I93{~iPgsHV)e0x*s54# zY)z~=ww4juN@TeywmH_;wEC;C*|htsa9&d;|93)D&cX1Ql1yhDD{svyb(Sz=SL4rW v2{P9@#gt{XTkg)IL<`+YcM0XHa%data_offset), _ES64(msh->data_size), _ES32(msh->type), _ES32(msh->index)); + const s8 *name; + name = _get_name(_msh_types, _ES32(msh->type)); + + fprintf(fp, " %03d %08llX %08llX %s %02X ", + idx, _ES64(msh->data_offset), _ES64(msh->data_size), name, _ES32(msh->index)); if(_ES32(msh->hashed) == METADATA_SECTION_HASHED) fprintf(fp, "[YES] %02X ", _ES32(msh->sha1_index)); @@ -129,7 +132,7 @@ void _print_sce_file_keys(FILE *fp, sce_buffer_ctxt_t *ctxt) void _print_sce_signature(FILE *fp, signature_t *sig) { - fprintf(fp, "[*] Signature:\n"); + fprintf(fp, "[*] Signature Info:\n"); _hexdump(fp, " R", 0, sig->r, SIGNATURE_R_SIZE, FALSE); _hexdump(fp, " S", 0, sig->s, SIGNATURE_S_SIZE, FALSE); } @@ -138,7 +141,7 @@ void _print_sce_signature_status(FILE *fp, sce_buffer_ctxt_t *ctxt, u8 *keyset) { u8 hash[0x14]; u8 Q[0x28]; - u8 M[0x14]; + u8 K[0x14]; u8 zero_buf[0x14]; keyset_t *ks; @@ -156,16 +159,34 @@ void _print_sce_signature_status(FILE *fp, sce_buffer_ctxt_t *ctxt, u8 *keyset) //Generate header hash. sha1(ctxt->scebuffer, _ES64(ctxt->metah->sig_input_length), hash); - _hexdump(fp, " E", 0, hash, 0x14, FALSE); - + _hexdump(fp, " H", 0, hash, 0x14, FALSE); + + //get curve params + u8 *ec_p = (u8 *)malloc(sizeof(u8) * 20); + u8 *ec_a = (u8 *)malloc(sizeof(u8) * 20); + u8 *ec_b = (u8 *)malloc(sizeof(u8) * 20); + u8 *ec_N = (u8 *)malloc(sizeof(u8) * 21); + u8 *ec_Gx = (u8 *)malloc(sizeof(u8) * 20); + u8 *ec_Gy = (u8 *)malloc(sizeof(u8) * 20); + memset(ec_p, 0, 20); + memset(ec_a, 0, 20); + memset(ec_b, 0, 20); + memset(ec_N, 0, 21); + memset(ec_Gx, 0, 20); + memset(ec_Gy, 0, 20); + //Print curve order N + if (ecdsa_get_params(ks->ctype, ec_p, ec_a, ec_b, ec_N, ec_Gx, ec_Gy) == 0) + _hexdump (fp, " N", 0, ec_N + 1, 20, FALSE); + + //Set ecdsa params ecdsa_set_curve(ks->ctype); ecdsa_set_pub(ks->pub); - //validate private key and calculate M + //Validate private key and calculate K ec_priv_to_pub(ks->priv, Q); - get_m(ctxt->sig->r, ctxt->sig->s, hash, ks->priv, M); + get_m(ctxt->sig->r, ctxt->sig->s, hash, ks->priv, K); if (memcmp(ks->pub, Q, sizeof(Q)) == 0) - _hexdump (fp, " M", 0, M, 0x14, FALSE); + _hexdump (fp, " K", 0, K, 0x14, FALSE); //Validate the signature. memset(zero_buf, 0, sizeof(zero_buf)); diff --git a/src/sce.h b/src/sce.h index ed40582..79d0f37 100644 --- a/src/sce.h +++ b/src/sce.h @@ -96,8 +96,8 @@ #define METADATA_SECTION_TYPE_SHDR 1 /*! Program header. */ #define METADATA_SECTION_TYPE_PHDR 2 -/*! Unknown header type 3. */ -#define METADATA_SECTION_TYPE_UNK_3 3 +/*! Sceversion section. */ +#define METADATA_SECTION_TYPE_SCEV 3 /*! Section is hashed. */ #define METADATA_SECTION_HASHED 2 @@ -432,10 +432,10 @@ typedef struct _opt_header #define CAP_FLAG_1 0x01 //only seen in PPU selfs #define CAP_FLAG_2 0x02 //only seen in PPU selfs #define CAP_FLAG_4 0x04 //only seen in bdj PPU self -#define CAP_FLAG_DEH 0x08 -#define CAP_FLAG_DEX 0x10 -#define CAP_FLAG_CEX 0x20 -#define CAP_FLAG_ARCADE 0x40 +#define CAP_FLAG_DEH 0x08 //00001000b +#define CAP_FLAG_DEX 0x10 //00010000b +#define CAP_FLAG_CEX 0x20 //00100000b +#define CAP_FLAG_ARCADE 0x40 //01000000b #define UNK7_2000 0x2000 //hddbind? #define UNK7_20000 0x20000 //flashbind? diff --git a/src/self.cpp b/src/self.cpp index b8a02b0..3610ac7 100644 --- a/src/self.cpp +++ b/src/self.cpp @@ -50,32 +50,32 @@ void _print_self_header(FILE *fp, self_header_t *h) { fprintf(fp, "[*] Extended Header:\n"); fprintf(fp, "[*] Signed Elf Header:\n"); - fprintf(fp, " Version 0x%016llX\n", _ES64(h->header_type)); - fprintf(fp, " Program Info Offset 0x%016llX\n", _ES64(h->app_info_offset)); - fprintf(fp, " ELF Offset 0x%016llX\n", _ES64(h->elf_offset)); - fprintf(fp, " PH Offset 0x%016llX\n", _ES64(h->phdr_offset)); + fprintf(fp, " Version 0x%016llX\n", _ES64(h->header_type)); + fprintf(fp, " Prog Ident Header Offset 0x%016llX\n", _ES64(h->app_info_offset)); + fprintf(fp, " ELF Header Offset 0x%016llX\n", _ES64(h->elf_offset)); + fprintf(fp, " ELF Program Headers Offset 0x%016llX\n", _ES64(h->phdr_offset)); if ((_ES64(h->shdr_offset)) != 0) - fprintf(fp, " SH Offset 0x%016llX\n", _ES64(h->shdr_offset)); + fprintf(fp, " ELF Section Headers Offset 0x%016llX\n", _ES64(h->shdr_offset)); else - fprintf(fp, " SH Offset N\\A\n"); + fprintf(fp, " ELF Section Headers Offset N\\A\n"); - fprintf(fp, " Segment Info Offset 0x%016llX\n", _ES64(h->segment_info_offset)); + fprintf(fp, " Segment Info Offset 0x%016llX\n", _ES64(h->segment_info_offset)); if ((_ES64(h->sce_version_offset)) != 0) - fprintf(fp, " SCE Version Offset 0x%016llX\n", _ES64(h->sce_version_offset)); + fprintf(fp, " SCE Version Offset 0x%016llX\n", _ES64(h->sce_version_offset)); else - fprintf(fp, " SCE Version Offset N\\A\n"); + fprintf(fp, " SCE Version Offset N\\A\n"); if ((_ES64(h->control_info_offset)) != 0) { - fprintf(fp, " Control Info Offset 0x%016llX\n", _ES64(h->control_info_offset)); - fprintf(fp, " Control Info Size 0x%016llX\n", _ES64(h->control_info_size)); + fprintf(fp, " Supplemental Header Offset 0x%016llX\n", _ES64(h->control_info_offset)); + fprintf(fp, " Supplemental Header Size 0x%016llX\n", _ES64(h->control_info_size)); } else { - fprintf(fp, " Control Info Offset N\\A\n"); - fprintf(fp, " Control Info Size N\\A\n"); + fprintf(fp, " Supplemental Header Offset N\\A\n"); + fprintf(fp, " Supplemental Header Size N\\A\n"); } //fprintf(fp, " padding 0x%016llX\n", _ES64(h->padding)); } @@ -84,7 +84,7 @@ void _print_app_info(FILE *fp, app_info_t *ai) { const s8 *name; - fprintf(fp, "[*] Program Ident Header:\n"); + fprintf(fp, "[*] Program Identification Header:\n"); name = _get_name(_auth_ids, _ES64(ai->auth_id)); if(name != NULL) @@ -167,7 +167,7 @@ void _print_control_info(FILE *fp, control_info_t *ci) time_t t; tm* aTm; - fprintf(fp, "[*] Control Info\n"); + fprintf(fp, "[*] Supplemental Header\n"); name = _get_name(_control_info_types, _ES32(ci->type)); if(name != NULL) diff --git a/src/tables.cpp b/src/tables.cpp index 8994321..2f8e4dd 100644 --- a/src/tables.cpp +++ b/src/tables.cpp @@ -221,6 +221,15 @@ id_to_name_t _ph_types[] = {0, NULL} }; +/*! Metadata section header types. */ +id_to_name_t _msh_types[] = +{ + {METADATA_SECTION_TYPE_SHDR, "SHDR"}, + {METADATA_SECTION_TYPE_PHDR, "PHDR"}, + {METADATA_SECTION_TYPE_SCEV, "SCEV"}, + {0, NULL} +}; + /*! Key types. */ id_to_name_t _key_categories[] = { diff --git a/src/tables.h b/src/tables.h index 3f478b7..1cfcfd8 100644 --- a/src/tables.h +++ b/src/tables.h @@ -45,6 +45,9 @@ extern id_to_name_t _sh_types[]; /*! Program header types. */ extern id_to_name_t _ph_types[]; +/*! Metadata section header types. */ +extern id_to_name_t _msh_types[]; + /*! Key types. */ extern id_to_name_t _key_categories[];