From 04fae2055148fa876205a1703222aa23fd573b66 Mon Sep 17 00:00:00 2001 From: Dash Date: Sun, 12 Nov 2023 14:47:54 +0800 Subject: [PATCH] doc: readme --- README.md | 78 ++++++++++++++++++++++++++++++++++++---- bin/xlscfg/xlsxcfg.yaml | 2 +- doc/example-sheet.png | Bin 0 -> 30850 bytes 3 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 doc/example-sheet.png diff --git a/README.md b/README.md index 2c3f99b..d6e813f 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,81 @@ -# xlscfg +# xlsxcfg -config data from excel sheets +xlsxcfg load config data from excel sheets. -# Examples +## Installation + +*⚠Currently needs golang sdk* + +Run the following command: + +`go install github.com/dashengyeah/xlsxcfg/bin/xlsxcfg` + +## Config + +Default config file `xlsxcfg.yaml`: + +```yaml +# Protocol Buffer source config +proto: + # proto files need to parse. + files: ["example.proto"] + # proto message import paths. + import_path: ["."] +# xlsx sheet config +sheet: + # rows that is comment, will ignore + # in parsing + comment_rows: [1] + # row contains metadata + meta_row: 2 + # rows contain config data from this + data_row_start: 3 + # sheet name should add this suffix + # to find the proto message. + type_suffix: "Sheet" + # config data rows' list name in the + # sheet proto message. + list_field_name: "List" + # sheet name should add this suffix + # to find the data row proto message. + row_type_suffix: "SheetRow" +# output file config +output: + # output dir + dir: "." + # json + write_json: true + json_indent: " " + # proto bytes + write_bytes: true +``` + +## Examples 1. Basic + +- Protocol Buffer code: + ```protobuf +message PhoneNumber { + int64 Region = 1; + int64 No = 2; + string Ext = 3; +} + message MemberSheetRow { -    int32 ID = 1; -    string Name = 2; -    string Address = 3; + int32 ID = 1; + string Name = 2; + string Address = 3; + PhoneNumber Phone = 4; + repeated string Cities = 5; + repeated PhoneNumber PP = 6; } message MemberSheet { -    repeated MemberSheetRow List = 1; + repeated MemberSheetRow List = 1; } ``` + +- Excel sheet: + +![image](./doc/example-sheet.png) diff --git a/bin/xlscfg/xlsxcfg.yaml b/bin/xlscfg/xlsxcfg.yaml index d145691..fc4124e 100644 --- a/bin/xlscfg/xlsxcfg.yaml +++ b/bin/xlscfg/xlsxcfg.yaml @@ -5,7 +5,7 @@ proto: # proto message import paths. import_path: ["."] -# xls sheet config +# xlsx sheet config sheet: # rows that is comment, will ignore # in parsing diff --git a/doc/example-sheet.png b/doc/example-sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..392e276bfe4d34c57ff1c6ba4f23cbaf42e8cc00 GIT binary patch literal 30850 zcmc$`1yoe+-o}k0f^;bY(w!q9UDDkkJt!ea4c#HqARswXBGO&b3?SXzDc#-uZSe6N z&wHNp#<#w;zP*;qy|y#sjytaVcU}J-s3;&b}Ep!c8+gsjNnu(-&wt}wKLMi>zRgw zBZZR^6;gFd*n}x$F1A(u#CzxBthe{H;H~x7Nh%_+(ULv~y!f{_E?mZZ9rq)H$x-r? zBi^~BvOY9!i2wGG-g=O_Q`NfbYl50_)jMi4>kN7b(*SX(p)Em2MWWV6mSb`T=Vw{z z=fiItdc)MMMyWti5#*@>pQ5s4uiAGcY`x}m8SB=1@2O*+{dgEv-UEX6BCeIFrn z|LHd?({~@VkkvT$mG{AJ;qFaZ=t*KlL*RN=IBDibuLByg(jJ-8sgAeFv}5AY(f#}P zr19|129vIFFVU>Sr?X)1jo_kmuRb+66lrxLNp%Ha$OLU&+z-N{r*UOG|7l|jm zA44OK<}WWWX0I+6ydw`!o^{QYf)hM%I+u4Qjc57YBhsRH6r-Wg7tG!|4%7g|YMeCCGLi}k~^eVJCX?%Kw|;dqcF7f~T~h?8hwj{jnAJ)o*}| z^#sq(H=%lYsAo^+cE3ns5PyN)Y%P<ww z8HgnDyxwj+0TsVUW>vxyQT?nH_my5))ARI^yFY@kd@7AXod|@X&-YtIE?zPZIcl*Cp|t79nG`tkZJGMj~RcogYwrllRM{Eqx&* z=A&{P5}}JDVsw&|9*} zhT7ZJcRXQ2ZD!R2kvTauNMsw$X9dkM3{=gzcv1@iU%!VAgd81Tjbo^D2`0c4Djh0< z&>_^>6kiYRr%X8uNMM=u%ffjVm>J8BS ze;Md7n>2^rLIRjseiC7r!jdlgjp~B#7ptX^3ZSu;3%Vb% zyGhtSx6H*0tG&V04$>o9*AGAjI;*N!rU_mUa2(`Wd1VxCBrSJuL(Jo(dKQ5abg$Vwg}^*1Apw$9>UhC-5{r-Q8#47{Su1&riyaHhR@<(AVOSIHYk z=hs&km4Z)JrmGztcV?!|{=-0Qu*;vZh!1O1zA5HxAX48 zu(wFmgS#UJ50*`Cci?CvT7Y{c;Ca2d+~ESNwOx_#|90>89~AG^R@iU6+Q!f=7zOT9 z_f-+s&J1kQ@ju+G#%FgI1t)gD7U}lu|I^N=k6G-CMJ1gGrA_#qXx)rexULy*^+#kA z?$4QFAL?Ld>j!vWkoRb`=xL{qkcJy+62?2%jwBRKnLPja#xyr7u2BUU6FV!ZICn{l z^WX;?wPx3|$xnTHRX9`y8AKnDHS-p)A`C*=HQx>~cr>>aOmG?CtN3M!`SXWzk1Sf? zwiM80nJN(*c^?O3(o5)wvKP7!ye)ZS%a3hK@>XFo&1915M`Z$qnpy@*pA_qxtMC5P zYTArO50D_D$L0ac7JC&8ZdAFiwmsVMJM~>d{Yt*t5_7D`%0)ny_=-j|=^l>j6jYt~ zJXcqVbPXPqcbudcI6a~)da|U(VN#d2D~9wyXiXueEcBuCgfKg5X;i@}(1Tr)HheuD$G4q<_v^m&shlX6QCQTybNkg;4{kRJ5O{VI zCW%Bwd3aFf%PQ5sPGtM+Athn4-%4Gqy{)Vqb!4LTA>O64*3+Mia$m=EWYf0!@6izr z$LT50hrWFZO+%!1#&a^0aN|FNe-uhD934S#cm-yZmJrJ^t9hP){65XOomw*mc+45+ z6bWUYO3PFPkX1?3DZCQz33>DNkXF|Tx2LGCA%nNNE( zEMH8hys+SG;2_E4&_0ACKCT*8YVdq*jYN4!<4*Oei6~$c$76k_!@*~Za~!V->~?|8 ze|feJY%BhHwO7aeZ>F&3!0O*>Y0IgLhIyC8TxW(@mS zwcv|!ZM#WhCps+Lkdren;4Rs;UP8j!7)=aKyG* z1N%^$OE{){#76$BoK)qX+~>W40+I2Eny<8>m|&ZoxAS=OE+SL~@?9a6-tWgr(J&dX z(>|syW-$lQ1!W;m@$?&~4-bz}GH^399izac3)i(aTbm{aN0Ku0&9&93C=mqrNTN*? z!SEflxWNf#u1mQsTTtxaD3sJkZ>`}LfrP8P?l<7WE6&Mf~<@XtUa^~$*ASUd zEqD3Qo99+a#2eVPABHQzWThg^RZq6x1Q%d~ULuL%HmmtsO$ZN)@y&Og!xW#{GL~mV zTysSUf~hXe=z{haTaLP6{4!VLKCOfy;wfauBi+fc!_l4tlIWhVXGm(ORApLLXc>Ca z>Z$ynco-wvUh&sI)PK^XlN;yEh?Wdx1uI}H+cFY&(jl3aCfiB7wf2---BW8 zDs=vWx@>F;%j&cV)f#Q95<- zma{Ea$sYd4t>jiNl&gVB9a*JRa4w)kO9a%aR z&ocR3>`=VPO7Pr`Yz?U}j~Y_YKoTRgEVQk6S)&e0kodE}DKyUgsOL;UOrOAxek$wpX{$o1v1R#}Qg-I`mt z2rqft&=`)R^Uw10HdP3vhY@pGQp$MO2kbhFS|~lTG2b_OwN(u7-ghRtpKQ4?a!ltD ztevu7Zzi@ zua|b2!^SxH;e=@gP>P{1&tf+7%v&csR8GnL?L})s=q4D3zq;eckbraW5WTv6Ty@(C z9#o%lrBjE!;_Z@f#`n?tz?)8uuDCszxMt0~5+mBHxAq|Z)CpY4*Ag_XU0zt3-Go9L zW}G8jF&dq2!MLPvDJ2(v=IV=iE+TBY_&ILsOSX7bAAQ~RF6Se>bCF@>I?#$BeWZ{h zZuTXv3H#=n1KF;j!fg@;H9K0W6E&X7}drtix3#GmFAKL&tP?S$7V(igwVZ4;CA96W}DPnBYcmxN>T>7pqjh7Gu?!5^4A=Cjc z#O23}caZ*PJ$W(yxBWGq7rLXB=H?`x*i4BA2+Z4ZT-byMML@1rO} z-dVN8O}*}v&t6tMy82oevhg{tO9j1LUlf;6iHI{g38I{JN^Owg=bz}~^I=cLYe0FS zmH`3bf;=><9oGCVqq@QGG1!wYLyU#&))P9RBE?6|(HGK3= zZpHc=zCy0OAFK$GvT7;jf>??=ZoOe6=glXWT+N@*@2+|gYMofbSk`Z~eBL4CefYR> zh+zI1FxA@X*iWf?)CQ)_$1}En6~$Yr3U8D+&3d_(X*(Mo!BqZgX}?wQnq}C&EPvf^ zt13TFrl_USxKxW}5S4ufmowI|iweCibx(C3%DBJ(fRaU(a;@yfGpk^B?!(m&_1B^6 zN0J4L4S|GIG?|>Wnj!+uo0XeI8kBQ)v6s_gWU3o?`X-ga1nd zEY;S<=ElZCrZ3AnJxrw{s4s!Bf(}VzQw(g&5?yujAk|LQ%tH!A&g`;{|KvVoE1&?? zQ?)#hN;#z!6}ES@rq`tQnruDqVb9XDwJ_^pq^qT3y_BNoy%oZq_(Uhca_w4^blYMb zO=w|yCp&V`j$Y1WRkuj0r$bDgVXRMuz(BCMYNhEGzX}UBILbuzcK_0-^(Q)DsDc%yjB9rO}p%-I3BhW<}%W zD)8nD*^<$iAzTXQFJ*n}E)cm6{4hTC2mOgyKwHRp*`aCNKlo&v`Q=E>D4}yCJh1(S&lwuxTp^#-k3O&yd9YxG+vmWNFXLZ}YEAxuCXY3qejjZ9ngWg0f08 zvazJ;Xd^Xk*}JXo2_tD{@}fL8GTn-{RCwMjhbpKSGjn?WK$-N=fBid=&(~)vgn6p) zqx0;Q^2IS`>MC=@Nyj-+rl3@9Te~-jr<;|{r*F6+Ruc_33CtR3Tux^cK5YTp$+r^*52_32QW5i< z#i;GQHV>5wf2L6B8aOgspmTwfR|DkMGQn0K(l~1cyi{p%v?VC|U10$fLukDS<)csH z&>K!;%7^yG1iFp|Nw6eLOhD!PqR&)t5CazE`;^blSe4JHWu9jOcWCgeAx!SAbT_o+vb!tU8KV!!pqw&{yRpvQ&pCB$pf-VoW8?VG_B`m=k0N&x1Fp5ETx zq^slZK^nDu!qcxaLxx5C5Om|RSr{R`Ll&!MRlXU9fA>+QTdl4Z{ARnS7txHKpScdH`C5>Qe;bvcB}$dFMzVYm+M}u=coN z+xvjD=E5E`gMHYp{`1YSHnRy$z1Ql>M0RL|NXbl;Q6}0c^2*7>@z6y~;na`mDvPE@Z>n z!up9^$6^wfg!C&mwO3He;RgK9A}+!-cQ%&NkeqOqzvh^Qbma+^^&!3h1aUS{4^}+( zTHTo05bk&#d@CH)g#1wPig7P=tWL0Y;JZ2rj-_<@R!7{}d7=Fp-yt(1{lJ)6_B0c;pLch~o*YP-M zd83thRr=cYimb&H*fx^|J^a)IKWUZ0Wg2PnGuKOuOM-$P@d%Cb!hLBOUxHIVikS^Y z>)GL@gOZY!&XAM6z37;R$5I=?V>}jHQdLCok#6B_Y*g%8y!%@_2X2QAHbOO)K~GCRxzbKvQ($|}hGxIm)dlSkcjEya!OeoyCqhUSB)7)7Us))$S+DC1~RT3t>SVmYs82Il2>kvfEPb5iKnbHE5H13 zAERJq05hDK{#jOBT>Ca4#^usq*|!cEez9>np;jfdq!*k`Ro(-}u_G{HCD{)HKfMxQSwJ(eI%qx;=!)xErdyv$< zd^5`_xePQDI7QatQr{vCkBK{~(TrmW&$zNoiYdLt6+Xt&uI(U5i^DGRqYP(M*%9b^TY`z7#@h*V$`5eEKEgLT3WUabrm|h( z>TSAp9`2_LTA3V-oerLj?pXb}{>kuM;>bmHbv3ub&WA%kyU1Q@fWh|IshG^%-By_? z4MEu>=u2gH&F}yAx00I9W>w8(O3k1b-rA>UOsI)UpkmgCaS3|9Sz38WhvPVox2xAg zy|ucSfO*cQ8yDK(^@zCTqnIL5BpwFF!aJw9TYwPyL63H7L)xQWUvNJzIBN(-Lzh9|-vIHzR zYsm`-VnkKp$S66e%q%i0exGp^aHAf0PngLI*0>ryFC9~TvP3f?*A8`Qe(}!TiYv1 zdNiN(CJt7Xn*Ox?;Jfdu(T|nM(@XX(6upmy?2Ma+nvUr|+58EoW)|O%f&ng7z^k!Z zNkkiZJKQM+23}zrWrph9eb^B6Bt(W^Rxh&>9 zw7FfIXs6bhNgXWR!jdA!41&Mt2m>`w&Med)sJax!J`})9^M$R6kZ&LRU zj8gaIVqPl(lXUulFG+lt9fbHbPQH{!s7PYBeZIQrspQ(J%npJtf1(5BP~ncW7`|>C3(2 z08}y$b?J&G>W9>Qy0H#`h00P8&Fv%clx|iJ+}b0~SJ?bhDKzsRjja1v(UaZX6d|U? zV_!J^*(P^p&>mN-#xm-Tmijj?y9{+6+5VhbWXDs%-9u^e^4(pkboHwJ;K?Rwyk_Bf z{?V#_-R|Z8q`3BS0%j+IbxyBaL?p{{27gc7P{^>3f?yq|F2d-h86 zy)gep{&&g?@{7bT<0i9-&&Z$qw_cf87o+~E_)y6>d+ z#g2LT4NM8QcGk|qyC&vb0BQG_i0?DX?9r@4isL+Q;%@TX3+d4P;#ZuHuHImVsqyUD zm-a02>3mIe5=!VE2$R$_blxmHiqX0~8D$t1biC!KsKY{5lvW-m0XjIaIwPjYu^SstzbG>o1@) zPNT66^NlSX)-C(DlYaDMlyicX4gv=mtY~Txl?+nGL$5fQ_f8YNx2woL~1$3+_zONkWecVwlVM{ zA0kf8@p`*IHoEiP@c9FSI#y*))IH6UV)p2Sjvme|U@>d0(k|gTt-Ve&_(Se><_mTU zk8hL_b*(q`1$*n}lynYM43QsI)4bG8j7x5p=7Y64oh$7g0UPN@VgXC|PqWM;7K1-Y zMi3l7nzOH3?B$m-wOdivR`(91lQM$DJUu`*r>J3bGcb;ULSBDiz|I;6OZWnUtCa*0 zTogrUYUDdVq{W8`4;+Kc84>nX%CqFv*0T8|^Hfy5&HR*SWn{mRnJ03{ePmbH;l$dj zJlW5Y(@&dUijP{Sj{OKFc=w^`VRR*H>aiGy`+WhIH?-WET^lY zFGNN+j%q0kN-=7O|1CZ8o}1wAXV&3P$?tY>AN{vG<73BTHP~-Vi`c4J!FONaRxSk1 ze~x3k@K@;65`er^G5ge3oEy>&57PzQs{q_c6VN`nF(W5|nq&C=3S>rMSlSPKGrl#+ z;b+;kB)F~5%vejaY2v@QLsW~fhOK`$aEI*Cc`3Ia`qO%pM6^`wJJrgHsUTon*0~M0t@^F#0Uk~nEMYCT*I^2o4Ao52QOEwS7cqf;m9;|YDNg9 zAeNrCb~8kdEk~9yla<BwXK}B~7QPz@KN3D;w2be*u;%ef^r&nn+#-1Cv#hYtdZGgZ6_@8%8)Y zx|KH*3|(emxXtrdh_@WiCd-LhMpkZC^vpd*!FNK~g`Rv!zM!Fjdx{%IqW8|2i%x!h z`aEIAF0aMDd|&L6BDc|C6D^UipVwuIlj@yH!|tKfC5P5tCAl@W3L#hK_m307B+SfN z;#2SDz(23H7${cXq7jXvUmbP_SU#{^itB&F%I7C9Cu^-Vo%SHoQa0%g668 zyOmTace2nYDwF^T@Aa+gC&|6R=rTb*iO?2z;z9wjc|DHDQJ%}I!B_N`uBtpodVH&^ zyvL$)OG9q-3z%*cR%|Rw<$W8W+21$yU1Wz%bga#7eKd zlUVB20Ti1j6bV_onJNIOG}K#MEIH%bj{`Uv0&(58Kr zecL_!q7ea!%rJSIQ8g;7RK1G-2QDYerJJV9!iFvA**6{{>|{aJjIG!AQVdK}qD_Bl z)llQr4cly)(mSxh*oft*u2@oB_W#gVc~tR}HBU*?pCjmlQMFnqH$}DM1%`BFhslns z39ReGK2#k6jTQ&5@@lD_Smr0_5#B9TLQ$>z3tqvTclRX#|Cyr%A!tA9R%DHRm2l3L zsnA=jgfo<&{4W}-Dg7TBt5P}cx5hF*owqmkq5NsgQqH5rV282AG#^VF*C31m1B5f6(Th}kuLta* zkcI6+w)oKQ?%n#r;}kvX+4;u(qwc z+y8{bVNRxAg^+0ua{%YC}1BpfiMxD#DyN~ z1g44gu{u-qUbQ6m!`mj*W2CukE4PV=`(@Sa81N}a7n)i+L@gLb@B)Z3y#HDU^ zI@MqKl`w_W$Zo+e9{w|0t~TO)$75de)(>o1N^89Q>({^!#DGYJjJCw0Fe;C}N)VcS zS927$I9*aQz(#EB@@UU|KOppLzI;gXy4F4em>H zIKCk6IqDz?NQDZAp-9l^e=1L9idF;CC?X{b@foC=+)=9walN^Q?%mX?FN9z08`OHGTg;j{fni;gqVh>$lIm{c^K$ z8n0iJ^pbK=4R{ufBE|CxvPz_0yQ}li_B#~E@sI8ji3$9|V%t)cbpe31TKln#TNeI? ztyuOV*!;Nl(;s|Hx$r`g4@)5sQvR4jUYI(bQHt6bM_?kBiHY zBdRv^yuZkX92LoyJ)}Lp!dePehh%o~>GYa>k72L-6Zw`4NP7v8XFIp+{l+c(GB=NO zn3ji~?&wv8TiR09D1L4C6XA$#!gmaBB0$3AN+cl`_S9MZi82<6<)iq_B25hSC-*4I z?{!jwX6yOXDF?hF;(=5xj{*4QPVggca@WNEqn67=azY8O%B;~8dfjNmEc+l+tL{{Y zv=M1PW|_S9WB|K*=vw7T3olC8Pm2yIxi(HQ-^KVlaklp`+P)?N;?(PVEBIUK|7R{OZQqoV6@@s>z566pe>3+o|rMDsgEZ>ox;W zj8GKA{}zhXyxzM~gLkCb=Gb10dkN!#bEd1Dt74u$n)Tv@%uLmJ3ZAsi*SMZ+Z%
(i1+HfWH-9 zFNxsvenrQ~@BMc>l!TMS@#^HVOb(bTEqCcNQVHpWU@n8o@Ii*YUv8tp!AppG>$A?{ zq@osFS_x;EvD&m4@=u0BxTBbd#<}fiWt*v{=xVbVK|p{jR%@6@CDOTLZkkZdT=dT4 zlL9=xkBRH0PT0bQKH2x9K5HH8($NNkfJw-SX4u&8pET?kKq>q?=$sj5=>0mW#&H=n zfFqWb&7(W?1AmU85a}r90kC{NSnd<7Fc|yT7Mjz-QI%7sfwyAkZD48xv7T6KQK+(Q zDIODVjNM>BM3Y>y+7`QoZ?vk6aSPcCx4n=N=!H@bL%uv^Q?jz(%|=#yYdYqbX4uN~ zD$7uSuvanM)R1R^XDtET;x)&c)Yv6>72y#Cxje`H1;-MG)@5p*FT7cBZn$$9@5Gul z(zroT;Vm7rS#=^189QHIRSs&W6BO&6dOIVd^si3iHp_HPcEeX;3o`y;9Qq5O(d{eS zWLLC>9L@Ki-EAp&1rQrYe_4y~10)RXc-ww`NoxakxagR>m?n%7YoBXKji26c9t144 zGzTQ1Td$Fzuuc8H@fz()A33W0yVn@bigN2TQcxjXN$Fu}ypv(1e-C6&&80^sC;6L`p?yuCtY5q^1V;oY~GF<^1v2#AsH(m7Q+#f& zM7_=WjQLM>m-WEtLvPEsf6}v#LS+hL=fuv+Qfo0jV?!%1yyl?^m0_eb+^F{4%DA@` zaAZD=Ly5jYtfj}&z_bZ&?wc5<%^%p5X( z06G^dQIm?&;t4WLjfz$fxj08K!$!ar|T=5NhO+Z5GdI>#s=r4qghb8Es{@1b^T^WZ^R(4J9lHP9|t z{SDC6(EhVM+0xaWMPK<|u7a8yhHlRR7@$~l6ln`gFue25EmU>q^=Zd6^5$pV7Iq6D zJZ{g!h7O2d3w~G`G0YrenThEEV%A(p2KOschG5gsTK>37EZlz|0xxkr) z6i-n!MnMt2h5&AJ5q<@jRZ*_3)U5C&aYQYkwHfBRE_V zVFy@pV{8kPK-}%%0$xMq^h@mMg+e-cXM|@4t-8 zAdYXgEih*@jmd{0DhGhT1Ki_F6enMcTqDE%(XD{vyUB(WGFt4v23M# zuIqR*H(4J_ADOmMb!;`J6XxRVhMrJYv#cLP?%~B%h*`_$2#)zOG^tF5$jHvrpG&q9|s{b^=w zu%qF9vztxdYF#5 zsl=M&dGF^)YtbeNxN?m$6zIM|3n9h}m2V=2NNESnG@?*-^JLPDemmOFas`wgrQYJ= zBExoFIW>~*eCafy^-en;N2x=_W>+Ox43T)b!SSkmdNuJ>p2jV6LTMigEe((d;$O>a+8<0$5n22H3t5!Q`gM`Z%!hDxf`s>Oz} zNBrHatgOX?siExBZ%Z-iSTrtPUCoB{$ED^G9J_-1yW|c z8AL4@r1Ja`^_L^6AxD+9*^O-g_OkGC^n+}6?eC*?*@}@9WsWMnSqfb4guS1^1K4Ev z$!n^V^^h}OF^>HEw#o$(rB(FG8@R(i>7v@_iE{C?xPKSUtiupBEsh<)Gz z1v`IMwxZsHq(SkM&S=5 z@~{?(#qH5FsSDSGlMKp+BxDldQ|Te&6*AmH8emFqwAZcLsDp>h)Kq%jcx;C?I|H^T zP{VK%_aEvbjJPxKZnfL{h14RgyxWX_m1W$Gob7mBAvIF6=SlCi+CRhorzL_HB?%<& zOVLO%`*oWA5pet5GaoGk8L|vt0QYKzCe#Nxdy|2k*Rmth+^3Z8Oh3fM{=SyJ`+k zI`u(RV>M^?Sil`Ni1%|13WEW=`Fr<(xG(O7Lw1P#0g96_Uk^9FqZc$s7h&AGWnxpp6f_n0QV!N@zKQm|NtgSK)Qw4k~uJ@DNj-WS9 za*gOT!ZeA4om|h|R&0mfWrQ9m2kI5K0h%GXJ2^C~*Fm)3Ksl<|`toE|@s2TRKb1z+Z6U2k|^ zhXveRU#NS=N0Jy8Fvqud;{$GUFW2`msiUOOBTsi# zYbqeDFZMc(DaBi|h)&atw;3i0IE4b?v>a)6x6BiGcmU;dR+|QEE1wW6y-iE;n~?O% zYNkf|LlYie*AIo7#LWj>sgvIO)Q=%YemY-H>_}ks>;`D0Hn$Fxk>&`qUHguykFVTt&dE8sRJzaIN0J7vVBgB{iC@-q{dfl?hV_dWsUX?yj*%Rgr> zq}vBkQ6H>tx|L<>qm0~PIHDuRrUOXrC+j`JVzFATX_Gjz);Nv5&|B-*cCm1H?Gw^f zGLHo!_8;D3k=i~yZ z{_7RHAK7Sz4{*a)_uKWr0Qbpi{OYIzr1@vk`SIRwa{9WCox_??Fom(46E_|Q0oGdR zI$AY=$2Qn#q+cc4NW_lu5Cnqts6rJTIev&74+=e<%}(6R+N~4A{7*SG+VX6at7KC& z7lST~$B1V=aJQB!NY0-p9`I`ecEbnAVrJs;4wyR$bE)is0VDheUeWc{%~4X|4QXr5 zFT`dgI|Ilyb`0karT1E&8Bm0Y^L|9U%kVdgH(n5Mv62TOC=50W+CoQbo_<214OqhY zJ7cxGF!;_`{q}j??)jfNw!xy)SJQ?H{(X9WY$4iiFK!1H*Z{sI>OY)SQ(-lA>aza0 za!yM#h>x8}uXSzX&?UDv;Ei@G0h)^Rd<$>C4xxB7oQ~E_)Yvp-IYuZiTlrQHuDOTb zoZOt=T+ew%>nZxkyS?I5-xY#owd=diJnJ#9bLCXsR5mIGkP0z+{Du+)k_5j)3H0=D z0eYn9j6R^=X_P~R*?1uy8Hj(su@Arc-w8oYl5sW)+Q_tig2Un=7GN#y9rMFlbS!Ia zpGpNF-j<52YP)gq8&&z$I`ZeV2m7(BP882FV}sSWjAdf=9^FP9ZSHgB7Rx5=A)$qJ z;w0O+-4+q-U*B9~WZaPUMw27F|EKz!LHS)D0A$^0*-G00&F2-x_Z&~9W2L!FK8g&S z2(+K;-X;|CR5Nl$7}aWIL49L(xlSLsMlzj#G9z4nHb-zs&YXOv-sG-I$#Q&$Ava+Z zM^PNy(%{NZ&5@UsFkBZME*>oJ0k=L|yFs@13R-$i#WxFrwO1#$-EqZ7VGrQ)4FoWGL%mIQ(;x|Me(yf4L)|sWa_(R&Rz!_%fX-+s8vE5- z!&|`zlaM(Li%;w=tf8VCqoDmu>k-nBMG(^pJA{se6l4cTpVL1aF)?x08%Z8hLOsb3aBC@sC1Ci33?CC{xc-5PL-YRHb z)}pFI?H!(p?$05(_(v}|Yt^j)}EQ@yX@>Ycdza{mAjcScq8qxLBSN`JVo z>+>?XmGf1B0lhHj`MC(KTl^oHwR&|HHIgQA!D`-mN5s<5sQ! zd|U&~nFIkQv$w>wuHWx3s$* zLeKGy=XX@DOvF@}?VfZS)^|N-p!xvNU@Oye%K@p|*-Xoa;#BBrale%y30_;NzX>yT z?6w#%ABC!_B{Hx7{J8sA!^cJD1K_wg+pZ?DahMZ_Zz7THz-F`)9IEyrw{IiHzX}iF zmAU`cy&Xr-der@ZmaG&~*KQ~%4~iAM-V4jh4<>Rk+lWZb;E7}T3j~r}O7hw#K&3Au z#AXitNi0K$Lx}6*?XJ-AHZf}Nk`BJ1dmjmnB*taL{%brA`c0$e=I1SYWPaRh$eT+2 z0_WjlQ%ZnCb|>jpuD%ID-|%obNYlMQ%#VTI^nMVxl~ zqC2bBvr(yXiH{TxS|BOx&YR`3`{^83eRV84NSBPJQtb2cC@1%KAbR*hoMx*P4jiLE@lw$Mg+wsQJ=%T$){Ui^-M!Kb)Fz1YYxx44^#w)&F@g1{v1N;Yu z2+&c7Vd1%A!t}#1wRb1vjbwOwM+|R$QF3?vg9^nAeE$CYM-A1$bwRGF9c9^pg+=>9K z;UKld8TlvW)9`#*L4uQ3FHDSVQiqhL0ffnbcPum_0+s$g@~Mazb>~Z?H3?Y2%Ot4r z9Jic*gaSc1k1%FhAhD=^iA?&>sN5j}u1;Wi;J=H#|2ykzdy_LrhIKAtKY>p98}=PV z^HTu*Wh+`>12SC6yU?#XK*E+y0|N3}OhCIpy#k08EZ#GWu3N#l1>y>uBfq`h4(7x!fWz<+8DvxI=l(oqI1vac!`WfIz?~0m& zTLDef*AX7!;ar^LSj_514?nq_{gvjQ0kn?*vat1%;7y);1nvRV(q#4P4|c zXbz`YdB=PZ)e}9xawGxQmRVv7uL5sC*l*-imajz;Mj|s;WCm)bg<{{f;pb-aE&hGmtih^A&lHXMe4Sca|kYj{d zAH`Dm7sw+v4lRODi9&cca>e#9h6p;ppeNU%8WWVCn)KWj`KGZ=J#_%=XE3lRs7~F+ zQ8`#K2hDv3tXBR7gI*$wtPuH`pTY6s(@&sOZ zA_UG401{^cR{w*H0|7oQAV>f3X*U%H)io_1t^qs`@M#hL3(s43>HLEKA1f2anX}F? zi6B1k?6yV7E9QY`(X`9WU&Z9%{MBN-fRx&+YyB71)utq3R&Wy_VY<5_iZ55^rR5Gs zK&?WZfa~EobyBXu!Vb*)mx|+4`uB>31EcO{yM^mTCO~`+2tKaw#4PCPIYPcMo=3nM zV8{BeHtkW2yY_(N5}|q{nz~S$LU$a5K5{Ff148{S*-c_$PNyK(OVWkzu)@lY{GqeV zM8yQwxs2l)gVt)VogM0rdq78}x*+EqnJgd{*vl}IPo4Gjp3&mwrr5&}1T5C$&e_Q4 zzgZr?(w_wlLyn#{(SNZ#ohW%X-8`UH6wm+Pd|N#)e^tP@wVxkjt*h$nY5vW<=UI0Z3{GVu*BT)CL-M$lz)B94@<;iF` z>->#b+xC}PtNqLUoW!X3Rm)IrDsA+-^-3(j^aoawJxE)nJ!{kLmahOU;qt98&CxY^ z?v}{>MQ~F=6Q@Yfce9%q6A)~$mT>sp&&QT^h?5)UXP29sXEqD&ZaM;jG7e%u)Hy$R zi@=XkjdNh6no`e4^qT;|0)D zv~Q_-KNB`LnId+=ld|y#sIv#OT!?Anx45l1WqipOqIM{`A)k4cjiOr(qx_sI9}z1l_b^6Q*GT!r0WmS0eFnHJM``^8c9kFAKwYF|GQKB;V-B5 zXWP5~f2`WK>c6d8mo=}5qT5Onm=@4asMB_=u%)rl& z?0R-VZ^^T{Row+?fj4UyX3PDZTWbzg&98Y`$pt`Z1cY<)4$3mAxI7u|L<_lR8PDU< z;y1#b0{UyS0=JwUE4VGK1D5qat_Z0LeuITw5?q2b>;M#$s*&GE1TB0Z2E(bpT1I!x-2H{TgQQUAl>X>VgM z6I7LA`@0or_xd;*%dTWBaIs&7W6j0j`X8z+IX`G8c&th_>f$pBK5BS=e7fFmT_$5X zG4RQdI|GV*l>nBXLv3-c>GIiB&GcHpXX|TFNS!+{ zimOafG2Nxt+~0sOW=Vf#>w+VA?y_~_iojblfVW^!&0+QZm96`h@-HO|QR5qKi~omw z-9PFU;7^emU&5AzZaw4{AlMRflK~WSXk{E>IXIfwQ#Hb>|4P?QQk4>LEr4Cwj*Kwk z55RpSpW|jHD~>U{U0ch8Y8`GZ*k5I!+b0qq>&mS-62RLph%7oq*GdAz<`0&K)Sm&S~@1(^`3#xqffn` z_vN3n?KAG(+s?Vqwcqc$zNd0^k@SvF@;282UZ8QO1WG&YsKv6&8p8B3(i5P#%B z8LDyEiE=)d;)S=^I=@++IY682pbpzPpFT~le)^O@ep+%>r(W}gm#Ucp5O6(f#a6b2 z1#~bB`p%xs`6-UZpDsHHz|mMn{E}%rG)g?#MDefCb3LLHwr?dh)LS;8a$zES{h_?5 z1|RxIQZ)K3DJno~&Q_0i4>?j*_qSf`2=z7wS4QNH7sCc+T1^D}tp8f1?qbcD@iJs@ zMS=nCv0D=r7#+1at>V3UQ%cvehPi2YIHl*-G-hkPys9O%XAORZ1_Y{vb{k=H%}@hv z*8(h6fPK)AfM@o%v?%37A}lk`24C7*^X;4rzkYlM&2H_g$*8(9L)gTT?s4cB{FM3> zVD8v0KTTqq@^Vr7)UZ>@9glF|wfZug{)?}n4Ntl_PyJ_kjg1uL>?xw70wYc<+A0x$ zE5@a1&+`yCz$|b2b2s=WA7l{5-45W1Siejo?)CXaq?q|f)2w&E+V;F{l8a)c|IL0F zI<6BIi_^0%#wA~8tkC?sHVX!{S;oavd^5B-8*&K+3^JyYfoCyN-~4fRS9jp=1SP#S zhCq$B6}0gby_h`r(ItETyN{0Toce6V6`DoKIqTg&tO68$Y=Y(jlTy)(H{18))63!;o*O)f>wnhUx@&*0w*_&P?>GOfw-u}WthcT4de&e6ZV~A&(n`^$ z?+YpIKbWCk`?$nF4wb!sm_m7SGs2ErFw&~y-<26q4*pxE?KRVKbNmVrz*zh&GQ#cV zmd>w3qa9)C5egB==q#>oHuAWEefqj+Ge$7N^h+4kAEL|wq`QBfb6__tPLSVLicxFM)U66L-$u%_HQ0Kyc7+a`oFm7&Q529S-V8KmSndlbg0~^;lzq* zT321MrXY?(Z|xrU*JzcR9R}>(x5zIF0Zuzbb%>@}dWInSunr=G6}Swo$-MAQG2W&fZ4DIzjUvRsM-(<7fX|8Lbbl;Hcd$s>@%#M@%Mo0U=( z5TE-t69XaniLN7giKbmquA`3Z_ygGnAo*VnO4>Gf&hQ%bebw$d@~=%)cqez@RgV|H z?U$}pq8|6>2!D(UBgtFt)jB10+MMe+KHRnQc+&ZI^v8L4;#bXV?PtvlqknH}u@7Ko z+WA8-6t?e`+*={C_c-SDv@hCz=ki8a0RE7A z;lLf>2dYIIbdYp_aQS<@6>tLk!63^!w%1|}n0`l0 zxa{7}e#XqY-&xiCPf&-&p)y?L8FrQ<;39%>s?L7gu&CU_Zdt^6{DLPl>b2)iXVb$C zX$ipwBHjs>s>(&2`$#^HZRb9JB0?uycAayhskkw<1QGtgAhl$EdrVS`Pr-JFdhwmq zpHb4k*UC1i^%RmzJ|<>k!P?H8axAorw)$00Z%%4cj-1Zc#f1jI6F_H`U>QRN zcfGN2H##A#RlM4hnm9`uF8Epvw02Dt4RK5ybK8HpH9yn^7sv5{mzS3x>`z5mCyDY$ zSl}LC21+2VRecvf;r@HhH1FR<+byBP&>`aghIC8`=Yv_}}2ldmEoZ zjMjLxKeR5dAyP4lq97I3RPXB zwx)V5FZU9ll{KR*gd-M;0!^355ov{Kg`4R>G!xKXV*YM6_;(*$KBj+e_l=+>sxdEl zLhnn~#MK+weKn;X1caUL^Cm#WuUB$qC@v1Cw7T9s5`db{4kc7_p3A3iTxj_u`C8Wy zP?@LPS_OnjpYmKH_l(EU*&%7tE9+{rP}z1hp!s_zrvF(jzs0fk_sdwxew9EeM6}63 zN__i0K6+=0AxY1cEvpOd)CQTHS>p5>^}$w$nC?K?%)ua%0!4`i1ilrkjtK=EWubsM zkugi13V9nqbu4-@{Az#tGgUb@QnKYLU7S+{Qso5d@YJ$>)UhhMouT4+X^?r%6y*uKbzbGD2ZSyr{Z9rV}9OHp{>4iluR_Qq1ShN*cEkJokKH(OY z4$ryYE$O|$y-S9LY#LtLgnhh!<97g)M6|Y3{N#5GBXK=v_Y{2x=LJIoLzbx8nG^uhHNWHdF z*F~+`#WG2e)Qr`4Q4`r;W(Uoj+LC%$xPF2QY^SiI|8aWaT>0V z_jPK~UCzI%uA7+(w&B3aAY{760yH`S;q~Paj}ZW%(T)5MyoXb7Lv^w(lv>C#LW2Zs`g9IzKZD zdCZ!jTN7I@0-mdclEeZcFE&Ias3ZrbLpZholVQ*gO|#|4I}P_;i|V6QUy)2DFu&_X zqdZPo`BPXoj-KZ7^~mX$5p^H3#~t&N3tP8O&=s!ViH>sN&+dKcOeJYN{eN+-Asn*& z4P`knPvgdi=QCgY>SzL*tGR11J$}3n2-SgrOr3E)P>xnb5=&0L0qS@YX{IEZAB0?V z49p)Zx0Iy*)?$o27A=^P=F0o*D{K=YNpY052C!!HA@i`ZEB!eaf9kHWh5wK4+WMnc znfQ~H7B3x0{i;fPqRcMSr01-A_yt2}wA`M4*Eery`K@@P8JSzoKZxU)c4)3U21Y;T zn&{b$N4Nji8--95)S0@rU(eXVu=4C5Y|~!p)C1kdN^Vz;L0cEhSPd_cNC55eU;(uh ztsg_zt34x%rj%y?ptx*v);jdUmlDShQSL}yI(&|}8?E@S(FKdcegjJk>eRWns@JY< zivqF4uDH4m-A{FMn(dZ+vhl`$t%z~rV&hSuB!6pD0qD$S&MXQxr`;Ld+r@uu@tCa@9x6E&E|mDn5bopP;ih0O$<-;7%|G2GJ(^8UcSm&-N%#G=KCa zlTWLwif+E1=Gom#on%U$?EcQhY-l~LHr=QJbCf=4NR7p<{6WFMAYG9=(rq*%Ls1rW z1v^jY(I7Ruqs%ndWq%=aIwk{9FLJ4bAbg-dH_8S(=Qtc$8Y)`B8vJQNC@!7tbxlju zWEq**y#(i>wm`Ai<5K}tr`;Rv#2D_)`1$zF`vF~41C3c&bc_m0pfWb4M7f9x>1PAI zM@K2&1vKS+;{>z1o-$5;$mXK2LM$saXulKq;^;I<;Ra(YRIPV`ZD$rMW{d6mUe(D- zZdg%Y{9bx2VcBY!wo{r*W;z7hxJ)OQWFq_4A0c51A0We`%e$iwxr`TDACi7S|Wn?CG{BLu;QIYXf1 zJ$yVoB4%|QVeyM%P$`rAx{_#nWr5<#~Bv1*S)`rwgxQo zzjdW1Z!m0bjDPwG8D&lmt2R8A80+()4*R(DrY_O}KkUHPYLG2Bb}w+C_fU6p-brZk zFfVw`o=m3lp-M`+NRexTPMRk5(3EeLW3(^m_D1_KMYze~#qZuyg^`m&~F z;=FG%%Eq*(+%mG6scZY}a+&p(Vhvv~&R-HqGtXDcS7gTP4SU34=>+UgOMMJ(&hb}# zJ_dA@?)EfGv)ap62u7@1drvQJ2ebrg6<}u$jj#ssTf~0aU}jWkQ+N9cN#B`8N}{aQ z1$$3mx6T*-4)DBL)3<3SYTpr*73`bdYf@iu=g8cjYf$y-;X)k z`*f{~)~>%V$8vaE^^wM!mILv;>SMrbe?_Vas*>_usW8cG?1S>PD(7xfYiD9rvm;*LL{tZ>ZWBB!ZUaSnpSFB}m+}4I{mSU`taH8O*KJRUN zW^ttV-MQ!&hoSO}8k|}AJJ)7Y_Ej)TZZ)1rB6FdqJT%=s2-;35>strKs*|q1jAJ-oE-&Kq( zMhptKHqEs`?AN7PXZKMYJ;M~w-l}HqnS$@?1xeGVXS?sek87Ytwsod;#JZc1hl4Ua z^52cKAHG4xWY2}fp3YTPmHr>14yqwa>+FgRxy zF?iugPQgQ?Hv~Fq#AIH^OdOO+unZP@$;A1A1xhh;dS;&yv+DQ~nWc=XTX7{aDbvv~ zo%Zz?p@nLa8!c%9lVMsHilkJ+EadSNOd}xUx!a~1&gP_L8QR`>*n$t+d`Qw2Djv&a z2RTyaO<*jt!u{qtN7yEoN(WIymFa=SqoP>J(qxef?)P%?y1pBpz7)sZupd>j zDhB$K;qKFOf$i7Fn=-o{ui!4XyMjdUF~LKP?Y1>7ggv#JE%D5DH2uU${o;%Sb`H?a zVVZ^93mmtilO=)B>&cao7>e>+$|MHu6oWB_7dA`Z-weqJ0gTU_ZOb&4MM|GROE2%n zLBqq&lWY=SeI0Lw{O}dvz^(>U}ByvaSvFWxu9Z!d6lvb?m zwY(wyaLr5&(K2V8H zzdf`moyIMzYf49w#bkTYnfmI$vy$eB+ti<0^tiEfsIC(1e;(IuP$9sq&!|!qXrz8r z(eF0V@WhbE!{URoAH9N#vIj`Y1{LCke(fd=XjhI}Ob&E*ht`soHz|uJhj0(0oP|H{ zil(KWGe=^y`2%882dC0~ysw1fw7dy@=C5BlP0%urC`;nuq`cFJ^;LIp%ShL+h08Uq zkX|Jy%LEP$0iHG$0!rV_paS#!7V6`ek->5n0hGn5E;0WqFGq&u~g4 zma&$1n0F%LcML3#p(8XYMnT9-xg~dwk5|m(EAD{>eE9|AatxCd* zcwY1gSw{|$4(Mj5zz1@kR%*SRzhTETz^pau*NHSw%ubppXCSbv4D#;|DHf$}ab%WQ zoQu~6e{b(xg!%AiMnRI0^dJZP1l9{oU!}ETLcXROfVpGEwnw2wL05N{7*)F%j=~;z zINRIXZ_hT7Iay8(r;8CW-gT{ai3qVlnok`oWLuWc#a)x@S|8{Q2uq@hw|4!u^+1`t zf!ajYKqU8SaXgP4t8`(mlQ`?#xWdImHu+X2!u_(vr+5v|=bo0I#PlwOFw?gs0_P-J+UM0$iGd%2)RXaSii zJ~>P+4kX2!wsG?}$%Y`4*jGyt$lPL(4z*-v)isE7Fq|uqNbTWzb5PsEJT|+utV%;B z*bst;7ql);mQ=Z3;#$)D5NkC=5ytq~qv`sF3(vTVYTY_M_kesThk1CsX;ssd)APu` zO1Ll&diJykMVM*8qeh82J`e$U#3LGdl#0)^ce(^*So8u#%Hs|O7y)(KZCJe8t2?S+ zid$i53502b4;&Gh<nia0If}rom7RqKfrf<{Z0BGFY;taF;nsl`m zLT0EPyybGqj2%DOiKr`XdKbQInSt3DNe^c)W{P)6*WOz4Rt}U7r$A6cVFqbo24RiY zmkXbO5f*81F2QJ2%@{>EIIZaV*B221;0HqkZq%A~y$w>(AxB4(d}@?2AC zN+NeTCA!r;IU4&B9cdB#{Lau=U%N~~GEm&6($ zEH`kPrWb1u%A+Y!LV?;g74L+~OyDm)85$P8hjW;(R0m_fDRvd%&E1;&+~uy!<~e^g z@J>R-Zd``XsP^T7vf>fjI7P2r1>sdi)ATeuO_~7Z4x3~~%I`5NsiuSl>Pm(B8=SjZ z3$%I?>b*ue2{tZOw;5hT)ESH_#yRwW<7;e$BJnOo+Q>}G!*HN5(Ra&;9d!VcyIlEo!Zae<;4qu76s?m2#YeBuPrD<@bD|1BQ4f>Q`B{#fT2)Tf& zDMNGNHGGOTtwti##->RGxTDz^lGQF1Ht)=S;HS_m6{uhmSVWk}(OuZ@K=*V| zJ;n1=Plf-~Q^o|_5a6VNB{E-WX~vETnLJCiamqQXkz@OK)EHa3;x^{YR2Va&}71^-OpT=M26m(c?GK11HJKA zCxiu4JzLPu_H85Qu{6ub$F>Sp*C@MRs!!$ygw_HLc$n&@NZ5{j=`jRaBrji`!J+7D z3xIj&AU5jA#%(oYsic}2bY*8qxCBkQen*VaD#?E-B9(vWfcaUUsaa-^7!% z40UAU(9g-{tFUr$?j2=&y#wCr=oT=r!rQxY>!SR|M^BO|-m!WuLmwv8Ywxmi3Dp2d zr~$R$jHpBFJ8M{_;rGJ~5u;nHUbC~a2!#4jkztwp@xk8S*G$np>EEQ-r47PMg$i{( zAgKpi+*N3ugz+R9Xl9O;*)JY$Xgp{kw0%j5fm zzfI^}<>hx4{RQvN*>0CGhtJS%YxsZPl7P|__#Ic8xyKMxLDKWVq};YM&7qV{omys2 zAWrlIE|Fb7e~!iUyQ=b>sNjURhu!D6qA0RVBBHIx^NV9SMvqVgiA{f8e>5((&F-?r ztX;;_D7Z5NkGuI*3_Vac4)2Tn;C1mPKM7-#K+-CkZ-@8L0n}H#J)6jZ#`L0m)LYF} zp0iBq!Zo{UKT=?6Ak?mWen^wV_qKIqR3ANxXXoNL6N|%E?U@lu_|4AU!8|l-__Lr( zVk&UvNOa$tV}jAjpDO6I4nD9!H1sXp5#y28>*GAolnMPQ?r_J_D(MiLxGEV4Y5LomZztu z^NibUj}Pqg!D~@9oHlno!+bA|VohMrFkl&^`rHI|ngf)z$A|~xh%d0uROdY9ij0an zM!#9l$s&Ch7vw5W;0=0udUsXb?#XrFWhdExUZ_m)9mCm7|FLBbs<`GUc(j>x>NXw3 zIqp24;BhofCi3R=c-P~HU6SkGl&>QSIqNt8jOKLth(a5>v()d^lqoxS<2^)LM^IpU z8z$y~u#RWza0^Ea4?8WUM;WNkIiDKD6FbNl%_>ji47vV--<$ zKq0s5@#UHeD@#f^*0O=meCr^Uo31OnllaNCTVIGWRPge5hy8h6HX z+ld|T=2iSSXyk;y-d-AjKp2Y9Uwzg9p!wDyF(TPB!c7>&F}?ER$B0k`DUoa0K0eX?*Jkj>VdqwR*z! zPLsR*b_SfMFn;rW*cH4n&BK9>DEMK&m6*n1hun!f*ITFDh(eS|%yFU~TcC{WN-F<# zLBHF0sN-5n1(!oeq;rpy@SWqGkeyN7(iN7##%g{G6~FgXk~sWZ^0ai^!45H&*hwOjaz6`Y8vUIQRs^t zJGFM@eYBXr%5D{A=z}xHX>>q8u|MgBBd{6M^~j@WlVzp4i*NG=-k9rZ6`A|qlxNOW z;C-2omWtBQ(D1Q~i?!mCQ=}{;BUIgwz^W7K8Q!ojVuic#t0rBP=BLie=4M+3W4ovI z)qTQB`mQaI8@{1(0{cLppxPYRCu$7&Vp7*THSh8RB6DF9=lfw~ex4|;QFi^X=%ZuDI5fZtyKzdfKo`L)OrFvOi4jOf$Of-Cr$KD`NU5T z+sz07699`&_2Jm+1J@O1_IfOHZ`>Z>QaA3WhZAxyUew@X0t?H#uQ@dy@PmQ;+dcUn z$IBz7)+Fh`knY<9s=~?L0Aiyi2cWmt*i8~)o)qaf1+Tiz^OBH|2%heDRqr)0xu0w% zsXFYREbE*ej7*&DL{%Tn((CNEe)GCYx(R$rPXlTQG3#o9yWGL9z!G$_l_^-YJMJp- zX5#HGYOG@SaN-oc$juJS`aPxv-cykkB+T5*td*M-SoJX8y=BvSdZNRMUhyDR3YFwixags(+RV-0{%&_pmL_w=Jg^oys)xVQW6+=*J~RWkvFYUcLVxE!Cpm literal 0 HcmV?d00001