From fab1c26445e5ac8123726b49696215f0e4b715d8 Mon Sep 17 00:00:00 2001 From: FelipeCN <57776624+felipecaninnovaes@users.noreply.github.com> Date: Fri, 30 Jan 2026 09:22:21 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20implementar=20estrutura=20Pessoa=20e=20?= =?UTF-8?q?fun=C3=A7=C3=B5es=20de=20processamento=20de=20arquivos=20DMED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 4 ++ RELATORIO_PROSOFT_MOD_51.XLS | Bin 0 -> 94190 bytes examples/comparador.rs | 76 ++++++++++++++++++++++++ src/lib.rs | 109 +++++++++++++++++++++++++++++++++++ src/main.rs | 65 +++++---------------- 5 files changed, 202 insertions(+), 52 deletions(-) create mode 100644 RELATORIO_PROSOFT_MOD_51.XLS create mode 100644 examples/comparador.rs create mode 100644 src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index e65bf79..aca8bb4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,10 @@ name = "dmed" version = "0.1.0" edition = "2021" +[lib] +name = "dmed" +path = "src/lib.rs" + [dependencies] serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/RELATORIO_PROSOFT_MOD_51.XLS b/RELATORIO_PROSOFT_MOD_51.XLS new file mode 100644 index 0000000000000000000000000000000000000000..bedba5f3126298127e6995cb04010f7f0a9da3b1 GIT binary patch literal 94190 zcmeFZgL5W9yfqx#wrv|5+fFvNZEkEk8*FUbw(VzQJ5P*n@4X-HSNHu7-nXmfS3Na7 zQ`Oz){7&`E=~0#ghrj@V0)YVm0U-qu;SQd200jYofCK?S2Y~_86LWNMGk0(^RQGl= zchzU|vbQ5CgaD%{00H~g{{NK!jYptbeZpao1*J#pTv)tUGwM%7WhD$jCxITtDRib+ zvNlEQ5iZS#KedI5MgzYPR%Bjj_8jAJEk`sB?=?>vbY+TJHb!se2L)V zYR$NC&39K@R&sHGNY`Swi{CL6MEGD(W*#cG0Gmg<4UmC^$Wp? zK^-tTT6Y{19D|+}O9+@2N=f%RD>@zc)cLJdLrFYWaW&5Wf&E#ayh` zpJEAKtG1AKatlR>|EAv|;eY+(+4na%i1PoBrY#yQ0 z{6F;k--h(p{wL0YNg`$SrY26!<%R)C4H% zcp>0Yfjt2qlUq9iap&WtPx~CzF=!b4wV*4aYF9Pk^=;e* z=P7eJfotidXNba)yz-ZeS(xLlCYBque&cqez*jsCH7j20dXqdCJ~D4ZGrRr=@ti*N zPd`S*-{Y!e9B40Wb5diJ1;9YvW{$h5T<>9S*rBTN+lk;9;_}^piuFH9@=GW+Gc;-af2S*1E(3eM}LHMBC z-S9&?&OFS3!lEt8%Z{;#nE?%*wzzNey}(3!UHa>i~yoH$inF| zDgDcU#1qVY_lJdo_pI$e(Hp`ML6sa)C8wZYxEo2txD;_9ZL;f8VOE#M&7Pa+`y_4O z);+`2+|O(--i=D8VM%K8$O&#ZeUOHp%v-~3I#lw zS012Q*g&p30|3)vZ*t6mU2_jX(IXA>y%wRZ@NQhEwO`jX*%%`sN?P!P)Q5LyUMb-h zp>dSH*Xa3m1394V!bKkzI`+$BF#9-uWrr~tZK8S#ey>3KjFt%q8sM7Q+F=tmyh9Q# zn(worL`#G~TVPh>W{Y7QI@a%n7jBFlB{5S1UX&SPTSMUT67m^%R5jLH%TXz&dE0>r zRZq*e*@zn-OKoRMoLMDpYbGm9kpqTjL9kl$yERA8m^US7%df+0oV&`8*AP&L^_+uU z-L#hc1$h(e3E?%~pLk^SJt4_;;q#`_Kk&8RqL+M-q8uhvjA1zb0RKMUl`p2*Bzxx-xWt`(&9$ga}!=DEpw3D|8peJmNK07Gn|2_`ZU2$Ofl=*oHP z=ZOsw0*iOB*5?|+^~R$8#1sGenC^?D3J{8;UU-$@;Y}#rJLKzxeRyH$o2c7&{BCPe zxi|~%%^|r?W9OO3!-$(1%0soLpqr2lYJ&meuc>XW3W;@eh)-|oE9Ljpt0l4fp^1AYq=Jd6_eYbBPD zEpjrH4yPaprjpK+t)_Vu-c2T^Ro9BL#%IHi)&InkCphi`TZOL4focd>=wpa*miPHf z_+uzv2q0z1{XXRJe0xyUzTk&xPju~(--_J#@nX}`?X%;LNl3JYoWJ_q6)}@g_tnkY z{T7k`brATn=j0XpvJ)|sP#56u_i^9F?TF;r=O9#v9JiA(1FrQ|zZGa8e82X|?1*Ie zlmjdqs>_)Th0=|F`7JV_LU1Px4mXWr;>o)v{rLuhYy^pb}nJzkUIFc*eN6r~5%MRqHD^%(l*Ry^A zI=&r^Tsw4ef$PjpBx?i^$Gydr&*%C2yaE)~SNCS7(O{~8ZbNbz(Ed%A*?WOH>@%~0 ztWiypWn1=~Cd?lS-!6^s%^d)V8XR!f zCIF#FpjT|(x98W(%LjCk1grk+Y+&bfMv-5(RLIJQDaW|*;X&JomBZJDHHz*Dx7BEk zWZejf+g4r5@$1S2@Kvey;mc1wwrIr8Jx7Z8e#D525aS?A`16|m$`PqFb z_MIi)HdVI)p*)jv0DFSD*K=UpN7X6+wj zgs%#}EWYb^12=K_b!MC_j#^ZOFFn2SDB=>{x<3DkP4%t;9er)^KHxJeg z{f!bKZ6nQ@UGMbl^dHTknZfZLZw{Om2UvmcXl(D?*RA-pdVjVqd#|$<*zy@AQ~Ze1 zs6?@Xfpy;zp!a=+<{r-5iugT>o6?(?ChXD=``I+)laBY^tRy^fR8=EnhO_G{4|<** ztz$FJ#OJ*|*LP}jHRtv)gx9sjFPBPdxw&SYy_yP2vCkY zbyhh&RDFOmmJ=623r6AthEkHg5$2zBR9}DF;!LMi{Q~&msa7@xE*~oUmF_1Gt(&Zp z6L1N}CP*UJk$7LiiBIPA5p|KVVjMcQ@~MR?1!GIjgP45>ayg$P*P1Z{1*vUb5b#&F zd?c;m=H#lsY6#I)P=%K-?Rbt@NN!K$ z)SiaL!{VKY!*APQcJOExUzCi7t)D_SrOgi*${)^gklt$WO8|sv8Ph?G>|rMmljPWR2byibJ#&z6dMxqlgy>ao@wm#mYs%_x@uAv`E3Akl z0-TgQiz!kTRCPsc&-+QI6J~7AM2ji_*!}3zdZV zMJ2q7R~kY@e(#R8QI~kan=<@y9Hv(79gyXt-VGE6xr`si4Yg_^h}uc4>lIniykczB z^}V~vx)8dssQLD>_1CQ3XJ)OaZz04tZv>gU^4;H}Xe^ zwW->&9S$a+7GQJ*6{8Faajh)aF&>9u3QcK1KW_m~tZpyfu+x1Eo2z^sFU*1%H)o0$Oa-?P zNaWGpABODw*rQ8FuB^@#Rkj~nRqPPgtmOq0P`BIxU}f;)5q4seh9W34Oid(qGf7x|J&R6RVJ-inV+5cw-r@H2iB6+|ce1x%5h= zxEcV>AiHMI`WZ+U{C~@J=dpiKT#mg$(~-#r!Gh!1J&50T+}KT;K>ciw)E*8H#~T}M zh2BMw*JEn1hf;a}0*EBlla6fb)ikucnHQjr9nV_l)I%kt(`mCgt}wfRtZdz|D)+yY z*yzuh*U$RJ6V|^P_V<$wMRMQw>rq|~u3PFgt|cJ_s2Tr~S~0VR+-G-P z^zqR44LfI7eznBa(3@P#;9g{$J$$7!s&{tsh@it21|ue8YK6Xb*8Lg>soMNzC; zui4}loRPqvBIXP*H!^sUZO0iwuRN?d%)cCLSz#Hwb6aMIfZ%3_TzHpl&?YtRsltAu z;YN>WD-_fg@MFdAxgP9680iNzH(dei;txA>IXz|q#RpryWPlhM@89b+42QU4#K|sQ zX+zMbA{1X*fUo=Z&ySDlz;{awgfH%nT?W>!COqgEf!~tj*IcT1SVnSmgG=`UH?y9W zcWJoZFO<4pbYV+3p2+f(JH*@$UWvaQyM1(qW<(bu4un|2WxG==GVKq~$>Ch{VFU1! z+3`-=E;~==uZB*O+nUZUt%GdmLH!`#>q9nLtnoQcPtz|c=ARlF*v-S|nD=pwF5DFz zm2-NEe~7`ESF4Pii4httVhqBWkjjo~b|Ked)=`9xv2k#r?6A4Y#oaMAl?~#vc2!WDV-S9hebN$vB zwdnoSscf_IYKFbm-Vmf5fYoHI#~j6x2fYX9;Pa6y1smb&$87)OYeS&b0#PmEkjzbC z-%ghv1pGWAfW&|pv}qr7^UXJF!Ir^)gD240T`W96Il4`3_m_svh)S?u4S2(-N;wTa z2x)^aZ^YSf`+T{`MxgxL96{2%E%ntmx2;!{_1ZBV25p!{m z_e2akIJQQz5SIP7Q9GNaHX=lY89q&PfBefg9NXn!0q#4q6Bnfn;aM3t)VOU&$jWgvh@>x&~^7gs{p%+{je2Gmuaa zGbLQu=fqfmDXxw`XM?9ZKQGv;ERztowktyrLM&lPDfAfTv|`Z>_O*ZyVV|k+Slgzw zxeQaWU?lb0W5UK=*!B|pXv}yiS#V~H^LPjSdr5^=M3h-5&hF9tO5DyJNhd*2+7B64 zlbqHMTj&7tiKcZy6CPF!*<2%$CDT7pmd991sPUCa)usVcx>+UlaeX7#L$|1#0LSu2 zH48#>sqz(Fm1_lPu%W5hNV?nl0|O4yfqo++dmu_Ocdgv%tfuW!=yx9+!f}MOc&RNCY zkY#80i)&wc9++Vwk(PVL9ASbhzUi)Nxat~i9(!)u2HD_J3Q2vU4ciqOq7ai5bLC1i zaGk>~R(PsWigLzLx#FOfjEAi8fTNx^&>bct6OcQn_&{j1e7Bsyn}7l!3r`)Ae2+3` z4i1F#uW)-NBrwX~2_vgk@GOy61_)MTHF0V>(+*N=5Lz%>5mi4*ML-UPGO+aemLbj~ zjlaZMv`r*Z9dPlPIKCi|Ap}HSJ_?E@ErX^|66rd!&3Qyai4-Q4$99}Gf#mZ_zY6ws z&@0qcA3d8EKnih!hLEKh)B@Rv9kA>xoX_sSOs1taGw*SR3pUzKPPL(KW0$bqj2hAg zDIunsMI$R4mNtdYKXeC8bSBcWPp>zi!XnRBq_SBILcoAHZHG_5pMf3&!O zPMN05v9#=qdL{d-GJ_CnlW?em^oHv}1zz^&xYkA_Uy>-;Uy;j}7G}^FV@}djBwO0V z+Z*MI>7R|$cvlBMm1%6z{lqDUakAlae7m(aa9V0WDF+uBq||9rAtKv;qfdQCV%o@- zRfP_A577FU_Z65w-q>0rEl&-Hn6KJj4kSfP)oB@(xl(n2MPM`;^e3R}*_JxB#Pv<4 z{>0E%?p$jn{Q8==|!T z4sl{jO1^YyBtf}cZxyS2>nsBN8{58bMZzMGCoFAu7-2^inL?@3oQm^NT7Rl$J?XA^ zH6=>A2$O^HsSkEe(3OYlKmB@A{|Sk~l}%P*M?n7NT(b^&x*iHB*)N;;&fxbl$spo;F3pau-W*>~A^k zB>jFr`d~bd{CWU3oh@3-P2T9x6eF74d@+V^@K(lNeuI6q^Q{q27V9t^NPl~KmTv=Y z@%bxC$+8*OfOMFrUO{PPLr+ON1aDpb3%TMW6yREHCDSA8oojTK?2yf40N=cfR@!H?xX685;_tHhHNc z=tbh1vmqC?I6sw3f+h$uLJT{qu^>-XEbYQKXZ4BRYT$Ob5**#aytiPIn{NLc4IL52 z#1xAMg;K7vlat9jONojYRtj32-pZAFnPh=~z~4RQq)1?jCKM&cf$>OHzQUi2802yd z+wv!>Q!@p5#OvD0Q`PyOkQdBpf%9gAW;FtT-Fm-9;&JBTc2-XUUur8f43EaHr*(|Jr&HK`qh z4J9D6#!ovH4G?m2IO#AQn@}uiv^lZGG>>H?Yy@_-UF!6RT00ZOBtM2` zBt*OI(A~vp9Z3OE?xgv{iqd*NEU2f{U*)g^1dzY+P4#L!CeZoXZEKw1mk4l|=PzlS zlYL;vtn@O(RqB!-mD`Oi-mZ>~>$pObdxhuMFPzpF(V4Sv^LJeu)Lp~dR1~7i8Ss14 zIqWw~j~vHM?HQ6PLD0wOC?*`{JRvK&uYCu(6U3il>~u_Ck4qC3e<0q?Jjs|7mlrKV zUv^|lEt?&i!r*yUPY0zOHJYLlS8Y#=Q)9jh7>Ynw6r%QergrhSNtTFW$+e>U{m`F6 z=x&fU%N8>Fl1X7!N2TU8!8GU%OI7kQyD)|`3gmgXacf3IJ-y8|T|3l+6AZab=};GD zvh~H9Y8%l|908!}!y({yhRwT14+JMTpA51E(M2Ntu*xN9-u5knLYB&aUEGQX?fqFk z7T+0dX#(mz`8^X{pcwOIn9LBh*7?&QdtD;y541w@wW@whln_lT!BW_@561!P+)CIk zijHLdUnJ$9f=)~t^c5dyQpgnH!{87O$Jh)aM0vu3D*dr3*waSrST9 z+i(}frMLQ&A%%4|Q^`t$5#%{u)s)~a;LFe1;1uc8N|=HLv@&7RYbq>bvin6mw_!%@ z@uN2^kT}#yP8R7Uc??Hf_kvbXB%U%I+qp(JiEJPCy&`O&_;y<3VcH(^ZX0nM!#5}( zrdEwie02lAAUX$pVECS`z*Ben6fx^b@@s&Ba?3(qdUj z(u)y$=)@@EaO4Hw)r}}eSD~+}6AvGqz(w1PIu|whjp#LPBJn3lb194Zx06a1Yfvec zx0cfXDw5=DBvflUa``iitkd=4xo8;)iV~>uJU?-IV=f?2iJ`{Lz?b1u00Gzxz_s^$ z&(uEjpi66pOQ93L75*?j$N9Z1*<5w)FbfRwESxfYo=Z62B=Mgm)c^^MYkKbwzSzch z{^K*kWl2~btMsRHKJlw-?%RORov(sR0hRxflF084)PgE^*1kc~)uk^>|319Du7fT6$A>|%%84-j!NPTa zyZDPs_eJ2wl+P?V%#BlFQppF8oF``wky7bFNT5GEIJn160_5S2eRiQ*m7<(${_P|@ z((Z$LCK#*}#-#}<@>%+Z@KbRnNi0{GSu#F_2)L6j`YS!6gNgxvr&1$Yc`B^a&v*>? z4`!Ul$6W;|yL8xT%L)du>GbMNh+t>w*CCA_f7X3WFbdQTp{OJALgdMZXLDc6oLIDF z>wp&}_5(L2*Wan0=Zb>`RyRB5fhf*g6=I^kPs8k7aqzds8&+q-Uc2j?iuK2!-sSsK z-FHFYW@Xq09mnIcm7}&Fj>50_ZF3#5GOeAZWrN9S3E0k%fWHY^x3joaw2RBLPaYn>>%#O}k@ z`CzBn`<7f0DhaBpP@=1Bd)EniKa6jP6M&D;%4d^J>S@fT>VnF^mb>&=m92y+WMZJp_CpkA>a7YK=BDxtkmqFfp2<=dWycCdJ-#>(cl zP7mHru88xuef5y37>UmMe5ThSjxvb|LdNK=6GJ&v`~EU1%XJt0hS}?4!DDU-Y%Rw;7x58}DP&vT7|(5eJT2xN;Mh~ z{8$1{hovpYP%5K1Lhqc*4Xs%-KRnE7{!{0R>v6Vh36*C&Y7gPlY&n0E9FsfbnR5>>Kgy5J% zDdd37tvB^ZO}f?EnY)&Fgwh=9zhE^3#33pvG4>gt#xKiAItKG1V7T43=%>s^C9Wl2 zE7AyPjG>t=wMIFwyvC6iOwu>5OWr$2ZfU?{?U8lu!BE@_SYt#Anh{F85FfoT@lI>0 zJc(+c#ZM9I3LCrIOWn@33kIwf$NVKsJXEa0GgrEk)zt??mod{(+qc89@FU|Oz`Kam zO;d2`v2^sR`eTn-!}L{RpSQ7JDX|z^irYIiz^BvGa$CXI8!8SeXeXL4x4cux;kAT~ zKz|2B$>?=oC;*Ap<^okdS%=nFBrbvk&ENiXZ`qII-_7fYtK2vwS?%eXh?A=ZX`P+?wPz`_BH&v@Q z+CT+pZy48HcvN)|k9AjnUn>!arJ^S)>`M95{YxY%L?$s^Xq6)Qk^3}`TIA0$EbdU7 zT?O0D9x

aj-XqRjWyv=5p;MK;7g=WH#&)8E{0OVP`B;CFzTgrHGD-;}}JJ@AGaR zgR0yRWvo3b)Vx`54}IQK4q$7FotnhZd-78S1i@tvJLhM~lVBC3HLi_Kv+})42Wil< z2Qyq5j5P0*vqUWnNz1QZx}$NH-{f3izX^WeQR0!FK3MKzN&Rq@j%VadkE%|!y3T2ufBSXa` zoX+?X5vlMO)PRxQBMP#yjZT1u%(Y3Dy@*gSz$yytROT3#%OMb{uk3uIG2}>r#+9K` z*hJ;4Qa#;gl8{4F!v<9kCf%Ra zn52g&&nl95hzSUZ)RO=Cm}VMjES(HJ5GZatgn{xNYsq&A$qMeqj}$J=5}q1dY6F}5 z+cay2@!JS9Y(omL!YIwMNEQpn$*%%Hq^@k&UbOq79}S`p-o&b7C`)!qh<7$AGu~g$ z3_o5z+k+b5$eiDZJ3YB;C5a23_GNxA6GoN>Ts+3n9-uA?VV<$dp2Pmt3Ms|Ht@it6 z?xCbrZ38o3UR8@%ILb(k?~@^zU+kK4p&b`fv!^;WrOFe`t~IKb@etmQa7u#$jgBdn z958ztbi!qD3Nmeq%&>cW+1747u0d(g?i^Ib0T=wsKpM5R>T2eltgu zw`c&1HFkbAb7qoZL}@#AIH89|0|!|HsvA%Ek=JG1M7lbp9H}%E0>OFBT0WVXKoi-Jg$jv~pX>;zNp=BQ}VtX_v z?Ajw?h{#LB5)pA{D3y-e*!-SoU+zuaUxt4o!U|;5 zDmtjC865t`c2g_IoJRU%WN?lWWm|J`c9Xv>__VI#Q;?U^=ap!wDJBw)1ZBD++al5P z3#P~m3+-|rG-P=K54OPvN>9 zlgjFF`sF0lVGg>@M!sa5Ks9utS-y6J-a?$a)#f9(1Y@j-kafVHR2V@>_Zm)#5#tF6 z^Xmo)m0=Mt<4xy85?*%f&S~T!MbU-Nidyk2E75_bPERb zgB$TnvcEhWP90=k1vAhQQ=NogEaw)lp~Hu-(4_P<`O-rzwsad*dyjhsHctFU z&P=5ZtG`7vSaiswY!wgb=Mb5FjpyBp3U>?yP&u2T7;g*k_MwU!N*yPn-+VFo>y`(9 zMAVb8r5JalCc5(cekCIHG79~JS*frs>hejL*z;Ro1rz0vA(K^upz~rr{D(MY#UtV{ zET_NWYD#XEjfgN9+sjTy263&g}-p%YP zlP|eQv| z#o*7ru617ySEY$r22)J* zpO5O(1z;4WS(UO^=c$+YEb47-{4S!Vv;|jZ7q#dl7bLpz+eo@8YB?zx9?cRRx;z(1 zC{dFtS8EHZPz=FzFhE=wOJ$%w2uIbPe9K=qxH4H+dmDR$?~cX!tq{$9T`mksk>XC? zCNb-$dr~PTjXcum_Vfo(2YqPGC8X@Ox%t~@V2zki>3!cEsKRNa8*Wr7Y0tZJx(wKd zqnbon_%_!gkLG>ANmYVWH(4LyLh+V={D!Q}v;3`w=HlA&J{nAV(lRC{!6I!4rfXtE zmFP6XRjv2Aas@Ws!liD(;t2&eVq8I`DfCW4IV~^7l_rs$4I%Ju{#i9+yy5R(MjO$+ zeA+lquC1iSb1KwYC-<(jc*5$*l;+A1+j0}C>_0=*w(|Cey0}Z(qf1in25RH*%Nta+ z8UAfvGj~7F>2;CF5f4~URmzA`l2$NoH0L;NwFIbFs{g2kae`<#o8iPYat8yP)6%)A z)HQxo)5%M~V2NrhWgZN6kAIn^%OIZ9pZ8P9)iMr^;cNL{qa^B|sUHhf+goY+RvhNf z2A&uuoyEcw{+(yqCYnrBS{P9NiSE*EC2618<;s|wZPce1N#h<|%P3s_kw75;ejoOo za5=oXnU`LI554mH((fmaCYS!s3|e?rXc~@S3uUXjID|tcH>ECm(4w5gs*ZxG)!=>} ziHoq_?MWMZ^~*If|wdNS-ZvwxXIfl)K*5~ zGsdTH6M=dE(UH^K5m(N;Kn1=9QWC>*Cs^2_DYjMpt?wpdpGX7G`8EbDqd=nZ5>szB zxT2zL)L5c6CVWGf3dJYRP{8m;Lp*FnqR{b%Oq4gv#A^)xe08Ob{k5P@y#MxWv_ckcr5J=Tn}oKN3W#{q)qs6YT$L z1O$(~UP_@rK=SeaW2f7HTD{$@%VxBRlxNIN4h>yg~$9 zQ@FZh#`$P@CtEL7G}+nM?;Ye}QV+FhQcFuRL>&cFTYo|L$S8fPwJKPvjrYw{&#aTz zv}|zf{LpO-H)jaEIa~5|6#C=~+*2H$2bEEsJZM!D)N)3N8uJr9(Anx>B}mOil7)AW7I8(quTR+*7e@^48;$v*-wO z0{UdyfLR}%@fjPUb}$l)E&u#ZC^6Cm;T}o28mMq{ZuFb$GWzVNRe{>;E?y$rVYpH=SLIN7ojE`)Bdu-MUe z{L|=@wU8C7wM1IWjOyF;6C}KrZSP;fHrg4PmnM^@cZxAu7mAe0LT@Ob16zf)+5 z#3Z0I7gR(SkaEM6{apzjFtX`eCJR&}zV8nzsWGv-CF(60CqQ%Eie!>S8*fhvul!&P z2odl1&z_m{ge3nRe4XEir(a4^$V3D?->eVjI0l1v^4xx3SC)bPpR8{WcieNt0mfrx zd|z$ELa)G+xvL*IcBo;NhC*+j6GfJW{%>QR$c(p&!BTvF(&Wj7^oJ<=C#bOs5(8$6 zk`uyBIN_OiSUeB_tTlgByncGQX}fkN)(}s2(6k0nW+n&xpU;D4q~#?iQ^sZ>p1hX& zdD`GkI!`4MUhR>VPqQgu@m=wEziMtk#w2atV|c9?S~?I!P3F5tofvLohs8-=@d4Ds zY@K?kc+NW|2ccztbn}eSote5~Y{le7iEu@79KqcT_7J2il6D@Bg-n*MD$nD;qC&C3 z*x_GEjU{oI_rv;=W{yy#Qmy?y})tv1gv@38{daN2c((-39bUm~NOn1@}pPqbFj-O`V1 zEorkKFw(y(b*_>oSOGTZ4UrzN6kA=IRWAA2w9?TM3kG+qSM^6IxSNg`?+q=!Ekn5# zGY`>0&7ag1&9m}o?(k8gm8hzBY-l!SmV<@n#tW&}S{1tH&V+CUt+Q|pg(wU?oADUF@JXAYgM(m(YtWA^5m_IIPrUYapkjsp*oGAIS@Wj;?6KF>e^pK!5;HKqf-Ux7Dgnz1YrnZ=JAv+5dotoqgq(#=Al{;SG zSOM-?#eQ&$@nlcHKK=9Rl_{;Txnx^mxt9K+b6IVUIm^j8+MX#)}%#|>Z1ei(Un+Z;hO z=>Du6)bb>KGlwMJfx0^#Fuo0rQZGSsAVoun>AjTaO+oaMxQ_ITgHf_dns0S&+jrkC zIEE~dUAoBF?$o2@>{0AlzU%gBxzV8SakwIqXCRBMH1I%X4-%toopv-;e;(@kB&&5WtK>Y8r0R+i5%b>LCxI(;U8_UX1!}G_x18sSOkBC=lxY6-loJ%T zdW7ofw{3-bCU7h0cPJxj59rgmuM$yq`HU_G*rnk))T}z==UM=+wx=>!S?=Y9?zMk- zVb)#s{gdwhxr0e=?j#`h-|nRz5)cr?|B^LVH}8LM5dTBRw{`6u_jyph0v10bXg+#L^CqnHl7AaG0`jq0zRhK*>OD| z1BS|hp-sPGh&H}zEcG(S$VmNAHv)xbfA`uSq1{2K3^|cf4@!9Wavc`r{l=M ztKSMVW~kPN*XE4LO)Ce`Yi16msGA|kw9jBU^iHzKx~xR0v>kZ=nL^oXU0^YDMyEtD zH(aBq#Jr)Vye9#6lKkY9F8f4YnKy5Oc231NfEYCGntlNFOnlyGmpy;{+zS z{6+dX&p~v@nZuf;*P!i+yJ5UymPJjBUchp>k)HLKD-9x<+#cJZ_pwcud%@usebz~aRPa;oJMXVFIDARr3~xPunAZbImD zxx>z{km@H+tSlZa`p5x>(lo!=s5TUkHBr1^IaTWMn5;{0lgb|Bs+iE4ggPj=N^x3w zG92Q7o+!uF;tu%DrK$6#Q{66WCs@(q@bN6?t*$Nc@JNk$N8(u{*`dnPdtTEV|1lN_ z4x@A)wRAGYTua!(yqz^hX8Ex0U|)Vw4zW93%I#$#%j<)VP8FuK)(rk^NK%+>h zO+g-0@|I=-32-H)te(H4A+;jqDV&TnPw-J%uQoD_w(AJ>FL}fpMDHG`=P|agjJJt2 z36;FZliMob5JkF7JLF8}7WgKav0{{H;9@R#`R1#O>3KPs*BkKi5A+H%UlW>lueyAS zdg8s4i*xoeaO}m*|K;2uj3EMHVjN5BuRL%d*9k9=BFbgWs2B36O^Haipq7CG86$@t zG93rU>TWOTsbH@)(v@-1!e!0bZ{R4r{JO*YQzH<*M$_%xd*+xY=j`LB{Z=UuoDzPv ze$r8c4k|0Hqa~e;9AI=!N4XSVD|SZZ&xJ0$Twz3Czg!Ku#BWj~SzUhk7)DS*alj(M zshvw7p>Yq!^gT@u)JwbzzD|-6^*viC6L86Yk5VKww2Hy`z|EQd4jSSLsx;7u9$E7! zzvbJ2D}QTwY6cH_HiTDS7p{e*TZYyJY0-iQAL9!0Snq>f^vL{=pbbEFPdn#J4+Jl_ z*ZD#$XdMByp|$Q>`!;y;Lpa~!?Vs501g&ti{7#X^r_iv6{r=a){F6IqGaXnrhg3@r z!V$EI1#JZaj0OX-v#c4f#J8*Z@qsVW!vXSR|1+Otg_F75WkuH7H>|mm!lELjYy7L4 zPN^BnqnAn@EubJ0iZ5lRmZ1#!teEd;1+vQqgQl8-N5YnlxGEy4r|XN5+H8j85<@jG zk(#t6dVE(uP?cIKpxlPri(L4~NgbkZm5)5>^ZD~|$H+(cg2&%+(bGqtfG5O=%{_Q` z$BZu*u{+-LS?Oy2HJIGe|DT9s_Hj?s63APQn8Dv7ceRe!?%=$1-b2)1tV8F{zoWe5 zv0wP~F2Sn+&LVdDvmgU3@t&xj2N=qYkpmFAZaR7$XMvb6Ml`TPske)oC1K|^MilLW ztgvm(p zBE$7K%9$A+)muV$a?;jf(b&i4W zuUB>X0lwd#58vJ2_aA-VkAdHFp5JeeuYtWEpP%n_bE08@Ucc{;8^gY@ud5hr!`;u% z&#^Yc-q*+XcR=v{RM{LcAOP|E`2k?y_xkzp-X<)}`Sx-V1DwiOV;1WDyxn?e7;MWw zS$=t(VkX}034D3HCME`aKe;p9zkb#^_Jw~1zP?8Q`kY!4ZjMvmU!ESmKMtP1eV)$_ zZvG4#3V*!qT?FPu3k5#i?XniW;eLi>R66KF&HvwNL0l~)W`ThalQ_pkURgO3D8EY3O%wLZ?ODLa@d!K#1 zk%7YRZ%=hs?}mWB_qVST7PYy2ME2V?rTi~T>FtR5Ddop0wZVVk+ht>HMfpL3f$n<- zdtFdL4fwh-cN6ISo?zI=mH!1ict;L=e_wMdsk${q7XEA#{yy3J{P$yo^`Vwt9YaJ7 zfd3n3D$Mu$d z`+U5cOO`+8?yWbW0`@9jof`>l5nY!mve8dr5h*ilTj*Qb7HVJ$40kS|H` zkr9~gBsD`2X=_99B^M{AWYOC5r**Hd;fA{^qmBtnUi|b-?PMr$N&M$dclSScMUs=*RQF)_cA-kdsmJ3I6jqcnbI4aK2n9N+VGb7`448w51D$!m5CLkAkN{e1MCr>wf>yU z_|IBkrYd+$p61Oh^7ZtTFbhw2z?#XY!RN1mJzy8sh36e}Jtyjsg@3ljPJFJDFz_1Q?fvG*ptVE5#@$#_ypJI|03-xz@pH;Z?7#PAR$~zt_TcBDcvaD41yr3A`L^$(4{iMMFeT28FFZ; zp~0ZLyE~*ieP{6AU!wo_-v9f~hl32T+2`!F)?WKCY|rc#eHF3aUbcJUcj6DRu=AR3 z2{=C9{J8T~Z&tqF{&-WFy~<_1?PIR9G`Yiz+L^9OBNN-43j_imdtSxhAH`n~UHqhX z1z%uI>x#bsbpDg<6*+1&BEI*P)Dt0CeF&)&)QO0)h602RRo+7e2+=jr-vrNnW{S_bi|M zj%`*%eT7f^w}wI^Ta%M-TDXkbAA7yNt;Tsj^$0XKFYK*-x0XR?q%%#v`=a*ab6=)# zr$*0U+t5@CCi)|(_m8tTLt<2C7?k%v%a*jLx+jIK$@A#VKaS0Fc%=Sz_X@l8NNP?6 z6?dgHyR@J6#0>hjh!elrJ9&0#JlmNWv`ThNbm5}%)C~HhK+k_sc@8|-YR$~)F8Dq@ zgLeA9`GNCWao2ME>@nU9@_P~$_o|0YcA@&_$vpVzm_<3=wkK=_ybXr!F@$EEh#i|y zRx0MxZRf-Gq*{Wy35rnKcKrkp3v}Fyzg2IsVd<0$r{tcx0%7TTtba@Fj*$Z*%IE5c znsVSbGMo6O^L+RNW1>|~gDbjvx=)vAo^^W@`)-M+4~@s#vP}}KJ)_lrD|78BTHBCJ z+s8ajdj|XS-4%V*nz8QfoEG-!R+G1aI_&A4^*^i6`#|WzWHJMu+{t~Y?^})U;}-qL z+__1J)lPTC$=rR2Pz&CrFG1yx9p)(Iu6~!5f0R4UjwX9AGi(tpqG$GY*hw~$*7fPT zrS_Ls{U*Iu$*NdKm?mxyy2wqrNZj+zrvLDQwqS)GZW6D`tThqFKY`Kv6n$HpLwbGM zvYT^O=kCF%s{b>89}6bh2zc5a#y6|FR%v_g3S>@<)7!Rozw}=7=Z)LJ-0%QL3H?{q z#6N1&u{eR?2>U&p;9 zU`TLclnCCwy;;_O?HjzDs)edCVsP%+en3Mczl;!V?t@7jA9^BYx?UNJfPUIsaeW#{ z{R@9ymq`8>_|Nd^AI!$<3DMf*+Z>ogOwliRb5^o5eDIXA`MTS55pHso;e&YSCAflt z)oE(x@4n`z4Z3f<=GQC=rOBg*lVq++2^;$l*8fXtk}cY6&5QPE7Z|9=Ug(@lHvvPJlR4CK1&lS!)IJL&DZsaG^5p4%#xjTDaNx)jHGaJ!G&J>D5f4{I!-))nP*jSZ1BS2COt)&22#T*q)*>gI zZA7xWzm(8KV?2H35*m=0=unibaQpHjCS=MJ9XfI@l}@_IkM85K#hc$L(xuU)P~nG# zNV7{l6zO(ERR znOB&mT_7I_n-c1}B7(_>fv~ZIi|+$zyeXHEB-aS~c`@ZT zsS9>=k=Z@LYr+s&E|oHpLEA8iu0rRPq2xzb6?6H-i0S<{9STdkdlQ78nsZDA7=MUS zwZD{n>-o_6bO<^Onia1lUiiukw+BDnEmDI_c@#+@jq-$mjfLWN}0AI1@5{%S<)#(!N$Oxwp{Qai+4@ zpNSvgKH0z6LzI3~%^b}Gg`ox?7AkKpPBuhAJyY-FO!#ozi=8ag5xUJi-mrl7gg}t2p7~rGHIXO=q$Jxifsp2a?VVB9t~W5tjJccN{iuT7Y~#LhK}! zKN9ThRq9cScK(=XZ@Vjjx~^=7w*vMv^$FF4PY?smH|%yQ2=yCg;Y9{$eQNx#RH>3F zjv7#KfmA7myy^g{N&u+>+eyvEuh~~?fOmx@9w#f#diJ7WrFY6ZzhSKepKB@Yqeko0 zfx`VA=%y=zgpCeLp2W7FJx5HU6-+wEU=)>+nKa+Fb{1oUr#-0)gG~|wB)a@cN7+Kf zOy1TIMlza8$UC~d8sU#=;ddE~xSICLj zY>kWIwvfu@TGjF}Ur5qrA%1GRwP}Nqd3M9f0b8 za*@OQ&yPO|M?6sN9gN3GyOinr+6<@XS~|BHB^m==jvq|rx9gZzOnKP#0og7={=4G3 z7F%QhMf)_O`(bdf-HXft>rY==u@NyaZVGexFqpA+oJJ%;jF&5M8jxoSp!MGr6W592 zeU73xP%Bc01>PE&^PCXkL0k1b)5$9yyo2d6a<{qo*)%sV5oUAwq%=b)dDQoJ?FgJ) z;G;+#jC4Qd+|035z{!v*~>4|?q3^o}q z6p6*c+)jQwg+7%Q{aF-outv*NuimyEL@5Tp1z=4P=jw(Lp6G*U?%gr;^5wC z>SDEhQ<@)_Rob>jwHi_t^AZ!-)fb%|-d~4IBJ9OWNaH6*5Z*en`z0hb5kEFMQ+o=> z`vU12QeC5;|Dlug#tAVP@Rs;+Cq3%ZaObhQxT?g?T!h^W*O^@ zk%?%!H3M;Nd_%|1m9=jC@dm|CQU#?1Z-F_!Ba7PGZS7?c^eq(lJ;VRR2-Vq%h8UHSulOmwNfCCtku%fy-xvn4qS5#m5&{XrO)6YtKI*u6I58 z5v$%Ie(YtB*`txJwY!b+SGo)c zsT}^cZ{yatXQCG(qx}c32(mAQy0gv*Q+<5NP*BRF&9W*J>-=%5*LKc;dXi`9lUq4mgp9EGz8q$+I1v5}DhUFW|%Qqsau4MB&OvjN;(kRBR<)=mVA5E>OmhNmC3t zvEfsD4`q#a{t0doYxFp6&wx^S?=o82rZA_~|96z;kc9e`5p{ z7$2S4Bmd%t_Z`x!Z^AVCg|H<^he8+9h2Yc(N)WxReL~cTbX*riQcy+VUgf3`I)|zk zxEr^m&R!_)y65}i;BzZh5GgOhT%Rg^UPG6z3%>+Rs+LTA&X3G3?f5$#{_3;?9o z=`Y@k){^IlfR+o=MVOG%MJW79RwbVD`D4jTg~Tf20H5eY{)mEyu6t3ekqQg|u{aGj zj=mh^geBq9av1UqZcE-1Osg8GHk1DzquU}ZXoipsTt!>9xTYEl&i=$ zjpLv89wFXTG{J7}MHRG|(r|+X& z`1D^Xn>f9pCJAw%^Zw2!Iy*uzthMo%xL^$&z%l8c`CNQ;=E{_(4g6f3R2*cSm|uod zWTCHUguuf=b2T1IN#t?rvs(@K2em|;WWAIlVs`XlBa_2-@<{sMiN`*_`sVuCHQM`U znI{0V8*g}7-syNNA9Zd_|zcaI!=*zrVx@agzZ zG*;rV+dA?P&%?m&94fZ+jjoQ%$|~dSeBT`PgDs!@>iuG@>L-?q6G`?O-vZc=oJ^8E z`PODcwQ*gM@$7S_I!o9X165>{BT9vut(Q++mtpJ=mPT9h=t;Ap$}@W!qs2ZG4hcQu zA5|tsPUe32gM^F>nTK-pzA9#;`;d|HbW0;%9EtJQvZAQ!_RNx%QRsIC?}pmL#Q9NM zF4rE3OQ886e*?#!KTAhe&$e}?*fF9|BsG#dA9su1O*wwTDwdUCaD>~%wBC$c7mDdh!gf|(Ds z8qCL-^LK*@8%t~XneTLKRb~ItBZiE8K{+RfxVAzi9)m>*FKD{}{@L6Eo=Tlc^d}Ua zIrS0p9*T#IG^F0mQ#aqNTNwZIlGyWAEb(ZmA~~eiX-eYhLK-HuY44EWmC=Pz*RnjSgUSn=P z+V{-IR^g3n5svRa!v4EgYsrvjv=VDky)_Wj#UJ9-n0US18^G5tR0az9_@&z0}l-x#Rf=WjdZ|@QEUa)mN@%6ZXjDB-QJSbgL$R+*TCsBi8EFC)AFp;-J+| zb4iTY|W3jPgOJJ#FBESXBWyT?TJ^ z2qPFxqrWdjHCb)Rd+xgCE`*53>f0+1aECabNkv8@Bf-4MUMeqw_&hk?0YTw{m8;4! zc<;b=-fL{o(*58-_K6U;3?%K#3QnV75X1pwjiV7c$x2HOl16SQR=!6qg%{g;=^X`Y z{7V%Bwifc_r+U_ee)$UvST?%p9=#`t>>2zPOGTW${xBJrR?1LHXX(xyZAVJlD0l3V zms0)gnc!+#sw3dUX*n-pWcblD;krVqBWt*l3?2f6*51&tVGlJqz9;}>w7e?*1q$CZ zYLc7b2q0A*9(MXH$_Yf=V0ZUc@^piri;*gV#1n&!6o|-AHHlILPg=h8hC{$~?HeC+ zbapbkswr7XltF7OM_kri=QKwbTMM=Z_?^zI0mTS;#yUs0=T{|14ITjgMuLptyy<>` z$eTi`Zs! zwZ?CT6SmS*ZCv~cnWyzWt1DC26=|^vRK=-Izu%EgasT-V zUo@M`skY#6lJWgH$w*>JX12KgIo9dA%H1TnVwlC&GIaeE*2(yPzX-6`njd#rBdQPXNN4_+Ulstah!Rj&J)us% zSh@lDgryrtmXvve=1Ec8hq931nj(oEgz@o|>oy7-9sp3K#B*F7vfoF_`z^H5TUvhQAWxBE_1RfxZ$9N)?J6){1?v`Vgp60c+h755R|W z;D`a=2ac7e-xZLLK2(*_y#NyRm=t6Wncy`^$rc?-xTrPKR|dBBuKJZ*irFNhpH-iJ z5=^AA9clL|9d~!PJrm%6?Cm@kLvntqhFMxA$~SsIw8p#yA!ZgI+@<2Jq}01OSpNAp z|0nUpT6(XPptDgXK}y|PomgJ<3jry_cqI4)A^>A6dB$O}^w1b=28lzs0ZYp~B5Ul~ zC(R(G4(X^JWs=5)q_JlKX14|S*>uZ18WoCL2Z(zKhKa*Pe@2gK@(?QyyqJ1)vr8)F zajL**yJTxS=+%-zuNDI`hyWSvn_a#HT8@~!nzRblA6p!|f-X)9#=!!Y5*M!RD)4dk zsI5Ma&*(fz?Ko&aly*E_11VHBRe~)4F^An^)L&b?^BTLwHuGSMFAr}wPIQ&LyRd8Y z8v3)+(9;zIt=d&dsTmo@<1f*?h(ON&!26y;Cy&4M&X*HFkhgr9#8k||=7JWN4h34G zQ&l03{@hgZ5}LS8eB-S`GC!)o^N54ODA9BHhuWc@PP>w?SYGpsy8K#!)+ zJB79_oS#Dd)fpu;0||W%F`6>pbMimsyx;o!uYb$=6PsJUKGbLGd5@#JyYB^&8%I;T zgQ7}?NupgpGITrzGSp4=olhfS(`NHZ!0sFozSHXo;;r{z&q5B6q1nBhBTFT(eq)Zd+}g_txP>ydJeV+oMeGqFUt( zeSnCZqV~qxNAX=OtHt4krT0f|P61W$2kFFQIz;2j323hJ^@Wx}DC}h+gpCUY&4TWs zE_GIV>5w8px%#+O%R-0f{OQe@ZGV9Dso?IPGC0puHX-G;xk`CFx4!PZOk*pQa6Ar&|O zGnB13->Srml8|L;P*#v7>bcBlr9r`1Q1jr+!;>2-RE^s3#;Da-Q=5h;1s<;QS!n;a zp??M-jbKP^%3o%Ac*d5AR_Xl{1_%e#!AuOC%fLF!oY;dkC z$xaI1_HP2;(bEuqV(g%i_?6SmKK0i7RmO)MvMzP}@|{ej#))Mw^KAu8R~^&e%uhSQ zTZ|oaOoNmnc6(988?%+I8RlbrYG<0ZSPpEhY4D8}Dd9x?P@4{`$nFQg8Eq{o4lXR^ zt~}i`lXV#8$!MU^b^~=$*xV#SSQdf>a#^rz`vwp({+P>6v*!i;@Y^IH$9kd6dBH}l zueFycvH3D%be)Q(Ur4I@QUomcXnmV!pd0MUVdcYirp-G(r4!n9Kbh}9!F=a|pRCCt zaN&XX!4@At@!Jfd`&>w{ond(daM7;s{RR--Bk?(S z+2^{Fm&%FD#A`m+lgZ=sB7##*!u(oOnSl*2vteqN6{DPX`+SHo4^QjsW>=Sq-*H>% zsEXMuH*wA$jAa6MG^K0Yho$k^cMy{@h$%LJVhv0NJ_iTS@WlZ&BVw4*`8I50;qy3z`ownC;{->MH(gQc})oH%4^glonnA@_rT8?cJ7>0*-+QPIU_YeNT5bANMWd{XCAYR4ANo`ij8v~uk( zNmiZ@cwR*U6vXOcYf%KgiOyZm4-=}hSryimLthN%3EQ!T$L34#;j>+slxF%6-X)_e zlB7Qx8Z-dzzgp)Tpx3I%YlRfJpGU=0t)?=G{hJGeBWXu}N+cr>b=f!lMU&;{f<;~> zAdg&+LfzpE#y-SAINLHpLhOM9^X$qDgQ=KJXGqaF78DeJ;=FgwbTq^$C<5pG5YqY* zfpxbRji&6nI~$s`DmYppeELyWSn6C%Un>cb5+f!jUn}tx0Dqf)Itq91(WI-6SKe{g zHpkeWsz6fk6eX|6xue)dnWrg$LFg6=di64N&HkL{s^e`9WmpIyhqv&0gK>^HWS-)u z0A=F`04kL~+vZfB1L^7KqPY}ayMIxdr5&fNHn*9#qkDn4C=9_NwNcRm{Eo!n`$05L z+09)e+Z=sA;-GlCq@gve8u3o4mmA3Qn1W5F9x;Hv6mxRHh{ks%_%Q+CHL>+{GQ~ZtBeE_d}!@ek%8y}6dU7%`jA#D=8m6cWzZ0866d@-{EkGeS9F)tsL zczwnt)i8VAe3^n**?yWT)L3~bd~jdFkV8PT4{!&fvo#f{4^w~hXy%TFpv{Sq0jy`Y zqukE_Qx9m0>eK^@{@VkZq1w&sW%oP8@qf}U`h4y$4=AtI2HPyeOzCJ4H44-LF^)ED z1#wXEB58L`lo*%Y6FA6Gnega*4zY!t*wshC8|H7d$>t)u>&n_yUNnxK(A-15UOAh@ zdg!~Uc0p2*w3M789@uBKJwR)&*sz;da9Fh>v1awi)RS3C(+!-q(mJdeW%quQMMg|> z7f=Td_wT%O9_|jp2SQzQ4hJm}AptS|IU3+WG`(_NqBl<|0B)j1xvEGoE`4cxy|h-S zHPi%m=4hns)QkG<8o%qAeRxX-F4l`W#~%@tDq5N7JFe07IaWxF`?tmgH2lGefo=qE z*XMJ%u3{O?LQ@Z&>csCCdM5O4Tm+4{E8hA7bzi7!f>Yq!6m7_+>6$GTiH-phshVOu zwH8)KbydTrgK=Q|%wrEDh|&Ew&Na$&#Eq(SCb>Lo6OP;=nu9k|)dL~_>L+r0Wx z2rud~^aau2LzT;;4{OYwPR{qY{cZ8DZKxj?wM+mP4|RzI*aXxK!GerttiTvp#}7m% z+z&%?pzb^!i47#M#CilRalj*B#(D&(1VbKy_-sX!Ce+%L#OjPQ_%Eu%ESm?(i{s2} z(OetG{STSEe%P+!j0PKLcU6XLsB%qkGBP;&#Z)dcsFjDwGbUXY0}U1M39>YHNUmkY zJz!+4J2Y*4@!-Y%Lhn;Aon-aKKi!Kf-Q#mQ56~SaI9DZWJENhqBzGf?h*1hAE{dpk zP; zxGNxVo4Xy{6%dC&%quXEf0{iAfZ7SfXL&v0*#2b6I4RiOzO0Nv)l@3AkpIAC;=Uy0F5ANC5Il*vRX&63&Yi#noB4P6Dx67d71YNPvxQm znxOV#?)l9RPeSlMW^Irz8hSIn*jQ5AnbB=^7 z@Jzj(!xj&&Z>3#4-%Ul#f2z0Rjliuymg97P#d327ok(jT-gV2!Nn*SjlDK!zkEAR0 zzBFUUxb=Gm!qY;JXI+nsBD{~7s5crm19G+(h(jB&ABYZJj%V9iP)&dH8+V;}Yv@(z z1pA%&&Go;Kp``g|$bhwl?!E$_B#n<9DF24m6tQJDcYCfBKmI2e!GKN|3LRZHQ6y|U zsQ*{@eE6Xcw9*snIjM-)9=@B~uV)7xPiVtcLpKl%7;rpD2A(6G3y9&lF&s(@FOQc;nr7VZolDw_4*F!JW_c22{wj~24@fh(6#|^U7PcU z;?m?;y)EvZC^S8oWCL6toNn+L9A4{JEEz}R8$csId$AEtoRLKH$Zni{oNgmPu+1St zy3eUfPVe&?jzImH67pWSGMs8!jdoqugLcP@b8Vj(5deG?V1faI$NYF*(XrB#blvgF zK7qCNuroNvHISu0=3WOW_daa3qmRq<)G?ZIrO1rh6s;;FkBME_6qJk=l!Ll*%qe%= zrxdN4@(NN8q2Dj)6wC$0Z?Ehx+2`tB7h3-valCOrc?{v&;k3nf@<)-_Zk&CGNjv<} zXi}uA?FK_#+d4}!;|0~bdQFE^1UsBiETYS;7-X?EyDWnJ(*^rCK~B)<%BfhwRZ=KK zpZYrJ5koa_d)`TZWs6&vU`*{EpVxVi*74glM#iMVny&erbE(kxurQ4hrIa8t+#=AxRn{M zX```|a}|Em`FAcHZy~VDnr>$veZ>z=5UWn8z-gwh}-Y+$Ia@g=OibD3fxNqEwM7X%0FCSbvCkh33{PL*Bf zV@?frCv(EKeG%_lIQ5Kbw<~?>`rf+cA;r8#`TM^dHpfP`*_62GZdPb3jwhcb{4W>xTDg3wj8`L2u=8kEkz#-w}*Ps>Qx9S%9 zYd{)t=FvYLkSd&d*B=`G_O2CH4BxPG&KG5Y84<8J>zc9Rz5vV(TShlN}yVlv0dK z409Pn)ZHLA%k%rd-mD5)VZ06L4i$Md$s&vWXy!Yp#=*tA*!k!b1DKEgX4x|Rx4#o~ zCbnYz9mj?=E;mK&)Nvq77I+|5~S~AXRk=**cf8No*nzkc3D-+LD+fd zWdr!-(0w~k!bVq`_c@Z+{~Ff{G@gn18sShl)r{JC!nc_%AE50j_=n_R-k<{J4cRTc zdH_jHvoRS8B^N`dfS+NK(9U5Q)gKi-R z8Fq^N3Ohxvf?%h}`NG|W{BIIi_Co;9YhN=&mhz-RbAhoMZg5pncARNdr}ow1x06_B zyq-H}ctDwYLJl}His;+jACNo$eM!RnxcElwM&5Snxt&v8wTv=hN!fvdSuOB-;bf0U z$B4*L^N)g{STEn&4(sKgzl5Z9!Cp1NzX_n7zz`eNo66Lppr=uA#yT(a=xLq1hmYRf zRx_%xdw2PX=$a(MJo4Sy7r#=Pl7o4typ#+yE+2w>dk8RfT=?Nm;m1U0ZWpeDVH)ls zc1)Y<2nF^O7%cPx_-5(Q<7y*jrVhowg` zKZbS*#wpG}Tud<@r78}K$FPD{25>JW3^cMM=+qkB^f$3gE`wu~n0D_)()@t&vVW~XuVsbyk1Gq>01@{ih zu1q!ubm9Xm3*S}jEj8_@>VsnB3F5<)gp&Szek^;FE=(6$g1)wTJ@dZ5)|2} zOyzUo6lHdeTo*AW5ktMFDmwmi5uzrVcyOsF2kkDtEtoC}JucbpAzE~BozBIj?Oxrh z&kgc`-bA@KNw4Is=&@EGPbo*=Cw%KR%~G|TZzq9Xyt678-MVUqrXliy_DGLPv(GuS z^|?-0bp}Ew=vw9+mJZ|fdGm48y+*g7wB22{-BlyJbYjQ;@5@(BGvj)3p~g6?aIp#E zgL<2x_h@&qZO-(k(Brp@ylPd62N!zcTr^nY-0P%omHiuql+o&fk zruQ&wHRUMZxP=)TyJm!PhCFt;(MIKM&}08a0yU2nw?gCrHI36ZecJB4qmwe@HU3)%^|?xfi$$)}Y)dO?#auSE5{v~A zRnPZfalVN+)wTn7sasFK-C<1jgPwM8{tz6y7U`4ny?Pqb<|=>W8|actgG;XhdZLKB z?b>dp0(!e*`mpj(Xw}r6RhPl5kH;?AB~-OJqlleiJZ;crRX2J2O|pg$UagmcF{L!9pvej|C(zcbUGM8NT!+b>83_cVC@i?+AST{nR@j zrG=&v%VV#ZqT4jFBQ>pa`DH}TeRUsJMz@b!5pPZ7+E!AaDXRG}z4)%#jp2oY;qz|C zRAHSGsdGJ|qxrLisuq006P@`)F|iuo_bS;Fy7~n>n1b+EM{`dqHEbWG7Hl6Na4ioB zdz8`cQro!cPgRb+79G?);t$}fY01InMyReZ3G>wYX99k?EHN@SV-!$cN(@UYCFRn@ z#tMjpoIV<>C+?IRw`26@IAi4Ib!lFts5Y-Fq!JypOXu{}Mg?!4kKvh`Q%dbQ+ya3q zr1l7o<{Js%U0JTQe;XizU;f5*jI5(!58kBhei+N5JBm8E)l&sMez_>ECW<;B?_o!~ zOKwx9kEtBLT5PL`^SjbCR``9;l8obxu+vjs)~BDUUhqORY8uE-l(XTwnMV`XxD7bQ z{JctIYP%G2YKl@_@iw2Gvq4=%Z9%CdQ_Bp-1;82`n^oVT1P@u)+4T~ z=_b?0miwo(D}uTx<8I&Lm+X6N7s_ZoH6FiUDNCn)oN-qb{XD#Zqw2vMP6qpqKKYEh zA!A;y#p!Re<{m%B@%w71_qc|tEhC+1@u~Y%zr{)`Zbo{`^=ldFA0uWTKVFx>!(Fxx z5e;vTx+S3bnBQUjKrr@jbRn8u({_fjEr-Xo&w=RUT`LA`U68wrj$>$4j**MTYE|(E zH+!tm?$X;=(nWXeH3dri$pqfOoZ3y@+$P8F*Eckpy)#^pNXH&Q1c#=jq2w4%2hNNQ z3pGE_3yiL^snnSY302(}-5$INYMZz(pHCA-&qLuwE) zYOHT1Wnt7kvU#90TClKXy}oH{b1ce}6@BEFnP{#G&@CJps>b5+Z2wME+>?{$4YIJR zyd%GvRhIA1_UF2VuCR^`g=z_#m#P&;-jKSMon9R2@#JKRKpQ3*{vEnRQ!9Ehopv}i z203v5Ks|2W+;Fa{_5|`WqF<1h@=BAdJzs4UTSn@W(rkAZn-<5)nKlybN`{0dzpKp| z_8uSPUyZb%qtbhNH)kNneTy*av;BAdLe+i3-k!dP)J@6$-^oq2!&h6x>*kmi$@o3L z>uXvkW?kY9I(rqZ-(0tbKP|Xc#A@z6)OBEf-Hl2wgtaG=-GgKVJt)Pinw=PRsK(xy z&n4vGXUSFM@uwxaiaOXyYP9Q8q!kT{PHn9me^hIQhVGkbG@=2PUxH_4JaH?~z4$Raznajb?0_}@k_nEv6e3yv_K4E!QlD zJ{>a|=IksiJRHhv>?jbd%D=5`*Zy9yYX(#1tiC9PHpsVA%cF;E9LrY(xRu<$*SHAD zrk6aX70sXbvUCoU#P+|fK^QBrRq;CR`Hp}YXgKwGgQH9r*PyrN$x_b{eKu4rvM#cl{zn7>0E6B~+8vw={j$Stre z%VN+F6-yra{h5ehHo~`HDhek$UN0Hx%=zm7A(!)26FTKjD-XVVq}2xarNaz3X9V&} zlw&8J3bcl40)mbd|Dg>`sETBCQLw9gi%fajB|i!;7e6h z14iq)6+5jWbK`NDelP3}j8?mvW1u&j`H=ALfCY7^MIfoY-xXaO<|Rx%$u@JcT4^B5 zua+Oab7{$CjZ&DVOpy#fN;|!_9R!E~0hVF|w9=a`F-Ihpz!2iP2wz$LByEehd3F5+ zZ6Cix`Y!MXkPuP&xFgvEM^@~lao?Q@pYF=}b$mZj&ne=cssO*}{QW)Q7RvtK=;AgH zuUK+aR$?bBf7;U5kwmoT9CHuzhW^sK5bU}9>4G8Jf?K$Yf?!Qzd6JDd1CO}9EYx6k zqL}&uTinv4N=8Aw)O(d;7q(t7{UU*&tTEWKX3%~YUJvRek6U{s)NaUVih7Ah9AkYo z)o#eyPOfh#I%+5YmZZ3Z`IA0xB#Yf{=Z;$5fWX~>puoWq+3}0pZ!`O8DI0#ZhUQ}- zQRbHPLt$?Wd_#!ylFhCU0My}8&AtOr$6-dd4WNz%R}rk`m*L5;-pqrMj>lLmMLo7+ z|Dqe+fT`SbN{WdI#P{Bo!2D^L_xQ@6_l?8H4*AiEL99*%t9te0>a8+ukGk1yoqa9o zez_9cVl7w9p?@I`(lU)goHrfQ(Gs#WKP%D`WAn0on7b6khFvvDRGq9CWd!qmfQ_{s zK?|f)^recq3PtvUo7YC%XOvGcJ&!gINXhrX3xTZ{Z5I%iE}IIDI9sGdIk9~9v(})I zUwcDRzRmSr?O?B4-Mww&>Cbp3pom6KhejoCdf|)YXRWQ!kG-nDn;-6?A7b=bmu4Q? zX=i_q{9YQSakMs!W4`Cso8Y%yq$}z?4Yv?|k+lkcU%}}#Wg`1zN%2E2PaSC{xA^KC z$sri$Z(kEwIR*m`4L_FIqOwwBp2I%mKr$s+*asWm@CbsD)V7^kIz4>n>oHunU|YB* z855b{9$2G&2F&~`_E0`0EHlZ+VvhZ51lZ|Pu+t-GE!IID0NXEkH&xWxF%uw-9m70- z<&kypV8_QYx9x9+`3t&1oHt8hm!BnQ_xlo$^wM-3ZrXEZFCIGQ!jz-tNuwA_N5Xw! z_DDHiZRupni2UtTZ-Z?g0~NntE*K(PB`bSC=LK^Qh9yZWDH;l}8y$woHv)B>UZPxB znJN{g8(k*F4WNd*Te1*9O*()YGkOdSpUWt~njU~Pg-jS|R)kXy6vp|TsOO7TbecL_ z0XJ_{?0^7g;j$@lkA7FastV_8!JCC|)G{RpPyXm}MrDONhoJ0}-ALxHG`^;Uu@(oi zoW1-`_UWU{t=@oIu?86|1{oYi4`Q%TSX`oP7#mbqVr~t9##&t08UPIv0L{3%{_9hq z`3iu>8UW33Wccp2VV>1h{31iVq$P_9mR4)#N=$4@V|^bcRngj)a3d&dZ}8hyy9T3o zBfH!Dot63Gbt|&3oh4f>S${=+fD(Vnep;*V3k@k-bnj3u(t@R}(0F@5{}A8|;6Dp0 z)(DIHdbC3%+V#EV*k!2dQ3|}cSMHtS4--O@Q98l^9VS8KsvO8<2MhaLn)9B zBg3g$9{I@~Aj%FryAHf0wFdu@d0J9`J~Fo?0I zZ&snl%knftj*+lUJ;n0B^;h|T!|tpPQbdns)eNXZe5(#WgI_HeqP?qyySNjuT`6F@ z5x{nqYOqAWb{&B2wz*%xmjBj=2YmJZeU`ayfQo%APdB^BL@WWE!TH{!a*cV+zK4(H z1Y0XY`yFqjy>U7Zg3^?Dgf?t`r#O1fbaLcss3pcmb?Cny@E<0rtmaeSw zvKD{n{Ol4VV#zf3UYFn??ue4==z9WKoX(!_3;~OW!9H+@qKo8kX=Ff^S$Bg2d7nQYKzHVMr|70F>k~9jKqyzTkBcxQ4r3*F@ z#xPn^#5|&-ZufdChI*7;SQeU7Kh2sK$nvY@x8jsnGOL~klom#Y|F(8|O7_r4t*oJ8 z-d?Pfsheq3xI@_z(+kV=wJ1L3`{dt1It0lJ{ZOy2KV{Nj;LAXlrQ#Bk0Azvib ztf=7$`qjd8h_>j$VDrhO^hue4H_05<|cw7QW!R zBG9ZKfo8P;OoAy#jg8I(z|kpJ3g@7HsQZR(=V?Es`_J=lS|G=*yefS zp)aP<16aZ8S*Tg$SKtF9l(*1kKRT@u7{r_GPep-kO=Asa835buZim|vo zYu_cO9kzLaptM3uiO;Tub-31PSv{vja*%vPYOuiG_eqL&#q6vU`V_Jy2ioW2}GfzALmFT z8GaO-h92jNc!B2|{gKv!SwNY#o>U-`6qj04Wp1LcZsBj7p&&EJde| zXE#lcb!^$b1yFJ>o*i~!g##?t4de~fFc1#SKsbOuT*+!-K03;5F;xCZaHuhO(_wF)0%xit$d|i`~qr)kvOJ#x@wdl2U*l_ zT>4xK3yO{a6w4KJ-xVGD5-=V$#@&KG`L0)9DJg|n6S>JLqb&G&C>Ar7RYx=$+vt-< zjba&br8ZpX?fRD7<1i(zy)WG4k$d!N<~@st{yt~Z(lbsr+lTv+M$TI(BJFRiEC=3`Q*7LAo&T1&2Ba_{vDjd%?C z%U$A*H$+-#Zz}l2vp$GA50ZC#?K{8Ls^;i^yZ_Z6ikclBxop-@?v^7>)aYbFV>J~k zt5Q{ep6zV4|Bo)f4}WkIddQ8o9$ z+;j8_IA2om4DG9#zLxi`yb->~kkZf(VLy~?(eLc17M*$6C^KS+< wz2A*XZ*JDP zB>`#%zi{Q-Pd@Sk4V`aMm_CQWtpyvPMUSNJd&K`gun92+^d&>+!CKJ6zlb_k^ZGY3 z@wNbl*N~io#i?$^0K@B);?a3CjoN7`g7WxdwRErjIJ`|y&2&P zTy~0Z_-7N)Pd+ew)vm{A37vtF@qIkBT+>xGct_)S%=UburEa4JMAcolBaj80&Yv#7 zQRkJCUX2w1*cCDz9tcci`u$)3-BpZUPg!a4BB~xC{ zT}61Js%vc~Ebnn8uHIaM)jpfl>-Xo}UDWN85u6&8i7F<`t*+P(r{rF@L^cX*OV8*f z)p%Zg??CWfi?z|L!zt)$c+lMm8Fh#(>4eNrmK2%rgibK?1TZ;ulA>?0J$`Xjx`*cr z=u{>YB9)F78~taq3GwX+@waW_sdK)8Ca;)ih#*d)_`@1_L|OOdjt=Lc-tA!{{98!v zF_J`h@5fulUqY`exD1j{c-?oQ)v4Zkm@1kyQxghMn{V!jXD+j$*p0Ia-R|vM__X21 zQ2kL>zIsrP_|J9NKSh}N$K?gg(M(5$*MF0r4oxEHnJqxiY@Btfb-XixtDT!wU43eQ ziJ1GXcWN$?Xt!!b4Pf~X4)`y#E&{f#ln&SF^Uht79;^oD5~fEm4WyGtTUxh*erm_F zA{aoodvZvr?LWGvGavlAl^Pg^#RKOMxQ4$n4kP=pjg-~B4%X;8(CjItbLvo*0u5$K z7`0$ubkZEbFzN?g0LKv_UkR(otr@oBlLx4CoK;BKknoE&G#{TDWp14eB;r5qn!m;Y zvSlv!=CD4tCEC{#{oeE2UOCsld0v0@DFkG38lX?nbXjsTHJF~e8QWCR9cyo^SDLzv zSjvsCe8Xe4{jtpHLt%SMpUQl1*JNhbu}-sTF3<@z@Z)ED74m&r6rT7Mk51$CY@a2;Qi4L)3QND; zGO$7rzKTFeJmwYr+jK2yAvoUd;IR(980c3%4ouC(KYng)p6P4;-Kw~zdvA-`{IgZ5 zz#6Xz^}!-#17Ek5`@nt$%~UVUt=wsZr!LG+8-4=dW|m~MO^)nxd8IItfIm1(2fk!# zyo8zPjIAflRlwM`fOfB8)?$3yU2JUNTyb}-!376{J8{MJQhC2xJf(9Dvys{jV3;yM zJAGi z9#)89S|ADrxMa2r+9jhqH%yHUK(jnR8`hvcTmgz0TN?S2gKM8|x>(VyFp7J4cZxJt zTny=(*)5GYr(DE+4NEPfBr zrNFO&F2y^#-=0~d=*o+#O5VA|J21d2L_?M{%Rn4ri`P)w)<$%myyRLD@cn(u$F)lS z|D|hzc18HhQ#Kw_$5sg#^&kNA{nN1l%=dptyAG(P&bQy~s#;g5qEZ*AEENqZ0<9KQ z5D}FjVN|A&fox>9byYDSTbUJPn;?PQKv)$8WS1F|5GW!u1OyDo{+0mic?mJGp~Po2vEED%PrN<3|(dL(_E$nGl-?bS+$!7vINP` z$^CT6l5TCa1U}YZnLLTMy_ zKqSS%8#&G?z4cK~w69i7(==W0l@{OqIA3F&$M{=RllTfaQQkDX6XBf^Tg2YWgC56# z9vA5#yG8s6Pkm>qtwDy{lJYvY>!h${F7dc4>^H|;?#S^Vqae%~A_-d~cw%51u*e}T&km%^OzmTb->MGOHLVd$^ zD(Sz)HM1&ef}=P_?(`&FfZUp zUW~$U@03u=1n1E4l9xTkC{_--D;z!l^B8sm!cNcXzWg*Lu%U1?Y|Vt=9%CCKoTwxu zr#hR4k334(eB-X8Z`zu%$1>Kpe3kpfwjs$VHfD2cww>e(Mne_5a#xSl8m`H;GUUbO zv~A~+L#?jD-XY++G!CBpiv7HGLZr0&8{)!@7rB?M9X7EvP#b5qg^k!&JP%GvOvXOa zNyh4eG&WMAbZ=M}mXKD}XkAx0tK50L-ilqnSVBr_Uf`RF0jGuOC(YD84$KJL#LKJX?u!tbdrhs^yZUG%6lrnM!)Z@V^P>(@agh+e~ z&l7vM^;p$}N@L5-B%44MLq!SD71Ma3gT{xJJY1sB&Ahd7J))IF=GGlR_5y?N1Ji_X$6aK5muItP{oz1s}~0mWJ<%ys+?C& zfw;y0NjbSPPdTyThb?Qvzgs|$jX&JXMRGwo>9O~n)lM!Qoso3j1`3jnOobUPe0}K9 z359Lk6Jhm)Ri$RQ;0v>w36=d$)=~RFgM86s+F+EDHVK$Gt?Fe-uA%}G5u0HAQt&|;0<(}=xC9#V2@`AS&TJCIZ(RWU#=G%StZ<*l|PNQ5xc;5GnSL-C0iox-#Hj^Vb6s{`g zd&V#3%%J#Hpd|8OM&KhaOFZ}G$v5BRR$Rc}V1k;MN;dn@LwsGCR!(QoK*&Kr$l-#J zLp)D31tBN39Ky3)1(k&hm4$mogbS6WZ`-p!TiibGG({cE9vXO&wm5IVIgg6=4^K=> z>JjhXYfkHs+&C4;=2C)W<<^E(OS$fwt`ijnZ^(g`>-&UPy+#!V;HnHF_jqR0jRm{N z%1D*R0%?LbbPvsoh~Vjnh#Yx`V9{lUT~{tv*tkf4$Jxiv^8 zpIe8myZ0+5?uEm?QQDCkuc}=V%ZocBvENB!HO{zQFiOK8PdJn2So=ASX4d@r>ciy0 zn3W>xO#cTYKML;BwhJG6L?_ZDVusYuh!D7^zk*qx_Jev|ZGhGz9f=sKK@qaI%t2IO z?oljLVQ30P(NwhC1TBhOlQF>QHKD(vaET3}BB1UN%b&YlCx-QhG+>YyuzugXrf}mLXe7J^n$BgA z&W|yc%(`VnKXFXW)5WsKXVMvdAkFwHa1V)m#BKN(0Q#rkkrJTM{cBbB_T<$?tL^6K zvau8|TP|l--gZRAlDqSD*;(rH1{&X&KwUl-kznQ|={5o)nURexn7sNvzjtJZclyQN zog$3~zspfu5=7YU{h=quEs{XZ3?kq#{?cbp!=Sa-4A?d{ux$i!frXLPHSkBN+H*lv zgJRt(`f#2-V7A2p2mBm3;9CSBFU=$ik&r@dL4_JD9P&%oF@f^kAD)AJGh^7Z9}*0` z?l#serQ_(GM@}kk3uDOazAKgQx9~%jam~*Z*UbmzGXs=QgQUW*e3FRQK(EWczhC`e zXqM{1S`~OQ-U{xEbxp=v0;pL9xiyYp&@8&1)mwimM|Uyf{*SjVU))=9O>$*G?*0nv z;~9R~RWc^GE(>GP`RX9<_>PV1)9W_+s~kX|I>ontnEBUv|D;zPviaDSOgRtm+!{=T zbTAR>SCbb#3*;vNMryxK1SZuQoLjsb%mma}MsHBk0`A~b2`%ZNh=ghC;5^=`N%B0m zC+~au9udo=y0M3a=L8AZYVjl$LLBF5@<2Wk0w?YOIC=DG7GXCjqnB=`M3*fQ-U-ZZ z{s;QSIAxwxJU#gF51_s>bvL?u8kdfRRRfR0Uwwo3>OW5H16v9#+7@oIx9>JkMZ}Kp z4CXz59?a8iLmS0QeGo+gC`G61@lMx{VvUb)!D;eW+|7#jk{0XY366A3_@8?d?40^s z%!U7cWyEFs6C~r6H0>7~#p@%;$_}xU&s_~OGwqf)8-(IATXfajO()84O(Oi8x{aWV zz0v6n97>nVUA}VY8RM6>AYA4- z>*ERTa^g0FCx8)ZNp{j){XN$1r>O$k;S;!p^C8B~sm&tqlOU+X;FqyGik#Ol%)Cg~ zhu}7`%XEh>I=Wc5-I&gZWc#!AsOK^!2-mFSCtcWRIx{)*)H_?thgY}j<%YaU%5;U< z+5Y1-?0nPkij%sQ58`-w$>oQ-B4NnFYM9}?E`j(pof)-3IJ-;yB2`w_Lyz>U!^}k8 zm;DPnZT|(K;A)xdH|y*X+Wxo+Ci=O4qpE8&-q1rHXoO#^r164}jSB_ZZ+w94s6)^> z%R8q$g(C>Fpamt*z>kk6VX|iThe}__C~Z3k0Hiie>tAv)cnR*)0qKz}U;BZbR@AvT zB;J+2yn_m%B9v*E)U<;2ehZQh+Bi1;_C4}S1R6&&u~0`)57sFCG!>};;z+(V>PaCW zK1>VsUc!W(iD7z#SpsfX4DJ6jXcZ@c^QZxwM+orwTm#OziJv|T&ng6mZ6UU{Xp2*} z^*jLwMrr6A`AB<5PCimTrA}DpY-_?DwA+qP-DnjpqZsfwUW4GRv4$I2x^nxw#*0um zMjO)q|CCXuvdiWzx_^4A4LGCt4uN~%T>IALy7{J${>5%^b-M3^Rt zra_1d4M-w?@EVy(zGa__VVs&V%e10q83`8&oY3=HD5NNV-pO zN}*@I^>i19QR0Q&OS(?pU-_Kfsx-;<+xZA&ONf`vPZm)f{Gia&t;8XQ zq9X7A{)bWZU6xat@l`bjQR1yFK90%*vlb8a`?ll9-b5SO0(k(&_`00W>QSd)3?14? z71~C|o&i#eCKFbEv>&^|nMrrbofhK=?Fe)Til9cyFy{sbW)^Da`uAvy% z0?Wo+f0Yq~8?bD4kb4k*Z>ay19}lQFYztxNAEz--&^q7IyMOt^2ie}u#O7h=pR+kKTvz}-BBSQWe9Q1Ios_Kg zZuHFf--ofvj&-J8Os0|x zEx-THw-t@zw;9%aS`+d1h?lEDM=k|9VlNtIBh2`(Ho)2Cll;Vct812MLZ8c0k*X3r zpuROJs4-4>JKt8OcxwqewjblEtq&q@PrkX`o4C*u;}uDy<^&OO7}~UFD+)YY1eo-> zFzFLz1Wz8JmMxS{m|+yy&_}?F=h^cxnUvaxD#AtAO>u+McD&EQj#qOqjWS+eckW?C zD!3;I-g-*1h6%AKTZ90i&)rIi3JGmycDHVd`-NmB3x={}?+?6Y5Hr_McDi%^OHKVc zUi_sqTO1J*t+ayHst`BFx9V=RLE}V6?36k?XU9pOZ5K8)sZ0O5y|J;pY~q2~z9cz| zt$nOue@xgTeUHE&36a$uED0nr?xp-@%wV3aea%#dC}a1d}RD^ zm!W)(nZPK-hjxRUo;RIDU+>mEU3I9rX<*v9zihpm9F-=_TPh<6C?3aWJtL*DTt!`fS_f!6&FhO zBU^CIVXSMsX33!xO^J-I4QvDU1d<&? z@erL-ETv-554T%Ym)oMrShwu!gpsQe5K1G7ILb-Y>PW3ckB>-7h?I?t5^Za$Sxj2aoTG zt5r`T)$XQhKb*IIbC;F8?lm*>b1GA~yH;B5w1awD;utoZGDPfU)OT4-YBN})No!LK zYsgfJQIMSyiDt@s(ILSrx#xf$!jof2g1V+enQ3V*#c{}}isJl2<>X~W^gV_%>8ZxcnsWx{uHnqjrl04KNIxZ$a+W%J`>)|u z6Yh}qbK}D9Q)|itd8|C8CWjb2%i*a3^CB!`YYuK>6s+NFgx+@@!U{1weMa9po~!eo zE{sRv1;%J(*t_6LnRUaBkSruf7DjFC#EVIX{GtoD>Lr8Dzsrli$Fx?Rk@~ZdJmWWQ zhS7DVO7Sg{6&9v$VomueR+mLdFMrKp4SA-MhJ0D9XnVD^Oi4?Vw2vk;Xm6KJVIj}o z(R*+QFD_MuQQzmL!e|mZ#Z(!#t*7MnVa)A9B2T~h+B|@?7c3Y?WAoNcZum-OCOZL+0$3d zEZDkzCOj@0-ZBU;9>RN_>G3`LJ}HJ!EnVnO;@kX)mcKeEf87}K{V+*LNbw|xlE8vS{b zIZhwH9p|vYl3gMfi(|7RiLWne(hBr~DMuX5E6 zrV?WG5G^V0&S2u&QtWMW(E=LT_>NMeK zrk691PF$DiHJqD1GKmlDrxJII(#WaXxgJ;AUwSJ)-OYV+M2D@)?(bOKu|rvE2S1Cr zaq3xr<;JP}{*;YVh5daSr=IjjZJa9TZ?0K-m^c1O3X`b)D|hF2ykPcPo(t0KVHuBe zOfw%I8;C4(9wS;P6y}ZD{*V@(Jj8bVVc7aHYslJtd@SZ-wKQ3pNvHlXHIXYA zN_1W&*2hI|t1zxFGjw9@&z)@9Y&fBX?ZTK|UjVn=OU}zk0 z+B|@0dkG#|p>4j|zk; zickoxZTRB=Qk8kQ18$0Q51Iz`ZPO_2%a9h`Vd&y~BPlH6c%5{~VM7cfU@1i>DIrB| z*L%`pHd~NX&n7G*yACnBjzD21T48}kBBnuMW?Ph;TDjOb%RYKNr z!C6CabZN&+%IePCgSes;G)IbXS^sqiyuWY4@s+UVv)nl|pcHg87)|}Bdu}Pl`>q*u zG`9ZnzIANZMSF@d69pHLwj56ZC;C)-{<$UR*xPX%UB$!RPNo=hE>$3m>MPw8z3woj z>UL}>(>_KoS4*mSXRyuMQu*6$q6GtFlM&Ta_nDsyH@G%8uGVdKT{nu^FN%XzXAUE(cexTWzw5{Ty!$Um z!q8qszN-%9MG$@(}l0)RI>(v6d8dDvVwOFo{{9*TkS`?tJrh@Jqyv31gK!4^)Uya_QeQwJI6G zJ|>i{?}s9Ponh>v0V`DjR&oHW#Jo=%&=n6OK@}w3Q->J~s^HUkgI^!O5vx8dzzzK@ z!8%@Uou=ll+8o^Zmr6~RBhMTp6|OWBWx0;rLJMBgGSbjzpUW$gf9C37#3U2;x_W54 z>hwRA)(s?!7Ap5wDcg@PE6TGQ7cI)OA751DWj8KTD&(%D#>yY~>)UQZfS_dK}jfHoi7jOkR;R2a4#hGMBiT>n+03Nz812EcT|L&Qqq*teviFN3f(Jrnwo zp<>EX`VQs884)3i<-6ZZ`k7L;Zjx@?i6O0BCV%_7XhA;Nq(wFLa*SSvmQ-WmQrE`D zPjnky*S!EVoB?RK@e;yeWH#%k+1Q&8TaKLm3JQ)q6X{;mV!(uvhQlDDlYaQvJ2)b6 zAIv3g#tjiEdFY@o_O($^?)MDadg8?CyIdWoIBsV_q=R?rBkpL#H88?`u~@XQaM2R#vOLsffxomjuswfLH|j{K5^dkR70}OeF#%cXZ>OKl+JpE zpPhO2c^;1VtkkJtCmRBl?k_t7_o*e$0j?UXfdZXXBoU0>lJS-H~<{1RB zvsBnsjPpJxH+h6`&z><3j9Vi$OD4=u@fnVRTsKI|ETGVYy8~eeGlL6EXa zQJVAIxF!2>-L1URI1gO-76G@Zv_=>39k!-dFhoqmaUFglSc>|VcgVj?*QxEJD2f*7 zfA=^3V>V>2o}z3Ru5mXYdNv?>WWOl*yO3f)^k#tQht0hoXs&(*^L8f(QJg7B4+ysI z&}vR1`>?&iKtBw|D#FV4u=Q=wSY=Lh&Xy&(ARk%`_=4(BeZHJjb4q7UHS5V4bGXh zIZJeZYVfQHc7Nx==25!06l;IZSBt{kDsi72H31+d($W!TVUH!#i?yB_sE$vj>A1*7?T2iN0*RNT6=a z*Z9v9ZyGEF`TkY}r#UVoGSe-;7&tB+$XgDhgAp~1;yk_` z??Hk6@bv(S@U@X2W%#3~$yyUX2UhTk;s=bNsUS9@6Rc@Qb4X9C_PRWUo1%@?)mCt3 zh&eT6x}E)%9=*awz}{KE^z1(q!9kunV_R&7hes8^v5gGq`?z>c#XdLm=6ti|Qz+Uo zcrFy~#vh8@<}weiDopA8@!JlYaYlZKQZtYbxj*ot_t7)u&a;7qBP1$wm7qjP=C&j# zk&=YbGByGr8y04VKS+0Njw*9QA?dqe?9YTo$8G=x)c^_{@QOJwDk}c=5a;l<1kWhg z@^BWU!#!pBY>nA!yP5PstrKT#tvYh%@LCq`gjY07<9W!r;*~ zoaFt0kaM3_RG!_cI+r30d{54Tgj680 z29QZkmawKe;e@965mMVG2BpW0g@g!bMAHk%fKQm>F~9Q4nCD2)rlFt0*N*=h&mY4I z|497oj@OHr_x6s>{ZGVBJ@&?#dGGcoN?v3S)r`ciwlj)SyIgaCmPsq31zQDAeZeHewu$tCq_pvcFrRHc8 zKT0+i35qDj9)2vrHjygTX(FasCeShqg`BLciN~hwv&&rAwN{jbem3%0Z{dI?KOj`t^%i3cU#o&~RvtRtaojWRW%&~`|r8>EetjGr?*wcHQ+1l*r9+%3(X_eDec~3CGA^okYIp_S%^pyF{<2f*e zX26E9fej(V_4G5xOJJ%8HUuX7w@PQ_`<2d4G{BEQPRu(9q1X=BrE7<2elIy1 zU}Mr8-Yy@=i4hc8sf6Z}nGv$C%GS5)y@;%FF zHW{){76--I-G^1Ua5Fc_=8tHQDHvtxoUP>43kbt^ zU_VT(LB#MMjr~;FLkS7F>dq5RF#`9SJM>dtpZm|+ti5@A7#C0+RA}ssRJQ=%>Nto> ziBtY0h|e*(k8wZPdN|1;P-ARbG4a~kLdk80O6Ulca15!v4_a9703Wn4@6jw_Qs8?8 z<9AyvD%t61zs$gqublu>OeY*f2RMj4IEWw@Wyx|x2@Vf7nBVi>SEh2o;HP6HFW!8A zVf`9&NaGFnX$Os?2^(-b@#R^%JNf0g-(N^yZCQd5g&wzv9zzJ!2rSTxd*uGWPw`l6 zSw+m*;0>w9jWIFYkrh!gb*@?pjGZxhfm%`}J2B>Kz4zT#Szi!+$3#mt_3h7a{z~Bd zmAI}u3+FEo&R@wTguGAA@c4Z=f6{rp`9j?S@bU{3UfwXSmgd}o)}~H2(h!*?xd32( zISVk)$_R*?lRc0>lN&}iOk{X3qBnL=Cr5+lU=NgO zkm*MJNi}-)0>O)8i<`SUZhln~M$q!ZIkIFMCt1LDTnU&Vx%^4P11>>|$Eu)}bRt1S z(X``rg7lX+`+b#MzS=T%?en~-Hw%dF&D)d14F8D6o%bW*mhh3N3gut!4vv2Fa~QR% zJV>!#;^%bdr^dUw3P*+|Mna^O$1gjKjiiwrd-w+{A90k2|}Fu@xS^M z-W@wAJb#<665ZrMXD7YY*?rwS%9hUP>_en*lsP)?#t;CR84hv@32h@*eMp3C7iLDq zzK_E7kq`&(`WLTDUK?#rbCugv*B;bm1d#Kl1+T_=|`1p*{MfMyV&6z)n{ zw{%Ix5NHzqpvV$@3znj^`fi}rgQQDV{82q{87+b5|0P2DyH#eF+as^XamBNv42p|V zPPD#(4h*J>*SGh}xS*oMSblN+hAS!0VQWt!mn2Wq6xFyzVO?=fZip7P7^Ey3cU}|zqN#xasI61fA73USiXi()Zas4jgV#H#?in(7(^hu{ zqmCo|x?Kw*%XezTd(0h*k;0WSt>8cbG22bPtVqLYJaR6}*2gnhRow&=;Lu-qwkt|4 zK(s0FRN3jyz)9n-C_RaMi;FxsDZR_SMFtCoDm*?uAp=^8T*hBqP#>%=^RQce$C~+V zclaH669=D6e9knz!OcPq3ry6oz%V}-H_VG3JIL3G)NClJFuL!f)B_HgQf5%cnjV;4 z;;Oj9j94YXkY#d-=>T`+C__J57)`SANCIBVZ@~`yCwdd-1vfW%*>qTWeH+l^48+!4 z5d4>TdGp4EmpLe_1-6fD=PYA)C1AB)yXTL7{JH~FlNC+F1wVU{X=`{$6xM6Wb8N7K zn{1^-&&|_$WEFXwwt@?T_B2KQ@UAx($FHu8)OcPLV!39|Qbo2)o7ZR5%#jI<}c$sB8jyEoafQ%G0QC&-kA1!{K^9Iv>6x=j>`@mNw&o?#$d9B903bLtqddy1SouMTs>UDxmE!ju9yR#H2oS)# z`SnkJAHb0%*d8Ir!wD1?+E?UVLWmEJx*?rMphkAAMpyAge5`KF-e9w_os~NpfIBK& z@=9_S@NaJn@=ro@IqmS;I?#mj&4O;44|l%f6N9odOBhDDr;eIcXdvr=Sp^LXS3O4H zjF7f#&M)?##6r$!2B!2)wtS$2z<UDNT9H~~lmdPPo8hUB`R`>a`w9*^1s_!0gb{-nQE%AuNL}Q&V`_vPFuTnU3mwQfdpn8 zo7<Ap55$2pUf-Jw!PbS-nDs?yeE~xzdbZ|N3N9 zo`Tc}4Gk&3TWc9J7Bc}<04v-}NICeHEdeZF$orTn;DG&t zyC(#|GOniq#>6>f7iJ3^q%edo(m- z^IQ)mZ)zkroAF@BVcF`?*yvGa;D5DVlr25ZqAt0adF`n|K5B_G1WQ~?NrUIuG*HP0 zpmMoJ57TSgZ*|Q^I9RjTd>FH?%j#N3d^H=`q@JcBnqdY}YRRyEWB|i*Xa2~QwJiv( zAuOj^dGd4a=U~=zm5hX~Ey!vNNjbu6_m&P} z;%D-P+rlN?u251m`<+$uZ9y}cG%sB_e3@Grbv@a1Odz+6Vfbo9?)u@OntR8Rao6w> zxgtZCeVf*Q>6Ve8cTG|gpn_#Sc}363jIT@kvV-DJ0?}}pYMYa*#Pif!JnWRxZ0~@g zm6gDH(QiAXFEmp84JV%)wmFCsG&kB%YRboxBcr-&9?ndQ!d}r1)Hqr-NmNkk!gMqi zJ)Gt=IeEm6uwk3QhG-mr2=&gd0PlR|!JMNWyEFroz{GduI&+#2Nh1vl<-eU}gokYs z)yE3lA3u(e8JDXRe|Z~RK&qENU^M)o32jnG!KEM0ArKDSJz|W8{t6&Pkf6QOhtc3w zx;>bfbNBGR@vRqeFF=}(pF+Suics7wMg`A0G!4OHO|-p{Zts?uq7fq{Se{Izmh?16 zKPq+1%1P13zs1hLs{gBz=RMx#!Gdg=*te$OY2e)3_|Cw>-0$fG`Z2(ku6pnRb=HFq zhygwzW>BSuSX?nj(5T9O2pySM;+(;rwytznNDHm=l*$&xb4Om_e5`Ld#Q50c$i(U; zpI8u?{%xcGBt+tRMrh+s{D5;aA}FzM#!f#^K+cmP55}@$YZ?Za>B0$Al2`(gge}V2 zFjekL#l@#=o|b88B%z`F?ATr6W8`SHq_Spb?!K8Y?J{BSxtd=g(Ji>t*p%?rz^#+R}&~Q-)LOw`gpn zgLq{mDOtHhoNFS*c1liBFJEt66c$#*-`YR5sb(>!jB$>n+>vlJy}*6N=FlQN^%KXv zvA0!33!=#;RjR3%V)W9rq&Pb<#I@c?>hnnKu)-NDzP18UOuaadF&KU%?#Hx|m6~8? zut3cWm0?#j)I#3ba?KUyaPH;)&ft4Z$A=XL8{+r_=peBa$j%Pvg2n+%9sD*>0?fSk zPQ(nwuQlq%pSAyDTUc@uE%pX+A~U(VWb9z#?x?iunvQ_=)$y(MH9$kO zT$QHPXeO8DNV~sp%r#KP5PjVQZPR$*v1i*fIc!HM^gtSz1qhTPbO@8UXXfn#j<2ql z9`{u749mAKbqr+$*<7}_+(Wy6<(?wWnw6WQzyXfQp!T)&dtJhRZuO5~hs=Fvhukm9 zR<%tlFRKSPjaa|KWMx8}?YJgmn;l2pn$N`FpTXK&88EjFEK;fP-ME0VF$S=gX z(NhPxI&Ll+-t;uEcp(LP9Qt~0+4?&~YEm!fYz#7n+v6LsR2p-@?H`DBsi=^0%DWd~ z<}Ma3K7jmBi**6%D2PYJ6HSR)XHN9i;a+NA{3IWGNp{VQdIFyCVx}xQQp@`?@!X`* zEVIgvQNw%2MQoqlo_f1WZY~~K+m^aeFVXZSn5QMrQBm%*$8SnVvKt9x!chGcN)GXj zE%`KH(n8VzfJ4!mh51LjB<1I z)>1@i-43<^&e0>DC=18#SQ?>?yNkE}4uNWw)5Auh)=`K;G7|7frmCP>+3wNj4`bRk z6xfkXGF4LzV)Uq5Qmmc9__d`6Zntstj`W4%xZV0GM_JJ?pB)G#8^mN}LOvKkKCni4 zfi7L4cn7Px;U}2}aO%=cxjvfIf=zfCynGOXq{f`r1jb&0{5VSMd~^t+h; z9;#`7Hl9RG#^)?G1WP#U64s9VqCNCJ#lAdHk=3l1Q*fhPHYEqL8Q@CndUiLI2I5d^#NnVzIzP5tG zdN940e_ywM-eLx)c%ij}z_OsOP@%5iDKY5Med^*&8JDiM1o4EWCc)Jaw;guc->N^J zJ`(nfaV!lV8&DqcBm)#EVGwJW72W-VLR?+TC(_!x6UN}EEf603Oq7arE~gM3L7l~; zubMnvbWk)?HGoLH&pymL#U7+6>0W=|29HGqD9Qg46=8HU7%Y$(tOpclG)$H=gsGiu z>9E?8RbsD=W8cU3*Z5EGZl!jn+}EtaCBM@XHW*u&DIGc}=|@a_$Wcwj_|3i?F7&7X06WWuovnnO zbwlcN++dCos3R(}wlslJZfR$ienNR9l)w}fQ&fQW`n_n>B1$Iv(ACs(?K&vX&vG+W z5rG3&{^vlfk+cZio-f=v=OvE+SDdXLS4L`;lz)9&rcboN0(v;}D)e&($a zvki=xb?=OrG3*oA+u*}QPGipvWrrDInGUmdYijYI+y|BvECqBIyiR1!Zjx2kZti)1LbC;yBz#m9!cnu~Z`>hs#5`n7;O}7pLk3`xmOsk@FUpfvZUIEZFUaD8( zm$ya*N9AptkSof&JT6(3XFIM?P);;nQXDw0URow0x5BWQ8%Ar0f+;@ewd8#&_jA<#cGS>Tbx8E{k8>M;RW@j}+h( zOEJ7>;0$;g|(@yoo)g4}?g#a?S?ZyLYa zC!4Rg?8I@jX}m9!>8UPF2N*~l-RL?Mw0Qjfu&GyOVR#Fq;sC57OQNN}`T(o5x_ixM z6>XfU_?|}p?TnyrvO+HWMyHk}m6U0o+(tf0VbrqBI8#Rps}}#f_}bvBv&#FHIe)eD z`xpD4f4Rr>w2u=3H};I)3E%0%@4#ZzIjL}4kOF)w61tB@-#V&r!w(rE9^W6ZZRZS> zmpi9~3GU!y>Rn&xKU>XG!qi@Rp>ZE+3ANXz#-1gdD@PoiTt>eU?e-*F=M)_9U+|&( z9jQDJ!Y!fq9;IGyyN2Jt!Iu28@PM3t(E-yeuiBdEgN|hUemWVS;M?YyZR|Y+!HH9Y z?qy&GBZeT(;OpEJ`Y2D*fG^BdV3nl2R*VikXe)?0V#+008h9s{Ym4D(%IE`k%7s5< zU=RPA}?Ci`+Xd~Ob27DrzWKfPj@P&NCVaBnD2(Rt~X@Ttg1O5H1?i@21L9f*pG ztp(1bqW=t^xHIA>a~Xni5th-la!EUj+fVaSF5P-qAp;# z3G@b4+WQ}@(w0bKyS-B~fiGi*(>vXu8ncRff<%yuaU{qgV?_grb6=?5 z;A8u<-^A0Cx=*Y!Hi65H8tSd#+7=26u5F2~hF93bH+WprsEs|hI19dqyuX|v8Lw)% z(xTa-@M7+Fi&-tZu2IsSo{M3h={tUIQJX-eLEj*z{>6sk_dJ{vksYC>#5R5BEv)?L zsVBQW+epq(y-GBI2n`^@(G97E2SS;J2Wku8q2CKQMpc1xxOxps?G#K!@nco1Ym|r2 z5nA+DG z5Bl~$p1o#%qEKV8#6a<46XhufrhjNU0LV8u1$({=LPuH$o> zoG%kS`lEL%!SS<))#JhG6Q$R$VQr05wr=j`l_qMjuC|2kYR4L=$2Q2ywkwL^ocniD z^#f&gch=|p!lc~hOMWVhNbfQgfDlVhA-f0%zOc_ ztauAI+T-noBN%lH-0P4AxT_JNFNF(7`0MhXAqf(2kAlQ;vA8>&@NXN4u;Eq~xI>4! zUH1^=TK5pt3mSX~gfmGA;W&eB7e4fe77rTOXHpFKGB5S@PG`WuW1S$)Y%4aW@sP+C zx|`PfH?I;SOf3L)vP$Z zcFy37uB$1NiK@eyjb@%>8+_bH|42RZ=^IkR>0T8^a`^!v)D;mn4UMXVe)viw#NLmh0qzfZ5 zkhUM%IU8{q^}D@fdsvY5r39rdnl8=NuFWY#4LMc``&0DfC2PtG zH*@JenZdg=OK+S`j6T~}Ddml?9Tf>KIAASJ^^^MRLw_8^k2md6FG%rQ2U#%0uXy2Hr};_cC-$OjFIMDqgqn(^=bzX6?t2%la?M z=ypSYbit>}JvvEY85oT}8v8%(aFnp;l0$&*0)8@3>LLO+>< zu3cM}Ju&l1t;eO>uPmuS_KU(aw#9H7d00SMH(^D4e?#k@S_Xgk3)tVjW9P0T@V{S8 z60lC_d~y=QIHWQnuTp~2H(i)taL^H9y7eZZtyeo&loiRx$vmScY^gAiv|Ir%!_v9&=D2vaZ*uH} z{xb_|&ZE4NN4LZ@x{d@n){Xt1q0^y1a`7AUo6FU-_tj2pC|3LCeZ6BQr#UB5J3_}k zJ5P0F{lT%HSUZ^}9NaAte(1NVU-0`I-VO_H7rgdn3s{#R=rba$Gh(IuH%j|Cu#^qC zcGbgQ`1wQRqNVw^6m5Y~i+;+$4ywv>+jf1ATnr*dUCvE6hI?*U1}odbJ8Lp`v-0T? zKjkS;rD1}19_tYAm%hKd`Gn5albGfc3p}c;6`KuwB%7JbMqn{>VKL?XMVnzUo9~nl zkmIQR%N@}N5(U0yB3RR`Mle>qWn(LN2H#;U&F`mZ_Zqd}QeN-KRoT>E#u!*FH<4yi z63@#eHi+k{obu{?qx;%?qWp?RHvhpudFJlsv#W;2;#sUI_XIWPF`Fxe@n(ht-mb;Q ziN|Tx>a>L83q0~?`H3C-j1yUgCvqN#pYc`Q*6r7rV5!Pauq4PbTwg4Wr)v4eAv{X7 z5~jJID#MZJh6TL4T4<8HMyN)RT6R1~hvjzNHD`rOeA9pR4h zHryE1Gbx%o%4BZcZui*OMrv6RqQix+z2;!D{&nRM=o0O$}f(TMmWdpKO zQzZj`>n9#Q1f?uVHdf>=QSUC{NT}C^$#zi%jvCe`*{n5jtbHo7vpK3$`Ocw3-*7J} z`;|W%ik0K}`rtLqMVw zN$yQGtnL$|;$XE*W9#*Ooze}u{G*uTJ4Cg;C9i+rTdLbUA_+2CK?L4)GZ>-Sm-fRY zDP#hS(1b#GucJcZRV{q?y4G_W`pvn5aQNWd?1FK=ct%IBfrV3t=qz!+PROyl_Z%ZE z93eSOOrDpI>~=|Pr8vg~z*XJ*HO!y@h&~yH+fE9#id73ZCCiJ|))Yrw&>2Xe-&3W% z|G}yLC|Hnw!sqH##y@X=hI?{GnlNb%!&4p(S+LrP<&z zedcC9r+*qgr;pwqPcS}wi(o52zgb$E??)91( z;ne^?62!ShquUZfU0BC2tQkksYE)Mq}qBAei;NPcVz7QLvZGjnC<0eUmS!QNfZ@)t+YN$Q0XW^zc8_mx7ZCbQR^+uLQ}0UFKR6A#dcP}S_2Go2j; zaOH_`X-fp5REf{!#wRGl6~vVd`A(|H#W1*NCmk=@_tE-KPb!|LW!j#nU6*`5G@82E zNz1cBN==uB-o&{5LpL#g=89yF>mZIIG?=ppF;%}1x632RRUmDv;2YQ4a2sPv>Cs72Lq!9& zn<4?XF+vLwd7YZO;p7?{HM)8%)ma;fwId7{>=b==01$}t;_Z?@ZTH46^lU4L#P_Z_ z0|Si$%P7PvWr{u8Vjp`1(E1nLw{wlJQQ6ihZdDh!e}*{7D!$G*7OAWl`0vZpAS+bf=@9@6Ed z#2)P#b(3vPQF686nj{QAIN$ZYiTd4){kPG2ZhUn|Ok?H_hkxSEXY>pw=1OU(*kvA< zBp5;41t$tmT7O zDKElk*YkU-(0zccK;LWG*d2d%!lZ0P7AWea-r&o z9%rW#S)8WJX4XolrAK90bKn0 z5X=31vz}BJ$$@W^D;i-sLV6urCqzrnr%-x=fS*aU9OLwlbY10PQ>9%Ga_RTa3PuG# zZGxMib{BbiXi-Si?3z49OH8cyZRUrr{DljF5kHGc?C`FH_mxI$mJRIl>>aDnRB-8< zP!l}_4?WOHfr~aih7CR_N4KF~@~2xwElapgH!__brTRwfw2lC(VwHmhcMQj4WNz-x zg`tp}ziv2;s^cu$^+1K7uA4ag@W0PllNLk7{lFT%z3z8DX>_F-GZE_ntPy-};FC8{ zcnYBK2w9^fS*>&7Y~=T&!w;!S+4bGMZ(}U7e*jlIzb)R0-;51)_nxejQWFVs#5XU* zYt8(QUERrUAHcBzMSXw#DpQMq45Fz##P+)f9<_@T+>p$bw(KtYOB2_&Ioqk~8bkPr|M5HO(9 z`<*YSE3WvyzxV!m?`}Tqf=l+~e9z20&ogsodJXUFk|rz=w*0Qo&m*pf-i(-3=*=jj zW@SSEY`&TPVt;Rq_zmRo-tTg%iQzoIWxz2WXOmJ!zPQVINy3Mxh zUjhBY?5Q^vkPWtIggf8m>Mpg6wmMWwb)B1NP=oM131uGOV)zz0BeE7mJ%%qiy9F4O z-7|>>wsY?}YT`xCYCBdxJ7Z$N?G_?Q$w(E4B|LfF!od#(RCcmWXPK zU(#~_f6?}ToD8c|N|w^GdExB`5k!(2C!A1M_yjxo%~5wPl($O$rll&T85dA3E+Jle zYI8$W)L|REOJqN@Q0-QjQ?-8B2zFELZj#%wNpdqQwq0kVT>%7V?30~z)eL<2F7*uK z6P-KiofeNN5Nq~cj=%~~0NW(Pso`MQIbFj5Vm{eu1*?>Q&`R*=jhL0p() z^1`ia;b^hG^0E z;qC2f$}%e$j`_00&8L1w;pch%KSW-lf%<2R8`<^jS@kxc$~$mh^d!lapg5sL*6Cg7 zKZ^B>&CmlC*fklv3&IWeTO zk>VTdt2Jn4g3k7j>4zC=^k2MWmrByLT@TQ+VeVJZJxO3CxV>3vz)I388;90nv(`NU z2=;9%G4K+nYO}8soeN=1#xyb}qk`Pv8TWhsM4Za1J}VMoI9y+_s|2Q@G@|IGqGSd+ z9q(C*%V{l-s2n-hXrcoHH4+J>{hbXf-FCW-_;th;qDz8uxZ{35H{&iibD$gs$V-&F zJ)Po0rU8qU>)mvoln%n7a@=uke-iO*`{|&2xnCi|2n1{i=w40?Qk$Htk>T{@mg!rH z(#<4%Lu9GC;bcu{fn;NsQ$9y>T4eF|`-DB1#MSvvu};iGubyJp%1OC@)NOf^)AYIo zK{`YkK8AOG@O(r`R8BRL@1)Vv>(4Nfa}LL!L!yey|23*q794FXLP16XW$2XKU;(pH zpkbAk%k^j3jchj78CW_1GMUIPc(x`5-$!U6AyZtwU@{n^mf$s*lKkNKo8tFwPwE(7 z6xSyv>5{5sz>9#xK2UryF4A7{TUsIpOY+RklkTe}zwdr$ z&fz1Ai+&DG+ULMyhs$_fuMg{2^bOOfW0`mH-(@J$`6uLY$Q*C2^#fbU!}s+JFsiJk z;e$CS6t`L_i2uKkmq2z}pfJrHO6|Q_ zR&Xe-DjRh<%U#eQ(Sc0Y+dik#wff3_(f#M-;gY}GX{?}e_BtT`XA=AmqO9ktjMlTF z!w8$~!DP(tkKpd@3a=l`E01?R zk!|N-hR&{0>&^c^EUO$GDQp$7@U+Xo`N6uvdk=e`@p;u6Klx*>X+cWDE*D8jxH_Z+szhh^%s8$M$x=VN z2S-kyrp0GPWWoq0l2)}z8L5wh_Tey`yVGQG9gAy&$R|T66EI7;#aSH7Iglkr#a)@*{V5ny;E9q# zWRX~M^$PI~#F95%IA14Y4p$=>v{fKo?bc|Ee_WwA$(-e2nnFv(en8k2I3Ou4Y4wd& zhU+RRPm}9sbQ{wcj>#YM4HI#m7VWu)2b3Dyk24kT4^=+53~OYQG=d(SI7s!NG#=?T z1)U-3F(^?Ohj4t+pJep&QPZHnlNS7BKfa&8yqDAPVbiRtg1R{w;kYbz|d8qD;V|Wj2>=j$pq&$jO9awyUuyF5Rs1Pq7>;$L?3&bOA z1<}9es0!k0UXe4QhfE-d5M8I~3-a6s^ys7J2$8x+o+DDHaEV;M<2DB3t^K z0Bf^=wM``P;|v6(u%LdyI7BD-9@MW=0NA)TkB${=c%YvLG<#G2Z!u)~!Whz_A3>_F z`!*5w0h9&(G?u*uYKq<(t zNh#U+cRV)etP+f^xU3~ zF2{InV09!_A3U!e<@JUGcIl6-y?g)Xf)uBu72!kBola46cJdJQXhwly-TwKIXFcI*F`JGUe+5!-ObpWqzxvk4fY^7I+6V`nZgvB z>ODt{e~eLTI;Fnm^y0&gWG9X`Y1>z2`X(&pu2aM8Pfz}w@JeP9l(BSX-SpVwQosaFN1BF`*A;Xw7bmqmRQgZ)3y zJ3d7Y2NMGxs`ze}jbZ$!F~6rC#f6n$jDdm$#tZA?VmrLw%UVZ6!9sLcnr1c}x$H** z$O|5C4Lsg#2pyLobnt~*R_jI4S<7vmaxSs8CAuB)JU5DODz(U>w3$YA4kZ`1*5IHlL#xhx4y(h#~OQAFWpo8k`y$`3>>P=|`xfzZ- z1kGL;R|=Xn7$*c3C_EuMr;7_Xuif?upDxro(*NP|@_<4yF|C(krcPP)gR92;Hnq-a zTjd`OT;ujS61Fh@n z?5(n$!^pI)Zv5JNklZ%QiSVMNlu=YOT`&a}8upEUq@a6{ka6s%Y4>^l?){CtGqo{# zk)NulN=~8MouxgZ$AedXQ(U`0YxJZ5zy~o?y>;(XDMV#xp8&a)ociDu>C|bU%Amt# zQWKm2Lu)J>aEJ-SqBR~2oGA~pYgG^@WgP%E(h$`H1yY*{2#oHhKS;FZ-)bDzx{Gl{ zVr;3Jb~Mq_%G+q)T_gDV^B4ZFDx1nqvNa%StiE{L4sY3iP(ECk!Pr^NC6YPjlCmM+ z(#Ra1`xw4A2_AC`?41)Cru(%qK98{l01QPTq1?tZZL=A{T!>XeGJbr;0XmR)4!KUP z%y!JRV8;#meaw{|QN?OztCsoCJxK z8WWEv3?DFRV4nBz`g1zhoSS~~7lyDy$V?)gTSv7qS!aHR&|+WdzmhVg`6FreVrRZf zd*+ZAkazJ@^DJ%`!s47aepR*;pa^}pbQwHnR1`$Tdw zW$!Kjz!bCt3`hCZD8%nGc%CzIRSR=?&YDu^e(*KO`o4@zp4+|op;5{Hh^y%wI7{wC zog0mYgIF@6+)_^l>dvN-<1H;G%9(bO9Q-*2k%Q^)FHDrE6W#kB?$l_~zpfm(E^yK0 z#C+1?S6Y&@aI0rc-Jz66`KiPiKfNrT`N)!j=t+}hr(1WwBGrzrL~0tGUVpU~FpLyn zoT{X}P-_bZu_L%z9~c09qPQTUD%je-?khv_ATmZ*;(l+4Pr^7v{f8vVFVrsQC*891 zhC)|C{ZI!7+yqJ=XKGxbUTTtrFgk2rze6|evv9R5e}V_p_+(XA+LQG-4mBV(Q(5Y- zy=k1h4GL%n7vnMeu zR_o2vbza1hHKzKt4-C}1c<$(UMQX6Nv`r7U!mDDSKInYA)-(x?m@!W`l)@D@_AlY! z2;k-IUZhCnTk*;-XeZO$)qLIwe$D9oQ>+4B#s*Xl?J$E-?7+6F-Oj^G!&!vRajnD3 zF8za~2OJC>mo^mFwAABHP~+_6-({u5%sE{z{M-j|h0r%i=+MrzKu zck2C{iNsKZ@t0jE^&+QVWR&KT`HK8xFS9Qtr3;39sMxgJ7zdCz%pLcC*Pe4#jY zv3yPD4X5S$jDCwRU)J^W8Tvh02cpAGzwesr-UPr zR`YNQ$#JfHIS0dUCzKY`L(Uq3^8N!FIpqXsGc(# z(0SDVSGh8>-?1uGaBCSvXtKM^>~+zVhj*kwZuv{DM~U*YT-m?0u2Mwn`V3l^9cW!K zH<^++(=X)%xC4jg=)0H?Bzab34#iX--{09?5oNni-gvQ~{AKLluR=3{kd?Z|oo%DW_ckdma3nK#p; z8(YeGF40dILmCwFj4uQPPb<$MMRrQR-05E%$S>;nKItkw>wvgd4QZ(F=@b;jZEpBl z#s~HRt0Tecv|)8nQFwNU5uo%fE8&zMXcGm}$067|lIo4*2DVU1dZ-L8TG=uU%)@W- zdF}XLXsi*~)8><$SHI6mEYPMw4R-5swe{d1jZSt%WDgR^9u^>b^roX!jx!s9qR{^g zYEq9ReLZqp4RUhO^SZRm|3Q~tC}A?k)vG+(=XMNw^YylCftK*CdK7L&bZHF*Lv5x= zgOosoN$!_}N|7IoY#z#mc_MvsNXFm_UEx5}c8&N{m48cv_DvdaHOw-6FQsxB8 z)F~fm?q7KAEc@@B-n03gJA&UBgL>D#q%m#Nf*D~MxWzY!q){ni#K0IuoDQdpZq?Ic}? z9NH8o1GH9rs$BypB6HaY)d2i!A4|g{MwjO$FTTc+(w>&~bR)ux`y`e_CDw;%qKLH?KAk0+hoHVwgY~;fv;EKI#$D#HHHRFO zBpKi|K0gQCUzRn@Sh9F^HPl%D>biuabZ@HXyhB_VLjI-5wIDHs32AuCD}{6AQU?kI zvYTFyV54i0TVf_DlGH6W_b;hD#`8+esSE}My-P6D{cj-(qs1wW|9d5fZ+mUm*GPiY z7#@&XAY;D!BMpcX4!boMsibj*N*X2bGzHrZ8P{1>&Bu{Z+*;p*pHgmRn<7;ps$SE* zZ|vL85&ffEynj(%=*LG~P+`br1eIpEzr=`;e~CC--=`MpM7qaS|pk%oF*HkH}M;--R1`xR}*MltCt7Jpv1J0Akxw& zVfSgvKH?k=VQbve^eu+u5cq;llKEGPHgz=~C#z37=~vkgkX}4BT`RYro_Ev~Zq-3i zFcm2ZE>UmYYUvbjBwE-^I^&Q-Z5v%VM>F%J)A>@+*q@6YcKdOH#hz%&RdY;tVAgK z1mx!IUI7$frvnh3Bq142$Q;65#4p+bTM9G$-f-XbuR2Ub+9N(98tdo1NcB1X7kP$= z(FrerqJB`;=r><_eitqy`X#?Y3V=QL-2)PA1gZWeElH%7bwck?jOu0>7jKG-y+U(# zy0{xjGsqh`)tTZ_Aewb27|9zq3R;%WTLGkI7F`tl(J$AvanK7YPmneJa#_Ruuq+E$ zR^4VUqGYcq`RSc3+mW|Yh!P!Cs&3IV5<4_0KvgSc(<$<)@MFGuWV8=z&r6}0e9;$u z%=r>=eQ1jw>$bm%!)wE*{@m>&YXk)nUkwzUh+N=A%Jn0DxwvU$agNBIZ83#%MY2;P zRGZALETJi4*s^Z;+$fSVg6FAPZ#ca}eOw$=zf$F<|H`E~%v~<^4BGr4=>^pO!i|o>9XLq*CvbHoD(udtft)5)x!*DH?>#1{z zDD{=feN~haRD!bTrIw+SWF9X%7;$*T5IJi&naq#O&D+^1t1*AoKM~r*6XWFI2BS_o zbcshU`inP_zBMeGsPrF2y2B7SieLyqUz?;My=D+D`pZGXA}Oq>cin5UE~*j6mXYHi z85RDB2G`T^P=+Cem57J7F!GdN^lyU!#S@>Qvs|xwQxGyJXoFF7q92Y`tf`_Nxi?>X z?=ltO!j51BmD3^uHwBfT-gYziIs=hv7Xcx((vPY&T4@ydz zCK~FEV9o6A;gWBSzVcyO^^Cjk!l=SXUfvGh=>D1g>>k%d!o^#oI`dJ z%#Oeh462mM^0(?;OxpK2da?Eh7(J;R({$-&YUECtbI@Yqu6Ih;AwAr^$|*kN8Q&XU zz9bG>^r<8&$%zL;qRh#OJPe&`AJ}j}8~dbIKJzMa1fe>D$x`~VX)~i@hW+{d5ZG>$8&A<|U8aA39{#AmNn0(Df7qxsThKRU_Ti=0 z-u$EY<$F1lEvBfv%Kyxc|GsN7bhe*Z>d0uGP-g`3)`2D4LWHqo6=Q%UGZaE6??I+# zz1V%)$gA}>ZLpD^@SraqFnp2hwVHB?c>}}VM{$47?0KiLDWb19^-qQKxw)PmPsTfx zrS|CbZ5Y90nr_mMpqTVn`SA?BGe=~qD|Js*%;JDxV4#BwKNS_&x zj#TlPn;iu48J~^;ao5668+Xng=1U8#Ou<7uK{a&|UQd}zRy{9%Oz-)iu?fa)^jkn5 zVueX^kDPiH?W5e846B*azgq@U8K!s$EgAEng_MjHsZlSUb2u)~xJK|w@~szJDV1(r z$1-G0KV=ZYTq6z+#75IT(8=I>4%}VYfA&=9{Gfjbxzf3bxLYs?LGKQ7%l2W%?i_?_{MqHk}u|_*kV6Nn> zOVoK7?C1W&sL8nrl$3mDPBBXMR!YnoD^LGr&F?L4a1^c=vmtE|Q`z6#JBWIabCaVI z{}Orn_r81j!#Vq00-i<)wy`x_xQOM?H@%3_y0)5PcKG!qnf^JK$10{Jor^${WeJXVA_qlMz7h zr@{U;yQ?-w@s1b|ON?thir&nBo)-ovcocFJwtE|Vl1;l5eLfe>*TT(4VD+5;akAjU z?#g6BC;rLtmZ+1n%UaJqOWZ`TP4kB5>m#OOQlRKz({L#|3r|oG-bMfyL{R7$dxeDQ zh@q>;bL|~_=i;=~IkV(^(@Pkw>vt$-M@#j;0FAEE}RSd-2qG%j4XzJjD_%2o1@;bh-L3+leKyYF6L!rz&IzY>Ly3mi=Wu5 zv=vMU<+6O)m_fi+A_jZ^IvA{I#KlBO%h)_x8@2qmW&_+SX3rBT=w2B=-+HXZo{su2 zhAG3-EQhE0(@57Gc?v46pH|nA#U6*O1@T&^v3+bgh8^NDU}|<44RsB_UH)m$2FVq4 zWoc)@w!&O2=0NPgzUIn;)sGuKrIQ~ey`&a@PQlNxkJUvQ1XXHO5{DByr(?%!>h%k| zRSIz&#d_9LTZ{kAN370EnTF{xnxN+mu5X_ihh8PtM|!4F7f-4T(y>hG6zl)o>@qcZ zed^xz+*W<3$a^ClE1N4CO-+(o`S)77Z2GOartt;_J2E}nO41<&b-kU|p=$}Zp=QrM zY#q+t+w90Oas}h%otej-gK~oj<5=BPa?Jkz9F9D$@R_9w(u^08Jk^fq17q8E%8MP* zT5Q}i(BW*L!`b|5@!;j&gO_7)TV{iogYn7RhJ7)g>JBxVSxB>4hODK8+zSuKNK3V` zrDl1rrif4pL0$l7+E8AKnWUl?(M*2tXE!hz?A?^d4L$3lFN#jr5A*k&L%n6YbykAX zQ@chnPeP`?QcaDa9Be;raaYQDBdHe4wD44&Pt7QrS-*7uXu}LLeQ6%Fp2R4OeMDaan~<62ZgZ@qA*eND2_ZvK znoBTPgHJCf`)rh1i=qQ5dLGi8q`&fuZ3&O6=}O?mqe%@cHA>`Bo*vb6=JH%29LL7Y zs$~~xKbvo=6k0Wy2hD)5)?V7`;S-0i-sBB6 zZ0fU5z}k%Sbsfp0(X80jJV+DVZ(i>E-nhS5+6QYJLIkC7XpM$*X zi5;GITkdW!+=5Ro9bJc)R}rda<1Y>+PmT{@bO=#rdtXpC-<*do_?f$Pk+5$9k86OB zOu zClK_7rrwhn2xlj>5ZW0*BJD@qvf}fTn2c>o8I|Gq298<{X3O0XqJ9IL;Y9F;)>GUC z_6_s<2)%M0$dlWzBG0%rS?uxu{)`9DxjJ!F&G9d$bRr%KRB!(DyAkIOS8D+=-|VTmTRoN@x8FSWk)?)^CY6Bmqc zN7rWl?RJ;GfPnu78@#&$QRI`XRR=_oj>>>Ll+Tm&OZ__t2PxiS6@?guG68~>b34Q~ z@HYcN74W=2!Sl`~#kPp%@+&@jg~`~ilv~-lFRvwpYC*Aq=tdAmeL}ef!&&?cXR*Io z`PN8Go0^ouVczO%=t#=HvC8+$1V+*VjHD%q_Z={jOQ0QYF}^j31V+K#NJB>3}JnMN(Z5pYVLZ#B~(MFo0RT}wy@Q9(7|41u>a+hOHH4a z!&8{rjcTE$`BAXrvANPPX-iiQVI(MmsHNQ2$kDzuU!nZBWAZ))?PFMP{@5`Kkzsu4% zEz623BOcY5Xyx`z)(n%_f-LnyZdu;i_rjZ&3s_!D=I4kWX3Asqj`@aRT0Q8>?wK;B zODt^3sxH)ZBsweOhuyJ79{F*QesRxOm<|J>v8AN);{4tursb> zDLojK;AT| zF|PY!%Cym~q0h(6Gnj*ZjH+Tp(^ZJnH0zyAJ8@l(k%^!`Ri=GrG8cVX_qYHz{*UdR zWZRh@h$Raen1Ayd}fTkLhA0;~GhYJV5#>rhQ^NxM8|Ma(Fu-XqCUilkb(c@jX&s-4lSf9DP3#`iTKc`zMJ%6cI7N$qq|o!5 zSr=aBw(3qI)105H7m+2nT)cjV#-0dBWV5WI?r=ebn%}nIs_l_PHpU3=JL#m>T|J_bwV(ym0G ze}?9J%guI?b!}$;ZO+4#qOF-RYpw#sfBW8I`Od=ihk^YbRx!B>7Z{)E3m_VoFjtNQ zOsid@QAEz+TCy!Q9JH=!^2KK)YK!PI{^V!NwGZx4dRAX`TJaXC=VHzfaY^R(+5+22 z%j4q`LJiDw%~@G}@y}vV%)XA7m8qO5O4GCZQ6#On-a<~&)xKQ^3bph+3ONf6d=1j% z(i)@Be?aq%aI-nFdP;f}>gs7#MZnQ%QFi|T#_VK!$iTO~C?ZR%ID#jqPI~i8DA1Q zRdnb%Oe3o%lO+QR4iCi*AEk^=n@l=LQT~dS$NGn2ZTv%t<&}oh;eQ-f@fNvXD$Cv# z#b;t3Ogt=w25P4X@KDxu1l)I3%gwZ&CJc5!@{cp)kmOCY!#(~ma)dc4l}8h0Eybz%;gZ+HaaK~2H^@s3Xk-j} z-6Pn4Z*#h*rZLfl#D78$Ei>-N|v}tYCr`uPD}%J)#wa<}2q8GG;9o@i1mDBzhTW%BJx}pAQ-~9tjGKyq06pr0gCf zbDHS&diuU#vLV`*TOzz}!&|W9XS_99uCXfO_ymmc8gfsuNuPjRQQdH8^izs@$1TA>( z9F_-22I`$RQbP0CY*Xg(Ot|FR!wtDc>llyE8S4zuz*7D_ z!{h0Hl06&~fNtg%ZRp|#eLZZv?JPa8TH#Qc&^DOFN({M{7iZk}=??KyCI0K`+MVwZ z_4%a73h>NKQ*I2+L98sc*jF&MD)oFm@1a>up~{>d5BnUVF6tbpG{g!1b50&-LUZn( zVINk<+Hq5lqm!n$7asRA*dv?vd-VC+Xuen6YzC}rg+1Koe+;RVJ*a8QXWyBXNq>@a zSN+MhZ*`h&e^0@g<6iAI&sS08$~FjthBRB+ocHsuml32 z994@@b%C7GyV<0A)lq%*`{sn`vtcq5H@nqQ7l1a0)Nd4m<(Z@;7_h0)!^%CH(0ADQ z0#$#yq^~PY&%eScy2#RkKaXZ|m>g7DFIwTw-t~en_QJOG!&3U{MPL}<1dI4y2MYnp zsn9yXWUmPNP5T8O&1s8CaM;A-iVUHga7{rDAsB&@n0>urTfK_(wQGaR5c7t7ul~<6&%e9-DH??p_-?0eL z7eG#*@Uol$h$uvn{bhg+4~ZCC<)3U4LZPYmO{>n457IXqSC>hk)wPU>UJ< zztxMD&+Xk!*t*2Y(3PI(V#sZMz#I zWrpwXn=HS+hF>Ego*>Bc^U1{j(PpD6jvj~({kCf>zTY*mFS{1RlOxg8H>)i@GNE)b zFIQH^@~)bgUjP1Som7d&d&z=gGi49$a8XIQ1tCWQtX@8of z86ok)ExU`R9O~9zEzuw0X1-7;d-_lTV+-@~0A$L%D7QQIRg`DWYbL!8T_G3|#zX3yjA zO|11Pcy~Ue+Ve-Fowtx_xmSkNjy7r2e~fqXke=4d3hl6$6#=W$CsqzzjNM^!@SfxK z(kvlQp2k8xU1=~8slIM@x-hkYlP=tQzF@6_M3D|QR`PmNjkA1+49CC?&GG9FRi^3# zO`A;eDlb2Sr(IFjs+blR9}+6tI}sBzOtO!uSra2`(Ge~bt&0Um66E*QoqV<3Z(fGF z?TsN!q%eTsVS@G-inf8z!eIiz!z5NAL{Yj7Z~7DWg3D3cZ1Rb=Ivu$3(p#F?aAb8B zu)4hiH<~i)t8?WTur}P>(qea?L!w$?g<5^MrfQSeZLM8j{4f9RMV)h!-~;?!Qlj1_ zjPCMH;P%cRaWKDI8H_5}#cD8p5qHL=7mNIl&IG*PD)hZY}%mRr{M0ubRL5v`(u!4_h0UwQYa;R0wiV#rFF4#`4Mc8eNEh}?&O+ZDCW2F<4OG-o&X zW0)+Sqp}%*6*w8#FgZ=^0|fV($p^sWJgMoTY%&qN%NUZ{d_^M0l;P8%5;8FrYHDT5 z+id%WBi;5EG5&VvmfzZ0EAK_RZJY5^5HP)Ga z!R?uLhdA+|A{;Pj0c#?#xAL_|d0fpn6jbApN)cj#lXH4z~Gg2V5 z1{8+OsL==Pa+|4fMo@_&qM^nEX6j(!njEw%(CoSL>B4W3^j}9G0&L&f_rf-P7-3Ap z@9Es9L#neN_O2JT!EX>%*Gz|oRkBfyRXz|PMBfL+#G2?!G0pk5gZqtNOz+D|3nsOg-F;T!(DRhM(_ zaSHUt{31dC*wfULQVPW|&Hx$?kU1UY^_sto+cE&yPe7;$T7CAY&}-FbFB786%{y7# z;MHRIe3SwLg@FJ~|Xdmqrc_AfT!u6VF@r2?9spq+5+2$=y#BRr%d|FO%lA4#**-~xmICBEm-!0^+ ziTKd<#M!(wBI-<+ayuDDw%Ya=rZC&*F zn`pk56EB*4L~if%>v0I6GcRkMcx}w}BtX)FGQ%%;0^hUB7%?Z3ltZPL)RmYmE$R5fa^pmR{R8;IAXFQ z2+kOBA4S3e%w7bZ6w%icd*a$Vhj-xf*ooL4E=-@#AAR9(mKg~LIT#KGA3HQ0>q$EX z4#nunvWeHzI{w49)p2O~j0-(#y%O>Z!SF&828dS-5U&s*UPaVj`m)^spT#Nw;#DYw z-cOHnyTLiyp>U|eY(G6^-Jq)+vw-B)@eLarRTz|QF?rc|LlYZ=L@!5(UWQ0)-DRv% zn}_2ZB^WO=u`+83)F~eT1P~AK-CeapdE-!L^;BNwux(#!G2cEdq29;T*Z-@Bi4E7B zmNY&L82NrF;%2}rJD7s|t0)TrKLhSB1l-^J5+5K-H2WI?Y<>z!^YgxP^#oo?1q8Nz7bGKqC- zVwO8LUD1Tx`JthS)?mT~-7nlHDEpzHpn}^6$LwcG2*L~2lK2Lc=IPjfe*%RPTc5uQ zwFs$JKvf8BGZ9{q6H@pI5EFp4^95oeCRX`3fMw`YwM-FWMgwA2BB8IIfBo{IT@@SB zb%B;abm^1`8DZTj>ab^Pdfm$D7x;<|yf9=@9vtp3T=cJqcT|$=$}Oe|Xn;+>4!Ge6 z3b3H_gt=Yzl`8d;ZMj3FX_y=d`GQk68>ggx1p-etPB==tZIoYY3u?ugt;78L3!}XL zC$+*M_UZa$R<3aah2n5au*Wsa$b+d%*Lm42Py6-$>h(+^ICzSc#akE*ot`+xi z-&uIv$6$|K+TG~$C1}2P6E%+Sn#(la1@WE~IJ4P$&Qq@!2lyfmh%d3~&Bdr4)(8C@ zJ4!DX)Q|WBe$aI$hxiK4!gEy)o~~5k)&o{nP2rebCR8e0R@QU!MeB( zbOm&v{GaMTN*hVt>$u=JZka!h>ptXt()LvfD8yPC(!>3^p-K>us@%YxLk zqxg2X06;Vi8;yP0#B6YEI;QE>>AQ>*elo%eQo){jVjWkqUND;D5ViL2XjuUsrD`Fn zh;k|!QSugQ1oHwPU_gGrfc%(*HvpT1sGfxUV9r+Tlf#Gx;*%$b(&98PMF)z8Enq?Y7wH zl$pEFnT!i{_+)SPLM_=vgPbO0xk4e!1xPDI=JX3dS{2-uA%L_(LPhk|r5W@7g&e*> zVIgDoF)N_B7m*)VY)GeSJN=d(!yYW;souIe{c}%OUXRsRcp7P$&s|Vj5fNnoBC|oz zkr;wrNGd8h4r6Z;dol!FKmrA-{M4Kdwb1d+hrC~)=U8csu3IqsYt@&41pl>n00gC4 zwW}z3x&UTOlCuy9Eh?bTmYl!EWO%SLzE;*hf8)j0^4}^9aJ10Cfn~VjnpS>_+Sc^L zrl&e*ng=G1=j_vZI>bAS-~Y?~o89y&WH@A|nUK56fSmgVzhDcA<()FqQY?$FQ5e8# z#m%%Qn$d?Ekmp+j&$nL8a3o4fR8;b{r76@)R6vbyLjT*2j#n`zE#Z$WE40-}e232H zaWeL%M{iEn;C=GbGxzN%x-7{vwsh$$`nOD_(9~f#T{(Lg4T*#jAe7TLX|sQceuL7< z0HxWL0)T=TBl~9z`-evM&$x5cv^k8^R1PFGAZ&gj)20co0X=8Y{BVY|AT@KwZVzTJ`adcTCX=3Se zz(jtl0Z6x^M<_zknfd@!^-aodG!31g(ag+2U+ZK%uDEFaT_$K@m)&n=F6+Vtf}?^!L@KChH<~J^a?p_AP+_gWsXfOfYdx-M zDDB2K{r$Xq+QL46!(CrNy_L@vk*xUA+$&P>SNRfF5lKcja86c}b}U{iLUT~dLJ#CL zYXe68<7MRUU&2Y4ed~pkZ{b9`P&>|HiZ$KGC5scwIVGJ@MB9=xM@MMRaXOmgQpa*@ zst0C3$S7%Ny{s{Em@#$VvEif69;opo)(JCRn?5*_FZJt1#NH9<&7Qet$p7cAMRCKA zKoEia-=u@1XEC=Sg`gS@lE%%;1(74)Q_aVcnsqU$C~w2sh@?YQglxWYX-*lL_}wKh zSSt3kcN%tg?a3fvMP0AF_jdQ6Dvz!d9Vwuu(ZgJm_VY~Kpa?4}v)|icte_eoJbtd| z#&Pz0%Z(K%ZtS&^dPTO;!NLp%d~3^I>!RJ&>ud7CZPajJLVNm&ujEjgn^FE)%*-u@J)|RRMO6i$TsT*geMxg}HDsMH(w7c0mn z7(qdFz0q)gcfqs^r_=06u=;TOr^4Yb>)G}ldZb#n_Sq`>=s@dC@!7FaG3n{f${e;9 zofM^wVjGzS6;-owm&f|(l!4LXiZVH68nDc6!QE4zYXu1{c@yJqEzU!aT0ZBwj1Gpm z<GY>o7Yq zs3$e?kzwj~IpT@l>?qw~cJy+D+vMzW78aJ-*<~!}J%1xUHAX}e_!FqU-b8DleTCD z-u{cnF*;MI@mvJ3UGO|>@A;S!})7*4;(#KUcj0Bd1SA6m|s^ddG8g` zb^NE!wdni*KGiXNA!c&$c|6|(<*}9KVsURc1u-175OA zo$f3vPMlb_H|h0Bd&%3Cr&p}oAbKuyNgAssi$~tnF({TFy=p!CeEGFc zyZJnNo!9>%=3a57pt#~0%ZrO|u3Xscp}67YP}craj+nbc{yh)Sc-swgmh^8!WILSU zb`$<=BW&95-y5R-#f$&H9sc8c9{87A(uIDP8C~&t9&Tqn>%li6bb)J< z=MeF>@?U?SU7n-Y>UZO?wZEFZsLjgYTfwRgw_b0RjKy6~ePxaISemz*G(35xc_3fU zb*s$&kB2hfrfrt1XxGwnJ{QLN=YAp-dw)nd-h`{}iH{7OY1V1uQ zdLDLxQ)1|^)UwZ>ua-SZP0RP%azN_L{@NWC!l4n{jp4FPmUQz0#lTYut zb<=}>{qMMU+Nuf^nZXdgU3O32<*H$pZD_zHaa?2%bmokgxUnZ=ePaNr*StRZ(OnPR ztQAfpYHS(%$_HnL?($tSNYck!6wwM5P7`)s>eDJYLzJp4vd%w}%H+!1xh?as-p+OV zH?X~4?GUuHtF`jC&3Q|5A1w1-x26Ba;DI+Bmpa_XA8w=ey^;AS$9A@UW8ZAoWae72 zV`HpcZ(pFFP@Hs;8#8@tVC<}+6c~nqPcH` z7yUevotMU9VFw~%Qx-mvUew$h+L{^TjRohv&b`ZzpGm%|+cg|EBkvCumh}r(^jvcO zGud9o8UOUd9P98ZN!h!E<$B^OmhB6E_0I7hKg>TL std::io::Result<()> { + // Processa dois arquivos diferentes + println!("=== COMPARADOR DE ARQUIVOS DMED ===\n"); + + let arquivo1 = "LfsIssDmed068325.txt"; + let pessoas1 = processar_arquivo(arquivo1)?; + + println!("Arquivo 1: {} registros", pessoas1.len()); + // let pessoas2 = processar_arquivo("arquivo2.txt")?; + // println!("Arquivo 2: {} registros\n", pessoas2.len()); + + // Cria um mapa de CPF -> Pessoa para busca rápida + let mapa1: HashMap<&str, &Pessoa> = pessoas1 + .iter() + .map(|p| (p.cpf.as_str(), p)) + .collect(); + + // Exemplo 1: Buscar CPF específico + println!("=== Busca de CPF ==="); + let cpf_busca = "00276808860"; + if let Some(pessoa) = buscar_por_cpf(&pessoas1, cpf_busca) { + println!("✓ CPF {} encontrado", cpf_busca); + println!(" Nome: {}", pessoa.nome); + println!(" Valor: R$ {:.2}", pessoa.valor); + } + + // Exemplo 2: Comparar valores de mesmos CPFs entre arquivos + println!("\n=== Comparação de valores ==="); + // Simulando segundo arquivo com mesmos CPFs mas valores diferentes + let cpfs_exemplo = ["00276808860", "00633999032", "01133252826"]; + + for cpf in &cpfs_exemplo { + if let Some(p1) = mapa1.get(cpf) { + println!("\nCPF: {}", cpf); + println!(" Arquivo 1: R$ {:.2}", p1.valor); + // if let Some(p2) = mapa2.get(cpf) { + // let diferenca = p2.valor - p1.valor; + // println!(" Arquivo 2: R$ {:.2}", p2.valor); + // println!(" Diferença: R$ {:.2} ({:+.1}%)", + // diferenca, + // (diferenca / p1.valor) * 100.0 + // ); + // } + } + } + + // Exemplo 3: Encontrar divergências + println!("\n=== Análise de divergências ==="); + let total_registros = pessoas1.len(); + let com_valor = pessoas1.iter().filter(|p| p.valor > 0.0).count(); + let sem_valor = total_registros - com_valor; + + println!("Total de registros: {}", total_registros); + println!("Com valor: {}", com_valor); + println!("Sem valor: {}", sem_valor); + + // Exemplo 4: Top 5 maiores valores + println!("\n=== Top 5 maiores valores ==="); + let mut pessoas_sorted = pessoas1.clone(); + pessoas_sorted.sort_by(|a, b| b.valor.partial_cmp(&a.valor).unwrap()); + + for (i, pessoa) in pessoas_sorted.iter().take(5).enumerate() { + println!("{}. {} - R$ {:.2}", + i + 1, + pessoa.nome, + pessoa.valor + ); + } + + Ok(()) +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..99a0e12 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,109 @@ +use serde::{Deserialize, Serialize}; +use std::fs; +use std::io; + +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)] +pub struct Pessoa { + pub cpf: String, + pub nome: String, + pub valor: f64, +} + +impl Pessoa { + /// Cria uma Pessoa a partir de uma linha do arquivo + pub fn from_line(line: &str) -> Option { + let parts: Vec<&str> = line.split('|').collect(); + + // Verifica se a linha começa com RPPSS e tem pelo menos 4 campos + if parts.len() >= 4 && parts[0] == "RPPSS" { + let cpf = parts[1].to_string(); + let nome = parts[2].to_string(); + + // Converte o valor: os 2 últimos dígitos são decimais + let valor_str = parts[3]; + let valor = if !valor_str.is_empty() { + valor_str.parse::().unwrap_or(0.0) / 100.0 + } else { + 0.0 + }; + + return Some(Pessoa { cpf, nome, valor }); + } + + None + } +} + +/// Processa um arquivo DMED e retorna um vetor de pessoas +pub fn processar_arquivo(caminho: &str) -> io::Result> { + let conteudo = fs::read_to_string(caminho)?; + processar_conteudo(&conteudo) +} + +/// Processa o conteúdo de um arquivo DMED (útil para testes ou strings) +pub fn processar_conteudo(conteudo: &str) -> io::Result> { + let linhas: Vec<&str> = conteudo.lines().collect(); + + let mut pessoas = Vec::new(); + + // Pula as 4 primeiras linhas e processa o resto + for linha in linhas.iter().skip(4) { + if let Some(pessoa) = Pessoa::from_line(linha) { + pessoas.push(pessoa); + } + } + + Ok(pessoas) +} + +/// Converte um vetor de pessoas para JSON +pub fn para_json(pessoas: &[Pessoa]) -> Result { + serde_json::to_string_pretty(pessoas) +} + +/// Busca uma pessoa pelo CPF +pub fn buscar_por_cpf<'a>(pessoas: &'a [Pessoa], cpf: &str) -> Option<&'a Pessoa> { + pessoas.iter().find(|p| p.cpf == cpf) +} + +/// Filtra pessoas com valor acima de um mínimo +pub fn filtrar_por_valor_minimo(pessoas: &[Pessoa], valor_minimo: f64) -> Vec<&Pessoa> { + pessoas.iter().filter(|p| p.valor >= valor_minimo).collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_pessoa_from_line() { + let linha = "RPPSS|00276808860|MARCO ANTONIO MACHADO|2200000|"; + let pessoa = Pessoa::from_line(linha).unwrap(); + + assert_eq!(pessoa.cpf, "00276808860"); + assert_eq!(pessoa.nome, "MARCO ANTONIO MACHADO"); + assert_eq!(pessoa.valor, 22000.0); + } + + #[test] + fn test_pessoa_from_line_invalida() { + let linha = "OUTRAS|123|TESTE|100|"; + assert!(Pessoa::from_line(linha).is_none()); + } + + #[test] + fn test_processar_conteudo() { + let conteudo = r#"Dmed|2026|2025|N||| +RESPO|21681939835|Anelisa Pirola Chalegre|17|35316200|205||anelisa@edegarpirolacontabilidade.com.br| +DECPJ|03364887000195|CLINICA DE CIRURGIA PLASTICA DR VIDAL LTDA|1|||01877281867|N||| +PSS| +RPPSS|00276808860|MARCO ANTONIO MACHADO|2200000| +RPPSS|00633999032|ELISANDRA BARBOSA TORRES|600000| +FIMDmed|"#; + + let pessoas = processar_conteudo(conteudo).unwrap(); + assert_eq!(pessoas.len(), 2); + assert_eq!(pessoas[0].cpf, "00276808860"); + assert_eq!(pessoas[1].valor, 6000.0); + } +} diff --git a/src/main.rs b/src/main.rs index 3d8686b..d7a095e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,53 +1,6 @@ -use serde::{Deserialize, Serialize}; +use dmed::{processar_arquivo, para_json, buscar_por_cpf, filtrar_por_valor_minimo}; use std::fs; -use std::io::{self, BufRead}; - -#[derive(Debug, Serialize, Deserialize, Clone)] -struct Pessoa { - cpf: String, - nome: String, - valor: f64, -} - -impl Pessoa { - fn from_line(line: &str) -> Option { - let parts: Vec<&str> = line.split('|').collect(); - - // Verifica se a linha começa com RPPSS e tem pelo menos 4 campos - if parts.len() >= 4 && parts[0] == "RPPSS" { - let cpf = parts[1].to_string(); - let nome = parts[2].to_string(); - - // Converte o valor: os 2 últimos dígitos são decimais - let valor_str = parts[3]; - let valor = if !valor_str.is_empty() { - valor_str.parse::().unwrap_or(0.0) / 100.0 - } else { - 0.0 - }; - - return Some(Pessoa { cpf, nome, valor }); - } - - None - } -} - -fn processar_arquivo(caminho: &str) -> io::Result> { - let conteudo = fs::read_to_string(caminho)?; - let linhas: Vec<&str> = conteudo.lines().collect(); - - let mut pessoas = Vec::new(); - - // Pula as 4 primeiras linhas e processa o resto - for linha in linhas.iter().skip(4) { - if let Some(pessoa) = Pessoa::from_line(linha) { - pessoas.push(pessoa); - } - } - - Ok(pessoas) -} +use std::io; fn main() -> io::Result<()> { let arquivo = "LfsIssDmed068325.txt"; @@ -68,7 +21,7 @@ fn main() -> io::Result<()> { println!("\n=== Convertendo para JSON ==="); // Converte para JSON (formatado) - let json = serde_json::to_string_pretty(&pessoas)?; + let json = para_json(&pessoas).expect("Erro ao converter para JSON"); // Exibe primeiros caracteres do JSON println!("JSON gerado ({} bytes):", json.len()); @@ -80,13 +33,21 @@ fn main() -> io::Result<()> { println!("\n✓ JSON salvo em output.json"); // Exemplo: buscar uma pessoa específica - println!("\n=== Exemplo de busca ==="); - if let Some(pessoa) = pessoas.iter().find(|p| p.cpf == "00276808860") { + println!("\n=== Exemplo de busca por CPF ==="); + if let Some(pessoa) = buscar_por_cpf(&pessoas, "00276808860") { println!("Pessoa encontrada:"); println!(" CPF: {}", pessoa.cpf); println!(" Nome: {}", pessoa.nome); println!(" Valor: R$ {:.2}", pessoa.valor); } + // Exemplo: filtrar por valor mínimo + println!("\n=== Pessoas com valor >= R$ 10.000,00 ==="); + let pessoas_alto_valor = filtrar_por_valor_minimo(&pessoas, 10000.0); + println!("Total: {} pessoas", pessoas_alto_valor.len()); + for pessoa in pessoas_alto_valor.iter().take(3) { + println!(" {} - R$ {:.2}", pessoa.nome, pessoa.valor); + } + Ok(()) }