From 3bc682a411cfe1454a703499fe811dd497fcc738 Mon Sep 17 00:00:00 2001 From: pjgat09 Date: Tue, 30 Apr 2013 01:50:27 +0000 Subject: [PATCH] m64p: Added VI callback functionality N64: Made a VI callback function which declares the frame complete every VI, instead of per frame. --- .../Consoles/Nintendo/N64/N64.cs | 18 +++++++++++++++++- .../output/dll/mupen64plus.dll | Bin 423424 -> 423424 bytes .../mupen64plus-core/src/api/frontend.c | 3 +++ .../mupen64plus-core/src/api/m64p_types.h | 3 ++- .../mupen64plus-core/src/main/main.c | 15 +++++++++------ .../mupen64plus-core/src/main/main.h | 1 + 6 files changed, 32 insertions(+), 8 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs b/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs index 6bd2dfdd11..ff5ef90235 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/N64/N64.cs @@ -158,7 +158,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 M64CMD_CORE_STATE_SET, M64CMD_READ_SCREEN, M64CMD_RESET, - M64CMD_ADVANCE_FRAME + M64CMD_ADVANCE_FRAME, + M64CMD_SET_VI_CALLBACK }; enum m64p_emu_state @@ -192,6 +193,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 [UnmanagedFunctionPointer(CallingConvention.Cdecl)] delegate m64p_error CoreDoCommandFrameCallback(m64p_command Command, int ParamInt, FrameCallback ParamPtr); CoreDoCommandFrameCallback m64pCoreDoCommandFrameCallback; + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + delegate m64p_error CoreDoCommandVICallback(m64p_command Command, int ParamInt, VICallback ParamPtr); + CoreDoCommandVICallback m64pCoreDoCommandVICallback; // Graphics plugin specific [UnmanagedFunctionPointer(CallingConvention.Cdecl)] @@ -216,6 +220,13 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 int width = 0; int height = 0; GFXReadScreen2(m64p_FrameBuffer, ref width, ref height, 0); + //m64pFrameComplete = true; + } + + public delegate void VICallback(); + VICallback m64pVICallback; + public void FrameComplete() + { m64pFrameComplete = true; } @@ -243,6 +254,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 m64pCoreDoCommandPtr = (CoreDoCommandPtr)Marshal.GetDelegateForFunctionPointer(GetProcAddress(CoreDll, "CoreDoCommand"), typeof(CoreDoCommandPtr)); m64pCoreDoCommandRefInt = (CoreDoCommandRefInt)Marshal.GetDelegateForFunctionPointer(GetProcAddress(CoreDll, "CoreDoCommand"), typeof(CoreDoCommandRefInt)); m64pCoreDoCommandFrameCallback = (CoreDoCommandFrameCallback)Marshal.GetDelegateForFunctionPointer(GetProcAddress(CoreDll, "CoreDoCommand"), typeof(CoreDoCommandFrameCallback)); + m64pCoreDoCommandVICallback = (CoreDoCommandVICallback)Marshal.GetDelegateForFunctionPointer(GetProcAddress(CoreDll, "CoreDoCommand"), typeof(CoreDoCommandVICallback)); m64pCoreAttachPlugin = (CoreAttachPlugin)Marshal.GetDelegateForFunctionPointer(GetProcAddress(CoreDll, "CoreAttachPlugin"), typeof(CoreAttachPlugin)); GfxPluginStartup = (PluginStartup)Marshal.GetDelegateForFunctionPointer(GetProcAddress(GfxDll, "PluginStartup"), typeof(PluginStartup)); @@ -272,6 +284,10 @@ namespace BizHawk.Emulation.Consoles.Nintendo.N64 m64pFrameCallback = new FrameCallback(Getm64pFrameBuffer); result = m64pCoreDoCommandFrameCallback(m64p_command.M64CMD_SET_FRAME_CALLBACK, 0, m64pFrameCallback); + // Set up the vi callback function + m64pVICallback = new VICallback(FrameComplete); + result = m64pCoreDoCommandVICallback(m64p_command.M64CMD_SET_VI_CALLBACK, 0, m64pVICallback); + m64pEmulator = new Thread(ExecuteEmulator); m64pEmulator.Start(); diff --git a/BizHawk.MultiClient/output/dll/mupen64plus.dll b/BizHawk.MultiClient/output/dll/mupen64plus.dll index 8436fb01ff2a7d0ac5c8d2d0a021e88e924e8d72..ba236498d347d99585013fb02ed4ebc853449b13 100644 GIT binary patch delta 52439 zcmcekSH;8`2U1iN$DBn)aY(>K#UaIn)CR=|NUm3to~y1b zD+nqzE6m}lnPTFsMb2YUVqMaTo~)?U`+nCx_cCa`pWplb@zc+~>+HSOUhBKpS!bVp z))`2>(;)RugM5>a;mvJz#3*fHmm0R|VyH;9eIWi89d~SzJB9e!7HeE8-q~^4xV??Y zwXN#-vovJbp6@hF6xxn<>Ll*je(&@le%}c_CJJ^u-8oT;W44Q3L&amZ8r?dH$8Fua z{U!e1(Iw2^D2CbwhQ~kQ=q(JTZH2**=9DQl9i^R7ZKSGNN|zi{hQ*XokQ@-@4BR}% zXi6(I9`oQf1O6TJ@WPhFmZgc0?RI!4ujF)#slO#~$&MC1vpvO0+u_KbZT`-#8Jl8u|==>04kTr|}J=De9QVYATv7n%U+LsOOUouA}8e0U+tN ztO0p&LD<05Mulij@jf;|zS6@I@O)Fgmq4JjU$ z*nr!$EKOL@@xbOcI4Y1Cei<*oa9Ttrnng;>oN`<8;30L3!0CFn*Jml7mcWvg-u~fX zg|;sSH>}O=y-p_kS%(Bzd{5i{7`zxZ7Ch0gM%pC_C55)ECmM#cP)0$DM=tk7BdRjR z2nV-Mi{K^rcHQO7%gFxajIj{K{_ut$ST*AtFtoA;O< z!R%!0n_fqgO_h7f62{GzFy2d+Fdtj-m@tuKt2ee;*Vf+%17P^4JpE^;0`YM?c@4zFvCEb?HUhoh9oxLYk@JjVYUz#3I(-Ks6T1HH z_|aB8wr^yh-^vnTa|UMwO*fd*B9eGKei@86En8fXoj&3)?)i)9C zZiDGlP;n$i}AKxft8Mp(}RrL*9Dj@zzGj>B*G6#VYk zIOQXO%FwCYv_<`T$MW{<*btvatu;gGOA8H#)2C0{KA7AN%_q?O$zy0f`b^d4HgVj? z5*On0cPlVwCRJsYqWN`hez%&cq4ANTrEOLGT4CGKa9Ud_ymkzlzD;UVnrgOh5*qCA zotf8M%--?w%4}K-#R;t_gYl(dog2UfB#%ru)&|OCdTk+OI z{!_lKXuoXj=jCW*`}qA^rWxO$^>U69k2E?Sv%R*dcDqcKpmUAFf3ay$+p%b@ZK zsR_(iCM<*QS^F6sflA=+?cP@C=uy#|x&4ifKhOXiuI^rr`W4-+3dtqKFP{_cmv^;NeK_c+ejB0oCh|M!iGcGde6Tb=w{CJ%0{9LG^xjqP7AuXi1dRmO1< z^{V6e{hC{qYaF|jfNLC=nX7uc#z8u_VjT90?)o?u>*_I%`}5Q|W_)}>h_kj{J74zi zdZik^yH|Ex-B~6?f7_|uFPm~NR%0gEX4|i5bIwTH>iAB!mj+wb z@gAsdIp0zg+s>S40q+aS-xpdM&G`@rRRSk2v=jxlA1|;#n~Tc*7h4()A3-4M1Zyb0 z*ivNMd@r%U&`U$Q%*9Mmbr|jJ4-MnBz12tmn(gqVqdX^F#++npc*P>TZFyJ9u##MV zb)wj`=NqLzAzyaY&JEDK^6F3kO zZllfi>Fo?~2HXjiB78^kPxXW-vsr&;PRY-!!C6?=Lki8d^?w$zbVs*e(KFvR@GkS; zxXV3T{#H+lMYf)QtQ9wHC-FPZHn}_#>&=_xb3~kN)Soff1MmLXT)bmD{^vJ9 zqWz6-#kPj`xw7bfk{Z{8GBjOqqG?x0u}+G7IxGch)L0X+Wq(@}y)uRK+2_ZlJ_ zt(R+vUQ%qd2h6Msli%P#8(A0ZBqUtKXt z9H-fJ1$I82&`FyBktwFwKMr7-+H^2b$uy{^WR~jWicZ4oiHbA;39Cx=_^muczq~-i%uqsZzj?s{;m`EnFtm8C&*<6hAx(Z~NQ5R9$79zdn z{6*EfVK|R=Yr)-SxVyFFZqHQj2Az*~YsuXb+}(mj4))6FV9`t*vfl|7qj)m1_kK*| zV~V05TZ^V5$LxE?lu*IUDEJrce0)rCuFHO5{8MciF~zs1FP2rxCU2 zd4RfQ&>fc&AIJQs+|oE_F{G#MWgSJ3XcY}>j-Mw=LlgiwW=>K-t%L6I-d+-ePFR8^ z**k=a>0-cY-Vyq6VKVl~Y9=jH9gap*t6Q~JK(`DkW2>v|=Q_h`%Y}gB@RWteQU*W~Ip-)C5^J$#pKZnf{|CNMGl z7hoJ6#_2ZS0j;pPXN+z$-~MBmm?k=X1)FMzk1tTw9XZ4}#*s6&8iXiE7QNVA zOzSkNdZ)hCI{81`$w0n6(CGkTp^BxCP_4AIf?-we(?v^av*+~`DUz!Zn26lsp0NU`Whn2v6ox)T|Eg$K2|X0 zjxb8>BPM$H9>%V_>o`v*`iNIszmKYp(%p9>w>;E0kTUzCZ{wkQ-KAzQ^d@x9Ff~rn-LG$8UmTBw!B!Ns;$LU&?#Hb()aygYtA5LOS8W=fNedAVY)ov zw$-4Do7A{^=&q<3S9wJr%OEwbSyj*}TQlj8f#QAd$pe(FU;EkLA0#|P^aviO3nT*G z=%_UW4X&l#9d=<`<%tSQx2tqemL^xhrYub&;}hbBccXsnjxxs%`wvfu$HlzDr{RP`M5L< z6Z>PX_jhYjvm=MlMpo|9rChxSGF5dgsbXC@;QK1$P!9Nx77xd6z1ka^aGtZb9l^Wx zbmSwpEO1dZTbm(M)m9=4R1Kj^RnRG07ir~4*gDx$*_uv0M+v7`L_J4~4PDwJALH^L z0?Es9hwHAPVb$*An4)%(d$EtYT}I(7*yTDS*B!4qZi;xQV=aZ#eO2t^sAV5JhC8nA zRlVZ~R#esECxC$2z!gnCj!*1wk4488y%~RnMIXlt4_kbmz8xptq=Iq6RA+w`t;z|X z(A&}C%{r^YE0pkFE_V#4vE#*Jag$Dt$8r(RAoQc>#Qo!mPoayavi8xIQri$Q(Dydpa&q!Lv1jHS-1ah`C zt~821m@3+iaXc+dNck0k~q@uFRAMw49A z(fyDxIOHK}JWaInDMDLro^_IcctjzMoF*EG4K!<-=-TV4Td=Qufi&c}`%Y9;-r6r? zFen1<9l6;Bs?M2UT4f@tkwQaS15an9-|vO>}6!sH@*@ z_&ufVzbohU4J*GtUo?2kt=u}u%cY;$xjs-|Rdw$LqJv1HISWKvvzbjNU+8)w+&37T ze(MjV9g>#XT?;s^X$=gZoeM+=gl{Ym-9ZAA#9}?4ol--kMdJ>qIYo-M;|}E{iC%sx zIh>r&cVFtJMFi9BBt%Ux)mW&Mgf0}1K}pO)F+e2QUtcJm6k-XLKO@X_IjPHj$@o1s z*>h^?`Zo;*%API)sc3-oGWlHdD9rHocY3_ap%9Tpn-_`4nyf=5Hw!;;u~QV>CfR)O zowJs=^T?vxi$r5z7P;!ny{>tzqkv=))!=g01Lp*1U^+yRDApd_mNzb2FSQF?M=vIe zmdm-vF=dD0x)9A-*AN^|{x3f+J!heUl;@`>oA^A9%DlI*xfHk0_PWnlQoTXoB%{VTnlhuzClsXiWb=Ci=Gu-CUA84rLO>#35h*kHk#%b z9Rptmjxg5|-s_L#T8{s{jazUL+@en%s_}+ub zH(xarf3gw{#l14!4cQyxSfW8Z8tBM>#JJ_5dxR-B{^aZax$(m``R|G6YW9hh{<+yh zGyV5uEAD%7;I@wU-&4%h$jyuVb0b5N{r8ynqG~?zynn8F=nMXPBDtFS-gN)m)Yb|9 zdy=>se zepCw>egVUe=V~^?&t~}f6q+GA>qz(HG15JGuy{~8dQS->-BSXau7*5Dx+f1-59ZVQ z3?L2t6#DWRX+9%O;%XTqEn}nwipxmz8L8<2xLJ%ei;>22HHncXG14Ng7BSKyMw)dH z)qF;p&q(7b>Lsz=<^fS=D* z!xq3dw1K0`xLVBci&gL*Lp74&M>70Ku9{B*zIhnnCsDyFG2P|pU>LOQ35G?NUlWw0 z6Dl1Y45N^MRRnL06^_nkeeqK^0U9GM;%fHfO!$tGnvOHKM?AQUG>WT{;mN?lNVB+V zJ_)4eVQ{qJ1gfcwG?kHNb2Xlk#xv5WlbFbS<7pDyo1lK@;g?#k7O^h)2?~BfCHy=E zKd%ygf`Xr*!{56a@C%?dH=7-u&F~{np<2w2E@t>eT+L=jXEXfx)2ODhqf?cmxf;*# z;~9SZ8B_}xet~lI=iHa!XES{B7Yx5(&r-lIRKLgZOO`dF+yy^R!OyFNU!vfbRKm|w z@bh%|yI$rvDT0w=hF{F^3%F`N#bG`i@Ke8JF2gTo_>pH(EnxTs4BvbX)og~J&G4hn zqiWa!_=Yy{e(?qF%kYaCekvuc6*(@XB?@UtCDLG+!70`rApuw;S2^d8{xBf38BI*Xz#WT=&2Aay%YzCUm zKnoO?fyOgX!&eN2fkraWNUoYs0jPO6fW~t*m4T)*&@8UTGthVjTENxpEwiAx4bL2@ zSbJdR_~XCgWgUKI0>jTt01WqOkKt$L0f_sw$M7=~00pPLy*9uvQ(75*Hp4f64I{-2 zznJ02b2XdcXEXe4uBI~lREA&7)p&*<&+wCqQ7vHj1q|Qx4fkdE*$O^aiy3|~;P1Jf zPy?&xY_hBq6J7B06#TqO_$3N{NhSO|1wT)RAGltO>uCO#ja+5;lL0@8tHoCs{v^Op zRa`s6@6KUD8`g_q6Zk}%Tf#ymETpP=ER@GW+1w}L3I>%h34%o3H!uw6RWNy=tDF-zCrYE#>$SRI-pnI+6=v}Ehx{YS2l==QfAQY4WjW36M7#r zW@JCN$=|hE{O3ylc)hiFX{LKK`%;{LmPuLj5ZGUl`u-Rj&Y*7cu2K6nr=h}j~eENmN#O2(u$5evh zXNP0<&fW`mXK}T-2WIc$J@90i;?~3LoxK5`jK2kLYJJS!xKhSR={r>8d%S>X*#pOx zakZdc0-|LD9Gm(*s@Xl#(RU9V8|px{xLzVOZ%}JII{vDd<8p5ajOqCDV9d1zi~063 z8^vTHw%fP8CI-sd|HZRYzk8T)hLwI9sq|oz=wFK$%LjO|yw60#-w<6Uyh641_J8_Ib3YMU*4Ugr^AStI9pSGEG&AlUDNch0&-S z;O$RB?Hs!JS@Sxq8Lag(&ibW42DWvukKadwy-=4}YOTsD1(>^yjz4jE*BW;K4)Wc8;1>JcwMl(&V@L&;zG4Zi;#? zYeg&G1x`PMVU9DcT&BcPakhB8w#&`gXm^aWQ}Y~Amo8_EC&V9Q&Jku$z8*h)ntJDm z@OsDgIh{F0``+;1Y)bY|^W~i(93R`QIRdx*Pt!MVi@r#IHP02DaXWonu83W}3A=NS zAz9oGC~2foby zXA3Qx{9^~c40mli%m3ECvWGA@!o?vyHsr0E?T-hox1l$^UAC*&LJGYBaGiyq7G*0$NbKpVt>I#*V@ng}gF-rx-KFoLT z=#ND(2C(#F(R9H2tWy?6DsP=Cl&vd14{iGgQsTe#qT)T43kg~KtYb`eW?Y2xj z$TvgQMA6lcMc7z{tDrosy#C@Ae!H`h6?1(8Na<5hUwR)uI$A#E9JV@tJRnRX!RD%P z{R>CE56S?Pku+_GXi=Z_Dx)B4%E9Uz4Af=mLgwgKR zjeY>Nb;0}$)F2H~=>M~vs2kDljZ&A|>=bR)p`KQ5N*iExx==ojh5H;==oqDpvtO09S`jJC4lx@4lqQbKhR>7W>f0;Da z?N(6E>m$T9UBP3B6eYwAf%7>icZa%mO7p8Sw`<$xj!TKt@)Sz z8N5&J&jg+1fw&_KePHDuPXfkIRD^W{aYqIQ<(LWSr843pnB2)e2X^eec zVYT++C9v8J=_6PT0eLt&l;Nid>DwTYKvzB$eZBWV={b~OYJNbps4`eD43?dz5B3{+ z@_-o9AoE(~U?=$5!&HbpFr^HqZ$1^x>8k@+rf#Bc2Spahk%MBb_d^oP3d9VsN(#gx zSA5o8ybPet$V>sWiRK;>>wT9YZM6;ME0mwe_cPHpNDt;Zek;@A0d(;BLUp)DqdyaG zggk}rHk9Kimr)FwLF0b{|M{QPq#nruht=6A{IDP@m@dplb{?HSEaKX>+2C|yKlgB$ zvC-~m1ni_PYU`+@YJap!z$to;A!clpBc7%f;t|kIv=PLdxn6Z^=U9%7b{>3(e~v*H zXW_PtF1LYpK_FpLBqF6wC$LfEPr21UdKhV zM(o5jL++*h>F2kyD;5TrOHN-=C&lE(cV1Q(klqm^Ankf(rxjnn{Ou6b{)CA4O+hwq9L!Be zd5t!n5KSuq)%IH%t^-QAqyRMG@i8PU-8VR zgD1rdUyqBJ0a1QO38l`baEB1<(o?ucyop{sg}Zm7>8n$sYq#5Ts$;mu^(q)nalJZ* zAvEZ;m}ri(I-R;haA_SE%M)bfBxKlU`IkwkWqmFJ>)By6ErP8WDy=+2pL{Nw`+oq< zhf%Je)Pj}6VMk~G$ zqXVCYxtCDhLb;E!6Xgco`a<-HsW2bnw=zx5Czi%YqVhmNtbyu!B9KixMoooB)jX&S zI#GStpkp6)v!6Y16FpaiCp1#-OlP4N+9lYBuhVXj?7Xj{_z}{N|XKt(cQBOQMYr7 zB!jr7@}R{H{dT8D7qcfbBI(#U(PVjfMMQ4qwf|(a9ZwrO@keVm?3TARGzq`enTy z?W(&qG<0277*b3Quf=>t!J5@2WTIiMQqi0?T@;PS8r_;E>dkjMxGbgX^%7S-CmZLS zt|xjOO0I7WEI`V{B5}b1GQ@}hfrrO?_;Ad*M>Q{r)-`zB>U)oRToP?6Dv4DquU-;; zd{j?f{P3mnx0ggL9<1tj8Cl9r^weeXxD0Mj{#Wp9mJ&IAnzKuXFN+c412SDv^L*DU zB3FLbR!RA|q;xs$D&#g%)KxKLM8b>eByza))KHvJ6PIKu7u0UcWA&-u&c5K%7!Hk5iJNteFSMzy5z=F?iB@Vk zwo0XNB6VGvtP38atZQOOyI{96>kw9USy%RXNOfhdVO@ul;GOGu_-PYat|R~0p1!;; z0>du0cFU_Z&oecc6g-3XLZTcEJyfp2dVIw)49sUL=1M>7uuN<&WZ|r&wqodsp<;L}&W%AL4n@$zHo$d@k|c%8kE7bp2Y$ z%3Zdm0+6-bk{oQdybv7h_`Mem`CGgs?}k#*-{Lhf(LVQ{cuy12yXwlhLOOcbQ-#d( z5QFUgH6%avOm%(at73$Gn~zKq&A$$kre9G48%R?}ltCynP(DUUM|qPXYRjAOUvod% zFr;%Wb{rltN~w!C9TEfL_&KV1L8{SO7Gphn&}hS`R?&1nd0I54P?PK&o`*<5kHEws z;LVYa;dk$|5`D!Kcg$lm_rjB?D4%ZVnI6ONYjnn_;sVm7!2%9)Nda+bfWCpOc2 z{&FjJ!Pq)-zd+S5Kz0zD?GXVoRU&PFpq>l{xmiz65$V*ozHIN$T2kuZ9pfq1k@vcu zaXdjU)Q3>yD>o!2 zA(QTSpRPBQErJgCsLt;Vsowbss@F&^6k+zvMslzW`pH{KT^dv&6}1i~7Snf4U}6D{ zYAPFxu{5`->>AWmm#y)T?0dAkDKxI9kY;j$NVUJ(OfJHG9r9@|TZ%Ol+FS;7SaOqh zj*oh-?^HW!n%kkWbZjq8Q7DU1R-%ljh0SHTNVm^vA%76QkB3Ur8y%%-4@xdg3zlO{ zHH($DIG57}eHJV~1j>c2C_4lhVN%oi{oJErk^YeOmoHBPm zg|wEnNegs(krWFQR0t+C0%!3=Fz>bSO z=E40r#(4i@mnM3V3bD3Oflze(7tip<#j39%==|#&6u+j<-|LUA2Tb#grh^4g`s+J! zv6dz^Sf{1Qe!9>`wrJ$4pvh&z9W|IZ>a>*!LhPi)?PL?N)4sl)oGHfctU#pVJ~81{ zWpV2z9Z`S2$)W)1>>fJXs%ws2w>>yj!V!dEuq_OTXjbk5kS~fX*n#44T*(<9&jj?JOUM*aw|uU$M>p zV`n*3EHCdX`3d5-X%PxLCHorgW}$SX%W0{4Jm$! z`8uFeMGBBhFWT?u?K|A<`jGq*+rOp;@VdKQAE94j;%lCYkw!hcVGfF=xNfqU=tIl9 zVHPvd2i@cV`N9m^+go7NKQZ5t+G~s zchy>Awc6g@@M=ZBzjn*e%GwilxT}JfWtSn%vuq=!DIZ0QlBTgJxhN$loq^>!6e=7b zhkMT(D@|#|vWedtZl;Jdcu+)=R`u!BXOJfP+btZ0sV@;elSaw&7DV@!CW~#F9 z4wg@PCPph?&;11FyiN4W6S5&l))UHku3FI(l2@3nTJ!y~bsJvz8IrxMo*ONmmI+4v z5%A=3(v*c#gyI9WeDKh`!LnIZ44jy(0&(3C<%d&4B;QB;dx#wEJ#Pa0_#S)=i$PjA z1~PvrqIVO0blg>Ue2P;*6@JG9%D2si$@-5mv`S?90>kQ@KVF)4p!|u_69#D85H;ZE zhbhB&4Ug~3-5w?rydx*N?GGC#8+%kjkvW^lHeBr+M#k0R;j%vZl@FI8rbRK*v<~GP zlzPxX`9qX5hmVjmyrZYM1E=X{(o7vj%NkTXLWOqL7#7d6q!8$)hmmj;AFRjSZXnvRitcN>1>z5B9Vs z2b)%WhcD|mZ$GX_GdebuxLWvYl2g^>$Y=O|fMZvKw`J|bIC=qTw6q|6Fd z(4b%vPR>>}q!7mw-wEXDl7j_C*5*3X=>cYJ{vu`Qzb` z+VnNrA$8-lY(@bSBwrV)?a31)-cF|%CdmJIXV1inDtJxwOq%vN77fi}q>sp<_A&B| zcGKvj_%CE&$IDP{QEx-}M_k9Y;|Gb9LZEu?roWff(8hx$ayd2JAmTdporpzgPl&jl z%<-}cS1MRK(rDF0xyIN^b2_OwM%LFn9GfX@l58jD(X>f&x7bBNlV#(fZKg}p5I~y= zx&q}jltUMJL%%34mAD|pUxrlNb#fj1o{X5c&ljU!H%!$%;r3PLG zx$aSb3$YuGgB^>m3&WKsg9l=1aAja{Z-*UUq_TMOisniU$5yVO^%`^Dp!_Ma<=mxJ z1fYp^)Okq9gbI-jv!v-D$`zFRC|KX7l@vHKu+GaV=I?kFYkY5d3=&D%z;>gC4(xWj z8#NrJYc&6?Y}n&2KG~%sy1~%d;2Id<6)e(?E*63t-ybkdLYay39~4TODtjBvKiqdx z)HI35x+@n3a+8x<#L6ySOK^39n*qJ6EHO65%6>urb6~ZjN8&LL{<;`1qaE{l^QpVq z5<|{^Kv8kfGz>keX_{>O?0cC0s*kKEd-QUj^D|b;{>J-A>QK8_*~ZHYBGr1;C+}&p zuQB~Qch|qd-CbMtmHj*%e{*afH04%jI%V z30bDgKGLIvPE41rDKu3E;T_2a2{J?$ET91ia-=C`0U`-yBg*?IRP?kGI&lMs`0w<6 zf((^MzNI!_$qqGscRFuq*IUz%39_x6@hw@n@i*1zr#E_hOIK#dZt|nIsM*(;GJd0e zGv(uQ#y50gu54c8E@W#s&Qi`y`Irp+hL+BhW|@1JZqLLzPUJbqZeu zFO;zt;;vA?S@6P)>(pkhG#jV?f+^vRxo~XYbt?TDP^Z)Db7gyZ4ZKVz7Rbx8(Rz9_6`nbgB%hS8ucMz9 zB7jFPltYYzF7lC)B*)To*0?nG;!#d_qt z+E1Q0zgJCtXCZn#&eN4evVF~!XuG0a=F$9&sKOgimlw$nHCyY=t=-Lo^yXvVDQQ1< z^DQb*mSJ*j7IjKNn05G$rlrW9vfo*HBSi*#pSlHcOh!lOWD3^SU(%)&*-B2iMO~l8 zZcX`;+B^?$Dj~NwTYX8hpG8dVD4}c5BJfTX@$Lwq){AA`Iv?WQ*Q!%q$RRy=<}a2_ z1@B%n`K2%A6E72j#0c~RL@IHb?emFJ|{!&VHZQlD8sw(GQVmho3Ksn8QM z=<;(2;=1GX&~vnMI6?*$D&+FqCHf>yPLNaTKXQpCW3NzBy4)^@*L##V>N2Hf$eprBpnFE; z$yi*X%`eGqGAO{^%JZ!Byhz7a$}RHmI=Z6lOm%^H%pwQS51H~kdCk8X zS(rPUzehK+qF%y!%(VUxk~QXY+3hjmtjP3{Zw$g9*51?k`@h<0=QM1JcKbr&dP z9eU*Fa*wf;KOL9+p;^+KwyeWSu9OPb$(GXN9V%TXo62{R$a_7!6`n^&*2xxfeJ;&j zkM>qccFTG>QDXM~mN1+>Z&AHhG0H?2^?Hk*eN}drt=^(7Xou0wugXp`0DRbag!2pS<2ennKK>k#EUK@?t;Q{1$>b zem4E|mh5V3H~W6YsxiPZvLAKMmi47^HVw;`%^KD1hc%^_dsP`Q2I+oIs0hc&L`u&_ z((^QhUc%|mm?OJ-v?}1$z@}_D+SObWUn^CgVl7xf@wqrvtvyIz-{G1Yd!5$q(K~LGK~1UHU`!Qpe4Y$ZvbDLjJiuRI<5Jf4rR@ zYBCa?cKW_X9Z(Rr6(>2*Oin%*S$&{Ptsd;X`@UEwy<& z?f$4zs?8!@>TEu(&X=FLr8a#;pKY&{YO+w5I{G2K`f;VM)gRE=9hFkP3v{X7+i3Gn zdEIm3L3LsEe=*0?G~`p<+CbTW@;yqA1Jbk<= z{~x&=l`wfEmxBuk@59p63S|aL&S8b5s_lIn-L|*vSLunX`&AC5;ipJj7o=hXcr;ZrX4Lmo~!=@+QqWh}D7K za{8bg;(htJ8&s15mHfdaH7l4Z#=Wo@3H<38fX3JcDwY z_U>0{u{nn-?4CS?6k+OVcLX8Vz*#H5LfL?GMbkf1X57_}KU1j$chz{t4fQva=76ndPGFwXD(woD$GGOj(#RCeCNWypr4_os8-;Q})4eC8=_X2-lejO4 zauKD=DQVh@^4%$VP$-}9T=zvqW(ay`9l=@dn-p4eM8)s+BRKadk5n1ty^2AGIu@mH zdZ?XCrd7rG-l~uZanyrX^wdyJ#TXh^ipE!nnjM#tRifyribRpy+XYAE5Z#E{HNnTQ zNUz*eiN}!MM)vI(Zf$HL4832|QtZ_kXQb&f6x@w9MWW=PI8fSsL3NJHv7Y8HtL2K) zkE@K6E38f&SIS&9&l6IA49r^3qMrBE59oM2d*dv^ZF`Qp02OyxUPaP03}q!sLDB!q zVTkO})P{psxDrPz4)G&{>b)4e(1^1YeKS-BYMeltcv4Pk{7LG4r!J$j{dS+kL(B2F zwnwfBNu}NxdCgODw0c<0TAT3&sP|DU>Oo@XSrXdrjd$*(;++w04AT|{ensa6`YZ{6WWVzoRQCa7hF;4spKo1o(h)7 zdeX|z!yqM;V${9Od0$ zQ8pc&vS@9QY%I5D(FaAi!kg2BN{ZxhncbZ}{8BzPOuHye(=oKppkq)LpuCRq3Ch6VC;z*)`l~zF-RUnZ-;$q{t(J#Z7jk8!HlnrabywZ0Ql2o~1!XkK zvnZSzb!Eals-s;z1xQ1#Rmp^PL82rpQ5ZJ5fKkv?88Gl&v{WFiNQ-&GD5u3Tt8%lx zfW<2)KcIL+HCyL@RB%>?8*Ph`1#n)J9Vzt^mgC*d;c!1qgU(?M_+T}qo|8k3ho7w` z;`t6v;MLcKb4Iz>VIDnJ^9r*~tZe5MgnkbtxAvZweT?f0gF2LlG zH{U9R*NHsskNKOZ!38)?PFz#*X4y(^{ShZe_lr47_?VaF5h^GzPTa?8fPUv zq_p-BU8x<}&%-qABCsx~s?&T88N9FsH0c^Lc(>-$7N+ax)1TL{tPPw`ORpn^cj0N; zdmZf=Pm}izT)PK+N8N77_<-HFaQ_yi1m$lOwSz-aal)Rba&{t>{wr;sA zg?Il3GEE-yXm5gS@3m5I^&{2#&Rji*H@Xe^%|zE9m(iH7kxTKItMXFym#HM)GqJ*O zqv;9{o@4mPkE4En;bbyL&*^ntMzxBOyc+MS-+Ym#aNT2$p4)nn-YrAG2A#n)|y4*<{-lq7DHeD3LEh^ zVdM3gRcxfk=xT~4P}33|F<~=R63^@KQdeqkS}`u&Z_QAx^5%0i{5ND%XVC0fSl65^ zksaiq8MO2kvUX9Mx1>MyD3vGV>rJWY zUwrHO2RTMIYD%%UWiY+>gN!%sibLdaVoydk;bx2RLae(bzA^Q=BQ5f`sXEfMg`CXe zwAqi?Yg6?MUsu&gamC2+jh{*zlVu0*q>2Qe^9GuKds0vQE!NvP!>8JDA6z8_>+9{D z;#2KmPtu>s@a5MH^c>%d3+R`haEbrQ6g|h+Xo1S{{WXdv|BUoYbG=!UvdzFCCq#&hih2=snASL5MbT zNva&15nLXu_e;Esi~X<()aEzY+&G(^6k7~Tx5jfKEtp3BhBfARJ%2XfI-M$!?Tv%R zBPa@P!Dn%|aC0|sJT3hVk(d!p-oGQ_ZjGZYOb3mlp?`qBGnPu3dW#_nd|x{77Xoe2XgcvH*go{;->A+QMO#*&T8oz5Lp5V0@7Lxv zrnwS*+wUR@N2*ca`M>Ay%axe3)tMpkDeCj!kp#g0mhQ8FTs4jEKB!C>B*m|FzeFsWq49>+9%V98aQ_cE-(9@-3rjiqAvx z>jHK8h;jCQzFJLJA|3~j78l1n zx?x3V#tEUcUr!oo(yqybHq_Q%>nHy^4Ge^vJg7pua(G?zfoQtZJq4)8}+QK zZRm0x9}oD4q~sAa|6@{e+hZhc$Re(M%$1c4&<@D$t>}J$)~M0CR>Ba2grpg%&7cXa z7AeXgyz25iZgd1{ZDdp{iVf6KeyJuOU@w$j@NwW6i< z&|dV5{mpvXvr+c8Q`I z7`;6v#Dq5~w12fxt`OSDV+MNab@`yioumBeg+lwRO~`am$41&D`P<)QX{6clym!CG zS|dDuJGHUaL3~Ws#+n(=&2DR~b!y7r@slazOHVAv7w@cLoADKh7;CxXFI*m`;ajAC zHr7IGDVey~6pzxS)UAouLcB{cO|)k1cgL#5{B6I)O`BAWo8R)mEF`50WDsqv%%V2anIhTm3GFXp1=*j93Dkl4}7gN zZHbQ|rFl*{HE*X4uc2YXv>9}!a9QF(=MHab<%5{v{`6u5~|HI7j?xKC!%~Zhv21K{R6nZ z3HXAe1s^u_!l!2ADK8ZM38hw@(Y1))>8!5+=|fp09kM!EuOLTfxRNS)kjIr=nDey zObTd5BuFaVViHL+`e{qh@2h@VQ!kSlZxL~}-Pm922YvNVV!o}Rl z%y_y9CZP2hfR4p2UA%+=;H8pn0C)3Y@6i5IqsC@wARf5uIm( zj*~$0DVhnCGAX0;Aky#>1x{9@iJpvBGp%D1O6QrN;}j5}VPc|nOw4qi35NJ22!_Zc ziqogvVx~`-lu?J-S^-r5G@I>x?a~=AN7)-NN7;LG4%;hs@d}xj zMZYpHibl-^&-AT}mpm7|e0(4qyd-+SywIC2Uhq8difG(C;LM^o=D~Uv`97`4i%iV) zBa?iZIv*s8&M+yXhy@_2^Z}DHYLWz!MQfOZ(tRcc^z=dyya%*U8x6@0&w%99i%cTv zj82*?LJgi^5>KBlQsCI$q6zu(&j2R}1I;NmjMlYs7r-^<{fk*+3dKQ6K zKrcTFo|$eus}0BEpv__ovyjpkYr8>uEz#O|MHL!MDISh*Xx-DiDuEjOngBr z7DgKSqV`KmeF5g_4CG+5Y8w7VNyK@qCk(m#*X5E;PT%u1b(wagff8I3u-)q04Gc?E zfHiOl)&&QXsMm6>i3p%c%he(;Ww{nw^H{I@&cU}^aM*sdTnnl>BZTi$<8$bR_Ai%f zr!_y;meNDFY6&|}+tRdPwGac|@gLuFa@$vFSZvLt`srHxTHzY*Kacks>o7E@QR!&^ zomQr6kBKkn!*nfJY^8JQT6ggb)ymL1i%5G!23BoYDxH2w>rf-jaNjw>F>?1x?Y@T? zZGW&@TUArsB@1aSYZU!_&l%%*&Ax-Q6+#TLhi%jXw7Rx~fUEvmry;pZjKheRAIZOk z)~IIR*LcZ^&!-pCicMO}?uq}Y{CaQ-G4K22C7(;9>xnv`X3f;f%V|E zOMs8_aqw^09sZ3d!>@yr+qaue%q>SH?T#s}q|DNaKlPv1fq#v7;Rd%L zIQejmptV)GdsW|4rilD|oZ@!_KYq24&9rGxsb8l#|HSeKe6<%mGWKgd+G5mY< z>6=<~<9RMQO9X%P*%|mMKDchZjJ;=Ra*sN^r9D&U$FJ@?*Q5uhLRr+B7w~Ase*5;f zv~&0MTWo8FILeKc-OAF$K?@=K4_gLQLO2^m3s#+RR#e9ZU9!a-QRT62W!6;b&2QUy%BaimOBCWCbj7}A4 zj|;r-_@&lb)*Wqc_oeooH_X?$rnTz8=8}!rn>E#+B2Zt>A2%V&G4(92N1E`CwUz-F z-u>yC<3kD8v=L1d;-eLatN)c+`mIgJ)fS$n zcV=VDvdgG62H#);$_j<1p6zwPN6K`|o$OJRzR4zy6a} z+XH{0W9zTlYH`%w{jT<$5X0>s|E7KKDW=3UJdAznHHM>(d4v`jP5ie} z@s1bI0F9A0G4@qFLvp7WXJ8NTt>qccl%~063i33Lt`)*N4*!mMnCTf$V@v4U;At!Z znN`Es(ae8>02jxGw7<1vED^ZM(p?Mi7joAXK*_Ee#=9bfwt5-+)#N{2z{0t~^qZG4 z9y%s?|38(z2b2|6_w9SSIpoyj3{3_}m2)6RC8{JtgD4rBBp}FXGKir;pvjVyppu~p zf=v(*5gQ~4s3avR8394Kzbg3t-+k|mH^#kVu&ER4oT|NQt-0o$`*hT)9DKFNpnCko ze}~}XZ}7(%1T)+ftDE^1`(Q_v($aHAtt!E{Y4fCr5dJBED1XCtu=?~ha>mnlJbi7k zT+!O>y>YH+9X9XeiYBwUm@7Itu5|jq+)+R4v#H!r_{n4DF@gVs*?atK9&d2#={(-y z*3)^s&#kBP_=sCi=P|8&e9 z- zkV$FXc$pf!Og`1od^OMD9POC$7h6XY%rXsmbWrIY!RFF-{uFaZc9ZwX;Dnc-49@YS zNW-)pwWFdGypo#m7-+?-pQYH2*kfXbBwugA2a){{57MMz5|vD=^yLSm$DQHUh|*7N^{kH4hC%d?HIoqBz!;U^5H#BXW9hFMFw1c|dD94zLq}G=n zEaf$m2j>{GC;76QmT5<;<}4CE{paO>XE;pJ{q)LC^!2RqX8H8-^`cXY#uD)XC1IyY zX1joG0waUlXM)Etx7-K@Hjrd2AsJX6QV;Xo*YOD{->{?vAArE~nZaX6cny|`1^5Sq zqFE9$*7ADB4MyvAEIDJGVI-`_Q@~iwJ{YkCp%=Sxs~M@>&S2bNByvBY z{L@jFZ7>o`W=Tk9tY*|Ll_epwc$S1n3HHTEVr24I-7?%S%WD{Qm+=J{Da-l7jFc68 z(Jx{gQ89MLn^V5vn|;YQX0-l_Z@Q8rU?i^Mjf~XQJjYnQhBL-dC1m467%ADaB%EO^ z$ibJ-$zyrBosTb(p95f|Ch&LxzAQ)GdIS60$cHnM()j|hP3)MFyqOQ*!s%nAY~_W) z>0xK7x!6%|cEnhahn=wV)$D9RL7pqb*flyj0{FF$3ivU zM+~4AC!D#!+2Vtf5h0VfUH2D0{8vsjqb}-m!f9?Z5_m3=*CZb13m#$qGyddFS(&@L z?BEfD+pW2s@Gs*pcE&b|ZRS5L*1F0E-DiiFIm(B8F!z%l@E-1GaQ_VVGr6C5h1amJ z*6h1A?@Q(W0`@8V!9M=xKHDU=H~wJ$Gq}WfquDE|Xa3}ORm^BY z!dKCR)a(2SEpGp3ocSv*A?a>h!h&1>eLU&!xP;WSA}P^wv6QSF$D=roEsm2Pm++sL zXK+6?!g29f`10Fv37J{q!`&uCIe&~)2H7(*=*wur|LuN~vvCfi@!6j4D1CEE^mg&M ztm$9PirQI ziH-?rgY2JneQw$P5j z?bRv97~g@qb^(4mnNJE z?l9LGslf8d!u;2Lhn;`KHyp_m<9H#r7jV1o zcy`Ehscg@%O&H7VK^)C!-Z+5U+>Z?AwcKw#koR&wiTep-*a!EM*;gj_Q@NkW`);t$ zOuk%erd&woHEdIp`7a@bCwU-o6d%-|qh%}b0hw%5*skXJR31MQd=W;%1fCzl2eZv! zTX!NKJe23yMuzd8Nj%3k@qM0qm)Ed8!!~I$&kg_Y_6GMO&Imp{xWP8#13v73+opcV z8{Xr?pKXK87h!6GQ=dUJr=)G$6Da$T54nUd9{Q3j{2TD zLH$sjrGBb@p{`N4sk_u4)uZZJ^`d%PeV}I5ifN^_8k(rNS_7?>_L9~`>#hydhH2xp z$y%B=Pg}0-&@O2=weosXy^TIfUl!BX=zr*c>G$-1^_)h2qm)tJsAb58Z!|L6810QW zjGo3|V}kL4F~?YFd}XXNzA?Tv4jIRd^TuW4uJO>wZss*hn4;Oi>|#zaH<>%kn`UvV zyw%1UYK^kiSSPHrRsq|v>)HM7nf5~akbU2db3~_u)5ZD3iOqMGI6pfT-P*3=_H@^~ zTitKn@7?3>FYaacy8F;A;1%~Oc-1_`v%JRM^IivUh&Rd`?@jY&d7pY~yiMM>-uK>d z?-%c~cinsF#re7XqJC+=nqS+u{JMTezpLNfALhsW$^I07p1;`N>mTxu`4{}l{&hbR zBju8T$>MQB4xxxpN~kK-5=_AtS_o}~SA{o(w}rvNC}DyyTUaP871D)m!gs=t!YSdb za9j9Ch=_&65@KbshNz3K_?9?893qYpCyCR=x#D8+D{-Cpjrg6IDIOCqihqgOq`Xog zsftunYA+>8Z%X~8*br%w^ocZ6S}v`W)=L@E9_g@jLb@W|lpaf2Oa4^;LS7?plXuBS<=^BB@?H5KIiloI3MyrlN{XhqN^_-+@~ZNN z^0qQq8Kq26K2c^VpDAAuTicXBlm|*g&7~&9)QW_du6k;7^(D2F+Eaa79ivWE)6{tc z*hckR^?UWW`ipv5y{=}{a%&~EM6ISKX`a?lYpuPkb=7)kBeYRksy0Jgq%G6dYg@EK z+A-~S?W%T9`&Y}U=hsW=<@H*+tT)l0*E{Q7^uGE)J*JP-=jsdf&a3r}`c8eHenda1 zXE%x&rqRskZ45V-8tKN*gjjB~l-a~=Zw@mjnO~S&&5PzevxHUMYGHM@CRl0K57sYM zF}te$s@>OKYNy+G?5NY;>F&&PzDis3bJU8ZL?S1svr$14dI$rA(ZUj8z3_)nT&y5U z;)`N8afY~0JS?6Qqf%k6(C*R@X%@3_T)HUbluK~t+jGt*$$RCC@;$kPQeBy*>{sq7 z+12W*sV-4Zs@b{fOs$!=Q@gJf)2r&u^p5&&{U5!mp&K2ISWn}eQQXuyh@Kq81+%2p z#AIUSwd&Oc67S9d#dIUI3wdAirc>*)>iZh6)G zCVqQDd6Iv}=ZI1xk>C#Ou90`iJ_L`i~l?<<$ylv2t2v zt%=s2Bs59;LfficBrZzm)%6y{!UR1{->iS9U)3KzJ6%1E$z+89{xi7lo z-A(RJ_pp1%je45b!yDj@_Lg|-y+6F-eg$9hU-Y~AGyHx2VgH;TSrCaF2;-%&(3lfD zgcG}5I4)cia&ngS0W)hvb8`+IdaXyHRSU>*@MlJz}&lMj0!OuZ=r~Zw@x+nk&t(&6DO|=0kIk zwZb|Qv(8(8Svi>A2KE$tw|&;W8(tbo&KJ&EC!brI`TW#9>OOMwd8MfdFL<53BVI0F z^&9vvkln8amqtb;a-U6E68VQhhHyscF3uCb6@TKK$()&$(svTS=^`g{Mb}c=lO?Ar zi;46zN-;H7jR2pfu2gTSd9^xPJMA^Cn>LH1xTf9Fs*|}!>SKx7g2r>k^G0{0zcJ2O zW1KL~8vh!VO_drrkt+C=dDMJl<|R!vu=-mwt%cSO>u0MPHLwR&@I!mKy~RGofn}o( z)^qwhGo6LbHp<`?CwI)P>}qZoccMGX-QfP{#!>r3uMH_+lXu?B;}@X1X?|n>RezvA z)E`exOY=ASd;H`6&EUv0BayiZDaiDD0tJJrwd#q#BX$dXgeWi4!PK z>%~3dSuuxHK6QqLzs-f0X z`>Qk6h3X;oJ{P*EbpUEi(KZ1uZfeEJ_wDr_`ZE2Zejij(imUmO@qkpm*E|6>2(IEG z*8A2~tE#QrP3%tgR{JKHpn=oJ=^t~3J9C)poz4m87w4+;x0A)q=hkvPx0T!9o#`%g z&%1fN0$wT4_F8yJUWzxxTkY+q`d{-NdD;9zep%{%bHB6S-=FC(q}Jc}BWEI!8=Rat zK@>U&T{tV7gdM_7YCw6hjX0FEu|_<>nJBMac{k?T?84TlUM&ASc!N z()qzT?%Z%pw}ZRR-R6ErTpV?ObML#4UB&C_?eQ*n5ipNSfk^U~lgWa^4YF9%X8>ln zFiw~$%omQ3OWqR4iVMWAxfU*p5viHfL%Jkok@L$%nyDPd+F|6-k*v zA;?tzRPw6DR6!latlw4(05i*LRW(g>wE9{LkU$TuAK85uv;Pv;$jAB@`T=JDIioFD zv8*}TEN3NI6RnRp&MQ`NdxSmP-e@1D>J=epr#RW%c5b@+qBql97xT7zyS)cqQ@ z#qKHpDuUV;?A(=lHAme5Qog6=;ET`EHfu-ux&`$zfRmT>nfe1gi&4~wwdblHYJ5(# zRyP}QJ&!g&WVXIFb67oz*=g3NRG-I|Vt2LoP<0|sX~%V%I7!ZOXCDcwncJN(9pR30 zKX9kIa|zea-7nm|0NRL`;Fb4UQFaa!s=53cT*Q<7HGTvJzY>>h5uq!G^;S$=N^LnV zmXc~nj?{}Q@-J#jWw|k7I70r0`qDz_scckAsaw>?YBjC4)|*88xpqV|^q2Jk`bYXI zeZT&@Ud?E2tTzrD<;*c=qSehB!^xj!eP6Zm95)%CP<$9d>vb#uGL+%j%;w+?B! zv-_so+a2P*=T34zrr`brh>v*1yhN{-Cwsov$ZO|y^7?v%0PqvMPXO?rd0%*&neOkr z6W*`h74L@kDCWic3BKUh^V^W$Msb2p_-BI{NQ{dZoTdVTA=CrMjUltI=7ePmzX<1r z>%v_jiz8QhSPyj|z1I7H;MMAGI;>yS3+i3T9D9rQEI2Pv~d$0$lv{C=xSio(>uJjky1#Mrm-&9u6u@wb$9d z5@T0FkkH;qbCx<6Lu@#N(y*Hpuz_=T)Z5_i_KyaqNQjGUVzY*Hf1b`H8>itFF&VhB zS-d9R7jps?1aM(bsh>1L`aoLDrE^`XOYu*Y56O?X+7p#3Tsi}k*gOzlb~O>4H=2HP zq57q|Pd!JX&!!dDDuH(2(yDMig|VJY#)T2Wor!FQ2;+rmpsn8>5lyA%N zz||q(jj75)rHR^(OSwNNqqe4KJ*ha`smo<_TYr(Nd_Yhx1H1JMO8b=^l5Hm!2K3_+vn(I$9prp<)nkg{vbNjWBwn0Bq=TynMa?cg7>HwW$fob`&M{Dlk7K{!}0dV_8fbaeG%mF*v{irb80&ZnYe-T0_|TPx`2t! zbZ54+1sHMB`OCTQJa%%r`Q74fS#p){ws70HFT1a}-P~ky^>}xI`Bqc8RNB5Z*YN4j!2=#^5!pp+z!ka>Wuzd`4pGH6WwXje4LHJ4d zl?(T>@IZJhMkpBDi=;ZiV zBf9Di)*DtIYk>7GbMn5m#M*A{w!Wvw{=>Rv-LgRRO!_2^7aFg0CCyQ65xXV8(Yk%F9ZP&zC9DczDDO4;NJa6H{( za(~*e_vLBwB6*p-O5Q1d7q;rfl;;#hag^tk7nQCQ|E1vYbV!IJ%4x3fJFErENm6Q~ zwpV+pgGksD)v4-S*qd~9C;0rh`n!4)l%8EH08vp!3m`*%=!zJm;1oKW&*{-NYquaT zVo^PhURsxQ6C5#=Hs?cqzP^^UdR@P(#~C?|0!A65BIKY&O=|`kb~amOc-u7sq@f5E7wRQ%;<-C2_{>RQr zP*rqla`m@>Qyk=s1Tuf>tZ{ZYd!0w-W!lFF>j(b&s$3m_LFxmWE%e=XD9gOU>Q{ct98gB z^zi%m$^It<)^dL}q4k4*#Qz<#=Aj?Sh>M&cwsH%Fh2lbKGJzl{AelFWLBhLWnfHZM zVO9)ayHVIm8aPSLzYL%$ES40jQ^f-)(+ghl10e50V9YLYKb&Ha0`7~2qzY1XsR4Dp zmDE9c9aeFm^e&+`iTb`?+Cr;)o|gZilnWxUrmV^JRg5 z@@f^emMW`tX`!2{-Kdg%AQJ<&dYQTk?7dyx1DzOz7c|#8Y6F9a zoUF~()@fgBdtebyYqzz3w1{3vub@}c8|ZBz)&}bD!W~Ye!i7xXK@ z_d-TxqXxm*&UnRm3(z&f_ypMXIpMk8*lip%jv1#R6t5du%=~6iv$R>&luXxr-h9dI zY`$ssHDd$K6mu*M{9D<%t2nD?2qD%c<+MB{}wUhB)sz6Nu*Nw8Sf&_0Cq%cP1d>HtbeDvSS6e z8r4iCrt7**+!yFQ29hOHsAu!Zk}E@imFXU%m_2ZxxCvfi$n?_iiS51Dyl!4^Z=5%o zY&q9k=WX#ayx4v!-4(j%h#&QH_!WKA_x+|M&6lWfz5KWRcl?x)MNflAU*fOyH~ZiC z-}>MC{MGHqdZIgvkY6Y!loe_a+cxak^TJE;twHwuOjtvOJ4$`~UHD7*TPP%!qN=?q z_63_Sg3Fg+D2YooMXIw1WdoemS{edzHZ zrX9Jy+ydzSDpB1N5-tUL{6qN@dFC@zbWy$zH6EwrQ1U5-l`=|INKYTqr>Wwwm<1i~is=%FBK23FK#4y)uBcKA@`uxG_l| zqt7Flzl`bYh~}Mi&d2rB`g#3N{T4KG#K>+GG>RK#jY@D%bqv*Lf-cj;h@r|%HPVbv zjU~nkbeV0&KI12n@D<}GTuULd5=q!J+Y#Blfuoj zZw1i2rlnbq6>DfUwVt1K3)TbciIvArAf}7krR{dKzdecO z_rSL^5Or3-ydShL+1F`^qjZvaoCK$^)6RLz>FW%1hB;%X^Pf0#0o|*ebQ1GE=Mcc` zH%k3=iv1HB$vkdC%qN+V^zFxYMZh%frkZB<3t$90h$g#E%H_{0msCE-uu z260?YtRmJDEpS?^kf9wYzDrDh02-Jk&LpajgVp{dtRIQ|9;cL#WL;BIB}=MLfOmvy z8bt@XNcxgQy*ox+--L52AeWIV$+bd)wu#*8nd~zv%+<>geRhOm#BE|a8=X-#rLEEl zRPYY`+!SccRYdX*BNDbO~3%23gQ;B*JnC zDR&CJ!8&7;@jb!#GvW9b5@CL`x!KSB01WVx*$_hXCo5ui0XN>T%Q!LEt;58^CFfcU zMnR+Gb|o(z^p1H?ynx~yL#o*m^tU(SBK&e!B%4r$!r2NSYSM&CoE#tG#xXaH5*ua*Q#y{b{`;WKKPs7Cb^)PHfeeGQ!);g~KQ+%P~oX^qvF3#IudZIDV7zuhRVV*I^AO@Ycvc>G8 zc17E_ThQIi49S@&Ow33S%6zVaAdf$QEsBpsiP&snadDGagfNQH$lGNeZnR!~tPiba*4I`MJ5~xEt(Gk# zt2DFUu-}EK{*)?}X`kb|eqa}HN;m;IB!u)(eW$6@61nPiw6?ySyfMxsX9^A18kpO2 zkVF4M>g93EyU$UWS_8LUrPUhX4s}OD4NZp_`^??X0sX;+{Wk!{VNrug?dg_(d*xr=Rl5M1D?C!qvoiqABBZvS*V+xr1cIiy=v5r zSJY&6wflIHZ zTY6oz({_44eGt0obeQ$k`VM`$c?zxlzM0EP07zG~JgcGglJ%zb4#Masr0*TpKI^1) z#`+UpIRGP-!O=~DB3Kd&$ambM2YCAyal}*C{U?D(a)5xlr4bKAC=?E1^S@}N}QTcEvicDP<1R6UTO$H7jr>w zRZpQ}-+?xblKaYpCA%JcNE?h2owe7s*qabaZ-;(~_n3+a@TyaAP0Z02Qpdm0RxvS~ zwQs29-)TQUogCMG(athWSIL%lwTD#pta>1K7t%|>DOV)@)Y3&=r_$GhU}>SZB8PT_ zX6XypJWu}|jrfHA3ruZL%Fl#Ws1MFjB1MoXhJ?Nu^7^f==~W45u#ScM$E+c-c< zJxhhZW#lnyn6}x8v^o$qVHzacBGi@dX|9eE6~CFkhc*5-yw|^G7Aw1z*D7EYvr6I1 zs0{5=$1+i-dRTplm1$i4U(s{zv|{_gufGv4cdR%&C&{R+U4v{;m!N3_V?2;Pf04bz zK8k92-hN1>&l%D#lA}Wx*C&ZS4{UAkyn+bZJ)~fUk`dBS;uk?&e&wu#Jl+mPe#d#> z!~tK6y5-!euHYJOTX!%d%={Qk`D%Bg`!(G0{xIL2#sYE|qAcQN^>V?V7X`hFDB`Zy z&}&A&-zmhgJ-mJ)78rr7JKp=iONCOK4Ry1`Tj8yQZ{LKZuoFJu0L=R_@3eOY;Wyx# z?|>8@djZtV=NI&g`?1of!Bza4u+N%rhjhVPq@ZE`XyC)={wjE#pZrtkNkE6X)B_?v zB1DCPLP_B{L4w(7E_8y#56mK;P@Dp@$PPGzqhQ{f!aY(`F^nR0;B-8$jn-mE@pTYz zZ`gxT;`^kk*)gE-Ql#ZWfQFlhyIH0DQgHx7HK{g`!IA1oO{5p3cEE<$rMCbM?}LhG zlc1JDCmce8&MN1|un=^45*kiGXSW9xcZ1&@MUVHnyqc7?P5uD`Ku)yWQpo=@tU`SX zR|lmF&0VZ7#dA0yVm10g1`75Mba%IuqM-{(NAhc~wkDswh1fedBo!yX3~vDm@2A!s z2Mfn*RYDBhgiERuBx4`#osedDAA3lewnp2pWojq2bD;&G0JTs91NWnuo2qZ;S~wR2 z>lQQw)UqVHx6xtu_8r>cuOYGU#K>wEFpHUqW;OaYi;C9BYyrj4g{E!1nQG1qodP?E z`+MeNGmll&Do3n~mJaRQ)M{&WvR)@Q_J-OTWi7Biw^m!5tZmpw&OvGgjaqd(Cfkl( zKO`Ang=}~mnsG!(ID8Dk-2&mTAIa)Clw-V81s2OjwQmG-_kf=Xv2ema?Vky#g-E1ze54z}m`|u9=+IUzkjX}q zie~^?f55sBa0!9krKYHeov4oe#CLEerHeaoCPk!Nr~;)!FdBPZ>I0M-Bn?F#NRh_U zc1@K&lfFO~-YV^q&V@8W5M+g90}>$_zgj>cOq1u6v{%6!{0d!vT}~ibS5yM2w1?71 zNhYR7E7S3m1m2@{%3+f96-cXp=&}l{CDlsmbHLLUP*($D;FfX74e9ERFr@y4vq~US zds!fX)@R<1D^Cp`)523MV&HE#TY^50jpX&LxII(>H0sVVOrxH zaef6J-*5`SUsc5@*8!dFZFd;O`m>M;-9@&%N}l`|w@?DGwGx(rnx24V&Il>2&d^t5 zy^p*!Z$6oD4~o%m#MgBQtb%@dbV!9{*A`|p)-!CCCi)-1Vo!s`3IJEo-~WVLF0>pa z#YZ*~Xt{(0I4l82Rb8POHo1=QSp8wKCJEDVSFNH?+Ai!C4$~!F5$<4;ix-QCrBUVt zQ4?E;{ht}+mV|6}1|Eb%P+6D7yD=D$s^a@{m(0g6Y!0PK~H zVr037@=+F9R6(nL5!^dS9xi`GC@w$;*((2tbLG5z74JekeSblv9A+m`(E)2s3Cj-3 zYf3leUHYXoWfA?-7G*E!;iRHh05rI21N8+Io+R?zFm;kT1@>yGx*qVbPtC*#_dCtg z1FRv1k-#fy0{E?Y+RZjutHyR~eu?X>|%gFflB_O-I>09V3^lFvZuk? ze+FltZhwu1Y9Fz97Nq~s&g&FK)~h;%@Yna|ou7#5@FJ6-kmj>3O7;Ze+&M(ns_JUqYg{Io45r zOMaJhmpfH-VS4`y9;evl=P><-nW8Y8mdlK zXH!yFso#K9FR72ne^v1y)hGMCLiQV^jn$^oA$$oxx?B5^LV8Vmq~*~I>*aJQrhB2i z@(sNY;Wrn2xf&|zAVktt{WdzD05RIgXk~OY`jPA=Q(Whe?M|Z8UPrsj2OV0&l!27} z(Co%wc~}%0v%V+nPSG$Ir@g2JQ{R%dv9~qQ8cwF$1Wg~5&ui8rE4SUT5H++VN$w4d zn4|0u>`!nxt*2z3M8Up>y&#WM$f-_-YmW5u2KwAE=R?Y6km1$>3lCs$`4wpR#3_OS zs3vO@9QmIxNyOY|=DkWEwZMiwf>vdvb4l2&q za5Vw{SPGuTQJTQj42E-@LEhO2OYmN)ZL3>Z9NcN4=R#!ub(Eb&F0VPnc#D zE%x6ai2Z+pAg~-2r1aIK*JwZ#4A4jD=_m3DcX&HW_zvau?B=!NbyySmN26ym-R3Q-`BBcW`r$1CysB;;r%b1BXuH z+`Q=D3&2one1ud$PpW~)o8qACBJ?5$jDW}cnEEt3MCLn?Sk6$LZh_0Q1C1Ip=Yd;f zV2nf%O#CzqgP&2L(n$zAL%Zc!@t+Va6_kp>PuB;555h_qn70FxATV!llfK2Sa~yv9 z9I4?tOkPPj5yC){b!^04lFw}9fBWs5h}|O63AtY zT93fw`NCRNF|=(PLA}!2V#j?|djr;C6hLZ02&B@ry(E-uF|tW1Y#p-h0M1)NQNKdV z+9wnQQ}p*qEomWHy#oH>q<#k7<;#Zhi;|m-a^=^ z)!s($2PD9sS!giBpYMO+uY(FXk7+nQ(u1JOA><>$$km{b~9ZVn{k9-ocPmhwiS86pP`*T!?soNV*XQ&~reX1_aMQf@d+3 z@J~4XvnZ8m-Cm+;3tVm~uumU@u;(i)z}MSR<$l7R_!~;b-=vlTxOhZXkkkcZw^2J1 zBkv&(&w~!hR8OG8{RtD53ofd-Rza(-nKA55&%=i#X>V!$wG^hI($4WRA2%mbG6ow;TOac4^t=&fF8$##DP`Y{3M{@IEFL=HR>y}vg}g!`p%USyf^-@R zZH3NwN_wLw569oS0=L2z>e^n~znelCu_CRXi~F}Fc`iUZF>xG8ZaTi#U%=jX#D5_h z@_}|L#HennWJ?XPl6OHzPJv~ZN=PonCU;c&1G_?5DqLH6B-L##V(~es?}CcJGJ>`^ z$NGbARw`SS-O2$F&S~WwC?}p|RZJ}h8Co0jluHm!R6oLxv;7S^eL-N*5FIKMi@n;C?Z!LDS=Qb4y#Z> zQUK4*rGQu;0HN>^eANPJnY51z8K}2~sgTuW84b4~+U-Et-`H6BGq{9J6v#`2R+RQF zSkqJqCqhscn__?&2Jt(IjJHVHtn4D&{is}m@+}vxPO;Sbcn;oCW7NSQxV}|?pbGwr z*C00wmnva?2^KFk!`9ys!gl~mQa%p(-Q_G?+OD0@&cq0=fW$2gfm;KDs;=Hi?}`~_ zN*GxC0Mw^o60RY76~PQs9VWps8UU($0jMS#AEU=EqQl#R+u#J%?~HMQ9xo?;gHmRB z{KSgsVTnmHhnv&Q4NwW+QvFU~iMxr#AU;%KV|A_O_+f@)mY#~QU@-_g=;Hz_OyDJ` zitp-a-U^H`AKKIH1@=mN6W!Z>Y@&gWAREhw0xO&YAKRJ;8i2ieEa~e5Yy{JQT61wB ze(U@WGj#_`TsGL(`fgK-US}lNf$n=Ta@be+1~!wuGToDOZ2zIC8hR}WtJl2`L+9=? zAlldPRDU9nMf~gpmhLx1vuR7W_ErePr(wUJ>n|X@mLV9dhPMinS7v-Q|_%+j!xM;I^tHR)fL{@OevUtRz;$3?uxO zKxJ)1TR1KLAzp_x4G66YVG3)?N|^32TJOMSO@%yIhmP|NtLv_k#GaC+g`g0sVIOEN zzs9P%=>cGm!H@LKj04@%0=)DNG!^10dLTk9&Us(7K$_tv2O*=_=CzZvfKlf zM`aHoSp^I*dRSRU1c@EYPWp=ir^x`?LFXCIj0tBsvRQWTL7ye1lo8)Y+gwA zZ)82oAq4)b&xF9D_%17wxatvVueg0<5Caq7LgztY1vZs{@c+&I9eUs{rLr8#s|&r~ z9+OI6Z?HF#-ft=tL0}hO4?TJ)TjQtv ze*ZVt1l!hRoNW zm3WiUXoCRU6Ltu{#8_SU7f~3jyC_bRP+hJ=li-CmmYz^qV?!I@T$W<30rMS{Ps6O< z35Bq-N-gMw7UaQxgyLkDqb#OF*b>?S&nefGM@k+7u>!@`Va;$S@ZLx$)%ogT^5J$k ztfT60V7}PjB*lQlDo%fyNJ{iTeMy*^lVMk%ats;TKIr;$Cy*^VJuz1qHv|x0pm!R2Opzal_nT9vqg+F z*avs`Xqtg#=6Cq4u3$*X4yRhfGH5V6;jnt!8g0!9Lvt_X^cEaLae`Bap%2*kAS_pa z+xEg*UBz9R8?;{@tnWLWogU5zYUWZ{_?^x{mMZ*7u8Xo9u&i6tbs!d6xv{R0@gopA zr?Hr9EoA%w_Y_#|Pq!cnQ*~A=)F<1$fw&e$g+hbRBa5u0UO_$K44~OA>D}}bXvF?Bda|WYNG`;MhWT) zB|k!(EPf)+5f8#X{UP3LQ~ww|?oCqwK0BPm}SH;dQi1vz&<`ykKHpZxDY5Bc{@Orec^nqvT8Pq0 zt2J5C)R5&euTextpq@^nnOsR34O)dW@DV{XSsKzaXd~OQ1fm~ne^a%Yw2*6A{(2BW z^dj9sHYCuh^aU1u!CQ2WV{w(wC035<=Ky3;Bacxj_Kb(=GWk{W5!jG zSRQ1a3goNSVE+M#J5%7IHp4?*qD{W+^!P7odcKtJWDF1BDvOCJ)|r%r6?|8Hpgza!%ZmM8?g!z-b&0pI#RE&}J!O3u@r|B%=RNQK#q>oCGnJ<+#2}g!WtI{gHM^s_IMTs;a8ZB zRugy?4okn{E53*2yRcjiw?ZQjbcW#CNm=vaz4`8X5K#K?H{WJ;X4w`y_@Mi~J z1hT(LWDE*TaGxTbuS7UM1Z2+ww@?PzuePqlNF^=M!#lGyv^Tz@*{mU1flw1H5k0Ht zH42eRYGHNrsBLYHPR85VSVqz|E~K*kL^An{pB{LOMpF=A74(Y=ki88mO)^%u(dGnJ z9IRof^%bPR2(&`LUzUYe@W569b=A#^1!#SkH3idVAbOu6fUbpjJr`PFB3j_n2C*qs zunR_*6#IR|?=-654nWpFm^BkvDpfX=zfEi~0i)SFTq!jg8_Yr!o0GVXZ-hSfz^Pdh z*e(Ft>$%NCe&O{P)cE_MnSGJF6mt9!w0IWmnPt4nUTuV%ApNup!)z$kZvx`Y!jO2l z;Qi&@g&vO*YURS;I8dO-8`3ep=y&no4TEkftk_bFZh!f=13oMvOQdNCxbpJz24(3O z17->ZNe@{&|i?MuOZpQi}~>vl?8Iu4jadYER*botL9w-ae|l@ z;{7Wj*a}=U#WA|qA{Y%=vG#a2`w))rNn@yaQ=u}BkgP63W;|Vk5G1UsaxGRF%C6ju zMzT|A+w3n7#oo38iFyn5ZZE-kQ?7*VT@NvTAW**s_!__>)X_k%#f0a2e#Kyy@;z~rceQW0f@>07$82ifa_sP%a2{V#Z{WR&*J8nIK054nL658zOZIzf!Oi^uJC27Ao~9_&-<}a}Omk8?2XV*yxCD zU^W6BF>q{5f?A)2DSibS&mjo*bELF*ej_930K{-{ObfGX47>4gc#TgGcXpY7up*`? z40}VImrrHt0pS1X5Uhbvy%s(3C~Vg~9GKZ@Cj+s%8ddNW?C@j49w1nIvBF-1pZJvh zt@C}zYyA$Z^#ENa8}vjK>fZDCtR7L`inCZk_F^4yPK?3S{t^D)MfiV%^>mkFqM{0S^DUQIBadAhtfF$=$hLrl>fHbnS~L8q<}ena9bfVdaf;s%Hx!kjL} z?z0OK<+fN*sz_9{L&F| zO=+sWjI#W0xF}){Yxy=(%mUYL>|Tg}N?^gNj0sDFXn2E+H3=-f7&>$dD|rJvex7QU z6Chque-4(bH6%kXJ(*=*qtKQYVT0VM|3ExMj2tW+tpL4XQP!H0usVjnnld6>Dm83SFvVPe^L#TBUsf_!Rg~p+q0c<5u`+p1(u-&Q4? H-Rgehi`I|D-=fj>&2onjUt1>{7mKyqFB!Ks6ISc% zt$&dZ(yTAH87K;^hugFfW!691e1gyS!jFjj?a#MOkbYHHxv;zFp&e>UYO(;?eO0eV>G1} z8IQPeodN%jxEXOIabyniu-@s~#v?J!Y4u>es*KNwl>8s{0qoRm}c3S9tn%?O162 zvR~cmT;Kh8l8>dopSjvm>!1A=!N$C2>$*?9D50d#n)z(qt}K*ZnCzCzJy8i(CL7`4 zmZ=e3g`uzr%o>vFSgNJKvL(jP?0}1SM_rpo1ikUKZ@wT_T3gTu@w|Vv9HW?U`{PSGO@_#*_J7#- zT1$raiuChY@fEN+Leq^?4W`tHIXoVp^!HJh8qr^8)`PJOF{K~#N%Q2xk>1PyGGNp` zZ~P^#lSZ`lcXo=Z)G4it^}P{&yze32EK5x34xhAm>%9@N-fOr**JZTE#^lne zE`wM~8i!c)Nv(DbDuhcW!2n1IyQxAL z5)4K_Oey_K+GD|{7J0a&oKTXhPAc%?NMaY;v;CDQf7OFYyYiY1l3&SaIiSZb2j=E=$u$FE) z;5+-<^7>1b-X8WA)-OK1WlH`AwU=^~c%;$Z$!h!P>t(N%pweH}U9vpmVebbab5vQm z)O2oFCd^R}EWM5P#!BGcogNnG=wIHOTc0u7-St*ycMp5h^6nOe)`?X6!gYjO>hmB#Ts z_{!s`!tIsEaYzX`$6>$f>g^oI2YPGyIF7J@?rDW&g{~gscsNImBYE3-A-=T^+Of*F z&t=F~;4@y?{^O2PA%c z1)pno&#f}xm^9dnte$(K#RBWNJ*&lc)*taXV*5*lC$AmCqhJ0C~^DJw48U!2s=Z zw+}l!lTVD@M>w$S995@;`n;?@yB<>kuRiaq&#}k3X1DsRb7Fx1@qN&wPsunBTvsq1 z_I}nyCteO|&NiHrQN}@an=4$Rm;(DItN+PUA>9r5c8~F!b{2HrhXAHOj8DTiqwR z)wNFjGD{rT{@}|E?6mb~LWF7i-ZRydb5DMClIzZ*&bs$(cO2h8%dQ%GF2oqURT`|> zN4tRCeJ(_lTCbmDfjZ}vzt4vl!}B2!sRS;c4-v)Ihv!+K>jmZh3n50+rx1uc#v1Nl z2od?#po=Up_G15bFYkJM7~O483}egg$49@#diLUBUXw0iO|mw>Y!-E_J1&=sMC*H3 z#)z!#kFJaqVzD*$TB*pkMqTHsjn|(O;;i+r8)jV8(!MSgk=EoAZa7`iScuEkd*5*P zTi&t8UyvcdNDA4`%7P(R%2IU(kQ2om;BkhVabo@jvgPC8mf+zppv!1lDCYY9Oy}s&PFkMb#|_s&@7iYoy4gvr>SgmYRSq+cr&f*Mxz7uA*w6br;#F zwY!V%Qf#(`dWm+p^wH?5sx`l=YK`$07(gF-y}DQ}w%h9Zh(D#MXRA>|cnfiw8q^eH zMG-BoDKPnTStninM247c`@)Z9>eHA0N~T#YC1cjfZJi9LEkZ;bJzrZOLTEEMX_!l= zYm07RJp)vanE{ZAq?G|m<`{D&^pnmtt0UeQKT&ZVG2Sb35n}0*<*@x(>Qq;J3k7xR zDFusla#<%`16AdEo!r;S*dP(+Jt#rqg1F7$D8IJSZmz#G1NGl;uUucJzOK1Gnp<%5 zYg;QfU*`G~(@}r;F?C%Vi2sO0I?+J%^RG9{75bKO-p(b0s7bJRxt3+-(@pO4$QCSK z^8XtkT?>w@+al`MP`ntjGzm@m8i9+ieG(+g7m_h7YrjU{G!!u&KLQz6)Ku!$NTh`< zUGR7}4Cm=?jkw!1SGN%E_QK=cp!4Z&A>1wA)h$%yU{bDnDM4!(qJPezwfUnXh+2){ekK6o=VL2!G9^2ewJJ>;BUHC7+ z*ds>hHg|%S+dLYh+bpy_>?kISHb29rnr~b(am(>FSly5PjWPDE!ykhXZO^8aoyFuf z6Cdw1?6FP_pX_9!pf2ci8naZ%(tfZNmj1)ADyB5roET0x`|}TYy{ThnzScEP}8e}T%Gj2K(zfB*XUC{7AL+3Z*-#Q z#hzk}=iq_tx_kDUbh)R~3}g>`7z;S(*Us}x(RdzQIUH~M$x2$46Hd^!Sh2Cj zhOXsuJj-SF=V;1Eu}J(z*rj7@OS49SoTa};iBCm{ZOdrkA;du2_Az3#QQV`d6GWZo zE`9LGffehHho#z%myzHTquV>WM#Lgjo^GvQZ@TI9+YAx z9klo#MP>JkNyBr--~c%ROSRApPhWGyQCc=Zgx2NcWO7wK32Bb;n{?3Z&k52=we#iTsnLV~62J zljB0yh_uyXeUsYSXKlyzCyKgE6fI;|f7`T)V!RaH>5DiKE(X$XaiT?aMw8@aZ+ZYZ zy#Eza%gLg#_es>{=2^!2c8w^c36n(~@ft0fEZTQ};TG&GUm){1;-LeKN>%%$_X9I= z((RbV(vbP>OkonUg{feUF!caUMA>A!H5u7s3wy8(`p+y;59H%nqOa*W|`v^OQO4xT*eOsgR&r<`R-s#1U?q2XZrLNwwZ+9?-`Yo?(W;sL2eANz+Nvz|1% zG+Q+A;s(^Z*vWrh8sP(TAcu@EffR@h{0b$&OJuvFAHfN>7|0DgIh+JhjvY2s3DiSlsj=jL1wsIRQL$2`$W%%NHHMDyT4Hl1|7{jsjqf^q1x_CV?Z zX|CSBkdvGie-rJPC&D0neV*tH;-4rM=_%}Fca;pCbTHK+l0EGYC?`>L_fh%aqwVR&DBaW7;kE{?sS$6`m<6IqP$rn%H}ElO;&aLaLD_sh zpS6^=aC?K^ULXRivB;Hb-0P}aCKW9Z(RDI1A2~)j{L>(c1hn?(j=X-!algn#_-ESLe z{Z*}>#b_Fy>xUV$*N1GheGJxJr6i$HX|QkQbqdR6LRv%kC$|U+l51kQDy+%@lK_^T zc*lK~!TvFYCyQ=1-aJ%pG-U;h+UL_N$)bO?fYthP>^aK*FpJJ4i$I@YImpSg!*RkK zahpRAP#JdfBP?K!Pw-K9r@$pg0cB0Y?Yn`I&)`Cwt2o^jibe>7sS8EBCLAz6Y0Cj+ zR6>_kM$;^#y~8Tt=*Z_bx^(|Dsj7V&6)zNif$#j6y_bRpOGiG9Ra=Ite8qNWq4}ITH;|CF=}+ufSd=c zF`|r&%f&Ox;zQ27~P+VS7LesdSG~XprNRzoDrMx0;_hPOHF0aU@ z30x6fUXhYDU+MVNrK4nbI#=X7E9lU2Q9Gu1n=tLq-YHD`3h}Y01RuK%yM*aTO7@<& zeIwC|qi!3VM$j`Pi?Ra$sD*6scgDPgTKbQf{O%r^v+?LQx-&~?pvBe2L9w^Ki@qpokp9dV~j648wR>T7d zBmf2QlhZ`ZtU{%g;b$}a$UQJp!thHNej&5j3_qLUM}7u2h2f_#{6c2q7=9eXH+&AZ zkl`0H{Agyg8Gbgy&!+Hn(N;%VkjF?1@?dela&*B>Mp|$aHk}oDjIdr6B%hCv&D?Gn31OJ2b<4G z^BHM0MZYGtI(@oB`E*BxPwy$8-mCEG4&~Dwx=%Zf7FGDv z2$SXlBWyZ-TBLkhr2BM6hKN}f$NEYbX$d3EWHy+Q1~bxP)yhaq7^&$X8)u}2%BRd` zGtz8ETEeVh6ObChfHb=ZYzZSRVWf$Nzy@!c0nK3vzUFF%JuC4^oz3Dcr=xEwN8hY) zbST5m2n7&l@ZMC8zNtIf?R7Z1RB1f{_`!n!Klm_=#4-Fhh9Adl@Fu_y4g>sbW(}JG z-_Q(>E@8HW;g_i3Jpwk8;YTujJW0Wx0Q}&AfFDPNuZyWpM~A|oxgZo4oqmm1j*hQz zbSR8M0#*^cqb+cBChLoPZUdk((n4ml$7R5GjMQ+HTf4-em61j=8`(7pSQu#vv%$xK zGCBE6}Q-mE|x3X>c-aX*RPZjI@N2#$5p$$w(s^Y4BC=&15!v^9*Qi#w$k(_8wR{ z{(Muc(&1;sGyIHrz;Ipm7=A_`fVeJu3_l|tP;lAXZ3X;7rIq1lGyGC!OBj9$!w>&j z+2nv`_=(J>F#HsTpU-UE3BZqI_>m=G3mJYP!!Kbro8f0G_}_pnVfZD0UvMqn-DHl) zCi5CG#tA=9!OyFJe^bG~Sph#!!Ozp-`>z!vT9>lc>?;g^9N=D;z)^gm&ArJ&H(5xrc`TI2LW$fb{xSv?KNf?^XST?OK^1kzpbDAIyNp5Q zjm4Z4gWVkseTarm>qL(Rtn5gN9eVYnP0;H+g7QrI&pI(iK1!oI>qOwR67)V|OwWF4 zgRk?jI#xVfMvIzHxeO_UJg*ValZizL|P$%9teAVch+feZ!wIu->@E zulN>!M{`IF=)o9P=7nMpZNRSWFOCy7dnAP|>HyiGe#G{iM=+O3zmgcUj4KLCU@tej zD^~C9-Eeo@O|T_huzHsiz>|f{X4k^%oxKj848H|7r8ZXY6hgEZz6TrE5?NnF8C4vqq|kB>hKw(-pZJ}kA;zw$|I zjRwn5Z=X+xdY~AWf9r58Gpro!>oAWjGY@%i;4jmG`zFg5-Ou=}-U=jls;qn)#Nc$3 zY3g=8LU*t5&DRgvPtiM6E&HidKV(0doU-tfOBQ}|$-+-g*|^<^TfTk4^MEuJcOxb5 ziU4m{P3?Hp7_-H+np4){c|zoG4x5%gik!c~)b?K9Eg9||An{(jug@c#dW ztFwLJ>albsTRbNoQl}i`BjR#I$66QnV9tv7yyLscl;oRQO-+;i3)_b|0^jl9C6Oz7 ziI1pvu4s$z&llv1iJ@7zQJiInwp)>G#Jy=Q^PHPFU^iL35oPOr9pBK_siNMp9GB>b ze-!1LKF2qDnoFes%H>1;QJ!xj|5^Swbta|MraV>XMi%Xp$J)gm$Q#tw%A3usBAyQyMk)Wp1A ztuLSFrJ54Ss4Sw|r(3Eez~QN-QVC42q(rq_s-+<|EdD9@tYpQUc{7p1w}={m+h>b- z2IRFZq9w@oEg}l!{ua>{r2U7ATl}HowtuK3|M*Zucq#DS>5*B_Q~mv-b|u^=Px{#0 zvMBx|1aTJS=>!>?UJWby01=Pd>{~Hh)v52t%E?I}ZIra%N?7pC;X#-si?GkU)1y(T z56Y<`CyT!NSd42D-r=#SKfvdQpMHLPtHPZVdzj2m#B+^5ZU30;9sOL=PY|apt7XwP z|0t@T8x^9%KNVxbwzYdq>yNAz%RDA&qNBtGfiZmbsd7+_d@)R9(G;C*%NHX(N49mU zAk$V6;&OG$?j_3A!P8SC*bRZnUPs(Yu!vyQHMsn!yqL6Av{BAZExd^bVHZ6ur^Jf3 zitu38lxh!5a!a-2N%hASDk;BhqC+4{1x$Rh-8IwOL?}jJ-X`kzd2iVx$87^XoD=NN ztK99?Kda|c%14g_=UlGrUz&Qq>Y`wuUFQDC5;#IvM$(VlM91L@S7BLdS?xuQe0F8V ztH!mlAh%yw3LDj6Lr2S(kb@S-^?kw=fo5if^ItRYtx?*eM9}>0qET(utBiUr3V~4* zatAPKq%GS;_tG=P^+PF8>m4Vq|pCo{sR6U%6)F9 zt~*3?b*`tDnUV&imIWkrMMz>cef5*m?B(_S&Cwi67wW6UzJMbh=i%yi$Y;4 z5jhqFM*_&}{=5$VS)5v;Wn?OQ*9n=)5PuaiW$udt5Tuz(er-k()!!}ZRlS|-aAd}! z?%_dNS|I8U8i?bOD6SB7oexgOtn3fVwH7sn1N${UHYy- zH1X4oS5d~}RF}1}6tr7}c-95C7p5-I06+;gfvtza)y_zD8P`|qwA~_9of`Gr zAf)}fMVkiIZ#x{WRYvbyF`topR{qO;cG#olGf5{qKwJ@qKCtqSR{_7zRD|^faYYzQ zKNVroN(EoqoL7MgM8R1z{{_*x&lDoR&lQOUsl#r>W@>P1nRoJ-9EOyegq^c}D}D62 z=pQ@gdd0|{7E;T67QNuJE8`U;hcHixAdf`|=Z9_wqo02L*5f8aDXn|M;jsJD*3U)w z7`NN6z6;%%Ug#f;G8ct|1Cgoz@iNA~F1K2J(TlJeifj?A27o*n9m?<$D&C7HrIP6O zUeU{Q3zQy2@uRl;M59WB^}t}+dHP^~r8)aV|2kP$D+W8t$JSAW*dtT&Ao_K$Xh=Wr z!xlA*`tBE*Am{gs)t*mCtSS`K&~&d*EO5qW%|%NA+Jr(pcuHmyH4IV&;2YQFQH0cZRPS|j8sVD^~M^Ox#LF0b{|M{QPq#ntk2i4VR zz(GMq_8S?C#H8i});S!Q;x6_`9JDwb0TU?;n%mnc?$5^YxIE7?j2<3s&!m+_c+@kC zj)4SkTC2LXu)m9g7H)i3HOrujv+#WiJtX2GY(6B$HaxyY2?yH`;NWrLQ4p?|MA~7s zUF>^UO!acprMu(%%dLlnzZgYF4&z(NEDAj$MoWBSwB(3*Cg`1c(lE;~0^P0ZXr=dF z4v-jB)R<4#j)-xxRwi{hDjL*d|E=u*AoaeF&x-cg6JQzHfb1E3{sz5pRP^fj;aq+| zq73=ISxUj%%y;aohRy&j%pc7;iti>Zf2|)LJvzqjkw}Y=i*bS8tMPSzkY zd?i3-bDjc}OfMc6&jl`C`LB3Z(J#lvv})&pW7h>?I*ekV$tUo=UlygEz?Z>U^zjLN zLpP7ApA_vo)SLY{hN{e0!tnR3r!c%o$tT5_;AIwvLw5)~Gif5PjTP&UVUPJ=)*ru9 z`og1=H6VlanZx2AwkQ^}7KX$kX3Y=8b%pc5nsi&nJ#y%)lQ*;5!T#aKtCdW0PgS$= z%k7EO;IwG$yBDd-(pmJ z%VP?S{TD=`XBDD&o#cTySMh*Fb$xcFgqE-;(@pf}SrN1>tUMw&@izZ9`%eYp!{v=X zLXG1WhvRmi42NUo0K@UGh3O)S9pz7y3n&Jo(I`+{|D^Lkt2mcZ%j)sAFQZ5qUYQS4 z9;;+Mhi5!i(WmExf2;ogX#Bq`uq$+oL$5g~ucBn3%%)$@iAK(W)#bf@#vEjP5v60O z>3PvA%C2Ja@r{=n;=72Lr-yj|HSF~Mf?^+N2}9|PQk~YH7tIkdMdw9GzqJt2x9mz! zE$FFyZ*H!Z4S$*a^VpBgV7+{+g@F9*Jzqys8@?Z)Ru@Ej@i|StAZo|vwFZ_VkAn&M z{PcpbuW|90bUw|=yEN2w-ccBmP4+H}_-2ANtGmYp!)m1>hE84(fx|nvG>y@#LtT8D z&igs}oDI0ToMzJ44Z!mdCDw$^OEQ!V_Q=1%XkP&iJUyinWf(@iNWGJ zMP63x{M5@xq19q8*xMjnzi%b(Ot|)OBUBE;x(|uZsRH`nr@^`m?f2y0S-Mk1KNy>l%Cn=Ul@>PFb}3 zns`n!$2(`8UWvHCTQhO{N!WH(N6r>9 zpsOuk$V@lkZ|m(Y@o;k*_3@TjBG7itTPBKzp9Va|^%cu8AKsB=}9@XQMU*s7g!eXv^XKMk@xjhpayGqzIrmlWf~H z8-aoz{t5ljHcQ%HzW0z%P<_8N>4;k%+WB--KjR&J{ZfL7<%E3%9XH9V9^8yp1LtvT zQlYP`CGzN^uiPTCZLijlp9`?P{A4SUXM5gHrtnX!ey$}$L2A~P&xsv0ueNOI%UY6a z;0MIdS%y4lf6BgyKB^6&;dG|9Y=-3W-?illF`kYD$okOteSq9m`?Z?b2x| zco>nk*O84NbD@sx0aCNB92Bsx8rH31`v(IYjs(MNp1#ouS?q^rX<=PCL-e8>b!A|U zMn678tA_zQ*MvkQ)9qKuyPj+m@Uyq-e6j!Io$&*rdUC#)W-F*C`^kX%UP{WnU%6ED z8kqQiYSo8{cWG&T87N+*x9iLH0Yg2NZ0D%QWiQhA^`Y?)jcFj~iD=u=26BNA-%yW+ zGDPg9xQ5cN)u!)wa=g{Ec5kEv4yMl+h@SDW{<<6S20p8p$6;wJPD# z^n7b+%0O8_{|S{brfwxl+a#yc+tU9+-6Ff+T*f^*_DB9n|qq>tOs`nh|?bp_+_HKIn zZeMiWXPRp??JtDV-`<-v(H!K?I?X`^)(?z5uT1XtWSw`Pht3pz zs7KsBqML1GW2o^8$9q9G(f)9p0GsIBaA~c%NsV}ta%wyjM%&j?Mq3zNMDMqiogj9- zt?VT>*@D{10b<$FUXmXWZk`&!BR3@1NR41vhGfsw2v%iC@=17waY?)7i~?jiJn?qv zZ@7j0BdOuP3s0;N{_amD9PpIFZf71YC+Bay&~y)2iZq@&!XEsWNUGhVmit&_uQr`@4#7xCR92R6T7z~q*~4-*-5s9 zRGUt+r}5J!4u@4d>ra2~#dm4CSSLAJ1|+bumJ~igR)Oq*&RFWU(1Ol#tMr)hbkkdu z+C_dM|DHyxSISlt*H!hJ(N#8OtX<_cc_;qqrlq!byUG4iMon=c4~USx#X%YuAwQOl zCs(R{hF%)l$%A-{Se#vy`>SCae-ry zGreVp3eL8*GUu_aGB~Cpfnnar3_^U ziU5{@D0E<|2&Bjb!h_2C$j+XFhf7mxNf}@|q21n&`77t%?OT~!wxcq4d`zP&P-h76PL>xQTh&yP_a4;~`< zds8R(+7K)f<=mG;IE>c~mG#t}MEAda(wgA7}7qkdrCP zRaduuHFin&6G`ztwtiJCNuj3Y-{UN3q zO4o7Hl!J1a<`0v@su(76z_2lu_GC28$mf6z^lI{hFjT!{=^N@zIYT*soQPtgWleeX zdwTnTY(&vRWi`D;eWB0Y$CeK!%s%6LfvjCpsNbD;T$PVPjEij;D%2jez850haUFHQ4N@=<<4={-T3EGTCvVz_*!O2Q;{ zRye1b-W{$ixY*L+lAlU&u{}np*+R6`_nQjuY(;s95(Opycg}&Chh!j?j*uN|xc~Oh zq4p%HZfjmLn~XRIRLt|qJUkZLr&aWBtn`QN=MQ6*ERI#Nb0=2v7uAhN%Ec@&Qu|B^^A_^YRHp7F34nz^w=E~km> zM4Y2ZW3WXX2oe3ck^UYQ;YZIHHTx}7+G6$vlr0Fv9g7DgO-n#yTp0w zGEN2#@SG}5VF1<-bTZ0IC^;yfqg+K994}2XPh#Vy z`Fl@80z%mxzxKH1R*0Lj>w%$m>osAxJU+B9_6wK$hW4;u#EYlQRd}0o+1-Ae8Ps0o zmc3N`oD5mEzLEemv5t06=vY`TvT%kpy^FFN)<4Qv4%3}^7tHXh)c3S(yv*})At%(Cm32YYcX;hr zxvEaEJq2YM%KIoBz&c|4PHdbj!CmwmppKb|LAmR$ywmQwyB&{&8rD0tk^Qvv>$|YB z`s?g@_SXf}@@{-g<eLuLeuL%JfUfvQKE{f z_mZ{brJj|xGriqLJwWn`W>1jKJoBAWrr&7Tt38B{@O1)>84~NZud01^mrj z*H1)OFNjoNPn;|}%lB^5=E-uX9C?%Og9EF?@DYB=G`i^k2G{p^k!zr?f z{QX-RFja=h%tTr+RSq#lCE`{NWhTnYD3twz3=rSa?WwY*wEa%C<7K$~{Ts!5jQ-u> zxUOAmNwu!_@Cz>-^N;Xg2fjeNBtM!6NhP)n9hU_b6-=MQI0OG`Hn!gBp=HLX`Q2u?LWdi8A1nKE@ z^R%vH`e~Y*fDN_9*~k{W<~keqoT8pHW#GD*vVjaz0`+8^s_P>^yGE%qVd54tBa2}o zZYE3&x>m_Vhf}(Vl#^6{mh38TU8S+JWU$8wWPh)_Pr{{hIvlZ9uQldQM~36nEci9* zD!ZbgD5Vp#*fUpXz-+lnPP;;vXUmQ9&}CXYM{dL~s_;G0yE6R}?S3BBw=UAyxu8)O z>Hb`KNe)^=rT<9{UyzL{W1bu!!{4Nz=gYXW~s-M3{c&s$2|$5}1>DJ)5Ll>1lHq$GqY+ylI$kupP^GpGSu_xO^CbOuN2W= zNwT*TdbON=lcpxa^Y0at`MzxErle@~3)l`8)B0ot)xqzm>O$Nf{rx3RhaZhzC~MZZ zQCMlU#0od2kY~OTZCogWCqLHA$6?f{eXvRp0GkJIj# zIlhk3*jG5dj?sOl?;WM}OAv-`)MY8caM}^NycE@k4%2`?WGu3bh`z3LF-5*cD^uh^ z`e3}%1@I!1v8ssC(XvE6}7--3meR^rNY%P;?D*Wj3YS~W4yie6K7GYRt=Kj` z|EAm%&@s0{M>M2EqaoVCUY~kdap`cQF;?^_`7ievP9;{P7MqcAjSP`ddDLu;tS@iP zqXBE+qs6)8wnjFR=l@HaxqjL_+p#rrjKta2h%kt5NVmD( z-${4ALj$tpk?Oo9x$7~a{nb&Uy9O27KB=uO7g|u1pmue%NA92Z#c~``XzN^8t1YPh zdO6nk``-=+y}VxT3>rUOrFQVjSAPF0b`W=3rZx`8e)S=`(2%!eecy&D{4?D*(2iz< z{e`{s%3HFY@9%q^UrOch?%e);1Z{c?*OQ!S^wV2%tn3#-{oh8=8>Z2!w`F_NiTH=* zJ7Yil-X3)3ZCP99#nX>(%LesQdtl$};o3R-#o+r5P9+KZtau9DfHdz>%0G)sSl$NN z-fib+ye;UlK@M|Pd*RKi>b0_wOV+(B8yFiv;K{7eJ4pN6 zHe2lba;by?cx%4w|0(s`Ea!mDK8IChcOw1zv5b;0d_sX+h1AMfx>UbS)IVQdt5R_A|L?3; z{fqyd6??&!dE?6)NvPjYEqK%E_$qNn|6k;+RAT6< zoE6dmGmjumjdBPDQ_n~$+upO@WqUw@N+-TlpmIff3Xs=HIqu38aWdflX|AgAKjo@2 zQ;$j0QIzV?Jq(573S=EPW#ArV_w_x5VY0DA4MFg3&&<(`4E{Wyr-2->32?E;g^6ty^0?$IV%wI8q)OM(B zNUiouPhD%>hUJ2FSa5u(NzZ?UE&mQnw8I{_fL_=yL+Yx`2cCKNPQg3A2KX9o=b%|n z7r{K|l1}VbqhQX%nHif&4Ts^&l!k>$AfizAsbA-`H1$Dw6XhmKr!R4g;)NmiE2fQw z^4Ti)&bm@zQ0smGm%`=qsnr4H&X@zZKq`k+8smfVF^1b~&gXcqGqP(3(3!axmrCA;(jrU!VltG zo-D%1d)FUu2Im4wqpy%}LCHojVx;|1EN5xkK{>oi%K69gW1&SV%jS%$nMF#OlY75N z>d(PhYMIruuKGD0hlh_G#r)g?2cDk_yv&4i(zFHT2bAFR|0ky+Qf3qCe*cOyTekcF zKQF0%5QHCZ;;Kzzp!CO0brzK!l4Ap(gP<;>H~Z{5jwiO`kU&6!4Vkna82XmOa+rEt z&r+QM`l(;znAKC%j;~xWY1k1tCGhW;{z;tycA@Un5p|}i)3fPO*)4F;KS+DKj3Wcb zeuwl}kiU+qxd9hJamQpm>D!r>9Fs452H#M5xpUV!FBd9jbfTumX&KRJplP9v1mTZm!P>**>(^aD!ntzo^E3?R5xOB=XABbfFpa)(JVe z!+~M^iXNk7sE5UOxc$3mo$Kde@i158?UOw*#$Z@}n5V+5Y})r*sLe?kD0{y_Lr&u6 z&#MEaos?L(+SAZevdO@ySMWT-b!qw!=vI_3QT|4$cU78tq3lFCkJ9X#G!>(`LAC)( z7nI>Bb5LGK$-PedPRXz^`$#-zRXIZy;|NX9hwsWWR4tI9!uD+9cv-j0&3No>RhF+j zDYaypej9(Ryb0HbNl-8oWg*I&C=~gn>}sr;gappAv$FNNbJCM`U}eCy;}BZpT=TkO zIl$OwL1lsWv!&^YUDfe{u3e1VrVQSm&72@xcx1g$IqRdo-s^e>U;Fu^zQW%3?<#w0 z&z87?9-V=~sQHy8{=wi$JVm2#<2<&!rtf5F;6>TYJ+ZRM;IneH(H~W`aTC5;)Av@>HRYO^P9(^x9|G08l zEfr65$-c%P<~*TvZeLw#Q)EgH(($i=6(SW$vFwXTitU_DmoFkIHf=UFy9DY#n-*Wf zmT>JXx_=2-v5~W=>t)ot%_8$<+!L?4O*<~jI8&$F(li7m9_3{e%A0~OEoO51tCe_# z7F|J_;#L9;h?lM0@gR~)hAp{*q)mDPZRX0Cow+bo**HPZg?-tWb75`8%XH={(h})2 zR6?cpOPmL?|8JZyT(7^}jn7CvPbSfUKd}DJp!>+gh?mH64N0K$)AjUNpO@$=^XZDm zYu~BGb!cocUC%qI>{a#AdcbCmq8m4mUf6XV1N?XzOVpF4Bk9p~+@B1Zrf0}L97%0| zM*1rA2KN6~<8?JELsm3WSJQ7KtHHBG&PHWpsI&2{SlahBY^WsMPgAKO(q%%`A*D8z zGh`jb2x?dg3ngE}LcOU@ptGcxXRK}@dIW7O!8x*Xipr0meTziQ*T3SfXwfa{OP9Vu^3!cHjr|tch-qdZP^ zZ8kQ3&Q+5iK&$N1EThKhiM{R5JJV+0T*H0*?_(8MkEwd?b?SW^(>hj9kh!DMnK)Z^ z1&OmLXZ;6rR6QroRQ;_ny8N?xJ!j5Tefk(`mV_Kwn_7D6?Bm(g`wniYzZtEk&IZj^ zsk4EDXv-a>&gSdY^6D(Ac^7x1Zlm?A%Ys=f2Biw|&Qa9tR}B2rU1)x86wj11ch>XS z$5TuN{q)e9_!Dmbz8R_K&O-Z@r>=%M+mHN&Q)Bi>YQISKkO!kU)FS1bSY5M9o}G(& zT=UQ|#lY}R z9}dPy`S^IOu!{`{(#=~glJ<#-_@ zUL1@AiTPc}k^dr{9n5oU)5>8UkOs$T~7)5jmrxTo+G<{A7=&7`j z3H0}UxdKbKx<2GjqHf(W{RtZh$8Q>Nmi(#?cr@#clGnF>Bw{%J0jE)YXNmjG+XfaeAPS)P~E8qll#T zvX`EIXojEdQ}F9Dz)NKz+6R;)@Et`HG>x+ss@o5-w8Hpr-TKrj@76GuhPY`5bl?Hh zw2JnEJUg7;uAy*nx7IN5v%#)QtNN0F?m(j+R4Pm)U&#FQx5zeh5Be~x9zC8d@XSF@zS^&_ZPK&$O|I)=|!Eq}Ly6NcXuu`e$4Hn%Y7s zFWsSa{#s925JVUJF}wsP^$4O)wY0XfaS+X{h5GY>I!z9wW3{x4-Z=(1D7BdL5IT^K-HrLZ^cxr8OpjJ;5(vm=}mH2`_4Ag=}Z#o&MwW(i-ysbiKV7DOsqNu7qyJuCqGJpCA_%{6x=H5xni*4Fvw`-zG>#^(V6CBg*{ICrt3M=n zP}g7$Z^olN!P+NyRBL8KZI$RqWev4h@j4A@q;GlC1-qYAaQhyNhD3{fVN^f#3YUycLWKibS5Uc#Uz`eIw|fw zCfVfH86=#hbw>Aay2T`#rgc%|7L!Dp))gd$ZZXNEY283zor#I2bywt;PNwzHIVQn0 zEkco75n4|m3+<`lEwq&06ZQ(}R!=24trrNuGs&lEksyh5i%B?5>#egiPD(lQxTI$G7bSLroK!fDNW~!n52+#C`dT< zWl}m^G!Qq(YnXf~yRMf?;oL8wK8pd%Bs>7fpIBJ2ENih{MDIwzsmidsPMktvyuwJH545o}|w~YQ(^j`s#jL_O6 zp8R6bBb;JEWa%PW8;c&9bWX4J8>zI$GD)O0Obm36NhbM?0*RzpCdIUdNeZ1~5>9@j zK}sl=NhYmf5=rMkWN8Zdk5O)j9fR6vTEnD}&M`s9u^`zL%LGc9l+Za4S(;A%B%iJ`iKHP3AST+& zq=Z_{#0xCq=;xVi?`x+{zgfy&pIOS@##wBy#MxHFZ7K8{w?)#>*=RF->ugJ!jkavO zIU8+p^oZMnzjL;Q&OuutjhF+RDfG@9SWls9&nvQoiHUwP{yi6AMol1VTaFTnQ~nhE4Bd^ zmqc8`e!`H;e|0X&@v08 zOJ1ghd)c}_bo9H^h{N{NWm5Ptvqd@fMv;(>fz> zQ8is_E5dCN>Da%C96I@$*2;Z>;h|%cJ!01i?V+3KWqb67_PQ5u3P}rbFZ|_!W3>Hs z+jhd2)}o88<9f|ctC_kVaMfS#G$gefZNHh0@2lH3(&~BjdW$!oc&~aPE#IJpbngFZ z#j8$Se?l?-Gyb`e5wA8=e?oC2SZq%Z;wMb{9~o_g{ovINTKuFE_`uw_ls|)R@@Gdo ze@5KJr=8Qlcj}MHy$2@st||3qskt%#4S>{E{At8bbda%c#VRaHg+-~bC>0i^f;PRQ z1^crERN*UhHl!cjqqFa56TQk%@j8A0`5=wDZ^ZD+XzxZXHZZ{{XO4J)BZq$$-o$RX zgxNC(l~JpAwHInUyz$VnGA%R(+M-v!g2xq3+P1!{ot5}AwYJy(tG&v9Im_$|2zzs#$+$NC_IDK?#7lm#rANw=2r#1YZM|Fci6fXYWS-L-n8xu?S>D(gx)6| zFVi>75?IVB^&r+94}58(g@If>s5QpfD~hz*4fwtE?1J`=+Xyg24)gdc3tsl;@KkE9 z2X!vO^6f#ZinL+DthM`*B=2a)S)P*!=JA_Av-;}?<_Hhl!y+wS1o0cuky1};lfzzk z;>G>8rH8fWJw#i&dm6V2o;JTPwe>vOPl~lbv5ig?Yn|{%rsNr|sr+rIt;HGbdrz3J zaaC*Fip?eAy*9~S>TeXNSL%-#6>XpJ74AoZcw#N3z=dB8wa@XO_^aCBAcgpFIpW9v zVy*4eRV}NEFxaMltNrL9Hc-qREge6Wy?93(w=8k4Fh!e_ADDNV@LigDr#C*2q}$;X zZaI>E7e|Has1!#f>gXPh3|PO9q?h3+SRLURP)DLV!n5{{OdOea8kI&re2z*#mgH{# zGWnt7P8G*m57Zz~%;^CR%D=1im1Rk`KkjOI_!E(~w|~~EyWtPOZTU@mL+rA3zNft; zM0eY^-?bmAh!M889%$!0@axNYZpNOq0^q14ZsEm76aT4H{H<1A0Rrfto3WQ_GbFVc z?eOn{c1u~hBe{NVAO%!04yzi<6Ni6C+yd!^D#j4#TUW(c3^K#r*gBa1HUVyv4XJ-? zN!TJV%hK%&@z-+K6hg^PcjG+~N?SaPy}kHv8nAF~F#YafjDwC*p2i-H8JZ!fH(t~~ zhRv7auQr5tRjRNU;9d5tD41-X#%@g*O^m}oT)oiWh`%12+)~r_@4)5zqTvc%^TA(>R8&6yfH^} zV{hzRI;MP7`?T4mV}?aVT}sPdHl|)w)F){P0cUJ_D@hkE| z+M1d%N~S0$`K%OEJ?G0;POf)3cyS>)rh1OZBZD(uoLpg~y(Pz#k10`&cZLR4e`)g? zd-(~L@%wqI#gsn;EUlI{Q;%ttDR1za|NOZUYSZ;1$&ajDZ7|ZyWr`EZXNrRxii>CTXQVJ@@mMf+y&5ScGR56x2qk%pk?>lk zxFkj@BZHApipNWHzYMQozbWha0AKLI8Nvp(j9DAQe2U^c$;jBqCrjlMZ{ia(`fuhN ze93}3M*J4OIU`{!um6fO#+a3jgJjPX7s`<-E|F0>Cm)`XkeA!}*dHT4KVPH(j|YQq zow}X zb|Ev*I?wIkF`i4|HA%$LtY4Y`_`AF*mK{Ffl!rI~r#199Z{qeWo{Nj(46sf5mvM(T zJ>$7soT(R#KY9K+2fodFxu3}WB<`nh|1S5_xgX+val9{qeWs#|rm~H@!FbAhZiM-d z8|gfd^bgycype5b4iL|Q`m>GWet#Yp?!6p|e4s>b-(`E3?W|}%=zX5c#2I_QKG>$S z?H|M0e8~GVbEY0~V796MYnzaT*Ejf!PZr!@D`aJd|7#n^SxJA)4qk2JiR!yVe{kv( ziRL&)DpL?&g~!rPzY~+SyqbC|DlUr|6BqYI3}=JC!Nu+WjMUpval#}1fYbf|J}&$f z6_=P?Fe#=~I3Y8;dlnU!#LF_+{^#YhxStr}oIL04!OI^+#ieA5j_fvr?W`D1JcH~R z8nm8e)c+s%6Q6~M$rPRC<&M&}C&fG{5*3~H#ljdnQ^C^tqvHY`pS~d`ZVMwgNJ{ea zB{6-XALdK${YeZzU7WW2lbHMkqMH^;KDjAoOqryvyatB*F56jbL!CmQxYyW4@lZ(U z778V%4c{CylgMw*_iafqvCUwc$cSsfXvKGG%{(%Mw%l*Sckjq+6WPAW<4uW`PQ0Gy zGlIvuFxR{;@g2ru9(&{Eh^x($t`gx7sS+%VD^{W)j~Bb^cAxrC*BsZV(?GNMh__g!satm8=L8_%D$maLN)Hvx33>U5vYoj4nLR zD7}h$8emN5PApLv2976CI&!q;hC1z4P zllkI?a&S&%X{KV=1U@0R`*S;PA_w5PM7F7HGsbayFgqW^PCnrFcn;3}{$qLXAl}P; zVF<6|eiHZN*;fkp6M5g=;Cc3$!iOuJ#D^TfYuF|Z;K2-T?BapDqdCw(J{boHaex%I z32c*iJdwv!gAc;UV1$No;7ObfwsDg=@Nk}Eo6a_23eSDW{@BKS#A~MV99v-;&yD!+ zb{F^49Uh3>U^{C%2OIg{ZQ=~xFp7h}+6I|#*9z`)>Sx9CT=I7ZVv57PU66I#XS&E>piyzf^as`_*IWDfNSy(<`fdI1u>L~NVdOPR80Czb zhHBI@>KiSLc1Cw&s4>ErYRoo1F;*BGjjhIR0!W{x)3 zn48QCW~`Ohs%7=G23X6i@2z82lwH{t?auZjd$zsXzGmOE%Qy|3X3kh=hBMDObWgkI-J5Qd7whHoig@L{s-EUKUIVX(H^3X>jq@gZGreWr z8gHxjjd#%d(L3#(_ilRkyr*6kKc`>BFX>nH1;3%++;8Le^56GA@<;pA{keXczuQ0H zpYTun=ly&B6Q8u(pR^kt3WqWaIfTMO389KmQ?P|v!ka=1p_9;E7$6K4rU9TrLoc^X`!@K3a^w>rLUwt()ZFC>4J1edL%{3 zS>^n4QCXMc<$7{6xsBXQ9w-l$C(ASC#qu)w3;9cVzkF0aAzzVi$am#ua$HZD+83F%2;Kx^0Bg**!n^_sa#j?Do>S=nx6=(q}EU^wO&|lq_$H# zsUN7r)QReJ0_-z&tNM+4Q2kLot)5r^QvXr2YjN6ZT3M}zrfBin8(MR%t=3l?pe1P& zv^m-WZKbwW+pQhYe$jr@u4=cnzqJ=y4n414LNBN5x}!JNo9P|&uKN4>V11fCTTjtH z(>Lqe^nLmddib%P)u>{a#ydtIBiUGO93sU2F>;u?S>Nns4mTH@>&#Q;RWqAa)UvI{ z)=+Dr^_}&jmDMh6ziD@{lkL^^W&5FB-)ZAacRq2hIrp7t0!wk-M1PIH+27+|_8$g8krWD@U{g_OD|8VC3iE`O!bu@k z%qNx=>xwPK3F0hi@sSPtZnOQt2os#~RvN2)xnX2J(ntV#WDrZxQD&v%| zlhrdZW`z@Gc1ySFTfMB|)_tq8UEgkF54R`Vm+Y)gVaIeDI$N9@$#c)dln>7eh1$~5 z7Zd6WZG_>%WFcBK#5RQ3WN{&fwK(Wd4*I!NR&FZ~mZ!;!h=#-RG5N6^rDP!viYlcP zQ8AQyN@Jys(n0B^ysvzuj8>*93zenHO64o%JLL!Em~vLRr2MHoQVOeO)QYO2nyRlh zQ^Rf5?rNX^E9Il&vfx};s+ zR_u4}1@>}#vwecOEkxRA?sRd+kv0w_PdpW4g#lTi(DzJKjG%FrdT^E&3I~N#!rwwR zQ5Wlry|^4#i)rF%@w(Vjnj)n!N!OXAZk(-yOwZp;&lqK!a!R?XWK)Z(K1lQx1qbmz2O%2DtQgPcHYlktY693{dOd%6MiT)6pClMvkN*C z-irypFH{!a5F3ka#UbKSa>?h!+)nXF@v3-_ToNN?lk$Y6GE!x#iA_p*Q)(x5lKMyk zq>l*38PYuIGwBQIYiYOiqjX$4FI|zc%6a8Na(TImTvM(kH;`M&@5nvmegtY*o+{5K zr+hANkhjPO1LartDXqC?%;&;ZEuZb%T09 z{Zq}al^`p0(>~Bfk_nb;$F(wgONz{ReYKvZ-_>nnfU(qAZ(KHNn%&K5=2COL`Ga}Z zylHl`7FqkOx;ZHZuGiSx z=RFO36@1xu$?Lxb7wxW4=n0$Lr0|hKs*oBf z{5VFL%N3BWWF-$O%>7dJB0*hBtE0W8wbUl_CC+J=wW6e~_w+%8a!+f*9 zsDPr=*_q_bcD|qjo^k$h3c3~DX6`U|vb)ON>E3gTcxAj=M9CWOxcAJ9^0W9Aea(N< z@9OvThfvHW`k(nZb5aC@!j`tafCM z0pd^!(@OCx@tF8TjFMVPBc+MbDru)wOKwbsd0Xz6T;U=;R%dmRI$PbXUgIh+qcs3Z zjMmlwA1-LI~;19 zYQF5W=NtENrZS_Oo$s9=o!^{4oCnNp3AcvpyPe%h?ritC`;4NWqowz{XL|`=e{Zyx z;(bkZKj+=@{_-;UxvA@x-`MZ$Px5C|%db(z`TiNSQEbWx4TNTV`!&KQ;R5M8uUJd$ z$+uo6elH$N&UG=SXn3NWEU%WomWvb8W0e`oJmrv*Uo8pHYNxItmM^RMv?1C&Emb>0 z1$(T;>FxAkdKM$jc+DtlR5m1|f$^3x&e&`eG8Hqy>`MkqHdD>N%_7!kR;u-_wFlJm zvvtY3V?DI0*u(5m#Pdb_4X2xvcIj}*~b93;*X*AwBV#Ji#?wUvIA z9!M{w%yJI7pj=L_AuE)kZSoHJp3H!G5{Tfo2{n!5U_b;+vkaV(q^66#FxK4<#%! z3A(@Yms7`G?bh`sc`LjP-WKn=XZRifY%bFU%nF5~LcjBW1)&b`>LX!^kS078%2HB~ zi@J0|Dk#gcC)Xt_?UjE5+him2bX2-gv#u()mC|Z$uyAv=tvXd*1@gVBK2a-bQ?<{v z{e0YLJr`i3o<2#xu0LSX>T|93H0BeWMNO59bf6g?$$V`!pP224(Q(#HYRw(1yxrXX ziV}0z&goQlbSJ@C=xihJm~I>5vadV99pR2~rxBm?-NkMi0QIgL^74AVx6<1~Xg>9d zb8Qaym-!($`0`wcnT6(jt=3{PrRSiSLnW{6oQ$AC2 zsB6_bY7woZ_73TDzP3-RtiPdm(MRc@>R;=>=tYcpVaeKJ^+~IB*@U$0De%H2Wc0kI6wS{6;Q9)+--*o}HVOdKUn zA?BBe%f(bNUA#a!EJ7V@CJmEDOPh%Q3sPR$pu!E17l4wF$xpyTqS99Btjt!z+mzkP zJ*5axr>)wRmg+;WZi>2vM(QW^gnC82sm5xrYpUjIO~AK3v=L;!X`tH;+E#4`6Z0|y z*3x@Y+m`9y>&NscvVurSm_(1X+qh=jGyWg_Q22iuqV9GdkYAF$!v2ZSI}?Em^__`M zvUAEQ>{jB`uL3UYcUN&r_j{}SE&l%C%n4DUZETj2+mF+L{3Xa@6EP8#^SO9Vye9q) zFenW+Y$tV;`bs0Dxm;1_C4owxB=44Q$>E1`oKlEOs*5rm*!Nh81MCf?t(>hcQMai- zlkfjhW3&RmpMKgP*=4A6@a(_Xq ztR+~ht*@x(C#}oYM6Q>Wq_~5@Prm|gCWW~Edk8~>aiFx-LVdY~+=W>>C0~;7GelrIYF3DL#YGy z#(-6R5>JTPq!!FyH_-hhI>Coh70%LJd8xcoJ}p;PYAWy0$*qAU_)htSWL}H2)m!aP zM%Z|mxh}~2A1+e)edjC8| zc|!o)G$Unp0Nx}SAJg%#qR#Cy_8aNOIpdOX-*{?-%v@$Ev#KeXwamB7)@CQOr}>`w zp*fMfI+rHxGjlVD_?&sk{Kw2?<+qAk)h(5Ft*zDH8e)wITa!t;$<``sos||Tl}7=7 zS1BX8>|!APs*w|#V7FophuC3zs{N^b3IK7(er6YON;>69(6Zw?^??&zoMFy*XNt2H zIC0833(UUb{O!DOV%^-Nu$r#z)^gu)o476AL{j(=cb5CH`+5pRcbB`*{oXy|rqdFR z^JaNVyp5o&2VOS6Em?eFaGCXw3Jpr@@JCGj=&4G9(w;;GGC@&{rBL zC4t;FNjs!;=_Kg>rt}oXAXd&T7m+K=jpT_GWW{Nd{Lb~5Yiadv#4OIt?-pP9GiGXZ z_zkOt)!yo6^`?+a=X(9Z+F~8Bj#{UzbJm~MGb@{2kjW@zcV!aZvj-C2BkghUH#6Z4UYMRyVI(nc1r4Cb)0A-QE7~hweDQ{z6j6M)y1Su=~4v8`z)6 zEA5G1ZLb9-XD}C3GSGNCSM;y2KL5b_0d&{Pfe$AA$(@izfHj=sc+ zsZpV}(cz%*+-upP?@&sh-!b==aF&QARE!KMY`1Dw+xZ*Uji{3^(SI2i6&1 z!}|Sh{6T$tM&d1ImNsRxHq2jFVAXK0{YB=dFn}9DSG&z)<{9&%`NE8`a$4mr2|loy z)zNwv%r)7X9p>u)(%MZWJZJr3Jtf@o+7)R0YH`)SL%0p21)NIPp9-2eZl5Ns9@$Y& ze&;o=eH-GioAVw}dZx3?+2o`-y8tl%x%yu?x!iJYRad0hu1`F5b%(m6X{qMA%iJ%i zrH9=!a6sXQc)@deh3K%Vc}66pdU@}A!@TL&a2&r%7 zU2=F|q~QKdbDv!)N#MzfueD>%a-B#*-yKA;>$Y1y=LFaws>kb)FY(Nn_O z3T?gi6;$C7?UHswyQ^i=^XWx&S+A`(q~YidK{$-IW4u0BUj)edT;HpofPcBJXEF*J z#R<+jMiZkokgKmT7SJ`H@Z4Z*F?JXSj3cmy=Zy!(3nPn}(=2S3HLIJBSIhD4r=`=;>EZNqh7!%=X^fXTE1h*f@?AiPOU@HoPPy6e)Abai`^BZs&%+FHj5?=7#T_YRrzBX7Jn zjaF=}mr5sn9AF;4MT_|m@-x3*g@kGNJ}I*)^{o^2t$&0np9on#&tK|)PMzE8e?yHs z?_c%r1W}$I71|Ps@*F}TqPzl~P8ay9!L;2AgjK=@VXN>RS@aU9sv^XL3x73G92;T8 z7ehVl77vBRKgGvleyNmHk*Ic2LYmXJCQ7{`sdI_6LRwE<`xYkr7r5{TQcgLaTwE?A zSEn;H=?oJ{q#fk0a!>gKc@()cP2MU00M7qaJ||y>wR%io=TRy}IPiew>8A9C`5cV0 zk_>9vse}(IKSTIkj5L&gL4)Uj_^Y6*s;#ylqC2UB)sIN8v($M+b(;D^L}EEddVQ`& zYq44}tttSkx%Rf!UF%Ime+d6QS(~dZC8)P)-)l#;>)IXd5zKc!y}VvouciwCuYURm z`UrijK3Sg=)|Wtvt=GS#t=m0#`O?F^#2oTCB8>Ofn!aN0UuoxaX+f_Y-3zg$LtxzX9~>;#@2b$)Sv zhxWKk*)JD-H7GkWam{VKVL)s{O#HI)VGQAIgXd zr2x-DLO4z+AQXvY=sH4Ep|#K+;`lun*Kxv3VUe&5oVG>SCVWdfdP(?`7VEi?9p=B3 z_&Nl99kCG+-JX`K8`RQV$mI>J@Yh7*#BM^Xt;pFStP*iEKAIIdAu&__yZK^6J3Az~_ z><3DiIGzoEzgF3!oKtQpe<}Yev1&mYT8Z!tLU*mYM?I?k4kCz#*0D*vO(ACcY6EFz zCulRY@M=Z>gj>w?=!iZf^a@bxS6JzmXm_-C*|+Vcunhszu+7;)BbEg* zPYQdjyrte}-chfP-@tDHq@M4uq9^*x58aIl4P%O8g;D^s{s6KoLU(w|c&Rs>^mABS z6NL1RVri=p8Xjx;^^){8g^h|ve=`4BB*|w+PMVM2)(mUE^|uwW9q7k%c42Tsedxzg z&U2@_8y@X$a*x4g`~%B+z&qlV1-(ZH-D#+wuv@q%w980Bq zUm35YD23G4fUu9$<(%MrbcemPv0VFs@^Ovx*_@)aPX7+ZyAC{IJDAZ_vjt7*mvqE` zSP!f`cJZ*?+U|+wGm{G`i}RM-%YBclAjSR6Jp_Ri9f~1JPYTzBN#YeTAN9UH-1TXq zB~Gp;OL9K7uG)l-?`!=zlakA*2Q)hgGgOLptScZaC|~8R%2qX6am6w$$LauCH!V`I z9$U}hjKT%%qExI#h-UBG6YLb^m7Vq>nyl-{XHV^rlf}vD{T+#QOr*ylep)0B*wAF^xe9P?wi0|tTb{Fx5zT&bz;GT6axz)X9 zT*hHZ~6s9UU6SS;#Gv6dX9+E?k%& z3!lR278MmS9!UPC*n&&2r#M*rh~hF?oDXJNDXs;ae+N829Jv(#5O2YUyb!ZWxujyS zB9)~YC?&O|aKp$+?E*nEPzocK%$L4HB)KSEqlL;W3((+w1xH`D9$A^~B6exShGcs?%~*EWznaKTAJTrs&|$gY;g)V& zx4j!qB=PoSj{2iUJs{l{gwgBeec;U|$yOzaPWBi07lV#ghz>oY))%76w?qkTFC;=& zj26}jKMTdgY6xrzsNUV7Ehf!4=mM6)cTR8charp8cIiAqnZ_DE%lGDrE8erSvGEoA*M zPW~TCG%RpSx}ii!?Dv77AHjaC!w<19LgQUiZ%4{?-iRNf0)$>oC_NKbL>;nW_)X@b zjn+Zy48PY0{W?IUVPD=a3hMh_ z^N{%?@bwfj+69#H0K`55#=bx!&(D?b5-Z)f_D5RdtvQHntF4X56Z@?2G3zwB=#KRd z$smrPDT88J$L>PwHJjdkt^Fk`RXUB=6Z>BfYt~3MC`|iR)~N)UERhi$;A;c&K>%L| z0$@kt=9q+^V-uO-5X|{Gw4Fbl$4Mx0KgpZn z&G8mM;w-18tOw3V)sdJ+L7iJ@z7;&Qm`WA00~K3Wyf+3B`n}f<#$rBXp%S4HYKh30Vr_-Ac_k zNNTz&JQ7|YI^`CNiKWFVVolJmE!GyB(by%5y+Of4#feB!tHZ#BgW@mZd3wA1=y3l6 z7;;K^rNUAPsT`o8CYFL`$OVaXc>^I7CPF710t^3!a{WMhCPha$o-$lk)lqkBkVAiY z2>k9OdAj@wUEXQ@AU9FAGbuThe3Y%qu;04kQaKxgAd-~u1Z9@8K=}kK$Q~}G`-r(& z>FkQ32vtMW_0@W?p9yLkb$~hr6ugK^w;CM$Gt6*+e+!e-szNe4I6#_et-!&FTt}m| zMOq5}kIh^&2Vuz{X<5L(9!g;sIEFR&JkkNVAtRq5gyCtX3SDwyagv zs!49Nt=cqh0nwO*{2EvZHb;o)n_z)Vc1~Kgz*P{gZmYJB^`Z&7Pg}ba=yr-d3ubFM z7LqjkXY|<^Cx=tiDHn-$&#CLY>9le>5$%16_F+yKe7n|3g<9T&n0E@JNu2w->rwf- z5$A)TuV!F5Ng=Gy)0W+HD|&)w5yV50GpBlU!`?Pzqa(y-X6S{Yei{EQh=neGZ(6Pe zpw|?CC1#ZMek!W=ogfV-M2C73gn6(hl@VSSWa?pGSoBfYkq)JS{^J$RHg*1d!I0Ot^z4B<7ZMTH*GDRyXqVKxw=*Rr*+3Ov|+=5?}$1_&_QG z&`7`@&`Itt52D4Ih~a1p_3$8Oqr37`0xJicK?9`;j6qA3gu&QK#$zj)3uCYkLH&es zhVJSi7NZz7JJR~=#8Y#ag6`-o$?CE&2z4_SlB?=n)Vq=t$QqhPflNSiZ>x2oNPeh| z)21N01csuov~RVa;s0-ta{twepaL{Skm#!SqE3#{r|NU`4N%$p^`rW)q}j)Mb_lG} zklB@uYKXOUjYcp9?XjKAG*XRikl8;P;p4av?ht4%jOuV$Ce2ezvm>sAxhVLnkrK`$ zB|IRJmbNMZqg+IVW+1qUfXaDLR~r%Dc1K9-dxTXnvS%fXDh5z99xb2&QI&wS69!kU zLXz7KiS?KL+|EQfE(tFxIBmm(Qa5KXVKkXQ+5#~C-bqIae@?%j+cij+P2F~I*5e~A z=n7_tu>#YFjTHlQ`PTK0e^j))}H zLGM9tULRLUKiK)H2*8W%mG*jj6VY}I!Q={Bc8G{84uY2>)%q>yrVdVb=Y6X62xkn{ zIv`LtI^VoP@_!(nJa95W#utWeszEkuP7wA$IQfve9j0s}eFu((tw8#Kar)7{05AWy zn}bL!hC{O&?0hY1bVsi*u{aJncscU_cf{gvMB=}A8jAbn=+$fcjflg6{wRMMxo#z< zyB(C=-vbGye{_hSai-Yjra7-pv8{y_s+rJE=o&^x8H`9gQJ6*iEr3T|4%7547N1{* z4A}Z;s_tuaZ3fLjbJ+U#AW~#RuN@zh^LJ0`j#C(Uwu#cHyt_3*mG=HW+z7=6Rb6B3$04=BkT+k?5#Km;(>u4sf z(WgGQf?`?Cwn2uC?S`WuH0Ro%&?@e*kJ!J_U);2VbQWlF&CueyLi~(#7Eu<1e0Gf1 z@Df^Fj9Uz@N2W1s=yo8O-gk#5|Cy7^DM(iHAau4OZU5w*^)6%X3Hh;@G0XZjd88RCeWKC;?f+0DP{@m%{G{upUF#iU~aNf z7Ar!q*C#ICMqQgA&JkCJ#VwFFr?AmQO9iCzm^13aLB3SX#}N|Cr48_pN6^mykp7Wk z35ZH`-mP$s4Uxyty)2^`9s*-Mk#o=P?*6 z1Jwx#>;XA`Sp5}?K{(*W^JtZ{#t{eYQ0-ItjXl~=+V9#eM4A|o(|>}X>3@UZRSf(X zp$qTm&+uO5Ckkpu$nZqkh*8G02rskF$S`ggkEn0?5Xh@R57vPIPco;V(tk=C+R?>4 zV*Z9idy^7Z72M=o&5>vNS|5>lrdqqKAFN-j^O!LIwQ}0U?Q-_((AvH2!4$PQkbvtE z{`S%$gq-Zq*`;U*Jf{h++m6m4YTC!ns(|)Oev~_N{qRJ<`ASH;{oXIY@Y}G?!5kO! z%Ttm(X1P7H9Mqy2q=NNW9QHxkK?BW-4o!ocdZUB`Y!6!uH)C#b-rPaoB+XhN+J|JnGwjDa* z2rwzIE8e0zeTEe(R*wto#q_dzCA~V0sRg~)Tko%b2x^+BCzDQ2l1gqO`emYu|cbfyQ5QwV@rP*%!dgQ$Rodvtn*^*oV$ss zTVV3yfTmj3oA{K%U9EnB>JJ#7f$0B9^=+R6u{L~uPyFw_hkN#O5g_)ZUq z;bW-8k0CHiOCsRAGcaeiv;`LUPbo0t`VmDq3BorObIut;=pop;EFh-2(lugE-Ky+W zt|$+bfZnZv<`z#`X{xqTJ7W0wKplnhHdkGU^0txG@;#6`;GCjxWS1nj)YSB_<`E|C zVSoEz<{1t5n}SHO8H@f=yv-R9mVd%O<$}O?4WUBPeUNoGqGXsp0p)FN#GHRv&(QyX zzIYO`a90QGG(?$bg-`!oXyCc{(zas|Ic}UG<=i#?Ch6n{{g`NOEzI!Sz@H@AwnbE* zb*v8APW3r!-p3=G1A5XxXKR8}wm0=>m^B7%cp>3b*o3Q%r1nFFeAn&JcG~7gCP)#n6*y80kX#CouuJuEQ2-cVEi!gM7u6CcsFOO0XKA{3@OZuTijKf0qabzXIX5||^ z;fHDbe*3?YT3BZx!ANy12>X+WI=lsG;s;ifT*2=6NX?7Ot`1FK2b8pc8y$m@^JAQ+ zK}OrHogqMP0J;MUei>-~H}vKhA{P^s=k$Mccmyh6Q1xbE#oi3+IcCI~xgib8Q}HB3 z-`eJzVY3V7q@iZmoMg^0=hNP8LJhkE_z8>&`H*_cS~Up6x@4Z44PNaCWzd1}8-*M;leGy;5qZA=bO%&f4ghyRk_8l*2R+u(2?vP# zJ<8$;__5hA245lW2HxkhFz4mTQ@R@;;mq5*9gzV>xl<6s79;Ae#c{bEjUvX&PRPAX zQvngy2vIi?u66+AR}$1$um~z3yM7?-PI*^p_!L^b`dEkC`W^kAVgEfc*$jd$ptiR7 zUjw5Ky>yK4dWp3QKxz`aFz?FP9uoB}%qsJ#HreG_e7dZf*}Dm)hQ0kRt- zeT{>2pUXOw&v7aQjQdl3hk+TUG46y;tV~(L>Vs4%yiGbw3B5;%RRvLdgx3f1$OxaX zEn-F3Cx0&=L0vfkn2L#5U^FEjW+AAX0iUo31I$SX-&}yHGHMlaUprizeE`(!$#^@6 zp%-d4YGU1pVLy>X*Attw3m5?ob#Fbo_= zSq&K1Xg4SB!y3>CjvF7w$lIL2dLQyN@WBL*fo*hezqyYf{Y!WiJPCfaKGMuPtcjY2 zOELwYz$QAjYxHc-@Y`1>oa(|)wZ;}O28wk4tF(0y=lyN}5q5x=bU}!otq5?us?Z3j zpri0Et=bGBJP$m+8btmBcsxV6O#ZrsY4st5)iWW7SOMEhBbFv~#P_xUJMS7`+Ba|o z$LZIuh`E5~MM+*lged4Py^rB#G=`TAq_3Sws1Jy$SgZlBVRLUHw+5W|fTv2vB)Jw) z_8rSuGQ#i!4?*eA$h_urWO*M(NA(QCj=BO({@n5UED7L2wz8KtACE%`JQlV`iLVJ_Mf)ut!`wkj3 zd<5FycXC)ZJwI!rN>O4Plf?oLW*__jqcEy3r_Anv8GS@fi)Hm?B|w;Ac*YwzG2cOJ z9Z6re3W;wU#MLQ;fy={Cb1@)*9PiPq6++m{_KvB`tv# z-H1GRl;V1iESJqG0Wn$w8etOQw-C?DCTA}J_*(>i<;Ol=-IXG~%S5-tyLiXPk<%6; z@drygkKnlc6`4N+8`ibt(Ty?}4>uw9x{}ON@i}ip8Qcwbb=Lcn*vsY@f~2n$DWP>~ z7CQSqu%`^Acz%lYYA2?Y)BYd+pZ?>3w#q=jjWmT>5cf-v)2g!~%!NJZ1a&YHkL@%J zeoMh^U&5HC3%`TiqC}d*F#gL5`1}-@`bLqi;XT-^+2W_-IuhG48ivc_ZSfH#eGJ94 zxKx4GK|w}rCUwBD@{u$yqUPvI>ky%>F|71>wKjMXW%hHp)vwjP>LF|^zhdWptmZ%klTp6{x;~J-dSLAyj%YoT zg<2_LtbrTh?00C#w6kbi|ImGA*9!m$%jhC$@-4kRu7E+9vF7MYQM9({hl$qzbf4uQ zzbq)$mNX0Ru}*jzGS>14rGErKc;EP!RemK&lK~IW01H;9h)E?_gE7xsU@id_hG|F1 znHkjOyJj>sxg^~~JhViD)#Vi}kz%c(8t)-pp0jSVz%IrvL{F+yjT_nRBei%MQMwXy z%Fk&1x3F2oIEARgH6Xs4P=&ie+K+Okkt$bGfDb#rI=3Q;vIMGV!?4>L6UtzBB2l`I z-jSjs=FlHqTYl7t7LOJa#41ztKLkO;ix7sHhjqnrCgmA#ym%;$-p=q~yMO{s$ zwl1MxJ%XTmiH`MOF(;u{j?fDryAZU-!Ckm4RvU2~hS0pt|3 zuGt)NzAtUWq*pBJ|2tl$(`c?_3Bq1%dKYOQo>_(LvY@xRc4#YPGRa+|#8Wo(3B1xGv-R$J1}{|=4}Z;7l6MugT9Wi0P7rF`3tq6R)K!g#1+>O{54b?6^V_lDCbAP@mE<1o(+>j zY3iTHDvCCGM>0xS|Cm(>;f<_tI;fw<-FY`650<0=>J-41MkmVOcyyaZsD#^byrn~H z1t}#bkx`z=sEy;LJ&`fU90&IL4n6z?&E*yF{X;TIcB>SAi5jq5%}~I{BHesK-P?fC zZI5-B%J&30wu1G7i-@jNmb~naAo^cfXLV1= z9!9q*CYFUe)9E8eVy2l#54j3g+m;A(ems(b0+Bi^0KW{&j9a`S%tlfB=0KLM0g-Ki zLEndm<^+qco<E^83HD=Y#Mbd8*z6Gfz?s0z5sp}J^6FJ_XCv@?o7Q4!ZVN-cd#PrC)UYaWlivd z$nRq0!zCZI2%>2~l=a4Z9ALDGV6@F3w39Rm_snn>tFTqZ(jp>bAE>g~Q1IVEe%vH; z<$WbCx^_KC_`n_C17d6_JnRH$kFC%i-$RU@#)x?X!RHCsEPq6{u1Y#<=Df`cnLbE8 z(+SkTD<8E!^b{j6-cfG87?WdgyJ z$U3N5u^)(@bf5*^aTAKy)!cN7=1b@{R^Cs8JKkc zA`0@d4E*I<;Na%~S|KlY$ACD*7)`SJm_oJ^8_##fJ{XDLAjO^-QD$BU(^5o2ux6@r zgcF--E<}g9Vuqi9&#SRu{0$h0nN+SX`5A$OsD8gi`1b-Nr^vao!Dn@sl?Fra(fpD-l^ ld{z#xbZ(l!`reyfcj&CS-ie9(D`rmHUonf_bhZ%te*ohOkdgoZ diff --git a/libmupen64plus/mupen64plus-core/src/api/frontend.c b/libmupen64plus/mupen64plus-core/src/api/frontend.c index b3fefab5e4..9a59ee1790 100644 --- a/libmupen64plus/mupen64plus-core/src/api/frontend.c +++ b/libmupen64plus/mupen64plus-core/src/api/frontend.c @@ -266,6 +266,9 @@ EXPORT m64p_error CALL CoreDoCommand(m64p_command Command, int ParamInt, void *P return M64ERR_SUCCESS; case M64CMD_SET_FRAME_CALLBACK: g_FrameCallback = (m64p_frame_callback) ParamPtr; + return M64ERR_SUCCESS; + case M64CMD_SET_VI_CALLBACK: + g_VICallback = (m64p_vi_callback) ParamPtr; return M64ERR_SUCCESS; case M64CMD_TAKE_NEXT_SCREENSHOT: if (!g_EmulatorRunning) diff --git a/libmupen64plus/mupen64plus-core/src/api/m64p_types.h b/libmupen64plus/mupen64plus-core/src/api/m64p_types.h index 07fe3b83b7..bb08162c44 100644 --- a/libmupen64plus/mupen64plus-core/src/api/m64p_types.h +++ b/libmupen64plus/mupen64plus-core/src/api/m64p_types.h @@ -151,7 +151,8 @@ typedef enum { M64CMD_CORE_STATE_SET, M64CMD_READ_SCREEN, M64CMD_RESET, - M64CMD_ADVANCE_FRAME + M64CMD_ADVANCE_FRAME, + M64CMD_SET_VI_CALLBACK } m64p_command; typedef struct { diff --git a/libmupen64plus/mupen64plus-core/src/main/main.c b/libmupen64plus/mupen64plus-core/src/main/main.c index 215519a333..449563ed13 100644 --- a/libmupen64plus/mupen64plus-core/src/main/main.c +++ b/libmupen64plus/mupen64plus-core/src/main/main.c @@ -73,6 +73,7 @@ m64p_handle g_CoreConfig = NULL; m64p_frame_callback g_FrameCallback = NULL; +m64p_vi_callback g_VICallback = NULL; int g_MemHasBeenBSwapped = 0; // store byte-swapped flag so we don't swap twice when re-playing game int g_EmulatorRunning = 0; // need separate boolean to tell if emulator is running, since --nogui doesn't use a thread @@ -652,12 +653,6 @@ void new_frame(void) /* advance the current frame */ l_CurrentFrame++; - - if (l_FrameAdvance) { - rompause = 1; - l_FrameAdvance = 0; - StateChanged(M64CORE_EMU_STATE, M64EMU_PAUSED); - } } void new_vi(void) @@ -709,6 +704,14 @@ void new_vi(void) LastFPSTime = CurrentFPSTime ; end_section(IDLE_SECTION); + if (g_VICallback != NULL) + (*g_VICallback)(); + + if (l_FrameAdvance) { + rompause = 1; + l_FrameAdvance = 0; + StateChanged(M64CORE_EMU_STATE, M64EMU_PAUSED); + } } /********************************************************************************************************* diff --git a/libmupen64plus/mupen64plus-core/src/main/main.h b/libmupen64plus/mupen64plus-core/src/main/main.h index d034c909e4..295c8e5fc4 100644 --- a/libmupen64plus/mupen64plus-core/src/main/main.h +++ b/libmupen64plus/mupen64plus-core/src/main/main.h @@ -32,6 +32,7 @@ extern int g_MemHasBeenBSwapped; extern int g_EmulatorRunning; extern m64p_frame_callback g_FrameCallback; +extern m64p_vi_callback g_VICallback; const char* get_savestatepath(void); const char* get_savesrampath(void);