From b9d17241a38166aa7e346787cf5f382d277a0e60 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sun, 19 Apr 2015 16:20:07 +0200 Subject: [PATCH 01/21] RTL mode switching: Allow to flick to RTL in any mode. --- src/modules/commander/commander.cpp | 41 ++++++++++++++++------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index bb1ed7f5df..3fecd9f58f 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -2220,13 +2220,34 @@ set_main_state_rc(struct vehicle_status_s *status_local, struct manual_control_s if (res == TRANSITION_DENIED) { print_reject_mode(status_local, "OFFBOARD"); + /* mode rejected, continue to evaluate the main system mode */ } else { + /* changed successfully or already in this state */ return res; } } - /* offboard switched off or denied, check main mode switch */ + /* RTL switch overrides main switch */ + if (sp_man->return_switch == manual_control_setpoint_s::SWITCH_POS_ON) { + res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_RTL); + + if (res == TRANSITION_DENIED) { + print_reject_mode(status_local, "AUTO_RTL"); + + /* fallback to LOITER if home position not set */ + res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_LOITER); + + if (res != TRANSITION_DENIED) { + /* changed successfully or already in this state */ + return res; + } + + /* mode rejected, continue to evaluate the main system mode */ + } + } + + /* offboard and RTL switches off or denied, check main mode switch */ switch (sp_man->mode_switch) { case manual_control_setpoint_s::SWITCH_POS_NONE: res = TRANSITION_NOT_CHANGED; @@ -2271,23 +2292,7 @@ set_main_state_rc(struct vehicle_status_s *status_local, struct manual_control_s break; case manual_control_setpoint_s::SWITCH_POS_ON: // AUTO - if (sp_man->return_switch == manual_control_setpoint_s::SWITCH_POS_ON) { - res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_RTL); - - if (res != TRANSITION_DENIED) { - break; // changed successfully or already in this state - } - - print_reject_mode(status_local, "AUTO_RTL"); - - // fallback to LOITER if home position not set - res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_LOITER); - - if (res != TRANSITION_DENIED) { - break; // changed successfully or already in this state - } - - } else if (sp_man->loiter_switch == manual_control_setpoint_s::SWITCH_POS_ON) { + if (sp_man->loiter_switch == manual_control_setpoint_s::SWITCH_POS_ON) { res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_LOITER); if (res != TRANSITION_DENIED) { From 7e1a21a39e107713d3985f832eb7d38f26851075 Mon Sep 17 00:00:00 2001 From: Thomas Gubler Date: Mon, 20 Apr 2015 19:29:13 +0200 Subject: [PATCH 02/21] update return switch documentation --- Documentation/rc_mode_switch.odg | Bin 33043 -> 35502 bytes Documentation/rc_mode_switch.pdf | Bin 26949 -> 31998 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/rc_mode_switch.odg b/Documentation/rc_mode_switch.odg index 682c63e471d492c1be9f6286211fa5d778f4b53f..0a4f532eb07f0dc3fee410bb66a65fa7caa68062 100644 GIT binary patch literal 35502 zcmV)1K+V5UO9KQH000O805*%1MxO&N#47**04o3h00;m80Bvb)WpsIPWnpk|Y-wX* zbZKvHFLrKZE^lFTX>%@baAj^}Z)0_BWo~pXXL4b1XlY|}P)h>@6aWAS001_Nlt#>n z62Dkl003B8000;O002~Ib!}p9VQFl0FLY>iZDMX=X>2ZVZfA*5PDc$28VUda01Zh< zL{b0%0RR910JR7L0000#V75a509qeOL_t(|ob9~_d>q$#AU?A*TV{Lj=)D63K!UxB zltf9?F_IN4maW8=>z(5y|Ns3R$I0)1cXpiEr#RJ4^*Js%pRHagi6SM6y#WLP5WNEn zEOr;z-goYsdDy{V0fJowg#9EgX5YSf^WK}UfA4*dq-h$L(0J5;IAxi*RSl5sxfGn(Q$Pz#n)-_}aAPegnvIKBHfeFIkIF4bdR0_Td1Oi^! zZ8iw^qSy|)Mqe`;gvW6uT!p38mTi^~{CoLd7e<#ZL>Fk7>5*o(ymBAz5o8JAeggNh zIfTG&ANl8Ro=2%vioIZ(rCC51=t1Zis4_xIRGF)}w1*st@{tu?qo4TrjmiZAsFVH` z!&7t$5hTA$7>`bFf7o{bSpvA9z`gs4v9S~;$jPzYAvSOfH5`cq0s+0=fGtLMRAFjr zN~6)l<8io_%jM{yp-@mNmGUd|KLPcV$z(VjCI|vPp-?Oqi$o&yQ#2a&dc8)Ykz?WT z84Ly~isJt|Gc%J&B!ohtR;%SpC$0iFgu64pHvw4!xJ}?NgTt!ZYXpEK$#>s+BZ^aB z{^GND<@M8v=&ye9?`<93pL^~rjWy+MSK9mgd*uq{oHwv_%jQHhJTyE!G&EFSSC^!* z8K+Yz6$vQS)hlfeJ+OOZbX2M`IHw&NsVI`dt12r1%hhW2sgF*~c!8=s&|9E^;^N|C z$BsXI@L{=3mWYPVUAU~*Ylr)VQ*)8W9^QZ9%*iAnh6WEEIy5xUABf@OBYliRR{)n)E8b#iphvijstaL4`tD->^ZhP>4uENRp{kvbea2z>>aT5GTZ2wl-Y2 z*j8FwQ&pGp_(Jf+(uzv8aaKYKqVafB^G1Rc1p_{%)~MI26LIL3WN>hZl87FBaKFRp z$+4QQc6N(ML3dA2RYh4m5f=yu0nb!GTGl->k+TGFn}A+MS65dg5&?ahr2(dlwfyKb zDg%Wu#wAA!eA|(`1|6fbqcfRE+HAHvlmiQjJBC5CNTbkc)lR2Vti!4z zm6lh9{Bt8?p)G8K9Iy$?S9)Dw|VC=?C}#L}U`LA_Qp>2TE5H;nZ6Vx-t^H5*N) z(b3VNp+N~HiziZQh16`eL?Yn{$Fz(R&G~~hmE~=%tvPuGg@pxO?X42Esr}*^z0n9d z{mGLbQ8Fn(h;r?=sp)AjLMFzB&GtOI$qQWPxg*||A;PX74F zpw4W|wVI$`@4olm_AMg@lTKBF=&-< zzV>=vao*JAU|x=WU}RK2>%$0fb5qms$Vdtocsy>MTKm@PuLeT_A*I~1Wz$=)zVi6t z$EPR8X6JmDFI}u{V1x`%)X>OyexCiEca9WQRvvxl$j;rneeNl>MoS6==g*y!DKuFE zxc`7&0Pre;AONA&YBdOM^hzk1+}ZoyPe;e9t4dFPaC~@pxM##^(5cV9`kH^Pe&?o| zIj;}L81>-%*)zcKuJ(?`<1sA#M(>g912wMEs6o|5Neeb@*-C2iT_YWDyxU$-V0-!H7fT9qe(Ujr|MPGE`LTUl z176R|ue}oV2abL?ke6q9`IT41c=DrWA2Q+J2KU^E!gBf!#zd42(KU-+)p zTes;fT=W@w0+D^T23A~_!zo?cDC%;&6iF{XUogWOM$MB<6F0Eg+i4|Ra;xbHC0ehz?lSheR8q{ za0`GGmD$q z3WixzSHEKLZrs?+H}2;J4}VQWYMz5Hu7;)E25fYhEmbNRJtvt= zag&i&IMLIxD$xA{ZuW&j;kIqtKvrWcNq|6ri_+3E^y|*O`%(S+4f9Tt4K2IiQ>WDw zmR54D)ip4`?%B1Sw+iU)1K%FN7Ms_6L?VcV)jK$Y+JaOn$)V=5w`05sL3|oR0bUd#z(Hxo z(hL=05;7iWv`8iiTydU$0HDpr#zyS^Er~(ETbo2=lw7Yed?FUGa^;(R^gYG(Wg$xd zw+vlfUA48f7|Q}dc?DA#F#Aqk7?6QNp+M%u{Uv~P2w4KSDc~%&@$qrMRM6Vz**Q&v z#daq_O8%Ondlc-@w`Z~czCe}$ZVa3c z&g1c5Oc-Cwp)7`B+{JCf$FKNifrBgo+!P?*+}+(>Qc{9tG4&G!Spv8L@Y#PX7PH&! zcfMvb3#$jR1aM>E*ne?x@%`>g7H$o0XjWwjU?t$#zt`&xhr_`B`P<2}u=?SKFDpv` zHvq&!1_uWL`?>qf)+wDf)&n)V%EjWMv{H|TQR;Z9A zfR%vL{&RA2fD-uL&n$d0AWHzt1IPX&k%-IX+PimeHcIu0ge(DE7ZAn|4-f10`YikZ zq(YVemH~dghVk+7ty{NZS?&K53RwbJ9#ArZ-rioFPDfExmi>QHAxi+6z-j-0^kZXV zS@!?QhAaUr1Dx+)tyX8*|0f%=1h5GBOPWFZM;l+VsQ(FuECDP7p#K2&i$tP~mCsrD zn4&larHTu{g{A*8^k;U=eWp9xEy;uq^vu2aqLzdEjq+ z0lYUFjal};9w18q3&1UXD=aL;vh06-K$ZX)Si0{qyYXe6K$ZaJA!Fa;3W@%*@JWI! z0W7fpP$(1(2DxqTSy&H{B>)Bx`|s)L$<58>zGm6~dVuv#0NH(y>m1fQ0bpr<-`m@p z-S@Z-VOTTOTV6hfdP}rL^3DfX4(Hd z+^vND_~Jv*R@>aJUjpFod(3WpSqg|Xcs!oAwl)rZQ7UYLAP}cWCX<}Q0L>>SRB?Ra zfElPvQB-4NqevvmN`O@a*?o^I07CSxuCAJz8iT>GaE?LxfUx;P#V~CCU@-P#>D-|M za)63J%vMxXWC>tZKz85bQs687DHez{aCM>~|HZbBZCkf=c6JyH#v@0LM59rw)uNP1 z21gwdi6j*CLj&dI<#xM0H#e6%P#O5k{TbDbV4V^G2Y~%DnJmlxvBgS1AU)1I%oIxt zgn_OrfAPH^{-2j$I`YzzYeEIb^F+t+h zH;zy&*Jx^L?(ZMe>DAgI1CpXwJ37%_qobqzN37cEU8@9;akSR0-iY1VzQ?=bBFq@V zvhCdVFt7KxjHmFAIt3s}^5;MQ`8U7$%|IaV{PWKPDyNu}g_&WJBr!WZCRQ5%^jnW! zzH)6Y5cwbf{lEXG!-r*Z`M&*o|Kj_9b^7?xFMaVj1A8R5QmH(4>=;};`|PuvPIZrt zg1tjndj!Du-oW3Cvutm8FQfOft_+eOZhPP3U2zd|jV#*^f0$5wOT%0WXyDv&X4qoX zM;;qM`o6xt!oosOb-wq#?|t>FU&VO35P(ps-nwn8gp$-%mq%j>zrQ3Fixn2+wO<>2 z=;4E|*|~{Hheo5Got^c1y-z>=v{)=gRu*>84nn?jSbGG3rO^WBG#-rv!vTE$;B)jF zb1pf&PYiKQfq*@U=v7x&7jzPIArJ^K zwCU+-p->3FLgliOVq^@!HT(*7XqKt~!K;|Baju8(E7Wnj-Ea-c($v&cK|#SCzxlfl zYm5NWer1NA_4M|=-!bEjF~^V#NFhrGNREpVi71XUFDVg^!Yd(#LikK36UbF3!J<1V zw3Q|K%G#S<`NOFq$z&2SGqif5sHg~Vh3^9AJH`1I{0e-<23iAc0U7~PfnSkl9r@AG zMSp+a`1mEUI0fVizsBPUiW0}7acD?L646*3a2m#qv$w?I=R^`?IWCx_3AiDN{4fkp z2#0CCzM`_Sj&p)#pgs~2&=Z8^P^Yr8vbD7pNP6j@I09Q%N#idlgih#mI<(MmwHX6z zh5+~?8{QnewwJD9Q9MVNry;SJcV;FWjtMCRB^6H$4OvUdBEGqBAY?DC0TJLB8U)6q zvKZh^0iHx-!q*4guGx9}u3^*-_$rY| zHgDd1+jb6iSIwAv0c(Q*xPT&DFq|nFJJLF7ZrIy?-9J4u*(XsLP4@D_+LANp9SzeCgUP~q`Y@he z&Ub!eX%zQ(JZI0I-L-2MI&=g$rI3*=^ECPXo3DM?KJhRA@cqC1{tq_qdt{{d+Vg+= zqc48xE8%eH)fZnF92_cd*tn09SS;3G|N7V8_{KLlA33N%Kv(FwCr+GzXKmTCg^jji zV`FVQc7Wy}^mtsCE?yIgL}0q;jGE4lGfttZdp2&|2!&w&CK&aCfvfFTnz!yNvZ_1UTBo&g=BH%x?8P>)$YoMWu27!8-0t=H zrIZAkQnTtlCwV||hnCSvK2JRH#KR9i{P^RK18)ZLLXt|qe@>y$3-C}&OHFBMmC4Zi z`fEpRdG@g!%@3?LgVn~UF)ml~=+O&%_cnVx{%|BwWi`^tSWc15;|~c1 zLYCs(063w1>eQ)& z2M<2;%rg?P7)E$tN0aBh)~hZuiNrTSDRZi@6qtM|YsF@;eT7P+NM-VP80*bY)R0WX zVl?9{5=xB|L;ZP**b}>}F&6vzkHgb(P|(qrcBZ1D;>SP!F~-sZe1f)(R3K=he$$SI z%}8^=VzJ2XUAq)=S-|i66bWP_t|~8zghLPP-w%Z_oUf%ljHn&tE<}U<{O3Q<4V-=A z*0#2H8XA&vxuT>bCzbNpaxC^-Gu#c92!mGw63W?bGoCJ!NdtyD;B8%PVQozTlp76I z^gLpOz-YO0Wz=G6rYI4RXj@wwXZvETsk&^`7RPVR*Sz!%@+Aztc*5^4K>q^a2yhtz z%f)Uc2))_~0866+=-AlN0 zgIe9ccgKJJ%9mby{q;lt>F|H~$`|k(>2Ir-065PNypO9_ufp3h7z~`@i1-ko)U9F$ ziW~qDD0};;lWr=>kDVi80P~}! zrUtYl;4i07p9UIu9kA!nA>_6PDlIE3gDJvTMh^503I^O3Pb7pw5NjCR2&hjo0*#>u zXc7&FWP#IQfkOO#|DDX$O^lJDfukqRec>B_vbm}L)TxuPXbitm1bX!n0G3uCr>CcZ zOErKZoYv|Pu>A5iwNi8eEF2VoEnBwSIu$L_l&}>Q&6OLc(=n-~)i_;?|Mm7D-4v10 z6t_MClr)$P!1e$5kN^1k*T4S#?|=WNKmF<6y?YTOM}7P2zy9Ii(C{qe++AZ(4ZP? zD^H(2``W}PXhB%o1G~aqtCRpZ!~&!T9BpiD#P0UCI+z+ztNQ!_dDOwwY22etu#iw@bX(< z|F3^sY_~wQa5%he+cwa7K-t66Z|!4P3xr&Szxj`!$0h2`jdh7+l31fgFkks;Z*K>7 z0{Rc9x!!sEd}ZUdg}^5UxKSgG1$a$UQ`1s60LFx0qK6KDx~kCj{NMff-FM!KCGq0g zrWv>67eD)HZF%wg@4o9O%H6(mH@5)p;>C-Fg@qs!KF;Cjw3@*g(6$0Znr_#s1mG(_ z9QNN`9K91E@CgIH$-xCT_!d9Flb`w&=ty8QJpJUMkIuG!=__9)Q{h=(_;Lkx?5Wd{XhKfi7`;~!0en2lPX?g&OG-+PA3vTI0!sm=0vV`s}m6`-`9dB9au`eJ>D){aAW|D+)8*UUz9O zPXW7n8-4xQl%EXX48D&(`eceh_eKu0$fy>-BwoePv~3*+cTy z7I3_BYI??2QaW{|BOXr*#W&u|wh{qwhABc&jK!5;B+`29nB4DIQIvon;_*0>RUG&? zjuQewf>|&a6EaKUh0J<)IwioFLYz(6A!c{Ja*NBMu;=n6s<^n8-C)(*+Y8u_eO$^< z2B624mzSSDeH!e6tPogRz?mr~i)nUxT1d%AJcVI*MgaWKAfhn%cj4W48|89EQPJf1 z_{@weFE?*&VoWL)`y&yr&u20k%FD`}ZuiL8nAK#VBw~LwZqX_e@q`ekhepT6Vv*5e zjU{42M*Am=mGXh^?#sz!^Oh~OwY8x9EQp$q5pdqxV69f06#{Dx7_EUIIy*am^0Qxk z=69ZwL}*NKQ`*f+m5?d|jJd0;YwzB@3WZ{5cvuyQC<+R&XtaN5sBdIw#5EU>_^Jwv zD6x1Zk(hS5^DNe@y?q_sU1qbb*lz0?=qoO%Fw3b}BzSFfqQIyhb2@t`$Ma0Ks{BHg zL|9Z@Jl@$E*suX5*tsw49|0!>PMtahLSWgg;#pXofY7F@s_OHf|6Q;oH??dLkvGLg zmmvW3%0V3mWk93Ryzs&cfAJT8VKSNi_>cei;K73^=^E4`2-2q4#hFBGjFeC*6xv7x zOD0ApCVbvGokpvZQIRCpP+oGTqf@(~L2t0?JabN8AQ<#1DcQt~`+-fH645Xzp-`Ho zyFV+p0(>E$)9H{9$YTFm0Zwb!v2#~xVa`u~{vQwQe^4s9tw=C>o%;q7I4KqhZsx_^+FBqyy~*+8eyJ7{h%xh514NF7A7O?iX<5z4NiptGoA7lVsN8VAxx4 zyirtHed@i}Km6#-KmF5>Na6;I%2ovdAmD_+eK&>q{V6Fa85kH?4gI-aKwm#~*Uh(( zkstS7%p_V4y=TYP)0f&d?KogInby*dFfNjZ7Uf5yQSp5ZigEh{tX6ApZ|{1}n*!sV zo10rJ+k!P3)wE;EVzE8^5R*_fnYzK_Rto_jKx&*uqZu6?1=h<&-|la()@|}EG~VIi z;h~`+sZ<(|$Cs{e=W?j9Il9@qQp}=xfq>wWnR0qmOG^uvHsY>#6=BP3Z@m4$V}~0n zikW=9Y(k1PqXJ<(E$GUXD?kAEyE_bIlV>>`j=H)!H1^vYIHHp?XU=%NUX*9|t^?Px zx($tIJ~-x`8vpduzr(tM){X?=o1PeZAi(`aI6m`OKSF?0)6oh5bW{||756uP^EX>| zJuunZDp45~3b~pRzWUZX`}Q9o6Oq^7`{0YuePMKTOd*q;JAJBeWa^LppFeu>rI$8s z+3pf=ib!5u{kHR0+^w&c2#@otQ7XctZFTh|hfb9jk$9*@2 zIe+LUHE#+x!-(TdO-()b+;eZg{q}di``yEb4|BP4rBeB!r+;T;cxYl`64*g+PxsNI z?=`oyoICwdTW9~l$3K;fhYvsX+hfYnFLvg zippU8Km$PJfb>s4{q(oK^(~B@0ro(o#OBQ{Bg4ZaDJ(23MECyQ?|p$;FPu!2SCrFi z!ceGv@IO8AC@zSE19deuzEJ$hXTFe($FRlX^sWPnvcbiHL%;RfYp)SBrj*^38-3Lg zz-lvv`Mu&YD5B+h*c~U0S~)_*M@<^1Z*qC#%8z3fAL5I0F`*Uj7#r%EoSXzxr>Lmt zt+(DnC;tKJ!~A!4c3LbJbWkkDW4H5@AQCYxv*t2aD3dGTQpz?yJ2&TcyJ6mxO6466 zVFf^u;JN9FB*N7}2mZnBR;!iU56wN4PH)CQOAqgS z259y_rcLHV%>~~)5^nK${PN|?P_k{?Hc;ZxbCHi9$R0W$jYhE*W!iP0%g!4#SXWnv z&fvI5uM$Oq4<9~+z4EG9Wt0K-uSE%ftv*wj>lO5&tgP((`SV~6gBmb0G6EgTIR81r zVnO-A;l(r6*smxn4Ehy0@1Vi$+qWaB!q=S;>I8kk_TKhTEW}9wW}_2}(4aakoPs)^ zwFzTSg9Ub&_5`wbVCi)@R-Lu9xD*pCaB+A93s2%a6rk zz+81Y9nR)WO0vh%aTtKw1knNf6%hb;ZadnCG(9!_LH`HxBDqK`!dYJ=ouWx0$$XMT zG#V$+VlND55;QT#qA-UjC)qmjI4Cd#o4b$U`k>GNlkAx8=s(lHw_z_OW0Vkm5c8FXU5 z-w%2VKX(u?U6M%s(eMA^AO7ig=ca&cM{Db9fBMs(g8nl;F?s00-F<_j)2_LvKKuEt zO*Md>2zN1-#d1pqki$+n9Uo_=V#S?|K-X z==1qthG9h9`Ph7Oi~GEbD0}Z%7;1U{{@t$G*@q83A(skoCbQEjC4g0E3ZpIocE0%H zi_bmxTwh-wUr|malO#d(T)8kXICTEPr6QX)6b_+7cB`wayL)=10=i+_zC9bu|NIC4 z2m}B)&mAU5vpeiSaDx!|;DZm|eDlr6AAh{1rNuSl66r;hfC|QgQlS(kK`B>F437z< z@`iHzPyXsxpa0h9Ecq6-PThH-(^hD6IbF_Cr_pX#C=8KsSSl9IdEAZ>2PgwYHN_T; zj?=MNB4*Z^yRfd1KO|L1LBL`kSNigM4Tzh(edN7OJNDX4+EgmZu18vfaexe1C8jWE zmBPh8{KG#$2`CSohJdE|rI%i^7Zkkv&YNHT-Di4xd#0x+3(Gcu@&R~PUTlBm{WHPo zL9NM}(K6sY7zRL5N~QA5nKRJ%i4!M&_`@I8R@cUzaYm(Q4OnOLjNsx+1cR&0@%ckaz zwu`p>qTSmz4^Frr-oImJdRio=%F0S7ovukw@C(2D+sItwv<|Q(fD?lj4uznI@7=q1 z$BrGWEsLwW)s9(*RbvILEi5h+iiKLW)@U*N!_g;eYQU(dtf^r9OOym^mz0%Kq$C&% zi!qTk$BNvgx?={_%W_2 z{-$b>0H_fl@{*Dgl$I3CT&T0VY4@?#V^&W_gh4b9tb=C0LF0ISm!Mi)gzMW6)%>HsEz1}~S( zft!MH42)T>Q2PB|uyjGI@p`>#wHg=TZkJmomrE%MO3*6HSS$v2Q4|FgkYGW_^m5)+ zu~hu+zKnV~DR5P2*s18)-_K`q|NVE{J z%*evT>i%?YelE>AIPWAF%(3$%Sckk|aA9E~D48H&&z?PNw}S~&z`1CV+6fw()9FMa zi<7_^Zy`f;U_7pmrDI`vd3pD4M;NDzzWm}#yAC{3nrmKrXN0W`t7HDD+L;u>{xAW?WIeXKp;S2C=|MS^(y>? zjseDa*v}9-P&@0l#dx6-Q~1P*6Py`(e|yE}a~UNoS6*6&&r>sgy%%nHe#;2B6MX=otE#FhD=SZ)Jo)(J zkLTv*o<4mVcs2+quuM3HN~aS9#uG`9Y|s+7N&;E{r4FirRTB(_DM}*Xjq8ICKEUpo z{e~1s5LPwyji*kYywZ+0HZ|SMjjNpi5TNxl3WZ{Pd^{&72fN?S3Vxi3U$R2wmFwK_ z*LwuqLpjb3NDQ{t^Upv3-h1!;$)Ehmcfb2xg!iDx!7F&-g%|Sj3!0l6|L(88-#svT z;ISv9BJAS%vweO2U`2o>125>=XP+O3VdFIoHkx6qioZ`*_2mr{nu&4;d zH*N;j1_9vdy~5Y7T>}DG4O-AA3Ao8bE>Wk#ae}uqJUqZQGVn zz5=WP0^n3tqtV#e**P~ihkPb{x7}?+hPz`u(-q(Ei8jH2hJ#3gt0NHLr%#{R+)(9n zPrv=<>wx`Ar2^=Laoe)51KyEZtx6=5`F49E8e)#=63koM+~++qg1Imy7vH#<8`l5< z@Bx_9(9jUKCFL%*yq-~?15ULA)L+)n+PZby8*jW3NfDp@^l!a;{Pbr&`%KX52A02Z zqZmGAGTFq$#K_3#rj5<}_w61U7?_>&>(q)An^WkX&M=-{xQZ=~vD^^W3<01K78Mm8 zKYrZda9AuBkH^#1)rIs+euA0|i<6soo*6fvE)r)q0p{oDXS09uA!8npG(Zd$tl>ZS zgFis!C6#r|AH5o5*9fA|uYdjP+>Kftqlok48y`#eZw=N40pRKFs%Ouheel5tpLyn) zpZ)A-7cX7}Q2;m%??x)6f`LGa#?U#F++DF)EE1SWQI%$WNXd5Z8fOAZ7A$S_@Ple{(v z082}^9XodH*|R4U3ZW9cUJtVgmRW0Cdv#5%L`ZaWb^^My+f$iWWigvARx4D1Z*5nu zR@c@Ncxu)k(J17RNCa+&b^!H(67KWxRv&PYvW*)z`u+YpQ8Q|9ywD;Q8y5?QmHr4;ZfBp9V_s#!0Hqiaq&pnIX<772!7dWO4GYp*KwmCOH z;&ykbc#oy}(3y?b{@N5|7oKm9j< z`?o2a7T`1?V6uH|lqp1%v?gEko0neQv8e&IyxMruDgl0M?#{P^;pvSNs}0r+0dVhw zA96=OC6cM%{?rrxx#=mli4fq(*kVKXbfH!M=YRfPTTZc3rGE19$NWB5|IpZu2M%65 z^#RZWx;-lat_OE36n&Es!}|hjh5#_0tBdp5Bg^cuM-ECUYR=;k%avdJ(w7iEgOm`9 zCBOCQX9`-|O3ErpoED0N-q|@qBoT{*dv@=RCsO=ov#>s4EfGKl0H;SX0jw*K33_&k zWn*I#KEHWa2Y*u-+0?udV-q$(Wxdgu-u6n#*d2*zPkNRH)-9}I0w^jfI(F5|aFVA2wXf&FvBD6kXO%eb?;sO@#Zkt(HZ?Gl_fLr)6A8@%X z4_(Gu{M&9P3u_wIBmwXjeqguDyqCH-ve>^4;RXc2XOq~iph%XjW?@ahbqRpOcxH(y z#-#OQOKu98QIsl$f`6ZgWE)xdq{2!PU|!D#O(U5Ic)c0FF6{J6(d-^;94^?~*nOZ( zMgzG}Btb5kWkmsByr48`oY1)5ElZ!i>`z?(`GV_)&E9bDB2O6NY+~BXUEvw7B>pNf zCPA$rD-Ty4EKdMwE0e*??%w_nu1?IxMDq$WvjRboOeRQ?I1vkjD$ZQQqp4()5Q=an z1e;)S4VMaH+sibKbyf6rqOD7V?HC)uMJH@>?#qnr*bEvm9b>u&XvJ*tW|HVEB(C8Q zk)Q06GZ+@P#;l9xwJBhCRABRTol4^_lT&}8tDKLOsmeZLex*Q)P27;qpT(uQMN9<0 zi4zO6@bSa)1i&pf=6_j76fcq+B8Awsi}Lh4=tm zhk`*$D&<%^JeFR3fCa{q_vq-T(PWj&C;`h3FfMJ50OuYT32;r6LWD3FK-RGNL> z$%*#U?-W*V3d}_ObCU_0RIAMe8ye1BJh7?Ttx)T(7ikKILqGf3PoI14^FROPFAx9L zVXr^L9te?~ayskk8#OBVnKNft*(1oYS;xmGDypjox;qC(#v5xZXG4h%b=7X?)Zoa7 z)nvg4JcW}(gM*HV@tr%i1p|Spnc2zlkuV zL;dv|8i)IP28PGCwKUCmLmlmHdv~FjTS@axetr#n)=($$0HF+u7Fo6R_Jp| z>*w4vN~O%}ngvd&GUN-ve2~beobv>*?7IiqP+pXC;-eG!rB&BDuC}(f7vvYI4F*ag z>hI~SuBr9-0tA-O>I^Ub>VG%w*#6p!FXa~Hk@49VUwK1sGy(xkIUJpxT?0MczDShD z2$foAHk&;&GqZuPN-2++EWMrWKmdUl9g2m?RLbX@(`&SEzV=Em6cACWmMxp!e)&af zVF4uwo;`P=v!lJTw$VE~>-4y<^$*Ha+R6g!yYIYPQPW_BVTwcsopyAh2YTK)GHKSx zkG^wMC?%)bE{6iXP%NcYE9^PBUXN#Zz$21Ut?ivPRVCx&qe5nv0!|b4QT>=1w zf>NmRl;pH0qBGfyIr+dhquv~!XR6;hUe>sy_5C+YMRk-y@17W-Q%O3N@OzwcjYX|j zB?Kuv71tPy;V34L`wH_buQFEM`a@M& z2|);?QW+Kt`Te0S+qaL645$ow4^}ot*#&JDdyduVQOLzIrP?3x>9pqXoKqr|io%g( z3ahKCoSpSRH5En9`RSUP3a{5ElTveTXPh?cwA%dKJQ0?haeKs4or%! z66F;X1Lf!x!ZT;i0WFVDI4ox4w9{QzTfKv^dbZmay4cP=DN4Pxd%tCUc# zQ`kz`!+Ee|0%wg?Ol2(wfkBga@umaJeK=;-ER+`)6|gqvyt4&u_{z=8L#KZ5e^Qmf~LU~nf`I1S}o8nI*NPV|hu zd-s5-f$Lp+A3!y0>zUSy(k+x!&X2Rasvgm5R{vRTu#y)DKGj;o7Y+zcUA{6t97SpF z(lt;nQpO=jE;wEmw0tl~tukWwz7mt!no66J*K>o;-$%24l_hBMrk0|X3;`bB2h{R%% zIO_#kjc{EFz+tCKqkUxG7Mk%hV%SY5XJu~(q-Pc_3)r)A=Z|*nT-Ria=7tYAes#a0KVMP%S-1S!MOZH zX;es|@WRK53Vf`^Zbc87zj3kJ&fR`9d;EAreru1;!p8$QUJC?TuiHI0GsA2kMB+aq zSj*yhI@JyfD2T>|ez;GGL~66yL?R-ioVRBb#hq~ei3~T4-DZS%mwx5cB)(>arO`2C zRcVH}SoT5aE_%5`-j{7;+5U6S<<6;I+SQC9EITfYWm336fM>p!8${DHdYkdkl@a3; z1J{oOuz%sbT)K2B8XeN>DWuYfM9le{?2E@@u>>h31xWS9(Q6Yh2Ujs?mI#xHBx0US zSTqUOnBN~eb4FNEvE67iEU3sRxSYlVlo6j}oOC*WclwQ@6K-kF9HG+(EwYC`%v%v$ z9%DKk5?;{0*!VGDEkUY1dn^Pq3XbC=6rb-TbJ8edrU!nQ4$EUQ#{m1zz zK7S!#2E{+kA!9=i|8{OfY^0Bij`JpPzViGiGOU#Ja2Cup)>6Xp_3E2iDH05`a`ECR zlgX8rR|hZU+}TUC0MqLXz#25)2bM#)bzR z4z)t6)*JnyfLtP%P*icTE*_sfb?RM_=#W}HpTP-8Fq#x#EgAts2$pwO>WDnufY0B4T-RjE{B zu^3u#PEASVN|i!Jrz6v$P&6D4qikmj7|*mE<654aob2fvXliUy$SF*aIeW9SvqGT| zEFb2ynE6~?sLM3RU#F&~kQ2!{Ip*>D%PT4op+f)Rc8x}Zx`&zsZ05$rE%AWL{y+e( zh6eldi%R8k8Am6vSPZVAg$(s?p_A+Bgp0)Pf1 zd3lwIL>O?$?U_x+W9QFxfBnCF=EGwjMq>$;MtSOF+ol~G?Ivw!N4J0==H>#)WQrhS z;cy@nicn&*`|7oU(MgNNvSn)xh6RN}c}a<;ukT88^Hy~Jm*4N7^|;&~cW~Afjwcea zs7$FOaJ>D>m8$A$y;j}ka7dJT$Ha(Crr5J<$BbjVyMH)8$J#qEq|%ujV?(4^28BA4 z$)r`sqR}`mqC^5fl#A!i%=vs)TTUbv#!~pu$XF~A+Of68;dD*UxV>|;+jj2BvzdE( zyDiq7wo7AyC{5x?lf`!7?8%0P2KV&D#Ee%$NykTrwr<}Y@w?7k>?q97ftF!{q)M$^ zJlxUIwYjD7#g|?xC@hhQ@X47uy+#2O1%0`E>5^0?Z>+Cry);g#nEuP<%I({>kpvzM z1wQ=fBag>p(rYn^+A%(2vzQ%I(=nRd(p)zYSeb{1?73GBhBRNCW=B%*=E& zNre2K&6_uefvB;ob?Iy$b^R2LCa zMJhQpI~M}>Z?l;^zJOk%iN}Ee#IabCBsty&a-48`=C<$HHPG9Qk%FQAA*DvE(`xby z3Y9ALKyM$VQucIp7M7F{$p~by;FuUEgv6EB)?K@|cVE3?Fqz~kwNjxR@r}7X z&Rq5k0pN~Kr)y|%KqQs=Lh<7K{JdQI*yy-ir`IKug$4Q3}@;m)myj zXr3G&FDFwXSZR2q7RgcHpe(6J_?opJak&FihhsPd#^pMZz3**9B z*VN#w&tTS%43GN)zGyrJG%u0K`}_KZGAZi62v3ZS4i^*@Fj(f22r-+{>9%!@V=1?!0m2}i32Vu(cphCDZ{cC1y?*~kTKbj*Vq`ZvNA zKgJ_GJUE+e<;X%-hXyT|!yZtbOjOBexjCU%iO~dSa(?!uGj}nS&1Y>c?=~;4He2@7 zg$Jz|Oz1QGvpTo8)CA23WY`Pg+8@OU6}s%vQ86?tUq!CD=<*?g&nj9h&MZpoxPWpLe>e9 z;Dd)V;e^%6QX(*!Q-^L9E*}Fr+MB5_Bk=Idd7KqWk);PR5tn>344!)}LO)LL>k&g?2P-;XsWFe#eg(g(zq#Yk$s1 z#>bd7s!#*hnDO-X*)^^%uN-5dpR+o}ARTMSf(8dO1=|W6KlaUKsEnNPFz~P>v!*qLqUFVi9Y7Ln{Yg^xilxSrmn0J!jVbT5bCuy1oCZ~Oe!bBZ zxI5L>rn$(P|NPN#uvhJq3S@ZG*56&)z~S}nP%Q@~#gYdkfd~mm4xttg7No(1ipaaC zOH5S<5#ZpItqVIzB%R$72Ivoy?9a^+d6y8ADwXfCilY|bs;l27j{|Z}fuB@@`+;nh zZDyG_oeS6O8vEtFaxq-X?1T?VS|KFaSeZ`~*vgX;Cry~T`y*nyM^0pO`VCr7H*6lQ z>t)4IRaWZCZE{Y0a9i)Xx7qN3&uw$j|S&B!jt(Whp%z;_s8fK}FoRU*Hg@-ImdRlCD zrs!%|H=PvZr!a7*ML1n8T!;*@K1GOBD37pO;+_a?js>tLp_O7|wYP67Gc&0ufp~!@ zf(6ML0!kSeny?OO8}{%*k}Oi569Dz^R+a&{=rER^?@V?IM^Fa{U3(OMgPz&D^-atn z+su7AVcGQM%HwDcb%1r1r>)qpa%VE^Q`aDbuniG&tOmW@_vOv6EUFg`x09yiC(p<^ z-5_2P1UnrIY_A#V`I+4_P%^Ob7~N8(AkLnKs>BmEnmWBK0IAUX`8@-goTeA)&lb{K ziUeS525g2j<*y8JFB&&mbyHJ_eeoaEw!rat1*t04bC(P5oGca?a%K=i9uXZpRoV1k z+lT>D9>W}R2GTUYIzK3jrN7uPx6;q6i=zWvSLiv!G8LF+2FKog8P*Q+9Cf9XKZERF z!@!6PwsXeBWelV#h#%8p-j6yaz-iLRuxfco@#=+k`6L}k^VL6C0qf03AS--Di*Y77 zk7f1w(F3JjS+Jop)iFYBLMF!@|2*gY$Ik=CIB&#MpdPhl(b^)K#aK~NLH^4 zOLwV8-%a3@jzVOd@!sTXD6XJjkah+TUXOzx9JLIYrj}lWc`52}X?VPw@XW1~2@BX0 z8ZEx#;7MfQ$RdSYaqRp#!l6$(e=fo=TBE)vAB%v&x8ahA!dOcm+l1N5_r!)L(z;Om zJR6RrW&TxU>Ro~@1IDeUMNW?|57vx6jLEyBl4%nJ2+$q_1zMDMP~gmz2F)4;|CQ6n z&;hn$Dx}yd^aTwLxR=sZ?$dk7C#%?mBp|s!U^?Ql9U5EA^0F-Vt3Ho?_meO1ppX>? z0M`lGv`|7uv}e5(TCQHQ;I9Sk1)w+h41orI=!{u36mA(<+PDVqxb=X0kiWpS6h40o zlu8FQqdopcf(+Gx<9$5bW39hFuG)xjhH?cP?n{8Zg#zjS?mH)byyB#jdv}g22W=H- zjr5QLqpO>pNFex)bi9o;#h=?P_lvzqvzsO_BDn+!eH+8B8dk%T3T(yqLZxwOhuet3sNHAZprUeJ?dT@}u1_Lvavi|5ex!gtSJ;B;-fw7~aVwnHZsjLfq~)jera`??BIU<-14^CTv)kLhrDyc zZQX!IA|#kAc%GA0Fsjs;R2ZUo++?Y9yOBJ4n32z_NdtIPIB{)k%)!@}cdYX7etp%o zt*NQ%a%yR?Z?{tDh{+rr90G1^m;(n|QCMUi!RSwqG?RL9$`tE6NPENz=$&8GA zh3bR^ZH3ynZk}ed5CN2^2~&l$msFwB>+4HGNI_kZ+@B=FOX>#KXa`+fAic`fTlo+n zrBD##cmRpR8*W%S8Hr@{xC#~=^^lQ2kxr&Ox+>^Pun#32b;QS3pUdF> zT{xzew396;Z-oZ6iBu>4-ZnE+b{i)qcb`7-wV#Yrw%e9gNo&gRLSFFke?&?%qcp^cU~LZwb*bF zi3uSyh%Y*wOFOP_k>xNC)yBrgMioUw{6A}u6d?V5&9&BC!EQcI5LN@yoUVnesWExI zKEpPQ)3R|KCqd|<;5!0+mu|z1fm-G&)RYMXPMJey3mxPX&y`88rb|22I{b`k)TK(4 zA=Ih%c5;?XIc=Ch7};!@b1>q0yNn{Yf zhm?||#REtrYKg+f$D^mJw&^U^19Ht9MT!+mmB4v8@J6YnqiryZ_4VWDO~B5Ftj-3y zgrX;qre^Cu%(m|}ct#7_yq=|~Gbt%)`;#1JuXGeO&mjr(wwiwoTa8tyiDR@6D4(=kJuMw?o8v@y4B0Z1?iskbxUgVw;ln;E9~j$3I4|kw zsX5&D8)i)AFIY$l8Q9tFT|5$ypmc6Dt@9FnGcRF3IjyP3OBf{!#=f81`krlpUW$w+ z(_Y+nD&mH#x$xJT+f?jUFO?Y?LcvWrISt;gtu`Wz4V%t3Y%`j*N`YpIuvc4o$(V5=qDGZVO~5NHAg);NYfuCb*DD z4Iyagz}3@qniP(-1})lo2dpO;DH0q)LQtn)locK`X%r+-3<<5Q>}hH$u+UR^+2WF= zks>)ozd0yP5}_oL92gP?B&mk0nNgYC_>f~6vx^ubS#W~6=IigFgZfIDL_Kw#0cdEE z{df;zM)%{9j>+?PPv&{Z$|#+ZkPuNKv@qbH83Ir>=qV{ul-OrwY3}`_<=K6h=38QAQ!NPPsFU?vugA7w$ zI@>-B?m10yxc*;L0k|H4a9TBceSx(rD`$5MX>1#BH+SGP38w_Zb)v9#?JyjYTDUk_ z($e!E&%=HwWiXA8_#br1hh1>WV{0XuWGjz>)J+TNW^7mz8D;CN@zt_ZO_nUPqf&Gj z%wgJlnoMPaWkE_6CY=L!potwmiE@ zKkT~5l&a=!b~@R|Z6UjY?V#7_z^B^xbFxi2f3e0H^MDnt|D^rNWHjT#ztMH5eGF>& z+W6{~o?R)!43GL#C0zd9l5?B1>)gXkFnF>kN{@g;%M$!c^PbmrN6v3f!t=|(%| z7SeGWOnQoap*wZSPqO;o{-`@A{^Y6C8Ed8IBKb9&c6MJart>+T7uc0G$8h$q<2y@h zYiO$7B?ew@T9H$8;WJj()w@2ZFS=tCHhG_;T%N9gjb0elUtI`H+7+=>{VTq7Z2~E^I;~Uo+uZE7^RSw>5 z4_Cq5c?@~(BqJ~50aBENbe?F9BH}X~j=B}xTcO^(!B(hLuwHKUpKd% z(^J4(NeU%e3|eW7c8@HAvN1e(T7%ADKr+&U7B4PBgyi*#mMn41lxan4XoLdateB5L zegZA3V3#6w!n>o>27DMs3I&02T|yGXMmKPf@%#}|mb_Sq{(0(McQLLgi78P63;G>W zj9e-j#yB!Xgfe0%xv`NTXCF$aMhjimNQn^}Dr`=N8&5fa1S1-JZP5FcFnJtZTT2Uy z=lmHWg&LhlS7dz8ngJ~{(~&9C+fnDwG9W1ilm!h=fe9O!BR#@h=aPiD19ZXbqTtpop@_!jjoJYKEooa8=R9*_#9|`Es&Lhg*Zg*-IC&b0X!NbGb z?lgeQ4}XMHhyvn}2PV_$sZ=)ZBkPlrnEKuxG3hbVR(b2ZH;;xq?0@#kVsR-b@Ne;W zwKCG<7w;ADaIbE?UmAOvS(v;ot~5J`PaI~BF3{7tJ1#FTc=Hz!fcsvy*a_u;Pa^$l&fn`0?runzX3Y zDOH_sGSPBD%&HYDDygMra^B`JVMGS@MT*=;j@iy!e|5d##>S2>p23ER8qH5VHHpy2 z4V(cM{`M#0MeCKS^lg27`{@9rL`by>){ZlB@Nfx6pbHht<3x(pI=8FUX~>3R7Bk^G zN5VgOQ#1gIXh+9=YpPm@&8vEi=&G>EcCS-lfn<~mYhLeNI&eI?6^YEA`-RAz+jdNu zfeJ=Tm%}KM94KU>MVj%QMb#P^F^WnRYBd>-a<5PESTf{Eake&A zPO}`-5Zwy2g``t?<5K|CDntyL5Lhy4!&17$k_=kKbhu~4RP=O4umEJ)P2BIl0*h&} z%C+ZTMI=%r1JGS9^=wFR0p!K2=cOc;JOrqFCF|ATU^C5|!l|BM^fBd0LgbC);7wp= z0uBI;=6V=oXq8f>WfkU2mH;t8x{?8x0!-?o zQ#~C!q+pIy3{bK z@gZ)uc1Q`)s@>(~HKTS+h(eR|DMF}JASre@asfdIiDGd-R@AVpm|0a;2y{_t*M5dx zu~dnJV&g|1)OM4FMd8+RP*v z8(EurdI(OCQZl=?bg<+E^$3VqLU<;8(Pv_0E7Yb>rYHB9v3nT?OaA;|&!UsXhQfb{lpIFdh zKrTWMKpyvjXh^GR0ey$XNmDh4t-n{WXDLitbdopRDi-lIy6Sx~6{n70adK{bY1^_< zrfg*JCNpKGJhB9+RI6Geo%}%u-7_-~{e?8bLEp+|SL38EJ1xU#M9h_s5R34rLgP`R znDxkOc-3J{D<@3s-Ln?t4>~4XnXoZo3udnl7zv|$D~jsvAv_fiz*zBMh@@Tv?~85_ zWW<+73@oODU0|RS(a(=WOdld1Gd|P z#T*k%$#OR;45UnjX-jx0n(;AMg(-bs`Z|HZA&BMS#5NbcFAw79{DL0E;4bjUl}Rs0 z+>`t)NV{I$2*$OK3|Ut^SFx(el3a5$pRe=mGMs%n_rJr=Av1ymX zmlKm_*(={bT)gB7U0P?Q?cDy4oEzF|HVyqqqQ-)UK3<&pd;)DHl={) z4|N>@>VLt}lA>}VwL%6#|C2@y1qJml-ul0r|2_ZWtxa7F={;<1VpC+}vl)=WZoknZ zwyW+T6W}onO9?6oTC7UTl0TK`GH)%)qf~loSKh=9cMk)C?GTqEGHtWrpbwCx3NcEY)DC~ zZo^397k8jqArwkyK@?h^u1P$5qxN#FDnf-DN`$e@p8z>3qA}#mP@0?9Udp0U&J)eXbF-{q9{5Y^kxaQ^nKl zbJ_Hq_H|ZV)Ea+TVIlpTdG2@E(Xozt%@NXn-dNsKjoPR0!3zG_ZQgp)NC1GDdgjfx_Y3HVWJA`3a8nvO!z+b>%SRv1{4%f67jiG9OK8l;s>Ru#I* zFS&^C%)eZ=OBIDRSjGO9W`Jx&Yd-sH{0kRhO!9=zbR0XE_ZY}Dpn#5^a@;bFf>Jw? zML)SIgqckfMThIB0q9n?PTP0W=qoefSKFIkl1I3XSOb4Ga*Nm4Prv*p>K69-?wQRm za41M`#FXkCsg{7U-;akahiKXqnrJW2e%0amO?sTWR3b(isdq){cN;&2AFvA2kWhc1 zA~@E8fq-3nCtuDL^TM z+qZ^30sj$RG@^}K6$_Q>pHI9+UaCQK5A2SXfw$IO{~xAE{|OKegi z1}xqs7J%p}+s29`(2%FLiKi<)mZrYLNb;vOv>i#XMkT7~jHiR6+(wOBy=qy>$(@(Q zAVHdv2qie4bStM(@>1y`#%#2RR@{E3JjD+SUtWWrma(hIGQITp=W>2a{7s|Q!)CtJ zkI2^T&bYUq0|j)ETcG z3X%qk8E5yk^%HVNKd=F_h=(8G{+5r#;ny(qmdkCIfO=DAR|fZF#DqCz{&0-LSZ9C- zmJ`0X!F}=Bv`CuAWn5q;RX$6XzxNVpL167tq;^k18 zA2|YCjuP3Z^V-Pu;B6>I6V8=v4t4)jQ;$xC8LH&?xC3WnAzEgfC!@P$kXH{B7|@I3 zy(og-;zAcERMOYwpxdJ3!fsIxSXrUD98jiU2weg+rwB<@Qp5*j6NuOa_I)MBAF0+M zZUY!iWuQ%jT)-*y%`J|X#IW2k2e_RMxMc>l9{Ta#&)!%87P&YfHeUtJF*$h5VE0No z>+;0UuQ$KV#=_Q8H(nDDwxeLRD&f%}R>luUO8LKVP!mo^ZNVYr7uJZA&>VSxgI#%! z8{-J%(d=awN$L$Yy^AK5L;zk0171=U{_;vk{m9R(#|LKm2D{g)Rm8qP;RkQE3lBnL zNdw=^*JQj}6yt(naKTxH>{vD^1LE7&;s5 z!r6ij4rQ2HmB*ME{>u?OAySzmr(#KU2M5I?b?0WtHCzdSbeGT%y>4k&!;*DCGXO{s zs$k5h{^670^`UM-5mOSI!h$+6JNxt`TLmPI5cf&gbn;4HQU!)qQ_z@yP3Wu)@o8MW z6s*jLSgNE@XB{x;nUPPVlzUAtT&o}L+h#!Tgph2h{od^*@W^!ip|*VN-z!xmXrh1C z|2EfY8BMkqob9;mMywh64lG3M;G26N73nT-Ek}JnU&g-dI9E@cx3rco`?~{(1@~xM zD2wl|T#v#4wMNlw+?#%8bc9gt?qyxIhs-1B;=qhG_~7`BF!JDhoXgLP znw0(uUAg%II=9r9QEPOMR+!j7in+MYCV^@yjTLin-iy- z$tR-f$)Dv`_GfX_@=hhQnltG>FJ8Ya4TIIu*rqAWet{28yFRw&PqJLL%(WrV_c%qB zv9;c)-q>@Nmo-PjmDr%2x^~Mp7S_wxdX|dz$eR-T#><-3x_rFp=gv~CSc_Z58_pP* z{hXd3)lnV`i2pU4PN4=JW(XjlEwcY#vw;Ny0y4I@bNO#?hKH@qweEIOF-Ka@ZaEQ8C+c#y zE%v>RF+I1HqP7$-!=g-|Ifd>_552?JG-;3{)`DJSXx1;;B`Py%DvN5yF zQl}0(8XxYqH+s}6AoV$~n)TsU2lHLk7qxXZ(TXAGg1)KVzi_`=TD!KTKHj;&t@w4o zN}p$9COtaiyw$`oJ(=2klikZXK9!aiwxYZ^!14>3TH6PMh3*T_b5K*Dq(?)mUi&sAp)#H6)EqwYj93 zp6ZdMvua|w&3Y(0zsl1e#t#XUWI{rFb}w}Lte)tTV-eHvn+8Yb#Vwn6BB+PT1(0(C z`AV9|A||OnnOpMQjr^f@S0OTP-sWzb4_7(|{YKey5_~))oMAJhs_#BXih?5O;3bM# zIp%R?squf`53kq!957bM8@2O2&ps4w-f_o8U{|fTU;*}_3tBy!8t4`~3vry=aviP`F!Q(ot(#@yDOpc*18rmP z*$*5)^_JlYBCb?>Sd&O&zpye2*6)CfEJ_Z_rlH4J>Nx|8IXg`t4r$4di=M9mM9Up@ zk35n_xF0C+W}F)xGm+jJ%&$F3^dX%`){O_X^=L7(zjZHp3Ed+qZ-)ji*179> zi4r8+!QyFi91Z)9)5Qmekv4m*(NQl8bv6&PEpljG$wsV;1)ZNmvG4ry`&yOeh+Ay= z!S1ZCxFcDm`Qz$W<%(-3@jB0b^lj330I3h2`btekz2vc8(VAvc#Wv!M{mM_Zn>$(Z zDWz+c1|o3jx035a2;c7CHycFOWZF^$1+B9|X1N<##?*<4h;Ph0fio2$}{ z`$V>Z9TV-gp%^XxxR*%>0top*$kAMWB(7XdJrN~yVC0n)F3>Q?x{~IBD5rv zLG4A`<0VdezF~R<=`{)nh}si_fj#^=z7@jz%%7yU%M8BIzlI0~U3tMul6OtN>fa1xCDGqrZVJh)Zs!vBhjy8A-U4+vmHQ$Z z`=G9&hWZgS<|3R|p}wJT5@9-Om8El)gg)1+dpduIPPh3Oa#S#J1o>O)L)H|#l#kOAGjC6Tq07kNQF z3YdyycZzGDUgczsnny!}rvTLynk4NB|;Pu*92oF;g!X$NNw76~aY!-UQym;7;w^@JgG|425$n`I}&pCW7Kwv!l1`s>_ zIQ+g!yYG-2S62JG1kKBYDwRsBo<5Cg*o;HiQ3s~R{&3nutV^5bGC*h_zf7*IU zLUwy-k?!2+VRc+|v;5PNepQ>?+U=%dB3D+U$)r(~p_WJ*Jbx5BzALWOkhHIg@l>Ud zk+i*3K7c0a69@1_G%i0o_B*{bu+Cc1|>=&fK4D@3w*59SG_T`t%&u7)5Ip1#aYCYiO z4|cWw{IL9b*Q^#7*@sXwNgkn~G5+joC9V49Z*QGRXz!+h0L9rdu#cMcc`Oks2ajc{ zF5E(Hhf{R5m>@asSJ-@01Z{paoS8zKLV&aGj4HLXtBM-OW=2lt#g|ptEwwsUGIYl4 z@(wN=M?prqXYsHBZ<@>2VB+YqGJ z)q9}aIodn0(bhoYHgwXtcks1%p3?GkAxJW*Q%9~CW$>y?lY18&XB_d=pvR<=DV9%0 zoAoNx*Cg%@LeKT$nfdd;8$RM?ze#?!qO-&*wjJB-dE;X^_dfc29UlL0>l5j!K)u;UlRh-@AOL54>GK84(o1%J`Yt z>}WZRSn^zmx`{a1_nh1vqru{4;<3+Ma%om*ENTyVYu0dQSC-&U{a#+<+(nD;)$uiv zk03l6N9UhskEj8r?0&*UOcet!EY@Im7FCuN)pnELr8#-TO-DE$?7EPWKi=!kEZipR zmp$-n{JSZz^~k=kfI7t=Du0FR@avYEcPd|TSd-uaKO{QUd>&Y6 zRNNIQLd6HFqUNq9hSjsgx}l}BPKQOxyv0<60;qrN7vxpXSZY6WA6Y+I6S z5CgEm`^*#~^+P}(JSNLOCBkIqR%})=kIIX)lj+0_+R&5`LudZR0{}aqS95u^6zzD< zDJv(<9QbyF)1;`g$WqPe0B!}YQh}~+!_mlRtdK^?d=e6Qe{K{p_wvf4Js!7~n8p>L zaYXh%dMU742fD$Df`}#(2eg3;CDsj#2ENvQ z%}K`Fo~^&BI3wCf|L|o90pl ztRkbUs!AQi6WkNrlTXi+kCJ{*2r@fxlH%k!qGWIPCxhn?Hn~7R-G9sj>T)+PsgrE| zc+<1L@2c9RPKbK-}g?YpX!%3{T;a9t!SYI4s;f(vvOhKWPGF)HS0vO#k=>2(Kk*1E1%7wpTT zy+K`Hg@&*IR zQhU!`Xr&pGU1&V3RiJN{ZHBG32(~s10y_I+s2iEPU=58hxudsfLV+DmhE+8;0EYGx zfLKMd=2Ak&d%>V1NrqasQB>YZ>b$q379Nfh z{d@x>|K3hGZmOdcM$iVCjl&vMZv_rb_kHH1R1W@nY5R{L?OPY zP0Sj6Fb7mIO@EXzyPjgNgUxnl-e)-Tw_Rrd4xjG{AGdNK!I`UQ%3kIdMo?y5-B;={ zbZxKBu;MGe0)Cv)iW?9%=1Cd?l56BO5Pl}fCa_7D^hjZDL2JgFS|M(&9(`>fdn9E# zZT%fN=}r;#Q36U+0^Fg2OO+n~cKQ+#H=RJ)n*LbOwynOFt@bKii26)M$ z$_!vRa+(6uBBoUW9zf{tznkVY!TP+^kk%B5TdP-G`HID=RXkvFGJp>zdgUJ+>&7=_ z3|6JG_Y1^75&UnF^c`ldAF3O2iR)S*JktNzb~ta2C6;CMioUFbD24}QUBjP0>DcyJ z{&PM#dj40~B#Oh9#3loY1e62*pKYY_Do_{h#`5(HIn-u%&j70bdF=ax*eiv2&#Wv|%30Pa>ps%8f!F0mFD?yof7UmDG7NmvMmbD=jU^xG%^=T&_Q0g6RfFi!yf ze`fjuZux*998W{5zC1lq4nSlVm;4Z>2Jv$;t%zPac~~4;u19Bw`d#;SA=Nm*QGotw z6G54K=f$I50N70i2Et_LT=WF3`@;|CvZf?bFWW{~2&&@aMVS(*E@C$Vi-6dnF^z{LOB&YI-1@<$;DV*ck* z9d1f@sKo$%Jo`4pbf3;i+8zSlL6d&4uYs`75KaJA09L>oLSWO^Cpw5B4MsY=Oy?_r zI$PZ6A;-QXI;35yyr14m+8hR~6NvafI!weFW0XiifhE)7AglTN!^4QG7tJ9KF&!5Y zRW(&%4B}v?m>(qbh{aAfcpZ>v%sPlIorjtKYVWUbp^&41BgHC6+5|MO>~;|9pURE42N+wVN2#J}tP z>G%W#=zqMR162dmNNl>JvC?}!Ds72a1Aiaf;Fm%eHseI3LaeeM-iP0V5n=rE;wntL zg4m~#%z51!Q@>Ttj}W@{E14Teb6QK3~j(h0)mKYpxhTj7v8r`wZa{h+mtH>RwTc87XtZdal#R`0=_96r;8 z85NEVSL1J!lHOV$>81lj?)+Upu3yP_r=DM!fwd8Tx!ylDud_0}X)1d|D2im-!9M&y z)IX9v3l&5Gl|m@Vgc`{!{G42w9V;Yv<*I;szh}Bnl3I|j?i2_y?j>K0B)hdr(PfxF z%hZVxF1C|?G=qDy&Z~@_d9_5ypwXq2fAOOa*Cd#SPWaUN0AbnH#fo$auhavd}N|A*7gZ-Q3a%$3E}4K>Y*% z$%j^PQWT8qY*BT?XU;sG;Y?nxWO-+STzKL)p(4yHow$*FOVNB(q|bN61?Y?ww5Dl%j1R@Kid%MR+!XA*iW`^_j!Up6o$4D9iHFhprvM40l66ne`Om{i>$q3#uI zJ;NYz`F+}A(i2LGYm0fom?*TCXa;-Tja(*`|gF?=XB?$DY7W#_Zhfw^1_ z|Cc1?JtqI)3xyrws9nWjsc25oY*s<_j+@a*r4^P=3E-D$>-B- z+}Hl6P)UTV<$?RdLRnhthtH26;QxM=1$yiQ@iBmaYW;x!KO@ZlmM1&Ac-ol$8(?m0 z>pO3@A^YE!@7V%smMrgKlIQjej1iSD1 zd4HEnCjw}TqBTTJrI?S=ttKt^`;MwLuntnSCv1o%`lCd}l(cA7nvgiBFC<~Jy$f5J zNWJRo7g-y5wdcKA-IyNSPLht_a#N?!KqZoLe&UpxYk?-+gYZtw&yyzR=a58SsnEvdlTD3R!TJZG-ZWt=KTt>5E+IhUu$klCdzm}SwGmp zGuf3W``xrw9DIemuNd4W@hJe>GY5$fzf(BL?o}QWzk=fdnG<4S!}2uNd0L6mPq=iq zmCk~x#2NrNOs2nLvQ!$;D)r$oC2BU)9p|_)1$QjtD?xs&@Yej+E$+#bD=njP*D_rl_CGC{Uz&V8;1WFGoahf z59~BUHy$*(Ieu!@Ff1(tznsF2s%7ri0 zec~Z57n^?4)H$B6#`LSEaj~}sH(WEtA=_zFX7P!2+@3=|XnU@uV9a7Bp7Ux3J9-US zLdmy(@>{+*OE&m3p6>4T^DD7MOcI=q&)tVNn6uhh3{^DCX7%{EU;)-xI% zdcLtc`X58c?a6?c<77Ctf$W4ZjC3PGt|srH+ErsxrJxZSN-I@gtNI&YfBT|*{pF2W zTw^WCK>JR~UsP2mLvJ$fCW!%#_pXxm;T<5jLDd;3Lr1n(ENn zM(CIE3KL-ycj9QRJ_hYpg;<%$w6w)I(qf3Dt4NrR2PEC;7-TXI4HyX-j z>SSqoS}v41&m7#d|OA{UJh2S@CbZj~M zp9GbL68u7l83Q1#WY`zzv1HBKCoGEfN&pR3R0ToA-bpDy>+6EWTHO2yZWmN^A)~ zFez-|#S|iRc=`*Wa2*=C!y^$YHy^HWeEmw4(4hXD=5%3p>4tNg-_UBJ}w5 z6#~^g#e)w)5q$O)pZc55Nwxl6ICQnY2jmKVc?JfZO;toyNF~@6d>)@wRm#1ZN}sN>A7D+EyuOXTe3*hVkN<4PE2eD-~239Q-%rvqjk_t@k!!=cmC@ zW8{Vsia=G!sJYzR5uUI)cpb>`Mtn3~e$IA1>q+l|LL+I>`=S zc}e)K#IoQA4nk6K^FW;C!2j8cgwH=uXPTExH;TVd@_V=Y>dbfU@#`nK$4Kn{zW0}y ztq|X`ADh+M4EtnX%;EnsMYc?hq*NDvQJ`qvu(`SDC$;tDNo^2D^ z5`VZPXM#$g$^80QGYR1*Y18lS`k*7Tf=Ak^zqVhSZ@1fgxzZVHG&|@2K4r-Di|g#o z6pnMA7IKRpGc7*$A~NXe=f*3#?_XEdXjatNl=x2x+ZXjB&33NfGKCY1k1Ndz3YzlC z`^f9MkF}G8cE3N`bgzi61wZT>@UyPDhtvY}FR>r02%zx&ZUtQ&1bDAUGw13a6 zfX90l$z3T8I8nCdOaJTxZy#DdsA4{T~`kHyRa-R;E+D~cJtp!^DgeHoSNT%@04}h@h$dUiPt#h zgmBe0EcRlW5otPo|LS(er9onb_bMyH_TRmt)_u(}`uo; zD6u5JNI$u>s0g~mfSCc*js&fJWP&b$#O)UeEXJng&MVBTQ`p0@Y3T^-d4uQQ!|t5$4Le<9Z(sP4+td?4iPZT-$GYL};EUM)I&pU*PtLNZEolkyTX zbBgs#U`)M&ymXi;uqZ`d3yNy@{U`E$Q?J(q8|i^ zPDWV*gsu^}v;y_(5MW~^axV|24_BFl0AHK%mu#q!gwV$T&TR;w+l*-ra!H5V98g(@ z0I68a!6^A4hQVSFq#0IxfyzDvScJte93>&X5JOE^Kd~5!CNMl#9fg zl8VI?L^+Au6i`Wt0JE`}f?RImHV0I4BEV%V=Af3N5R+gLhg=+hN>T*iZN*Wp26(fw Tfs_d_2r!tjFfb&wfiwXCdO{%@baAj^}Z)0_BWo~pXXL4b1XlY|}P)h>@6aWAS008x^t3-wG zy*}qr008Gv000;O002~Ib!}p9VQFl0FLY>iZDMX=X>2ZVZfA*5PDc$28VUda01Zh< zL{b0%0RR910JR7L0000#V75a508y?qJpB8jX@9g~MT! z$pqg70s(`;00rO{C@Ba6{F+<_MiJ_S+k?R%d~zH&y$nKt@8L$4WkaEm{vf>! zP1CbA2Fj2m3131PXw{SlEu_IIY|J8h2D+WsU^biKiBJYZG?XIpNHGH>5si8Y%_Rsd zAvo0wt<;R|R_{V3wT{5F*NY+5xAM%8O#RTF8#ivisK6K`ULlPY0-}o1(b4wy_JV?f zs;Vm85KReHq=o^KggvGay=pJO*GQblWH}s(ghJt9R6>7B(Woxw31D`b1`T227@p@i zmPKrUskBcdDL(ZfsLqtMc_FU@pI)!GtE&sTzPPv;WZSCirF#(2=lS{hwY9a~-QDNU zpRcH>0Ckb75T2znK(dvLB|H^CI4rpRfeBwQEJPzQOoCDrqiABD1cGNwN(_-WE(?y!niz6;R;6)29|bMj8?M=^q{6OfDKd~qM1_I3a|lsFOd2j9UV1EX*v8W|Z4;e&3D!0cwOI5!KC zV1f-+$S7)SYpblROfo$Q{pq?xtSKmh#MH*)3FVd65-EgEW*~q-_Jb-0J+N`(##J_f zlFc3%_mCiT^^c7CBaG3?IUPod!ZmS?JR4aO=WMI2R|tg|n&ManvsmCxNt8xI!QrcY zITp4!FMB!Mpc!8c-UuuohG8-@Gojysg+(#q^M|cwBj_}<+29%*85tcHWx24ZG~^x` zc8AutG~&pqPg8$Nq4y_@0*pS4$fZk{+-|qsZeO|~v_uV{euBl{Gc?vUG{Kqe&b(|~ zGl#&?*9lag;n6)>42!!8n(vFDQeZ*oOeIM&vU4bsuvo1zi*?lR8@ke4lkdpR%t)2} zH#hu#e_2@>mhjoTE}Z)I58nF9|NQi!qvxLg_#?mg<-1bY-8tynzia*R(`_c6zScAF z!jq3^??t3}AmvCFdEf^0_xB?PSWOcM(dfm_zL9V&Bfl6LA}8oRPWkb+sZFP7N)p9r zR0b(7$r8tN@F$Q9MUyf0rufW{emifxl^!{r;U>YsdV){%gDTJ+XUJ(O>`N_b}`cB2D?r53||q z@pw{F)sh%MGy20LzHnAynIuN_X&*$KI%k3zM6>*G&*cLL4mY(lAAA4(mK{626B7;1 z8;%`(%aV~ZKG4hA^B(*7$G}udsyu$7DGCg+fg?M2V5p}sTcBBPx%B{O0PS636iK>= zdR&3nXI^>s@Zk@gxrMK}#}vkiE2762EUzqj5Xi#FoziqycD})|r{&Eua3>Z|CM^)zs7l{oaln z{SWMah?GLSJtr&E5fJ22ukgty@5i(yv$XxQ0uV(pCG{+o0gMKNERL(>DIxz4OW5?u zQ0M-Q78}RNSFc{RI~?6N`kwvNXS*(6EU8~_G#Nl<(hL(*RPT2B?dTgNzI;q5Qp9M; zT4J*o0?@NqLh6`p4x>c|EtFqah+&1*_3Kn_q)k}{RT^#Fx)WNcdHX3_ph;s6P!wgg zT2oWiQf`Kk<~Xj%VH}(ox7ZzEt!vYiXnu1F9jjEa>AsKT<`>G*NIiyuYrC$oh31W7 zB&@B5kr5$^PrWBz2~?}fRf_VuU4=Ho3fMoGW&&Z8mV|MVM3bBfcse9WqSXm#n5@x0 ze3PdBl>rEyXf&FVs#35JR$i2c^$rY-jTr42G)01g7>mV2eGny}$#R-A6qned(Fnyb z@O>~40P0uW1BOG+Zi3YGn$iCX*c2p5Mdg?2sa_Um;s4gIMx z!=!K0SXRig914X}Qq@wOV6-?@UR+>xO>__ShiMaMvQiXHU`jHy2#8oj7SN6Hg(S^$ z&}xX!gd&PZ%!7<+_yr6P!8gH(ftuWm45tG{M(F;~^1*Jmr?$ddD<^1PED`Xef2Os^ z0s-#X>YG5x>K=#^NYi1rj*gBGxCR3Xp^zNK@f6KytH9aXcBOX=a!M zN>W(L5|IK8pz{EZ6FE8A+1XhUA?))9+8 z04}mxRV*fn5j-Z6ip&z2gQe|G-eR`193Q74ZH*}<5g-deAP`vGjdKt^;$Glw|HMQ% z7^G<0bh4-VNRj>tOK}7F%hbAVXUN0^P z42BsQMwDe&clQWQlV&q-vl&y%42iXOomQ68fk}}sOBF!K0A7k3huay3S#$%Ek(zMm zDQtj%X|D?YD`lX8C7emGisA*%pFdYxS_a0P-VsxJS+88T_*YU8&b`*C=quG&oYdl6 zIy=#`K=d@70qkwJ<61F*L(}Hba5&`k&d&^*1sKzqVSWNigw7%!Ak=`p6nITbltfA* zj&Lbc#^4ruz1~GUeL7OPA!f2ihu<1GG;Eq6*MEWwPz&%T*yK=Zee)qUIZAfrZ2+{7 zDH&6UK9+bL6vl+E=Oy|WnkJjf^DM{lJdZ7a8Q>NIb>_UxkdPoFL&Lm*7ouWzR^}3U z0PPJztMZGRgn%329ka5sGBPq2%|+Ujcxp&@8Mj2vIDv?eO!3&{)zjo+t84foB|96@ zqsAeQ4f_27u<1P>F&NZ|-pR7G%?7*yH%PJ!){ZV1FkMk#aXGDWMIwNNVZnanaW#Zi zQnwL#z2n{8!wf?i42;=qa5zj>D}%P?XyujJnE|RLNwVuo+dD^2KK1NNzyJ%UIbD8X zNp)Voe%cguS{xTP`EmM%exqJVTxn>ZG)-T)aAE7#t-$k(;{l-l>EdZ|ScOgT zy5s;sqWkh|%FjcMal74$W`fTs=_8?_XUrw~{gTg1h$8TcjU-uM8lwr=S(M?`G@90; z0~vLjtRhO<%WCf_C-!%Pg$Vyhu^5}!ZU*emI8uH2zvXmd9rdh{hodjG^k#N+Xf z3`GLre48Z{2m&b*BtdcpFf)MaU7iUEBWxxk3^RyHuv=(~9CeLL3Z7-RX||90VdM?5 zn93wxuSbOPM!tV|9P|P(jlp0r8#tg8x8H{ml*MQO(i0_-HyXp?U^ozBNHT+>h2f#A zZRZK2*`A$AnJp&J3>J&NX)`X6wYTHV_UB)C4%7A{Exb?k5kba=?nx&EKlbyV{Ge~d z|M333M?d_)WXqO9o@?DVYiepLYwH@SiZ5R37`WNhbCD0W&B6>tQX0sVg@<=!w z@OXl5cf{)@A`y`E*;e!Uw(~c}eYsBSxL>Hq&pg_8rKYTGnzsnmKoAAE;#N(2G zz|+?^1_H%sRBa@?9k>NJIIbBewzRAmOEPH|0-!J;{jYuPYgevZdF7Q?Hf`EeP*9-6 zw}3()MaTUHqzp-R$_q`0sXZ>kQ_gLytK3w)A|}%VpVt`d9G<}Z0zl~--gcv2M+w% zpZysyL-*CILtR~Vf^hPDmeI(XOft|Z&w!`fH|}_IhA=C0bjWN`bCQ2TQ6LFV$bfMy?Ol7$@Z^*`bA&B@9{^? zoSo$@Ep;`l$*xEdZy*S|B>=u~2yZCMyVTJ>V9(yQX`97Zyso^muB`ao507|a*p`My zo84(P85Egug6$-Vfnd-*Hg+=_#jV!b4I4~m^U%=H#fukJDSn$`2IQ2@W;=K8+&k~Q z)7sklg)e;J8{hcGt)Fos8uqtc7Gh4Eo){=qDb1^xb2}x_f(~kx*EaGo6-A4b8b3_M0v* zuE@2uEss1{C`E;h=O2Ce;K}yR zo*NuPWo2Z5NPleq!#E~&_V(A7SAmjp2SX7>i82gnw;RgK>p%l=9Fi%y8Wzzx$XEvr z@YSz=bzy;X_WpwzRZ~gth?0@JXhQ+sS z-E-vV(GA;ozx=ZE)whmfNv70N##f&wTsoGE0j3Z=N)VLDm7+!g5hVGEPrOi7U5zEI zOibH#u5PDHDKjY3RR5HD64aZ6gM%)Y>x*CfVoy)ccfRu-C;;*geqtz!0jJODgm1!; zNWklLc|6W~j*dhtWQmN)Jj)m78F@}6%St2N=tf2V# z`F4jh`@XFkML~#&q993)4b~7z_R|bkl4Z5oj7B4^&-R^gQBzm1-?IOq`{4IaefD$7om`tJ@F$I1Fx9iC^>JB5tMm~}4nSNAQpo^w z61@r-a699Lak4bo20Cgb6IUCHXiWZ*cSW%2B6P#GaX0L>5rhuG)CeLgl8GXni;e!ZF_ zLR$idyLN2ati*w@WpJQTr$J#%jLNat z_U7hLB+@%JCNT_dGO<>x$?nKD8R>-es7wwJSYmf2t4BfudF|}7(A-Wn+UN&>k?B|CzK?>pC+C+avU&&t{Hr8 zw-^YhVGfeSlOzwVr>LkPC}`0akMDCPu%zWe?Z0?W>TAgwk5Xt+3`Sa#A~57ELoht+ zaM!=%-AuEYZxsk|Mp)K$Mh}fMS%j*sVp^3=M|fUW(TT_Zkd_MK>TBi(!D7 zh#p@c(G%LNBATw&=hwA7C{_%&ft*_iGia0=TOc!_pE@qI4UKzon!0b-4)_yD|H_ps z(9X)r%505@lUJbiwHs7}K1ZbgIfWUJX27ztpad8v0lyzKgU9Q|Lm^g{IfCF-UZ6m2 zD+!qz@55xG*W@kGRwNP$OOgQEfMrRWjkDRDHk*OxCxt~U57EyHB)ONOTT)`7twJo& zyhN|1g7f?QVP7~3=FMzGud4X?LMoQD5_&5S%52PFq;QLoGaEUZmM#tv=e*3IUsqI? z{^LJ?^;4h!3Z|yJYKN9iC;cg8G-E8#9L#`eQkd@=>6If`W&v&9NVsx~O<*h-S32R~uj(mhbBf);9!5LBZl zu|%?HEu|3JUyM;C!CI_1VUtu7Ix-{(1A!nmFu@Xv)xbKfChL66fF-7wDBik%-$N0< z=g5bL^YRND8`t59Fv;0Mtmj>9pOG1`#6-v3%)rR9fgr?KZ0!^Ml*gf=PgPZmu3_0@ zfu^V`AbqrD1ra@%H$Jd@W4J;vW_u=Q!fggd%L7fSTgT-X!_Zoe{e~4^)Omx82AQ0WRe1>PA!S{%0wfA7?oI#H5t{V(@0c=0&r_E6c`=x z;zMfgL@UqOEJj^3XwAMg$$;plySocYWID{{IOjZU+9%@X~Z z#Y)5i=|c!(AVeZ=uYbZ9@P>fs36%7cwL3YA1oQVy>-&Y(O(hSH_Xyki=Mj_f-*NX)MZH zoWnicy*<~>&Kx5n_ud@Yv;T?A49nSLAN2GL6qZ#st>4&pz3qBOS3%{vy4o6)Ki(yT zhvSJvK{GH8tI1}u00(Ni1xUZUudgp7BV*^zT|m?N?t*z$u-olkT%RtG8DI!~KA+iW zRF$42#YO8(#@OPTaTjAHVu8>Y42_Ooyw)ueEMu}7OcpMaH-qX?rIf4=n;0bw{N?jU zZ}bnldM^bf?juh>fAjLmBbVGecJ4lT`0a_YiFMoeQWP;UIxsvoW;C1LKJuQ|8!WA? zf9&a}4!-`MB58Z!Q_mm%<&V6Iqp_;6tiENirFjd9rbm!F)0e_0w{^FfZKqJk~9$x4-ERE*9X{Gq@lXvW=}V0 zp&dJRfDf(BBTd>*JU4C8i5csqU^brtIpWu^U(d``BQ!~hTFKp>cRG|6+Y;%tS(>ZM z0z%X;L_>lnBm{AWWmq1lN?r5;G_0#pZF3 z^!N5zY<7~u%vQVI;iqEJk_vM;=!=N-ww>F=hya!q7)l`0qmhUh3CE%l3KKJV!eq}h zbBx7obR_a<-xld3q)N%^n8FPDG%IMrU%md*tl}E0nX9a*#BLp*lg7+|9y1z^DXD5M z69`l7U^*kinW6rTiIIpu5cK#%zJM36exy~Vz}QI-2L#!j3$0`aNx<8Kf}|?=-Bwp z8$DHx8?dOr7)%qx-NR$v{M@WJ|NGUN=8d&=>pQ!$mM3U-+uny`YLq{A zUtwu57%Z(`hs9*C$ITi*o*F@2;J8Jr8Piml?DP0cHYcV!$9PVDaZzbyBpkv_;P1xr z%j!#O=z!0&c~=H+Fi{L8NecMW7{MD2LexFL6IhOcwF1$bv!HEyv?DrtL&qXWA0bsU z%~O!9g%VAY%c>iB-qhK96Vp}(Q?tr{_X4a_i^Yf5Az$ZsSv?6g7?%)|9dW*S`(T>bW5Ist(s3bf|eCd8`~W%CxQV*!hsn$ zTJsrbhQhJN`z@GK)|%~C@ED2kpkU6@*; zPe!Wd8KwYDzxMa{@7=pM6bcJE5Yda1i9XxN*|MxFO!UdPt+Xf$2WoRcK>@rP z^iQFhZ8!e?ay;&?#45)EAxvimEaBK8kR)Zb+U8;gPTdkJ3JW57gz3BK?ku`NjR#H# zjrj7*FL!o!qC*ER2~H(C{}-Mm24C%k842CpyZ4vc{#kfWM6w?XtPMjxpW`ZI+YiV{j=?GSx3ma+~o zo#?^A!Bx92KKUa?M7!0Vm6@fw1gb%ZYw@vKAd?mtm1c%H01|{{*_2eZ>{}vdWCk?S z!C(j!8A`f8-KJmlvALcBx0W;cJtHa=!jTw~KfA zD}Z^4J|u+wL7!Vt^9O}zCwjEFhHk-<5){LG*v?Sms3 zdiT!l`Y|MnetmE~+uPd(LC`a|qL%BiTWS&>6hXf!xB9-E;3BtDE=Xp7U}uo|uC5m=I$M5t*5 z6oNHBvj36FqFnS=w{@rlqE1SS(*`DF7zS$2&dx^J15`^d5&_}P*_e@`f$N>)jg9Lt zSsEG|3WS0zYlQdk1tY};dDpLX6qZ&xZ9GyAz_g$NmKbKT60txl0L`(JNyb`VTT@?G zgSJc(Yv7n^B$mR#uuA*dVc;O?!KU|#K2_4Q3hUs+aD+2kNHKciz^TgSIvV%f>>i3? zgwe>UXZn#?C>$%VE1^id=USK78!E0Sl0p%RV}L)*R-=J7$hb5yKEa#Kv9Ryh@nh8+ z8Yo5R>l&n35UHR8SPGW|A*rIFJRJ0$KYyL#*ut_xr_FJ*r^oFL6xWuFi>{&IFyX_w z7-yxyXRw22;CPNuPqxR9FO*XfYm0sEkC?3Xlb+!rXHjv)Gj^lX#eM4IWu=z)e)L}TmUSoJX}x~=Mpi*y!}jK& zYwXg6n-4s7|MjyM%GNixA3DlAGt^45Ga>;$Z7>aW_mno(`v?24cZ{+|OI1bIwbPfJ zrNx6cdTEN2W2A3rh-A$T^~Hiw)RGIy6H)g_cvKlz=m=$u8A@|X?G`)ODm^_t$?vtm z9sm+|I2^CP{`%Lx_O-IIvOoO8Km6S1J~w5C8q77L$=Gq_V$+U&&pfi{pT6_$e$w{f zzK2MO+_H1a&CV-1xjFtpVQh4?pt^xhY}3Y4G2ORnu|UfQWDuhi5o>`50A}7y;S{JP z5f@|X@M*3rrXFpkhO)}BiJ?)SU)Zv}Z1CzeIfj*1m54GK^?Qw0b9iDz!6cjA!V%U@ z_cwN281lJ>EE%?I?Hv!l^2FG+OMM+Zp%9o5ifeE*5Qx<8Djm3THHMRA)g=VOc}E6} zW|K#f6->6-%vQ`^Tw3fbDeS(|<`0Ox(NtJpT~?JJ0kaA`2Q8%#G>^ncP+1I4F*rlw zlk)jYSreES$X*9)XWhDWPd)WiOH0e--?hgP*ok9D>I$7#+fMyL7{y70-NZ+uq96pL zqJ)%ZR8s2e>qk9)J@yexg$4kLiH#i&X+&UvQ&0{c2~#Ex=nS*eto3jz8yBJ8sJTHTuF7M7>Tam zx4Usi=<>-kBYFLq6-7pip=rm~Oh;xY*3~ zrG-&hu!4InMT603SzUc)Lj!mPwT<<13tHsR4ObkP}KC# zQZO9K&dDP}IN6IAF!?s#YPOr9g;-*yAI(1Lb4^od_qI9#t0cHRiV5?P~!q+B2 zH4&&~8=_g-!8+_tJ6r=Z_<}z7fZGfIk^xzD6>yTHz*SIVJQXP;KQ|LoB2giVb^)o| z_M>XvOdu)kl%%K}Q6zPLTtrDqlBk+jG7d~bVv$(Hlx;UeW$)kwDXNm*$>f5hw`7cGqwam(WxKT&P+hHfiZLPi?P0$3o-gmD8-aaz7yhQgIwX9OlwgH8cNLW#g5)P*oWP*g$+9i@zl(Z*!jO*R8( zpjc{>XrDs#Sjxf&r!-HO2oFB^;8Loc@hOYIoqa^oor38x`ZF*?f(lj5z&Y%Sy%;Z& zqEavv^n|<~&n;#EZUJT>)%CDR2WF~*Qz!axoajxM$;R4jMyoN?2>f$P(#MzOu;n27 zIglJ$x0H~I6xMSGACYvYV77UN>CAwk^xr_$YL-WZq)DsIYOz|TGed}x5Hmm-HMk%; zKhf*f7ly~T3$F~(&+y7ierT%dxr2{Lx`VKg#2b^wQj6t7Yq9e(gFp))@fS$+X#IHl zL+@GKC9yzj96+GAd&?~eHy<-xXuD8TQv-(6LWn+1@l$a3!~(5l*zNYE+&(umj8BY% z$d9`avP$b|qF*>@nogTQ%Z^kjS!^a|K;Hn-OJY=20g`rNc6!s+!l0~JZqR!f%aj*L zr*9N+cKXPH^WCoPo12Qus;$P<>~p>Aq1l{ckz^quNyg)h-BUm!B{iiOx`+nem z)Hkk)SnxXmYc4IyU5Ql57#+HK6Q9u6rcn)M+mlZ{dF1HHwBfUGtk4lj_c&6{0LgQv z@fZOND=97m$GEJlGHw4a9QX8|C2+g3K>9wi%a<=>`et11$Rm9( z2-^4$e-;!JfD%9(N2Y9#!nN#CB_$rSvFNg$%W_YZ#=wXOTi6V3ng zkH7WF-+AHkxwfH+&_AA%Jt}Z{7x3?i*;4*e^ zZNY9QhtEBTHE~4JU5w;On1x4Z>P|4?oT9Sg*7KKs{+6e_s@CiCG_ICCiyx zTsYvq)IIRvzI_v}fwGGF>av2Lz54nWKL4rj{lj-ck@AM-#w!;)4;_3j#v3xSvUl#> z{lEY45B7fiIlZ_L*BZ?Rp9d$qR{3l2;Fr~IMbm&4sSF=k; zngM12B6qMdK?!7KW!=_YvIdHxwrtr77jX*;!wHIffn!6#&_nz8V~Q*Y5k);yeAAQ9 zzU24&fNNw~YHX-yXbMe?raj;(NLH}WIZNEHrz6b(GXP27f`Wpco*rNTJxdfer(i}S zR8diJ@Zdp?MQlTf)3@|f*SglqoeD?PC78e(*DbTd!RdcWbqG>2xQc{9VJ1b=&&~s)@$-{gv zL+@}DFan)?<;oQh4Mw9eCDI|y05bzoVN+AnxpU`Omd(k@QIasP9!UOkwgNNOlh`XW zH6QJ5Rk9pq7Q)QS+887nu3o(gpCDyY6+D|}fEkc1>DRAc-__OC*49>9T52|%^}Q^s z-Nt(b`aq11j)LsZ%gd{*tkjLkv%kBL96({9Xw#< zrQL&5I&(L8`6j!dF&2vjJ&5DD{QP{l&=*OT&I4%%m>K$N)TK+8VB~Uhb76$^)7|dP zDV@0+yi7fVzR@c|lBmAEJ|(MQSegN51M1&%=gxu10qRfmwVugpQnBe5X?rQP)1>O{Yw>7ZmY6w|3c;WS{A9m@2SP6{WxU@VG? ziaI(vMn^|coZ{SXF)z{#FauCuPfScSHa2QbFo|QaG1o*!MuvNI@Otm?hL*<57u(JD z?7ZyEm>juu8Vn^JNG$}B`dt%b%+nfbvI5r>(XnZv`w zhyl_*z;eOo^P!|Y(8FTT^Cw^V>Q}$<|9tmvzPao1r{Da^e;>bi8$WuY?ZJok z4U7zJZCT$x?hXb6QCZ%xd*}J~3wb3K4?ggaDXYZD(bH4?q>);HU`kcu$}|Ja03>YU z2W1n`MX}?jFMjchU--?T_iLYh_P~4JcVy*O6z9D9)7M+JHs%(Woc!?6+wUGObJ8I} zKsBWO;AO>~ogF%PwQu^u;o1SpKu_S96pcRn{7WTeCAH)a!_v$I1d&loPmRaz~e=zn!W zn&FB|i=fkUi^?7^sX&eYSYau;SiceFxK(UUC%SQZbbvlT1pjI?NCb*(L7&<;7!n1@ zEle}R+)(c5?9j-t@A7T3eVD+;a2<6(rIE>=UVIP+r^!o9U3J~c>VR) zpMCb(haP(9%{Sj%`8F&BXc-bq(o}>7^y@7*H<8_0nV;yx!Js=Fnh-@VL56vb3PxfR zE(#~i9A`5a97dx#walQCd)(5xE2tm4)3ZaP0jR2~0t!QW`_U;WE8mj2F>m6H1Tm>J zs$FCA5xu~%n9WA>JWG%cbzK=(K!Zf1;ZVry_jS8mG>*@~4C*QJnwnYYdNV3BF*-av z=EbmRQCYQ#XBNQ&Q$hn5%|+h zUEoQ16z3#*yEf`@Q%uoz*kIbbGc3n)yv;E`GbBhqhG=LZ%mB}DWIF%(JO5}ctp8m7 zy2b4$oT3RAJy^OTP5yHcxWlqTC*%i~w2q+~&Hvxu|9w?uW#ZQu>fyDcqxE@)xrrVm zG!Szr{AxV03ON%k5 z2GjU~xc%-$b$Y$tQ>RX$$+3j*PN4QrQo2x4ZXN%vtU5EmqqS(>S&3efZ_psP>m%8(})7J`7NT+vS&%?0AbbbrWu=!wb|9)6IEvL z1OxJfi^Omv%i4J!l!KLJ8LdY#tz&0k1|)8`-uD1bs@Y_T1@|f{2KZ+}+UG(^_(d^K36Fuq?e;_#F3wZoNe?$Tz zpm5B>(KfTeZZW|tB`0KFVP?>ui{^RYLK}PamuZrILI}HQCQ4Hg1CM8A!AMvzi~(X+ zFcMLP)>Iipm3mE(6iLV3VhqR;K2;KtB@yZ*DNf@S87F9Xrq-62D&GlGs|Ow}LCp+H zu$;kWXSMr6fxuu)8S#0kNQ5Rxi_z#X7%U0RfRxoO8ig0(jq0+I9@UpT5jO`Ay&^Wi zG}8r<9eg83g-aJN=a*Jw+AZy8&oE|3O=amo-;H6HZ$nE{*R`v@P}IP)(P+eEwq<2y z8Vo#^cqnLqB@Wga$_}m54Wd+C3C>LPf+RxYX^!D+yqN_)R=0Wx5tlopj194P%*@Ws z3>cOa6EZhHBsJ{TjWgb*e~F%=XT#O`IUEl9{jPAxCCB^}73Fy%JBvB`;aT3AneAX+ zeYI`p?kzo?-C6nhF(GiZYdF(xba?{h6$Ldlr6waE^7#&aaL!`06qn?Tk9n;&v&9Uw zK^x5uf{2`KJux1{S{e!uyxUsUP*2Aq?vPwjl<}L^3r@S$?eUdY6_k}0WM$gLaPY0S z-jxZup|PqsKkrKW#r~1;&D)!eY{={F^SFUw3=C^GnVd$Wm7++U2NpNMfX**FeE2Zb zvuoEbY%<$iYCG|(gRLgsnw?=D9C1ma)W324yKlYu=uPC3;E|P}<=^l0>LEXn8fw z9i~XP#|(HvIn2|cO7fQKq`jy5w1$2=lo=cx{QB3w9*IOe9?vt+JX2DV)!o(ZaNu@3 zlbdItX(I@G;Osd zZo4+NeM{ZJ_s{HqY#%MS-+1dh5fg6?`Li;!Xx?ZwvkGTC(R%z{Z?veWC@>Kia|u~h z1-wDlj7l*S9Q1m-dV4^*S}QA?3YR)?YZ=cPkwe?WkJY0A;nBPx32&3 zkA9iFkz(nZ9AEj9;%6gzJw#rW<$-`V820$XenFg-=w(qSSEMD7kqmVc*qqE@F<4DT z1JA2VPPfQ6mN<%T4rV}KC)%Gx_e9dd5RA9q@4tNc^7p_0eNeA|{^x%V#;(zrSyH+| zk^*6PCn3bL0boXs=b%Q)!2iyR55NE3k@ogZi!-aK(DCk}(^=U$UEKpFi!~!7Cipz< z7drCyZOkmp&(Ahpy)xwU3-uL+-6LL`*{R@UX-STzGx6tMe5A9z{mP}TU<7;Qp-mqg zIz}?4-k$!dB4<`shJokKUhJr=&gWUP&0&*C7MzoU0`vH|zo4ePzN#=L2i49GN#QV1 zEsNpKtZXyO!vCtJVYOPp+FnF(9@GgBs;;hPS@y*jU);NQFEG-rUnME8xcpPkKmEh+ z{nM*I`DxhIpI^11w$S{q|Nh?vMJ4b4>J8<=y@gq}P&kC)#K6t2qbJX`G&OKEiKRjV ztWYe_LWthu^LzXuw?7mVWeFoFhNoFG=VZ+^t;CRB1f3OyYt<@3bc!kZ)+)_sQt){C zWJOl}0t~r}Jje0|UgZ!a<`aam@t`u~V+h5_kTxS{vzV-A6EQn8pikFuf7``QoWwS5 z-C^b_corghEHOheF)=YVHs*G_MNtIXw6wJJPyh5!UwGk#ii(QX)>aOPUCZ+fH-^KJ zV9-16@&K`scx2y$TXS>l4?n!+!lj;vAKKB=)&1$;c@B#Nul0;<+ECTxunED?m5!Tl z|LQPrHs+U=++S5JM`IjIMWrZ)1$N%Ijb;qsJwN{O{SK$IFw5L}^!)Z+o1-D`!;d{s zoa;D#>Qao#+r6g&Y+au}a`@nJnm4pGm9s2aT~WZY-1z8lAfk*6PlUsyf|*zrd}8?D zNYj)q4ge^Z(W2?&Ti^N?mXz08C*0bGjg<{5@jUm+r$0RWfuUyarlz_>2M@gXsn4vd zt!O=b$m{br)K-1u(FbUTf8-)QwdoJhbHyJ$ey^{u2Wf}&`!~Mv4de=2EarqSpjK-% zas~tVpxG)j2oWJ1xN&2QB(s~EGBGUFxW1ND-_4OH=4lsBS~Bm1JE9a-4c^RB+cBncTX%9f%Q_w6jf?9S!r-TohF)|^zKQKMYjU)7C{{PL=Z3lj3BfYMk&)c|yph2Hc(J30&epbU4NmmCJmLC= z`ip0d+j9zXb93FJ1HCu;G7CyfJP9H=Cd)>%h2wb`9a)seM~947Xa9{0(HO~4cqkmn zFUX%58-WW&ib@Jm-@M*6(%*f((`2=mR@O2k)_JXiGujJFON3CcFA(mT7^kpdlcpI| zW-!GygBAco?%VeW=O~Co!acn=J#Ke690oTRDR(^qzwTY2@kS=5-ygt|QevUN1T>*( zG;rX?I-MD^tny?y?7P|Lj>UW=>1AlyY^FGlA}LD2WTOd4AE+V_pAA=!4c2TwOwrc1 zR9e@BYfLQzIx;4L5TGbRiG@Mzz^|epLf=QDq$G2)45B0lB)#3PNqSs8dLz+t49$M( zb5{CLE}HsLRip;^rlqCj+_`h$ROqt{`YaP3Uk8x2fTLR%s3mBsSD#P@ls@|28xhLx_q#hUx5o&svbM2hWAmY3{k*niM}0%( zxBuern(zB)&xI2;n|8JxIoP!8fpf+QTA z3i>Se%)y%{p851=d6wZhUR_?1<)|bM2$4RY7netAMar<6DoP4{K5s}?yo24|i9sOx zva&KD`eZLcUm3*{r|#(9l^zR(#mNX$5bY*01N><=^ClCAG(#jJhC<-_bB~%Td#589J8ENsl5mQmLY9RneXiH#1C?thKSX2a^W8*lR$qeQVuQEom zq}SMKMxtLjWlT3$KnZNwvSsNtC)d9?tWYcvNEepEd72QxXd!WAS8GPOs>{{MU@=x+ zRq^Iee^gphA%p^DRW*GbZJaeDCqHNKX19R{Z_o-#Wb6HpzW3HIhlB25l#qM_M9VI- zksTZC&nfeFUp^m-h}W-P-ne zM&UF^a|W>gHf-NpTD8t<%ao&`!|(jEdCx}zqdlG7{SSWhnJec{5A}8q_jXD`IJ*#p zZyC6_Fesf+yR)24AMO|%1 zcD@jawjO%lY|kpMZQzaEeUCj!;<5glH**ULB{>#}Mx}_LhysgA;15_$AS$iAA?^Ug z%w+=InkFX*u-XkKbH27mR$Y|$1-*fZfGArG24{5xMp7)#RyViAL`kWsCJ9^+g!>2~S6t~M)T2m)WlFiy!THUNV$m(Q~DjLfw>fuq6 z3{FBMCW^epmRFDqdqz|cf`0Jukj|2{YE>_gqQHhx&q9>tNOB$> zH2XsUD-a}3v4vH2kx+1SU;vk+3>J$^`b?)`CZb13&Ln(WM4t?l+3$9dcuM@=8JU4) z9Zsh+7z_>#4Odj;Yc7GJIgY?TM4IU5#mdD3O|cWEG6O-F%ogB>0!=f7fE$8gZy@CJ zd4dX|kiZNa#jrF54j!q~sBV4eHET5~Xx;!cj%g!wfiKQm5lh z+1cv%5h3jL2jG97cOnpH29>>Icx2n!HC(Ye9h)87wr$(CZFcOWW81dXNjkP|+sSwJ zKF|L4InTTIx!!k-e^qslxoXy|an)LD)Vy(pvPWUi)AAy}4b!I{1iE$ zsMKffyRGYM*!&JKt+=r9 zG1VB{n2u(~!)T7kSR#*z%&oa}TL$mVppfKg1&z#|qaaSDMI^Wc~~Ch&X@xM|_zI zBkK_+(Th<5#fBYpY~3n2IX$p7sy56=Yr!+je8$1f+Y#QK0C8EwS zw7j{CZ3izO0ob?u^}yk}9nLgPNNY9$f%IG@SQ^%(5Ex!P@j%S?!n%vBR67|o>aU!^5YR)0KHj43||tT~ir*;X>XS?{^QEA`qjM z9y)nN6$TE5Absg05iasD?eL9bn%>`c!I9yKj9I3`4YVvNd2Vszn6TKQVS)vCvSpQS z0eYzAjkz13@f~$(dGiSmM)HYv%%@ojx|?MEx&~a|USD9-4d_Sq9gb&nMmYTyo-ABB zF185c4*;W#ji}&QjX*|`T?FktB)NUyfw?U$EtQqhyi)rrjbWf4=pl6jgYmLf@(twj z@3!a%2L}hp-K*L_M@#J#sAl6Kf}1p~CtnnGbadq9<0wpYIKAuI#88PxJd2Y9l-Y>j zw22_Fs=-Qmakfly&svuPG)u~1tjBz%Hec)5$P$oRXxp;d;kNCbWMD%V%n8^(>?@;a z2-p%vm{?d;l#~icA!I+Cqp|J<>khmJ1bk*l15BtGZMhv8Cp(N$KXM9LO(d)tKY~n> zJv}`5h7C${GLlRHLQ?(x{l0gizMz$#7p~puNl8f^I7ZX}XG*8*<$6=|w2AR??Jbe< zVA+*ln&M@nzt(@ak5w2M9#n!#X6)?RvDMYrE7qB`aqs|!?Jv7OyQD#y9+&{hv4Ygp z)M&Iich6p_si|rLmSK62TK*F=vkdKGa_C*t6JGIKz|cL9bV_91cZm!~#-@}YXeA%y z#<6~Ws|k1wcSFClO@gr)T_^c4npa`x;Lzx3O2g6Bq7?~Hxbc047^cmTk9<~}tP2YZ zzx4ZM!d5fAd#fx0FJ!MSEwRzl1HE5dyG;#{X{l8%=+Qy8q5mr2!v_$8ZuWTgGAH`m z2V8E?cj(YcY{hAT>p7sXh zjO^6|B$H863X*^%8_CdujpYGdnID%I?e3@OPK=H9Gu3i5zt@M)#h7~?IdSkGR`D}C zSL=sIBq5Ic@BsH?@n7D$c1xJWk)>5pSBJ_Ljls>V1$PstOW=DU*sp2h^4p85%2(}~ z*QD>hjdl!hUQVMZ6YGSUTU=gy zD}q_CukHm%JmJ~Hc*(c*x?TOes`PzX(49Mb`a$ls+oyMy3W4=`ruq4iMC<#pifRH>G^o^aoYV>{&}6m%YL8!$a>Z>X}(=!&bVn_P>ZcbLyFEL9-e`I>HcYV zniQQC9@V!Er^%^3+GXu*$ja&a5y7e+egpo-CLTht)5>T%nZfD!vgZB`ds+rrDwMCN zRzNMw86fQfA-D~J>$A7{ai7h4v9apDEtJTVVxrIM`My5sbMUC^dA>=f>F!?jJToX+ z73W_SE%|uqy*04?=veO%0s(PWq`*|&VMa{1{+xB;PhIe<)34i zST=PAw{t1dbzBWSor#f6Grz{1*tEmj0;QhWcB4yUR}B|@>Lqyp7iaTj6;0(RB~7c# z^~`Y7MMLe)YiJCLit^{iVb>HlHrW`{`^Gf}q{;CS zS5$>bz*OrNM1Sz~PDv9-Ic0fH`>15Nv3iJ&=UuJnyv%rAvPxNkx^7u%e}lAMJW-|P z@=}97B0|oWo`@+BGb^!prBI}ZY^~y|id@^NpQRZ&ALUuBCBffLMNii$^7ozijw=!Z zSLH|`o)`%rnfl|2;@-?U$1%5i8Ef~Ba)i(c^W?$Cp@FlVFbRV)`bk>{o0zt2J<4|^9UygC)c z1Ib+`CM7jCHQ{nNku8hKAs$cN^)N6Ac<7dcvz zi@@MC8KYvE1st|UTP}{4TcD6jFiJ5YGo(s&)u!9xay?&dSXYux06EUMSs57g8PtaK z^XHFXBM8Km7&WF14-HwlK)j7ygNOI@^LGm{Kb@SJYRWhWs0~u~3C6Pjn!1TZe z-SoZ;%&WWE*&*N}aR7Jh;pU(_sH~!b4IyAD$FR9;;Ra7oPtJ3b;&}2o?FxMuGnnh4 z*NIs?bc8{m$BtG~Q4JB)FYf<(o@=(Cx0UpR>*B^_NqY0GynF3)&Nj&yLu6E1sRk z7ntl7-7zt45WxQVMknX~JPq(h+(&a=rZey#D=l)tNGnnoIC zdXtTn1*hjuqi%&)z-+vym+be!t>AuMpHtTHap{k+YkJ$7 zih`evENknYj<-dX{f1TH@n<02Jae;)@1EW7qyD-dX9ACq-y-ri^pcZyD=-QRTZs#m zGgGQU-mCE5_pF@Fd+#qcXnl^$6A7BLc|JB)ZADNXV!G~vAAR3f;+j58@wz`ZyFPs# zCCgzLus1*2yRq({7Fm@f*>FM=rSlzBYCKv8uLpR=)P1I-6cwZ$pqfRq<@8*%w<|{Uxj_=}B zeVuDO)`!x7$7sJ|*WVJ^+P@6hW_8-_BhhwgX(x9t3$-Nq}@2w_jlFi{Ax%%@Mc^1+6Y3um!f*L%B}m)GUo3BdTE&2d0@!#Zc; z?RK)3^^VtScc4U;ceio2-eTWhy0DAIYC}vXRe+!>;vAc+h#iuxrgKI&LD1S6Mx+d%>la2Do$) z&{o)T~N^rv8jI26`oSf(nPD@7dvDMQX!}BRM*%&bqVqzImPq%1)?xE_aeGC%g z<8>Qy&=0W*#(w^bri^BSXI|uDx$%A=%+NWC8hdP){<%JT-0g6D(RH&~)dY4BjJ<=n zzL2HZ6aVUMmKHIxO}nV1AhPiw3Drbcuxe+fuION>DC$%_ywBV)Im)`*t1%}h=W?aB z?j)qGtk0@Fn51@Pg~L>(S8n-dkN>##UDKF>0gDd7K?X zWk_%Ny{F$DY!HLRuxK0`-4O*P`K$X@H8C98?l|_m54pjK&BQqVY^YI~he7qB_ z+IsVI?}$&;wEJ=JP{%Ke&URB^_UZlgq5EY;6VCUJUf_PPrmigQQFGF2sm9;1MwREe zJ%vV#j9flY(ZaHfLK4P&19}lT%=_vBg0}On&hkh^hTq8B@P3~X2lf>6994#GabuNN zN#jSliC-h+p5DSjH3&}UrT=>mJo7yBm9)8j77J;Ex+-nD24=7RQs-kYH#0=wzG$ZNR(vd?Zt0Stv1@U%gOL~ehDXKdlf2p zr|byayhQ)uR-a zm0@;j%(i(PHIQbxVRubZRzA<9G#!|jQbaj_A3Z(6nxcj~M9qt6fNBu&Ck=?6DvqpB zb|#P`hIxm7P%~H|%q%a63+LlPXhEql@25}#HaxrILI)BvVF&n)VqO{1UD_-=_LWU;UDRplNv zV?aJyN83%%TH^;st_!jf!7#EGIaQ^S=?#mJzBF&AO+`;I$!tg? zq(+U58ZkJ(^AgU`Emx*Q5&U%SV)he1MUHO(JX^Gd(==tF&?w~1QGOxc^-xhlH%bL* z0VV>L7A=A``2KTsnv3sAi-wuyat1$+m76LX=nMH3O-7i|ox=W$w#6OoPo!I-r0$eQt+iVz`cvs3SLXhaniCT0TE89sanjc@l@~eOaXOZwQZmhblhjHH$6}|w` zp9Bcg!FCLiExTS*K7G-v3bVOI0Lm3a8QZts%!BiT^YnZEesv}`cS%EVMK%bwcIWF(jI{Y{{>^RUHUH>OT1uKQBZ@jTvx7-AIf~e^2 zS|oll2CN4(7e-5kC;qP7kvuJk>QaX=;qe}c$VEL!O5S;HzAziCwA54v$WH$^ZCzxB z?;{8zxO*T!L!9C|pjgwMRojHmd&GXG0WbL+4X~>++BHpiQ+%ZuCbm;XDUh#olctXR ztX2gdulIOJ;z!aoUm^jE?9X3F32#gK=8dD@3K(AW)x*)PR}URG94t3m5rS&UXKiB=7RoclugE5Y7&fE@v0Lq2RyT7V-!RlUeQrcKrVu4?#I9R||Q-FTW$fM!m9ccX?rqG0XF$R*wSep2L-lEE3WT ze@GZ{PQ($9Jf*IAW&U1d57f>%oCi0E$vmrYF1Yx`C9%!PQ;Ak=;x$qhtZnnGRFWv< zPlP!WQN>q4NDn`RZJ@`Hb|a9tkdmt;R<3kM!tE@{bTcLXRV?T%4{ul2AtztUOQ=hg zW;iduh!oAE7d(Qhkox+u6>hUBW+IQ_59vU+lpLV7Ln@k{c5G73^-^)8-0`AujC@To zGm9ULP#pHC%Gjw+GlpM-Hzv#aaTwVk`>o#ha-_~wF_cIY&YkikCH+~0dh$Up(TXH1 z${>JZ(6JK&FBU}dwNIN7_nj@EQ!74!#5%k!nliu@M4r9`-O3|_suM4=#p4qA#Vxsd zrfn#Gfk~yNEPnZ=wJ<=VhQpHEG#zwIK &7^h)EF&d=UX?*;}K^s5+L1)7jJaS^8 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 z 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 LU}Tg~k_7yJ@cJ{z literal 26949 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 Date: Mon, 20 Apr 2015 22:00:36 +0200 Subject: [PATCH 03/21] Commander: Fix RTL mode switch logic --- src/modules/commander/commander.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index 3fecd9f58f..948543714f 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -2237,14 +2237,14 @@ set_main_state_rc(struct vehicle_status_s *status_local, struct manual_control_s /* fallback to LOITER if home position not set */ res = main_state_transition(status_local,vehicle_status_s::MAIN_STATE_AUTO_LOITER); - - if (res != TRANSITION_DENIED) { - /* changed successfully or already in this state */ - return res; - } - - /* mode rejected, continue to evaluate the main system mode */ } + + if (res != TRANSITION_DENIED) { + /* changed successfully or already in this state */ + return res; + } + + /* if we get here mode was rejected, continue to evaluate the main system mode */ } /* offboard and RTL switches off or denied, check main mode switch */ From 8279de5a0b9f1ea0d0535c1de856d2344178deac Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 06:58:03 +0200 Subject: [PATCH 04/21] MAVLink app: Cleanup RC channel messages / handling --- src/modules/mavlink/mavlink_messages.cpp | 73 +----------------------- 1 file changed, 2 insertions(+), 71 deletions(-) diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 7d6b60e227..5adfea36b6 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -1867,29 +1867,8 @@ protected: struct rc_input_values rc; if (_rc_sub->update(&_rc_time, &rc)) { - const unsigned port_width = 8; - /* deprecated message (but still needed for compatibility!) */ - for (unsigned i = 0; (i * port_width) < rc.channel_count; i++) { - /* channels are sent in MAVLink main loop at a fixed interval */ - mavlink_rc_channels_raw_t msg; - - msg.time_boot_ms = rc.timestamp_publication / 1000; - msg.port = i; - msg.chan1_raw = (rc.channel_count > (i * port_width) + 0) ? rc.values[(i * port_width) + 0] : UINT16_MAX; - msg.chan2_raw = (rc.channel_count > (i * port_width) + 1) ? rc.values[(i * port_width) + 1] : UINT16_MAX; - msg.chan3_raw = (rc.channel_count > (i * port_width) + 2) ? rc.values[(i * port_width) + 2] : UINT16_MAX; - msg.chan4_raw = (rc.channel_count > (i * port_width) + 3) ? rc.values[(i * port_width) + 3] : UINT16_MAX; - msg.chan5_raw = (rc.channel_count > (i * port_width) + 4) ? rc.values[(i * port_width) + 4] : UINT16_MAX; - msg.chan6_raw = (rc.channel_count > (i * port_width) + 5) ? rc.values[(i * port_width) + 5] : UINT16_MAX; - msg.chan7_raw = (rc.channel_count > (i * port_width) + 6) ? rc.values[(i * port_width) + 6] : UINT16_MAX; - msg.chan8_raw = (rc.channel_count > (i * port_width) + 7) ? rc.values[(i * port_width) + 7] : UINT16_MAX; - msg.rssi = rc.rssi; - - _mavlink->send_message(MAVLINK_MSG_ID_RC_CHANNELS_RAW, &msg); - } - - /* new message */ + /* send RC channel data and RSSI */ mavlink_rc_channels_t msg; msg.time_boot_ms = rc.timestamp_publication / 1000; @@ -1913,55 +1892,7 @@ protected: msg.chan17_raw = (rc.channel_count > 16) ? rc.values[16] : UINT16_MAX; msg.chan18_raw = (rc.channel_count > 17) ? rc.values[17] : UINT16_MAX; - /* RSSI has a max value of 100, and when Spektrum or S.BUS are - * available, the RSSI field is invalid, as they do not provide - * an RSSI measurement. Use an out of band magic value to signal - * these digital ports. XXX revise MAVLink spec to address this. - * One option would be to use the top bit to toggle between RSSI - * and input source mode. - * - * Full RSSI field: 0b 1 111 1111 - * - * ^ If bit is set, RSSI encodes type + RSSI - * - * ^ These three bits encode a total of 8 - * digital RC input types. - * 0: PPM, 1: SBUS, 2: Spektrum, 2: ST24 - * ^ These four bits encode a total of - * 16 RSSI levels. 15 = full, 0 = no signal - * - */ - - /* Initialize RSSI with the special mode level flag */ - msg.rssi = (1 << 7); - - /* Set RSSI */ - msg.rssi |= (rc.rssi <= 100) ? ((rc.rssi / 7) + 1) : 15; - - switch (rc.input_source) { - case RC_INPUT_SOURCE_PX4FMU_PPM: - /* fallthrough */ - case RC_INPUT_SOURCE_PX4IO_PPM: - msg.rssi |= (0 << 4); - break; - case RC_INPUT_SOURCE_PX4IO_SPEKTRUM: - msg.rssi |= (1 << 4); - break; - case RC_INPUT_SOURCE_PX4IO_SBUS: - msg.rssi |= (2 << 4); - break; - case RC_INPUT_SOURCE_PX4IO_ST24: - msg.rssi |= (3 << 4); - break; - case RC_INPUT_SOURCE_UNKNOWN: - // do nothing - break; - } - - if (rc.rc_lost) { - /* RSSI is by definition zero */ - msg.rssi = 0; - } + msg.rssi = rc.rssi; _mavlink->send_message(MAVLINK_MSG_ID_RC_CHANNELS, &msg); } From 92bdf74423d6feff3fa9ab3e721320138631a86f Mon Sep 17 00:00:00 2001 From: Andreas Antener Date: Sat, 18 Apr 2015 23:35:28 +0200 Subject: [PATCH 05/21] overwrite rc in rssi with value from pwm input, parameters hardcoded --- src/drivers/px4io/px4io.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index 33125699f5..3fa12261e7 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -111,6 +111,10 @@ extern device::Device *PX4IO_serial_interface() weak_function; #define ORB_CHECK_INTERVAL 200000 // 200 ms -> 5 Hz #define IO_POLL_INTERVAL 20000 // 20 ms -> 50 Hz +#define RC_RSSI_PWM_MAX 1000 +#define RC_RSSI_PWM_MIN 1800 +#define RC_RSSI_PWM_CHAN 8 + /** * The PX4IO class. * @@ -1633,6 +1637,12 @@ PX4IO::io_get_raw_rc_input(rc_input_values &input_rc) input_rc.values[i] = regs[prolog + i]; } + // get RSSI from channel 8, input range 1000 - 2000 + if (RC_RSSI_PWM_CHAN > -1 && RC_RSSI_PWM_CHAN <= RC_INPUT_MAX_CHANNELS) { + input_rc.rssi = (input_rc.values[RC_RSSI_PWM_CHAN - 1] - RC_RSSI_PWM_MIN) * + ((RC_RSSI_PWM_MAX - RC_RSSI_PWM_MIN) / 255); + } + return ret; } From 9c282cf6d69c60e2e280d1febf21fc96bb6e40cc Mon Sep 17 00:00:00 2001 From: Andreas Antener Date: Sun, 19 Apr 2015 14:52:33 +0200 Subject: [PATCH 06/21] added parameters to specify range and channel, caping result --- src/drivers/px4io/px4io.cpp | 32 ++++++++++++++++------- src/modules/sensors/sensor_params.c | 39 +++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 9 deletions(-) diff --git a/src/drivers/px4io/px4io.cpp b/src/drivers/px4io/px4io.cpp index 3fa12261e7..e5636ff0f3 100644 --- a/src/drivers/px4io/px4io.cpp +++ b/src/drivers/px4io/px4io.cpp @@ -111,10 +111,6 @@ extern device::Device *PX4IO_serial_interface() weak_function; #define ORB_CHECK_INTERVAL 200000 // 200 ms -> 5 Hz #define IO_POLL_INTERVAL 20000 // 20 ms -> 50 Hz -#define RC_RSSI_PWM_MAX 1000 -#define RC_RSSI_PWM_MIN 1800 -#define RC_RSSI_PWM_CHAN 8 - /** * The PX4IO class. * @@ -307,6 +303,10 @@ private: uint64_t _battery_last_timestamp;///< last amp hour calculation timestamp bool _cb_flighttermination; ///< true if the flight termination circuit breaker is enabled + int32_t _rssi_pwm_chan; ///< RSSI PWM input channel + int32_t _rssi_pwm_max; ///< max RSSI input on PWM channel + int32_t _rssi_pwm_min; ///< min RSSI input on PWM channel + #ifdef CONFIG_ARCH_BOARD_PX4FMU_V1 bool _dsm_vcc_ctl; ///< true if relay 1 controls DSM satellite RX power #endif @@ -528,7 +528,10 @@ PX4IO::PX4IO(device::Device *interface) : _battery_amp_bias(0), _battery_mamphour_total(0), _battery_last_timestamp(0), - _cb_flighttermination(true) + _cb_flighttermination(true), + _rssi_pwm_chan(0), + _rssi_pwm_max(0), + _rssi_pwm_min(0) #ifdef CONFIG_ARCH_BOARD_PX4FMU_V1 , _dsm_vcc_ctl(false) #endif @@ -668,6 +671,10 @@ PX4IO::init() if (_max_rc_input > RC_INPUT_MAX_CHANNELS) _max_rc_input = RC_INPUT_MAX_CHANNELS; + param_get(param_find("RC_RSSI_PWM_CHAN"), &_rssi_pwm_chan); + param_get(param_find("RC_RSSI_PWM_MAX"), &_rssi_pwm_max); + param_get(param_find("RC_RSSI_PWM_MIN"), &_rssi_pwm_min); + /* * Check for IO flight state - if FMU was flagged to be in * armed state, FMU is recovering from an in-air reset. @@ -1073,6 +1080,10 @@ PX4IO::task_main() /* Update Circuit breakers */ _cb_flighttermination = circuit_breaker_enabled("CBRK_FLIGHTTERM", CBRK_FLIGHTTERM_KEY); + param_get(param_find("RC_RSSI_PWM_CHAN"), &_rssi_pwm_chan); + param_get(param_find("RC_RSSI_PWM_MAX"), &_rssi_pwm_max); + param_get(param_find("RC_RSSI_PWM_MIN"), &_rssi_pwm_min); + } } @@ -1637,10 +1648,13 @@ PX4IO::io_get_raw_rc_input(rc_input_values &input_rc) input_rc.values[i] = regs[prolog + i]; } - // get RSSI from channel 8, input range 1000 - 2000 - if (RC_RSSI_PWM_CHAN > -1 && RC_RSSI_PWM_CHAN <= RC_INPUT_MAX_CHANNELS) { - input_rc.rssi = (input_rc.values[RC_RSSI_PWM_CHAN - 1] - RC_RSSI_PWM_MIN) * - ((RC_RSSI_PWM_MAX - RC_RSSI_PWM_MIN) / 255); + /* get RSSI from input channel */ + if (_rssi_pwm_chan > 0 && _rssi_pwm_chan <= RC_INPUT_MAX_CHANNELS && _rssi_pwm_max - _rssi_pwm_min != 0) { + int rssi = (input_rc.values[_rssi_pwm_chan - 1] - _rssi_pwm_min) / + ((_rssi_pwm_max - _rssi_pwm_min) / 100); + rssi = rssi > 100 ? 100 : rssi; + rssi = rssi < 0 ? 0 : rssi; + input_rc.rssi = rssi; } return ret; diff --git a/src/modules/sensors/sensor_params.c b/src/modules/sensors/sensor_params.c index 18e47865b1..d6ab637cdc 100644 --- a/src/modules/sensors/sensor_params.c +++ b/src/modules/sensors/sensor_params.c @@ -1360,3 +1360,42 @@ PARAM_DEFINE_FLOAT(RC_ACRO_TH, 0.5f); * */ PARAM_DEFINE_FLOAT(RC_OFFB_TH, 0.5f); + +/** + * PWM input channel that provides RSSI. + * + * 0: do not read RSSI from input channel + * 1-18: read RSSI from specified input channel + * + * Specify the range for RSSI input with RC_RSSI_PWM_MIN and RC_RSSI_PWM_MAX parameters. + * + * @min 0 + * @max 18 + * @group Radio Calibration + * + */ +PARAM_DEFINE_INT32(RC_RSSI_PWM_CHAN, 0); + +/** + * Max input value for RSSI reading. + * + * Only used if RC_RSSI_PWM_CHAN > 0 + * + * @min 0 + * @max 2000 + * @group Radio Calibration + * + */ +PARAM_DEFINE_INT32(RC_RSSI_PWM_MAX, 1000); + +/** + * Min input value for RSSI reading. + * + * Only used if RC_RSSI_PWM_CHAN > 0 + * + * @min 0 + * @max 2000 + * @group Radio Calibration + * + */ +PARAM_DEFINE_INT32(RC_RSSI_PWM_MIN, 2000); From 027919302d9537e4787f1384690a019eb937e458 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 10:40:42 +0200 Subject: [PATCH 07/21] IO RSSI handling: Fix RSSI for all protocols. --- src/modules/px4iofirmware/controls.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/modules/px4iofirmware/controls.c b/src/modules/px4iofirmware/controls.c index e04ffc9400..4ef27718cf 100644 --- a/src/modules/px4iofirmware/controls.c +++ b/src/modules/px4iofirmware/controls.c @@ -99,6 +99,9 @@ bool dsm_port_input(uint16_t *rssi, bool *dsm_updated, bool *st24_updated, bool if (*st24_updated) { + /* ensure ADC RSSI is disabled */ + r_setup_features &= ~(PX4IO_P_SETUP_FEATURES_ADC_RSSI); + *rssi = st24_rssi; r_raw_rc_count = st24_channel_count; @@ -116,14 +119,14 @@ bool dsm_port_input(uint16_t *rssi, bool *dsm_updated, bool *st24_updated, bool for (unsigned i = 0; i < n_bytes; i++) { /* set updated flag if one complete packet was parsed */ - st24_rssi = RC_INPUT_RSSI_MAX; + sumd_rssi = RC_INPUT_RSSI_MAX; *sumd_updated |= (OK == sumd_decode(bytes[i], &sumd_rssi, &sumd_rx_count, &sumd_channel_count, r_raw_rc_values, PX4IO_RC_INPUT_CHANNELS)); } if (*sumd_updated) { - *rssi = sumd_rssi; + /* not setting RSSI since SUMD does not provide one */ r_raw_rc_count = sumd_channel_count; r_status_flags |= PX4IO_P_STATUS_FLAGS_RC_SUMD; @@ -187,8 +190,8 @@ controls_tick() { /* use 1:1 scaling on 3.3V ADC input */ unsigned mV = counts * 3300 / 4096; - /* scale to 0..253 */ - rssi = mV / 13; + /* scale to 0..253 and lowpass */ + rssi = (rssi * 0.99f) + ((mV / 13) * 0.01f); } } #endif @@ -215,17 +218,23 @@ controls_tick() { if (sbus_updated) { r_status_flags |= PX4IO_P_STATUS_FLAGS_RC_SBUS; - rssi = 255; + unsigned sbus_rssi = 254; if (sbus_frame_drop) { r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FRAME_DROP; - rssi = 100; + sbus_rssi = 100; } else { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FRAME_DROP); } + /* set RSSI to an emulated value if ADC RSSI is off */ + if (!(r_setup_features & PX4IO_P_SETUP_FEATURES_ADC_RSSI)) { + rssi = sbus_rssi; + } + if (sbus_failsafe) { r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FAILSAFE; + /* set RSSI to 0 if the decoder senses complete drop, independent of the ADC value */ rssi = 0; } else { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FAILSAFE); From 4440c6383c3ad9030db7de4b828a7c4a1627c100 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 10:48:40 +0200 Subject: [PATCH 08/21] IO RSSI handling: Make 0-RSSI value consistent for all input sources --- src/modules/px4iofirmware/controls.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/modules/px4iofirmware/controls.c b/src/modules/px4iofirmware/controls.c index 4ef27718cf..c9702c2ec6 100644 --- a/src/modules/px4iofirmware/controls.c +++ b/src/modules/px4iofirmware/controls.c @@ -196,6 +196,11 @@ controls_tick() { } #endif + /* zero RSSI if signal is lost */ + if (!(r_raw_rc_flags & (PX4IO_P_RAW_RC_FLAGS_RC_OK))) { + rssi = 0; + } + perf_begin(c_gather_dsm); bool dsm_updated, st24_updated, sumd_updated; (void)dsm_port_input(&rssi, &dsm_updated, &st24_updated, &sumd_updated); @@ -227,19 +232,17 @@ controls_tick() { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FRAME_DROP); } + if (sbus_failsafe) { + r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FAILSAFE; + } else { + r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FAILSAFE); + } + /* set RSSI to an emulated value if ADC RSSI is off */ if (!(r_setup_features & PX4IO_P_SETUP_FEATURES_ADC_RSSI)) { rssi = sbus_rssi; } - if (sbus_failsafe) { - r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FAILSAFE; - /* set RSSI to 0 if the decoder senses complete drop, independent of the ADC value */ - rssi = 0; - } else { - r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FAILSAFE); - } - } perf_end(c_gather_sbus); From 8f762b57670d8ccf9e37b66699122135fdc624ff Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Tue, 21 Apr 2015 12:27:52 +0200 Subject: [PATCH 09/21] more specifications in firefly6 config file --- ROMFS/px4fmu_common/init.d/13002_firefly6 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/13002_firefly6 b/ROMFS/px4fmu_common/init.d/13002_firefly6 index 29167f1ede..9489bfd9a2 100644 --- a/ROMFS/px4fmu_common/init.d/13002_firefly6 +++ b/ROMFS/px4fmu_common/init.d/13002_firefly6 @@ -8,10 +8,14 @@ sh /etc/init.d/rc.vtol_defaults set MIXER firefly6 -set MIXER_AUX firefly6 +set PWM_OUT 123456 -set PWM_OUT 12345678 -set PWM_AUX_OUT 1234 +set MIXER_AUX firefly6 set PWM_AUX_RATE 50 +set PWM_AUX_OUT 1234 +set PWM_AUX_DISARMED 1000 +set PWM_AUX_MIN 1000 +set PWM_AUX_MAX 2000 + param set VT_MOT_COUNT 6 param set VT_IDLE_PWM_MC 1080 From 05847fd4c7049f09ff6e72a32f10074129f0235f Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Tue, 21 Apr 2015 12:35:35 +0200 Subject: [PATCH 10/21] improve serial output during loading of mixers --- ROMFS/px4fmu_common/init.d/rc.interface | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ROMFS/px4fmu_common/init.d/rc.interface b/ROMFS/px4fmu_common/init.d/rc.interface index efdba9506e..7a424970f6 100644 --- a/ROMFS/px4fmu_common/init.d/rc.interface +++ b/ROMFS/px4fmu_common/init.d/rc.interface @@ -45,7 +45,7 @@ then if mixer load $OUTPUT_DEV $MIXER_FILE then - echo "[i] Mixer: $MIXER_FILE" + echo "[i] Mixer: $MIXER_FILE on $OUTPUT_DEV" else echo "[i] Error loading mixer: $MIXER_FILE" tone_alarm $TUNE_ERR @@ -105,7 +105,7 @@ then set MIXER_AUX_FILE none set OUTPUT_AUX_DEV /dev/pwm_output1 - if [ -f $SDCARD_MIXERS_PATH/$MIXER_AUX.mix ] + if [ -f $SDCARD_MIXERS_PATH/$MIXER_AUX.aux.mix ] then set MIXER_AUX_FILE $SDCARD_MIXERS_PATH/$MIXER_AUX.aux.mix else @@ -120,7 +120,12 @@ then then if fmu mode_pwm then - mixer load $OUTPUT_AUX_DEV $MIXER_AUX_FILE + if mixer load $OUTPUT_AUX_DEV $MIXER_AUX_FILE + then + echo "[i] Mixer: $MIXER_AUX_FILE on $OUTPUT_AUX_DEV" + else + echo "[i] Error loading mixer: $MIXER_AUX_FILE" + fi else tone_alarm $TUNE_ERR fi From 15f11ae1e231422cd57cc65cdf89ad714f8a6ed4 Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Tue, 21 Apr 2015 12:36:46 +0200 Subject: [PATCH 11/21] add control output for tilting rotors --- src/modules/vtol_att_control/vtol_att_control_main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/vtol_att_control/vtol_att_control_main.cpp b/src/modules/vtol_att_control/vtol_att_control_main.cpp index defcff8e4a..d9425f2bb3 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.cpp +++ b/src/modules/vtol_att_control/vtol_att_control_main.cpp @@ -176,7 +176,7 @@ private: bool flag_idle_mc; //false = "idle is set for fixed wing mode"; true = "idle is set for multicopter mode" unsigned _motor_count; // number of motors float _airspeed_tot; - + float _tilt_control; //*****************Member functions*********************************************************************** void task_main(); //main task @@ -241,6 +241,7 @@ VtolAttitudeControl::VtolAttitudeControl() : flag_idle_mc = true; _airspeed_tot = 0.0f; + _tilt_control = 0.0f; memset(& _vtol_vehicle_status, 0, sizeof(_vtol_vehicle_status)); _vtol_vehicle_status.vtol_in_rw_mode = true; /* start vtol in rotary wing mode*/ @@ -521,6 +522,7 @@ void VtolAttitudeControl::fill_mc_att_control_output() //set neutral position for elevons _actuators_out_1.control[0] = _actuators_mc_in.control[2]; //roll elevon _actuators_out_1.control[1] = _actuators_mc_in.control[1];; //pitch elevon + _actuators_out_1.control[4] = _tilt_control; // for tilt-rotor control } /** From 5e044e5b676747a278513ec7501a472dea25aac6 Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Tue, 21 Apr 2015 13:16:59 +0200 Subject: [PATCH 12/21] completed auxiliary mixer file for firefly6 --- ROMFS/px4fmu_common/mixers/firefly6.aux.mix | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/ROMFS/px4fmu_common/mixers/firefly6.aux.mix b/ROMFS/px4fmu_common/mixers/firefly6.aux.mix index 9ed6eeed91..b0b4250926 100644 --- a/ROMFS/px4fmu_common/mixers/firefly6.aux.mix +++ b/ROMFS/px4fmu_common/mixers/firefly6.aux.mix @@ -1,4 +1,14 @@ -# mixer for the FireFly6 elevons +# mixer for the FireFly6 tilt mechansim servo, elevons and landing gear +======================================================================= + +Tilt mechanism servo mixer +--------------------------- +M: 1 +O: 10000 10000 0 -10000 10000 +S: 1 4 10000 10000 0 -10000 10000 + +Elevon mixers +------------- M: 2 O: 10000 10000 0 -10000 10000 S: 1 0 7500 7500 0 -10000 10000 @@ -8,3 +18,9 @@ M: 2 O: 10000 10000 0 -10000 10000 S: 1 0 7500 7500 0 -10000 10000 S: 1 1 -8000 -8000 0 -10000 10000 + +Landing gear mixer +------------------ +M: 1 +O: 10000 10000 0 -10000 10000 +S: 0 7 10000 10000 0 -10000 10000 From d544ac09550814550e4fc07a8197f8fffb44d98d Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 17:45:29 +0200 Subject: [PATCH 13/21] Sumd: Better magic number for RSSI --- src/lib/rc/sumd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/rc/sumd.c b/src/lib/rc/sumd.c index a98c986bb7..cea7790ec1 100644 --- a/src/lib/rc/sumd.c +++ b/src/lib/rc/sumd.c @@ -269,7 +269,7 @@ int sumd_decode(uint8_t byte, uint8_t *rssi, uint8_t *rx_count, uint16_t *channe uint8_t _cnt = *rx_count + 1; *rx_count = _cnt; - *rssi = 255; + *rssi = 100; /* received Channels */ if ((uint16_t)_rxpacket.length > max_chan_count) { From 09ae879b8262f5ae9b0cd23f48854d4730172ae2 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 21 Apr 2015 17:46:21 +0200 Subject: [PATCH 14/21] RC input: Replace magic numbers with better numbers, cap output to 0-100 --- src/drivers/drv_rc_input.h | 2 +- src/modules/px4iofirmware/controls.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/drivers/drv_rc_input.h b/src/drivers/drv_rc_input.h index d44728a712..a24d8814fe 100644 --- a/src/drivers/drv_rc_input.h +++ b/src/drivers/drv_rc_input.h @@ -65,7 +65,7 @@ /** * Maximum RSSI value */ -#define RC_INPUT_RSSI_MAX 255 +#define RC_INPUT_RSSI_MAX 100 /** * @addtogroup topics diff --git a/src/modules/px4iofirmware/controls.c b/src/modules/px4iofirmware/controls.c index c9702c2ec6..ac004f2127 100644 --- a/src/modules/px4iofirmware/controls.c +++ b/src/modules/px4iofirmware/controls.c @@ -191,7 +191,10 @@ controls_tick() { unsigned mV = counts * 3300 / 4096; /* scale to 0..253 and lowpass */ - rssi = (rssi * 0.99f) + ((mV / 13) * 0.01f); + rssi = (rssi * 0.99f) + ((mV / (3300 / RC_INPUT_RSSI_MAX)) * 0.01f); + if (rssi > RC_INPUT_RSSI_MAX) { + rssi = RC_INPUT_RSSI_MAX; + } } } #endif @@ -223,11 +226,11 @@ controls_tick() { if (sbus_updated) { r_status_flags |= PX4IO_P_STATUS_FLAGS_RC_SBUS; - unsigned sbus_rssi = 254; + unsigned sbus_rssi = RC_INPUT_RSSI_MAX; if (sbus_frame_drop) { r_raw_rc_flags |= PX4IO_P_RAW_RC_FLAGS_FRAME_DROP; - sbus_rssi = 100; + sbus_rssi = RC_INPUT_RSSI_MAX / 2; } else { r_raw_rc_flags &= ~(PX4IO_P_RAW_RC_FLAGS_FRAME_DROP); } From 6bf0a2618bf5e2680f61c4d2a1258eed62103f0e Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 21 Apr 2015 12:31:08 -0700 Subject: [PATCH 15/21] Add support for board attribute to parse output This allows for writing parameter meta data which is specific to a board type --- Tools/px4params/dokuwikiout.py | 4 ++-- Tools/px4params/srcparser.py | 37 +++++++++++++++++++-------------- Tools/px4params/xmlout.py | 38 +++++++++++++++++++++------------- Tools/px_process_params.py | 7 ++++++- 4 files changed, 53 insertions(+), 33 deletions(-) diff --git a/Tools/px4params/dokuwikiout.py b/Tools/px4params/dokuwikiout.py index 77e0ef53db..28e487ea62 100644 --- a/Tools/px4params/dokuwikiout.py +++ b/Tools/px4params/dokuwikiout.py @@ -12,11 +12,11 @@ class DokuWikiTablesOutput(): result += "^ Name ^ Description ^ Min ^ Max ^ Default ^\n" result += "^ ::: ^ Comment ^^^^\n" for param in group.GetParams(): - code = param.GetFieldValue("code") + code = param.GetName() + def_val = param.GetDefault() name = param.GetFieldValue("short_desc") min_val = param.GetFieldValue("min") max_val = param.GetFieldValue("max") - def_val = param.GetFieldValue("default") long_desc = param.GetFieldValue("long_desc") if name == code: diff --git a/Tools/px4params/srcparser.py b/Tools/px4params/srcparser.py index 891db7ecd2..0d2413a75f 100644 --- a/Tools/px4params/srcparser.py +++ b/Tools/px4params/srcparser.py @@ -37,20 +37,30 @@ class Parameter(object): # Define sorting order of the fields priority = { - "code": 10, - "type": 9, + "board": 9, "short_desc": 8, "long_desc": 7, - "default": 6, "min": 5, "max": 4, "unit": 3, # all others == 0 (sorted alphabetically) } - def __init__(self): + def __init__(self, name, type, default = ""): self.fields = {} + self.name = name + self.type = type + self.default = default + def GetName(self): + return self.name + + def GetType(self): + return self.type + + def GetDefault(self): + return self.default + def SetField(self, code, value): """ Set named field value @@ -88,7 +98,7 @@ class SourceParser(object): re_is_a_number = re.compile(r'^-?[0-9\.]') re_remove_dots = re.compile(r'\.+$') - valid_tags = set(["group", "min", "max", "unit"]) + valid_tags = set(["group", "board", "min", "max", "unit"]) # Order of parameter groups priority = { @@ -177,15 +187,12 @@ class SourceParser(object): # Non-empty line outside the comment m = self.re_parameter_definition.match(line) if m: - tp, code, defval = m.group(1, 2, 3) + tp, name, defval = m.group(1, 2, 3) # Remove trailing type specifier from numbers: 0.1f => 0.1 if self.re_is_a_number.match(defval): defval = self.re_cut_type_specifier.sub('', defval) - param = Parameter() - param.SetField("code", code) - param.SetField("short_desc", code) - param.SetField("type", tp) - param.SetField("default", defval) + param = Parameter(name, tp, defval) + param.SetField("short_desc", name) # If comment was found before the parameter declaration, # inject its data into the newly created parameter. group = "Miscellaneous" @@ -211,11 +218,9 @@ class SourceParser(object): # Nasty code dup, but this will all go away soon, so quick and dirty (DonLakeFlyer) m = self.re_px4_parameter_definition.match(line) if m: - tp, code = m.group(1, 2) - param = Parameter() - param.SetField("code", code) - param.SetField("short_desc", code) - param.SetField("type", tp) + tp, name = m.group(1, 2) + param = Parameter(name, tp) + param.SetField("short_desc", name) # If comment was found before the parameter declaration, # inject its data into the newly created parameter. group = "Miscellaneous" diff --git a/Tools/px4params/xmlout.py b/Tools/px4params/xmlout.py index 89f495dc02..07cced4786 100644 --- a/Tools/px4params/xmlout.py +++ b/Tools/px4params/xmlout.py @@ -18,26 +18,36 @@ def indent(elem, level=0): class XMLOutput(): - def __init__(self, groups): + def __init__(self, groups, board): xml_parameters = ET.Element("parameters") xml_version = ET.SubElement(xml_parameters, "version") - xml_version.text = "2" + xml_version.text = "3" + last_param_name = "" + board_specific_param_set = False for group in groups: xml_group = ET.SubElement(xml_parameters, "group") xml_group.attrib["name"] = group.GetName() for param in group.GetParams(): - xml_param = ET.SubElement(xml_group, "parameter") - for code in param.GetFieldCodes(): - value = param.GetFieldValue(code) - if code == "code": - xml_param.attrib["name"] = value - elif code == "default": - xml_param.attrib["default"] = value - elif code == "type": - xml_param.attrib["type"] = value - else: - xml_field = ET.SubElement(xml_param, code) - xml_field.text = value + if (last_param_name == param.GetName() and not board_specific_param_set) or last_param_name != param.GetName(): + xml_param = ET.SubElement(xml_group, "parameter") + xml_param.attrib["name"] = param.GetName() + xml_param.attrib["default"] = param.GetDefault() + xml_param.attrib["type"] = param.GetType() + last_param_name = param.GetName() + for code in param.GetFieldCodes(): + value = param.GetFieldValue(code) + if code == "board": + if value == board: + board_specific_param_set = True + xml_field = ET.SubElement(xml_param, code) + xml_field.text = value + else: + xml_group.remove(xml_param) + else: + xml_field = ET.SubElement(xml_param, code) + xml_field.text = value + if last_param_name != param.GetName(): + board_specific_param_set = False indent(xml_parameters) self.xml_document = ET.ElementTree(xml_parameters) diff --git a/Tools/px_process_params.py b/Tools/px_process_params.py index 12128a997e..cb2202d529 100644 --- a/Tools/px_process_params.py +++ b/Tools/px_process_params.py @@ -65,6 +65,11 @@ def main(): metavar="FILENAME", help="Create XML file" " (default FILENAME: parameters.xml)") + parser.add_argument("-b", "--board", + nargs='?', + const="", + metavar="BOARD", + help="Board to create xml parameter xml for") parser.add_argument("-w", "--wiki", nargs='?', const="parameters.wiki", @@ -116,7 +121,7 @@ def main(): # Output to XML file if args.xml: print("Creating XML file " + args.xml) - out = xmlout.XMLOutput(param_groups) + out = xmlout.XMLOutput(param_groups, args.board) out.Save(args.xml) # Output to DokuWiki tables From 638be07c2cf6b02defd2e50a8b2539a2d5fe7359 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 21 Apr 2015 12:31:30 -0700 Subject: [PATCH 16/21] Use new @board attribute for ifdef's --- src/modules/sensors/sensor_params.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/modules/sensors/sensor_params.c b/src/modules/sensors/sensor_params.c index d6ab637cdc..1bebea2060 100644 --- a/src/modules/sensors/sensor_params.c +++ b/src/modules/sensors/sensor_params.c @@ -960,6 +960,7 @@ PARAM_DEFINE_INT32(BAT_V_SCALE_IO, 10000); /** * Scaling factor for battery voltage sensor on FMU v2. * + * @board CONFIG_ARCH_BOARD_PX4FMU_V2 * @group Battery Calibration */ PARAM_DEFINE_FLOAT(BAT_V_SCALING, 0.0082f); @@ -969,6 +970,7 @@ PARAM_DEFINE_FLOAT(BAT_V_SCALING, 0.0082f); * * For R70 = 133K, R71 = 10K --> scale = 1.8 * 143 / (4096*10) = 0.0063 * + * @board CONFIG_ARCH_BOARD_AEROCORE * @group Battery Calibration */ PARAM_DEFINE_FLOAT(BAT_V_SCALING, 0.0063f); From 08123df83a595c33ed2c62267f3bc64af6090be7 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 21 Apr 2015 12:32:01 -0700 Subject: [PATCH 17/21] Remove PX4_PARAM_DEFINE_* usage to get better meta data --- src/modules/systemlib/circuit_breaker_params.c | 13 ++++++------- src/modules/systemlib/circuit_breaker_params.h | 7 ------- 2 files changed, 6 insertions(+), 14 deletions(-) delete mode 100644 src/modules/systemlib/circuit_breaker_params.h diff --git a/src/modules/systemlib/circuit_breaker_params.c b/src/modules/systemlib/circuit_breaker_params.c index e499ae27ac..e5cc034bc9 100644 --- a/src/modules/systemlib/circuit_breaker_params.c +++ b/src/modules/systemlib/circuit_breaker_params.c @@ -43,7 +43,6 @@ */ #include -#include /** * Circuit breaker for power supply check @@ -56,7 +55,7 @@ * @max 894281 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_SUPPLY_CHK); +PARAM_DEFINE_INT32(CBRK_SUPPLY_CHK, 0); /** * Circuit breaker for rate controller output @@ -69,7 +68,7 @@ PX4_PARAM_DEFINE_INT32(CBRK_SUPPLY_CHK); * @max 140253 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_RATE_CTRL); +PARAM_DEFINE_INT32(CBRK_RATE_CTRL, 0); /** * Circuit breaker for IO safety @@ -81,7 +80,7 @@ PX4_PARAM_DEFINE_INT32(CBRK_RATE_CTRL); * @max 22027 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_IO_SAFETY); +PARAM_DEFINE_INT32(CBRK_IO_SAFETY, 0); /** * Circuit breaker for airspeed sensor @@ -93,7 +92,7 @@ PX4_PARAM_DEFINE_INT32(CBRK_IO_SAFETY); * @max 162128 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_AIRSPD_CHK); +PARAM_DEFINE_INT32(CBRK_AIRSPD_CHK, 0); /** * Circuit breaker for flight termination @@ -106,7 +105,7 @@ PX4_PARAM_DEFINE_INT32(CBRK_AIRSPD_CHK); * @max 121212 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_FLIGHTTERM); +PARAM_DEFINE_INT32(CBRK_FLIGHTTERM, 121212); /** * Circuit breaker for engine failure detection @@ -120,4 +119,4 @@ PX4_PARAM_DEFINE_INT32(CBRK_FLIGHTTERM); * @max 284953 * @group Circuit Breaker */ -PX4_PARAM_DEFINE_INT32(CBRK_ENGINEFAIL); +PARAM_DEFINE_INT32(CBRK_ENGINEFAIL, 284953); diff --git a/src/modules/systemlib/circuit_breaker_params.h b/src/modules/systemlib/circuit_breaker_params.h deleted file mode 100644 index 768bf7f533..0000000000 --- a/src/modules/systemlib/circuit_breaker_params.h +++ /dev/null @@ -1,7 +0,0 @@ -#define PARAM_CBRK_SUPPLY_CHK_DEFAULT 0 -#define PARAM_CBRK_RATE_CTRL_DEFAULT 0 -#define PARAM_CBRK_IO_SAFETY_DEFAULT 0 -#define PARAM_CBRK_AIRSPD_CHK_DEFAULT 0 -#define PARAM_CBRK_FLIGHTTERM_DEFAULT 121212 -#define PARAM_CBRK_ENGINEFAIL_DEFAULT 284953 -#define PARAM_CBRK_GPSFAIL_DEFAULT 240024 From a885c2c8c9739459361bb7f355a25e0961bb20e5 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 21 Apr 2015 12:32:15 -0700 Subject: [PATCH 18/21] Parameter meta data is not typed to board --- makefiles/firmware.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/makefiles/firmware.mk b/makefiles/firmware.mk index 4c10de931c..af3ca249e5 100644 --- a/makefiles/firmware.mk +++ b/makefiles/firmware.mk @@ -494,7 +494,7 @@ $(filter %.S.o,$(OBJS)): $(WORK_DIR)%.S.o: %.S $(GLOBAL_DEPS) $(PRODUCT_BUNDLE): $(PRODUCT_BIN) @$(ECHO) %% Generating $@ ifdef GEN_PARAM_XML - python $(PX4_BASE)/Tools/px_process_params.py --src-path $(PX4_BASE)/src --xml + python $(PX4_BASE)/Tools/px_process_params.py --src-path $(PX4_BASE)/src --board CONFIG_ARCH_BOARD_$(CONFIG_BOARD) --xml $(Q) $(MKFW) --prototype $(IMAGE_DIR)/$(BOARD).prototype \ --git_identity $(PX4_BASE) \ --parameter_xml $(PRODUCT_PARAMXML) \ From 5e584c2942a3087b5250003d05917db8769f7789 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Wed, 22 Apr 2015 09:27:03 +0200 Subject: [PATCH 19/21] commander: Better low battery failure feedback --- src/modules/commander/commander.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index 948543714f..e0634bb348 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -1602,7 +1602,11 @@ int commander_thread_main(int argc, char *argv[]) if (arming_ret == TRANSITION_CHANGED) { arming_state_changed = true; + mavlink_and_console_log_critical(mavlink_fd, "LOW BATTERY, LOCKING ARMING DOWN"); } + + } else { + mavlink_and_console_log_emergency(mavlink_fd, "CRITICAL BATTERY, LAND IMMEDIATELY"); } status_changed = true; From 5b772e5720ed6bc8f90316dc7632b218819543b7 Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Wed, 22 Apr 2015 09:53:09 +0200 Subject: [PATCH 20/21] update vehicle status before doing preflight checks --- src/modules/commander/commander.cpp | 21 ++++++++------------- src/modules/commander/commander_helper.cpp | 5 +++++ src/modules/commander/commander_helper.h | 1 + 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/modules/commander/commander.cpp b/src/modules/commander/commander.cpp index e0634bb348..65fc8f90e8 100644 --- a/src/modules/commander/commander.cpp +++ b/src/modules/commander/commander.cpp @@ -1125,6 +1125,10 @@ int commander_thread_main(int argc, char *argv[]) commander_initialized = true; thread_running = true; + /* update vehicle status to find out vehicle type (required for preflight checks) */ + param_get(_param_sys_type, &(status.system_type)); // get system type + status.is_rotary_wing = is_rotary_wing(&status) || is_vtol(&status); + bool checkAirspeed = false; /* Perform airspeed check only if circuit breaker is not * engaged and it's not a rotary wing */ @@ -1204,15 +1208,7 @@ int commander_thread_main(int argc, char *argv[]) } /* disable manual override for all systems that rely on electronic stabilization */ - if (status.system_type == vehicle_status_s::VEHICLE_TYPE_COAXIAL || - status.system_type == vehicle_status_s::VEHICLE_TYPE_HELICOPTER || - status.system_type == vehicle_status_s::VEHICLE_TYPE_TRICOPTER || - status.system_type == vehicle_status_s::VEHICLE_TYPE_QUADROTOR || - status.system_type == vehicle_status_s::VEHICLE_TYPE_HEXAROTOR || - status.system_type == vehicle_status_s::VEHICLE_TYPE_OCTOROTOR || - (status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_DUOROTOR && vtol_status.vtol_in_rw_mode) || - (status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_QUADROTOR && vtol_status.vtol_in_rw_mode)) { - + if (is_rotary_wing(&status) || (is_vtol(&status) && vtol_status.vtol_in_rw_mode)) { status.is_rotary_wing = true; } else { @@ -1220,8 +1216,7 @@ int commander_thread_main(int argc, char *argv[]) } /* set vehicle_status.is_vtol flag */ - status.is_vtol = (status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_DUOROTOR) || - (status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_QUADROTOR); + status.is_vtol = is_vtol(&status); /* check and update system / component ID */ param_get(_param_system_id, &(status.system_id)); @@ -1422,8 +1417,8 @@ int commander_thread_main(int argc, char *argv[]) orb_copy(ORB_ID(vtol_vehicle_status), vtol_vehicle_status_sub, &vtol_status); status.vtol_fw_permanent_stab = vtol_status.fw_permanent_stab; - /* Make sure that this is only adjusted if vehicle realy is of type vtol*/ - if ((status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_DUOROTOR) || (status.system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_QUADROTOR)) { + /* Make sure that this is only adjusted if vehicle really is of type vtol*/ + if (is_vtol(&status)) { status.is_rotary_wing = vtol_status.vtol_in_rw_mode; } } diff --git a/src/modules/commander/commander_helper.cpp b/src/modules/commander/commander_helper.cpp index a5e4d19725..5f735b7b7c 100644 --- a/src/modules/commander/commander_helper.cpp +++ b/src/modules/commander/commander_helper.cpp @@ -84,6 +84,11 @@ bool is_rotary_wing(const struct vehicle_status_s *current_status) || (current_status->system_type == vehicle_status_s::VEHICLE_TYPE_COAXIAL); } +bool is_vtol(const struct vehicle_status_s * current_status) { + return current_status->system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_DUOROTOR || + current_status->system_type == vehicle_status_s::VEHICLE_TYPE_VTOL_QUADROTOR; +} + static int buzzer = -1; static hrt_abstime blink_msg_end = 0; // end time for currently blinking LED message, 0 if no blink message static hrt_abstime tune_end = 0; // end time of currently played tune, 0 for repeating tunes or silence diff --git a/src/modules/commander/commander_helper.h b/src/modules/commander/commander_helper.h index 0cefedba7c..bf0c0505d2 100644 --- a/src/modules/commander/commander_helper.h +++ b/src/modules/commander/commander_helper.h @@ -51,6 +51,7 @@ bool is_multirotor(const struct vehicle_status_s *current_status); bool is_rotary_wing(const struct vehicle_status_s *current_status); +bool is_vtol(const struct vehicle_status_s *current_status); int buzzer_init(void); void buzzer_deinit(void); From 67956341e68824942cccac5c5c2c6c425a9c4d97 Mon Sep 17 00:00:00 2001 From: Roman Bapst Date: Tue, 21 Apr 2015 14:59:08 +0200 Subject: [PATCH 21/21] FireFly6: make landing gear manual pass-through --- ROMFS/px4fmu_common/mixers/firefly6.aux.mix | 2 +- src/modules/vtol_att_control/vtol_att_control_main.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ROMFS/px4fmu_common/mixers/firefly6.aux.mix b/ROMFS/px4fmu_common/mixers/firefly6.aux.mix index b0b4250926..fda8416403 100644 --- a/ROMFS/px4fmu_common/mixers/firefly6.aux.mix +++ b/ROMFS/px4fmu_common/mixers/firefly6.aux.mix @@ -23,4 +23,4 @@ Landing gear mixer ------------------ M: 1 O: 10000 10000 0 -10000 10000 -S: 0 7 10000 10000 0 -10000 10000 +S: 3 6 10000 10000 0 -10000 10000 diff --git a/src/modules/vtol_att_control/vtol_att_control_main.cpp b/src/modules/vtol_att_control/vtol_att_control_main.cpp index d9425f2bb3..2ae10bd274 100644 --- a/src/modules/vtol_att_control/vtol_att_control_main.cpp +++ b/src/modules/vtol_att_control/vtol_att_control_main.cpp @@ -765,7 +765,7 @@ void VtolAttitudeControl::task_main() vehicle_battery_poll(); - if (_manual_control_sp.aux1 <= 0.0f) { /* vehicle is in mc mode */ + if (_manual_control_sp.aux1 < 0.0f) { /* vehicle is in mc mode */ _vtol_vehicle_status.vtol_in_rw_mode = true; if (!flag_idle_mc) { /* we want to adjust idle speed for mc mode */