From 60ab9840d644f806cb010f9e4f385107a6f51ebf Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Wed, 7 Jun 2017 23:36:29 +0200 Subject: [PATCH] workinprogress --- .gitignore | 3 + MDEmbedTest/libcrow.so | Bin 61856 -> 62792 bytes MDEmbedTest/main.c | 1 + MDEmbedTest/test.cs | 1 + src/Crow.Native/LibCrow.cs | 2 + src/Crow.Native/crow_object_t.cs | 1 + src/GraphicObjects/GraphicObject.cs | 3 + src/Interface.cs | 127 +++++++++++++--------------- 8 files changed, 72 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index 6e57eec4..0ac65dfd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ Crow.userprefs Debug packages *.o +*.so *.nupkg /GOLib.suo /tmp @@ -23,3 +24,5 @@ Tests/Tests.userprefs src/GraphicObjects/Panel.cs src/GraphicObjects/VerticalWrappingWidget.cs src/GraphicObjects/HorizontalWrappingWidget.cs +MDEmbedTest/mdembed +*.exe diff --git a/MDEmbedTest/libcrow.so b/MDEmbedTest/libcrow.so index ff874cc49d17c457a6a6ec1da5712cdbab1c7e39..e151c8a1a8b397921b52d30868b4d4be4e301f49 100755 GIT binary patch literal 62792 zcmdqK3w%`7^*?&fOcKt_gd~sv;Uxov5S~d8kXJAv2}~qFN&<$54k4L@Xh>o*;UNl< zfHIC~@Kv-?;-f9~(NeX(tKbW2t);d;TD9d@Uo%B3YE{%C_xs&@pUIhl^!LC2d+-1A z|K9`W?6uZjd+oK?Ui+DS=4>l2oo~~1&AjZ|T#eWXx1{9DK=XX800jBk3@riA3~i*~ zjqiy%1G;X3B$=V6xdnlFB;f8;@tq4K-3%X(6KvW+6`JX6D&2mSZof)rhHf(8GDAb6 z8pZJLR7H&qGZdd0l9yN62mTtu-E#$cMtFsiXNG3FA0Qpe_dj~2C`P7F!)?dCVDU2T zjkurA{@FcQbF;I5xH0?Wmf3NyE}KNwF}Tmg&GI=ILXVU<-Mx6+JQRM%l#{)0UlxWEmMogr za{Ko=r#|zBR}WhB$NYi&k3F{iw!y#F2Ohcf&|hCH`{!@3W@tZh%?~f#cKa3o4BR_y z^VP?`C>~IC)z#f6Z}{_NmBXHT@5U>x`Y!&q2M=w!;`4@z%dWg-?*2Iyxj%p7i?2Vu z;DPHWjlA@&Pv#ZB{&Ct5I}++|n1Ab)DGz=1-~&I~`bgWuvlm=`!@7BYsn2h?bjz+M zc7K*+toi=yeKm)#XL)+N?5MfWu;|!0)MNi>lE6-(k)4e`9`$%O`Z2VFv(cZ0Q=W}J z5V^R|lCKx~^g9cEMKAgs?nR#=ea@cmyS?ahcQ5)+>_yJYz3|WKg}=TR{+Ye#b51Yx zt-X}Dt{40KsF!>_z0mV}p`%*PT3=W6qURgnKU=-m_F^ATFZA?Y%JnWfth33#x)=V+ zUdmP9i~hIvB4<%A{7Jp&&%VZuJN7bqk#l!1_4`yW^ew&UxwRL4YEhAAv)dFX=#Etq z_%C|V^IyHt+4qh*i=5J4^xOzN&(_|5E%+0)91aY)s%4<1hXUeVi?oU0W7a|ruuiQ3Uok}yxvol4IX4%WEtkbzdJ z^vO|n76Uxu-o;HhZdET66u(dLm&NdBtMZ;0BN;a;{sF?D6C?9P%H{QY;fIi~>akdo zwF{M=IWr{T_lo|QDsT5VNjL>Pcy%c`WlB$uPrPnMzA0L|<|%ax+GygtP(?4ayFKu|R;$F#qq4_5SdRXujc`2SwTpPwNaPbvNavs_A!SufuzJFkiH zlWP?JQB_`5&Dw5Ju0dy%_dHdu1FGH+seE^-`Z}QeQ>mqGQ~Yk#UY=9@-z)kWWq-5z z{afkNuIk;V_&-qmWr`o!iR(+1Z_ZeWZ$o-szf*GZl^ivV)~2Fd{m(N0xmVd)OhA!d zCDR^N@{g%grqlzLttbg$+%O zzKW`~4L%un_84#VrYZ`kYN)>)j2CS1E>#i=8>(7ceXUwU{aWPK)LQ3joHS)}&g9mn z$+?0^XgZ-5e}q`mKyV7F&Hi;QzN#AHImD~0>RXy*Y;{Z1MsIafqu;m5@2v)x->0pw zYG`Px)YKkM7K(?$jtKf)=z2pnQT5WR+MAd4d zLQtq`e^p~0yhP%(V{21eOSMU;t#4?E%45B+sROuGn!QmKkfQ4V*2W_P6r4HP^sJz13CK>!OQ&wk%W`drcGNmWo*_R8>=>p)vHdgQ(aR-}r`x@!Z)ykjFjN24d;g&?3m6z17ud4HT;Rdx; z)i8``!rt1Z7B37{b%rOIj4DFuDxAa=akhH4(-$xRY zKAOPM($T?r8+{w$@p8l}DMUeKEPU6CE()DORRb!@Br72tme#Lr*i5Y&HE7lX#VB4T zhE}!pb>8NxmR5`^%={8mH|x9y^KJ4~OU&1}0ew~DdbSAPrh0#MQ;n}jO{T1F@KrUo zHFI1*RvMYaaK@o*y5{u>kN0}lVhj-@GDv823rb7o6?&&ko-$d@o;Yj3L_%EV3__t% z0pn!6$z_IQi-t{%p-t2OKmSJ!u!n|!I}mdH;>O)Jq~5`@{TTBbUX1S$b2y31cv~di z-0w7GwAMXJ0(%#@1z^(GD0;q{-Mz6b|NtzM=f-vl8AcCLN{eG;+TbQ z-SZ1s=qrQ-`8Z*r=UM0{Ep&6vC!#NKi-3A^ZE9YIgLDeVB#6-9jI3 zq3^QL^DXpF3%%Gv-)o_tW1)9j=;q%*7`@*@A7SA?V4=G$^v5mqkrw(v3te^PBKC-d zKH9>6)IvAc@Qi-TLO0jOq#v`;$C99~kcFOQ5)q!T(A832#GbU!FSPJ$YTTj!kGIeb z3w?rxo?@X-w9wNn^l}T`ZK12JL=l^1p=Vq8b1ZbVWhG)~SmkMlG{|j+;nc)-PgD~bb;_NEJ z#{~W|adwg6qXK`9IJ>~`L4iL>oLyh|fWRLj&Mq(9E%5t@v#Set3jA*3?Bc@h0>7O& zyQ*-rz;7hZE-Ji6;MWr8&>t=n_;%v#V#4_XznnO`mT->1TZpsk2)hM-32}BA;S_fuRl)}Z{t$6?q2X?U-$$HXe7IBKcN6EXWw>47w-Y~)c(cH7B+gyp@EU<% zOME8rGJ$U=&Z%iQU*NWJZmqWS^qBE6;Vgw;pu(jh>^Q9#EH7AAP_e8$`T8G0N@=js z2z-}&F!!`4@MXtwJ#-(WmIglcbi8PUUIpygJ?%}nn`d{P8(vfrcp31S!;4gp#>7SwNfrp+zHGmX&KC}-| z;H^~`6|63}sNmw~(O>;I3;osZyshx(C+TC)up@ek4^Pkt?Slg!fAv{*MxhSC$s@>o z*?6XjXRypO?xZL1fv4kS(uM&L_t&wALigvm==8DL`LoDF3r&MzpJgZJfmySFcmj6MVc?(~&Nmq59`qb86j11zZ^=-Y;(_sF@-O!U zzVign554~lS^l;v{5F72i@gFH)1SBEP}JYw6I@_;0?p~3z(xZCVP{X^JkR0zV&? zu+PqeTQ4lmeLwdT)+{x-AUMqJ32t$}RCqaR|FnO+C;0Fq5aS8n^fZFdUKT(2@XeCc zC4w#P&{ZH)V#kYm3C7Bq+1noCm?_;e{Ka>|-=J9F6m(9_Z|5hGpr21FV3ZuWijK3H&?vliasWf6vc)hDvoj zuX}=XvPAdvEc7i27GPk#INasE+w8f|I83oC=ybVA1NxH8k2e)X!wN`%7ez!H#@8d&B-_J(=_wrsRPek>xmP?qCS zFn$jy|Bb$FGL_PIo5YT3LViGEQr~6eaNNLm(hJ;Vz{EcEsHnE`lzijQVI3HYSZzX|$l?T1(ZBOld+kf8fRw#R1;*jYVT?n=Mr5*z;FUa8pVs2pk=?zDi0m+iT!U6zWwJmLu;7$U^HKhFP~1^3}gE zarnpAuZ_A%6ulImHXPv zn+_oKpYu}TX8jqK58i+Jregqtf-BI$_~b{0=pC;;4$)fMp!O}BHGe;_?kdVi4qX9F zk{<;Go2R2+mN{Jv*25j_E_gAg2N3!n5jn*HwB$rCl}Dh1Y{zegA3<-uEf_4!-+3^3 z2M6*%$IW=o?6{ZgI~vg&3t`mBB8)r{VPp*#$$mRnScGA>AkeWF#F-uY$+siRl)@R6 zMGAQ$Qpg(qUd*b9O^3^k++m;$Eui5!p^7XeN`ON2%cke+M5M6k9y(mpP5@^A~G9kw=;#%@qBx*Xh{c>cJTlYj9XMwWx0Ctn<2fJJAh>%{5PpC?Z|D78T42U;Mp zXF$U&PCA;JFL{Dy{&8*ZMdj~_$^R*2EApqqoh|=EDae0VB!99o|DVHHxd)H$IxHLz zL@m4lWj`!xRG<$EQ|urNr@93C${OK%{+T!sg=-xJAnWJ&{+{wA?|2gO+qYDp1`h!0 zX@`=(8>zxyA|g1ia(AK@+)lN|9g%{^s zR*7t2;SERi4I#O@o7`a9Pm~8nhL1+G{cr zPeEAQ!^fWz>w}JC-&4i#Mra`B?Sa2N1OL-PuFp^~C7}q@Yvn(oFW{IW`{UP;{~5GI z`c>%d2)#qlMSBDNd6OQlK^BqunCV}kdm{03tnmdErNJ@380?1ZZ#foyrv{?k)Bb?j zXi0ER2F9?B|2%zK3@6rCip1B`gZHpLU_#a)+`o9kv!TgON}^C^~3a$lR~g)U{}L+$|8U zh4y_+r{4mVUn~mV!wf_39G9fv{VYI1;Bc}2@6bj_Vh^Xki05xg1K7Iw8olg`pBE&L zejG{F(1QHgpO4b_!CT!5_*}13j9qEc@CX&2jVh94rGraXO#wy6$NTC z49}sHZegt5)4p<|l8Q3YittD*4*XXc`Ul$}7%=dcU}*+=3(m0q+*2O5+?3EJ=Fsti zoX!a?d;9|e4h?i`kxD}49(unt$3=PqEy5>tx%QtDfpM;lZ2)Chyz_ z+!OdGyP+DWd%U5x^QFQq@a!#a&A)|e{!Y}z7B?&)+;tMwhX=!brN6#ZtbZ9gjQr@Y z1^NqgSR|yUzQD)tLjMpp`5W?)R-o7fAyy1b*wmnkFytd55L+DVH)xhGo~Le=kPxmA z9W53n3vyTrgfkc(zUDdxxDJb@DIx3rPVmBXGf59CR_hob7G!n&L-*`1J!*(~P)hsd zn>7DeIT?y;J16)M^_u+{5bTGs_^VanAdJXz zc5KVh+CB(iL<}AKknL(qjur&g_6JX}Fv}Cv4(EGd>eDafmug~wH3zdD&F=`JT?=o(K6>acNXMRPyTCsx2)q=klOTGvNwAmP`~D+nZ1YHhKy5dD`Wvwr zK)e4dfY)4T$*|w_K34SH0E4e)2+MLi3?s!qt=nX~$Tf3yM*6n@S_ScD z7x@R|*vav@B=8l-<6JcycYK^Bd(Get-K@djv+R;1gYI}%ao{k<+>jSVL+9U)X#QQ` z00g3M-8lb8oR|=9cuWe%TV^vf4MHD|_D)d|Y&`YL78+MFut_wzxfL z!zrOungy5+v7zPfMYQywGcZ6*3+;ho9Vc~v7o|cek(IfX`TpNAIwH?)*HP^cfzfwf z6>`MzAcl+YL1!jWvzyzLDbGH;nIJ6ib?96Xej2)8h>)|JC4fVJAt5rm$ufru%x>7; z%H_WG2T+8TdOq|vAih)p3kC|Yzx38&zDkK%r=0JI{xi7E2tE8?6pKF?+y|g%e!(%8 z8(5sc1P9H$FwQ?*{IQ_=<&NicPhjGaKq@*&?r6*U=y=WIB{Tezt!?Szp>&z?k z29yY5m+5l93f)Uff**ZimE}h ziRLLwb?O<1FDObF!Xsmf7?it(CYq>g&#`Z*|wy zxA-^bjj0)jsinLqA)=N#!93C3+~#-JH@eN^`0nPWrUscLil6cBtT8ncp`m&Ah(-o0 z^2skOB#zrE10klMp}~zq`7LhoT7$c)#phn@!^;wNZhw=zt#zbQPbP*m&8%5<_3PLBw8@jR@qbZ~AXeb)Znhtf$vAYX ziNmTQEo;D(=hVnBMQ~udXsCTQ->v2!tk?YY^l83tQ-&71A5+jAINd?u?Ff${>_(`; zArBx-M|ccj4nmDx6T)tU?F`Wq9$-Aew-A=08#mCTk0Q)Rn1VsA5@9~VO$a*??j;>l zo&yNW5Wa=*073&z?I1!on;d4L`3$j?Zb#UTrTYPdWuKoueG*|O!W0aV2M}fczpR6X~)dRH-i~{`*1apGwVZ zDu7pT9{~Lh66YnQ?6%EIO25utl;plTt{^F^BYs&@j?JHxRgmN^NJ!UFu9q2c;m%D8UjQ7ws|?{2}nqC839Zd6Ii|QhJf#)+l#1 z_%!&ak9^4PI?BD;j_f<)Y#t#P8Zc76m(RW3eDH51p+{~7^eBTKQgX4Y$W)1Jw9^Yn z$2rh664XVzzXLkk3U#Ku4%=EYJ5g_Z2kao?J&|}AOzA_p91Bh$-h9`KY@+<2SE6m@ zlhC7Qd6K&(qM9f__?p32Nxq))qdq#~HcG=HzXigu%+wo-mZY0GHl)C zNm7J(lYpub9H*!c$f{q^?ZB=_#Pc}ZE<#TO;zT%Aym zG^3->;-q}rkCSE;B;}w%%u8~EQMLohPlWwaut_wOa@0k72I%QA^r@iF0o@JyRpgDS z-wTp*E=ihEk(9q)G&WdOx)$rpk93=mj_p+|NlLliR-BZ++YWWEi}NI9T^$egIudO6 zCS}1@A{vqz%MaX-AiaV8VDT=mFFHMnWv2i0^JwZXLBcC2xG-Kd~xV_-h#X_%s^eF4+H%K=+!0>A?Z^=_h1aL(&_Jf=eiqo(fG5A|l>G>kDvkY2o7eKvn8jQG=nq&4>M z^s_k>^Tss{H-9K)FUGnFBnZ3Io6T3m??C*1#N)7niZ6@Ai}I`Zr7B+a&le=QS4A4M z>_udLe**tokT)tKZ%srV>yPi!hY(NQH1w+Fh$WnevGWAz#iR>8n^6Y~TN_BBjqzW-sq??Dh$tZ;q|z`zvOjpoRyHM}c^m@39D50ypFFCoEAE z@keCP;gaGys4_+sh-(e{E?(wD`IkyR(`M;1T2pLV*#&Mv5seoR=T*E|ue?-pZIDE@ zH3~54?P3zrqvtVYIBbN9%ghgdPZRp*D}Jnw1a9VwW-jm+l`*Db0yp(k;{JaZn7_jm zTd;w{B_&gZ(^WWMh09e~tHKQ`yjq2~s_-W&d{l)msqhUIeyGB)RG4s%%y*y)GgUZU zh4WRoT!pnN+@Qj%Rd}lkf1<)iRrrz$-%#O)D*Q@?2_sbgD$G>jbQR85;c^w$s&In} zuU6r$D*TBGA64N?DttqQAFA*x6(+b<{wmB=;dB+wSK)FM)~axW3a?h-tt$M93LjOW z`Tp60!opeZtRmmqdMpj6PtKj3J1IAJoP^v{a&o8V%*dG{W>d0-$bP{5HH!hgGz<3b zHti|&36kIZ6^g#eh&an7`M()$@|(XRFwE>uV$w+dNthT*`R1=;ycWY}qH_S)w7bqT z`9-%6nolvDa7*A_g~tYup(L1`;4<_dLZ`$cbT1hw{Mig)8;HKk_SOt=+l@Z2fYYuU zUm%s;*5}GT2;%zuK@bzZ6vTMW1LET1`D(n~h`${f+18VzegCL}pAw|5A zVBA7fPxv>`K7@_UfZmGxjQcu{-+~bL`C2?R$LCNo?&}-K;<$?WoFts$7)bgzgwq{$ z$T99)!fraF*lOc*gykaE{{~Xc2dc@C?W8q<>F1-}yY#YB~{*b2M^~(*;uI zycA`Ovk9cq$%=`K)0cx`jq@$$k)ZQ1$~xzErZM!jU}$#!jWLM=@jKU}NO4JeGh#M5 zKV?jReLj$O=Ta6VRj&ZD-C2xhT$;WXaypzBFipDN0%Vu-G9n}OEnw($j%J#1`feb5 zo#Tm&7f81=m&gQx?03!}GEpE0oaYmntWQFk$DL2pV%b8sgU$goN3OmJ`MjXHmQaOT z4gQu=dR!L^=_n-k9RxLpPTlWhaScZ~t#bETkW;h-V+?2s#$CV?S&LM=@6`ZEWmO95 zE|Z$7CD~A<F$g>rIY~-8| zimeSAIIft243mBi+u4n{2SKr227=?A58+IG4+;=b{5~UMRBGZ2efm%8B3^ znBrWy8{wc$nsb%l9JE<;u9hl_^cN8}93uV2gcCIz*Tqh6CDR+uswbFN6G>}@1V8z$v;xyY7nx$qhc#J9cv zgIK5kHSniv>E9!Pp*ycUGaQrfbpDWO^9T8xnl^ek198ruQ2up}wdDUPEB0o`S{TN;pYXko zWu*U%@FR}5sLy>&`+{R7dG06t;-IzbQN{91D&*et}r$FKz_VJ|~!t;5m%8u`>LG48ivVLzoOSyksB*<(Ql84=nI? zPE>k=k%H$iHy)CWElEq_mQI2}YJ#y=NTaF=#!99>9|Y&Gq}4h84DSR%zodN(U|c>K zXnNPnNPkYXe-k3vaCnViFQ8vSFDfOvLW?qdnJ0v*|)64gP_WU!CY zmpSYYa&Co-ndOesf1rD`jID}s0~kTKf5D-8cqgST$j^}cr(}Sfr(umKb6&ul-$hm; z{YS{cjh{Ty^hNZ(IZ!j5Ni*EMPS946(TJTeWH6Du`ygay$?{!XQ4 zAzqidIqaKa3sItt&Qrv_M@-T zbICjbI%&h3S>O?|KaHn%U1TO4ArnFf$~%Gy;TgjlkX9d>ukwQoap_&RFqvo$Lun^{ z*#!0;`cN8y>8^#R=mXsheNH!_AP$iKJoMw!Cdz6f(4@|@jNjAf+jSN}nd>;vP9lqgEnf?MKZPMp) zcohe?^QB2VIL_Po^5hQ?^)~Ll8lg$2kqvL>o0A@at#~_+WOE+HJMn2fy94QXC*H45 z3Lpt@*ThNu>l1I+cx~1o&I7ihTGi6!zo0*tF0pGej_Ni!VYAB>jF{5N6^u=;U~F;) zW0NZwn=V!`Hk)+?W0NZwyIjF=@@{t_NBa(fww@IX=cf=LRxpIk6%41uY6Vjdvbln} zl`LunL)cuw5H?pZgv}KUVRHpT*j&L7Hdio&BP$ppkrfP)$O?u?WCg?H{E-z*HIT>( zhT29}Fhn9Nn2kUpD;Q2SBP*CyKq4y`{^er%|Ie67$T7s43WqR zhDc-uGZjc=1w-8;E0}G_=ZqB$3#nEx1kDu;i)*f6D12 zDh2fhlNz&vA>CZT2w1IP2qzf#KuDj*0jd=YvsWt^0d7Zp`~w1%D;VmO_zbwd#f=rr zr%WJMFr>gUxq`9F6%3i-j$#E97uSw1CFMuxH;ny^=pVaEh1obMOzm2bu^KoO|^Xpr$THhTGDf16fP^5Kld=86s?HYp6on?Rdte z6(jF>Z4m#SmEwF`pN#C&v95SWXIZp#EG#4#=M*c8cLm*Wilv1_614#jI-tp4MWzYH z4rHBR@XuBW#=UqB;9|`gc5&$;7Hf7c)?6u@5ohOO&DBqUT&%hJ_XBk>7i+E&{9T2? zT&%g=1npd`xia?wl#8{*(MJJ`#aiN+R)BJ`mY7LcF4hvq9)@a$HYBbB(XOmiI7k4w72OqRFKc0HpV5Uy{ zJy`9U{dokga*7ygxR$+wP^@iS%cUJyJ+2Fd9W*;vj;_l4$(!O@nFuQm+oZWx3C>}g zHP>pvC(~a|8mzyl=|9s%9X)SUI}Z3JGH6=&EK7#c6h~99=bo@RTb@ zSJQRm=V`g&V&&*+B`jBtF8>d}pRNs;D@WJ$OfFWAt{a$} zTsgWr?}aJk%F(swKEQJ2=(>@TSATcm80tp!gA&4x^q5wt?;^l* z<>=}rELV=My9mpbqw8+Ma^>i{=TYb^SB|b9v+Q!^==ure%ax<+r>t1Ha&+w{ELV=M zpAnWTN7sE!D_4%L`w71|j4Mai1DhaUt{h!I{}^_VD@WHa`hhN2j;;gK0n3%6>z9P( z%F*@Eg@EPC(e?0Fz$ee)%F*=*VT~(CdO(6vh^L(^M^_s`xpH)Eyau_6m7{AjLAi2t zT~3%Q#|shKxpH)ESxb^wIl8vJ4p^)lT~`s5D@WIM!gA&4>UbNlTsgXSuxhz-+>H=j z6U5oCqDSuB3xb_1N7t^eMcgSoN3b?oa<_0B;cIrT99@B7pe7ij@EpPFp&6`9TsgX~ zEf7o#@El3oSQ)r-bOqN6hIM41;Uxnh$YySKt{h$01q9m-WZM^En}sNI%30>b2hWS9D9GxkT8m6Z{H%qs4r6yUu*5OU5`( z18}7b)U<3cjnOL{_H}uZI7a^g*FYJo71R4*SR|O1feu#N2E?|i*kKUiQ?a0Db}0I2 z?A&DDrjT+V8ILL?3n_lslVa?1iq8IY3}((fdAzJ*rXs~}dQxPaRP+<*J!J~o>1kMQ zR0xvHk%+ZS840>jkLaqRU)dt6})q3m?m+M`{D5tQ+YGI50Ec-Yb?qV?$=!2#_ zt_b$ly#gOkJV4vj3fn9KKEAF+)7J^p-3l~g`nj@DG!<9j!lNpqO_kZGn0A3FV~0X+ z2Ev!VP?5$4&2VQJ?o2J?ZWT+bzAokIIrPjc!MM~$dsW)5fS3mrV>cK%VACHqU@88z zqW6K`Jzm8WFQ}LYkYa?2CH)mee;oAl6djT#yrbx}yf*5Wu)SWUn`F-1} zICLkb3C3oQm+Z3zs~U>*8Cph#iZ~}#)5;@}+SpD-Z-~%nkEz<&cU8pBsEAx`?C1$H zi#wwtrf8Y>PLvVCbyjQ+SreN=v^$KuxTxmwBVLDt!1*laNmqqCQIGuRvVCku<2*L+H`KV zWbYKL=J39!LCg5Dig^cFK4^{A^R=AS(O|BSL@RdAxyTK<=1BJBDpg5V+nfKdhpG@10$ziNk)Cy>?7!Y6jGth zw3E0b_M;Vg7c-tJ(k)@SB3N{)NGZ_Y(!goTX?euyh|sgb*{aKt@!Sk8Yo3bd$cZwr z(q~@6wqJZ8OWHbL1{jsf(o}U8Gq*f+SF$>bS)F$Pog;Q&=W}lU2GER`m54-SJ`ag$ zB*RUw&ebNE#Tkl7ZRRrOIXw1z5qj6vNR~&h8!j!ASM3MPwJ-K+XI@Ri^pE`tgx>X? zscCgv=usy| zR}}13$&i7#=8=9EuzBQrQIOAP>x=!6hu+1OHg7zlLf|T-2McTg94=$0at88zD|E$( zx+|)a*RpO=OjA%Gl!DWHxZXE#Hs0~IdeI@&KX2zZdeIx8@pewI7hT}cG~UjC>qUP< z$lLjjqbL)a@OF0EitYl9w{wrZXg>_i+ZpF5dIj=$JNqUUeTtB`^OUQ|+_vufv|eOx zTlc+RFS0`hZ|8e@(Jt`vc82w$f1qA?JMVB5{ShH==T>{sa|n4mciM`sMV`E!`|U+X z5%PBCCl<}XJ_qll`Fhbj$mZSm3B7ndWLM)()(Fk#-z#{#9xFN@rQ+>;!Z|-3Qg|m$ z(sEEqaT@co%Q8dv*}(T9TMUbG6h6ZRLJ?e4;?)etLY8z7a8UKRv#`IFBRu)8kXc zx<&4%$EWFAAWiP4$EWK-AaXxFex$w~0_1*r{5bt)AaXxFe!M{BetP@_fyn*z_=y6M z`|0u46G8FWLN~de9-pi4K|X3fJzkv%itl0}#eRDH9R%fmdi0&=UevX8>pB|qlV6~tAGFZfZdcu9oUhJnQ z+%LfG$TZ;r0dhaR&k*XAcobkF93K1WIs&nu-e)K&Hg0emIs6+&?7<%!H@F?Q%>$R* z;Ep;7#A7~UpS!=<=VmsJy*j@z_J3oayZ`%`P{z$?+KX%}p-I|45VW*c@zm4)g{LiT zH=g#ikI`YqrHuj{pH_uuLYf25K528&l#R3!z>c)($!Pj%%Rq6ZO$Q}0Z9Cw;X>EX$ z(ndl;a@yVK9#YaS0NgLl2mbzPkKmb__5|o@X^((&KpKB=cVOBdK^c^GIXKhP*v$`4 zdj-!SX%FK$H0@Q;hoO??At-(jD#75cs@Pq}QK(HQjM!c8Z-8GG@hjI|EaDZ&P)i$* zr=IqEJZ;*4JTA2#+ymutsRxjJpgb-`P#u?gk6H1!)F6?KGiw5R!~e-$b#(+P)FUl_ z8Ks@MFP@GQQX3GZPDnk56q-E4b0J}zT9PNEm^>XPq#i{$m?xwJ=U|?Y5_~fKMTE^0 zQiLNXq^@FmoRIoE^J2qut`!p02`Snkazg45c+3-0)6ti!6H;HI0huSHXdCl{l*mV& zkRoiJkYa;N*M`V_Zs+w(u1-iXH}izlVhl&-38@Oe<_RfEGEYb`sd++bC3wseQly(F zqzIcQq?k5;usk6}*gPS{!kZ_g2%9IQ$YY+6Vr7^oqzIcQq-w!qo{*ydnJ1(OnQaHbnBd`+E@dPy*GLN<)mLo-;J~5j;UxnhP??)LA$6``n@P5k2pc%C$OA@*sLolG`v9 zen7<@L+o@ByG-n2J)-CzgFY5ZDeP=%8J&3Cr!sid%wXK2Ss>#&3D$8d6=KI=lG&t? zBp|oQtmF3V-y1h0u1HA1I^~F-KI2twKp;n)!)}?LzFaNUWCmrK0Z# z{iG!yeYU6-jl=r51ce*~0++3Y6OY(RZ@Vt`vzU6=n0tZAWykhJz@=-wBFi&o;1$^8DMK;Hd{Wo8Cq%Ig-A0&Y;d)* z8@dlD?Yn{YeGf?HjY>d&Ab(fN2-h`t|1u9Lj^W_=MydsW&-}nbPC=e*1~ag|sFWr5 zSVhJL(_||doKxW;>{axYu^;->yPid|31ahSC5x~J8v?QjD_MkjSny9AVaa^A%4MoH zvCu-kH=@(Haz$=MhT|?($Q&TrBqwz!=I9Xnp;^6)9Kw>tRO2h;E7d5b8hfxWGcj+v zGPL>heT^JWobdmXpFk+&&?+}LxAWFurUE&C>9 zz}qoAG27f(aBQ__Uys`7?Ko=B;TAt{=PNn<>i}=(@3PN99=si65_5VE=Vix37;ndr z#O(7B@^);uWt-a*j{Wu={soD*^NnnCN5%1uBir2laJ;8yFM+1K9itMn&7BZOSkE?h zLL7HEvdtYBN2e|OF7!jZ9eeEA<_?S_&XH~Iz&QFQW}7=Oj#I8|bLS_aR?jwfejMNE zIsEeqZ|CoG_?Hvj&R4TfqY%6uzq4nX`$3L>>p2rJc=LAtCa32RV-B~Uc{>kl&6sJ& zY2pv~@@1)!@Nn*##J;8VAf(_3mUu%-zW!t$EL3knsaH;-&mKk{I#dS=;|z6_FrJ6I zY%iesQ8EvA#TUSv?Kx$FB3?&{=Siiwe%FH%&yz}V{W*RnaGex4q8s401TK`~+yaj0 zS*5tlKZD*!yjT)H+KE_$FP6lQxgTWB;EN^knS|qvkMWEjn?e@NVY~{=VQ}Nk8NfrI z75klFy=ysGUHIA{A}P2AZ6NVuHQ+2kCVj=AtvR_PrRTItGT&6#O^huMs z`IyUWlLz8{(jrcCCNXki><60lu75@pnMgr9nDQc(l5cjT)LM|f<|b=Do-@@mO2A;& z?*!z_OYb7JztC+AMZO1-sS}ixI>b%G4M}>wmN?BqCMk!8qt(;q!NqweJfWwVn}`Wd z>uKgDV#58pwh%QCr=0|s+NYbYe2x`iURNMG`pl|bxt;R2Xh&0rT&07?4MZ_*Z>@wZ zb&fDjo^a&}`ZyOn*}j9Ia!9_Tx0k5eqZ6=nNb{g;7Rs&;x{5Aay{dO3Qke%`37ZF9 z37ZF937ZF937ZF937ZF937ZF92}cgP5{VpiB@#L4N+fd7bq&;u9CYP=P~@O1wT&Ef zB@#L4N{5RabS(uEIp{hLNaUbv1EfU`x?TY!a?o`v*dhmAJAp(Fx)O;TbR`lw=t?AV z(6tIkgRTVS#$4Q;EUtObl|r~NmknBi!8V@A%B0$T0{}>6 zRSN2jCe^wzhgbDTHxIfBSRHgFoM7yOkUmcVR0my|y*lVB!0m{Se?WkIBn+WWiH885 z!i|l&&k?ADuB60m?+<~lbaZG*R{@MWHx=a>ltp|BzyxDB`?^~Y<#6#Oyri1}CKxwD zZ2y^H(9dNKC){}8dRGQ$&X=MMq$WfdCJqAnCnVL+5)us51~G#fBV~Ta5a>(zYEt@MkpGSZ>AL}>55~P6z+wU$ z0bB-PFxiLP1MH{3hVbpf699%5DrqmE7oQGU!^CQA7#2;KdJbJ_iCtxlb=YraYvwhy zMKS#zB6eDta2{otI5jm4XHzzSbGwD}7g3y7Msp7To#OlpWI`oOIFWpyB7O+s+cG)2 z!J(rR`7@BeP*SP9X(%3{AA#~hj>BH2)J6#%c5RL*0p={%C>eZPZ|EL{^aoNT6LKLj z{E(s#2VDru>Jg^rvZ%&rWK~HA7_L8olx|Vo!&%*KQPsm))o$S;!&%L4;U2^39wX;6 z-3TTdRW(J^-GtzEeGxbMr}TvWZl!OrQd{rxqioWrQkhBS5TcYbh^d=^o|CB(@mD;C z&QS<$axU)wV3VN>6)#<*Qu1OFD-2gar&dP3ouj?~{U-Z5ycBlV-VQyGp=f&(K`1xrj$MqCkv*@yVc~N*R!=Po~De zNY(90E*I146yG-@Xa=~Q3XLyGCF(M>L4kF>B$X-pj)a_SMB+6&d(s><>*T3Y1`?e= zn1mEXK)#aDkG|Yr2?HB?svZ_NQJhX4O`Qg0LEbRrFfbK#lZvDHc0(4Ks-=r^#GA2$ zE#-hO4jG`29W3=78ZXK{j1=lWe6oK2U}?OugK5wF^dHU>G3Ufbae}tPW=r2Q58dKuL}>l=TjmYUMQ$0AO<`kP`m#Y(B2zMvW2`9% zGY1zW_U}W6aaJu$Qls?5`|=S@kRf)$BYFaz*po6Q-K5DHtD`YVvST3@O=yGzWk-=< z$+LQ2kHgtb4`HSLZ|!{%AB(4bQ-zOVd6{N9+W@P34vZ76MEIoO9~5ae0!>%WsM^V3 zt2YmcN=*iqFtLgh(V=CGoquSJ!o{#@Q`5+Bx5Wra1gfY z$fz{d(%h{L8$1}GIQERUG_dG_1i4!qHCx{#Ybj!UcCw`$P~(hIBHta z++)X-C_DD+$tT84{VlZx38`j2G;dmziDE|HWrOj3VA&lGnaU0m5{6nWJj_y; z!_5dR3;?S3fQBm789P{Z>1>~odG^R2?V{Qy=6pShM)_6D?9Y@Q;}w}vH4l#+8%2OC zWJM7~Z?1i-V;P_=!Bf}2OX`cK4p<|e-PYQY-B7TJ2|k6K$+x!N-x|ddg`COXx>>O|G*wqMn3-f(SJk&P;crYWO&h({ zO^trvCjaDWD5|ykYifM8lh;vY|K?_2D?qGQp?7@~K&-*Q5dk;1dhtuw4fXidYr$rw zz!IEnjU*$9$PFNj20_de2riL5_CBjNOB`tsFVoCf+g9J;pH$zdmVgeM`I7^7r#^Du zg?SwxP26#lk>k$m$Q$ux>X)gPblje|^Oe+V+jic#=k&r4jqIJC(v?QGW{b1gHygEf z=lgf;Tyc8g2XB73Z^i7q7JJ&AD;8c=YHxUd;cqUv*4}n!-R!zOxwALS&dUQ}cWqzM zns?zsBX40z-lUDC3+rZ~fN}N&zj*HB^9DZh_&9u53D$nPJ`?4(X?6cc)qd03OMKP; zZ&&{MD*rlJjsH*GfRf<24ayJC^a}HRBm3`ddiLzP)`doDn=LE#*Pgi(SK1%i`g!Uz z#@y^G`}bQ7|43uhuZ=W!-kudtt!UfxRNjc+rp?Z?ry8A`_P4$H=38&RIcnpBfc|W+ z`dk8UzFDdO`+&)9cPzYkL7Qjp+&bT?w%K`$j6Hd?7v`<7U;cox<*U?nmyI^+zF26_ z^=HpsQL@n3(Ct}ge^)d7_VhcS-dXyVac=H1xQd=IIib!NV1H;^BqH1X<877e?8y(T z`!(3Ici2<>60+CbX{@rZwT;*D8#&W#__-OTe==d8J*jr1k!|m1xD};NQ7(JqW#da* zPMZBk+YGn8L!WGaY@11XcH8zv`|Lw2_u12rh-9@8G}?GS0bv=anpMU16mD_T`DCxyIARGf#EjT)JaNX{o*G$Yra3WgqbQZ|oZ% zFfKP*jKACO(vA1C@0h&8Sb+@e2l+65!{;tO?3Z7_ASlSc<8y`}J1a#XWB)8-bNL+3 zM?D`ijdRn^_f_v)V0>Mg3WAhmjkFcBvrF>!%v`l_|INmOMyfs8@TazB&tBL%Id5OvhRZs@fga^& zZKXSA&E4^I$Bq$st@gCeG@-#8R4m~wKAZWN!iOl(&4i4$Is~k_XYaCae&3#W!KNLy z%zg`J8>^n)VLWJWxYNdgq7mJ!O&k5cu=Ds2qeawU)cepOzPRuo2M%*Yz$jpjA!=~o za6&M442kp@i0p0P!2Ho>{u$eTj-J}lVSF@jW=FS?edCR9(%R_q->@edbIwZaXlt}P z{3UH8?3ZnSaK(ehNPA+XeUsrP_~Xyez}|3y@$)wq+EZ%nt?pmGxv*il z-T!`_-C?-vj9cqU@>a82?an8SjEYSaE8bkbVfh+CX|7H1C$Q>mw?Fl!J>|(aR~Y*O zSLMyVFmDq7+a?X#iAejKd|btc97Hz3r|KV^bfeF>an{_GEprj0hZvn89qe(!q}oNB zvgHU5-g4-hCwqvJlOh2N9t2fBmM_Qe=xFw&A*k}M`OI7 zl()jSc-Dpu=)LnseDu@-^u5{7*V)FWyYt%WKCszPgm}?_?)YEWfVAwUW`8z6FCr#( z&6n0;E>&A!$IpV`ziB@*Oqwz|M{=(B`KxNG{8j%`i7%=5V_t@jh_wF4R%bS~|7N;Y zzrL!@C!3+EmBiGfKs3;*=H{BF^;PwaG71_1z)a3MS>s1id@Yi}*SG<5%f|ISG5bR! zK6A`A{}y2Ht1tYZ{IkX=UsEjdV8YZ?w@l}p?&iO z7yY5YzO3@W*?Bo1%+8zkg?;qrD`(}bwAVafv|ZR?zhtt_2@!=$mt5#AEm*N+S%tUI zQ&L(~uCWTdvQ(NidhwFQ#ZiQ^CFLa*B}*1--qv+ZE&jD_wVJnNi5FeqrCz_b&Rf+` zU)QKLRJHoOtqo27s2Q}k)#vxNG=U1+U|wu#72XyfB84c3^!gfWw4(af>Z+C>XkO9D zd7G>JeqT$YVA z9$&I)Yw>9fO?6&2K}nTg{qd@={z$FxavRDcCg9R6(6A2kcwdW`pWKNm7hKKT+|$cv8xRr^|7z5MDDzT|^)HKNJXl=)kPxJK6U zhN^}(pQ_H9Ldbv)we=0Y#-=D;%S%=kYeH@#e5d|$pUeqGGAn|0QscX<%?EKpix$kx zs~YPXXlb*0d^J6vc4~z_Ep_#cTEvXiBKswcg|w@zkHU2j;j0lvZt+#s$O31tZ}exg z8=8_`k!& z{?V%FGJ+yA^a}GrM{5?9QP>Kt4T)xeN4k<&pvopM#GwX6(`UaRTdHs&tH6TNQlZln zZ?0F2e_o3>Q==t~XI744MicXj#G+jZ(V}h3qOe{{e^3IG!==$hRKX_7XJgxOkA+3~ z>2fI3B3J~S4lGlXD}yOAI9CQ!WiU+|Z7sgaMMG@xGb3+PZ7sX8MY5Y&TD7q};>UDe zU!!zhT1L1U`#I?x(q|y58Q?Z)?*YA{ZPa%6)p9?R;j#lCTcGR1l9rufu;tn9=##I@usykaxcou!lQJun$3!h z=o4vvrr9tM3ZGFOzlI@&&Dz>%YnoISr>b2g1-1^(i_Vo};uNhEgD{(dx4I33R#QXU zdO3Qkc7(1O?TFenvF8T`Ib4E58__kZOHXq)@7F zR#})M9UO+27cX)%Ur*BiXGiO&(9#N1R?I8s-v|3DuRS{H5v*MysE?qD$ce;1l z^l7q$rUDg9%1j5qbg~s6Fs$xz17#&RadB~RY)NX-*{wrV`I17oEhoWdeW*h9SaQMA zCCiYF#WCuT8M<5a&EAdmHGar3{mN1^(VEU%Qc$i=UraBv>dAtFMAXv zMU9~7b(;DXjx-}FqQXo6IZ`4$#4Ej~Z? z3?eJ~l0rDGCO;`G_Nh=Q*hIt%tpz(1=!#m<6QN7k(4!MRF$~3_LR8k~XNJA-ibkfW zmeHK%VfNnW+bD4iekc`po2nY%BgkB6S0r}%G*e1XZq@iea${RFmPOom!akFq%YS}m znAdA6)U{{@fT zZX#A`KR81ge;AvW$!*he_L=beksQiR@H0iSYpvV%nTT0nT`QNudY*jiix*#v;024B z;LjqY}WXU)Yl3%T4gX2&uvZt>VwLYcqDydGY(yyr`-IzmAZW zo8U=BlB$~6`behBrI4QIZ&iZVBC^WNREd#PWhU4o=nRt{RWgsM5PF*6x`^zHOmKaa zo+?QsIHjOO#l_k;;fo`}&L~T|it1rGL(9jNRs^YW#XsJ+ifff)bd{96T*fg!7ZLD#(@0LDx_xrvLO`y|lcl)BdTXwgl z1*C;wtVtz>f)aeR5s3vsYp9BkgbgTQKvTd35j9{n5>OsSq5MJXIrp63nLBsx2#Gh@ z@BZ#@&N=to$2@js&YcEeuTt^pLa#EpL~q}?L>>UP8C3(EWfa^}f+9xf%`Q$C)4PkD zsKWuL8`S~$o>4VGdc)o&^;1ju>Rn{7L5)+)Rvqw&QC)z(d79P*^M&EtL9h03+OIh^ z2=MzxbpXzx2t!WfC*V@0;vEn3_nNIb;FV@;1)y)MxKsXKZ5%dR?SKo-)-~c__FL5v z;m-tD9*IqI-TyfY1IHc$$GH{c(PLQ2@={G zlhpT&?btIG27jP+j7hrojJF;N~f=uUgWSX5d?fmDG@~JVI8!{(HpKEGC%5o@Q0cS2t#Z> z(oC(!ErRd-Y5?;3_nheZ56~?!@2DE!Hi~ZMB;KRMpTgoq-UI$TCx{Y%#YzPQWWNWr z{^!k)Iw1TRmC(|zVbWgVI8;tFaDbmTstd49sZq&IRbXB}j?-xFu}M`FmzZ_~@G7GU zM_+zNlhb$;sRN>(rsQfs)FFd}Qb(o>nAKP~;Ew23-g9=f*8t@2&~T#R06eDDsAN+D z44-8zMJ4-%{b$Ws9ne=S&apqJ0;-8zs=ck%9MPNx4RESmCe{F_8Px!su2kIh7u4*F zX1*Qpuu(O@zZ%u9$g=&44r)Fs`Ap$Io=}F`V)_a;>A>D@1Ka@Q&)#sNy$!}RivXccy=Zk4{?w7LLqG^!4GP^n6?W&2(f z-ZZ%`z!S7W{)Y&7yE%~p?oz6fY~Q{Yg*!7j@jCmRtRs&j2n`q@f18679d!VCEg4Sn zSyZ%Dhpi)K>l(nLMl}F^^TjcITosld=;qfL?2Shb8E-3MO&7A1p0zgzFf+%%nf`H4F5SEk%k?`-*PCDsaBEHwrH3=Y%qc-d*XnQ$ z)kvFA;xHXf)SZB+Mg&pXnF#{Ik9aTrNDL>x(wt|oLd)hV!U;Dfb3kQahYpc|&*>)W zZNTT1VxNllSaE%@))X6nTaBs#-jK6}(zi1~MV1xK*I|B}X>|d@;PJ^|GWCK@$@w7e zHrYC0R%v0EpRCf;O{)ReW|ZC5LXT4~0?t#Zc$YQn*70VGzZ&4ur;VxsUTPHjLWyjh zm=n(viaY>3*{B-eE~V)7(XkP`6Bdln$D99nklrcygJl3e!xn9S}9q>Hi7c3R^^lO&YBtE6q^hY6_jW+eF#{ zv$_hmZLxX`)~um(PSKshoGfb9idv<0{f|Zz4S$s0S*T53o;4jXYuAdRhbzKvhG*Ah zh5$1|g`S@_Q|x?JbNYV@u*0ZYr^4kK6;_X>XnIVfu$PTAi4vYFBzkhg^MlYNf47{| z7c{?F^9MASt=X?zrI(7sdWnonYg{^Kl7ik>xudww9xZ&c=CrhlOZ;I=PT_^Lu-R`o z0m4DcBo%2_VSyg(``DKX@*hrA=w!KDyV;knP+vb9m@gGZGJ3GeHy`70M{={UY8so>=;$QyO3VoM) zopyVk|9FD$i|6@IB>QZUqijos7F4UYW@VrXt!1`*eicQ_E6FLzJyHJDWM7mYpX`tF z6OyMF#_XS#v@eSBrzfq8WBeJ(f+$Zb5k*oZIWxlY_?}h5M+T83E3rXz{5d6d&Mo1q z1)it(amhQ!!VP?{a1<@6kEj-S#?PK&^4!v^F5LvPc!CM z27D*+O-a`O*e$yqUz{g9)y}@a&RtHvINu&2KGv?sOZY=2{GUqrvVMD=D&i!WrK+i}fepFpKdg(B%~OTljIY za~xmnw^=28m)hCK2UtoUP?-~dZh`H$s{f;fPHru+^Hr4(mk)nH`5kHpXTG0-pCX2D zQTxABK3sPA?~Yd?FMChr_o@AF>b42waID{Gg}UheJHyG-^^6YGRcdFM@+-A}^stp| zRK8XH#~J#|kPrCpDj$9-aK!OmgA~3}!v9Cq@p7>@u54H!_A$;3D)<4r6 zPv==Z{yeMxELA@Ij_KMGJGZHP_zB7TO5`6Up8X7u8@%Wy&qG|c^ZAm~uS@Lk(^!@d zzdQJ5iTtq=p4U8$^-r~gpIO4UJD$#Wlg01HB}=X)zN*;IwwKtsTkV7&lDJ>_L+6W? zS!(R3C3c=yd8`W~+;QeYaUA~!ELA@I z4(L zb;3EsJNb*H(pJ=sICpt9cJ<)!(D3FpYv`5TG+i{ilU_BZH`LRFBCQd*JlsbiECc-% z!Yd!@WH%SIn3;BQ8XtyZ!4^d0&`rq*}QqRx%IT( zHj5%5gV&8Yw70c&KE;~MPN%d?X`y&e3Fo!oZ;7dhh9r3HN^?OME`mB{R-*^-0=9e2 z*?TQHU07d2ktP^OY6=fyonuZl>O3&Y?|o}O=Oa`=BFvBlH9*CWH-jVDFd%f)F|l|O zze>cXN)Q9T(=ELh#`5?b;b5DqO(45Bbx?e@~U7!3n~Ovb&0?sgY#eHQ2B2Lt1tXH5EseYUxV5CpdEF?@f*;6EJ`uZ38=K-~wII@Y1v+{ zakBX~P;4-*7~uxPg-qz)kwq^0Mzc^lnX5GQav`6*-GY3ui)c8mPMlbTn?#M|{qm~~ z_WN|vmb6pPqO)mnlOYZR_sv__mop;M-$iP=GG;3dJV8^k$U^UEEZR;|56rw#hTa{n za7g7SXbyGBH%68}$#Xehu;*aq4!`x@_`9f7clyEb=1x9dbE6SvZYp|_KYkg3G!l-J zrmMGh^U;!4khvj#>Xo$%d`GoIWjUEhV|6|w^fGA~+SW%aHBdf0DET^|{(<4%7Fubt zg#*`nE??h6Uwop{x^4;?Zt2<9Pnwd`5&>=tg^LYwoR42fY1?4$#%@+nv}xmT(&A#I zS_sltq^QWtNhU3PAw@z1?!4C0yG}2i*7cAPltfjAT{M6yLa0CN5JT(vU)L41jT zUq9|gAm5A|K&pWHq5qXYAJ4~->-2-T8!Iai*rWQG4|tA-{32{nCGXyTYfwL)FFw7HHc;9rnf*c^`Af9L z_aDz8+ZTz-+rjuj5BXmLeLVMRT`c;LlTva1zeXEa2JOdvx&nkYhXjOT^mSxbdXMLs@w)rW?I%#V#qFHqIjnhWh80 z)IWTW=zWn-PF@Q2FID}p|K7h(l-8W;DHDV~@+(w7FO?+ePlUNMc=QZC$hVc~zw?|( zv<3=6(cSaH+<{Hb|HTh9DdF8iDP{iqW!=Rn|GoGB{QvL3 zIeV?O*Is+=wbvf+J~ywmR85ldm3P6x+Ofq8dOf`lH-srBV zGoV{%N|Fu@!zT#LBL?>!D*ld{lCHxiqXe6=SA{yAL#5lJ((O^{bm$`kE*-igYETUC z?acTrVX7pfO!6WxuaXZ#m4uJx2=t6Fq~z&Pr@I*GSib+!D?u?beG+ab?pbpe7@e{qX0-EBdX!=AWO(#SDGse6ptDCcyH!8A6YQDAPB0)C?4U)3}XBUW=K$2{F71 zjFwoR(Q5dNU9rRG7iRdj=OZK27c;7tZ)c*h#YiL<<&7tRYXa_xxF-|AHAMyy&uPH& z6r})RA#PTSA9oS%i*WNQ#yto3JlrL?FUCC|cNy-*xR>I-6!&Ggd0mdX9QT4>|i;PpSga>HHMeAf2hgtc3a zepT3~{JJeWPu}#Gs}>J><{vj-bKQ5*cRsRj%{5=vmR)u2ZPRy6E6aZLt*^fM{G#1A zjvaR8kxyq7{`sFtKW>ewxoPI@*CsrE;*s6ISU>CPn^w$tyC%2x%5__x+V(}9YuOLq z+*^6zMwaD2T~5^8lY=5TqEL^$BS`}5L?b&J{Tn#S+31g;9h{B+Fr4yi^uEZ&cb0qu z(5Kf~=!NId=U4Env&oO?ad!Hv=g_DA9Qr4pL(Y%S!9U_0{1eZ?pLPy?Jm;WaagOqq zp2I#X&XI4QbI^O9gN|xBYkjRahn{bN|7`U#{~Y!ie-3)oIm-3WIsCBk9Q z=)dtCaweaH|J!rW+1L1RcfbC14*55pqkeyW4tn)D_&^yL z!<5~Yu|jdZE(2qz%GamLrPMN3D*90+XT9Qo5n*p5*4Q~*5@sm+VWrP9rO4fiK1u1b zUD-zr@Q8a4H{~o-^>Uu#zgY3_>Bj%P(x*g~ceUa-g+Iqy^F+$!^^EXC$XE4PD9J{u zvVY43lJEyb|BaGwjFN;?(1X`jC1<UR5vs75!CJkH@?D{~d}yAyqP-Qv7*}-k{{@dihA%d2csA zxn9drc2jB@Yel*Gol)K>RW30}L!SFoz6+E;B#e-RVTxX?_**h1;YCINt)lN$_Tik4 z*W-%5N6{fxTrVp5+m-wc(3{uqwEoIZrc1Kn6Mk~$JZHPIXNj_>N@lbw`MFAdp^{?+ z0@W+)>jF)o^2SggU<9ga>S~NYQQ4e8Ww0?=UDFf_HkQrFudS~OmX$BB4a&H)#{??Y zlv6-?ZOzqSyl7QmzLJn%Ti(TVw!@XKx2Jf1;gEoRr*U(sB5o~G- zRMgfqG}P2p8%?3g`sR>PwYsqeYKh$ImtPUAfOusY!E4vFF^JqF)zM;W%hy60<=Q1x z)(2$7*%MVZmap!fq@lc~PUWH0A(v6r&4xD?;UU)u?ib(V`Mp1jZ~-_VZDj6!{>AqD^RPUszm14P#%K!)xp-XqO@MsHArm{ZON%( zXl;Yipt`ZXxgijtlq5-W1u9mcc)?0p1Q}DYqNcV|ne%M%!c4;WlE1m368;vbD6d!% zS?sfAp~`s9G!Z_gn59DHm6ZlOyUVE~VjF`i>sLi)Z+TZ^&{o&7DF|Wp&2_5aN|cr2 z>`qn<%fhRJb@bedNZ+x=t%>jlTf|!BL^UhRtAhb}NmY3T>?WFPpsKzx06UhS;b@vs zMW~_(AJQVu<_5NWSJzaAR-8+z6~UV76)20{DVyu)TsGggxfi-dSV7jcNTWSiAeJT( z`c>67H$eeOD`zzcFw|IH*Hp{CO6T4bs@F|N`j+SjWY4A>tBhz0mN!@Lv*HFc$t>P!FBcH}@2sH|TJPU>R_9325Vvp`*NH5!B*or>~N zP#Fu?4xk4^pHW_miqd2yghSBE<+W?6RhsFyFt6Rwy5nNLfs;I9FcB#pf6}7?gy5)<&!UWtt+|2`Ou)XFqc3>XEi}CehP9|{~@37+a{-sMs8x6xHuydwQ0Gghq=zcX{ z)pU&?@=Jb9gY^_oq(5S#E0qNOsEw{=F(PcE+xPH}+vrP#1o=2=qvzP@Mv+fo)JMADomTrRHpy;%{_D)8uvC(xaAic##S4&Kijjc91mIT(d-A2b0*}Cqq(OC!j z+G(TfxjW-_+30S~jBt;QKGQ~j(nj~#=zDGSSvLAX8{KQ8AF|Q0D_~tmZ1kQM75nNo zdYp|Ow$bBl^y4-<+o--y+UODc7Z>>i3+pRSGb41_=)G<91RGtinHimIqbJ$;eKxvY zLozzuM%Qas(z9%Iy(dEYBpZDO3F^wV(fes4LcfikY@?Uh=-gA+*J2y}LQO=t%tl{m zqpz^h2iWKhHoD&9VDuUrT@45#Rf~;o-|F6KqYt*p-)^Jl+UR%K=+>GL@jGqwAvXS9 zHo973ir76i`cNDHlQz1~M&E0r53|t^+UTk)7qN$I^b{Na5gR?#Mn7t!>oqW=!#4Uz z8~5n>X`_#_(G4}e(Ek_N=q?+5w2hu%qn~G^C)?;_Y;>QEUTUMK+vsX*P{d~0 z=xQrM&?njGYHLK$b8U3BH6rN#)_=PE?a>Ry_zeH%y&=cxL;lv6T`w7@C;SMc(`h&0 z89y`^5b+gE(|PnXuC$HBv0Gtu9uoM~#Mza1?iF|=adzRIdjx(3ady$2I|aU+IJ@S~ z?E=4qIJ@M|7J<(vPIGrQ2>c@AF5=4sK7%;BNjyQ|1BkQh>@)=4n>f47&f`CTkme!IuCnu}z#YWdMRpz%__yZ)XBXJHSKwa~ zXV=%cN8q0jXP4KxQ{e9tXIIy`UEpsMXBXGmBJekev#aWC5cq4v*+q3O6Znh7IrMjy z2>fZ{>|#1|1^zg3b}gM*0)L1&yN*tu!0#u{E~7I+;CB&c)9*9{elu}4?at$;SpFXo z_YprT@QuXTlsgXz{A%KC!kv2s-bkEHw{wrcuOQAQ+qqNV%Zan8c5WB=CB!*3>1+}B zeBx}foecuNh&Y>S=Q4rMAkHS*St9T$#77g)75F&fYF8L z0OD+7orb`B6KB)vJpR3?f8w0lbRHGBgE*U5=OKZAI~q8rIGuY1{v~lvRXXcSFA|?jyhPwn6X(>lGgshK z(tSqN_S0$0yM>Jk->AYLiLmvwnYS=+L0;K{()b&H0x8Aqb*{GWviD}6_P2fAddv(z z1gXVspZi;1afN>m*uQPUEV!G0Th4ZPRZ-i^;X4G!XT@zFhv&dz=ue8;_J`Jh@o{jF zJW-Qh36;0K?QiQWZaYExJxJO1HXuRzEPNyI@KdM;klJ1f-wUYi$kNO5F3r0v@A8+> zU%fXH{nfUd&*0xr)5o4?NAwII{&rXRUO4cv-@m}lDBKD-ekhrLF^XxT87%ORI_Yow z(BFD8ZdD(M>q~Ly{@j2J;Hfdo*g?ZZ&4zdh$$)JHf7 zt;2p;>$3gP$3ZZ^I#ZwQR4Cngq0#K^yd0cTZ{&aH2w9j;iadSjGSMHFzJNT8@B|q4 z1$JV7m^B@Uzs>1C034J9xh{s;d;JIU1r)yiTQcM)_+k8R`Iq|JzVo+V82;ejWcl0D z&UXN8x7n+0b@EGg9Eyf|``c%^{A~@%{CZ9;pG&3o4`D$M>M z`%~5|HMyvLkk8+~E_r``BWnM2XtclmSGys`-+s%l5rpqx@!NlOgCyN5f_2H^>p-T& z)>q6TjFpo!H$2WUQ@Us8SKkSLgJNx`pxYDZ!JlTYY}f6VtU2iR4R}RugzpxXE_8LP zi(><{|AoJ!q1z{+-u$f_l8xpJfBUtv`acKnGyaJN zSD5;3+S?r0x-QnSzIS_mLhH$>^{J@BaDPZS_6vWzv%M6R^jFvR7E$7Bjqp(9ee9;z zz2<>@4xk1Y=oRg7{w_9G_#^~$2H}cmZ@T<{#E9l^`|4@do~oJ0Qhdr9Fu}isjjv6n zx{$W?vd%BRfiG`o`furDZC|7Rc#u-$Or;5_VTbI!;r_Hp>$(+2Xhv21=db$PK1c8l z?l-F9)AxNDKl&$kAX9|5utwEt!AmHsQ@n1pdQe=imF{Q`D5jIfZ8_O=xzLvvcAnp1&c>tAGh z+OUFt7#&_u&h}^aLaroSd*bwI)D>LV4UhGOR{{sHCj1})w!ftSZ27nTVCHVUAbwLS z6o}vWJOs7=;0U=}e{hB>zj~=^JNk(w!(qt-*M||u%inhWK?d#7lNix<{UM1Bkk}E4 zMM>+X^`1et-KE>4cqozCL{#194H?ze?K!=zLFYekXLn zwkFfxzQO0OIN{&-ku&^HNNT?fk%b`rsr4nZxGnWi+hqwwZMCV%?22BJ`&UiyN@R=8ybz~@vuUo&u8eiw{60wn83=`_Ar$4x978w`rFqeguerhj?-K! zCF%Cs_B9IidlZ%<;enyB=(Y*pV^%DMR3TB@C*Qm={1#FCmQ#+c0*c?1L_gg^Kh149 z6%}g0)76~cvaZ31-<*Jf{6Om+h~t(0#^hUeAq)-KpMRD4Jj;g$aQYV3Lc8Ed-q1VbsYcj69Yw zvUV28ezZM*8iv8Vw$|++PHx>vzD?;`3THSrDde%FkhSv%G5bMJ<8Pmx-1b(k=dl)$ zTR(EeZ@z*Sf8tlq0!KGz#&3F`gpHp=CU8gmru~50MZU+jp#4RpkBZ+sx_kOtMEc9D z^y5W(maOv>)R6wzo}b%#(ulwD1~9j*D?sgj35GUd^Y+rR$uDk5Y%jfZ^BeIu-ihRs zUyR?j17Vx!!aG-r(zGCf(VmaV8|3i3Xv?}{jE8Na?%PWjOBu^3<5DG~Ovs=Ib-sYP zq-gJ@$tN~al&iVI{}c>*`ZN%K%51;?`AR^LYxpOB5x=PnQ2W&-?Kd+yMwh+YVlN!^ zTKq3x#K^Mu%lONqhhY&Ij{V~F=`Z8Q?3G%e^4l6Av1>krS(S7&HGlE9>-?jd{}GXY zZnylOLAD})I^5avzb^s#-*8;#Pd4WND2$c8_t@40!T~`vI#;3W2Skku^bui-O@!f8 zS3qA`BV1oU9|fXtt%Cq${T$oXRi5}wPeVQ}AHR7Ipssc(`Gu{&MnwCJl5Md@`$noY z>Yx7b;d&cwNkmqV$WXSZ&R?7n-To^PeO8HVV4bUwr0vDdqnJn`sF(9S z)n(?&&JS~==+_4LjNGlE)L8U@@z__8Jzyp3iFNOXdv5v>#Kk|++JfMlL&FPFV>j(Z z=M)=i{tpfjy4L?Btf#y+-|v5_%UchI{QmZhVTj}0+2h~F+|f54VowL*p+UQ%nuEL0 z_#Xk!E;D}fW`>UDnq3La6X2i;oaVQH25p6$mde!FQxMktt7FfI`FiWoAE;vIYG@$l z(QSWw9{y*9*P#Ju2?dz$D*p*rfG)B>c0Ku@M@yt%g=bszRzVl-4fOLhy|WToSo1OM zU*SY6ewsZ#udKK|ZBc(8WPi)C=sPtKZJY2|ELNxO(^4^G{P?rer^WCxSqv{%lHA_T z>P8)ruU(8R;Cv38&{Am2(X_Mnb6H-Qgg%EP^&-iGK#=4|DhUfBl1xStOMjV-l#i4* zAmvi26{XKbT3Vs2eYMXkY5xs1YyYuu@Pp3l>3jv-V%-I!Ui0re>MLs7+Xm_lptgNc zFzQwRzQ6m5-FyA+*HDLI+URYcRU#Q)+Aij+Hu;=Z%6N)BGd^!o-a?pCF0)Pui$d)V zFUl?F;m7*H)?yyM<5M(B(Lu{XW}i?~*Mea5q=*2_c0-2O?W4O z@Oc!-$+fi<%ey=;08?zD3c?GKN8@ ztQe8pg9HWb53_6qvJX?$Fmqcfo4Zlac68s#p{RoF4@bR{7yrx8M47|GKVdr2>8a%Y zic{fONGoJPz9?w>1U1^$x)&lab%D+Y!qaK`wgdjQSHev&12%s+f#odhB)GVvGYwL? z(nD_RY1^--$uVkevYOA*I&u@Y!uS+&U z>!{`&S{oh;3kdgoq*LP$NdMelXnq}@h5YEBdFIP>P$Z;hzRbt(!dD2J{0;d?D^Tnf z(%Qv9giQsi2t)1`f!JbT<#J2wtCy(T5!j})OmwVRh|Ed{AHyt$2d|9yTg=Ev%p`Wq%w>=ookg{Wg_1Rz)Q zAgtAry9Vl~nZTbi%kQ6jC{(aitiR6|pNshBqwQkKGgZ|1`sx0*Kzf^imx@8P^Y3A- z^yNxts_=#NECg7!FpzM4OJhES#8c1*6AHM7(I^w!yj^ZsaxZ$4~$ZCEgyjl7A zu>*p;Yy3ffhwhFhMWMp`!6pXI#bV$rZZAy`J87HW*f8kWbhc+PQmP%X@P){I@|6kL zR)VQ7YM-d?lnFORm~37S7=ls5!mO26=CG$t$3| zC=?|826&FW&CTngwy(vq`TNrFU{S8~D@r}Vz;X5WV?u#X+S1PZXHav(jz zyte(}k44nS=+z$iP!O?cQ;KM|c_cxgwwFGCRZRZT?*9tl&)J{i`P=Mw!mE_*zkYxf ze0xDEeKl2Bwg{LHBN|rf{`P6l6NJF2DF*f`+NZ{@eH|5U+&hDxBC;OYTBFigHhW<(h}G z#cqC!G-LP(tRVb?X1-DoKVm=E0+mF4$KNQr#BInW`_n@H(om4&0H zuS-~uj-O37D!pY5x~>oW?N5qy?R(fa``fNb#b(1gY!h?bd_d}yY(i-Gqkl*R{b>0v zP?Ex_h;BV;hVG@v;}xQQCC1x80HM=>a0PhECMp~(?bmobn_6P|tQ z@;qWWb=fb%&%@J|Uf~bl$JC{Pn4G$#>k$D{m#)T${-spz6E{N_+Uce6m4FU7QGOVJ zyD~=(@Kr?2D&>4e^q1`$T;Y7=0HZJMoC2UrB*#>4P;r9N-f!}vsL)`sIbZQw>x-tp zZOp;8L^+dE`$(-XdfFC6`77Q)$L8{H8~n_^`(y)jDPC8#~>XRw;@4M58)@jDwE0Shq~#Q>T_? zj4{QxXbRG6z9~Mx9c51Tg#J|k_djr`_j`Y$3R1UcZo&@OLEEIb)H%o2r+rJwLTnnZ}f@R z1$^a=LErKqUP7q$h3b9HO~aIWMhOmCHU)h+A-}4oGUzL>^XXHbWUQ?(hiQ4u!FkTY zmCJ*bQ>IkctXvs1GBPspe@=lQmf@UiW(bcA9Pl*6!BCNwHK65r3^I%p9M}#T=$y*E zCjMZ2{IBSs0Uw3$HMsDOH(ZOGj0texBM7q)o+@1VFSXQ2oE7VgzzXrz9;6x)W?M;=i?p& z!kt(uuR+-G<>}LV5$-{F1mPis#}OV!=)%yr_p8&VOAsDKC{AQxZ?pw?3&JN6mSETR zB*F&nBF8{3!es~(@GHd{ge?fSBlO{Sl)VU#BMc+liCc zB0PjJjF7+2C&P~XU4Ih77K9}Tc_qofFt46(m}?Tufw4VYw0$b*gK#f?4|$^OMqI+o zxa5oCy{la<#)Si>jy^wiIFpj6fB^c~84UB{5?URO+&Cql@s+r<5Z}j&pQocm{+m=h zOkiEqs{?mB(xqEesqe3W=Yr0kB=t2O!0WjEpx;g6jJSktju~;uH#iI8d|RUO;?i5A z7sO>bLUHMNalX8`WH8K#bBzHj-(}u|bf=gO`fqU{y4ATj&gZz&6PFB1UYx54OLJVb z%Xsj&z$d4Z(8a$n&Ua~Ca)IC$@26i1zB|CTI+Cvpa!Vjrau#|EbQWY|xo<_fqewS_ z1a;AlyFuriW*BM0&H>AgjDH>R$%rqs;x}0Fl>1M_`w_3-g(4fv6NR?12W=*ogs$?G z#`!8O)o7JQC~3DMJ^^j@R1}adeM(S!4_oz-=XF*&EX*%!2Rb6jn@E2MZB@MEDeN>CCV$c+ zYR2zfD}k9JNdfrzj+zh4>=yyca?NJB;3ln6j=5IBioDepJl9(mmpn^&5EIFID~6n1 zkdq@x7QGVmL!k4plD=r4Yd}BJjZS^|F5pqn50V*nzKMQ(qq8v1w=HT$T>1^s1#wwh zV)Ei9wf2}Bm+QDUZc<)c794y=oDYoBuPOgs$XS8SoPm_1F4F%6dP6t*c+g{E?=_&W zCvUgzkDnPouNXPbP6vZXn=qQX!-sXflH$?g4(zirI zz1A4VgK_C_6-z@hW7&Xv6VjJpGf%wJ8jMVjV(IjMc?nH-KP0@4LjDd4{65Y#gOayI z-w?IUc_V6F*29~S$38lZ1a-08{{(#!=oOlXkaWH)zP%frel!U5FzBK`5q>l)&bJue zDMbfajtxCGoG`(OYofMrQ8ts42%tX$k%1(eBp0F z%g1KWL22Iy!QTS@KPdhi=?~lJ4>z!1+d_YUeIGxUeLq0@1dKi69pkh4Q@-U-v*MOH z-#5?ZP|O?GAl&0I_8h|4bsh=AE;YLOiuf|bA4NP46{z?UD_)de#m`sqs=vJ`&bQQR z(6Sei`8^2!1dNfxEqTiGv3q`cifkerxl)J3V5^upBo}_cctW-<#0yNsz`1U9Gt4RjBbz-S8W`;dge! zAMA$zx*N`SJb1;*!1_BKJr%CsQ`cjqe(yu~32K-&c!Y+Re*Z(*61a}XPfemI;>TXl z>B78rsf=Mtad95SOHX+3R{Ck1CCg|-u^Eete1akxFQBbTFzc0jJj6`oLG3{UFf>Z`&LDx9donJQeU!YUQ6 zQsEXA-mb!*sqhIE?pNVkD*Q-=CsY{Y6WJU1jY3=_R5($EGgY`yg;gqCrNS*L)bDN0 z%FmzTOD_m6ufY;;Vn%jG_So#~Q4;cv%gUaZH7RSHm`%wRBKraTR~;VJ&Blnl*t%ny-#KUD2&feF6DeYaqh0kKiVPkTw7*qFphr+lZPm z`+@c#?8*mpB%l#&_h&n}hlAB{y)DMJnJ-eCKFp2m*{V3EFNQsAki7Cn< zkj0+;OcG@-1j91Vjg%E*a#^s#b0yQb%;jKc@Z83jSb>B*7f_WrvjH({JU?YjZ*wM) z77r(6QHf?5kd2dhU$=!vQ4R1bGxZSlM9LZ4~ zETnr3x$h=uxPMDM?qP9V?pd_T{mVg4Fk)Q%t3olZ`+&u=7O8g6EdWSmRSN1>O-(f7 zUWZ2U^;CGONqT$-;b{_nj7sGQIL6fhAw3=gOTq}K68#XfPbfz2(GLr772>0J3veEy zVg@V+A@(-_zrx+i=n+Pc;Kd_mASv+7^~lSy1cmAG@^Uc49eEPmF&bo7)`g%rE`$c| zYsMkNxHZt!>5Agt=W$#Dg8SVflJ5swjB6yo7}s<>doKo`yVG06$QgJz5I+>AY#z0W{oS zgT*_7aFqKf2;Pxd=ssLVQq&yE88r;)`iR9@pE!VKAO6uEN1s$gI{Ulkro4pZMOQ}d5Zd2S(lvilP9+}a;J zKKE@H4m`J!p6)&r5BPS%S?+Jh|6`_|)Gt)uV0i8zJWX2kP8K*J>0kwvxxIw%CVZ)TBzf*B1J4Tg^LTphy%Ns`cRKaiN%$&vKf?DBZgl?+sXX@+ zZgSsBeI6JJo!7XZr<|X%ye;lcgnvf)o7}U>|MP8l-r!ycV|aEE?r={h{TGCHyYHty z4>9et?z!Z7nDBG`majw^cmET)?{%NYydGT!_@Mg^#Cm?Y8So+Z4V1IzA;3r6{9{j^ z#|R&FzfJzf*&l`7r&*J~`V#PQH%|$Aeogo!ni?xT#`Q8}I1(ALilFNu=#$`C^Bn>= zHxfNp6NKj?m1iAc7gDkNa(qiwu6c{37R35IEky|2A5*K11P%9HEKw_AmwN!7o=x-c zOmJUC`esr4kj6j66yv%d;v82{=9X9x9G&E8yHdnmg=c?OCJR1*=>`b*a{Qb{{n2*8 zbUT??JG6qG=`cdmw6XMQ9BoDV5id z5=bzE6kQB-=ron+IdmL%fyZYqa63O$(-xmuW@h`$i%q{VY_4K_9gLtmzv8esXf379 z>i$Qb%#Qo89+ElFV$KgEtKrPP6!aAQ`5nWY!)o`yMybJ6#^CG=)^MqhDC97*8G1k= z?*kculu*vm1p40<{brXr@54lq(ev2jG>biGfQ}l6ykQi(Y=Hh8AJ0G<7Z&J zMKYSXM(TAoC5%BEqEX;U-T!)(*)b1U$^uVffjOe2pp;XVLxp>RjM$UHG8zWQFJ8$= zkWyW5nA4c_EgIs8V)+&dq<(HgjG=ccjD^S(r9(A6*}V`&#>k#Z+i1)r;V)^>CB1|0 zF^cvsQDXG!-0YyKM%7-0cs3|=K}raHgqcm|e?uo@&=eMUs81zKr|P)Oj#qWUp)w(a zpu9tw5S}q;8JPwqsAP~KF0;c#0Y(Xz6pn5#7|mvD4x|y7Zap$J`yLn0f>F{+SAulX zzI|!mK`2t{_lk?|F)UhTMFf5V|6E`g=cP~`FH`6l^bAWRZJ8oei6z52h#dN`5=kGp zLrQYEe8$ixZS-GCx(VO-iy|k`+GGBL#~*O_Gzg95PdL0iZ;j<&Ippm*kikg{@7QO} z3~m_nj(yl1I|Lzb&#PmvMQYyOF=L;G<#>BX8^il?pyl8HRBMC7$dqe??u(vxAjKhP zM9!m8fRBhdlUyP=hYQ!FPy-{Qs+;d3UCO9WEjnOq_`A)><4mYS%W&;tMDHj*U6-2W zXefzMpl?X}wHu_Q@6hDUq%EL0lKutQY4j;TgloAu0j%+_60R1>oLqRgvt}ZdlM4^e zH8+7nE~HQdJxY(Tn%|Ty`0;N)sT~`A#VbQb0^0xZ!ZCIHRSEx z3)KF9#KSw3FZ}mE0WG{ff=;f6yd&=gC|5(VDTe@y)lh6&6F|8diXA~%u7+Yq{*tye z21J!n&ZtD>oFrC5Nn$mWBvwO7sfctYiPccj!^qo}BvwO7AR7ruay8`SYRG#&vsBV1 zdfrY( zb828D9p!kH^dMkI(nXNrG@Q4BKj z-legy;-EE#_fo+*XszMBOxla}>%E+?T$*_UgkudSmuB8&hh<*NCn3F9nt3aP1hF*p zR7EX}+d3Cg9Jx0SG5nt3<<9NxLPA<*7TiQWzc0z!+?Gq7q9M2)FOcs17(}|wPaB^wp{ZTxqF|Iy%4q@%k z3U($g&Ajd71=AEfeKd`oflD**4GRRrQZmr)l7SFpvr?Q~nt8Wz%@E_-NH)5)WSfF0 zP~Q~VQok5iF_Um<=KU{eY7X4PH~}=TGrRv8WwT>HdW+$l|6gYkd>IXTxR{JyXHxh? zq)S3S~{-1exY# zV#NP5@xx4fxxh~nznr!S3fl}sTNzc|XqeT)bd^9;wv6jCRSm{A;Zb))nkwyi#nb@x zQr=X^H9&3^DHga^87^O{%QwPE`BKHws?SMzW)?m3T8N(SpuHA5u7Q|Sig7C#|18DO zKS#tW*ZW-2q~|h4l8U(%DSDt(v?S?+6n!V?Llqs8MvqZ+THY9T3GFn`)N3Qo+nULX_A``b(6>f4iyt=rIep3rrpTz6-$p)v)ucyv8WVz zrJBp_sFCuxO7$dCy=SE|&fBZ#FN2Pf%I%e5To9UtX7@jOZgxD39ZlgHg`yPPU>jaR zR*o_!aF0Q~&lH$rM@h;F<#2TDQY2NaF{Ov96?*@bHu@|@rvYvkbQs`dgaJ~`C9IB- z3l!@ip?Dc`!_xOLT7QPg9=!V>^fo)*fxry*d^3dZSf`KOLNC5h@b6Tr4pbI2JE)xC zztG~pnBB)T!QcH4vzr|(q~M=s@$V%6WWnG455JooS8D#r7Qc)9*}{A!s&mP)^!bVA z&({3I(ovJ9&+Pt3#LbSo6I4C<1n)!)51DIe9G}S{rYFjs@{3FZ3|nHMHZkVRlSPQq@_&+`Q-^WOWv>I=P83Rcx;oazg$f(3H_i_`e{0G!oND z$eJ7W#%Ns}C$GbLq+aZ$dUgNYfZ6d6 zt!Xc&IsmS;`6Hy+;*echg+e%aNNchq*C>Qjpz}7{VxYU+uFd%!M4BE7PEhf~tQyII zA5X2uZZ4xoz>X=HfQXAW$V4pVcnnh-AuV0Sib>XV_Cbf#7(2m|*^X2f{tZ#)f(ttt zl;xgOOz6?Yl}9>X49_FqEdVgdWb5nxWeBr_EiJD%qMiVk=qv@+2cl9wRP{xk_i;l> zxAR~`YcxiFt(XSDkYEtMUl{rAXwAH%tIYhDA(^-5-)8 z@%Fsy&i@V}Z_jo|{`ZLI?b+eX{}43Zo+x+z=cq&8o}RJ!Pr_j2;Sb`+R6H&bSB0Td1jXoZuj?SnpaJAnUdAdgKnLFj4xjINQ z2ZGf>8iKZiG#x~3yX4}0L)6RMnOEl<dAfc=oqsZh}<`icA3;x?wd!)3PkRkN5`3*ean6G=-%RBi`+MlP891F zxo;kwWbzjnxo;kwY_7d29 zo(3j%$f>rqZ_cU|)cZ8mzHc5q)g)c)n@3NRF!#-)a|EpR&0hnH*f)=Ph}nyM^O%PP zxC)uZ>=xiWMD-XzonrasQ7o3p*f%#3h<)=O14&UQX!u)2_Y*V@Ze+XfyKFL^Ner(hyMGNn8|ol178#P4a>go3w}xJ?SFAaY-l8 z<;Ewi#xo&lD5UjDngagbNo{y0Cfx{nQc@c@`y}NcRo|ptp!7?c2hQZA*Fou@bRV7r zlD6VGFzEr%2ceSXX(H~M#<=(cy4Xd>nW8l)jMzo*{T^h>BA)Qx$0A;g42`5OApo1j zfE~tvJa@DU++=Z^ltta$FIpUB2DipMzqCwI@)S)y>4w7dnB zcIN(fGL9OpLXctdDKYo$@G^K)<=y9 zTStwqV|pAldY^g8qeeo4I%-5aSVxWafkz)Tnuxw!9W~!U_YJE^}s zYD8EcHDZC~ezxZ>!uqHYdGt{uR)9WgL|7j+ssfKbYDAyYM~w*Uqeg`FQ6s|osF5E! z>!U_2uRdx-`TD34D^njeBCL-Z5!OeIm{uP(BK%x`dDN&6!U`0 z0<4c35!OeIxG>a5jRr!FK59gm``N7Y7}uxJLLD_CsE-<@BC$GZL{RQ$d)5)=e)hjm zC+eutX@L5uQ6p2yqecYvQ6s|osL>k0`lykpeMlP(T8!%m%B_wXO#ne1HM&*A-G%2s zRwfHRi0K9i_fkiVo)S#_(|!Y4JG6qG=`>XFwEtBweSqg+n#Rr`j~bm84AC&pVA@?W z5Q1{dO&vAjK^pwrOE$W-WMh8}>Utr9`o*|vnM58nqN#_xh(6NX+5P*0X2*9J5{7aa zv6B$@ABT#4?46YP5Ky1kuf1;>Q1;8ixFz`jBgddy9R72jU&fV=tu9`%5HbuWNq)vr zW;r-gmH{{)^T$-A+eNQ)?%1;-ZJ$c_EPB-##E#&G_l6PJdfb48#}_L0AYzAzSh0CH z^52U7Cg>yNhN6+O9U1T(3^RB_XOO;)2YzuK1#9|U3ONQOZMQ;B0J&CX9kpZEh8Sby zt18BUaexY4gY@YRMeGS;T7p9Q19{d`47}WoPF9g=hzvcJsM1bDR0`~>ve}`?evqdMve=_ezgyAEKu3=TGaTgFk($ zqIZCvo~w{uK;W`-;m<=#>8Cez|DK}RQBKdKpWZ+}jfa}jPj8?rE(J=jyOUn`G?27g zE|5i_S*x(NklsSmQtL-m?5`2qE@H8qOILe@bV8cy3B|M*Ob;j#O#Hl}zYh8{mS`jG zRYgAx`k!p{KPfs*d(1|EPtob2PLxhLbec!iBb|SsqBGy#ivB+2pKqg2QgnLlY(W== z95qkTKLZ`I<(~AA37pI{b^rdS*^vUeux}IXOaC4%HnN)7_pt71-&M5lV?fg0pD6A7 zEs)ogGQxHBMrT?tRlI0S!u~GRg1@Itu#rzH@+2ee5*wL+o{zqcjimK9GD%nk4yl1% z%uDp=gZ4>1u;=r0BpWR@c`jiQ0?1bu;Sv@h0ee*E)hn&3Q?trtym8(wHu4RMJjqCZ zK#}QP>CY%66^JqBZ{RWuIV5!dLaEt74q?ecs_`=Nm1-1HjR5u+&f7LYDxCl|eh~S| z9h9`4DuOxo#Z8xJLgs%_bdmXx=MiI0=>Ex0vxBL|vWZM!#^wUn*d*52C&<(o(n_7v zx_{{wX9#t&w60|7OcsZ|B4bEBlr)ES|DdJW!Jb>>HdH1vGWfX$-tNJ%8F~l7z22Eo zfokUMKIF{gRz7dfZ!`HT0B_Ih8DGJRc)QbLGrP{+WxS0=93oT)1fyK)XkauCYdK!#CX70)70qK+&a4ta z5$|tA^W;%fuNy&$=CVAhH^_B@Yt_RpUw2^kv`6e#%yLY+xLLRf2+nX zio<>y8_JmOU-mUSKC=Xkp`iKLK8(LxrCf@X2|u$TJ@sa4FP-Rhs442tK zYHv}tG>Uu-A``DvQmPR*0XHO>xkhZWjZ6}X>~_)WNqVC$<|#8tZx+TpYbNQafJQO0lKi^}J`umF9I6``+1h=!l=h`Tz2s@+ccTco3@L#xt3qmIIj97isJEOjn0 zN}gEdG59EXVwIqBNWRo|2T`>bCt!JcP#;`PN7>cERWW#|ciV18Dt&O3us*m-SRY&^ ztPidd)(2M!>w~L=^}$ub*1=UG*1=UG*1=UG*1^?fP|rHJS_Q;9xJqrUgR4ZWgR68n z>)>iJ5bNOTC?M9s)mlii4z6AU#5%Z&8CloC)$Ks6gR4ZWgR4ZWgR4ZWgRA90tb?o6 z%{sWc5&4{PaFvBr2UiK|gR3mAKDbID+Ch#(9 zASqFcdPAT$8SWpq5MY!GS9C6P-xmR|D;{ zooGH$zH8Xm=*J9P!(@I(5t#G%Vo&lNAn!qfxBCrv_pkx560bB^6KiLO70IV6< zfJXs54`5)TlEy!#FcGo_iPhL3Ilmq_+7`Ri9_x0#nFE2m2F_4Se}IV1b|x$!28q*A zgK!1~l{9d^jq{fgoYzKj4!&D)^8Hk(gb62-f8=9+C?Sa4>0(5dG4M;Dpc;G?>?I@x>AtUSbE4{^C_hCiRvEA>h_7M9?Yut2^Sg6di4qS7)&=c3$|ij(k(vApRhlH^^keFr{+Rbwsj+eli*}7dXp{4C{|B24 zY*)N=jm44|lUQN6`*h`}{!}rsvlqgi)lo*;kEnFq^GK=;O&_`@_q!oqf4A4jw0mk-iBXf&9t~guQP67 zTrabCj|4P1M_ETLhWTRQz~69r5T!6o|Q8biDXUIfenbdWV&IScG&7wr6=s65>G7*Ws$r(2dl^#D{%0QwE`;(BM2*_6w zdeN7AD`8+mPu0Z&CyFwuqt>ZUI^+#P4t*0r*VKMc%_WOW)sjUyqIGQlKIX{&Qo#Yy zqM!pwp~8bQ%nSQVYmMwr1Lh|Gc!r1>9Bqkoz^FrjDx(q|+P2Yz>9a+teLvc08jj>0 zGvM>XWW;SV`e#G@aId+bAM;5;k(7c=o(e95$+7O$lHgWei0s{i{39iU5|eJ%vM4b^ z&rvo#k^g9$o0BL-D?L$dhOsy zuN~6mwHPyKQJ?nOVOFh1ck|le${U~x{VYX07fYFHb5nYqa=;OiM|+*{YIIGi5K7P} z<-ZCY9pRqmNeRkX$Jkimfn)8ucJsjuo3>!hRKBY+$+C&1cG;FBFPn2jD;TFFp{HQE z&sUNZI$lb`Dkf5dPt?i8uCzF7)s+&nayxrOev|DnQVfnESUm&^GgX;EsW7c869-~* zy3%(m$@C0#3lVu;7;R)HGEuJVA8@8bP*Bbp>|YEczk53^h#+{`xCCj}GRGO+G+rpPn>4AbUg`gRx>6P;P7|}RzVI%i-(Yl!^U>2S z_AU`Mo~--7{<8nW`zGiiAz`51!h>veIao(vCI?WphoKo5*f~oa*#;lESid?@QC}Adt_fvSKvAP9R9P9U%2+{_ zLu(s?O#rb3h2Ayw0I{qBhXt-}3gE9c*Vf=KI14tN0;_7W)sc)OA~%3A8U!&@Ah<;K z*v>3pD{-Vjyi7A~d2>x|XlzX#cL8y^9Xp3h$mubM-Mc8K_2V&{ZgFM#a$0kSex3Mr z;uWoTXjn3CX?waUrPtaAMxkn{HrGjnQn(`;8_vm-t6 zIsf!AmpC6^|7GIyuIZWO&eQ8%p<%A!H@l|$a&|0vW=Zpo9q@^ysX5L>*Y-8Lnhzg7 za`^D@)sF!Bi?jSo2^>CLtN>@9jOM#%Up}kZKYe<2aB1_@oH?!?Ia6onEOB1F+qLdQ z;)<(MT-9IAc4mh%r!Fa)?OL_dzry*R;R-pE?|F7}@e$Yg*$d!jW=uv*wX2Ww@eNi) zrt_y87O!x|?_Tj7*fKXc6G9SlR^Q`V>Rj#^ZQ_r^OmK|D(iG{Rj=9$vSGC%e>Fnk5 zDN41XT=mv#uCEm0cFUT5+_k*o@WQd}Qc@G{p% zXDaTWZg6dM?YP8|k?2fbtbhkMxE2qano~5pX^AWGx37&U&UQWPdj6T6w-#^OR9x(= zKX}#B|8n;E@>S>R-L9)$jjs2d_nEE_GVjh<;#z_XoO}6jy~^iSKAcxy#GqY}f5+z} zLG~;bfsFl&h|T76FdsF1Om>~0bYZY!^DNgl#fc!8F^hM{WFGDUo#Wn`J@py5K~m7Q zXJ)SJi`ipct2S-gvBNpTRi)Tm88MmFcG#7)WNKzn&W_1TXYabz^~hn=Mq*Ru)Y(lL zIrlcNx~diN=q!HGT)b(@^i9vUZW@}?S9qSx%HuBFdzay{a#y~n{ZpbkB#!$|pG*meAefgoa>Irpeg-B{n; z@E^wn-Pxmq*TaMA_c>A!>^?kL{RJY=H72m9*FQQthnR`2t*(#z;)|QE%$sjMOlzYz zf6E!`ns!!VYjd5`9V%)b>bz>>BTF7}4RgjWcCK;x2>vv&$d}`c-RShVb~|e?ay@!@ zwlks1+2nid@a)>b&d>+dPPfZf?Yh0XDCbgEtJCweE46G**^^w(qY_;=h^2W=bT?y^9AiD_CZ?A5OlS}o2~kkGlc(v zfgOyjVExOcGX+EW*qkN7xl>lHLf@S;^y6ptpy$nesoF6**_YE?{h`BwB1DS@boc+l z24rN`H-s|z6$~+FYq+u+)1<1JYJR-}|F!+dFm_x?WkvJm8iA%2^^KwB%~eLAXkGx_ z-j#unu_91jTT@+U)Rs4e0!_8`p@<1_peYy%G}eO(dtjPtYYBnIAR>h*hztblDvg4g zri${$i;aNj*a8jZp-`}~POz+QtO*4LQ=qE0yt>Hskc+Cvu5%XzT!O*Z8)AC?r zfM0`&C>Pu-&`{sRQq?!BM9bGgLs_7v@>Nn<`L&%g=DQM;wEBt&DS=A3YGeIcV_qG< zy(3ktSW#13*%+)-U((^y0!(l)lt_F*^yEEG@dE&=A7v;4n2;2c>wFLtCE}Q5n3dIS6qg z>qbn#QBk!tudb6|W!I;Mnqb_<>Y6&kvR#G9eqLQZjVUW3U)42zw=q~=DNC8TvM!X# z{$^ZeWpGunmOT~ol>M?1sKctxsA>!bjq1koh7~mx^Oj$s{gbNHBU7#e13dT};kLRo z+HTz%hBl-0L>f|7j8qoxU5|CFy?=+}vp2BbJ0`rQCg-+uF z*#R-o1#B)%&z)CyX5}bmw5xzfEE9}1{!Lcn+)OY$W_`D;_~f%N3cq{pz0E#-wiWNE7#Th$syl*VN z7dCI4Z){abQNFQCjVa0)vKx~YxB5MF-HjNLI2ysnW!K*2iS+-OHH}TeM^<8N5FL$W zm$Js1V3Sl{H4thqx_Qgte)~o(XRk88_U@PFL=qWj>jWdcdjMA?I70noS>T8=<%JEM%3iPvR6x3wmc<2&n zu4`@zR>HASAsj_TGm#o%)T=75U`xo)E1Hk`nm2z=URj`M?!vs{qJl``{8=;3&x$1F zO@a=hXY1;HS;ns6mb(rZ&_sLp2OxCT+`xR%N7>7*$KP(UB5YHQNdj5`noD4HO=W0B zL}b?|-y&NWYNfsoJ-Heh47_&J)ku}mIr|U}9VjZDmk-M=o>x*hH=qP5#})-xFt?~I zP*SwGuvkUvp}Cvh0oZ_sFD{x9SXel}6!W4$*^&~~5>&Q&jOrSplu$LJvBv$XhDOM% zk~XB6KxxsO60|F!lOW8RKW{;a5hz_)RG{_7#3@vdDUDqTm4UAGDs%@cq!d}Q!uk1y zbIU9>gtv0zQfX|f0a`So0)$rw$}1})9Rxm;Juxt0qUu1;6tp%%iv3%DT3OUi6F!tz zp;`)SiVf`SdgHsH@7UWXl~*B2$@#xsBZ#BMCxjze^S6g)plmgD=V8f zN78hADlVLfN;|tjRs?IRSEvD8%P5-%Uy)iXS5Re8R@21`6crX0!k=uCWi>YjSJtmm ziV4ptn(Hr|Ulgf?9{yxTVwn`so+m3IfFcLPGLF;K>hhIJ4NPR~nrg+!#bw1}rGgyO z&gNp{#zz{7Ud;Lw6~mbUCWN+$we&*F&LeDKwKqkz{7!2fX>^^3%{a2^to1@fkD8Y) z?I?D8#I#uD&Osg1Wh`?VX;RS(qyL$oS2k~cU>j!BbGyeB6wRDj zIKOaizUpgac4ui;s;cXnS9bM|m>Wc9Uz$I^uyC$66AV({5Ns?*x6+-lAaDL`GSV0_ z%d^_TDp%p+{Ne@d7L{zJ4Lg{wzS<_ODadI6ddkLXbZf9MChXmH@Rt?`iWkf&n#+~w z879Lz)@E?Krh4p=WuIR-i@mipd`W=Gx*4UQu(T|I+9`?D9TS1z$_7jXy0K%#^OwOk zXBA%*VKdpd{2(GCKRbW{fKx3A%GM&H!bC5W%sVTT}dF@(*>wZI!N-@%5 zUDFs0VSm6{y%*)fX$|=~Tagbc1v`UStTkfm0bNledLncQtGaZ;=WU@lREWr0f8v(? zR~=JS$Y>6*n8?=!S4$jY3#V?_PAad3k05iQU4huTGqjYh+$!*K-n!-ntdO{|gpH&S zm->8-h!;=V^D>PE8vKPtTBt$&>82LV^Ki=W`+Wg2A~++~qUHORkutGG01 z7hiU!cx?3Yx<-XmRe|4Fq=g#fH-33ZRW-KK%5+NDAiNP~}Bq>D8;9j~nMf}R@mE7I8wuf^YG$tu%ep(X2b4ccX$ z*(i@F8UL_km1r>El69F>uSfq^>FfpMTjRX;SP3tc zgsx|$isB!O;bj_U)Pj!MZLySS@Q)U0p$6ZvNDHLIuBTSx8H=SvgMYF}XK1L?`xF2h zX>f!^x>$o(Sfo-7HYk#`k;a<47&W*$f>9x71bAmbTEqwRHmgG#3?Iro!vpY%Zf3|ZgE|Fi%SdqrOG45 zSa^%;(p&J>MdX!*7nOOZkG7Ps+mB@nZQ1U7 zuauJNIMe%mw++45R2t|52?qPOt_Nb!jjiAbnl= z!!<@zksRL8n5+f)wu9D!?4xNz4m5^=98gHRucqE2j~`_O`L;sBh}6@1&?2KZOq+0a z)Ih=>swPM%V)c<~YB6uR;_4vZanM?jyU90Jtp_=xkXVn@FH%O3>>bWQ7?HZv9je?# zia!{|;dN(64J7QDVrWm$Flei=V zI>_}7%8kCfLXg8u$5I1{avIDAkSIeA5>jhZS&(UoxdC@v@A6)AcYAe^{Gk#K)R{oy z!}L?kfB_Ag)Oco7`<;739?ps)M{n zp}6U9sM@!j`gV|$4yuBD-$Ct4x#*x$Ki7DQxjJ{BAM#LLoV*ePdSJih4sabLe;0*A zgINpmrw*!ud`h8sb@>Y`9H5gd012IO^&;l|>!`KB4R3Xj|DhEX9H>iy#BP>xqj>EU zhfg_OHIT*)iW@=ty7E10iRx%}y4pb=cXs9O+S-(RRVoGY`%Wr%T5VMB9w)U9B!+mp zr2zS)a+S=^y`xA>rlKJKs}MgBf$nieBp^o=Dw(}|N0Hc@@=24X|4n-2F@n&M2YJ-> zq75KVoU|9^b=9EjnA3F!$m0&GgY?zskKyww@Uq6-5}^45z8t7?f#i);IF!uL-cckD zr+ku|{@<&E4)5K;fm#COAqQ1K9#%-YE>dWL$Tc{xz6SM>VqN)a|4>VMN@K1zX#Omf z*t!lR`|oqG{RxRbqj7Tj?89^?~Fe3G(lu;^}{=?vzj->_?#mI3%YGKL<62%B3QXMHH z$lDbXMx^da89~BeVN9(Rs!^Nm3fH1_kP97D1-ZmQb&xkG#Omv#NbPcrRgk+gj7UA5 zGJd>iHJFBCq)te&lL!YI5<#LEVMJT6Ix;-uDrgu-cN z(0t*d0W%N4LyorwGA%TB zmpce;p#bgKQWo+ZjmZL#?>ndpa>HC>16@8EMv>@IP%K4ikD{ay?QbP*&K zNdMndyPKS%+}#u!ag$?d2bq?Yd#J;9B-jLnt~q&ga(yx{Rn1EkmUWU!|l8>fPSUmPNdBU;e z&$0#)dR=3q7dOlwgev(n(j2~`@jV(psj=jy|F`LV@OF)HYmHmylvAif%6CNLe`(AM zyg88LtPR^V4sWC-H~kMgKzPtnPNA?896P>@mj%bU6!L#;x?~#6el)JfU80tLE{d1T zrbuI!4DF_;ul+nVbmKVHv|@zyGD`HM)i}!olq{KPrag+EYMRcC@t1Ka9#y`Ui>3(jBzF>S%`)3yaw81y0v-lZi@&+Ffxy<}7m{ zil1!`M)8?uEQ-%E6Kyg5=a}^?WB9qI?Uoom+q6e<+Sn!%O6I%>$`2BA3h>CmBF>UI zzkvUO0{p@Pyqv?id!J(daU#s%H-%GZCw81{uXJvlFC=PA@64JO}j&$M{{yg1J`VE#P4QuUynxjYVwES^7K z_zB}IYUfQlKHv`Y4vUMd|KDGL?@>MBZnC_UIqRQj5-l&OvS$kPyjXzqN6<0nM7Wk7>J|t^6+)@be4eM(RJ|aeu#n|Cs6zcTJv6*Tq;nUt#eX1|FCft34|e z5BHBw3iR|A;9o1iAFz1-`t@)D|Kk>)VaoHxz{}LmXA}=Vfc2XKJ^aor)(-sM&-Q0+ zfNNC$bh?R(@$<*NWB5{w)6E7Cq!d1)Gzb2IH|uYlFKN98Gdv|0({rElhr3QcqW&icfxC^xq?q8CN{qt@aIzE0Y)ThfCPb0oDJQ<~5MPF+0y8yzI$?yx8(nztRJ> zUNf#&Jp3vbf9Rac4L>Wn1N>SqT%jLSd`$IIx3}Rbi)+G*UMavQp=Yr$cc{$a0)Bo8 z-$>WH^}+qdRKjEJGvDGg4qqjTUs3&w72h9>1JwdO1IizMVes1p{7(?hc824|nCclX ziy?ensyBVwRp#uDP0X}0|T+d|%_!5iHFySXWZzH^HYm)u@Vu7Bo zLeF)=|Eh{Tpg8s(S*rMt3-tU_`LS`uF6DoFM zVlhNFQ!$GbZ`b~IgW9={@Uqf=G@$%Pt`>BQX70DR&nfhQ0-Qe_H!sg_wwBob{PWT8 z3iSNR;#99oMA=-`d6e+j{lIj(QMTjlWy093{B9MgEa%)ZI6O4GFk6f^lg#4nm_VjP2RheD1`g|zq+(C{W{k;P{-NW5om1`GW zw#N?;ru+1!+ zO_J7*menhg6>FALg`{?%yN3D`@-XeRh{MeF&T;Y-xZ7SBbyn~?H>Sa)H z)2dsSwya8SZEdZts3o?Xpss;2AxMp|#D)m{(R3YNR zp(@~KA?zpj2NE853yGgv#vJD-X;E|@w~v5$9Y(sD^bcnWALX1Qx!Q~V>-qHui{;f{ z0KSD8Q_#_z&#rp$Wo=55t#nk#>$!7qm<9{Kiqc!y+sQ|rQ8BkPucPKYB)v@a3G?+z zY3kRNIiTFOfg^-$Qjo2QRVMAjHoLxtCGvJx28$Lt3;6c<{+#hsG4S*Y9X)+zuF=x7 zUj4zcbs(=*+OohN47;RX&yLg`%~$HYMzyaxcQK48zPl7!R9rHVvW_N!2bOp>WbN{c z4bJ=I=AB80UNM)^?ixevv8?^ls&{TlR*7_f-jqRl6;2%ZNm@y+nRr|}&o|!!k+z)P zh5>Tu?Qn$#V81(d#mH7h_TR{2Ry}ONnS-q({Ib1HY&}rzr3QyLbD{C78})#)UD5MQ z@zZeh5OkZpFcxZ#lekPI1DjR$xO=W1Lmo^okcz96aZJ_%4 zhr27Zb76&dFzLE-dzZ1PZJp%1Tj?6zmI$1!efu3Pg zu|7N%A}d>I`;`iBPiQK9(?m@D_PSQ--ln%n+qy^zQX(q%OCkaKt}Vny#dP*=-$FL@ z53_ngc)OkoonWRycW%7*3Sr%wcWfm&-d}}qNpA1EvmbQl=FNlMJCUMI9O+B%!bPnE zlKsmSRZY0({6AuT-lazXdS@yD^C5^YQXCOIzGp&(Qb$jm=!ZP!O%OlPAnbHIZUfy; zX9CY}pH4r>V}1oOf0>d4m&-hmpUohJX8N&i$YUM`@nc*$FQ_>VX(Q@{XFuj^5WlFL zupi|hu2cSTPag9+h?`YDv|nM#J2ijh!Va$=A96aqv2GjF^Ks+k}to%EDVVCaZ;sH`vH8N z2w#4@EIEij2&Q6CKIFd{$YZ_>v35VO+hgStL_DbS=nt3|LwpG`R0!=49X|-GH;JZ3>Lm}f)G?=$=mme2Da>~@61g!#BfT16`457WOQHlE{vJm&2Vd_wt` zNtW%0Jm&WfenR;PlI6Y&dCUWjseD-*2JHs>(GTtm%Ex@+L>pyL*e8+uhdko9DaW@T z^NQ^5BzHzW@J)GMEST$NRYU0{Ork^C8JH7M^F2zl8Gq z0C~hmDHF8Mw^PdxGeh2~1cVst*||!z&BY5QRUY!nJeOvA(Zk=6#9vSMKq5o=3k%A> z_j@9@>0{(CSNX90CVwRI*JA=k%|Q8xuT^=?cF~+?h1`S}@PRxSTMFdw{;hB{qo4wL zez%3b1DzbN`Lm?3k`Q@;I@_KYd%(l-xW4cl;K7B$eEKb-ANn({Up&6X%5Qp)GALXS J48URe{{u2B07C!( diff --git a/MDEmbedTest/main.c b/MDEmbedTest/main.c index a6f06783..d9bd129a 100644 --- a/MDEmbedTest/main.c +++ b/MDEmbedTest/main.c @@ -73,6 +73,7 @@ main(int argc, char* argv[]) { mono_add_internal_call ("Crow.Native.LibCrow::crow_context_process_clipping", crow_context_process_clipping); mono_add_internal_call ("Crow.Native.LibCrow::crow_context_process_layouting", crow_context_process_layouting); mono_add_internal_call ("Crow.Native.LibCrow::crow_context_process_drawing", crow_context_process_drawing); + mono_add_internal_call ("Crow.Native.LibCrow::crow_context_resize", crow_context_resize); mono_add_internal_call ("Crow.Native.LibCrow::crow_object_create", crow_object_create); mono_add_internal_call ("Crow.Native.LibCrow::crow_object_destroy", crow_object_destroy); diff --git a/MDEmbedTest/test.cs b/MDEmbedTest/test.cs index 6a24f927..75d60444 100644 --- a/MDEmbedTest/test.cs +++ b/MDEmbedTest/test.cs @@ -1,5 +1,6 @@ using System; using System.Runtime.CompilerServices; +using System.ComponentModel; class MonoEmbed { [MethodImplAttribute(MethodImplOptions.InternalCall)] diff --git a/src/Crow.Native/LibCrow.cs b/src/Crow.Native/LibCrow.cs index bd0a1473..28994f02 100644 --- a/src/Crow.Native/LibCrow.cs +++ b/src/Crow.Native/LibCrow.cs @@ -47,6 +47,8 @@ namespace Crow.Native internal static extern void crow_context_process_clipping (IntPtr ctx); [MethodImplAttribute(MethodImplOptions.InternalCall)] internal static extern void crow_context_process_drawing (IntPtr ctx, IntPtr cairoCtx); + [MethodImplAttribute(MethodImplOptions.InternalCall)] + internal static extern void crow_context_resize (IntPtr ctx, int width, int height); [MethodImplAttribute(MethodImplOptions.InternalCall)] unsafe internal static extern crow_object_t* crow_object_create(); diff --git a/src/Crow.Native/crow_object_t.cs b/src/Crow.Native/crow_object_t.cs index e6f5b492..b131795e 100644 --- a/src/Crow.Native/crow_object_t.cs +++ b/src/Crow.Native/crow_object_t.cs @@ -37,6 +37,7 @@ namespace Crow.Native { [StructLayout(LayoutKind.Sequential)] unsafe public struct crow_object_t { public CrowType TypeObj; + internal int managedIdx;//private managed ptr to allow libcrow to call instance methods public IntPtr Context; public int ChildrenCount; public crow_object_t* Parent; diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index 5486030e..4b81ed28 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -74,6 +74,9 @@ namespace Crow nativeHnd = LibCrow.crow_object_create (); LibCrow.crow_object_set_type (nativeHnd, CrowType.Simple); nativeHnd->Context = Interface.CurrentInterface.layoutingCtx; + nativeHnd->managedIdx = Interface.CurrentInterface.GraphiTreePointer; + Interface.CurrentInterface.GraphicTree [Interface.CurrentInterface.GraphiTreePointer] = this; + Interface.CurrentInterface.GraphiTreePointer++; nativeHnd->IsDirty = 1; //nativeHnd->OnLayoutChanged = Marshal.GetFunctionPointerForDelegate((LayoutChangedCallBack)OnLayoutChanges); } diff --git a/src/Interface.cs b/src/Interface.cs index 77f822f0..7d5eed13 100644 --- a/src/Interface.cs +++ b/src/Interface.cs @@ -136,7 +136,9 @@ namespace Crow #region Public Fields /// Graphic Tree of this interface - public List GraphicTree = new List(); + public GraphicObject[] GraphicTree = new GraphicObject[1024]; + public int GraphiTreePointer = 0; + /// Interface's resulting bitmap public byte[] bmp; /// resulting bitmap limited to last redrawn part @@ -501,21 +503,14 @@ namespace Crow #endregion public void ProcessResize(Rectangle bounds){ - lock (UpdateMutex) { - unsafe { - nativeHnd->Slot.Width = bounds.Width; - nativeHnd->Slot.Height = bounds.Height; - } + lock (UpdateMutex) { clientRectangle = bounds; int stride = 4 * ClientRectangle.Width; int bmpSize = Math.Abs (stride) * ClientRectangle.Height; bmp = new byte[bmpSize]; dirtyBmp = new byte[bmpSize]; - foreach (GraphicObject g in GraphicTree) - g.RegisterForLayouting (LayoutingType.All); - - RegisterClip (clientRectangle); + LibCrow.crow_context_resize (layoutingCtx, bounds.Width, bounds.Height); } } @@ -551,62 +546,62 @@ namespace Crow return true; } - if (HoverWidget != null) { - //check topmost graphicobject first - GraphicObject tmp = HoverWidget; - GraphicObject topc = null; - while (!(tmp is Interface)) { - topc = tmp; - tmp = tmp.LogicalParent; - } - int idxhw = GraphicTree.IndexOf (topc); - if (idxhw != 0) { - int i = 0; - while (i < idxhw) { - if (GraphicTree [i].localLogicalParentIsNull) { - if (GraphicTree [i].MouseIsIn (e.Position)) { - while (HoverWidget != null) { - HoverWidget.onMouseLeave (HoverWidget, e); - HoverWidget = HoverWidget.LogicalParent; - } - - GraphicTree [i].checkHoverWidget (e); - return true; - } - } - i++; - } - } - - if (HoverWidget.MouseIsIn (e.Position)) { - HoverWidget.checkHoverWidget (e); - return true; - } else { - HoverWidget.onMouseLeave (HoverWidget, e); - //seek upward from last focused graph obj's - while (!(HoverWidget.LogicalParent is Interface)) { - HoverWidget = HoverWidget.LogicalParent; - if (HoverWidget.MouseIsIn (e.Position)) { - HoverWidget.checkHoverWidget (e); - return true; - } else - HoverWidget.onMouseLeave (HoverWidget, e); - } - } - } - - //top level graphic obj's parsing - lock (GraphicTree) { - for (int i = 0; i < GraphicTree.Count; i++) { - GraphicObject g = GraphicTree [i]; - if (g.MouseIsIn (e.Position)) { - g.checkHoverWidget (e); -// if (g is Window) -// PutOnTop (g); - return true; - } - } - } +// if (HoverWidget != null) { +// //check topmost graphicobject first +// GraphicObject tmp = HoverWidget; +// GraphicObject topc = null; +// while (!(tmp is Interface)) { +// topc = tmp; +// tmp = tmp.LogicalParent; +// } +// int idxhw = GraphicTree.IndexOf (topc); +// if (idxhw != 0) { +// int i = 0; +// while (i < idxhw) { +// if (GraphicTree [i].localLogicalParentIsNull) { +// if (GraphicTree [i].MouseIsIn (e.Position)) { +// while (HoverWidget != null) { +// HoverWidget.onMouseLeave (HoverWidget, e); +// HoverWidget = HoverWidget.LogicalParent; +// } +// +// GraphicTree [i].checkHoverWidget (e); +// return true; +// } +// } +// i++; +// } +// } +// +// if (HoverWidget.MouseIsIn (e.Position)) { +// HoverWidget.checkHoverWidget (e); +// return true; +// } else { +// HoverWidget.onMouseLeave (HoverWidget, e); +// //seek upward from last focused graph obj's +// while (!(HoverWidget.LogicalParent is Interface)) { +// HoverWidget = HoverWidget.LogicalParent; +// if (HoverWidget.MouseIsIn (e.Position)) { +// HoverWidget.checkHoverWidget (e); +// return true; +// } else +// HoverWidget.onMouseLeave (HoverWidget, e); +// } +// } +// } +// +// //top level graphic obj's parsing +// lock (GraphicTree) { +// for (int i = 0; i < GraphicTree.Count; i++) { +// GraphicObject g = GraphicTree [i]; +// if (g.MouseIsIn (e.Position)) { +// g.checkHoverWidget (e); +//// if (g is Window) +//// PutOnTop (g); +// return true; +// } +// } +// } HoverWidget = null; return false; } -- 2.47.3