From 2f16692fad30ae12285b9e7e4c1711464ce003d1 Mon Sep 17 00:00:00 2001 From: Matthew Walls Date: Fri, 20 Mar 2020 08:19:36 -0700 Subject: [PATCH] Fixed issues with damage soak and extra damages. Extra damage should now be dealt properly and damage soak should now deflect damage properly.(via RimWorld Mod Release Tool) --- About/About.xml | 6 +- About/Changelog.txt | 4 + About/Manifest.xml | 2 +- About/Version.txt | 2 +- Assemblies/0JecsTools.dll | Bin 124416 -> 128512 bytes Assemblies/AbilityUser.dll | Bin 68608 -> 68608 bytes Assemblies/AbilityUserAI.dll | Bin 26624 -> 26624 bytes Assemblies/CompBigBox.dll | Bin 6656 -> 6656 bytes Assemblies/CompInstalledPart.dll | Bin 21504 -> 21504 bytes Assemblies/CompSlotLoadable.dll | Bin 35840 -> 35840 bytes Assemblies/PawnShields.dll | Bin 22528 -> 22528 bytes .../JecsTools/HarmonyPatches.cs | 168 +++++++++++++----- .../HediffCompProperties_ExtraMeleeDamages.cs | 2 +- updateinfo | 10 +- 14 files changed, 141 insertions(+), 53 deletions(-) diff --git a/About/About.xml b/About/About.xml index af6be8c1..2d78350a 100644 --- a/About/About.xml +++ b/About/About.xml @@ -18,7 +18,7 @@ - 1.1.1.0 (03-15-2020) + 1.1.1.1 (03-20-2020) Adds modding components to RimWorld: vehicles, spell casting, weapon slots, oversized weapons, and more! @@ -77,6 +77,10 @@ Cade Perkinson, Jay Sacane, John Pahl, Tankok1998 also known as the Shermanlover ======================== Changelog ======================== +1.1.1.1 (03-20-2020) +======================== +Fixed issues with damage soak and extra damages. Extra damage should now be dealt properly and damage soak should now deflect damage properly. + 1.1.1.0 (03-15-2020) ======================== AbilityUser should now report when line of sight failure takes place for abilities. Extra damages no longer gives errors in combat logs. diff --git a/About/Changelog.txt b/About/Changelog.txt index 75f583b7..26940156 100644 --- a/About/Changelog.txt +++ b/About/Changelog.txt @@ -1,3 +1,7 @@ +1.1.1.1 (03-20-2020) +======================== +Fixed issues with damage soak and extra damages. Extra damage should now be dealt properly and damage soak should now deflect damage properly. + 1.1.1.0 (03-15-2020) ======================== AbilityUser should now report when line of sight failure takes place for abilities. Extra damages no longer gives errors in combat logs. diff --git a/About/Manifest.xml b/About/Manifest.xml index 0cac7997..3c049b61 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@  JecsTools - 1.1.1.0 + 1.1.1.1 diff --git a/About/Version.txt b/About/Version.txt index 410f6a9e..66a76058 100644 --- a/About/Version.txt +++ b/About/Version.txt @@ -1 +1 @@ -1.1.1.0 +1.1.1.1 diff --git a/Assemblies/0JecsTools.dll b/Assemblies/0JecsTools.dll index 984887a739860107366351cb86c027098205869b..4fef85e0f6a6308b5bbcf34ec0b0d8c32628db5b 100644 GIT binary patch delta 52963 zcmcG%2Y6J~)<3-WnaRn_q)rkhAt59o?PO*GA+&_vLJb{43%!FlFaZUJ$plbrpx{9i zD>g17qKINIToo(!Yef{>wO`x4_W1qQ+Gmmp`rhaNKJW8!pS#XpeeJc^-e;eE&cvqY zqiH7$|12>f=I(f< zbMg}jnixl9NN>08C`h*t)I{PH?)PMObGj^bb@&pN^TGexyhs*0$tD^4#ylePoDdb{ z&v9j8+r@j zDsCc1LX}cxXmj{)$#Z#ECJ~uC3r1t%ll}A$xOgPh0*< z;*VrU#A(cI%RZCXqnMp}_;B3oa?m_bT)HQm3_&gAMtbySeLjiJfmmQJfF2^ISEN_i zIM?W)yJ3N)mtsB}U*TSOnnH@1;OJDc$dXBA+iA-7;?qP^4^MIoa5w@W7i-}h^QzRN z^0-;=&IUZ&{dYO#aPKsi4MSycyxt7t9FumlXNMu}rb8fbBl_kYtA!SUZ?iW{KYU3Cn--Z2mUo!Z zNWIU&P-=lGMCqj23?xJMqBK+3GrP1K;AN$~x!v9t zAF?0*tn_Od^f$|{09@tGlT*y?-U*&foCRChi+HrqdP-KazS;cI`+ZtVP8Ds`EIFg}Ng zTaKHHx^xC>XP2#j1r^_+f-}0hrE`nr-EVfTe92u-eKM{^?gGC;ZQG+}O1G8rd^6lF zPnMh4cFP&L4f2>VJs? zQIWZijB24R7-GMc>D3#s{<^|7W>(KJ%l3np9`BBK#|5zDxx&L?(&>(G)^8&>c94uN zv?LD(o!4#^#4W_d@`$by$3SiP(j9JxJ3d4fxWAPi&8dfKfD+Ywp=VB73(sf|T_*q9 zb7ABF1(D!Ra61Ee6vPPVINb@&`t5Ck&_lz(C@#+`(UFr|TS7=r3KPSfq{2vaC%O|t zWFxc*U5*JuQH@(r7rxkQhewRKqVVmfo8BC7BUSKZj_1%;0oQ@f(J}A^HR1RH(#$Akn)k` zd^LROq19&5uqw>LS;Gt&G`9@%x@fXuLC`k@%?E~cl^>g54(pr{q`;2A42%>HAGq)n z%SZzmv4z**5*(I`Ft*|Ti3LXAKqTWR=IxEfHPA!nNY;3YmqKE8sfcetQM;&cgU6@~ zQQZ)+;pmy+6|&**FT=BC&OhNV9W|kc&jOEXBfORyp|xh0k=gQ7bJWNy@;|epIvcFu zn=#>Z65{EjTMJD&%8+N9-ci+n3rF?rO@bi|yDRVnK;u%NF@yaNm}@u&MsX8yjJ}v3 zz3U}<5IWm@ZB)g8Wo_kOC;6vXo;XH-nseCq#M*p=WS(J}<>rvl6*(BeSpJ*De~$Sp z%u7c1lb@T42{dSwa?u0P3b4}Ap*EX0oSbEkX+tHIy$#Hx&pz`sFOx5Rj{8k@nMDA&xU zzd^#&v=5M1ou*sSirfa!+-{H%IgtY`&5S0B(Sy+L9Y0+5GXEIw1N2SsncfL5bMA!h zvf8|S!c^JY{Az+v_A%Q}^vS+v4PZZW^~6nS{Ts=PKVI_~YtTi6Vtzkyw*1zdIO!x{ z*U2;FNptJu3G(FOlaqrI$b`BjIqRb-z^(_g`D;pnTcZ@LKm2Olf22HUK0B?0y#4S$ zryZ6NY(P}Pl=Qzyx-&}?#~6)KbLr*MtA{E;ZN$bTR{UEM@5cHV^ydgm}Lr z-Znn)FVqL(rX3RUBnBXZoFHR2a$CJynC)kd9g5vctkLhtXb(0@9AgZOHv9&8SDG+> z$JL*zDI>igWPAY^kpt#!Gqba36xgzVhBg*ujvUI zZXJ!6x-*twj4_1nU{euRA?ynDmoARptb^`i(0W5r3-ke8lM9YZuf`fE8u!CQZ`82} z=8zO=noH}8H52mqsu3=)8m7iN^l>D5A=r#qXD(UF`X1PV*nYAbI18Z z?nqn!Pdu*jpv^FFT}wTpJDz`D@F3J##kLyvSZQ}VbmKGf7Y8pV=fQg

O#Z3`&=xkr4I|#+)i6v>a=62Zq=Qw??&`CIL z7z&{TqXsZBO&Y^+bu`C$nkA6oK;~3;r4bB}e&}5&RHIl#;|Q>{fQ_LY&|{1QTr&pG zhQ*ff2?&Qrfl35~r-$Al%4ni!;aa+Q!ei)?5gw~9cosCsd^y(GgIXG{Rq73^+UR`qgQhELZG42@p>6UIXiP&4#4 zf=Y<5{sffZSyAE4CYqb^fjMxW7^%W~D$+D#F0iEFeGqbn=23Lm?8VHJIDcwfpq>^Q zM_gbA`2L*W2T_YQ&qNO!%}lqydm-$_DI3nvd`LP&3jjI2_KXZqM#Dm&fkgl%!C{fI zHV&1>)qWr2?akk+M;UUOwOoC|j4vc8o0&p{{hkwFM(lYVdZnl#`e!4eSP$ zzhFXVOW&3`F*7~x-3wqPxHd|31R^w!JZ6D2sq=ajCZI^ujR0Zs8n5-~j^H~`NptX^ zoi;P@eDfL&Y;G{V3*BHCJ52_2)dwc0AS$27jfk*YW;>?@r$l9{RwD@T@n~(0_>$oH zQKm%?tfB~AzV2x*13NKSdP4AV3LxP$-|hsJ3iGEX*pa3*A}J-VlB zY1IG!dr4w}8sT-vVTBrmT_P$|JOD5V*I#kvrHbYz{!izw4*WkI3sWpT9lQ>pb+Ma^ z7j%iNMSOT}4A33eI19jEVqw89UBxOJKlK{eHMoq6u())hTb^+?P7kdIQDYW2yT`fhi_-Ckcuthw*Trox;ufXHrQt}6RNVFz z)8Gj=CFZ*0R!lSS9PV=KMu;>6vnZYo=J%2B$$@5UBGpPQv>Dg69Wk_c?AOH2=*DoQ zT{FH#lFH+UYsR@G*pQCIAmc<0;qe}U=t?(q9{7P=uuClVonRYVKrQcp<(M_@G~Zj~ zDJDy8BoF;r@{pOmI5%=W`MgRC9U+14NL_iRf#uSrHS7OD1PvFWZA`)K$Lpb?xQN6@ z*#Z}nh*H{0q`{ia9+zxSj!V{!ZA5_VC3MB0dBhc1*hX+)Y1Cb|@+2*EDY!<6M$M<& z3>&Tq{Dc?y4nb(4Um+OU4r*uzfWP8&O5ie(i{o`qgNa7;8rTUWa5+;FV^wy61gEW5 zuK*$4u0=vuQX?*g#iN@M*iCd~zE$NaqQq;VtLf@coOEZb#5Kfe6a2MANr;uXjwmg$ z#Q_UlZ{EM8B*LBD1Kiyv&>KLB)xYsH{HD|Jn}Me#tL?ozIm5UGxOX{*$Jk4f%2eQQ zXorts%rUR18dr)^Ax6>=afjF9314$*dgybAgdYJw`wMD6YVKI-t;A!EJ^ZjDe@X4f zR2!RMd-y1T_d3nkNB%b42Q0X{t9fc^dgM1$6iwtDOk_y$KP^NO<%ya>TrKbiL8fUT za@@tC1vD%TzD}{!Zpm5z$FY#N5zo5DN@$@+p*^izie}u3K+17=FwCkg8ghSUjfb8e z_WT7gh}!7Js3|RFJ9Aq2KJ)%%UDI%UiZH2&wa|V*<2LiRWmyRlnKEw+YoQG-j^llR^@Y@V-=*SgFMlNPk3l=kRF$b9rctoyoz^=VWy(L%%Fa_jG~;Q&z%u|Y-Cw1Lo+XJ2MOJd^hU+n&1E=-I zh8=zAc~Ihw-M?6CM7(jsT9SUHtHdO#y+%xiWYhd>FAkYqcQ4dyhn=a6culAs&`^;AVCxW6S00f zQI*y*p=R^@Y@OE)CN!P`K{@yUtrCna&088_^gp%+)18eUf`jKusyr>g^X@Ng#PSSs zsJ0?@F&6>i#0^{VkH|!bZjHuNI&!I1NZ@18UA|&0UY}@1sQbprC^T#ZX$Pf+X!SJy z2@#J`2RfuaHJ3M(b@+^YjM6%F>(*^R_*oJ)J|_~E>MzVY8ZsleDe9r;z$ovp@`XuP z$;WzWdgx1tMo<2}LK|-qlH(h{Mk~{}9edWTJpTc$4qpVxpzXTw9VV{jVZ0;^7dpeNm4 z^(&HO=d<3%??89kZz3V%d$iNz9G?C-wGfsA1GE4Qmpjh*0T-Ih|2AJ*Q{3)nIBWP1 zNX6;#;VlRTweX{fr=k%Y|I=_`*`U)Zt5=k{8Ov5!*fYSWFdmI@7IVO8u3B3W`3cJO z1oAUo5f`n0NSVM{p4+zeM#SyUZ2SdG8?R6ei!f@%MjC?iYMgif61C*e$aSBoXn|j$ z5cmxM$1i%|cQg{>L&&cy)Qq-2zwr-T$f6t5mrcfpg^ewn6=&sS)qq{{7jDf3XO%{t zN4KbQWY1nf|3ed7%mnL5op8N+SYW+b42 zXF>!-&kxwci^&{VBIy1?%YPD(Kr*SgZGjZxIHB4OiDtW8Bw0qPO+;vGY*U8AARBzoZxOIcfe>UO0K2a5g{r{B+qFn=egiM zMmsMdcoV4`o!~Wi8=3~{*JU&lxCnr!F`q=)Gi{+FRg{tvPLKZgF|e+#{f$9q=H z%cAHjBAXpAs|(R_?_C;R(^_v)G`xSh^PCJh!+i3bB0jiNV-)#+=btr-;MZSiGm7c@C(S9AW>T9`FxQ5PXOuv}n1(xF<0V*}`J;zzXf*41 z>#R4Ff?M1~oB%$=q#II7yfK~blkxG!3|w6{eS&R#Mzf7>LU!>zDiOwLg5;Y&go-0x zXa#%(`~X<0@ial360}7Hy>>f3Py8#%zcQ(m>%8_F zXj#br&Q*+((b0T&Loa-3)-K#>?C+G7&ge>U)1}CYF%vo9SE;lP4Z{rdA_F;C9(&-5 z1i2fUp+VpHY=<~M@ry8C7}4i>e@OGZaOr}*n5yX&lJ_K(yKKy2S{wpc{at>nqOFMC zoVXrd6<&MRp1nxKVx!cV9dzyQ?_RG}SxjfihkjcN+SD1tlnQqlVeADk9z zMsIM`*=Mn~;kY>{(jn4^gf~!7!SB)Ib{-=GBjxR_wNqgmeIej|MQhB%HO$dvhAA>F zzhbQrVd|h}^dl=TmC@tmJQQiTKPmObefm{q7lYiMOwoE^6_?z zOhsFZNEF@bS4LA7Y}XBgG?293AuVJ`3=E&(COr~`Pf|0OM^b}G>OI1<+Vc%7{63J* zq|@|h_!Ken`i4KCtJR&ZZJlFl+TFacDR0zZSW1WwP9Up8(Dpm@_&_B#J2-ppOoQI~ z#`9_fqz5NK(qg>{`{g|pvf&N$hK=dk`fldQ&7LA(b(9Jb<0vu~{DwYsYd|ZiY!2Gk zt-Qqrzo1L3x(GgSw+f(Ylawzfzj7DCXce9($u~m}-oY6m zYpm`J)F6)==A#RI>kO8qK@+<<^!zlT&^*((IWND38W;-AN>dL6A#LDElAj^Eo69$M ztfQW&fhi8&%O3e74Jry_74GC_AfBL%B;~f@U4??CfmK=R##WIex z@t8#q#o-@7)QnQ|pXa7W@B+i$FrGwzM2l;==_hJk0V7R6Q|oH7KLmOBEAC5uqLagz z04srs0In*$xW=M032kFFLR>>a!FQr|0yw+X6M_jn#Ht7zj<2TMV7xI43Gnp)C)&ZO zU@BfYpq{4K>V!a&fGsK)pF@OJ#XMFR`lO8909l zpRZV7mM;P=Bg1$W)Qp#^qL~a{+{=7u%c#PCBm3nU!J`o3fE#APbQ4h<33&TA{>Lmk zKQ}TPWLN9pG}8Fl0&_s+MT5taiD{zQLrG+TbLsa<+OE*$=pzwMi?TPkAs-M7oXnKR+M;dZJ2q_xRf8ocLI)PPq^icH@vMR#zkP@HTi~ChRrw=jNX~*6CGQ# z$IQO4xBn01O|ysbn!xUTAy{68Tf_#UHG8UC3U>%mLqeKO7iLzHqz#C$1UqDf8@X+ZI?2^=jM<1nt{fRx#U}M^Tt6kN`f?S60H8Q(xC! z2NrhHQ{(-Us$&h>v=#BG#SzhJ#N2+m1Bchb`VDppcOdCG$!Aoo1KS5ctBs>`&kAZKP=tWS7E@j3BT$I6X9T*9P zL2>fR9h`;1%Bu`Ck_;@mVbQDmS4RCsY&iJi4>sX2&dB&bIurwft79F;DTn_p(h?Oa z7VryOHF*KaD;)4b^B;d?(4Dc#ymV_;?~Uk1XcGWVPB-I{5Kp6k#mMl)8wQFmNp}X$ z1tZ1D0mj9UGPasywpB)mh^=$OHju)2ZEDAU{t~pYL$`^3kj8sL zcSAhQD;yZ&lU*Ebk{HU(LFINSnVL`Q2CAMJArfj>K=;G#WC%9M7WR~45!rHDw($Pn zuFcUybTuYnSlE&6_VNk(Zm#U6LKo{R!+czq}+Tas?ULK$PIs80jn{4V^a7 zO`o?;GiaZ$*}~Y{(9#x%3leA-*u{&bh*{e}oZw+7D!n4;X&Xo`_#lY5Pqiz-x~Y2% z$P2 z3MJ-hFp8UqV<4TrwfA7HNpw`d40n!doI49g=o%6^eZ^SO8$^SU@g|@iC zALG$#*+D98ydk(2MmAgrU=)~Zx0ibU+NgQg_U;jSjw?5UFTnbYv}&XKU0zY@+JuYUX~O~V!#bXzusyvUZEy6`A-oIWhdMl5qr% zRFG_Q!*ua>ZoqF(^d>BlcJC-p-a=keR@g#htl93JZKI!Q*^Ps6WD7aaY`BAbcC>{O zNd;G|<#zAlmU7Mlsu_1ukT}e=W;d5OiDU-NXD=&q z5Cg9PbIku-mLFjw4g)KX9%zry!#E4Y6X)+?V)*dhi|~L4oFu%sZBNWh=HbL)PE^j4 z;)U%v+|Y87!Im7MG1w6Jy^hdWTxoq1-Ey^H9~2E6Yp-QRt)=17o}7AI6zVGTpqZ_r z;}HCam_wlj6N`3;Lh)ud976Zc!4js4Ua-BAyG~Z}n(1>f$_rzd1#?r8`h zLR3WvhrRYN0iEsxXMyS+riE~ji;pK@IO5mZ<5dj|(^q#Wa{9%#8{>-8FMDV$dPL6% zu#-<3NRm#cNQa>rz=?v3e>oc?9Qr$mS_mg-Sf(*0?U|W@yCGacXKyyKJZhgMJY70# zBVv^QSDx6t^3*LGM$F{PjYy|x(D-#3Mbi4aV4Z&#tc41r-JrAl%^WO_YwVtAn0(j4 zhJv%eKbqwv1U{gB3vFIHOU(ZgvT_glWgMZ-X`xaO%GXA;;1wA5Oygc+y#eVp$e6~z zz*RD>0ckPDr%*M8jA&?-VG1qqCM+mDEmQ_>csq>;9wsen-~u@cXq-eP8nUJXdOLmjUw)8OVoDrqAQCW#K45_VIH}%BEmKrEe8s2s6+TJqY(A9+oyT=qtlb1lK?=IJC6k-=W4uH!zl`P zE!W*1W?Od|=%X39x_w@2Fgcc)lk2R`P$Wo7Ztb5mIjF7wHK-0zYjn?`)Tn#LCFcIC zOH{e=h|xWRM=pBLpfSeoO%p>9J5GXdnHg97-b@0g)%|XB%QZy~Vj$=~=3UnmMc9mkJ{-^k z`BcAs$u5eL7*xN62Qc5cesRP|^-Da|?<+JomZ&8dEnjRlseIX3!&}fU4)&wb<086< z{JhOX5B?fREcG3tHa={wxHhMhon=|hPENuokl)5fP``L>ZCU+WZ}awRvvXOteN>i4 zjAYe_U15H7t)V)~y`d4~UPVWYlzGJH?%u#7M%rq`D7md8Mszh|yQ~rG14@_xkJ7a? zN-YmNv`JELytNedM**-`aCPgT;m-hEbzN@qjgW2{09|iSTjQhVlh<{d_859c2g=rq z@+g`no7-V?lN0YN3mvsYT50XH&=6P&ZKRvi-@)czgVOyKZ=zg&_`_cbxV}Qxm>aL} zAcvdRUEjGVYWZ|Wcnl#&Iyo}GxjrLdM5|>pWlvsYH1M_914+7_)e>_gftm26-qSyh z01Q0x_{uAS$J-3=>GH-C5N*VU0H3Zri6(BOEe5UTDA?9Qz<9I&4OI~~(QptVVLX1qk%HsV z4pXn9gb768P_P1%Oo$NUVVX6(>f<)avxW@%d|HTbUiI-Ux!WEdOYF=raWQX>+SR-n zGnmLqmM6~BnnB@W;;_9|PYzBmf0UA)h2xVPBnzM622=W&H{6(&!%HCh$cp+HO+MO% z$C%4+?4flzU95dn?3B$Cdktb!S!`0Pwd|Zr0!8Q+>w!XM)sXG20o`Z$JjmOYZ z51m?Y3u%f@$WEB1iCf2c?@N#g52N{kj}z%q?Sy!61wyq5ftShZ z)tF@bwg)G|N^mV6{rTt2)!Q&-+zx#1Sbs~7wz;pl{+3SK-};)@-qLR(B{uLXfNvE3 zLED|_?;mJ}vFFB|`HeH@Gqeqa z8?S?dpGvr0YR+`D@_Mo|Drw2R0lD($G~*tcFRa?!4oBcQYRSLLynXKgHM@Cw(UQ+o zl9&9&G%?7z(({lWpOMicAB`uLlIRWmY`z_kw7MP8O4E8fU@QEvhbOk}kv+=L9eSAszw8)qMZ`LGJQZ@GH_=x-PA$O@ zhMH)x47>#jE$=Tu$yh*93=6v;h%*|f?k8gL0}SyI&;~+#0cv)Jc4k-v%$xk zK0Hg{kv}urcn6_0P6v^XrzqBD{qGQLH~~g+6LE}p(G26(LaQg4!k1F*xS@r}T*FD? zQ<4-OYHc>_k5Ue}O2h9#3{TXg!XnCKR$G(wLnfO3yqAhT?1x%$a8N(ITiXW{3Gt0{L5TTNB*)>7J6_yGobW+N#W&7t zEA#>h{R5ohCgOyVdY2X-J`-&un_O_R+1HAwuS7@Ve0&rb>+Ho=XYM>%sSXIZB?yFBVF$=SHDt(lkESA;f+O~hhn&c;P;rCw=uMjYkLshqWM>x{>o zy3EtWhq7%{c?L-hI1NMVfKxWKr7mB*r{QgQaq%d>kCyi`P5nKd7cc>>CT56Uo)Ekj z{jtt1=}pW~IKc}tcO&k-u6#d+Rtv3$*$m?Y5E`$cJscf#XrZ8a@qwP>&H|7B8crA^ z=F(XpjHFYwtpzXqA=LED@JF~99|MFwAv^yh6iya@U-};nR_Hd?3 zN8q%!)Az=Maoxx@wjI_2XQH2h|A6oEW$S?-(MZ5TwF9j9z)!%YsqetdBX{5jSmt|o zc#H|iK;V50EInsv^k?YACbFkq^Zrbx((rdoMwq#Gj*?r=rFRy~U(8GH?1c8AJFAkD z@dBV}H+95oTYHcBAtO2SZQd{;!wEX76C^r*_$#fy$dQe5IqgD78?>`!-zIrRk3 zA4Qak_5@!TPcVA{(MR_ttzpp8#n=K0^u^qT-E@)bB3K0I68%~7nrzZqQ%PEx*#y%w ze@=3V$ntq~xh!K+Uzb=vk{DW_%qcE$OA0BxT0(FvEBoh?reLIqa1`hPR zQqp~`fapg!l)O%tqW9agDU{Z&NO`O<1Y~fJZ&q-6o)EX3`&<&C)=|$nz za9_7_XG#VWePv&={L-XI=9Dz?1mYSem0DRJVq5`bj~JKvY$e8zO@BL==)P(SWq^x@ z={F37E++RAa{{cZiwdUaV)&9ppiB4MWO2AN!L%L(pXAWLX8RZRq977|RS_7SF_KJg z=I918>^GQF{aaUphx(AHy(htRR_>Qc^4Cu$?xjq5wTdWnxW~m@C5w1azON;%*GFeg z$rd&9FH3fbx2F*0PEVnvxweY zLGAb0=s!?;aL=V$!H#drAj)pmy>9@uE6ONC3ovjl@fCvB#kriz?7>y}9mR=By$7NG ze`19$<49pd&#HWnxN_>Vl`gR`nJC=`5?syhA446uL>AANhkM&IT*5zzC{q^@9KaR^ zKt7@k$15>ZK3C5jbrkeGNM5R)$CYtQKGjVh4l9z^jbiCJ2(gF{Ihm7rI7Y%~ve+_& zM((Mk?zy_SKY{x3;vh=T_PEDU7UlS>Eb{Q$)DvQN|uw_A9Fwt@Gw2e@+%fcNbT=K2!258k$8{C`#=v$ z+I5_d+1-hLR|himKF``K22;PE#f;Aut7<9er%*%LVp0aRcjZw%y;VapxtyT`In@3F zgXvCPd=soiA^!4u^K zzd}mW#AL^gzPh;DPraWqm3o{|Ox<{wD=avI2K1{*w0=Ct_U#z@NU~Vtr!n3#j9|B9 zVn3BfqPhL3{oQDCAp4V{acpik7vRu-L^-mMxC;hQP29-bbvzet;E~Sc#e32slKi5G z-~|gw@)Nf315qM4Ehk1_Hg{tUwYzpCxMm^2=ed9L+4K=syL1A%d~_CZKWCZU7#f$j zgcsmJoU^N$K8&j*k=tj&f-Y8}l9I*dGV0hL9Z4%PIiCzIZBKFC&5;UTB6hON+JVGv z97L0C9aECIe**^4&~)re@M2Ep31mnY<2-tuE=~^D>s;c&8RX!#e1h+Cp3bhJ_971G zDTebSHRNDCS8|8R)LzL`r5U5;68j8-cd%pEB5FU!<=Nby+DSZ7%O_L&fnEf!^iz=@ z<^`=gyR2s2^SRnT!#x(as{stru^jEleA>2)FoSPFo=NNYMzWhH+wdDdvkL#)?ZwvIg%PB{qzw@)y^Biy!M1VgsEj zdJZPZI$-2*d?8_r@O#aT`04+T3kh2+rZd*14`UHg&uH}o#hj-U2Pka5xB>AOXD_Z5 zVy!rfdG%e1w-#qHO>lqt2*NgsCg!EEm5t&&#+J_{-e$3lL-PO|DbEwTnfEkz;(QS~ z$mq3wiMdT2Vl2JG;@ZpQ4skDI|IArjdjqgX7;}xLwCxm+vinc^lZ&gwW6W!YHfV9}@A5wJ3uAiG;@UFpX_1IgN)_K>DAsDv zizG=yF_?$qdEu53LfbQXTx7E7d+7Zw+Hui|u?Knd?1TwuzoCg2+1EKJ{AKQTgwIftr!SBeBsG@{}zKJm?FI+mFzE~ zMml9AReaQIaqUL&2T-cuVSX|y^xC(!fYcauUM6rx8`aCneauZ`X)dtTe&yC^v$Qziq1nUnJhseE*;u9)hHF6(g<8{J@%l(XXjB}dCU80*UJ$H+r54(sHD%*)~~O_h&WJly|k#5DOBGymXp&ybJDD9(}3 zF)z(Qk}KugjH#5ak{>XpQo34x#Fz@LL4LxR3T>_YCu28p*k{Ynq8=hJx=wz{%rM8c zQT~T9<>EZ~lhi;zk}I$toG*WgDnf4?VHm@Ia}Kx5<`~{(QlJ>4yq(gKBTtPglwWt+m*8%Op(~Yx^A%y12OaISyUy&2maz%&mGTPZwLO z-vPb0%VTIi)SlqS3}Hw2Kye4)_3DxOO&q zSzq}zC{z5@jy%wjF7aasK0Ntu7nEl{j2L$oeh;Caj9&orD~LOG9>GuraewGW?GKsW zA+s4WCq@$GBDOQXJGJ{wB{+UE!430l`MS6(!vQ#HG+7wHFfKBQ*!PS|0^_|ol+rz^ zM490xxTQ0RUNMs3h$IhWu4ecs!=$7fQ06k+nm5Fwi&LD-VOd3>t1f*r{ws9pP*1W@ zpHDgacX}DP&rKl8`IV89OkMQuOpJCpF(r*MP1WfzRvk|O)q2+T$tJ! z%KQ6}WL@{ld?~K=^a9MAOXhCqO7J`Gz?iXpA^H56QGnBXlh)CUNr0+LmqM~Y6xU9R zfV64KJ$OHMe^(ug<&0r-^CvVdMsg-J-Qy=%JB;8$q}|Rgbun@9GHB(dtOR_=N1@Cu zT%BJaZXW%8UV*SzIALcVGAG3sUETq_t^>6{PA19cYbwd(L~0*G=n+KC$r-@$zR&SC zml1nLuLNBezcb})hK|g&P|jicFQw<8O|>FL3fgeM?Hh+vmqzgLEu4J;+CPol0a!Qt zD!}brq`TTv?}O<#=68*V?7VlmcCDveR=212M23+? z^NDm*H&S-y-j?qcgZdE6Ko8tvIiN@UD~aF@1CHQu;?r_!|7Ye=v{$7PTn#rK;owre zrkaAzn?oV`7;bDwor#^U(@UN~wl3jSArzT%0XE0MLDb8=-lJ|^#4RR;-VE~?PGq=& zhv^cA#cZ^Rr|yhA%G?TuAI?3F_7985LKqY&da}Hc^$;wt=t=Y^YY1*cM!Sk(6_Jzp zqO(U9x$nS2OY5k;jc2EW-6*vQwB5qu&GkGreHMr=XuKBgq3rB;vv-J;LzUr=+ecyt-*Dt?;Pp#bBW^p5a|cLAgG zzEj8Ig1V*-eu8>mfLH3e{I0=2(N zpmx|cA8=Is$^t3A&8MmO_zary?NiBGkI}zia9?+eQR=&r&}D;m06y7wcZ-5EnPOMwUTjB;NsrOjg8LTV3usMLl-7W5KyVb0w3e?4 zF*4^x;`f66y5qK(9^7LoL=C;}cmNI_n)w9ai|!-&l$B@D?;rIS01M&?7U^$+yKd%3 zmW-0bp}dReN>_1vjQ$jqk-gu*ec|@W5xV1@a(o%%J{m8%{}gm3Iur_0oEJ}$D%{Dg zZwn}tUt#VawW1TX<2rfp4%*eJwf6$;=y0?{`@Hz}EZLDI6C%1tEY@?efOK~zpuN&X z?b-xtznDPna#;w`bJ0JKn5Er@1?OyMXHYJ7^#NR-Fbwc6k(<=&azcwsS^;%o_NnWH zqgNg{)xK;t)kk{yEgiA`pK{Cun;6uCxiHt&wg_;)9svA6t_PgxJQuK1yA<#g!?0~P z+I_@s=%!Agh3n!$1n+G}rgM4v752FqT$laUPSH7)ntr%bUDL)c1fA55H0@wydhTI% ze;h5t;aIb(K5QU%@4|xMHl=~?T997Y^LX!L$lBR6#G(I0& zYOy8jNDZ9ipNib6_^oueQEw!+;lp_%BZ()6t9t1Yp!Y*ZOnuQ%^Y>|a! zCtYhR5NBJMFKKT^fw;)RR)W__Tw`I45imQ6J1q3;!~?cMan!K{9s|5W(~F#i9~wqiNWrX7P&Ez zimW6FiEfAHW zjxja2D#e+KCmxwySX3!CTiA|Sg+<*X;tC7BzOZXiPw|+Az0sMl7c9)#4?8*Wj>0&Y zp5hzEc8Rp^y&!o8e%Vj+=dCV-i>k#p7Isw#Xd_? zuWeU+mN>*%WS3*_f}G;B#mkKDa@+-My?EDBq|id*8w;abRY;5;N5N2_g~j+1kN+J@ zT9)fA-q3<|E9nAkHcK9J`et^I!TK>ak9k`nj=Zk$)nJN0AzZVL;?7%;@23{!UFh;lEwayF0QVY9J zlj0(=+QL5430rSr#g0wRi^N98jyY#|FE74GY*m=NB+?$YM)3oqYB9Mex;{IunnOIb zr8wsJVG>~#GgN4^=a7r%8QUdFr(6Z2`(_ePS=lL`W=vK7PElOXJje2J2a9)#?iP06 zoJaxQW$a;eqv$y4Fqoe)c1&D1_LOTE-s_X%E^(rBdEymf7GuiAm0}TNl#5fYE5(^H zyxrp3HrShtsbF@CUc5*g6Nkn;6e->v>jr{*b~LqikB>`e()#2{0kJ%RsB`*b;7YwVL8=57w-|%7AfpM zRa!~p2JzYwg}z($bMZ~0cDce%)g_kPEUvMzPtwwW`BxBcm*_d9eaS7Np0OR`ocjEd zy&`O3o9jz}?Xj>IMwch<74y$fHZRQSTJkrs%EC6yE>GMS5eFFEB`zA#tK?SkvxPmF z-M?hNaI92{S56vTa=VyzCSj&{w|Z8|onixHDy4_S&#Q>HOFWphu;h?PT&=K&<}NF_ zOKi8W+vlz?xmQdMDqjD&=aoDlA_pvV!`vMu4~yRz+aYG>UR&~*wWZjFvAn(H332lp zr8s@=y(Pzl|15>QIQFrUr^Olz>*;>6T+pbnq!AURpNRY>g{6+~ zSNgg5;ar9FD;Qt;wU~S!VY|fSx~Zk#h+ix$JZW+152D8w;;DN2NetXV_a7_@sb#^^ zpTsLM%%8=tjBRw}maHrNSvbxo$zzV*$%Ab_i~AT;W_}irG4_O*IWP>#f5z~B5&vRr zqj+1KTl$O8E?_Gn$vZOrSCM`J-~W^uDaYp%Gm3R!(I@1B%!^BODy4{%Q!Y|GS}o&blZ73`jv`LZy_k7&#Z6YcJCx)-9SO^2>|6xCH$#^d7IueM;vLsxmyzTX zV$h_$8Syf@MIAd~PpLy*xf3k9|Iu3Jk{OqisOr5-c4&ijQ5XW_mS)TNYZSJ8($A%N zve?49bf7<)H`&5&o8_Xf%&%q1h&WlFZj{QU3KbuX%Qed6((9C&hx?Zq#N2eCbRD$-WII#L-7a0+>9L)dpqyU>@G(ro_MAAD5HnG zO7Ubw#~ZO8@}MQ!9(TMR@}z~WLP7PAKPg4tQ1y`UHwgSw!_-6eZG(+&gDr1^ZEu4) zZ)7Wu<&kmY5lt4O#~foYxq8T#Zi;pBrozytI!J!X*k4P2ezRqCTsEW=5lZI>4A(SbNB)l_<~H9uhMa|CD4O*>NvnyM({@Qln3s>DyNhW}dRr zS59V3>GhTMtyl!_vRAbcyV zh%vRf94zU-DoNW=y>=h|yjT@uST9C?kvv2a2fdG5Gw}{1GSrG&?Qe$4?FWeYgt#yH z6=SGOIY^j_yGCX)rg$}Nc*Eox<{cAv&wkq&)+SG*<)_S3xfm@ScSLPokuy3XJ1A5v z8MwZvRxY)${DEKMKbo=6!aONI7-Qv^j2#mVSlPzO3+^N{$9Ru8u1)gC$-T^@unUXE z$%hzIJLC!SC#C0DSX3Y;$Vk>9HpA=s1X+KVGCC#oH~eQC1{_w{t$50rDCaPyaxqZ` z+hF7KNixd2nt7YW@kB@2#5SQ#lDApB1l>_KNsf=iC{C6STFgHjjN=*n9#0ln$+&5KsSqnwvJ`frR#3K|7{kN z1XVe%*~ggUM{q-A7>W;8*vYr*(knsFpsfQ&SBFB+v?>R3X`={ zVtH52=nB0x7VoVg{<3;`?>&6~J0*M6)PNbA#CrKCi*6Qm_8t&z%X`h@?TjNA-H)g~ zeH~9&Tgd|!ucQ6Xyx+h>|2K=fnOSq6GIQHsm}#(he-+Gm7Vq=FaB;K68~GQ!4)?=f z1nx(0FE$Vg>@{|Ot%d!HH>34(zlDhe!d_ua4O6}Rk})+*vt-c&WaX5kVVWh!KTMb! zrdjd~#!fktXY?rp#yO0f;&Eza(m2hMYm}(`+t5J}ecZxmm}bf67*pdZnt?p;beTR@EKyi>Dpa(rhL=F z8WQ%D1zJ2jgfE|0$@iJ3a=1!H)Sg@=akc!7nJS5^<(lIviO){|TiNP1No?g&5?4$5 zd(E`$%o}<;BoA8{<#2VItgV(0GH2#@_mbWonq#bQHqpB+h7$h5O1?s z`4^IJTD&y;6l%4MVq3AUu9hD&PYo!A79lfH7vEZneQfuk7tI#-rF^t3D7`N#hj;78 z${Jd*dgrmSHL{1r>#H3vTib$t0qiU}(BhqMJ6?9S9BpAW;&|CQ$_)8e?$^s{7IQOZ z`ua9$TQBQhQtppoom($&WlZ(roHml@$a^fw^R?H?&XFHmSUcN0WuZ2b8{{|O!T)A4 z9}YLj@h_7LWfWLGVJfr@vYvUH@zJf%*_IcUYb@R^2rb-3uTfrU@jAwRP}bOn7m>bK z;DGLbZ`waAi?m@j$v(sc?^*Dg+VD2Y(H74Q-bOi-F%|ZvHjYDi%cCTG96E*CRow}WWO!45YAgD#4%Gg#uodQ4QTzKEf@gAD!Tx=SqTs|l`sw%d z-b5M1GR2dqoj8u@k>Aq=-tRue3T_UiYA&(e<*BLoPla%9V%xu^klMZI2l|vxl8SQO z#J_4QF7=qK_31@2ZQ79-MtxT@P06w0!wX7di|vS_+A2>UGJ)ymEoo{*C{hz}5Gbbun2W6AWn-0w|DlobEqA{k`5ORj;*xp9{r_6~7Pu&@y#I5a%Uqrr24)x-F2gV+UQoOs zkm4;7u_#SZ$i*8su}G{?sU@vpKrG7sHDx`^rf;&EMQdA_iu7WurCXF{^txN7?aFEw zTD!3Mmh@Wt|NhQ^V733<_w)HH^L@_zp5OVM-#Nd_InT^_o(ZZ;()yh-D1Y`6pAdl) z3fn$xpl8G3h7!92K>`uzU;kOEhMm4JP`_^vnJj^)E{rI|fKJ&^#zq^;5OIPYZ1P(Xx_3E=b5$^Q zFuI6%bVkA0P@d@VP@W)@aqKq?3-d{Asc;Q4fyCS*)oc>UVP_u`vEGX`EU|Bd_XY!u zhFxNJr_$M=>Onf?l731sID=<{Q_f({uckwS47RS_7Oi`wN;^m~Z9f9t5=>5J94;f0Af`R3S?JLc)J% zc$tX%U>wo+iINy6nMKSe2{ch*`oaB&coWQM!3sfJ29YLZiLHb;^jq%Mh3;Fh^jnzyg8A0?UCBtWuP#1^NZ{0y%5uge|}r)+Wk_ z_&6_T9pd8(D{J*FO2(U&_~596x8lOW$?~!%vy(gz7ZRBgDbWDrERnT>Gg+KX6XhwQ zJX4fsi*lYQFA?Pi(R_u#CV?$#YV=Ol%{Jg>hEBG#bT46=?*K?oTyv1MsaxkB0qJ7l z0hITkd`P98a2@Ko>pF3l80~3Y%U&t|gmtR-uK1jt1pb|M3DI4Q?ri81H#T&MTNl=Y z?&aO;Y|k*@+-1`^zDWUP6N?;Q0?sFM*8!i+UFYMQ#fi;qZ*(%mJ&+T?iOy-KQ1)FP z;63WY-p7FthHnABH)K2CBKUXoHSk!;E8r(ZyVz{3a=NgC>~Cn&R&s%NsK(NNpggNs zm3r0Z(j34a=11cm3_Z&$b+PWyQ_R=Ja^1u5hVI$u68CI$v7DvDq+Mu$vpoVg32YbG zBJeQK%XhK=9yL!2@X4{oQWtk$f2-83Zd$qqH=PB~4x94{E8yQd9+r~$+PEjB1Vitb zol+9;4JifqCn?%z*s$U+QU>09CglJnIoCi9pAgNQU`1i+a)IGs#AJLePn!{_2eV{u zI2h%X3i$5Q*>VBzabWWb--+@GMope(f3TOyEn+X-IYxUXsMb399GjTxmn#k1!XK0y z)ME<+sOy_Iaw`tstie!%jby#*Y3DgPV0gm& znVcbim)|2_5JI`MH=5)3|B^gL<$`GP9HT8vmxMDaaP4H=#73P7NT=-yj2pfi>6Om2 zi9Tp#QW6 z+DMI z`UH4*8Wc*GJ7mfYU4})@yVM?dOoQ4X&rN<@4e;;djLH=7yspmd!@TS>>TJ>DfJ8ei zrtrGNPuOhHVcZS*0_;&~hz{>n0}|QZY@C?-4>j6IZkS;F!?;txzavzVjPYX)h6H0s zy1@`_Y{ESu-EgZgL$5k)PO_m>eQQ~Yp#_^4Pq8-XzptHQNHNkVwn?9jpCPwN_3jyR zhVk@>8HP3~5IzU^%#ay!rq7r(Y5}S(OxfGU4keArN6e00)rLpS@rMygz!lvB6jrHrj}foZta# z1$L_=if=J?Np#Q4dZ>j>c0#R9{H-B7jCQFL^d{qzX*<~_H1oW16VFWD11t*LW8{V( zob4#nh!z-|XOA#-i=^JIZt$&0H*FT;wg_=M`WkCXEizRbzsp}^>XMcZzuVNpawgwv zB1Jc#vOR9IX_u(AN7QOIy5n9jQJ-GI*>Ot`m|BdVE<0j6WIP!4rfHMt{U-2#X=(?* zYCg;#D^6yI`7=X&vE~9}_fW67(pZ;BpW0IJ*riJ&#+&`Tw2)(HXVhyEy@Ye{0VXPw4j_5lyid8skY~&VDPEm0ny`tMBA1E5^YyHPy9aRf~dgd z;c&wXqS{eW;k>}peU<4ObF=YL+*}fnKE83kISJxk0lq)sh`GbKv-BgB-*XWC>+~;y zGpAexrsf_oN6QDU{sHAn#hR8NOE#z0X*@9F0P8gF2Kr7K<5+^$ZM-9Sn83+evAQoi zN9#3CD$do+rjoHYX-Tp^w*>gX!kaa_$X|BprpXmrK#rWYT8lPidhXKfrum8MwG>nM zlsYZRbRso@UE-96tC1y}v<#^G9FXp}>&7i#ZCZwDr|lIj(`Wk6*>7mMrkfncv=ljV z>U%i-DMq53g=HqNVpCJ}DNtVVCa@$#Jod-Rv`Hyblr!azaj)AYKI!_uYYG~m3D;Jl zT5`qNT$%2KD>ucvJ)qD{ZkJ%(A(jG}cGwrl_k|`|G9=%1A!96+rUw#JEg7abkSbAm zk;QNNAmV0Az^E;}*-|c7BWX04_GMRCGEE<(y`eRl4wc<$$&gpCsKMFyXKl1}tKY<} zk(y0SnU8>e?+VH&Z;XE0(q?*R(Qhp+rbC%8qVC^O_oQk0q+?KmI+G&T`;Zp8S-qQE zyG+}WC{pB$BaGG-R+b)+t>{xauw_UBvr2K;lTHy4Wu@sS-kKsmGX4njL(nj5kLd!Q zRvVBnx)VTo{l+w_QzA$1R7YlITWO;D43a;baig`@sNTW!6U2#of@2@-CNw zo6X^oCDtan!@eH)GO}2se18m`rA*f(J8^GUw<#N|gkIIPpbnKUjKPg(=7XhMtrtO;h{P0w4qO&6lhSes?J_#>!gi$8BoGQT^y2NdPH|0dOO?^uet*!i6g ztnIVp5Vs`eC5bX!qC`_sqx^n&Tu4A(7ds}7mc zR}RnnZOBYfPLbbFJ{!^|2DwcR%l`&tx-+Crw#~<#aOMw+nXO44F9AgbcUM)S_nKij(Gj_^-y4PrNElli1dXOm5Y5gK8Ph45_XNn5k| z9q(7R9{Gi|Z*0Z`=277e70+kv)SuBD>8ELrYO1KYSN*;)?JJEn52Cu`)DTq9s>_Sg@>z zAez_7d>ceJ*2DEaVH<=I*Gse@vun0xPla|fL&~|(XziPE-JzSrNN<)5zVS-fW-&xt zgrLpB4|WJayM&IrgmSxt|J$X~q|~qktzzWFutVmqDKo-4%->D9AuL)`rY;EEA{yQy z8r~vgcB_9}wghyV?~@er0J|{C9wBoNreI$(OHsCFZAExwr`%|*5UaUf^#S~FUnBd% zxiu_FtIYjPSi8`-TOE7T-mpyNfqBQn4hJdhi{x*^3X}uCmDh9oQ9;kpY$f4# zD;h{<3Ff1d$J#SBf9mtrF2jT2OYJ$@+e2=)pCA=|?1W^%7$it9L?QZ>{TZoYjqJ6I z1gQ15#XZ*3LR_vEJ|$p3hjO~yqCPX^8I;Lz=R`jWwC?n~O%lYVP2*H*#9%QcIq z9pznFhk(Ozr(L=Br;NKz<=ScZLAf>-Gitdu4|fv!%C$Po+~r!1Al(8|x%QNx=<^J` zTzl3-lzezYxppr75B6?02K)WH+4a|+uvcoP%#-$NEidcO_D&Wajdimy-vwd5O6B5+ zc6+5Vd&ypNr9$^qrYQTeT@Jfsj~eT^Ak1`v{C|sbNmNKt;)bnrC^ETBg89j`haD6o zk2_M78B3mYSY_gL%9J4#QFe>6Tc&K`6nIGpwTl_DK|4O{pd(`0P0 z?ukv39>CqDjoMX~FC7hGQo?bDtG(vJ8xZ7FQorfnbAZts=vop#9H zrWu#)Mzv+Gn=QTaO2l!SFkG8PhHDdsYZKOO)5v^n!p3dF#BJI`FlC!I4W>M)y`KJZ zc#l#t#rI`6SIT0)4eym{*=d(L5ZS%*Q)%~yCrOQ1TqH^Lt{!WWl##A!TzL%TWRX^T zr9qunn@Gpm?F$EMHpferz_<&nQ~v6OxdtY``TXM?AAgS5PGl}Y15{M8GJk- zXNA`}?UFumm)xVBnt#8uk#)HqcScJUSkE-F3nfoFd*vMy_nW)4BV$pS-8*-iGf6v+ zwNS52+YAHpxbP0}%*W-M+0s1!ZD*&_K)qBdCco!w(;iQ{*-~s?u;eUwO7q58s^#6K zpF68%y7cq)XfMwH*4d-IJ711yWIy1xJFfh-G%VtzmYg^)0u7)-ulydOqYL(%8c}Iz zA2lx`!BP}7+@s`SF_$dHY^F~PT8`y|q0dFk6hqf5hBr6pEFy%uS@FX5h+NCMl0y-8 zbH}``)^7G{VvjXNxveyTMN7L&KaMD{%$xmHL^Rfe-vAp0+8jsNY~hm2Ipvscg?3DK z3(4iCZ7!^fEWSHtjfl*HE|b|3p-QjWmW5b1-8s^Oe^OzjU0pwk`1jsa z6ontFZ&)> zj;han7)Tp2bJPzO{@PWn(6X~w`PGuAKv5<=4aD9{pPZx8rpp{Gx;e}3Lt59KN4Ce8 zwDS0rms}eJ=BTt=vRB=WlyY9oZ|B8Aqf`CjroXy6#1(X|wtL|xu7I)<_m&q3X|$Yw z#e7KlF8^!SA=o~QZIYAn$}qi=eBWl_ZoQW47Tg)NMfkxE;Rm}!d5MS>63uN zkpHFW1o^*eJ}ty84_-itCXeFu7UjGsUy%1kUmJ5?M8`RSCjpf~aw?P`i`8qURK;dm*Iic|n=JVKkg3O}Df@iTF_W5HUre`7K$YHH=@SB%PyHB_^folSw7e1o+byV>|d=p*i8D>>8>g+9zG;Oz^V z-JOPQ$uGE<3rd1nHgvcv6uKtN#kKZ48-42bvCrKJKks$ZwYw`WAlxL$_&pKtpBb{%+Q>G|&5H9|PhNLj+**a!2MyMdj*>W9dRN8KRsOwk1&TJmc?U-A#|&8JsFUvO*<6VY`tpkAL1$vUrhaDT$}a9si)$6>xH#8h@np5 zo8hG?GS9+2GQzhHS<}XT6SrA7<0iqgNtmNpKAQa=u4n(6=k|11_l&>V(`j8XewJsm zFhqy-Sn3i_v519YnVu@rVti-O5mSM7>x{ciX7gupk9ykV&%&SfwE5)c@$i&N!}00Q zc}`k44tdd&Yfc%*Y+cr(u)UrwLR=&65&n~>8sbiSnk;h{x7+uKm0*KnNIvT!yy(fn zOrgeiTOYYzi|?@xT^Js}LyQwvke=}P9%b>|G4Z=ZSNDi+WU9^6a8CA7WC!@G_|QyZ zIqY}w63YiV*fF*Y_(y@9Q`s!g4wP5||6RNl&yadCUd1!Lh(BG>GfTOOFFLNxugF0q{%gLz!ARFOynd$v)EM zf_w|`qWlz?zQ+j%;|iTtlpUyGR;WU;pp*%$5?C#;UTFnSqe4CY2owkF7MP@x1h0WG z(Lk+?Fi>J=H_77kxvyB>q2M!Qs3A{nj z7ceI%iv^`r;7XPX${My5xQ^XAit##D8t)Z2U0@bJ#Z04%M0q<$!|_9;vq0Z#;*cfN zo9zOb@)+AciYZTmGF>4-(?wZUsoHh}amq%*Iuo7UF7P#hX9db;q7M<6C9qUroxtq^ zUlVxNCk|YDkc4WYn!qf9r2^{&ZWs8Pz_S8ni{KZSC9qUroxtq^UlVv%pll_6uT}J3 zl(VcpB9)3abpp2wd`;k4fpUmwMqsJHI)U2-z9#UjK-nfZ1!f5>73jAUeY*28);+2S zI3n5aBubOB&POLA#OVkc@FG#J5xA`niGDE1<9ZCA6mN48|2CH}P}F1WvE+lmHff2sbe4@F^a?BzSR-(oz=J^e|Ct~uMKmMOJ6?zuSR}AU;5LB=1)dQ&J(W0% z1l9=LCh(v@@6|$%z=HzM2xJq8?j>9lKV7^jnnVi5y&zGtH9|&oJ^D=f!hQg z6nI7;nqa0--pZ2S})ST$~F zu(RsEluN+66poz+n<5CWk5_??A`9@#B%(xyh61ODIDwA|Y!x^*BnFgPfq%DpQRX33 zD^K7v0{^m@D21uRfRBWcw4Aijzz2OLsW=#hPXGp)R>e(4dBU(6z_E+31!f9-ObB6=wr;?-6Amu?FVW zT|Tios{!TV%N_>alSmB&#dR$t&iI1ez^%X7ce#A_7wwnJgX!_Vc=a-U=`Y^sD@*ty znVxex1Y2Yze0gltkK6fiUk|$$Z~u;o4!ec;4Zsj=wUO||nz_I+JQp~YF94?SeBgM# z5SYdbfa!cOZ~|WnoWTo$i}5|Wgx&e2z%{%KSjBG!26#E}F}@P`YrYD&h2IX`=i`+) z?B{EMf8bTXH~3w^4|z54FMJ)lj-8Q`fPa-n0Y8>T13#6<0zZ>dfaj%D;1^Ol%Vlmk z3FwhW0k4uL0~6)3z+rLlUm1sb3Pj<`$plACSL=*8m#l#M6k|hljKa` z6tFI4%fY&st$@(QtO7z8v)jPAnB4)+#cVZ%E@o@NS;+1OXCZq4oQ1fe$O8T!a2B#h zz*)#1m9v4H!HI1G;4EhQvU>?l7gVOo#mVt=Oy~wo|aT+=r)A8Nq`M7C-)1 zH#)l=kL$qEVapVJy6&sW21Ulc*5~9s2%F(&b3LefThTD;vR9;#GmyDl8Fh zV-wl!48QNju3?pUt;TCjYiA_ChWqYQer>-`VUGKh+Z`)e6<&VF=hD>hl`O%zl06ww z&CITqcr7rPU4@2HSD~`P@HyWc^*MhrdL_Gv*Nf4gOL|P9@_g(`_B&?-8^3c-4!kOi3?x-lP&Z;P0vnI809Gf!j$3#6VhUXhI3Jb@l7mm~K ziRV%JqcME4J~o9%>StqknLa<3hwHD#^0E4<7#^Y<-F%b^{*(;8IF^s%8Tx29Pt^Y! z%bofQvD_wSK+eHL9@ARx#xp@%=X$`z({=pLZwyaweIlN3lH~Nl@uDpdrd`F?Ddw5k zGxD#UGk0co>;7T9RWsdOwzhCi*_t)2D^qxxRsVD<-_`n?X*`j)p1y{k;jM3Ea<|(0 z)hvD@w)MYC_zZLFxC%a0Yc05w-)h#s_HldbpM3nb#OrDvF2!?BN@2iB%!?oCp#NSx z>GL*hHYtNKy$JVW99O}}x3OxxpNDs4c&KtYwq|?TXz}06^wHb6dqpA3gd^Mm=ctB^ zUqZ%e)SijgD!gt+y)~#4Y=xWe0PQYFWu=34nAb=3g8P?fWeudP!A31FeiV5vw74VK zmM;sxr(OolR|?H%p;iU>$`~8{^U`hs2enSMh<7bYWAKF4|2Oww-ARMnQFkRt$%B~X zP;UkPLrl#>gXIj2BlTb{`2QE9==)!d;;6yx4(PW6dX}S?Rl-_9>$0rDyaVIhKQgxo z8;|x0qunOVwH&J7B?jycadHgfQwIwfFtQh;aiy7mR)x&LwFjKVi$SI4$(++mAczWH z4DHYKqI|H3e*YWnvBDSs%~1^2=L-kR9O%?w>#u&84uwehaNC+i@ycXJ#Pf@Hi4Ay53xM}>#aE*C8 z@&s9*I+2ItN>B$6nip-BiL;amg4u_9LHTGBt~|%FdqB;El(pG{fQMWPLNI}?M)E3y z7Q{LpXW-2@4_0Nsnfk+4xYCXPUO@J_(#oHgIFL|%%QAA_Dc8YeFM<~4&w_75gm*o);d1>kLcF-5^beI|j_Xs{7BWN`iY!bB9n zYX|e(4jz0401{Q412Hta|G1w&o{1?^$)Rb8t1c@s;D$6}!CcVqIpin8Xjjb6L8pfO zX=y+Sv_!btY8?AKdFkLjc)>G^<**wO;^c($vB+4!@=?yiJBpuyDSBWWewyZjqmAef zP9@QOz5gfS|Ib6UY_M|u2D-92n)#_K!G*#=l>NLP_2;)M+{Ylz?1A1V3p{C?rY_~VG7D58;~2nnuU2iB{>iEtoBXl)&gx&euO(Xx23 zl5qan|3AII^~N21bV%6pjyJZw{@vS|`)*APx#f;I%k)hx{4oDe&)v<_d5?bIZvIqg zuiN0|j@n*Z@Svx^#J4A^++L=6IgfDQ{?Txz8o9&oG%@a|>9E(CsZbZ9UwVl*@C1G1 z9{g-XivGnOK87FB}Hlui3{R<>mUj`}k1DD#c*;CkcsZ zcBVM$s&sQJj|;1E)ZOE#tG@iFU){>{Lh4DYx(1VCaMbSA^;Uj0Z`9vz#cyFetqsMnpT{O0u=}@~nFO@i>kfpV5q}xpIQ(3)srW>!?g*qpY=?eu zKcCExwO-oKP27FJBpV!aR4)T>C{y~XLjwME@5?;h{Go}-+~%nJuyxtXJen&XIqE*r z*Zn8I+SlX61Bx7VJ$8S<;jcG2>UvEMe*>BxL^OI8ZpA1P1=|uS8fZxj>*YA0S7x1n6 zd#_+4^wX%~ZzSlXPHuQ!*MHB)B({++`Ewi_+Js5`jiQH#f^Tx@6e~j595+VM30b*gAkD-8@biMWb%b!MvJ2=IE1F)p-+fo4%$q2 zgj5mMrla$Y`l0&Aufp?F^lM(@ZeIqqI@RQrIb6*wMHy8`&B0*p42T*HRWk4=)UG+$ z*V7DYMVxYZ&EQCa4yf&@9qO24ug^r$gn+B{+iRmo8?F7!DUON6_W?809m zSgd`*k|5|ZFZHpeUEnUVMQxJkbyA-ON%+_ljRI{pG9$MJPt@${lh9Ytiw^T&T(81A z?C@8aJ1`PC6g#y!!vCwx45L~NWefUER1h>#0c1nC%WJUL7CUO;(;@cSGTn59XCy48 zK`SP;>XG1NI){Lh5IEdkUyeV$qLy)1L`2+W+QC6!D2({`TH+nI^4u4hfZKIJQ*Kf8` zyF$$l8!}>jlkR<;PZ(BBiZ%;7ReOxke23KpJ?JHTi8_UlxaV~~)Pj)ln@QDLzyAE| zd^&H@zj&RyivsrAhrmyg+R#eyoe7;s38PEHR~w+S2ORk6WYYYAz5a;3zC*ItA4BG# zzN@f+$wZc|9jX}(6dR7($A!Hg*Kd7;r_B4%Uf<=Y{|M)WKMm~@AcPYl|h2>U+_#z4}uf_$aVVf4PHu zaX8h%V{!PlgI|loHE#-H(VINM(}vk60&UaiBd7Sw-RQ+VlD+0rSffpUD#&{9O&*1c zC*S0wojul6Slk(wauPrk*kn)H*i&Y!D-kP4Ua zaC9Dye1u%zjyX;L_AP$hu!qQ_9JTe1S_%NNcyKz{sM1hwG}C-oTd$WLNxq+(sJ3@_WFum2AOeQeHCL1qj-TFQ+sMp^*$`hP%_=RK&BGjb6+A{mbxF?SB z$eAsea`9&kK{SvwakeFxx+jW=sXZcG;vlR>iGQL*^V~#1J1p=GebF(V;_DP{*y%zN z@K@O!wSN?jW}+;H3DMN=aLxS=*Bs1F&3%e)wHamf;+SAZKvOn?OTpcwK8|A{Ocvgk zLtZ$vU*OQ7mb&&fcZB-MV>gbrA?E3*k9wPDsaO?kXw%oc&6C5@vFO2ATSZ^&8#DA5 z-sWjopPhS~5AkGEaH4Y?vx5^Y7%f<_*l6yr`%oWxoR1owL!+FFCM6uGoZqL%#saEZ z(@3dj<5K;uu>p#NJdZIh$6$vlpWWZyS~Hi3&We-qgV8Mn5n^>6R+c8*|p z_FX;^E4r?C`A|Me%<;4`6tjJ%hLV`e6Qs+ME^4|oc?yX*r#L@9$q>-8V-vm-NuGE;&F@)Tsz zt>T^kailM}bMREN-gt`t%Gq+23FGQt70fKbjxF%BqW3+q@7GAArMMJ?=|!g>Ai@Qfe8pYnM@EtMNse{ z0ygZ3s2~>X9leSTu`4#P7cAFu)%d<^?K8=Q>+knI@BQEBaX)vR{atJAwbov{oPG8= z6C1yYZ9E#g_2Q8oZdyK5SpPl}9dqJjxezC$5V~Tz{z5s2${LX*E~98CgnyQr5dF6u zD@#25rxatEuZgX;ZMiA-98JVumHVCSYEF?wuA~nvYbVT2GS5ji$H!G-lWeVwOLT}&j!(hB=m}uavSFw z4RqJdwdy6BFT|F+=bcd@(TsC+ESzuYv|-!H%JzaYRNEYy=;-HgEC;(l3uTzQlb)0> zo73GHpljSu$(lnwlU+7|A#J~v6Ax8*x=4V9X$R#*Gd;bxeEHC%^yw1do_04wepZGi zJ!{ypE!3VJPgjoDn*Piq(q?vVKd9|wDEMzg+q`46-~z~P_PWW3E^BYo!V@9#4mBF6 z^_l2O&0j;Dj+)ItGITFS2PI+=T`3Xgu`ex@4PUw~ltY)cp)9)8g;62Yfr>$VhZ~#u>7g~vWtDw&tVkuN^_J6)%4uGUw_Ntdv`G&&n^oS39kEK~ zNMq2|qAl5NkdtXRXrX*EV-FS3#TF`}OQJnw&^0wwNS7e1H0j}p4}S=)ZDuz%vyn++ zANo9dmX`9e5c0-?c7gNb#EKgWGO}HpUp_RYqao$Hhc3u_&xY=qSyTafMNv;Kx3k3t zZHK-r`i?sN?c%FIS9r5!jk(o3-m{LgU<(x^9xZqtC96rl!2H$wiTv1nx8!W^$M9y% zLAC?Wric~kTe<)jcwT)s!uG!e*^LEhufA(8^&QM#&-S#Cm)l3w{{|GQE=78bH&N1q zUUNWchMPq+EPOLLlxQ5 zXI@*88Qu(i%$TlFEU<+taPjudZmPRdv3n90ndNrzEuzn*&b^Ku#Dsc7gud;Aiwz08 z9_%{16fUC^tz7-U<|VE#3QhWrB#nWzpphg77V8o{2ovq>!C0{4{0`9gl7$Yx6NLml z*vA~#HBa_28@uI#?&vxz{T9pdKp24ILAa3PTTR(DP4+e0bmsqRh3rupGW(D2 z^TT(L%Q$zO+v(3Hm&4d)T$8?^+%zXr4-SE#pftTuM_czchmevGB7r+Wg%R(LcgF?E zM(_eOFe(hiHEzKWC>iFq2l{7-74CS$JkcXIxmjO@237Od9$V$$Ll;*r(AykKDZhZgjoXP57o{~DYbUO>upXPe22$0BVhXe5am z8Vg(Nyx!cVMv`!QyeZ`|0wZ4dXvBRC4O&h75C`hpixmcv=Ze#V#4uh*%Y3=9LFCP4 z&Ku$#@d+8^#qln%VuN>sD&61`6a&*?Ad~-;@HlJF~ zSHPDZTw&%9t;B?zG1QPN&5c97F0~Y;>GdnkhlX~RC(Un$mc^~4!0v|`7%3RmfBq@U zNPvvkLUp(VhGrp*Ex1);Ez#?VWju)~dZTd->Y;I@YdpuR9tk^@$JU|yT{KJsN2m#r zxg?k%S9b)0f<}@Uy)i#} zPM2sw@Lcow$nt(?x7L4y^q*sWk{Eqy-M|(n+UA?2^Dov}Yz`V#o{23^wEQiSzsT}) z%*#ggkzbleM=g+FnO&+sP1=u{VC+Ip{kuUL?=%ZWPtC*-h&J#x89*cmdWpGvG%cn@ zV{Vfbhh7=um2IeVeF<)R@LOnL&2@~MJ@!*r4g8rcR-~r-{|&af`^AbS*aLRQa7}Bx z4H~?b#*8lk?L5B3+&$i9E*#%g_B5{^ zf0pcJ{si902`()%Tz>J$XQ=T@@nRo(pM9ozBfq8Syc=^GhUupsp zU~%oD%(aoWVkd)Xi$-A8)2OX$4}D$xi|lYGV&DuFl-dhDB@TlUm7PAh$)2D!>_7DP zcMhw8?Xn7RzFSZomrhEMm5w|XJcy|7wdDx z+Q#|6!}vf7X)|;?CVW3+kke%BLT;;e3A6LGF|+Dh8~uTdc4MO?F-F5^-Jj5RB@5#( zTzyHJGSUM|bi>r6Qm;Bp?Y;VwyM5+~X`WK*CWG{sOu_g^gky|KAeY7+s3b-e$!k#~ zcY4-9>P>ZX+=)?+4tBqad%U$(Xw1ht)f4KPzZdALEJ$2>)f8wpprQ7jSXYI)eR@G` zAqsj`j`_s&+4jfb*esjj3uDg}oyH$qT1*n74@{=m-F9OPnqKO$p{N^Q!j3P-lcJwE z=Y*~Bgs>TXNiD`5;~RuKTR(u(o;Jh4bv1=UONp=8wi35QiTjmqe9>%Rd@)-P#Qhvx z%U*v}U0jFOx*926cF%+~uUq#@gA$e@Q%a?63ycX-E7O-p$^q%B$1d!encXrQTDR&a zYSjSPENE;nznNJQt^lK;G`=v|*3=gJ?M!EhEBFB%)eVADoG} zTG`65%|8Xj(#1CaQslUFj?Itt)8(6D1^W>~gU80lyLXD>a9Vm~*@9D1H#iN%5`GMI zEzLh29L=V9^&f&~%m63N_y!rH;p-A}k-R}P6YRk*WTS#eSC9r|BzhSB+|pqrF~(x_ z(bADx5@U=<84H0ewM5sAawt|gxKF4Ue23glfJV=s&@pL^Gy`;hv&cUa&f+S=_d$p* zodpyh<4cNB&3D9bT6}JsXM%^Trlr_FH~`%?!kA65&H+iY$282v6+9aDrHK*YCs@-; z;w^TNP-<#w-8|?d)XfJijBx}P;OYp57xHBhD5u$;n(9fdI~&ly7{uv6hiC&xlj|@_khom&WTG%Ok9t>i?>!&5lI3L7UXraI+ z+*NG6TQ{)Gx{OU2Uma;hFoMvd$NLz8d$<^ikz_OK*-)G(J}sdn>`bvcQ)2XB2uzJd zTO@SgugA)OQsMJvp0HlYRYg}|3=Qw7RbKjT7*0h|rEMsaS`*n5bA zv5Mr@Dv|@u*hp2oXu*rjzt2t!pGHbbV>RPq;?|`g3rH_9gLko49f}YIF9GpqL0o8w zks7JuxOxH?|Q2x>uNK z=Va+7kP$X}o|6^cj$-gi5MQ|#`~$5EHgo(tz%Gc@J#|;15V`ty0{C|^CqBB$Zm<%f z8CQdWMJIR-U1Opo++C^uYr$WXg7mhyy^d64wcz!1btp-SGg@O0NzlxeIyVp}E}C;A zaazT8li6oUp=#^R5V~8%c?&qv)o(om-*yJx3!I#&HaPCYRO5DF?>R`ev5z#BDgPZP zhn__bVxpvAXT40ApDbzH;Y)BrkAi4=@GB}mrphO&{GjPv>J5KQMQkKV1^0M+=m`+- zb(*oC%-25v6gWyV(qp7z5HxJS2+63xFv1BDA57By=*i}3N&2PnN~-yrprZwerv)jD zP7cj4G0{spMz~>OS0rNj0$cNIB($y(6^=hhkx#B@qZxN1F3cd0|3^fk`rB8guDnn6 zV~&;w?lWu238`$3pAPPO1&pvK*1@K(I3HVtWV=)I-wUq87|+&8=(hXs1IrtwuhD%#4}J$}=>Q8*1O4|y zF(szNog8C4Kt)}1>rUfubRRf}&Fh!957X1B%B=rEsQ9WHqBsfgnl?Gw;zQ7xkrErF z@)ok*4!CqeyBfuzKGQXG}^Jd6`q zhyPEk0x3>xVJSWSr=gHuF-*fScm~CeyLat+j7VSJAaK8(!Km*;&$tEXg2=~aN^YromjN$;>=IrFatf(a({XpI=%@iv%wbuG~+0!|0NKY?yJ;; zFOx>OVkzqK+@kutPXEMmHWIr(XFc_y$zNR8+qOTf_cfRZ25wD`>F!9 z(tnS9`-(N2$NxLswxY92n+t30D?rhB2gFuYh5V}k3zg8O)xS$(%81%lC?i_%J#gyY z2T@Ofx_>#VSp9}nBh1ErYL{}R>tl@%R5r*SW!{YFZ3@`HNGYmR^xAQU0pz{F+G=H ze=Nq)R5ar02K$0JZcW972$)P z%UmLa!G%K-cirzW=)!A&4S25A>xmjam`|=LkqPFvYcdLcgn_C!D0@=umDrQvW^Mzk z;U^Hc{U#jLNaJVIw>CYAvh9vB{*4Pw#$U{uwFPbe1M79af>n?b8`{WE)c)Vh%hq-n z&hg-lLd0o*C|OZbCZ;Z4Vxi}Os9ztqqBEcvbrfR$ytX|2J9zX&@E^J&NLs#-0xG||6d@klCHYH35B@W zARZ)L!M~|WPJ^&1i-R%y*ko)-f~73SpXjXn+oB&zpE-f0QP=aWqRlZ1e5n}2bJ?Fy?&y-A^6Njyat#_;uN2bm&PsVUlwHfi| zs)e$)dKObf2LU<%nG+BRSbkITybcN z$IjZEr!c^CaGogYI)K|qy+Ff=4lsJ-ii0XQn$XT_f(FN#k+Ln#$UxZ_XVY{e2c<&H zHk)pbG17>Qm%AQJVVC$G)^Qr-Hq+}p1DkK^@iu>RIYF}}YnVChQO|)Bjd*7wjyV!+ ze9&eKW+O7bF%`J&4LRnD`tJ1 zgc?2z2%N;j){O<}$(qG!7x;!b8L+|oTcwy8_?g-5@z9|-Syt5!2vKp0vz=DuY!}=| z)y|F!G*NXU4_*U$fmt3(3kMOGO|v&A>Hoh#IZkfQ{~oB9107C*dc5aGonc2#u5EVB zW8|Yv-g`8>*0D~6HT4)sQ^c2Koswg$PBBL`Wx5k0p7x3?w)y4mgZGQ>^`sE zR}kHQfyV!(MghX`b+H+Rbp5ZI2dtV2t(=*^Hx%?PLIqqStQ62TT8?`A;TQ6BJwR6#)To*&&8=c|i z!+tGrl6tuUHf*W(x~?{n=;EDUn(IWzxPYV3d~IF#a5sooBX-UEF4nN_Kw9u97C29* zG&~pQqSe7y07Jyn{Q1DxdJ#yQ!aS^APCCNne^!N;NLST;8AWtH+j$LTzEx|%9`F;a z1PQCMzY68Z3k-arX7r>$j6AsG?P8(#F+Q#=(2QP?r~}3Vt)2ogp2RRx96nYwurqdf z7ivatvcW2WF@<79TXlxy?Wwg@tugx8aLnO7rZwb1GsID+g(zYzr+l>#A!@j0^d&Q| z79&N*9C!-#1BQ{b&@mQc7v}Pw5BO%3cBj_bo3y(Azum2y@IH(NvkX)m`dlFGme z#B2~L2 z9Es0r4z`rt%!CWGXAOd-xY)pcvN{-LpF@xJt2m0@e1%NSw~*qB~>k`mdxsH;)xNhq1B2V6yzxaQZ2PXADZP`?ljc4_OGJE9r&NOz6VP^3~ z9Wn{mzfX8LbX(j8x)hmnFY@*n0WQu|)r*0V0N#dApiTSfQH0Lv_|5prel4V~8r;TD z%%?9Z4&zxseIHiPXwsrN6N{!VHq97K6$57@o|fFyjUnb`8b8vNrfL2yXgfD4u!j`4 zA~R~gG&FD=j5K2`Ir`L!WgOMU!xBBohJFH5Gm2<((OY9(;Hwz{=Wb8qzagp{Pc?r* zi3fV)uT=UGHXDDV(l6w0Aky+r(pP&$rj9WIR{Rq|T$Na;uu|2aY^;RSRiqT?9yTmP zejM}Yae;*q99xA5MXWIk`SA3`M++iwPqWNF31;Fe9|G6muSGc_;3&2X83SMlJFK(7 z_D=@!jR=f`&|;;~nXIQLoO9yBforHD4I*w&tJ+gg8`Y+grD-4~qXX~$kCp;u-v7x^ z-E>qgh_>XP0geL?H|7_Yl$6$^X5GIK!mD_Cv_3d_0=(2z;{|Y2U#*NJH1L_%?7wMb z-p}ZS($qlv606a5GhwfhxD70&Gb zgYGsZJ@0{PtQ*^}7@AA;tnB{{guaw9N=acG6!68&*{G4Cmn_2z;Kfu#ofcF6b8Mm? z-ZGVR$05!Vh&3AyO_q`#4ljKmLOHO1)I$BEo~h-5`fJ~lR0`zQMhGEXs7C^mEuO~lgLV8<0Zrr(`sU@ zpzv#=`Nm3O4TxryRVc(3ql~lNQV(-R*x9ztA3*ggtnY$$>CG#aZ55g$RUm$RzpJc- zu0+?`R$mVh_RVL-`f6g0Ix}~Bs$6A`zbr3Y2V3}XHkLYiHOj_3^od&Xur-Jkby#FD zCh)TS7Tl1Hb18By70>l+Q1Y(@@g+pbN~8ym@$@*IsUD|2@s;?Do4(UH54s7?sHf+u z1ibMP5zhG#^RwhM8$P2*#<=y3SC%XdPbyx>1<7GmLp@!JjSw!%U`2Zd!3J=gydDP* zqg%4O_`{?Fi%GEP)qTq%{u;qgi3#J|FF1@bQvMGeihhBk(GFvj!~eTT!{|j3IN4H@ zSA^`melO#DiB!7ZtwWr2KBm!Wo4}00PJ9L(_*?)%a6JglH7~>^E|xk53y$H5HSob1 z_9{;Q1_)B@%^7tzXF~ZIHK)t#so2Ha={!N8>)mx5$)Y{R7Q6@r<6;p1B_MGniLw4o zD8%ay|E0Lbs)MAjPPk%y*si6*;rsaULW9J3LkEa{#%5?4Tg=zCc9}^`?6B)D11p3# zo_1{eFGrbA68k_Kuk_q?4w`H@_uD}VK~lrWbkfM&N~WNLZ*wd`kd*2WvF_hy&e@iV z6K+-cDypmp>0(Skr#2gkYcXWrfC}+e1$?bX73k8sLPAu9kGHiey8=NdYrf^`>Nmmi zbe^4R@%`I@<4TG!+OIT?D+=WfbLRpyE-GQ&H`NIh`^zo6ICjbyaSSODU! z)ePF#Yqk*H&eD>G7sPgC$S$yL7iS|wT0Kbui9ReiTrVH>w0hDDc)&~+O>GOYLh2r4 zAz4hpb}a>U7gJqh5m>P}_KVg1yG*y4S+JX;jrFzt=dHKed|hphH&cp}C>7U0y`XV7 zoEZqFWcB@6Q{o*}c)}8nDx6OVNAOx+Sr(f&nk8BXpZSWJo_sB8;r#tNT$C{vtO!TRfhE9;A zE_O!#saSPMD223`~FB-wu5h!jU8%1OEzU&dB;e&|ItkNQhSPyr5j{(*EwoBsf*YE{scgv+9F1GE&+7<|!Ic&nQIVwuc3^<8 zv9OjNv6hVIZF1^yoj|C5*mxhG;U=LPDn0(Vh^5NQEhXjAhh}hmw3K1x4N`pGjJkV} zlk<52?twbXn)8v}M4wbqvN&xOaa!2JJ~dZKil=Tld}6EwaT03}5z%QiUk$Ezs20S5 zs@;DGmVH_~ybFP0I@rZ1rypLr(cw6D7V-WaWM|!gzpM zq6G`VC|#`ueniKo8HY*o7L->ZJsSUNP7AY6)UOMpjH}R!BB4<}DK!7vFrjQ~K?Bmz zR?7a*95s3LzYhh3L*+Ar3SACet;I>2Z+sN;n=s<*2afsmu6ALZXQ{5`pFC>8{|con zOLdH5RLWTuf)FmXtlI6)i7x&R2pr?6n zSLcUG*BX>0GicbPHV;Z18E}m~6wg?+ zNSYMAYGEa~+)TVC-$4@0_O52nYs$lHr0ya#C)ADX1r^2llRc#3QH-v{plCIGI7cjw z*4T&8{T&cjs5{B9*pb1KVl7D6p9KjmcDNJMVn?zx*9YS?3{|B%7#>-Z7rYk`B2ArC zw&vheR;5Eb+NZ<63r;=$TS0wuv_QvFbJlh3hwwL%Dzqm3Vp!piOEXead8NcB-4A2% zs6f&qfgHr_!z#!j2P{ij<{j6%;`)~2wu^@heBxt1aczg*EtT6vD$~@pDr0&S%q$beZKzg-!&RJOaEr1=tfCll$=W6a5^36| z|7u#a=}gP?iM3IoAwOB}|FULoxvpKumUgv|)TEmSWklUPwwPtt7phUh9YyyE?y$&x zg1Q!4ElmtU>^OKP_DowMB|Qc6(%&AZ_tUh zP!9;K!Cqy4e0|$gVw^F&cjBI$o*E+tqGtje2`M4qo@Vzw`C&HUpf~ZlKZk~FFS3bo zNCFzNg#DQIJY*|Ln8q>;*<;i(ma3%~8L>MNDMlnUtlKW4OT9(9s<(ESXWw9` zhH`7Dx42c2-lEFfTXZ+CYtE7CEu7*<^%kd#Z{}B8z10))5E1U7Yp93#zSdha0mJZ-91VU+}%%Z4FPDBW|q7e-f>uBV6k(bp+zq5pA)< z$&4*24nAe>xiK{d{b>)bqx;d*sKP(xqFd@;aNvW3LFVxr%R3B)k}X;Iv3GRQk&@J> zcqdp9;kULOZz>B%Je=te&kf{ICx=!{^emxxZ8i17+1CE)zDfT10i_Y`r+->-B!XCt zO_HQL;3x`vIFV`4^v}TW7hJ|OaA2H+2Z+-0fKe7%WYh$2UBP%3stwpN;OmhiDB|YZ ztY8)KIU&|ha%wz?QQbUWY@uqBsC&a06uop?!xLRMM5*?))#kLDJH{PCue>j4lX$Or z@y%TvR1HIBtohW_}VpaPMLZ6t?8M(#IcX`h>ua^qiv|#{O*=++NLwr+C|hpwpnVEZ|$bt!)g;- ztYt*ha2CYY5U;IQ{(n($v$Vi*^nKuGkcQ{Y|J+(y+hR8} zVizZmQFgy16lHfGmXC%P$fS?Riy*!lEzrJG%Wr=hUNA$qWrtf#w~v^{Pb{KLuL5!y z`20{W#iM<5=&hbZXTq*ZwEr)74m1E8PoSipOSQmWFjCLF-BQ}aT2{m@4jrQ0;{C4R z_X7B|t=XwM-8qWZ1YZI%mSCzFFH;L&X@=OSmH1x;Oo^$)DkbXf!njD$-MER6oe)hE zw~iCq*Ps&`O7jDs1Jb3+3H87cglaMT$H?l{G&Av~G@aop#nm`Lko4oDsx6o@`0Vs` z^P|0)+KEo)Uwb=hTDh5fd!GrESpRX5l9Bjx0DPBru^T6#nbKXQTgnc^Z%%7aO5<{yeY`g^texBfVsX5cZ%Ik?P5lu_)ZRnN0 zh)GTJg{wBT#i4bkx=9=~JMZhKW;ahox=HYqq2KHs8;Lh4VfC6U|x z8oq&$wz`4PQqyv~XDfUIIe<9mcF#)(5gpGc<8ckq+QD~|!%*>-)jf<$<0LS>Lv6t> zG|=iZk)5qLQiWf3jF%T;EjzA-Uho~X6+g{igx(7_(qid<7aY1j&{vrT7UL2>4Q+hy zWjsxbWLe!4aMGpmEb>Av@xkDEeET9>XIi3_URg5t+~F~%pq90;VpUhku#4AV;(U&Y zL9sOHPeQTo0|*KlNn)Hp zF*Fq=td3*~-!Zl2f)*rmbsv(PlAv&~rP!oD23ukEcMd*+8lH5i3acoS>8(xDZ+(K~ zE0Si~AOxG6r23ay+|s|?I_}@6;EeirI^-cD+@;UQgN<~*h)d&4({|_bcGVc_4Omuj zOT%*@-s!7balYaFSj_GLw3lSqhT(JQA)40I3tO2=1|Vk&v14+;w-`0Ft4?lSJ@ZN%n>w+*qO6o zerv7QTAYzYIddv!?OHqIKBp%0G$=ubH>f;=r8=Ctp{2tq8`{~fl2}jOJMe-pU~s1M zAxhpWH1*duUd9BoikK35XjxOni%3wIbTP%0OCl~}dK6I@XTmiGG#;0I3 zTtk~YI{MIpE6p|sx`$Uo#((P~giO11RtO=VG}=}{7CMP)dRpidF2-jd!OzLg7XZ;*h- zHRiVm+EttfHuw7)6q@w!sVlyM&w@sh7=BECuh+(Z;2^chhN3aitU8$0rY}Au$J(WS z#@Zy!Ne2hZDdz5jW%O$;JwC7*Ni@EOA)UYV)%mxd*3Z?iz>O*aA2wfz`m=mP@N>2c zP;&6kF6+KQ9WA&HjD~Mf?2zqJN2MLn4FaU`as1fX`Vn*8chK;E58`b$;tpdCjk4lD zZBD*tV)##L@)lV2K4uI4fEvLcK^lG{13!b{PYy(}{~clDs1HZ4bPP_541E$j5Z84) z=C;C`e+4bpze4UR$A;p{e+{tqT#f=?_u4n4aqw+6YZo}nRF5i~B7j^e!gO;G$zGF7f+xqWUP}RJS8KdOXp?^N9a&PpY-n@mU*P zoRdp|ew}r^LKkCQL~B7^;(gXUoI$ltcA;7o8AN-fd&HWwo{0TwHhuXV;$K}wp{#UKHwDoVx_G9~b+i0jR~K`c zzuKtDNfaM;8kdzQ@|a%Gjmp1r=rh^z?>#7p6(u!c7=2*`nSPd|yMXDP11Z%@yAaLo zO{%N96J5{2El4B%s!1gMn>m9JmPKU5x9MUg;8xXOoFXrS7&YMa6<(;WKlZ_5x$DgCEE^#qC zeleBG?{QtDKb5y*AnW3FbR0%fI&nf1iE}?^bko3^oDN}eZq2>{E-{V=+FfHw>2UX& z9FOQSxhJY^P9)AvY_1Il@gqh9QpftGy?m)IaRf$P;@|U#KE@XAhW>i(<60UAH+qRb z;w%dN4``a&zj=H-nM0!|dF7a^+(O>!zeVXUdk36*Z%_7c&VYCVF95C;b z#jXt5Cqqolc?fYGE+IFQd?bAe>B7gYnM6OEL;RF5}nN*aordy+j(Sc0bdti zp<%jcKa}+MI*2pUN#z9YrcaoD>j_ge=OUtA1{0mom+093l&}FLx#W%k9a~ zIG($)gQ(pd(f1kR`)Ufh2S!qc2&Pi`o@^RbBZiXB5YEu^nN*(EgY10CS@|sGSQyi6 z&rIs+?X(<<-2;eD;dUJBLlqJi61{*&z>5r`g2c z(uc|`tI5I2zGP@UoBM&y-P?yaH48}kdOwL$&L@P0!a!7n(JBn+`-jQdYuuNWtW?J3e7MZiYUa@b@^&p7W$95~WV*qDORVNG z{H2#HY-TrQJTU*wr%#Gq<^+_+{zrq8yESJjT*upN}uzbra zU@DgzTvY3;SwzRN&AHSCVX+%SNf(duG8{&viQ?~xG&0ZTYBz8K%es;2@42lmzO$91 zgK#_M_LcA*axRzu;%0n2hT3{-FQS76P~Gi$MBn3%m=5=}(MwCfuP?D<=l>;%rz%fX z4{1hm-A`4I7dD}RlO)oLPgPIBp9r=w`n?;;vPC>2tqs-75ebYI6_VxglaVXOW_c0>~trLwbyNs=@6B`)Wr;{waUTopm4oo{$ zJwk2}yIANdqE=ia?qZbChh$sCK}Mb0pQ^r6ZW9kMvH{%y^cbT{Mp0(Ai^ti0EeE<= zJi)RIXx=Gzizm5B=P6lOJPU{i5RUX#aa@@}5=U!y;V+p|qQXf25bdD&j*)c3g?67f z&FKB4Q`M7zeqvNoa;kcccE9+AQI3~dc)$3K(ftEXRsSU)5Wh3(n18CeSbI){ zA`$RB?L`qUsVhF3PZeJjNsJy~bX0g)^AEJ*cI~LhW%L%cNqb4)@7co2xoG_maZD65 zy0VmHZwN1=hldk-N0g{~EPGe@!VJTJw`-q>QbyN7l~6gOrz}|oBRBf@AY|Pc?W?Bt zek!Us(4Gs){imWA@|h&&_f)7iYrd3;jEa+@FQZdDfKQ8lGQ1AT_wmsCS@f5XicTG9 z%>FJ0ODA$sgITdoGy$!H(S1HLD&%lB(-xx}A6Uwfj3%8$NXlwP)3YcvDaSCHfRX>K zrpfV){!An*HhGrB2~LujG~-nDOInPaDm9=tu;>mEx|}6laQ_gV&(?`JIa}I*UdN-` z5RqV^8}RAO5RoY7vg|j!OBo{C$obNinS%Zia~l67O`mFuHqC2|9!6g+PZL3dun zs3D$EC%Ku?y^MOuD+z@~F-Ox|UKbU2U%7`>cd~4tyoC`yHGrAH@-{{nVB0uE43)Pt z8po|4ChuTGr};y~aCs*q$$1(n?_xBM-B-&4>@TbmHAz0i!jtTxRz4aP%vthrmUVWJ z(JAt&DA`Q;0?P)oY^i*Qk;Lww z*UAj%qEY^v(eE7SI{7Oj<#2=iU216gu`D5e5EscmqO5EogiiaLt!$NlTQaQwL&OzQ zYAwR;65oVERYiKG)ETMX-XZa`UdWWgt0X>=1X3;BDdV-4p|?vWYPvYp=b+HVA3e`^ z;K4TCDRuE`<XjYH4N}}yH`PF2GMidli=U&n9d-YltDChhK9@Xa+ z`wprpqkjZ_YTkc9y=Zn*J!v9muog=wf=Y z3v_EaNxzvx^y_kx&hJX)iJgfKPD_N&w2@SHjsXpeV=R8_EMk3CLo{P<3Y6YWO$R+T zicCDl^!kY;?K&z8{LpMl>GMg%xxh{Imon0f9ZB^3ghJ@N#PkQI{Sr#Rxq|85?1>&- z{KdHpFHi3ZfohX~{I_URZVxiCHiwdym0AVq$O**xwM+LjUF<6(e&vD2MUbPK$Re9J6L$4uqQcNp<5A>n-R8D9^QTHA? z5Y;57{T;-Ps5v)}ak#TM+__%Te4$62u8Vr+EMr=pwgLK=GJk@x31u29QYTf&olRdwi!jE^qzLq`rRq_yh*-WdMe$G0_K;5Ev#-;ILwa2~Xm2#YEv^9d2zUP@IJ}r# zM&+&3Uqg9k648%){E^@hYk82y_oQ$iorU1S;$L(Tx3{HsM97z_fGySGJ=`=AN%{H&$NqcTK*job@)fKf-UXHv zw{nGX>4#wYz3ybX+fbqc$?PodFaIuEiW%u-dNAu~XHhx6nrJz@QMK;FFx15pS!8Et z+GjbsxMS4!p#RO^HvBj62Zp_*`g}e)`=yl9GK0-krc(dC)|Qs0Wz1;@XPw2jgPPL1 zi`}zz47dL&2a7W)qtTh@!xk>*OiUgnb1}kb@ezZ%hw1WkHPIh=Rr-XNqq&prbGpSl zGhMlz#eY1y>@0T7^yPX)M&f(IBievQW_;fc-EwOi8+}C2?M?J-P+c6aBzj}w7m4E= zU*IfeS!Z0{Wy&dn9OCRBrUk6QWDD1mA;oWh{Pa+E<-Nk7AoM97<-2SF(E8X=E+%#^O~M(|XsQoLdQ^mUaqlP> zMu5Y4F@iW)xfRsSy}Po@PLvH^i0To_B)q-a&eajG}FTg?V^y8qv zx{u^gR^CCoi(^lKPGnlEe+g;w^q(yqEJ~z`ksL7z@tr&c5J0>KX-l zOC|xERwD%y{`lI2hJss5}#VL0_N`4 zR)fB;he1cmOF%DlZYL_Q2QAi!{-)gy+Rt`7>Td6KFX+BWw0!+Bfar&99}UC7mTojC zOctlwAM6;JT9qkJcdTvvp%c;0T$bfjUY+$c2k|^i*Jv++*4f^I>1VjJ{=gl9Li_~$ zUZMj0D+hfJdR5jJIF?jHuZ4z5)tQIZ$i%#HIoMT-jp>C$=}cg9D|D_x;)CRN_zY~P zg}zA6&eO#3TvQWB#PMMgCj^!GgiMh;qgGTE50PpF77R$^9R6Z z8MY}@LMh52%(2i%kj03z7%4L`VreUMycuwm8Y?h}c;&(3T@Ml#y(Q_`!W&UXHko(Gk&W{8C%4*uzNWDOdc;Xq~X@Bom$3 zrsLDj59j5I8yST+I==6mD{{p%4A(ghv?cThqa)5i*-t>#QLZZPpZzRkNfsLGCCwrW z^=xwlntd&_JmE#4Q5JfV(PRsqVzfY^u%kNRT3fDIV+m&@ypWnJHd*L;$T|vqUx9xc z9S0!mDDJjUPQrd$o_Nwiof4kKvC``nx`5Fs3%$YUS4N*n-_Y0c^2Fa33O8211(<}l zsTjfBzxm>43+2olXv-Jzc$Z7PJtO(Xcpl888FN+jr+Ee9PfPZ2?{9$i)5}z`UTm(G zqEKw_N@$}vQbuTNcZGW4Eo-6J!)TqD9A;?HcSKO_T>4F3p_tETowyhsQzU-3P<5A| z@`^;8Dy8{$=b!Qn(Sgws`B4e>#G>3n)3SfhD;8ZW^hmN4C1Q|;o^}(8XcoD{1glxN zQS7PI@=HX>Lg(~|&-aN-t%@thrsS83%Pf?TmYrX&MliBg-J<|#FUv0E)uS_>@HkM% z_tT!mw#C^~p}iHp{LUiXLiZ-+hD8@q%TP_OE@HV7is`c|^1F!j7V0#!BEPG+%0dt4 z4ao0~^KzAoVVwxQY@ze|NYP!qrw|9zU7TjLLtM~x7&MpS=lL{$MwCy;4_ArP7JMju zLVhoCVQ&&{6Lb1c&+j94Sg3EC`T2dtUPe2_{$5M-`-yukw7zC({s3XnD|HxsCUa^2 zAkk={f<9~VhlsBksYy9f`1+D2p-b{dhDAt0$K-Gg1R_lyLMT)g$r&453kC zEu(c}6QfoANw!g(+h%M2C~eEV*HYb3T~KhYILK&+WAOZvf;Hkb3ylLhPkdn2qtJrlw1wza6%?b!QZN)~ zMFBqG<9|mIHe~fIs8=8?jwGxu><2iLRgXBIoi;cMy~St_%QiYb8#V&6#TNQ=*hHX! zswe2y91=GxB)`PxTp^J@j=W%j!b%zv_l{>Ix{O`z42c&Rg^vhx>;=vS@jkG!3>*C(&^TT|l*6mVWJWv0p+O%PTrHlNOIEgtq_N)=Tq|C+(9wb6UjTjcl<@qj zzY4Asj`<2*TIDRv-Xf+m+9pzGlo#GALKe!J(LD^f$AY7)OXF`9bC)Wkw`2||yiKgIP|mE<_`PC3 zqaETu!-o~#E`GPrTNz^t_X)=`Rj*6Uw8A^Z>n@$(9j?Z6*% zTvZr8DAul2aMYX&3-1@b0}8!Adu!o?V!MSh=3GasfZ{g$CCSr%^HS=)c z(_%AyY6hdf&VH)!S&@3KLSx3hSooZnZlRg(cMD$-zgeiM@ArkTgvIQ&N_A7uKMP;y zkDtlRj&!}~4RQE9CA%=aZ4q7;ov+XpzQUr9#BaQwY!lA1ilR@&M^rcv_PRXX^PAmFWyvk^Y_^x(t(f1;J?gb>=A<}AA7X2g+GEzh6SMi8K zVpVad=vOgjJ!vZ0Z(x+I97cx5Hn437z_M7N>VYFs%M$d>B`(F&rc~P?8 z#gZ_?b>dcWdC~8pfzc7M(z`6>KjQKzRUyaav=|j~C(E9Zm!|C~60+Auk{uDpdZ(mn zax$ZhVn~G)cKMnmqxI1)|FlqtPK4gSh!b^0#?Uw3@{vo(%sTOS$#q3``ROJ?8_~jB zieltxMn~k)aZ<#{{7Xr8M1I9+HlqtgVHL?P-J)c#bs)5h(S_o!^cPZN{Mn|uK&W`jbAbQ*%$&gh6^H6~YAS-mG(vqm9k&VlB9M*pn2@CL32%|*~$#psA5{7*(> zZY0$sj-!K?K{ba_Bs7DOT1vah!Ag@SY*!gQVSCEmEZZTj=~-v=Y&Cs*$;TpA!q{r| zlCLsUE_%tgTcK|vs;p_hg+klmcyi`iqnE^;g^+kF{c4~}3zg5=WAv8eZX+4lJYe*b zvl*$~=&Z5g#Rf z0@+59`mj7sT9c_AY*dRyj5xln5qgv+gXZNCS8+-9+c{ZaX;?puI#z^~}Bs;>p!ZEFqKSp+B8F{G4 z508(r$l-eN7|Wi#SD_EET|d*z_m=FRf|2*BdO!bzhn)NP{fjE82whqxYh({wqEk#av>&bMSV zN@mDwEJW^SNXH|n7Z%F>44F?5?th#*y?90|_boDVKSTPIrkpoqE;RiXqERxVRsYVA zYgx8lbc-o*&XD&pQZr_zr5RQOYNmYBQmu$xR@{PS0L_xGShCsrgGIAjxtJs0wq!l* zCC)jmWOL=xN2y8cMM~U*MRQxp=E?0!hQGRo*ygno&X@bGiixfg=loW(1!tg~$1E4R z6bs~jMk@IWG6M zi{xob^C1x|UL=hp)Ckr3v#s5vYW-q4m}RQ49jz5{PPsrdND)WRlG!YvCuuvJ;h69KMNgk z-Cn#*)>!D4xC6!E<;}5OEX-oRoX$d(M1QL!u8?b4rjocqp8gl-!a0BH1H~&^<*-FY zIb0!sQ=0O%!H+_-(+gaWbGV}Q{cnZr!NT=o8&<>>tx~!|PPb%x|3MbLuCI{$EzLFm zpjq>x%G2O@@(_-|$1vDd$T=)jJ$k15Wmd(b+Vg0|`4*~?uN1G8w_4~k{mtS)GrG+A zW^tW7Xvr><9~7@@Mitrz#jE8b^xt%#UejzJ6rU@fv(N~jHLY5|RvxotTVhTYuWcne zPoA`7_u*b~-Wjqljw%noVVyZoc6*7CYT)_MT7kTh&`9-?C(xkgb!S1Hr#a#s#fZFOWZ3s)wcSy#RY+ z9G&}!{?eQ1PeX~e_Y$369HAOMylP#x;Ulbn;@HIxiXTR0Rn3Oa#gdZjqVK$x3dFHl z9QrTdNqmkFp_(WvYbo!WMCH9*i9X0Qr5}|Q|DN_#cI3Cvt(8=sHx%uc;sgUl@9ISy zMVDt&aR2H_oP(_M_(UpSibGaS6d)9v=)w6|T}u2nXA@mrnuMPls@z1E^OLC7hg|EC z9MS|Q3|1B!RpOR1i=kwslDRwZ6Y&4Je6%x}rrh9z^?{Vd^hrrcF`{!K)w-YaaZMYt zv$T>jI+t}O3`Jw1X#MU-cnX-b`jG<~}wMj{M!_DL1WI9Rj zhK?ro3?#=Nc2S&`)~m*-R4W>tMb2edsFYrg7&S4V4;lKsmJI#cmN=@ca?_M~CVzrK zI^pTWkDo#Gi&;b$6}9lsW$9AxAT=fqBP*JCm75oi2CA|eCPz4F*`rDIS2u-K%Z8#k z$;?r~ZOx(#^%+j?6^Clk$1FszDM@?-ga2R#3vA4{bJ|<;-x*1! zmA(onm#5+%1IRsnMPU=`W@^y6z8l$8d|C%FMcdNau!Z@`LU>UHDP5mR^jV%ZlwQnr zZlA3;Eh7opv_epy;ph1!G{67gF+rKr#9&@zPFqr?L-f18B;CrxR?RF*yC%M3k1F&p z!aNRX8Ho%rH7}J|-E1sX)|}0){HlT`+c{Vn?P3~-9^q5yn`aQ8q%mhmsa9n*`HJX= zqXCIOvfNNdyvt!lRLS&MxVMYcPZZSvJsC^ncpiqdDJ(=h~W;c9BdRLT@s#-Xw zk0nFYdYjmeksMi!Z{vikwM^-gP9zk%9c$t}1RCkYCCFBc)qU@!kmmo@*SEkoRb>Cq z+*gvDG|jz9o2Gd*rKJ!kkI)t#ic~0+N99oht!$;Bg`!r$H0eXTqHDD7wF-Z! zfV*f}?E+i7f=dO&uK1{nx)nsb;A$0CtLWNYSpR2E3LpRL@AvN~{oa!^XU?2CbLMfA znVaaK#1QsBMBhY5^60F^+UeTt9_2*wVH}u$j_bxS`6$LDGy10(jhp`kgF|-xG&!32 z=>Ss{ort5HXb?p)8W}gCCvty+Kg}D}khYHLiPAsCC_nFiOa7^7lztMT{eM#Q^kdzZ ze}ms6DujJDakx>-<(LsofG{=pp%KhXCWVU>{*Wk)|IdU7~Bj z31IyicDZ+n89;Z7Y+qcDSX|IU+HoUmHCeIdGtw)%)?FfffZvclRNaTi9QyE>LmwVw z*b00v9T0!vNdvsJY8r)aS%9;hG)`DU`{00mG1^Cy#0`knzK2i;foIco3_9YbAw&pVJ5%;eB z5$Fp65e{J_W~qQrEOKxLNtf^C`iNpVLxO!|gDVZ*umc=@cz~mie6});Yl8wPIf%F& z@i1aL;&DJPZ6hV=3%Cef>I`sw^r^YGaRcJ0Rh!|ISu}NT;b(B}X1MiNoR2=@ev0!+ z72}@e{D7}>*?{kJ$w6t@x{tYBc=H8U1jz9v5-a#L7IT_BV9DYG(&uqg;Y)h9HG$P& z7H^QwCV06Lx}a;~L5p$+gc=LvEV3l2$-**^r%)ltbL0tY5o@j~1MzD4@I z_X|FoZ(cIMUq+>r>v2%{1;3ddop2e8yg=B7rYjhX0)%!t9AaaYiEx6NObpU0_;IL< zuk#3%LivS-wxK6;)KIY8JnE4`lp!Gvr$$v8+~hK zwP2&H7#mGmBm$oqVZ)9WqQO!33ohtcJA_m;sGoc^FZerQpR{qx0bsEYnA)WeQ@TM2 zodzAxOVc4UY}|yxL~!GX4k(GoMoQ@jO(X3wam#b_b z$xNw4ue3^=!3W*a;BweU%i3m?SS7L6g>zBUa>ZWhhtbKTOS)oTErz%izI9@sG%d9f z_@xlxnP5;B-_5hJp$(7H^k+OBni=Esp88i4!uGKYz&(%%$ z&5$~|PHQ3Hv6LBnK~VS5=tYpND}A}tCFQ$UNfC~H<6Dfj7ei}(BCbH&%g}0t`*uyU zv;u9fkv=Z!kVC>shiLirKH*PTMmM0zP0ls53}uafg9s9u4S5 z7LL^S4P+`8z)%uXGdC6vdA9r}fJ^FUiIrTn0GqfHuk8wBa z+c4Kb%+;=&?0!Md>U027-&%P@->GXXJ)!T`olW?&emmBFJIH^fKMeAs;W+iLfw_bp zO9?s+0o~{{uc1cwbSnGMmUSM5TkV@*2vIn%35R@l+bB7V4v%nbw@^PfXl>S?0(Cot z(^&jzOg)R73&^>EoL+J2Tt7IU)jNVUj&N)f6T}(pUAoBRgTiIZK>7I)hL#Y z@$67$_HDYN`yHG&iE!ofUo!YW-7A1|CZ90$=<>@x1^P#o@z+lL3h-dg4}iZfI$?0| zV4Y?FI+WAcuWUfnRjV4u!SlH~#2>GU+jsd9ywHmg9U`o9K>WJUk( zxFxcWk6*9`uzJ}#S;6s3;a;0sDM$FmX`AF^{YuYWvO~Wyb*r4Mugj^E{rddOWO9YF zVYmiH$yPZV%zX}!oxbab17MwUuKq3aD{?_lKc(<>xkP`T`ljsX8*lgkk}WVe^po1$ zWKy9&;y44G55387-V{3|&$cY(BAv^Z!@;*Jv~%t^vH%6J3Ab&HXe`21_~{c!tmMed(=t8nb!Jx>`t`GrQ3^AgZ3tT)SSG@d)r;>)42r zK6bCMOMlz)=Z&3u|BM$Q?;6P4r$0UAO)!F0#?Q9~VOZ!VtuAWn*IQwr@bfEtI#WA& zFDt^EpiWtUZ>A&@6W0Md)LD;6FtO<;$>irr#t9MvMQNr%{lv5}rU-9yCj)2J{7jRL zV}aZ&KAAVu#3rgQKyzW<%_eFXm{M#q7z*vHOf8TX&Jnlpr|obK%rG^6jj5F%P__b& zf>Er6-;>Bv*+|#Q{~nHe4d?@~N}y8vqB_W2Hts=_!?3DsrzzR+#OP;Cz2cPQ-H@ zQKoWiDr(`0%^efrHOH)&T*JvVH^mefZpm8`la4K&In>@eifdwWhUopp&&T8=?dNmG zoR8^5CwKDCE&d*8c37m7e`w($Ly6(;HN@P?KQUc22LpyciqTwQxY=ws7h~os!{T{a z=8)mm;wferjGZF%-R~#m0nL^SO@^9M`1}LL#|5AwVdV419@r(h)EqIiJ6D@abkpYD zXf!8 zA0Intcs14)8=&9L9~MjHzdP9&dLnB?tO7IYJ^E^>Y8GG31zA{CV~A1VzP0mW6*)U; zUTh07!uiMn!;#@@A;UIn8;pq$TPtM;H{7~D*1@qQS0yf3wt^xyue0W>$7*ba(EE(k zV8;q8+HH8RK9NDr!R;+t9c+ zjDLkY>C3SAe3l}3yF{0Y4OWn7d>M+jP?$Q-AfKx zas@-t+m_?V=_d=v{L@k*^b}vQWXoU7rOGMf=gMtstcnQ=NGCo+PR=-`Kpx20Z|av0 zSc{b+`HPfQ%4ud|keuf31RwZ?kyA1(EhJ+~G8ojbV!(736_v$mdV#bEMj1A`(O4BTAk&r$&UX92{Ryx%h0fuMQ05c0ERl*7%m?->x z1?Ue7>;R@8lCxEX%T6c)p*iWdsGah>u>rM9Uf~OQ#J7{3~f9cMO@JPz0}6DvE&NoQgG(%k#C%RPHi!~U;4S)D+k}n6|8XP zD{u&=$dT&~8T#a6V~n*&E>4WM_RDuK_gY)PIQTFVZXYLD2jn|$oosCqp7PBAWc&cs zW`?y@U^`9PiE9cQ9~0sJuoY7WWocTWH5E99H}XtHF3|%F9-VF>O|tRWW`%?Gzx}H&2acp{1$u)3gK1ApehPFDca6 zy5fDv)o5R59ORFUyhjflXjW=u%}R}|S*ek=JvFk%rA8J3)aYIT_rKJ*4_cZUpMjQ6 zHcpy&&N?Wt4T)3;Ii0pao-IceZU83bK|VIC4ZLN5MTd{uZyzxExP4i&Oof+$PRHSP zke@PXku9BP(@!QgM-Dbe4mQMg%I=^uc{V0y@-RvUd7sg#ZnOD~zgfiaZ~)X9e*vrN z2*2L?8=J!EvfKD<<1LHYY%Ro)&}nmU&9KgCA&;*86BuX9hBc2dYy37_Ke;;pxXmwr z32UT5p6yJG@XM^1K;~7rtt&E)T=b2tSGWX~>=VvT{kM%82Yu^|!3x8r6}q@V{%SF- z1Na4HN?Z-k?g_Jv;}$vNvW-QHM#Qy{CzgVTgxa#qxMbs;)MAi71M-9XIB<18G+!Xj z!Mo<-vJ7H~8c$BFj;k<+JX_;h46EnW#|7l~R^Fp;G0aVVIIc-Q8x9E%3g5tzEjSu$~O z3(CHaYcjq)kHkA*RVV=(5GSf9$UF?dGRj7p0fFtQ96-%g`rzw!k1=HYWY*;PVlZVY zS%Icd`Mx~p_xcY&m9z2lEv8N(rbL?3P*&KULLJO%~$ng15E8`=^*H%K48Flc~ zfEMFhfi>|>gqRU?A1v`Q8yWd1Tf zS$u11GoUnUXS`1=THeO9o*HkhFmCk3TYci=;4Ytd2dr=$vR8?>M)-H8?T+7PtoII> z+Kqwq-^N!MZyo(|d=K2Jz8c?8-tqRv_ZSnB4=8@|hs<;FY>^WE{NU60USs`|FG1$T zHNj-kXWYE-jGQgEFXZiI=%`AbIVx9fU%J9VO>fyJ+V@HSm@w6DFx}@r0o&gHJ+IJS zjgkZ6qpMfj{qix`;_sJZ$0w5}c|d8jE2gwr57~>v_ytchgq@m2V)e4;>;Zu-J_Evp zl`k;PltV$dup`oH`GnHnymL#n3G@FX0oqq3tbXJAbUWoDa6(#|X_B zZpo&fuM&FJkYwfOr})0-yZco57kpz!AW2NSR0AR|Csy_5yuD~bJN@7&iD z{iXx4Zzd*-2Vhii$U$e^UlMao`Aa@dEHG8UgC=UE%Ts?yjPQLk{*zc_+BboBI^%IF8B51HO#&OmOagxNg53!Q@6;8}CSzM5;B*PBH>C<}DzXV|G^`L` z$Z2p^n7*9zs52eqo5Zvr?3T<#8`Dv!No4yV(@}LgsMsOopo$!U&12~TTgfzuY)CE= zBdM@T7TLtpBAlP^apj|)c9DhWJTxm;bmhT%SEyWhvkN{|0*6F5*2vb+y?aG#S7Y895v%M0X*($I-lf}`xqCY~W0VU#c zz)k8Cu6A9TWtXc7A|Jk67uZKyC3Hz~r>j>I#{9`uh8&+EOX_u13hd6X1n#&O1kLQj zx9?p&5a$LryMrI$j$oMhb&oHXq*l`};V}jd!r{ zZgR5)c!QhW>p$!+5!MzQb$6LkMxStZny#k)*-cGvjGG8uw-xTMBmD2C^|*UXt@Gb^ z*GQ|Ted-SOnY`1!bZ^Dhsz+D*so-ZfVpVx?ZU$q!-?V3(SEau{i>K&a4mM zu6FC_yKVUieL((j#yxt)AbFng zbOw3VcF5DozXvm3jdWw~A3ZeYnUtfR5<}~FVm8D)U^(I0f$Cb|-0tT=XX29Ygy&G61z~W#R;47eL3!t7n zLAL?!pkcsWhu}{{jdN@~o~`0rl|3*+Ix43M|7)fpG$e zRft;Cy{;rm2BCaQMfwP%Z1KvwQqY148&0fUm zhD`o-8%*KO!{r!a9?$6Ah(vgdygix-PXTATz!XhKnipBN-4c`JbqwqD zEOj^HF~swTyn*pk5c3e%BGw`9Mm!e8%Xvg9Kgg8Im<=%xaV=sU;%>xai02V`Bg!M@ zA+ANNL)?vc4Dmc7Z({OZ6RSpw37#XkIVlfWYZ2=ZcOxD{Jdeo7U@?e!h;@j&5sx9B zN94^YiI|7D7O@U7q_EWKw#VS{;Hzzq1>xyNAsb`0B2JIP zKSrw4ciEZzE;}|;!ej8DyQ6@8>AO6Pe{>kD<VBALKwFXD8>)rhr-yAY2edNWWp;%dZN#9fGFBI-fhg?N~~o3(kKzCD)CvJ+3xax9c<4kFE@NwmZ*V;I42#>GpV1JySf>J@SKVl%p51fODsWFp)&WK^T8WDRDYgRDM+Zi_izGPwAIy3VDeZjSJ;j(JP&45v% zCU-HT(@Frlm#+dmgGlDA1^U%d8vt`wGZl{(Gqfz&1b7Q_a(s6Iz0J&Y=J>WEh5;=L z9zc8;um)2t3!0G*GEvKdC$A^`EpHdlCssWR*pkW$h^o7H8I$ZR=?0us^5%7VTghLp z(?8{RF6+I{|L3xghiDGIRA$dZO@X~U9DI?i)2`a++rh8NYPX!#tj{{8Q{eWrw4S*y0EV7WKgXBUomJg1G z%LM*Lz)TQbNG5{lLNb}p1)Kt+%gGuLT~5kC>2h)#C|yn}L2^0S2$IXm9iVhM*#wfM zq!A=b$pau+N`A@b0d5D$Qt~iJmXb&KnShUiWPlt5$pHBSKiUPCm-yL$e+1D0fx8R9 zSNH2~Q;)OSq6AIZ_`T)2Ke6yi-p_CWO4_YLaNA(WE1>vhX3l0e>*5VGqpj8 zC=J55%6c*g*QeF>WH0v}TN2Jho)h{L`f{ufIQdqCQ3FBNW;F3~*+ zm*`Q)dZJHUPmVe+alc6{6^=N2$q{&L*;md6fw)Qqzv~j+Y=4>r-6zS%?my9w-N(2r zPlv9^vqAWq!E#AACy7-;``rkdsJ-i?XZS4&LDKS|r*p?2-EhmJ5#x}J5C zmXk!&=p-%Vrg7Ti9_rENCs9%BT}w^c%N{zODYWRaqZv9%lju3BBvf^ z8Pt_g>L)o1Zr@y8I=g&h`KCa1`GUY*8>g*d_IA_{quV)}p((>@BF*SXA5QNTI@*2o z4|2!mOd2qm3pU(QS-zosWA*&IAhY)8>GTiMyxZ5!+*sXlcP@O*{$BzeJ7&P+M6XHQ zmrsX@y2A3x^77p3j;9J}uhY2p_6=(S)u3YGmX15h=`2ISj6ijDWqDNTrkYX|&jYEB z0~_f`S(tHqSxv{8yXkEPttw2d9ZSM=W2)J32lTkRAa+R7TvDvH9-^*}#}3e#7zKXf zV9J=mNq?F7>+|dX^7dErHfb*&rN?QXwxx?^(eJe9yXe!gS6z~qs^P2V=tV1emF`Y8 zP^BCm&PL&5QAgE~O;4y=+pW~aFrrS;yvJx09j-lhjIN_untGg$rQKTYaau@c zYQH*8YiW^YIYAdfW3N3yAEg_#?@!R-YLy@uFTX}7(w*8juhC_6pLWwpnoRd=8&1-69X$07Z0*!`oup1* zmlE1(ARM4ssq2b?LPF*6Mh#KUEE1yDb%Rz=`=)l`B%MloI=rt_J#}^Ic}Xo4y#!=q zi7=EMG{8&C@1|LXK0Q1<*sRv|b%eXAg9`m>UBCA9pXtQlcQyh(s{2j}MbuD(Uah;T zS3^xu^iP;NuRu-k2X(23MK}k7O85}azzDUn8g7Ha)lfGRh+z;1c5-mhTPXEFib0gA zTJJ#Tx%E)tENGW~&>ULv8`P1QZ18fR)eZh-xqaXR5cetde(nA@XeG_nF26y?n+mz> z35&Jyr|76rE17t?3r^}mrJ1Md%hmb{HPoWkZ-`SDQ?<~nkLuFuPtgepTbO)}0LGL_ zaY|@7g-4=N=B2kz(M7aS8}=qVxVS}YeUp~ZR_)(!(ifC{kR{Z@podkmzFm9yEjl*! z2#cjqfm(kAn%zGZ^onkX5$lCeUks7X611*& z=p)pjE$pFL!I_3QwYCA&&*YeC;hAO~hgBXzC?`CI73S7M1cIx={%hL(iiL6s{>dla&cfughVbpu*jdlU=H9;#wCQ;#ytKVcRi4Ko=OCU^}LXebW!!F#h> zsD=yGh9Wyl2>ZZFmJlAU7Ag&kM*^*fJ{gACbzn0!lrS|#tYbBlM>&CEI$8S?tev5T zcA2h~>}Lkm9!6|K<9tKL`Jg$eDf*_iZAhLGtTk@^3thGVED0$btpC6o19U<#HeASh zQn(O%1Gox&TmyEkyw+eVqYbtaGI3_J-76{Kay1MQ9;1XSH2rCsog8A8H!z1ZG|Avm zNQ3UjK{ujG!$a`W)|{sA1$UaF;Q>_#2@qErpt~v!dogF!3n7D3r&GfllyH^0MG3`$ zECfzJm~DU;D`y|NZ3Ae4z7Jwp!hY{>6jlrwtkm{I zovenT{ysf6Od&J`EAk=Gp?&fm^?G$)aFZI^qGNqFWB`XjeV9qzW*7?_I7=x6 z%&0DmhHV}lSovF%9?E3@7=x?=;Qq+_bhr^ZOUS^?3O8t7@6+kGbVG+{@yDEN(lgWH z4U^IFO89Xl904s%KkK#8cY3HkP+$aeVEA#C`ko5E6vu2oqBMM@H1u&w!>8Kv52#Dm zf^FNP-S+|YPxwx07*rdsLI`5i48PXFh7X0$a0me<)CL-Bdzh0OMXm1xYLi>9g+io3$VGzHOXR`#JdZi1yZBsh1wn zzWOV5!o}E2XAe69^GzIf!Km{qyg$oT-Aj{~{Y=jFQ_cT_lF)`|v5P4y`o9GdSZQd} zrCvJ5_Oo;~bXXhvA*_gwXayhAF>tx-L+VZVnH)Uh1GT*HAsrU~vs4?VeFiy&qcF>9 z#xrzIT7*TK8g5d<4_%KRHbFExn8O?0Y=#UsX*Fl4?*^X%=1vednf1tih-D3R$1)$Y zF}F#t*8{TLW3G+EO+(Sqq zSfTy!5l!)wu+9lJX)K9OysSUN3dXF$TA;2^%RWa(k6=rMMmEfIaA9=CkiQ!@u&lK$ zY#wN=(jGiV@1!4T+{bj~2sX?%HW8Ffrco!TTVSOI?+diXk7>rN zrXhU|S0Pu!)o48%uEMVyM!QpZuNvNK7*BDyADU73VnYHy+K@nW{P;0FOd(tk_tD9) z!uzg|4yQq!^Vv!>!X zvSB0iQZic_4fXkGA4~f0-pAzLxt?!-$4lqw3ckbf8T2=O3Hms^Qk(iY&6k^C{l#YJ z@IzYD=X5!3(?0#2P8fSgAg~S^#^%2Ne?JE~YSyOrQ$P4*Q$I}+Dj>?WmVSEPKQmgA zKYH;+FT>$tQp2tIF7!AIhY;t{r2X2nU(hFPhlc5YR&2+@FX<-EN!u&Na4+}wKF@j1Iq%^#b;+B$ z<0 zQp|uVo*MJIgGD1LrW7%ZWi$CXza2m&+r$`-5=h;0;fET`27%NJM)GN_Bq>pb)5sgk zt|GV=%C<6ihhHtN-UlXi7m*{F*!I|Y`r{JMTGuWHe z%RYmeWU9?TfjSOmVN%qlVK|G@d>z%AVIVw$(2_{4;MMiBbI?&wH3!6NM%Z~67ik8n zv`TQpib$=xHa#UK*+Q*rIGDJeRH9~wMoibZLC5d2ahSnZ*f{G6NvXtK_BpIkIFrl1 zfa*XZ!b>RLMiZBDG(rg;aERJ6F7AvYRMa49p=UD3Sq~id6JAWG&NZz+GlS4cNkjb< zao)_9Fi&qJ;`&8<;FhS_K`F~Y4@^r`M92#@e5#$Z)?KF4+My59H4D%u(HFAGS1=?| z7`WL*cp%XgnU{SXpb0{60`!y6+W^JLz3jUH9U$}`CZ!a!JO`Ixke{`yqjxm=*U*hh z_yGA5Wiynj`0sYE#39!Ft@6PWtG`w8nF8zE(5j$DTjhf}zY`}CKNDwIlQ<4(r+g5} zpK@^4G^s`pL4bSB!DL}Wa!{km0zC3N#bg2gN<@=|4QC)gh>d32;X1lm0b)gR>Tc*) zwI9j;|2Wh*#D}(UF)5O71Wl34&?8X+V~YF)zih7kE%&P;^as16mY#C??dFc!$D>M( vOa5(7lsZ?s?sT5=&Laxsu&}dQfdid)6=)dKDDk(9smU1As&ECJX(9gr3QQ7P delta 1096 zcmb7@Z%9*77{=dorz@8&rxzXGl&QF;7PdC~XUT?$=0FM(#TrpY2t`JTL`&y(mkCjL zy+R{G{4gOysoV!Ygp?%q$EoR-W!dJ!up&u_i24wnb9Zp0He zHg{ZShwQrNtZ*#@bqW17$Rr|UM{d!9?5d_51mvo~Hv{qD@v4|z)#$i*pvG+o>0Yx?mmfnksl~~+b&oH)BTr?H}C}hcu?huA;dMcJwqZ33qa%`6)O`Jqy|| zpNjFO!AZRn$izk|kuk9^p-VjNSHO%z{~HzDzoY6HXc*va`?{A#_16|Htzf z4VXHphqR+OIU!CuIlEudc#zBXqFMM#sS1-Hx?4zRLEWqUp$f#DG621j$3qY3l>r#1 zw2a^U70giD06umO7ARen`PtWNG=k|3EaX%3C&u|TGc(T5zFng-Oz+^6DDYfHT`M^f z54VsU-oqJ6yBR{A;&Yy>9+0%iaDuRGC;4zfwlTy8V}=v;$Z&$N8cCv&+>bbEXp`2V zQf(#nip4!HuA-J|Wb7fBcSs4Tb10^B)FYikuoOv3okOt2Dc*La7Zf_lavp9V9~**l zi6WC;jG6Qz%!pwZmwA}x2az=;3}cim_}lsb8s3|JWvC%3E%(%pW50?`Llb|hKKEp9 s_AadKOG|E`KR(&dNotLdm5Q2fn&VO5uu_hG%b0G%uu6fxAz}NvzsQRg)&Kwi diff --git a/Assemblies/AbilityUserAI.dll b/Assemblies/AbilityUserAI.dll index 9357210f021b0edde50b1bf6591dbef5b5d30964..e95eb48535baa3682980c19156a7e08266a07fe4 100644 GIT binary patch delta 38 ucmZp;z}RqsaY6_4{(B`GyBR|S+N3;m-&tyU?m6@Rwe^;G&&_i}QiK6b))6rP delta 38 ucmZp;z}RqsaY6@k?~=TY-Hagurp&jS9O{31HibTDIAuNm*5)}ODZ&6pvJqnd diff --git a/Assemblies/CompBigBox.dll b/Assemblies/CompBigBox.dll index 0e9819332f070c22e7809e94baf02d4e58b64e65..7e8eec843f3bbb8740dc3d0ab9686180c105bb55 100644 GIT binary patch delta 36 scmZoLX)u}4!MyKY$;R%7`~qcj_=4`1FZ7sNXuYNN(=PkXH3BW105wn$umAu6 delta 36 scmZoLX)u}4!Q8tfZ)5jEeu1B_`l3@dF?lX}Cl{1!-1uX2jX(=005gveaR2}S diff --git a/Assemblies/CompInstalledPart.dll b/Assemblies/CompInstalledPart.dll index 90672cdb79ab198a31912efa4836d5e889ebb962..8ece2c782c3879d5980e302bb561fed277730c14 100644 GIT binary patch delta 38 ucmZoz!Pu~ZaY6_4{(B`GyDeP=R5HIr%#vgC+0NMY5r~!be0g#9T9;0rti#bFPV%*xU=eZg{q3C4wqegRbv(!W^4^Pt(+yDRo diff --git a/Assemblies/CompSlotLoadable.dll b/Assemblies/CompSlotLoadable.dll index 61a1b89248da14602898391809a37a0d1da78558..35f52d9e1822695e1447733972395f88e62f39b6 100644 GIT binary patch delta 38 ucmZpe!PGE=X+j6{zI!DbyL-z7%3XIE8f9lW%u(GewCJUe{AP{v8zKNgJ`h&` delta 38 ucmZpe!PGE=X+j6H+~T~A-MwW3rAulWxff`=ZTi;T_gd6kX0t~54G{o10uWLF diff --git a/Assemblies/PawnShields.dll b/Assemblies/PawnShields.dll index 2af53f0f3ce79d72e4d4387dc3b42b4c9e2beec8..63f5849c5ec838a8ac10c61d0bc832e455a07fc2 100644 GIT binary patch delta 38 wcmV+>0NMY5umOOu0g#9TC(U%Ri-AWFjXaY6^P+~T~A-Hq-7uk<>#t~=HFb#3Pr+^3==wpqsG2|oZYzYhKY diff --git a/Source/AllModdingComponents/JecsTools/HarmonyPatches.cs b/Source/AllModdingComponents/JecsTools/HarmonyPatches.cs index c6cc4bef..b724ea2c 100644 --- a/Source/AllModdingComponents/JecsTools/HarmonyPatches.cs +++ b/Source/AllModdingComponents/JecsTools/HarmonyPatches.cs @@ -14,6 +14,8 @@ namespace JecsTools [StaticConstructorOnStartup] public static partial class HarmonyPatches { + public static bool DEBUGMODE = false; + //For alternating fire on some weapons public static Dictionary AlternatingFireTracker = new Dictionary(); @@ -98,6 +100,12 @@ static HarmonyPatches() //instance.Patch(AccessTools.Method(typeof(ApparelGraphicRecordGetter), nameof(ApparelGraphicRecordGetter.TryGetGraphicApparel)), null, null, new HarmonyMethod(type, nameof(CutOutComplexApparel_Transpiler))); } + public static void DebugMessage(string s) + { + if (DEBUGMODE) + Log.Message(s); + } + //Added B19, Oct 2019 //ProjectileExtension check //Allows a bullet to pass through walls when fired. @@ -462,39 +470,47 @@ public static void ApplyProperDamage(ref float damAmount, float armorRating, Thi public static bool PreApplyDamage_PrePatch(Pawn_HealthTracker __instance, ref DamageInfo dinfo, out bool absorbed) { + + DebugMessage($"c6c:: === Enter Harmony Prefix --- PreApplyDamage_ApplyExtraDamages ==="); + var pawn = (Pawn) AccessTools.Field(typeof(Pawn_HealthTracker), "pawn").GetValue(__instance); - //Log.Message("Entry"); if (pawn != null && !StopPreApplyDamageCheck) { - //Log.Message("0"); + DebugMessage("c6c:: Pawn exists. StopPreApplyDamageCheck: False"); if (pawn?.health?.hediffSet?.hediffs != null && pawn?.health?.hediffSet?.hediffs?.Count > 0) { - //Log.Message("1"); + DebugMessage("c6c:: Pawn has health."); //A list will stack. var fortitudeHediffs = pawn?.health?.hediffSet?.hediffs?.FindAll(x => x.TryGetComp() != null); if (!fortitudeHediffs.NullOrEmpty()) { - //Log.Message("2"); + DebugMessage("c6c:: Pawn has Damage Soak hediff."); try { if (PreApplyDamage_ApplyDamageSoakers(ref dinfo, out absorbed, fortitudeHediffs, pawn)) + { + DebugMessage($"c6c:: === Exit Harmony Prefix --- PreApplyDamage_ApplyExtraDamages ==="); return false; + } } catch (NullReferenceException e) { + DebugMessage($"c6c:: Soak failure:: {e.Message}"); } } if (dinfo.Weapon is ThingDef weaponDef && !weaponDef.IsRangedWeapon) if (dinfo.Instigator is Pawn instigator) { + DebugMessage("c6c:: Pawn has non-ranged weapon."); try { if (PreApplyDamage_ApplyExtraDamages(dinfo, out absorbed, instigator, pawn)) return false; } catch (NullReferenceException e) { + DebugMessage($"c6c:: Extra damages failure:: {e.Message}"); } try @@ -503,6 +519,7 @@ public static bool PreApplyDamage_PrePatch(Pawn_HealthTracker __instance, ref Da } catch (NullReferenceException e) { + DebugMessage($"c6c:: Apply knockback failure:: {e.Message}"); } } } @@ -510,7 +527,7 @@ public static bool PreApplyDamage_PrePatch(Pawn_HealthTracker __instance, ref Da tempDamageAmount = (int) dinfo.Amount; absorbed = false; - //Log.Message("Current Damage :" + dinfo.Amount); + DebugMessage($"c6c:: === Exit Harmony Prefix --- PreApplyDamage_ApplyExtraDamages ==="); return true; } @@ -557,35 +574,56 @@ private static void PreApplyDamage_ApplyKnockback(Pawn instigator, Pawn pawn) private static bool PreApplyDamage_ApplyExtraDamages(DamageInfo dinfo, out bool absorbed, Pawn instigator, Pawn pawn) { + + DebugMessage($"c6c:: --- Enter PreApplyDamage_ApplyExtraDamages ---"); var extraDamagesHediff = instigator.health.hediffSet.hediffs.FirstOrDefault(y => y.TryGetComp() != null); + DebugMessage("c6c:: ExtraDamagesHediff variable assigned."); var damages = extraDamagesHediff?.TryGetComp(); - if (damages?.Props != null && !damages.Props.ExtraDamages.NullOrEmpty()) + DebugMessage("c6c:: Damages variable assigned."); + if (damages?.Props != null && damages.Props.ExtraDamages is List extraDamages) { + DebugMessage("c6c:: Extra damages list exists."); StopPreApplyDamageCheck = true; - foreach (var dmg in damages.Props.ExtraDamages) + foreach (var dmg in extraDamages) { + DebugMessage($"c6c:: Extra Damage: {dmg.def.defName}"); if (pawn == null || !pawn.Spawned || pawn.Dead) { + DebugMessage($"c6c:: Pawn is null, unspawned, or dead. Aborting."); absorbed = false; StopPreApplyDamageCheck = false; return true; } - BattleLogEntry_MeleeCombat battleLogEntry_MeleeCombat = new BattleLogEntry_MeleeCombat(dinfo.Def.combatLogRules, true, - instigator, pawn, ImplementOwnerTypeDefOf.Bodypart, (dinfo.Weapon != null) ? dinfo.Weapon.label : dinfo.Def.label ); - DamageWorker.DamageResult damageResult = new DamageWorker.DamageResult(); - damageResult = pawn.TakeDamage(new DamageInfo(dmg.def, dmg.amount, dmg.armorPenetration, -1, instigator)); - damageResult.AssociateWithLog(battleLogEntry_MeleeCombat); - battleLogEntry_MeleeCombat.def = LogEntryDefOf.MeleeAttack; - Find.BattleLog.Add(battleLogEntry_MeleeCombat); + //BattleLogEntry_MeleeCombat battleLogEntry_MeleeCombat = new BattleLogEntry_MeleeCombat(dinfo.Def.combatLogRules, true, + // instigator, pawn, ImplementOwnerTypeDefOf.Bodypart, (dinfo.Weapon != null) ? dinfo.Weapon.label : dinfo.Def.label ); + //DebugMessage($"c6c:: MeleeCombat Log generated."); + //DamageWorker.DamageResult damageResult = new DamageWorker.DamageResult(); + //DebugMessage($"c6c:: MeleeCombat Damage Result generated."); + //damageResult = pawn.TakeDamage(new DamageInfo(dmg.def, dmg.amount, dmg.armorPenetration, -1, instigator)); + pawn.TakeDamage(new DamageInfo(dmg.def, dmg.amount, dmg.armorPenetration, -1, instigator)); + DebugMessage($"c6c:: MeleeCombat TakeDamage set to -- Def:{dmg.def.defName} Amt:{dmg.amount} ArmorPen:{dmg.armorPenetration}."); + //try + //{ + // damageResult.AssociateWithLog(battleLogEntry_MeleeCombat); + // DebugMessage($"c6c:: MeleeCombat Damage associated with log."); + //} + //catch (Exception e) + //{ + // DebugMessage($"c6c:: Failed to associate log: {e.Message}"); + //} + //battleLogEntry_MeleeCombat.def = LogEntryDefOf.MeleeAttack; + //DebugMessage($"c6c:: MeleeCombat Log def set as MeleeAttack."); + //Find.BattleLog.Add(battleLogEntry_MeleeCombat); + //DebugMessage($"c6c:: MeleeCombat Log added to battle log."); } StopPreApplyDamageCheck = false; } - + DebugMessage($"c6c:: --- Exit PreApplyDamage_ApplyExtraDamages ---"); absorbed = false; return false; } @@ -594,75 +632,117 @@ private static bool PreApplyDamage_ApplyDamageSoakers(ref DamageInfo dinfo, out List fortitudeHediffs, Pawn pawn) { - //Log.Message("3"); + DebugMessage($"c6c:: --- Enter PreApplyDamage_ApplyDamageSoakers ---"); var soakedDamage = 0; foreach (var fortitudeHediff in fortitudeHediffs) { - //Log.Message("Hediff"); + DebugMessage("c6c:: Soak Damage Hediff checked."); var soaker = fortitudeHediff.TryGetComp(); var soakSetting = soaker?.Props; - if (soakSetting == null) continue; + if (soakSetting == null) { + DebugMessage("c6c:: Soak Damage Hediff has no damage soak XML properties."); + continue; } if (soakSetting.settings.NullOrEmpty()) { - //Log.Message("Hediff_A1"); + DebugMessage("c6c:: Soak Damage Hediff has no damage soak settings."); + //Null, here, means "all damage types" //So Null should pass this check. - if (soakSetting.damageType != null && soakSetting.damageType != dinfo.Def) continue; - - //Log.Message("Hediff_A2"); + if (soakSetting.damageType != null && soakSetting.damageType != dinfo.Def) + { + DebugMessage($"c6c:: {dinfo.Def.label.CapitalizeFirst()} is not in soak settings."); + continue; + } + if (!soakSetting.damageTypesToExclude.NullOrEmpty() && soakSetting.damageTypesToExclude.Contains(dinfo.Def)) + { + DebugMessage($"c6c:: {dinfo.Def.label.CapitalizeFirst()} is to be excluded from damage soak."); continue; - //Log.Message("Hediff_A3"); + } var dmgAmount = Mathf.Clamp(dinfo.Amount - soakSetting.damageToSoak, 0, dinfo.Amount); - //Log.Message(dinfo.Amount + " - " + soakSetting.damageToSoak + " = " + dmgAmount); + DebugMessage($"c6c:: Min: 0, Max: {dinfo.Amount}. Calc: {dinfo.Amount} - {soakSetting.damageToSoak}."); + soakedDamage += (int)Mathf.Min(dinfo.Amount, soakSetting.damageToSoak); + DebugMessage($"c6c:: Soaked Running Total: {soakedDamage}"); dinfo.SetAmount(dmgAmount); - //Log.Message("New damage amt: " + dinfo.Amount); - soakedDamage += (int) dmgAmount; - if (dinfo.Amount > 0) continue; - //Log.Message("Hediff_A_Absorbed"); + DebugMessage($"c6c:: Result: {dinfo.Amount}"); + if (dinfo.Amount > 0) + { + DebugMessage($"c6c:: More damage exists. Continuing check for soakers."); + continue; + } DamageSoakedMote(pawn, soakedDamage); + DebugMessage($"c6c:: Damage absorbed."); + DebugMessage($"c6c:: FINAL RESULT -- Soak: {soakedDamage} Damage: {dinfo.Amount}."); + DebugMessage($"c6c:: --- Exit PreApplyDamage_ApplyDamageSoakers ---"); absorbed = true; return true; } else { - //Log.Message("Hediff_B1"); + DebugMessage("c6c:: Soak Damage Hediff has damage soak settings."); foreach (var soakSettings in soaker.Props.settings) { DamageInfo info = dinfo; - //Log.Message("Hediff_B1_Setting"); - //Log.Message("Hediff Damage: " + info.Def.defName); + DebugMessage($"c6c:: Hediff Damage: {info.Def.defName}"); + if (soakSettings.damageType != null) + DebugMessage($"c6c:: Soak Type: {soakSettings.damageType.defName}"); + else + DebugMessage($"c6c:: Soak Type: All"); + //Null, here, means "all damage types" //So Null should pass this check. - if (soakSettings.damageType != null && soakSettings.damageType != info.Def) continue; - //Log.Message("Hediff_B1_Setting1"); + if (soakSettings.damageType != null && soakSettings.damageType != info.Def) + { + DebugMessage($"c6c:: No match. No soak."); + continue; + } // ReSharper disable once PossibleNullReferenceException - if (!soakSettings.damageTypesToExclude.NullOrEmpty() && - soakSettings.damageTypesToExclude.Any(x => x == info.Def)) - continue; - //Log.Message("Hediff_B1_Setting2"); + if (!soakSettings.damageTypesToExclude.NullOrEmpty()) + { + DebugMessage($"c6c:: Damage Soak Exlusions: "); + foreach (var exclusion in soakSettings.damageTypesToExclude) + { + DebugMessage($"c6c:: {exclusion.defName}"); + if (exclusion == info.Def) + { + DebugMessage($"c6c:: Exclusion match. Damage soak aborted."); + continue; + } + } + } var dmgAmount = Mathf.Clamp(dinfo.Amount - soakSettings.damageToSoak, 0, dinfo.Amount); - //Log.Message(dinfo.Amount + " - " + soakSettings.damageToSoak + " = " + dmgAmount); - soakedDamage += (int) dmgAmount; + DebugMessage($"c6c:: Min: 0, Max: {dinfo.Amount}. Calc: {dinfo.Amount} - {soakSettings.damageToSoak}."); + soakedDamage += (int)Mathf.Min(soakSettings.damageToSoak, dinfo.Amount); dinfo.SetAmount(dmgAmount); - //Log.Message("New damage amt: " + dinfo.Amount); - //Log.Message("Total soaked: " + soakedDamage); - if (dinfo.Amount > 0) continue; - //Log.Message("Hediff_B_Setting_Absorbed"); + DebugMessage($"c6c:: Result: {dinfo.Amount}"); + DebugMessage($"c6c:: Total soaked: {soakedDamage}"); + if (dinfo.Amount > 0) + { + DebugMessage($"c6c:: Unsoaked damage remains. Checking for more soakers."); + continue; + } DamageSoakedMote(pawn, soakedDamage); + DebugMessage($"c6c:: Damage absorbed."); + DebugMessage($"c6c:: FINAL RESULT -- Soak: {soakedDamage} Damage: {dinfo.Amount}."); + DebugMessage($"c6c:: --- Exit PreApplyDamage_ApplyDamageSoakers ---"); absorbed = true; return true; } } } - + if (soakedDamage > 0) + { + DamageSoakedMote(pawn, soakedDamage); + DebugMessage($"c6c:: FINAL RESULT -- Soak: {soakedDamage} Damage: {dinfo.Amount}."); + } + DebugMessage($"c6c:: --- Exit PreApplyDamage_ApplyDamageSoakers ---"); absorbed = false; return false; } diff --git a/Source/AllModdingComponents/JecsTools/HediffCompProperties_ExtraMeleeDamages.cs b/Source/AllModdingComponents/JecsTools/HediffCompProperties_ExtraMeleeDamages.cs index 246d4b76..f7d957bb 100644 --- a/Source/AllModdingComponents/JecsTools/HediffCompProperties_ExtraMeleeDamages.cs +++ b/Source/AllModdingComponents/JecsTools/HediffCompProperties_ExtraMeleeDamages.cs @@ -5,7 +5,7 @@ namespace JecsTools { public class HediffCompProperties_ExtraMeleeDamages : HediffCompProperties { - public List ExtraDamages = new List(); + public List ExtraDamages = new List(); public HediffCompProperties_ExtraMeleeDamages() { compClass = typeof(HediffComp_ExtraMeleeDamages); diff --git a/updateinfo b/updateinfo index 5641acdc..67a9686f 100644 --- a/updateinfo +++ b/updateinfo @@ -3,10 +3,10 @@ ============================== JecsTools Update -v1.1.0.20 (03-07-2020) +v1.1.1.0 (03-15-2020) ==================== -DefModExtension_ExtraSounds is now processed in the CompExtraSounds Harmony patch. Different pawns with DefModExtension_ExtraSounds in their PawnKindDef can make extra on-hit attack sounds. +AbilityUser should now report when line of sight failure takes place for abilities. Extra damages no longer gives errors in combat logs. -------------------- Download now on... @@ -25,9 +25,9 @@ Discuss the mod on... [img width=260]https://raw.githubusercontent.com/jecrell/JecsTools/master/About/Preview.png[/img] [hr] [b]JecsTools -Version: 1.1.0.20 -Updated: 03-07-2020 -Description: [color=orange]DefModExtension_ExtraSounds is now processed in the CompExtraSounds Harmony patch. Different pawns with DefModExtension_ExtraSounds in their PawnKindDef can make extra on-hit attack sounds.[/color] +Version: 1.1.1.0 +Updated: 03-15-2020 +Description: [color=orange]AbilityUser should now report when line of sight failure takes place for abilities. Extra damages no longer gives errors in combat logs.[/color] [hr] [b]Download now on...[/b] [url=https://www.patreon.com/posts/34452021]Patreon[/url]