From 1d4c79ce4bae43f3a0a5b8d6c124c5e9b7214078 Mon Sep 17 00:00:00 2001 From: Sam Byass Date: Wed, 21 Jul 2021 16:40:20 +0100 Subject: [PATCH] Add Save-Load UI. Also backported to 1.1 and 1.2, because I'm nice. --- 1.1-1.2/Assemblies/BetterLoading.dll | Bin 86528 -> 80896 bytes 1.3/Assemblies/BetterLoading.dll | Bin 89088 -> 80896 bytes About/Manifest.xml | 2 +- Source/BetterLoadingMain.cs | 264 +--------------- Source/LoadingScreen.cs | 287 +----------------- Source/Stage/SaveLoad/2FinalizeWorld.cs | 35 --- Source/Stage/SaveLoad/2LoadMaps.cs | 136 +++++++++ Source/Stage/SaveLoad/3FinalizeScribeLoad.cs | 55 ++++ Source/Stage/SaveLoad/3LoadMaps.cs | 35 --- Source/Stage/SaveLoad/4SetUpCamera.cs | 35 --- Source/Stage/SaveLoad/4SpawnAllThings.cs | 87 ++++++ ...lizeGameState.cs => 5FinalizeGameState.cs} | 8 +- Source/Stage/SaveLoad/5ResolveDefCrossRefs.cs | 35 --- Source/Stage/SaveLoad/6SpawnAllThings.cs | 35 --- 14 files changed, 292 insertions(+), 722 deletions(-) delete mode 100644 Source/Stage/SaveLoad/2FinalizeWorld.cs create mode 100644 Source/Stage/SaveLoad/2LoadMaps.cs create mode 100644 Source/Stage/SaveLoad/3FinalizeScribeLoad.cs delete mode 100644 Source/Stage/SaveLoad/3LoadMaps.cs delete mode 100644 Source/Stage/SaveLoad/4SetUpCamera.cs create mode 100644 Source/Stage/SaveLoad/4SpawnAllThings.cs rename Source/Stage/SaveLoad/{7FinalizeGameState.cs => 5FinalizeGameState.cs} (73%) delete mode 100644 Source/Stage/SaveLoad/5ResolveDefCrossRefs.cs delete mode 100644 Source/Stage/SaveLoad/6SpawnAllThings.cs diff --git a/1.1-1.2/Assemblies/BetterLoading.dll b/1.1-1.2/Assemblies/BetterLoading.dll index 7be7a774f3a62efa66554da2129c95d045e58221..19309f412c45b2f3c435485e58cf96b9c7cff28e 100644 GIT binary patch literal 80896 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 literal 86528 zcmb@v2VhiH_CJ2!o0&H=FLg?05&|S4B)rTd0g|Zn7C@>LMFABFO;KcU0xHG~gJ46j zAhL?+QguOhzp}QqE(o&NcF}cFS40qWZEIO8miYgi^WHSTE&l!kbKX7Wo_p@O=azTh zeUs6XZzdZN+4249C!#;#%AWxO|2>FAYy<{Akm~ zrPG_{&W+43oi?*Hx?pbU?75|b$DCezab(8K+MFD{v!#0M5Ta3vjXulX`hKFcgVd=s zOX)^5LLt&j>f8&EE=4+yD^b3rRnu-JSYkxm!3Ui`Hkx`hi}L@})k2wsPcih4;RN*F z&W{oo)HkBOo*+Q7}Pom76 zBJy8>j;hg#NDoahuWE3`R4A(m*w(f}r9ITkqT7x|QFnWY$k)wAT~HE)Ju$S0UDvXl zs!|-N6Pt` zJX2z|P@^tKcos)0VUTLT{&1*P=myFNoAwX3ylWFi#DHj5yDiYQGKz}Mvn`(in^G)6 zjVcHQ3^+{>3CpHN!i)@3Ym|^UPmNSFp;l@bsp0hRVryVgoAxUDOf!tryc>F zYzoZm2}VVnIR-2V8_*bTy^GP_;6(ZWWc9cl-g8F!BAx9rP+Kj>)zXhM*4QikVMj}U zq^$6G3z7X0F}^pfvvo)jo&E z;jzayX4-0JTZcfrBF-Gc$+o)K)?Wj4$2Mh(J6QZw5oeC!hNQ>QrnRAfW^_{B&=U%L znn&}uX~RKm9>JU}aI}`YMPXs3rnPB5aITT8&F5-mhR0=Kga{is06u4QC2D6@!(*2^ zO_Ip6>VB$?=6N(@6zd)hV7eeWn#s<{X`q;Ki1E|n#ZWQ33(T<~IU_}Yy;|FT`ssk~ ztk#^7Lg4#FCNhp$S#X_^3sYj7#pq-MYwU&7AyN@%j*-VUV-yej+#YuXH!lUn_0ediP=TWZa&!+mxjdK<LsHIg3B*uC$PsiR1`+Xxxi44 zV-!X2V}^Phqg`~e8w}fVjN<4%X4sEow2#*5U^tFt7}H>a**NUu;%+*%z*!FXD|!ub zL|@LOc@o>Pdr|AO(aOoeJRP|!;>|##JE?<@>%e1Gv;mLBhJSzDLE8Xrkt&lTa#^w2P zTbbd>ja<&f^=5#@qwa3`Lz;XM%U>b#d9BRwk8 zI@$t=gJN?^L`PrByeyNav;`2F7SFgE9L=}}5bGnqKj8N_UkfC19Y82K)^Em`bR+s) zJ;o%=sPaKiAWWk41L$MY=)P`t`ac93R!p8|ENC=cQ(L#AUd`7-XO`B&X=51|asxoN zt2*p-#U99XiHBXX9PElXbBr=HRb&NlGkf$VKh2ZuIc{Wk$F^l=_olKlCzahP4OKJG zR1>+8t+)w5>@jXeipMYG79^@&7%?I%kvdj5b}Q!)VGK!0VW$W?kCnElZ5nPW%w|q& zU^|v{m`KwH6JJ8CBF-EU#`=RzN-fbqSjB|f*pg0gPVB)Nw#vOAc?v7i|nL&ny zr7iL+C<aA_$?!Wz|$sW2+47a${m($*YTk)IA9tXE!FWcy05qaf!nV_R!E6 z?6aF|zWLSYe4&#~iW*tRveCVmf2Q~GeSptUbwP~GkQTL)Ol0RvhGa?;ocIhDtCO;p8pf+{oH zGf1>)HSFhF$W+9c6WPS#EnE^W=(X5Lr1%C+s}QfXjsjj`3bdZaQW!ZTu55$>PCf>z z5w1MYp)%GL0=(QTmRmLJHufH5IM6wI8{ClMNglb)l@@76{q-wC@R_tHk;_FLP6f*M z_dQVxyzV(hy_X`tL9Uv1(ZPWX)nh<46>6K=n9vo`Cm~_2lu?LX#*9Fl8m|Hp@^#Y) zw{Yaw^#6FK3_kV0sxX~2yS>>5!n5xd6 z?91}9yHFLWgrzCV(&W)SS)xQ$TM%J(kmLOgj03u)OyVR1onD`8W;Gr`x-}`wV*N}p z<56&O46FSVLRQ$VWKM6AA*JVJl28*X)VzoKM=vqxMx=iZY2&z@rw>CRaSxfq9 z(6f5fDwv3Z6E)ecs%sx@JE4ExnuCnRi3w>=q1@tGdip^n-`CwQ)FK(8eEHsd?pJDKp*^{C!xxaFocUh>teLQx>`{Vus4FKQU8+g1PFd#)R$17hB#x&+*gyR9tlQUUu z83=r`CwsCviV4?Mo#Sy;)M%B_uVI$Y>CJ_@LyaDXS(T+WtG;^&nggZj8%!};O`+we zA&l7k;aqd@2*aD)_kDRD)hwVY~n?N-Bl_Uqq5gFPWr0ApIH1pu`6BjcpHoPUA12 zNp>@I(v*B=DT$#2+G}!=Wd^c{YzU(}Cv2IZrsxq=Ok2LZ*s1tMKHC`n2}XsK_L#h%^u4&3;Uz<(uJX_5lRfMP^`K zbha5o95Ry=q>08WFq`j;)s{hQyG(ErFpQ=L3_7#jiWXu0e1kIEY{p}o@b7Sf)r8R> zkd{$NY8jALIZ*8LMFSlnyUIWx)uLDNj5W?RDz6oeXo*9^4 zN(S+|fo2eE(PeN+S}>T-V#)o;jlx;-EhL$AAVHdBpw>cq!6Xf{;u)Q?2ddVw)*0Og z#bHO(USjF@D%hW7rMOtR_6(c|#L~KbATPPrnF9buM^le27*+xo83&QCGR^*D$}4f# zVVK|?C2kbm17(J@qm%jKh%Wtqv7p4={l7Fpuj^@diTy{shnH;lWyT*e}!~6X4IeEv;7| za*yp5dj^`lB9NoD^g%O34k2cJ_8t`&H?V8|4r30t#XAfvIH?ZvmAEUn`xGrY6*jwr z6J^8y2>8(pxe|krlK%PM^`2%P5wdu)#!N01>9GQ#a02aDLVKbWY7@OD2XSx}7>I)h z_~MAZ&qiGOi;OU}2Pc+f%UWjLfU`}DP|2JV^kq2dU6j-7FZ}o`*K2PJVCkRO?@J9x z?B`26&fGd3vIHU9bFM|M{l9N^7fOV*tIUr<|lr|uEYOAa!@+OA{AL0&= zC+CHI(RcWg9Su}S_zlA4|8<1$WR4KwNhh#x7MC;V7mY+|ZHX#ppQt^Z=HN5M9DJPr z`{0x4sRhZNS^$s5*+<#YyG>W^d= z12_3$cx40#s+=&Hk6Zj=JYQ&+tj7$tsIweGiL)FYEEu0b4IWs0j!S$b(|#9du7~~# zwe@+R6}Hxw_+oFxy@cO z!8{Yij%Jb!;dUS-EO&#8%`e(yH+tv-Cjd8Phc} zL=7I5>;N@_Ua8jvkqd*Xmd^Nr^9)rZ13*{#u!J@#h(}5q>%o5w{{0aman=>;gu`x_ z&$Ljx=zO#Xn(Qo)`Pq^`WFW7Or#@%0AnMCw(0RD#qTX`Kg>MR{vZ_)@?1f9r2sPS3 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∬FHLqB$BqrP)|7_3JpQVWp(u8hybf) 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 literal 89088 zcmdSC33L=y_CJ2Bs=Ip0+Dp1a0we(vitZ#NBp^Fs5!n<_KtM$hTo9zOgA2yA&43Gz zxQiQuAmBDGXop~)8MC8EV4?hq+i6j471paG~1iP@}=|Xzc^IFxD+Jx7trkpjuwQ_Mhc4mCe zIhAwgELs#>QhD0xmGScyRnA{jIcnkwmFL9fonBv1;O$|Xo^&+P1kIqmYsNm6s%N1tgnc2 zHAUn<0$p{hJCQdsOC9y_syQ%L9WvIm!=xiJ(54%QqTH7eqCkT|Jy8>ceF^l3!)xZb zbPMU?T>@Hp{v}LwyDT74ujy*q8~HJvn*T%x)%p@h{_J|fs6PJ^CZZk)99qvII#SP% z=*&vg!;F3v(z85fA6d^bC97P#Anv0|O0CKz?LwV)hu zcw)nG954pLK1W?eyk4ip?$`*>;)_wV&@o5m10J6zHWiFeWB2&4;fEx? z&x0sT1GV);fY@|^U=m?=#3wl+G6T5fgLdpBX8TbRE?YEJhPI|NbR9Gf&(O_G&CO7y zh+$%<_UA`bbeM-J>K!JWQ6r3#!HmRvKuX+HMsY^4jef@JYPG^6zC2#(BPy>)QMr}OH@HKQ3)`^Iu#n;L^mcdRT1(M zP;m%V5%Lo~n7~v;C`eQ@fvJiRa9FcpDq#9eYYqxo<^#?ytImK6)uH&UaP`jWaJSOFdfK?Z2CH|~O- z%uHT2sLlj2um5`n5gK_Gko?x;VWGf-rp*W1{v3>;d^XAfNBrYrjQuvIsfjM+v(2eN z<%lg{IcNX#VXzg84U^{^G;JZ9+5$D7*~W*q4FGl3@dWf!q&q>1-+n2Xon(&8 z)`^F6Wk$11Tx6JIVWNyCFmAK!K89s5FToCTtTL{)9H9LLpgwmSA7Yp)5H!fr;o;wm zCfag|M{LhB3g+NSBLqi5M};hB+v=?`v>S_v*-bwLmon+;q>8aJq>O1 zntJMu;ADdBUPDb4&Jyo|@nTcJ)UR(M;KJ;Cda7-i5ahcP&*Zv3iG|j{ zWOb4`7S8d}#Iw0FlUe3xBEuZ3hHDG~6nFxTJ;9pzpc2g6Q3#0VpkcipvDYI(y60I6 z!d-2kEOOfV!$hbT8B+p(^$N|bsY{#M9L8voj@BLYGt*g7DF`BPf_&PdX|mv#3{;N z?mYwt?4?+ewIXE+IPQpa)su3(I=-Dw3PnBK&dufPNC(}GzUH4U zmxPB)>8%@BZwTv^v=8M2l5O*__ThH1rKNoY7cI;XxLU<*Yl^AFtDwpm@)Z<1%(J+^ z;0gMaIk8PF-p2mKj$xe%D79j;F{>r8?YNY1R4ak@i7a&&6gWQ(8mC+)%R*n(?CDaI zXn+8(dduZ9(Y|~})4Y3n#E%cr;tWr82w6V|XlE(CZL}@>+KwGVx@7>XX34UY-qr|cr(V?Wf@LBB*8Q-z zzj`w(Rka_vMe@KiCH*@cnhqj0C5Mv z!_KB6jk(q9R^chNFk7*872#o7x&bG;X~NJ9@HtgSvAW+(>ri%F#e1KrQbT&h=df4- zxy1AID@d|D$sHcgxQSz7CiK>YB;IM8VPkwTUfGl<&VZ#JxY6hfYBAJS@3=^qV59@Z@tuuyY zndobq_*co^4>A<=%6wwa70<)PTDMTV(NdY(vN@(uyk=b}eoQHb-YAIMLHP5}oQQ%g z{43D&`uE~RN_e^{x6k^N$Dd&pnKQHE_UF@~SDrfG_39*7jw}t;Py1u#e0;e{K`nW<+{zIuHMje6%|ju+}1Tq zt!*HcSuZjpYvAL`KMO-%CPz#UI1iz%8!;o0$^njA0CS$4gGMmo_VdUdGZO1Ro|`JK zMSjd!08;-EG8X+jxS5SZ@rdb17V>%GC7sdImteu?jn6!ielX7}haUZ3id7lUZ^Yu3Qj)MAy;G6L?EYhM*>}KmjH>=3~m^8O~QQQ*Rpq ze5Nmdrkd7->#i;ExvT5Un)oAdE8y}M!rZ=*KBsER3d3&i&f#k2RIwS0*wmHUff~bz z5sVh9=_HD1@@x<&^06&yv0g^~dK(X2HDy6i>MjaeuYgsD$&$x@RQDC>Z9GYYtXDy= z@fF4&gHve1uYn$(0~{%TVYRgbN7Ph__`hb8URR`-L3#tlu;d2p6?B0;m$ef#=?;}T zSw=p!jU@PlTvrH{DyWETbbbP9>Zt9U8Ps!NCs7OHjLPJv-|A=g8JNJBb?|VC*5=1w zg=&&@qD6|1a#RSpCX#HzS19JCD%Jn&R=OcGq#@Eh$T!C!nO3aQQH=p4*8-JT3r>4m(?f_2V7NY}Jj2cHzxk(_I*U3S~9m zx$i>KD|^ZUf%w}j6p)*3mA8KKJXyQISN98tPe2mkcOQlx&RX;Yj^#LZ$C`}kUjZV1 zRHf(A_kgw&6ZL~8Q5niC|6A)fu$w?SWiLeM^Fs8uU{oiWW5HT9Xw~st>jpq)@^g$T zuRI&``FXMQ@(2N{7m(kW6l7khw95~|nrZzW(3|)JVC;`V_>;ihfGY7+UivAW!|R5t z95&;}RM=^!azVw4CI1Xzh0uCQUW89(s9)ho+A)!^tTGmZfKFWw_;IRE`v*s?|iGWXC?@$zsr zDnbQ%8(*}>-bKy^9P%&@cj4b-%;~Xt`+qo>ra_^7vexYDoW8NQEO<9{}sAUZ_uvo&w|nR@OXv&f$YIzKNZ<;D2&L zSr1RI$d{$ex|WkvXwk@mBaCGP>3!5Q@C|+%SLk5&I~{S2pBnJKK6A|Ys{hTT-Zqry zI4FTlcAUG2Z#P8rke*A4d z;M~O?{vT%uU+xSMopA*Jy4U<)B9R)?Xmb9M`qQN*pIK`1asBs`Pimx=q(^EAA~pn0 zBUC5x!5Lr0P5AGpB)cz4az-kai|J=1+YMYPqKAKQl%0(tV zxhFq`KbF}a0hmd6=m^_)9MyiQOW_OutdAiOp9%$el#%3W|Es#icI)3@rCM%#w_XbO zW!sXCUwa6C+adT}hv2w_n4`b>5FA%`Iee_Gb8y5g2md04ClMk?wx<(P9NW{Whv0J# z!OuJdKj#p<^$>jNA^0UJJlUH)`8#5kY(NQj{m0;7-}T3BH@@pH6#K6K=)~AGf79*g z`p7s%(XV1mJsS8)Vq98i$rL76q5=z5MJ?14g-sE#ZKCfv|BlCze>>s4{aj%sk|Fh6 zfxXCLJ(k5{m$F!2WU;s&q#Qq6KuqPQ$2}JIExZPfJP^Qj2ObD4kCdg`QH2UCddOClB+KE!i1iuF z;DO8MI3&^ij>vt5EUUsLJ~KfIw5L>m=}!m zicv*vk+F%7UR^f0nGhSQ8|`ddceHbbk)ahGtzW??TJjGZ1piv$-!Oi*Zp02Uu6DA; zzC~HLzGId*6nQ~~CV}q4W1JU2jeQSL7lzi+NZV}2KUrtA9>b~7)ML1>W6lWUv6;zs z@V|-pc0eS_wj$lI39tnsk+OIr`Xk~EVr$_vaO(6>BpmUE@zjdZNY_wOj(;?EHl@38 zE>u$cs{&}h+5xzfsk!^BB3;8uJ*&RkxxPSyPUw93B~IjehbB(ugBgE?`H2}oYD?nI zUdT>ns5_36xQ+1{MbM4KL8J%z>qhoJ|%vKu9?8B7Wj--?c`U4rIZ1=WjY1!MzW`>g- zKI;cWi??z{lN`aw%+L|Z=pu;=juNd*SG8&yp1_qI>0oAM(2@AI(*Iw?;$I<(n72+v zocIB8Fk+41R4Yr&l9Z7-8B8j|*tceb#W!hiBJw6HA+QtEf|{i*9U)7+D`v3IWFHD0 z=4Cun8emi>nZx^P?Hx#cxpPioT0btqAhOlMFg0tP+Am~cWx(ca;V3xciKr-p3df@pp?pHJ2NBk>`9}8AGRmaL`Q-FLcsnh zKXgK-@D_ZZ@US;H({eqAouFPk=`yaKA8sl#LbsjAbAFwP5(EL4Fz%IzhNmYvux642 zp5SKlhE}we&wVYZgMYF|NTQReMa5Tz75gL2RxI1S)=>zaZ8G76F)@p&xTJj^u*_7q z0F6g4p9W%XFV6)9=b<(h$J}JnCE@}0OJ_aUzk@?(2h^7i=ws=C?(CcllSjYAe3m{704Jfc_^(k_VnbEpDOUv$uak>O4$zJHm zGuW5W;pEvkT0^));F6pwnS%T=2+bhmh_Cghh(7PJIsi_B*|n|&>+`;TK4Ra^Rop>^ z9EKu*JXcA*7Y`03eoeNND~A32*o~Fs@PL_=;Bu`h{Pk+ANRVdP`K~gjg56sPLCzPA zs^J&UVZkI;$v7h}ViU8o=d&tM!pTnv*hPFfK8w?f5!|# zR6p`%vOL)FCKf{?)Vt7(e+3yui&mTQ@_O|2x!_6GiImDe^srZnVP%qF=OSk$*!x%# zoH{)m$zYMy+0#~2i5L`HeLRU6SB%6{>o${q37`3wJ)RrkMJi{yrgLUIQxDAD?f>}y09;U<#Fo^@72Xxv0&Fx5V2Vq(b zC%L7%^rnPH^@AS{B1>4YBq^Pc+B#SO~ys zf!~P_;HF$Py^lhNc@2-_FpDRdV-4rFWm=oyW~$&{pNUByjBt(x!YFad2w_T8%(3d+i#HX_Q zDzy&3E8V~Qm}{S$Gdc&ebkghaJJL$whK!OgU3=CUJ!5G&i{_r3d7UtZ5NphZ*pg-N znbl0Rqq(MEi*@3l)g}@^gQcrVP-k^W$KuSmGgb!H5?-+7DQQ=%9F!V|YjWi2Ou~hu zUX^g2!OZHy1b4CIQ8=n>vQ!#&egw}xjjUmIo4RN<8Qe#x3EmL$S}tm$90Sc zz+TqB=ZfB%5oL}wfz5rAD{~vm)QCCe@ZGzpJMn3*(CryR%u$9u%avJ^F~l4(lqak z5k@&9cV?3QF;r7wSy5(jc4p7m2f&LgN?ZbR%8{+8UbdykX}&D6j8)1KNj~%wOv;$s z>-kx2H2D+e^wBx+CU5CXU&H(yzVgr5d0%=2mNe4hPDi|k;qhT#(3I}PO36m-Azqap ztwUfz4a}Vx;<0IB=H!d&Q|mtF9%kr{ES=Pqk(_g9Dz|ATdO}&qT{3n=ph*$5nSGjNw>@zwgm4b1>jR!3v3j&hZdVlIxOcyJqtvWE4d6`ve*4s{McRj8ce3T zvRgVQTurH*NWY6}WZe@T#B96&GfEd6uEh1ah+kI5{OxP~8HTVoaTy${H4_+xjz}oU zj>n&Zsvg7g`q0a$aFV6X%*(T~-LASWzb4+P8E@P+Lgk|N&mp5@@>|POL?4i>$!NKC zJV2glHG$9x4@ypj0-lhZgG2iltigNs?_iZ?NW}Uw=m(ImyR8#a`UM_wE6EWxb$9G2 z2(*96+IY-kO@Wwt6DO?@z)KIjHQ$td@t#oP9}t##|0@(a%ne*2o}^$3XHMelT=qt0 zH}I5^WKQCnT=u36n>l>f!;B4pwHmZ#U5bfUUBcEtP;omoC*0vk*HURpcDiDtn!2CZ zh+Osab;*@dsk|9%#~ZuqZikpxkKvSIVnf)&z|72*##PY3je(zvqEQo$Sc6bK1_6%& zI7uP4%Tl&XevM!2C>f8FsVnLg;nu;>;JZRYaO~g*>Uh1`dujwXP9IFCYtO!!%)jMb%df2^{P?f?^9$3XP_~X{z=Km1)oZ|Yzsr6HIQ})HmD#HY z*`)~Y)z|TLg}P9Wg-tD#)`Nk|ykxmGenaxH6Kyb+R^7dg8k2}b_iyeKk9m>1LZoOy9I zEMi`~K^?B=L%lVfLw7Tm|D$=aM>^5|i+M4l^rQ14?%eS65MS#r&^6w~b#O?o&~HKk z6QsCq%|;64;Wf88I3{5f_ZFBRO0sw;$wF%8tSbyBxqV@wg(8Y7Bs0N`_6~sfRP=z^ z#>GSLSfTSAdMH7foi;xJ?=T+zIKb&@$*2{km4-Flg?q|@$`yDFl zP}RK`W+m=mzzV_G1RgP1$KgX1YnYm?`WdS-^}kfD*MpJx_+jiY-@_OHU(0wty%nZv zJ?dFiczQ(nZ-k;+7{i|(pN=Efhoh3Rj)i+@w%CCUWruy_MMx;>w78YtusNOo!%#Vi zhsrwe?O3fs&X%KYBe@nt)hTAGQ*bXCo$_p^Q1hXiiAs;p6lpJ!1NA<7)<6d0DJ!08B$S_Kx077t=P9+?(-EE!f+xHut}ZqI7X=3Z&IW6l9t=!69(P-NV!8B(c;7xbh~r zvnD-tY-FjN>t9>_(L>b#ctrIvBMw!MF9AuioNr)oD#X7_Q)Hj-RPOv=fX9wD^`hCWS*qw$Dba_=PyoyLna3|2KE*XB5Zp3g9hr^dy+FJoaAw% z5`7xj1^u@ovGBcs6M^t@NZx*kw~m6lLwWTuPFkK#Pc0@h;aUl4`>G^E+>j=wu1Zoy ze)S{9nSQwO-=ytib9?b`LZEb? zu3DN-te`am`na&slRP;j)&ZysmRT}9aW!#!F8#kU!6O?c_>g6~o^OSl$@QS7cLtbv zdY#%O@H(GTqM_R|FM`&@i;hO$V0mQnyXB^Ohf<1N+XrOZxn78}qqJ*ND84L5t-_Nl z{CNC8F5fGBF_C$+S~{bBV0IP%o7P2QwYqH(OogYn^Fb(j``~Qj|Do8d_z9!415%Nf z+cNYu&%+~etrs!8xd;t0jW0IxZHjx z0A4EIhyx~TTz;ufLs?ijM%%H($;5M--gXyoBX%-UPu`8^Cq1bO0(+g zW8_tNY=ObmnVGyN+uUedp&bgbQ#hOZ7_nJwn(arr8uAT-$V?;i7F_&Imc=>CUW+&h zmzDA>(&Qs8>Ot7wAO*tNe6D=}Rm#;2*WF>_ddqA*751x>%&|`6IW1((21PyigjXDq z_*bwY4S*wUbJ(GwM*N3V_1tjD0j#X4E5~;x4D-1X=P+1>Jc5ZKs=h+PZ#zaKA%ia~ z(XP2{PUR5mSFk?XEc)A6AHBx<2#Wnxj(M!lImhyqEDw)G{-vz?;HF*Q=`7#J$Zf^x zTrFB7M=*;fpozE~!0si(Is;54ekO~JGt{Qa>QF`P&tzvMIs%jbSzsDrb!?q42JKyB z+#UzDz(4+_Uk>H(+TiZHp7~S`zZ_bPs_(4sq(Z?jg$`qadMPx@9?deOE3?!r@$0{+ zV^gY*5irPg{Q8hOQkgqTb+F#H1+kRgmm7=e%;vaPqfJ#DcOBXE{3 zUlGZCzr#?yn^H^|(0rMVE)@GxJO{<;u|~HoZ4k19zwSy9HSE^V?*2Pl%~rv({sV2lW6E z7osI1nR_LBJf!&bG_$rSe&MmmU(S~P7eXP-@2g>}^P7;6dvBpeZ~Pk;iKBYF@cdga z`oD{QR5E%S6XeERe!Smtyns#LSye^#POxaVy#-l!tQD5P<7TwI&DvbtQ(X|B0R10( zgkV}rptf7p7jWo4KBaNpijw7V@2)wGO>kp*`}w4;V}>1r#iSl=$DJYmSOo_w{NoWi z%(C9L3mSENjaM>#*mu}UZb!k6lv8{RNeK7U1)T9G(IB5Qb%(hp8lY}Ujp7F5-GSf0 zoV0#-D55pVf!+mXdtttfnr$+NdsS#2C`IE0~t*>$|?OTBYrjJW`KG?_InwoNOvcm+(Czzc`2eo5BZL+OzUCGk#WlN*|{0#?OpYwd{ zi}#y|&vqW3gFGUQ7%KC6_w>t)k723UWkBP+1ICr3Z~cIJ zo@#1P`PrEUOjUWCYQRvV?FuOBZ3o~eKWl5fn%#as+wF)ELtDJO={KczJZ9RzK*k7K zXX1>&yOF$+BNFRdZ)AfX{)oYgjJB(wYqa48N@}mNJodNX2Nn_Bf4GfCHHeo{EwWyb z&2!1qXuJt=4FvPEpHsWs{Pfuyi5P9y;mC`UnMT|7DB7Wu3YdJQA`7mBZ9)NrV>hso zBWh}q(fn;QQ|ZLe!px_LKOpkv?)eL~r|& zb$CiwH=x7vkO^IWC-=}-V5a-GtC75v@mccZ3>VWYfF)J}sOxk*-DC4vC%uD=a(?Ub z?zWo4nCLYt{#oxZ!%be=gRk`7i@J8JZ!+oF$)*SRlVPl9(CawMSu##p51*4MbcF{! z3uegs=SRWAJi!b(hveg1GIP+9Bof;ZziX1+#;|n@M@Jr}#BN2g{X6jWihqh`^dkLY z#;x1HDexq(MA;L&9f-9CK%T>(t@1eLT9(69Ztk)0HN;CM<8&eS0`XPYSnlb<=ScD+ zl|6*h*S9EOzG64S-ar2U-&1wlHUA9t3_PFDbrK0h?I<}J5wO;>BkX^??0B?iEt<#8 z+>GNPU;2(6`}CHd;HMIT)DEzzb)7QA5cX8D1g|E{Xjsbp$uo%Ff%@?63uXl6 z*+w|I4kUSc7q-@;xTgxAg1rhJ`EsWooZq|_QU{v|_7sHWzI!-%HEP)%@^Vk#%{|Q% z(eQbQ1Ab@XuNVFhTJC4rUw{K?=v$^?uu_#x*KPVEIC9??;K)CRI?#)t@t-6QXlK~T zVFxtC0hLeT@d=Q7C3SvCq4li~a@K#(tkkUb_ngtHp7Zf&i~pAU<4lxlLs^3`{w2t2 z4DxA6y=?N9E)Nmp$wGZ)yaOUqR%G=7UG*ep2I8k4N?-^+!p^%%c9y5y*&2Z#>7T z$$nS@zn)~j4BQ`0HxNr;zTk)#PqAYHsb^Tq`LCsLox1@MjBVtAW|U!0LR^_Pm!gbH zQ&O>=rMK~|TKj@|6I;6rfZIOegmEJ@LYwj91=#t`^$qn+4NZ*$nBt^`d>DhAOAsx@ zaa&)MPgoM4zv#?XW;K95WeR9hPoNc83>Sme{g|m^N8xxQ@LgEMcOS7Zb{Y%ghy2t| ztav=ngLN2vt2Ob1T&{f!{xGW({G=`Tdmd#U{@|y4qXN^P0Dw&7wrms8wsh3HKGKLN13`;td_Xoj&ho(&#dVJq3o# zxx7}&PYAqCWCnG57P_C5GV}`lu}+RIChaO^o1@D6SDCcAp5Z@B89vvWVP_}9kGe5D z#W}6eOYi%KlzQpuiXo+i)X;Zmp-E$1(*TbH*Q8!OrWBYI?#n(nUHz;4G`+D`*bi&H z!Y0k?&USuL#jrHozp9lsV0tjA8!XJV%lXjq($xh+N=+(8?Oxhn&E>g>fS0BPxx5v+ zUYZbMAEFgQ3;py%+2eIy`ls*jy}k6j#qjMO?C0|WqZXGxs$sYt*3gRX48Q2i@HcLT zuXz|6un)@thJOV#sT2Ic6Eg8R*yHnVUYY_eKY4m_yEf%>yQZOCe)^e9C}^pluIt$= z?4{!%Y0?J{j@zzoTs}j3bBML0&ZM>yw)_ry)1-xHkx5@U7#>}+qs~vScX}K$AC+-S z8ybd`hG=Z#iDiIe zr#}?$>WuF+m8`5b>1FBJv0d2yZC$uUmlv?lPfE0Z2Hy&4UL9K-7+`B=DYw0s#BdRy zN%JbE6d+c8S@%A)+DoShcN{2Qs_6Eu&!i!>?AztA=B1~qnBG_NCsfJhUZ~egE1DTn zPlo-Z?5$$m8InuG1h(|$yn3gO?K~hd{pz^hKUeh%ccrh;3x4VdGwdvIdS|8|46s+7 zMBd#rq_i7#mwtJ&p6fc8&oCt1r@=MpWXW)cJS5|xJRAf|$T+)vZHoaJhtU$C2X+7d> z(jXZ@1I34P3%T~!tZ#i@s*!vfh<17DT*TI-YUlXMLb?W8UOHR)>-)l8olWXr!FgC4 zVaZ3t^JUUgEi&$gH1@9w(d;niPa{U0pPuQ)+1sn0M^-Os(Vh96QTai(v!x4jKL~w} z8IkB#o@_DmVP3*xpBGB+svVogdLgSB_Z#?yZKgIMru{nX71#1z>N!X9$ftBse2Re_{PN4pxH@S|jOvQcXWzc&% zctMb{7Sa2@zNTmlO`{2dwfA7`L~yx=k9~}tLURQByiQ?f3U)z(!p;$_q*h`4IKG&c z+SpRTCX_1PC4ybjYnIr&RInfN89NOtC)Vp(z}Ojdn_zn)j4h^k~F;*#vWp!Za|g*t?nXs9Y21B^7I zs+f*1Bt&6772r-uF+JOpu{+5p*cmuqPNj|b208QUZ7e9*5E}~#wj4`4mMj(Q4cz2s ztW2x(7uRID?m3C5o_ok}mzbiw*z*)Wy1(oDgU9>%uO$%2i+WIB~zq*;Ou&SUH) znl0EmsbM>vCKyh>;Jr-qvV3`k&d9=c(AgsSGpX+lS|r#n#IxUFUn95nCBb&n#aVj$ zXhjzG9$g`lypEqr2k56+y!UC9@NgdvyuZ-3S-cPF2I1iz4S1i^&$4)5(R$%MDy=<; zbyp@Mzo!SX^g7TV8Qu@{%Ph>$p2)(S+S8(UQ0nt)o3$G1U7IMXq4v%{De}=Hg_igU%tKj_zo zCOGg$MsIHQrIC-&#{I<{jdvs__cd^NiI{+uKylzc!RUpM{kN92U_i;X|}Ex^i55LfXe0! zsqu*jTizaF$-)X{Ed&|m?Q=CuxmYA$X(|K#rSc4=yoq%uN{z2HbuDhB+k16~j8SqF zV9&~tfWFc(fagV7>nz*Ov7p?9{_@dQf$w!&1<&)u&&#{8%~4_1-s2%TF3c95?and0 zP~^`oKM|CfBI)mbD$1`k%_|PkpT(blZTXd^`H)_9=+9trg z#xDS8n@4-Xb0+gJ8)hxbN>v=NAxZzv#S3lG6zAq8ld1PeP{JYz>Z+@e%l&MVgF zTIW970-)m9OHtKCUpc&k=n^wZ#rekWaEV{;-q;Li#hyCe7;U~k*l{@`xE8{>+t+(5UL zmgITpQ^Bq){j0@T=Wfj7HVnc#eJ}19;qD#1lwXqPrIs4TmeI5(+?t_lD_%{;&Rg+KC&}Ecsm3AXg#1V`ElRNnRm2dMnAtyL?K8R4LeM z@)efk712b+6VHn1B*k<8GJ4QoMCaJp3sECbL~U7;xB{_xivop#V!A`|+--pXu)77j zj7B0ee6&Mh(qleKHn1-@&=r9f{XY7Ojjavr(fw4{$h^zQUxG6fO%QAu{Sh0Q{d7f> z;(a05{R0`hj{NnV0)E;r*fJ_XeSR8qH1k$deMt$P18f#dMcz-7j}e}GSaB8f=Gxed z;s~&FZLGC;kPByH8@r?UslouQwy_h+n*%|5!p2T39}Mhe!Bh<;#4pcr?I+e99Vnrd zHuiR8QXoXP3#KGX=}EyXrt&(xrlN4T(Sn-6Ys*8d4*iC_M^q7rx4Q#-_IknTqoPj~E zYI<8Rw(|3Uq$=0$JU{da)^Y0hlJgfi*rxgexW-KJuFt^^cK&&wh8*LV`;u1X8;s{X zAsf4|Tmx2WV_my2uiVDo>B(4E8+$?|D+N>W>`AqPDL;EsUnNQGr$vKpjQzA|n2oWY z7LB(t_S2%{Y>Yj#XsV5IeHNW!W84OdZWL@a^~V_NMQa38wfCY;wj|dcq5Ex&YmbmI zUfNDvdxVN?jBAgO-^RH12z9bCu02Bhwj}pE*B&9y1jbg={RJg?QL41DZv;Ea#tc96 zuy;lz{em4MnDR49lLUK7qEt&K+8Fy;OS5c@{j89 zJz`^Qvw@zrF}B%2&kCk&HqwhWk8Sp$9X7^(_Mx|JjBWOzKiU}E>_hu(jBWOz_XJZm zo9JVk$2Obk3mapb&GfB}u}$1LIaalSZ8nqJ#@J>vc?DB8`%=K>vCV!|W@Bu#A63~H z+w4dD@+!xLZT6$yHpVvlQKMkW=20}z=CRHGG~CA6W`8=t#@J?mI@!i}Z1$(^HpUs* zpMGy+Ttj~vaGa{0b9VquvoZE%0L>O`H9Zt~I52>=38u#FAS#~7ddjmwR4JIsNQ`(J zW6xmK#@MsL)M8^?!(hT=e*Dzv7))>57<)a0J{4>=?X7$|Fob4JVoCT?`chyhT`ZXL zWf-jxO!+d5RtfeJaf@2$b{pfEwa}e5#-6p%E*oRdTIf$U#-6p%ejDQ`wa`hERqcHX zb_9mgBEeoF_HzU!ZH%Kkg08S7YZ~7v96{d+ru-a9F6{kD#cU*13icAQ-YA-EV{CI2 zonm9`^(dNWW9;=Pdc(%p>rsTKboi<48AYGk7`J^Cm7bt@+y+PrwwgYTl;j;vdu{BN z$V-8vsSZzpIJ$R7eis-`(`~GCMM>TfRJPv6)Wdp4f(r>U5+*W;@s0>`cZ~i%y{7f~giwp)oebeomozHpYHVp#?U^eompdjd9zj zP}0V@?NjI~8{@W5p*1$fEt*18_yHe0n^oY)-QZ_!>sfT;Y~|Uy${xX4w8qA6svP8+MNM;< zcO9KrUy?VArVFP0oJDg4Q+}RGXW1D0c`ChSW9-YR^amSbuTQ1DHpX6`N*~x5`*JFM zX=Cj5skHDkMUDNPR;pw!%#?~~H9DfvS zIo(W01<$12Hg=7n(OI-7OY$swU$E8G-dvJ*7M0CsUzC-zsGDFZ-Z446i8;LX9Nwil zyhn0)&!l-nf@jemvv~9A-7MaG($3EKayEGcQ@)%{RXM!cG;dV!Y--EmEuiITUP;~p zx;KaSa1QTxIlOmrc+LeGUlve-V9J*T)SSZ`oaT)RE}%2AcnfJ!npcvykgm<)-IC^w z3NEA%vv}vwmuX%}-Z^yi!i+EH(6NFkU(TV^b9m?E@Gi~at;)e}5o|ea@r)0iLwmD$ zi|8*l?>cwHTtppNycn71urJH0-Ftj6M%@Kd8M&Bx3#M{uF&$+~-l-iQTufta>_cNl z@LZZ^WAn{ZgK?T=W6r$OgROL-jWy~EgG=Z&8!K@ng6GjYHWqSU8a$squ(8>mh;~+Ly_jyXv6J#P1>0$p zjjhn{3nu6R8#}>qU+@xo%*Lj;HwBaQf{m?(FUx3`jh$jV9Q+A=U}L{`J`r3_9fGMS zT}tkl^3y|GgO}128*4UR4PHhIZR`QpAnkH`QZS`=1#Px@ubDf8SJ3aXcq?hI&AZq6 zYH%g_7IO_s?@H<<*mAlLak-LuX7PSXy=~r~-LD3JO2=gJuA+%H?=8>G!K>)ZEZ!=L z*}Ruwa~1J7!cz5JO;^~wkIYTMt7%;p?;5(t=6$Ab3SL7m3#M}ETH2K*c`fa>B|GUy z1+S$~Y^+rKQ}8<;p(O`vX9lcp{q|G~5c;f}*SUbTx-IipVtLZEoW1G0A zX6qen91ZM6o5wb9rX4nqZQe|~ZQfYC>2V8HED>L{Wmb%CrJjPR`fj7)HjnGOokrOh z*LORuRhWnCyPfW`d0gKbdcfv!eQW4ho5%J2jDD~&u5T^5&g0ruAKgI#!Bl45LFIxi zrAT>1+Lgt-lXlxYm*FnClRg$q)xLqg z$&%cF?PcuQa{7vjN;XiQV9K+N6tHzjSnVx=bNjdxYK*Ots+= z`baQkyKQdl)MhjP;zrY6Vl{;W3(LW1LHm(Z-8d zZyDY0)POxNm>M0A(Mt-G(eXIFX7f0+9;e?3ru=+@_6er^e1bj{Y&jj!&MA3tnt-{?yN&qGS1jpav%zX>v(p-yjyQ)P{|_u=xG0Mow= zaZUWw=(8q{)My}X$!c`3 zl&=pJ7wgpAn<Ncub(tUGPw&EtL%0Ix~D#+J33DrC2BmP8CU2=DbSj zZuE0maTUB=bPtEDt9}~c>+op{cZ)yD6J`Hy$wS*WvHwDkjJ&d}B>8ESM#oDpD2i&u ztWu^k{ITD^_$&BzNruj4js7+4R>?97?(cRa&oxp} zQe5Smg32r9XUf}RJi{A@XM^KtxHgW4;BFG0f74_f{WuQCafmhnvm4I~ui}8*EbD7di=ju#fruW4PXsOO;s~}z5XEe%P8klk|&O<99 zqv5S)rq|Lsta8@t>#(}HSLhE5yiRKL8C7Adn2j%jc(Q5yzWhqu6TYoz8&w%EG`)ec zujv3a8uNO8NCS*2JO>?26Pv!mUiZ?HZ8*b};)!EE?0k8t z|8G*~=%2KuMqYHUcCz^MCQZhDi$>#=-e17NyFEXpc|u=k+u7FJt1prA#R8WZv$~De zS4jCPfsMw5ZZVzPb&-B!x{X)rYp8eCT0m~KPdh(+m%dTt@3$%a`@X0@YE!m%*`*IK z&J2DE$t%KpbdUB}@4xET8B-fS)t73I`ZS}HetmhKQKi+^Sw=4{+T0tkTU}pJ>U#|^ z*#9BMvtq5vc%u13P$qQy+E|0OcNp8y_D+r+^sDC4w1X}zZ+6@W`T)l+iOIQI*X9Y1 z-Qv}LvGB2N=k4BCIlh$g_W~Unw)^z^F(OD=x zwAN;qv&tx}_5&7__?@*jo$WN+W!4%jmUj_n;5LD;82-u@=O2uP4Wpg=(96d<-!yJ3 zn(G`4EsYKu+kMwKCu^I!-QXN0b_Q#I3O)o%e$S_!9>)gs=`v*FW~a|l*ZU=CaUQ-& zTd|MA=V*@p+BreAs*E0e_kep@U5B&LxU4Q>?nX;BWa)(sz0D~ibF#o*T6e_!4|HW^ zG1mMn(@DR*{9JP|)l^-8e-(x)y<{v5CT`IZsqtdKwfX?ii?NIFn)2Jt$tXW(_HrBu zzi2i(7FE0sIIZDzbF9z@IKB+*?K zWyG5%xbCH&hiAE#Y8NvVG?waff!16N3>gJ1FK5Z_KKF3Yf zD_kobUpL(38mq5wz76p1=Cy#+8n`^CVXcd^Vzcu)#|?cqxYj#5RX+qfJ&X^{0mjt8 zGp-fd)16;+T_sUn@A#zpL)S9L*F`20p_-E5-jL-`kCc3MP zqbjGlw>Uh_^WASchE!aGm~h`+EIs%p?eJgZ-YCA^EA%BozgM30HyY#Wo^wA63Re6Y z?-6=d%Fm*_*S%D02pn+lbKENNJhAV`?roA++awdViJkS@KdU?7L$@Z6=Q9V_d(bhf zbCqWYxZl%KZB*5Fwp@IsALkVt;0N96IOc ze515vqSv9{Tr>?bJWi{O`AzL!kMp(gPw@dw_S56s*83@MP|5?GT92>1ot!(%OY%Ak zrH8;;f%g*kMKj784c50b+?wY=c|#t@>OuTFpL6>@=RWATF8X|)&-knV*MPfw*fS0uhIJYwfr^Gt~JuqDMIh1_YDX0Z#CZN(>bu$ zYZwjqlk&lYGewUX`Jd@`L{H0~r*rG(;aqkGEyS5_G#%8xf)C4_XLWDSKj>J|>1x!% zGuRqJCo#owr5Blp(@8@4Ep3K9$AX@%G8XYwX zs*HCU-p^mEJ>J(_u+PEgniV3m1oaMZTqX5hC1+mEII(Zvg7wbxD(})4O3pMI-_-EA zX;nqUJV@KSA*)4qrQ?F8X$5Qan_XuY-0K|GYe~UmjV)Ih4^=*zKS$ezS#Fsz8Rw}+ z*nH02Xbh|RL|X&hwfaV}u-;MG_qGE3lW?8y2mA?Un?_?&mxl{3*7%$?L+^oIviIwJ zrg+#nvguQrqVqZWVP_roFFfVsXgsR(ezPsk9fhx(kLtX4?oplh&ONHH>9Y@I86!H6 zkwX8yM4JB0`7ozVV5kIB8TRNLG9*TRqWUCkX%H+HOOMQ*H{Ouz=p18k;Z!2Z}N z<;DuA46ubN07p>|z%kSda01l>PNF8jDbycuIt>9lnMMH4regr-(FDM=XfohJng+O- zP6Av)vjH!p(*ZB0vy1$=^T0klO0lARYSESej?$JERbySc(O*w_@U0$SYQMjv9`8Lr z2H2f;0Y>T1fK4JZNZ?3;G z=meq65z1T}GJP(-e;O`r749;jFSj9cmxDXB^agNOhSmvvy_7dlH@YUYL9{jrd_?G* zMP`eXUljUYq3jdN0ilq_UTK;i7My?^{oOUT)?Lcg0!IpEq?C^qI9DihrF^=;Bq%FG zE3_N1XMBZLMlW`|ROlN-a)XpN3EV1_tx|qb;9j8|kg}n3?FRPWZS*?@b{9%_yUcx5 zE#;9yA1US8Ql4u=)=f%zxeb}JLCPCMeyfzXN_m@JM)!pG3gtZ;vbFf*4yjAZ-K9KI$|I#b zSITpxyj;r5rMy+jTcy0u!S%i;aK9r@GmE-AZ>Q5syE`|~Ho%{Q+r!E9k)Xd-Iui83 zokj|Mj+66hF6a|F%?15efGj^x4cE29ew#l#L>}Rp?tqa;wna z1LdvK_dq$h>^-6E7fHjsofefDCi`HRTvw&Zai}uclkURp4(^V!?!xV1iszueTQ*X( zMhbl{D94r01?4e7@mVC7gTAGFIp|jBB>WSnTy-LTSB5qUWt%`P$doF; zjsD?)*M#N>Wd)un?GA4f*rSBYEhTJW6v~d$c|uts<&6Tj3ET(xNO-@L9U+$77-GxY z1XhN{|1is}!#lC4x0BS{2{Utej+86QgkHv!;R3aCkr6mY;Cg|Z%UN=tl(o(*QzdY? zz&Qe!30yC5i@<#XwJv3}GhB&(l^s5G5&Ht?bm5lHk@7N>KMF6C@_LjVrR$}lPOC{SGF6H$Cw+P%PP^%J81P;er!8^k(-FWOL1#T8d-I>zTooBfg zDJP|zl=5bQ)PuRyLnH+z1#T8d)k3cp3sO!B+$@yMQl=V_5ttNMS=SBzZ?5|YweJ;J zSMOB(S9~muCx1DtHvzStoF_z`X)1`!oGK zx}S9IJH6N#X`JnJn5)f=W|2#Gk8p2wmwU!|KJmD`gT1r7zssx3ADO=*|L6I;^7rKX z3WgOdD!8QJ(t@8Byj1X)f^Q2Pg)<5-EnHKGx1Vt<_7S{SgMWRc^c3;{_mWO|WZ>?o ziMye^n&rEm`H*-idI|2vW&i3GjZc94*|VHv;a}n*iU{`vUIQj{v-@E_e?(I3+GsSa_XOHKgr`9{lyUBaN+bQq3 zyhVA5yzBBl%{!P^kUuzoVg7mfujhZ4UsF(DaCE_G1=kfkSMb|{0|lQKj4C|0@TS7& z3qL7zB>Aa}fgDNw4&Z49UcgQNz9}4w=L3B2-k@J~HSbi6E_fEgnw*8HU+=!DQs!79 zPx*4~y;#ZoT-qP-1n1D-Kaq)t{%XZuPvn(_4D5x!2>zn@!?hmr%0yO~$f^I=-q*** zb!GS68A&8XNh5J&#dcQmQuQip#TG5Qqk|0LB2#i!HjAT(5seuSV8w5z2zfvSf7yTz_&_7Z%$O3JFwA*d^ z`<-*odv88S%8s@u&`_G0`|jtt=lh)dW*&aq1g~MdPT_SLuQPa^#p^k|p2zDPUN7MF zCA?n5>pWf;@VbcCOL%=5uMxaP@fyQx9IpwyF5z_V|-m7@sKwkefyk5tzx&1W0FY<=}&d5QxvX46+ z^Pdy`bKQS_&42zg|M|=Kd>OyC|1!?EN8P{0dVhiM=l^c%6};Ya$I`F3r_=AbbLlnt zoI`m5bz%B9-AAbV2<4B`A476Jfi%45{(Q$Dqu-hfccRbE_gr)5U&^?DzH`leg1S#o z_a{4lfM1LFAzrWGwT2h&kJGX$q zJ)8QEy}yOeKf~**?snfRc)jO-1E0U$mr5Vn{hoVacPjmKdfa_^_dYxbJe5ASYuw%0 zy&s7PLPx&9aN`3kQ0IUyNs3c_4@G1 z90qZ)6y}yItEJ*-z=1)LgQWU$&=@b3>e00#t2uvA6bV2iDher>D61wOSyUcaMp#ox4^JKS%Hc(C0m%V?f$SNii&S9jj_BRy{4HAtQiZ za=+U51SqVl8q&qPpl_36DrQFDe<@!jy9;_^s)}yxe>0|)t zw>jdm%C$Ph6Ha6TSxE%TDIJ?cIjX?zmklP=qXq2 zXw^!gF$Qh1!E*vtn=;T!p)p2pN>1)#OX+2Ytw@XZ`O2iH>_REHSOiJm>Q+09+N-Oj zQXaifOpKAMw^#EG-!vX9j`Jd4XGbhw3=7~Il*y%)G77UnzBp4Zt&dfpc&u`A0+W=& z25MKT`C3qui9OR*vh_APLP)=l{Gl)JQAF1&Thy_zqr2J@>`aLg$q z{weozur3YP@?j12ljEUqKpvz#<)F3-t2HQ>MoYC|w2i{2+>J`DRJPsxc zDTf--Q_}3~$P54o%vPxZa?#|cx7^<_nx)&>97MH zZ-QuP+nVVxIN}qOiKW#>pavF&q>Y_l4lY+J#aDw`9a2h7a9Rm@n!*6oVf+@`7(S!; zf+(Q0HB{QiW0$?R5d}Z>InKNV2-4n(Nk94pj@}fLz7swoe4TN#l?E!dSaJAlv}u&K z-L&t0E{DPvvr2pCKDfeGh(db=d$iKI;(4=^?QD0)!Xa%!}L^;cox-Q_ViAKYoI)`C;xZhmC;^2B`Z(zUtV`1RSz ztCw?AGb7^=_)wfWxY=`sS`d^+FT3$tehnXV1*c{w-DtjWYpGUQEyI%Iw@|5d@h-NP z<{jZfWT%0lHhZZ3u9w5bb?I0OqVn{}Yq?9aBhwQEXk>nJ=Bk@puS0zgP0rApn4Y;j zFF;7)Hcd<}=jMXO_39YHi&|cQ_eJb^I%wqSk2pH1)A?#W$AZ+%z;fhkvQe`c+F(~= zL8PnfYd%~7Lge}~e(g11N>uo{Y~-a{P+#_ojFp0X?Ha-!xgHG~2-FAz<{A=Tr!jP8 zb*VlTF1RcC+DfIo&f-eF0P}_dq{1)|`%Cp9St%?K?^c|v=GV&ejE(BK*ZN?v{c^ZcMH5biNFysyM$~18paZ z0IHPBAvkLwrj07K;8rT=mv6*@udvQs{&sK)p)hyuT9F{g9byM*6rw~|;;@BZ-FzH* z6;Q}fxc)Hs%k_Bu`HD2m*VadhMb{ctyBxeri)P@qvS&~vli{LnSK#-=C5RFLK&VSb zRt@VlOF_WcI(<)$oC<2yxoUu_Mx~+9#Z{ZCaY1=k>+G;tu6s*@Or>?T@L+-NeL0IK z>9&1yxm-gc@is@n<(Bhxi_D2F@ZaQ0wG?8r@DzetsZzLwGP{jJcQ8_BQ=QCS3L0!e z(CUlxVc}L?NY45MK|EbSdelSC!=jtG4aX2(|0*~sD1i$nVX^Y%LU8d`E=PrgeQQgE z2E7z7FaXdTr58mKRV(1yYk~2FmJ&Gi4w3#I^o_8A#7tw9vgM35MNPQba77C2C|7svr+!m{m^O4U0WppU2kSynmm9-I3tHKMjtL4dZtZIb|YHfAbC#Qq* zYN8W0^$ko}SxZzdMEV+X|MqH#xD476lu!W|F<=E|F9VG%0xxg{D75uUm0Gel%R~{B z>#{EjR{gbCV^TFn`jmXbcu*)Iw5!jom3;9SXl5XrupA6cPQxn# z)!}os)Q`b{bg8CGHVa(<))wL8Fs4go3s+fytAg#Qcu2*H2%i+O4WU$`Be$iORw$NA zQbD9#LMq2bdV9bqTB<-#I3brRB>*E8i*XSPNtLA)rg|OmvKfT&Jpv zuCSwp)ukm0W?W~<#JC0!yc*WSmR`nZ^I;=780j2jqAS$yjbIwO25b{g1fxY7)@iI0 zwVq4oYY^WRD4w`!UPS9s4ai)pBpa?)8iX_MsXGa3S3;nu9M@0WX#{2FP2ws8oqEIj z5S@*PxfjEwRcxl~*zurVsD;(mM#-r8ggQm89#2amLbbC0Y*5PIky4`FU_vUb$Ur|L zu{DfUs_V6IX*tnkgyM+;lvF&1f$z#lt(ISp>#o;>qWFRZ5G+w2&ktKsPBeIxOuzx` zLdXPgJl*Iz*pHGMdwyc(6PLNS=?_XL(Fan3k=6_N{Sb34BSzH1Z3c~qK?>2yiNBaE z=j9+p{7?$Td}TJMS4y{GIwV$d;;ovMW+;rZ_;%U?eyqX2ZE3g^*6OghNV?7}(uQJQ z^&MCcmk@GA<;!b$2Ijd)zpx6ZS(-*zvq(&a%!D8(#UiE2s$F42jhHl2i=}*&e zp0q=r`8g1Dxsk6C0Qd$=2q@LI!^lrnpp{`Lq6%M_TV1HjlUQ7CG1S9Ap9hX$F0Tta zz=xQr-N+*t#OzV$C=j3zC7w%{GgPv{Z(S^Fo0WT9!D=qZlRN~S)%`Q-p>NU~| z#s@8x9T#MCxW5n*9mo#C0(xl*wzW!pOfa&1#^b2qqva>=!1M8!GTPvYCYI!YyqR;^ zrAezi&s)Sk8!W;M!uziK5m?x!rzfek2^_?g=0<84ip5B^T3Xl3WRxKMEexs}QN0iJ zTZRFpFDWPJpe(&bsjjk(s$nfGqQt;fORSp;%1fveaTGJq%CaNX&{Y<`64_>oi-S`p zDz1zT;j*$?OI|ke^;_7qoJKRCWjN)aK*Z`s6;vM;2s7Oo>qK}o8bdt>aV7_)L=z?9 zG872%S5RX>v7CXqsr*8KI!$}UF+_bxeH=iF<`LjQPwqS2AILErETE{c%p$Z3!C?_F zw557mQ8NTD(N>19#i5eEqtNlX>um;-kBhp2zuD7^J&{aHEw9 z(sE^}ZRi}BBv7PG^}sb>&6h)*bW%7q`zg6YFrU9-V#CKBQ1+HU5+p>`QEd*+i5!=^ z>9FjsPfDIb6Q|R8)U@bQsUgFxu<55Ncmt%PSEQ6OhnwKn(jf)c4Rv$VGQg& zp&Uh%N44N!A<$ICUqIdp%QIEFTx>I;*5h1b7HA27mP=H|OzU#sYh=gZu?0oMh=F)B z4xSbL1i34qt$uE`TCLEG#=S>sOL`kYG@b!W!aEX+4TIw#qRa+@{_~JC8gNuHt(3UL zmGA`MR5#MPHClUfXlGy6Vx*{2#r^)hS#c5n1 zMbc3Ups64@s#Q_&{o#z)q&SX@4NouEtZ|~P7*yR{DZsl=4H>Q|KhfTjLPabfd2ubM0Si$NmgjEaO>XyqbX1|TG*CP- zHn*IwRo%i8bE0w56f?l3X-H+1HceLMiP2J}a%&ZHw`#IV&8Ohebn7;nReMf_<+niq zy>VeQUvo%W)UdFqCD3g)fFm5#933U<5(+&oA?e|QL{_*^)I+EFMt-RHz#&6Qq*z&* zsc{q~m#hIq)hEkZ*PflzOnOadB`G+os5B5~!V~gxoIIM<)C9+rm&Dhx3MfOvsa1`G za^Q|d25huxZS7Zr5*P_k@(CCUl?Kf1k|K7&GDkIKe$;8^xnFKE1m zJC6wWRAmjHYU!rvbqYFWD-|5&*F@2elncuhbY&Ew#f7Cfjux1pWI?1G%OP$vVsM?P z90ko-v!)Ity6JVm+m50uZcHb^M)IpAq!l=blqpDwj)In0XM7))(FvyqB&}o{9qeFy z0pC$;;lOGENK3c}(;-5el=G5f=MPLJt zI)X|}ldqAh%9YVzIe$BZC*?*K>b4`?2Dwy*Cm0s$LY8@+k4!^C!#X0ea#3sHt4OfJ zqXXc&?r<6*mQ*fCIxK9Fj4-Y=Kq)ZY8#d$$s*EYMvR=XCg9fET0Z~>>TnCu9VKTu} zSi-9eOiZmlB+gj{0a)#J2$+kpYW~I1>pYtiI?oR?!3-GIEC#4SKbQp?8H~Wk0U#ar9lt6;>l~v zfmu5>ft9hM6=ky6h37=Ipye85s?uFRQ%QA<>iiHD)ZVxkkwpfbIQgX!lr34IEQuR# zQVX1e2Z=bX1_8J`k5jOwxqjF$^_F)8>rNB-!ju>UMnVjUV+Sm*`(6z1pv2u%*9o$9 ze|k*?k-TmR`6Dg|tz@)^NwsBM6ZMm-7-nMuK^zvh`B8d5v0@w_G@ehJbBS&siP=rDYgR0b0AE}m%!7!9kA}MH$uFF zA)uZ4lbm=PDewm6d3f-3x00_)Zbk3{+%c*E3;4TVxohaMQsgDG$rNg$@~48vXbmoR zeQ2ayhCZU7i+ywiU|>P!=jY%kH)h0d7kQyr>%$Z`}zx(L(omOsjyp>HM8=1p-~GEJ2QB zF>m;ysvBVugaK|XC8#-3-4J~UwB^VW_#~j*vD`^PHHdUQvQSb#w~{ZF+UlflBoT?m zi97H+>W;?+^(qefCKpF=IIvV%?W|j6CFVd#!sN^fK3XCtebV*7J&q94Q z?uuy0>54kYq5_rxgug^CjU7CvFe*e&2^GS*k}CFxG0~at5ZuRdfb}{!CNkC_&k*zg zI#DXYM1oYo8DmbEB&~>|E8^OtTvlEVn3okt$`>ouoaI`vQ?R6JNRI+q35on^Nb~|q zU*b}^@~8Ncz0@R>RCAM1T6CQ#b&@fisacIAGvmu#4*bNPc1q`+b)M7u47I@Cb{n{u zA57j}JyE_L)+%M*Db5+JnOW0_Yr5fBq&zGnaZSg_^Z0{~@WfLl*mATvRHW&rTm)bd z!=G|g8))0ikOVK;_58(CaH2E{?1mJImv1eo(sy#RMHF_Bovv4lP|+TK-bSKWE9z8Yh_85F?M*szHISRx zfY|{=A9V-=;!8%~;6E_PN}h3ys-eW)MpB7;iL3WrHom2$I$EdA(6!QKKfO z2x1;V8t(`???e$boWn`{{;84h8Wb9@VPYZQIA0)n;M_oAapCIPkF{C?nZP{ffAE-JSGFV0gfY9xCgA-KRO+^+^G50_nqb{IGLQ`~jQ} zu{>Euz7(1ZSKt;}$vFCm(g5@v*n>XSOl@MNiZUrb$%r6a41<~lv{ZCa8DHaSUdO{r z@TI;ye)6T^0=I%6fN9`*4K;OqA|r_(i3w0@xC-7w^seK&CcW~gDWRTy*s_G{I$H85 zaSZEpTmwHc!aZtw>F9-1@N3O~FIXNLh z`&_~b6<{U6ibHr@H-01@p9lmn8~3~}Fd3GHP**~WJ35BX0KE`5%8b|Wo=5L-Su^k4 z=Vvf;+^eJg)*JY;ByO1y$Pt%gt(Y1&0pY7?B?cBTtKlIpYmvGYk1?YL;U5GK)X-9u zktK{9l7DVwyS2u#{uIVf1BNnQ&F>^Mf^sz5?^bKLyj zJe*_@U+g8N7f??muA`;~xk577_o3ubDkyj4iU99K4keMaJ&JnD2~lVWGA^s57e@q` zZBUR(`6T7Z3q-QYR!Mr1Yq|bHG=jt>x>m8~AifT*u&CU91+~;PBodL>z#Nn^Y6sSm z|Hxll|AdEwa8oLil1=$G0#lnQ=MxuXERr=|iFK4S+aL5Zpcr(wFhd1+I_gq0+tFYW zeZPWv3W<3*pUMHXEw2Xg)@EmnO7LuJzM8=^J;6@ZZKSZMo{5i!n>&@LjrqHRaQU%H!upMtNNv;zzlCB$CxTxl-&~sRe8q56tMzWWl0!S zO%=z`%ryY1YLtGj8{F5n!?_VG7Q0xa6b3Q|1(ODeEFXg0Mu{SzAzoB96Pu)49XhSw zxs^GHfij!vDw;$Urr5ZUf(wA0Sfi#So3hSCFIE(`>T56zQ|LiqrCJ!`YOim$nqnnZ zL^hhUskl(|Y5ZBEbS`@?k(oC>+H7hrPu3|xsth>lDyr8y^aa}&@#3dV8E>pzLsn&6 z1LKV0i3Zh{Com6JARC45tC)}8iP~Rd399dYm-^b~(6(x1-757^L1v?dU>)J2ULoU= zTu;f$WOij^u5Y_FQ9G_gc;i9Wj`#Y&`6!s!%fss_SkBsiAI)&gUriaQF`O`R7Vl& znh-@bmX7_RFh6(3_2^2g3(a{rLNx?SB-XkoDjATjf|~X#z~2(aPGR%{uoCZME83W2 zpg2#m0d;*5?45K<$Q*<)sd>}|NZNxK4=hzZ^onodY#rKjq2vZ>Y+q|d2qiY7j zml_0+rOs-7H}o&Lx2c-1!BlNED6bbe`B( zXSA-)8ii^NS5HNXgPtfIEJCabM0ZYck74d)6jO!74sk*kE$KCL_k@xbs)3(8A_mk` zCks_%=So6jG%|V|vv7WO1LL4+5$zS!Z-slfe#f_SsirXt)uUV5o`J|@RP3ZD%k(A) znTZM6pL-=;h@~Nv$MH!ENRvQU%RRXrM7!aA|1fDyVjtBQ#%xDY_S7Hd(&`VJHtJ+9 zrd1f;GZ0kghniY_Ym$%tDc_ZqXuMxS-%IFAtH;2DZc;;7g)&8Ss5?Sh=#tpBuJ6BVP&ZO541qC@3;l8oeUg>^zmOhQXO=inPY7G#=6 zS=2om$5g}x70M!dyNz#d2TU9;+M-HI3OHj1PDcsh_D^8S)Zo%o+pT#CeVIM5EQoocmPfL^l)T1>XK&v>==IX4UoFX*ZZ~&A)$Mj*wvFa?)6Ihb zR1wKZENx7oqQ^sYlBtV=T-y$V2`XB8Ba=V?(@s==B)g`pdDgN0hLkW2Tx{kfEZZl$ zAI=U&x z+HLz5L8+S&Ybgs0xOgjYg%-K#1kzj=TC>eIqGuH9LuqG#_yD}M~HW2E7jM=(25t`OMI%r z89AbD=9If}UKpHmTLYQsuWD}9;M92yGD@@I$yVa24cjRwIuBqz*s7%niQD*1vz&2q zh!TNYxzWt%NnKZUWXx_-aZ!GWVs(+IbYh3tGFh=|GoO<#hPqsfUMu78?d0Wfe{+~@eDwbWx=C6x*dhx<3`;MD%K~U^mI2GzmN!2lbybxd8b6A z$^%1DBHdJ;*#^5#Iy=g#Jf3zhZ-x6WiQ1h4zT@0Ee?`{-HU1idMo@o_s79_EP{%=F|mTWSF(|%{OF)L8S ze&P&d+`QJ9XZ`j*kIp4|*{D?-nh zFa0V{kD;DU6ZwtuskWH1VXK(Jb;q?e=6XG%rna;h{H!l;4TY+GQa;Hev02c4`ne`7 z-XnCIorsPBemlk@by|X z^Ux^|o+s^~%TC1CMqkQS2|Z~cw9a5~*EfTK8k|wFMSE(R8Lt>#Xc5}+qBu?+CtvGf zdkqpCuiF7_fp}~`{~W|`pYvDJ>4Fn>`fv13VotdxSIeH>vE-Npkn0L2nWwJC6)^m#`0R?T0trp?%$N98gnjJ%&~xsmJZONxd6NJmVGWbd3i9#UaDI_SHLJ-0&65 zL#B*Z_c{`3g6KUdIW1w2#$e7IT>9N_F>$WmAWSk=@VJF0%X<){Vsu z#&GO0_at)=?XshNRevK3&^xF{AMgk1TQ0~5W~0TxR~+z3y0^9OiPv$MN&Cii zac_5&a+f?euw5G`yJPIlQy2V#AE?8%=qp;D*wfhWFYar-UIQH=H;>L^6uxNCwi=-$ zZ?xCz>h4LEe(uz6-|B#GKV#R}+PEEvT)$|0?u3UNPzMJpRJx97d1ifzfX1NOr1iM+ z;XL-kld4Hzg_v2#d(ul-ckTi`dhU-jVorm0@_|R6rEk!BKDSwxUa25a=d%wwKjDUT zc$T;~{n3iuI7U@3L8Rx4N!>}^$MrN5!K{p7#et)_^J(0Wdl|KEz-SWHycCb5jwU7< ztukLg?V;Gmw++E@%E5%xVlzJwsys^1|PF;KpFZ0gTTIyX-^e7DLRbVWZEaJdxo3rNyM!S`o z2~^q%wQ#g_yc17v{xGWsO}0<7I?TaACSGXupFf39d|L5rS> z0}081R7;(PgtK!+?L}c^D(1TMrwZb6`IC{L>(;s@^Vyeozv&$+bb|EY-foVKQBM)o zkev#LhK7L`_ef}|2y}l$zut06mfPySEw02dOc`-DO9r$n15-R)L!qPc(sg6gsVapE zL|HXyymV&v&=Tk2w=nelM(^Mn!4Yly`dhW)C{&`i%D6O z7L*wpl9LidzEtTWNTUFGv(p_rd9k}IZ0nqXo7Hxcd1WBZZHHI%Jh%ptr#TmHo~Y38 zSj0?5)Dku#!2A`Gk{jnugj|vKi|0T@Q7h}jD^lLr9|N8q&pi%aEB$^0R?NvljD`DM3?YG2%^4DkmkA z{Bfd}h@(8&Xr`bkH@usZ2}GiRNH=NUj1WYr-Z!es+~$jq?Nn-$_li~h2;GYzp0IHa zl8Lj#Qeit)SyyZjewBQFUCqcp4GEfqAyGmri>L-vh09UKP%&PUc-V^VN1ziapQ@1v z2N{HSJH)Um&eRc6d7VSM-j1YhkvT)H=7=V}-2o!B6iBO^C9Nfg~W=auRo0^T^mFilibM6fl-3D=`687f@>An`*f+B^%jJ z<&HH3b3tax!vH8Nv9BF-C$$S>S;hv6S|f_F6r%`2%&jUCsUw)TCfRfzvbL?xRcuE} zUd}&++Idml)Jp}7=4{-l=2S@rW&U`K?MxxzI3n9L2qES^$r4IHDD0Ou^OsL_^E8v9%@YQ9 zd=e0;jiPuYzf#mX*1?19ezw}$k94F+>1nj_o*7v;v-x_R<5VIHkI!Ov?e~-TQl z=hPrg3JodYlvhTPHRtBk*H;;%Q^%}09ZJ2EfO50>Xp{4{^)`NMD<=L@+eXwnGPI=- zGl@3~(BeRrDu`nGHnt!8gRRJ*5{U1=R==>-mx`@$E6P~!E)3#!9@{w8BALAvQ4AK_ zQRVM*j&67$+-Bc8Sq~xk+sWj>gAjBmN?~m`_a>x3nn4+K3Rs;)`fdXIS_OlU_{2AD zm5GoN8sXE*r-$=F=G_Fwrwzuf<{$@@ai`LjR&ION+WhRBcY=jjqKLRQ>6VlITA7VE zD&PP6ad_*5anLyhYN=UM1)HRLtaJ$^xwKuGvIor^kAwL=AZ~}ZOsPC1e1(nQ`O$z+ z616fH0qv%1)oY;5W`IVWMRC=@FV>anbgA`Sp#?eAZPV^?i>Qr}trv4(%KkBvM{S43 z!BRZyPa@s2W?kE&TyfXdw{0FnyPk^KPZ*FWw8soZ>5#YH*~M_29u4hAtPs_?qaq@P zbcDK~w5YD|_ggVO`E^DlOmNnWlm%ImnUVz%^aqN>m)5BV=-T8jt)i&P!ESs}2 zG18vul0WHA#N*vI{WY8MvoQ`Ci#HlQ6*2OsSbO#1ubsS&i+7iHA@j}8vZ@I#cNgC( z)n)dz&oVnTZR~S!4LVkI@lSM3jCZb^`kBwNZhRAs-3V(pI6Wn|*_N?>=Pfwhu$uZz z``&8(2V2*DCjQ-eT|G89A#!D&Vb?uxG#@t7$p}n?XjJj65MMp|LU(4)e-;Qjb(YQ2 z$yn|nEo6Lu4SjSsM>rRuQ8j6ySwD*vY_4u6WVAoYAEJpJXZJZ9r-~?Pzj(6EAJIwe z9)goWE9LgLCYjx#krpT!U%-`oTq8%u7j#=_$25+2L2E)pGX@s7v$vhrt1Fbu3^LQ% z?YEVxBD5OIFyRbO?U*^8C9G?%m8O*9Y^B@y7jf>3zJDjU3|r~6C>SeX5C;C1n`)h$ z2br2ip*J=u{T>u#oskTuxi+GUIWamxL=m>M?adPN7-Pp#OlfR>I~YkwvXG7Fl+XdG zp-e=P&4P}b#o&ZpXr24PS9^*FZPBd(C-C(Q3$jzU7|tedpd)URt22So8f;Tfo6^!jZjG8i#WI9m^h8SSOE{i&_aae8wW{q6PuU6WO<7}@OD?%;{{Ua; zdeFOHx*^e6Q{_Me+_}*3l0b_DnbvkW?S`%P(a0t_0T!24LqzNG^Duw{I zyH=W!uUhFug<#oCW^?t3TT@MJ(O5^5Y;<~UUais7D~1@PIqO;v78t7i`F2~IlZ_=O zAHigrC800`^3yv{p=L!afcDp=iSf>b>7eL2N=+EC{Y*ER`Qi!$n_IY(2syhZ5b?b~LHROUA(>p9u1Jb`k%I z;uPjl!+~_!Zah*)52UyM8m6X;>`oxvCaFxITTkoAEpgNvi%ci-iInJ^edAl(aX_ck z+FrX$Yx3u7EMGt~O~%t-@w0SiJ7|zJI0VTArF*jVT1BNb`{wqyCL7(MUwY+FdyXxQ z{9NYB=zsX;8~@JjfWqE6m`e5S!rQ=j-d$@JhoyK%pl7x=`` z^sYnM)zsmggYF<_I^26G+ni1fd>O-5QwJR{hw<4r=(J+jpvyKdJkq;Er%k@^ap`RH zoBDt6fz*yC+<_+?|Mm5!v|nHEj_ghT+u5JW-b_E?uu9$ochI2{Lk^_SIggU8`~+*W zR{&XGkK2*S96r3$VShb?=~UlAw+kPKA3N9EpWXN`1TPzALz!`1-rvb?e4mAkTy1=C zD7(>2XR<6{)s1(FlWe%lVMpKD?b7M&#y9c5&k;of&3glGXSVq^${FH{uRVi1*e2JH z4DMoU^W$vuyU~CA*o}al-S}j;tcF7R@dK%}-%RuYK%M~Zu{ZRzL7`$h8w&EX;m)3H z^M0@5=pFr72PQItiA=^f^yxzHWPbcW+OGo)f@(yetn)-_SARPDPG(1cD&u>vXIQnK z!HUF58d%NPMP_GzI+IcOiLD-7;zNM_px>cQrqA@cog@fZhUolY7n=_6JCuDp?a8q5 zK`$tD&>c+m97wq%PdJ(5T|>>gX+QMc9uO6%$0c}m$dj~dtvE%=@u>>mnLG6K!Zv%_{c2ToQ8PxNQ&G^nTQo*bt>Xh40K` z=yxdG@`-Jwdop_xI{_)d9BAYw)4L(XT5PG$^b4fyk{J-;^{gi!yOqDNZ{?zUT7he2 z{(GJS;`$6aq8Ut{0%BhgCd1U8HSYCMSio+S6+xs*LD)Z-B5Qwy?PNRTt&i*yde#rq z7y?p+(0rhji2q-aJDPu;IW*WWpV^xk{7+L=4K)9|XwByT_(E@Aw)vP05)d}NoA?ll z15SKHB?DM|imF-({OhC$*Q$-c55CALbOzFL1bj1acb}pIWoQDtV-SdagiJ(Q?&*)ql-j!kN~z|6 zDBZ(Y7>who_dO-TIS?1Jzi~f%WhX@QO5b1_z#TZ4daQTvK=WvNpm_|R$MHJGBK~>@ zcc%DBo!fjIZ9rciR56HfEPMATm)g5G-Ln_fdx4_8d!hQ+pHkdBPOZWD+z#J=;O>d1 zdm&EXk1KtBedq|Dw8c0j*4X$qbcX)Ntmz)8bWRBNIp|=uS`E)R(rDwpEOhs*e!S4D z@MQp}pZtK^RZAMF=^+x9=Ov&NL9Ms<1unp_kP(jYe5o9WD@cN*@FsY*N{kS?&8AS5<{~_nSgeSy}f^ z{f^6Q^QH^v!gdf^mvDbUH^&bmtU0kZ_8|f-&ZqG<-5__n;!Tw_S+9&LM_6xI(+!ZVc2bm z?!nX(z3_p?1=-DjAEF+xXtp^3A)-z4D2J|AN5^k6x!3eT!Ce+pP`lt0GpM`5Zf%%( zB6WZqpX>{)zHUo%EbyMTh1v9k+vly5&JD>4^b3n*%xV@jeAnDSKc3y_XA!oH|~*1MInkK{t7!}72`csB1$dzi55hk6VOa-R+}%rtXC2#4l9!~0rG3P| z>Klyhhhyijs66vvtAV@!DSIHjLnQ65fXF8R%oC|T5i^L>9@(J^Lm!M1OW_`J1%(Z4 zFQMIlURr0?)4j(>1{@@;g#D7Sh-Q8q?(Iv*X8ltJ?{wMDW13J$&2Cw|#ue@NGZe4)AS&Z&|(_CMN^rGgm&}{fc^SOk$pa+#9>1H;}~`Y z9X9@~PuK%i-1j`Uvj^N^wfE7lgjdy9zyx447jF3eA2W|MWl%(q|T+b0I#C)^n1jbS4j z{?=bJ8m2a(0(&Q8rS(kI{BAlbevmn&Jw-&KfKtLlv^1T>}B`?|z*p@_*TzI`f_kW5h;`poUTT#s{pW+P=ptzBLE^43XQ$$}b$yX=M-M z{`gshVrL>i;fA31Io~_>9$5Qj>jmRNs)46OEZKI2BU&uu;b_4wW-r^)NC8f_Ou!mW zdkv)Va>>ir3QFlG>X!js+Oi_Npy@W&iX$pzJ0YC|P^g+0Jo!gkWoOmN{d>b!~n zN5cqjB@VIHG|<4iCoyN0|iSyG(LV+wTEa5M1f|UCfARbI+iKrIwYvhX(k< zn978keQ3zwVw~6u*w#&qbf){LGehTH_vTGmw;3Gp)0+hgGT5(hj@CRDwUg%)4d|!K ztKmxwV@Cn;CfVrhfd;HAmx61=<3A$r5c{1wpOX#dd5G+{le`tL+1cw=8>og&oAV&C;8C$EXNE+ zEraL_AqUWShp@kua&NT2J+#&1sGmOn;E$ZYSj^>4J2#Ya$6FVW$9q0~e!gN4t;4er z+4-LXR?sf7- zFvN%LJu_%eVe`*le`e5_W*B_+{JH0cht3S2dH&opgJW0~kKDab4ptj@eCjiU*H-b| z-U1!~H($9GlrNO=NHu(Q5puz&_HlCO!jvn{hAZ+2KmR<;A-Q+Vmvemv2xQV;mh zU*~Emx6*ZGefle&()iFppg8;413t!9pBImBkf+>ZR(~UG;DLt?!GQw0m~wfghg6~? z9~J-5fdixNwdd~2GdpzRyrj~ef)G4>MtdaX_8Tp^1Rj9t+(OFTRMe7%_(bT3 zzE!BUT{5$CcTZs3&{IFHOUeVLAM$!{>eP6$=Bq*B^h2KfN5=VHx6W1?XC5-hp1L=} zYJg{KK5WhXhJTzao{3rt^5C77dZAJ)g$uDkI72sM=;Zd6VBz`a^JfcZpBsMR^qJt~ zIe0XOQ|?jW9D6qTNF7fLuZJ+~ZJdiIj}{*G-qiV;udU1E!mG}G{ndZq;I1~jkPvA> z*pGnQnm^{*ZKS}*s=syWjW-gjK5W5x#+VzrVr?+ zIrrT0H{nm^SKh4iJzuTX-z?y%(3SF=<{iEX{;t2-5+j`8^Q7OLtE|=v!JCzZue>=P zEUYfQiKn@rIoH~As9Icbb5}-Aoqf(3NH;x5-1fI4o48MJcj!&TS1cO z5Fsu%Gu@FsC$Vq+cLukb0tfELF*4=90>CdU>i3{@=6{rEqo39n!R}VUKjw!6g-@z^k2CCQ}F}Q@=@bJyAE_H+M9vFWR zzm; BetterLoading - 3.1.3.2 + 3.2.0.0
  • Core >= 1.0
  • Startupimpact
  • diff --git a/Source/BetterLoadingMain.cs b/Source/BetterLoadingMain.cs index 385861d..693f151 100755 --- a/Source/BetterLoadingMain.cs +++ b/Source/BetterLoadingMain.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using System.Reflection; +using BetterLoading.Stage.SaveLoad; using HarmonyLib; using JetBrains.Annotations; using RimWorld; @@ -296,6 +297,10 @@ public static void OnGameLoadStart() LoadingScreen = Object.FindObjectOfType().gameObject .AddComponent(); InitLoadingScreenBG(); + + //Try and work out how many maps we have + LoadMaps.CountMaps(); + LoadingScreen!.StartSaveLoad(); } @@ -320,67 +325,6 @@ public static void OnClearPlayData() #region Save Game Loading Patches - [HarmonyPatch(typeof(Game))] - [HarmonyPatch(nameof(Game.LoadGame))] - [UsedImplicitly] - public class LoadGamePatch - { - [UsedImplicitly] - public static void Prefix() - { - Resources.FindObjectsOfTypeAll()[0].gameObject - .AddComponent(); - LogMsg("Loading Screen Manager :: Load Small Components :: Start"); - - LoadingScreen.Instance.shouldShow = true; - LoadingScreen.Instance.currentStage = EnumLoadingStage.LoadSmallComponents; - } - } - - [HarmonyPatch(typeof(World))] - [HarmonyPatch(nameof(World.ExposeData))] - [UsedImplicitly] - public class LoadWorldPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.LoadSmallComponents) - { - LogMsg("Loading Screen Manager :: Load World Map :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.LoadWorldMap; - } - } - } - - [HarmonyPatch(typeof(WorldGenerator))] - [HarmonyPatch(nameof(WorldGenerator.GenerateFromScribe))] - [UsedImplicitly] - public class GenerateWorldPatch - { - [UsedImplicitly] - public static void Prefix() - { - LogMsg("Loading Screen Manager :: Generate World Data :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.GenerateWorldData; - LoadingScreen.Instance.numWorldGeneratorsToRun = WorldGenerator.GenStepsInOrder.Count() - 2; - } - } - - [HarmonyPatch(typeof(WorldGenerator))] - [HarmonyPatch(nameof(WorldGenerator.GenerateWithoutWorldData))] - [UsedImplicitly] - public class GenerateWorldPatch2 - { - [UsedImplicitly] - public static void Prefix() - { - LogMsg("Loading Screen Manager :: Generate World Data :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.GenerateWorldData; - LoadingScreen.Instance.numWorldGeneratorsToRun = WorldGenerator.GenStepsInOrder.Count() - 2; - } - } - [HarmonyPatch(typeof(WorldGenStep))] [HarmonyPatch(nameof(WorldGenStep.GenerateFromScribe))] [UsedImplicitly] @@ -407,204 +351,6 @@ public static void Prefix(WorldGenStep __instance) } } - [HarmonyPatch(typeof(World))] - [HarmonyPatch(nameof(World.FinalizeInit))] - [UsedImplicitly] - public class WorldFinalizePatch - { - [UsedImplicitly] - public static void Prefix() - { - LogMsg("Loading Screen Manager :: Finalize World Data :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.FinalizeWorld; - } - } - - [HarmonyPatch(typeof(Map))] - [HarmonyPatch(nameof(Map.ExposeData))] - [UsedImplicitly] - public class MapExposePatch - { - [UsedImplicitly] - public static void Prefix(Map __instance) - { - if (LoadingScreen.Instance.currentStage >= EnumLoadingStage.FinalizeWorld && - LoadingScreen.Instance.currentStage <= EnumLoadingStage.LoadMaps_LoadData) - { - LogMsg("Loading Screen Manager :: Load Map (Construct Components) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.LoadMaps_ConstructComponents; - LoadingScreen.Instance.maps.Add(__instance); - } - } - } - - [HarmonyPatch(typeof(Map))] - [HarmonyPatch("ExposeComponents")] - [UsedImplicitly] - public class MapLoadPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.LoadMaps_ConstructComponents) - { - LogMsg("Loading Screen Manager :: Load Map (Load Components) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.LoadMaps_LoadComponents; - } - } - } - - [HarmonyPatch(typeof(MapFileCompressor))] - [HarmonyPatch(nameof(MapFileCompressor.ExposeData))] - [UsedImplicitly] - public class MapLoadCompressedPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.LoadMaps_LoadComponents) - { - LogMsg("Loading Screen Manager :: Load Map (Load Objects) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.LoadMaps_LoadData; - } - } - } - - [HarmonyPatch(typeof(CameraDriver))] - [HarmonyPatch(nameof(CameraDriver.Expose))] - [UsedImplicitly] - public class CameraLoadPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.LoadMaps_LoadData) - { - LogMsg("Loading Screen Manager :: Init Camera :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.InitCamera; - } - } - } - - [HarmonyPatch(typeof(ScribeLoader))] - [HarmonyPatch(nameof(ScribeLoader.FinalizeLoading))] - [UsedImplicitly] - public class ResolveSaveFileReferencesPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage != EnumLoadingStage.InitCamera) return; - - LogMsg("Loading Screen Manager :: Resolve Cross-References :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.ResolveSaveFileCrossReferences; - } - } - - [HarmonyPatch(typeof(Map))] - [HarmonyPatch(nameof(Map.FinalizeLoading))] - [UsedImplicitly] - public class MapFinalizeLoadPatch - { - [UsedImplicitly] - public static void Prefix(Map __instance) - { - LogMsg("Loading Screen Manager :: Spawn Things (Non-Buildings) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.SpawnThings_NonBuildings; - LoadingScreen.Instance.mapIndexSpawningItems++; - - //Reflection, fuck yeah! -// LoadingScreen.Instance.numObjectsToSpawnCurrentMap = __instance.compressor.ThingsToSpawnAfterLoad().Count() + -// Traverse.Create(__instance).Field>("loadedFullThings") -// .Value.Count; -// LoadingScreen.Instance.numObjectsSpawnedCurrentMap = 0; - } - } - - [HarmonyPatch(typeof(GenSpawn))] - [HarmonyPatch(nameof(GenSpawn.Spawn))] - [HarmonyPatch(new[] - {typeof(Thing), typeof(IntVec3), typeof(Map), typeof(Rot4), typeof(WipeMode), typeof(bool)})] - [UsedImplicitly] - public class GenSpawnSpawnPatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.SpawnThings_NonBuildings) - LoadingScreen.Instance.numObjectsSpawnedCurrentMap++; - } - } - - [HarmonyPatch(typeof(GenSpawn))] - [HarmonyPatch(nameof(GenSpawn.SpawnBuildingAsPossible))] - [UsedImplicitly] - public class GenSpawnSpawnBuildingPatch - { - [UsedImplicitly] - public static void Prefix(Map __instance) - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.SpawnThings_NonBuildings) - { - LogMsg("Loading Screen Manager :: Spawn Things (Buildings) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.SpawnThings_Buildings; - } - - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.SpawnThings_Buildings) - LoadingScreen.Instance.numObjectsSpawnedCurrentMap++; - } - } - - [HarmonyPatch(typeof(GenPlace))] - [HarmonyPatch(nameof(GenPlace.TryPlaceThing))] - [HarmonyPatch(new[] - { - typeof(Thing), typeof(IntVec3), typeof(Map), typeof(ThingPlaceMode), typeof(Action), - typeof(Predicate) - })] - [UsedImplicitly] - public class GenPlaceTryPlacePatch - { - [UsedImplicitly] - public static void Prefix() - { - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.SpawnThings_Buildings) - { - LogMsg("Loading Screen Manager :: Spawn Things (Back-Compat) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.SpawnThings_BackCompat; - } - - if (LoadingScreen.Instance.currentStage == EnumLoadingStage.SpawnThings_BackCompat) - LoadingScreen.Instance.numObjectsSpawnedCurrentMap++; - } - } - - [HarmonyPatch(typeof(Map))] - [HarmonyPatch(nameof(Map.FinalizeInit))] - [UsedImplicitly] - public class MapFinalizeInitPatch - { - [UsedImplicitly] - public static void Prefix() - { - LogMsg("Loading Screen Manager :: Spawn Things (Rebuild/Recalc) :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.SpawnThings_RebuildRecalc; - } - } - - [HarmonyPatch(typeof(Game))] - [HarmonyPatch(nameof(Game.FinalizeInit))] - [UsedImplicitly] - public class GameFinalizeInitPatch - { - [UsedImplicitly] - public static void Prefix() - { - LogMsg("Loading Screen Manager :: Finalize Load :: Start"); - LoadingScreen.Instance.currentStage = EnumLoadingStage.FinalizeLoad; - } - } - #endregion } } \ No newline at end of file diff --git a/Source/LoadingScreen.cs b/Source/LoadingScreen.cs index 5ca690a..e485700 100755 --- a/Source/LoadingScreen.cs +++ b/Source/LoadingScreen.cs @@ -51,10 +51,8 @@ public sealed class LoadingScreen : MonoBehaviour //For all of these stages, vanilla just shows "..." new LoadSmallComponents(BetterLoadingMain.hInstance!), new LoadWorldMap(BetterLoadingMain.hInstance), - new FinalizeWorld(BetterLoadingMain.hInstance), new LoadMaps(BetterLoadingMain.hInstance), - new SetUpCamera(BetterLoadingMain.hInstance), - new ResolveDefCrossRefs(BetterLoadingMain.hInstance), + new FinalizeScribeLoad(BetterLoadingMain.hInstance), new SpawnAllThings(BetterLoadingMain.hInstance), new FinalizeGameState(BetterLoadingMain.hInstance) }; @@ -203,7 +201,9 @@ public void OnGUI() { Log.Message("[BetterLoading] Long event has finished, hiding loading screen."); shouldShow = false; - BetterLoadingApi.DispatchLoadComplete(); + + if(BootLoadList.Contains(_currentStage)) + BetterLoadingApi.DispatchLoadComplete(); return; } @@ -404,285 +404,6 @@ private static List LoadGameplayTips() return DefDatabase.AllDefsListForReading.SelectMany(set => set.tips).InRandomOrder().ToList(); } - private void DrawSaveFileLoad() - { - //Draw window - var rect = new Rect(100, 100, Screen.width - 200, Screen.height - 200); - rect = rect.Rounded(); - UIMenuBackgroundManager.background.BackgroundOnGUI(); - Widgets.DrawShadowAround(rect); - Widgets.DrawWindowBackground(rect); - - Text.Font = GameFont.Medium; - Text.Anchor = TextAnchor.UpperCenter; - - rect.y += 20; //Nudge down for title - - Widgets.Label(rect, "BetterLoading :: Loading Save File..."); - - Text.Font = GameFont.Small; - Text.Anchor = TextAnchor.UpperLeft; - - rect.x += 20; //Indent - rect.width -= 20; - - //Stages for this, in terms of actual time consuming events: - //Scene Load is triggered for "Play" scene, which triggers Verse.Root_Play#Start - //This then calls QueueLongEvent (Action, string, bool, Action) with the action being call SavedGameLoaderNow.LoadGameFromSaveFileNow - which is probably where the ACTUAL save file logic is. - // The event name is "LoadingLongEvent" and it's async - //If something goes wrong it calls GameAndMapInitExceptionHandlers.ErrorWhileLoadingGame - cleanup this? - //The key clue that the game load has begun is ScribeLoader#InitLoading being called which buffers the save file into an XmlDocument, and saves it into ScribeLoader.curXmlParent - // Scribe.mode is set to LoadingVars once the file is buffered in - but this doesn't have a setter to hook. - //Once the file is read then Game#LoadGame is called. This is the time consuming bit. - // - //Stage one could be "Load Small Components" (Game#ExposeSmallComponents) as this picks up a few small details such as research, the tutor, the scenario, etc. - // - //Second stage start coincides with vanilla's "Loading World" and hook could go in World's constructor or World#ExposeData - // This is split up into loading of the world info (i.e. seed, coverage, etc) which is quick - // And the grid, which may not be. - // Then WorldGenerator.GenerateFromScribe (or MAYBE GenerateWithoutWorldData) will be called - // -Progress bar this? We can do a hook in WorldGenStep#GenerateFromScribe/GenerateWithoutWorldData to increment, and the total is equal to WorldGenerator.GenStepsInOrder.Length - // Then World#FinalizeInit is called, which recalcs paths and has a callback for all WorldComponents (FinalizeInit method). - // - //Next Stage is vanilla's "Loading Map" - // This is deceptively simple as it just calls Map#ExposeData once per map. - // First part of this instantiates 80-odd classes and a bunch of MapComponents, but SHOULD be quite quick? (Call to Map#ConstructComponents) - // Second part populates all 80 classes and map components with saved data (call to Map#ExposeComponents) - // Third part loads compressed stuff as a byte array (Call to MapFileCompressor#ExposeData) - // Fourth part loads uncompressed stuff, and it's a direct call to Scribe_Collections#Look - // It then sets the current map index - // - //Next is vanilla's "Initializing Game" which actually just loads the camera pos (CameraDriver#Expose) - // - //Next is "Finalize Loading" which resolves cross references, sets the current load mode to Inactive, and calls post-load callbacks - // - //Then "Spawning All Things" - // This first off calls Map#FinalizeLoading for each map, which: - // Merges Map#loadedFullThings and MapCompressor#ThingsToSpawnAfterLoad()'s return value (hook said after load method?) - // Actually spawns stuff - // GenSpawn.Spawn for every non-building item in the new list (get total based on size of the two?) - // GenSpawn#SpawnBuildingAsPossible for every building in same list. - // Then calls GenPlace#TryPlaceThing for a few things if loading an older version - // Finally calls Map#FinalizeInit which recalculates and rebuilds a bunch of stuff and calls PostMapInit for each - // - //Finally Game#FinalizeInit is called, which flushes the log file, applies research mods, and calls GameComponent#FinalizeInit for each component in Current.Game.components - - //----------------Load Small Components------------ - rect.y += 50; - Widgets.Label(rect, - currentStage == EnumLoadingStage.LoadSmallComponents - ? "Loading Misc Game Data..." - : "Basic Game Data Loaded"); - - //bar - var barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage == EnumLoadingStage.LoadSmallComponents ? 0 : 1); - - //----------------Load World Map------------ - rect.y += 50; - Widgets.Label(rect, - currentStage < EnumLoadingStage.LoadWorldMap ? "Waiting for game data load..." : - currentStage == EnumLoadingStage.LoadWorldMap ? "Loading World Map..." : "World Map Loaded"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage <= EnumLoadingStage.LoadWorldMap ? 0 : 1); - - //----------------Generate World Features------------ - rect.y += 50; - Widgets.Label(rect, currentStage < EnumLoadingStage.GenerateWorldData - ? "Waiting for world map..." - : currentStage == EnumLoadingStage.GenerateWorldData - ? $"Generating World Feature: {currentWorldGenStep} ({numWorldGeneratorsRun}/{numWorldGeneratorsToRun})" - : "World Features Generated"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, - numWorldGeneratorsToRun == 0 ? 0 : (float) numWorldGeneratorsRun / numWorldGeneratorsToRun); - - //----------------Finalizing World------------ - rect.y += 50; - Widgets.Label(rect, currentStage < EnumLoadingStage.FinalizeWorld - ? "Waiting for feature generation..." - : currentStage == EnumLoadingStage.FinalizeWorld - ? "Applying finishing touches to world..." - : "World Finalized."); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage <= EnumLoadingStage.FinalizeWorld ? 0 : 1); - - //----------------Map Loading------------ - rect.y += 50; - - if (currentStage >= EnumLoadingStage.LoadMaps_ConstructComponents) - { - if (currentStage <= EnumLoadingStage.LoadMaps_LoadData) - { - Widgets.Label(rect, "Loading Maps..."); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 0.2f); - } - else - { - Widgets.Label(rect, "Maps Loaded"); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 1); - } - - rect.y += 50; - rect.x += 25; //Indent - rect.width -= 25; - - var num = 0; - foreach (var unused in maps) - { - if (num < maps.Count - 1 || currentStage > EnumLoadingStage.LoadMaps_LoadData) - { - //This map is loaded fully - Widgets.Label(rect, "Map " + (num + 1) + ": Loaded"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 1); - } - else - { - //This map is partially loaded - Widgets.Label(rect, - "Map " + (num + 1) + ": " + (currentStage == EnumLoadingStage.LoadMaps_ConstructComponents - ? "Constructing Components..." - : currentStage == EnumLoadingStage.LoadMaps_LoadComponents - ? "Loading Misc Map Details..." - : "Reading Object Data...")); - - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, - (float) (currentStage + 1 - EnumLoadingStage.LoadMaps_ConstructComponents) / 5); - } - - num++; - rect.y += 50; - } - - rect.x -= 25; //Unindent - rect.width += 25; - } - else if (currentStage < EnumLoadingStage.LoadMaps_LoadComponents) - { - Widgets.Label(rect, "Waiting for map data..."); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 0); - } - - //----------------Init Camera------------ - Widgets.Label(rect, currentStage < EnumLoadingStage.InitCamera - ? "Waiting for maps to finish loading..." - : currentStage == EnumLoadingStage.InitCamera - ? "Setting up camera..." - : "Camera Setup Complete"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage <= EnumLoadingStage.InitCamera ? 0 : 1); - - //----------------Resolve Cross-References------------ - rect.y += 50; - Widgets.Label(rect, currentStage < EnumLoadingStage.ResolveSaveFileCrossReferences - ? "Waiting for camera setup..." - : currentStage == EnumLoadingStage.ResolveSaveFileCrossReferences - ? "Resolving Def Cross-References..." - : "Defs Successfully Cross-Referenced"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage <= EnumLoadingStage.ResolveSaveFileCrossReferences ? 0 : 1); - - //----------------Spawning All Things------------ - rect.y += 50; - - - if (currentStage > EnumLoadingStage.SpawnThings_RebuildRecalc) - { - Widgets.Label(rect, "Things Spawned"); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 1); - } - else if (currentStage >= EnumLoadingStage.SpawnThings_NonBuildings) - { - Widgets.Label(rect, "Spawning all things..."); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, (mapIndexSpawningItems + 1f) / (maps.Count + 1f)); - } - else - { - Widgets.Label(rect, "Waiting for defs to be cross-referenced..."); - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 0); - } - - rect.y += 50; - rect.x += 25; //Indent - rect.width -= 25; - - var num2 = 0; - foreach (var unused in maps) - { - if (num2 < mapIndexSpawningItems || currentStage > EnumLoadingStage.SpawnThings_RebuildRecalc) - { - //This map is loaded fully - Widgets.Label(rect, "Map " + (num2 + 1) + ": Everything Spawned"); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 1); - } - else if (num2 == mapIndexSpawningItems) - { - //This map is partially loaded - Widgets.Label(rect, - "Map " + (num2 + 1) + ": " + (currentStage == EnumLoadingStage.SpawnThings_NonBuildings - ? "Spawning Items..." - : currentStage == EnumLoadingStage.SpawnThings_Buildings - ? "Spawning Buildings..." - : currentStage == EnumLoadingStage.SpawnThings_BackCompat - ? "Upgrading Level Format..." - : "Rebuilding & Recalculating Pathfinding Map etc...")); - - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, - (float) (currentStage + 1 - EnumLoadingStage.SpawnThings_NonBuildings) / 5); - } - else - { - //This map is not yet loaded - Widgets.Label(rect, "Map " + (num2 + 1) + ": Waiting..."); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, 0); - } - - num2++; - rect.y += 50; - } - - rect.x -= 25; //Unindent - rect.width += 25; - - //----------------Finalize Load------------ - Widgets.Label(rect, currentStage < EnumLoadingStage.FinalizeLoad - ? "Waiting for things to finish spawning..." - : currentStage == EnumLoadingStage.FinalizeLoad - ? "Finalizing Game State..." - : "Load Complete."); - - //bar - barRect = new Rect(rect.x, rect.y + 25, rect.width - 24, 20); - Widgets.FillableBar(barRect, currentStage <= EnumLoadingStage.FinalizeLoad ? 0 : 1); - } - public static void MarkTipsNowAvailable() { Log.Message("[BetterLoading] Tips should now be available. Showing..."); diff --git a/Source/Stage/SaveLoad/2FinalizeWorld.cs b/Source/Stage/SaveLoad/2FinalizeWorld.cs deleted file mode 100644 index 37050d3..0000000 --- a/Source/Stage/SaveLoad/2FinalizeWorld.cs +++ /dev/null @@ -1,35 +0,0 @@ -using HarmonyLib; -using JetBrains.Annotations; - -namespace BetterLoading.Stage.SaveLoad -{ - public class FinalizeWorld : LoadingStage { - public FinalizeWorld([NotNull] Harmony instance) : base(instance) - { - } - - public override string GetStageName() - { - throw new System.NotImplementedException(); - } - - public override string? GetCurrentStepName() - { - throw new System.NotImplementedException(); - } - - public override int GetCurrentProgress() - { - throw new System.NotImplementedException(); - } - - public override int GetMaximumProgress() - { - throw new System.NotImplementedException(); - } - - public override void DoPatching(Harmony instance) - { - } - } -} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/2LoadMaps.cs b/Source/Stage/SaveLoad/2LoadMaps.cs new file mode 100644 index 0000000..de073be --- /dev/null +++ b/Source/Stage/SaveLoad/2LoadMaps.cs @@ -0,0 +1,136 @@ +using HarmonyLib; +using JetBrains.Annotations; +using Verse; + +namespace BetterLoading.Stage.SaveLoad +{ + public class LoadMaps : LoadingStage { + public static int NumMaps; + + private static int _currMapNum = -1; + private static Map _currMap; + + private static bool _currMapInitialized; + private static bool _currMapLoadedComponents; + private static bool _currMapLoadedCompressed; + + private static bool _allMapsLoaded; + + public static void CountMaps() + { + if (!Scribe.EnterNode("maps")) + return; + + try + { + NumMaps = Scribe.loader.curXmlParent.ChildNodes.Count; + Log.Message($"[BetterLoading] This save file contains {NumMaps} map(s)."); + } + finally + { + //Make sure we absolutely exit the node because if we don't we risk corrupting the save file. + Scribe.ExitNode(); + } + } + + public LoadMaps([NotNull] Harmony instance) : base(instance) + { + } + + public override string GetStageName() + { + return "Loading Maps"; + } + + public override string? GetCurrentStepName() + { + if (_currMapNum == -1) + return "Waiting..."; + + var text = $"Map {_currMapNum + 1} of {NumMaps}: "; + + if (_currMapLoadedCompressed) + return text + "Loading Things"; + + if (_currMapLoadedComponents) + return text + "Loading Compressed Map Data"; + + if (_currMapInitialized) + return text + "Loading Components"; + + return text + "Reading Data"; + } + + public override int GetCurrentProgress() + { + if (_currMapNum == -1) + return 0; + + var baseValue = _currMapNum * 4; + + if (_currMapLoadedCompressed) + return baseValue + 3; + + if (_currMapLoadedComponents) + return baseValue + 2; + + if (_currMapInitialized) + return baseValue + 1; + + return baseValue; + } + + public override int GetMaximumProgress() + { + return NumMaps * 4; + } + + public override bool IsCompleted() + { + return _allMapsLoaded; + } + + public override void BecomeInactive() + { + _allMapsLoaded = false; + } + + public override void DoPatching(Harmony instance) + { + instance.Patch(AccessTools.Method(typeof(Map), nameof(Map.ExposeData)), new HarmonyMethod(typeof(LoadMaps), nameof(OnMapLoadStart))); + instance.Patch(AccessTools.Method(typeof(Map), "ExposeComponents"), new HarmonyMethod(typeof(LoadMaps), nameof(OnMapComponentsLoadStart))); + instance.Patch(AccessTools.Method(typeof(MapFileCompressor), nameof(MapFileCompressor.ExposeData)), new HarmonyMethod(typeof(LoadMaps), nameof(OnMapCompressedDataLoadStart)), new HarmonyMethod(typeof(LoadMaps), nameof(OnMapCompressedDataLoadEnd))); + instance.Patch(AccessTools.Method(typeof(CameraDriver), nameof(CameraDriver.Expose)), postfix: new HarmonyMethod(typeof(LoadMaps), nameof(OnAllMapsLoaded))); + } + + public static void OnMapLoadStart(Map __instance) + { + _currMap = __instance; + _currMapNum++; + + _currMapInitialized = false; + _currMapLoadedComponents = false; + _currMapLoadedCompressed = false; + } + + public static void OnMapComponentsLoadStart() + { + _currMapInitialized = true; + } + + public static void OnMapCompressedDataLoadStart() + { + _currMapLoadedComponents = true; + } + + public static void OnMapCompressedDataLoadEnd() + { + _currMapLoadedCompressed = true; + } + + public static void OnAllMapsLoaded() + { + _allMapsLoaded = true; + } + } +} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/3FinalizeScribeLoad.cs b/Source/Stage/SaveLoad/3FinalizeScribeLoad.cs new file mode 100644 index 0000000..767353d --- /dev/null +++ b/Source/Stage/SaveLoad/3FinalizeScribeLoad.cs @@ -0,0 +1,55 @@ +using HarmonyLib; +using JetBrains.Annotations; +using Verse; + +namespace BetterLoading.Stage.SaveLoad +{ + public class FinalizeScribeLoad : LoadingStage + { + private static bool _complete; + + public FinalizeScribeLoad([NotNull] Harmony instance) : base(instance) + { + } + + public override string GetStageName() + { + return "Finishing file load and cleaning up..."; + } + + public override string? GetCurrentStepName() + { + return null; + } + + public override int GetCurrentProgress() + { + return 0; + } + + public override int GetMaximumProgress() + { + return 1; + } + + public override bool IsCompleted() + { + return _complete; + } + + public override void BecomeInactive() + { + _complete = false; + } + + public override void DoPatching(Harmony instance) + { + instance.Patch(AccessTools.Method(typeof(ScribeLoader), nameof(ScribeLoader.FinalizeLoading)), postfix: new HarmonyMethod(typeof(FinalizeScribeLoad), nameof(OnResolvingComplete))); + } + + public static void OnResolvingComplete() + { + _complete = true; + } + } +} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/3LoadMaps.cs b/Source/Stage/SaveLoad/3LoadMaps.cs deleted file mode 100644 index 2fa8fdf..0000000 --- a/Source/Stage/SaveLoad/3LoadMaps.cs +++ /dev/null @@ -1,35 +0,0 @@ -using HarmonyLib; -using JetBrains.Annotations; - -namespace BetterLoading.Stage.SaveLoad -{ - public class LoadMaps : LoadingStage { - public LoadMaps([NotNull] Harmony instance) : base(instance) - { - } - - public override string GetStageName() - { - throw new System.NotImplementedException(); - } - - public override string? GetCurrentStepName() - { - throw new System.NotImplementedException(); - } - - public override int GetCurrentProgress() - { - throw new System.NotImplementedException(); - } - - public override int GetMaximumProgress() - { - throw new System.NotImplementedException(); - } - - public override void DoPatching(Harmony instance) - { - } - } -} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/4SetUpCamera.cs b/Source/Stage/SaveLoad/4SetUpCamera.cs deleted file mode 100644 index 8509cc2..0000000 --- a/Source/Stage/SaveLoad/4SetUpCamera.cs +++ /dev/null @@ -1,35 +0,0 @@ -using HarmonyLib; -using JetBrains.Annotations; - -namespace BetterLoading.Stage.SaveLoad -{ - public class SetUpCamera : LoadingStage { - public SetUpCamera([NotNull] Harmony instance) : base(instance) - { - } - - public override string GetStageName() - { - throw new System.NotImplementedException(); - } - - public override string? GetCurrentStepName() - { - throw new System.NotImplementedException(); - } - - public override int GetCurrentProgress() - { - throw new System.NotImplementedException(); - } - - public override int GetMaximumProgress() - { - throw new System.NotImplementedException(); - } - - public override void DoPatching(Harmony instance) - { - } - } -} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/4SpawnAllThings.cs b/Source/Stage/SaveLoad/4SpawnAllThings.cs new file mode 100644 index 0000000..70d7166 --- /dev/null +++ b/Source/Stage/SaveLoad/4SpawnAllThings.cs @@ -0,0 +1,87 @@ +using HarmonyLib; +using JetBrains.Annotations; +using Verse; + +namespace BetterLoading.Stage.SaveLoad +{ + public class SpawnAllThings : LoadingStage + { + private static int _currMapIdx = -1; + private static int _numThingsThisMapSoFar; + + private static bool _finished; + + public SpawnAllThings([NotNull] Harmony instance) : base(instance) + { + } + + public override string GetStageName() + { + return "Spawning all things"; + } + + public override string? GetCurrentStepName() + { + if (_currMapIdx == -1) + return "Waiting..."; + + return $"Map {_currMapIdx + 1} of {LoadMaps.NumMaps}: {_numThingsThisMapSoFar} spawned so far"; + } + + public override int GetCurrentProgress() + { + if (_currMapIdx == -1) + return 0; + + return _currMapIdx; + } + + public override int GetMaximumProgress() + { + return LoadMaps.NumMaps; + } + + public override bool IsCompleted() + { + return _finished; + } + + public override void BecomeInactive() + { + _finished = false; + _currMapIdx = 0; + _numThingsThisMapSoFar = 0; + } + + public override void DoPatching(Harmony instance) + { + instance.Patch(AccessTools.Method(typeof(Map), nameof(Map.FinalizeLoading)), new HarmonyMethod(typeof(SpawnAllThings), nameof(OnMapStartFinalizing)), new HarmonyMethod(typeof(SpawnAllThings), nameof(OnMapFinishFinalizing))); + + //Things + instance.Patch( + AccessTools.Method(typeof(GenSpawn), nameof(GenSpawn.Spawn), new[] {typeof(Thing), typeof(IntVec3), typeof(Map), typeof(Rot4), typeof(WipeMode), typeof(bool)}), + new HarmonyMethod(typeof(SpawnAllThings), nameof(OnThingAboutToSpawn)) + ); + + //Buildings + instance.Patch(AccessTools.Method(typeof(GenSpawn), nameof(GenSpawn.SpawnBuildingAsPossible)), new HarmonyMethod(typeof(SpawnAllThings), nameof(OnThingAboutToSpawn))); + } + + public static void OnMapStartFinalizing() + { + _currMapIdx++; + _numThingsThisMapSoFar = 0; + } + + public static void OnMapFinishFinalizing() + { + if (_currMapIdx == LoadMaps.NumMaps - 1) + _finished = true; + } + + public static void OnThingAboutToSpawn() + { + _numThingsThisMapSoFar++; + } + } +} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/7FinalizeGameState.cs b/Source/Stage/SaveLoad/5FinalizeGameState.cs similarity index 73% rename from Source/Stage/SaveLoad/7FinalizeGameState.cs rename to Source/Stage/SaveLoad/5FinalizeGameState.cs index 2cafec7..27fab5a 100644 --- a/Source/Stage/SaveLoad/7FinalizeGameState.cs +++ b/Source/Stage/SaveLoad/5FinalizeGameState.cs @@ -10,22 +10,22 @@ public FinalizeGameState([NotNull] Harmony instance) : base(instance) public override string GetStageName() { - throw new System.NotImplementedException(); + return "Setting up final game controllers"; } public override string? GetCurrentStepName() { - throw new System.NotImplementedException(); + return null; } public override int GetCurrentProgress() { - throw new System.NotImplementedException(); + return 0; } public override int GetMaximumProgress() { - throw new System.NotImplementedException(); + return 1; } public override void DoPatching(Harmony instance) diff --git a/Source/Stage/SaveLoad/5ResolveDefCrossRefs.cs b/Source/Stage/SaveLoad/5ResolveDefCrossRefs.cs deleted file mode 100644 index b2f4887..0000000 --- a/Source/Stage/SaveLoad/5ResolveDefCrossRefs.cs +++ /dev/null @@ -1,35 +0,0 @@ -using HarmonyLib; -using JetBrains.Annotations; - -namespace BetterLoading.Stage.SaveLoad -{ - public class ResolveDefCrossRefs : LoadingStage { - public ResolveDefCrossRefs([NotNull] Harmony instance) : base(instance) - { - } - - public override string GetStageName() - { - throw new System.NotImplementedException(); - } - - public override string? GetCurrentStepName() - { - throw new System.NotImplementedException(); - } - - public override int GetCurrentProgress() - { - throw new System.NotImplementedException(); - } - - public override int GetMaximumProgress() - { - throw new System.NotImplementedException(); - } - - public override void DoPatching(Harmony instance) - { - } - } -} \ No newline at end of file diff --git a/Source/Stage/SaveLoad/6SpawnAllThings.cs b/Source/Stage/SaveLoad/6SpawnAllThings.cs deleted file mode 100644 index 7791468..0000000 --- a/Source/Stage/SaveLoad/6SpawnAllThings.cs +++ /dev/null @@ -1,35 +0,0 @@ -using HarmonyLib; -using JetBrains.Annotations; - -namespace BetterLoading.Stage.SaveLoad -{ - public class SpawnAllThings : LoadingStage { - public SpawnAllThings([NotNull] Harmony instance) : base(instance) - { - } - - public override string GetStageName() - { - throw new System.NotImplementedException(); - } - - public override string? GetCurrentStepName() - { - throw new System.NotImplementedException(); - } - - public override int GetCurrentProgress() - { - throw new System.NotImplementedException(); - } - - public override int GetMaximumProgress() - { - throw new System.NotImplementedException(); - } - - public override void DoPatching(Harmony instance) - { - } - } -} \ No newline at end of file