From d73ba586d0dd9c54814ddcf703648371512c8f15 Mon Sep 17 00:00:00 2001 From: David Wendt Date: Thu, 19 Aug 2021 19:35:23 -0400 Subject: [PATCH] avm2: Impl `SoundChannel.stop()` --- .../avm2/globals/flash/media/soundchannel.rs | 16 ++++++++++++++++ tests/tests/regression_tests.rs | 1 + .../tests/swfs/avm2/soundchannel_stop/noise.mp3 | Bin 0 -> 4180 bytes .../swfs/avm2/soundchannel_stop/output.txt | 8 ++++++++ .../swfs/avm2/soundchannel_stop/silence.mp3 | Bin 0 -> 4180 bytes .../tests/swfs/avm2/soundchannel_stop/test.fla | Bin 0 -> 33234 bytes .../tests/swfs/avm2/soundchannel_stop/test.swf | Bin 0 -> 8596 bytes 7 files changed, 25 insertions(+) create mode 100644 tests/tests/swfs/avm2/soundchannel_stop/noise.mp3 create mode 100644 tests/tests/swfs/avm2/soundchannel_stop/output.txt create mode 100644 tests/tests/swfs/avm2/soundchannel_stop/silence.mp3 create mode 100644 tests/tests/swfs/avm2/soundchannel_stop/test.fla create mode 100644 tests/tests/swfs/avm2/soundchannel_stop/test.swf diff --git a/core/src/avm2/globals/flash/media/soundchannel.rs b/core/src/avm2/globals/flash/media/soundchannel.rs index 2557e144d..848bba898 100644 --- a/core/src/avm2/globals/flash/media/soundchannel.rs +++ b/core/src/avm2/globals/flash/media/soundchannel.rs @@ -98,6 +98,19 @@ pub fn set_sound_transform<'gc>( Ok(Value::Undefined) } +/// Impl `SoundChannel.stop` +pub fn stop<'gc>( + activation: &mut Activation<'_, 'gc, '_>, + this: Option>, + _args: &[Value<'gc>], +) -> Result, Error> { + if let Some(instance) = this.and_then(|this| this.as_sound_instance()) { + activation.context.stop_sound(instance); + } + + Ok(Value::Undefined) +} + /// Construct `SoundChannel`'s class. pub fn create_class<'gc>(mc: MutationContext<'gc, '_>) -> GcCell<'gc, Class<'gc>> { let class = Class::new( @@ -129,5 +142,8 @@ pub fn create_class<'gc>(mc: MutationContext<'gc, '_>) -> GcCell<'gc, Class<'gc> ]; write.define_public_builtin_instance_properties(mc, PUBLIC_INSTANCE_PROPERTIES); + const PUBLIC_INSTANCE_METHODS: &[(&str, NativeMethodImpl)] = &[("stop", stop)]; + write.define_public_builtin_instance_methods(mc, PUBLIC_INSTANCE_METHODS); + class } diff --git a/tests/tests/regression_tests.rs b/tests/tests/regression_tests.rs index ce4bc8e22..9d986a1ec 100644 --- a/tests/tests/regression_tests.rs +++ b/tests/tests/regression_tests.rs @@ -661,6 +661,7 @@ swf_tests! { (as3_sound_play, "avm2/sound_play", 1), #[ignore] (as3_soundchannel_position, "avm2/soundchannel_position", 75), (as3_soundchannel_soundtransform, "avm2/soundchannel_soundtransform", 49), + (as3_soundchannel_stop, "avm2/soundchannel_stop", 4), } // TODO: These tests have some inaccuracies currently, so we use approx_eq to test that numeric values are close enough. diff --git a/tests/tests/swfs/avm2/soundchannel_stop/noise.mp3 b/tests/tests/swfs/avm2/soundchannel_stop/noise.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..862f41452ee420c77b6e151132e8235a042ba864 GIT binary patch literal 4180 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 I&M!;;2eVKzJpcdz literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/soundchannel_stop/output.txt b/tests/tests/swfs/avm2/soundchannel_stop/output.txt new file mode 100644 index 000000000..0aabfc10a --- /dev/null +++ b/tests/tests/swfs/avm2/soundchannel_stop/output.txt @@ -0,0 +1,8 @@ +///var silence = new Silence(); +///var silence_channel = silence.play(); +///silence_channel.stop() +undefined +///var noise = new Noise(); +///var noise_channel = noise.play(0, 1); +///noise_channel.stop(); +undefined diff --git a/tests/tests/swfs/avm2/soundchannel_stop/silence.mp3 b/tests/tests/swfs/avm2/soundchannel_stop/silence.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..689c71398aa490ca0a12ba240fa35ee801a48ec0 GIT binary patch literal 4180 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 BX<+~W literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/soundchannel_stop/test.fla b/tests/tests/swfs/avm2/soundchannel_stop/test.fla new file mode 100644 index 0000000000000000000000000000000000000000..8c7f8bd68bbd2e2902876801dd1eb14fb6abeec6 GIT binary patch literal 33234 zcmeFacUY6l+Abc7iejOusHmW#h@ybK(>qA-C4o@VARUsB-Wwz#A%za1cNFYWM8)2h zin=Vz-WztwN!HqHuf4yszq8NpyUzaScQIT;@+Q;nXXbro-pT#U6CP}0Y6Ae60RROp zG2shmfK8?X002YOe+0m0Vz6rpvf$y7yWPM>XVm&LuBUaTa19;iBH;nE69T4|6te4n;#;z-iHqz9nQ_rnwBt3Z8q$f+uYJ3 zKH`uB@662G|M7a&JC|j^94T&D*iV|(g|nOXe0Y^S;`9YMrwOUxMc3V07AD-ckNxpo zpxd`^PtQF|KfQK_pV@}-E!!&C!P2*6^&CxO%|P$9(IqaEw?|^!%wp1SuX%9! z{07%)afF#Wcb@VYcAveo0eFC?vm!XeJkQwpHo0K-V+Kr7r8R%_8)_=+M03dg$^Hpv z$Gjf#i*=v4YjBZy27TG2xchzbNyV2! z#aZ9izxf59>*t5h-6PMg0#FBkGad>!-d@RGGJA!kUBDVJWU%G!>z&~F7DDqc1ufBi zeFXbM_ms5-L7UGJmYe{Mk=yr3x-aId3v^Ec@BLdcHAH|A}9OcX zzp0CHN3CF|Kxc&y4ts51Yw6~E)p^#SmvH-|cQ!L6s3RZW0f9D|)6*td*!V6vjaJM) z;b+(TXyw|Efsx;=EtB22goZ$uGsgqqz(thp>(#~FzLW4XS@5K-C3hX{g$GURGS|#W zI@w-pw*T?T#lffMrJEhzUj&KDnz^LI;T6*Nz+}@G&%bO7coJE+PT}nOIB@c>MzuEE zv>)w9Uq)}-OLmjaA6cAkD)|wuRc6k4u7a{L9gli*tmmVfPUrOT^JXn%h!;mD4Df42 z+eXT_g#|bKba&6*@L2flw%}2MS9_S38e)BgvuhXlV@)F>405db+0ECh9%I4qm=^(? zj`SAz5O3iYoNs;2etK|a+`^M5CDU?tEt%!hp!8o^bu#mOE3nT3b|a{_V0HYq9WJxy z7hikQS?@o4RgSXX+MS)f(36yvaMow~j?eQ>E(n{Gd3!gzYheh^$Ml28?QgbL6vx-+ zqfMm*@5eh|WSTTWPJ`C0`-xfJo08%7?bQd6>-hTdHq0WyrW>vzSY_SgHA@yRKQjXg zeRA&CZHGVS=0DlOzEg3hBCM(NzO1pCH&}b*=_Apzfx^TOXOv9oJ6TN4LwD!dYR>@#!ktZD5%n@F=)^+xU+>hzsL+JKcS!e@ML=xcES?+H1`Dn8S3 zdDN+%nAS9n|AYS2`|y+XRL9D5amPNyj+SYN`yy~D?>SHFS0^%cD>g0t?WS7-J^Hr; z87CGj^gimIGgt6E=HaFHmoB2HMVEZnM8%)Z@`9;TbIp3LZ7)6kKHjVL!y!c8+}^g) z_ytFZ6?MalN_DtvZ%)%%eqJ0)&N}c*q6P2k^PYs|qAG4*d2Y^)so%ZI_AbyI+`D%D z0=!q0@FN$0sODVFl?58Cm$jd6UCwjOjvAL+FBpqPv-0M<99nlBfEZ(bvb*rwr!W3O zVL?#_ereQYYqh!}X6O1HCtq_z?wm)@)0}nOA+6%6x5TD__mz1D<@8rham&BE^#S4M z``ZSPo+tv$ zH%sNO{_1S0c@*Vo?ml(eW2eNa9@~S$rtdpHdtBa~ za=m;WmxEupbN!`xqnttYJuhFR-IgggIcKGqnkACgURQRcTg3UF^%PWZOP?7zDzF6i z4R1dGHSnnV#Ve<`caC&5-kS@5bFxNlfg&wG?N0J8S1 zPH_C>SFw9Ym*7X^Qv92?SwAmKYuUD{8HT&t*x~kk=m$Rg;j!oPgQbzzzg8X`e?})J zbsUeAY(44xF0JM4EI009(+9*wJD1AL0zqF$$4VJ5uwf?s@BCAKjQu#ce10}3XWq~z zR<_yFm$(_1+NI{?{!QdheZq%HoweXgF_YTykYK@(#{xIVQRO ze)d#nkFFJP!i@0C)+d%Zi1?E}vAQ>!ePngd5q)O4SyonFbOM0Pr*9xSPfzVM>ziIb z?X|MpMuGB(nzP7*6kA2T4t=d&8o=3IMwRX?K!^~UEljou=?RE zZ%bnP%KHbB%a+*`cte&mR##2apohPhwqxwfpSibATB0qFW~G{EK3u@Eb-es|nwQJR z*Gys5slbQ4H;kY!7d8Z$QD(6i+s#*QreNVpYHqzFy#Q{|-vu$&ywDf;{ zkSzbwGeYZd=U@t8ISZPNBhhm&)LP8eoQ4MuT+Ud!)%dOPaDb>0TXEtvbwT%N+QpB; zZ-}#pN6;l9_Ll~C_kNarTCk$}{JiVEz8w5~HyNsK=K43xv5j?4r@Fj7F1+#0@=6SO z7L>o+BJHuKLu33AMsr@x3g8|3G*4XlJ?eSpVB@VzV~@DA>dKJBF$>CpL*G7r{r2ho zZ`ARGs9&w8b~II9jjK#pc81tZJFEgu=AWpsC%UI3U!CnwI9juM=INoy>wX5mda2rJ zJ#W#1F1G#N{7!XS`Wmfi=ap=k_2zw>(04s5m~wN?Sp~v33cjVPhKH+cFl(7PJ{{*j z#v+^4-@dahdu{GPr=!R1hTdrtvj?ByF6X!q2LbP+w5)S;lV%8)gnP|Le_kJT+Qi1i z_q)^6bf;v@*5L?-Ehlz#M~Qo8m&DHMX@2$WfR*4cUIV94Q&tX#Y`Nk-2^Lnba*xS- zopj=3Dr%siaN&*_Zgyt|VEmmgY0GESf*1bQf6`iEJgITp#`JfSf0);qt%%=X2STq+ zZCfZ9UNTFQnsPj$dwCVO>YzjM^zQ2mWP%U2UE3`W^yUTRbDy1K-DlO>?s0n@Jb%gp z&b=7yg@M0x8g7o$@g^WUDI8;#Mv@qsF8WlpAD zKA_&|1M?p)B5m+~UJ*6ZF2U^S$fMRKt6$IW#%_;Qx!ilSV8tc#lB&p3r@L$TZ3Pj97f;*EHGJ z3;5KurJ1wWKHay5pbMtiPq{el;Vbx=r`7FFkKUhYY!J08jY6HyF#TE`SI_ISvpw?@ zoxFUXa@V#sdFXN4x+knzsLAlU1k$p@Jr0ElQ%m6dZ;i)qZ2Qr7d)4=!Q`;$hcTL7# zCE*u#t$JfU6KskJi(|~q=QA$(KmQbYIAdhgI9I+o#o9LL!}R&S^N$F=&Pl`Hd4F;A zef!xs}$c{h! z+({?!%)1XBl6a{ysXZ=53f^d23q~?;+R{4-hbw}P*d&7JXx&= zMmnL@PwUoQ6+adXyM;YEzL8qC6#ISami@#!?{6m?py9jTQ8t?tk*lt4Jn7UDa`y8V z9ZYkk%9t{8>bEp;?<10IJUHxhT2Rr}W-8UKf9q=i;q9(JmkWP9BL01Op?_m#SYhO) zL*SYJxLWw0A=K4X6rwGG{p>Hs!w1I zm;*4;UmNS=G(c`11e3W2fm{ce4#4QE$<6rV>S(+E>%WD+sw2pzMa`M_^Tu`SwrtqEM!yWweYY6aKQgj@`C84&8=wM!djULvHQx@M6b>*d zEd(U2Ha9(?TYReEyY8Fr$6X#TswwR{``O2BhwR#x-{P5#IAl+LHrg4uEAQ#goM5{` z2&2<%QsPW{^mt42Ucgkd=+BY`iGH$3-FK_uDKwvOqbc^RUixebPt{IJjtXhR)xCKTp5+6!SenjU7BvZ{Z_B6J%7oR=8^X$2L{euYwd{r2(YF{ zigH>{EsTU*BKbt`8t=bJhIzn0&~oMn7ywxSd~8hg6?s^Q%hEh7)L*!3(9RuC@4or0 z)BP+cl=^J6S$F5e`DaVr;asr1de3v`2;Y@R(<^~#_JD)=YWIdUS2OZ^g;95Y7S(^^ zwzc?eKEBkuZ|iOT@QbNY-m^k7AdyxEKyzt6(~Zn&dO$pY{ay<`GE*5YNcsq-N>f&^ zwV9@xW#pMY&98P8-ff}p!%L~oPs+c2uW!`VJH6@D<;FCKMtIC}Q#db}WeRXbQ^?fM zy6fL`%GU{qS#N6Yn7KlpZaHRW0A#Q4p_3-nv{*A*S=vL3SssG}0^63O#^<=-KRoK! zwGeN%WfJF=wg_IYcAsgVIAq_IZ3G+;to!Ei?fsUlz6;lNRl4yf#E7L!-?|>t#M&Zj z2e)D@=wr-}nZg#Re!AEcURNWwiHg&8!(PWNHg zEg>hW;6PKg$N>*tcH{W<#N5d{0}tjyV>7XUX&*Lha&i4EdlL12t!%q)Jbyguhs$s0 z5f9H6H0%U%HU!~rUqJo}GXUC7^LcnfXXqj2f;11yGTPc7{bM>^=js-*`_6{}GTWsd zG?Oiyp=BL=J|BDW^^H!ad)k9tzN^lA6L&bd6m~GX&JlIPzb2>B&C1bH$}tKIwcb1IYdEga8RLATE*bo}n zYS_ypS;NgE8=O!4yi>ZxYQJ;xvFV(Xld0QJAI&>Al&1P*^1 zbGl@KxhZ`H@8RsdQ8aAPhWmbyAFW?8*ZXz9jvl-gd#l6ut#Yz?u4KSy?wNbnXRXw| z)#+Ma_Im_6+!Kut~vf010Tb&u4G_ z_0gxJ<7q$oKmWX$FuV2siki-;^LSxP`mARXJu!^=OaY1k2pT7R>edsYJ+y_Tmw){XtxNnNV%tGmuy zAm-_reJ!4kH`+c<+ku((Y-$|9DECtltmXRcFRy+OsJahd=RQi}gddopKFsrISp*Dk z1}Vqxu1USC9M99~It+l)XgOM=$PYWHmQHaR4j7 zh7()7zt01lXf6GmWROlb5~Q+o8gX)O??r8jA7$@fxO1%(Vb zV{TmS$eqQ8UJf+?$^!W0n3zXERey+JvyQgQvhAjz2kZF^nZYSh688KSiI@|RRxW9q1 z-m3NYRL>S#`Aszd!UKGKO!Py+!-7TwKD6K&&zu_<#QX4OaiZ?RJ?f80&QMGsFN$pjX>Bjr2F`K#}1dD%w)I7cl)c>%6Q6DQ#JzA9{?o1fGry(BSbEZmAmyUhCwk|x$ zH-ND0@%t4CmkoeQX+F_Q@TR)bai^k-9!Xk>-sHGr?0m{VXn?BiQUI zp%0qY>OMS7js6*@@1LLBp5Pt9wh5xKRH z@s20gHiHa+s%Sp6ZvA{0X-3dEEVGy&mPNwhbb+SjHi6v-Mst4 zldn4Jz8zOPE#qvepPwG-*fM<8{$-=R$3R9$e{-&>6QeJ8q<~@o)CBM;JZ56g+I@otuzzU5N3W`H-3wR^46XjHX(?i@_sNPLuFI~Qx4f-` zEZmk07HnMZfC*g}ZkxQ3HshV~LOV^D+u{pa6bX3N&+A+q^2>^di4q3yAa9$;um-za;UahY>aeG2`;#u|VIr zfo*r%#JjP^E})fP{)MGx(3%?3@71InRu^Uc?e zfwonKH|sv_(&;Y8KYVfEcC&a<=Czj*o8mWLhHw_m@?E{m#&q5&IL8v$yvP7(6yOv6 zhuWsnfM5$A;Q1b0pLip^+771a z*Nj&!W{xC9?L2h7U-?3(+sgisl;gR6w!~}~V5)wr=+d$3^z$}Q`89>FVi~~7-6eY1 zL(pIXf$vvcdEKz#^2xWKLq-Z~d<&P`xKaPib5K_3@-!c>g+ecJi0==tP&PXKId3&$;J)Vk+CpmTRGaIs!aW z0h1zv_FV6vj(3MrKj^Nvp1B)wfi)GE^K|gI|0a}$q-A}wJUZqES$;lmzG6=^o6T+i>~&%>~?MNWG{?AL>zDk0s<%flC&4{@rwI#NMHMp zeXnL?Uqwdqqit35oA}-_X-CI@?CIByx3q+KhWf5svt`Sg-vI%9<41o2_480eSsKu? zjJK}k|9SYMhmPO)<)=LhaZyy3c2B?B{(oMJzQDf$D!lRCo^@`dZ$X+~atHqd6&V0M zruo3n7|~dHBOUr7XW7XA57hHJpl1MIk5Rqk@&+n2cY*&oK+l-R%>Y-cS&#q#U_A{0 zF#S&eGNMg{2?}LIM*Kn2^AP1STXfA%O`AOh{lt z0uvILkidUH0)G+VfO;Zas%Wk#TK|izAsTphf7)jK1C7q`o5BPOZh{3j!GfD$!A-E> zCRlJ2EVv04+yo15f(19hf}3E$O|al5SaAQ>EU5_=-2b(x{!2o`Bl!QXSa5%BLfn&2 zi`wbga_E1z#&iFhHQoj{_jP|+$N9}T|UywmpT z(kXWtQ+ACpY4i)@X2t-fV6wH$!`yEXP}-L{D`ND(r{`&iD9U#V<;mwl@TJS;?h1hg zP-WTPBh9Ujn3Q(&==;74{yjsZh;_|+bHa#XEs}R@bMQlNd&#w?z%2nWEW6OA-QHJl zXU`*=&90}+-UowA&jO5M483X!@cH7VW~oAuWxO8OlIhS9%X_Zo8@a5gW?Q;rqO%~mzJ?qLtSDv8VOc;%`@M-)ZUy|0eY;-{IyK!DBF0s zIoyP^+|CZ}ZdQM3YY}2~;TI4yekEbbv2(NPkNjLPTW`D`u%vu3J!ASJ#mw_RecLSD zaq|SvpFNLD!W|kHf(?Ky0NxkZ@|e@jE^^uLT{8e%OE=0}fEyS>vw8~?BPGM-<5k$? z1&cm+T~<MEvVxbEuJ1Fx zY!$!N26q2`$uMA+vjNaNnvdyHC0I1z%3-5dgH^Hxmga|BPHx5|)V=9L_jl-$j!N|V zV@5ucOL5hzfiDcxu!wuKa%+qDfCs-ukM{qJy@M5R@eteIy0zGfmJVvLxDvqIQ9fzI zyiec!Zz^3Dy!hq00nieF&uT|;o#`+@52#Bns=C}R&kQhGb<4)V*{CUS$+WFAw=}Ts zUsZf0Gnx(`PbBq^1TU4XZ?1Xavb^91_k_49&&|WuJJQUc4WdPo2%zoujoKOeyU69IW^x; z5wLhtrxASRBmZ z?UX7ZsynX;Q(o_gJ}J{MtrUt864O|j?w=ga=EWNGik{m&U0Bcaucg3(hBE`5F& z%NTs{ssJMUos#aUH}F{{W}2S0V6gRqo1Xr{d)HV@$NnomZ%t+gHaLc?KD)d;(uP+3 z9<~rI+qGNbe=D@-)RG{D-)ytl%S3iOH>I)a!Ll=!?%Vk&tJEEH;upQ?L|=zt6<29S zrv~;!F0%IPHUJ8w`D}JkWY`XOu{rKt64lUBru3TK5tpS58>z{%uQ5)u*9&)6{(OJa z5z@9sa?xVBeFCUqM)4`5aM^CxS!4V``_-iO6)!5bQFM3u?l>Y&(~LZgz2*d*eEXK| zk+>Z23#)mip@$*>-g_Oync9JHo+;W@Zfm@$+x^CLi!Nx4@67g% z^Qv^Koswf_1uT6(!w&TEGHqG;&~aIhGtTmL(y!kl88M2!+mOg=z&(k)ZAS14aHeyz zZN$uYV1b1JP#TRL?yqF2vbvP)Zhbwnk@d)psdiSj{`9$uu$z}RB&?RLSBHl&-wYzB zi6edBR_A(5eUsaVFL>}DZ5joc_f!f>6{(6_u#Tp10N`rVJQKf%%Y#yK(}PP)vxTwB znLUoL4S+xZ-<*})jOil)EwigF!z|!tOuH_%WgA3#`c`I+slCTMCz?^VFrZ~QCl~5e zy5DTg<(1HjuH(%yZF?kd#+*lC$szU@n`c;hT|HsDSA5^-g{jx|t7cj|;_XoI!qL8$ z$JhRD(Fz3kF4GS=+W`x;;N4qEk(Ep2t7YOAAdqiq?BKL28%!SOh?uXu zEH$5x)TKN3+_)WhgJ%r5tP0ffC38w)Dq=^ziuLw<4k&zmyvff#Y76YuYP37e>C%ad zs||qC0Y23$`ON7902RBt4XiRg#w!0EG%=bQ7MB|fSgf;ri(VWqC{-%I=k(FrMQHYK$8_&NarjzqTG)AffRv$sYV zdMK0T)3%rk5)FA2b9z?GRg1tw4xp*mJO*BS?XT-UfAc`c)&~LiCeK_`R-tu) zn)B#`w0Fmy6U(U|sk*c|-Pe}}MmigH9nxlrZMW<*n?6?*YXg`EvVSToyx+Jg_0642 z20&1nX~FIirfIH3#zwx(m>xd<`dWSW*57h|nlPprxz7ntX^)S|ep@$ab`I7$ z=e5K^VuvEO68u z10WK>2kTOtu`J7iuAjg^s*Fjxv@zW^xGZ6Qiw|=p!zpsIY<)#{J-BR9NW4|4*=^j% zvi(NN6HC6KhJS;&SDUgtvsc@ksK#0Qu5*(ECR|=0VMa}9N4exw57IS%%6$A^w z-tK{JF*@Zu-8y@@%|^Ewo1a`e8g%^m3ow3X+*0ZK%f;!e0M~_HX1;}&`8(QZQ;!<} z@c}+BT@)PGVTrzn+T^M^sSoe%;X4dQmp9(%Elo&*AZOZwW4G9YA+QsZTFjbu99t!G zq+R3#EvvV0=X^Pb?eS3tfi0(QFGzug_(+Zw`jXg4x{QF6kbH5c|%ZyE0 zfN=IHSZrgwcPP+q_uzikqf^!oENuZ!d!C%%B$zYa4ypNeZch%-C_ddbW;x`k+5kvK z^C@3ZtiM++*puB|5q1ettmuQS6Svi|nofj!T+X$5 zXwTn%(!*!={s5zHUTg`>Ztf?X+833sP zKDH~1vur&rxTf!2<)-dy3kChUu{*0T`!R%*E=c-3_dEMduo!0*gu2?@ig zbDekf=}1(uZ)w6Z@ycl0k|o2#XPRzWu|Qcs)dv-J(*1|VpdseRlrh{>1E3Co56yuO zvUTtfnZ8HLRmK+)cVED}bu7S|g>z>uc>p_e=f&11A1_*Un`CXl-&{bPbGYl~B>kxe zw*r?!pk_v{P7+aU2wi?Hr~I}33Ty8Sz{%v14-1QQx=&9_PucN-(`K9V4S@F2hL^1s z>y^Sq7W;iTn6~rc;zgRx$LEHNh1i+WoC5n4$1_^V0rIZfLCKpFLo*_lgiW_tYZd9a z(yJwG`SvfG&7;0PnR9{jPqt55mK-CCONLzLnI2!kkJyhrgs>`0oNl3C1X~Rsrg;x< z5N4Q$0W_1l--1<%H^dLT`~ba9yHc44-(jiOYI;*1*(7A@e?bOV0>Lq<_Q>X4=N5sv zZ~K>S-?H4>~TUoxvQ&UO{lw&)W#5=prWBRjt z|8CQ_F6Q3_1EAA1ACZHUC0=eJWux?foc~>>|H=0TKoQUILqYVPsK@~5 z8en+;Dye=Xbg@jkFG|#Y|C0v)yF3O!w`ishS4ia&faUbL$Q4#Jz`x7%Klt7N=mK-N z&B*4kn_)<;r|GTn{s-m!+bsXW8jq^yTu^`iGra!!UjL3lr%`BBDvd&6kbnP5|Ef<& zrO=sFDxFNHQ&=Q@DhiWAr;-`;LVBU$Q+;|Wlf))7i4+QpLSoSinN%*7KqnJuEH;jZ zEygmjw0sdon0=d0WO4E<;TQ@rm0FQR?k))6BxW*bn)2k{?0{T&V01}SXyUlAIMB2dT(o zCh+2m`Lzj}sxn3sU2Y#K>2Hui*>D_s7P1H~0%QHSg(PYV zfqsx%r|l|bvFX8k(-g6y=IEp|oSOOolD3kTN6rETf$eiP(KcgJ>vH8})*cR-lOMP_ z2FFeX`}5A%cBfb2bJKCC3IV&apjFJmWpLuNn9Le9PuOyd#H-^R3NQ2I=I79&DwM6c zVkJyXD{6ys3&Pn=c(yniiA!!nROGra%j#={QdA8RT~;qZ=gCXK!)f@g)Rt;?S#%L5 zqgRD2s>vg$Q+z9cbKAfSQiy9wWih8w9dA8jkEH=XYNiR%CHQ1enmkieyN3au*|uR0#L*@evip2UT?} zgCxl5AesbJ-pcgJ1*dYh?;~&o$wV($NFD|fw=IuRK}Uf|Td9k&v=}_@FhVXaW#*M= zobrRSN5F#kd=AV{oRtcUD96bUa6nSJvI3EZuP=n4lZa&+7C4O~YTHFh%Ht>TeJPbR zbQ7$WOpGA!%O&vy3>qnO2Qf?%Nnz8Ea|_OJ3EF0KF)F!$q~Z6JM=3jT+3|{|d`_7* zRgOd~iq2GGlB+ALqPucaB4`3^1v#(-fm&YJOW7`LKGHeN(MbXFwxSaZ>%%tLbZ#s>TaK#~aw7AyHJzon ziap??@`_3v4stq86_Zu%Rg8@QmIxw?V0fIEkzdvUOQ+@&j(f`_{CG+ox<*CLPbH&( zZJ;VjvW65XWryzx?&Z-dy2H^;XeKveUm}eN-rF6~UXqf$C2fADdk*R(*ZOlO&Z-UgR~v>?PV%_K#@q_&6$d<3hChpwJ<3*U>P)STk1YE zRCr9B#=@6Y7fSXBi3Qb}RFyhEV~{IHsOhTwc0_8iNJgbWlQASho<~%4IYcFm-dqR|A`fti7@)*;^3g0HiICk& zfiQB=d!gi{Z3HxLCI97;|iVfa!)GC~#uk10@W;b|+F(o!^=k_6sgRT3;^Bx9o*XqipusuCs~C*p&G z@vZS#SrJ&H?obw1dy9$rauDeNFAGP42ad+DYQ)75NwHG8H?$#9EegcriWSIiV7iDE z$B9FPLj5$NUS%U>gpK5sW@SZc6Pl!Lc{NH{Ngb4tyq}St+u%(Q5@}c&RZM`%fPp>P z*(8mmrdZI&PZk1$_()9B8X~?Dn@bu%b%&OGfbXI+VjDsL#B{TB`Xe6sN zPtc0IR8TFZ0txvAKwdlv>V-`6CThCbSQ$bn5#vQ?j-o+$4;VjzKvnJJg(ZSBG|;xz zhQ><2AgTUj(xagY0c3@wE5jwr7g`^yKbw<~QY2y5fn1(8k_JST^A+xkbyRPAsgU$kGaF zxv`DK1r6HR#2_4j4n0!s&?XLLsc8HAdkgbkxTYi*l!Z`bkoLm1=$M!)Z~akMIM5j$ zQd7yRsu?7wqF51FB#GZZERhvuU8cY@;)&JFOoFIRv@>N}T7{xDG-Djg`4diOw0a}=$~W0Y6)OJ+Y zGZj@p3^lY>hI3{LY4xNGP(GHxl0mMFcr+x`DTX8JTrr_sY6@Ge=#p%g3VcGzP5f3U zC#F8U=U7Xz$SWq2QxeEY4AL-ITns5#0Im?qPX=c*iA+klw4Q)#L-MtR5OtB3O66yA zV!}(wSb-9lLdX>s#AJ#iYD%;j(FL5cGA*i-94(9EHL~(Cva)(`wkK+|DP{96wpN-A z;gG4&@?%AmTzsR92v5dWXrt0#Y0$7*6|yOon0TeIG_O3NmeM9x#wpV2R+y?@*V<{S zY$Z}i@vCcWKn%$X89m~h3in)gRccy}h@O~$5dbyd*ple0q}F8u$X-};JR_7qDw4uL z*;;$%-JwIDqn?O2-l%?duNiv^iJc!JRVt4cFJWG_lN_=A; zrJ}-xt<PHSS_=L1g(cAiEu)tw*H8=yu2g6G`=RA zPNZnm`UQzFp;#86!sTY;5Jfa06_Y{8pdv7EToj$Ds%;lZ_ff=rJd>Y|PYx1S$eTLw z5#T*6F}k@P!@IrLH{IYCNsY*W||)v9-N zP)d;PxwPe-C>5`pjKsk(pn@9`F|VIkUZASX$7K{mU{xV0wAx_G@w6(bnz|*fC_0KI z;Oz^nX@;Ok8q8UnbC;SC*iv1VzvUSdv(x zt!GwvWB^Oa1d0bysMtUS1qROIbV+*Mf6(Uu~ z&YX01Te_fJ-ULT;`Gw^2ZmLLxqZaAs2P7KI5Yxd>E|46g#i%0vk12Y{*cNmif?xL% zB8Y=FZK?=Vz#C(e<78YETFyw`m)@aLan-CsxKI<&Ol4$?)A)-ka*}e(2)Mi=2^59Ux;xH<-j zhsmX*Q7lLVgS?g9Nv=stj71g2x3gmyC>S>_(_a>t4b!A|qf&ikIBy&xCOcZ1?Te1{ zb3>z`HL!RgMbLux%BHuG6quAUQ3ARWaxpWrXe(HnSFXa*F*R{9ly>hzLQpK7P*e&< z=cM5IsaQ#-u!F)<$54B#gc??iD6mzmazQ|`-v*;fTC8j+WaTPT^@P4pgb3)P^!`^wGQ$ULj;J z++!e!kw;*Z6PL#du#FpwB=H2<9tE+zge4RDORLHG=wlt(8O2MfSFx?NWSIwNb3z)W zm7`U|m^tOXQh}m_o|S@%9PRK^7<)P~9sE8tXLa`8oJfx^((4?_3oDd4F zOCl0;+0qj3Nm)aERRX0oOsQYH#vBd-Ru(UMciB!f=Z|?DrVPIbfD5pb2Vs!D!UkWRmIJf6mdKQqndaG9JPlpMS+;v%KSI4Zsnkmk{A<|6G@5UR$gC) zVFc8(N!0jrb*<7GBsd4V4VOkuP4_S57ir`bz@}6P8IgIY5~=QM$hlk{+%3+eR!2j9 z>oOFIm@;iBzJ^FriINM+EPu9KbX21*s$fq)bIEG-`KJRed3d4Phr|xHh8V8nkE+H?@wI zn*d2%owBb6FJktlXdyuS?kpIk5=>?2#V_D6sWd#9MW^to`5XpKzsXA}q>%N2LZMLg zo4|ht{d@hzAOHXS?ElN_UqrZ*dLrDnP*0aXt?>-b&Hl8;`}+a+h7EZAR`>)5Zh`}+ z|A}OR12@5eo8Z7raNs65a1$K32@c!@2X2A`H^G6M;J{6A;MPoV;3hb5|CamqXM(@B zAPm0U56SLx=IOT{4AJ1M9Rbn%1STLeK}aMVk^#a(@^aVW^)C59;JozA-<`hyldt#x zL3Sf!8^C|>TVCIUe+Yl~G#~uWx&9%^@2&phT7RYyV68s>xs4M3f5>HUIsZp6$ZNA~~DCH>#>>t9;+@xM5z|Fg-)|BdJ7zcLR_`iCa} zvmfVwuK&M!a{jA`kNP71gDI&!n9fO5z0Jcr52m=D#U>8cFZ(&6? u1KW5X!i>mVgd^aif5_UgbxA}WXqQlwfpHf)HZg2J2`VDG#4x&QtD^W5j`fytV+_{w^} z^{tY5hyeur06?q^0LU1CE{+2Lz#0WXkd+JoC=;V))s57H1Jv2OcC$A}Mr_^aylX?S zsYj@TZLCK$6=;?w!15sA9Ka4|Q;YzBPSAuKn$bQ)q}c#yglhowlh_XbiT`M(jK8BL z9$+*ADS%|ELZp`i02b^8JoE^d+mLc+%ui?*`t>v=#rdq?VA9*KtFJ0lYmTPiI#jj` zz8$Hvx7hJ!E@-2|UQR+CPQX+2fXjSUWg~#cxqQ!-_q5G*f__T0V|jE35KG~2%-&x> z;Sz=HrJBWe#b51nF4e7^0r<(`O7v_dDMhs1sn64y&ykmzGn1dZq060Y-PvP z;ma*u1Ltbpz59`2#LSj;yM?+c-Ye&Gel*&#qgfG&lG9npxHrG7MG z@sEQBk-D{So__icL31&CbLcCiOdj8U@K((@^dKv*?81buqm51krqAAw0$kZ$Y<$|F zKVbL8bmzx&hfaMvSY2hi>Xw>yllfR``#Zd|wb-Trj*|oeB*UW%g9IK7lmbv1iK!9n zLWeZ3udMhSA3Z}Up&~KR(qG87d?fTd9CD$DzPhiE%>F!e20EqvsSXNvJ)O~!l6V9Y znzE6P0jQDt_r-sQ24|tdj~-!SpH4i+Q8{nSZYm%^6nKR0pv!n}I9{pWI8lt&+LA`D zx`DcX@aLD8%}`a`a5XzlwxBBQqn@!S#j}l4za3<>q?ydpW~a;oo4N;~+1TGkr&OGX}oV%N_PmR&6go<#CMo z=1OhBB|w3xtDybu)K!^E+1;wg?q>S^K!Egl^fi3~6#mYklu}9sG0l9maZF2#%8~YI zlL2C?ojMEmZQU<7@y#Oynm(R+_}SauNKCdvuIZ6z@^B2UO3+zW9fV_g|INe&_HW0h z4WYW(S>F#|x2c6h>VOwZwsQ_7(-5HLfc3q_lq)Rtdqd3p!L%K_;n8bzWJcy!=PU$$ zu^3HHc8TtMi{@|F73@42s?rwnt~K=Zrjoqy^7 z{vd4pUd-ur%;e=8qQ|-;o`fJkYk2hWAqW|vLU})$cqz~DSMxLk)#+7b8m}9-%O$JP zcxbcaHuc&I-*3K~`2^46Hw|1(i<8zX54L+3gk0HvQe)@P`V&FNj3hKPa*{!N2Zgvb zGf^|qCRbnoYQ6!*-MEJUS@7CJyWqg>7)mH9qYw|76}p-a>SlL5eqrSrSM1sdNX4E` zDh_$?m3w;l`f}adbB_zmBrfTC-xN;1BN)Ht?u{KcAI9yAhvv^|IQ6~ot&KhTvf`R` z(I=Ao%f4*Sy{k|-3U&qoTF;}Wz^RZihU3dU;}Qv$GDjYp6tlZuyiETwi>VEdO->a` z6wa0>U=E0+j7v8<^SFnWKey%lIyVzF*bF@xxia83T5B^|C`bs;ZUJSwo(+oWK$8%3 z?tL@OUS;^T92bWGZ2{=opa3#LnI*?*;&LY{NG1Z5nD^FcQa;hknQ1)f2iwh`y!>`! z-tSlQ_qkyY>2uGuPSoLLQ?{r!Ns7kN*phhd9sr0dxvhWwk%>c}%Z1rxA7Uiv4v}|j zz8=w46~f9%BS5Y^>+#-SWjt=j{$hBt5-iIA4J%FGSJ3pYb@6KOSUuG>;}HDWO;wh! zR*+x$t&I|Ti{A!-;olC0R1J>(`0y(>9{MsP^U^EX;j&2awG>*F62qaASvdXF!1rn4 z{0<1JMS%Qx^oV}gk2@|y7D>68*M`xjKNSo3-?JI%xs(uCc{(^6kgz>{+syi>EO7f= z!IP}5Az6ncPg#953VN*rq~TmQyYyoYxX21saSFw)_n064S&(~l|2|F^0ad1PP%J69 zcQXPM2+)Jj=rTSHNGfKSii@>+Kj?(F3ZFyvJC{v_=s9sdjLs+TfAZvWo1{}9BNV+K z>hd@~4b9FO^p#&|SiaoM;}Azk(0R;r-4)?OuBL$baSO8<&dheG8-hAUo;u5@c`l4l z7(n;#L-Y7MJNC+!sf(w#cF`)VR0ht~-w-hE7_u{#w7#~3H3phRW1ZAkg@N!b(Xeir|$)rqES`TT~mVv z@pJJIGV23V7cdx?E%P2c7cy);_IAg%ptt;PuRQve+(_dZh z_H37KWcX8_t-LAov;5L>N<+q%x?&TLz3E$_IfKWXi%>_$eSbgyOso7#4g!=0FWbW) zJXu=~A#>=ESwSNpJjNN=<-TISp)3@a(z$ycCpPap>`|MNaQ)yzt*>2+(VSH8iQ0KKNRxV6(C2{Bn$eOPf zmM*UhZx5D*(D%BzZGAg>3WO&mVxGRBkD0OF{Pz9lOT&@*W~h69ViV@`p7?Pe0V^ws zD%vf=JYWNvRw);LvVeZIN4Q)I!e{S%cyngJ#KFtPE>`{3l$J*?0#v}GyTFS=$`~$| z$M_1L6m;X~o4cH#rnEyPpY#(wEQ^KjMY|`bt+LEM(26OCzKr|2%x#0mXKwZDT^cO1 zN5-`G#7!-Rma}=Su=?S$of|a#45zwgzxlx%v+u3i*8{7V2+(mJop&DI@0@V4B`WGf zq4Yy>BeTCgy6?Vkn%!_g+-}^bN&tnO*;=`^`}GVI|J&OBI`M5%WfONhYR%gFDeuov zXe|M?&6VL8?S#`sH-ily%aqSwoag7wRQqNVZ9Y+RH^uBnfX)K+y*JSm{?;KLKp7{d zMlL&bt`X2#u#}<>FA5tZ zj!)Pq#=7aHOIdNW%80dvZgVFd%Xn&gJ9bt&(x;(^p>7xTC)CvfrUkZM+m8wJq`&UvbB(p zlQqdbaz^w0o>Z6iFsazggx+h@_BPvERzI%J+{#7iZ|*p>^~*cRsrb`Neroaf(6z(M zi?2xAtzskyClIx1{N*-ICZP#72v84vB3V2s?By{kU_bghGfVZQW;Q;CpskhtL0Y%>sgY-N)Zu9;?h$Vh_A`T_If*r>^8Fi&#A4Q6OI2_0I69mpR>XfA`c!Uuo|j4=2WtQ{UqHZd!-c`x`1$jjjeB7NG_Uo;4Z_UYOugFj8-2_7%5|h{GlsYn@mBK3aAQvzQ zcVp+Ba%$Fj{x)7ces1UPSSjnrHr`#e(_h$~opaG4xqK}G^aik@41Gh6 zSV!cJR}eEV=PHZyLJW-G5T4|Dyg@>S@a)Mfa<5Eh-xr41q^pjhwH2 z#YYt0rmG+3>a-NT1p%s))dw!qNu=)R}OY!*DmdQ**dvu9l2i(`!oS-F`dXe z&^?bs0f}jXlDRa3tr8=ri7n`0Ogs%rnkUBQlD_YZ`LG%Nzy# zhHp$Yb+2z|8woS1)C2&>tcr+~(N!DAttr_9XYI}GT=@!{&u+Eui@x_DtP(fqBmG-Q zXwE$VbVYzL0R4wiF~4Y2L}^L`^{{YohxjupVTDyDLB-!9sJvUH+}bGNp1^|@t(3dn zzkOQ~KCGB?aVpIrU)et4{Z&>Ejdk{M&GMB8L+axQ2?yw)Zd{m^%xGwD&Y&8{0X=SQ zWO?&B0wf5~kE~8-RWP%Q@Sj6-QcI%66aq8w8Ec~)9#+R$byVyQPS;n-hu-z6HLNHe z2aZZ`Q)sWNJ>JMO^m|lt%6H98*I&vIaxMRe+YRq9eOGvQtbnU{L)RF5bh2oP4v7kw~iQ%y9EmQ9;@JF(3x`s#c- z3jrbm);)$PiNd&^gGp1=0KmLpMP3zSc|tnw6cG&;Cg^|d4-u4C`d;5#7$5Crs^b&f zJE{@(1Lz1pnA;{!mdt+dC~+`JtbXT(OTM4w3u=z>H>wqwHlcbY+|8vzo(e_8@XFCR-#)h1706>tHw#! zoD%_rO?|0HN^C)Ijl>W^LNQ5Ft2Xl08_1`jQ_eQuPFbK14Al`pfXsMwJ;Qu{5js1O z-$?Z@5)9JiRNQaXVa96Kh%=sVzBb63t!f(9$e6?)*C67RBH6jaW^b$>OWt=RJg+$3 zFpz&?>U;0{5bvCeJ(ngD0y;LADQ%3zUQwI4#!YB_@gatjyRgq%!rxk!WhP?o5fhT& zzzO@mv$mLat-aJopF~UBpVruKO_t zMun)N7wTQ&#%oe{O8BlNxhs9DiyRE$=J)f!&Xx;KN|Ltc5g>aWeU*NG0J*(BDcQI_ zyQobqF=s&Gy1rV1R1R8w##LL|G=1H%xv60dPPIXH4^fli!8|RJ)d@P}Zl#J%r?yh` z_S9&-JGy#5^tkD^T?=` z=Z%MiiS@y*Huz7)0Xg-zkDXg~z9|n?%P4O1Ey~Wyl_7Qtx1>L0;ET62z*ePyk5u<1$Kwbd7dRb{Axh*0G^Z9*VQQ?$^ zbuD_+0>w1$NMco-O#Km_eNe=4^`9*>Cg-PdOKe-*I5i5KZ zB*^Oz$mDMs?p^Momup(=uqE+RYlKjy6FpSoegnqFyQaOHmilt#2$RroEUh5lH-9vw z_N)T{^q-YQ+m35)@Co}1 z8#AAS?=V(_{kRH+xUtPF#gV4>w+t6v(=h-WbvWh7EyUuq&y(4QB=ns=sApC&7^&hY z742o)SqEC$u@dH=i;{vJ9pwspa|m(~kiTxj(3t&D3JT~gvad+ZCKZGf#ntXE;!i#Z zVmg?*qvx99t3p2LMH=(8AKvcKLxB7NdYMjYqHqgPlyttDRfOuaExlEm(R$W}8q>q! z=zY_dd+#qf6aMtf=IHPHynAWK zQPW_f%>Xpwl8oM%UVD{f?uY=fdGu=KgUpOJT2^v{US5$Bt4)Q8AE32-w7PV%`N8nz zTJsln&jdvc4q2-w+{>@f4<@7>XytvrrR#Yl{%btsM>;>KX78j6)?cj%%p{xrh7*>_ zaFYULnUpuVd!L_K=KJaKLj)+8hl$yGI1v+`otqT#K0w%E{^P)@^X9(?&7l*7Kx2}F zPmR0l_Q{j2prvhJ$o-IWq>mCpPqLu(P4;RVPN?5&jivpTFTv_8)olHMO}eLhOQ%LT z`i|t>#G_HQ&8`$+ji7Be0#@_!gU+@AA;Pf!Pic+cE4taEbui!?-19+5A1dR15F^PcAJI#u)2=M=|>f-+Jt za#E~Jx#EfHkUwWGCb{tSD4K_%D5tZE+KHu@25NRi+b~!6tcznxiXM#{pr#$N}fWo{#i*r3;n!!)z1o04mgS~Pt-}!b`s1rJ$n8W zt5j)|yF>wQEc$EdC9v?e>g>+;-#Nx*7{29pJ*nGe(ULYMMtOiBQIdALr|e~(N<_2b zCzXfnoS~6CcLXRApnEIl^DA12S&5(DAFfDHWX;g`8MS$IY;lys*D#tAl0P_$HHE08^O6tKrN<~sp&Hxl6}Gls;=k;ad?8K-v@g7VuriG_U&A>ud;dZZ19bN%yJ~XY z6eB>nJo*u>EO@RGlLU>ac^SsrPp_1>cUj{_coEjAcV8iGMaaXjto)`Blg#Rq{Ij2gxAM5qnCZr2=XE)LEWLeSLD?^(Gf+cU}Cp=16 z|6%WninxI!RTmiK#=N`RKjXyRuuWFb?N>IN0Ki;3 z6Qva~G!pHPau$kA1Mi#&-O!{$Q9d8nJTX7aO6^z0CffC-gS0Zg3kj2=6cgGjSLlE@sO+lwZDnm$`kct2`^4ir6GvP&{ zho3a%z~ZgzQC2EhbxXz}Go34%6BI-7(deqkzP!(3Y=ieI&&>gjs#}DKh7wMeI#yL% zG}rtnSv6uqXUj0;?$ijVd%Nat^XBxXU~XxpI$q*l4U;JK6ej8-K-YNI?aR{xFk65U z!Sj=>BF~}B7gn~wMQsb;#4De<@dGC=`n;6#U?bnt#2GACUrI!!#eF5#!O3Q|HS6>k zKjeSBD6*uMCtCcTDR%Q@;6b4}XqZ1JvL_ze;IF?@WN+!`>V5>M9iTH*;6o$4oF+w1 zelJ3aRN*N=ikz-cwRB{>;HA7brjujm_%>O1pMsde>2<2^x>VW3_56!}zNj#9{ZAJH zbeBiZP|4wEY7%pjcEUiq|55Az<3fOX08ER~QGPwsVIdVV{s~72&;ZbWX;}`O3H5x; z`JU`z+ke2%0?;TAGp?1Bmko#u%S32N@PL2Bk3@TSVtX|xbcW^%$^IAQEiPB`1} z&(^?5W*FP(e#SD%gU{fveCA6dt^IfHKagN6ODzUSv|uwBq(rG3s|0bm5$1-5Ox6y6wn4y-Fhfgc z6GLMvb%mjSG$)kH2`4Q6DVoa(jgnmCW(EYXqoO$eoKOxo_K$&JM}@!?e?%rSaz|v8 z=u#zy%Z?0ZhAv44!e-f#Q9_Hg?d%<4OJ=u+?(k=Za^jd=&W>>WVp}+yEAr=)0V^_W z$!0_(CminF_CKpTV6*JVCD|xuSj1my?C>bKH%ncMijCs3!iY z(j_e;>5=qF1|&lgm1IORCYg{-Ny|wqNGnOJNM>^4a^`ZY<<`ipm0Krgfd)ZMA&?+| z6BZE_6C~orB_yR#(j*zOtem`pqLMO21*@v2uA!-=Esq89SQG&Z3S$LCv4TV_D1ikf zv7i(dl*ZynSey(NN5qYD-?+tgG>F2X;RiGdhk<1<0yr!{z#&2lQVU`L9{CUg z0W1LoaKa#f7Xbkw#JnJ^2ZFF^0T7J=Kw%Jr0Z}3V2nq