From e9acc0aa47cfc52a84c1772a5e0bf36d5458a245 Mon Sep 17 00:00:00 2001 From: Bob Long Date: Mon, 5 Aug 2024 16:54:47 +1000 Subject: [PATCH 1/2] RealFlight: update Titan Cobra to 4.5 --- .../Titan_Cobra_VTOL/TitanCobraVTOL.param | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL.param b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL.param index d5bffa3a..3dfec4e0 100644 --- a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL.param +++ b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL.param @@ -1,8 +1,9 @@ -# Titan Cobra RealFlight ArduPilot 4.4 +# Titan Cobra RealFlight ArduPilot 4.5 AHRS_EKF_TYPE,3 +AIRSPEED_CRUISE,12.4 +AIRSPEED_MAX,18 +AIRSPEED_MIN,11 ARMING_RUDDER,2 -ARSPD_FBW_MAX,18 -ARSPD_FBW_MIN,11 ARSPD_OFFSET,2013 ARSPD_SKIP_CAL,1 ARSPD_USE,1 @@ -19,14 +20,15 @@ FLTMODE4,19 FLTMODE5,5 FLTMODE6,5 INS_GYRO_FILTER,36 -LIM_PITCH_MIN,-1400 NAVL1_PERIOD,9 +PTCH_LIM_MIN_DEG,-14 PTCH_RATE_D,0.00903 PTCH_RATE_FF,1.042 PTCH_RATE_FLTD,18 PTCH_RATE_FLTT,2.122 PTCH_RATE_I,1.042 PTCH_RATE_P,0.806 +PTCH_TRIM_DEG,4.2 PTCH2SRV_RMAX_DN,75 PTCH2SRV_RMAX_UP,75 PTCH2SRV_TCONST,0.75 @@ -64,9 +66,9 @@ Q_OPTIONS,16384 Q_P_ACCZ_I,0.656 Q_P_ACCZ_P,0.328 Q_P_VELXY_P,4 +Q_PILOT_SPD_DN,1.5 Q_PLT_Y_RATE,50 Q_TRANS_DECEL,0.8 -Q_VELZ_MAX_DN,150 Q_VFWD_ALT,5 Q_VFWD_GAIN,0.1 Q_WVANE_ANG_MIN,0.5 @@ -91,8 +93,6 @@ TECS_RLL2THR,7 TECS_SINK_MAX,3 TECS_SINK_MIN,1.5 THROTTLE_NUDGE,0 -TRIM_ARSPD_CM,1240 -TRIM_PITCH_CD,420 TRIM_THROTTLE,47 WP_LOITER_RAD,70 WP_RADIUS,70 From 087235afeb7ede6e9426dd0699ec282976e9cb62 Mon Sep 17 00:00:00 2001 From: Bob Long Date: Mon, 5 Aug 2024 17:38:16 +1000 Subject: [PATCH 2/2] RealFlight: add camera gimbal to Titan Cobra --- .../Titan_Cobra_VTOL/GimbalAddition.param | 20 ++ .../QuadPlanes/Titan_Cobra_VTOL/README.md | 10 +- .../Titan_Cobra_VTOL/TitanCobraVTOL_EA.RFX | Bin 1164410 -> 1164779 bytes .../mount-sitl-realflight.lua | 312 ++++++++++++++++++ 4 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/GimbalAddition.param create mode 100644 RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/mount-sitl-realflight.lua diff --git a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/GimbalAddition.param b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/GimbalAddition.param new file mode 100644 index 00000000..af533094 --- /dev/null +++ b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/GimbalAddition.param @@ -0,0 +1,20 @@ +CAM1_TYPE,7 +MNT1_DEFLT_MODE,1 +MNT1_NEUTRAL_Y,-15 +MNT1_PITCH_MAX,45 +MNT1_PITCH_MIN,-45 +MNT1_RETRACT_Y,-180 +MNT1_RETRACT_Z,-45 +MNT1_ROLL_MAX,60 +MNT1_ROLL_MIN,-60 +MNT1_TYPE,9 +SCR_ENABLE,1 +SERVO10_FUNCTION,7 +SERVO10_MAX,2000 +SERVO10_MIN,1000 +SERVO11_FUNCTION,94 +SERVO11_MAX,2000 +SERVO11_MIN,1000 +SERVO9_FUNCTION,6 +SERVO9_MAX,2000 +SERVO9_MIN,1000 diff --git a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/README.md b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/README.md index 8c0d7053..12b97435 100644 --- a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/README.md +++ b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/README.md @@ -34,4 +34,12 @@ Aircraft Model: Titan Cobra VTOL * AETR normal control order * RC8(SwB) is mode: 0:QSTABLIZE, 1:QLOITER, 2:FBWA -Tested in RealFlight 9.5S using ArduPlane 4.1.1 \ No newline at end of file +## Simulated Camera Gimbal: +In ArduPilot 4.6+, using the included lua script and the "GimbalAddition" +parameter file, you can simulate a camera gimbal. Currently, the gimbal +mechanism is invisible, but the camera feed itself can be viewed by hitting +F4, or by opening an addition Viewport and hitting F4 or selecting the +"Gimbal" feed. For more information on this script, and for the most up-to-date +version of it, consult the scripting drivers within the ArduPilot repo. + +Tested in RealFlight 9.5S using ArduPlane 4.5.0 diff --git a/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL_EA.RFX b/RealFlight/Released_Models/QuadPlanes/Titan_Cobra_VTOL/TitanCobraVTOL_EA.RFX index 70e51cc459e173e7c6644b3a21c0bcaea2bb66ec..fd61b6596c5183f5673c5a7b066b2a9ea7615f8b 100644 GIT binary patch delta 44523 zcmYJaQ*bU!*M=F}wrz9Awv!#(J2s!#wr$(CZQHgp@Bh_I&B3**RbAZ&jkWIXk1&bL zNQpRZupHkyGk?BdKHy+JkYGO0U_P*5KJZ{Zh-N-WCJOjDio(AnwHVPCKtMopsh$*& z1W-t}Y-ak-b!Mq~6p-Ek*icA&qX@Ot0C+u}L|cl2AaMm|8oZ7!3NpJ*SKlBfWkFU_u{J@GbpkQb~AV5$+qP*a+n%70Q4AGcCKsG0- z#gvfbfQbL*^MBkVW0_v-YCCOmrT8kS{eV_}n3_$h-}_40v`F`i@TL?eqrFm;*Pzh} zVNjyw6I1if1ilEks{Q8j0g>wop*+cM7-!bFj)>p|aP{@O+4FDh^mu%p$n3(e5Io!m z(G_^1?J;L`9<{dGg=AWEhsUIjz1CyC1OkBgx_a9(UPcdpO5G;Zx2?2&tp80{H#fJ= zsK>WPG^j0IYmccW6pfD-KHlFQp21S)?z*yQ*6SzjzRd2OK7D3%33TGUl-?fYXi2t_ zy&9wKGa-)^>A&68vqqgBqnH;-bEk<@xZt!^%I>5m6*VJ>jBzd z!mY$erlXRxQ{J*kCXbI~94}}7I&$1UT@Kl>q7siy!Y24z>73%c&$%cO;@B#5v}oL?oDgvV0v?9M=>={ zZ`T47uzHo);#S+4W9`#bW0=$bfq|5Aoc>u`8 z5=_}*j;(5{^(Vqvj;KE-Z;1+To>#UpPc_KdQz@MOHNv^xMcmDJy!>Sx;Kqd{ThHHF zoP6QiJMYrI26z6OENhWB%PX79Ty-yNeP1Wki4pNM3gJ|bawZ*}%iM+Q)yRJ4%6{fh zLoC#(7W}jdCaaM*>vH7(npOR;**ZGcsWaE={?_CmcjsXHYPgd;_zblpq%;0p_n$l` zo;3v}A{Cw@z-8RcFmd*RO_Y1Jq((EVuo7?4e?`Z{x~+@{%_O=Ff!`D->uPUu0eQ;b6qHGo zf^-5&No9=%zM@cT$@fu+>2+}<%NUW@l~E^Zk_8x_L1nPtxM7l{IDu3_6ZzeECKy7p z)l@T?BagM-V#0x+Y+R&V49YA2?^%#PZgzj@@~HyM^Z2HnV@QuY7f^y1==~8pe80#u zM05m8w)o5dH2iy#Fog!JksQF@=Rz=B+HO0EC3&j9amP&vW7)97W)V9Egp6B~B(N`8 zu8`D3Ih50!z~2L)9Rda!WOl?GPDR-H>?cwdsPs~M;)n|YU<(`3W-=8NU%6grQ^nx4 z+PAU0zi&R0G6$pz8=P&G``x*J~IJ9Tj7J5$+IkXB`r>G+QByfmX`fcYT(1*_+ z3FEYpvq$r#fvmXKC&ecKeMO-5ej(fAZE29z!fH1=cuu?a?)7Z&?egg0s{-);{PlF< zyp@YEs?R9zx@YGMJ*a31L0o+RwM<>7B$&dkww^Ax0u%?`P+A$Ac2x5qF&R3SO&n`lkNJirOgpFnQ`ZD& z)TO5MlIwy`qCDMfaB!iho1rO-pep+rhY4`lo-eU2&7W9RM4easO=QQjJ8{}l7KpCR zWhlsfp}cGj9mRn^ZV2JgA9Qw6Z{aF#rT^J%S=;3JwUM~83H@v#0V9;JY*G4IFX496 z;M}v57{mOB5sZkBEnXweeK@Pe;93JHh@kc!4q}@31{qdW8h%qOgA&Sr28*yPh`47~ zL>>_QghpEwLq8PBHG+y3IHDAaE58&gxWM*)mL+~p642;2b_cs(G#6GcxVT3$I=8E%$DbCuU))%>}17zbP93bIONY4*>5J-to^hE?OB|6vo zA@a5{bNIM|AYw9E|M*LeniB%>g}Z~eG_tL31<$EVuCRDiE3C>J(tEgpwZ{;e#o0tn zQ!v{tesxMbW5)Op#F6StRl%GuCe*Qv5yg;3qa@E3>R72~@(o|`|{xjJQPX`nKhejDnP&T*I)Ycw;D|rm!d&GLQSzSe6|6h_eV+I{2O!_ zTv#7FA{z+C7Qq3w7;4pjp%XRtYVv{ew!aU7L|BW(dGF^vrDs4J?pcS{g23jHi4B`d zclxw!br3-SP_x^?k%6)=pEoI_7A*f@L^BP9Jhb0~ZrZC8Bod(M(XoK;%i~LKy!?7F zJ#7O8D3ZTnAnnu~Cq@($>GTFlox!>`6ojK;#s_HXoJEm!#posVx8 zLHa|;Arx7ww+17= z^rqI9+LLQqFDo1^<&`t5Ra(+}OSkJ3U_qV39ae>)Nq(*k(kdARu);3{UybQO~!_6+kEuV6a)a=iIIxwyNp za&uEeDG54cmOf@_=bn0%u@5B1E=3Mye?obx$Szh?*{>OR>l1;tM=EBGdKDMoFRrju zqVO0Pw#AmHfZBabTQst)_MnwPkH*P!I0gKa$}(9@2blo$ZzA((GOUfYJ_gQD!)nyC zGANa9`>~3BxR{nD(9a^-c}8ny$})q)1$!@xN=pdyihgCZIrAA+XHd)f1tkeY+`EY^fh=DW)@@ii@rDj&=7W zZrAr;dq)7n;6guytWQo8)aTw#L*ImJjg>qAuL56mHiZ~+&TXgjpOrPv1mRILNaVJh$xuMp@`E zCdILWk@MyE;blu#tDAp;d|`eA(^hg`{dbR^dpCg2j_pagHO?ng&6cUQ%(8V|!V6V@^7nD-=wLNq6s!(@`kqmmGGgqVW0|j^kh9~ZG3$@yDP%&Ev0bLR7}Qpko2XyW@SMQtaxLt6+aZ`IJ?Y*E3F`)8=$0`P^ONhie71uNQ2 zDdMv`E+OX4nhroxvU!cO!{ZDHFd1;yXi~%siR#dsjWYpD@+iF3dQ z^mTt*s7BQ5colUiZow0={2U4-- zpCe11>MZU)E_(o%`_6r(Yka{Wp=S5=D~BvLH5dphRfDx6;@^r-4e0bI{tt|Z`J*DU zrE=2y&zIT%9zJ`x0>T6T;^Gw^9&OVh1|}<{XDmhq6cL?;ALKASDfLgwEm#5^VfD45 z0n`u$_EL$KsR}N|zLM-{jqZ91$O@*FbFmh%`ap`)%wLI!tQ8o&n_1ex8+n$zg6PAl z{8bm)F=&{YGI7)hHF)05%T~w;Ln-+xcqW(jEoAFB=EHd{@EZ}pw(KV-lt4I4t-@`< zPTaf@6YjK?5ay?%*J(1)YF@_?C=v%4 z23ruZ!9<#P$(8<^^nkXgiL5~*T7Qq&$K_88-+Gsuk@OUzZJbhV!RDpDA3lg`ZD0<> z#%C>Rr8V2&t?Itd_&0jEeR?GwtTAn44{a_0TEU~x_DO~dUriuoULSx!q{GJEx`Mo- z75t@TZHHiIlf+v)&Mx$kK3@;*S{vAx{6ym)7hQhOz;z{h-|RhUdST~N#&t-G*4BN7 z8-~`pCZ5O955#oOF-~-$Izi_PR|WgneMx)do6$;bOM{9bPh#Tz zaIqf~T_GYOCjkd{ zd$WCQ{02WfW6oai=By_cIbA^GkI4qY*hp;BDpYs|r~ul$YDbC& z2mGkR&}jxfHVeSOX&NX1XS2It+>Al>+ihfU8=L93GnQ~xGES3vsHFtWRG>NTn~tnA zQED*MhmSieVnYUT?zPGyyXcZrk{`1+PTOQ-gtl+ijpJtK9xVO7i;iTRaM@{SalV_5 zXl(XHsI3d}dg7BvYbR9w_?uW~hw#6gNK==9=)|P1KfrJtJZB$jx<^jxE*5^~IfP_> zeh8J&%jCtT!Sy@t+vPR{>ucC5N~sSt;DeLqKJf6IUeg<1%$L?Dx|9&yB$^NE+5=XF z+`qY8x#N#Z1KI01RQOvOBY8_$@}uyK`J<@y`-xMT4F^}HVV+k9a}f(eq8KpNv4Amll`%78a8mfW$8;s zBXc=E^rWrJUE1@b7;DK>L8lJB%#ZH9XuLx=1&;{ODENd`?OesB*`HcujJAcO&*Nlg zujtFTkzz&DY%qDZTWw~{ zEj(JQ-50$$Z*b;FxY@Rlg1w$Shqex!Hrhv5qcIU_EkLqT_?%+Uy|5u)j%yFD72v7Yyd8JF)@nCNT{Qgf3IwUwol;Cw9ZRca9AN6vgKt)&oABN`qlUk0N6nb( zpm>P|DPuXvRaP78pr}uJm?scp!!@-4kD;3i&JD>75acZTn#`@VO{s56mEk;Vb`D$# zv7OT++|F}x9y~mQXzA!bI}3@i{hx6+a}N9wbrw1Q7Y;z)%xg8lZ89I>u)yD(qqjX< z3(1}RU%DP1e^W6J-I;$=vAK1MMUP?AV5I?G9JfUX;PWqV$EMW%$u+{(M?`|lISBBd z{UbBb?`;?qxSn7?my5lh=N9z8s=--Gyr&rZGpNuQdnzVaid=i93Mk0WV-y5=`h6nL z9J#B;zi>Yf?+`r=wdO8?|FE>CP^l1jJC~W@Hj#RdjumgPWB!d@>57f_ZpOpMlH=wj z;5jt(Bb(!9ol0|-SxIm@I}ZXB@^JB(JA^zqHmUI(diJk;XQ)EWN4T)?5ATwqK>1qa zIb1Y7h^qqC|A;n5xBzXN?Veq)5?c^|4^t*cY^%O$06z#Nvp-`eB05U&e}O#+X_#oU zEXR1e*Bk{7QW91m#5P4s=%ZRi)?jk|=U0tcM{LFJ4+GtMzu!~jr6~YzM;!THCGh4k z_P?G!r#7ehk(B_rj^5YlpZLnUSJR=9)|k7Ecv(7%@*v*0b9!3oQdJY!Pi~HYfcYeC%a3+9#Kly^_07<&)mJlM?yQfd#;HnLC@V&N zJ{EdDuF zZo885yVfnx59|ATbUYvuRzuF@$HvR2=2FbXQz!Nu33jS%q}ZQ&MPuzhFOt`bV9!G8 zqzX$*h{Q!lI_6n!;q8VdQ|Gt<1v^H2BI`3J>n4YPQYR^nr_ecfmszV2JIXU8*A4xU z3|-~AFaklEmK2A|u*H8BeEvxN(CcGRr8ogJS(4DO;gt^z z!}6bbcG-rMnLk=|qX*R^A=)qz5N-el6AB~I70>l3zqkz&DJF6pM5 zD`bsVTP^h_%pEZS8b+G7>EEtSholpJJ`~=9h)vpZbch!a5hC8T_WwoLTK%!XM^jaPu&zEbsCPT3{39L|?sD*0AXDmdsioMtC4!D?~s zckN5@Ub;=iGmpi9s82+8WsFf@!#KlLn)8?| z^g#j#8`>W_wc|1$$FAl?A2iuaFQa5$xh}tYh6kXKaAuN7V;gWVG}ZnHmBDCl)zfjF z+tws?*Fn)AnIT$ZQPGtpl?-1`edEyUV3uhprCxPILNS9b+pgUT&Y<6rIn=nya9m?$ z)nQ-my__(mAg4DgQB(Yx>`wZx`p*D|yZn}HYC{C#)Iw#<<<~**ta`lPxg>M4$|WJ~ zS`I+Ef>Ny`<X>5&V50sJI{QCDmU z4OWN9@<`b#xC7)!7L~Q|*(5szD5iiia0o`4g4L{o$fQYBFe|#e&{JJsPS%zZ4_gF9pv4yvE;e&`&D9}v+4^U$Cd0B+DJ!54!-evAafJd~9hF7Ai${}0{& zpRT})5C#PS3H(rGV5_J^@HlTpHhx1C8OGX96eU zfzEXFKaPvPeDMjz-8bc}sa^t*d|-)DS!SVK0+9a!^&imx0rMZQ{{iKi2W75@r)()aEX`H2ep+8qaQzV8wShXnfjiwOHk2!8zH-F5@PiI(Lm ziZCgn0a?INVZoKX3IVN4r%TpAQt1 z6Ooay*Dt6jsVS-|t1F`;q$H&!hGA@KYhYnwV`O=HdvI}blk&;yue+#;s{8QH zE_V7mc(B+od9ms7Gkmn%G<~(r^*3ms$RKH<@uAZrY^2O2ZKZXm*C%AC#3(>Pz8|p4 z+3NO+7^^V*yB`43C-|NF1{eyy_lN!HiFo?Dy0S8b_29rEwW6*@KZ9 zMN%FwKl>CMsdf)AyQGT^6d!C9L;ONs1LD4WK`|bFVb_1buYO0GAp}GGKhpkS!2uyD zeh^_;c34K2GoOr!ZF)OozS7+?DqG%>vJawD=)!qQ2n zfOhje=(c{oN(p>-QC|cPdHRpFpXwX!--%rOm8>?QTAPHA_z6QV!t{ZY969mmZ*o1> zi!lX62J1nBa3F>ptM1p(pPzfF7A9TFRrv;vbN|+8m`h5u!6Z?HTf|*z0RgDnJ6y;H zHIg!+52#XdxzKbP?UK-x*@3xPbUh6L$`~76+v#MFD7#zDGd|j*W2!ya8$ga;365`* zpW8y=4MmYO!>7evraPnd3mc3Vz%>ZnB@qRWFTz2hO{#Gx(xp?rsIL~87H!BE3EOd|Ta{C+47s8g z>NhfaaA}L3SjtVA0N|~;>tbsw>yaUkDcFhr@LS4#UT{R+L&pM7(mZya1%g0{_iq^x zIIm!0;?DMWE4?C;XMKy;Eid68sfS61=Q4_A>D5d?`zX0;bSdq$^h}zmneAs4e0Q}n z!DJJt+w#dHYM%NE7e4U>11%Iy%X6KGN~5rA*O$<}L;A|K0w6c*;5Mo(?(^-}gK)P% zgpU_cCZ(?=OsJCt<310pAlrBOHBRvMd6peNvRWOY&YvbDnEOUkKAP8!7<`dwiNEN2 zs0mg%NeIW|O$3O7C+KfsY6LdP^2ZMDd^anT(o_PSvxoFMyY9dz#by{o|kz zMWxk__o&+FLFv<4Mhg~Xitq(0Nk*KFaX;TGAW4axwze?Bm`7|!Mi(MUoMfk`$b;=7 zhdIs2)Fbf|q008%+Nxy!ny74~=SLezRN#i*<-$SB16a9{bx(Eek%9(Zd1CeqlDU6? zZY0dL_@6hx%SMs&fBxvf&f9zrXUD4wBxnb#7~e{&{zHnZE>IWe`KcJ2d{t(MBIz&g zvj>t-t2t^Q-MM$GpZO)T_w`NSE)f}erpGRH`!}K>XY0f9&^9)=!p?T}FKSaUQ&39W zHzv@m34jK-9_B`1lqwia#GOs$fa9*dC`uH+&NrU{hh3eQQK~NzCs_n({^gy0&AS?8 zy<-PXMQC2~bx8_>H*5ST(=TSU@VIpl8^)pv@A;s@!uiprW=RC>sW4+&i?qkqRobJa zmA9byM4P4-iH13@cfWvN%bq~J_<#+LVfnsL2%u!&Qoo-)WR_62P{iL&B2MRKbjRp{ zQpX!|<8<)Bbs2EWZwxKT9SGRiA%dH)!|Fzz(DCRu;&tX*H87-6ZqFy}-aZvBzF$EU zmd5%KgB$#vsQGY`rBbJdwt>YeNqx!wPp0Q{IK!94+!eady41e}dOWnawxh4BpmMZNolubKGDcH|Yp4 ztSJFgkiDkL^O{y|_wE+5T7q|DTYnvtzN+u3xF*9Ms{ok}g;F=cHkGMCQ`lub@L77f zM3K;{QV_43{aO#~or*)iY#y1Hq~y#K0T3p_0i%k^zeMOUg}#p`>8QaT^E!lJcRhmF z>w3JXOKL=ZN9yXWAI9Q@@?3M>&6E_Cky_rrrq-X6Lo<)Y${x%lHpo?)>Og#d=A?Lw zj{aRt!g3wrP4pjpe~{$}rNy)owwR&L=p50(8lR_=g`;A8;v=noCdRCLnd8jF7=?AW>=e_y%@( zL1s-~K1A*1o@p^h$|DjCivI3l&7$IBh{v-rrz^?~?Nde;La*4>C8CM*uBcKO;3Il3 z&l!YMayuhV|0NzPSlsH&;>m#FMAT!1y4N~sa`5}fC`S#wX&rxz!Q z7<*DhPq2^W6_l|V+mcq`4ZmQQdH46XhfQ-u;#~^48MHhC#Y$UacBfD>#%Tt z8t%HcQbNB9%O-cRRu~eEZ(6(je0i zF|>LYm_n&~z(Q>T1jU6qbR5ZKH@KsDa1WVXx5+4CZSI)?L8$Zyh+)-ei^mAD7`Q;t zLjV!ALN8xK+foQqg~V0!#2FFfRwf%Wc*)_U<_i#N-=Gr;$lIBk8qp(3gmu6C3m0Alfn!B*8+BZL<72ERjtPsM^^zzb7L=%p<11XeRKqy|Xl? z>1Bq_j-@L@D)f}8mdUI~_Bn8ffhI%an~dofQ;X1#+671qFewOJDd=OPMQ-?Hg2)Y% z6->M;3TJ_iQX+4-qyDNIutO+X;_JHcYv?E?2+9?IVoU@HW}ee^Oo#Xg%@dyoa^%>; z3b)Y%0+)NdA?eVGJ7P|5C1)r=b1_dy@Q_An_OiOdmV2bXMgZ#RqT9jZG%l*|#Y9qU3J-sM3r9=cKQ;@6!Lhr`p8uFi{_xxFMEw4I)nsJE$89F>N&G_! zQ1)fn6{)5m1c2B2Y3r$GT{^}O`Q!DAVvqj?EDJ{zMccl$*@MHn>#dnJW}C(&u(K#Ka|<_qoBohH!cCl(4O0J?P}|4KSAxZ z3a8YJZtrS6mG${UlMt0bx12IG(+;J(YuF4ZQD+Hr{I^T2xoI29rTOrnSN{@het67#xlx@+Z%!e|5&Oh8d zw6Vbb36+s|wxjuHg0%_P!y%al=CX1}gOBz~2tDB08-A*}e{1C|Tb_RW2SLaG_p+;_n#lhA?m$~)`M?W*dX)e z+_dubEvYn{HB4b+edLaKoUL>LG}yMLQ42R$cVW7|&dh#K5zTu})wGrr8!djbfSxd` zwX`@5n{f59>jxKX|GVN9Y>kk%H2xKhKjo%jY=}#(1tA?k5}zi6vQ4`dxixg0p;VpU z>gPzv=k12LSfLEJM>+{Eb_c3Fit&BKW-xP+lTJ5gfDCG0Wp-7sn9R5 zF~E8)o%;0gbM^k^P3yaX*IxWdI$3od0^6i=op?|#CPPai*rm<{L~o^5gWe@t6;XK6 zO!3UzWh~RF=W5oa4f4amwNZ&t>ls68stw2uY8#vNNUsclu5g=+ujnhO6uE%It1uwNi!mb|;v-c>c*?1Ej z2-oU;>tQtz5aOo?h`+!3z*a?W>G{{T;mMw-Yl&&zCdNJ@S!3`pZ^}l`#wG*iDS`gV z0vlnmQ;eiD@VK4uqX;dD>u@of%tUwJC2N0GGJ$NM#CcBhpW@|?Wcp^ZAFY>6<1Hy$Rnw%)g5sT#TkQW^<0LanLio=sgIl<|-FX`)^n(p1oR<-Wx!UwL;#P6yW zTP-;-rves$`yN?mZwfIR6$qX37yE&&qks0DvA-1m=Nm=rapq>7B+dAqt*&ubK}7>} ztTOsJ#LZ*Cqw+W(rFGm20m!%Y_&A~r**&bR= z{srEMWvN1@2G#A8_cB8lcE}HfC~PP2u0tp;#a&ty({^)BU!s^1@Gm+$O%<)9I!f2U z*;9!3fuUi~0guZOjy9xZm|Xd>sQ&gGI4PxjV9n@=E1F>@+&$`cu49bk*(B3WrkXq}&K66Vf5AmIiI5T>l&q_f)5Q z@cWDdHWUcueNo}&k0|xXP%y}ndWNbJi+CA8g1t}##3$N>dH)6H{i3+vTJ`rqx0%tH z(2}{eGzd*cO1ZU^gbJLoS4++Q`HPQoC_FR`TEtsXgl^0aHk3rHGb)-ADvmA^GS)8V|uDY9Xmk`;|nyVS&4oGvoSbL-Mzg9+t2a17Zukcs>{q z38I$*(md_cE+jyT_O&T%dQ$K^L*E};O$-&fpXb{2;m8XxEl1qAV~z${4<>@*y)6C$ zpY(Cyd~#E(twE{Kh(#o)?2c^CR|6bW!EE74fo7rtQmkbwK6R&z2{Ke1-?;kwio} zNf|Oo*qfym>b~2pr88)L_AJh2HWY>kphIwsz>qg9%*4XR47cf{f;whwWXau6iy=!} z(By=fPyj=bZ@m{Ahki-WJ2wo}401#kn|;Uw%ayDeSCjx?9gB*D>RBGcK`^EzDiW*{ ziGQ&G)md3(RkfTzqfRQO{g!}HCbfx|v)%g_r{$!ZVNO&N-b{!D78~tl6#oaX4o4_H zeduYc%}(TSp>d9iYLOM7Kx8AAnA+tAedhDTLBqRQ2DK}^+YTi&TxVF1vF!sruVG?FzAl#ZRaFANIEP2s?tJl2lSGc#cKS;e_NLOIYb z#lGa;SWm>1PK~jS#ay!1;6l{Gv&p!+j;#Srzo9`{wZ30%Rbff~Q-;mTr5@;sbzqtY zo5_yK5Y0}jUIdwT4}H`25y7m%eupfKzEbq?3y(-N?soH^a|M9PkhvErW%)E!`65tK zPSSX{r9e9Bit{QN>|DT_uAD1rlC&=wY@azv<@s0XWWi(+i}>5gF4F8%*cJMDJC?}3j!WmF44VCc-;hX}E)7Ecg`;!q2Nq8=Vpl(1~o7z0dYclvXaGIP@Qzh~-5F>jE0 z1tg%Ip(dOBSb@1fsxzLGO0DzuB~92F3~IhMI&3bUO$u5{VW2xzZI)Z8Y5ZW$*B=Gr zxik=0QoYB;TLHx7_-vB}Oul=4u3;ysq_iR_!LHv3VWO4&1iXZM z^CC#=O$6wnKcZSd*}09hE3^;N3e7WjtHy(Hq`adQuVm(T8NegefeLH8T8r;jEhb&R zb|Y0+cQ>RL1t$a_zGsb|58_C;IO(>>fm>@KV}RL*zt>e9%TA@pGy@|3b690>rEsY~_-A%D2$)8h zyzUVcX}AmE1LLlN?`?YdK3)%2GdKIn`e>umZ;RfzJ*)QZ!eoSZ z`yBgg*}J$&jM&p{b8FwCTKmk%?$0lL{sV_B^+ zK4VX`)m<~sQ@2C~gIYLNGZPB1CG>WlHNH-|*VG||!sei4M1Ty2rG+gia_UvpvuZ>g#YQwYADw+P99;JScZKrWH!k$+h&T zu&wihDfxAQ(mWxia9nYU`U2*yZIA3@_F~o5$cXH;Tc@;Zzdz>x`{X3R3(6arI8}*J zQ_dkx5I{9mLy;^|QxttN;Lfl$cICQ%jQRV8>dE?coC-*{WL<>uy~UT$_JR&p88$X6 z9#7Q*i_ay@Bv4ZUcSs>~tC4isoP-vl3ICXQ>foyomGQU6aT!{EUrz>aOb8!ey6 zPCDbmEf@d`JM1Ge83i!Dv<>p05#&8+glwP_nn2cKa+8=Ul+CLmFfY;N6(CoxUI=mI zF@*A4)z?z8JT!i&0XQ`KNFo_vAe;)QeeYEIV#67FzBVR zju$gL3`f|Ycjm!r?XB;5`%sv%kSfXhb$13i592D@YtP(tC;$zAEgJK4M{YZ9Gw`Se z1o5+&a&Qq&L*7?~=_U3ELMP(LGVtQBQbmHF>h!;uca;ZIMe@3EV@ckHfP7t6U}4+C zVB?6r^_fvvFuXWbhOJ&7!^efEjJo{rE?cP5TVkQ81PB|fjNU%QbR)@6c*0cV>(kq! z9$*KG@cgR6Pyn7K;AZ$8${b-_=w`IAHPM5&t@p~X$pO`6Eu%e1%DD3PE3_c>o(Ed* zwo#Yi8*XGA=J+1NO-pr12PpON6nGRN2&Y^3XFU|DQ^CC$8^%B>3bh>3E)KNDq`o+e z%wQLg;}fP5#{%$2IZ3bH-py@L0`nbcl0mmyTiI07*#Ot%+7@?|GE}%pd$l!&wBr;t zJj(?*OJDQD(7WVZWA!V%)wL-KR*fTq+Hd(2ei@v5?IeuWijkP@@uu+POd|9r%{Pr~ z-28={Q!@dOKmg^x?9g-q%4)Q^zvVYuLY}3k6A@G*0ao;8mRsT}N-PXUTQmr4)9Yi7>Df{Q15uZM&i9T(N()C>A2B^PCsJaV@o0D(=7cl)Y6Ba%Rc1r zzW##dZ7$wp9kY_~;ETRt>R^}kAf3Sy;1OgbER3#Gi&w4naPJcEJsY9^-KunT!B(UX%RL=7r;!{EA=+Q; zp&G3Q8cp!6``;k8A*s{~WQyVp`hZ|$)m|%sO4JVu={NcpF$lO)9*~>koEH#y8zue= zZr;GS@f9#h3K4xWvJFehG_FFyff9i!*Hq*L87vcj&BjDdlH5>QsdD`zaM~cX)aKS} zKI0Sg@g`fl4>#^nsn!Kv(GIJa-G8xooK5&Yj!>zX9NGu0Z(bUwjMFj!^nin1EJ9tM z_FYG2k^V5ABFhu-O0jBC z=GM&6En;ZOq*=kFL1qvRv-t8WN>@txK*@xo=l#VL5~g*^*1fR3`<}lwNl?ECGVTUypdI}i z=2I?tA&of3r8l+CrQ(vdKM`hnnOi8p1OIcAfdN!}_mb z>sZAJdjJ>KxkU6`UYSy+{J-FlQGKEK5Jmp*z}UJq!cEDTf+VL^qsJyMGxy>XRlg6U zDxpFL+hg>!YPb@a;}ZpmDmWRRRkzQDyJ7u;Xk(3cld3kyYYd>Aho&-1w&cGJ*)%5E znr%kOZlxzYxWXMWZ>N_6yIXUS@O5jq8*~TQgnjPghWa3bMpL0mhK1jFhQX7aG%hHd z8FexVbZ`d9HnMs-z%I;OJa`+9a6Ax%0=|4*@(wMPM@&{R24q^Eau+1)a0hthFOhf8 zbBfHt;a|HT;ynQAvSXGu-fZzpAs*I$kNRJj&c8V1Eq`{m6qFW~agLZPm79*T!iw5fR{>l4l_yIl>G64>uQJ})r6an26ApW zx>mzfQyvDcrK;33tc59N%l%aBpbF}%xIMzKyaV~2`#=GTuj^J>nFUa@*Yfd8YT>36 z;s`Jk)Qa>OKaoVPT)Rq5B*v<#3t4|R5}gGTYdZNm9tc3hHp?rF~9(u1|4 zCCBOzu5n)~=FDPiKIrRK_`9Y>rJvqg=dP}jF>#1@Nl3-j7+#lRa8xNKW&L;=|G20u z2L)z58$U(sRKN)7(&Fx~{Z|XTvO&OYy%WY1Tx4Qdajg0+vWyiom>=$aYd zLjgCpAp}a&!)xcgNB)Sf@B(a8TB_iD^4a-oaest0q+nyK3|4@ozTJ95B%A`n0<{0%F9+2_L3XF z0~k`VtWTbo&sauA^15{pYIYNDqLIC+EGq4KH*@5EOS6x16OWo(o0^vJQDuKPUM#vX zlblYC`Dtms(lu^M#~$6ne{f#a4)(_iS=MX(lz&d((Fofw2;?CG=)Uvr>hpIM)+P(L zdX}x`q#Bc-59*WfrBtyF7<)n27Zy}${QR{^sIB+!fHSqBc8p}kQ19tyVO3aEr$#`b*-IPzp3bb@bc zvN!>M|9Zj9b>ZC`Jx1&Xh5@ndxi7J1{6SVvvUdi|AWrLg&NACDnYe*)QLrpv1C%j- zm@4)--pLt1TEt|iqS2gI>vO}hro-FS*neZ`x*l&EF^O3a8}bgoJb86r*b}ncId|<9 zq3gPGjOre3Ps?z!zx!+}EdRNteiBD}fKv3Lj9g2aPHBfk4&OxoqYv5N9GV3!eZ2Ot z@FHwdb%FTwQaML*K$g#D6#{`<=K5QD`x0SL)sjDP>{ zvjFlXhdUH$W(EB;Ys$1eoubsGYq|pO&v>Hh!(IAmLd-7c0SkdmyuD?GjgRkut7Ze$ zm2rxANPqKc#;lq4k{8DBAFx`~8gkSBdPb#uZX2E#=tf@j&=@>l$~?SG9)p0#d# zu2AMb&I#;irW$W#jBUL!Ou@oguHG^jgo`%BY1?`4I7H*a=z&GG?;2}ew+glwSvNhl z#4%_pOX}rfWx|31M0#^0cBAXg*-o4}iyV?AN0iw+q>EP%QGvEIWPg_gc*EYX-!|T` z!6Q-JC-!dZBortNGv}C_%74!2G5?0Cl5l!O)N^gk#BS;vFk{@8w z_Y~SxNP+*R0!5=?ov7C=!p@f{$tNAkcXN1P6Ny5Ep7o8=mO`>Yg6ZWS?ytWz^T8S)1uZui&P7ph|kDH7TBv4*X~rKS6NkE&`7_wULdFlzW|qf0xI zwLCOwZH;}=Zq8Mu7=McqiIL*+Ooq|+Y-hU(-^K$;-{>M8g!r$XFSdpqzYLd@2irOx zDvVDSehCO}*Fpv{gmoP1xT3eZQnA7l z9@Py4gRgbE>+6Gta%QGDD(Yqpn4$m|Ih=dE{=i3?i12?qF@LI$6Z@ZK=Ybaa=b9|UA}tCDIzYxQk@Psg#^}QT+Iw5tZ3cGfFYm! zS;Kb!Fc$`|@qa@k*jr4;UwH6SbrE+vc6 z3xTdHzO7)bRZ(XX( z$~(38l_A(z_koX+4JSURjk|p->add2q&I239`42B0qvRoQe%|1Q`?J^IZyXcC zQD7o3Uw^qD*l**14Dz-jgydNK#yC(BM4hU*@k`=Ww9<2j^`RyDKPk)MH9ES)sA(sI8YqBNvyhliXjKm6> z5tC*w|JAXCGv_1o>A5t2J@2_93B;Yr9X#eMUsHR)OM3?dK51JN1eV)8%-OVempFU7 zb6(_J+_Q_{ zQh)XIt;gS`N_O(6t04O9&ZXw~O;8mn(c{23+AKNrk7cYA!{99X>NMY3W^leqhztLS z?hS77S`=aI?S2cf`Y041VjznYm32HSpKyZiFTgE{Z_bY_fOaS{)Pj#kvA#CbM(T&0 zY0xz3Bl3v#Rqs|qMi*{haMk$%k}G7me}7ICP*1czMb-Bg(OqCecIi>RwvIyAq#{Kt zD>)|;SCP_aR=JM<{`}39Bpis;Xu8#T|M0t?*PaTzJ{NBhRBi20Rh z^PpSnYQ*w1H`i8bE-is!QzN7u5Ek5}$@0pz2E+YnT`<*@ zHnE0*|2FP2PG}#d4HA)v_r|#@Sq-AHAK5jmc+rGtChP-8m|cen18VNO7=QS~a>6G# z#_*dW?NNvrVhawlLnVJVr~28ZKZn+_osB{7H%b!1YqH^Ne*vbZioW}HJ+@X?<;5nz#;_cIIm*y~0h2BqH#u(d3i4i6{M00bKa9Cn=FMsm+tZG2-^Pg%b z4zZaESBbdApYwJ5x!CUjlfV!ojN>fzSv#7mqXH@=OnVY_y~b|cO1mqJ7Mp(vW){Lj zKT}d#{XV|~;GnXGa%;Co$ReKc23OqCBHsaM0R#S?*1Nvv(!K^f7mhUA92D-Eh$T@M znc}0dFJ{UapF?^oa(^82jzyYA{6LQgSHSz=+3-+s#jaA=o)u+tYsliA0Y7!-EbX`Y zEbqD_JwZ6-92#jj?9fzLzi!9=*01gaom?6M3FYm|?bg;cMHfCROl#ew)*22f1_F?* zcK|1NyT7M7u>NOjcO4%oc>e|OI7WXICG1YtJ!Rr`A_K+h-9OU}_SDIPlb*VM_rs=b=vK#bx!mfZ}?+S-MT`##o8J@$=}m(fM+xKL2{H}mQ9iQR)$ zEsO)=>wEb^>Q42_SB=GPz3!0!UV=0Wp^9Jq3KmN_v3IOwZv(mYmxHoLzT07GJ{l7% z+>LlXP(0Gxg3aS~l9J36X``$}$2Q@}znR@WcX%G z!D-i2#(&J8nDr4yWV@WN}{ir?H}h*mwXU-0I4bKi|ji>FYvt?X!o0VgF3;= zKOYV#E>9GrB`flM2L$)*gidfG5UH@d?HpUg;G&RW(WcRoB$O`;`n}@FVRn59q~bDhFq#4 zFWXzU5H!_rWpP~Bhuj_SnE}UDg&p4hOPc+GZ8WGQ5>oU%zq>+}kh)@Uwnw=l%;aktFBXHPkfrKUh@6E2!J z)gG;QGzAHjZ!=^BhH81%ypuNDLOC=4{@W$|5&4HFizXz$bT}<+ebVuZFWrNghL7Bt4S2$4p<^1?iTD!d*cHC zNIa>>YLT4l3z?N6#)i#sl7SZ=^x!^Lz{fY1`D!U_<-Sks&v^T_AF^ zfjNCMkn^~XznT@ZDnMg3&}i8dSJJ2*s4K4KsN_38DVd{;UGd4HuNR@VrhlkABFhEi zhGfw5f)1mCM|R|o`a8g)@8DtQ;LVMRNnoE$mnCF?ss&z%;oyERkH;+b9OkOx3?GKd z5?q*Wixt1wcOoa3#}zHU7#$nPz_2C_=yL)R(jCJlEll-I&o39#1DJ!SopWp;OS9*P zK5l%au%91f@Q+JQ3~e&&ntz%YBh_zI;V7Yg?30L|sm2((&g?NrpcAtZTuLOv{*25H z5#}$0p?}KaKbNHtiY5K!Pw$uC25{SJ=o*)`jY5;&Z-(O*9o^z5aaR2~%153fuwTS! zLhB)t^A0$ER_hMB;8zDAK0vIC)eR5);aD}Oj=`lX<_*C^pH=h&;D0%~%6ag|$oE%N zgFYzD_0Jqfw*R!U$n75k6nDUt9Lmy zJV3&#d?hnzK;RySIljq!?qH7tYHtd|v#I9O5rq;(upXgKkbi#IO&C%R-^OuMKFoKKIU{ZwQDy_}Ecw4l0 z$km!tdH{iM=Nc7WY*e_fCT{8x_&M%J`K}SwR`Uz|S*&Wh0(0-m zo|_CUUko7{xw~k+infEg2LGH+JtNx#lG;!5T!lugtyZP|Mt}Ei%mINjECr?Dz}0ua z8xmQm4X;PQr^k`qlZy)$Dg|GEJ=sQ9s_GRDG-%`otS$CrSt!PxcfccEIs~U?-!Y=c zHUS#~|CoCcL=*Qoq z&uP4hcS^iVQ-5v{EzsY$7Gh0IwE@8nLC>#ekt71gT{N@VH}U;#+hN;yZ^RJGKhix{ zXM^_-;Nfxy`_$$c8$Bmz?U^Y8Y9j*t|NgL%c_LIi1Il%1dU0oHtWZ-co{w3rQh9>x z^2rU$PhoIa3Ynq)C?y8SKJ=En=E4ZM{graw#_Hzx<9~Zpb487+v1!;kYnjEJ>txPf z=RPV4yq4b|Z;r)VljL{|ZveZxK zj$-?n(tqyf^vk~;raWGWgN-19IyzIN%M&9c2vm`6#a`3ZwV}R-wvnG6CZ7&G@i1flyG`E)=^ z=yDM>`$BwZk)xs#`@`n;=Bxj|D88193XC5BON1iE3b*5}A|xfY&N(hG{E_A8ij+K! z{mpDkaOtESKTg6vYs@y{8<~w%DU1vQBNL>IZjL!|4CIN+{aw@ z+4s=6l zsTw;&#=^+iXG|}UTAZwR7wEFE7LVIaVZ#=8;ZFgg%+IaTSiG#{vgg>>U1HsBY-kKV z>S%BKA%o3Mabf9U3SA0F9^8R4V%`qe+2lwxSv~G=pBbF8S>u;1=?CYZq}4}e z%4!~~WF&8K{ivYxn(Q3jw>HM^9@HGQrV3lbj}#qruhXu0`e=aNzRO+DVdJg7B{R+*G&)sadSTSjc(Yq(^9Q z@Q_;+UXhpfG*|g0F*jGbw|~vsVgAeNx(rSH9d)4c86*Mv@k7YLUO)2gmTDRi8`+Rj zwXqAx*H11rKe48|$!1NeV#6ItBQQCSuAgnAykYt=JqqS2>;`@ZB13??1{}62t~|eX zrwBjeQ~k`BHnZB5QhlL}^Tf!eh!4_IAgOcM{-unQCtPvB-j>El#DC3j<6>)j+kLOc znsheXKli%|&a{3V9-lF{zbJl?tR3;0SYyRb?)*uk)$Q#-D~q8-zSwfeob6CgWRhVJ zmu@Bsv^IFQzK<9IyVLMt>1YZ9mYS zBASm;Sc*-gY1HN)0m#l6{+EFJ;a;JkkwLjP=C4A&z_^(x!hc)z_MZEQwZS}sALZkp z;50%3Q2jf>v8LS-l)Gzf>&NaO{5!c4RtTK^>D!U_BV?Elg`X%O%_z_)>F#0J=#hcT zX5Oj?R)}KAqaMXp8~+#_9F=DahS~9=N(yb`D;^YTm}N=On+Cck&8pj{c%()(T+=v|q8vI= zI{tzs#*SJcwLt0~;>749q4FQ$v$}vGpatsHIppCO4jmET#pP}O0 zSx2`s10%@lBL*%J&usT=2xi>(-T^r5@p7FKdss(552a#IU?o!{YzGO5j#8l*k1+II z2A9grBY&c;UyE;_^t2vXIrF)8$@V%#HUoD80;Dhdwnu%Ms!&pg zYf89V*7sK8)4#zV{!Y@zae?9^4~{;?T}|MlBtbEZUok#(jbAA;|F-R9Nt!zQNl}Vk zu=|BTA+@6l`6=Id3>K|Q8Yk3Axvio;KRDZr%zq}#KFaQxG&Mhow+>yC36J>I`5kat zoTcL#q=4q9F>1WFPwuOc+L&18j4O>eP0zoATUpqQo}VBfky~t4ab|IO!-4J}hC@8j zCMQTjGK?lHV>4Z( z<%7g17gSdeL!1`^;8Vu&`(SX)BuDB*y2=P~$#EcEbnTyUqD$?Jv9>eC2#G@qgq_gj zYsqP|G3g0uU_(k^x~(^u#@C?^)v@lTNPl%;(fRHxNVWXb#F3pEFBmakdpC0miYVzm z$CuQVjqfLO<~$X$C$n*Q9jLXo$=Y4A-cE^=D1Yrt+dBQEsplI>O$Qdpu3$vQF%~6{ z7sHtj_@i(&zb6&nwy(SSUTGgy+=`L5UTKEe}&o(yIMkpms8Z$xbIAHSK%QTiM zUWj+dYGZC_ue3?=sc2A_FRjsbtuJjUxE7#MWvQ0#wah)|lKNSK-vRx(06&Gd#n&W= z_a47VRCZtK49pslDY#mbpoMCVg@06?LUx~=b?XPaP2Xe6i_F{XHd#@+0(g4}MgDn7 z&s`yo;Zxe$R1!&%G6!Oa@TZ(7f9KWW2>J?t~y^bwcxvCQPrE( z67SY@Q4s}|?o-EoQS1M3((P;E8?7JKhJy zL4U_Jf{aBMUGz;F9)B}m%ek@Vei+P)d>SgTY?J-{xux|?9*+beVDr=?vUZGwJyaWr z#pOtFmIJkT+Y>=bE5Or39rF$V*+@~Eg&!b~bjo3ugP5RuMn^zA8$5_ExlBaz_x~`o zlC|na-~IrbWcp@SYb5dB0qE}U0FGy6y0yo^uU>}>EEualWPj^8t0{@7CSx@?!o-*~ zlzZO+gguVAYqlTiJgVxp2FB(&JJ2|p4{ z3T}NR+6jE5PK&FwEf{_WG^P(5xDGuJ^){wm&{3Odc`bbUlD4Nt)q;_T$!&hE&ya1L z)Nl$60X8H=xPLJgT?O_ke^2vR#u9_&{aj#uT0cc>Y3At6!po-i<@H~slbNX=liX9K zBJwduM+LWd@`-OxmLlumU71Gju3Pkd3Pi-{YUJp+?<0fbk#|7k^?>hwjF%8mk%B$( zn0qFM6T2Z z_qwmjCVJUZAasZ;S<0fHEuYIH2}DD8E$Q6AR2d2^dIuoA1B??eZK=6|F+Q_%Cj8SG z#pB5vx!oexB3AnclqlU6V&wn0Z_|U`2)sV;#%Hc+1woi?OC%p}a;TZ9RxBtdlcK!Y z4C-2c{eRvub~YrX@#9aQO~sd3m;1Z!!z%qD5?i!VEbVzS_890}M$?ra$&Me$0D*n{ zfjgPNMwtP!NBW?5K*;yEKZe*>(N>w3eJxiBpE4+)!h#k#SZpbm7Eq`j$fJWmv%&JNTP!Ps_Y8f=&qQ{)M z3XO{?YeymaGDdo>@8F4EZQgkY8=5Pr@1xfz^Ni3=Q?Omic_Yhr<#nq`5BP6F(JiJd z%!OEA=pGO9_Ls?&1ecUE$&kCj)jAFd!jEVB%7lJ6^KL}jNDy4`NJ2IDFMqeu+gv#9 zReuHQTApRBtgJFt7UsQ{W)&zkO8LSGDmoYffbiG!=i=NO8^SMU+V#Vqpi%;`&sSE~ z7h=2>n^LA89{Q_7(}0JX0*xp2`C2e0++hGH&aFn*O;l|B87 zl=nMe=yI)KC%up4K7au%uUN)#VD)T;wTTrXeTaZ@i~uhl?PJj?c%KJ0I!`Uz(tnrO z9kew?2T zPNPbL?mkAzNF)j3kH$%qIfC?L0>AB<{|?}NBz*z<-3+7h$ek|MjP?K#8L|{7Gr%w`*OGlLu0Eu--kxBNW*5^iq2P zLh_naVaVp~o{KhduQM60MmahT6)i{H;NVSZ@umHMo(%Yya*y{~{DyogSAPvb0^isM z*fF9^oII4sb?YZjmbi86jr@qcA*YUfV(X~5(2PKE0vvA@B(F2~@>4ds?tA&tkIby` zxhOyVelprE2(ag|kCL3INNz#^aqSga|N14;$+Mm3XK(+&N@ccA&b%+U z(22lg096J~X!Bk!gCnL_EZLRprj8KeydpS$!z*hnTDxlgE6`X@(tp7$xRCjXqcNO~ z2B}Cx`$@9((>|ZGG?H3@v_qxpoT?o6-}S}Yj*W|>amLbxG8_bdRr{JYX0+Tlino=X z#)Me+&zGdOJ$UX@6w}k2#hEBb_j-bQd_w)AtDlI1tf3M7=Xg{U*oQn>!7u|o*td~> z=HTTwB!v7k0sDVT>3^9s-`#*1qP1JP6(dv- z=}_dk^v``FQ;_%+b`V>DW51a6{BqTxH`}Rlbu0!Zi?I7=JYRDg;~OW!%stku=NYHV zN=p|pL8o4=f;z`h?nT0+Qns@XuK5wTlVa42+VG<3N4?ZYqPII4Ko-&GiQB9Tt*tl8 zv@K^9>rod~n12-efRSaLrl}#>7a0ayOQtJY*|~GGywzhq!R`ibb7%PDsmScNlmPzv zC}cqJZAb}Iv*DxSGI^*fJ$`jvrmdpN^xZ!^fXe(+51Xu&5-%;FKD>c!Ntv@acgi*C z?O?)^qw{7iL>gY4AU7Fmb*Z%lU6m>Xy8d8SKc}`spMRu3ISjvK{^*zHbG7a#;u0LU zfV7O&F~R^)E72syT7CM@YWW-IrVt-sG+dIjD{i2HK8~b9~D2b6%4ixZeiVFvvFJrq#Flm3pa|h8 zIngp)1Z*}23EZd%(TQAm?d1xX*xHHXApion@}Le-7r>-mD(kI9>M*|weWMXfLdfxB zon^tu;1A=z;`~fNB;SlyD#+t8qO& zlhitF09PDZ>6w;P^L$FOu(Qe-{tV#wL{U~#iZ?Q8*!g+E9`zzrq|>8fGAI!3&w?^~ z-+0Q&lxh+SHBDp>Iav{T@XrIRgl{&h-!W#mNr%+7*Q1-haDxVWY-d&&?_FOTAzWMu zF@IZ_>^6x{j3#@VIA20F8{=s`(2E9!U-CuFeh;34kHmK+!rY$}?tMNc9B$PQ4Lmdw z?XJ8QdFHXKtG?v2HndY<&14?kE=SzskR*mFofSH~TfjlLGGwkio51J^rK}%(sptiM zh!+MM8nRN2*WIP+-lnAcYrNVmzF8U&4}TDZM^N*x`o9A*p56hKei*OSfhHf~Oy6sJ z_b892?03Oai)XvKJ$L0S?a%F#w8FGl#Kjo7acQ!sP{Mno;M^-!vTzZB7huF2lTKhi zbNMJHyMO0ciPEv@ao|?V#^f>D4=F=)n(hqs8zR%gtXiqF+q)VLa1R8NR`#{5CV#x` zYM@^$0BeDjxHI#-DQ${H?1;)msE%jBr8VG-xy$5azha?Qk{;{ufwQ|4j#k6jr!L_6 z(*4VFgm0pxB{N_|?5D7xl)e*)ylI0u@_*K}4`mwjC32e*Ju0y(ZqO2+KuGI@I$<9^##{P? ztX?KU^JZ^(=tJfc+IX@TrabzvZvNH8GNl#y>VVuJFxtSHIYp>Q9O~a{t}4<$$K{VV z@a*Oz9h1MlvNn**ur{{}isKlH$AO2Jqk2iU{R9qqZg(oOe(J*8tbia8r++OP9D6-E zz5`&uLNL4A|2`G#%)l3cd53!J);tx9PGnVijQ0VP+k#(2#h_Gz9q{eP9%?>$vG#Al z&CZKn1q9od=oF)++M^r%!)AF9HW<}_TS?cYd3J@75#A z0y)n-%-er3CFNpXXkLWj9)GOFAEZn^G+qDt!niswlSSD+vM~MdKPmIvhvRt*`C8E% zIU$u2)*t5%L}ZspZ79DD7r&Pi(qZq`2@mOoPonLX8!~}&L%YdNP^uqi20e7`^U;wX zT0Rq|3BeHvC3^u}l;xiu_8uVEw2HO!gMn}mk@n=7)ENDR)U-vVPk*X)WoTbUfs9;= zeIgnC?%o=!jn*x7xAupN;c-wMo$cX>lw@7j#1y~p#&!a8hqr>OPPV9K&+j%#&mEXq z3T~LIDW}H@fbI+L0LQWK-(U&RWH^d5$c`=%Jw#`)ZgEjZ~sb| zlwi~-wP=EA@b)s12KY9+_cVqvtf15EWT9>jcS$~RsQ)eHJjB1Ml1tCx+ z`=;n8S7$W{d{G=+FP3ve&e+E1KXqQpK@?^X9Hnk=NL%|n#=IrFs=9|>v`1yk5rN!B zBE2I+9Ku(jTuvl+;rHbo07vt&pho=AU*o$uP6F$;`*OdNQhz_Lf^UqXsOR2r9&ur) zuB1n=pVD37oDnWmj#e->q+#RB2r#uKfTVXdk90X1FY1q;`@nOF7XgUm)p4JJkz(}T z=}cb$;(XIdV;mTY!Y0m2_j;j!&T-O0-98k_=@cl@V+?$x@$AiA!Bbj>DDGBFNeq)= z`Z@d4eZ7FQidl4n{7FkvW>dyLe?AtDsvQsBpy5>T>)IO+p*DqrGK& zRG*)^+!PDRmPh_2eTtlWj={_#i~-Z#Lbc%B@H_nP&04t0a6i5P-NJ`Sd^nm%V9~!} zMDH|_uxiX+k|{5`J)K)B-z9EHsw|(Pq68GmT}A9R`hPTyL^ghmjCFHn*cQs>`LE0& z=3%Jbq(m5U0zQ|i9xbbH zN$4}82!GGh$CL>1sr!n^Np0~~t2(I5n)u|ml%&6xw~ZT+X-pJyzE}6)oF@FLiKvK3 zXO=Pv^F;M}c2?=cgv!RcE4vR0P}v5`dqu!}KhONv70cvz_oDwH_juj`=I?-Y)km+a zy@&8S*-k0cbktwwdj@#gX`izctd70=sT>Sf>wo9uKY1B6k2;AVY3%?bd#)Tx&M`n$ zBY6F}2|1`sjYmyr+}n}o)wgX+{!>4+^Aw8A*3ct3pcUBGc)}f*?_=%BX_W?+3K%#P zkS%X(h{y(3r7cB#8ecEYq+jg|?mR8?!Y9G4ve*4S9zL&|3BP(wdR7dN?=}9o`OaW@ z{eL}epDOuIKIdR>r?NCouONNX?j5UeFa>Kd562_ahnFACugi@Ala=x6z&!hIY9K zv27qRkY#Z@q|d|!B9Ipmm)~WyH?1#CQO!_Mrm>mEv+5Om?cn-xxX~pXMcf4f%5*Hj;E9&6k-?zg2d-bV0oKlGSodREp;O|CAN~`eq z#e2AMLQ5~K@+;Lc*O`MvI@L`viNf|T-A|9`#y zc?EAX7J)#8HmC}Bi*Q}yj9$s74+x}GwHtwT5_VOFK_YV8pF&AyZ&d9X@kItCxvof%Q8Rdbkgm_v#ozitfsI#!PFl#T)W-uhg@_s z2q+V?|(Z0R5F(sq>RshGDL%>1QgKVv&%H8#U6G6D*afB za*~CqF;Rs^K!Dj^3UN*Tz-b;qP)W_Hf%)CX3{SRZ0BzS? zC?T(GC+y#*X&b*LpPci;GnvG*)(lxQ83f1Zp5QgCSb;T;jOg~UDe9NHm#vIuch6Hx zFy#QiB1$YS*mI3XrXP}bpQSDGn5r-!mgWmxW zETNN;b`$oP?A5XGXc(EM8b~}H7yo*uo~gEzawwXFs9CKA*T;;WpZ@wYqd{;4?`3C2 zSRW&H$cC!)2FXw%Ciym=JZm0N`|kkMsgjn+^ZYj4S)-HWUw^ZPdK-#u#%p^zLM@JT z3>VePdm|8RtwG(`CILGqSF357j;1 z^v%k(bza9SqEk|*8#(lT3WeU!v*4}TfM9)I~?#J$M&DMaEd?fvt;(&lDq z7dt6yR>!PMS1Lfrv-0J-oT-D+hy%qQY3l~Va~!Tuna|M~9%>oJ8l(8VaY!Nur(7yr(e-HiBIb3x``RDT zk$k!?ROa|IQ2LeeMt?tqeTD1P1n5n=ZSB_%X}T7vfXUrG>(<@chlsr80y|%kYQX?w zm?mqQ-^p}dPa_&6ihd7Q757_r)E(MKJAVSlaLTPh(RaTX4Z}~_xqr>I=Y%QQ z?in=}(c%@zbhepQ$B*-aGI$4fBTBhW`&yPrlrz6yT<|(=8-dRt71AU&TiSh2AW;A1 zU*)ByICDp@bleP&Xs8*A=#Av?n%zx7?e8Pb&<6=!(NEj=F|V<=K>VmqvESm&0vXiZ z^M9Bow0tMzB+4*3O}AY<+65WNF2Bu%#c?>b3)-4$NP2C@O3muKm7 zY-8w{Q1KlMvq8k_dyDH~V)Jv2yA5*Kvg4eWYB6l^fU$?lL-nT5KO>Z~o8>KEXMbZg zesbl1Pba9dIw#^|RE-gL@^D^3n%2k}Vz4Sg`MG{waxzyX<*<5GDdSjs4b)8x`XyyT z-)xO7S&Ok=BwL&4d^wkm=e#E1{;YP7yl-#mp(~!hE2BIf{SC`%^EsM<$*Ray%P0%r zaaUYlQ_{_;#z)lLEYeoGP8(lvrhiC~dhl%{B{#2BM~0lVB=kgcl_0ABCccR*Jv3#? zDgy;){9)!y{3>v`h&>phzn3y*w49lz9SiptAmlSgY!-rWtjwNjD0;Rrhcn{ms|Ho1 zo*k@cPEMTZ4I@N0_)Sa5*RqNT@jIj>k#m{gH=Jp}f=4$^Q2y9;rpgHZ?4E$Gt@D6Z0Pd0ivmoKT)s%A0- zh4x9`nb$bCYzToXj*rB*GDdv8I$oj_bC~?VYd9pc7TYFn1d%<=zqxT z<9e33jMG!#BDel2i0~3S&;oXhHP?o&!!==(rTIrcSZuCajc9Q3RDVQY;Lu>J29myi z>a)PnDrHz)bH$$<@eV+Qpj<7ji0ukvQvFJ#YMF;DV;-=aPj6!XfGz#vI;t||<_w#- ziz<66%rNLoQiRGTOB)P1*;kg6rDpSG+lhXPZjDa0I9AnitPqw}`wp_Iz!-5*W>))X zq)G-Hh1*DN2(VsyU4MX3%U7?q(o0k3DirAI@rZwIb2Jpy&JIBu-&P001q`tk6|zNdQyxhMo6734oZBBcYi;u^8T*S11RL!#1Hsm z!bfTGYw*A`F@7dsj(Sc^bs(;tbYe^{zZ!-Yfc~7{#>x)2dodoGTix>w&ln$rnC`a`K6_7 z9|d!i|J)D{On z7wvlhvmf_dQ^jYM<{{cpv$Rkb%r9viRNu*%VPMTSDt{UeT^M&AKMK;-*LOgy5#k*J z__)`=@N7^w;1}zfee#wGYMm))V|U(SR*+?=FUBrx1uk-*`&r5#ZPG>XsI*h)0*17; zMhox94kse5Do^s7f^^T!@ipJyeP=#v-|Dl570BO5ybn?F#3~&S>ZkIW z{e}h6m}h1d0_8PLE#*2joUFyVj=?Qv2PX~mIe%ta`uEj3g{aJ!Cp$L!>2lBVoPJMv zrGI7k9*EXs{Zz7ii{f)+c{P%7JDP{}L?PQU5NM70TkE^LTqfLLB$l1tLvVkA=@LTViBmT(WR4fcBDB7a9f=UXrhk}ZsMFes<+xEp9Aj6`6XEi>_m~{U#4%`6 z;@zC0OY3;aQf8N{@b_7;Aaz>9fMNDQb-QHj_SL809POh#G?n~Y1@jI(r$=|vf@7rZ zfwE?VMZ-mm+OI#@HMHE@F>0kPHBhDJMy&YvI?xcjj(gt$7;aj$cBw#ws0T)U+Bj{i=8@EdMBX@$xG+A zFYw9kQB*JL-~oC~@#>xRHq8&`7g8alwzC~$)X*}>-PqN<UQh!uWB^t3V8e9dC;>rvmt{6-@kX1thdj~KFT-OxF=(xwf`5CgD33Ez z5rbQ(V3P2f;!VdFp1fj1>OstN)3~NTsdgOo*`$b+rQDm5y=H!jic=NJ?Q;stJ=14( zQ_2`W4>1pwH_zLjJRoQt-9-QW$O*2>RJ1Q0qP4JEPZjy@jM~U&G{X`m@5@BhxceP&Q+NNGlYeC_#xnG_ zk6ikUx*a@Zt#b-CAomPQ#0vUw=QSrrB9BD(HCLXI{e7<`SflEWQGe58YO&XGq0d^C zRswf}&+c8Xg&lc0uwKCg_>|;tefthL-@aOwo4fO;9Z75cBArL6tKVo1F(H(sdN$Ga zJk9U+Oi^B?QQ`R2C9~9HJkF_+VGPnbw|mvPbKM2E(uP&<&VQHW$Mut4n{DbYsNz%{BDsVYn+>(Mk8Z3a?m1QO-TJ&zyP4DPU)>-fI zOaB*<{qr$y)lk}ztbobDM2Ytsr8=e?zxQ6bAO#ZRv64{Q(bRNF9~xXLys_Du1$d>q zSa$FrQH`&Wz%mre8{aR+W<5Ozf8@_+|Dta8%t)^o$-rZC4GDSl*tOaVlyJmxHv|)L z-8j`sMrDo^aG1!P!+;3kI!y&7s4z@e0+4V?m?{o~Ip;h1A8b^NX9F!Ibdab?!^Ar) ztc5t3K4=#fir+u)j;S-loQH0DucQBHm%fPug~i*6{h?X;fHwCkOouFIb0vMYi+?P; zMI+kHB15?`Mt;)&f_svPEOV@pMr~oF=^)*28$mW%&0o{Cl~3IBt}Y$buB+8@Jjk2Q`M_$=Q$wH9wn|^E#55ol zFDx~2yn(tI{?o?ui=(MAi!z~^f%j1181opU2~KHJd_!sCZXMOujt``00rVI}GF=L0 z&t<6!G2%|xp0?rS_7GOGOaA&xQ}U_7&Fsdj2jyfh^b+=pV@z*{p=K`G5DJ(~X;XkT zd?-I|Je3dIHBgPX23_QSo53=s6H2p)aKK7Em&*N> z;KyI3)AQ{k?I%24I3t|=0J}1OqEKYfh|qxvlo3|f>VOu`<;KNt$M|b`VYeaz-<@^w ziEtm+aCc6QyEuDn&3fva9)zrl!AE$T>msv!^7a>JlvDcj8oEsd+jk{(HT|jByitL{ ze?p$(Z8~-Rg1!OQ|qe)EzwG=d_0_2|y*JQPDsap$`qPOg|w>_CZ{A=jBT9bMFzCSD08 z)=!nx8ey$KVHIU!?=38^($b+)7A}4dCb6kRkN&^nXOPwzZjIYFXkP}2@i*%E;CgTv7@R) zUa%2+5n?j*zM)Y)vtA-D)PQ_`^@ev}-!Fjux)e*z53I25ClW}0SL89~)A0{0ursVc zLQUW2)Tx$YpH==xeY595#-ocniyzqU?;SHAv%4fjdcKMx46uHnq#o4wMfV(CWpTk4 z?#PhpAWh%6l8XO(Ycr5)J0mlqXJ*&_+cYqLar|-WP+h_fyt!EC*f*FFBshYiu}l$txDOb8H}>E!^TC;HH}t(?O>5oP zw++IyX5}Wx7z&E#K*$gJcZM-f(g&p*4(w09T|RL_SS4`he)!(K!(`lx9nA= zt1R-KemC~_|Lm+luMePdA2&`Y1Gi*ZMLzAD-1s{H2Xrl7Xy3NU)?wMa5-HQt;lH$p zX}Wc|7G)mGf3s&oHl?HN0?dO((z-Q~Z%&v!z{S(fvK-r-&@{G~C!DKdm(hbe6dr4O zVzjYAHVJZc$%^bl8T|W&+>dE2c$=e+ONDydxX$h!R74DMCRAqh{{EkA;yq;KD;6xuNNgE9}-1hN0t zA>`LSd)KsbjV-^A+k231ipBiw!r*cF_JJqdS3}_TG8@sg3eqSDiCm6%T|EEsI%a+` z7XR~=e*IzOht0e8#%g*w{s%>Rv>lKnY4hbTV6#lR^xm$Rs>$TY-rvjB1;1+qzMmDj z{q18GG&K32)b}LyU#@K1FB2MlM|0SNZ9gTpgo-z-JD!pcOB3p?bWXU5@vlAt9=u$m zoTY4QDwtDlecl|M$HTK!gC6?X?9ag?r7nv(>486p#Fn^(pAQBa!lD(oV+D}Tnbsqp zfYrp$C^u1`E>@SCCcZCjT(++>J8#83q75x16^5C)orISVseF5Cu6F7ikm0qkZ<%0n>My%a6gkmy3fH8^DFx{fl^xi>m&5YW&W;UNcSY8)VL-zZusOH?~r2 z0?k@ZaP5$}k^R-8qV3qs8)he?BN`yYFd86BY+To4m}Q|yPxm;Z>%6srFnGwmx1XEZ zA@Yx+4a&-_ykQbj-g~qHF0pO}fd|qE=EQiAw8R+i+s!Y9Q8UM?-bux!4sUQwb`nVw zpgh|LDx0(j%IyZD8&@m#;I}x6igEQdh3tkh&$8RfyX6 z^(nfWebQ$$kva9m-n%8O%A$`V8jK_Mn(n06$+UN$k5V?Mlphp@ts^-*ZhmVhaA*du z-%95_Vx!N4k=Jak_sHLx#d5#44e$oXP-o*8-C7D{Qg;rAN+6!*cAW;=U`C8y27jwq zqFJR9avNB1mh%gqHZLPyEC!~g#@duY$Tx5Sp#`^|&sYbU%YH`+ z7zUn>`YYTE_W?VMw#X3y#xKHFz5Bf#) zj1jnwzJsjYBJ>YowN_PS$c;HjL7D@5N8>c`%Ly4BD>An$t;Eg}OZN^fPkhF^inqDt z4Tn+)h{qdldiTYLTnNA&IrfHUZ1^2p?~B7l2Nx6rLuFowjiDlq{yaSnU%Fyl6r+63_2*|}r9efLeDb_Jx0ajgx=axKjG=EXobmivI-2aw1Oyqe>$_Noo#0 zd0s_;fugF92=p?U5itT_f!2AhNAq`z2lf5Re5f&|UmC@tE_6O(TtIk<`2&U4|KzY@i|J5R>_&+%W>1N@ew>mJjdIx<+x6q#q}O*w z(56t>(XlgNj%@?XZfCJa^7#Rj$`$zT2ox_QtJkjsW^Svo!Z8&g=bZ%i!Sh9XTSK?Q zc+T9~K|0@UDZYI1+nrAA4|XaYhwp7(&nV59OdfEM1}E;m=XVYL*E#8`X&%0y_`q&? zh^~!cQyGLwwftVaVS!xZZQTSMKyg|4M@w{Dngs7DZD-x7St)UL*p*~hOsn7%fA$o^4Tyu{n!{LmY&1arHuXnK@u{4&K_ z*Zk>8PWdaY?sD4($08rt4Jvq6a!^$7)v&YXm#3VSyQ8Yx8|2g8bzND`+%AT4)!YW> z&x(HOt|orqQw?yzk3}ycGfxyB;!=p3F{YQi8#)BUjl(}Xel(~2*~A^O(Dq38ediit z#t^r;wB2Bl zSNZS&yc_f6p*HU0SsE&z>r;Z&z(H`w%gM6!nEl!v6iANrb?S~U{1SOk{P$KSuXYF~ zW8~zbN2!j^ih=k~)zOtdO|2IBN?l`SAE_Kmg!K)hsm;bGYi0B8j#hwq>w9MLR|X~R zWWj@v;S}ZbZ+%J^?G-SN$3&%Sr^{TJUG;tgcCoXa%-LjD>LapymHVAcR32h)0{FgL z-sPBjWW}QDXPM2h-G2F@vr*n3b?N+o#soamAXZR-?6GqA9WsjA+LqIqP>1)jtWvOtXT8OP^SRmk;TJ3dpEw%Ibmu z%praUkJf}4_o18sjC}+(0vhCW*^&pVM(g);ZrMxDx&g%SFUXyjd z*PsL(2^!>l%$i$2c(Tn*Cr{(C&m{Jzr_hBF+0OZ_sh~ z8>nd(M_=s%3)%a+VDYHES^ty7+jm|biWGGg3Z1_-W-e^*vYEQ`a=ND}+XISTb3SmY zahfm~V#+jZ76<9S%a_S5pI=x9vUZI7^7pe7S>-=~=bK4C*n;_k${DzKRqvQ3H?i`= zoF(U-7<-$1bFZ1W=}tA=zWT|T1dK{JV?Od3n~982YHz1jF4k+fNfvvd3728wVV4hm z*4AN;>T}7pLLQzRuTIo+!~8CEsN(llR^!GXKi1Kbfre8|0rJoi-&djrm}dM^Bb_Kr z8@>LR3ZpS0LwWtYm1@q!-|@Sqm5QIG%inHhx>1Tr2zNsRSF-uv2saJ>aYhP#(feCG zvB=fte2uX#XqP2U*1a)3f)yjBva`R@%2!q#-rVn!63lEQlnf4v za;EKnoN<|ct4Y_Gpx=9OYAF%IzsQ34gq3JVy^CCY|Jp7+JI+XUMJa&k=1ZN~t6Lr2 zkZ8H8QVi;~M+f*v{VHNqmS3X(C`2!Gjw`VOh8d#mOhPpZerN=58Ucg>D-Z*U{g#y^ z+x}uF&9cZzohsJz;AvIxWQBU&Y2a>hHqP4IL@;30|3g7ADKijNu+3f0F5NO^afQCLw`Mu;NpDN#KkQVkQgb4C9WVi zeQ7}`gjsaQD^x&#w$@@M6`JresE1|FW$Y+%Vpe^?qf3s2ee#v){+5GzhIT*gAVeuj zF%#IvQ$a+i$&7_eg7;C+A>K1?lP@b2ePk7!9o*eqkDDk<3^>?(>H{0D>m(VWL3?kg zezK6O4m;7;I|-G}C84S(a4VI|*#!MWqpjNY&fjCyx?Qp-6#A7Z zqC7l8ns=rd!-}psU?#YP?b+sGqr6A(+PHW_w_e#l%`XBrf6K>-JJwL*SUi|vQA?1j z;CEqaO9WFV0UA)!L^7y0#-u1F&Od$XeDJf|zv|6PZ$q+bh8#Z@ds2%iDt+Mpg#ee* z)*SDa<~Bc+dSEk80n9Wt@px_`g-6f+vh03PvoigKKw1`2ejpPzS%$7@Whk?3MHZ|R z`hG|K*VKLGF7m7Dv84OwN%}QD;T*jaEL>(Ih$E}{7?4nz0(DdJ_6BheH$&o~To@)X zkAE;&G=j$CB)I8@r#g>JN2D+jJCg$jEk*Na!~A?>kY@Emy7Hjf&5ey%idJiyC3d+? zQ5kLtc3;SY-BD#2R_4Xsa-9RRg3)J`w-F|pPbqvQRC(syew{?^epjaPDezGB!bsVx%#c7ckb2>(cUx(f?^B-@ zmiB-|Ga|n268E~rp%UTr79Q69bRb`K-}F-bk}w{DLWW&i0*3GW1C`HHG7-&22Dw`% zgu#EG`o^yBcuwnFOFEyJ0D|+ypQsyagiMx;pnF(Vz%?U!b85@v-71R6>niK_^Du>y zA|d^doS#IQietcqda!bZnV<&d)@{x2CU#?vqRe5uo%s1ep z9+s($uE;i5og5o0Kl5@f^h=?j=YwFA~!6K#X7DAe&~JyjT~nbK7O?*O>%hf6J*R${}6ugT>d8+={Kk`wSNeQ`h^Oz zzS@)waifv}38GEraeJ0O|D5W3EwyJZHP2Gvsq~Ih%CXj+#HF&4j+Sw8Us|DV`Gv5y z7;d=_&lyM@?8lSb`D>`) z1S*Iiq)3>crVsce zpNV}`%-Sv4dz!+Xji9gR+&PmV|n65>`HQ(eJDXy z6Ir5kW7jA;)()!SvaaW{Q#xRp-NBgHdr~a=052|%qnqNYO{=~N#GmbKue&P_$YDAA zp%QF_K>uroVDypa)5pf8ns%MBDB9n8Z;l0{`As#)G%}lOn2`^{8;BxTB)=NP3VVUk zRzr}Zpx(kI2NceT+y1)ANz8ftfDId~6QYTO+{gI4fr$b5WaD-NM*=WwHN+&<-gtgh zFu)S0guuo&06s{qI$Y*3x?(=);mg##ap4nYE=r zYLDZp+rA0qFgc08!xcG$SzM(%2c1Tvk%-%2Noslg0b!hD=737Gh0`_h$gf)W#hO*AkJXMHPfy{mE%QIF)RU0@FuTR})9@5lO}rolIH{?d2{{2za7h!nc*k~w zQ1I|}LLwleg z9u4VFwX+=JH1l>#Wl>UwM>65#jQrkOsB9YRp4BnHqautIHONWHr#aQM82?Tkx*sk& z=<{c2qY)5hUe-An{ zAu?)W;1gNs_%6Wiql&?p*P`v?(j7S9*ZfTQ0XypqWbce^bX~YvPu9oVid{x<9pgct zZ?4IP)#tFkvQSc=_%+9DP92R|Vy4>LdiJ^)0uf`;JVMbzeG9OOCeAwT>&D2J z@+xkBT9Fs3wrEMtLwjVokley(+P)8(tuGoG6neD1gaD~BG}vwTT0d$;0(2xT%L zqQMeFGdpf;j7^JMd{3oOj~B?<|4@G@iY~Y>;BV(&TNN)M`WL40 zZ9<{JMF3n)r6%HbUD-z0$Bup_#{1W%lAW4j2d?*uyqjDIq}5D)g5f18q74s>Lk&pn zS$;dio}hONIfbs0Lc*YW7?{ooUrJ&eXs{PTr?Tqh_#G9IR z7RO;bFsjUI@9Oe5Mw2+a6wbVZhAottkjUm30ISKB9c|tj$67QiMY6yQA--Cr!qlP& zRXc9diIxqDt|7NvS06OM%Ai49wrTK9K#z@=(~NP{fe;513q)GkK=>xc<;0GfnX=Px zfoE#GT2AgO6&m4NC#~F~Lm7>eBO!jF7)0J#LLM92*W|jt5Do=C-1l z0qTX)ZGAIo9~OdB#z*ks6Cs`;6civn~L9OXRtej2~2j;oXGTqv1W0%Rr^+N8rGU{AgVwgaU&c*xB1bL=F?Y6F= zs54Q*z+kBaMvaC2$df_AV8{epcg!^dbUS&8%x{Q8y1vDv<7$IcltQ}=TLno{Do##4 zz*f+uSav(-rsQIUK)a83gzX6M9?L;>Bl4wgf>E^)30 zNeh=;WR>D1xT1)Rz`7{gZCU~S+WJS^Q6jL=xIQlK#0&gi7WzX>onlWYwseKu%>}7( z7r2)rB6?BB+4c~DgB}jvlj7(ygFFk^VWI*4c1|35!3hIv>I5}BM7lKLAT0(tSYpim zP8FY}vz)B}mrMLWmIZ4DmN$*BMM6(+^UENsqz}Sv7EF%dLim1u70_kp;P3~R5Pr}@ z3d&;HA(NX{!Em?n-Ce~_3fTlPr5t z&6)JptGo;8dbHgWxGrndXC^72-4D`U8(MO$8(eI*?K;_HzWg$hIDta#z7?cpIiktP z9&h3^=bFSDsCYj+2b@4>G9^fbD5jEI#o%G2@uI#~K|~S}*X1hS!d)e}*5L!}@4s?{ z#wxrE^!{5`k$kwgkb@rw=|>RW!U!LDMdcHs$wnkJxGfzo$*YD$SEiZP8=O3+m5L=a zxvNZeIRa0RLmNW;+-#^v%X*mQIQ#f(q0AB~2E&}f^L{ED5g^hUILaRg44Ik>^Zsp> zYzt0cYhs8jKVlOmXo2Y(@CZ|f$(`>87iL-5ZM)$haqwQ1ih6H_T#f5{Jwl+3-lEO{ zskUE9LGfU6HQOF>9w1k7+iVwUIX0q|;G`>ds;)Hhaw?!nB1K)iV~&H={H)46EC7Y-kI+C%TRn7sstRebnhB z&!5eON*(0S>Q{Bu&t9L}XRn6#Cw-J&6vv;c2P zzM4SWYXywNses1p_hNuy{^+0(0os7K=}c}g{>IQOrhW^Pjz@%I(GyQYqT9o1|*pwv$l zP20_A^um9OhQ;%%(cweI)2=QL7c)ivu5K}1ONw4OQ|5N!r0}t> ziqRFHH&ex)?l&FW^lCiL6Z8kR?&z4f_VQ9Xb-IkIBi)O~XOI#UmpWFT``#+uN+R^h z9ivYfRgTAY9s0zUBIA~4yMn$IzmPgwk5@kEDpoFS-NB|BG4xLdJiw6e z$R??pyUglWu^-&~7QN+R}UT1v}8AX}q6GwIfKKcvXKYxsKHkOjEECViKKpc^`E zItrVj?n$9XnJiPv9uX7%yAwnT1p*}uEtg{TkP`gQSbI1wcqf|_@MC7vYu-z!%&_8Q z)Nu=K!b4?~N6DHGThFl7gumnpY{soO&iB)OlNJJt&Z@{y%^d~)<+DF+yP&JawZLYG z8z@ZT9o}7mx9YJ6iulYqP&0#`n6f-y5sb+T?*x%s$IOSvAjRO`PSGQ80^rNa?@WD4 zCGo!(ie2S0X4WCs<18^Tu)Aq@B3c$-{Hp?HN*67XrOP`vHT_9xY^p0GJeAry z81hrfSyd5;+9Z`bI6TnK!aW%?%GF?a73fXiV#N2ZZ^tZ8rmVyP7QxNpUpQ}LtEAfe)m+nv&-qT0)X z!ux>68syjb_!Bl4@h0;8uu%;jgqxjYi(Ps?BVC${sOw@}AFC>Rs?yk;O}?H!M50OL zX{|e02k@5F$d=xtkRsntiwt)ab3QE^oI_oWO1p>M?p*4@rwajmF{Fs(l^V9K>xv;k zb6Ty{<;I_f2G|55z^VHS)dXVoD(p)L*A*(d?4lIAl;yER!u{{j^ky$hMa^7-l68xj z;MG)K6S7q5GgTy))3Wq5RH=FlA;ZT(^2tYR00({y2Bw)OwUTgPpq#vqaYVHW&dViJ zE~*qGGyzO^Qs8gNa=VL`x7SvXeCiRa5n7}s7zwTl_tow&{m0i~Iul($y9Aj@A4Mv7 z@?eSYK;i5?mYl{K%M$&bJ~}80-F{?2q=}v*Gi6@V4(1X5lk!>AOarav+${z}oxukq zHyNp*GzY67zRh z{SO1#>!9eeC<85xN*L)-iFQ)xkwfM5^vSDAj@(Wq+ep9% z!%n(^EroO^LyuC{5VBi9F#B55@@vQR681=NWeo1(av21+kOdR|*O{v`RW&5q>0|mv z4sBn{J0My??SFkM+%BmL@gcGAtR@6RP$$ec+uPrSV%WKjKm83RI z7sWttx+-s`ghBWxNj(;{-1b~VUU8qXlQ5Rwx>3CK35a451l zK_NDigvwLTq{wt`X?N(0&JfU-iC-BWdOuZDrjPM zJ+?yqO}rYfR-~BCh1mWY##n7V&_3tZ&k|#8ixk&nCbbt(FhwgSIXK%+EZxAKF$lXQ zJXE4H0iF6p?AzZlUX(_J%w`i2=n)}`URSBBH)!!252AU;=0=nI-d@J8a zTWJKPBbx{dpQjXp?t#@OLV@mu*uYCT=ioQ&G{|gi69V|fDP4Sej}-%hbAZ=o@&(`t zER+>G#zjF3d5LMHFHaUNN}F)P))QMxD{?@XkEB}&437>nP61FxW)+Zk3C(&HEV`b; z%em)5Y_15jOT`0DcV#u21Pvs4B$RElQ?ylw1J?7vKJ=%VK7Z(j@DLnZt2YW#! zdt3@s7m18hee_Ptlan`o0nRr24O@=Bj0EYr^v?9?sS&D*rW%|K13clZt0^b6(!S7! zJo%T7L>px&z#`Fhr-AdOn_A7LFt`6Jp$2|JW1)l{%jXuCqp+o-Cg${bU;xf)oa`cv zv~pcEYO1~fXT|yrLv}`CPCbl)%8Jyj#o9c|GWA~-!i&3uq~cKc`d0{`YQLNDN1j2} z*G2!|u@L^rG8XdEUXhH>aro~pUtyfUpJWT*9xAJW+J9AK@lwY_B{6XDSI+r1iLj+) z3E%t-3>No1Chez{#HNF@B{;rh@e&Ox3nJH>$=#0qMt@xhSFL}Imbs;Qtm51VRpAJE zwdjDLeI9hp2bJuSAiJ(7mWyw#^j%WYA7Qi6Mzt326k0MPz=}yF?$0MKp;V65C{yy1zGcY zaei=w>1e+Of%5|Dto{qpFCjH~+%Z^^KyKEcA#g*m)nWChvuWj*3)G(*6k`)tjPb7Ng(mOFNQ?i?q#E$Xa^KlYxs$zKL0eU!f9ZP;f( z1bnm@ije*iYR3}h`X$1H5oFdBp!&7{-p$RZWvx?OWi@hTr|SE`kN4Y7da?rQ_|?uC z$8xReM?duaoawJtLx0WuL@0PYW{Pm4<&Lo<($yo&y_DFErHTsR^LcXA%F?)_rMMyL zzN*TSFkjl_I5L;6hFrWyR*H~pm+lI`VbwndDerbE<`AN2$b3PHiZ~UH5VeH-(MMrY zms0+x86n$YkE@M~NcuEL_euYXeP?&W#S3F0+xuC>&LF~WHm!M6_b;v|>B~>Y7UfM< z`s|%Z4RBj*!(h2)LP(M$+5Bm<9N*a|C{&l`2pxkj)=mO7wU9Nk(N&dQPSKe<(KWof ztM>JWaC@f%;a&(*JI^zvx}hAxhb7ZLzFX55w@9PSvN=a9mDxBdo8a`uZd{$$Q%ptr zbhSjW2OtngHJzvjmxBw(k_)&Fl-nHRer7oT#*5`#bvJ0K7l2>m7Ue;W-b zFeonFr3aS|0)H{;{}lQ!U0$q6G}IR`tRnv3LY5NXbTx4>B^U(+{x7@qy&haP#0JT9 zf?iyC#2(Ic<6c~C#2&8n3Qk=5^o3qreBeKH$O}!f2y>Z?ZA$PjC^e4)+6RcjMly<2TM0za*LAj|CHS%KV|@1nDhy8BQqG9LF*ymoB9GC*u)lm{!>#sPJuiF? zLCs-4eB@EbppYJc_^I!&k5d+C)tqxTs4oJK1Hu4u-pCV{Mq|GT%k#a$T7`~nrF~3w z`-OdVb+_*~Q|Uyu4-Xds9AA9k$mEMXVJzyS=)J=mO0e|j%E8Clp#_sS<*N*e z5lsM-y1VwidnBDk6607luld-^&_ZRBO!Bkq7BzpGN4a5f0COk}RA%?4(t;TabCE&zY!+4#-B<6X${A-l+tsq}{z$%4&sX^9`BCcj<4NY9HTR>`<;RoHKMVXv>9SDv z<9=6%$hN!ClPJ1Jy+HOl=%2IulP27}1;FIl%2nz~S+9dA)eeXQOb+zLH@Fu~V!f#WUHEV10 zjdk~k09)M|&o7jm%vauxcvH0KGZ^9AnD^}L$xWD-kpm8)mBzWl4bBltPudKFgKW>s zKP-vUu2N)`7@EK76sF|p;ldl!J3q70>Fb9ge`%(p(%%b-Bz7bc67%bdj`wnm8uHeW zLx){v#}QC}pNI49SBCid9wkmivYj9_li)X0NrB$*jjci4Bg7r=`dcO*iMZ@Y z0nQ>ilS#7_+KGKJgvF4sMa_6qsjBkNxzOlb^MOm%PjB|UUmOMOHwly%Ji0u;6g2m{ zlR`}*)M*c-z%Bf@feF`iH?RoA$1Q0zr>G#9&|W|?>P;FKV%qH7i!8B(tBrDg?RV~i z#JBB_&kbN`2Hj(%?}4ew=~XVoJQZ6X5ai05J9^$=|CkBxxwtBihZ5PBZyN$_(iJKg z9kk3qw3O@81fyrA?E}dtiIB=GiktjH%I>?k%|AacxqOMTYPHG7)%M+GPeJbCB2$GZ zAUP{69Z@KZ{ISZ}WX zCLMAVNrNG}h*%u6*=J{$l8RFtxG@G>N|$7H`nQ^nwq$2j&A zWJwZ4j6|aDv3%-73OmLy-QVn~`<09um4zQOJn+gC4P_?!ITnHo^Joh4Ua@FlBwQ6c z+pDM)aEi2o++#TfajPnN{|@4C*<<$Mw-;lm4vJK^JhLiVSy>pgsI0SfR^T9!XPjjiK`O zuK(tYt|E@HFPi@yBIJW8FO8xCn+P0(1is17->9R^i1+wSt}u1(LQohQ_hU2YOzKa2 z6ihA4HMal}*Vkq+N(@3M&^Y#XwqShSz()1t{{fDQe4EFV!H^(Ii28MfhNuPRp~)cD z(#2*MOFpCt`nWHnmv!)7(`r8*FWT;}vd!%%3KMzciIFs985|g%Dn|@Q1Rad|jc|&2 z2!p|u#rg77d^Crr3D!xC#=D9QKDsFGY!x&F+YTW=o`_t(6cW1$sO0l@fbqq9GVuTt zXqeIG33P*X%;#R(3Yb@sTjOxCP;IUqH%oDbGmFoy8ewZQ~#Vqk^Euf4spjnuMXo{lmMVCZi+cFf$(J@b<(- zAXROmfTxcr!;}CY81L?}$>?wt`Z~sw$TfTFCrwZI8Osp`i73(Yl=d(P;gw&clUt!~ z7kt9!urdoed-dt)pP$K6nEh(OPx=>h?U`G`R3`8^Jf3OYk;8z#wFa7m6vFLtU|6{3 z`HvKB@MAj{{vLW=UO}~w2-2oLwbAIWWjJ{M=S8VTScC8$AVtECr$8&rnI^qx{#uYe z{<9v`nvn%bxObt!G6c5rfq@{|=Vf>otN(w2dQqLQw? z>SmpHOO<8lQc)Y6RCStq(q5<5=Us3-JigylJUy_(!VP9`hl8csheG}oj+YD>1w#0@ z=vGB?_b{0nplfUc4R)I@j8pe#cI6}Y#c=E{KPwvki4Y5o3UA*{#!7nTmEeGo$CYp4 z7<$B{qo(fyVf;LS5|I*QA@;9GX&E!ou@u5JIMdPF$XH%(YV|eUSZVP!-e_%EgV(cB zZ%*v9+-#JGxpoVqZFr$z_|~7*_&AH-XvxC7ipTvOka=hurZ(8(+Y>jqc0NMc8=_a8 ztU)I;V@lnWQ;b7X=8!Lx5LUw-xQ8R9C_jJn@N#~1^z!27608na;CIQbc*xbrI{{2t zhT`Hm{d3Ykk+Q4j^W;^QY^unNC_y`-)N)6XM8r8Q8ja;ZotoNQu;%nZsV+is^waZ> zV3p5+{juT&yE$*AV|>%`P{YSvBypA3jP#kufci8njbs)^>8h;|K?%?q>UlY|^{{FG zNW*kX+8E5J`K;XbAFx^ZAakA`3OWsDzxw3lv+-xp67uC670sl|#+Ie#e*eAq>#e0- zLkD%H&u(0s)Yd@sUHHY|*!OSA=0r|o=q9p&_t|;(Ij6Rp@9q~j6#XaraFU>|Y0#}E zXb3$WhK`m;=F9nCTr(v&w6c-k&(A|$&MnS)r1N9f0_OMqe2W}@G)Mk;8DiWam0tM%}$kol$+r~4+c${Sm z)IkR*wrN$LP+@;G5O#Ft+daTdbb0@dpnIC~NGp4}fMH@+{5`1mRbhY_vM%COHDzal z`;k+ek&jS6 zkmU8GkzuErt1+eP8mp*jb}UD96)N8O-qOvBuLECxt31>({_XG}um8K=RSl{hcm5o1 z9UYPeoTAmK-{2H#Q+lk!y+1Pn42s_9Xo~=PEQGm$se;}#w8*JK63y$vuGE(buxrtE zBl5n@_4@7lxSZ*39jdJ_oG!rV4^);N(-E}sp8(139lUTc?U?=)BlY2m8+9cs`_X2> z)4jcLI~%+_F{}rhK11D*xA-D_^X6~OkK#Hapes3PmE7kUKj=LRLh7Pq^wr6R3uqGh zD&%dJzIR#0)|nLBYtcO9xC7q?fflQ^7E_hWA9M0r&04S}+Sqw-`_%pMGE5byh#3&Z z-}Cz<=^icn+?%)d3v5#Kr0mcjG5V*erXXQO5WdTZCkx56Seuw%dc__4HSK|=s6Dsg zppgWiX)qA2()cFPLSxVl^}1Q=7(#-@WVj&0>8qf2Nbn&A3wD0$X+_)m02y|Hka>o7 z^zSlFx8tf4- zLyeT>X3^a+X}b@=wh8^2f8%>ucD;3_ybqxnO4my6EWaMdte8-r8s17 z2xA|yHz2fyJFzkF0wf`4Bb{QdRAo96n1R8aGZ*PVwH9j^ck2>OM({0wX z5^moIoE`CCg2tNjp2o4kWADYe^w7M{i{1PVXTh@=^(pwiEc%b8aPmiHMUL>#oh$>> z%YgWrSk=Eu9U$nHzkf=N7fH?QyAqvDj-Auf^v)M8$0AlA!JEtBIQ0-|wYFJmGrI8? z8!`_!L13u}0U_~rT3JSdWc{)~)z&OK-3^QP=J~$VFb13CqU^L-(Y4|k?={qXZMSWV5uOqJI`M%o|L znqTdvoD*QfPxSUWHkQl!8yP0IL9+IoaEnW#)VLe=9mtS*x*abu+-P~$Zlo6lwW-Dt z`e7`o!L~*hT=6ySk>&Z0LmCzLh_n{ zWt-^o!Jjx|s!nCYV*9UJp3yjR$MOiw5@d{$y6yIg^*H)70T%dfL=2hwZw1Wf?` zHj>a6Bldo(9Z+HCSnc|g z=QKw0mWbq}d?xcdF}#-}XA9e-tfeAA$T0c}r~y(hl@CMTh{vV}$nocu{CgIqjp7PO zOfPUxMx(AxSWDZ&eEfv54Bz|l{7%XFfSh^8d=MSzhw_#2vZUt-bSaS>St(6MP7Z*%VZ0Pvg z<`UJ{-H*fCLookJNi!3cXjT9JKmI=m>n}XRJ8K zi%YW*Ga=Ktuh*Mt)U17V=b+H4#_ukep1O_GzuMh9FTJnECrt4dDSqeIHW}hCu8eS% z)h0O3=KkiuKRO8&_>=0&4b2RQahAR7r2gXR5cY0&3EGn4w6Hyfx_FpF(3a%ni?K84 z#EXu#J3bEmZ(}aOc`O)iSLUO$r)Y$CpJEgAIJpW{ZH(73g+Q=z{jv5Ro2Mn;7*D1t zaM~R2bUNiBCUt@%EygBjF4T7RC(%Zp`v`T8PgcRk_ACk_!7lKxok?_H`iZ@3&_afP zZ!W=gOtAakuImq2=x$Pco`HN)e3{9>F-rVso`HU^_TZpDQe5GFGZZ50e&qC9IjfPBvnD`pW$W% zXCNI@y|b0IqO&5enTlj_3M#wXkfYFQ%Zui60;2>k*94=`dI|Jns=T+m?TJVnxjuDn zagFBf_G;$Sl5UH8*wu6R@b>qz^8#+QpRW%cyvqQ40`Kyd{mkL%YGz=y!C&;Mqf6$_ zR6K9i10dq+XgbhgO_jySkP?DH@6t+AOMM)yed9YuvxdUQnrne+%J#9&nto-sNn62~ z@8I;5oa?@;JEi5aIBsoJ!$s}L&gVhq={y12l@g1vuw_WfMW-y*NewAPzQXnDs$~Rx z?KUvqCrBs$NnuMG;ybOrOm}lcU&Y?%qo_k}vImm8N~`d$#RE^t>G(~#`EDA;m5vkC z_prFrsW7wOfvLQ39)@Urg|6f* z;_cB5wZFTKl^8PoPAh^gdh+zZ^Nmf6&H)J5{W<>gw*CndIpOR^yDm5eJ-=_5FecTL z&3DG{*;%~e73WP(>bWBJR`Q(H_AypaVy@W6>Et%1sm(?xN^gc_FC&WUupHiZMIc=w zwfj;g79Sg?EpUPTwvrPntt8p=9kR9dHL+VEALQ?ni|EMKgy;*Wqe+NH8Vfx*-a2q* zb6phSCQyFF5__5%fFAbnMvYd9J-^2^S#w%aVst#^OD?NBr#x>f5@}G zq?3uO)c~DA0Hf_|V4X6j_ocu==XVb;V@0dp==&m@cfvx2t|N&C|M|I7)OmV;=FpT4 zXF{8C${&t3Hb(tt8xkZr=&mP>J{w^F9Xm>Ov~lPppL4Dw=Z#)pkOl(3^ylBL-~EWJ znRU@b=9d~$PW6AIF;^J;3_LGv+`!|m8S?U(1mD^_JH)qe`lvj)0#42_2gZt48cE`@ zcqA<$N*y7IQ784NYb#hZPSL!|Tzs>p18Yt0vGBg9=Fm0#ieXHls;O9H;Ku+$^4Bk| z8c~zod_hn2N<~6da-mWXdk1E*5#U6vVmgTO2F*Z;nL|83zdbU0YAY^V!Whtcosv<= zD{)k0&HO6+nKG*!KpP!cALi2)G(Au)@?tAse6Z3X-Pxqw61gT4K+3={r~H)1%zeXr zO2ed=_=45Kp}WwP-pBn-XTAkk@`ApO8>6-ieCO5eFs6U9uOAIjW~;$UrtvE?F@E$C zkrro)=0Sy?tjM?YBQZ%{JwTR}-9yht&6qT_m>gE2y`BEWdO6i`of6oMwjgL8W|(iq-q)_2=zI8m z4~gHi|2^yp=`Ha1iFk;{G7b=Zz9oM7($In7&=5&63JUVlqLN~BlTT_Y zIvNIQdfM7bdkY&YJ4@TMGa_t!Fod}1>FFs(ItKdMs>}1s3nF~N4_-hZKv!>jbL)>N z5#iS$B)EUjOYiv?3f2)X!|Ioj|1%K-w&v3pl)(V0kJ+0)c|r8^Aj;b}Z(`Kxr{MSX zt+-$KGzPlHr8p*hG}8oDqrmJZ^x7A%f$&#v{0EW27iWzc2ps;T_w^1FsF2V}w^Z9r zD0#|jI6rOrw&Tl*MGX+x#%0V*m@hQnU_E7dGCP-Z&+ja$b+2Rtr;sS9UPJs5<`zTR z-!gL2f#iL8{dTJ1s34Od85?*Az6cpgT}{jYyLQb_=!Oxm2pVmK1xCMhpS8G`6c^Ah z1!{!Augv{uao@1ME~pw&ypCRB*MA!~sX?n^LOcx?;%J2XYaK8XQqEDJKS54&BE96T zc#(9|`g?8-xrUA)RAW+VH|jF)Q&~z|sOk4!S$Wj%J^|C-kQjhLT+2(6+S)apF{{#7J6;1b4@hij`~#c5|9_&sbkad!8bK*t+O) zQh$)Blvp>XXauMh>QWnCXgw240?}W~$gvBJ>&fF&6D62|`(nmA8Mx_JI8_%aBz5y| zp(Fb2KT1@l8a5Q|dI8&+=nD&ByMK+&BKWzSA->`C(^E*7)4at7kqB+a+H(ozI9RNO zv}SR!qNxFcjJghaxn?^sBxNHFBZ=f~uSpq?6CCXWaInKi!&EBlE_8S3u}{ zP7~j6n9cwpuL+!t+(_g(@A5wV#YX+VsfqfOB>YfXp-JM|N^;Img_Ibl_Vif_Dgi+g z7uUV~hOE0xA0X=}_UES99$W9YXnAL>Lv4)3UTa(L2SoqLBS=J)pzcT@P^hFuwrd~#TO|)Ff#8cXgJo@+k zJWI;TYa(>s)#|HYfkU_4G`*m7(3yh#1?+stfVQ3cff~T%9bASq6kBL+vYn#wBF@_~ zf+1Zv9i>kEHss^BtT=Vx$a}n|L(g8+aGj)COeAIe*76C?rc+THcPN1g((;hS0r z`v(ZHlA&s!%m?v_ii+T{4)r7UWm@*VIbBcpSA0W=HP2S4(M=k%j#VaL{sc$n77xkp z-YJM?3%|&ILTvd9H_2ures)tnow7#C&lwk`1*aP$`DR7PA%Ju6p>kV z&_uHK=-TjpmvHs|&gCqYnWjRG(r9inE~(~aOYvSd+PBWlb>I>_Ar$pPSlKKk+YD$! zzwIJC;~J%i#FX%2QQw>WDys;PqG@-o;wEI%6=s)gjika=gdURu(ogtTge=yrL8%B$ zDY73>!DEjcJcdyQ>W|y(VT1Zrx~5GDr~Jk3LmS`z9z5l><5M#|safRnk$i3zhZgf&g%O0?jw%cy z_9;Z3+*gcPn;p~_4Z9%oHR?2VkwE&IUYByl@22WbP*$+9P>R0T%){KYR0fF9Mx@&% zyq(*0W8aWPShYz?oL62aZuf113Sw>5&H`K4{Nx_#vk+wP>bTfkmQ@;?7UH^w_^Pj; z!dfL%!BDVQL{mF`)yX*TB!O(PuutZgheyZgDFGMzb{pLw{+AJ{m&v$W^~q{qcq(Ot zI7{VcOW%x&iKsX|GaG8e12#}6SrpXgk-z_^fU=52-wDz@StK2Clf-LA@SSUVvvb0P zcDQF)fzhTu3?Ybsj)Ym_qJ%J~o6Hy3E zp0VSQ7k-%`pz=rAZxM*@9My$`z#+mTX{j2;WLR=dRhA2R1GD0g$*?g@2dlw+N7ygy zt}T#A8v4DFk#*OUho<*Wo=n|U{8&sh!IL#fuvu5s)sb6@C^SiScsZe{lVW7l<(!dW zv-V)I=*Skh7sf$5rbd80M=;d?=1_XukyNM@PL2o-nSW10>_G>GI`i52v<65OZ;CCf_tAK7KAPt>yIo zeMltZqgy}y*p2Hehvb@ZWN7nSA_MWX1ZK7*3Mt=z@2LDJTtEhh1}=-%sH4y z0|%#0t7z5&^i_sFDsdEp90?AU$X$pIKbfKu#ip8ckhB&{HtbaCA0!`}+sq23MK^oI z%XKC~qEw!f>-v=L2IWusYD=g)Ydk}w{(O^S;4c;0)7*gt_W{>y+$YNj%3!SU(s|}4 zMV=V1PQ_BPXe9>dzQUD^+mXD9+*8cM;N|0(!S4w;t9`!I$c-jsd{I8%9j_DK&PyFc>r-WNC^+<#?n zu;gPjDQCv?XbLmR+Mwg5Y_ODVM-LMc2aH?ajU`xQhsXf(hu&ÏDJHD(n%&(PbY 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 SX-rPu6bU$jo|Dt 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 z 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 180 then + res = res - 360 + end + return res +end + +-- find and initialise serial port connected to gimbal +local function init() + -- check mount parameter + if MNT_TYPE:get() ~= 9 then + gcs:send_text(MAV_SEVERITY.CRITICAL, "RealFlight Gimbal: set MNT" .. (MOUNT_INSTANCE + 1) .. "_TYPE=9") + do return end + end + + -- check cam type parameter + if CAM_TYPE:get() ~= 7 then + gcs:send_text(MAV_SEVERITY.CRITICAL, "RealFlight Gimbal: set CAM" .. (CAMERA_INSTANCE + 1) .. "_TYPE=7") + do return end + end + + if not CAM_HFOV or not CAM_VFOV then + gcs:send_text(MAV_SEVERITY.CRITICAL, + "RealFlight Gimbal: could not find camera HFOV and VFOV for camera instance " .. CAMERA_INSTANCE) + do return end + end + + -- find pitch and yaw servos + PITCH_SERVO = SRV_Channels:find_channel(7) -- Mount1Pitch + YAW_SERVO = SRV_Channels:find_channel(6) -- Mount1Yaw + if not PITCH_SERVO or not YAW_SERVO then + gcs:send_text(MAV_SEVERITY.CRITICAL, "RealFlight Gimbal: could not find pitch and yaw servos") + do return end + end + + -- find zoom servo + ZOOM_SERVO = SRV_Channels:find_channel(RFG_ZOOM_SERVO:get()) + if not ZOOM_SERVO then + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: WARNING: could not find zoom servo") + end + + initialised = true + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: started") +end + +-- send target angles to the servos +local function send_target_angles() + if not PITCH_SERVO or not YAW_SERVO then + return + end + -- convert to int + SRV_Channels:set_output_pwm_chan_timeout( + PITCH_SERVO, + math.floor(1000 + 1000 * (pitch_deg - PITCH_MIN_DEG) / (PITCH_MAX_DEG - PITCH_MIN_DEG)), + UPDATE_INTERVAL_MS * 10 + ) + SRV_Channels:set_output_pwm_chan_timeout( + YAW_SERVO, + math.floor(1000 + 1000 * (yaw_deg - YAW_MIN_DEG) / (YAW_MAX_DEG - YAW_MIN_DEG)), + UPDATE_INTERVAL_MS * 10 + ) +end + +-- set zoom servo +local function set_camera_zoom(zoom_pct) + local hfov = RFG_FOV_MIN:get() + (RFG_FOV_MAX:get() - RFG_FOV_MIN:get()) * (100-zoom_pct) / 100 + local vfov = hfov / RFG_ASPECT:get() + + CAM_HFOV:set(hfov) + CAM_VFOV:set(vfov) + + if not ZOOM_SERVO then + return + end + SRV_Channels:set_output_pwm_chan_timeout( + ZOOM_SERVO, + 1000 + 1000 * zoom_pct / 100, + UPDATE_INTERVAL_MS * 10 + ) +end + +-- check for changes in camera state and update accordingly (primarily for zoom) +local function update_camera() + -- get latest camera state from AP driver + local cam_state = camera:get_state(CAMERA_INSTANCE) + if not cam_state then + return + end + + -- check for take picture + if cam_state:take_pic_incr() and cam_state:take_pic_incr() ~= cam_pic_count then + cam_pic_count = cam_state:take_pic_incr() + -- Do nothing (useful for testing ArduPilot, but does nothing in RealFlight) + if RFG_DEBUG:get() > 0 then + gcs:send_text(MAV_SEVERITY.INFO, string.format("RealFlight Gimbal: took pic %u", cam_pic_count)) + end + end + + -- check for start/stop recording video + if cam_state:recording_video() ~= cam_rec_video then + cam_rec_video = cam_state:recording_video() + -- Do nothing (useful for testing ArduPilot, but does nothing in RealFlight) + if cam_rec_video > 0 then + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: start recording") + else + -- Do nothing (useful for testing ArduPilot, but does nothing in RealFlight) + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: stop recording") + end + if RFG_DEBUG:get() > 0 then + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: rec video:" .. tostring(cam_rec_video)) + end + end + + -- check zoom + -- zoom out = -1, hold = 0, zoom in = 1 + local zoom_type_changed = cam_state:zoom_type() and (cam_state:zoom_type() ~= cam_zoom_type) + local zoom_value_changed = cam_state:zoom_value() and (cam_state:zoom_value() ~= cam_zoom_value) + if (zoom_type_changed or zoom_value_changed) then + cam_zoom_type = cam_state:zoom_type() + cam_zoom_value = cam_state:zoom_value() + + -- zoom percent + if cam_zoom_type == 2 then + zoom_absolute = cam_zoom_value + end + end + + -- Slew zoom if in rate mode + if cam_zoom_type == 1 then + zoom_absolute = math.max(0, math.min(100, zoom_absolute + cam_zoom_value * RFG_ZOOM_SPEED:get() * UPDATE_INTERVAL_MS / 1000)) + end + + if RFG_DEBUG:get() > 0 and (zoom_type_changed or zoom_value_changed or (cam_zoom_type == 1 and cam_zoom_value ~= 0)) then + gcs:send_text(MAV_SEVERITY.INFO, + "RealFlight Gimbal: zoom type:" .. tostring(cam_zoom_type) .. " value:" .. tostring(cam_zoom_value)) + gcs:send_text(MAV_SEVERITY.INFO, "RealFlight Gimbal: zoom absolute:" .. tostring(zoom_absolute)) + end + + set_camera_zoom(zoom_absolute) +end + +-- the main update function +local function update() + -- initialise connection to gimbal + if not initialised then + init() + return update, INIT_INTERVAL_MS + end + + update_camera() + + -- update pitch and yaw targets if in angle-targeting mode + local yaw_is_ef + local next_pitch_deg, next_yaw_deg + _, next_pitch_deg, next_yaw_deg, yaw_is_ef = mount:get_angle_target(MOUNT_INSTANCE) + if next_pitch_deg and next_yaw_deg then + if yaw_is_ef then + next_yaw_deg = wrap_180(next_yaw_deg - math.deg(ahrs:get_yaw())) + end + pitch_deg = next_pitch_deg + yaw_deg = next_yaw_deg + end + + -- update pitch and yaw targets if in rate-targeting mode + local pitch_rate_dps, yaw_rate_dps + _, pitch_rate_dps, yaw_rate_dps, yaw_is_ef = mount:get_rate_target(MOUNT_INSTANCE) + if pitch_rate_dps and yaw_rate_dps then + if yaw_is_ef then + yaw_rate_dps = yaw_rate_dps - math.deg(ahrs:get_gyro():z()) + end + pitch_deg = pitch_deg + pitch_rate_dps * UPDATE_INTERVAL_MS / 1000 + yaw_deg = yaw_deg + yaw_rate_dps * UPDATE_INTERVAL_MS / 1000 + end + + yaw_deg = wrap_180(yaw_deg) + + send_target_angles() + + -- update the backend so it's healthy + mount:set_attitude_euler(MOUNT_INSTANCE, 0, pitch_deg, yaw_deg); + + return update, UPDATE_INTERVAL_MS +end + +return update()