From 1b1980a0f9dfdbd5cf92c83e9e23556223d221aa Mon Sep 17 00:00:00 2001 From: blowfish Date: Mon, 26 Feb 2018 20:06:08 -0800 Subject: [PATCH] implement THRUST_TRANSFORM nodes To allow thrust transforms with different names to exist on the same module Engine module now accepts THRUST_TRANSFORM nodes with these values * name: name of the transform * overallMultiplier: multiplier for all transforms with this name * multiplier: individual multipliers for each transform - there should be the same number here as there are transforms (or if there is just one then it will be incorporated into overallMultiplier) Any number of THRUST_TRANSFORM nodes can appear on an engine module. If there are none it will use the default way of finding thrust transforms --- .../SolverEngines/Plugins/SolverEngines.dll | Bin 69120 -> 72192 bytes SolverEngines/EngineModule.cs | 94 +++++++++++++++++- SolverEngines/SolverEngines.csproj | 1 + SolverEngines/ThrustTransformInfo.cs | 56 +++++++++++ 4 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 SolverEngines/ThrustTransformInfo.cs diff --git a/GameData/SolverEngines/Plugins/SolverEngines.dll b/GameData/SolverEngines/Plugins/SolverEngines.dll index 64e5b291b3d01f0939bf24e28298f697e1dc8cce..32082695f0da440866a6973d3f315f23e8ee4b5f 100755 GIT binary patch literal 72192 zcmb?^349b)*6*#QtCw^)>2%T^l0ZU2LebrU5OzTWf{2O;Dw;(R6_Ef^&;b>j4nYt> z5jRA@758l%aT{?*5oO#!blg!C88>D?8Mje*|8s8j5)iO6=arp( z=Je^-tg^GtDT~jZUe-LlZ1@Q$m7QlzJg0}x=jm#j9&?lsqZCaXx%%41RBoS&^0FMI zMuWGzllNq^REqZ@adn&JFBb`6-YZ1=l&tcnK(I!a z@g#c*1XPdt)dW?PHq|N+!V}Rdq@mq)eT{M<+Ug<<%U7>jb$CYBPyrgh|J0cwq?+2; z5D{cMiNx?Npq0P=+Ni_LFl4bpwS31v=GG)>s|dg> zCQt(4fv^)1J~Xr()o?PG4XJ8^>`BK1Y}8k0`&B9E(@*%`^C&3v;Icr2`{W*IZP z09we~lcX%kZ%xF>75r2a9(r2Q{5>%xB2y$PK_#jHRI?kPWfI*TpdVB$2QrS8!#c?l z5dbp^VAC<6mI{@K%5jv=bIGN%0{N?AsLUR9QjG+${;G+R7_pwx1FHv^)#a)3^dyyh z)kFg}VkjlLq9?RZiG(Ae$SJl%PBnpu=u~+^M3((eCE2G(?z5|)7p$4J0GzZ>AiL1L z!A2&Y{76w8=4V7Mj-%1cQ0G!!@j9SpAE?AJYRoYEk}`6qcJUsrD%wRHop}aa#(1E| zn&j2$2gOjY`oIHla2T+=5UprNGyHus| zX3Bxvfi)0{@heiv&BH(%@mhsE7(^nr%pMqjP)Ml|xvc!EpT#=0QEe>$?u{;k)W&*l z^Yw^fTb(%=_NbkyB7iuc*9ADX+^jvS(P%VAo>f~8hgK3n($#PhI{E<(rmc<}jA|Z1 z)@oG?;r3WVYyu6)W6q;?1_={Kl7wQ9%AjE>fG#tPk_-p%s461JB*dQN2mmzUqY1}Y zgP;>!3U7+5bJX}mgvC4toXAEQJ!N^4F z#;>CMsB3UM^VEF>WZZ?0LgNtXl-oyE{9|s_8V`L>6n**(LR7<=z*it=0!f|)fZC-C zO){QHXQ>%EUrkH|O=CQovq$40K3CDqNu*U|o=caDWlBv=Oa@sl#4AG^RSP}E(`Zg1 z1^7g57vr12s1!h)!fJwAjIr9zbSe>Cc;=%vw#ji7k&*p=IY(d`^i1xdGD?-zdR2bZ zkvI?hScwsToV2(VF)J~h^eI^Ant!Ljaau#Oud;zXtHw7&mZa8f_Zcb(dJ(l5yI)c9 zRnr1Q2g$TkiWE6T*BNvzYMn`!9`PM8*@9`obI}nh4gPwyp;{Hx!Kj`PIQ~hNs#+NK zjATCbTC)X-;wNijhBXVAnjkKsD#Sk3noS%glIIf|N?t%06MY{Ihf_{YrHr=`b|K_4 zmN&wLi`uki&N(P;#U%Qv@gd1B**@I{E?4}(~g( zmd9)(Fdsl|xfn262`4pc0Z?lpfF~L^tV@8*fr#^E>g_UdCD7t^b1_7m)wa&Q`1tlJZYiZPYnw2vCAd~E+Lmw3M*NhZ9?)aXfNos| z_D8CWDK`hz!W3XoA5lsGM6>97v*?VzqNrH4wQdxsesu5}hbYpJmd7OW^RR7TXSMZ# zZ?vZqmqR<>q`7|JBZm;FQnV7H{G5U8x^#K(aw)1rJYN8zR3GEFA90$~|EQZatuAxLmz*tsY6@Ty# zQc?*9Jc)=R;bi0;YeJf4n^@M|V^sVHq%OLm2(?=o%4);6Rfb7(=@bZVt1Pthy{)oi zI;|9$*CGcVwW6nlg3jnMDwjWC1e~j_<&Z%iLyI1C*$HDE0x2}$T-g|O$tVR})^*S} z0Vw+P@-1DmNg#r}i)CL_^VsR5;lewcQW@r-Ja4*Z2i%Tw(<19O^?{ zl;llFXQMY~&|5O-t%UOE%4_;+SL+&Z&?GZU{M*2Yd9y~$h?=;act@)V8l0=^QfvD= zKqc-3NV3_mc^7bu{k<>%ROeKXkMxVWZFF~C5^n0MbvNnJBHq9(jiCXP1Yq_(1>ZMh z-7-iQvX|cXkPQ<{Wy8XlfVl{(e!wWf1QnhmGR%vh$;NNp3#L7Qz-ioCq(dEU@D8{< z&2n*-<*125cvkImTK6HLc|Slj$0_f~i110XY64m6c7t$n-I@X z0sJc~pni2Jdnlz~tp(HGKZSFMLxwTyz4AlRrTF#LI@HQK>=6hz`N0PAsP zn}5RvLg;!DPY{kU5n)*C096b98P0J{qW4hEVkW00IStyhKE|BPzf}32;siA1TVtVB zU_DI?wy7qb$q2C+JwW(uMmXjm;d2?`327l*fDaCFS;_}4bGrTXo7DO|l2xD4x*nI} zD^BBqC;lY59)=vdy}SUCIRqv#^2DEIQAax-w603L2yk0vQG5f5%nhKdmjI-SwGn6p z&9aOmjtN3H>tHK#nZ4@Ci5pHVyyml-mc(SJt9r6KE|I%rr%@BMlrdihkc%40Kzn@U z$i`#=X`W?wA-=`bO)RU7B=rNVrCefss_Yu`WWIifnxM{O4TG*^VS!4y>wewAci4Wz z@3f9gi&eTMN24KUrm2ZyCNP}nbi*U-+99^8yaz+~LR`V4A)*^9>X^(p7PwqOsfjLZ zq7z_KlEb6UC06`23dk$SCVmz$buMYdr>B{-2+O;2Xux%>Ot*C&DOejP?|$(2aDv$%xO$_=2TTA_Qr_B6+pR)JE94 zy2g61J@5~?a!5Zjs~8wL4_Mh>geJl(`)JWYvc)Nx>YkdUs#2X(n zZw4ywv-_ceI59us9<5wWYysb}-Xg`V0O_FjRYUf@Dyvv;Ls+{x9HFsD-sfq&PNlBo zk*kJ2E<^-m)GwD0{p?kQ5y1dW?H5z1Y{%44u}9R;CXWL-726w$caS<(X}8`^YN7~< z*k*q;@h%`FYuY{)smYIeyDYNM=07NXo*e-U1fE21fNB&4g{_dYn;};pH0fk*VX5I% zY11=c?VGe!CWk=tI_fO@6!UNeo^Mmlcac1GXZB|&d2EO+N5$cS!JRHo6E)uMeD9IP z^8Neg%}c%yl=w_YJ_T0tIsP$_E{=a!M8*053FsaT_uND~tq;M#ZtX|7*mqxF@IFrz zJxAO|%;{KJ+JYR?wikivq@!%3uq z`6*~@{&uW0x0CoY09*2Td&!QpB))^1@E2+NKpQ(Vk^^k~6B4*Zzuk3dL~m%yaE*o> zLvM7}Pepr!hOQYz@P-C8(Y8A4OBjhrVXRYD(Im_IigLH3!gKFA$jwi2Yc9*h_4LZp z!KZrwnsCiwR+Be1_2#MZpHMjSYZ$={9Nz~5({7%U&F*Nki}FMkn`d5hF|K3uYyPPf zSoGlc?|DfYT(DC&W6bio$=spvn+9yZZHL{FP& zA_Co1SN%qE0AHQSfqZrF0x@|Q5$asJnE#^O(RZP(C;QOV_WaX2l{!1E1xcK`BrylU z0aZFM$R^lxf2-Y21T({-wOc;BYKyrLEEq zZ8mvKd-7-^b=uO^X6##k~Uq*CSBQ;NP7P$5=rMnQVid$MSezZRugoMVOy0P zPAk^PIRc%IGM$Qo(7Fy8hz{sid17Ay<|J%e%|BoIItHt4?n;>mkAOowUU? z!mTqL;&mR|)x{*(&4pd*@}wW??AE`o&VD}ie0)fQJ#i1IYs{GXH`-T<++C;FH#T_E zHVkt&q#oPUo;t%MZBJ_5I3txO*UZE#he)eKtReraJZ)dP4$&Ly8|&>s?YrxSq;gML zPv^cURqI$?QOH%EUXoNRs<{UqVmEUxW?Vh786YxR5?Ycd)tro|rWM|7r$CfS>#K~y z7E(x=!=fQWVDXS4uvo|tnA9@_W@tUKFXaMJ61P3fFcO5?vDjT#-;{ipblZDFtc)>M z;DXx5GK>VFX=CWCoR2hy20WVVl%uCHLVLFuHRw4^K&6I>F$`B3usoqBDK18mB8oxC z#MEG@4)aX9NQ+1ttT6=g;5Mk5G~CGC|ESq{q}x(4yZIQI25Fa}>k!pE3r4AhB&izg zq&%i)xAv^0G6foRl4?gLP-$xqZqumOl%y(5@oC(W{7l#ylT?*Y)mINBMp8dlHhOzQ32yD2zYquGc{sFwlEWkAlcF! zW;3)sa7DULCh`P_xdFHN6G1kf%KNP;AMz<3=ZSk-azZ9;(wlPfL?x%xoOY({37Awc zI7Y)x+E%s?Qz7`XKEMcV@}_)9=V`kkeQv7fD5Oed$BG>!U+favK~8xq-CLn*TB?5gSFJ#13&)t<=qqgEoms#df-;`$5H*)_@*Z&XjF@)HqLy%f@V#_hj z^QN&>e9&++r3pIJpn;uT-d>|^-P@@z1YJg+i%W(Jw_seUVPg((9w4dDaoI|^P;lwK zGQ*K0gD;@ltaNEWQ}OGY>hY|?VN2_Aubs6$TsH+vO~cs~bYoMwDd2Vo^rnEL1rutj z{a_I#$F;=wXk^kjZf6@c+({(%f)&M0@_%sk*n=MQ(=JFuFJPiaD6g5!1Byhy5P z2x0x2&W*D7WJ!L5B|HlsBWbQ|fa(zD!wsL9A;4$KVW3M5r z74#jz+mdo1UP`S#^N265x^T~ggFzm7E&!|jOkpF2^d+L9+Al;?Y~r!ZAzHbVcpfen z_$VSxWzxUYbi_#;_0(W^h;r*0DF(V!e4aaCK&-c|r>mr)NseNN_QlRV9V?z=ZC_FY z%%AqW>RWT>AFDwX*A`5ogwGoS9uviU{vVmH~DZ~(tJemL`~ zSlRj|@iUlDOPOqbr}%v4Q-x&nJI8NgJ_RP5U+RuO!vY$W+X+1JPau%{f;45!2lQ-?4@&xTdp4S71!BVfW^ zqPRlhR6kTNMbrmFt3BZyY_h4&)uw~Y@)nPZM|lJhgG-68{_pFg?Ix!<<$Qt`?pSdAuQCH0pA%rbpVAkMx2bY}fcnuR}m@ z8v}!3HXH4Pr++@T3z@$e4eN2jMUF33r_O)|7+J$hnF*1eq!t2I5^FC{y=oeZ5x zj~1n5r>A9zP8-&wIz^YBPzM~#n(JP~vs)f_bndrkIsuM#tZOTUE!HWVdIEi$hdKF% z6+r0kqz;Ii@I2sl`V}Z;CjBWg{RyoUpxDS(igIk|A6a9~Z1at+6#I6Zh;%MLo}^;6 zAKO)PAv%^i7w&k>ApGJdH+;hLoN4T%Ccc4>olr);)yGcffLFo5u^DJPtpY%=;Yx%k z?ftOgN`wi0fDAqa00z#{da8%Itd6+yqefSv2&l^{CPoQ>*@?hkpzbr=S;oxH#Ah?n zlS4s0I>g1tCeSlbE1uZ{5KwwtVV|5RLH#63(@BUbOH%V{7Ab4M5M?J5xJbgJQ>g*lMP7{R0G^l}n0t_dODAe*%_u ztx6=|B0>kFtZwx1sYa48JAZrX!KT=yINtT^R;SBYBO--ChHcYnRi{jxv(Qd0d7<{^?7b@LA zf@xU8tL7qL0Y|;`RW+9~8PF40*yz(5>rL{~9d7WsLp>jp+UWxIYnEi+Qio31m&ulmjO01E7~Dr$WF$=51HusM)GXWnM+; zB^?2?B9Z^#(c3RtSl7o7HPTK}JBXHG1D4ZfRL$vRkfgG$$oo9$k-b}&T_-^!idI6E z6fn3}_`D%%o_v?7EO>+gF5E!FT&U+3IgdSuu3n0EXV)+uVW9bNMa3AU_H9)&N=+%; z;2D4##^}I>q#?rKAp%n#hFE!^4W|jB<0UPRKl$9VF)AsvZAtbdW%WQ}_iP7@;jtnV;7(HG8^A&#jBs|~n|Q8f$4Xs}Mv`HF=~YMCrV|E%@5)5J*|kBea+kJFXo)%08? zSJix4P*>fYIOx!WhAZd{2VFQfG~g};j~N4w20E0*zkbKzjxviJtl?3vtI_FdAhpIO zs&w3zHaZ(!&IVF##Cws81x7HdcOk9to}Y8_|Ol_6JNA23=kw{KVtS_rUquf6)T`~ zP2nRbvwNMZzv8qXy%E^}Hk}MbLkjm%_4@bKEdfh-QGy>`UkKw4yF4Pyx=`mXJTyC{{&=9rioVdq}7!;}l@##=7 z_%N?bqVnlC)yR}x=l8I0r5{S1iOWlBk0D`mF9`1uEE@X1JIfTP@eE^t|MxHkq(c2;siD;s6N z@;U#=UGti$n0TV>sm`NgZw9)2%Ml>kNFb$kAni3!J&J?;1Fa;*8VLJ=Lm+kb(85s< z2r`66)UjTzQ=m{Ci9ZY{&7WYG=fC);ME*kAHApRX0{FU^kfyDD=LkxzGXs#F$iKQkeO`*LK)o?4Q z-^Qy@oPcLLE$<>VPL)xXxEmTq#o_1Fyq{1@b0nr|J& zvJrrHq8LhY2BeY0WEwa;lSpjqo9mGa&KD(GD0Kq!pe`eDCyJr4-viV6QDNhGeminF zN1s~yYPXq3Bc~)KhYO=fW=B2VFC&}>8tp*i_ZKR; z-BF9vOS@XfqSnv=kHbYZ%u%@HXbvY=urqRznjnv)JC{)o3361+w~nXEzU!gNwK{nOEYE;Wg#QZcBEZVuyRc~awrQKakhnaMOl`y zu#|e)q0D4-?4odYMEx85?nD*pq2)B3xA7QS5*4iH=NJjP#;WX~VVSI_nx?VOI32nz zI8)}4Jr(0hrgE-K`{R_ZsM1!l4FbB;;%mDK!^+qWLbiMDN_ll!Mf=@SW^{hn%r$?) zOhzZ$48;oFl-g~eWxO4$_hF7=Mb{YKa^omm3L-TUBUWcntWKa2~46C&+Zj)rGlDMoU!5kD4VGcR3|7!z=!;i5E6eO`?}l%}a&$3IJv7^7Q$ zLkW^JK_GY(|BT#t3h64=HHS02?@5f_`^SzNj&&VHv`hg4162rH>4a3%&tk7QYBI&>hA#A@OOKpJ@H zYOSNf~ldGVEH$d|lNhz0-l^(WkdIv66q9#b)&eGp{Gl-b8^(I`foo8Ze#i+&^ zdR)rr&EVEsAV3gR3gRT>81EMlGs0Jl!Q5UMD#ugtVdlAD-)2q*Y$I(Gj|&X541i+o z7Kg#dYU<{EQp*FgNb3&Yp*$l(2w}TU_iH}C+t!shX zw)Vn6>t~>?DbO;p8)UEzXFc0+7B=Rz-XW8oPe~unB>kR}eo9HF{%+DcDQUBsAm3tV z%E(z5i82pi`yFR;FE_7cxc6{T){C3y%cbgUqqc}5u zu(*%YoWWx3-p&MqOI%)Bdmp7?nYvbs=HC%Ai+b-pXK(#BwTw9*KD> zgKmkrD}yeH$xD1MiV$!dx=G%H$i~jL+Z8@_z`nO{S4Y|0cJc4mGmc|bcwL+mU~(|p zN9)kJ-AlR6v2&Yw$lOvsw9oCRxGSBTY{1l*qygR)=0hk=>_aUyxyBCZgI#5K!6uFQ zTJM8j)g`U>)1{#G0lN5G|3VjM>w~z&T5Vr3#~DFCw%MY`1pI*x)*Muf+}7{y$}ljJ zd8Xk&OnXj-!Vu?anpTg!Hav{!5a`^3!^Lz?i03AZge>LDGB zRmBIOXswUHAy?}cfK~#j4p~Yr%0SFZsdFz_h~NbV8tM{rDG^HLF_XZ8d3kw!rr92! zTfxK2EP>4Fl752&fpo0;^~4dIKW(Ndm>VAfpYw9#e_SgZ^VoR1Wt<|jFc(m?gXz43 z`8NMz@Y9b8`Wdc3uql`yA59tM$EW;Z^>eMpPRQ6S$SPPq2IIYb~Ob<@oUKPV`Mqhx{EBg9m+D#Ax4i5^JqT9B!@w7 zKJ@Gf>0+R*sAWBVBb6FYny^_UC&bq0z`o5~01aNBw9@h<{@_7sxL--Bk%qaDytstG zA~Md?D4rS^JfZTML7q+Rfq68aKJJ3sC~GlPjrfx=PUogOVn)WpeTX;_mP~l$PKO7} zae)b5_w>TGXO<04&Dkxb^wwoCi6jA;vH};wx*R;2UKi(4Ebx=-ByZjH4uwfEVXIvmcP&Nkew?eo|A>U|2KG{xeONK6H$babtO>i zDga&#%4HK?Ga&~;*45x2yokkwijPNx+GuSR=^Rd9F;IaHwaKe$UPF4LrCf653W)37 zC5CXRu@s{w7aLHf(6Vd|aFnwHm4}yQ55mh-D@2QJzbqqdUW>nD+say6#djj*JcLsZ znLS}HUYHM>7ELxioM>7J+4O}((<;TL?;@I35H|f5(KN%^w6_5CeHpqd(KP7W^3#Z> z(ch*oCYq)Jn_f;db#qB)brUL<$=!qth_cbz{(ZZQ>X`UFNE)_0)F-Hb;JlLIP!Yk| zo#9X+!O07yQ&BO&8JyuzLBScH;ZRY*nV#X$gbU7%84eX6oQE?U3II4SWH=N8aNf#r zCvJ1#|sr_gp>iV#m!?YI;ro>kg$DN?+2 z$Z)YyC0~X>% z>fLsD%KWwi&BqJF zV#a0+mBr=?Lok2kG;zS z3PPs}??W#5tcJ=ZqnFzMMGStmPJY2lwQi;i-eRMb)ra;qRM;*ecu;-|B}x_c)@))8 z5j|RN!=;TXoqW$4uW4q-c&*ZS{Sa`B*Im-%bu04u-SL{VFuvsJjo0(&_Ln{n z7M(|TvnJX}bRMlv%?^aos>wtviq4}|ju`-!HDZ!sIbw1aJdR974!sd;j17;%DSGpT z)&hoHOOT%0`YEN$gRM5oQ{{VDGe|Ufqw>1g%qN;WQCq(x{Q{!NAGP%xqC-TJS8@+# zv@Dvi^W_j_#xHrRZrzU9${T*`4no0*}98RGKx=W0FCTq-`FkonjL2U*fsWy zonoKZ9l42w&pSOyzI9gH_*&HZluh!rsP$=^kdcdwv!s7>>Ha$QCh9N;8|F^%_ITe#YCnY zknnkyKL&Z^@7QV7w4-rY;Y3_i4puq?sYiECCuY>-TE{J>wD+$WTIv|m{l%O*2^f;2GhMaRlwQ2%y_Q|x>@;C!~Z4l1}j ziOV@yV&6Kn-h2vpX@0|0^Jz-{3@bq8Sw_s~a7k%C4?Lr}9+Vn+E5vmHTaO-Tz5rGm z1yioxnWRF1963x%$x}IYR>3co#_Ys;@U%Q(y@=%1`5F!Q^f3`;8`cJJjmWWT%S%9# z#7wP*sC>FuYL{MY^pe@gwqr&xg)S72&z-{%0 zziED~2z;vfH0KoJQ03d4tdenY@G-o@0{9dKmyh0ei*})x-Buq|Ha*~M{|Z{|yU{{} z>jqzSq3XhhEr%LGf<+t~3|m`M@z%vW!~p#s-!oBTBeTkkSF$n%lqKen(o1%p2_A!s z>EvQ+aVmFvDHT?WQ@PvosmNNKO5cu;@oshuod-`}XVH}oav2&Ov@#;CYRlX3H~A`( zrk?`-oe1kll0T>>NYwgY0Nw=o1;{=F3u>d~9VD!5BMF^|kK$7*Rvq~CDHXCnPaNq} zDu_Wb`tg;x7aYj#VF>tmkb|JG9vyAN)A(v<*fZb_C`+!>91J#8D0}N&WaW#N<>5FD zu%M3b#GOD^@QFC5c@klI*t4x8~7IL(uhqAHc$M+atSn{9#;mGq#jcmICY963s8+h_#J z9UD>23PowkEyI;(n8!m2m$A6mO+Mw?dk4CvrK-ne4uX0FM+*^hahRw+SMdFuid`%m zowxC$l-Nv#aT<%yL-ia+btuEwieQ!Yu|7b^=@Ty}81zxxu=OET7QK$p8wXrh)3`9Z z8#OY zH8c&Jyn3B3jwIR+hFgrcnm7V}4uYTBY%o;%$c}a=VW?V4V=&yOs0m7HFx;n{p(e>#wIWP2aAbk+KV{2YG>CYBWVJOSs$Zxp48Pbmc? zY;+hE?^vm3XFo#9%`p_H>xsaDC@wP>1Me4(hQ!oR9351`TXJ(zI&?D83)=Q2*4gSC#i~A3P;OM1ij5s70TJB(?`1H9ss>{>Fy{T znCcXG{~m<|!KDu}@bMn{a-BinQFNzdOHF(L9#0>*H=PLUZ6AUWsns&? zc|mY42|gylVZ51%2+9pf)UhF!!C(5tBgJAyemNcb1pr+GI^6O(BGL8<636?o+{#;U zn3U542V4Fr$&X<9j%zFXOF2C!u;trHJ_7Q1Jpg^aJ<881>9g)pzIT%t=`qH!H_~SW z$CzCYh%f)*BiMGPjY!}ANxpqWwnwx4#s8EHm3e2$zb1LTOuyHC zw3N#>#Oc2w`4lPdI_nrIm%g+7TasUB=YP@ggY54j`89}Dd@+lo+LD3?pOWOO%E`6~YJ@U!@p~VC?*w7!Z7u5-@@fN`DK6wTrm@B%xaWA_^bi z{x`1hxvj3ZUrp?mgb*0ZLRbY?!9|3c*SN>ov9{0OQ@YfG!rTKw$Cto$^E+TT2cj{8 zL7Ua^y(F@%`W?yd`D&PZam8>U^T*dSIqPZl%p%=s4Yr70x8^aQ@;{vBCcQ^@yF~wi zBJ%a&Z7w&4pdUcyDk=!%|05F}Fb7bU@_UFkq5@R&C!(=h_e3UXV{A)5gQuFm0P-F+ z1@XTiINXeY@oS2~2pGSm7>r<8+(+s66Bh&qXPba3zP9X%{Gzs~xF$)>MoCEx@hwb} zbnrqV21U595uuwpUGhx_E;0_fz~If_(39C|mH}C8PyQ z4xmNd`jd1DeLDR%A5keQI62jN)UR5zwnqE95)=CP*(-i5DrV&GCDM$N2{5E3a6wVZ2C*hlK8VE;CgEbK!nwdtRxCP-KXl} zbURE=T5Zr83U>h1R0KgeV|5D~wqH9oQwj~mqXj~h+{ zPxk&Ia{&4p)*i25l%<1bNM&GIvWk`^zknAhNAc-4By!|Q$Kq}Y9S=V*{-0mlqozmS zn*OzP(~iF!F%7WKkvMaK74xmQzK0Fjij!u=o2Q@KLK+udAjAaB;uYgg67Q|x?^%e7 zqsJXH9I`J#55c}g#gWsjvq%{~_^g~-`ncPT)qwa#=}jMgq1b731gu4oD@LvyrCHM&@q&Lcj^f4|BQBMJz< z%&;wgPE}BJfU+U($?wtG5Zwz1dKf;)a1z6L44-42<@ry-LLrlEp@uBh_zHeB7w%H`|@`;aK3-E7>y_aic86aKLjnC_Tj}ubevxFIUXc35XCCr@UFCz_4bi`p?40ak|ipl0ry-51G(xn!kDlT558R7}nyr-1>xg8bo zt~iy;ct%gsAAubG0xt{!UWDj*#M25{E@${6yhZ6M$^We=yCK?4l3o-f_+d4{4Y9S5%6nROva=JB_ltKC6Ti3z&BqY+KGIR4lPAU&lC^M{tUcU; ztOYx+K`u9VDAm^-0a`2g#VNoI@nvVS{5@e8|$r5fi_749|05vz9D$ zK#qS?&O#gTi&en=B7iB-FW!MoLu^9b`9)<9;+%&y74$n%jc;Y08m#0EF|`MIdxno{ z>d9iNwOL$i6S_W9{I2L3k@yJFK$M;daAqFtIx_Q{#y~lJTX~&FSkw|g5I1bR@4w@ zCE6|i^ci-0{o*(D{{HF=)Nh{nIFIt(jMC+auhAy+L{T-tDsCq?fn$i@YN+fC@78de>{a zU4pNKl`?e|sAim(JyN)lZerE7-PVfZ@f?t>^eZOW3E24}>X`~j&FB11Lw;YN_by`D zd7R%QaUD~2oNkg>!J2A8lg$ltxQeuO6o~Y z_g;@{yD5q#o)!wqT?bzr%1rSLm*HiW%@pfd^G8r)@K>~6VCru+^&+Pm!|CE;15@2? z>J`rK=-!lHT)f8VW`k-5^*U3F;Y+iaCEkRWxne1oD1i}xsAs#8>=NE1%@q$bwM6{J z>0VG*slAkyVjok(%vEYL^71Pb&jC@Q{wngBvRL+zC}XNeG0FZWDpA;6aZ66Duo zET)1gQD2FfSm@=7D`2Tv{7bYb3qakE`^RRnS1eRCP;(&L0qPQ_{)!&kOZf$}M#i&W z#7e~wy&OvbSA~`Wt_Ur_DAD4Z130vl;19VZ?VuAJ-izRc9SP=jAZfk9c;#{6^izrB z$S2NiZ0E0R^M~LP9H9EPn;&pTZXu-ivbC3dq`9p6a-_Q7LHS;VlaPkk)`j3RT}b*6 zOYdR0qzh?&6Q*1~F1Z|M<-aN;cs=;KaCatnL$9Aay4Y#{1~@+A%+bY7U2_4yDb5Gn z%J3piRat$#u8X647UrDX_76dp@8DcMW&A6KpEHaUlT>HCv5fFX3JE@=5&Q^$@Wl`} zDg?KbkmqGx33lzh8gMVC`jO#-3h6%(Ch49|gkR$zxQyYgEWM2J)eLW8xW`92Q)&qI zE+<&55**Zv;IAAFci|lLuG6YIkkAU6;eMm*IYfyPd=t(DOL-C|6AkI@L9O0T*{W0uk7T z2rJ?ZXd2=b;8j9LJE;<`iX}>wxF#|Zmb-dK0iL9v49yqH>j9s0Q(m1TO@QxoI|r$j zmNo;PReBs!T@PFlGkcR}pwD@L3%!JI;#5T*O8XDScQUMG&P_ey;7>0lO|q$oK@}GO zj$&BJ@LYW^IH&7vfZudn2zXN0#ehRXOYzNtp@DM1yBLNTUSE0@IDHwP4^Jw@Q4G5< z?8}fmtPsl>{?ME7cNkjC`GWC(z_$wVABK-Hls*?0FG6gm#g@Z|HvmA&>+J-Z%0}O~Au8(2iOoqc4CY@xzuH$D&)tg}SuzKwuzo_@?j=_G=fJDJ!C#>HSk8W=+L5b!74bmC?X40W{q<-qi`_xs*A*9f zF?Q+H0-xd@dJ6a1kvw|5&;4jL_pH9G^F2#{<^EU@nu|7E5NZSb811&7_@~mz3vWfa zm+(Ho=Zl5#@Gku^z&jasFCpC3>3+b<7{Qg=bAZ<~Jhf^Q@KYGhiV;4wcq?Fi6~R*r z365s`ctAz0h*4iILVr=jSr~g2G0#PuwG7`y3>Dl{j`Aqt3zcAR^IX8b?qPsZ^Ezmf zw*%SpBfMkEFe!#t1i&sYRkbsNgPdhmJ+SDGu?PO}(jIg?ZpBrWO@`T&ZCG?T8gHX`bF`yw@qJY-(`HIbN6O zZBxJ0p5t|kAxv%L@_EG7l2Weh{u@sGZLq1EyX%Tq^rE8=hurk+{7w7j3yK zR$4+VIw&o*fgPp}IHZ{8^$$nyLp)k4v5xqO*ug zO2qPsy3dwTi|j1c+7z|O&f*DMlUihF@f=eN#oQW7_pVJXW@@)hjSuZoI}7?#P!z!> zz2aKU$olPJBVk0ak)(mLL~Z&l{VE2Hv5Y^ZE8GX-CsOx zQl(Tn* z)+oNQsilP#T9f$6rbhL;$9tMsc$7@n6)j}E@Q;wxFM&bY1ToyE)*#&kv5={a;{2I*uWi{Dw4QUtced

+JHGu!4CICDdRbOs`zL$=O;R0%$h3hK7sS&IcKWa%+v~T zmLtzMReWeuv%7TkO%q}aX|52(%nyf~Ag zR%1T8I4wJ?_p!bVbyDv!z6EL7!_dr7?;8bK)a%CG81Yg$9MPj7i>m2yH-Ddqq$rVh zobQsf<`i#}Z&8|huj7O)Y6qxG)3QNbC;1kqsZpSoq$x8r&39Rv8VKt06y>-JbK}x9 zMJt^Q^-)dSw^VHA8e4$+OZcu}O-;}m>|V!}HnmaNm2NNFb&SKv+X=+=}a^H2L z!#HA)l^c93MCUB(`gYVxJDtp7Rocp~oHf21($tqZcl&NkQF#2RB2P7ax9G;6?Q~0O2vg+COFq<+q+D~1*M0YhRW@}MsC&gjX-!4k zCx)IvW_R++@jh{iO;J4W6G^5Pi8ngG?Ym#xVN(xaP5XdYXH!%w4~Wf7QOrK@Js?J& zN;c<f#wkhfzkBeaqG6(7%e-p>q6!nh3iRm^) zz2k4<8k?ft@q~EHrl@y3A>Ows>K*IEuQo-!W1VPilsQoEcv393De4_hisx;LddE}Z zKTORR_Zb6xPmBB}nU4C(Gh&oYQD1ph%x7x8a5@M0o)b6PGU_?ci??lxdd_;`K8>u* z7q!&`d@qQuOzl*t#$FVU+OkV3zV*E*o@a{cPr=%`GwASA& z2Am;fcfhmF;t8e}iHouAxLMpWfn8Z` z+bv=TQ!B)GDrweCq5M_|pH|`DBJ!t7YMg2M-x9yt)LEdmif-qTOxk=~)G#II@VCWM zrdEi2XN~`Du|vwlO@Y3kCQp|(t9uRsHOr>nRf%e|scz1rKwV)|*9FG<-x06c)KazH z|E_q?rk;(C2Q|QwHv5F9_}>%f+0jTOqeZ8w4&rC|5xG#reqnu7C$kyNDMA{ z&HuHCoKKpvZod&jn39^`i1(OUAqwyp=)Mu3NSU}dMwEVm%wcyPQ6p`tW00t&Hg$FG zTmEmvPd0U1?uY(w#jh92bQ?Q<;s2MobdIDxtlj0`EpB6qeEHu0op^z%jqXpPcZ=`E zznI$Kek7MD*F}_$?nMhgy_O(qgYtYt!S3);bEWL3>bpUWWJ;EAuNc#gs+XEVYPOd( zr8R%??-jFb&Bx8}-9L(FZR!ordhwI^oT(MA>fVkHKZ&1gY9OdzL~fFNS>&ogFZxw< zvZ>#4KT>`b5lM0Gzl#1gwZGt3$d0wC-c^+DRGV^z@PtKNXjA(<9Xk9b?y;#|p!QK_ z_-*vjp2vPkfTBH*3`Kh$8H)BiGSth6ZklqOU#({YRm3KjX9L%Hq}$Z{-AQBtvN_50ClG=yA+y+@~};v zpsfe>yiHw&US%lT>~xC*ojiu}rIaB`IiTuzX}$>0hbuI%a-vPG1m#mE+tigYr_--I zXH&z&3thRkpYkp;U`JQ()C83GrKW3Ebf71oY-eh|>tg)5hJf<5Eu+4Yr+jD2C@y)* ze{C6+J*Z%79l!amM146uVH*^aV`#HT~wBvtJ(IyDJBc! zAk_p8RAX@ljsW%gO#Ls24?iP(!Ky!nu#jA-sfZ^Cgss@KkxJ)TA$MQhSiCLcvF8NK^91 z_RQdt^FFtM%Q&w>#9tBF@KEs~9m$^zYl_f2kgLI;)c z#M0bchj^3gRJN-ZxYQL9vbG*AM-kchAA9ouBBe+w;`1Jq@AajG??U@mMQ;z`_&kFR zRq;$m@}HzAHT2OMSw9>8`Lust^PFy!S9Tet&zm{6)8T`Pr>>;ak?Z$JKlw@g_NlTh z{CS)r)85YSab)hp5w}$Ca#VRHKpy^iyf5?>F;UIHN$B;8knsH|;bct}@1dlMkeo?j z>K(7KbOHBJ$(MGrEgW3-R*WI49bv*1k>XIVyqep&w02w-N#%%&uR{VSs0!JJ55{r0 z(biFf#LM8bDweq^N;hziy9(_JJy#+AX2ABi^j6xJumycY5wd4dpGvjTgUj`C2a3sE zfEu21QolPZm-^j`ST4?b9j#H?_NjQZ;TXz@wU?6q!IA&t_}@^h;+&|1|Ifzt0X)YW zjKBCa5r4&LI9?GMg0E*jfRm=Q0t)~-@Rz0t?*ix%y#RB?K!!sZ9>Z`f!v=H9gu~yw)(^srh7nckX_lhf>M~fxm zr{Ym!ta6y=XmE!091ER9uLj_KbIyR2p5d-nt9v(NS7>6-7I1dssrfp^RWcViJVOKyA=!I$@owf=^d#=MbIE75-jl6=M+fVEuJ;E|Z0Dg~MDA>fg zr9Hxr`u$nF&}+0(B5I720AKFa0LyfqX}kJZ?{k%PNz$dj&lO_6j=x`USh)HqzDtHyn9iglhja-A}Wp^lDG&+&6mP@onk-k0CdyeR?QEOZ)mR8-X z^n!1HRR(G~RRv;;vK{BEwkTKNoX0@z)@Uv`)Iz$lg|1xEEebvV?XKkJj8?XY3j-f1 zLp55_Zdb32eWrY+9$)ybh_QZmrCYb%$}!qYl|LxGl&gFEid5uJjO~!Vz$w4SYVH<8 zl_Sv7x@d8Sscuoacdu6ah}q@XB~mVk3{eL&9uqHBo}dmFSN8}as=t_Ls$`)VniT)R z42KJ{HW+m`1F7ySJ|B?c+=n@&pM*YfwkT!gRMKN=2rk6wv@OaVDElV$ES#9xqWlBT zGq)&XadKjg@>1|hwLyEEBXd-YqC`)t=POU3^{!KbwaeA9O8;`|Uk`R#t==n^)UHvx zC`)SZRjEfj0_n${o&x{;&g<26%F51vM;XUs2X2dUZs#S+93{tmTW!|rJAa^#!fVn& zWsdfFy+DK->GipIN)w&Aj2lW`Pw?1+F7EFEc{uW zqeOBqM?72c%!GQDqMgj~S*MuDcMp#MS8LSouGTKr!rB()Vf5B5%DkEq;4^CqM6(vp z`9Pho<=~cLi_*DAh1RU8l^?*9AETyr8pm^$wl`-Ga2d~qJ#m+;UR+%V3-ruCQkt_74{*o$7Pjqi0T z@JoOPl({)L0io0}K8~R)G#zQ5E1j*4<+9u>dUm;3>!RG#`%=x#BV>cp7ar1x*B9g7 z&XT@j3%AU*>U$-B)#fORbQ-&k$Rju(aEtn7;8kslIwg-E?<;k!dUwwswDnq(=f5cNMErG|O`5~V)wgIb7l!ri@U2u=w8mVV ziPf}@-w5=%ZbS92(CI%OVWzD{xaaqdSiF1Z1m<;;1Y zYK`vJALqGXN$uVGz2dms_3Cpnp!A!!PCkBV5OjB%gjxEj*a9li9Wp0gYS)w3$50>%MXDTZe*@NqPnsZ)cC z99>jb=vv2(uye1Y7cAWCxP$SbYGdxJj-mRMIqy1#s#k_ybv(fQWAs(ECB~yRzOMQN zW0i7hpDBROp0kXx`Ukx(HqJy@?sYWiHO8ezcb%R=kJV>u7ehJ?uvwqySq6Afr{(xF z%2$RiHMXd`i*7I!eOqjeF;idIW12FbEiBQG?f8JP1Yd}H1n`uiAB?93?Ne-EI1}EM zIIq?&>mAniD1Gx!1-zq#;C}S4nd;1<3g=AqC?~;PT?tNPPJiZXXU+wo3g^}Ob?9Yt zxqjzzUBAZm=P0e(_4*d|{?4_|Im&O5GsN4>|A^rxadhxDub_RBy}awO7qt^|?cjE} zSI~~hUfvtoD`*#FFYkWr=R1 zZy$HfR9nN(0-oOECGf8;eF*qML~@h*9W<}j*SKE;e8~M4_~ji7#CrXB-$Sk?`t7~m z2mG|?eV4A#j+U;_PSz6rapx}ACSmnDLu?W!bv#47ubV2KN9S__Ungm#ubDle&Etde^>o`Wg zuJ$T$Xr}Ip89%6W<@tS;a(&gu?xEU`-TnzFjS2U14dVF?c9`+J2fNN!tF&vpN6!iT z1l$!8o(-sl9M97XUt{<-!;cuo6gs&WQ|OFiOraG>OrevGF@^T}`Y@-DLVH*-g-%As z6gn9hQ)s^}rqGTfAkIz36xvhlqtK3BOrhPsm_j>(F@^Rh`zW*{7h~8*p%asRINv@B zotW&S(5cG73a>E~I$POCp|h2PIVOELuRaRx;`LEz4{)$@QunFIh4v-~a~xs{?Qix` zsFe;@Xx-9Bp&h!x9K+!p!{Ho5n&Y;LpSkXQVx0K9$0r&XJ|rH-i-6CFt>CO@&R60c z;JX;^VfY{B|Hja*P}%^)P7Es<4rF+^@(!#Wqin_kfka^F((*RaEO+fgjGCa{#;G z+`~D!|EIlg4UX)%&g**zzzlYQS}0L<@?ULuNh!TDgKkH7`xNA`*io|?$f8wIeohC%$V70p4>NvcWr(g;dSPt z2yZlBKzN(^GQwl#>j>|XaNPVM;tvRX!Te9e-zo5dgctE;&SS|CV`4Am2)S#2n0itLJCT z9oa-L!y6_14ctC{a^JTkO!P5+qlDuU{t)ihKe_KY+~R+7U(cQ&L+D_ihW<>0ll<=81GyWwBUzE_?L`Y7;`z5?EM#z?g&q(+s3C$rXDd97R1&@R;N@$Kqu7vkX zco){-H_cy|8?0sP8S8V_Z(2$FeReuAm3U9$!-*eH{6ykkBt8a<^|Oi3CtgVWdEz^X zn|j{TQ|M{;e5&U^^}N!P?!C45zTTN$ulFOppX&Yf-dB46rnk562m5}b@B5QKl>E2J zKTaMHd>i<{$ztjI}f8U-%dmi001dqmbrU$!MI8yLl!dZk1Z+-;f z{cpH{@SpYJ2!02=7qyc3w+9}JG;Z7u!DsPCth;Nm;~OzIA$ADwVI0HnG_u9W$ld{67H5F*69rUxBNJaDJTz z(1z?DM)-)?kMLdKLEC&kc+fV>;Ah)h!0$?1xSctQ_zL=K znF2x^Ubh2?y9jOEOSuv8_an5;KL*#*FLV>)AHeT!S$K=;X2d^aZbkgV2;s8?FWcrx zyuE3eA4O>6t;$0PKLRhEZJtHnE%OXQ+x!gp-ZDRp&^8|j|6Ar`2yL7NpG5p$BDAsV zzYFo7Lui|y$G30rKG!{n|AM&>;V+szAfH5Nn@^i@#6N}5#;q&9b@~~E@b#M02%m>% z5x)v=9sv9s2yMuc8N~lHLfibInMM2sgtmFnydClXg3va9WEK#A389Vm_LdO;7DC(n zG3afZ{|ZW5cnk1h#9slWE%PS`ZS!ZKv}OJjp>1xmmJ$C)2yJt-h zcO$-z&^DK>#}RH=?*(KNA&+Z@t2`AO1bF=W&W&fk_1MPwe?7&H%dq_Tq%7`|s=UzVr8Y zl4cB&_YgjZ!ShG(ISPJ120lNI&k1~P$L9`w?!@OLK5xb6F7W%^kkmXoOhMWbSHpj{ z{O7HrnP&pUc-c^Bxh69PTCyeyGbx3#$0aPM7-(#w;z z)pE@}<9Ji$*1YSrD=ja~?`|Z-cI0;A9dEi$%U!J3D=SX(RJ+xx*G^T+k3F_Y1X{#% zTgwwo=aREhk!Degpz~#~yi%@|TT=9}Dc9Cl51ZE7VbeHlT&LVb;;_NMs*S@(%-j*P zctk74aRC$?&=E7$t`#mEG3VNq3Y$Z8da~B8x=lYdQ!lnFZoXEoqSp)c%DUUs!K383 zQ^6n#7ZIIvnyvFrrR{p-^=iXumc4on;H6qwh&NuZwH#2a>BBrc&z8Lw9<8+_9Le&k zQ>{A7h3XMAzg9nD8t6!^b?m5i@Ti$67h2_d&1r64IBFV4&3U)bsyBn@F*7r90`q&) z+^rqH*G%Q-&%2)IR`T_HlvrGt8aE4T^-B@~TQI%oZnWA>_vnNHY5cjxcaOL-$%t?i z-h$g|@%u_1EZ2(lOMp&Q%ByRwFnK9}6UWq);f&#dZsg~t&1?-{XCml{?3`0|Jp$qc z^~RL2k}+K?x*M}4X_*E6ENwH63iNK*T75z>}*N&zT1n=EkOH z&BCVFa;uDupUuzANe||v?K!BrHD}!g9d+I&=FKda5UjV*a$4oW;@rFx_km2Z&#~lE zqX^!O0qR+!Gu$T+&3J5h-sb7-P4*S8DPIGB;wQB)QYI~4> z6Hd!95QPu{o?FC7O3sRb2x$4ys#mBtE9Di6Uo*d4h_7}t-T+{H9YLuy)pQD`3Rzli zR5lmanr*LjYICaXRwN@F6sEnRpfgy2XX~rwLcl-c^-2YD0dm3{JMBW;AWH?sv7(u6 zxV3rLL8NxJj)%_Zj8k(~-R4}~YYDW%tbDO(9DF$V38#5+-YsH;wPMAEux|jnyU@T) z8O&NN#bJBJzJLw-~zW< z(YVe%S)nMrIa$+qSvVy~u@A1F!x~^ETqtgP?j%tm!F5Z$Ht()NW`rOwmS(+rZK_^C zH6=#LkL%=5uL1{h%Knq(7h0PY*PBL0*@0R^uD1iiaKB+?cWbTl^>Wcnw5!!k ziLrMJu0NTlo5+Ktm@2!KqB-SwuEy^61=GD3mzPgL4?#Tp8PQ_jnHMdToq6GM*qL=s zI=on4U4>HK(V!~wE9Fw&@2mr*SSqjXp66RByJyZgg|(gN&bp=6S!czq?9AeFo`>+M z@64Kk8FYm#5?ZADj#{VPmJ&LyITWI5(C@y2P5@#NES1^P0@RoC7A=X@ zrXV_`3dyHkAVUG7=?Ebb-h-z zzUil`+8|0Um+H++PBRb~XUiqp0SoPB$tk!ZA|R0p7Z)MD+(<~yxlPooQbkCaXDI3Uvmo=y>@jR{OuZi zVkwo@5Wn>{Xro%u3-2uZv1X+_wP)b(kO6k6cpFj>WZB1{z8O|JAX-3r=K3rjl&I}-MB$?v9YS^SKuY;p|DSy5jy zM2cRe86zqV1O}xqJSYjRDN&Nsl`TV<)Rn<$3PFL|6#(o~X9ZF=%#BonG#yJ4yP}H$ z3!w&)E>B?-C#cjEfM}_C6hZ=Pb)+2G(7`0pe!$W!gw#{MlZK^}AmI6WC6;c~ zFJVV0oGLZI2J(#h3%f7^#q^qtFrF^z&RnVoA|b#zAw8@&H$&t#PD=@#Cy{ZHB%u_A z#fV(?p;X>*ixY08wkV~Tk*JoshNPe~Kd7z5KA$PIqm1v7~&(sk>D*OOwHCvm5 zWT4!IT*T8UmH3##CQxU|Ov5zB>{eiK(O2NheLq1eLB^s5AAptC31Hu0-n1)4;PDF) zHty6S0GVmi&vdn!DM-Zey2lm^`d}?lyyQcpgpz0pTYp-mfiM!Fs0oRceNn(#WnWzS z*0SUiub6HsaGC;C?S^ql>aU#myu0;wl@a~E*aDY~$uFGg8pwi+c? z1PYK)E1!3pyJxBrX@iw_tvlg*g=SgytPx@*gVdOJE6#?*yeL0t7$UORF2Ga_h!kXu z*BhHnI?bXiFqBixH=E981dEEplUR#o_+}6Lfwt8Z8dc+biS&}0gNdsNa4i;z#=$sI ziFLXwX`U`N`2_QG&yP*{47bT=T>_e}zfq6DxJ)QWCPh~u4isTr4O8JE_zg{d&0xj14OeTUlAyBQ6z!w8s49*r9 z52EKAAT8sd+tfptM_Lu8>;*A^gJ{#wgk$GHrzz!B!3Y`hwW2t(@#9 zPFspgAHe0^_WVSV3lZBqR-vv|`)|71sJKR7TfJP9$R&7cA1oLBnxG5YQ-InP846R3hk60_!h_}3+Jp7xMRSQk zwOoVf;9e6ll`5^GyUj2~GQgY`FOf`)Qc$9056(xGwTk0Ry;**YXCgk9SQ=sp2F`i6 zA~i#&j?8V83KpLpKZx5$%437;*Hp2i`yam(J3#9gCW^1&L~6D~W5i&yNv*upDp!Q> zB%(`#92ZNfs`kc;71ZFWUf|Bac+1OGsfiWmI#p?TVT~Riw@7J{FE`0&$Pv*`N3maO z8g`A0QX*>B(XYIgudISxt+gtwKyE5w16KY0r9^!rPT`LFDS|?Do`?IOV9CSi3N}O1 zzi?|r2BugR+a4A|xn1Sh0>4D3YzWnq@27xYxm!Zl3^>WDnNy$)pVQs~my+9D#CAnb z>K5w@g{JG)q$8^mTXVeGjm=fSqV)v1%LB9^qptZ2@VpwDgQuPLs*ANL78U%UO7XhO0Jp zhY3w|3Z1uA^8I z;{ZY62uGGmE#IWA*L*0lu~jO#`4-L}v><46+U3Tu8@dcZ2txkAh;L2;OZ zW#h-`>GGp7R#4N$^^d$|)>h>78>UUIkgcd208;4%MGa?#G~Um*c4s`xnieLeCiCalcwry#8R%fEF?qM zheW|h@h!A*+O4{rFoBb$Ky2e4s~}O}4~qo*cmV{qV(4o=IKHq3+tHkL5s+i2y#_nW zhfD;X9BUg%?iKmeL+Z0-eBn(Aw=7&Nyi-n7icR53>x)lxf{$^C{H7`4Q-l$|0E+=p z=xsl?QZH`O6!(*XHsRLYZJOy$hl}*E3#7sX)+mlI%`OX#7dhy8nl93^#i2{n(60gg zBb#!_Xh8hqRz^vLXq)3Zbp$FFRU9D2CV7w;Kp~Ujz94_ec7Td5^vqfZ$bpBf3lw;R ze1(U8={V_@c(Ca-U`LU_un|Dlvbf)u;77&@4I!ebW9hONOGsuYI^sDvf(kGw%|dYz z-xA7zL6G>CP+_Oa*iqF$T=qc)SE#dSsR62ZxseDHYF7C>7C)iuz)#Gzy*1R3&Ui2s zVhq9^1>hu<4Aq zdJ0>|il!j^V4Qd!_PrM@_|}M zncp*zJwa3%H%OrilN*gX)=!Z>U(cxhpmAUBX`&66x5iphFw{H#EgD1T2_$w4NPu-5 z)&e#ifh$VKs8o^Zl|p{(6dVE|%2dT!_2f1c&l)iQfO)i2Eqa;RXub z46lqC5qhw-JZyJbYe4R~?{GHCo|#+Q^uQFS@zYi~q754HQ+jS|X3877m-1k#Lr7P> zNFgizR6rQlcSuq6fYuWFPL9})$AdK(T+ZmSraWB6>oBjp@DSFMn_5fLW4c>G7yJ#0 zQTaiQEq+Lh3EDE23=~@o#7>3s(dValTJ>z~GLNWDTKI5p`L;8v;r>+-=khVod8g3E z@o`i}XWHLl#Nbc`*z$^T>=`vfg*Af1Z86Bz1s2Sz?g3z@cU+fax{GME4>8d@Ga|L? z#q=)M5bsWb*C4$-UmXNuUtzN1IzbOTFg_tt7X4927VJGtIfWy;ggr9UIZQgP0=aP~ z3DqxRW$K|FgjcXQ)QRpHUX2v~6;A*enL=41B0)47SgD$#mF1s|C}0(GF1$e^wo#N~ z-ZXTHf4@X>A(XWuTs+byEHRD54~jhFyYV%vEhULgR|4DxAk)0w$i+{J20J|xx$4R? zR1rWX)!L4}ZHkOB?q6|R_)bnFXI@txttpFdaf=rDRSctF;>EUJ!{DwVl zhdtm@H5m{Q^JGf;fSuYhIvG$Ryev3JuRV^!aUEoKg{O@Mr0s%mJbosJPvPq);ap=C z7_G=K`L|8VY;y@s!M&g&1a4G?vT-<)J(N^7_7he0ftOlpPPiPCOw*c1#RjibmZo*! zohsCaP1Kc=m=S}$Fn6Zq0^-`x5>2_Y!kPfthO0K1LXw9!_njON^E9$~A>&4U<(6h(KTk8t}#h8?A%U7CwM zx}S}kY^ybHq|t@-awn07${ zG0ZhV>s@2BwIDk((-nd)Xavn`#N`H9rdX~KOH5XlCS`qSbfO+i+&p5{B7*Q*3>TAB zWqDpb=7tGMs+Pyr4O1aW=>GbpAb|_tFqSbHcz8Ik*5tyYfQ1Tu5h4t3&`GZqUHRkn zW)oOPl0aQvqJz~UNp?kT4oQ;E%7l`1WkV!UksK29*EK52?P>KaN{-rvs=%;UL(||L zxqqECaefa`_ zUtX^PQ=bTgM4p91b=7?s_oYyWfDP&GhM93TxL*TRaiQIJgUw>rsen(_H)Km1#Iat) zes<7wdqdD{3Ytwg{+vy-SeKJRgA*zs3k#7L zpp;y2qZst9fK7NcQAMt};#S2bmdyl(a~-|LT5kE*My5;WTpmWi9SS|~yHdJ<@ub!b z9am)1C=tJMNnboxR~-TwG;Wrb;rZ7D`Y4tsGbpxe5RZ^=NKHpKGlUSaBos*O{S@&U zP($f1AXaV~SA#_WZ$j+CC8De}LE8}xkXCRXVXwp1JbEQ(o0HXsW>Mkt{ydaA+;A|I zi{kbq}oj3I>ssxCO3yO*t)_GW_rCzQmjWS|!g%A)ojHBye zyd0>G5JLQ6LK>I*Eg@)^(<*%_$X97tXw<;EEAn&rqStWVybbRW=J5Vt4d21y;u~1Z zt#{*X$$JF?t%_f9aFL(K?=s?i8*hx|@V3|?DPelg;mtDBpEFgwcPU@VnAEyvZ%~F` zgon?K+D_C;4!=2B1Fi;eHqmMhFa7>Z&fv%ouixkJqk=(q@EQ#u1r#cyFjTx>aRskt zu^Ns@I?6AiL`#M;2KaY_=@M#G@K13O=ZXv&_tMdF138WXx8Su=d<)=_-H00u6~S*rp_ck3m|smaT#Fe!lGX%5N8#aGNl(Sgrp8EDTL%S zGCHAzt;v(~#2LUXBEb~zeGb^`z_*UvCi-v=PhwmS7mc~Pgg&?^GlfqbR5*=v8NU&o z!}40ia>BL^n9YGjbH>c$CENwGi293&=gm2!rttFayqPiPUGKyfQyj*Rl)MYQBTtc@ zW%L(^zUDE3tRkm`p42hE9B{lgM&-LA+V_l^d2Q@Ur`N~$ZgYe`qw?N3HrH%mgl@+g zz69!W?UB-?IBCwg;fTn0!JOzklSZ#U9`b?T{$#xUHZVF^+1i@Ub+mHe!Uy(}l;~We z=B_xFD^t7$4CFp+;DlFj6#csNj7GV$F6S^<@BVmB$9tl3Z?{%CqtTkzx{8f7C>paF z#}mn!fNrGvZvE-RdK5EENvTqJ6@BFjdpBM;CLE{Wpfu-^E3FLL;&=nUl^$<-XDiX% z?T$h7*|JHz6W^}PHDK~A%e57(W3GrmhY;2jdf;XON=NI0>zX_VnZEQEsK9yr;~IMl zO2sAi0!9|B?Lh8ODo{7X)t9DgGVTgqtEO_qchm08;dT5RRycavTO*{G5HqN}U6ZxX zQh^*WH($B+c#gSQHPI4AN9k0<*veQl)InUQfdV$eT8r9n8l_~!y%SW|iMK-OeuP9k z?N6VBIK>!+6yCE#;Y~nvnHEHB>oB=|C@iTO;W|f+fL&E&YAJ@UG)ZC90KS5hQxT}@ zc>!%WfL}z8GDM(2VKv+qAMm1xVjSK8R}uYEb|g;E;H#VWFXEdMC>q}iVM!Kw0N*%b zuAb|H&Y?BH56lBwy(>?rpb8ddi7AkhlsE(t%wMIBu#?4EVjN?NpltJPC`~K}rF9D> z)?d5Cb*IsvD*icL<$(W&`7T&D_8HWIPZvx}My6pD^+p76;#T}z`V>Y%)x~!562}=c zdQPgls7t}mr9jhV&6s<>xAJ44b{<&r_yMnJeEG_G!AFc0D0R*fe-~Vo%MJ0ov*>RL zy&gxeDR@g5Z#;iOdb}FX@4(G|m(VJ4JD7`j-9^C2Cxqd~6~;%aHeTWs>d@pPhmvx5 zg*58NaJ*z5@Vqgjao7TCsKO+M26!)?yC~{a7noYTaakNl zR@xSnZ(&cpq`Ii8tEvq(8Ah~F1H}H=O^gbBz)F&Ji zW2!yOZ8NAv1`G5Q^$}%0mpv{6No#)D8|%LPqlBf+)h++c!z6OIwHw#%uaAS{R5?x| zLbeyXZ~D8bNu9*$4($5|FmP;SfOU*qFzw$>bD5df>-lcAI{O;y?OnT<{;v9Wa1p(x zMq0t>adrv&E}o`H;QUb}!xqg@;&aS|a=DwNgIR_RaPEV-@?0YR}u?pM3a3@#xT zuTG;k?7P%_u(9<_6Yyl;ehggdoYWC@#k?N!l5oB(fMQeF{;3SD*7?-|N z^-y1$eTB~S8>wiNLR3R)Nl3}zDCaEdQjD2H-J_j;?U^~zU7qTOa}&8 zH+KZ1(6vN6GQN7ae%J9K{e%9AjJTTEgB?Ak(P`}1p!{ym0|VEDE4}7kMfWpYi=>=V z(H!V57pO=a?4l$%|5mEE0%$;*H9@m0;<|BX$sO2|v@#u7o^!PN_EIL0@}O&S5$bs! z?M1L$sIY_H7{XH25F2nWpyZ)2Z`mnI8<$3owrrAeHvz!Ik144<;bY~)g08> zrdFUVGT=wrE%0a&1tn zQAViFGbba=T-}7zv)7H2Jl(m%%+>LlG48%&cew7~a^O9@Pw4Yu$4a^BO7*xG4A%v? zoHiWiW*Qs?Svnj+!nJUN=a=f7zks^t=H2tVM{N!S<+?{7V!HK8C9aGsnv*%uBAOAi zFTmwXnS(((UZaURv@uokMOzuOKPVlSDsh}5b7E~wPzHr*pPHEni!WDhq@0P%m0hIA zDBGkpO`S}M!`a>x*@b=lvB*zNt2wYJ$%i?NAMb6U4y`UygBAmP4EqDw)q&|&>X?d@ zqFqKge}($v-+P<%eg~~mOPQP1|GJy6TdhLBudDxeZFTyC)jsE*Bl5YZ+*CgWXmX-k zo~e}X?DY<5b}*O|+~5IqUuP!w#j(NPu^&G;j#*XhJpt-dLYV8WETheh@m>ZsRxrOV z<`rK%1Y8CZD)JJ=%j2$`-v(_A)-m_R^Sg6(1<|%v{!y!a7FNX%pf2qwlX1akf%QSp zxj906m)0wH1gb6bsL$4DkEqQ>UL;;>E_3YlYv9M;1?xrBY6FkC^~z)9_BV$8t}B=9 z?$?f1-bHuRJn)etbu67{1%c1aL7#Ld7osE1lSK ztZuRj%LYB@$6IR}OCXgDBr18c(NUh35a`hF;TZ5B#$sjEmBz3H$eOVRdCI}|52CiU zFUa@P!}QpeFnh6HBtUiS2Lp=_se?PErAid8Ve$&)m!68C^lh}|nZDBbUL^C3$YDxe z`UZ5JMzWt=7IBB{oLKH&&m74MukC)Wp*`qqiN4^lwG;H*&_TvN1iFSTa$m4} zU&n-NI<*&TzX^x1Z^D!KB3#`2sjN}DnHiQLB_0JAvR!goMAf(ie?45BKWchmtfUTGhkX^nwP}?-Ts= zR|Pc#`f=r{_kz2ifM2w&z=~GyS*J#0KXeaAJx_kqk)gHWfKL~FE8%Xe-+PVu*MD(40y47|R+#HX1kC?Z?r*Y!xsRNm`@X$NTnYhpb_P4j_^4&)K8dO~!iq z5JBN#ljy_uI1ih2vS)vGYun0hrm~M`HL&|QZbx7~aZoiKN8^E`^;%TQj-eDf9 zj1J=m)f1^m18X6wU4$=>YNPiD8C&K}QheKfoEEJ}g0PYWHN7ov>#JwGmJ zJ}x;w2||qsB}Ybb$-#l_RjKS%`!ib~w}9vPD5fSgpluAK*oUnb`aw4m135t?sh|P> z(VsJd0VDS@B}rqE^e1};iBwo<`;*eg&-BUEFM*%P zP6Hq|IpL`cAQm_R90s1-dJ13R&HT&~W>Mf{*38A$;EN)3XH&!N>p5C}1FpFr5L7dV5@p#>HJn!!O(B)un@ z7zOiuIlJ{A&;>*=AjH$0wchOZt3sV#uv#h1KO3d1ZfcSgAEQXr~af2W|YZ z!mA(~1~5#4kW7FXQWR?GAquWh$Qm&6Ut0D+GNBQh1VFXFwnwt}V^$DSMq-s)m^2wV zSYkTOk>{+D5isZo={3SqBiZc(sU%Q*6%lYOA}lyy5=f&IN`5s7CLygbSJ|y!83Aiv z9<}UV*1kqyUl`dd-Og-n3d(j3N0^Q4Sv=SR-44h8cfBB%Sh|5RFgO^W8V*7+Jq$q>SC)v$g$eY{wfqkYo ztOWxUsyfB&Klto{ZZ+1cAJL z50o4S@}AUTQYkGnlW|G??Rz-C=@B8o+rcT>?a8z~noDK3Ph>C8bp6j;}jAaw-6kyZ^+x-drWT3%S1aGXDEO^Z-M_#AGhN3%$DD?1A!t&aZ%;hpCYI{;=ZE~-H`QlFn>F^>( zm^Qts6xMe%L!w0g+Ri?jPUURq`yni1cKF+}B%T&&__P`-cz|4&+bD?wPvid(eoQ@` zMg;QiX~>(WF%U-6L&+2~9wk`vAor=_`*S^D4*+e*4K%7Vmf89_T|kJ~!&pH6qKmH| zWL-;Ul6GZ!0SW)>gd+*T3f7y(0H;SsQX?XRx2LhtD9T3ADwN94K`PlJ5U3**OCnaF zVQluU50gGHkQS-PX{I*k+*6zDQ@J6^V=P7G$;hB;Q9m_+=XSsmiM~w#5edMpMu zf|QZJzqk*!tVa2}xX3`(|N6vV{{GC$+J1}vWAu)(f@ z@)@D^`4ofCvgGp&z8Vy|Du|>)1g~I#128E>RRG7`cHf9(ik1MNh0p!KvYlZt%HRM% zMSLdkIg8ID_*}qe1D{)1-~>A2hE2RIF_Bhb?6!`L^8S>S`pbtsn=+?4CZLhh$w~zCIgDSmG(1OB(tO$_8?a}B{qs71b$|xax{R3 z2qmUeu7^+&>zNT+L$JHR++VaMLW2iC>jKM4j3RUfPXQG#1fv7E%6F+FxVGh z7!xH#2K54M1pK8S)X8hvyD?mgMosp9>?vr}aEV#jB4lQ^DA5T$0P&%U zo5Z3C!Fp%*=3oKzXU}A}2Z0ul?S9G7>_tC&k=X)&$cH>c2;`16n%Um372k*g=$4{y z?IGd=V7c@NqQDCQaR6pNB|mpC;K(orS*0+TCx{6;@V>!{0-;1k_Y7Ia-h%){p=x0| zwHNA56~gtV4+4z)EWk(8%uo>kqX8MHL^&KPjq43d_)tNkYU6rCX}^6E-9(R1Vhclc zghV?53q_hEn~73;I=l4?7#s%q3*ho3>^bnm)5L?R&jIPyr%4T% zW7FVsl!T#9d5Sy=S$#Y|NR6hp5ZIqU6iM7-()bMEW8*Wp=N8gp8z^5%fZuvj;Evu~ z$PqoafEO4{^a6-sAiDKD>ZJOm4h5^mC_PbdG~HuST!Ew_!LGL;!4~Z|@LK}T)obCG zm*CBu`X$doIa|tQEi>5hss=o3M1)_BF;}0%8vsu20ldeO!`r2~6}-+;D&woS%+;33 zhTmV8`}I%caz_szxgBm*%e?uhd*aU0(bD0Ar6caKgU3rp4j)`uDHRUhapcYu$L@5G zmI@^Yn^gSX*0HhUV~59Zi}2d+PGGI5_{9$b;|I;I&X%i|HgP@Ga@Re5D6(c;)bgb_;Pdb4Rb@ zv~;1dZr{B#JBHPPYwFlT7FfLt7t%4(L|q#4->=JY{`pn<9k|XNT}-FYd3htsx@osg zntONe&!7Kqwd=HUkN+!HxG*SxP|m(k z^Z|HG;9~(R-L5=pp_7$vU>-H_@695n7Ue*Lmne8_6_ zN`r$09;NZ9o(GsbR_0jKz!&t5hiW@tRU+OiABb_@phH6(=Yb=3l!m&;;Lbjd&tdtn z%`D23qI$s0%TtxuD6ZVr7#!9d5qW|*cok|@YLi+G(1O&~D>X(a*a^$w_v&)^cNBd& zVxYTlS)R0x@aU}4EzYY{_^OkT@&={Y=B(ca-RJCgKs%;%7QUPQ-z{|Kv75e3#e-4K zT`-SV#$iB9(z~;6H`Tjoey7ywKD^9<%R6U__4oOD$JBmsY7Z6+!?`(_EC|Ng)4OUrp@yXT&J?tb5$=b;^! zkwHWz{{8$j(ZhK1-&lda4tgLCRX-AXcct zoVhh8om`VRb5_mtSvC6}epJmF&a{)8^78}ruIVH8BRWJg=!Oga*`CgAE7jHHY0X5I zhJT8yHvq2zJ{C`+Lcw+AH#69O`RjokeEu_N?D?$9|Ia>Ml3Dn>uU@0W8G+sP9EhF& zCTkP~@9h2>RqZVMHM)k#mm~LqJ}`%FntSrub3yw&@E0;EtLt}K4eZHHiLS&{FvK_b zCWF&Uq5|u#U%GV9tgO91X#9QCW|tt< zjE?pwvF#KR!?&Wd9bR4LoLnW$99F_A@a^)-`f1Spu>`^C;NDv>P+bD?@AFMoZn!s$VOP6Ob zs}$=t8n6{dDbW=JB|EfeX|yDIjO&nBPa+~FR~}LH(*LO>JIv@G-708-HM|nO+4eA2M(*4$UdK~MyGWoj&xXqw z56pO{dOE|QSkiK+m6*V`M3%s4Gus{k0hAG8GhU;fu5yv3$i&I%oC21@M{=6jFgI0W zuT<5E>70YK17{Qz6PKiu+oM5RiB^q0*n>r4Sv;_QrI1P?dQshF-_vTnL+_~j@`c(x z^o~i=<|iSBJ#F?F*yDDlQy6hTuM10TrCA4btHbJuKBjl=39S@@Wa_0U=$Jb-n4UIi zFuJ`LTWi%FggfAjbqO?}fZfgQ3=$#sW(mh0mBGVO7+q!`PO>jRK-UpLAt4T=_6I-{ zK7etIH3&MxCGe)QF;7oSLs;zb;6yj5=o!vIpc*c1tV!GnnUVOC1D6e~RGob=r;u__ zg%2M1&~*q{fs(w~A%^$*ps&#=j(L5ieJHs3{$l$uJR2MR5*-IkCEzc0j^Kx$MB4~B zM*{dv=O{b|Sbk?Bp5D?)d0ykv>8krV&8Uw2M`ejtWEeIg^e#`N5M+Algr9Mt`Fxr-9}%9?dym$Pizs8TKixRbijXk8@Q@Lr*y_@L_CZzDfM{R6T<0>Mf`u$ZBftk>=rH860 zH8h$7iesMS8Q{mOti*$?C9OzU$yuz=!9v%3mIEhgEyI1P2KJbqcnPu;w`RA`a6!r>riH*cd+9s_n2nb1^yd!7^@PC5 zpJM5{gOSln6?3n(yO1a`(V*E5RuE_+%tcg*cIeKT%n>5>8%9e~XYqqa2s9i?d0IMU zqKC1wAy=`y1}1#mrVV@EE@}Ip!hd>VY^s)>$jPGX94M#i#kCrs4mWOTncNTe%xSJ( z)#6b|Encf9cS@2Yb&@b49nWfgTz8;oMW29M^TEzcvselQ9E?bTt_1+89+pV}bsobl zE|ZV;*NOaGCgt!#R#ND>S#(hrJ&#d|mdw$OzV7qEY1E?GDSI&(@nB8_qI&YT%sW6& zaH{C%z92E*O|@>15`RX zNA4Oy)&V(70OdmNRJw$1aND+cc1PR7tPY6IhJl$2FJah+*NAQvT>@sY4Yk0i+u)g= z>;dXr3Q*b}90{LXme2VeczJrV44yUSd!5Tb+Lr^w^1Nz=#YDa`tFx;n2G}dW^Ep?t z?o|NF2|?|vnTh5X@H#C5uN8$sNT_7jr4^i|zS2AYS&p-dHJJ*Y94F@U7utQJ& z9;}%iZZK{Dk^BRIbEB~BoA7`Tx`E`)j3Z1;Sk5v)-C531)uc~_6+P3&l#M2ZHf0j} znEa*7cZ($8F3fX@)yKJ&8DdjUB9gEs!U?+wZ_f%3-$i&wR)}fKH47KugNH6k`yge` zw4dRpbl-_&jVE@mz@zdKbVaS9Bykx!`tpWSx4rxkBD)PHmp7Cpt`bqX8xI~QlXn3u zZ>UII&m#M7P|lwKl!|i?&?uT^jYPZ}kQWSA^dff@%S*hCboRZXW~9(=P2Eh{ctmek zokmac&}82Spav<$Kzn?8?~YU-);!7WLb7Bu?K#LG#r*(dqmNEVm)#Ja$~WZEldxbq zdqY>TFyV0SX2|r&iaBJ3yu5UA#d?yRQhCqRla)eLv59@SJSxtcba=_*hg*k-LS$nh z#T`>Bbv$r2Bh$pnT(J<+Z%PG#-@3|8+E0i9Q};e-V2x~Bi*REf(}Ivqoyjq@IX3*EuXM?vzftS>>t zxCGMS73%4d>5c8`wvI_bci6_>R81tvJ=uW-9IC>2<6bd zGg1rr>6?)o(A8i`Ks!?B0_FKpr{QQIUbW_`)02;YZ#j>$;u?TV(1+ZH@L00ub!+xBC$CFO}rL_V$Iy4BQ=+0l3Ny4X!~(aU*tvrT|JN-0?>$}V1e0R z&2E-VWisjHY)SRfbZL8#LT13$7kTTehCrUPEbNEvJv4Z}MYq>NE4|YCZzp+da8F0Y z;enB#A6GDSg4_AlvBkQde_pU4^#oAn3!(TZCn>(vVH~7S;$M%bI8P!0ue`8^X4>nl z2Lq=sf5pRHQ~h1`Z841~kJG7Mw*m4-pI)3owVP4H?El4S?_co1ciZ=B-}hbQpeLC> z8p{E4;u1q7zuA}yC) z?y@V2D2FXGFS?l2@l9Mr{OSF%=)vD-3sO9|U=PAW5gxo2u~6 zW~TOH8bRi94;JMw?Ii{WtV%LYgFK)&d0=mHex^C*mh-^OJ4zQ(TE= znoKmB@t&mzxmxUJ^hQ0&&p4(Ab~vNhtmX)GI?i+k3c~9;B&B@xt0LOb$BU+J*mDt$ zK#`_ME3Zgvkg78~_`t=&d2PmG29efTS|aN_v1`&Pu#0{gRxY3NZJXQrSGT$6&1(~5 z+uezKY+Fax)az(pY4Y%}o2sr zGxmR#r|V1oShHhN$0T=9`||3s>D<%SGr2ELHv+7#IOMuaFDZl;UGzR|=nycgX|Y+?H0vu>PKdF<1m9e^v!Dw`-G33EHP`BOo59LwD@ z<3karlRUAfWhYe9PO~$wh#DlN;dL_=Pr&4Y!7(0oGPZJkI30rj)(3blgEG_R_~Uj7HUsJnXa%c_<412ze4E_ zOEkRJ2%)l1L>byKvrDbJjct;Q$vA#iVQKetWc>81aC((~huJB8|V=w-sNe z%qovbof*cY4(Z>S`u`R_79)0<5V+$r*y&9w7K#~ZIz9+^wloos9uM!(%GE>cEp5Hs%2DPLfG^K35434leI2vm7-tNf9&b zaix>6*Tx{bnU?-7$2do%2$y@LYxPu<_GcG7Ye6ag&uf$+%%`kSKU|UAcxgo)O8OE*&z~Qz& zAJ0DN`g&>2cVpez9EaL@di>z-_hCYvf5!I`BDo!$pwHz+(@lfO`Fkce&OVSM`2do< zT^A;wx2eLiA5-B+3H-4C0o{NeADNqTESqzl*Uh=q>y_8RnZQkQIGb#9`^DHwx%WYS z{HOY~8uHL_q&>MN|HlsBX@7_u)%tz`Y)PHV81cWc*Phb~hK-bCNi`5J;Z|>dge;to z0TQqCp6L@{>OCKp>e<3ZE#*tpK((KRrr0TCnTNWilz6|T7WgP4Pi4KQBT3p}rU%2_ zl-tZoG0>&s^Y~5!;w0C4rb^m7)hM=mU)%vI6DyfxU0>1z%zy36&V%zW`|`4iM7j{W zOPDhiO92o}Uh}lNb^J?7+c6#FP6(Juxjkj-;@@svROhA7pwGmjn0LU-@Knl6Fb`?= zr>I*#h<-@;Jb>l$%M&jOpZ8_C{EEaE!sj6@mtUEPSZtq*mCLV63==*tWpep_6UPdl zDe~oq=*berDW9mHidY^~3d2#^Y|u^?}kn z9J1-&>+LVutQ_&^ctiTBWq-w{P@g)zsS%Y!zoh3dEZcAZc5?UE5L(VRfOuj!JBGyRUi=eP4Y+cV&j~W98dehzn z!`_}FkYXfX2uq9i=_Q`PVvMI5@zh@8BU$`(j(AZo@lh;Zkt4pTmv|zJFUk?G%ZUAO z?P!Q&v(kQj(o2T+Y{rgE%YN=9JCjxZ*v(OnkNY)iqM2*Hqnl&jixXAO6(^43VvR=T?kIzcM7q5Q9ZR1N zcLFwUda1ika%1b{nc|~Cm=~xLWt6QxPC7?E2L`SqLEG!-fI-WbG&t?$u;NRaj9$eC zuLA%BckTj><9rU9Q^2`abi6=)4ldRO96x{^V1PwvAm8%m7_;-3FJ@vBOCn}$tWREd zqi1wL`Al?qjbB%&J7JAgsGlU>u)0Z@%Fj??6IF;lr7Wnc94l4tm9jV?sJ7Mf3M^{z z(F$@f`Eb1O)&%k1H+nP2m;0wX5fk8O9=$IU$+a8nOfj{k zsG}EsJ~p;4uGRoEbmIGv;qLQM?0CMO40E|22Z49xic&Y)M9}+2n_?9qffNzvtQciY zt0`Z%QjEFzXBvgQnBB>e7xX5V^d>K2lJBvYP6Sz$w&%r~743D3!3g@|RlekJ+3jK+ zWCKBKDTeyYNj6*dB89hP@bh|dGTZ1QHu7V5xzDuUDFK74E#87kw~$~a*6_NGIG}nb zDPMK_Vj;t35(^u1X2&F(z4Vv1=le?rKcKWT1sXnGxshdzPnY&{OxbK%DRj#IhHnwz z^`m5=q@7|t!@3ai4q?R#vWDDb68sYNMwKfV=Zsu+$v6UH|Bfvyx)jX*$>Mts*mll& zZ9_v)W9<~TgIE;~U?pu<)jk7BMXK70+UF@J-P5|WIncJdx~-@k=Tz_4C#1nD!wbqse&L@?&q6aI;W9# zB9zk?B6V9~@Qo-+z$zIt2OT=PT<_`!QHmp=cU3dWsr0TIMmba6t_2!Jln~iK@eU(; zMW%h2a@JU=r?-*V(!T*EFrpV_lw1VomOPGGc+F|(*f3AxIC^Lpob87=reCbKV;7?v zP95^h!(~@~Vxf{=CKHXw8Kb>6E<*==0*3~?zPzAe7HWmMk#9sy-7kqF9y4P3BHq%7 zuO#9hdAo+!jA2hZ5~{!92V+N>Lyj@`%m{AnY4;M@h7fud`Cx?qB$IA>;0^n9Fj72O2 zmsNc_IuX}c#OsfkW5TQlUnY&FjnEW~_` zv#Ws+dYg>WSO5gu!Ryp`OZO>IXpAPd^11*kQcK3_M92^FJI|8S z?HUAjYC1T27Z$Wu>U2isyc-9(r!t`@nU`D$kf>pUKd|0uAn`8LqA_TeH8QR+OHXo| zGI!NvVB2CYmlYFkUy7ZsSCJYwpg2pc+@o9^d8axAc52yJ)*@9cB* zNIfaW#rI;VpaIeA^`vAV%uEcH?16}>I=qchR+DUdt0@g>LsG?@g*ekI3oyl@UQCXU zhftI9muY-wvFB#$Y<}ow@;p3~mjNV3qbvr$HMLUna)ns4nu&w5!gF$kSeTiKX<1)EXKfHdbg0_7FVs43AeT*c&}ZPqIhK9W1X<|Lmwy> zp;u9`xJvu5q~{lklGSmG!iqfBS%h(e_vYcQ4%`h1SVrm<*elMnlKhMhaD#R(h;-Am zc37Rz?HY!_tDcH+C0jXINV@)bRZMhcD>WYiUdhX|SA}7z=_bi_uU9EA$*35=Sjw!< zFPgdZzc7>4$u+~VLLa7jj@5B)tT3obtoRwnFDxVqi$J7DV#Mlrj@59ERYNJr6PO&a z`_N%EyG!WUbSeeFp_8W?*9O6t2JSz}ZU_SwuKe30VRmj27Ii^=K68Cu8>^;R!14}x zH$5KiF5T!~OE*j9fQw0zlc9G#f+2vfTeB0x%dR}huJD+`ehd^pdV2d&s{CLs{4jUt$Ij`*k6%g$KiC%g!B4$w z9sBW=^1~#InevA@JlijL4Aqk|a>~$Ue+~6s8a$BdNf|zWL4!wAJ;`IJ8vc}xoJ_9F zh|;sm0K;QC?u5waYKOryHQ&F9aaT{A%`?=uaD{K+;qCjK8JhdNp4gJ1xm_m;^IUa| z(Ov)HWIREjadG?)gl(Jq$BEKE^weg^3_4c zGIJP-(HX{XmBwKi#s!LTN``TvVq{k#GME~P-()mo#4{30G7K5djKuvJhKx)`;)x7H z#uy{9Im3{yZzMishO8H)xfqG>G7M=QMxrQ~){w?vB(iG`u6&8Zp@;+eLfG!%CT3$3 zY4H(|75C{jj+v}jN%uH}Pv2qTq{-^q8@RI%KqAh@S(8_}`+_4sD^XXYKPc(B5gC;9 z+z;5jpGuDdshsrP`ztPvt8%z%O`XWpjSi`vL@s9fZIOKdrxTWQAfv@87VF7t0eRrz zr}GdOrZ~m;uGx=AvR$)huCz@by_?QIc@+$}$6YuEV#?WouFyDAw-17TiaCn!`d5Zt zDryHq?0C^KQ&&R=zdkA!B&}S{R+?Ph%xO`)N>8%7n`Nl`dJu7M_fkA?^kicxZZ&#r zYzV9x{#9D{?;$|d5C`#4m3;A-U8a004?4$SYpFFNo;t_I`X=2R!MK=r1xZ#zRgJiOy|g7OuCGdPS=y{ zTYQR&oP%zhePKBKV3&)oo5LNJ*pT&<<1HtE@{Z?!a(DUveV(6ZiDqwZtJp|72+`?m2vh0cA43PU$IMI_v=4AMd z=r&?bIOwzZ2~eUqpJqoqBVR^e$dN|8MczaeL~`Xn;<1nBoX|%z>HDkB^Lg6{zkQ4d zW4PbEt9Yo_MnRAkCykSU;L)xgSY0xOg(E+(e&Pp~M*P5%2xk-xk$ea9Mj)Ku5D6+Q z*bvE6SYAUUps+wg#IG=aL&T>r^+?pA2x0tkVs}mQR<7fzZo9(IY{mE9?P@=l+bjOV z2Pc|f))ir-w|Ylw_qpB1xy^HPo3q>8(mwRgZNJ3uOm3vf-_`*!%%Sk-+8Kl<?|JY9a z8bTTuUrWdr2jc@0r=V!v_rf7x_clNW9px8>8ZOExbl~(I4J<@(*3*ut-ga-H(F3+&&!|vOekN2_P27TKJjaHlmh6^rdS?zyB1wTtS&N6|B*0VYO*(^Pfj_kfYMiFa z@nymnqS=Xl0L~xKNMuo@G!pwW6FmZ>1}~Ll^}s*ybLnm@jnzv04In!#)U(xv7+MWI zEOAg%uJ1v@+%13IU2tgBE#ie*xA9VE)D_H-wOjEH3vVK=F8pu`C;yf|2lxJO@G|>M zSV&xfB9u740qUFuAd5k@Y{E|>*ntw~Z18to#L9ZFUr7(It)l%(Gf!S}MZs53-JXZk z(ZiHnan%Y)>fJ|UrPNr8ag&RWtkHN`hB%uj8(xRH%d)rOWx5rj#r9s7v9_$mUv+Ke zEUgm71vGmBudhmM9I0A~{h7WwODC9KmZfiJ8daLse}!pON1DbZ)!7SphI8$WW}3%( zmp+nd9w}Y=BBputcj^0>=4rsCpJ4ir89Jw%aIsW3kpiM@yzfIxl0W^3#AYNdbpqTc zxPah%o8{cBIQ_yI9WEqv#%4KOOmI%ma=4)2EXi`XsNmd?o7z2=N~6sSI^*< zJ=5m5>})=G&}8SK135iVh`RVf z##@E2JLfX-tsR6?ygqT=ZgRONor~O7iAsQUqiYcoI_Kq>J)d#ZlSvcd$6%CMvItm> z`=oymCiZc5xl=*-2Hfk&WqCunE+yk1U{^)b7s}MvV{~URXYjHZZD`!RulpiVPDJoh z_qUuVUDyk9i3^!%>beMz9+sl z*l$LxF*dvhr}$SIycV$3T7va-*(cjYu+_tP>avHmBTTb5x~z-sVy4*>y?Z;L-G^!R zNALaz(X9=TX-noQPvFu#RC>zzC-vNz& zAijxP;$(EAoGa6&OPs416|b)bro0}&Uh{HRc`cZD zEtq&Mn0PIicrBQCE!h7DuXoC2C)*;uhW)=5z+wMoEALzfjJM%S@eKPKB3^}g8zPp% z)I$|9TO2+ckhG#C(u#_*vYe1{j&8^pEp@I(5*5AQ15?qnIeG&#(GyIfCzxa>m_$!7 ziJo9mLc#t&M33!M7xpdz^U9^tOM6yxL$2tShqPmh_Hp}S&JG8kT0@%j5an)cZa`^` z-hxM9ZMn??*~LUp-zni5k^cem=(9L!G>ijqS>Z@L@Vn{U43r-4oQ}+@skM%uPVepC z5zx|)aBjpSQCN%tdn9%Mz1_kl!gWiB=1tJ#uieG?V|KCLTQ-&P&8&fOFE&9HgZsCK zaNZ$*1-MIWFM|pm%ken5j_Brblk8i7R~NU>uy5t$w}}E&ZWqM91CO-koxro2D?sVd zmrJBBU~ARh_8-CO;b4Nq>Rm`K1jqwjl08*p=Ky%6^O&9d3wTBmId>s>W3j;lK7aT^ z*p_oQxK{Kaz3WdvQp`-RhPZqtEpf~DQax{;Qc!a40qA)gn%xX|DzRin?OB`QaUMPE zKvuZ7)0Hab2YeHyG*N>Z;R$)TJj)YD^3z_xiJm~B#BV_NJPEA0XFXt7E1E&iUxC@f zfZ?-O^0>77F;fl>{iRDPubuW8Z!Se_UITpJ7zOWUs=w{>gN@xVEc%jwJIXL%o zX*ic|28{*6?fP??tJ;@ABiwi@8+)TQ1uT0Nv>LsZ{Q#Z=x*h~<5G&3@%n()QVMdi7 zlVM{B*NKC(QPhEh15sRZagN3#Cr)$$Ls zuHU6>X4u>N=Tfb&#mX$H8+?I;s|%;G5^4kq7IDR`)LD~`w@GMFT=)3inI1ndr_A{I zP_}@o#1c~bI8^K8fF;Gmmy%FSBf;hFE#<-*2`+bUJ{Q?YaOr#TG2WdSL+8QU*SY-c z8pC$^-Jlii*1P@!e^XB(Y34291}6B0p%uMH=Wjrm-Kb4<2=XnE9TuiBtLrf&Z0KPL z-``1N>bFSBGj8^YwTP4JDfb5TJ0vXLdgoc0&eK!mkv!x6B9GTT5-A3xvwM5z>|C>$ zS}iW=E?M_0`Ngaya-7h$F$t)2Y(zCD6xC_BEMJjj9}Fct4#&f7@@dyz-`O=IT|GW~ z6x5^meGWoSqp9&!!aAMtdkB}7Tzo$*K1UOr$Ko>}$2f#BUEKT#!KxnWJc*F==SU8> z_=Ak4&U&sazB)eymocyBapBAXup7sH3~6SP7&kuWGPi4gc;WmNNz%9F{TM?wsLz-H zyDJ(f;SKTzXz+7yb~;ds#%83RM$^E}t7rJ(Nj-}P8XKRl>;*qD--eAd2O$goAdGPv zW2jnAV+q`$=}As%3EZKbs3+NkB@krv3Z?Blg{+mTpm@o~dJ2yoSwO}Tw!Nc-q4PBR zdBSd({CU+@*UZNVT!wgtQ$Qj{$8qrvQfhAYIPqdRzr$419ABwo$CVtvg*yZi`&p~E4FIGF`+uwb+tW+H;>KoWIq(WUU0{}PkXnTpZXd)fd%p8&eF z>v=??=Pe{oOcS|Nv}m-F^9u)8{x-{JihTQ(4I`AC-xIjRDH!VsPhxLn?g%E9bK3g=a{OBbvb5`O?B5o){|M_mo6#9^)UCS6t1(Q58^{}tl%hm(Ov83xo&hI_8cgRlpsd^Im`z$|3+e_@*-`Vzjkw5uO)i{;6 z@?GQ~uzayf|F!=BC0A`o{^e&>^T5K1<> zVXT{dvKtuV+!e<8D2y#CjMEB+kukXurIF8C2m;2-X@(#eJ2x={f>+W4K`^wu3Wl?p zxx*EqJFhW?kH5Z-Cw%T{8xqo!ZzzHYV_6AS!5F|}2(_$n4|ZcMpD1ceak}(^!hREk ziLcO__FKSk4+LKO{`t8O1(*XkOZDx(XHfyVy^U$C+5*v2 zj3Zo2?}4Y=?*q#FCl2Cv5E5=d!1#NbAqW^Bq#1%>So{a4|B$&LKFSbK{g|0Q=v|-S znPN2;WhK2twlFEy(d~0FD8l_unK12t@}t=P7al4OCShG9-+NQp8O~>r#rMb@PQHLL zVh3cnN04QSw}p{&CK)K}btV}#oX^?B3A)YkYz!iI&Tk}d%&OeoRbm&j!`VviQRie~ zR4OYfclrL69DMR;lg0YzjH8!{evYG0>}>G`W@K%o3;YF~Gn_BkXRMhxf`-F9{Cesu zJhH*WZ)9;PgTso&7VBBg*MJUpljZJ*m^nr3n>>wit*B`7Z+}g~Qik?GdovqRE9^VI zN8f@f`37jCoiNL3wkgF-Q~^~-zS-Zpr;~6Ca!e*+8pB!#84Oke(%Js|mxGk*tbK5a({I;Xq(6=$r(*kAM`>c=_|+i0C;(ZH)I zv)-G5GJ4gTfCJHTbl-G+UkY1jM)=g%_Ym+_`Uc_Tw4?_TYiqu#3l`YJNnF5qmt z6TboHCB66ShKs;cy}!a9j=qMq$9jyieDQ1qlTBUM^0I`tLD4!CAKlH0?tRojduxP_ zhrb~H{ie04xoKGQh*m6?`K#qK0mqKRor`XwyYUQSW8D9!xrynsPVHiihtDLs3=66L zM;}E8UMAnrq5cOPJ$_%vCV^gq8@)%x%HBE?C!^se>KB{16=rmx}1U*v3K&?{#jewCISw z3|F+UwM2}iuSGWEjoZC_S?6kPvnNFRpnxH|wfZl3E%Ait)Iu7f*8;4sRWXh)51=gd zVYW6{%6n0tTPj2J6Y3~LP4LsA_qAhNESg-o%&=&sXr5cm`A$cmpQ1~oEVnkX{vNO# zqJQ9hNQlZ1(g3Z|*m9k~C*f5QO=w_0H=&Fc727O5J;Jc2k>Ppe4D)K({&$FTfZmjn zZb6O~b%|!9l&%cx(MpX^`4UtBKic8#1|2&SU=ftOJx8tX8b|x_|gCk z4+iT(bRgPNh^|CgD)m;W_dDx2@@0ry5uIjiER5;R=&!Imm^l}qWuhIHbEcR=GeZ8Hd#a`ik&y>8NUP^i-xpviGHePxV?$}`5aN@UW#P|{&+;v z(3i)?TL$hY_(BZw-`Fh!r=tZG(n9>(Lu(n>4k{wl!upnh=i`e<)k5tHYC7)Xj3YnN z1qZYYTtGsASn;_#z8abNVZ)NAg=1YZ>?|b>Np|Ec-z6JDIK$YOtg`nXVSi zC3T$cWV())!QZn%5zU}K2sN}?Q8x;8Xi!lPOS-;IEd#%R<|Cw`q+cQ3H#nPkRJ;y~ z>&Jm*cvSMg5NjM_rt{{qW&dX1*!P;byQ zO-C7;(E6v-TXd>Wj|#PgrVI5KjGfbIE6ot<`&y>nqcenx=uG{c98E`QFM*}$^fArR z7J)huJHzSpIi0H+pyolg71Sc3zD7^2)xM=GwXA2~(lwezEuISjFDzLCxVU5yMuf@v z^8hQW8GcsC(gKs=In4}DD`%Kjz|uo4#y8X-3^-h8&NmU}Tp@OD5}O}@gDSS6@JWGVMgR18y@@w0O;-da_G~7$`H|S)s&Ikt z3#_PQsVR6(4db_zG5m|c@NK#@V9^a4!*x~c^DF%scC=m(__d_^x4?Te*1w^YrQ6`A zMZfhhTqN*jkuDJYcLJ{xxFw%;ZXV3=dntRR&iI^WhM!6tz6aFE9B^$wqXPfM6sE^9 z*M%vm-w+7Xyn)LAzb;|8P2guH<6kr}d`385Ym5)7WvJ;4S9_MhT3_GAu&fFETHxQk z%tEEqWMun8Lv)0FN@C1^jlM zSk0PjQ=`x7{s~C^8NMO-spgl!k2k*se5?EiKyUpHz~&Mizi=NNz5!nWxJh7vz&X|Y zUHT@$AA%?SDJk$+fincMhy7{2z_`FXfwu{)RIuqo=!_Ql1N`hy%4c8YVnlLfERd(s z)8R$HzZk-0|FJxjS3=ju7h!2z+01a&ph#YrCi@T8!n7QC2^}f?tI$VEC{)DoA;Iee zzr2w-wI;)vH4LvF%y5u!oIULK<9QcePAi<|3NI@8Lfr=>!UHi-$jQ3{t#^g z?23*D9F2UB={Z_ISUaX?Ux96aVS2-N6f7JgaHPP5mvb3hJ_)J%3-keM^k@5cXj<`8 z^M=z6Ei(Z}_ML~fBO|Nk;jYGqWem>`&4X7>k=f8(o_8ivy;FD&;1`1yj?d?(Nk5$q`L()?Uq>mgX{b-oztQP5~()&CmU!ui&O1=f$jB#u@ z{X@GF-VUMb;MG60KLTG!KLm!;?Pd&|+XR+ZG5%duE#T=fhSwRx0IwDJb3+^O9RgR! z81Jkc4@d(T9#F>c+XjZ;0HPhnxaYo5cOiOHC&pNf=K7d(yTIoWLyg7{e$lVd-*tvh z4g44|>fZpUG%tcCdwZ{VzAEpC8caU4L8~wyhyA-g&{CJ0 zkiQACn_a5Q&(wOMHqhp3rtZWnMRW~qFT70i(DN?!qH!6<`;UZLTy}l~`Y4rSoy(es z_I)MKO9NagUiDUYd_JQ$kElcd0=-Q*&JEK9QZRC@oc} zL3W-?ZEs=fDwkT-#FP&^hjdLB(H~vPu-0o4dRtK%*LyKFV@1H4Z9=UQYQ1(^Ez1sy zi%dH_x-GAm&QKKHlCR;*Z`ZoAL_enPbEy;RKguhmD(p`!Jdte>%ltu6An|Ex+YQ>97Jnf>cl`vFh+$K z7Pt*wJa~;hn95x0U$sotxKx?Wl7aT$_DN1_4F#1xc#lDrs8hsf3>{1UIvp_}g`Vw*RjWE~f!>Pul_B3aK z8tPJIHEZ+{G|r`V2z8iCRgwK*UbX;giD=) z$d9BKU23jA3sk`<<=KnKZxoff)H^k^K-DM;h07#mSu}+&(>S@4tmt3=9k^7chb`? zb#8ON;Bho@oYJgE3ps(dxYSqSHTq;K-do8oN4m*0QK${{a_J_TLX-Ak*)?=e*(ab@ zxzx{P=jtcXc9+^7-(*dt=l4^Z*O{||Qz^K=qAoCI1*g${LS0VF2Aml@neI4%WtW%T z-LT0zg;of)*ylrgIfYgVwa{1MnFZ<*SGEzY=Tv&am2E|fJe8hvW%Xzir_m-?)`~W9 z8olkxwxX3!r|qunGqm#Q^iNkdcyKCsI(_3(6Ux@;r_)caW=Gj9P}YI$=X%WA8utA| zg<2@H_6)lFAeJqpqcCR8ptBBUO3j-y=w_j=p_4op1ZU7)F11JP?}9VwC70R;%Av1a z>R&A@Ma3FE)KiS&Z$p0HhDU6O5O`zn4t!Nx+qO~-o|Wrafag6OqMEY{xEnk9U?Wh2=(_xaEWLd(q8I3m%7vj z?ajRJf|q5eSMzoRFV9fVQ zti0Ga%i1UZ4(j7l=YzVF;);T%Ml0wqLVX~s!xi+hOL06`(DzD{9_x2d{vWAkg4m?V zNOu6hm$@?TD{JU!m*T$i7y8N7{1KXuQQ0xd zCik4j=?ItNp0k$D7iuA$6~8CAj&4>mjce=)YCe|JEu>NXPs)FS#t6mrr_o>OI-#zl zdEqni|4N^_)Y2hy^Ec4HUF!SRx%p3%K8dYdNk=zz=RZsNF69YakpDcD3B@+A$bW%q z+Espk#lG!Dn&(oyo_~>6xzwBR>_r;d!J3QdTpS_3NHv{`sx~~JPCH3a`K21YM0dN? zIH5ijY9YNggk`5qWzB{3emPTh(-bw!U@GcTX9?xbl=KJhChH|?71`x_&YE|-RKBq^|0TNYWX}B>`e@*d`5Wo%Qxx?rsF&%M zQ<+jWH__cfsabmy`A$=se(&vA?N1i!a=Ipb7pU#7EYb8JsLx&MHJzy+U8>6aC@BAQ zW#!WFQ~9sZ0WP&fe<6P}O>`+E_6n#~E>&N;HUBmG$fb@mzRiDwzICblbv^VZ8K<*N z<>y;eDAYB$d%DSbi;iwy8?G>TW7TTm_ zzEu^)px$z2Mt&&tF1_ceeBA%1w)~&^o1+?GFS}iMOH8uAB(w$n71y2INP`Uk!3Qj4qh2z^L<&E|Bf z3?I>4p%zoTYVXiTbi1OYSA9%tax_1tiE~tb0c(@>F?9-cIsGffRF5nBsEDccE>#p^ z%9l{-E-E}Q^fAqKsoxh)2z^3lcPZI}<(;8_k}+3N;nu04�eJ+|H(lzM#E?+TgE` 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 emissiveAnims; + protected List thrustTransformInfos; + // protected internals protected EngineSolver engineSolver = null; @@ -112,6 +114,8 @@ public override void OnStart(PartModule.StartState state) engineTemp = 288.15d; currentThrottle = 0f; + InitializeThrustTransforms(); + // Get emissives emissiveAnims = new List(); int mCount = part.Modules.Count; @@ -126,13 +130,99 @@ public override void OnLoad(ConfigNode node) { base.OnLoad(node); - thrustTransforms = new List(part.FindModelTransforms(thrustVectorTransformName)); // should be done by base, but no harm doing it again. - // -- will be done on Start - CreateEngine(); + if (node.HasNode("THRUST_TRANSFORM")) + { + thrustTransformInfos = new List(); + + foreach (ConfigNode trfNode in node.nodes) + { + if (trfNode.name != "THRUST_TRANSFORM") continue; + + ThrustTransformInfo info; + + try + { + info = new ThrustTransformInfo(trfNode); + thrustTransformInfos.Add(info); + } + catch (Exception e) + { + Debug.LogError($"[{GetType().Name}] exception while attempting to parse THRUST_TRANSFORM: {e}"); + } + } + } + + InitializeThrustTransforms(); CreateEngine(); FitEngineIfNecessary(); } + protected void InitializeThrustTransforms() + { + if (thrustTransformInfos == null && part.partInfo != null && part.partInfo.partPrefab != null && part.partInfo.partPrefab != this) + { + ModuleEnginesSolver prefabModule = null; + + for (int i = 0; i < part.partInfo.partPrefab.Modules.Count; i++) + { + ModuleEnginesSolver m = part.partInfo.partPrefab.Modules[i] as ModuleEnginesSolver; + if (m == null) continue; + if (m.engineID != engineID) continue; + + prefabModule = m; + break; + } + + if (prefabModule == null) + { + Debug.LogError($"[{GetType().Name}] unable to find prefab module"); + return; + } + + thrustTransformInfos = prefabModule.thrustTransformInfos; + } + + if (thrustTransformInfos == null) return; + + thrustTransforms.Clear(); + thrustTransformMultipliers.Clear(); + float normalization = 0; + + foreach(ThrustTransformInfo info in thrustTransformInfos) + { + Transform[] transforms = part.FindModelTransforms(info.transformName); + + if (transforms.Length == 0) + { + Debug.LogError($"[{GetType().Name}] no transforms named {info.transformName} found"); + continue; + } + + if (info.multipliers != null && transforms.Length != info.multipliers.Length) + { + Debug.LogError($"[{GetType().Name}] found {transforms.Length} transforms named {info.transformName} but got {info.multipliers.Length} multipliers"); + continue; + } + + for (int i = 0; i < transforms.Length; i++) + { + thrustTransforms.Add(transforms[i]); + + float multiplier = info.overallMultiplier; + if (info.multipliers != null) multiplier *= info.multipliers[i]; + thrustTransformMultipliers.Add(multiplier); + normalization += multiplier; + } + } + + if (normalization == 0) normalization = 1; + for (int i = 0; i < thrustTransformMultipliers.Count; i++) + { + thrustTransformMultipliers[i] /= normalization; + } + } + new virtual public void FixedUpdate() { realIsp = 0f; diff --git a/SolverEngines/SolverEngines.csproj b/SolverEngines/SolverEngines.csproj index 3138479..be995a5 100644 --- a/SolverEngines/SolverEngines.csproj +++ b/SolverEngines/SolverEngines.csproj @@ -54,6 +54,7 @@ + diff --git a/SolverEngines/ThrustTransformInfo.cs b/SolverEngines/ThrustTransformInfo.cs new file mode 100644 index 0000000..d3c860f --- /dev/null +++ b/SolverEngines/ThrustTransformInfo.cs @@ -0,0 +1,56 @@ +using System; + +namespace SolverEngines +{ + public class ThrustTransformInfo + { + public readonly string transformName; + public readonly float overallMultiplier = 1; + public readonly float[] multipliers = null; + + public ThrustTransformInfo(ConfigNode node) + { + if (node == null) throw new ArgumentNullException(nameof(node)); + + transformName = node.GetValue("name"); + if (string.IsNullOrEmpty(transformName)) throw new ArgumentException("Missing or blank name"); + + string overallMultiplierStr = node.GetValue("overallMultiplier"); + if (!string.IsNullOrEmpty(overallMultiplierStr)) + { + if (!float.TryParse(overallMultiplierStr, out overallMultiplier)) + { + throw new ArgumentException("Could not parse overallMultiplier as float: " + overallMultiplierStr); + } + else if (overallMultiplier <= 0) + { + throw new ArgumentException("overallMultiplier must be positive: " + overallMultiplierStr); + } + } + + if (node.HasValue("multiplier")) + { + string[] strMultipliers = node.GetValues("multiplier"); + + multipliers = new float[strMultipliers.Length]; + for (int i = 0; i < strMultipliers.Length; i++) + { + if (!float.TryParse(strMultipliers[i], out multipliers[i])) + { + throw new ArgumentException("Could not parse multiplier as flooat: " + strMultipliers[i]); + } + else if (multipliers[i] <= 0) + { + throw new ArgumentException("multiplier must be positive: " + strMultipliers[i]); + } + } + + if (multipliers.Length == 1) + { + overallMultiplier *= multipliers[0]; + multipliers = null; + } + } + } + } +}