From 934ed2dd3230bcf9c247c4748d4e72dc2e165c0d Mon Sep 17 00:00:00 2001 From: samyyc Date: Wed, 19 Nov 2025 19:24:33 +0800 Subject: [PATCH 1/4] feat(managed): Add GamePhase enum --- .../SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg | Bin 0 -> 41725 bytes managed/src/SwiftlyS2.Shared/Misc/GamePhase.cs | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg create mode 100644 managed/src/SwiftlyS2.Shared/Misc/GamePhase.cs diff --git a/managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg b/managed/SwiftlyS2.PluginTemplate/nupkgs/SwiftlyS2.CS2.PluginTemplate.1.0.1.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..f92fb06a2cc4892e2a76be849ab2d983b1e8967f GIT binary patch literal 41725 zcmV)sK$yQ!O9KQH0000801ymuTYG_gOez5Y015&C01E&B0AF%tY;!Lza%F6Dl#$Rh7nld24%+l>8H=Q5?bWNSp_IFSWBLDyZQ+H`*bZmK3GA=_?GA>YTb!TaARAp^&Y+-a|E^c*maAjj;Qp-;3 zFc94%@ed>Kv6DbUg`BWJVvW@PfUzg8)%YQM0`0f4xSw=?0ktHzMR#NA%;TIhGyePa zM?N3?2p^b>i=ksRuNYv^(YRncHqmgmX3zcYjZ8}Kl|?xCF_ez&h|-e~Meoq7!oAZu zmN*dC(Tks27p!Qix)D_?!c-D!ekg|Zw>JRNBPpXuoe_X^rr&(JfyU#e;V+wpzm1c1 zVT(SEickt?meSd5U-OFBQY>)Js)=?nmkS$gQF$qr_@bv{=uZz%!Afz4bIM@R*(ExW zZg;MLE1-a8CoseeI-?>NEGW3>q_bl##WlgqId5-!Ot@J19fhDgc5IoKfmmASZT{+& z8B;8dVm<;L6L!oxVxXh))#;~PO#as|#np-b4bguC009600{~D<0|XQR z000O8Y*Im6U#9iQetQ4_*{=Wq2mk;8X=870E^uyV?7Ih4Q`@#az7rC<3erSSB8t>N z5|WUhKoAuL5kz_sLJHDLLN5u}j#xlx76ep^(p5T2RY6g}21pBnQl$IS?gvG-nUuFP-FHP^S+ocp}VQT+}4TloP1*l_sJep3Jd1M7dh+yDT~ z2EJbg0CbUynHAm2=!hoC%R`k&_Hv@A26}h{>z}ZGPBZUoutGbpOGhM)M_8wPa7y>E4=ZY5@TOssZY%UcSz1 zNIV{|hCr#IP;g%|6;2ECq!R<-p0u6oB7T&ypF$(~x_HxFygXs+*F+~TKf0EzEdTmQ zKdIv3ZDjO|cu(3-fRVgB)B=g#YDiUtnumwluY1tw2mI;(x(CfH$eW^ON}+lA`I0CH z{3)LFoxc@fN}>K45vCOCZv+H-c>n9}zivz>{nFOk&)5AMcw~|q#hv0o@ubt#kgCYv zv=8*~-v7@a@%T~v{vc1HhYQJwLUtkk4xIfi9^a$ceisjlC(Xrc-Cpbczu7_auqTa9 z^dwOZ@7IzI^zc@7aUpA}W3d`k3=rfk$8w-#!}1Uv)M1b#Zp_B)b1v#QLuw zyO1?;PDCmNg&@M!G3pq&x(1pA$7AqRI0{Eal5hwLl}aZ6EK1XeLMM`mbmD#@ouVa+ zLZC2k1RjpUm?5#62$UuQuZ&RFMEvrrHI2N;F4Um!ZLQ}^A=15k&Ahzaf1Yl-R64~M zc7RHykm$7a>4kwQSh{$Uy#i>8zwJl)!%>i$>c1X^Owy!!`FarPTCyfb^?w$y-$>Kn zg-r1}=u7mVnEogRuZq_|Ak-26(8h)0PB!)>Q+%~#O?u)ROp^^gmV?&TZw?beTh;W)+T$EzPN-CcgXfPI_Wnncoi#L$wZ5&bDY8ugb) zF28b6B$7ySLSQIxthxpcP9kEQ;0PQU3nwEeq#wNtPx)={fRhx@|IWg{G^Tk`=>bGv zimo%olm3gLzy1FBR+B7SG^U&N435r8RL7I?2qy}bO2Ykj+M_g)I87w_`?dd9Zm#w} zx9HEhA#hkH92SFuqo_nIoPt49;7(K&4vxn;QSoRZN*%3%|L=7}X=oz;BHjLpMM++s zbc!eauT&j{!k}>&syZB{fxyCX`1NRuMWNs*JPwJ$kkrvg1o1nZ8mWoK{GU;sO!0O3 z2j#tq>tT#e@umHQ4UFyu^P~j8+`UNap~&+ubttq34uQmB;A9FG14pCK7&sn9QirSK za73yGS$%!F{9i!zuhbcfLgT4U8tQNjiaG^OLawivR0JB1LSx8CG*X>}z>)uU;qg0l z|8CCme?)hWp9ss(80=O1^(whn?H||CpO)7BKTfTKzFr>RI(}oee+UVcgm=;);ho^> zXmtb}fk&g@cr?lhP9@`TM4}UsibbPke)VGMWm|RQtklnz z|GnxzA!0)Gr2mFj{R0?3UH!v$?5Ep*K>HCm9NCGeL58ansaQA>ukHk=AV?%Q$q9w~ zkyZT{ulOU%uYn@s)sc8O6|JETCpwXkaFPbe2~I{JHGU#xPQUB^FKIvC38&$N(10UJ z>LfUsh{nP3>P|SgI+~>JgmOYq$v^ENVBbmoalf6<-$DO>?(qwhe?V&gk=Oo%KmO}b z_J`5zPnqJs3uM1n{C~W5{i_iE`v~?=g4i$Ze&v}z`>)z>9Qgm)ot^MFG=@ZSf+ML& z931I{CBrF1CoCL|MG=3*kc|Ep?ufhF#|CA~IUz5ZC7^<;Q8N>P`%z`2Nlr|L8ymg+fv=7$OCZr8uGCSTq_1$04YAI7S13 zQb!O;L_8JyU+zIBY0_Qj?v&qphORsPA3S6I2ujnP=;^E_8we*;s6;<^x~w)0hX37M z{&{l$O2%Hb-w*S*01`*0A~jGLI1)iY!6|4o8jdGYuy7p835&$zh&YP+UkD`8-Q9&k z_V6N;DZVtg3(3n9PIC#SIAD+{2X%z1x2N;JEzTr$ECq*N-vp!7;ZEy286pZpg5$|# z1QvxLqp2kFUx#x5(cRsf=uPpZktv?*C#McXCmP+CNTS2NT|C|3?k+xlE@U{-m+pYX zqY!~e1P-C<>iz$Q{y$;1|H$Y5H~{~i;{IvI@O!5Jr|8?Cp~ruMA^$N+)^&IP2YT@< zc>Wnv{+qZs2I1sHK~qR@EK&mpS4W_Ua3>9Q1Y8}DMmkY6s3;9I@~?Ao7Z0K{h4yz0 z86+;C^QbNkmD;6JO>_pHHxJEgv7!TY-@^<5$E@21rH z?hr{vsKe3fL^K?YM?1ms7%U!6#t{)@Cn_4FfhPU!lp^9OICTznxMf z(t0V!dR_yGM#HI2Xw>@21QCuSB1jrY3=)Avp#FABQP$4~)X^lkI#L4#M}14ykcb*^ z44zEHW2rb41w;A!DTSd>kxpnLoJuBQ;7Af$9qvRWA>l+MmWslt<1i$|-!G(7NH_|P zh*yVeAW%d&9)ZTKGb|h&kHt7)obU(~j!695DMeMsQ8W-}bvV|Eih-lolh1e(2?M7( zQSdk%5sAhUG5;r&`ghv{eb-w0my!1UL|-?UzArHdcHGO|g$zUf-L^vC3+s2S=Km|F zROo-}Q>yPG82=kM|2u>HU4-W^JiAu^cLnmhNY-BmP^@8zlUBA7zpc$Ygi$VT$ zVDaOflmBqX&(npjCF{Ljxc;m1u>D4wWIx|;5$Idnp9Uhj`>hwG|NMr;x03ZAE7{kJ z)YX10Xa9|qUn<(y3;2H3Z5``_KZQFK9E?} z_=BF``y0NE@JDv~@t*1agWCLi)qZ)CNSpt^-bJE#lC@-gWp%V=d2`m^Qi6~U>zRN+ z04SbTYXJZNpZ6ha8UO&GZ-2&ePg?;1*cEJMMgQql2ms){PCN3#*uZ?!$mqopGw;`i zO~!}eU_e)#`*94uaTEYxz~TM6W`QThZt<0FGmoE84ye2?a)|dZ@2(vY5Z=?0rwN;d zAo~$53JnT{Fs$qk9y;Z=OOOiPE0U6sW4jc1WnnXWqfyXWq0KOI@*qAaTw@z<<8~LEt|K{0D*mAn-p!z{Cc8%OE5; zX&Zz9K#qWyRu|mCdO|=%pGd=?zSU}W|3w%8KD;ZYkh4KS=x`F{B<%&?uCa4=zOYh& zmq{>b;OyJMf{TXjh^&m65by8|m4PVjOTDVo8b#kC0R;)2l#6Me&}n+$b6F9?#zpRJ zLUuKUUWWUzyu*bQlp#+jo!>dx zFMT|x^3z_J2@3pW^-4mH2oA~1BuIgeRgIQ{yETtiNepiJSbDE`=`6}%$R=fU;m(N_ zQRZbkspFd=S;+)_#zk`$5-kKl?T3v7NXr%0X(y&ECEF^qOAQWc*NFxkP>U82S+4BY z%u?`nxFdQtbonAlH^tr zgWL|8Z007bYYd&dg6PeQ(=-;XY zy@J8my8tc-A@w1okC%s{ar5no=? zHu$7gbu-#jNWbR(SNEqM)OBGgGQ{1?)L59wLGUxtWny-a;$t@(QASEj^zvQ8OFCWGjdlRq8rH$;yZjCzv_Iu%uwb=kZFB=ox+g$IE z4}E0Z(6}&+XIVF_^u(qFnC$I6^J9&ykaKbGwRVUj=!Z-EJduPRNG+sFPN?oQ<66N2U!Y=pU2+?LI?UkSnEPpnigs{q5iira7W<0EI< z!g%-13cu0k3r*v#X2*{ouW)&nky=((b|qQFV8QCqo9?ca+$4+q6HlmhXE*FpI3=cR zk#nNR^+QLzvSpriW$4lkIm3h;n_~Bm9c8q^yv5mf#))B*H9UrcudY9`$Ys}^u9BOC z-&Q-LsS~}jC4GO(;8S%2$sg_t*2u;!|IB& z{d>L4A^sgMnd2+t6<(|>JN4&j;7Vf-du?TY zgr14*k|X2Vx4rlRZLZ9$Oyi$eYEWNYdtJ5k+G`_=l4yT+ z!}h&_C#%BOxHENI2KPvat5_9ykG#MCjukX`t2rfT;Cl1KlZBq)rY{9Y`2rN%mx3yz zZ6aD)xh*t9kz5uzOi^}1%Q@MYiPH^}Qzigv@8VFfF60h`ajm7~&ZzZbz3^f}YUaY? zT30`xd{V*OG5u|rm)B#**ol?8i*&DkuQN_6%GG6Aa z`9$7gVRi3Utsp^L?!wyM2G1t9xK@G1=?%q8B z6Dk@h5oID+l^b8hQo|Hy=VpQ}z(@Ct71pqpTTAA9f(CCbeC;fmh>@KY&J=>!QESgG zuo#Syx=lKJhs#IvRvedShedT@XLJO@g5#QVNudc4<(3vp2F#%Zhyz}oR0Amh*Q8-W z(FA>qwaV4dl-{<;6M56tLv1Nx^B?OfXKqbM56R9h(C-J>K6TT+tP}?*a;;nH{dp02 z_DoiG-i^opV;vayzLYan6IbFvxv-NZAX^?X;f@6)6neH@7A8~HXaeTnwi*{M!%r~a z5${&o8iC6WSFSb|;N1IADLTLU*nEgF=H@UOFkUuzxsw#FwbA?7GS`LHJxTZUAmVB# z9)G=}zddNMt%^N&bG*3v*6ESW1>oKgPeopB4c%+zu&kGHs6_9qySC>3N}|ae;Gv>Mo`3BFg!V;`-ZnNF{wj4Z#9YZZIZjyA9X_P zDD24Mx%649zT!@>ws>ymKGt~7qb5yir$z78W#)OF?bdn6BDsdy>TB*=97$gZ|2>l&ZSwG zbmM&~+tnUV*4}Eu^o5uct|ddQl$v;#cD9%Qfwmu`BN50e6P@AJ0Ma<@#5 z;w(TZhJe4N=T=!2;Q8RdDt=Qxz{QE=8~} zwga1hU*aXRzS@`oS?+|Eq$r^V{YBe1YZmNE<4KLsi4d05GK1aB!FPK+JSE0BaJFJq zBK`Fy4tt@hDq!Hcb7e19)y7o;Y^n&mo!#ol?)_ z)gJTTZ8v1nGUC8`0q%XoUl2m5fabuX>Rh>76b?xMT_DMui3I@Jz4}eJ1=w_Hj*sE? zA>Wc6{GnNy)0M@7E{=t^*$3EvwP5g+HiVmsdUHiomob7hp^oQ1WLxG3eTlcc_qf19 zCFo1@OJ_R)W||v(@=${GVCG5#%50@1R9?E8_B6hj)HncMf zN`YcvC|*YeBzZk=k@T{GaQEf|OLp+g_LLV6+)H2HE*+Yz2sx#^sUov+P=_Tp^-;P@ z7q&4%Qk|-zHJlck96EA8lgcm0j0ffNo@`_0>^&(a^srcJKArEOsZi!e-0n}1Uhtts z;LcKz@DHdJ{SOm^rcXQ|;TL+nM&4x_w+*H+*g1S6yOZo499VMs37>k8h}EbS!>-)U4`{m@R&jAi%sn<$U!vc20k4t_*so@?5jX5rCf%$+O9*`2wM`Hf85S zim;5!$RIBx*xh$&^^{ELWDRE?UjGdF_Pc>a@eL12W-@pNvZ%)?VoPV3Acp-%t=jkPv(8$5o3JbqWCd1g$~oGCf&k zU{Pk4BtJTBKO}0$s$YzQ>f034<>Zj@vUl?zom0FL?~UO+&houV)(Sa8lh;~$Yp8Y% zs%r|iIIRGdR#9jatUm_MS>sBR+flbOhMiXjjbS63f;WX_Fs}DcC{OQ%>I}{e9$`1V zXZ6puIdJlC`F9K#B$5dN#S--N z^v2%k%RG5qdq%(#e4uTCtc-xb9GSPPhREQUD~SXD`z6mnR2d%Jx^yGZ%}* z7krjFPRSolTD-YkD_HO)uRi@zEkpq~Sx~o8>T?u#E=>%gxSNo-TvVMIr(?*Mx{y2J z(#ZS@&jE>TUomyq&QG|{*S{JM6Ovn{#ABLfN}^T@?+Q0>X=!;FlKWJ%KbaSP!HB7+m*-KCWB$Iqi)+f2*xbL-LR@St<#yrxJ zty;xsh_^fubbqC8EZ)g;$flO}YY8jd7Jr7GdmKDam@`XB*3n6nW2S>s`yr0dL+y(a z*<~g`)Pc=|_t6mwRgCtgaMMNFnW_x0(0(Z{uP1Y@jmO?qz16!gY70r)j5yi<{8FPm zoWB^-q7C@&ggH#fIHbbt588r-HpTP}>ocNCBM4jhtcu?GO{S>MbZ(t3sox&r?!Pit z;xKSp2h4tp+hf`y&o4+{F{ab(uUIR)e{fnzFbn;{1|OrG*|B&Wp?{|w__h@>27^*q zI$7aT*g2n~cD0e#+)m~$`gV_3+au;i+q^V6t1}LMQ;McAu}h@j2+Zh0>APigLbEEf6+z%+28@-lGHEu~;AF^J(K}QtP?= zs`7JB(sK0#35TcpK2v0Sl~+Y9CeOt)lUOW|a@5d8^`^yz1f5nCMk)~$5ePXE`00$1 zXWNTsM;DK$>3G6SM8PINRHU%{eE{SZzti#nYQkapaAz)?M{rBa*z#yT$IFtK>jqtp zFpMN9L{v;v?%ARfzIx-p1@RXTt14fHw`v2ynS>xMciy;9OFU3m-KmtTdFSHSK8ORC z6Ef;stEoY?A$%dfE}bk36vBq3w%nMEQ>XsxdM&Z1ednm0Ga+cR4*}?V!O5{Wn>^TC44zL z>-O=JT)YTSNynzH;&-6yY+KLKuASX&QG2TNqjR_% z$RA_;g!5cyZP<7atD&)Q6uFZQCqfcbtT#&seZCT*Jkbc32R+I7qACW2H${OIK{k>F z{*bspc8XztsEO^OHZ1BbGiMaNUqd96-?55S%s7efMy+q*;q z;0D4mwJBkoxP_F?k$}a?Pg+Um=W;}6blWx`?ClOImlp5p%`)aDJ-^6D zeRXXID?@D6z$Y<^S;$)eCPb$p7M-}PBqyPe>7oaH%`LO1!7;aMjs{v%w$a9;npT{l zgu%6v8|-GSg|0FE=r(w3fytL+Q>28OdMd(I5}$9p*ch*)luwfm)3Nt}-eh z#gy`bZ|>Kkm2x#pnf(GF+-UQ-!(l8`u)@S@b)b)S)Yw~fi8C*o)CIgeoEr0ip`OpKTAglW`Hi;bI^d-) zyF~yZ-mRIvEqa?aXs=G{Z8!rdl3VqY1_T(WwV9U=N`ST;K^gpcMLv;PbUnrlC|GW; zo;?GFah*!4RXv!?4yv!}>VK`lS~ch8h&Dx@rVron zy4}8^ZixWf7*W4HLH)vWJG9Y3P3j(T_&`pVz- zTo7GPY5!rpP(XVqpnlQ?4PHBfHVEv%QqsnVPY24^Lr)7?NL z65@8P%7GjFa#q`ZE_!vXa74aFO#|F#UWMg6f&$^3mqr(|o}fgTS=+XvU%`5_IcnLQ zA|)_urDvfM6a_O;1;_Psa=pToOF8V7Ik~dJe7iTJOr7k$lpfwgZEI~*M)^iXKzdm1 zOci=<#bU*3Ez#|v*$cl^!0ZJfRnmiZzd8E?9rU%d|FYKlrf;pf2o1ryw+pq*7pXfp z2@W);q*SO`6~L^@d?^K<-Q|wY_^I0Fw6V2KODv*X=+ye+OfX6F|3b8pxxS_(Ew zcX7PlY_KNJ;3(%mzLWn7&wiLCqYSp$(V`eW+tINo@A^(=c%j6AeP_hs`k;Q%iH-b( zqRWCE2Ozaz4tb2>!fsAyuYGmakveW`YuL%@vw%e?9?yVyRW4D-k9M|(Prs1Ie=?4& zY_Uzz4vQ4tc@VNw|FWR}M@ph&Nw>ei!Ao1k(CA&xLm5YJ-DsSWR~>ndXA^_i!C$;S zEJfe!&tF^f0kiMDuv(JPydtt3CJHtfs!o6W(PBzw-J=SVYHyLA$p9r9P}3|3qpRhfUTkD5O> znO~`B-YTvOQc(7^Q`rs51*|CHL9r=V45xdkLOP(!M~|~QsKXMPvB6zTVBW++H)+k9 z5bnEe(q42Vu)ki@xbC)HzHhGqD28+^d#tyMr-)}8-9#SsK*sO=G2Q$VPn@v1h3B+Z zC+lh+)Nk)>>i(2xP;1LGw-m}I#;=j1Qm`wJs&rhl9bCrSl*4jX4fh<#Vt+LOvci8r zwGmh&DbQ0reTkNw!r@K1?25f}?~i9*+_q=F^wpJ7!nqfToD~*FyL5HBF&9AN?Po@=F$NMYRz_lqdGJ2 zx*~YywT4VmlB#7!di37uL*Lj$ti18%cL4l{Q2gLq{_2dAnpL9vkFD%!DBt+7cBe9< zOkd;q22bZF+=>2{kH(5SpAYLDyIeMO=R#x(XLWGdF72yTE$bnq!JMJ(68_XKZ?!IR zEmWD2vwQ(1@YZLu0x-O#9z7?Ux8$G%lo>Hj&M}?}>$}fXb8YI1+YNg*E^uIo)61j7 z>sc{YeD8Q{L5$zPM?s_L&jH18!1c%sTJzi-S&&%>9x6P#?ej-!{<#}BZUhf*J-Iv; z&FCs<)?SJGs&mO=rEnzkLshx30DRT2*TJelCZC-v&9H8B7+ADT`q+0zOx08MG~@ln z=Jr9kl?UXDJIihNf>lI^E~;QZ_r!Vwbrf5EXSo2+GO8AY= zYXf(qwWCJ1tfWxhNIJl7>J!O|B1LW^o3Eki+({C#o;IJn+ zp1!)L59In93}333rX3-KGyHbmetl&nxPSZgflM)A^K#OFesdU}opW-@2~Mw;In8+g z>iJ+UBo%N(nTbRoI8}MGnWs31Ktm(NYileJ7kBD%3NkBpw-NtF?ZsZl`L7>|q@&>a zEKGht(mM-)^<2F*D=u$BdE}`9v#2bV4)PW{DFtQ5F^}HT#DuPNvc`iyQWE|AX}5bh zxIxpG2bQa*o=aVo;yWSUmjHI;V`yJ~%}%pBz{jv|WAQ(neP-S8LED1;VOGuZfQRB@ z{jmdKy2q~?!(Oej%Ih2&U8BXA7BdVEdo6@9^-O}{yTrNYb$cN4_{GR4^Bu~TrShMj zgAa43StkG}!}?GLS}nN@UDnv3%~+w0|(N8(mk&)oz1haz~UXkqG`=qB_Cg( z-?*l!P?F-is@Uexb#LP78EDz;aAU8|(TSP(`S_(Z>B;)t4F7zqsQCQHY8c@w>}^|z z-NX49aUZ1@(&jo|N_Zuz4y<Oua2b$fm>SnJ@ z=qS~7J+=?XnCvZTJ0YOA^Z47qBG;vR`0Y#*hzxUl-!qdSshQw3xOH3rT&M!%@&n3X zwaUf5tT%V{)o3*#Yj!>1i8$I*=+%Ld={$XVXPHD@T7i#@#OU*I@e(h!1;88zQ6DT zLs;e(yTDIp*6g-Aun>vWuQgbY*N<~;`c>prPFufuAPOjNBnX5{ewEn0T2!TzRj}E2 zRhcbd=+ET{IyAqSUN(o4VlKbP_bazLs!*CVx!clmdl|>|pk2sV5wSL9t^Kj@hn40> zuvm&qox$7X$oKcmeN=!1sp>?&R58FGS^y>Rvn{f#bunm3%RgUU=um62x=hT z{sR{VAx{-ElOEU|gWiGLRj^M(osi5&1lN`en=Ye8x^GDJdF_y0$!b)2^WR)o5OY=V1ZF(foJ( z01sfG!Tj7H4w|27yvSdi+;Vs0{7ky(Lnsu_c3IT5u$D;$%sw(x@pv$Cm^l{7IRt7C zV1=EFu(t(^*04XFlUXkCM%*;!i@7qYX>T;4r)HVE3z7T!WT9B<-3QxkK#qpYCdkRx z+(NY}@yuX}Ev0Xvm-4EHGj96(zpQ>9YpfkK?Z8=XO9zWDL_qTCppzQRc>L{m3Vue6 z*U|BU_X!WG^>4_8x6ADWpsD1OK7AX7VyFz4x4rS71G+*?`C5Fyb5$$d6Bec0c50NvYSN8$ z*3i~k?N6S*!FZprXGPC z;3OTWUc0g>Yv8ik9gpYi*)Bl~fINryc-yLM%SxUt-|L}`A30_L+~>6#XBN~F5)7H~ z5O&UZ-vzbsPTkux1(frhX>cGxjF16&X?9q-N+;zIBW=mNk0-XqZ6BziH`S7u=!Zxs zh719O;hlLNo}PIVA0IhaDSfp(aI-LQ%4u{Nm3zsu&{Q}^*K;}SI=6z``_WrK-OG12 z9uJ@Inco-z2ir;TUgZbo^ePA3H(S7PjZYr}1!BzHZ75z-Ws@6;8?WuZ%s9XhE-l>+ zKmppF8+=crpo<-CmBn)WK#|NrQnroep&O4Vu&w%KhPTD$yGn#(C?Ln!^3b%wj@NY) zha00UAhlqw^vwj1L{HFKQgl4@9PWp>JT*A*^=_L5P@Hz?LR6@+_`=j!@|FRt?hOYF zXHR;nhY4Vc_(5?jlEO|*V7A_va#(t4S!|$qDzf~`TiGyi0NdH9KO8%+$k&QY5Fpq9 zRzv4LWF$r1$LiG(5oAcMQb45P1B##w$Ho2aC<>fq6+~d+z zGGo{7b1Z1oCU6N1{$h3Ra>YtaJg_;(w+h(Yvg>pDK3Fan%Aa5(I@?8Zc&x(v)B>>H zW|BXfE2`s=bNb6fi3R)KSIZ4LS#d=me!@#`^r!BrXW*eNz;%ABcO_n|*PDALuA*7- z2RGhB*FL|ri)7>V5S3!QIJ6KJ5f*Ij6@S0T;*rI!3e3DIC>3iZ4%^(M^7L@STgFyf zC99T4vM^|s-P+7T7(eqBckdSdT;7Ijyp3%#7D|$Mw%ii5H|-cC71%FaJNQMmR|GKS zJ<0MuDm>I(u`uw(m3%d?U-WKo>Zy(V+e5xS2)(&2A@aVxdZ_2N{M-31xsG*R;MMD5 zJo~`MZ6dAs9CsLkZ^eVIqwb|N_UdS-_^;2+i##!To7a+}1+s^ur8%L_yDzILffRrP z&(6n+ohO(DTS;jUqPJ@Wiw&3G-}Blyd|Jd1RPazKEv0*q=0yr}5v~nBr-jvM;P=mY zdf1Ig-bU?dH2{~~>S?P9elLC^_Z`hbFb$O&AQ?BzD8HKa^^||&VxRmS2*WC7m+$KF z1%aILjkoEpe$mF_wwYYDwJHE!_d~92Nsl!|EVH@4K6=wp+$TuTNw>)~phe38X zU*)!~+Pj#RBsY$}Ox<(e?9garbEG35#lArQ#vmSHJoxq8*yqfWg9B~Bv|aX}jLSjv z>J*jPep>uf^Qb;St;?W@L*N2nzicf?Zg;8?XWI9zyc-4j`SiJLu9l*w9!F+}*UyU_ z-=-a|*)#E2Z!MGj9z0{jHjbH&Eo!Z>ED z&UDQwo`CW9_eE5!cc`ZsCaSJ)XN1>Tc#VMC<5bHjJ6TJM7k3w|79YV#pA@>ea*jNm zq7B{^Y*1J%z<~@M--YA|9Xg;_fjN0bb&ahFn3U+=82{p$oHA-!IUUH$QQ@32_hC)d zTR%G$`zgcactP7{gnN5|r{sWW#i(b+=id97$^7BV?^4R`y+`Txp&h$26+ic=Xx|+S z-L$eX?BL*s1%J#^H&RpIVPJUFHLN4dkAiU9I7Ulo7J@@k7>4pbOc8Kiy za@X@^IZV=Jd`38Xb?Me_inlTl zB+2Vqc5W77s~qgo*Ot9}uY>oht(oHIduE4t**Rf8ma=W%wcXVc{nCL zDu}xmU)^wJ=bp7MYK&p5-^lxcJ>#XMDH+aU{m0`OM~FL~*BVgyy_cnPV_f{U7vHtF zi!G(dCQfmErL|=Tu?#d{npZ1(Hf?v@j^ci%d9Lz=l~i4qwC^*S%-m}aU?#p`6Tsl| z7KtGk$fKjkBIs5ZKUU?3f>Vi2&)d!lN}4V>aONCtzFVu?q+_?#;g$~%U7Kqg#9P+9 zTHiNT-X&za7ngfqWU2%-`hYd(jJRu;Liq>O8AdmYhu#_M+?t4sz*vi_tCI-$EGdFq57g+ z%5?-KE+32Dw_>ndaOL2!NC$?eB9KsU?qgLo{zAUQQGlQDNzmtPpU@9BFWdwG`=Zzx zx1BLXxYf?2XJVGFU6e%oy`!W5xxwYhUK&t`#}f zfU{C1GK5YFM9g(OlwDL2@X6svXWlcS_v5UVNrc>$i|Q(c)usxVJxW24<+}NP%V66(*gE2fIn*KA31v`=Hxq9w_YcO?op#7Gi>9 zF8b_K)`HlXY~|za+I*ByE8%j(C02|>cD;gFaRQj#A&m#w#+Sm!8)sr#I9h4r51*hrjQJaa+*+H^J7rchs2*g{yD zPyfNqeXaA4b0Cw0%g4e!6$P~=PBraw%w~%1YOvs1YEU5Z-8*|Y{u7n}YMAV`Jls|% z3Ro|viE7h2vcRzZw;gXq9iMq+J&s=wUm{NQg`wL@tkxxbGWCQFG6`w!1zUY zgtFFEu}W>Ia3zPm@-B(e+wGQDHV}4O(EF3DI9p|MZY9ANCI(f`BV@|^Kivu#63z@B zwNTpxg=Oz_&{`|Ta$UXos=>q6vIi7i(RL{f1e3606~ zorArvrMwp_asF#E93puaQ)v5Xm_9E%v z>L_M-p(vNfj+U29^PEGLqGTwb8ljY=Z0)wWn5(Jd2TKP=*q*gFE047bdi;xxyn7>f zwzo6h-#fN5E8p$pF^rJ+`0b2a0X;!C)tmRy)HE!Yza`?cbqU~(X8vlKPhS$}YXB4JGh1ig_oC3v&Q;X*gzfv@L&W zvThTrB5LJ_408~uL&IsZx5hRpuTCU=CC&oW>_ih1vxjx$gdDyi9 zb?2s4ze^S7mTfIJT;(U9OL-kxi{>mwJKJB1xSp4rCfIT-hie({bxNf~FTn?55q10G zrb!R8w17=<4MNgZV%{P5ZnoxQ#;@1zm&bRxDoG}y#D|Vb@_wyc z88_4K6AjRDefop2ZMosRw-P+p4qay3*F zloeVec&&bbC9>e3_kMYL&P^@`*lh{sfuAvIW!$mpoiSh;KwpV*`4)W+QL!l;lCbZB zp9yVAM~So-5bH8JJuAjuKWf%qiO0CLwuFmhcik#Rwgy}li$QXsj#g)(PI?&UH1Zyg zrU(LkpqG1j9(v=S0%T%bEK7fQrOmIMR@UaJQ8t&Sy}I&ZLMhl}1H|q*L4I&^``WF5 z9(+@}(7e3dyKb6p=6I72X!hhYNX(s=NRYHd?*+b=>rl-LOdrPw78^u%QaqRfFbda= zmhqFZnT5PoNMP1E>o|B+YU@@kUZZ-PkHVx{?ub}F?6_bk)fL|JI7r!^Qu8J6JW9OU z09yEJ0j13hkqkJnDS#l>bfFN<$4{_1i2Arz0KP|mBW9m=#?mbJKtxaY%2+&$!(IrW zodBYmo^OCe?W6hVL%Z~$C{5_kO54dbP3I;!u1)!-`yL^)O@eb)2 zD(|kg6e}!dAdAjL^FWWJur9)~gsmo*Oi!-w^3=!#e$biU8PW95cb!Qm&qAI5@IU!y~i$ zG`FJx#gyU|y~U(KUrFkOul8S%P&+Yjw6eAve<)`AQrX6>pTT;;BC<-bT>+ADNL3Uf zW;r6Y`c5>p*!TxnwR<$9X#Rvas82_`hidLwTFXdUl`rr45a=*6UCPR9y?opLg?z#K z@yOI$L$z%KcHnHCQ;aCUl7`1;Y}>YN+cRfu+qP}nwr$(CZDY^F-Q8@mZ=I^{r%F0q z)nC<5_M&4XmKM~9Vjyb++XWJllgbzf2ZBPX)D- zHVX31*KIIe=WlXMmE@-Tp<)$o**=FXFVDOw$k8;d#m?3NP8QdwJ0=XMYGZL=ELrP)ZETxqyQf1|Wm%rVoI=Es}w8aK{roYNy<})U={14no8}$$#Ik=>n$N&&8yg!Ehb6>SZ~{EgH?mP zZ^e}bvP`8x+lQC6%2PTUU?WAvt54A&FnU)=SZTaNINL1~#*UA<>lCa0M>^b0SX)%; zA+69U*FSZ#W=@N{JhTp$kDwHhzTR7@?DK8%>X{ob@bP&-ceEPqe`o$6@taFz747%uQMCb@lh%!nWX@5uqT)VlNhnr zs;RU;<1k1lW?L5E?n`e5H8r+ehd(r3B3Eiu0ggQ$qK3OV;-Z=2)UIX5qSi9i2z491 zH=lD0k$(5CsC8C2I>xE(E#mt*>N?xDHEO#gVgIhqm4Z=HVHHQqnImb6U6OOU2;J4mZtHSafNZ;EZbH_e zS7AOYoPlyj+(XXHHcX$X2U^{q9sUpaPYKcqU=M(;ZMc6Ii2b!H}inx(V zqQ>dzGX2uvYh!P7y85-e#nJ+uFeiIm2i9HewMjoyyc!ypd|+?vh_RMM9TSVP)b8t&k2BJQmb7drjO>+ ziOi%Cckhg9h%YGR=jHAwTjqM#5g#mPR(gL2=?ey#}+UyJj`S| z(rLA$-85R!dnAnM!;e;)q{6O&21qI!K*5j;r*t3NaN^iC%I;X2cILag+QErPp} zl&7OMy0S5y=)p<^rt&Sa_11PiyIb>sPtj~5eWjTDkk1GtB@KXZNUlzd7va>a``6T6 zqg6(j0F8fKO3$es-O%9g@55_!d_g$c(jt*Wtnx@fR);lO{t0Kb`f^t*=1O*bK&#Wu z&v*Y(WvQ?AUaCD-GIny?+Gr?GAP(lCH6`p68_)2P8gN@IK8Ta4+Xt`HET@v z&*`n=71jEb8_VFtmX;T>^EJ!K$_((4!0Yml>yBuHM@s_$vQj&BCA(RdGqvv%0wyGW zp^Nmu0(>$zrj6p5q3)q3O{k_Yfft)LRDls+TNb7}&8z2KE-K#r9iRFhn_BjRsExCt zvUaL-y=grHL=7Vi1Dpd9(}FArTgkSxj8HTubu<2O^RYZ>Lr9Ew1WgOYFjXpNeS?|})-fk6! zw>mLF1hWZP>I*LE^Zb#@_H660^+K^tUjuL~JU7$mO!2`2 z_ox>;L5#u-{1dWmN(eJ)Ktkzd(|6&h!=DhWg}3F)FqNn3M6`x52b z9Xcu;T));U{|Z>oQ70E;jSBdp@)>thbU-q}YRo zggho}WL_U)9Oli?b~}8cO{X{BzM%H!93So%t1%oHJF+=GEBk?Ac)7owjVL!-+LKyM z=J$zpYVumA>Xj7q9L%gH1?I?%HljIOTzsC1zW)%P>wRw-=oo?iB3q(f{j~{vU{@UG z592W)2){F-#mzZ-{joNY2nMJ!D5iGoz{_eG@p8HcX9xzT@t>jPO2viZ0LSMxmeZlW z2~z``Dg5%M({#>MmC$ppc8XeoYivE|wsJY{NZ1SOKw$!@G@ybSjGRC(WJa|c~SqaDlDWS1iSAIPES6 zF*KYAYb}DxG3a}eD=9@{e)s(Rfo?)tq z*W6xV-Aze`-|JJ-Pf2LBP#fOQ=lCT%X6@g`6!%sgD`TeK-UpV+_lD6!6xb=CEI(dl zm;@DDkfZk&GY~JiThDoz)v$;Rul2u0Esn%mL;2vpO zq9sc-tKFY$6PnBS;#*hKwm#?O-n0>p+3TaQl- zczvL_U4~5n)(?C$zGz*f&jza-V&zFvLiN-v36pbUW-_%k4}JqmF2@@H!jCtW&P_mM zX-Lu7w}IE^0#qCH1#^J4HSj{e(s)GbpvXuWBcS#>nix30QCfP_91sw)$5PA5?hlXK zN9TW*rC4)MPB7T82WKBNtL;KEj=xWj?LizCAkxM2+38ol|4OR)rn`&?)E7L3tAS(c zC1-N^(1gW9exei*49*0NtAL7<)CMn^0i=ML#MO&owoyK88wk(??(Iwge(+4{)h3Le z$N?~^3xO(I+niuYuZh-jz9ljHsK%!)a~&t?q#KuMGHIR^0wUqrUtC=W zQAy5(?KLN<+wcdW7XdnC7dK85CRtcT`2aa|<)+B(0VDa{K&@!asqZK@w*n047?c%* zent_UK<4AiALTiaEmnA~$Rc@_>Lk?Pe?1?KD7r3~Y0ox3kB7X9zbd{d#a96gfH#F` zKb_@t=J#!M@fP*UvEow$p7DnDC~Y~9nBdL=iT!k=^?%@5>7XNyEx>vXi?|L$u(Mzy zk<7vSS^Ifz6$l+;jCuzXlcRbE<)LF3?lgSM_}Jp2zN>y&-blDK9k5djD(RJpLYK@Q zr9Gm@Dd-GhM1~e+ItQUC#K>exNW6VG{AsWrUnrzBo~c7BJ)7SMheA?9#$G zp#d)Aqy522{4tb;;GO~B>9JRwi5eH`4iPI4Tj0@|2<4-mx$=%R_o2C5($ebn)^BY3 zRvZISMg<7g zH=9~3^{fVpBF#CG7Rb2zju7n^0V-ar?zU5_UK}*m}ODaqf9P3&ud5xNRw|fu~r(ZI(_E zUO#! zCAw9|q}#HOnzBD{Kb!}8-sr{+=Y%y@$%50z!|44E*aEd(zkXl@b{dk?!Ph-*WauMRSX5K%}HzXLS{6*&RB`1wHqz z3`|f43`7z#*&;&n*f7vk`t%%Rz(w)&75U#ISjAVUCzy4CCH#rA=NVUiE`g7rL_<0@ zTj{ms!Cqxm!ZRZQBhgM_K}2h3DrC8g?u;|!#`+X+ZNQwD>7E6(?^P7ic-t^6tJ#vGRi&HbOhU@e+(2F!Y zV-m)bIhlSA^c~)=Rja*X9(o3BWm%K+T%;f+k6m!PuRR8EO z7_xf9T8DehXC)9YpmV5B)R4x-&JY7)$C-u8XDad>Oec$-4a?X03A75EH%>7Yf$Nwv ztV}vQ)=ZnqnegL;H*(ZHm}Eu?ps>s2o?SHh{Wj|SIjZoq5_E}OBo|x1hA8yjTscN- zps3Bx2>>7)8#tI(G4=KM7MRazCFgUrLx8$R=@4M7QV4ie3wm{wkH^bw;-_1A8I+|L z1!gv|+7H6Xe6S8WU|>L85kecIa=3Uvn{?5J*;(XV4bODxHeVdxgiO5k&H2ujrkR+! zOg!O%WV~m1OEvxSjWy1y>qDi66es?N53t*#L^7p$v%vY)qIM(O3SN(Sv%E-nN!3l# zg@>9zvWh{fCDQVAuHii_h(dHpy09lL-OwdyJDc04%d||=Kc_p{@*!J#7PFF3*;LIc z|B4R8!4g74OEIkP9tJUc`6%)ECT$@sf$|3M%J8g#y_;;N^VfSQxY>PyJYe}6P-}WZ zexgwv9AVJeDI*-rr63VmJPj zr3rHGtqd2HC+Z&bzz~AzI<+5>aR}{AZINoA03)FG_bwQ$Gt|>&e?Rgm$61XG!Fcut zl!>ZVUg?(xGchKTVATg?Y`UHhf%NpC%F!l9Hz{M^bzSqEVW60W)=+Hq-Qp<&2^uV< zWRSPqmX~Yz8sc~@q;YD9CQbxFZ=mrgC~1g7Kv6}S>#FwrdZTrfogBxiXswq|p*y|w zuAbTeM1~R-n#2m9i3<#v@^Yp!BIa35ovQZ&!pjuAv&Y9<#pf3Y`o2Bp0hrOCuTwE52TZX+=`)IjHq)`;{+#G{CVFZb0K4H4`C}Jk(1M| z8_32zD6vYU#)|=$BT)ridIe>(L0(n*I@K8H;UeX?!?k|P={}`!nc^R8Y_AzhZMkZk zm8RVHkC)5>B8(L97TB62MCz8-G(v4H5YyBJJa!Qm?=vaCnD?In;qY7gmwu90(=JZb zqpWCX_qYF9=$|703xNDW1HD9{@LHv{fuT|)YvUP?hcV6URCy)uQ~8jq`tP}nBs!&y zwUK=X^9xpr1r)>W(q(I{DGOHAN`a2|B0CNiD5qChB(ZYz$6Zd3M*bxaG-e1yu)ik> znmfFf@~3xdbX{)7$0n<7PNpynE&>rjbVHMQHH00TLgO8L_-Hu8JSSK2wdG>o7#!Mw zIrX_oSo@~Q)!5MZP2(cfkf-pAY}%XPr(t^c)$>?8^^cF#oh09NTNN7mjE6#uFjNpW zORo{V-)d*rCu)6JxgP{S@1X&?)EdfhHC#ME2d6{tAnzHWBU6mo(r+%u#krALaPtPD zJ~xt*?g^j9Z*--Ku9T&klkwOgk&KXgp^N0D=(B6NvdSLj(0Q~J&F;B_Y8`q5*ULfv}EOsmVJ1iJ;{AU^B4wJlE39j8*B`7S`Yp< z+YRjujHJR8?{%jb4Y`YU9cNsAC^+zHydy*X6#}`#CEWy*uaB@D&U7S$z#)f)??CLV zlj>vI>iiQpZ?|m_;|(+jN&INn6-d97uP_8=9)gv0R^L-e#C<3(wH-yDCmT_}$TXv5 zu4nDF;}iLjvmRXk%F%lUI(`2ko&yv6B0`xx*kks{bORD`XXy;h;%M6<#}=I0(FcHC zfSQKS(XDoP|E((AmrwnXhqP>Rm3EX0xeal3;gMG>*{R3XrB};HY-~nZ>BUIO&fqVJ zgp--xK`nfZ&}gmt>Ol7pfx5MLEA}Q@5A5gO6Hm@or$sKYjv!S#ZWwQ(Pr`Gf%xg*V zuA*Su?1vIxc{g(YSLYDLZhG;aVdUkIzCx^IQj=n?N^`oaQMkrCtRC`|PJm`yf8@o~r7;(Fg34Nxntpwfe%f zI3W9%;tI#(Is_u)TrJc48yQ;uuM&v^kd9E8ovAHy*_GfF0JUxt4$@p*t;8kVg-@A# zHu3v+{_usZ*%(z~>*4c%EhSyu(x^>R7u6M6Y5CH5;nSwx+%7R&UN~!pQTUo@l0$i3 ziUUechm>PjVG$nimrtz14Z5$BIiF*d2mf{sHZp;$KYcBJX6!FS{vF|FaPc4Sq@S?I zvyl_;=$%TSQPZ(L9ogD!S^u6)^>YZ{jH^!`U8foMy1<)-_)i_)+bZ@EUS5OJ|{{$O^ud+NxGR2Y?yTbm_> z94Yi9j5x}6KcalzFE16|(21KPm&46~N+`BCv51=+fORIs_k+N&>4BPkNODFGQj(V*Q$nP%lQ+<**a4jV$_G0G|9u0)Na>fzZ7&U z#c&mxk&9AP=d&8F3;YL1eWd(m@OLvaTDBGa8`ESQpWOAP1Y%&FAsTMg8~^>~Xc;)+ zOK%UF=KY-=?nPEmyl<`UsMNS`GkdS_BfLX@H3!JcP+RZvlF8YBcq@05LpzW-fEDvI z0ye2m>y?IRDIoDom{JIIA4Vq`Cxkt9B}@9DK%O-@<(2^b;&iA|PDj7$9feD(6LD6x zFmpLZ^Q*kQbdFxHwdj>;rDqSA>NGYMzYLZha1}QU|7MU$C1Ftp;hUgeWTFx;SNQvH zN%33vgs07;hLcFQWbLYS0=w4RdrsdG53XJTHnx8P@1?L%8fZ{`||uUG$d^#ZjyuM0c`E|rW+_vU1E!`G;rb(jTsXC zdb=k)pOD-vgh`j@*>0Q7cuAl7bm8mUwDNeqD;kRBihH)?n?@A zZ>emrx?64(S9+R))z@bt+Vx@>$u(VJ_TRrd#)Hy=f?GJgoD%5XlgU*h8~q_~->7_Z z5-U?7J=_^jS5ODtcKezJe*1%~;cy-c$HrT2!a5eE9&s~F04A$|ygEQgb_$Q=0$C7` z;A4`9tGzmJS2f-4jMk64YsU3)@Hl;pML51U>291k}8*lOIwbIrK>eu z$ehv08H%qRB=*P$f=#l(GSY>~0=b8GLcwJyC>t_GO=zBCqVzA|hW{ z(VsbN1gB&anBDL65g)LaUxgkELW|K&DXqS|@IXFf$ItIL2etqlt?;LSZ(PqqCE`A_ z!po!vbFxD>?ghtEi$FQN0H$h2~4M@E82(5?~ABoK~o<}A9N2> z(^RxA7Ub_xO4ODFS2-{hZwyLunl^{~X*v6M}I2=Tw=?fsE%toGST z6B4;rTjM?_CO^W^HK&6ltKYPEV>4bTl_vOCA;|UEkJ+pWifGgo+^E$sZ)ZZY@!{ce zez~FDH>jq739fX>v>e~oJs-4*=x0_l-dr25>ggSWvD1z?5{&+mOb!oe){=UlHFrs& z#1p$JQfGN3-3Z zQ@&=!*nbiD>h12cQH7|P=;un#T$28F*^^R$U_NTp&IRboCSectbfLUgnpng$AM;qO zAEj)3i&y=r{T*POZ18{Y4R_syh;bS|am_ys!lfPY4lDPFLOl!*FA$RcdVL=LY%ww? z$*UKL99Gi4>0+q=p4NHRk*kRLQVot4{%|QmM`C%|_Jy0S5#mYpC7^w;)v>WU;*K-y z`RLL@Ct)}8D!;Lp*Hqu)@q;+Lf7FclEBR!zlNfv|we69#;S7f>Rl7^eT#R5t<*;}O zYB7TF(Q#o;Ns#CeXX<@n`(imf{A*W=rMlsKa8IR`V0QNaXzJ*QjFM@8!T4mw-ls*49lqg+Gw1mSiVf#eokjRvlu)U)YrP^ zAckhME$t?S>uZGFf$<0y@#gr!kG{gyqVuq@k>-gcy-is-0)gG6%ki1ESNG8%S}%1Y zG?8AXD_8?lNJax7z8~41@2269rN4{5Mqr45I7Pm8wRcpONg<+k9dfa+Fuyk?)gh}BFa8C$PU{5VBVYP9r^=sZL z(rer);0HDjU;YDeYBp-!VPSoKv8Fo|kwSzJ7QJt*^y0$@iM1{tzpq)1N7Q8Z?&_ng zf)1o6A7)CzDCZoFSz!7z30 z%e~t2jPQ8z;nnhJbIL;hE`MB=s`|t576}ZF8eVm z7N5X(;u;+{TaQd83@atI(Y7}xst|n;1ve|w8-QLP3>O*9CVZFdh7H#SG>3N^DWlNj zF?S<$(sq@4jQkDnt8|l`q11m#C1?R)15vD|dVJ|)A&uCEKe2lkYoQ?jsmRCVHY%I^ zCwXIpNVW9jNjzGp^n&g7g6|b)sx7aMJ1d#XG|=^Yq%&a%pM@aJc_bqwGT*U!9~yK7 z%$Gdz*82r*24q#b5T&EZ{!e#X#974GMksFjXBx@rk_sVv=qe7U4s5oI1o3y%bD zyS*05=Z+rj2a3m2UTxTw-@r!vTvw~=pJVDzlG?U!>%;l1MFm+F-h24HQ49YXK^zhQ z(J#H2ji0k^6@ZwdIZcyjJHqIaoU-IX4Dw{!%2z^&9B;@T?W9B;tv!dK)0HEtM&280 zT9{B#->WtXqV?Fk+)2Lyd_4w4>$sOsIjHN_coU`_F>nZ0!n;htnyW+_W78CKjrP8a zplp-SJ9%Zd#Agy~euyWeIqoA0Y|+n{V}=_S z{b|71E&M;oEgj#=4~*;l{ms28SQiby)-TcWBQ^-bN!@%1;-QT+LWX;KdBC!%I+A-3 zT;Rrr|7O>*s&XKi#}1@D9iV1lypg$vMAyT_Lf{wu{3TSRJ>*V$td#|v(a!rjkS1BN zY+%CR2bKdMryDt$uALWuRNcCA1#3<4B6H@EN2Gt2Zb}N{tp&rG@vuCi$oY)$Y02ud?4ka7>e=V*!W&PoC^S9OZ) zKF7)IUldc{kvuzWv~thasWP1&Ph{x8s9IpjgG~Jm8@uG{-=EVfL30?fJ@1LGVf%~V zBA`%Yq&6FrMpP0@N>)ZB4LA4HBo)yI&KeI;MiM?(z;q53nc6)3__3fg$!I<|*tsGj z`^>nY6wLnme$J>4>&?{2X9a-o@m+0zrQHc~{Q_rENVM-^*%Mj#l*rtGB_LswFYCz7 z-~w1tu{%bq#Fahrx{N8=g-g2Z;U5pZ<_EKr~qI<-Axs ztpY+wv-Jz}HUaGf%N$)*$V28kJMD=7PNEeTgi1AB!<^-NuQ>rPGkhWmHAJW0pyw1< z7bn<~QF!i``jxbO*YHug`(Q&E!zPRs2MZF=BP~#*kmiCfidmS&0Xillf+nV^I9asH z9O4uNC}3tWo=1c&xK3RZF8JZt(9fUoSag#Tc~YzgZ0FF26Eu2XbhK zPE}rr{YsPV(r7?H7x?7QN2gqu)AfqrSsx*2``1lDa(;G7ust^XVfp;>Jk5^irYAYk z%_2Z|)G29>HsGd;&AiXBEJ`O%HnroPrQwq0mqJS8ny)jIZu!^nmFD=zk61>~a$(l4 zgj>VUGy+9FbbA(~xddK7dwt8jQBonM&PuC*(*1xx9NGj!x8Eu&!suAk2Wd3eh6afo z=BHfeJ347NB&|CMmFY{LJ4)%XuoXVOmYgrF8G05*b!V)|zz+xP*hI@`g#K^nn zd~QXd^@*x~(q%2FhpmySdUOByLCu;`_eF7%V*5{quFvl4Dt4{ZDHL_34;>uxn${uV zxE4N{d{~y<1RFSulrlg09vqSU#OG$)3nnnlEGyCC7ROClp6VZB%*bPUd^ij=k1KLa z*0zFv9;@>}2bO{e*r|>CNSH+rwl(W{AB_0=(Lc$F7EGi7k-fR=RF*Q)@0;rNg*uSy zw|`3CrX!9PQtVEtRCi@>tx7x8gP$$>o;Cj~cVSHQS}+-~tr1TFt0st2m6vpG*ULmW zzJ;%`6{8c#$n+tPX-h`a@x6=Ab8!@nx{bkmVGFkCJ~j9Zvx5FXNv8r$rX|UU9qS>{ z%W?FI(v3`ipx7*iHBm&JjvaIyht0?X*(SX}CV>@S1fDqa2vlSUwkxB3r4z#LBqhES zXvLNvTiX{wpNCDSmg!_B&F|iv>bn)eJ6PSuosRv{(3-MHdZkHxo^>Q%jlXi47Bu^I z(PsNIOb%@gQO3Y;5X*E3XvO5qhFoRl@l!|fum^-BT0Gpzvo&f=D4w*nA2+ zt)xq8qwmn14Pg?Ehm&?uMiJi>dfER~+aRuJ1d4?^yb({Cu6sYvNlp;CTn2*6yJ4xJ zzHu~ZV!Lo-z83Q45qIH%w~}rHVWm}c%Ue2J*Tre6^%-w3N5iX^&w&Wed-cK%;bZ)O zh2Yw?h0-GviE(IYzM;HkB$jubx^>5#-C+7ollS-3eqvyGSxZn+Hy%uu0T!*7OGC~c z-Yd9!v}Pr~B;S4ztYD=$WiCx;l+5^Dzr+g{ei5YoE&iZRle}=CKG2SN{UpD%)O3D) zFQwSOpQEr;7Y@_MLBewOr+$)~$$S_`@lIKIg$9_-os``a=G(FnPNbVjx||$h_nK=C zaaHFXWT@BW;LLH$0N>1y7d~-oPSW@YXwYr07w^<*=qn~QA)&zCSnH*=^x_Z_0E1Ou z8N8zH1acbi$)Q}cyVXNOW}5qXNEn{1b3<(#W7>IcC%`x_tp>C)-fD6Ecj%dLyj6C;F87 zD+Ljsveec+vLtXyf*4ORi^H7M2G^9=(RVmk1Dh#I7d2MkuI}7th|ng( zB{4C4SOkB|0#qU0w#2o$o?U-y?DR~z8i0Y4ZXb^pJQr5$%=GW4A~NLDH+Jfq{9`DQ zDrt*P-J_u#vgVSP8Uj&J<^y|Vk{m_x0IqEm_}%M;QWA`4)uY+d{o?e)F6n!=31Ac1 z+G}}H)E4J!Em+gCMTtBy*n}+O8`&rPyrt35eTC&GB*bq;fl7T9)yD7Va;JsV>QaoC`wClcHt0UCoNxL81H#T`x$6py#lc8^#Sz0K^~SpCUt@o_q2l4oIjv8FuJiF8@sqOk>KB`_-srNsFR-(+ zo-~f4QIU^N?OPlZ_8!RXP^x<`5;mf#Y6KleX15hU8jgJjXi{58c^auK=oPb5X{PCW z^@}fJ53=qN8!MZ(nrBQG^j=MD!lLUwf5aK?_c^<9PrnQK-;W64d=ytSWDc+ru z57qgDm?jc8A>HbN_r6$W_X8L8Y7_5Bo+`6r;Kt5i(f#8(uu(zj?zVD-?j|gg{XXIG zznniBn1jE~*LX2)uct7t#xwdV0O(`g(>Q-LMC&%`_4&3IjiVD z6L~N8W`~DXD)tSoIIKQw5{1OC7M~w5s%Bw~2CAikY);qAX>#z7bVQVJ-kwmoP1w|> zZ%`Q|afUk6hfImx1C|OR@YO3jVa3fnNHfbRaxNuUHKA}5Oj}TH01y@Ec|Vml9cBnl z?9k@|ZggI7qTQTRK-icsSJ`+TMu1gQ+hu9!Y&hdpf0YmUm6N6Z=h`pTo^iEG_u@ zT?^qQDtWeqbP@~e*>sPqin0tkpFe9g<^2VXT7Nc^PK6oaAZjeF8aS7-Hs`rJR%45G zT{?~@XM);MzU|Bp(!qzKvgZLj=mpy{3T3y@_ywM3iT3q?C63V;7TPO6ZFwE`~ z(w5XRy{Xp6(nhGX8k5X$H7?g3GaB2h<&5!EeVWJSrfX9b1Wk z1A4~D>282IKg)Q4$o+k}9RF;u9P!UAzRt&bBOONToQ9^Gy{k}BS@yvv9=lAMCT00d zBnxJBG>ji1`(y4c0(Qh@$hldI;J6mJdkrq*41kuHnV7M^elsIK;4kfGC-0zc;0ECy zMUsK8AYK4TF3VPv#j?1%=LnVZa5uA635}^}pw;c4RU}l@6OFW>?`+QbothH6jcK9w z#;i5G&eaejB4GA~KF~Xjg0Lm;$8tZ2nlQV~ONrG04<=1#)f`8QP9zCQFpIDfut(yo zKg&NCy1s)7-AN_*8?4vWcuQOP@FoV*d2CdFshsrXGW~GuSzCQiKr<}SvgcArKhh-XothA3&82`-u)EfIn`ptH<)WK?Y?Fgz|r=CJseRZOXe%b#ye#rEMd zY8~6_*8pGmWK+tNqo*jb*YpWo_!dBN0EP=HP5gr^&xcL~a7CWuzC*jq#B& z*yKC_cG<`POlqY;N#!<;LvY=&RUZgSUw0}y*T+6H{aDkg+Y`R6atG9Burj2`1Ky49 zxh+z^k%U0FeVOZ8d1xSMtXTU(2F)M_bCVG z@jOk9&w36V4t5%EJoX?4q+MuD4bRc`ch72Y!gmqUx6@GT4{dpU;P+npvKe^?l!Z0q zy$1j#FTZ`9BBbuMsL8`-k3|DJw5yKqdzrb)QL$ecW?zv1>@f}OnFN1?x-=m}Yz04U zeXZPHuvWC{=sr01<#)dL^0hr$se3~4t+Mgsicn&*lx(8h1Ehl8jMIfvAFNmD{gAQh z6Dd#6el7;hDrU*`kPNls)LvD4*&nxJqb;rVI@K$i1Zj3nu3RS=GFezoUYV;SF@?kN zUPmc+XMcaL-4qvSWD-Hiu8dxTBxxAu-1>~P0kEuUgnrr3nt$Y^^&+35SR$dF?fZ0s zCk(lBBn)2t0AD|uCY`m0?x5pOr@K^aS<~r96T8xes^Os%0p>L26)H^O2&6^Jm@_#R zwJRsf>%JowjR*lS_gmcs3G4^}jt4B0F*VZ-TyYSTX~MuSWNT>PiLDTOznH1E%yHr! zw$;ehcdK5oD}D-V2RT^dBZFk^=y(DIe~)G`U|xvbqYUn^nO?SP-0@;=vGVyq7riV8 z&waPu=(NWR;&ueW;Q?>>QZl*G!rra6!8W$V_v7~aiS9U?jwEY*aV(I;AIs*7W#8x4 zSl^yr$#2?0Kn-j@VrN?S2+bp%@r(Qk1m`qu=5@oZ{KJ`*5-kJD*UHkU(4Yvecg+k) z`!h@=6;bG*l2Bxi(C}3dEcbTzMo9EkI{xXktOHDSS{M<^XpZT(^r_@9fv51}g|Tp; z4yopv=4%W{K%zgDy`TnOu~n?BI=w#GDjFW!JI9espTx0+L`yT9JE)d6y!Rp>2~4s| zx4EhBuV^CkD_{+=#saZLg_h4omm-2X@frc`DFm zAoS!#w1X*uCSy(=M#_vSp1Y)1{WFDL=?&_~=k{;Wma1M)b3u~;+)^G6^lt1EK{fCd zR$!bV$YXafcR4I7ISD&_44gRVrkQ>QQ2@6^N}pEhQNfiuLjtU+8l}P9<-7v(^W$%T z7nuQI^IE`OXEaNzj3;lforoD$5*m{UngV?uvcGu9ypS&TlJ*xE8E^hK14G?9}LDme0ec5g)$h@@vt z^LZ>Z5s3t7{7WhE(W(eYK7?;p{V(PAR0u>|1jn%toL`e?Llb_A#J!=&<|ucejXPK- zJYuLxoAII35acHO_?5yAv}^_V=W#rBIZyJQXgdpht9xa?LrIVTCXTNlSDi2V`pg`a zAxHBll?9aH50dr){`Ty<5>6PIfYT}Jfqx#;m z1EJD;-7VF`u?*1?imt9+qduI`o#xVJ*nD;$>d|cSa$|JZ!j$ybI4TxUqN!=2eb~L& zdCoK);$I>)1i8$>8U>g}45cpu<0=F^^ba9vbPbGJSc}jBzeyARcJ#l-=)x00IRUKZ zjfeEV*A*F=b|~F&i)h2|pSc$YVZ_fMfwjcuF@c;K(w|0oh4(xT?!$`sJni*0vyBPj2{n(gUOSYXmX)>M)Q|#@zV>QHP_e~WWx|$N zB@lwcY^AaY$O?`ip9{OEh_g3~e`r;K)(?c7@(M)#W>rF!OB<@$SEtU%8EEixL%k36 zl4LF#Y}+9xot88o)Yw@ttcqF`CZ6*y@$w^l8GlZ@fHAU995*TR1UC8++9`8%YGl*- z*f}DlXMnk`DhGA(#4kj6aBms^CYn;JV2V+n4`nSb7>Y|xb07Lv>aC2XQ)3uBCFD-K zU1dbxN#dH>`?;BcfbnqkG~698S48X`kfx*qrX0|4pP9}sT(b*gK?I1vH3Tb{@86?} z07p-1p^mPLPs6qmtfE3T8*)|0z?4k(dKse#l#mK-PE z5*0cpx;?JB<$9kzGE5sk=K-(!r>7Zwt@H01geFhFYQP}!}L zpI-{2ab&d}%?hZb@x+7JMe$D)Abi3YuG{^@uHKxvO^I>)vygz4*b|jRV4=P;X{bRY zu}CY$Plq`G%lrfW_fK#Pgv!`0i|Y1u*@wPITYRu6gCq~%l_%p=3{Wa@p%UG!%j5L` zhq$Pxr$C0`b&1r8q(G-{B5TyHHMe43IKkX&qIQE;U?({G$FL(FiUNVwPK})`VwGyb z+ANbvD0??jROVkXv1`&{h<0&f8VS`%f$5+@%XG~X3{8*5cHS)oQ7%=<2;GyJrGl9k zJibztyt7*&xYbrzEoLx<^y-O1%!!qcNTWv7qOye+!HDoBj7kCw?^X)XC!#4){_+!< z6I7Fvoqp+82#)z}RmJ@CW6W_`%0zEJL~5u#FK1Lu=%6LxfEp<;EyllRghU1jj#yk8=8>loqev9DuKGrlHlkXLf zO~{p;$FEo}NKRzK?hs6>CX>vm=Mo6$<(JKNOQfC+Cl3d;0B!iQ(97ChQOb|J+*gqq zW{+47WfQ2ltU<7fPYOa%C_>PovA{uB4bJjCL<#)w<3gy!M7}>myn;VTCzwo1PiP{T zm}tE+^o;+ia0??1sQWDA9$*Hopfl}a2FpTB>yX0U6ezzF;Srk7;qgua2-d|>VI#=3 z8FbL!$2Jb_duU5Wq@U0*#mv8f#VCJCA6T_gdJ3~*A*fb6atO+TpBBtHD+?JDmB$e{ z#{Osl?ukDJKW&|_^305u2z@HH^~L7@)o-q8`3jAgAK&DRmQiBS*3%s>_Ko(2SP4U- z0Qa@YfIv!PHES?w9YIL~}+N_X!Knv)l7_f?0$;Z6jBa-TpI=qUZ+Z_o{_Cc-S70G$S@gv8h$ zPN#E-kD=g&qR{><(XSYl`fM0UgmBgG@6SO~(G8GD6Wv0A{#R-3a~azt5S}yM=^cd8 z<>mVb^mY5V+-(k{vQjbereX^is%V!#s`aR*64xeYj!MAJE%p(MyI0^QwLan1rByuq zq9t@A+6&Owux4tpD&*yHEi)J!E(8!^ckt{!f8^lA4T*z%Syu6RzUTUDM!X4ZbUUN+ zV{shYIsaKg2nPuQ=~4)!Qi;MWEUa921Gf$kM%j>>i-rV5uL?f=)DCH#+96g5tNXQg z;SlSi*+X`oeU3T>#;@EkMQ)?0IF@EPNAJL}SU>svn*tglsYHCfy?CZq@Y)Dw*V?{f zD@8BV4q_N$LQUsNQ65A+MFeQ3{_uR#NH3kjcWBV>Jq2~xQ!f|r`{{D=tGee)b=Ql+ z|HJpz^g z|7mppljwFbwsE3!`j3YCKe_t0vvPy0e+U$b#*2XVH@{bJ3g=L2w65MIXk2!f5y^ zwQ=3lu4QboFQ(2;c?R9m)=y!lxfI{wm>g#V``KTn@vl<^BYXg_8E94ZzY{xRqy)M$ z)Xg$-m(zj~+PtN&W`7+M85JMb9!b;x!|!L~=JsD3i>*uGcc(`&0Bp zNKV|_c4>ehER2e|v_V_ILbXgj_wob4!h@Rh^~t#z^SS0cK|6i}APiQs9w%S>8-$?O zSH5}MXpaUyD3x@*;w=}cx3m4KE9)gL3|hgO$3Kx)aOlY9xh}ta0J+&~zpTh=458#W zmrji8;&L5e7CMBVW7i_nHA)3X7ETB%;#f3F0q~vYN7Oxl|2KHMCaJXw|AOZR1OPz$ z{|3+4P2bwi%Gi-k$ky6g-^R$1_CFR{Lr3d4Da%WK=-^kd-_SrcSP-m^E6c=b7$=1U zLA2r~C9!DGLky;b%OaBB?kGHOtqv>+(;lL1*|qEX>vxrFdrws>OC&S3Dz8QK*8i&Q zETE$5+P+T>A*sTUf^?@0AtGJUEetil&(H&APp)hpnxOYh!P@=KLuv&>C)UTxJfs>q6b&AH z;b)?%=-Mi`K*fzfzoj&+ABdEtt=$0CZe&rvAS!-ltn_>q_Cs52ZC!XgFob5-Mhi0Ia~bqRd{)4=SW4N_c~Ab^O4oHp0xKA z&xkDtO|Z($v~tvsjgro8CSeaxQx0cHNy+(1oY8T8sz$a9XR)5#92c+fAxnSEM75D> z_+{7(VsS%HNRSc zJJ97WnkF&U&~`$cNCwE#6OxLJ5xZwq6iEe96lT%16YO|Zr|N4~xW6ChE{7h^gfob6 zDo=du(i>=YdA=U908Rt$-*TL6;!o>@7x#OE{j|aG>xPO$!m9PSCrJy%)EQ;9o{YW| z4L(gTJC8y^9FEs_KGz!Fwpt(_$_>g?z_OC$#u(Ss;$6ORRGqg&*G zho&uUTZbBaJn9;^w^^%)M56dJ@E7fzAlC~vsZ_@iIaSmpN-9Ovw#LzzgGs6q2duy9 zzpAc{Smg(MNp(!f{|d7GPX30CN2W|8V)0C~f+FW<@)~y_GP`d$W8IEaW>$m;+)o)mvzgis#4W4Dq+|jD4V6jwkH3%aw zIjo-%5fkewB_iCsjeaTv&m+&uL@^$X>`F}^{q`z1PMCN8t$F&cw|2U1k9sVwB*h!1 z4Z^jPX+={k{gLso4x#2}HOF6b8s=ECjD`qf-c9N?qJ5rHtLuyMs18(jW+{~<_Z811 z35ucmn4X~46JVHQbWgJV7G1FYd&}E7vqI9A;%;@!d+G%O$~ly)2Uf;OL^r!ORw|z5 zb2f6nDlHFvyAN5#PS*84DH;Wq{quIeabSc;ID?l;*TjFYR$?irBZ$PXthGpn>_=;D z5r~=Ty`qTV+6yiliW<;jWpc(HV_f@`tvVmaIHe1XK^CrXwJdxUq>PQ1K=ex{eaaiz zmoWwYSHXXa|0y#oe_^Cmq_EU0!U2SyL~mT8nn^Q=Qv>Xxvi&B8KS3^vAgzqsHsvSD zauu*v1z2DXFSl97$g$;aKclFt1?7ejJ{M~0NPftaQVz5)bw^V_C^7}}+9%^$@>3ER z<#2PqrTcr#WU|RuNbn%i8uD$NV2xs=elknnuGsU%*|s3tVhUMa{8$6i@ls!i_cD-+C@{xyP z5Yk1zX@V^|5n(vmZSl((rfX%W;t00kXJY7^q~f5ZWrE@h-vmhax3kG7JVH&tlO#rC z(7#Xr)R}xd&f|s9L-@c}(JZZbA*UQ_mbjTd+sSkZJvtG_Pv{Z_8BW-z8>4jeYS%~2 z6Q@18!R>h=%zS&rQAQ)EgCIw(&Vsk}9tB@{G}GH77o)Jxq{Pg_ZkU-WV=my|I{bW+ zkWk)}gb~B5+_|=he)~<$jQ$6*fkdV=3e5)b@KeYbPBi1VLA;=&vcS^#LV(#AxcQ4( zA(do845cM%fOX73fM>jxa<*m*1)=V7&9!tAc5t0fu{!B#@J_@IHf9Fl+)s8N;U~+> z%W=SxV)Q>#ODFw5gs?1Gg93{aD7A-vY-rf#HMf&EOW0w3<~$kKM@h9Sho8JLh|k%~ zq(8)S^RAiNNvgG!DSNwF9xH53F}3ZN-EI9g+C}i22w6=A!R&hUtjRtk&+7wY7>OZu zqOG(Y268>U`jNglf;Ux>3sJm_3&~={95%J@^H8g=SamHF%9>BVLsl_c5aFx4@;<(% zlIOl2x&9jz>L`=D!J7&$(`f0-Lo5=f-2I$W&I;3QOLVX61Uem1Xk0(*VUc6R#4riM z%lFlI1Ldu|ZR%%G1y^I)I&-p{;q{|Sn5namu&7B2ztSW_?~ohaxZycbUaKU5 zBB-wSIBKW?M^Fb&Vohv1!dK#UtksgB)I<3CF}F3W8TKTNDIOPh;qFSU!3!K<339&I z>er@YTLbJ@Tcw6lk*yG4yMr%+4J$}fyN-$X#sVU(uSBC0iuHC6%632NYlQTXyH^_; zx;=-t)*a*ieIP(p9V*EK`cVPqe;o)^;I7JW7Z;c%{DRC%)aparlptz?Zi$WX-mVN_ zXNYqm>Y-)n4Mmrv8W*wO=-#f(_qGQo_{mi_Mt$*OnXifdQU0T7B~{<c%K3)H@|GE{XZus&Glcrn*VCq89HsH7H_K7Y~}{r02R3zok6XuL-s%svtuhNsup zQ1(d}uerHo2&a(WarrT>{#HT7XxDdRtItg4@jD7eP)z(&K3>+K$~gv|gdpm5EYNU~ z*?v0Ooq%u{D9*jbx0ocj@E3~m_feBiv#ZDWsV#=laV7UcFl|H?PkV7h9_8vS1CK{N z!Yqh(O|Kgk%UgUIBnY< z$`O_5h7+IAY~vu2Z)#ysuy6jn`D4Zsx(8VaHBa4mj9+`THkXF#e%=|q-f@^cR(+x` zKHyKvK%(Nrvn$oTC3bSsHYK>WkVIprlROqLoXI!CC@|vlu%&VH+l5IXySoHbh>K3h z1{gA)06W8KdGIjWru{uU+nU2a#4#~)Hq)Wi5I^Oovd<8x zYqR&%aZ5m?ppVBHrVvQX;XhtFCcCB1I9oeIu)*x~)HaaHhT>*(n*%3onC7UVv@cY* zH71vKm`wWk7FP%_Eu#<*i{6Cy*`+xUaR)2;J3wZ~05bdP3G81wP1C^*Vg4_ncAa@y;z<$wDoD;>8{r8;oB2C* zF<<-lEo6s1;qLN;#Y9v2gbMm`3-=W4&79933y~4vX|LJ#l2J~rCFm`0dI_Y>1vwOl z860i8o~W}CE=gb>OKX>rYs9rB@6D=@qrc1E#H0B(D@v&_kUK`AEeI{+8(EZ&mCf%t z3Ku-ZbeZKChbEfYYpE5BQS}*tes~VC28`iFM=6lGR{cnqs(gk%8ZQ!J$_M80Y2)PV zrssqQBuoa;Dt%YNXitNn9$BB z(8L~QXDGFVx25m`#U$__?;7AVbT$+6xZkcNtIy) zpHOfo`;C*1tRjU<%zC^_(v14V7D#X>nH|EMfnxXXOr;eWx!Q4>Xbn$K#r)qgA|PN022SSFFOkoQ-z|6=r7RAr%Y}97+#4SOzQ5 zx6khSwst0YwTwKlR~_~IgJ%pYtwK@@EX}Z7D61=8JDzE{7p>S zv))><#!vG5=|}#w}vLLv)ql!l7s7J%t+>!TQ}yVks)gF9Oe!ts?8Pl+7rPO z$@O1a(+rW47TcsSgZWqD@@1XDuRg&)s+z9uW$~YAG;GjGsovk%cfxhQWj4% z5g(t0Z1s=ce97g7N*IG4_#i+@i)|IJ;mBpzMuI#m5vNlvpjSLE?U{24Q%&|Fb7r{g z2&a;xY|m%g__vUEsZUMIN?8KpFy8kPcFq|*crePG7*W$JqfURuMiEH!H5~g5F&p}^ zss_SM9b5bOXr;QgyKM5qK+vbPCg_jq&yq;rTN`4@u{z)cd+pm~hGy47Nt%KqpaY>& z0>{(y;NAz$xL;ZP4amnL>?m_u!uE^aOy56fR(*#Ph-%PIj5Jw8mPF|pv2E+0%_HE9 z3^7jJ^pU$rn_W#xrS;U?R)umyz&t_@=^B~9mP(> z6$BXqiQWenAmjAe#*SFCXcw53~$`Wmr^*d=gLG+rc)RVX`Fm4vZ z!v`jBhg_d%9Fbazu4oZ}1zzyqj}j9x3?r?f@7pstvL{yHIVC(ER8UFMkqh5?vD;Y@ z%1J+S-{Dw*t1rwT`^uBw+YhwD*TnUd zaHw8uMR-z{p-$nb*$zDT7?>}v60fO*!xKP1lpFqik&At@wp~N<2kx**GYpb}F5>Co z()qZi(28YstZQ5Xqj6ep$Ec0w$Z7AvgMkS@)e+SV;{%qxn${5TEsCK^uSs}XIyWg> z0BKS_H)K?UrhJPRdd$l{0H$Z0k&*e%)+=EoK=VB#ir!kNDlfd|ZqDvj{R>2!wo|9UmMi1xDs*%5Ht z{OoZ4wV!7%1;3oe{6Z1dpnR6dLlxyv-2_>bnx3GrU`hX3H_k2QFjbnSi|qmow8mVMf8_!A?T15@T9W&bEt3c71kXE}uWB_`+T zuQ21CU!xT)8^P(hE~}A0TcM11Nk~_9th!i-Vi984w$_ z1mZX5FjpA2gN20)90v6vvNl!9wgu-k%n}7?rVRcKTaq%~8ZvGxh*?^ype=qs#Mow%t;0 z(p10{v>y#ibF7HR(^*Vh$cMrkPEg~=pj43c&dNYcLlgc?yhmc-P~pk!0;3LHDpb7F zYI@GlspNU=1fkS+DuHjTqR+UTdv7&Pb=9x+2qQ7PVfc!#NWPTiobF$v?A9)1;p|+X z;6yI^`vr_GeIGpa`#O!g;!1C7!anybB9mGJg;Zp0;H63h)g0xyHHq+?py~5Lf-8U( ziGU&JCh!|7_3ylov6h!3+{KW~)7~z3NJ0h3?0`P{=1sS6ff)%nh$IynP!Me(4$HXu zT1(lN)+C7N@hZve+f`?0Vv+poh@PJGOnHX2HQ%X+=wwz;h1~WE&34T_PTYrE{CJ+~ zIZJ+DEA1T|PLI4iua&)mbH*>U$Q?&);=KGBRAFMeS zx-q9Te7%VfPDR2-&Vc7ty4n;Xbcav)jhJU1Ka-yX)(B;o_HO-Tr6u|zg2|6oddcnu z3I8DW!@1ll-xv6!oPuMTcQUj)K%<~#+RQ+C71@dU#Owirr;q!d(*)*o?I>Ntq`-R^ zQJM+rW8#+N+3XY7U|MD^?tw(n-|Ab0E_t<|Hl0p~qm#903DDJ{l^3yIkEbfyHc^%J z;3A9Sy?&2WZu)IVjRj_mVpO`}UFcy^ZE4CNc2VwV7z&l4)n3kuTE;&65Sk!KV?06! zM;&8HU3j7fi{x2Y@J);bh}`WLxC}B0>p09A;uTMf^irSiM^Nf2R2JR^dDLYN9+6Dt znRs)?Y9`8K==D(uqmUDitR8rn*3YcO1JE+^Ryz{D`6)523zEEah}zq=v9oTeD8OGa z>R0=AqL)Iqx?3#cYu!)8({itfa!68PyfCdJHzdObm;F_ zHO0RlxI>xGX$u_qJ7GZox1%(HPc=QPEnMxqH2Jusfc@W|OY48~t6T^-7e_eYYtMmp z8WK?B{N3)y-Y6(z6~F6taXSNwum;>Ymm|XR;!#&6bI*^@O@1Om#v?~LX7wK0;ea`9i5r3rrH8Z(L{M{Ze$7arn=8=CSUKy#mNWW^H ze@=IgzKVW9GW?$PU&LKC13SmD$6bZH@~p3tiRU2i#H&E(O6+POdaG?*V^bhNQS)iU5akV@>FXGXEDdK+@tLF~%D!F=I!iWD>!d2q+`~ Date: Wed, 19 Nov 2025 19:31:23 +0800 Subject: [PATCH 2/4] feat(managed): Add Team --- .../Modules/Schemas/Extensions/CBaseEntity.cs | 9 ++++++++- .../Modules/Schemas/Extensions/CBaseEntityImpl.cs | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs index 3afa100f2..750e48697 100644 --- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntity.cs @@ -1,4 +1,5 @@ using SwiftlyS2.Shared.Natives; +using SwiftlyS2.Shared.Players; namespace SwiftlyS2.Shared.SchemaDefinitions; @@ -17,6 +18,12 @@ public partial interface CBaseEntity /// Gets the absolute rotation of the entity. /// public QAngle? AbsRotation { get; } + + /// + /// Gets the team of the entity. + /// + public Team Team { get; set; } + /// /// Teleports the entity to the specified position, orientation, and velocity. /// @@ -25,7 +32,7 @@ public partial interface CBaseEntity /// The target position to move the entity to. If null, the entity's position is not changed. /// The target orientation to set for the entity. If null, the entity's orientation is not changed. /// The velocity to apply to the entity after teleportation. If null, the entity's velocity is not changed. - public void Teleport(Vector? position, QAngle? angle, Vector? velocity); + public void Teleport( Vector? position, QAngle? angle, Vector? velocity ); /// diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs index 0be83aebd..b05e38d8f 100644 --- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CBaseEntityImpl.cs @@ -1,5 +1,6 @@ using SwiftlyS2.Core.Natives; using SwiftlyS2.Shared.Natives; +using SwiftlyS2.Shared.Players; using SwiftlyS2.Shared.SchemaDefinitions; namespace SwiftlyS2.Core.SchemaDefinitions; @@ -15,6 +16,11 @@ public CEntitySubclassVDataBase VData { public Vector? AbsOrigin => CBodyComponent?.SceneNode?.AbsOrigin; public QAngle? AbsRotation => CBodyComponent?.SceneNode?.AbsRotation; + public Team Team { + get => (Team)TeamNum; + set => TeamNum = (byte)value; + } + public void Teleport( Vector? position, QAngle? angle, Vector? velocity ) { unsafe From 072d37d06b82701a31f75ee238b46f5f370fede0 Mon Sep 17 00:00:00 2001 From: samyyc Date: Wed, 19 Nov 2025 19:55:03 +0800 Subject: [PATCH 3/4] feat(managed): Fix some types --- .../Modules/Schemas/Extensions/CCSObserverPawn.cs | 9 +++++++++ .../Schemas/Extensions/CCSObserverPawnImpl.cs | 11 +++++++++++ .../Modules/Schemas/Extensions/CCSPlayerPawn.cs | 11 +++++++++++ .../Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs | 13 +++++++++++++ .../Schemas/Interfaces/CCSPlayerPawn.cs | 1 - 5 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs create mode 100644 managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs create mode 100644 managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs create mode 100644 managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs new file mode 100644 index 000000000..7c2839fbe --- /dev/null +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawn.cs @@ -0,0 +1,9 @@ +namespace SwiftlyS2.Shared.SchemaDefinitions; + +public partial interface CCSObserverPawn +{ + public new CCSObserver_ObserverServices? ObserverServices { get; } + public new CCSObserver_MovementServices? MovementServices { get; } + public new CCSObserver_CameraServices? CameraServices { get; } + public new CCSObserver_UseServices? UseServices { get; } +} \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs new file mode 100644 index 000000000..d9cdb2a1b --- /dev/null +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSObserverPawnImpl.cs @@ -0,0 +1,11 @@ +using SwiftlyS2.Shared.SchemaDefinitions; + +namespace SwiftlyS2.Core.SchemaDefinitions; + +internal partial class CCSObserverPawnImpl : CCSObserverPawn +{ + public new CCSObserver_ObserverServices? ObserverServices => base.ObserverServices?.As(); + public new CCSObserver_MovementServices? MovementServices => base.MovementServices?.As(); + public new CCSObserver_CameraServices? CameraServices => base.CameraServices?.As(); + public new CCSObserver_UseServices? UseServices => base.UseServices?.As(); +} \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs new file mode 100644 index 000000000..f29cca508 --- /dev/null +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawn.cs @@ -0,0 +1,11 @@ +namespace SwiftlyS2.Shared.SchemaDefinitions; + +public partial interface CCSPlayerPawn +{ + public new CCSPlayer_WeaponServices? WeaponServices { get; } + public new CCSPlayer_ItemServices? ItemServices { get; } + public new CCSPlayer_UseServices? UseServices { get; } + public new CCSPlayer_WaterServices? WaterServices { get; } + public new CCSPlayer_MovementServices? MovementServices { get; } + public new CCSPlayer_CameraServices? CameraServices { get; } +} \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs new file mode 100644 index 000000000..3468d9c67 --- /dev/null +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSPlayerPawnImpl.cs @@ -0,0 +1,13 @@ +using SwiftlyS2.Shared.SchemaDefinitions; + +namespace SwiftlyS2.Core.SchemaDefinitions; + +internal partial class CCSPlayerPawnImpl : CCSPlayerPawn +{ + public new CCSPlayer_WeaponServices? WeaponServices => base.WeaponServices?.As(); + public new CCSPlayer_ItemServices? ItemServices => base.ItemServices?.As(); + public new CCSPlayer_UseServices? UseServices => base.UseServices?.As(); + public new CCSPlayer_WaterServices? WaterServices => base.WaterServices?.As(); + public new CCSPlayer_MovementServices? MovementServices => base.MovementServices?.As(); + public new CCSPlayer_CameraServices? CameraServices => base.CameraServices?.As(); +} \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs b/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs index 4b08e414e..4a6bb0007 100644 --- a/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs +++ b/managed/src/SwiftlyS2.Generated/Schemas/Interfaces/CCSPlayerPawn.cs @@ -12,7 +12,6 @@ public partial interface CCSPlayerPawn : CCSPlayerPawnBase, ISchemaClass.From(nint handle) => new CCSPlayerPawnImpl(handle); static int ISchemaClass.Size => 7280; - public CCSPlayer_BulletServices? BulletServices { get; } From b0d7c8da0257b87e98f2009d0839b647199bb3da Mon Sep 17 00:00:00 2001 From: samyyc Date: Wed, 19 Nov 2025 19:57:04 +0800 Subject: [PATCH 4/4] feat(managed): Add gamephase enum --- .../Modules/Schemas/Extensions/CCSGameRules.cs | 5 ++++- .../Modules/Schemas/Extensions/CCSGameRulesImpl.cs | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs index f5b0f7539..a155c9db7 100644 --- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRules.cs @@ -1,4 +1,5 @@ -using SwiftlyS2.Shared.Natives; +using SwiftlyS2.Shared.Misc; +using SwiftlyS2.Shared.Natives; using SwiftlyS2.Shared.SchemaDefinitions; using SwiftlyS2.Shared.Schemas; @@ -19,4 +20,6 @@ public partial interface CCSGameRules /// The reason for ending the round /// The delay before ending the round public void TerminateRound( RoundEndReason reason, float delay ); + + public GamePhase GamePhaseEnum { get; set; } } \ No newline at end of file diff --git a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs index 2d568ed54..06e813558 100644 --- a/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs +++ b/managed/src/SwiftlyS2.Core/Modules/Schemas/Extensions/CCSGameRulesImpl.cs @@ -1,4 +1,5 @@ using SwiftlyS2.Core.Natives; +using SwiftlyS2.Shared.Misc; using SwiftlyS2.Shared.Natives; using SwiftlyS2.Shared.SchemaDefinitions; using SwiftlyS2.Shared.Schemas; @@ -17,4 +18,9 @@ public void TerminateRound( RoundEndReason reason, float delay ) { GameFunctions.TerminateRound(Address, (uint)reason, delay); } + + public GamePhase GamePhaseEnum { + get => (GamePhase)GamePhase; + set => GamePhase = (int)value; + } } \ No newline at end of file