From f48d410fd646452e691ac9fdbd1d70961414a7f5 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Tue, 26 Mar 2024 01:07:24 +0530 Subject: [PATCH 1/5] added arctan, arccos and arcsin functions and an example file using them --- examples/MDF/arc_functions.gv.png | Bin 0 -> 58428 bytes examples/MDF/arc_functions.py | 58 +++++++++++++++++++++++++++ src/modeci_mdf/functions/standard.py | 47 +++++++++++++++++++--- 3 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 examples/MDF/arc_functions.gv.png create mode 100644 examples/MDF/arc_functions.py diff --git a/examples/MDF/arc_functions.gv.png b/examples/MDF/arc_functions.gv.png new file mode 100644 index 0000000000000000000000000000000000000000..4dccef05a35328f00c4bd945ed6d2557ff696d78 GIT binary patch literal 58428 zcmcG$1z1(>_cn-91_F|bq=HC;h%_ju2nZAMxIt4^QLK;ayy1N^sOS-$e8)hB9 z-+#XU%y-Ro&0I6{z9M+eX7Bwx`+3&7*L~mXe0wh`a_1JwEff@#JECu2Nu!`#4}>p@ z8yN6Pv&_00e8c!CF7gWH3i*G0RZ1`l3MGo@tCzBN(d!fTs-e24$2;9KxvdZBZ+(66 zMLb({A*{@pr}$m6j-yhrQt(A`nk9V!;J!(nWWz*5jz#8&VLl7hlqAegd~fBq zROcLR1*l+?zTm>_L3OCoU{P<|<6ElE(Ra79G;fX%k-kCYi7RwNi;7nTlM?w8)lVW( zN-yLOo^sUg1jz5W@_8i)6vU6v(AV$YVU3K85D*fM@Q_k@va;R7DlIFUnVa(n2*APc zs2ilZN%hLZ_~}g@IIym+ZhfL6{5CQ3F!JEk(5R>f7iUNM{iz?Y?y;iq@~-UP6;h?Z z@^dD#adP6*a5wKtmdbGtd z@lxpPV_E@$Sl#xpJm)hTv#JAmb%zxiCue6EC_y2G*O&V`{PHuy-rRx62Ho$ zNk{ADp8w1R9V6qs2abT|P_|k}1e?cA{KvyQ)Ks3i%85T;1xH7Bzf%c+q(JKQ)~P7E*@%)I|d#J>=s2$K-{Cin#r0l{_`@7DC<;-B#{ zD@!Y@0>oRP8{7GsOwpkf>}7z|O&)x7rY+qaG= zPN^Ufs>VB7qlJd!4r^H*k?h_b9q&}UA9>;u857)`?@bgLsdnadJsX>XlN2Mk;N%i; za&^}W1QrHrdl*vz@-;2CDB8fJq$H=ECSoj-XJ4d}Cckpo!?Gp?rn%CBUr7vZShX7{bTb_3F-z*i*FlIHQwfCO5^$(v*QF59L*OJ+e zzpSv?Fd_576&m)e)70FZZ(ScN37DVP`FEQ|`G(gcfBqDE^$Jb9*}q8l9^8$U@E5GQ zk&#G#$HQUd*;7L$@LLi^0zN(?S?IgxiOb37=;(NQuqL9Y7?CA>SLmzqh&5Tu^0L8b ziFrV9a4=H?Zo-F=Do0LxdwUcvE-qG+Vb%vC)Y+lTYUSJQEH%SCSpPX`NC-h?Wu?je z&jtxX!ov4?te+s){;y}H>QxSGR*UZv5)!tzw*%33G5(e#jHP8{Ov%2$I%!K*8%9S* z=i=oZdy3YJ*3{g*SBFV4%=10tPeX%;WDL&;50(~c=T8pyB7xgfueA00(4^^f+gD%X zhy3_a2TwZZj8lo1H;N^Y(xg_CwPouy)vMqh1A*HrsuUkTe!Ow>CKWR?HYX=1toH8h znTBg`#l#*ydGa+V2oHtaZu(kKP|)#8O5FC*5iKh#u3KT@v*%{xZ(*mxCej_w)v{h2 z^eZjpnzWm{GdnkTO)+2RCWePQZJZNcVy~k11TnL!=GtIZG8ZZ;>P>9y$Bc~MHzz9a z@7*)7G%hXDrJLrVo01dpT^BQc_a(<^lxaESYlD1O=X+?Fn8;l+-x|ELyIbGd z`mM>A7_}!)TSVY=`O&Rgx47)KDc#-Osi~=1VcyGaHrg_Bs@sHd_#1Hq&ubH2`?j>S z#H&@`(SFod%ZCFWDH(b1%XIT|>%BL(^^{b~5k{$$!y)z0&ai@W1i-AdN6 zgCT^3giWwDcJ}w@`=kVQ`;sNj4{}@=4u&-J=UaZbZ3elXEQHh1(alg?9b+~JP~_Oq zA%op^8$(V{iWG%j=TGFX+r#EiDm3_kg?<;gi$nz@4Opj~kI0&unmoO|=VoU=k~9;O zlA7=&%Vo$XUtyx7=b4N=C3iX2igj3}L#aNVz0Is%*|JeGC0U@?d5_PIRg4Z6-O5-A zOAN2=^D39|Qp@iTII($od3{&S#)`96u4IzmA-DGa+7M3dYS9rR(^^5dz@tZxJg9`f zOhagarSU;*=kjdJYNj3?WzzM^IlrLbKHEn$=hOX}8E=YYsW<_-)${YcZczyd-RW9) zm^WBbQbI!4;rSQP+dxW4sQ!&E{VYQ8awlMYw8+pM7)OstV^Y9^5`zijz@RzNKoPFYAp>)=?ec z>&t#2$j0^qZgYBNrPcXpVrUwnApe}XfGQ+ZZm|9a%+!qtT6mIi$topg$#cde?TUGs z!rs`u)y|HPmh5J{h;^`j;|hH>mMqVG?E#Th>vVs`WU4v_GCmkx!Iv}6Z%48 zLPECD#L(xA4C7E!LVP(|TH1p7oYd51AKfCeiP3#mVq)UQlF2Xxxe6K|Dnm zFU`-REUGO`RMHZ=%d9Wu*G+*RL3UDv;Mx{a}_}>geeO zMMT`FUF?ifDz%`Zm5fHAHAf&B2th`Js1qccFB=MY>ZlNj&noSZ*6N!(5P`42e6}BYT<6R z)P;QGaBE5mE+5INCFC(FuEm>|m*@HA%WfmS)c;6pKVFV(YvU|-#oVr4A1N>;{A{2J zbFOEM2UCHnX>LB@lm)>J8He}w8VsHdDoY6uI&;8%TfoU7Z)J0>&~S4{*4GP-78#3t z{P+;U@IdxfL`;l?v@{+}Nj07Sx*!;_TTH+3)qtgVAD*FCcsOz58@~jl0zCybA-LQSyP-RQ&QgQ()n`9% zQ(|GQouZsQr&~@{WR-CqEXC?)r)#qidMgh{jgeo`0?wneL+F^802`-Rwd&DG$;j*% zLKPrmmHPaE!Is9t3|UxxIdJuGG%HfW+8Y!~D=$XaYftGk@&W~k#o zc+gI);Z(%6F$ys0XL8-5mB3xl0^ zynmIVMUzeATxeb?MO<>s6V;BQo(`XxW$-TsYL~B()uOz+fg<8~Ll9FR|KO0#xpv}y zLeTV*cHj@pYc8ziw)Wf@9`8(Q|YD$We1s zDlqzH3F3=f#lgL%KyBRcmyrZ+hZMHNuE7lYw5CM?wC~m^KWKajN*SV zjvGP(sA$A#wZ-bc;sE=HJWIIM(97f>Fn(G+eJ5)Q|Vndj1lA zIdaPuI91IFc~Q zJoQZbN&2VhrjK}MiJTc5)^^|3pQPt+4T>D}&?<}Z9x}h^KFsCD5{Of-c6Adp5lFyq z|4|j6NUQoTM-cgRtF2#T*)k@UlfG=I@JYSw}We*0c5=r%` zjorx`OqyG;{5iAKR*~DTv$STm-S$}GXX9_t;8l&XP$wrR3tL-S8k!~(N9mxh&%B6L z>rQPvp&PyX9C@$bz0wZW(7C*DFL0=rs9pHN#Hs%zwcjekEy!rlDbq~FR5fNlqI2ME zdM|6cv1iv=MEjsPMPzxtSJsv3pr5FqCP4ji>Eh0N*_qN1M#ZYBQ>#=4xv_8Y71<(w zByzgfrDSCZAe+ES{LiE1cHkl{BmA?Kw6N^T;7`oRJP<5P?_%^$KGxp$;Be|dvDWeW z{t+49!49v~a--?Q%NQNK#g&{O>Fr9smt1^Ahi_JOy)xMlza@2Ktm4(Y!n*S(zDgK`*e@g=d&QQTioGVIPI2ai&%q)AE2Wh-b~ zBOl6dSA0+5ZB+lfW!q5lt0$w%pY}L)Q;(vbP+&Z>`$C%NxY(0fAgqb6oU<{du2|c_ zX~8^Y+V7jg$IbzQyLamX1TR})AaBLRA@~1H5-09!j5=5wDlqJOyji&?*>^0Wpr8Oa zwIN@(9S(W~_2G|4BA=$52i_4AKPP|`ehAHlra~(epVuPz9gDMs za1XY3OSap$EVe0lR!kbx$1DFm748&FOe&~tI5hVI7VUl#+*vy{&Uc5-f?v{DFUW^H5;)3s2h31kk z0|tDZLp|9X_Gs-NF(yt8SKh4~*BLxhXS4U*MQ;RF>+5MCTVO)hr`rc2xJW!P`{yB3 zV7<|6np`L1b?&V2tjHSd*n9F;4Dm^`ebY%vMHHO6xtFEL^e&|82@J~ zwr+{(wW-e33$Db%7>H!J&mZ0VZ6J$x$-XK!W0AiKv$L_JY#`QBhGw#auTeJy2g?&t<=>BkT=#D&bEZ$nk`+7=bp_ z)%5Ibi<=tluhd4TDL-qn)wv-JS6u-1-|w?ypg8gxEZoYLEcR_BI?7JgUs1k=jlCFU zUaeK{d6SEWXBP_Lz#l)fcGg0rE3YokOh)p({{EFlK~gX#CX5;KS>?)*16~DF-qg9X znB^s{yY?j84?C9C@WsJdcFCH>@%9V`3p+i%4-k2Kv%V}J^;29k$D_3_rlw<69#r!9 zj?7LD>@%t{076D`P?c~+J4Z)$n{~yXoaSAyz!{n6T(8bFif%5ITF!B~Uh+ZhXVent zg_|Jy18w(~WMf_adleB&)B73rByh!CU2eHx#cpmWpFe+oD=C?MZ~!dVt2b|+8uh0d9SI)v%Q)@#ip(!9aVmB| zU7m3WzK%D zV=i@tM^;u*(SYQUJiflZK2|70+81dbsMY$Q#@*f9YX$ZMDj7G)K`0}?0>}F%@yGY? zSfr$+7EtF@RhO1V0OK*ex#8_r>=a<`~sz7(M_5)l_7HybF;H;YS=h^ z?TnxGi1uxl=NQi#T5hgl4OMf}if0`jN7MQWw)xeK?(d#%UEB2^k5~1FPciIDmrosw zyu)cfE=tE!3TMUfZk>zkK`lh8SIaLxbg~PY)?6YZG|FnbpJ$ z4e1yZvZ=YaBCalvYN#JS-W^cT=ml;bt}X(MZfB69+fwzHc-DvuH%Uq+`!_`9-maOw z6H{3eGr>$eD;+FkN-i|p^;zkp;o$2RBYP+ve1>X)Mdgd~uC03j>?%sCvcw`QwVASH_Nz@JXU zhd7Q}I#LEJw;CK@C{SD^-{IkQn(x}xE~&a%Q+2y!>UVHPw!rps%=DOa$##r*Zx%ml zh1=BvpZ>e8-ND44t3RJAy1KjUsXrwPtGOXuzBWiKK0vSsfcBBFHDA?e!&orFcmN=+ zju&CgDq4Kxqw%SlN>Wb!<-XoZa&w&0BCF0kRoG5QTmiMY%9?^{t2U%k;6Jq?-C{j> zjs+Y9@T&J&U*M!xtYueh@9*o>x?O`B9urbB&;ex!@-aU$Rm*}Jym9tU*K*h$_6;6B zdcS-QW9}oRm&ZBgo9_E?t+;YIa!HzviyHC_8M??-^m6OZH#Y1WH#|L1{+1Z-vfr z#VFhSS3fsde_R@g)aCGA;Nal6kyPXckaAzIH7yyKR2|FL6$k1Bc#C{KE~ro?pPdl3 z5VFTdnJG@c#d<8O>D}uHn)O4E4v=MM){C=B6gE$tuK@!G{lbfBg7?MaC0S zS;_atkEAJAs{v(Vw^X;Ch=^I$z~KV^eUJOo@0B7gEv@qvDcAh;E{IGrF|S|0{!Y&S z)9(T2?EJiETpUGOS{e{L@=-6!c@+4i#AEL&&`z{*8pdBvjtQ4+N~p%ix!>i_*}Nbf zL@h5Kn4_gA<-4!fcXy9@d(?#}T}Gv&h<|P{A4-h_`S?nuN>YXD4XSKg2?2M~X`HBlWzN$76csE}8WVvPE$#e@q0MpwA$-cx3W%~F zzQO9m-6R7|q@lmBoGnQUKV@7Zu8vqMOVP+rWJ?sCcSAN0t4AR{0oj*&Pzr(zESo5! zql>+`D;;2r3xRel+}K~~LqkK0z(a-rz`{?SJYjuco*MG;WOo6X;PsbwGqa3`vXig8 zy}g6u;<{_yQ6+Nnes=*0`axM)%*coyN8p$e$~oyl2^) z@EW*0b~9Cb3TGwX#gn}y8su)b_~~^0WYdU$*k$M0L{o9^XF}y@mXdALfS$QVda>5> zPk-gY%Sn9Z7T8Q?meOrR^p@5JoAaDCryO%N@tq3rH-BQPsP|=wD)d3k6!FYZx~lCf zu)&De9%f{GPRFb)HRt(;W3l{>xg{kzPp{1aiT^t(X<&Gx)b+}R$7bDt1e2JENbf@o zjJvtF_s2JUM2#7&I1ztRHb2L`gM%hb*1*U}rGSE*7>_FQfZ=MnjppZ`n3!vM5x%yy z`@If)*}`5^L<)2IbwT>$cme_fr4<#B5I+|4(~0V*0+XA5hyeb(v8m}UA))T5{2`{0 zwY7DqAYL2ZUxp%sTU3n)nXR;eapqp3EGwLOPt(H?TjfOqS;8s}T8mW+;{J`)Ymv!> z`oUpOaygep(Gh7GzmCtAxu&L2gv&!~B2#qg{yf6v!gU$N3Ap1`hEq>r?(I0~9f!T# zdf%+;{rj|VB{cy-@enodj3yW$P~<2MfA#_T`APd+UYtewkAV6**Bro!APeJ0tP-GX zj25wvslR{kR#n9h5CK$Pc7qw3Oz8ls7Br!8HbD`;2*#5r5 z^BTFJ|5lRzVK?5?SKExq2qw=do8^2$*UNA{ByFu*$dqm9@Vg*)NB;1}#>RaPBZ3Os zt>S2uI5!rKIIKH^9@w~Hex_oA7-e!jwRd_c`Oa&2#@E>-yi`+&0m+8J`UcN4<`~>K(s`0^1auqWtO{{q}>JJw#?l`R6 z>ror#v=5CF!IUCv=)ynsbAj46MCV^^+fr8PByQ$)%%I`@S?rsHFlfZophQ3b3S(3f z0@)Mj#+2Ky=KjkIfLc~o23iq5KECkBj|ob|A0zX_nt`YNS&Y=&Ea%>YNCS!g3B(+b zq;G&S$Igxqik)!`Xcv$9`C}Y6%bI03L0K`Fs^(u=Spnve#0^Bv2<3G8wqD`Qj_j1A z?zjJ~B;OyW@ZHpR-kRwD!Sh3+v$tI+lPmxYL)njPue*gXrV)Yw9->dr$K2apFg`P zf*0Sa9FOn_316p3#@u_Va|7%Tjg5`0rlW=QIS5N$)J1MIXL7ypB<8{Vcoj*kcz6#WVSPmN#(1L&qt8r_E!@1 z>qElA^6mHZfcDXOZaFtGaO#k(f*n*oor8DK zk6|>RR^}S2nhJmQ^P>TLN*imJP}fEv^fjX{zQ1VIGs|dmybJ{tt_t;q-#Ra?!gq@{ z|5_n@V`%XHQqic`8Y`$X-r3ZV4 zd=B2>i8NeH4cId^ba5F-+vIsx`1$j7@Ikzr=!4AzYg1OKJ?AlKuGF-&QAEetPe1^X z&r*)0xrRt%2ek|8QqUFk?K^&Q_=03Olo?f-t$rzgb?twrIpl+<6h8^BId0AN?Ni7N zNUW!~cYjXm)w+1XhKu7X(It}emq?c2AtV`CL<4-a8~0$!e7TQmN^O$a*{ z>3k@#+nF_rD=7!|k9Mo-h@6Uw>W+Le&jR*l>IS3YP(OiOUEv>QlIAPfv7B_+AIL-i{|i5H4JtEw&tr#dpC zF4V$#a;!TvE_aEM5-$cesX=ebhGKnPb>%`9PuO_(=_KzI$)b1vf_@#qzH)uiea}!P zm10@mkQuS;XK#8zI-;{j8?LlxXQ|qk_IMnCEM--RwJE)Fi-6CxxVkthFd9gA2oF_B z75w~Own(c1!>s1Q=KSKql&IlwW6aXpI&)_Z*9!y)TeZR$&(U`bPv`KA*^!J2SMNU7 z{ikTIuC7o|H-Ws8<>LI|CgT*kqvV>d@nVh#?U#Y^TLx)s3nvvzv5q8}UM0-_WV~N0 zDjbX0i{X@S9^Rbi_*?9CLOZ4U?Zc>N)H4c-I3AX@SxwKhNBauG73#5qDvtx)3}-`d zg~peu-7DW9xf!_|DuGL&0lX46n%}tdkAz9c`+q12{ofXsL@nt|_^^TnJzoos@sJ=% zp-}3;>nL)H{nYK%M7MlR$?A%%*zVvx)f^IiLeDm3`$!EFj^YSLlSaWkYNCH4Cy~8w ztTj3Mn5*`K#5p0KOJWCpeqf0`)2uNC3#uYdTy}Jy1-{E5e+_CEL2|M zs|*~`?5MVOZ^aoM&PFAX-ZWj1>bl+u$U z3U;+7u5rbn#3(li+qz}QoERS=RVU#Jc};z{X7BoPk8cOF_k6_nPcDDO zP0F9(4Ox=`2{#@=?QT*pcH5VWU7OtWv0u~D&e_|WqfOsL^kzAi(3QWFyxrqPMZRgT z-xV3eSE5pme=;lhM6w+@HSq*y*ZAMw8TIPzME9ur@tdL;_h`iSp4v~XsWuPKBx5?R zxEF>msqX*6EL*uySXH$_3}z}d?94SA^H1Gp*PC8gklUzM%9uVzS3KqOjPszQXvqA= zs!e*HOT3u<<@dYg^(0zvQeGU?iWg%<+e_xtbuYK~-`W|{RUV+O|3v+7I@6`m|CwjF z2SkbLPf2>F4>BFGo7;y0+Z}IjEMu`Se#vq9l4b7Z?VDYr;Am%m9gV`P=2C$+FwwE0 zA#QoFF(2)dTaCXUO$MKP=DOI>OQakjj@R;-@o?g5dbrCs%y#0M+mOdxs{p~v{dK98 zfr{Jy>anHPTkj?#t&)eh3eCP5Z)NMO^Pst@)I_!N#0PT*P+ikx?Q!a1Dj%>MqI&NW zn;{UtEKQ=X&rG=y?yR%PFShrxq(5za6_g<_I+^7DHD#EBODEz&Yp)sp_zWC0ua)1M zbuTTR-xV0m4462494(6G$`ZqeIB*x)>OYHpfEwVMt+MqPtu}`i^unt4hMcr)I**zC z*T;;CwCdu?YeRh7<`dTq46iGxbjXM-he^AY(5^LZx0`McRcJNkbllzC!of^D zur%xHNlBEXY`1f)&5EI-K5xszT9>{+04r-b7sM7Qp*UL1Uuu2CJ~pVgs}@2;5R~uY zJ*lbCS>cQrqi5sc)v`wX8ld=corl}xX!a3`&gShLg^|#O#l;|~0@f4^4Oa-;6+v<% z$-Z)>#vlmPP^_+r^te27zdW5{o-FsZTe`UyR+8sDeOzO`t2k7yN_tR}cot&5HgkK& zkVDneNS4@2I@$lER_VBz$^j3wZdDwhOz>*&uXiWH0vH8>(P#L z;1pM4sEw&tZ~@1!I`#W@#Z7iDo(xlu@iXbaQlHr5>(LZzY?q@M8CT>d+iFALx|vH&scz<-1?{I_d3Lc~o>_ z3SDbg5;ZTeoU)H|`y$GG?AM29EjPtjTtB@NwPE(U8U9XJfBj}dQi>px$em2v5e4D* z5u1;(`LESzxP4chSa95wK1oUcy%<8V)pwno6zeYWw3Nomw};|3wdV-d^l*XXOv0x~ zbuG+RYDiXLbb*K7-xtKW_65Z~L*{{|@p|-FQVj2e>44kQDHjgOM|-|nA6={7b)P-h z|NAPwBG-JEUN8VVmgh?ht@YoE&3JOD$jFo$F)=Dy4T>lgs>`;aU-5>nrGb#C9G-SX zvg`Y2(c|11V8F+r5Ez%IdS=*(xu5imGwztBCWZQuZ-2ZRK_kuV(WY-QjaBr;=#RWT z%5UwQp9~Q;NnY( z>OBu1yb#*__QdS8S%dYtZI%Me%sS1n3#ZeA^zhu3)x_{z%fcZh8(){fZ;GnvvETo` zStf(P5 zQnV-jRTab-H8PyC_%Xj#=*Not&+0$U{72N2%Mo^)k}LD$tQ;Oz1dpHn>^Iu~SZ|Pc z*(qZ+?&_SDo144xY_p>H)=c?(<@ax0-jR02jA<_|zdt}pYTQ#LQ`>@n{uYz8ev#>2#JyUeqNqISEmFr%{ zs2d62T~c z_x0htM{I0t!?|~5RbLvqP$k);7h?;5eIN#&EHYkosy$+G5j7?=1%h*!8j1m6E&8e) zZB@QJWR_{7QB^MR%WSwCGQW8DDsIb=-w+GZUorMZIc{9CAamYx84Tg+_zZG?104|2 z?y>8A&uV~GuRQY19V!BLb#-;{M?yY*Q?F_MTVk4P6wSW?@nk5emT~JPRh(t2zC?5;~8%TF|VZnoo{@Q7+ze(5=~1P-J`-gtq&qz~#aL%#@`k zi&3UXgLHq}qPfh`ge?WImr#|r4gLb*Q3AYiVW8dY^a$gO{4-mB?Zj^(Vp85l8m&MI zKsra(EC43{JOgbFc`{&CLXfKO4c}otceGNF>~;{k(->J_0Id2cy>O%l#+{EKcQ}D3-|2Y9 z`)>@BXDPE6*x^<)a{m6u0QK+p)vv9Ym#JqcBWL`3FBe~vL$jAZ)#6m#GnEGTQ@Kl4Q8vg?=H0Gm6Yg%K!c>6!4KPN z0`~00aBwdJm3ZUUtyv)YzmstI=*Kw|NlBd;yr+8AH<$``9bjZkhI8Ga^a>0K@$~h* z4YLCp2dRjNh>AC@C+=hLH0tQ<;}a8$eERgXtE&rnfwQfeIJn3N4jnT*YEiIQ9HnL%4pi@2>Fw6-n~{f7M8Uvi?7C>HXg>$^Ne|_m#)T z&rcTs`|-&MY?u$IWm1041Es_uBrvL#7uK~^OzO@rv97O$pUfOfs(4G&hJRu|cADae zRVr|6zT%7{>lHC2`-{*5Neo&Qy3>b1_kTqOdlHy8Y-ZI`&9(O=vM*n{X9*j;A6j!Z z@*z1@Ki}_@a@uXB<-0tdyCbdsIz2bFuDy~-cj%9SzDT>?W+@NX7~_}vpz;`3^$*vi za!%YttG?_ET(D@H>(7rAT_vafE_Huoa=z+tCr1Zd>0mfwb-i@*)c`XBF5=mz`M015 zeq3WE8P8NIc*4X~gt&KS(VUM%Dv4c<|cKK|e(y+{>mzg_MMn z@VGCS5RfjW!~lU&l)G}Fwu_{#8BC7&RbjeE>m$LyGqSmy+d;d+SEFgPS!J#tPX6Wr z{Tt^2v~T82G%nA%MtFN_)Q-N~%4$vR=E&>>ze=QlGY{m-B68zs@b*S$;CbOnwD4|K z3d8m$G@1R4v7z)ZD)Dx3XikF)rqvom6U}FjCnY7N zTx6sxA4YSO#y08kv}mJbp5z?VL`K!pKrlsOQwVgJmQ3jF*mE2@=Gkm0BO?S@B`hGe zjHTT2ZQ-$q7GEoo!6gf*^5#A4oIpWB(n|KFmH@w$5s8fhAPa(s?~B)Yy+Q&t=Y4_? z?8NV*W4)|sHFmXU4QymEZ!uE`m0QwgJD2|;vk97y6M7={t|>{Jmi6AMTyYXiUOV)2 zAcu2xHgyHAqUYeh+Fu=LpVcpkFa26X>+*=3maHaB0OeH*P40H>o6Y56-{pO@>N~e* zOpN&WD|xh@E!!kV?7wp1s}3G>s>r*l7rlHyB;+Jd&p&EiugRLb*=Qz79XAI@PbjbL zP1zZ-)X+BJMa8})?zSNM<5hBFUw$Mn zQ}o2Uh1l-5iy0nKrJW@V#0Any))wqP=q$(k+c0SzMLzz;KQSMEUe6r+D?^_*dL!%X z0tGkJ=Ev1VwJ%w();uxs-!fg5zUrSJSt_KACC|moK3v=2AJsJ1&)gvylntjjx)+bM z^(y6i0zQN;0EN9)Ix5fW{UQ|3zc;In)CoyRGXaChLRb$4bGDecxQrNGXl!iun*j2x z#g52CX=&+xc+??@iHT21{E|O`(-(Q5a92i> z(!ffR0o`O7QD)_$pbezKzDR@HmAz&Ju#ldMt8}m&dcV>^7$S^^cAOk!n-T(`48x1g zSpKouy}ZI`P;fauHr^;Q8lVpi3rj{utA)+YZ225@Q=UITXZ?y>?$YUl7h$R%P-dhP zGRUXGo+^S|4+Xf5+JrA~(&;W2r*b3e((h9xC883gJzQm)B1h9f2PRSA6JKrE@q**)ie5QC(u2zDvA=o}a)~=4VyJ)-I>q5KeoyAQgk0 zpX#~K>RFn=mGhERD)FFe0`hvWzWe>3w0B)eOMV%}vwtyB;#9nPbYf*BK7Xx zW*B?ms82t%`}_s+u8cZ3*^xgN!Tt)>kWD2&HuG10uoKnR(k<_cgPz8G`Rz41=DLDPHR(Fj~%LDpvuL*wGm~wr~e>%tK zyCoi}L?zx&5nhudZN)y|znqx9agI5V;<%5|xP+>G3 z&XRtfP|u*=@N+ePo?PLX^QrX!m>re7r2qhgNK!)T&43K9JqjI?I)}+8^|x740Vz$b zBcPEpU?ge=$%YS9+FQxV%Ki?KUOhkAyY=3@a_7rR1SIJ}SnSZ)(+>iG{%JL|P8#*Z zzf9iJ@BFDNrVd9#)JiWbl=UOyl?M}1r}a4O!O%L*_ktJu!SIk^*N9w$1Nvvn+k)mn z$cZfWBjuKcA3FanWD#=vR}wKi1M3Kg?ebuvlUeGHQxH?Ki6hzLPc?Nl9Rk13dwU0m zbeR;%$iu6etD`GM0hT0^qbkVUasd2{z*r}D_`35{@pa9f*GO>zJ8^1*EnoUAJQlj7 z5T2v%COy$uX|bk`i@zcBbV;)33WDh#CFt~WGfUI!YZU1XwgSo0&%NoBtUuX(TxCRT z7r&5ss5q3rmI1?p&crn2w*7`ro4&ul&p__T#xTI>E-RK+HWvQx(ZVw6D;AyV{9x;J z5VUf(H0Ydaro0`Yd{H5A<(Vmq=yuhogC&qmz37+a+llu!Da3(hSzP9NT8Q**mx~W4 z9XPT`4fFh&DEjA*=PmA zPYdB%UO!kZ>@H81t_|0?3X0JoWvH_#4r7d3sJgITz*Uf*Es%Z2U9T>Z=QgX)%%E8( zg3Iz_%-Sae0$mfHaz=&>Uh=N@Zn+7sg%vvP+(mhMd!Ke`#xDFo^RDq}}_8-BVrf z4^;0Am>9q9B(*NtZ6tU26z0mHvFm$l#NrbUNL3yF&QGVAcYSXwAxtn)vi(n$u{L`e ztlzQZNTOgFxE2_yC`eso(&&V1;D|HEo%2XxEH7QPG_gNPYGGl{WIK!~d}Z^;bI&{b zLZaDkrzUj!zQ&HX8S1Jk@+p6Z79A9D_;AEd`EepdzmjxBa|eTKO<{x_4^Idz8(_WA z8)LZoRJqs1i_|i~(V-8WtI#WjOF_}ie>9G|j8>5Bz{sJ~f{Uc`r35b;p(=;Qsz=Ps zn?9EAF2UE*E6YMI@>7k~Y;5GNuo0k_mJXLEaTqZm*AsNgYnhv08fTb{&w%#F4UVoX zz-3b&qlYS=?w|;qt+SK6o?AYC7f}oSj7sI!bf6dK9gmajRY7Ae+P-2|o2=y?>r?sv z@&eraA~t6h!?S9sd9pOiL|^kJ)GW5Sqmu$U3zR%F_2SnAeZBDsa=!-UOm9GvbZt_&cNu(UH+zrb#_pALLjh$fySbm_0R0EDXQsz8~l zq@?6#c9Gf&pcdKW8_8|;7z}fBP`WSp^KMQ)~o8W)qC%Qhq1o{l!y3#wg_jyI|xw zUtn>a0kv`5c>`e@?-#C)`VHX-t<}PVyB#E&I z+fa6$D;X>##Gzlw-vN`I{-*yzCe~Ef=bgUDe&Z+pM2wuW&p+rp$_}9amHEW}pfH<( zF3KHTE^2d@U=O#9jENyLueo^c<+adx2~Cfgig}--%m*j#>#BVwlv8Ezg>JaDwRUd` zm$zWm1iTS<^XARE3AL-))yXQ}H;Fqw2a2;W=JPd;tJ!YXOZKj=1=pl><*@zbkpfx> zWWYYug`l{_GC2WZQ=r{`I8>CKK}AW40)475Pn-oCx~*Gq0;c~toq@r@4bWX}Fpy4& ztZ;a3)}gH>3fwo!)@EV33svCUY@V8m1K$Vz8J0ixyk{isohHLmi6N#J&D#Hncxmw< z=~SaZfvkT-{ABchC*og&1!@*Lo}ZtQfRQ53^^zN(R`NIWM|*mDZV#%M4~%;B1n&BF zc3)|Z8{QK4xnYpeJ=NLj^;wJ`M~qHPcEF0M%*VJBNU4V2*PrJK9qkX` z#o{&*pAE7f3|ex@84SqwpYtZDtQ`*D$MTHk*0GrYkk0+nVsL#p-x!pbY-$1Zk{%nd zDg2oOr|E1ypoDzeE%h%r6kWDc&dpG(*@NG~9+)X)SF_O8L^TGAiX19 zA4gNJaiINwx;(cB<21DQQ9gWF-+wR!UP|b+c4=~8oSB`yzMS;V$JciRy5-?xEohjS z{Ge7#NKB-o|68-nQ2h7!^c2|vic3x|3H58u`R;Axv=r!f>jC40l5B?b-@>q*1Yg2 zzWCxQuIkJ`Afbyw@N(3|f#!Emk8tX*Th|lZ2ww8PPn(T7c*WnuTVWd(cc+ZECU)U{ zZnT5N6Ux8h%Ym=bexYMgd+tj*jI5j4u-6EFG0CT{ieYI^!?R>`DL&JZeC>vbo%wGflbSakyqdeOx)5J0d#t zGB{&HNUU{2`c<#08-ua1vGN$jCP(^+6U&0W&fg;-cpl6D!uky#4F(zf(M!5Tp>S}j zosZ8Q?Ly?ydbq~&H(bUjm;8Zod4HDb`wx8|H`Z30D9nF~8Cf#d{2p{-@r)B}E38hu zKOuLa{)BU|ig>`hs8?aIn%F2InSJ!~DzZI^&3k4k;A8qz{79#t!{Y=#`wP@WdOwt- zRm|7jHzzx=ABe0s5iFV?e~pvr+Md`UbHXk18FR$GmTHBQQIYZ>y?sz0%jo*ZFJa7f z3U`HvYcFoOmt)VXm{);Y4ilJpU9c@7KTiW{G&Y^Dr^39@{DEW!YOXHK<+D{=tDVol zgoX+Y+9BcLD&>Jtq_x31?uP2|7(z%x5RJHEvB`bNt*|9oftvZ-*O#Lxr46(+dK>|qmQ9Q7?@6>l)hd#0qo4y*(P5w&^2nZ zvf6EHw*UUlFj8unD6v!qu8}7U40F(2OD!lE2X!HI7_|UP%d|#4x*Lt$c@qL2f7)mz ze)doEvy%8B`4KQ^eS8`@44-`h-LXhe@I0%1ggn-(Rp(!bhYt}b5&O+&PW~!XQfiSn zgN-;`8kgLQ>XG;67V``39Q6vTBTb)239U+bUX?`^+xPBbkg)#N{gBi*HzJZzlg#Eq6WsyLYkF<514AHeQ^**=pc_beJS2?sY!KIJSL6zwqoPdL;F{ zzO>GhxwD9>=r+lD-<9r}g-mtVR4Gc_l4auQ2ED1H!oV<G6bf^@P%h!|POf@RH=U(FbhbEp@l5m@wEX)qLe%d}=odAEQ!DzKm`WoAynN zYGr2l-JhE1ZA&}5*LQNh{pP9I?h}sX<)xv4pjwW`=7Hdl1X35ig1D=g@g|fjv;Ezh zdip}o{FNOGNj3r#_|~=oH)RNNt?XbKR{y56Z7f(*s^`}>w)1iw_JsKoIBHk zLOG_KoSc}weHoB43Ba_zqXTx9J2|6QzIzrrk7U7NC2Jn3Wd6Rbn}%Lb_~J-1EnV7r zN#=iJ?k%9QYP)w|uuu^&5RtS1>F!nm=?>|Rhm!74KrsLn=?3ZU4yBZ?hwhMW>DqJo zz2A5KW1l_t*k_-!$2eoWF;JdZYuz#LIj`$C@$LMy z5#NyJc1ZsKiY;o%!kqqg$fY@Z$Hc_ksvmn#Xj^F+RX!RA&n+juXMyXYp_l8JeWXFE zlU?IB7+sOk*wjP=1(Fs&>^nqbs!5MmH?*EVDPjr`t%rNN+~#ia-q-g6avBj86^$86 z2N7P?pB_n=&Q;|JSMMY288VmI8?YEFuV-z7*=kMUJzlJ#+~vj;1BY_5OI1uFSrd6 zLNNfNj*TI-^Sg*muo2{SJQLZcn#`%7tan6MHWB$=A_=V~yg35;H5yJ zddkI{y7L_|h*J&mC_ya<92|gCnSxa$%W14)7)&XMz>zq61~@6dA=0)`i5`$}t4!G? zuvR=)$)yLr0|=v8ff1m>U8~O$T0>96Yd9t)Ao3|lkV4ixuqo0m~}^;O&bwY$Jz#~p7VQIS z&ngf^SNz<~pTqbfW<45&_#*l0Ewd8f2C;uTs{yG}j-u+`=Oceh&Ax!$;)<#nV&;Ugiu=V}h_89q$;N~69 z=rC>9cYS?InU;XZ&;te-Je)?zhqrHVkXFCfh(kq5`3Bfu+i-q(3B<5I>fDTsMA+Z>4i}P; zD!JwL1o$#G9>E09ZR+o`nO=t-3)1cd<6CKIk73V(g5w%{pcH(zDLGsV=QpIT26jUO zmWZXV*^r+HWDb*Voi~R+@;haxpt`eq4!Qh?jEq50EmpJ4&B~eu>AC)Rm5U{Q1oBxY zaGORyA@-!7pC2yU8>|oJ`@q@&`PW|2&sPvBh@d!pb8~n_mPTpd`}bE{5!t%!a&~DC za_GnY`$-+hC#k`fD+omii?NE^7%?)I zkWt6+_hQOwke8dn7d3$66dXeHAs=4Ng-ak5y1p^Os3A ze>dn`X8cj~AqbBVT$c3o!h$~pE08fx_BuQL1JzRmjy8HPhvyYrRQt+AZ5$kIfqd~n zB@@!m3=kksPfz#s*dXMLkKLxg?1BF$5Dyr0ee|Z?c=kZ0RAU_E8p#rGi(a_Q!)RUjqRqu^| zsIK-v3bXq-D1~z`ZRjH|{-U7So6M(q1-B#J*(2PbZ*q%=< zB<=yE%w-3y3PdVHC`W^JNAtrVJWDp8UxxayDIw?~Snd$XIn;jPD!UgZ!xIx9AV4n= zd^v+)7v$X41U4`VO)1^n+>k0bsC8ddIWt4ex#uReujvh(5+R}hQG_c3c&+`F!p@DY zt%}fm4O@zp?qt`s}Dg6_|EE5GMm?EvXxj-xhjP@xU3{ zV8~Joq&R=awf9%RqCg3Wq`7V}a^!gpuu#I~(zlI|$Es?(_(7tL!(y-t5e^KO(^7td z-=F};VdZ+wk$Mw=WD-N5EX(Y+YXKE}VQ||bHGk9QC28cIaN93jheCr`CR%$r9PUTa z7nsH5SXfvb0GmLD+;G0@t)Boax(-H2{~Hf;9Qa_MtA7S;4T8#oawH<7NF>eVe8mTE zRXXNKOcd~2z4`CQjyaB4LVf{)$HBjEmCkd;5Q>9Pw7*8iS4KY#a*6I1*S)oX%uK|G z{P&$=G73LAgF6ZXHj&!?{LA;f!D=ZdFOTUBbv}?!SkCx2SOD4Y|5l`hAH>B(h6CS8o&s;#RKj)2({=Ce8wXTs*r+~7%M@MsN&goJnxZ^2;S z1*XpeWVJNj-uIk=Iwmj(kqML-gW8a0d*WZBXF??y2^XBB<4}?3XPN^AOxSltL`5%w z8s{S+^J|-#Cd^M!QIgKiT*ifWyZVdi{-{3WFE@c1^o ztBjQpSqW7;Nur1)jCH}2MOj2aii{tqRUt_(&%;G33>ea2VAcPp!U}*tZRe?ra2-f! zg88$f<2R$%0X8I3kch-$yeb0b3@DiO6cMG1GYt^{HyJ;qYR$P7XW8;t*&_|D~_!1WWdAwa0oF5Q-l<_ zNG6w-P{B}s>giTM{k2BpbX?y<44>?K-ydI}yMA`EblLSCPaJ_YjUdXV1XXl6hb z(lFTH2-txnD6l_y9onFOAj0lBA+zVrZy#8WS9R-W%NTFz6tylG(kr zq{1&}67kyM2N5|rkmaxuY-l{CExck5wmyseceLmM3rRW{bD<~1z>z!BL^KeP@PwJY z33)_2kT;b+NA8zzHtfsvG+<9jjdgtwHlTbM)i9umM<)PHx?~P1xz^fcw{~@dIV&qG zhZ1Ef)8e2wK`#MWfrD>GJ;*+^MCvq1QqrKnYnG+`BvYWKrY6*@vZ4YIAA2tZAk*CS z%J5uu1Y;?{>f&;UGKp=-k_3!~+Q6u-deiw(+^(1Q2x-;1_ZIxHJ6N-!`o zmRjWY!?7E7Ex;z?0grGRF0Wx^gt)FJWK_Z8T_fcDfFOlYP*9NL%pfQzC~0m9u4Lti zsz4c-y2X@$$Y2IjOsLfyB2AkM)3M!Mc_F05L3RH=W}cN<=GX(Q$(5BhaGzp0j84Gn z-wIpyAbc4}Y+DzNLJT3Lm-Z@9kDF6 znXJRi$jE>t?>o>uVc!abbEA;-C$LGq&CJZ4D zP-Y|y5QPQt6>Q{?3b9}6dk2}BDFjs%Ln?T>|M13*8?Xso2foW-z5x(UOVEUkv_NOj z1!iVwziiy6AQd}%2!!T=B-}sZg?-Avo38$c`#tf~os5fUub(i96-~dk8gqiUC=W&>Y#wM8 z=68-VxdR&X-z-@oFf7!+RhDdR*#gpU5mL_T*(JZ`KuZR12_tt|N)99{V2FxBu&LG6 z8XnARZ}ih0Ap(ME4}vAQFmOf~Ign?X(Y~l}J zG>H|JwFbwgPzIubFb8+Ke90Cj1f&m_=`*!I6u45y_xH=up)P^ z@u&Q^*zUiav}TpxaE9x9aQCWIeSa;#$3kVHsqwbg(4|6OC2qWPv+csi-x8T%CG7oYCop{dpBS5ZE8QH{E6s@iB9IOmgToZV-|`Z$;A7S}v3(|U|U zE^o$B{L*)zHnaNezgBI4*Uqdh{Aik}Z5{IvEqQUxD@ao$B$4f)Y-3wYoU!9!*BEhj zQy^oCU^AYbcD=CM4Er~oRel5*t&YU~kvwk9A#+rY+UR@}+b=ImobudP4cF`ZCk5zl zt56m!p7L! zA%AKskDDpGKA)^%QpmY^Vbf)ik9pdOYtW22l9oH1sP%i1+PP6)Ter^p_UqSmxvkYV zMO0$On+ucH=Jd;XN_slmKO7wfeeeAhFq=ri5y$JF)E|3xPH$_{F&eAMJ%%sbY?@=Z=Qm^cb#@bO-NEj@BZ0`VcV!Z` zK#sP%qv?5Zzo7+bQAf&W+i`9>hWbC{$kYn`?d~YjUzvrc(ss1zvE@J^g+u!4^^cz& zCu(q)SI)Ig1d~~#& z(dV4&R$ZhBADbbIY*2KEY^^BsL8a>cpS9HT%)RFv(Iu;6j>PW#%M6~0qSIkwK}=+zt%ZCDevd6Su2yiMaoAUD9x z`(o0X8Pl!|8R?6>16Jd=0dx6!iU+Oz6jjwu+&8?A7vAsXB~)0rG$8|7@%f!yoNr;W zOkTA!Hkp=oKbn}SEch_4UY!`-dvF%DquOLoTGwQUh2d;5s6^>^EvYa5JpQi0?)|s1 znr$1C;}!wDQqOv*M@h8^7bfbLMlsjMuVG&;cK5KGukp2Cxlq^eDIt`gt7*T?l_h!L zC69}JL;Lp#>gqSF@DqGDgYoz)p(l>~Te6<9XIJWd+_sUltz(rCfiBgvy*@$H}^d!u1<< z`rZ0UL=$OWI}rVDayQmz({WQ*b5Gd!@KWK)@eS`w242+1l21H*4o)WD*>7!3y}RKQ ztp2riyy2E=)mt32Q7bEQ*pGYyV@t}TFjtGTkD&TpaRuMep#w!`Q5}jLk4n|}Pc4pI zaQ#3NKZejV+iMt(MA9*K=1W8UUo=TbFw1f$2r-`UTuR7gD>xVx{&B8CWA$jGi?=K4 zV-`;}IR>ZLj`qj3p3Z_!$l`iOuBc$|Tse2IGV8bJpnhXk?I!#x2G{2h@5ILo(oL5P zWEtA-Kj41D`&3MAHwvHSW4KA}bjLWSj)PVSp8>3|KUBU5jq5H+ZY_=cUYhhxZ?Py| z-Ku_b;SI*87m*YCo9tR+gF(g(iZ6_sP74^eV#iUfV}7rt;&&YeqU-bfAH|?>9haU5 zwPd8w-(gF%Bgai?D$s4!zlmM2Fg+Kv)38{PAJ^H5f%-Cns>#uAM=B_PXWx^X&u!2o zMY~)m(#yMlESKf7l&F<4NZS1ihsV3o=jAjGbNnDnuWQsMaLT?zZH!xnBSsubY+ItL zL9s^>o1qw*OKa9$0TbCjlL9cD5#xr{&JIvM61Agv%DZ!}ZtT}>pI;RrGV=IsVK*y= z+mszji@)Z1ufYd$MOwuOsZi-YGu7GS&~sXk>=DN|W7VXBze z?Z~l7CP`2A2Xp38sOH!D^c8HCBbABz%xoYG`j)99x37hE2V;Q-C)CpKkOd=?*)D~K zm9lVXDS#^Z66swEm(X1J#)dC-{f*?eI$~=G+e4l`YL1W3+g!m+WSypFUUzR#d`a6jq>=!zJm4v^asIlwvfJQO;7O?bOHbIv3$x7 zY5PLX3EE9B%Z)K(0+p1T<-yqZOxh%CD3_Tbtcm1JoZ$QP7AeCmGkrV7$30=eYT+U% z8>{MktO_?)UJH`^JBs18Qx835xa*yooi>E~Xsp(`FT{87XRXCrr7>v4Jg z$HmKaGdSkwK=;Vwtj82dY;o7)?j4WvV7%1W6aGrP19iN}Cmz)1UI7n^AHQvMVyqjN zk%YOYLpJs#HplmB@T=?V_hbwyHX6Iz4a06Lp!&M&D{ny=#NE^RAv{5-TmIQzMu|@n zP0uWeOUUC2#twC!$*k#ndvUrRTqtC{Pb8MjuO6`bK0j!YNc4#?<FjB+k>C= z%`7E&@dYg(%V8R47sIx6bBp!z&Y}gn+AVu_Sz^Q9u`p{uEsL?#MR;qa;0bI@e|A?j zP1@TI*Yxa`ZgR!~6%fxGXm*7G4{tmv5@YGnW_#z;AB%Z9maCQ{{8X?uCp0(HL_i~^ zUdF9`+;iGu{kfV@P?M7dMOdi{2Soz5{T^l4Smk)ZzuxfgTG%9XHA+c|D7)$EztDgb z^q&%iLzInc1dF45%<{k9rQJ8_Ly-}&yptglXcurY78mHW)aY68w7V2&(C?k!o|8*a z)Eo{`rGF@L()r{Q6DsybX6kc-qWbY@3?FZS{;m%3n5|mPTX}e-pCm6tMw$7yb_`^t1n^=n#Tf_+?=C{ZI4o|9Pt|nx{7PaD12qrVApp zF~X4m2S^ty+YWJ0uCjlDaWoZq16r2?z-E*5+^F z*ep#+|7rD^y1=ms`31f!l8)+Occm?FDZ2gH?i56n9*6cq3 z5gHB|l52=N{X+#QCTYl6eITIM2kCq07G&xni}NExIa8h29a1PP;`c`0F$gei|2}Lb zu=J*x8*b_)qoAZL0L?oAotk${%whKWe~oZ8|3^n>u29&p2c6q2DE;DG{BULBm`k%TN9#Bj(;AxkE3c5H_L7eJsa-5JY& z1rJXwwfDtt1dGvCs8b=Hiekp6e;@2m$7dRyy*yEvtq*cN=vJkbm2ay4Yy*5h z$jc0lXq;hgKq77fa9QyK%Nq0N;8a9Ygi;jIXISCJX}rx;#4B|zlUlOoawcwFYp?G5 zUH{hCR8+5g2(E?XEfO{u{n)rpI6)q5?kUTmZpHTfmGjQSyz^3o7-J_{2E5T2ZXH4| z#qxUVd`gErwQw4>Gu{S>-4`IPIQVf=>K&z6zhm`LMdSKvF_UF@#l-I!U6#xNhxzLc zBgqN!1Y!(zif5QHm>eX^L2;gnW6lAh4~+}UyO(Vp9ZNpe9%du3cF+w-g)@CeReo3c z^}Ebxzuc8Mr&$-{%hkdc9Ud2brs|*>n+2bnH;u@5;mkQF4^hlKinZ$@#;gpufe-v=7r)y3PAR2sF z{`hVCJnnQ_@%-tl(wVuH{@M9YYT=Es*i?_1zp@r7GE)8_K~bAO-d&oxEcu_ zJ9Yzc#_QiK70lfoK_txp)@VR!2nk_O2ET)3EwjT?pKFjEbkR9Pa;lIFgw_V8#bceF zc)*=Q>>rTNANmHBgv8<^^>YV@G+e>BXD7EBzWo@Lo!U8?9HQQsx$kUEKN~89=e6&O z7cJuha56l;Vk{ougb~wBoqE+joSBT^olLD~vbleJ zbffI3XFX`I|2wb`kG1k<@T)ciM{fOmqrbQ5UD{s<0ICH3$wlkQO#ZxW_6^%=+v;2O zy5qIz{)VLsTfeXG#Lk8FKl&7=h);O?syUv|+Yga-{U(qqiRQLT={9$Rwi26rd)6=i z3atQy1eqWqNWcS2Ngvwo@NG8SLhvkLZX-+T{s}dGm?(Zo91CS};@m;xmSr_u(e-^rZ zz=9J2*tj0xB1(S16Z-$nc@14F*B_0X6xV;zGbX-ux~C&%JtHM^lhbLfHQqaxFVFY} z9!^AC@59vX-duU9)3w_I)kkJ)OZ;DOOuVMXJZOK?w5P`Ds5(XmrAWx{&(^6w2$p5_ z+Sj7v&A-JPKpNFSdJkkLw8kgxDbAVI`A57RvyZmNK8E@K64xJJ+HE+DMzlG|4AjiIlN;@u}L$yxu*Q2)t$8oV{(1vT1 zZj@J`nh^?-fpRu$`5Uskj3G&run<0_#|vP1SudQ$^-zTCU%>um0FQTL`00b z7xHjz!_KP>B(K{Rqn-5a1jK&*(=S7G#rBFAPE4S=($LU!nX)~8|HQ(=B1R=qTj2Zg zNnrDk=V_YJNOYb}!+i4g!BoKG$L@9$A28a~4{(V)Nhd=_es2xtrIUyYHs|;nc>fr0 z7I>7J^{JWj_(QhM+jq}-8q3Ih?k-IDAc=!{+?RWhd{{`Hnf%@1alkDiy+ZZonuw2O zcCA28tkfcV^iIBDa4xN$MDA2*0rtfg?yfIMF)GOpsP0^4Sscp0h0Vd3k{Kqr_owor zck>(RIb9SToP^t6QMuY!*D^mMFx>PKJoAURuCZ1z*in{B_0&xt%W0SFd(Wa5X1qC; zmjHKOsKV2WWHJGrY&j*M2!g~zVCe^}nF_oIeVpN|^FevKef*%8b7~x%&-RRyo6z+X zR3r7=Xz;IeSxEINfCP`zZcX{P+n^kB(A1!yNEd8CS|f~9S5;vUt^BwIrS3`4_ZmaC z8T#NL{dgc#sFO+z*5W8A-+;?%`B5em0SVMCug>W@LL~P<;``{L>U^8zx!J$ts!_ z=XNnotNw;bw#FzWo-gZJD&<@8a-1+#LcML~%gZRz)`v4fI_ZwQyryVh%l>9m&y|hi z80pHAL;X&Ac>`Wo%yFGu&lLfjrxoco>?*lh{N+zQMsnWBq$WW=xjP7w&a|;JP#^y{ z13A=c4XVDHT3T1I6`LuQR8$b@X@%3ejEKlZ*bnAFEb;AMs=RlrBc~4-g9+qOo1o3cWHN3ew5nL7gc30*=l1va`^p(O zvF3S3H2=qW1l6dV^P|-+meIp4M4z*aPaJm)|77z&t7{ZqJ+1nGn@5mySp0VD#g)hJ zUymzo$35}Lr@Hg|`e%~*n1qLPN77gCinbN%*qE%-w$T(OFlfZuC~C%T+`V>5Ncxxv z6azn?H&QD&8=k?!@&YC&WZE5emqGi80qOm+jD6S@lZ(}{XWQ@RtzNL;$1KHzmIt4d zl@zrn*1NaET-{JXcQ0)06EOmVwg>fI}^YoaL2}@do#t4UbBp& zJeJqdS$S8!G=EVsKFRH*nZ0y8^EL>2VSXkZ@dGs)O5Et7oX1zsK*fZ_i%98a70_a! zOX%BbWu>IN1d0Cdx_LzAX^*c0-&Yq9a$LLvk1U`s4o6rns7as}F}6*WQEnYbAT~Ax)eB+$@nYNIx5rWRtn9s&9|_1_D4(?yxV$? zd75>29Sj5`Z^#;j+&yZo`03{AbZ!z3i*iR5<{eX}*8DPfb>C$?#zT~)H5g2v%?tQ8 zlk1ru>shTc`!Z;s8fs8j!0Y33Ia*bzO406G)sf0!*_~y~XhA$9BO{fOOsXo_Gn2aQ zAf*Vk^LCJuJ1-=><+5Lpi}|IErjLY3*+IPr)CBZMM6#yt@ZcAxY?{HXQWERq@TGT5 zNBZb|kK(y74sENNK5xfAPo$Tr`X1Te54-v6*ZHZ9C;I~``wZvS)GmyiT}_CIbPOow z);=5~30Cj*)5@00EfFXYtu6@%O97NXtCnVDWBJ5IMc*XT67>=Mf@97$=t49~Nco(v zySW|l1YZJw4)hL~O^I5Hm@;_k0^JJXD1x-@Q5nG_;lj|pJpc}!4ya}$4i2#UQbC0U z>R@a{I8f}8uH2xs?HZm*bGSFyTe=yOn?NIS@|`R4hKX6o`Gtjy)18|=%nOkXo8zaq zqdQwCm)&&gevQAPw|Ps%-!!Cc88RB?{Qh&y(Tk8dI2qgQWUc3AW-OyFT)H$pH6`p> zvqO$kUcRLB6(qfd2bxe7M0)YHv{aa@t5AIl_=^iI?xE2dOjVfNj@cM=W_QWzA7rtt z=1m_f;Wa>g5tgegkxgOK7RaOJ8qO>XHg9EA77V(oY(kgo{~Fh7W1M7golKZC`{R=^jETca3LR=QZ$JqY&TA)!>9uvzl(!Hd zxE#LUjfbcT0z7EK0-7KCF-tVeJPd$alnh%j5i&)!2ZRDZe1KXN-w%2fAlzdhS<;Pp zB3KD%mE#@R^?DdRmaa$z4HCr!?>K zS5xQPZxeKpie;Y{>z&CenP2Ynbv2yt_v#gwa(p0(Ydzhqr}#1hosr(P!D(eZ(E+D{ z6$vh5hlwvAY`H=#PkgjJ@N!FXGQqmj38m&GDFsO>sRpR@ieGso1pQ`Uv(723<`K@0 zjRuW~Ww!Fo=L3?Na=vjF6mLI^_0#E1P)l{(N%@_w)sAs-j=lM!qc?ZbeGXExGl`gc zTdSV?&7uy}u}v)={F9qkmJYnqcPed1#2s9sx)YXcxj|ECV(v2>GTK{fruA#5ar`?h z64=c*r((UnS3Cs#p`ge4y#UjyaRz~i-d!*~Bzl8m7QMUe2sO^s{R zEjYm>SZt+cU&tznU~r(lqx4n1&pP-~LBaZ^^>=-)rjoR|W{f zBn@!uJINcBj3`+S*z(J%@fTagAs1E5RXRR+eylozlp}EP19jWP#tp&L=&8yX-u-*1 z+ogL-m9~tvZ_#7Df0O3g#i-kmameVca4v`LE&3c$^tWmt&_edhAc4a)qx4uXcOqIS z2}!g$E9lh5DhE(s+F@M=F_=^oN45+poMX!>D-qvd)LJRzdN}^?NlUFAaSy(G6nHA+ z-gBRqde{?Q!G8jGQIcZ=ZhaT%l7wP>r=8NNmilX!vVL1q^+k+szSvkJad08mXldS6 zyp`=`@%jgg!`-+(zWo(>hnQzcR|JNyYRIJhS{>Ku~9}-iAE(oUnq|Ib$GaSPpkhuYxBgk&hGecOCZ#lwY+!1Ydw=m+xmrg3I0UMg5a|gF6phPDGr8PM8 zBsauAwPv|FeXHU0o1(j$1#jaU+mFV#&L3Ca2(gU>O*y0>sad{mdbDZF7*TCO+J|oW z;hVz?g%9sXG6q`c9sJT79j3p=_DLyRq+Gu9Q{DB~d>%v2yLUYKZheohiw*5>eFI}k z%~Su5V8crF*N>qyE0fP*!GX_C%1iwEvB&+1`|AxmMK30+WdVQNq*%N}6~#10qt#sb zZv=CB`)d~mN6g+m51eXE()igMBB#f4eVVl4UDkyfu8Igqf=UGNxH>yM5YUOKj+Xx- zmM$y?Sx(gz(ULE$Y@d*ldsU5VF}D z`wz3YZwb45@~lg_hYLA5Osxgxkg4pw)c=`xY1y`qXYkKQ!GqeMeduus@J>UpfT&h+ zfK~?Jp+7-z1bg5kKE7zkv5&D_y3;4Fk1(DdHbQS z2v2cx2f>iYC!G{Wje*h{J%hPJ35Oo(^}33&g+qyA5k_WJ(mO5(-=crhJofo>j=f~b zCaR<_^YKdtMXf)hjq+oRKSx|Y|2b5OL~nDH=-5H{4pWtGtd}PSw{U3m8-<7z~qh1MMRn)hDnaIrO(>t&?%2GRRd1v$C?n-JFER zttIqLD;BUZF13|#Mzte)5PT)paV2?tklR3$?!F!^DJU(q-ngS{Fb61!ab{f*n1!lDE!`d3 zaRId#qA~+iu;B;#)S38V6K}6Q+EDYZuFl-wuT(qTOL*SKl>D+5ELVrzmG4D10oJl& z&2jaiuf7ajV^KnThg6^YobaL)@1)&QDY2f=UeEhT+vM!W{9Zk~pT_0F&e6e^}n#8Fuj+C^qif?fwrG=~T0 zF(`{RH#R2oo5{=z2_fw&q3&?a&@J&XdtoMVVsW8mLBMtCe$Hp+sUn%>0yS4g z4BDPh0BZMo`+fRPVWw!c!qAPP52J8dv$7d63AX{_#q1uPe?m5S1z*rlg4*N-=7C7#CVw{Dcw>Z z1SmEhAY=KIZ+KgYdUb6y(ZPQ6RRrgNPKl`xpA3{LpdPtFb5o(b%+aKhx71W?*!9$e z>z`aWTw9LdF3@YsT;Jz^>6yv@N*2`EUHUM#^xF4yI}8jzUcC6nSBc!{$8U+HkL;2> zVUEZLdTsswjju89A1?05re`q8~W5F!kC`En)Hh;5j6)4?bu6hokE%f zeB4(^igeR_rJL_D+*7%&xIco|5`2dGpsUI9=ey z;d9nV3Nu$+Np>A{#-A=sh+-V|!Y<=x*IaKhExy>Tjoteu{m4=Pm$J}R%L!M$RLe6n zNYgv@^gPdb3$6?@!4t}nTqqYbSbuo*X;mpC|BJ85oheQ`mREQ(RDyi(3-PL+?3Ko) z)cbyR9_RTAe<}a@6H0t*6l-tl`1Kz1?a(g0vhU_TuXj` z$?~PG_n+f8tvDes&uXVW+ibLvZuIJfmt8+Sxjf3R6tG(Dz!cBQ=XGa=>muWE=kA4q zgh3C!$!zwG<`F$pJm*8=eH7k`J5H5muI73JQ}~{BF?&AGt19ki)g}kY>{n*z@Gpw` z{TQyFoJyq3gTZ5^`9-Kik$Rn>k$I4Oo!1Jp&Z|SIC9v_!pWphIe0P3yPhbrQ@TWb0 zUQ9AGxg4OO_P9~L8RI2+PgqY9YU?+<@ncgq=Rl&Y5*|^~^CAgn8F=Y!w6i~G&k|p* z>q+3o{IKhr%;a(M_}vlH3IR-%1EVM3H_DgeR!lkMzL%cti?hFqX1&TVTSqn0=iyX~ zd4>D>bS|ZI!mEuV4Riq&)pwt`%xp&|9OdAgH!X1*IVHzqteW&^GpjF|w55OJ)?j(Y zZk%-H?I^#r@pTguvj4I=fL2=x3RKm2hB+RYO!-D<<;|Tn^$U(U|JDN3*jBG~Fy&=N z3aMakyw>B_Rc#9~xI2XHDUf>VrZ9M$JQb>v#J(S2S)^WdB5x>`b;`8#EL@9k(S79A z>*?U5#a}zOJmPpayYQAerz+2QI!6fizU!^3NlXk0+-A1r(Xie{d*G!J2cw4 zpJfeSz5MdQU3?+yENZ9nzBxVv-@|fM?_qWloBoPM%Pk?UZ7-B<_}7t_E`B#S$bIs1 z`t$i%aQ}p$N(+5dqz8>XvM6IPIwyvTjudrP$|+D5VvKc1%jlr7RK4e%>^V(KmI-2j zzni{<)EB?%vm|w^?>*#kSiRsaz+QN8TQgLyYzGgsEn95XXky!7mgb*x-7r4{%1J~R53-fm-t!4ayJ z(XwjPJzemP- zB{m*n8hgME+#I2R`!px$MDwOiQzFT$*n)Q03x8caX_GL8Lz3HZON3b^V}{_i-;Wrq z$AY(m%B9}IKMKlz)umJz6@~A<#&AiZlR2BiTkQ!8x9R2?1e|XUoZfeqB^-iFc(W0_ zM7#f>^GEKYT$W;`tKv3lJVilHyUiM6+07D{2$W?7>H=gH#Y zW6#3WU5-nFm$o>Po}%Y$1qQP^`Y#pJmZy64R(x6hQ0+s@$43xI@q_>DwS!n6bC}oR zr8VMi=V~qYzPYy#Ix^nv!pcoi{O!pJld5pJ_L!=wIi1 zkz!8p#oWAm_ZKMV2PZ4s5-nZE`TS{OV%r#13>X-aVLg5-iaR!;rTc=Vx!jGZ@kaM- z*5H%zVJ+v6m(Sx6_7tS`EZQuSzcz?x^yBrs?`3`==friIBmNHj=7J&%^CJ^|2I_~_ zGurkhw-ygh?M(T{A|2NHKYhW<#H-tS?ywlyCFHP3B<5C}ytd4bIu|M*FY{zmaa-ML zHM0XX?)W6;7irwZ^$z*4z5HZ%3qkho!)D6Ibc$h{;_W`2WXc2LY>|^m*?Dumk)vxT zxA~&c?4-*YX-BpifjZpKruSZ9JJjp_d8y=!YJIi=LYxnNU(EEyc;Kw0H`ef5*5d=~E! zB1DFidk2JVHja)~nPt8K8P`Pr{JP7vx9~A0>FF3LzTbOnGcE_*x{jeMPf-N8m;yk$ z?O%aKBD_7+5*GgC{YmjlR)^8=zu6b9<#1g@7halCj;<`8{XcWKh$}liS+(}6@9YeM z9uNr#MYZUu17$a)#xan#;uZFbw(aL{N*m12`kTj*sg4ULeNR?xS7$}D7H2!=5A;`d zmBQLFFg~U+H%h;{Wu>PPEGAc(d7f9(qrC9^wXAtDktF$GR&Qag<UG{Sk#+ z(eo#-&1=?PoDr=$aG4t2*qnF|qI1Zojv=Dt;dCBSGw{zfg2xI}=cOWi(>!v2O|Yg& z>+Ec>3_@K^CWs8@coWnnIBC7-7AGf#AQ29nn#Z>&rA$ABKO>fxGT!Q6Px<3aXRLKG zLQ-{x*Y0NEsemQvu(gD7!l8OY)3Mj?8edih3IOJNFT)M5-?;ru65phqn*LX`LT^ut z5*sV=%5Yi;y3=Z48QoT4>`-WqGMbZnU+*9)&wLvz`lZk{k?V5CHzHE)xJ*t?xoo}) zaf!*3jCXGD{~R)3FPn^bW8Jg2{>ENBq-YJ82p6DcA^rA&Z`o7jeUhJ$ z!~fd&;SR_{yn};p+r63&Ovy(pOnBYfIl=0;f9zEJ#zFU>A!DF$R+RXD4kRRaO$TyF z!2-n&=C5g7<*D2>gwDuB2q(TO^yX!ofnHN7Cx6u)V2jzXKBAzw0j*m;-G7P#m~I1U z)(;(dXkzq{g!>Cn@NA%CmIi4sY_U;>z{_Q`8VwilIP9|rUl;Endovff`24^Y0@#k$ z?2lp)%}LwtZ|EUCsUf}Cg_?781*v(ZF>?D6z56d9bPT~UCHo_ofu6BTf*Q}nI(mZB%1T)Z_N5GYVPQ<5hc$u&K|GieZ4chNN}-Uj#ad{M zi5TbrfbrnL11pigzbq~zg9`?@`#^31+tXLTMxyPX|9!!gZ=y+4@Ck|VUQ)4qFH#Dj z;|A{MPoL@<-rWMj!2Acsns|Wfv6FteKFuJ%rZqT__*Ea!JXye|0Xt+gv|LnbxIgehuDjYG^$_gC#@;K1AAi;>*ujvZ~eb7xR0?aD_fCS6O8<6n)tZ#yk;)wq` z4Spg7$p9Wsgth{Y8t}Tgi(S6go$hA-3%iSeDnRbjg(`+i>(18Tgy!`m)45N#GLRAR%dkuY&Zly5y6< zV{mIa6v`*2#p)IovpbB_9ergs2-<>>>*YP^NVfFFm+&phi6!pkrVK1|Lt9a(=z>R1 zMJ(jWC<}Oaje$4-e9qF8r#F7+17HXGO-|0t_&|3wX|OGpy&Y6h6@foS8W~n(z-O8F zrr^N$&RB$5`NV%Dwrv3M3ICt(919}`gth-)^q~FUeWwNo9=Lrl2){Qsr^4+bD2obI z1N=jibz8QhF}^)>ez*wjt|!*ClPOJ$8dL z&JSZYQ|zQYT1G&dCgHLFIlTi705Is4DV!6c4!2F6F%MZ@RRnp2Ic5-LH0yr+%lnR!*m_%t42_ zN{i8xgy)I|G5yTI8CG?|x5$T8PCKh3VX&bY12C}r5YEgtF~EyM>?|mrYkCRrx#blV z|KNkPp+=C!b94szOLs6}wZ-t>$yU*zchIIcJH5)3fy&(zUD5`^3X~%`i>&V)sap`T z`h3qOt4VORYN*}Is!PkV_LBQ^<7Oe_)ZBESib4IJY;E(_=d(H)bGKWGRZi6~);|03=3=BG87-WUoAj&_j>PI;Cx7_r@u=(tqO1Sy% zfUiT!NI(ecb9ki3zG{DXF_f&fW;agaLw)yd%fXDUxmc-ab_Ok*O$f4haE?3szzmTX z2=3GJ&xG7m9yrcr;sm6@B<2hb=T@m(OFORMQf&tRAmaHHP0H6K1?C`vrq!%+{tUc} zu3Q~K)Id%^KmZO=KvUw0+5;Y*NCb-w2Cb)f{E$56(_;YtC<$QgkSPW*0O6KPhzV*eKFqi011AU{_%Y&gjNM?yXoM#RWdd5MI4^z?Xc zrPv-f<52v$%F5+Ft@ z_nKyYY3nAHCsfd*L16?*Km@Y`{x}0Tq$5iwcwif+w~Nc3b*7}9?{l(Ea_SAlXfR4C zVA1Ccb_;wUKpP@$f-BegE8sKUpYI(_Y!$?DA)+s(2xlsBf4`i*>)1q=`a;WEv}oB6 z7#?qW69_|o$YdHlr&T;UpM;ypNtkA2(iu-M#`T4;F)FGiSxBetu=gmxuzO2sIb$R) zG)#QK?|I-O5&3vVW35?Fj9AMNpZzR0715R7^CHBk(v;^5)95N737jq(OmL7D?^G}753s_VAe8&tgCrHUGi52aPZ1QtAML= zFtk+w7N+7oTG+G%L{Y@kzu&|&ZWv}GvS#$OBWjTmd2ujTna!qfq;$QkMYA{a^1+c@ba z=bDI^DIC#n@@Qqoanlc6xfYw>qKPi(+o$<5BGnvPTH_@; zA+xjTMIpjV&YgFZf3IT!sWxQxP8#dXX?ozEYj;%u!%4xRK_3>)@#ZEFc5Q>=RPxV` zbFaE}=@_l@XB6N?%bC&o^ySAIDDT$|D2aAy?=+|3_2r8-rR8Crpv%vWmfkGY+<E!C04`o6Mao%A~@ zXBx=QIx8;{fH69sB;2wmXrSD@uB~W(I+%HQdi-kZ0QGSzaxPa}%LL_RW%J5)snjcj zU_#T(3$)qKWFIf+p;-Nw9D0gK^T1}8_GytU^ zA<=f?2Uu-#cwU0Sw-+5GsFjUelr2>y(q)}aQu>ecRc|l6@2mLff!v|i#de1x-bN57N-WnmUiB&8Q2pmxzv}`uL_%Sp4Kv3UlnK$ zn$a{X!d}TAn`n33j{|si7qDpzTFH{XQgid2wBX;~jj!dtQ8iv+{k7W^VE@7yfDvAT z6sj_iE(bI@DfVn5E+|kdvP{8PvJ4Q=*XD3Pu;2L^v>q;4TQfzBURl1=7bz&UD%)P2 z_2!sI1O_lC)$6mtQ#<5!$pV)T$D@U4lKTdZRA_TwoVGw1aJEcbBhT+icT_k#aUb*d zBPr@+eU>j@s~xATaQ4aWr9mZo)UmBTHK+E#K5XN2Fr6Kr*#LMfiRwni{Izs+K)WS?}L1R z3)1eI3%c}5P+!HyZl6o;jfaLIm*N2q30D8W$w^&UxKP^Gu&_b$WefNv5cVmWxxl#y zX!ty5tEBID&>8w`EH%GRq03z2lpO0giTm;efyj=JkI%KRIFZz)hsZ`4?TGOO=BtS{ zHI1cQW4EM z(8P4)EUcMR@nT^dYOz-jSDc=Fo7HA03qlplj4H`Aut7Z9s~<2K#Ng zOqt>psos*#66Ue!IgNp+2i1YF(|3*crnXfuI(SAW-Xx`c;CO!0!g>k2_GmbKz-%D? z3I-m#m8Ew7k9zx@Z3lBCOU1n1^b_oYx8F!9r3H(!~_8gCC)42ZAb42(SWZx9+R1N(s5- z4v4A&vw^fIfbz3HC=A5K#RooOOVygjyKl)K`Xpv-b#=*sDxjpq$jhS0wELVl?6c=K z02<2-&4!WZ2N9_nz-{0LmzG&_aLk?MH~_c#+qZ^kF6eTf$){bqo$uXpl%FV&kugE% zz`N(Au1?*K!AzIx4B*G+ckN_#5$dHixTtr-3q&0elOvM=+v zg}0mFb(fk^t=X9iq1MpirU!#btWtuU62T)1JJF+bG^ItWad^%lS6xk8H1b<;dg+Jtq_n$ zNN*4X(gr64Ola)v0n2zFL=_Os>!_8zyw6y*aSj(3SJ_ID=O)BUCALPu#8D0)8BRkcYN2D4FmK9|{{a+bXMh15D0Z@?2HvT`yo& zflbBGP${}-Hs&ME_E1S6Ek@v87hC%O(v#sahXdf0d80>f`yMw5yr6Y{+xReOcwK zT<){1)0t@9FD-Ze1)Mjf%kQc$1`*R#-!N9SIKcX5fLH8>7sgqcO?B z@kiQO>vKT!UR}dITV_$#+{GL`m@<*);qO?DoOn5=YTonh3TVt}w{wA0i})v?pHV2V zf^I?zrS^0um*rtUr-r=v(C%A`7!i}M-tvU>69!xv{4=8>4QfB(5bMl@FS`?IyRia; z=Br#^)OIz0K4yx+#?xWv_b7~(3NSiN2&n2Yx`(S8fTE!}EAJ}MHh`%8wLxI$Vkw*h zekgV-zpxS?!T!@ohkX{q6UflEuy@m3OqNPV^}p5jmQh)S-@Yg&(jp4dDgpum(jAJV zbccY5ba#i6f`lTSii9BDEsY=`ymWVWBX#F;@BhBzj&tr9=gV>UMS-;z>s{-4=A6H3 zf(pi1b}y|`_u%XCf2h${$q#32f{j%a2hsDY7&3H&!ur50MdyMt1?iRq|i zZtyvmqC<$DbaaU65%`)yLKdjR$ibNiIQ(%L7a;g>f$33h1?3BF9-d42ply?ql7h(; zI!u_r-s%=)$bj93Yt3@NSw9sAeCX9jGr>qG3leh+R;6H^76bDy=qa-btDpK@hkoEA z_EEm0p$g{6g+jKwxmw|W|D@@# z4kmg`U6r-)u<=@(Ce0na)##5y1@>GpPmB?_%8AV5N|d|ymtj%F@Z<8!%D;cBZ>7Gy z<@4pYmcDH;mPC6+@40pX?b6b`ndc*y*^&J}#Cx!@JpVFe&HFk3ThZKYqHv{`-cN}; zQQv5l^m#rz$Iaa87)@6BEN5vmY^ML>JVCYgrL#d(Wl{ubo*;K1)-chq*K~Wu&D$Qn z8JZ{4PIb#K+Xf>ygL}(HZZGF;U@3i7O({Bc%N$4^jJz&N`K8JDm7M$4k3`)Oa7^eM zi3*uj?^Z?x4HHp=M9PqlO0+K9DDr?UUw1BQuZasY&<{qqaBFIXQ z41g@hdBMF`3T!eF0%r&bM`30)EFN?7^B@dUh95ZsEeRxa8!Y#x4Gj;2trfzH29w4w zU{(X+O^Q{H7J|of1i=$`3nAed<_#iX+zykQV$=R0xJ)*Xy0Egb(J?Wl1B}DJ`Pshvr7D8_mRQg6o1obUmbp0_lSWxg+1B2*qQgG}j5yQQ%SGna#;?2lZXi};ulbVDtvtGFo>zxX=h z#N{8lUuB7oc>ha+CYw9VfY#|&5=jS4-Hbd1Ut@)dnFnLco;1FFEP($zRYrO}tV8;~ zuG({2X5DJDLH)+%vmd;7o}uR%F7$M?zqvDCu;=`wLvG`gjkvS5rze*oa@!EZ<57!-=6MyzkyvK73eV$#xntlWyH)3nW=Dam!#WLEhz6lbFMMXx=41O!6*T{G0YBZ z(PsJ!=^w1O)!aAeQx)z!Pge79cmR!{=wd|Vm(21t`oEu8J7$Dp^BT}=(m(Llw1)*L ziAtLEs~#r4>Ww*+ct0yvEL9I2@8&l=i^U+@zI2vyZ7oQk ze!Fb5^I*~pQ8L36tQ%4<=(Xi?!FxCE;lqarq}dWm-T`)6ka=?N{{6S$uDAuZ#fbN0 z9IirORRb6XuSey-ZFX4jg>%^-WN573+TIecNLMpInH z?p=bJEaGmDqzN!Fg+f;46EK>C^;UDbXf-zq&?jUJFfXX%x=amccN4LhFm=)#-6(d> zwk<2kP=>u1U_Je#t!b__PnFkGy_MwOPOAye<{y*PvVL%FJkg*0Ih($=>6pqzqE1-r z!}G;Vvb%eRyiTur=(`Y(wpI1nFCOCRG6T=Z)e!d-E~=6J%IPze06rE&GXy{a7gy*+ zjQ@@HpYBtKt0_ro?9*INQ;uzoeHomSlOxLYZA^BfxOCiPTXo*jEUbK&?(=c(V!N?L zv4Q1ArliyB-&_%h`EGpE$RL>Sk_1yc^PsInjW}jBYeiP&2+VY4JoTw5J&o73G(x@^ zHJ!1qT3pW{rWjL>7f4kTs(27e#tz!TLs)BA&PkXsk{cLIcF z2u~D0INi;++u7M|@9ezpO5piGDO7v?0pdkqX$75s`C?zTS{NW}1UGNW>m7p?8o+AU zq?~Jn;(!f48zTlD;^8+a#RzWSh8jz(q7YvFBzPSmhRO6E5@$VgK#TFMoE8V1S)o;j zpiM2qV>mrhbipO(erZE)&S)|iP9@E)tRVPoyNrIGW(g)@Z|b`8oh0a=o$eXC zZgKUmrfN?%Qo%tJ0ZXAy03-Y4INX0GEjhn#d@Ii|DbWNW@~@yf3~-mz)$()@m=z8% ziZ~1JN?FAb1DTqWbB7UmGL%Kr^Zn2u!VUTUB?zQI5OKJ*2XD$nZ@hv^j+|j={uFfAa2VvtKuQo}_BdD& zZrDUuZCquAa9tSqfLEwQM-(FnwiiE&Q`8R(lve7)Bct#hWa$tB*Ns5)fQTZQCvcj~ z<$OR}3jnF5qM|}V9Z5p`0bY)Td10GwHT+m3)Vi%uT5|(>3j%~$aQ@F;4u_wi%O+?; z>M&3&_JG<#5RwHTLBLYg9Dd;+-##Nwd+rx!hkIZ)31IoJ-{CjEj%Y**TY~#H*hxNd zKeBEKqh#*>O#n|=A7Ew2FikR^tQ7zo-0!fiJX2-}_WDXDxH(BLg7bU}~q1M4O$_*=yPqYRk-$x>kebLQWmh(Orp z|IlUp;9G5Q*qP`#vTXvF=Qy5SHI2{eT_bJupf8PlkFA}c_ zEsCVFvhqKS8cR7&7^zypvk#WrG_5;f2)Q8z&H|`)0uCwXKXOBra2m!OO!9z}f3SeZ|;V|uM zJKfcWw_uPXBOePB6V2MuvDTpeh5|V-{(Zn-8s<<=$~!lvK%os0oq*=r5ZO68(g+FF zr9;^B*mUmkX#cAxXes@sRvJ&9DF+}F2#9;TN<T0jr@1MCH$?cgBuPz+2=){9%DoaT37>wW`Ma4@2s+1$i~pi!E) zZ{LC%9+j^r;<~>g3NO(m)Qw|!U${L_xuLQKr|)eLh!X%A60A{PRr*^)_Vq*XJOL|j zJ999?HXkhwf!Q4L#33%Z_V&e@+5-a)u$_bZGUAv3AQVETfWfP+M+pppK&MBaSlHFx z{u*X@@XWz2XaQfBFt~N1|4cIbCH;AymyCk`37M*b$K@L^(gvr1k=V$wLA*2fDi;%2-ds^2xbQ4cnBIO2>K$6X4YK*JKOn#ct{BW?wKqM z0x3QA@WIj^~$LyKfkiFl7pB}1u4W58z$VB{u84L2Z9&d z8@5!nqk#;F3k7PD0fpz09;*v-F-4Y*nwye2?k0fXl& z@`lCIsXZ}u8-sb2;JAx;20xMMkD_@EYdRWi?@2I~LV~wpC$zD)z6a7l$UO`|Oo1V6 zc(=soj<$&Neqry`d_d397Mf6sQGF2GY3Mni1Iz6t=#a0aKwk;#BIJ?5DvONpe(&Y$fiM%}QXNk^2s{9kQ$<5?v(V%snSnF{@#J z6K)J^a>S=kzjZUx(k>y>SI7?tiH|1*O4CfNQPL&pUqkP%VI4tec<#wU#7gy-l;Yf8 zd@(er5>m{2-NA$wJdQe7)f^dT`yI#yTtCB0f;{TrIUx$h3fYW~u&^~Kei9BcC4yu) zuyU`5We;hTaY)!R?ax469eun8=)*ZLCueDc1#BGM@Dy2kN_WHe{YVO`jiq-z?eBk| z<>Mm~`>mi*tpnDt?$Z+RAnz7D`Efj{A10tGgO5}iQLxP`Go;-HSe6rA#(~ez_h*To-%oSQ-H8Gv?Bm_ ze|2`-EFh?0f@cxmtgK*1Xa`XY^xVK7LOkgK zsjhCm|DG=vw8t=rMtq;4kiCvW@*FW?!og`aW}jJI4F;EX&~G9k%ieSfrchvAYFwO_vc4W}^vlTyzyD=jAn4pu#x3RKV) zSliiUZ%r@2v=O;P7)?i2(23u8;Q`YgG)P$}@u$LnHuh_dMQ|ql$ZW^1X7d{m-C70* z%f@zk7bT(u7Zx2CfMW`u0ljv{o`R74!AC)_`I#Bp*4nSoVKj}4z)1axHgjx3!pnJA zXgn%%#Q6|MHLa)rzAy?q-4Xqu+q55%Go%?>{+CVf`U~WX0**$oBdX*&?K{N4BhpkO zh5T;~bxT)QF0xNU4R&LPOafl9|Ld9aPI{9fg~2;6z$ak+aw0EQx~YwtR$o_q$_Y#b zyT?4&6Q6cx;|V@ZPA50xeGFGLlSD-oet0t{1ZSh~d1s+Zc6KW+a=EG-{pO5B^phxS$hy@wRLudv8SKG>2>^21E0 z%%mbPht8JIhK7w@vPyI#Su*AgZn@t7L?x+kdns6hsDjelX!PKoAVUaHgO0ZpynwN^ zxR&-@XO;6RA1NcRPtp~l2Rz|7-)Fqg{>!=QD@QJ8SA#LU{3CFvxoJa0vYSg=OJj04 z1P+o?>ch6JVPei}hvt^U*e&pfh)dik`-G2^&2O@soHm0yxeF(LSG}lfp|Jfmvw$p2 z2A%&@QG3KWHuVhDj@eYJ0(S!acWcjR2?Zw!4zvA=mBR_LM^(MKx&aah>%`SPTY__ODJ9v;h>(1;{p2au?~~Pm%sX~?xwEMjSeN7?!!u81HcF?6@nxgr&`)C7TB+b@w-t2X75k|fk%Hp;uHN&bDd+QV{qSU>+ z-WTOwV06u>mmsFXjo1qPd~oIbd@)qCx^CVLXk(ItVmZ!w`;Tk+$}gq#4iVV(5|`N0 zz^Pgsh?|(j%X$|V@g6a;X!B{RAa@Tr#(SP<=RvExCFF@QwPxS@*FiC2V-*3nuxBh4 z|HAXs${;Gld@}yy`UzV4)y+jCp{YT9uZ-5S^&xAT+ukb~I)a(k5^h-RAeQGb)y zf<5~47`A`uay=IL$)#5rB?cSe7{A?2AL#Spyy_ShdARVcXlmIh_OS0cjXh=i=3;1s z)=Og*uROs!&n6AYZSv-&tdenyGY126dIB!dhnzL0P#P=b;p_7rq<+ap&vPLC?e`;i z?SlZWJi^o&B*l3wR1qPoQ`=W)_sTe)g5OK!G4hU5KYUvqplp9w5|MZX?JPG=$3pwU zQ_+?=TBEhU{=J@s+vW7REy|i?^m`A_9}4?%H5>n^R%p@uZ_2>(C2uQjtDrqzVAlz| z$tAO{*7hCS!2BED8XWJUn(xe~8)o`C88967rWCq20!2>EuqaIS6p>vlr!|#S0={?VARCqsHwG9;>ez*otG{`*O>VMjZ89# zzNk7kg5ed(a@8FKG`K|Tw7s9g1&cE60U^I-=AKxLcEL1|Krn5y9s>k_=22z6wO{dJ zlQ(9oPyIU6aTN~_A{%=QC&-roa1`D9Kj^5Q9b$_5h>4C*D&up*mXV?zhfl$2;Y#lW z3LWrk@mn1<3dGlV(D>c^_x3t%SvjJP12}i2qTh1A8 zaJLi{|NhI!`KaO=U}zR@O@5zUYWU#ET;RB8zvCeKBX~@WT!skVv#@Y@&pzcbUrrI$ zHP?yK_>3;U@V~%zZ_cY34z7~dxD$`9=%JAe<_2`7(86^0G5C;BTH)gFyy*VzF#etX5or##%_;~CNU6K1?1!3L$A zv#qMSobSx`^Cw^TayUi*W}h^C&b+gf`$H{K(@RH<1kgRe5e2sKpX>0;sVWE-#L~TN zt5w%q(_z|xS5@ZCUze7=3%rxAnPMip@ZaCfTidRBd+8aHcWkggOS))pWU0=3sXw15t%PA0FIHCwYelp z&Fd~uJxos21#8$R?S!x{`DazvWro}Y-^FzNYI^f9LM5TKFoF+5E@b{BW0FmXvcONA zskuobE`p1bMwJY>#pY9HOVR&&z7e8fAhO)#QyloA4P#@ zc>F8TizfA$dt}%SK4d>Vt+vO%sp+_`=;B$e@C{x{0pBM00O6PX^!w{eVC+R>X_)*b z=f4CC|NU*+<7tU|(U`W69@Di9j>pf^vABD^A^7eRJGX*qyfP79MEw3YU-8>-2`}ad ziTcEOhQDFl7| zRlZ@wcI)`tpRtgtWJuP{}dF2|Uf8xkChGp86DUY#Rsb8PBro^8-qc zy1vmOpMj<$Zj)j9)cT6T!u>(l)Jr}+@`l5mippQ9XsF&3QiOC!Q%};vtI_9Z&nXlx zQ1xhX2K`gUg25++a1pRn=p5Bj^2{k^xGm~Re%;_96I-O=22RKLXQ~ZLnBUQ%K|P)G zUsvZs5RxC0I1uHCT zQ3YEYM>z7_|KE{#jKSPd^%6fXxhh5GvP72nd;H5`^?_EerZ+jrI}>Rk2ob>HE8+jI zUIRzm!Q+3c*AQTa6hFv2DF8MYkop)$kR}Y~^Wd}B4g5Rs@@9!nOH4s4KO~PFO&WM<>r)p#K?y*mxxB7My!Sd5+g$S_84qMgVS= zeZ_#!KzpP8YHu?>=Q$TQbz=-Mw&ng-CuWJ%#YEBN)X4Wwg#V|g|6ep8w^a}+63osPL2vpK zg^GX)xjcaPz${Q)c0@vdVV;IG(Yjt|kw7d!qM#uUw{sPnj5{1aL10k17RAHkGB}?r zeQ#521T(a6`JsB@;y|k+0W_n{Ws{y}vRAWTvy&V{3h&Zj-lRa4w?BC6xt{mAIioR1{-`eF z)goP>)Z4)mpG3l-{rv4mV!beB+sWO=9ObMn}yo|q*4*GO?btea@+RBE4%q+6iP zFf{~S+3G>1dst%oxaK}t!AI3TR?(=g5Y3;yks#wovp-cK-Y%P}c6-zR3F^kz9Kxi( zc1`vumPafxBY&UMqF6)H&B+3~>q&tz%JM_#^~m`$dPi$EY8eck=CRHjdV26Xb)6J1 zrQL?{2BHLn*&zhum<;9Lexd516>->Ve3&Sf*jQsFfW5Pd_f)JZxAbQa2H`H z3Y)nl5O4nRxzB&N0AF$CCx3-Z$nagh86Df+9yl(&!4q`!Lm4Uf1ZcU$1plD(k)nR# z{~w7#vNzDKijhCJdLrM^mGqRc(&iyc5Eqxni?_8g`x%G&Myd1P2Ru~{Tr_oPzCbhf z>9#0*#o^=0CFfELycysc5EsPbQSKWVt=V+xNX?a4isTpdd}UkWvA+N53dTq0%Dyz9 z-W>I9vk%6HCw2t|YD=#Pe%?DZ2PS=bZ4qgA>H1R(bR#&@5Hy|#np#P2Da@9kT`Dbq z)u1>y_1xg*X+E~M97<@7bKs0tA#_`|399`3(`SNl8C6UbT6!=aI$P47ZOZpbFmxh! zKflM=`HPZQ_6Q*`w_x1Z{&;t94?qZCK=D{%_+dMWjOO7VwxjGOy}s}cL~7{Nd3pef zqz)V%$b_p@fn>y{PDd0$8y&-x@`J~o1hP8b3X=_=jr3-O)g5jMYF{C;OEI~E!g+v? zv1M&%td2gRbCs&9vAlMx>-Etf{SY5H+1eDUzs8fgxLbuw%17qpR};Oz zH%ep7wO>i!N7+r)r>9?)SG!z~AO6`yik?wHqnaZ3i3LaX2oW!rUzw*rrB}fE1sYd| zS?g$?z=!iZ6ZQi3x9)9&eR9MVYPZ_z6frByyg34XmJF0cOu-9j1K=S2C?`a)k+2)f zFZ04exj0r~R}AuH;C4D2KRzOx_pXgmigKueVZoURGDa52aj?<$3;%xGw!0W;j=EBV&0Mh^`HF)@u z%u2vK^w~)eFJ(Y}5Iq=VB5s3#s~3iF2rL1hUdO{c7Ggh0^#${|F^r2 zKd0C5p!bcfind`93Qph9fm*TQdoeeK=~x_YQm3=${$llz37VC_Df`8VKJyhqnT64M ztL--(0UBPeLTrv_Vp5jZEmkJGOP8K}kYb^=$8npXx;wcq8AUc38q(q)V)Sen>Pu*` z%oVEB&MWlsfe)g=z9u4@-pt}UZ*-b^xGTMME}d4uWuMdGD>FGgSxYoqi9Ivkxf@$+ zM|VH(935SY@0MLJ10yq2kJ^Z%H(YB^=~IG#ga2b+ zbg&tpqI~kRaMX^y50lLOqq!1&mvWx96T6mduah0B&kLntB+Y=BJT`kpji5#Vi2?PJ z8HOQ0w5y^(`Agy2W^c2AxO9RBu>wSY+~6qR)zt-(KvY^V9Rn`FQ}pyfAYAy;V|)b6 zJ@DK@lXm)M36D1*jI&Ei5_)=HT-b{N0VM-p&>9`NL|%vACjbx^iD2*Kq5QdJ%01*ukQSWGlB&Hx=;tdsE-%;xTHPqd$b-f}R_`20&i zoF%v89xiPXG;)tphIlp@dUsflNB`yxlQ{&2ms`7Xt+!pliL<3Sdsks8N90uLTy|u~ z=bUL{c96(Ly?f@)m-=M|Ul$E8V+7lLA`%wewnuGxFw+a zvK{m=2&IbFh<#W#t~{M8vGj4-_R`H~JK#n}19(23nZ>8TIEpN-NwOn{V0y_ZEVl0k zi$DKx3UEh}S=dye&CEzo{zNGGMPr?vI8$*-LwAsIKInzV+8%lX>S1DHGPkf0^+FXY zLz?kDvwP7pzR_;+wSp9Qn2&n3>GJj$KkwyRreDOn#ihR&k&PzzAl*Vs_D3V>g=!)@>1_%gBa*XIbMm!7 zZ&{fXc{PV>&O3AXcNnWEfOH0mSLNewV|JaQP-rrD0m@)=*?D948o~wr0OJ7_Nv`;x z)qOyzXJ=W`{_`_Cu-!mdR7lF z*2mq{`y57&whx~?xra?}YyFcT$oN~-=k(mtbQ4uGTDqL1?2&fe;rg@wjorPqkqtr1 zl8s!g^)Ia@rHw0w+N#kR&$pE^7ck@kgWd|g5gFk(Uu zH2Gh-FWjB6(M0=kx&xS_1Wp-}q^hyJeHLZEnvggg_zQVj6)Z*(Ma0Gb64=JcJN#U( z)s}D~w?S-6n$Z!gIi{;+WwAeU<#g{Z&Qt!KW>WWfyPMt@LY89jxt-v2waZrCZ+cC6 zW)Z7uybJ1Mf%8%lI}c+Z1@##;gC9|18p`dSRj|)Ky59KH7tx^gec z&MJzr<({YFO?f$E>zrSu@WK3;uWpWIwY`v_HmRF*z2?J2 zw;A0;*JqFtsj8}Gw|2&|1+=xb(TsA)%*uKFB>+U6>cNAC8Uet40sA>5H3k*{Zorl7 z{uP!@c@#Sm-vAK#4NOys34k!iFCb9-b;}20gj)pY_eNdamlsEXHv=BlHIBjn*??z) zEG?KY|4!f`@P@L|iGO~6Md_)81d7LP;uF8s=({VI3-|;ULv>vHB$UX|{1$p?7Ik@K z^e45#Wol4wFQ`T4d>Z;r|0o&w3D2%t8aMti{uuhgJJ~g4HPM2Bh`n-CUa=6R5nU4? zc}2W8PyDv%LW`s^YDn&LR<1L|oZrG9Ys@&S)j4_hy?e)Y$L+LL&FhtN^8M5GiRc@6 z2Wv9s?^mt9R924YSDDp!04DEYig5Ok42Qkd!R}R0wXg-4-o)=^V%>kPwz7A1C*+Q) z!mrlu?-jwn&^3ixOXLmBqT&_@)xT>{>nMr;Oe&j7blA#ME;qYmenj0Q?sUpg++w|5 zL%%ECc(e3{L*k0ZT9z}Q#}ZOfm210ftgMe7J+j6V^;!AI51T|@?cXf7Q9yCGAYh`< zdI}^kpQEGQ_8z&i0rn33X+&WJe7XlTV*9RX85vN@jAyHAkHQ{+C$M)j#Z?H8f`2KA zmXLtJ2Q1sOvQ`T7Mu{%DdSU-X`)eO&d^W|<_Wiq@s2f&jl^fb6*K65wk8NsR=Sq-S zS!%Vs$GYZzG}Vox#?tPWtcz0cE6`yMU z+>}^4;~Dj8@=Ia&^2KLS3y_!#4FVnG{^^$WdG%j*9$>7gj;cfT1)9$NBWrs)wP!14 zVd)SFPnXE+>+uMW(BhrZhWxM87iQF3{?D^@nq*?9jQd1lv@R37n9gq(uK!`XI+1{p z?RAMmRlTC@n3GQ_K{9e!qnvPs)S>rtoSvxb>NbhbPglvs(CggpkMAt4+C&3yfz+pd zN_J|^kq_Zj#HG7nGXR4j9-#YCfw=|S(<2*i8V2bcRR-JupFU*=@w*_J0Kp%6=9@lh zNK4kTtZ3G*6-Tl6qENBC4q0xIj_@WpI5=!@%>eHHH8u5nW@ZXi|F8g-_a;MI%R(kC zi|Z4#mY=VFICc{$qS(naQI?kCSW4GN%$zsX;pQJKP#zBHm?~iG$A~qe5~+(G1$eC; z$7NW>ioHtJkqL?N(g=9I*DRNzzx(TqqFc*SlqDcYwxn`0+N`Wk>v-)C*B&82e)uX??9;k^+&nVddk6{ zb9z~8oed>fFYz+(Pd`<_5ozEsCAk$PX2;mUTsrA|o;LoyeZF|!l4)XQofup0?C!zh z&nufh+wDtwPyE8Bzx3p^jxxV&4tJHN9yB}ne*9UbWTj);H?A^$aE@1q4bL&z*tib- z6J5w_R zfHb+XsxozUa!AX{`bn?R|5BC_3;YNyTtF>hiSLBziIRdsJplLP>*Rv&F+ej?R8V*d zg(w<$YCGZ?aH%TgB}u%f>95JDmcKP1ZentQ#df2N?* z(?-4G$H3YIA^w<;kyTARTjb)f%|fP|Tl@Q(F{eiEmVLGHIgZlwZok!BPKW)FWURH5*-541IPUIE2eF9LanjwyE^(@#Es5xj-D4v?HqY!PtI3W zQ=P8<6eG0M?fUkVN^5+xqlAxx*6V!Z#i5;0R`<>82dovk@$((gMX&1L(bNP-$8neu z;s!L<-2G8n8U+Ob!ks6$neu4?C>}^u)$o{g2rvhsGrb9zJ~DIy))L5B7r?&2Ap%bz zEiLVCNQ+@WIaEN|OE7;DnjA&ahXJp5-uXq#T(!L=-&TdDyXNba@tu`(n?|LjWh&2g zUGP+lTK}4X=~Jn>W)lelOL>NbK}uzYiXxb9u&KCE#*c43xWNSU#1*jBys zaLk5mLEviRNeNlrgq#2^DQ^8tXV#M=-(d3R8Qs}$xOt`5JKB7(3S;J8ZTAI_ zY>CGBh5Lurj6qq2WETV3qTH&!6kJ?@rU8EAXutq6g1!(6znw9=ZVnzHD8OOAhJ<&> zvYrLAp;mLwh|iyWI}P>0M+OO~2g(=_ky&D;fu?ZByReWIX-rpERzSpb9oQvsbLEwl zn_#OP4=Vtj3vwQaO$WufilS^r1oQxKxVfYZ4Rw`vU8kHm`5rncv+Th2;rLmiuAS*x z2W1V$zF~_dzt;Tqz59a0b#JB2a5w`J^%SlQB{{`J82BYTX8hKm*=ZCzX`A^d;BeEc zS(}nYuo{n4Ze#Xr@6CB)K`h1bS9lx?-C3>vVHz+_BSWimBz2Xm{b`0 zu(Ft5m1;@^u5F@T)^AO1%&FYoo&RXz9#;?xztLT?i2xbeL%lyIse{Y$As+4*(+Q6m z9#Zoq=7oOyq#f72x#5l(Q4lS6qE+P>-`J(=nEOimfMQJ+T}#gBrs<6ZA*Ij9F|eY6kbA>C7U0={#y{VFSrIaqfHkKFic|_a=eqO1W{7nR=m`P?17AT+R1K1U zAmHWOEy^Aa0@c)pn+%yoPz0MG@oOz1q^&V5?_aQaCqpGf)m&hDMpHi%eV^-BQ$ex+4CSb?2ct7{B-)?fX z(6o(NX}fa4_V2B{^!h_T`ssB;`POD%7ed*?^ocJc7VG5)`I0|S)-8H|KjxB;m$ z2BNUnLH@(Wv&od81g#uZ(Dgy55F?#VldTCOKloLQZ8(aWU)L|&zh-yMedT(#KZvxZ zcOfIL+lF&-kuG>RF5>Cm1kpFq3j`#0r7tLCRt-&!-F0oFhLUQQ32#cs9`n3@)+iA4 za*&UlI{`P$A~CJYa`uhMrR`}C0sl{V;4E@y+~?UC2Q$N}sXLQ|j;`kcD5zOAe&ONK)@e$~Hx3i!0Y5B+3m6yI4lZ9yT0cZZ_ka)nYx8^KbV_;o zkU&NmBQX6N!7Jqmc*p|hmLsbWP;_;QtL|7PpoGr%Xu9Ho)7J|7l7hTnRGHJ}5sSsV z_PmjAE{*loc@#Jl>$IdZ6nMN>%kc3PLtRBLd5Icj6rL>QTYeb|c0-r1kg`s+G*@`c zZ*ES`$^3yp^Cy|K>5x~W)4f~DdaBsjyxY!@hiJy2%th(V+h5*0#|{p%aD-5AjE^|X zg=YJC;-sFg$-#kTYTW7dezC(V2-_+Y z0>(a2nw=9r^_V~I{H@Tpx*r|MfBA=QT~hMdnh|*%Kj!`C;ve1gf>%{RM~5ePbPxJ0 zD<`dzea^6ocQb!WK%@@SL11&fjBd_%SXITo?lU-gAM<`w|5VVPu+BPWM}N*OEjBYU z{@(K*d7En?K%@kgBM4r)fV4fau)CUwE67*ur)^Y}S=zsov97x{*GBg|fRj;iLe)GKYf8uIV`i#lftjkdAmcp}u7{%+Z`&FC9gZ!Cnel_#~HwSf=2okSb{>x&UWo z&(U*mc(LcX@**%a(eVmtZxY4thdc5{` z_tZS~UbwvsW&xhil5?-8+C~5vhfsUEEJ|`F0ztAgrKZV+q-iE+}nq;u<+!-?}a*{y|>v9F* z+-0YAo|v-hab{Hv#6DB27w?wK>>VDGr|NP)9AEI5eAhoX{{o=58CEzSTBd-D|ED|g znnGLjW?J_AHPIJ$LhtGr!b=VP-iTaLzrJ9&-?1>Ef1r;2MUTYglY{Fi z?kHJy8Ii?2+O@6%(^0Ofo;BRl%Q$=0`t1Dyp>}`w>!yE{D3+Q8@H)10|2S?|PG6^5 z*-n;E+!l!B!@Jcdi4T5! z0bFYxjBn@prt3C*tipb7+ijiRzVXMWgrar=uN6yAnQY94>gqN2gsR1d?sixI?p+ol z=eMaE+2Ca^tl~wV+H+B_#X3Ln+>g=S^a+%Y*{9l9uQjF9u_OO6j5RF!SA5N~EH~?Z;elBs@ zCB$xIg@?!K(nm=p76BWfG`dlqgCn!1F0YSC5v_kbo;{#lWJ)=hBX;^^RPFMJR_9#c zV29pyf`x<~NB{L@1G>>3QlFmVRi2Ca>zL<3EIRb81?;$OlabFX&74QM^jbtTZon6t21aiQnnf+)gX_PeBb3i~Gh>~UYJ`GObuM9gjp+J;n6%DI!lrUbHpv7x@x|JtH+vNNFX{$R=8p3<#o#bK9neQkFV0u2v znEVA2`%^MC7=kCb17}?JY(ITc^(IXmURGnAAH}$0A3A*SS+m=!BUPE%|3y~f(NdL# z{%7!NVTp5cZR(fST`vk%(3NUUEee?k>geD6u#|U8B6>n#D(Y=MPtmb@3%37et=dHr zYxQunJg_hE0)M})_UBps@!4uvbnB0L*!oAjNk5cn>fWk_sZVmWle^U@(-%C<=ajdk z^W6HJErg%n_0aJo^Ue~8T{k^ZBn0k_kQr* zi12@UVa=`9lRv4|J^cQ`e$DpjQ+Yc=?end>)u$Nz=M*1Eu6kX3ClT{Eyv52)+41g5 z{e=6*YGj$SU03!dvz(8P*ydu%?L1gId+>qc6~&`0rkLoG&=#<1Yjv>sz0fb^oQ3>6 zyb{gJ-X9G+JrLJ|3lMiGVjWAiTQEy9=VllC#zb{Z*(wR!%{vu$Pe~X!vYX6SZVc@b zRu|!(M`AiLdgIjj9xXZgxoKb%2{F7$GP&E}_&rytCQMBUbXD*`v-*1AU{R0+cij}0 zX|V}ghxZ%p!+S2Y6g-R;4KK+%#xf$itYq%XoSmAR+jgB_%-OXB?l)d9t6C4W|DQR6 zeyY4C`$NtB2bS&ji?iM&BVBDu3}Mk00ZI3_7NphBurdo8+G`SR?&JiseP`vv8hkdJ zQPYRb(5n?Tc=zhS3tgt4)A}Cbx?u=C&;#g!Bny+-=n6#}Et<|0yS1qs>vu*EZgCor zeJRUiq8G8h8keKfsny5c&b9t+L7p?z6bt^wq27C`JE1*pwapZC#?FwT4u$_L{ff0w z%HU*h(_NoTFQT;=E_*J{Ddy7`{~%OoeUE!)ai-oR8&S&n>&TSCIR9N~0lfw8w)TMG z3*}%@!Qty(FRw%dd@tm}8qBg4Nb&bY7v;dl7*y|fdXZWYHBU5Z#edPep*(LpV#`Hj zwS9o?pW%spVmI~H>6JmH=JHuX>(-y8f!TGU+}9EU>7Q0PPWs&2vo!bTt)Izgqs(j* zlVj1Vvi*-yQAlE|i=W6Xi=MO6cx%m-NA4F`WRZsLilzFD zk7y1;qQ|N2-n~ANkF5-wG5GaTy&(2aPvcYcfucqD<{K3(xIT36c0%|bX-7+0H{5&X zkCV>oKI{#$pFfV13qBpmcPt*C)oVGW!V?!NEnK<4#f?i*L zORdI{(lhl_!8_KHd(?{aCDP?jbF6i|z5c9vugCt`V!ir9#R?$PHcZ#n#IbZs_}LZ!O`i4Qyr34bmXFS=Uy(oY<5WH z*yVTE51PAg{@Fv5Nj>P(fGVJc`O(eQSi7rxxUI~8{#XZ&zg@5{FPpC^h-ud*{&3`q zUy`v4n;gc6ZAG7L){%|JX@*M_WAfSg4PRZ?-4&ECrS+Stk2=(*Kh>^TiS6LQv#E(^ zDqp5I=!Z<38HdjKJ!%~ppG_>4hSAQH&|r++#|axUH6kUWBQ`TDoL=YdFhc|}!0L)T zkTUWOiF$l}Gbz&J;z*u}7+@^+cQOAF-um;llQIR>V`1%e7?vA3LJ@GZT0{7E;Mx%Z z|HD$H5jJi`Off_#{-MD{*{o(*doyb+79KvxAGe{EG%g z`oU`&9Oyj-dwL2V>fY!P>^u;Tlcs@o2PCGT7JvCG<~b2+4VUT1$UCUAa9=R`1=rns zV1ntNxs{8%9;XJ5WRXL08naU$3lb?pkKO{~XS%@;3!7qWdpF$grqJU~nsDC4P!Kg0 zfmq3LaFJk;FtIMFO*|d{xUD!B6m|sT1cJ$2Hc#d8SWtd&$!CEy4`^5v?V%C z{DMgCDqgbtO%5sjZwtX-zy{h*Bpb|}Q_Cy>>g)1$cL*;292p5JuC-i5qnWs6lHLy> zJh*8rKx2>|TRDrY#LocZLM&MkQLS&l3+ik4pSNz&z5Ve1{d8H~86$$+gWzd>Ee48p zdvBPH6hV80h+5L+k|+A7;RsZMdHd4R(r-4#DjsW6Hxeaa$m+npvcE_~Lt${6&U#%eNNr%LEEnm~6%@_(2!|+hEDQvMW#y>dP?XUV>8- zx9!{wM1lqeTE=Pt4}HsJwN)=;yyA>UEKp$Lg-y)r3pXdg<6nr0U57a*_^Rvxxw|J%mr k{HK~W`M)pwmOGwO0@3vA^EX}lXz)i;RQ7r9vsdr_AMrh(L;wH) literal 0 HcmV?d00001 diff --git a/examples/MDF/arc_functions.py b/examples/MDF/arc_functions.py new file mode 100644 index 000000000..e4e36191c --- /dev/null +++ b/examples/MDF/arc_functions.py @@ -0,0 +1,58 @@ +from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, InputPort +from modeci_mdf.execution_engine import EvaluableGraph +from modeci_mdf.utils import simple_connect +def main(): + mod = Model(id="TrigFunctionsChain") + mod_graph = Graph(id="arc_functions") + mod.graphs.append(mod_graph) + + # First node: arctan + arctan_node = Node(id="arctan_node") + arctan_node.parameters.append(Parameter(id="input_value", value=1.0)) # Example input + arctan_node.parameters.append(Parameter( + id="arctan_result", + function="arctan", + args={"variable0": "input_value", "scale": 0.4}, + )) + arctan_node.output_ports.append(OutputPort(id="output", value="arctan_result")) + mod_graph.nodes.append(arctan_node) + + # Second node: arccos, receiving input from the first node + arccos_node = Node(id="arccos_node") + arccos_node.input_ports.append(InputPort(id="input_from_arctan")) + arccos_node.parameters.append(Parameter( + id="arccos_result", + function="arccos", + args={"variable0": "input_from_arctan", "scale": 0.3}, + )) + arccos_node.output_ports.append(OutputPort(id="output", value="arccos_result")) + mod_graph.nodes.append(arccos_node) + + # Third node: arcsin, receiving input from the second node + arcsin_node = Node(id="arcsin_node") + arcsin_node.input_ports.append(InputPort(id="input_from_arccos")) + arcsin_node.parameters.append(Parameter( + id="arcsin_result", + function="arcsin", + args={"variable0": "input_from_arccos", "scale": 0.2}, + )) + arcsin_node.output_ports.append(OutputPort(id="output", value="arcsin_result")) + mod_graph.nodes.append(arcsin_node) + + simple_connect(arctan_node, arccos_node, mod_graph) + simple_connect(arccos_node, arcsin_node, mod_graph) + + # Create EvaluableGraph and evaluate the model + eg = EvaluableGraph(mod_graph, verbose=True) + eg.evaluate() + + # Print output of each node + print("arctan_node output:", eg.enodes['arctan_node'].evaluable_outputs['output'].curr_value) + print("arccos_node output:", eg.enodes['arccos_node'].evaluable_outputs['output'].curr_value) + print("arcsin_node output:", eg.enodes['arcsin_node'].evaluable_outputs['output'].curr_value) + + #visualize the model + mod.to_graph_image(engine="dot", output_format="png") + +if __name__ == "__main__": + main() diff --git a/src/modeci_mdf/functions/standard.py b/src/modeci_mdf/functions/standard.py index e5215c8bb..18d613d8c 100644 --- a/src/modeci_mdf/functions/standard.py +++ b/src/modeci_mdf/functions/standard.py @@ -15,7 +15,8 @@ # are important, do not remove even though they appear unused. import math import numpy - +import types +import re """ A dict that stores all registered MDF functions. @@ -69,12 +70,25 @@ def create_python_expression(expression_string: str = None) -> str: function expression in python """ - for func in ["exp", "sin", "cos", "tan", "sinh", "cosh", "tanh"]: - if "numpy." + func not in expression_string: + functions = [ + "arctan", + "arcsin", + "arccos", + "exp", + "sin", + "cos", + "tan", + "sinh", + "cosh", + "tanh", + "maximum", + ] + functions_sorted = sorted(functions, key=len, reverse=True) + for func in functions_sorted: + pattern = r"\b" + re.escape(func) + r"\b" + replacement = "numpy." + func + expression_string = re.sub(pattern, replacement, expression_string) - expression_string = expression_string.replace( - "%s(" % func, "numpy.%s(" % func - ) for func in ["maximum"]: expression_string = expression_string.replace("%s(" % func, "numpy.%s(" % func) """for func in ["max"]: @@ -213,6 +227,27 @@ def add_public_functions_from_module(module, module_alias: str = None): expression_string="(%s * slope + intercept)" % (STANDARD_ARG_0), ) + add_mdf_function( + "arctan", + description="Inverse tangent function", + arguments=[STANDARD_ARG_0, "scale"], + expression_string="scale * arctan(%s)" % (STANDARD_ARG_0), + ) + + add_mdf_function( + "arcsin", + description="Inverse sine function", + arguments=[STANDARD_ARG_0, "scale"], + expression_string="scale * arcsin(%s)" % (STANDARD_ARG_0), + ) + + add_mdf_function( + "arccos", + description="Inverse cosine function", + arguments=[STANDARD_ARG_0, "scale"], + expression_string="scale * arccos(%s)" % (STANDARD_ARG_0), + ) + add_mdf_function( "logistic", description="Logistic function", From 5e0bbe6e9b22c497c8eaa33500cf51af1a7ba81a Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Tue, 26 Mar 2024 01:15:35 +0530 Subject: [PATCH 2/5] minor formatting changes --- examples/MDF/arc_functions.py | 62 +++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/examples/MDF/arc_functions.py b/examples/MDF/arc_functions.py index e4e36191c..8fd7b82b8 100644 --- a/examples/MDF/arc_functions.py +++ b/examples/MDF/arc_functions.py @@ -1,6 +1,8 @@ from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, InputPort from modeci_mdf.execution_engine import EvaluableGraph from modeci_mdf.utils import simple_connect + + def main(): mod = Model(id="TrigFunctionsChain") mod_graph = Graph(id="arc_functions") @@ -8,34 +10,42 @@ def main(): # First node: arctan arctan_node = Node(id="arctan_node") - arctan_node.parameters.append(Parameter(id="input_value", value=1.0)) # Example input - arctan_node.parameters.append(Parameter( - id="arctan_result", - function="arctan", - args={"variable0": "input_value", "scale": 0.4}, - )) + arctan_node.parameters.append( + Parameter(id="input_value", value=1.0) + ) # Example input + arctan_node.parameters.append( + Parameter( + id="arctan_result", + function="arctan", + args={"variable0": "input_value", "scale": 0.4}, + ) + ) arctan_node.output_ports.append(OutputPort(id="output", value="arctan_result")) mod_graph.nodes.append(arctan_node) # Second node: arccos, receiving input from the first node arccos_node = Node(id="arccos_node") arccos_node.input_ports.append(InputPort(id="input_from_arctan")) - arccos_node.parameters.append(Parameter( - id="arccos_result", - function="arccos", - args={"variable0": "input_from_arctan", "scale": 0.3}, - )) + arccos_node.parameters.append( + Parameter( + id="arccos_result", + function="arccos", + args={"variable0": "input_from_arctan", "scale": 0.3}, + ) + ) arccos_node.output_ports.append(OutputPort(id="output", value="arccos_result")) mod_graph.nodes.append(arccos_node) # Third node: arcsin, receiving input from the second node arcsin_node = Node(id="arcsin_node") arcsin_node.input_ports.append(InputPort(id="input_from_arccos")) - arcsin_node.parameters.append(Parameter( - id="arcsin_result", - function="arcsin", - args={"variable0": "input_from_arccos", "scale": 0.2}, - )) + arcsin_node.parameters.append( + Parameter( + id="arcsin_result", + function="arcsin", + args={"variable0": "input_from_arccos", "scale": 0.2}, + ) + ) arcsin_node.output_ports.append(OutputPort(id="output", value="arcsin_result")) mod_graph.nodes.append(arcsin_node) @@ -45,14 +55,24 @@ def main(): # Create EvaluableGraph and evaluate the model eg = EvaluableGraph(mod_graph, verbose=True) eg.evaluate() - + # Print output of each node - print("arctan_node output:", eg.enodes['arctan_node'].evaluable_outputs['output'].curr_value) - print("arccos_node output:", eg.enodes['arccos_node'].evaluable_outputs['output'].curr_value) - print("arcsin_node output:", eg.enodes['arcsin_node'].evaluable_outputs['output'].curr_value) + print( + "arctan_node output:", + eg.enodes["arctan_node"].evaluable_outputs["output"].curr_value, + ) + print( + "arccos_node output:", + eg.enodes["arccos_node"].evaluable_outputs["output"].curr_value, + ) + print( + "arcsin_node output:", + eg.enodes["arcsin_node"].evaluable_outputs["output"].curr_value, + ) - #visualize the model + # visualize the model mod.to_graph_image(engine="dot", output_format="png") + if __name__ == "__main__": main() From 124d4d869d49ff12a6db605ca0bf34e7e4475c68 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Tue, 26 Mar 2024 01:18:30 +0530 Subject: [PATCH 3/5] removing maximum --- src/modeci_mdf/functions/standard.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modeci_mdf/functions/standard.py b/src/modeci_mdf/functions/standard.py index 18d613d8c..c4375e5db 100644 --- a/src/modeci_mdf/functions/standard.py +++ b/src/modeci_mdf/functions/standard.py @@ -81,7 +81,6 @@ def create_python_expression(expression_string: str = None) -> str: "sinh", "cosh", "tanh", - "maximum", ] functions_sorted = sorted(functions, key=len, reverse=True) for func in functions_sorted: From 0aaad66b726f6a6e57dcbd29f6970322dbfb6c92 Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Thu, 28 Mar 2024 19:31:39 +0530 Subject: [PATCH 4/5] added tests to test_mdf_functions --- tests/test_mdf_functions.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_mdf_functions.py b/tests/test_mdf_functions.py index d27033a97..e8b3e48a6 100644 --- a/tests/test_mdf_functions.py +++ b/tests/test_mdf_functions.py @@ -29,6 +29,12 @@ ), ("Relu", {"A": 1}, 1), ("Relu", {"A": -1}, 0), + ("arctan", {"variable0": 1, "scale": 1}, math.atan(1)), + ("arctan", {"variable0": 0, "scale": 2}, 2 * math.atan(0)), + ("arcsin", {"variable0": 0.5, "scale": 1}, math.asin(0.5)), + ("arcsin", {"variable0": 0, "scale": 2}, 2 * math.asin(0)), + ("arccos", {"variable0": 0.5, "scale": 1}, math.acos(0.5)), + ("arccos", {"variable0": 0, "scale": 2}, 2 * math.acos(0)), ], ) def test_std_functions(name, expected_result, parameters): From 81c92e492a0b118a0a3cf0c19c8aa15cdb2ce28a Mon Sep 17 00:00:00 2001 From: Rimjhim Mittal Date: Fri, 29 Mar 2024 16:18:16 +0530 Subject: [PATCH 5/5] remove arc_functions example script. --- examples/MDF/arc_functions.gv.png | Bin 58428 -> 0 bytes examples/MDF/arc_functions.py | 78 ------------------------------ 2 files changed, 78 deletions(-) delete mode 100644 examples/MDF/arc_functions.gv.png delete mode 100644 examples/MDF/arc_functions.py diff --git a/examples/MDF/arc_functions.gv.png b/examples/MDF/arc_functions.gv.png deleted file mode 100644 index 4dccef05a35328f00c4bd945ed6d2557ff696d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58428 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 diff --git a/examples/MDF/arc_functions.py b/examples/MDF/arc_functions.py deleted file mode 100644 index 8fd7b82b8..000000000 --- a/examples/MDF/arc_functions.py +++ /dev/null @@ -1,78 +0,0 @@ -from modeci_mdf.mdf import Model, Graph, Node, Parameter, OutputPort, InputPort -from modeci_mdf.execution_engine import EvaluableGraph -from modeci_mdf.utils import simple_connect - - -def main(): - mod = Model(id="TrigFunctionsChain") - mod_graph = Graph(id="arc_functions") - mod.graphs.append(mod_graph) - - # First node: arctan - arctan_node = Node(id="arctan_node") - arctan_node.parameters.append( - Parameter(id="input_value", value=1.0) - ) # Example input - arctan_node.parameters.append( - Parameter( - id="arctan_result", - function="arctan", - args={"variable0": "input_value", "scale": 0.4}, - ) - ) - arctan_node.output_ports.append(OutputPort(id="output", value="arctan_result")) - mod_graph.nodes.append(arctan_node) - - # Second node: arccos, receiving input from the first node - arccos_node = Node(id="arccos_node") - arccos_node.input_ports.append(InputPort(id="input_from_arctan")) - arccos_node.parameters.append( - Parameter( - id="arccos_result", - function="arccos", - args={"variable0": "input_from_arctan", "scale": 0.3}, - ) - ) - arccos_node.output_ports.append(OutputPort(id="output", value="arccos_result")) - mod_graph.nodes.append(arccos_node) - - # Third node: arcsin, receiving input from the second node - arcsin_node = Node(id="arcsin_node") - arcsin_node.input_ports.append(InputPort(id="input_from_arccos")) - arcsin_node.parameters.append( - Parameter( - id="arcsin_result", - function="arcsin", - args={"variable0": "input_from_arccos", "scale": 0.2}, - ) - ) - arcsin_node.output_ports.append(OutputPort(id="output", value="arcsin_result")) - mod_graph.nodes.append(arcsin_node) - - simple_connect(arctan_node, arccos_node, mod_graph) - simple_connect(arccos_node, arcsin_node, mod_graph) - - # Create EvaluableGraph and evaluate the model - eg = EvaluableGraph(mod_graph, verbose=True) - eg.evaluate() - - # Print output of each node - print( - "arctan_node output:", - eg.enodes["arctan_node"].evaluable_outputs["output"].curr_value, - ) - print( - "arccos_node output:", - eg.enodes["arccos_node"].evaluable_outputs["output"].curr_value, - ) - print( - "arcsin_node output:", - eg.enodes["arcsin_node"].evaluable_outputs["output"].curr_value, - ) - - # visualize the model - mod.to_graph_image(engine="dot", output_format="png") - - -if __name__ == "__main__": - main()