From 3151748fa58033c53caa44d111397a6466c5eaf2 Mon Sep 17 00:00:00 2001 From: sat1l <66544255+Sat1l@users.noreply.github.com> Date: Fri, 28 Mar 2025 10:47:56 +0000 Subject: [PATCH] demo server working --- mkapp/app/media/HDZero.png | Bin 0 -> 111381 bytes mkapp/app/script/serve_media.sh | 182 ++++++++++++++++++++++++++++++++ src/ui/page_common.h | 1 + src/ui/page_wifi.c | 1 + 4 files changed, 184 insertions(+) create mode 100644 mkapp/app/media/HDZero.png create mode 100755 mkapp/app/script/serve_media.sh diff --git a/mkapp/app/media/HDZero.png b/mkapp/app/media/HDZero.png new file mode 100644 index 0000000000000000000000000000000000000000..c89c78a5db9e7763a4c9623d1498a10691feda9a GIT binary patch literal 111381 zcmeFa2{@GP`!{|Kq9R&RiIzc+ETJsf>M1cP+JtOlDJffIiDlubzj$ce$LPNInV35 zN7PnxlNr+&Oh*XKpqOshj?laugv3@)6^2(9N(E)X|EBqv+V~-)x(xe|6m-)l0HMW* zvSHoMpxTc5btL%5A1fb)w`vMbs0fg9>%`$R|9Q=|5ctm*;T0u6+kbprga0~i7rq_1 z@Zj5lZ--xrf{zD29{70p)dGAx{Avw8Kk)Iu$HT7{;N#&}Yw-Djj|V;;ezgD}55HRD z|L6Qbt9ZRg6kD%YZ;ouqxWKeu*A9QDZSlf?{BJKKrb5n?e}4`8H#N5IANxBDmM7_- z-p_8y{->9bhwnePgS7Hg{_*{Z^^*VeI)D1ORruD&&AuA=CUFb=_hFKEJKkUTjKH@(4-EhBmJ~b_ zz+d=f1a1v}8G)ODUq)bN;Fl3N82FM6Hv?ZZU}pI5DI;)$|H~hI>+`M80|Z~PVW!|q zHXIOq$%dQZe@3$XmrpwVzr3-6TW|6Yen{~{>L(ulXF}@dyZL;~wFRG#aXawAgPDO} zLgQfgKU_j5-OK&@PiFzJd+}2kZgD;f;b!2o5M~BG3*lh+Kg>e-n7{nNXCB-beCEN; zz-J!J41DIn!N6x8+zkH}e+83_VU3T)#oRhw4%a04+nKie}{ZdhT=J4<3QdZ`c@^yb-_}-_#_@hp* zZ;-sr0q@K)Rcs~;cKq|V53hA8|L3n0-naR`_Fyz16}@r}aI z&j0f_99LfaFTS#vzX%*u#20+Ja zl&I+ed(Q+Xv>cKcPao->5E74Q?p}7O_)?;PZF2aa^D7~Q5?3dyUT9vHU?HJjkC=`Z zKgG0L%HE3pv;li2npyPz`u8!JWH;T^Y=<2=TVlUB|KNPs>zMqY?7l405r<^HZ@n7p zo;3Sx4rL?Eh|)^Qc#0Ob`cGjN6nJ~wSUej4*JA+XZa;F zCb8(2o7dDH(cpZ9299)1*uA_-qInOL{+O_6 zz2f%6?wFqWT?_0R^a5V5%$UasE_~JJQ9r)-MN@YfSx`dTVw=^cJ#@$HQBOU(i1_iz z%zkByTe~g2(0U>`akPEu^%$GD#@E$32kGw*WnGRsV^9+_#SNjDgoTUDGhDI+F<vGt|`oRQ^|T5Eun`d6J5WxLg<^@fh7t9Attze<7`xQ5lbS}6zn z(UEH7oUDygILq%vd#T1=&h$)&Qc-h2oc)T;`T_F%P20xP z1BC~i;q3A76=bLrt8zJbp=Ay0QS?b-G5c5)!^~|Idd-hQbK@nF%nR=6eFn#jn~>EV$COZ6pd>7ko_AB+!ems!=H zdA}|=HSw-imb7Bt1O~~EBwCV|ot)fX#cwU=KNZ$N3vUuP3W$mJGIF&%r1x-{8gZY6 z14~)a`AQ}1Kj%}ge@!dg{N_a(!&G-hkDF|!#4fKF8$S{s;SmsY1T%aiWdp7v*ZTEDSCPYuL#wdMS3%V5)9 zvt4^WOn0Yc2J4r7jf%L?I+#f>ObpC_0JqibK2%XEfGWEF3f88-3qF4LwLD@t5e3$G zBV|`HBdk?mDRGY_}?9C#Cb2)o))CGcewy9V6hhH)Of@iwWTCRXkLQoQAgkRV>Hi%`j!-kKnIl@k*?(l=YrTdMatZDw zNu5m&BjJZGwOqTI)pV-HuUk}+;x+CX_Wa!K^j=>BMZqgmhy`BKd+}A^T4KJ^AVnC% z=g&KLtYP`v#|_$eKGmN+&FA^ow99UmT5l`Tf~Imp`ctDnl}M!&%oVL@YpIe6Z~RhZ zp|RO_0s`0Ir0|)NLs^CA{*wDV@tEwryF6dfY5Xa~>$!I3nQ8!k=MU{!+-2*(Pc1!O z3{JWy^$t%M@G|q3JvlEuT_Zi+cZb!don+>cJLzw1y|pF|(5<$4h=vwJnE8$l%>lZ2 zQy~@Lc_zhGtNV}%{L_w%81tr^$3V7RN7tmFhXfxo_l80oWd@!hutM9ShdIW^KJF;p zmYM<~d@ub?X1a!1uL4W-4qDi&PMNSU4F7FGKqaO6z~7Vp+aQ4M9sW?8*?iwH^6;{0 zv;d;0X5URGd!Mf-e)CV|wODe_Heb<>tNwR77qgUE_Pa_OP~uylDv9vk;7{2d`SAYF zNnIWQic%7~H~$o;O}2ZEI(ld}$>3}CWaI0TqY0bPB$ww+8Q5qa*O#w!ojj2>{{E)5 z@V=6|FV4XeQWMp4Btkwavl{YS0#sCvYlJZjR(5Au}+;kjAvRY`w94)nL&>u-7ZBg&@SQR&%?<*^SL8dq^?_G=+U4jE)EO`<1KzB<$?2sM559{tcq5&7K=%HM5yJ9Ag1c|R%=V6Dj)qul zkeP|iNO$^H2@EW|S~rr|vx!bfMXNGPtvx#OHMoX*tu@P_7Xl>jre7PH&c2Ehz0Xs!ra zr8WD>y7_w_!7r<_y)jAe)WCX$1a_y?KYN6x2DgT zj>Tfes7If0d&ey)3b=Uq8Zqn@<4pQyNF8&h^jHDe04vA`$67kcGW|v_y7rtN?2L+D z=AVQGyT~;}%Ut8Wve;GRUWNA>H&V}L-l!R|7 zpYK+yn^snP=q+05&iXX_Z-?`(8^d2L0@k>h;&j&a(bdvK$TLRWhdlR@m_;Kd^ct1Z z2D7`zZM`2E8i;9_M5nl~Y5s1ujT!8@$>ET2wHeYb1UbeX7prB-kXC5)nX zd?iZk3COqBN{a7)DjfbriB%Assy7oRzW-v2i)eH5JIlOT-Ce-`2?JVfU(BRAbv&AN z1ZAH~ApuC2Qmb@z z(OXO1xZc+X4(!NCfuP-7h?|hGK(BbS4p*df zeSKHg+CrQKNc(dG&-l^fkIZjkxTJ=|!YLXQJ$W$DKp4b-a*u!fwTNe4fFsw&FNenv z!@_I#f0)a5s;Ysox3^$() zSr#_)b_sSwjL#{4Z8s(P^HRe2BjEEhv4vikYXdE?{P{rg#P~{k<;dB>`*?P8$}`n~ zWIX4mo${ZjakAB>vnBj39TXDegO|*p#*FIQD=S)z)+P^e3hF_WfYLSq(}r+v-8`6S zm-@&Sf;)RCXi#3PXB9!+;uRFSw!fvU5(H(Hk6*z3<8luK;k$Pc6m$O|EM*fhbv01NGyU|?gMOF|gc_R^7ABKSu zO~nZFJnR5d9<-0!v5n~k_DOKP+!D8nW`L(@n7-M!C(kaE^FSpIwtw7**p?+^Ia}$$ zyBX!DgHoD?^~?Ni%j9MY2dyFUMr3DxM)}j@>wk`~#0s)sN$Q~ae|ud(mU@E*D%&A1 zj-Scwj+&{}WlRUltZo&dD&EuHxG(*W0M78;q?I1-^^^GIRmGehdvZdq&!kjDvOP4w^-;tSxHRZYWtAxMWbU58O&G^mb~CB@0e7O8Kr^mVV)k zk$yI6q7YU&sPp3MUssct6Vu-JH-+v9^1+x?m(wV8gx+!-2Cv4nOOx)io6=V;jesLZ zfY6ktqkyfp@*NPAm!k*Yi`gy+WE^dlpj{`bc}@_JLGxcrh>^27kTp!j7zXW+oVxGV ziY=l#K2C!2tx1y!5UJSTpj??DMN#N8w@O%r^!EHjWKJd&^_`cyhq!>`)tu-|MZ>Vv zFfo4Rt#*({ke#p51|Zt)<0(xPLAIYg)04J_3^pPKu8v`kSXT4Bav&xPqH$ePOH%CP6^EaJcjfOAoHDV zxpnh{w_VJmc_kN~jX~;u{Zy2pON3<5IaiN$KOxx`GV3+LAVzP`QY1v%Z{0Y%;@{_yRk8a1a7s#xeS)GY8v$*+L46@wez^qi`< z-D>qofn_7QKK!EU1zAnd*^|8+j{1}w0#_ap$83i-VhlGwHEBD@v;MyPeIBugosTE= zEybXLDmpN3t1j#Gcs`t;z0Rxz$gNVGSZpW--ZFXBUExR;UCY>H1QN4Gl)2=`#Tin& z?nP_PJ6htEZ>j-{{XCBJqX9W)y)I@Y67q%HA|Cq5ws?vr9zYCYQ;ueIokJ9AG|#O* zqTyFF%2%?I$TY!sSfnnLtqK(wpmu@ga6BbIbJKXaKlb<*J&>?7y9Xh)CbwAHmMsQq zk0Cbg#!nsN{l?Mkbx%}6VZh~`ad}8T2Wx8-9X}Xy?fB!1BNLN!TUVX9qWzZx+I3#ucA zC&bkGmLsC;Q^@l-4SfLyqT4+>B<9>ms?^|F@)c0_IcdU}`x1`Xp4koQf!usoOI}20 zCzKsOD&Md_&ty1aX%o0!KO*tMv&R7r?FA24tL^KP7NV`@4HkXi7at#mq23JZ8bvwV zau^sbm1qek2j;i72MaMAGv?I`;1j&u;*U9{-p)QQk?f`-Hg@%%%S<$GI!UIe=_}-b zwLg~)s`55u_vJdm?ap-vYkxaPV#|+7mUTr*4OD*zx%pDhzAqeQf5G5`Ny+XU+Y~{W zjt}ZnQ49gaD^XDXA5kY3U3ov6>@p=sCf}qqTk#DNua5!4Rev0cUwUFJWnx9{6sm2t zUlo=Jmw(tO?A}`Ve3FL(cmv+i)0;}r8)J$TrK^;AH7)&3G%Q^QYp6wBD30{C)%o*B zF@Pf5ozP|TPY$*N*DD6Ud()#0(JV_?QorM${Hc_u5i-UAmk8?ywBU>Nn zvMv@DFU@BUn9pXO8_Mh4ekVA!ZjPqR`DilM#QAMHs>Ry*l*XKu{S^AuKPCVc4z=%Z zd~~T@p(4ytBi7Ej^OJWNDmm@HZ)G1i<#}{j-x3y8w8?~|Ad?)6nHPCbY>jUNvlhmW zJ=z9Z3p68Wt!y6UG&L^`m__sxsCr#_qD%Husr>`56$HghP<+%8YbhRpEit;Et(}9peA+TyIhD z!+?1+R4@{>wEA>2$OxkNk}Jb4W*KrM`l7TgxsNJ|CIn3d>WE_1C$z^`zyZHQ63qE_ z8fr*)y5_l(Cvt+om{%-eCKp=DE}W2C6aQT#;`_+REj%HAoDw8UqyhH%ZT9m-g$cpB zug;i$Rhlh=*$k%|+hK?5jK2;72Qjt89@O4;s(MYYKdB9|4kTk%@skdc0kaV+T;%y7FmSa?jb*s*)!L11{E=k>^8n&YDWM#GtFX^*ocm?7ya z7<;E2w3_*9`n8P3<~fXZ1ES{=%v0Z^(CjEBexR+l3OxT53oDVKIlwt zP8#gjeY(^dW%ABqv=3y5{FD>J0XA`^ccj@0mNtK4v9b9fsAidSWQ5;^mQ4^M z2ABF*b=3(v-gf`HDz`7+y*nuzW%7`BWawtdIv!ev51nt>F6I&K)%Z3J=)eD_SM3jl za1P9^vug^i1o8x}@$Ht7xR(6X4{nhc-7O`n$chGHN366vU)qTF3=@TOWxTPaq=F~` zpURvEY096SIgiHD*t`B->T^;dvq#g!IkIG2W+p^ON8?y$u%%?|`sw#Wian~UdUm8L zF$0JSbFJfRdXPI$uWkvliYq-X9i)PpaPX>EZKBmsp3C1QPxQ=u!O+$BylU&nav=-C zs^=BSp0XJZcJQ^=zBhtsDm-KxKK}lO*E3moUx(p5GkZf|qY7@oK>w=O4qx12o=T8) z9mP+Gs-wyX8+xSdGXsi-!5=97zRs53jMNXQ=G$nUyb+63@}r0uqRQ0kcJ}FNIqD07uBdYgR}sT9Z;d`u5|OJp7wGi9JOkxIrT$Yds2W zf57xzdHE!Xwz|E&wl{kPt-&ff`B_rUmXPj;LTuHa!E9qGnd(f;lPV~=^ooV0&CA%r zI3XXVLZ;pFo6lv342qRSO0uMpb$q^iCf#mu)u@M@W_r2vrIs6!SG&L7O440H%H}Bt ztxwAx77(zZYQ9dpe=+K);m$qklwRO!(ukdQ=cg6k5x%yZ5Y_mIt4(vz-Kra@2P+C% z#X_ztMK||b)#~{x33w ziUeUxt>(K*(FxK)chZ#4#M*s6I6jAYH9sRUplC{+dcbm8YM894hLj*`uT<&f(vMg{ zJ3&8gOPB-OCyRLI0iDcp=cNSyAT188f0=rZoqblPC9dVY?#tJG$QQr+vD0_uPN3c0 zhoTMYzpw1yHoW3>!^t$|XO!0=(!)zwZ{LeB8i?@j+5Ne}jMuNN%sDhFY= z-;uVq3~a<;#3_2aMX&C}3~*3t@a2f}__JZ&gRTVyP*+tstf@l*fL-o54t4J{?ky+O9rN|!9dV`BVxbmR ziyxR8l`5lx7S$MI%R1K<22wkeEh8r7jHomAQe+QH4=!gNk`lOG{&5wnAo)bfno<-1 z3X3~x_LE-+?b>~krg(Xon=^WT!>e{grS6trfJnjBUtK;5j<<1vcPLok@o>y(UXYCbmv#&L6 z^>AtTJmiq(RU1slrsdsNWVJ`#+$h>Y|7plxq{q`^bDk3c!e&A+6dC4^DYLYICm-2KF=uM!GiHs-}5rOm5`C z`WO1l^|Ks`^K$AkqaZRx!FIR8YTtb{SwpE@5h0E-g!CrghN_-E&-zxNR0@Wf46oXR z2h*v8JdR8(Z0MbLoKPrix$gYmcbLkWy*l$0oo&x|&w13gEl;H~vJVzLM-Zv4`r=*> z$xWf|;dM(JnbczA>$lA1X$?dto#v_e%k(s)NEkm}rU)#S_>y_P-59W()%0#{Orx4e z31pfcJD?4PA8eRn#?}Damv1Tr*3}hO3L~Q{yyf~iU@#$|=)qj*XDM!LDJey1gi$FP z?VIwl|9<{~bU51@LdF?!daT3AOS9ry?Tjon>4a8FabGNjfs6hu#6oDXr5EI7v%hB%e1|5LG~)IWipby1yvo%(q$|<;-Gs@hC@Y4MdSL z;a{Z1w2Le8PbizMiRi2g-c8S!2xxIUbfsTEMNB_`(T(*0z;xA(e;XL-bvw01l6SaC zFuizcHv1Cqm<4S{LKKGqsld!vVH%ChiUg&T9l9{CP9U*2Ojr6$DPoFl1`xkmp;q~j zK*~Z|1Fy{W^dB#u!%GD^GOd<2o1gkf=Lb`|^CDF54NaPzBMpQfK|V}BfyX&_=WN6b^3kjXaaY%89MI|=}ygbKGyTMqhn%kYk0WDS;L|WkS2ZI zg_9FY=FIBI%qSd!(4~_l-Y4l^a)}fTl79f>Q5VwO98K~^y8QJv-9INVkfv-NTiC8H zhX(%OF-rqzG_c3y#UOo7>$sEg=N{E*v`huSZFl+i_a6itSlj5wrBTqCuCNeLa@_@P zi;lFnuNeZ7v%+l}bDR)4Ox260h@mjgQq@#?t<8nkVx02Ao?VG?N-oVR0Eq9%M#QlJ zp`e%tNz*~<+ZRdNSC^|%kwN3aj6k0KL>oQ!t#%@Y)afqQW6uExS6R##WvU)F)p&ok z)6z@SBVw>Tn-p}ksH?cCe^l%MR}yN|`L1IY8G;bih zc_j|kWZl_8YR1U`&-}rh;r!2?wayEX{<)vS zZ5vK}PT&MhcqtrffXt>GBkzjzFLiLVMhwI~VgrHUAqICrxO&oK3}zU$Pj|1;au~K* z-UjzO{(wX^;wg{#&Blb;m?!M+=1KoC0~r2%%VRPs8m^qTzf)`qoq1umvdH=rnB5t! z7%smg>7IsXAlX4VngNeX?0vUm@|+luO}kE>quy~hZz_znUAxmmBqyY!l4J`95q659 zyO1nK`mK6~GgjO>a>v-BZV-nFi8;<=lZ=Fu#8|W$+jc*S07a;v8!yDPie1#ub#A?g z$DKjQ6Wz4>s2(2Bk6Hx6@tagsLa?_Fe-p^MAWQ2bX8{1_(7ojV15|l6ylnUIf zHB)Ex&-ZHPWhs+MJ?~mUs0Rd%0I?Quo*OJj6>$G8bPEhb$+7xBy1O&n+XJAcY9}*~ z^1?X-_t;pjnTFO?uJ^-SmL9vOZDwQ)Ql`yGBE#M#au$15D>$n@042NBHWXymZIexj z9o-651f}u&LpUxe&GF$SVk`T*xu-zB^|(0F|Af>H+mYBc`V73~qVAE}#V(A+U;q_u zV5r>dMH{J+$`>N8=5?aGHwxTRpwKAD$Q_8RVI+r*r^1qC_Rvar!p7eJ{L|@!z=?(_ zUvDkyd?I=VAG|U?YHD`1oe*-wm^AN&9s|lO@nsB`GxV2`uhM{p3%T0CnJP?CP7|Vz)Pu@fp{+s ztm+E3qKg&$ z%HaiJ1Kt%6_I`28x&rD->Wl)@X*dFqk6rA8ZeTj^_i05{WCgOo+KIiC*QIF1h_&`T zg78?i*YR=;ZY zOZAtkkoB**34IG3abp=rkO;4{GD1yvkgkoN_7O4e0Y#f@#5mgqok?lGWq*?7@NP@P zLvHe8n(y!$DTknOm|@LYPtU@+lkMk7-&~3qyHXoc$hzhl zU&nV}B}aB`v6L)>OdIXom)|Ys2InRB-*+3)^ff(dpkC3eABckP=exT#Tr-50%*4du z+K$MeU4lM6|8}=4O3~Y7qdjA8kXHPlw_Nk8wZ;6;XzhZ=!fZk2-b0`0*Sjj*2U9kA z>yjm1!VIeVck~D_q7Az~xH$o6i-I1=h?Rwpwi;!?KGmsPl=1BKb$Z$+^AL|@q7Tx| z)Dbfb(g?jpioz^6luy__70-ayIbC_pmV>S7URn7EWzATs&VR2Ni1)3ts+@Pg0+V6E zrW$pri*`dnzKts05g&X$K#*}Q-(4;Je(q~8Wrctm`);J;Ga)~jPY0eJpNgnPmV4B3 zZ%O!9na|}uQu$M5;FEQ@l}Jg%Prv9ww#Hj&BeE3DCAl}hNFD&GJu0U{abR;Q#=|va)IaIBajZxwS?10s;elx=w>3G!cC_AdZ+o(kYu4oi6u`YwwNwp&@KF{&I}Aq*@)eW8Ux7? zVuj3_Aj2l&I;D=2*VB~G_jo?rECj+ANTGEk*9GLv+&*KP!Fb16S0%2lfir3sJge91 zr;|8MJR(ZDjNQx1QZkxcY$~v8z|V@iq06X(8F!X1Fu&e%q2b_?V_^W8Gr{Z7gvR^k zBRixeItoBV^nfJMFUg*FqXI&~-x>`)GCIk%#v7QiLlh~%!cy`&xvU|4ti~~A{A)$j z`749r5@i|J5yP*hyP0f7c@0q&Z0h@A96vk7)`n3BJ1~{AgLo@NweM@vdJ4-T@I%qz_BO+_+Vf8tr zwO!&ZgCCw>6|Qd=U=9MnQ(VV48IA84w39?d#9;}KJg8tnQB-dUx!h7gF{Dfh+lSfH z5R#r^-lpDN5Gj%5a4`51+@Um+27xzKWTQ`6{WBb@5~fzC!wTthD9H8AJnPPato1Ww zE`m2P6l22LMr%U9f61x$q#@EIF*DXf5Zp}+ptlsqhMtu2;|%_}0in8^kPzr~L0M9} zzRR=Rc@!{&VgA#>WTuIG&!x2c(q>Ng_AW)wTe}=uXI>nfmfJdomYV1_)cOj7Wu6{t zBC6qlt6?N%AH9P1B;Z0ns89LHncgdY@q!@g5 zYNo65vF~j~j{4`I^#`pWaVL{_tVJ@yJbJhQ3UjFOL4!Sh`MFWC&`cwK4KgD7Kmm3Q z52N$l%P3)|=(a=gKq2NJ$1?#0!E{G5X~oD^P-I#7&N;Kn|EBnLvg3^>E2N{Tp4g(6 z9C7SeFg4^hHUbPgu#2aeF znfz{6P(s2~n&9ABS6}LgegK;^$V5HLRb85Y9GHtTiQ`rscOW`&HjnQgkzehRo(1vL z2X1Z6Vh?Nvq_vZ;101onE{Nm>DWP z(3RL#o#|BzC9-y~-Q{l6rTs5M)e}9}JWWTslvjxeZiP!w(76f7f>F zhkIn|9;2Eq1>7Cdwc&uKFP~r883!*I+wL{88It$2kDX{vjX5o1HBd#L(RiQS=OVwY z@V-qNXP-LAxs(NJ>ZWYES`+HFZ9ueVJ)uN&WEyV7Y@^4#;jF#bFNO@DLIa>AF3&!0 zX+Zu#nS|b6V8vM1%Vn((D&zfT>DO%*Vjdl-Y{-;Z(5Fw5g&rF=FGl*LWMdwM9uN51 zou2Y>&!T}8N(HI}WN)N+(Jxa3clFA%ZrjrE9UZ8ReO@R)<67x>oTlEH(p5)G0zjE| ztQ|bk(IXhT8tYH}GVIq)=gnj7%pwc|lmt+l36`3zDCPj^AD3NWi{&1!ZjhG66P1Nj z_0R7>-OJ>%NZkcf;z;8aEZ>!d_%x%5X_B~*JcvQkBG_gsIt(onIQL9BgAEDgv@tK* zgAAs7eM$JClnxcN%>5Xkm_;AYfQz$ABsh(L2VU!n2919>R$s^{8UJ>FCc2Ax(b7hl zUKkJjv4mCOUv>BgzI3YDXc|Yd`c-J$JSefEj8`8mft}UQm!>f@FRO{HFP0-AS`tA{ zrgU&XTp8sWM8E8}kD}-uKNg{kQ zoH=3?FdgNZKnr1j=;U+KAu#%Mw)O8`&=Jke6jF{BCO@6zZpE!GnUY^66-T1U*2|ji z7;MwdG;v^F9maOFj=HV%g#=iIF$C5*rN$G2ChR(NNHAJ6q(m4vIm@BKwV1QQEquwK z4^zp_pbCxgEW~Jla4EB!UwvCCddF}2tPOyy!#e#ka+3TCBW1altOssUzJD+AA!xjpXLF6lC!bq9#czf*5d z%_f?n4(##39tX%bf)P0dUvJrOc%oA9N@yRlUWaKfP*^ufEAq@VG7<;2LmvaK0$`Fl z@*E077)Df|$RLGHEXoFUv(p5!93v|Jp(WVyoXD#{3sC%2050>)H9%NxoE+qy?bD9y zfsO$QWSGCN#=@#eS%>|9J2VfS64b2OZIHyNf(+T#GAMtJOMgtjctPeB5WZY za%*&E<3;%&ONAXc)VzBEV^c<`a9_r23~Rwomsmq6i>r@lH%& zSV7H%wP(0HceJrLD*Lp~38}4|{Upb7&%sNu`9c$HY5X_=iIp=9^XibAOz}`ve^i)~ z({aA*rZnOhWuAkWsV4`oz-vn*e^DB4GDalO8KrmKZ2hWpQ^RVGgBSX<3UWB-W(Uzy z^}r8ZS0QNb5l1hrZLEAkRHg+yzcUqaav*2O=TY!-HJ-doO;!LKvZEMinbJjm;%EKm z4-9HD7YoRm>Z2!oZE5c|gUUc2dc+j{>|3(lPD8Xsu;E391UCl~oT1`;5MC>|IwwMX z7OCQp(y=C}A7z@h35W!#VJ$G}ux9AYtO$nkGX`=y^3Wtkd~j%vry@o6#uIU!c_gHd z?@z^ZRpRZ$fxpZmu_>ZRIL(kwP9c*H!1z8?!@$AWhhPK7dOGU53CkTLI3g$;;@O!# zx8TE0AtaLz;u&hs&6wx|IR?2yk9%a9`Q%cm0JK7sk4^Y25#Z4DpUTvE&yRv$wcQRt z-aTU9A?O@r-q_HyLWntlcT6qm+Mr+c$*|%AII0d8^8+AJi)A;vClpIsR>pq_sShY7fn_-vVPorpT~f&EFO zv$zI`_SA>OXG>8~Hh2-yJc*92b$oQt(a28NG)LmVu|K&b-`xc3HQ?^0k-sF*UoqQx z-m+O>UD(@L2vqQK32TGcggfk>D(b?6DGzK`!h6}f2}nO`bKoSH9#g?bhR(%gMFz(J zj%4GE#W8xjrNGozaawYlwUFa)9|Xi%p!#jqLt{S%(&BXihGFqAqAj798CtLig&)cQ zof?47K}$(^Dr6I+!Lu!p4PJ9;kQw-L16q*?`eCMHXzQpw&{1v<#@4Zu)djUdAz1l1 zL|O?BP|y`CbFd`l@B&V|#F_|pv#z>*|pG?)@rxRJL) z@S33lY*BjH0cAiL{oQ%_-Op=cO0y@cXik*mQqDAUQ2^B&F+K@5;}Sejf5Xy6_{4g4_K_u=IU?p8&OZJ93)3kV_Nx?5 zH06LSc5x78=Hn?N`^@Aruc%c8MTwv*fmqHQwVcf@SWe=Gr&;<(-?HB%Pz36jyF%s$ zA){5W!rFfuL<$g~kYFYN{bDFeto9s?ZMnCKDlb79hvv%fTO1*`YCY|5dn@5utC ztUg+4DufRBJ(Lk^H~^TnCH7S+Q-kSx>WnFyPYF{qA>VBBO>Du0ry6A=+~p(}XYp;x ztHaL;h1OULF_S|~HRhDWUM!o&alnj4d`}I21W7J7;JvuXQbcuxp(wtehJ{y*oc~3; zSjXl~<ehB zMdrId-U;u6(9E|#g~HTw^-Gt%`kw91&Ie>pB1G{>$CA&_GJgNDbghvcv@B@%h(y%}bp#x2kS8GqP!Fgy zq7?)clPEW`E3cc)Vrri@Mjcr;R=yQg;546#89>6i#7u6zgj#`d>0hNHj~Oa~ID23t zA=lKGJdJ7rt?mQn9s7YB+Dds$GlO87g+RS~=z4%meF$QphnRRnCrhkr4yqqczhl>M zwL#3d^0cATSyO2STC<*1sfd&`lNITx?G@MB#P&7&Mgmwh45|QQZdC@I2aZ5+}Dx6o9-3!Ms@!(&{t%otycfh`$3FJ!G7kF{4eO-DW}KT{fE{}oSg zpT3p4sU7}ne-SwWRNpf0Djl%1Es#!22ldaArIw*^y%|)g+=<~lD6c>SX_f5h&uanJ-o^sHi^8}Zx3k|$6 z5zR2Hg8+J5&}JA5(=5D1v|$(&EEsY6Gl47-I|?V@oGjru*rFBLcow0W*+n5bm};QH zo}M7R3ugvHFjGw>&Y1T1*hSWDO5@OnSjMV*~a>XBqhu%<%;4 zL*L&6W3f-d9x<*=Ijf0nLoKN8UXUdqaKtUa6~UoTe*6bDct8^Kb}njYc}zz4F>8lF`W4Lu8vgA77C zV!Q#cVAj#WQm38#fAklq(e_a^!9Z03YRu+Plg@m^SPxJ~$brZR982(VLd&|@U>2y_ z$0yzwMAT<@(q5Hh9_#2liUeLN?Dp|)SUhY#vtrt{g73q`X0*~ zw9{EQYw=9xnss}fQn%DSTs_D3+S69jpK}{Oxy5f^JLaemys#v@@*T7?7cCHiJ0q%` zof&g0EO-YA9#7~pY%LGm9rJ9*Je2+Q$Kh4U&*3c{rw(#Y^ibnNd!&#~5SLZXwYaUm z61#;yfi(}fupD^$NJxymS%9#-vO6K-R4>VV1RYT6vx>91BNX^*@A|%O z8sb#ql}30oN8`|UK+qj0?kWe^H-*GrHAFyr;fdWbxg6QkF|n7IlNkPrfi+Z&9yKRV zv~|>O0Jrfr}sC<~!29wTgBSjuYw8zk0 zI!Ny$XTGJq4uclsZ;-0t5-E>pkX}$?!!%3`S)N`qg(mn|Qtvw0(If8XQsiMNr45Wu zC05jeN|pksw%sC%_{WiW*=7N%#bY?+_q#CoK;(I)4*0;|0#=V*0dP7Ov!Efw*`+$C zFbIoRmh`Ae5YQrAbVS)EiDW;_`ni%YC4I5xZ2XgJ9YfC})P|iS1`FZ_kWYXNv<#;{ zP|$E3PNyqHV8s1{?7;QlB_!GbV6>I`g!hYbFTls)+~@1q!qX86mG9I*GA^2qha=K4 z-7$@3&<}@+{pQOy9$qz&k1A6R^lpH$sfo#(@Cl&)r+f65$e^|a>`bO|Y~fD9HSfs@ zP_-xN&=Yve){aAL zY(wbrg(vL-v;%-=X31eCJi1WjoOp<#BipcsiZLCFJqZf1o9&*-qh@WQV0z|jODxhhaU(6B8)<9z&R!{GX(RnYV1Shf#m%0eov`NNPkCTX zrk24u?uy$4k6CyLO7Y0r_1Rdx+Jq&W=@?=e`gP!>*s zWbh*GlX(0$23@Boi8!(YzOT-F75tdl? zx1_i3U#r+1i)~h2z%o8UL(?>VJ3a{0NJI9ICVyJkMZnCmh#DapNe?iI*pj>v?8;#AJtwd>smpS$a~=$TPdwFkh=+ zW^_t-Fh!LX?SBW|f;%&2SjgjRgFnP!r@xgFwo72m2-Mkr-0Z?>yfvE>xQLpXQQz8_ z@qJ&%YJ4p}Z|j6tlNu~D+*ok-L5gdvwTb`=YU=0N9!UpnY2y=m{_?;EJ?x(=l>v2o zD{pLVHU!gWCDuy@7dD|%&0b=qn+2{!I)Isf12bb2%K!%uKs)tq^<@q7Tm3noSxe@+FzN_6!*vZh<}O74x&b4Hkq< z2v&yA0U**mS5Ag6q>x7#-Q1;LzD-Jk{0=@i&xLXrr2G@Gmmf8KZHxz9*|ld}gcja! zhv8x2Pb+l*mD6^y#PI;zH$PB4=&)o<|VPaK|R z;8=^2K09}o=Cccb2L-x=j|d;Id0~AuElgl zTg!TS6=3TIz9`x~omkq@-m}}Ob%qKy&ns7O8F%Q?q^y7=X^^FK%z6`NSH6eQ7hS<0 z37~aeGGm5A?&df-_!+c43gku?=fF=-CjoOMw8X*3EFcL^24p7$d2);Cv~h^88YMK! z7zCN?+7<&i+kwH5R{Yb^9h;$k0a5WEjBA^7mNvmShdAppZu-qX?503sHiEMFS03v4 z9qZS`Pnv7Nq`5kAI?bCsDl&Kwh1KJ!>aZI(rH2z47PvpZV104A&XB16V>1xt1G~9N zogH;ts6Ik{BTcRkG>Pc^!z?bc!uxg-AfYA#tB`+KLSpvE)+&yg| zC&+oGzSo2g^{Qh##t>UFf5JuzOyi2wF3i$UaT?;HBSUELQ1F!rxy_^dj+z9(IgdQC z$K3VPynnhtAD+qp%;CB&182E&0-P)Q7QN|WsB$474h^YcyW;8(O{8kD02=yRAjU&= zUFIt?wldByxjzO_A572LwAKxKxabA;V}u_2NJ{wLh=5aomIyakyheX5H{gmsMd2WZ zcQIW+MCzaL{17tg%-sS(!?0lh-(V1TB?2a~22P%J{(d4XWZ*{?99P-YYeaES3{Gje zu7TZyD3%}~O|iM=nfCrZqs=uIYstoOReI$@vuSN@y9H>kKhN%nbW1U6Aloz?k*9#9 zI7t8ESY-YdbFZ}c&-@qxIKEUTSR{UXt+o~A^G`K^9ZI&*uRPaP-%V=!d^(cZmE%35 zQGo^JV<`tCQ08K+Y#H_fo&UQqEzIFMo~b!NOqV|gum}DlKEptg(_OC$H9Y|~AM-41 zl+Az%-s|mrQb!q=F8sb24;w)$h@Q3rNc3^ozky`#DMddZ7ym{|dJKD&o4HKamb6Fz z?YV9cNSyJ{vO;>wfe|_3_hnBPi#04LoC2R>@Aw(Naxg;;)(S|d(8IAW$45nDzJpYg z>-$5ohsG>XZajpq!*k|?iWJqp_=7_QFek4vFSo$(!#&vh*ILY zkehw3ICjZ)1zi;~VwTJxb-8^g(zQ1j8HMk4@E-eI0(tMWX#RuO;l zql}?)=({Q_LGUm(Z&YdfLVA638F*^Q8_z~ZBYWO)I={Xc#312i;^n4}&xtYb=bS=- zTDStW1{3}GI5aqF2VdF+^t=wZX2oGI*GJicZdwmOaz1`F;r z4o@?bQ7#<3A_da?mrAA|UQeZj?Kmd)@J?biz@az<+6|AyJnC|Uy<=Ss7F0O*fb>P2 z$e(5(huSulEOjtQFn{=B%iAS;@msWIVj}Ix^JSyU2me6h4bW^Ao!=JwE3l4S#bSe5 zOceNV!uNVXNntwK1jM@)raK6IHU>StgY}}#AMTRTkd@yww#dK3YDk!8Z>Bc1S1j-r z0W?%6<>-}SvAW)=yJo{Jv;k1%%%Z~(%6sTWW8zIS8qL94dIcj@A!aZk>e-*=L^$j= z{3k-czhiVpEznl(&tzuvmbaFE13O8vN2cX? zMuu;QboX{{=4ewZ$=1IH-I}KU#`Vtg^TG4s6X8w<3*=e@S^^{^pc8Kd;q0;e$XRs?!-uPZfB7&n07?`>mjYh|1Kc+va%PcMo#3nRA^f!RCa-p=Q zkKO{63q4v*Za%uwBvyBS3O3BM2vb6n%l0UXrqH9RA)TnPoJUkLNf5{G|LfNP7P z#JkX=3d8XH&Aq9StAD|g+cPi|O~mcz?7-r|^gf*%2vWZ9ULwr^ zi#C(tdl=tQMX_D3a@11*rwS_e(87lH_Y4fGkArYwbw0oM1Z$UZp73Irb`(oltO`hX z#X6z5WI|&g)mDLCRou^zmjbM_>;&3!Amr>7^IkWJcq{&J=?J*glD8X!!Vz8s(*)sT z2fZY|6%mb%_N{ncL;bM3<%ZFLil5vxjs(`HI8Pd=0I;X4HQB~ID+B6G;wGIQIbPH- zNx)O|I>9(ah-10f%WHxrXBQA?X1N~j}G+ z0i*yARtiFHczlku*so^&mH$E4mj^<*w*Nn4cM_)!m8E4YE!KoAQ9=_XZH{Cqgsj;j zV&pBA)*)+_a?)liWsi|c6QPxiWr`^4#IbL`>wccWdB5N9@A>CFZ)Tpk@9Vyn&-J;k z`@X{y$+&f~*z-!j4PXGRcq27146 z^c)y$@IjbhnEkiNw1EcDC9u9XI74`KUqRQYdXae1Zd#!b{Y<8D+efkz;t{D8^9DBz z9S}%AAlcck(Hl?DOLa;{?q7jr(OI-=LH%}CDGqUbWZ4d1z*hfFqQH3|uicz%&n(aVz8AV){bjh7?VJ{4BhMhtP(*jZE9lDex*%1o zJy~ozun$2`2OEvva|HBcYa$(wZ})#WT$NIL^P9ec493@UCCoE54O9#n`oCY2T%;`& z3|kK&i9?w$CwJD@K!lvc%nzn*>8Z)jp~Vre>Ndh_fXf6W$F(CMP8(kJub}tyHdIwX zq`I)g(B6&O6L1v8*9k3uDUKK>RSx}4*^U_Bi9RVEv_PYpjKan666K9^rj`mF`2U;0 z)XBNaL)Qnc86;9yzJ`GZdAq;nmPG&B|6!mQo4yqqZdY?F>m&b+suKr7OM$=KN{2S)b*_p;l2IV$%Yq|FvLFexC( z_wm_LVKZ0vIDZrKwA$9l+A{b_y4}1IO5()C|G~G=*A^m{gU`-RozkI-ulu#AjkxN3 zn`McCD1yELXt7uiKpYx}RugnScFk=yN%^H~3jaGUNrfm02AW&NeEyjSmDo0NC&dQh zzZ>n==iS8|c8O{{+)}VsS>FOU&?>B{9?}Y#Ks?JAN}P8bcZ!cPp?~LpP%Kyu?`z4h z)d?o}_qOhNf@hEcYlwsa*j8w;`be(lWXv3j1G6&$=@ipQ;&JtTRos$EGJ%R{4s0U* zg#QYF!g_U7$$xVySe`RXP#NM2XOyy#62pgAQRX?YYtSb>D4ut&|92#ZamVs{z@2PZ zP7On-cP)2a*fux#66@3~k%Cbxf#y3&bEL&W^hzY(6JAING>7|qBlUJ*+q6#ID_BL7 zf$iwmSdsG@Pyt~t!C@Jp0rBBJ@Mm~>=n&_W956mG%GKPsnm72NSB^fqhm;*XbfBjG zZ)TD%e2an!RX6FLPEB(RRz!^|qlld+9yWE(I?_E3N1P+%+;9`h=r(UKp*KPGx~Y+X zA4~@J;e*Ydvk*Erq?iAbJHhNCL>FV+Pbl9>PxUPzaDa>QRGA|r^$@%wKO&>Bo(MB&w)q<*)Uqlz#}9W zy59Uxw?ahx2tSR&Tnk?P;lw#i8+FOv6rxkBWiYM7$R%QviF1P0Cz@a$0yagPUpe)U ze_qD((5WTEs}AGRG2<*{>%1!!{{N69*w2d^Mp9v)G#4*p3`1)putHt=*fuWvtyx7b<7-)jPhXDC_&Q@O^ILvpBhR6PS^Fnu{oj#QP zz({ZjnLt?veu}kqemz6+Ae0GQSn+&av~Ck&#X>JD$qSZKug2gCH!?IwIF3320D#Oi z_?oQ{r`}k%-wAX;73z3Ke0cB%_llw>bz ziWxpQBJ06UpZFFcs=Uf6D^OnyLcEj+eyVF}_?)XMfE3P>)*4N%0RaZd5~<e{Eq?-Z1O7Pp}I=Z^8vmY>PSeTv2L65bau}F z2ayP+IRfT;z2hD&M%L(^j>N)FoBus=L~?C08`$+fkOtOsaf65l4_~{zhu#wII>?-F zAd914o1^>atAHe?07;DSg*_sP=X?m5M>Svp1YEAn0Zv>Gq~>!?VZ_XXAK)+q!gRvp z4XnsT0vO5~C}NgYnw_8Bv1b5*LG{0^WFur^@I6fA*PPO#Iu)GZLx$u68V_(9 z;9>ElshcfS6KyOplcB?X@){l!dnedccSaWLQ?WDl*6fz9KQglDS{rhnoR#0ecHlL) zVEz81DosvoLUgI|y5R~_KGucm#*n|>VmgN`qMcMOErc1lU6?aM;qCh^>M0@n zxQr&Om?Ba~2;tk=>XHkiNt$b<8$$|iki=c2l&&B%Q-3+~>^$+!27dJj1-txy8Qd}xi;F)I;65&5=yUk|>9Y&XkS2BlzHF)69<+g%_)Aa^ ze`_GgxT7*p8f^dC=Vd=!Xe)6Sw|hJa2^2j&Y3W%tQ5#|1Ul*BpcdWK0{&~2mI8R#W z8L6^8t2ZKEh`uwITfV_-PZ4DCFUTg+r1Gh2{Hw1@DcgF-Iz5xnb{iwczdT09-8NC zg>)O|t}eAl6~oZeVJ-#dT~4uWW>xLhQ7e}C8B^6Ll6cyNx7}nV+@|urnazR^Wxw6l zNivo%a}+KQsXU4ZTF40mUIHNSf}12wRmjE&IayvlhK$4NpSkhIJpnQ0uE^6h=QaY6 z|D-n}XdQe49!*T|>6CITNprg=t;D5ky=4+_!PJjRmIiyJ$M+J{*qUQF=QiUq(jgiE z!ZQl0AFe?4IP^$dI0cIK2D={HokG4?ZpG5`Glct-ZsO=beGWg{(GrRh14#s`8{o_o2@~ zdbg^Nc7%Z`H^%aL_7C)j=P!t7v8ri0xYuY@S`DNr#ZTCx-f%FU zvS$jB3N{GNjlAc;ev82j>GLG1-qj305ZmmstrDRqf;rygvfCH3yks{`gYx0i=gJH| zPfvTcsDJu~x4Gm^xUt~fW%%#X_o(^#C43H7Py+SSsY7Hl__Ngmy5jVZz|!f!W#Rcb zCK{AI4(Q+g=MBZG{?q5cLn1kv2SnPM9EbF?`ODBJKzGRC^Motx`8;FY^)}u;>si0- z$E)!a4fqo^2?Z0==7>CLV8G*&L3p%D17r_&xDGYpdJM+7fnz(G%IIB8SV-xC?8i(d z8JO&&x3c8TqN?!-kv?CqxBB?$^TzIo161=6@GeHPQoVfCirVH&YyUAW2TC}~ot3)+ zzX7CS%bYabj_kL%hxFh9DNTo5cw*w)^QCAapu^&@Ad?B@Rsny*^0&zh!oSh~Glw+o z(h`caOa`_>N10u8amIOf-D-~bZbOztw-0t`4`y3 z3(TIp>Dso0^?NJ1&<)%o$Ml7(D>F(LY}z3}mv&^wq=BCs$_|}D+V!tFuYCUr^40uZ zbmx9pbsWxskhy(h+h3SSks7e@e2EfVSh(9rpYPEz0~N$Qvvcb+Wasc&^hJjTQL6hy zCg|Vv=78es7j;$5yw@P7p}cv{+5=Q)4R0wI7~Ua~ffi1u3!O9$CIGpbEGxF0S%THQ-}Hb*G*D&h(C?VumU)B`G9ylCov^D+NdsL=3HM8CeATSC@QM%VozRNq5QU%k_D1L`w!rO?J)*S z5e-!=C!$n6pxE@un-l+hi5JQHre&jr&g?Ud!-ql@beTAc_r-X^oAwMuEmm&4HXTX` z1(UcRL9Tb#tGm;B~0!$OJQZ*vL9ngWuEBg_Rl5gR6Y2}N3sUR z<`F3^;JO(4D@HXKzK-0A)jCX*tF~S*`xrasT>)OdkDDj2^Lu9OXL|uI=Sk&RBLs38 z>a}PPw`mTG7vehDZ^oNYb2G4;-LoUv;A||iEq1R?dp>V?%lC8 zINrT*ngVkPZM%gqYL3R7k7mp7wr(bm*$9fi3opTCfJr=zAS1W%H%65^%8v0h47}0) z3=avVbJY#H#b)qG4yb=b`O@619i*R(Z|wo|Xt)pKo*u9aP7H-L*yX3(fxeGT%;S!- z2M-?QlKZ2eWP|kT$L-a`j|+dg1`Fwc+)zLewdl?*nZPV$kvV4bLpI!PZSAnxE$9vi zeKo_8DKat}RqUjmj4Qf9*P!VK@JBOUxj}j`d^k~$82((oOAmGF>RJ!2Ms`ojo=tfv zAp3!b{|%TVrtYeURx#(={4avi{T~5P9|Ew~T5hZ-1p?c8Q(KE@3yKZih|sfk&U29| z;6HW`Y!!Y}@z<>9#{$})hfnZfapw`&$u5RiIHo9s4UgyEy4ZbbK<%O!^0!z})tr{V zaCIIXWp;v+oT4Z)L;eDL*7@Mh6cJNJpUmM8aho^_xmV9-?xBfqvW$y(UQjv@w<qR$6+Ui}DOBckE78LWO$Nj&@`B5s^I$=h1-&l;0L-rT)`?ssdGu61nhS?NkJ=Fb zCVaiWd~`Qxn7W?~4?RT1L;DN?o6gLUt}FqhCGD~dS8%?wCW?QXMQxG+FJ6vGVG^P# zy-U6<`>~Oe2LJ2pZ!#j>ar!Uep@_Ey7;cOXz`(gmOmA^%&7_0NNw81Mm^R6#Suw zjmEV<1bhfztGmqH1O76Wv)mGY%q_QZ>Vrp#MyWQ4P-hWPmRs9dVgu$wL;GsuzMgC&b4;x{L>7rx(VetLe z^WWbKj^Ams+r)NABNQ12Ar)W~lZHJuZ@P-J(VP!RU2ZfpL*BmB0y$w#wYk6{ym!9^ z9Cs)OeW6BUTL7!-HW8*l-#T&K;mdHv_CM6w#Y6k}sEomVoi0VVXVly=|9#W_kXW~@ z2iOEi+I1FP+e=3s$;TnH=7|M@>3280wWNs=tMz79#pxuMt`o`NXp|d4=#Z)6kDVDH z>%k;3EXRLCxi7NimnQjP)|TkYZgUMzRPMTer6LGkvGq~#fM?>(edzm?sd-^qrGrFv z6&JR^&aO4NST|vF)$#D`@8cnO_P!`3D*6%Unv?ID|K$s8urhn zB#%+f1Am35=f)|D2aXfrT--jfbbC>yEPj7a)FYMSGXL8k@O!Wwy5tbI5gd;4dAMRW zJ!n`GYN86!z~&Fx7yWDK|18f>qGrh}(FlC(B{b*UdTtEm^sd42(KX~+*lc3A9yZb5 zlB2MsP1^#iKOxm=gj9v~*Cgzu#UJVv$UKk+T*`~TPEl%RlbW1}ED-Q(FQell;JjaL z(X(5FN_~4_*bQoPRuTkO@`yZR3VlwO2LMYB=1KS6CEjZ%l9W-VbpF9#yD(*!Q;U00 zy8HVq{^M`vKv`TtdKOF?(wT{WA<+h(O@eWkAn9C>nKowfXrEf5^q4=rZ5w>qZspv3 zO#ztS+im^aY~VR=Wo3DQu82udx!ENT9zm-W)mYi1*Z^=nYA$8@z~D92IWniN+Y*b} z-F@(AkQ}M`Q`o*)W{c;e#t&W4O9r-aQ5mYo3f3YsFEmH*)-;;``VDLqIHon= z&Qa#9Cs*h^ag!}vQK_gg?Rh}pKCtJB_W0&UNB$AZx=2rJn6!I98*fIzzju8B{c ze>@E~`R@Rj3jO1Y@)tw=GZyrRbaW88BKVrbhB?_U0YHknY>`I>Wa%|a^z!%lfnZdX zNj6%4DDQqh z@#?p5pUQIT1872t@`2IQ56$XM`gc<=JGYWLF zZoyVh3*5u6Bbhev!}zK0v+%+670}x%5F?%szR0BxTENLTniVI=x>u`7k>?(ub%N~n^ z29X>`h=6bD!qs2OLgA8`Cs?}U>hdrBub_5hdTUcGOzq2mP3<~_T)>k&2v16bKO3?m zqqnhxVsKoQ=Q4G+YUbcs$$+o$vrG|_bqzO|quLk--U1RHMDcl&7MEP$`cwjG`Nz^k6Yp;Ly-p+`n^J5;$ z(ZagiISV@%V-e{9<?T5MieS3=!lI&EEMCIE} z1-~OWL_GxJZMwor`rH!E%Qi?RUXPSkrt&kQ0F?$XS-8eXJ?Q zx+n^>TYT%;*Q4vtY3Qk@ib8Wh5$5aaOUi5_poqq z!hW>SjQ-nUl@ky>fMS_-q{Gm~KG}ED;qp4J0x4-C$GnLJtHb*yIRs1ayKLigduS!S zmj;YPvE+T=dQeqKf}=Oh|ct z@w?^6H(a|9K4_Oncv^NM`2BzGa_?z9WjGcx)!~8#`~fX96B+nYc|>s{)_VX+f8eiY zQLD-HektRZack&(frT&lKnBTx-07ubS30@C%cyg51a9HK+Z$ncsP!B@@3~u7mnmOf@H?xHDyJ)?hUB|EEB)4zaw3FM z;G>M}(hzi)R&Ut25LZ17tp0}o4{&bVw zq$3d``z)gC5g;6OgZYe}AsqgwuI1J}%V+UaH6!iA0XBQNP~ zQ$X)>2s!#{KpDyHX`m0?=~;Um?W#m!zgje@Vj&o&8tlx(Umd`Sqm#*%!SPdPETZ#4 z(-^$;ok+YWsZGy<{kA}u>5#`DGbxea#pSChifqhPutBxL64U+!Snk}FI5=K_hYa0{uvXqhSDFK$-@t#laU;d-!jiM`9QpK$h>w6mlZ< z)FknkWp8*JNzRVOhChSJHl_Vrvbo~FJCn&{K^D;(Pe|;bFKcfAQ##z90N$$NuPiI& znh0QLB%_Js_3DjW-<}tQQ7C}gMFk(=vXhHhtdq$hmWBzRY)xdOblKq6WpEIFbmu;d zy(|{wU^i9Qs+W5@o|_$j{0t(qIcm1EnH&hdIgUb)3H-K>+TDMYxKY==WCY(r@6_p;={G6EmUVr39XHa=SIOMPH-Z%<;;VRB$5 z#J210N;so|uiZ{?InD7Dx+sjXL6G~r8KkJJ7TBrFx<&*gx_Zg3Cq0)2fSmaP04)6> z;FAnte`q*E%hm!h&H0nr<^OU&D(jYnG*%2_3eT%&HB1_0SU%kR@et;$xhljh9B1k9tLukS&kriK7vb+UvOH=Kjr^f1n;@rCu6 zM69bI^#Pt;{4bxzI`vM*&iK~nqgL=Lx6he8ty#DR-^7}tKzV~#&W?2I{B$Wk(h{0D zOA~@aO#9u%^#5d;0F-Qg{moar+nyFVA9f~7ffAr>l`j_-&v&%CypaornN|qr291vP z4Bop77@wX+gl(3Jdf?ArWCk-!UJUG*ve1itd@;5kKpKE+ytV@98c;cv$P4J2V8vlk zz~(#HeT22Vw#bv}9*7WRMgFf#a7$1joQw7s3K~5$B50(4cZ5C7(!yLU44^>_WLWea zSriLP$?rOlKQ%k+xY481lbcWx=cRn$RZ1;M^Yw9}lkt4Zexig;aKix|fj*!fcmnnzDaUsA*Bt#A5`)>bU1m;i>vq~-(!Nqt4Q7E+t%;^; z`qqFbhp)?iJX?xQI8E)Xc9o$@+CM#>g5 zsM8A6$VK850qQ-@){Qe@W#AiP!S66gITjvd%pZ~sNR}>F{8awZ`d_|`dhgk^@aw=o z{J-JQJ?AJ4O}#6eC)5<@av_o@Ky&JI3m8DdWqHXH#}n%W32Rp#ZGn}t%;WW^f= zdVBLu%*_hVuM{{r>A%64+aciUC@mXst5}JIP`&T$Zw|@FYFP=(wTW1+oc_yATqsk6 zh$>HV8*B7Q{=E8KEKYxcH9++QUne_P&{J+G=~*-A=a={MHAr*@8FgJ6*vL0c8fk%# ztmH`5;Ap$39pp_~k^DK-UfUp45Zauvu&o4-X&g$M+G`oAHweDbPL{N?v~+m`S3}cg z|JyH|2g!1(82`^Uh-op1Z`+TyYJd_L40hjOZrFnPAD4>IkB`w76o$FiQ>ObGx$(LY z@GrB}WY5bhJU#S5@RtsD6`)cq#+C(J05QZ`>N;_GT_{1lSaF;k*%A+9@ihW}{&2(F z{S++EURU|opYr?dpZ?Ct)*i&`QbceEMhSm<_Ao`@S`_d%pk5V1?j)V(R)SKVQxc3L zf-Gv`Ygnu(B7vkDjOZ|!&I|*U5_TGeiT4oS>{N+W^V$etk}@y@D+-}aQIKv_ z-S($^4lhdh{PxbA!?85v`V!7Wl#jarUefY;>YsVA7j$JwUbEAX^cg;?MUC)Z(7f28?*UAU)r;>jdtKMYA-(r+v^!heZY2BX|m1%^ANc z8h`Vro13EDJ{;kq%KbR^<=UyWBrg^|=qOG~VGoA{;bQ3oFKoiat^^-{1Hn&tu|{{0 zW<{QI&A-?{Wnez50hOGUEQp~lR4w3T`))n`UV8H z%fng>J@A+Sw~Jt1Eiox5WPc10AT_*r1{uuAZ2D3^R8dEa-INJhLp^Dwp57Y)C&kEM z$uBc`$^c|-8quIHVo!n?mA4SDXSF`x3C9V~KqYS?OFo-S8nuqhIRApAeg{@~=vfD% z6s=K+nk~WhoC`dpr1T$mEg&Oy@u>&9bF-Ms^Uq9nUiEoLzm2;$)2l=X8FkOblZ4U@ zZv#PPY1m{jKq1S8;T4~@e0pA1A0Igs8j`hHxuzD9oT6z^Hh6k2LM{^3M5tuAkS9rJ zVJ9`Day@JMI@7vc-v%bf$p`O7>tIPVyjBax1%upTRxO*S4O2`zthlUmn12-KM zm;|S`UK^ScX9tAB>UvMHHxUw=a8x8|vxBDwECaj|PHb97V!yl040$y^COq3F=5+Z#|&Pwx%oo>qEF?B|Q=i*USv`s(OQ3Br)2 zQX>-(EoLcsVH}`zO7Wc|pmLisimX9x!RVezttjoiQDSjc7w8nvER}q8 zKuKDY%of*)a)XV8@c2`aTBY2y;|Di-ySwpu_X@g(%iavk7g?1%Yg40%jb^5HRYrRK$ z2IW!!@6a6xxl@}_rTu36?txIaWMqM|}?X?EWP@zic`XfR4BA^gEO-e|GNu zI^G#eV&)E&^?MFgpshudE6P6tD05?vdl!|KqH^0A&^4a68CvU?){oaO4g`?@|L z1HsBh=m9F{tA>7Uy9|-Vllj0IN0sd3(tHx+0uhfvbehraZ&7l5I#~;Qph6NS zyXzXy95N^<`)jh&)_Vd#?u6%*-hBYmN|VWx z%mClKXl!gixC|FNk0v3?}SCUvi?WON(K)%WGB4 zV$-g1@0*`*dn2Dt6tRf~(duv0K9tvw&?>5b+HrS`z4&?v3;DS3?2KyUZC}gew+DoNc{yJ`8q>trquC2<;~scn#QpE=Z) zm*WoD@;a<-TGKAJ5?HMqR9{&af`efpgP>wUeZYa1_9fS;7lF;v12s#akjzl90NNXv zlW^`fyAic4rT#YkEt5AUTK+|0v+hGWE@q?d=O@c;1~nLD-dMmtem=Kfl*I$=?t}50 zUL)MPT`Lsf*k6tY9EJcbXZbpHOT;gmvq?5^DnSZyM~nR(iauhx<2mRw=_q)?HfyrQAWG9Gd#w-S+i+O^=pS`oJ329 zJ&j_1=-M4Z!R=gSxrA920h*f2xQh=(f3~K{!KEIwvC7PY*`a;O;y+WbrM(+B2M4Ra zggD2GwO>faXQPL4;*i5rOT9=ge|sH?TUR5(4QZk9OF>J^x7EbC&_az)s+WAeX6Wlw z>pt5HU}?R~@kc4AlOUA2Rs44vS(ECzC`S%X#|x%;Gi{q*>a1ZU!y>bsiNn5F`)drr z$$LDtGQIllBfT&n<>r%%b;kSu7O~$WWFYimJ&yJjYj({^0I5atnMoPmMXbig#R9h zO_4DpyXA&}Bzx7_#@aYXI9r&i5lB&8_x6M$L6Tt8rsjtt$s@GX<8p1^?AG%Qd!_5j z7T)Bc+ja#P_CBoFyAq*;HLHn%Hq~+NS-^j3l@euoYhy;|9cpt!$eVT*MvzP0>e@B; zdoLGOcdwc{r^ebXMY|>D_-rYmR#?hWMJ{1GS*}|y*t4MZZ{G?z!1-;aLi+schC!)T za85W(@rF;aWEij_N;^olo;ngo@D)jc)&I}clL`+yZxuEkcc;SYt216k>?Pzhdc@H3 zU6c;xY(mnNi13Tz4HfZuUg@OC2Q_*dgFbiL%8s>Ik$$E!-ye6+gKi?{rNkM3!EXx% z?tiU)m1km3uLp^Bf&`M=ZQ&NU|6D!2w7jJ@!ICy}Wxy@qQU9eU3G0bt2{6`z>K)V( z$rdXt(u&5KEX-v z!RKHSTcw0O?tBsr>E6Z@w8cj;zw;eh+`gzIqK-e3IW}Oumxr-BxMAy`V*c)MF~bad zU-W1D%IpOlx5E@quW6(QPP9DfpZ8_N^CLF=@X_G4dP%9%H^4Oj5c^BHF-g+|Q;sKWXr6-4XetT4Vr;6+| za*ll*`gwu;1s#NkdL}_;?4GzLeZoVL4@@m+u;CeR_UWlAaw`)yzSzJ`&|t~VPdEo6 zhB|1A^Gpo9bI!H7K$`v-pc!{LBK&KB=3la7p_Gta16wb-e>2g!!0N93n;Z$pu;-7* zIdD$4#;96u(vw}M+CTNWLFITt^JAY3NmJyJBY$k>r$s-X6u&<{wGk{kl`(CFb1jpC zKk|C2PNls&t;kp80fy~S+n7?;LgDp4vF>cPR$6+XLIYn*N5q|s<4D->q#oD!t!>k# zVWPT-JLt6M)P5oT2*0d$WYLuyH?ySRsPokK#2K4xr)cIAk^HoGjY~fNy6hg->p~ms zt*@P7vSoT&xAWKr`@ciS2bVBRXx(689HmP20KZXLQNEE8uXg`^F|4Ld^yf7BhTrjd z;v)QJHEO99G1iBBkQdx%oXUhy@vIDSELZLkw18e36o`tY-M{QtnS2c2zS(|wab{|P z=v6o$(z8@F$-}4kIv@H?P-GKxVp3lE8kFhPd?(aRRF~niBJ-uD6{$z4nRy>$hFxu) z;KDGqWa0$c>C4_m{=Zf;ZiEi(0vh0|Zz9TQFeG87iQ zBT(U`xsXxPR#;2dvQ3Wl;JmIygj-fW!J7YRxOpz?^c1D~J$JLec4LP0D;U+&^3aQD zaMadDVS)0j5_0@ib=QjSG8Gi1w1S;iiP+_ft_c_%a$Y3OcQ(IB;ceH42sMxcJeqvW zR;%WnXSoYRNkMRpXx;mXBEyIn?ff=s5VY}7Iag5ArNQX6)g;}&n5ax1BWyB|HnZD% z%_3@&)df~=Hf2-&+R-(w%N#eOQ<~9Zd>mqdexX8;c{J3qqsY{&fj{4F2ZM*@QsCF> z@rS5=328Iu@Yu;47X=z_NE;;%C5eZ?*cIV~x!~)3^p=e~*o^M?wT9iTCfqIUGK`s} zj((i;NU^Kn0IpFy=8Uq3ValUlxv@Cs4ZsGe!APvn4_wzFbHa5=$6ugIj%qe$I2{{( z1=b=nW}$Ob$}S~2Px?z+ZMN~fKn3j3Q(@1+>kj*(Z$@Yk6Y;9nxqrhT?jrS!{9EXJ zp)A&q*r@%arZAIFt8Z=+Q8S{rM9cEda1CE1kM1&~q#p}-rm(2QWMIzO8BjP3{(Gtk@}5}0p8S_Fl@ry!dLYl`5;g7!y$_STVTs?1nCq_t9nA3}iW z9Xk;?m3J|B-J(pTeCwg{{UZ-CsXsx{o^q~j32|Kmk;l^uN&wt=L0Pe}LBPhTAgC~Iy&J1XFz?uoyM^=mgCvuZq}B$)am#@(jr zVSNgD%q}tP>I968P_DHER+wZytS`HK&u;LC4b8Mz>P6lTujS#Vum~@?voi&<*0Rtl zAvgPC55QN+_3?`LKSqF408Hf|%LVUOux)J;<(3?wwHqNfZ^apMJsR?nQ&Ydn%hoR{ zVf$m67tRSxpV^&IAWN7S=9~OMLipQZ9uz<#$2gG$^-FXM_x^iPq=+bK9@on5q6I0m>XBh{C zl7iz8)#!tBfL0QwO=?^6caj+0!Z#I2QoNh8I`SS2tf= z1?XvzJOk&m6OW;#Ze{<+2dxbMbm8HXSvaDs+pfe6%2!Wd+EA;(M)C2g?mTYXe}Ne}Pi|^>;;F#jfM3yyMFq1DabC-^IKGC3Wf{_wTWyt&VTX@@eQlU|ddh`% zDo^ZZLB#vxx^SU4R_D)wNndyH1cyz$KYr%p=U2!9f?i34-@B6$V{JVdpjlAeZ8vc) zAFKd>${gQre4GEc!7G+8T~L<<-NqM&Zk?E7yDjB@acb^_oCfG@US+$Go+KMchF10M~b~_)(@(AS{bA8>va}aJIHrR z9!2yGM9jS|pZ}vb3sldiUNo~olqKKn*K^o6+2Px1jvCOdV9K@K2Jdd~v4F)qAk_2z znE+MP`Jnj-7@ACBPNsgPuHk#|l65MCNVPm*{xWb9zNeR7V@7{bp7X0b%=pnJgHZUs zDns>rDQEhls+aukGbz#6o){ZiDnw1n3#NXHakqQ}q54!WKU}Uht6_>9&yA*EvoI0T z0~e$QX#g{%w0#xEEp$*r2YRSV8fF7)ATTc@1*!Ywkrw8=y+7Qc(kXz3(h2?!D>A~t zrG5nH+(-GIc6XFJJ~3I)5+gY6&`rAfp=53Sot5>tgM*Kk9s>CK>rH>-mi11|EjkUI zU;PyXQ_Bylq?C0H0neJ7g!S!);Nn3TEwG_$SPN}v)kRP3(5yXM2Dhoh7uJE)Gsd(rr3-4x|g+U3n6$pYN>vr?yCn@K=$g z-4r-N@RNVrr3fJA{@2eqMX~voCpdDo_UglGL(c%956UkEwfzcK4>yEkb$*0B6uGSD z+WOIimZ-Q9T;UO!v6dKaiRa8a8He{5L0+a9r6XII^NjNopWI}*PWUgD3Ha2emAxqk zc=cZ*E8;w}dok-_<;D!pm+(2_5cyP}JhRFWIl-+T0r`h`OsoMn5NH$8jXBewJus|K zfz5tGr#LF-C4S0$dgoO78oSm@PflOv@??!FB#xuJ@nEnbFTEA*wg@4zcl{A?94mc) z{3<_XzEPl#X9P@>nR6ZDu*pDFH>Xb*i-6qFr)bmK*S|HHTmKXvKJ&U6`7y7TE4GLf zLX2rP;388(#1T@2SC?>%V>NU2oedOrJTf^Srq~upN@+(LJg7#_lgj^qL_yrAD5d#H z99c+&6$&6mW^a@W1USt2#QVB>T{tUff_gOwUcCvudXl)(SU>-W+?GY$DK1}zd0`D7 zky{&2P>ljW1+u=?Ck>VermyuF_g#en!3k(A%rp9PG#I5!^172NKB7DcTVHan_SF25VBg;D!t3<-EbQXoW4t(xK6$L*U6TuVF zN%Ve>XpIo;^oE|q8uCaYCpb)K5;d#F(x3Wj8y6H z{%^73uA$nbG>l>+od5%%OYg-)d>v`tUeuK!{kv6ZC#fG*qV~H{O-gtV40#QM-wMxr z;Y*JcWI7*cY{Xj?2>-adVuFs zK#gutEy6@Y)Ks`MM6i-Nv@urCVvrVCt$k}hTT}ZYLTakXZH(~*(cWX*L|6Y z>*b%-1?uUzEq{AB;e=clyxf`w=dSZVb*pntlG&2$s9(7otRM|nhXlfBiUJz^NEQQi z(7mGGZ5Uav0bV6FV}66hrxA>lVCjyK`B?fZ%spVO;94EmVwgRoW;n?) zszxYoulf>_r!qdmFpy_QA;bqnPvFnql-~X>Pe_^+Vf;IUJ_UcV1~a(sXkgRXbciH5 zvQ*?dd~Vc@nC#&b;OnDqQO;__k z-|HWQV`j7%=Q6pp`tZC2KFk^mn#VE`%8hH|L3FGV3O(#G&XU8Cahp`we1oFdy|0J4 z)ZT(I`XFC{9{RR-i1?E{d9&S6NPl<2-uq{w+Fu?bS#Ny=#6T_Db6!GRF;9)L1nwwM zA^%){fot2H*A-!RoTwcqr8zDY;|Hv{h7mp=3{p_*4H(u6{RaVK00_gM`gU%a+T7pnWD&|2eppy>-$Xp zg~$rdD_Qre4fWsEz-k>3l6Z44`ZRYCg!S*@w)K!(nGQUc+fIeqyOn|oqK%svWm;GMV^vr!5a>#s4QbNb+iEX?T~ z`T-8kM%I#}P1yAcx6j?Rciu!P0~b5iV!Ks! z)3>=3Z^l?rIxl02lE{Uk+!3Ha`0A8?XuI(|xjXJTf6*@)hVN6$M0@ai4JyRSyxS~B zvi)}ZT(~%211X^msAc?$aP+>^E#Qje0%<&(6E9KMZkYjm%3dZ~Ij|kX??~%+7pyb4 zm|dD?PN30;A<8n&kw^cCR983-5lSx5(~7j>o6H{!j!#Q{(6J`->Pilo(GZcUTqgDxkU41x!ZtZ>HHJf5F+*CwLd253yXdaAE^>Y zl&}q1map^!a=ji^$H16x>WN`j*wGHMvzqQ)5|4u~FQGi%n^E!wyjxobcG^G}z!D}D zt_*CX_rR3s$pp}Fz5oigd%y;IJ?}Vn$2aby9=}x&HXJz{9TMEFdPe6J-Pl`L(LQ9^ zXfQucWkmtT=B-mvqR0aGD+C9p>2q#fQlo>ZR(J1za#Rc@h7bd;d~l-5j)GU4U;E9~ zYN#CIweixEB9nnDWNNLK(BOm*6Z5@{u3)An5M$Kzh6Pv44&Nd7!Ol2F;c(R_e=dpV z|6-~!>Ttu>_Tg=FfMu=L0yu*XR7sFOsnwQXYDhmDTP4ALqx=jTBJxtNNr15z!XyJ- zzIwfeMUoitlLNY!SaU4(rpFHbcYA0@BE#$f2KXTu5PEWtgj+}`5E61@EsB`rAVJ=P zBHIvFd9?xeQQH>x>~+25j*$IQJ#L9&7vMS3I--X}iXNp&iyis%IBhE5{#A_h5hipr&6#4=(ZC4 zdD=qoQalE4b0Oz*HnN6oH9jNWF}{@rvz`sZ~fxHd!-)4y?ss9Lr@Pxl62P~9bO zCQ3)!U%(pOjU`*mPnsFCr3Gq)1a#N@u<7Jt-h8@}@aD46B`FkAkpa42mcEFGqr{42sh2tNY^y)Gj6j6k0;gxV2^NJoSu zeiZ^cmGS7T)z7>L?y082pJBpDxpk%3b9O*BvZJM2_HEc!yt$wHlRIq2LYJLX#ssF0{aW#b3)R)i*-gedOyd zYTDrS_QP`vyc@jvfR-NSSF{33%g0z3YK?gF>)fyTP3OSOlG}qGb4#Y8eL^e&j?Lt_ zKZf0g7u6ba4S_^>d=oSNA;UOme&{^+tdC^k+WkGOT4D>l%Ox@)wB<;t1Pdl{lm%Q@it%HGp%YbD<;z1{ z66auLJy80NKa+=nSAu&&XVJG>`>g|B3!3+u;NgHgcBn}|5}&cN0HG_JnWD^)>pYvS zo;pY_u@dz1$~Uy!JwK+4gtx9+3PV~Fvw7;)O7qzPZ6gMRD$V?#Mz>uhLr4y4wLxX*==Q7bq&ZsAhqi#?`0 z;LbVxpV9ZJwK%SxCs`J1E5%Z32DQ?7pH@6MpP~W>Xq-qrhbV*t$kz2a`9#Ae7*RN6 zlg{O;ioIm|HXW!&a0bNo$CE~K{jpS+yj)9&X6N$$>KRM~$_5%SUJ5;}>vhh>@3l>h zCxnG6!wu`W1F)eWiuYZ#uJ{uG>{mx%k}g#Xl+>Ws6qHoz+Qj&46j>NYUg|HH!p$f3 zE9Wh6hvLMMQwJKaF@k^|(O={gwWbWsXBfqCY#*tX%ZddVTs} zbHI+5`c=UIGMte2b542gpA4+)W&Mr zHpi9l%6k4{zQgS@*{||^%;B?YDMYp@x!h8eTm0|HKkAfs{yT)g6DvYO z_Cy8C2|C}J&<*hvS%@`4;SIk$UO$NNISt4q7Ih7YnY&f}b}`s;8?L!M{jc}Aqkf*l zJZjL@pg}3U!K3!prUMOXBja2^SWLhh*TFWj^9 zDUnK?{Jt=j`x9K)>M(Ism5>~;rirMAG^)zvk1-q2>g1KkKNG#Vg}h~vLLC=WqsP5D zjyClSv8=%e_r}+MTMHVOTY0{0+Q&*D$3jnxxnl8b?PM4PX^7`tkHFm4^BwlSI(@_| zNNJ(wcu;Z@pgP!hZzAd(h6GcU&mu>AfGp5s+5xcp=C%)Zx!fz}w)Fy!c zw^1iteHaP;D}6Q&V_kcrKSRl+sr{MP(k|62-d2sLl5qm)kBV;%J>#2JLRsq=?~0yv zjDtxjE)Z~8UWD*U-h)S{4D^z0Ul`CTON6&73?4pGteJi}WRtJg2>`g;pMFI6eH9A;{mzqAgu-r{k^jh(_ z5sHKnQ%!%+>rd}gh4_zmp#0>t_oTR>nr6IQpzX(N!3-tdyee{4p3Vcr4|Vu?x&BVP zTsvs;zL)%mXQ1CYE^5;F>j=qQ;? zOJ8yzYY!lyF~v{ewS0s+I~qwOc-eF99;8A@E)Z z38V&b6!Znep7v*Me)YVGda+*>X&X@`tU;~Z1({HR_Ms7#3(6X=Kh2nWk+zN#ffwU7!(@}gDOpB|&jOLrZ{lZ{NE-0jvtm(gy$XXh~OLjL%kW6qpf1;%oP>J?0K zL}k$Uc?*>G27#6}+!k3|KZbf&U?ZIDqWhn--b#4VZe3X79CwY9zI6kngLUo%1ek^Z ztM{&ZZ(T(8sJc?1!jtD!uJOHT4yQaPcC~1g@Prh;N57GHk(z*~ z+1Aj4v71)*!!KQ^A-httNo?H|f5LZrnhE~lNe&6wsy%jjrq*+Td-l}!=>qpik8Ijx zD5cb7VAV|{xKx~;*d$lD@$K6)z=PtCS5F_UeG{ab7TD9Ndd#rknrk2K*2oFtJ-*)!_QFp?`Al||DB=_Qb=i9EuLNuuz z0dfQSAB6ruVnC0vr*@k%)J(OZF#^`^*&r|hAb^X7E)5acQ%4wA1j6_NaI3G`2p^xm zPQ*JiXl4!tJNO000ycVXXCrD{02rah2&8!qXgQakEc}y1m(!IQ3o<{n3581hS(qk% z(Eu7_tReVV)2hfLAE-%(gMXD3K>aVOWXWo;c2wtxMf3u)UugG1F`2429Nk__o^g6= zX$v#czVWmka&0O1FM}}0`1XE^$6YRc12{pzGWs*;{%F85AA#=_-xTzzAK<&`OMQ#l z<~td(fk`*{{o5knN`W+8Xz`=eweaeG$doN1$kF8p#5(%C3>qfT%RzwBuih)bcvL_~ zDAQ&%>8O&OKa?TKFI)1OB>rP znz)lLh-mK9o1W=uR`FQrV*mPg#I{RINg2E(Qo?JsR4tPfI@J4mmuwv2Q}w3a^jvjn z-Gi0Rp8Czyu6?H4G*;MAN%z$R_c`pl-ctL!D|e`Iu_2{Qdes}+&&|V+)&B0a2$fxK zaYjP}=7DLf#!C!r-kF~@9fNk3L(S$ibK1zF!sjAumtaS_*DwMG-=PoUkI3QXr-S6q z7`v(vD9TF5hslLZS%2ECT{E7c#^$y)xvSUdt$d3-_UbfU7_MRQ`+UmyU~6VIKu`Ma zi+Jp$TO2r(|8Trdv%9X#(^C2aoal=#27t?@P4>_J%C$GuaQ&4168(J|y(ek0mU_Rn z_NHsrg>Dh=3+&mzx!4`oxFV2gG7J0F+-D4OtugWTWJ+sS-WM|K$9ro+@tbO> z+iiDvNVb${FIj?-DR5eKCbjDOOtv_B!ns{ zAsQ=l3|c_g563+`(04-qLu{Q6zW1>IIK_z4V%#oDWu8iIheN9?(`Uz=OtrlA%6=kU zmO7K|(dgLxG>YtL9s4aY=3KtmAiw{sKw9j?##O)7I0zJQosYFF{+j#ZWN-ES1I z$@>7XVcKw5v)XJ4gS`~~-!AXtf_Xh-Ac#*wUcG)}8@o4skj@~5j&wVOd}P`PpEsu1 zSS~DZvY>=Kg1eiBnqMGoZ4%{(nK#AI!DJ14J>RQ$zBnN08HC+Gv`rJdQpnfMh`H)EM2G^szJ}SuFWF zY>w|vPlB5$ROiPIFEt&AkZE|5A|f&@cbuASlOpE#aSv@WrajFN8f@eXdN(pQMUh6} z=F6&w{Z}8B`W%AeJ*nD+eq*OVJb|B2MP-P1*;uw0UpB>bNB{=m3|?4GkJ&N+^;R5Q zSM9(xnpfoFM0rhVsa)<-VBR!LDD@G#E}U-V4sUtbFWP}7p~#tpBupa4@9&}T&2S6f z1Uaq9<&42>@+*g&F(k74-5ldlrF!7#6zn#<#qdd zkT!C#^~%Fi?M-OrvrBs_qpSEJm=eWCc1ykhJ?c~ft}SrS8L}+=VT&bijGORs<0>eG z3qL_HZI{)|>c8{lBh@}Y7d^96_2GDpJ#vwGyNEM#^8W5BHiWs5`=5k}I$-~=y=xC@ z>dfLdLS-Bjv~+x|3Ra`AD~f_*K?I*=G6?uWji?}~tQ7&Z5>O+d)S{xW#uckk@i8kc zSfmDth=r(iAqAu@8YvHng3{#~c?bc7J>Pc|sAAV0XF66r_m6A57cTjJ=XZYReD`~t zld({YmxaBXGV*5PI(E}_u5+sO*mqw^g2ffv<_3h?Lmh+kwxR(O4Q?zHm$|;@uYloV zV5NspM(tKSjwPli_$6@*r}G>&cjvw$H+ZH*_bN#BvD!amk7N zv#DFjmrNe7ec(wz0+fz^Ny|QJ@1EzCB>9>I8H0BhH_oega(%SJ`#BeO)^HUzCLCGK z6otz|VyEE4tWwnMNvOXi-Y@Q0GeBhUaLO57iowXBnC?2I`$zqYo2t~_VLp8?H*ah^ z4_Yd|n^fx%v`ms^5w_WGDEP=Hqg8`pkJ*LIr72bEyJ2@7rqJU7eNOV6gbYs)Aq)!> zHRKfXm+>6Ap&(>SZtM7~x<#B~(o{~#0Wc8pxvRPMg$BlXcOQst8X1}DZ?G|#)21`2 zE{90#tJ&6j8vvZ*wc?8FFzxoCueeOSAF5qKq2~=`y&5@0=}@hOuk^F^mh75Af(fUt zsVxKO1?*OGGRG&XXXakmQ3-|Lk5{CHipd$d93O0!EQa6-Plc@)4y*xUxt^eBmv zel#cRi7RMSOD&x`r^| z_%7CNTforMw;gT{Zv{t=2GoGX>vYx-wM*?XH~WBy^Tl5eQ>{*FhrQh6A&~5fvbkNO ztgLKklvx?v*dSgO%L({(ilR87{$p^;WkT5$k~+qOv!rqu=utKyF=M#7#(RLsv&C5~ z+g4BqVhB~i)^r=_gtZN)MU|}|6b6Oy;3m|^IS#g|{K{#?7dt-f)C>p2R_nKh2c~D+ zD?1n85flJZ=Y!M8eaEoAZ#*Ali*NQx+Lin6N0$#!tqAi^ig&u>+D-~Z=615EOt%KV6Uq}am7)-Xd{$4o~R%eha3RN zdlbB0lvQQsN)2G_en%k9xfXPAZES^K6jPGzA(oOlKHCcHN9f+UsgrZTCHkiNU(uB4 z1y`UEeB263Hv(a<7izH@*%Z`Zd*vL-uQcX6IZ$XOS1 zEa_r&LcY|fD2bSgVRb-lu|z1?X*YD@A=n1>$<4?XOMM5QxGeulNyL9BuyAr%1O0O&KiTF)lt{*Rqd-Y!!r9|B!wTPvS#g>x^kJhR2W3}(@U zh#+d1A2nA%=CWFOu=w$#OEx(r-#19JK9rYlyOfr>eCU=62H%2 ztS7Xw?y=s}GJf00-RAX+vxC#plAxOODncE4s1(x`_SS8=ANc>&r1tJA95ybb)z&M^ zPjZAy{$Tu%wIPiS(tovHf3Rhe!;>^l%&kzRpVH~3KQ)19ix$Idh)P#R^f%|5-Rqia zRIis_Ke}2}8$TyJ2WpJ1*Rfq?4}lwC%)jV3#-O;tQZc2v@u<8!Jy7%M7mwW~D#%PN zs@1g?ime-GxOTO9Jq_b(1TON3<|8)M9%Xh?lB>w(YTI}^p?)dv8~|ypsE6~tM?$9M z{?5kj2iG2MJ}rmcw@Xu!SkHjp+8I;6r}(1Kd5~z56;ngm6~j$;b>i5(Lb^_53M zdEC99vkZro(UUa#vG+AQe#8#5=fqW}DLW*-}DdR<>IpEddOH$*ND5Ke+nzQJLJ#Y!>>=^5Fz>m1|$zbfkD?LD4_BX6i_%R z3JiuVf&)ff$_7jt2n?7sP%>cBKw-e7fxv)C10@6YwkQmkG!PgtX`p2I1CoY;(*lWcUO0m_Ao~Lgk@Apz=@{PJ$bX zz#%Z;Yg9@G>_Sr*FkvPzV8TqvfC)2!0h0zw222_#445b_ zlzPfk2B*|h959$u7%-R<7%-SqGQ1VReEi^%RWF_kK-!2MI%;X`&=D9g22e6!3?MLI z44`CqD`Eg`$ulR^eF_KaK7j#spOOJ}pTK~+Ps#9d-Tz;!p3tQzh&Z55VL+GqKV6C? zjqZ$kOprkGP(Hj|k9D+R|3&f;9FRPe4M-je1CGiO7+zsi4u{WhH#X`)NFEjje0@Z5 zz}H6v27G-)$$%Lrf#FY+alUY+6K<_asft^xQW)O3Ot7D4dIZC~Kc4IhfcsMe2e3y( z9O0ew1LQt(pAa7o1vPo)gi(i!gj>ZgXJHN1IlbCYI!fA(L< Cjj?qA literal 0 HcmV?d00001 diff --git a/mkapp/app/script/serve_media.sh b/mkapp/app/script/serve_media.sh new file mode 100755 index 00000000..0997c00a --- /dev/null +++ b/mkapp/app/script/serve_media.sh @@ -0,0 +1,182 @@ +#!/bin/sh + +# CONFIGURATION +ACTUAL_DIR="/mnt/extsd/DCIM/100HDZRO" +LINK_NAME="media" +PORT=8080 +SERVE_DIR="." +OUTPUT="$SERVE_DIR/index.html" +INTERVAL=10 + +create_symlink() { + [ ! -L "$SERVE_DIR/$LINK_NAME" ] && ln -sf "$ACTUAL_DIR" "$SERVE_DIR/$LINK_NAME" + [ ! -e "$SERVE_DIR/HDZero.png" ] && ln -sf /mnt/app/media/HDZero.png "$SERVE_DIR/HDZero.png" +} + +generate_index() { + # Create HTML header and styles + cat > "$OUTPUT" << 'EOF' + + + + + DVR web gallery + + + +
+
+
+ +
+ +
+
" >> "$OUTPUT" +} + +start_httpd() { + IP=$(ip addr show wlan0 | awk '/inet / {print $2}' | cut -d/ -f1) + httpd -p "$PORT" -h "$SERVE_DIR" 2>/dev/null + echo "Gallery available at: http://$IP:$PORT/index.html" +} + +# MAIN +create_symlink +(while true; do generate_index 2>/dev/null; sleep "$INTERVAL"; done) & +start_httpd diff --git a/src/ui/page_common.h b/src/ui/page_common.h index a4bffd19..a73afa7a 100644 --- a/src/ui/page_common.h +++ b/src/ui/page_common.h @@ -21,6 +21,7 @@ extern "C" { #define REC_STOP_LIVE "/mnt/app/app/record/gogglecmd -rec stopl" #define REC_CONF "/mnt/app/app/record/confs/record.conf" #define WIFI_DOWNLOAD "/mnt/app/script/online_downloader.sh" +#define SERVE_MEDIA "/mnt/app/script/serve_media.sh" #define WIFI_OFF "/mnt/app/script/wlan_stop.sh" #define WIFI_AP_ON "/tmp/wlan_start_ap.sh" #define WIFI_STA_ON "/tmp/wlan_start_sta.sh" diff --git a/src/ui/page_wifi.c b/src/ui/page_wifi.c index 4ca88b5c..51836c09 100644 --- a/src/ui/page_wifi.c +++ b/src/ui/page_wifi.c @@ -318,6 +318,7 @@ static void page_wifi_update_settings() { } else { system_script(WIFI_STA_ON); } + system_script(SERVE_MEDIA); } }