From 99b7474ac435f6abfa95f5deb76a42ca66c9745b Mon Sep 17 00:00:00 2001 From: arendst Date: Tue, 21 Mar 2017 16:17:28 +0100 Subject: [PATCH] v4.0.8 4.0.8 20170321 * Fix entering non-numeric webpassword * Force selection between TLS or Webserver due to memory restraint (#240) * Allow entering empty string using "0" for selected commands (#242) * Fix exception when posting commands to web console containing % (#250) --- README.md | 2 +- api/arduino/sonoff.ino.bin | Bin 476176 -> 476656 bytes sonoff/_releasenotes.ino | 8 +++++++- sonoff/settings.h | 21 ++++++++++++++++++-- sonoff/sonoff.ino | 39 ++++++++++++++----------------------- sonoff/user_config.h | 4 ++++ sonoff/webserver.ino | 19 +++++++++--------- 7 files changed, 56 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index 712d4a5fc..9c28ed7cd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **4.0.7** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information. +Current version is **4.0.8** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/master/sonoff/_releasenotes.ino) for change information. - This version provides all (Sonoff) modules in one file and starts up with Sonoff Basic. - Once uploaded select module using the configuration webpage or the commands ```Modules``` and ```Module```. diff --git a/api/arduino/sonoff.ino.bin b/api/arduino/sonoff.ino.bin index 9709ac87c3965d5d09f7c3ad69729b7eb89940c0..03dc74681903cd87a7292641c259b2259e1652fb 100644 GIT binary patch delta 64448 zcmZsD4_p-07XQw`Am}VCv+Rls=+1};$||#1nt|-D4q1r_`OHksHB(<{{)y7c-jX_0 zM(-J8=_~6k>hoz&3$s5~R)7wnq5}TI{1f2+|468y!2G^<7OMCA{r2-Yd+y9R_uO;; z-+S)4v+}LD#&_a^E>VVUL0SZBum>AVE|babG8AkNH&MZ~Jb!y+)Nv+SI@_nR&=D?P z(n1&mepL>8Nt#`4*iPFX3ZbQC%A@vtMt!xnx@h}R`(qT%?BCvBc(@zQq$>-P?x*FQ z+doZuIVev0bqIe)E7wKHr-$&jv~rq=6Z{7Cl#=dmkFR_ydwq<`SN?a3+eOiTA1kcKjZWmOp$i=`2!2X>VVITH zP#o$T!>kKCq$Ntph**~S#yry*;-J!5X`^y+L?W$bDqMzZo_aB+`i{1bPd7?hjFV;9 z4Gv1a5R*>rLW>yj?yQAm1hAogfRPtb7mjZX~jLMyE2Z zpfcabKypM@ILpY%vHN)DJEb(k?8`MKxNj%)gXpU47_iqmu6` z?ykNEdCpRkyj^j*qv;k_ndD9xB^SgxSiF@!iwV8yU@PjmQkSvO{`ZcI7HHpWPH_3d zwG4ynAFi_q*8(a5d=D*SH}EvMBV(0WIp7{-lH^#S)TF*2!@tAEV&+%J;(?2i2A|q5}#{B>tg9JaSyM4^{_a*jpd{O7St~vR<}OP((k8HZ#Q_FVw7Mv{;X(#^l6^ zbsA|%*)jXXEDAkyKWQu(Xe{c881WYkS(o055ozQh{FcO*kPeh# z)e_PloFuk0M*LDEy&`sGj5w+dI*;tksr)0D}*Rv*II-tfQx~Pfp-G00j>mI z0$c|?4Y(QD6mBq#YT2Ii@IefxzbSnm9ZJhLl*x}qb35+zbGbG2yT+81X4)I1URClR z&FG0{E=IKOr=3BeXkvV;wug4G(j?{NqZRkpHTA<7RJX^wpXT?phAm(!d%5pvQ|QCG`)n zQjIQFYW}~(PS)d;?5T$;MXg~snX*8f#4>V=s3rvN6}_pqze_v@a0-nx15B_8)l(?XP^774Kt&81Xh~kC$xKL)-KbbO*Q3 zO)5`)1{KU4wV^#6v5D77YdmigN~6<_@^)???<|dG1Y3ZW@shT12&~K@n|PMUI~!nC zA&sy~eL7j?sibXHfmN!qiM|u0@zr;V?c|kXbzbxz^(io``@t;lw~5u@l~3CcJsGWQ zpBpMZN$C3seV;9KTSZardx4>#qOqSV<(-ZUKC_i8EvCKZGB2lo+6!Z|J;(0!C!pV| z-^B1uz1!2N3R);lWRBb1&FHB)rHSY+OsEy_q;lo%SUwH8XQLb}8>G%8xxB22cSygN z4%^6hjr1QQU8dB=*S5P)Vg%WjO(f7(=vksX@mQ@(n$Szcm`5?YZQ@NW(MvUJB?bfa za|{0MDb4H#$T-niJZd`0(dQ&bpWDO>B*!Jnym7sJ(veOMX*f9KEu;Xq*hIbjez0Mb zNqmDkuFKsLkef^7GBr?=loT@*v6#(>rEWq~>Kyse8ONiPCIjXGiW3uD^MP{#O90CO zS5cDeI~~tupd7{GmIklM-e5;72$X4)H=@QHDSc&ggtI|xl$04GUc;CX&HQX*V{i6t z%O7Vjq_cP-pCh?JK&rEe=k>s4n-F2>zcW-kLmt)BHn9OCl3c7T$nNcvKeLemi4c;= zu(}r2u6|?_50gP_i>)|4QdsZ*C3Qe5pMPgS>b_Kz#(#g0kw7YB4QVKAY~mh$klu_Z ztQx-68xGMYo|NJTq!d4}@k{SG{nG`yTmRHhLaWo1@SIQ|v(Z*v){51JQTq4qvh740 zg~%?ni7yg`*Fy+c)_1YUy-D&b3Cl{GIESzl=`2hUY3KVyliM!Ef=B*4c%;AEVk%2Y za#0pPJL!Dvn91KG)TL zt`byqB5)U`8216afjR;o&w*hNQ42FpQ2E&(l4ld}(@B_2JyTUNK zBOHbBVqiP)G~g8AQNS+XWZ*HtCg8~h9p;SY%l%w)@Zu!!V&Ia?+nXj$3=WcuZOW8K zdnSy*`?v7k-JxZ7{4vJMTWvHSgvD$gTJfrW%8I9XTCG&JKCO0VKEcpT7C+aNCDWcT zF+nJq4$MZM;Wg7Odi$Aa&r%^NJp|XN9?ID1bu^Qqq&%}SLT$J8-%01!Y9U`~kh!|v zPnng5XZq6e7^T|`i7seV#?BZ>%TtusX2jXmMq7{c(U`w6*3KijYSa`d7lfH{py&9j4gGB4TOH?@iH*{gEx6}k4hmtry0t0R@3 zGqI|6D;YDbw3>k`v?z0C-bXXfE9+-INXySCbu;s5^@cKi)?gY_oHFYJT1`;~&hAG` zgOr@v{b_Ze^4e?%R>j*to&6o^eV{V)xolb;qf}3)>>Csdo zn;tIPY|8xS@3*No8;GO5cKb_$n{ILwV(@56w%C-C=X(c9J#9+;^VT4Svnh97YEledpFO9{@;3S(T+SS*Cg|4=67JHphoXa~kAsX$qoZwr%$>rc!IWqbbcaQPz( z`k-t%g+&-6EBEprNG(W6aEbk{aHak-ua)-p+)p!)_ry9)pbgd>ifPf@cd(Y3j3t>g zIGU`suwj_>X8eQlYKU_B+nAB)*?S<>11j^8WlRt|1W)gQs=i{mM(16R#QRq)b#=}5 z>vpmrU#yhBIW9;2yT$20hw_4gETcdr@yW9j=V%23tY^*M}QES)5F6tBumB28| zGSg`Xp7w{-Y5ybjX=UQuYcPr{O>d`%Ni->FR?Sw1t>_)5YCZMU=VQv#D|&G|*aX*E ztf=kSsr3fTV3idsutYf%v9`h8q-8g0`g*WvgVd@=Qy1KYq&v#K6@6&=wsLhvG(DbG zLf#o^lN)>TH%R$kaE9~OG%Wi(rSVl$?9$W9Gw%!>A&2+WmveGlPjT2aYz~;QJ+tU^ zEH)o5RoR}SOQB-0^hnQi+7Tf|_ry$fm#l+Yv7CyQT9wLoVrcoia_ODH-52*uaLoox z?579?!)d8enOYD{!{)KL0At_@#a}SaJ_dBOjVVEB9W`Fd{$PxkS&UGc78``dA{|yt z?^+Yp8YF|M{jNsyJ}e>5b>U-e86C-n<#1eQowIlcfc>N${_<37Ei`Z#4ID4Nr5~DaN#2Hi7wj&(b5;oFJ#7oquY?-+ztn zYR!A$61W09>N`C<8Kg~wVYAV_SM%;AVmcY#{+(eXVfc?xnt!i)mzJnhy@&eASFXL6 zG*EgmT<}*q{k1m1mMYg<+{KzVs$(Ia>h$ML!HUkLzR?p5P^nOH7uv1Tb?bh5?Q|$D z_$vnV6`#DwMqqedRM zCjy@Zjt0I8917eF9DyBV%MGky5WaY0`+-$Hn#LCPvDG}i{Eo74^;4v?9b9dpr`=J` zuf`QCo?NPt` zUFj{z^+e1i;Kj!D6wQBg_maC+RGwPP)6yyBZ)iO5 z*+FeWsVi-ldQ`cvR;1-a+if2Yr-cG^)+K=1fQf+7fGAk5Qh=iYSDTcV|24I{y4z~6 z%f*DTd;95sokYKWTiID8(o(*1qv&y(c|#esZW#SmqVl(O!|9R)<-2t$K6Qn5@4~tfcCy1;ZP7>EU~3l52BF_4TCr$f4)Y3DP4DY8>87QfMhP#o&rs;bD&=oofJ>olQgr)auj6XZ=6{^g5_bmlXZL7au%5$1X_ z8Old6kwU;Mi*@Uh>~aU&m|<7Ltm4yT7rjVlVa{1FHL;A56w3@tA}gibv6ti)Y~cr7 zz@&#ASf;_i#)^-V#B733dec&!O~UC$o1p&Ja`Q1fppw!f1nC;d z!PA{Nn2I{TjD+R|o?&a>fb|dfQRuc&D0V@*93V-P5l?-}A`T14SLay7`!z>@N}5CX zA>WpYwjf9sz$ZT$h{QZ;5rgRZR)rH~=dsC1qneEl*SCZH!G(rxISV z=NU9C5`?H?k~#);+bFe`5KTg!`UnEW5dVns{l{$UYMA_$`T7s8Fa zhf5^XC215S2~1Uh#&`mPWVc0Zyri?sIe}Ls_tNY@M85|D^@wt1XM_>Jr1g)mh`!R! z1jkxL6+yg~#s(tlx(8C+(;4BxP65L$;y0blkCIpE5jKI{z|06l)Kf&3(R$R*2t$EM zibE}IA8|{E!>De&XZ1vin+rDyKITP>_&&suB6!^*uIkiiWFQWTfQ0_H2!8C8mjaC9 zk_TJFO`S#H3cS*bU_v0`pNinS&IrlCM4@C9!7H5!rXk#!tF%DGKNZ0@oe`2c1teO; zd7aD;kXM~WKq`PVAyVjpBG}#;p&u|wu^%adnWP9--Ln=(iq9za%_sw}Ma+UcQU=dk z#4(*JiGfHc0}}e*GT727us1L%gE)>+NaU1zzc8Fe(u7Pi3&FGlC76XkoI-sh@;tsoz z7@U6_Mgx)UK>zF=7;6f!1Hs(DT0VGzY+j7)a``jm(@*(uDcvHz9VixLR5|`>tdEKA zRFI7L5UP-Igz3~P*do5tS&A0RpG;p#^_?Sr)c-`5{y_!_DiE2WEaG#QpavIsPG@EQ zE_C+<#(mUL0SGERd;6&h4z$Rc85Dcir^F`Rc>HxnWd=yZDa0$Ql2&|lpeZ0;B;F0b3%q zj6(lPRF_?u_r*3k^EXA^Sw5xSQGM~-|5VBe=Yk=UC0D5_0tsz{{JcB`&|=Vkq^5RS)(iR!T&1qgRV%^ z>E9KpB#K-o&tfi7MD0}MI24grbt%$K%RW*UG6YPFu1EukFrkdGW(7C;?9I1@5&XAx z;x~0DPwBlo*g*5sPYX44ljpbcPy-uRda^-3P{-*yd__F|pqNwAMh)#&U=7EEGPfJCOf;t3kZlL0aa|U5U*NY9wi;@SoI)Ye`!2iaP~A`S^#BR&bLi zJ0HEBjYZAECxawX$@sOIldp%|(fAPo@xcq}Y-UW5;pE}ZZ2^g9NTRh>-2&5a;N882K4c_PKz??nh zRu{kf>j0;m{5vNy@^E`eNwfG)19-{0zd_4CP0aqHw~kMnR!8}Wrs9f@>~}ic|LL$l zzRc;ziHu23v@8v8UXa`1eX*glN%=c+a0)SNnVMihDdj6$zp*`PX(i`j_904&J-56Y z#Ckl2@=(YJ&P?pY4|U>MFkSV<;8ey7H9X(I+ne}4A4bB2Wy1Mfq{8hG!*ATG<#A-- z2=;jG%o!zn$Ebvo(`vMN3JpIC>{XrqJk^TigJ2^S+Q~AeU<~?)dRqB@M;vX6RDRhJ zYdvx2<{iyB*f6w^&QCJ%H*Qs5yCq&%*l**g50wGmK9#ual>4x@P{7G?-u!975S#Pw zQPWr+ zJD|av*yQam_c7a(-7#ejBh$v&ue$j`&DiHR!3^%tE16n?bQmoPx|>8h)1$pQQ5p1| zz{_hbFkWEormisO@OFn$JgpU2@F%@u7X00rrd8hSUJr6@sRsG_J;Z!xlu8GA8%u>3nX*3?R;;#JjNjS zS7E1R%wlCGvdN#PKiV>4N2vo_5YA!=Q8h&7@cl?3<#-dN5IiKhPiwE!ws|-_pqLX# z9YUllW>!GS%IDko$X{(4q>m@v2_w;%ph&SyS+UbO;w%ivhXK0*nx+{R!<8mwuBo$5 zQIVy^CsCI|YzS%=RqXuFuk`~P`lp8TGwP&j_nyAG6(9`#Ni)d@`#D*jVp{5dp zhMDChEn?4xq##`vHb|CRV9_LM!)DCv>s0ZCnROBskG2Ka`bx`M+*Ms{az%hmtwqJ_ zjpT4AU#gnd;{Lgdk13B50$Dx^dFTk$ZHeL4i%-S~m<*G`lZ^ehPZsAXM}FWfm+R|N zBPTK`e<^vwnOHJD(j}E-pI3VPm~75$aV8u1^;-XB-4n+YzN&XogTaL+C+f~8#N~)-)6~2>%zy64MOvsBFq#<*p(t0F+{(Ok>6Lmos9=y@ z>*P<@!-H+2()eR+&lcUCLuY8y0t^KWQnS+crzGJdXeGb9dz4<$!WJCQhJ*=Ruvqcy zJG}Z&<%OTD-L^Ergo4H1J3ooE|EBWePj+8XJsUg>E(-FLaPbzgg6uZq7@T69QN&Qf zd|}=g7osogs@ru354kKrPYKYA19W&k9BdbBPohbeB^#s?v-_+z1xFFs4M{h`A$2Qa zNn6c-cEHGkzQNQWWon5vfoU-FuhqK`!8c+GI$MQ$8Ih#T<}L&0Z1Cm{R6Z=}?~_iM z;f{iH1@&vQ7XsZj zm!Rd*-Uzi?6YuHg^EGC%Qg;K{VirgJDwM`Euk;{CBk}SD-G7Fpmq5~6LljzL7E6gj zn~6eS|E^FxVfcV3^nsZlQ19lx`$MCnx<>CS)um?NN$gK{0}O_|bT}6tf3Lb#yY$9I z!j2r(y%C1)VzE*pUUBZ8Z9ac}H`f-#GHnVW~G@U zscR8}*kP1JLb4Mf`6GlF5@JY55()J~gwzy-)PE8x2{9xj^9U6v;y$9%PAxOifP=cr zrwooryIrIr&LR(@s!=1(kj(Tc4^1~vHj**-sTeu7?2|XBe~~biOQ^ye zgOF@sCR(i1anvks(=h1Z`3WU%R~+rXri|ES_uV@WMmB0n@LYRgxL z>80c3$+sp4xnFF=vDUtYQ&FFmV zG#aLavr%%@EeK=HA~m&(y)W}UNs#J&3<+GL2|0+GK&UK79jXnaN?DZ+yNCFaE?{Wd z!{g)t#!{^Br7xSS`vnwa*UHWk#T${S1l^R7@aUQ$%JlX{H1z{6UY3;PbNX^qD zKif#1((o2dJ%V~pe|0oKpQS$>)~F47tV3EBVtH7vftp4r=|*a*@7@3DXxy)~1 zc+1Zmn;0(JNk7}AK;_jpDcY>8FYhh(B{K8|7_JVyl}J&&125(prv$45ZV`V&;-%Ns z_I6)Xn#xn}R|f@JXFBy?US-<@1MS5(0={nWJtyrm674gu%-fsx_SsL@c;nP8<*A>0 z4Segy6yx;LNn?hRQ*Zn2%D;ZLIGQh#10MJ-!NVAEJRe>m^tOj$ zK{g&IqR{Iiz~D)6HM_8{M>slE8Czi;U;<0x%8m>cI2kw%uq6XqcHq%~aR5UaJggs4 z{$2q){8Tf%ZZQF=L(Ooz#dI^&92nK(RWit{@nn>ZH^c3g48<>)Yy1YWmV~9bpxmt0 z>W^!s8;`?(Y-Su?KEyE7L5DnRU{cMx!>v5g9GFDnRWg?`cEnNp;4eKwO)-mmd?dw` zE*|;6B*i$AVw^cW99qeP%wic*W0^r+YGHoEFSVPqMe1YNy>WLD+NcsU<0r;u=Cc?4%?!4lq2W(L$*&Ufy6PGl~^LB`bu+TvsjT znNv5%kQ0)GbUJglRzBUpB$&nZ#Nq7GE?t=-k{>f-s2u)~pT1`C1CpJ-T`cM+ge4MG z*#z~#$(zMO!oqiD#wV`@j~Y&R!u8y|h1^JeI&&l4r{_kRY;LE8la!O*lD+5@a^qg8 z1u~Q#O!54|lia9b_{ZUv870_ofKo$|p?`<$!=^~?W!8P`n2dmuK15kX zGzftP68XacOi#1;JhWtbc4b5=1dAL@Sc3J8NEWmB3|Q2tu8c4%!6MOMVQ4)cPaq#C znLw?miF!WN$GYO=5AWk)vi_rjmgj(txdS%!HYcVM zmAjeCPSVcUC4^J9|1NJSk=G1HshJZ8=&7fh#Uv77(xGa+y!8(Lr6w-m-4;>FjA-nJ zEfcz%eFVB2@Df0AdV*^?@X1d)GTs6%0HmQit^{5K@B_{wUR5_GrxGUxf>~@NmhXF< z?%bKk+~Yi@iDX&kl3qr-iSk9F)J0DG6}q@&(Twc@_**!UKLIk+@(2HmI{!Jse~uGz zR!&K`IsUWS(k;guYJ#gVorLFPu_;*!X;q2Ht;g4ylsb<@RqGK|uIFx6kfhM!2bgsq zdG#iTRRtKNo4+R}&(UL?CNWNP;*Uh98=P463z2jEcQ)xc!X}*r8*`EqzXBU`jT0{u zHu);&^K>aNOBZ*Xh&#@STZsawNAbTT!e!1GzKP$c5#5)i2cxSXjf=mh!OS3WnWKoS z9^phkqNwLdlq|MKsvd*zpZkN~tMeZMzfY~<#P{{#@eGLpM(3`Ml>N(Kw~-sTbjnkj zNHm$M$EYGH9OU>(wPowyVdM6eW%fr~HHb@ywoc z&eW4Q&fzelDm4$Jl(ami7F1UtA?b0QU)A|l)c#2ZR-ZsL1#rSoA>DKWqg2W@vPa2{YXU>qPBUA4e|jMfSmw8U=?6KV1^HWX#hJQ3J?k~ z0GjV17l2AY3BV6n1$YZE2QUWU0@wjjfR?*Z2(TOQC14d`Iba%K93TZ?2SfoXAHmLO zD|SYH*6D*cR=`E8!5h`&HA{6JrD`n;4@PE1qu{*~p0>qI#p5Mo#=E36S2nT7QGUZ#T%BGhD#;Sw#<22ubo?BTf3&ZG9Vv zbkNz>apJpr{41PTpvS+0*EpYA9;tJwr%054aiXkCxP*HuOnxL5e-u-U4g;y`32?|C zbK>9h=odKgbzR_jP7FTDZWxB;lv*BO^)aN!Gaqr{OS-hPoR~`j>KU$j*)j0OVTNP& z2ACz%!=*JGJi|$D>N(6}2r%{Buyl3D@o$Yw=O?S~|vwkLdKHoYUwh7vy46nQuDtvxoCRhj%#9 zqq7|51f$>M_ZK@O2c$lNBx3X=(CHu4={4NVwqG0(@`v4}mF9HPGD!0G5gJp?i9<+0 zs^Y{txEDqFMrzV_?3=Bl9{ZMiHW1 zt`nJ4VF6`)5qcC=m#>}(Bg!xpo$|jS@?YV^ZiI)~#fc$0b6G%{<2tjXcDBkd!K}W_ zi5(cwqL~s-Y$pNvCp|s2HZ0J>zrdrE%ZYagQT>7QiML2d`hgQp1v}{+dlOkdT7T<~ zNx9|}t$xpmj^l)(m=mw*0>9&M5P&z#cbqd$zb+|#7^qHp3(@xlPCTd6cW~kvJ;pbj z$dT^HY(dqKH`3Rb%t=7~>IqJaCi3M^Iq`(f{Us;6L*mS zgFqPx5LMttf;R~Kq`%pW`JDuy3Oc(hlHH(p_kzx5{1GYCDV+GV&WwTRD?PezBe*50 zlUsVbvy|2l?n#*9b&2aaIFLZJv>wdrNHE)nyTOp($^AYlQ_k9Fb7pCK^4;iAxACgCXfP zJ&9GE2tO6PSw(743dYPEEj_Hfd$i}E!!U{#`u#AJ^UJT-c>7f^y)G`hKHyZTSdXYazLs3qL#J`DC(}! zviaI13|=@rn#(eAFvmOL+MA?|sf~W3O|!d#aT6sLpkGHU{Yf|Pvg?E~27cEOoWcoo z&V=a(b@{z=BX&l!I;suV1&3jy&>!CF=~NQMH)=^D`Q!Q9C#3NhP^2W~`&tK`7@=IQ zP4RtlRO%Kf;-c|*s)<-Q_S4l*9IvbqufqB!kB8F_TtfU|u+hNQcQXtpE@t^(VWlgN z2q%&B;{`e7jrvg-ZX&BKVbFv;OSi(l9@H&iPofi0`# zfW@S%RgA;V1b0`~9UqX!cXt?@SU>YYm_7wvUWRisoPP|L?DnVu@e64KA9Z!b9QTh} z5*0Jk!Nfc*Q)UzuE6B!sO69g_#r{jE&;J1Ls(26Ekq3F#SuEwQj^$k!f#+xQuB*Vy zfg6EKfSZ9wP2ycGz;8XyyV`))0viy2$V}c93|x%oP~d6fc^3H^>tJP!e|C3aUD zupf9L@KxYBz^h8_uEoHyQ+U@VxU1W7R#50K(a+Kx@SHvUOM@3ay@SiVgPObpeNJz@ zlZK&g!pLEz`+rGfCp6v9f2T3qxyeE8v|PZ7JFs(TWu-YS;x`)ZB}d5PanvGd9B%VE zs1{azu0{MpC#X3fsO_9stP`ZawuqnU1Sy-uXyf#KOA9N{Y7svT#CXhzxn8}?iT}}~ zFf&`=I^l@OqNK6pJg1f8n-9C!XlS*VhT4Ozhk{14;wRwsc>77uw0QV_;#wSHg8xy% zf13k&O()r_lRpTMA0`?!6SC4tep)B5^abb-5qcA$zZ;;-Q*`=@09hjBMnZnGll+uU zmUXf`l8~mjlzZ{^ef6?hL2Bedt zE$nwep5IA+TqnPvlhp?a`8**%*GbOS$+H9G2S8TO67sVcvhr*KicWp3MVt<1>9H0? zIK}w}5)t*BPR7C!yiW#1Nn>s|+EGSCu7w1^IEijQLB9TAK`6u^>kfKF4>TExUa zD~$&MJ6thACrA&rU?r$G(!M0d0nWYuiV(bMrVuUm(K(n0TEyM~4jvp#C0Px&Kr?x0 ziz5ODxM@V-UXHhFY!LZc1^k9rvO>7w7&nx6-zgoUl%6*GxJWmvWgox1khiBt%tdVU zN!ws~S0p(ZgdcJrZ0y00kHaV0|s~b}#+q z*zxxqEHS`JpM{;GXF6jY#A8nS7>mw=CgM{rxiDJeMsa2kmi+7seeotE4Ci>PQ)+6L z@3fD>$4aaGig={R2 zYmMrj$bCE#Q=`Lh`j+i1jlyB^VqzNnI+E<7q@H0)>90L|?!GMupRn~#k#qY(MV%g+BCe1NW8%MbX4cu728y1RWQkLu6A-EjbpPAeP zSE1qXAl0?Ym*7s(P06nd9~}*yE{3CM0dE1O0bBra@i83frS!G$sXtzQskC+518!Wq ze?M%PyPZxMX|Mm=vC<{Ss$V@e(>VwmGJMSCWF7yIRNLN!)KUzNV0mR2Irq;pBshB{ zc>2xcG6P?5(X~>KwBr&_mLayG9M@q{GlFW;#Rpdq-hLv3jf!J)y8$b+=;<3jRaP zny^HwfhK2PDe#4$5H<|6M{<-@(Ttw(7O8lny1I*1elv3I*iJrv(UD=) zm?%{RBjd}D1hYKZ*}lk;z99SV5(TD*^B0LeGdYGoca&Kh z#xFij+CgTjq4Er7G1en}(;n+VNlM4H>QhJYVVikjrHQu_oOHebWpRCBD%pTFbmNZ_ zITLcaLG0DALh+|de4pFQM&;2nz1ZiGB#cqgqPu*UGXG4JI1x*oJaXYcU8M2G+psRU zjkhN=%+7G^KjiK04X1;J@J(B$%ipzUhNA3M<*PFzeRWiVYYv$3w7|fxgyqV827}Mwt_!$|NKXdJ@Y%aOZibOu2lL;y zHFym2f7n8c#W`h%LMrZHuR37yL0H>gZxWlh0c@r_H4 za3&iARLCp?UlADGG8Y*Vdeiwi24QgWgfBw*5^Xwdm?%W-So^ip|L>t(2)nfWDU^#a z*x~&5sQ%lZV++flz_ZhTX()%boIl>+jQE~kdnjdyd%73jNin6<{67yly>{tglasek z=lP*uFsvv45wz<euQLgCSqpd~UE$h^Ws;k?a7+@C;<5N2GJGV<<jc92Yn3UeaM|OB9hI4KTWCg zlK9|J?4OEF;;SU77$M-fGdYO5wGTq^G{F-FhVM-weGM}QJ+t;*e!ez22t`a?>twLz z7j_VlslichEY*+rdpwL?=pJ};9C(?y{VdZp| z%b!WqNbHTT*bv&s&3Ips^NzsmX#SWcpXdn3Yw4#JyvCu{0bFM(otUQBqXDSh|3eF8HhYJE7PH1~H{^6qw z_9zQ3nxCaFd##7bZYG+;gyG~@xNpc@&UFIz{3EAMFID@zg9PEW!~ome{t!9$B3I3?R~z% zJG;p{>msWTi1hf2)8QGCVjIQm?2%Z?hC^NP*r5wtU!iCYVZX@AiIL9I6yXr%DVhV` zGVn^@_HgnOeQfXQeTR}UnM>oF*G~0-sVHSYJQEcu6r~}G9hWoBkr2+9BSEb3=lyaR z6F(POUrm-nMr1{ZB>UKuETi-#Nj-w3{@tNFTmoL!6vh8iL%5pYC1mf^K`4t(j{y5N zDB#Os`&4fYC@`jZ?bAp@D2j#xEEI_ERG^2hKo6oolRxinvm=7(9?5bI{#7JX-f5T5 zxIc%-*ED=GAwsZ7T>X^j739Hm7Bnn$;EaMR>f=sMbgi z|4g8O(u1*g|4$ErAEO>@V$Ib9t3CX*s!@KA*DK7ZTH80kCDBlig+2q~WlGnMLbAH| z-89rVQAD~CiIr?PS;;=5nn(gfo#3o+X5F9EQN~=c&Q*eO!z1Ox*2gK5G@(kZCc)nvNW8@asZxsxouS2qB5*$!Nc{Yt67Tls#Q&)ryuv@K z29p$#Tsk9EQ_KfQ%%%R&1jlQV-n6RmD?J->TvDDe-e5ITV38V;=1FLP1|i?j6TLxZ z4)wb7;MJ5k<^Ou;NLMIUOJ0(cXy_HMo;&Q$q|9G?gpjpYOgf8iHId7%b=o{{i$T5 z5-#F{A1P&i|K43<82RGX4HJ&CBeGcO4J0c{o0aTqy&h9fAOSxZ2lQnSEKN~=G3kkK zK_mRdBsgl^w>y$3!Eq@2L`_np;5h6B=7m_YfJqV;I;u&Wa?-R}0pFPT_S)#~a%tcZ zSIc``?{$9^yvE?lJB7wz>u%R3GFbN@GJHkVA7JFgCD}c#0T04}`{0&F91=Auldcc< zNpm9IH?)cHtJ4=t-$Y{YpyXYxtg-&ak^CMQord8~c3u{)BFgi7xX+;%V5fma`IkB; zQ`)L;2xCskyG>Y7B!;8^NDp%T9Y14jY#Xc|HeuP5A*V#1qHTkvGSh@Cv$*%JZ7_34 zC-|7bIz=rp6}$_>*zH>(64E4}WrISvBv?g^HDu)^C4(`r`TSAmm0E6v3@5xht_EHo z=wg*0>|&L^H+}FiEN6^(FJ!RJ+bLJtN0>{JBkWj{C3LaNJCvduQ9ik%OOh1dMN+?l z>g_N==xNF2T^x+?JI8j@1jjw`UjYtjcYwo`ny2>ZVv)C*CbYM}_z+OI><^Z>E*9x? zQ|N^Kw;ga%xJ{;7pCPyq_swy$xpU?B?{ir2{l55vqjL=w-VJt^n-CY8EuSm>`B1V` zkPOMV!kgo@%Tz>c5M~_ab9|IS?G}OB8+XgzCSc15w{d((5^Mf({p{4By(MsOJFiWT zFz6qvf`72ODiRK@aG@(|Ww}hUs}TH?A$c+km{J?Q{}CIcZiZBuj<7b}<$cP%#<ZPi!Kj=4qejK( zvVJ3Pl6oy&Rv-oDcXMTgN%TusW1^!}sHu zIqW8}JmBjK*MeKOFZn;Bzbqu2STi%%RFo+!|v?LqyAKgr{E z)@?^bagF$SO*v&S7#3`;5w|MaZsX?O5T)XF9OY5Y-|jDP_`C~Q49WJ+fI9ZBdl#{f zV7rfRLE>{!gYQ^;qoZLC0qpLHixc>2$xh&DfQf)QD?R`UZ~=w^N-Qv=0MY1 zbT03#@{Xv&X~vMM1&*quNPdEn*y8lbF_HLCB};oS?~ZD{ojigPGp=#vjs%x83}{79v9xt6CUf9Q<~yDLJ7Nao!(dF zSDL5uf91bEFx~sQ6dvK^UwxexcFh*QIIz&WL<+@=nf&JmU~PX@>OrX3BxGMdH=Tcd zA;07SDk(CMgd7=Jh{a3M>;XwCZ^E)bD9Xj!f;Yi|j@+9}ksoMHNTaQv1PQ08>GYO` z^rw8?!5rf!$mo%S?iJ9TKXwqZu*kra$}LF}p}53GipzDyC#1j~yO3Wz;dtoHf&*9z zCq+zwgKCcVHFa>rT!f&#dN=%agoxU~5%5jLs_YdeBm#$<5hS0X5%29i_eRAz5C6)F zxARuG-=^N!t$fy+>cj01fnO|oHK-{iww7aps#xqG`XJxenif=YP1QTjPO_7r9$Ap@Y1lBvomC-<}o1a&~%9fYV`0T5!&tgr>nSIheipAl7i}3`zWgMF-iYu9TQ2 zlPCmajFMwo6PD1{-eG}!>uKP+!{+83ex9B%YbIsA32kK#vcmQy+1}K=kpC;P!lojd zxCEPVukRDgmEYB8?nQK|FWrsMrKqjIP+w||z|nr7MRKk0UG5OVV2)#!_!`?xCkI0Z zl!c_VinlxT#-m0k-`-0es5Y2Hu=)+CD28oKSW8=f3?gmq5amACK`hd<17#@HDWT)6DW(RCP%L+O6V3N2BBM0Cughv7A0*?bW;sZa^5T1V^Tw17_o$2{;$H#SZ^Q z;ETWoz_q}ufM-m?NQdxRgo}YUkuaeF3II#&2|iaY00BiwDd`EH3H58P6Da`6@V|nx0Toy5#9pW0N8lz`?69t^>2c8-SyMR|3ZZ=K;6juJs(?csx%8 zP618>Y{0>K-IEym2`^wY-bDe2`ta8nm*DyW8c)Q_lL*fs5r9_$<|DiqcnR=q;N`&M z2@N<6crCCU*aT>fMQ-t21-uEc60il&dB8h>=K${po(x*CTym zVm;1-Ch5}_@#sF`P_T#2XMpWP16T|v2^g~r$X{3+U?Wr3kMh9?nh79 z*d~S?z>VSlm82(yv*xUD`^aT3oG;A#?}fOh$qn4g>9ANj=WS!^o1BBU#axG-u&%Bd zCcEKe3EO|f>D3VwmGIy;>A9QO)q_Qtw;7A)kp`Hwo%1%MgG2KMzaiy;Jdgj4rGr1c zj3osT=$ZGqdYs5yJ)fcyee#d=QXil_2Tf%~vrBg8!S4sF3+g$apGr$w2M4onRjMcCU9>k1=aTM7T>_fm8hLMrvUdGqT`O$D`_g$w@r_ciWuT1 zB4MlkJd!-WvmZsfnLHPK0aqP7Y$OkD&ZUDlZ@I{CI*7u1)0x2M?RS6Fk!;53B`+|Y zpBh{^cvEE<`-w1kb6rZVRMeXJVXy(KWQ9n0pGY`ahO#NBsDtHY^}ry?Ec`wAy?-{a zHHBfhh4Z%b@8y6u4tU?xd7HqSJ$LoAAgY(?5N#+N{2Baj9LAL;&D5)_-wvW;;_mHr zjm#T2YGv7Y%02PCD|MytI0}FB^mVJ>Yu>xMG>D2~U&qc%oYesfB{gGpJ(7HQboE2` z+ej5f<;5$odKZ-O(s}1!vOJujAj%1||3MS#-2G%njwLI9Gi;&a6MFP)qSV!e$Yb`< z>Vj7Ofz|23D8`RygJ{W8ggJv+$#h{S-&vwsR!MYub`lXQFj^7J@1!$ zb3O>$*bkPtixB2c>9F_D!;Ng8{J80jt$VZigTk6HYmFhh_rZ-qx16Gjg$GTOp6tv^ zLPy9#TI{E1!=`7$L+W7@lD{o5?|rj^gMHwI`@|2Oq0HPCVGFkQ#+_gd@u@+#c8YIryYA8_Dr*Xwa}+`c>QMBD$v z*0;b#QMLc?8JGojXBR|7RMedj1qp;%yr4m{D}!dDf{I#dg1%vhvo8<|P*$ykQAhsi^^4Uh;ydh}`!7J+olF@Bhc=^RP2#&U4Olo^#G~ZqM_a zN)7oz6OgMYGEVo5Pr)rjXjs4A188Np%Sm4btK@C!s;iahe%aQiv-^GE$L~0;9lWx- ztc`C?Wad71BC_90ap{9_I5K#3b?!sAZqbN#`$3w80(HD6w-0xBb+FXxPqB;{(bIu34!xBIkd? z8pd|2X(A){3vfxz+lRNgk(_XN=&)#$+&6$?9i>={%+#H^)F%LPPivdg)*rVO1B->0 zxx>{&Cq`&q6YD6(L5hI{tpOL!dfNMF;CC&Vvtq#Z)Hdgng@QVoO})UzYT4{+$||T^ zWYRF}r>VUHI$aF4hktt5lbvl_Q_44J3tv+1zN?ifur0b-XyEdlj3xJJ-KsT}AOK9# zR9=O`$&q2UwM_$h!_u1lU777eo_wM1cx3-K;#Pa>6WC`Faj?Z17 zwDBbt$2VECcgmduFxaHWd^1n4#hlqRo_K0tCe9-QxWG=gL%a1`zb3D+rI7z>%7tSP zPv4)?RI-L{VHoEE1u zN~xv9vVTCu@a?F@RP3dhwcG|aEi%)r?95C~HKDacWreRl*+O*xrj#d8qIg;&AFU44 z4Se4wRDdSSncVKW|4e7}VGy%hTx*rNex#El=XlZ(DqgLlS$L|G)oNS!mO{(=0IthS zbGb9CA}U8P4SjqD`SNmAy7A0xwd5X2_aKAdHFJ0+>oZ3z8W7EnN=o$ z(|5W(ZC0_Z?PDh9TCtoL11Ndt=`KgcYSsZ#_$w9Sk7u`yuSmL|?yMi&r?Z_IRhnEn z3F>ybj9EI{)*rd<T8hDrw3ZTVvyk#KQ(G zP4w8KM5IP!bckkjin&P#nzED=9$8~IqxU^BT@BPbFdsLoXX~LBSZC5Iix%Xs#uQ)l z@EeV^hi|7TV2r#*llzLk+}t^>OJ@+Czkt8e$YF+HyWHr>J8f=d=CqS3-?flpyVRHx z%7_;!=6Vg2%2(V5gI)azC&OWw=a_JEb<7vW;Yt11K-k!w|B?sRc#^V}HR@w^Vwpz6 z`x-J8mT5u9Gpl|_F=Fr6PBCK$wo2=*DcGfI#JJdkS<;x!uGhEGiAQM0ITW|C9Q3A{ znlg9%p8rV0?Pz0;SHwE9?Pt90-dn8F7fIGNG@&nkM?$tDB=LnOIXINa%>_4hX_U;Q zsbw%;S~t)9JwJVkN;x+oq#p1;}}^To6-LFfhIi4#3SjAH2t{`d*| zvF0S}GDt5}F&kb3?l}0p#|~Z3;k<5C**6}FDv7!Zz0U!?l7yV4jQNFi%sjifQyhjH zTsfo7DItI`2PVlXa>C@&9`g-^5vIH0amV>bKWILPwnw!&kuGjHMkyTg?39-3$!tuI z+4|SC+$b>hd0No6l-Od!j{zBl-Y6cgD4k4%CzVQ~36qaujh)8ib_P?1(zuOuGMrJa zr%V|?l8)_JEgUIZbSykBetY*eR;Tk>VSr$X&VlD7t?<6$-V?TOPmJtM3!Fat8@62y z1{5LH$rt~C@fH%aKLf;Pu`TY5yloRHfj4GSA7s-zjh~iVi_D|7+Pg?|#|W3PloF72 z+&!66FaZ=Kpiasrf`T|_k2Ws}R%gWk0WDkn=!9{2WHg%hlftkdWDTxKrW)kPZ&cta zr?VrFX7=Q?++R_%UuGO*MSm@)1D-?}^ ztbgh4U}V_`_t0}+o=ZdioS1FR{E3fPv5_bCbzvu zo5@u;-n-s0W{G@oZ_NgE+Zwi+YQ^=j>LC^LUi zY4#^w9NSv><(s89luV}V+Cp&#Yus6l8sEa7X~C9}&0T_Np7@@|lb%}6#Z=gY-V=_w%YxAg1axuHeVhpNV`-N7`7z9}bkOI) zn(zy)QB>abB)F)dWG38-E!5HqrqORQC`8%@S_l+Ai>Z>fd7@@Fq_d;8m1JpC%z3ob z1}#3F(xwIdo_CGLxBBtFpW?bzNn85EzbYm9MWAg-8RHhGYk4#sMIIS}EX^eR+P1xX zh4Nw>67D$qdw*sr`(SSNvCOvRwlNLq?G|eI@TVlb<&XX)rqL|_(9p}hdSI*0IVHSH z2-Tk9zeAR2%tJkuqaTN|>cqhf&=Nda&u1P}XPQ#}#E~NX_eEo8q0fh z(f8;zs(r2j32ixLb^e5u5)nu&s1xI8V&7|t1%elR z^3mWS#QFoLObR4jx`sE594DsufXUryyl=Duq|@@3ox8fp6mh|;8ZL3b~6fR)|mOBme^7Txt1Ne8thAG6)ZJW zP@Tkv(m=U=jR(;ieW@X(qFE<08r}*Gk0EMyz0HlI0S7q4zU-g7O2_*h^{9>o3j(&Y zi!*gXCIPKN%$N3bI)z7MZ{H!H|5&i<_ z3%#fCI4$@SPcS=NBW_*2HaC+}{lyRK?LP*<*W_ytku*q_CfyTPdrB_7`jDTm)rsKw zrhal?%=3JcUwIf9^A(ijpk}BOSI`=JR6=Vku;f64{(J-fl2(qa%3N4L`g#a4rmVvj zy12ML<&Im&zjF~hcfE2n?UzTmkHI#r9!(mY2MNeb9po=&)q7TH?97L&?p(xneelvh z^ef$~3r~OCwbk27ofzowT(o7uj$9~Uwez(2&IueH6=zzR%((JQQ9e>_DYgVJ#hG!8 zlylcoye4z&v2tgQ?VdYr)ulyT$7uKsPw;n*Jj&r}L)leryX~IHS<=@engU>g`6RR@ zNL4Y)29-C`FU^>7XaNmy-RjpAp zpggm`>()tVYgJ{&3$FRsaN-8f>ouAE*s*5p0}{JyzI4sERkJo3N?Y^QLFR2=U&A5G zd>jRjHX{a&$o`2~thw4^ao~i3&8mYUu8l@#ZRWCz?w0s!T5GE8<&mQi?b8h7wKr&Kt9HByPS9&K+o@`qH#n1U!B`GWCQ{(p_e`+WIABb}8_jvHJCavt zn#DOM1?r9MEC*hQGx37jQsc~4=UP-&$7GI$qj!_M$Jg`00;;L+Hj7!D(u&B6W--%) zD8>E{BKxfeQR-|K928RxHH%|gF(uqnI;JJds8&pPg2r`$P|WjS${jpevK`D3obA2q z>EP)YsNPEBG2l8;RdRboK$WuX%?$q}dOnV(>}w16@(T_NmH?-Wujy*HM5`NEZ;6XU7Y?dqWlQ8()F%Chk5;ifLra ztu^>c={F!65Gqb*vj(Ip`#BJhg97=PVYhZMR&Z_<6HCziI+%lJhVa~l8fT99`o(J; zR?N_s3PJblI099@6|`6xD4<(2qa@sO6vMJ+D<4&*Zg(D2v5@L*KVW=H#=ytzpiFV z`s?`XzbQVQNSH%PF^j7%2wv&It66dT9Z&fr&P;9Ro$F{>ji}{yXi@&`0zBoVGW1zq zVD4le7o+hv(VwNo-)Mz}Q5;%mZ^{dlz1D;jsG%W7g5^jJw5fWU1Wf=P{Rt${6H$=~ zoYSyxwxkisQ=ML#20lnNNQ5HZRetJ3dO1|VEasok(ns@mo3QZld~Y@(dpn}GHveU4 zixlxMBmiopzf9u$t%z)+Nqo%WY02_oD`so+ zU+BSghW5V^oT*ZdhLY&$g@LpQJGCL82b8BgT2xS> zs+{th>%Kb$%0N14w;3~gIl!dwoylx6Tv^qb^tDer0;3G8*ZSC`?AkB}YfC=%H`qwP z6lNk-`9q8R-mIAlorKDnycol4PZN0lfTQahnqIx)*M-D5LT_sth8hI|U*~o$I|c2+ zo*bWc1c?d^kviVtFWt9piS5tu84n*jSGGJhc0g07d9ZdWwNZIInrmDN#QUoiZ;)*D3Cl_t-V} z#P$!Cq^Q`tTGdnKyt&}e@S#?0b0#^ngO@1_yJDRmFksKllb5ZB8?&C#;R34^R@bAg zZ;x)qX>lCNFwsj-AhNx>D@dp8}2jX&YE>P)VIzH*HN@e$hi336ovt6k(W; zdax$<0qW)MX19>46a2lkIhjA#7S|U`jkjTB(@D@i=$2x#7Vphg zt8@V+n4oBgi5y&mv5#&q@lp}+&Oj^toQ*tyD$snV;j=}2=V7{&U@IO~D)*?RX%p@c zVu+(2#172C(OxHar;F1@e8Z1^nB~lZh`PH;*>53T+SlA(QgGN>xNe+lKw=J#gjk)m zEi0!gcP*r2$Jo1EAW~#w@A9h;*OWuvG;mAlvZIgEohKI4D-Vz|PAt{e?unl$={)Jy zQ_zBNAoIpiT%Jrzdc`PkKIJGyA|qdi?>JvPu%Fbd`S&luGv}atgaHBohuYv7l7Bva zF~>rKt;&q8On-oRTv_b-cys6x+|(Q#jagG1CU`ZOG3qgnE0iza!H#1CcelrR*C)Sm z0=3*8p~JPT94B#lZn?V9%zyfunE#vYQ-v2uP(RlrHo1XS?#eswx`rHvQ^#=$XuzGu z2(Ezf36Os{(S*6RTx$*Wyv7D5;R2HUbf`~d1*10LtR_I3hmMLwrNx+vOl5xo!R!{!*7iZP36;*G zT*2yIT9h-iC^xyXOf_nhwlh+F_sF?mJ0ng~qk<5?Iu2Iz!AIohxwL7jW%7|IuW0|% zsTNr5rC^s9##dgcCi!Kv^q;$BslSP1Rl0;%nY(DfTzU8!AK?Ppyw$!ABvms_ z4X+jZ(mIh|dN8;5xh5vv2a206>p7eJedWEgWkt%SFcRhkttO>3j0i&|y+2osWgq@v zkz$+mJw2CV{RO8LWQWc}Z_NL3?n$c0nB_yqReE`q`V86xOftvT=0a}p+_@U4ar#pY z-!8ggP|}M6gaJYUIzSy2`2{Qa3(Cyy*s*w`R%nZfEF%=Vu}y>>;S1^fljkraIK|{m z!6m2IeR%tkrn)KyokP@ZRYuqv(TF$g;*?@5bP2q+h|_CJg9NWHY=(0}vJMZyOLb6= zh2^6xKawugid)YM-E^fju8iU``~Bhzj6HPW&E6?dI-^7A>6J0BnF}rZp#-fYn(I_5 zPksm|gAfr%ciz#%@%P8)jmh!MEe1FK^=AgJ>BXlPw@%y{ncU;Y-=kA;K_^|T;s2!1 zd4+PDdiHlWyQNY6xKRjQ7;g^mHkjkUu!8Bw&BZpI^wnK)7rin7&ZZ{SVrgDghG~AH z_fT8$@agz2KWG%p(~kxkU^C7I2G}gpgjx_pMTztf4|##?vvqt#u{BU96m|(;)7!PK z#9D?sCOZi|Iq2Q7&b!dCOXr`RPB#fK21%IKL#>XNpE5y7n`SJH#ZWY5wbCw}v}Y;; zm0sZ_*ieePIRXfMRvC_W$2L4W0qX!O0IRhd8a&rClxIp+naMSogUD-iW{6AFh2p6& zyyE{=W)*ZAv!<=_6En*&@_MPix%o?Okee50jH42x?O{}L-cRtwg@XmVt~4&%i#<|Z zHs~T3TIHN|I%*}h`K-$2aMCV##KYoJGHt?de4lf!UtMjBaE`Y^F^a9zi;X&ZW{yFk`QPVMo^TB`)llXuAW9 zI#gL6L3$e5wwQBiE|I$``yxo!fUjN9ZT2?VA)R}VB##a#HzG)!8FNEVG%2K(FI1j@ zgVu1?$IQP1jwhyLlypLePsLq3{%8tD0rHlMP8kfM?jBK;o}|AceTZOA53U)^7aV1u zF$ZT2#%`v-tPCzs;ddMscN`{XT;OO%O>#*vx|EJhxr-xwXp{@Hbt&3p5={W3Ve~_o z#A>Lu8C4|hX}A4IQ&Ms@vd6SBbP&$k(_Rg=uYfdgBJT>2Eh;;^{lF!@p=a%V#B18f*~ zcME(%{e6^G^PwniRgF#1vZ=1l4j-7ub++|(q0gKTgX(SgE(cR$(UHY8Ut38Hob3)x zM5D+|z_{J7>r3Y+*f$;@D%rhtwWG(T1-r4QJ;dATt*cJ**8i@9e-BJdl4DaY=o;Uj z*0yiSIo-6bvB7QoV&jodJ!;QPWcy;7kQkiaS1`v0*Yx4%9u_AaCOMQ?gl7cy&P^!C z)PPTboa%J3$3%KXt@z662rr+ig?HPY5ti~*&vbncAyEG%#)K>;cd>5TQl?~yPXD>C>}}YN2itoZg`TEqLLh&-ncIL~ z!T+e~BYNj{(QOW7^qqCZ7l^=pnP+!k08x89g5RDA#ZXiC(z!~SF^%v?H9q1X?jHsY z6&s2LC$0^b>N)YCOIrZQk2roGt^&AX$8rGIKCu&hU~NhF)9)=q1T>nO89Mb3&V%;{ zbizvo4iv?kCKSSdOv)l1zYPRMF#VPFQN%Jv-U09FIkv*)NPYsY%`(wVWC((MY*rv+ zwgLMBIZ)|I=ljzL>M68Em?Y(}mpJ~<61vq4I&c>h#|*Vm^O)y>T*fKb3`up=9zj1x zgG*=XM~;pi>&4jZ_3X|%A=FQps4F{C0&ZntSp2EqYCUU4ktvaa^Gx^}KlV_a%4s12 z7nE1XUp`VyJC{xvR?m;D!2^}l@773P)kT;nyTRC!UO1d@#@MQV#7}go+l;x6NS&(( z_2bJXG(dcDxjksf__jyb1Ku#0E)lSdOb@Oi{QD)c-keeF!wLXkdjQyS(z;?vUKrmbiAFGN1HGj`YD*$vpg$OrxtLEW=cOt> zxrQI)*+KBe23stqj7flyk=Ss9d)Nzr?SPTcP+y7P`G8?~j(QrubYlUK-yM!BN8`h2 zyi^Z?iM#|QP&`is%m8Eq!iFo&y`Uc<-K`VFKVe`A1&|s}jQtZ!|eC zmhRP+eQ}ucN`*UZsj8!QjzGl2Zp$$d4tTEBWeg*54i5ROUR8=>$fV#~-u9TjUok6i zjF%Iey>xc(!r5{1P34JL(pSIdP-Kj>M|mNZL_YI7wyg3nqp6RJj8RpPL8&j~=EcO$ zH0wikc4&UkphQ#F?D%=J`>PmB9>-@JxkT(Vunp2Wctm- zB9|ugR!c%_Jqf-4fJRh*_EtYp@k`d)`W3EQ{?G`N3b@J+ zhe0}ug52a2C7}UCmsquqG4kHLqK2mIKh_O<+h&OWf@+4%I(tkk7OnQ#u|iDj(L$zVJw9y5 zy)c%T9O-*5Fvd!^06@!jk+^}6)~BN}P-Hy9SDcpb`<$2ou}K;6Zx0FoV3A)7i{A7Q zslLI9cRhHr<6Ta)c@Wii{ufbYJ&5Y-9z^MNP7Fogp#@#RiG5l!T>ig!64R1lc1wn@ zaMb^sRwr+9V$YWRC`TM%*58z>5Nosy>KqTEG=~$9x0G-RCw6YhFb7{-@w9rCaO&s8 z7?;D&^dQPJXcW=-2Ppjy$G>v~f^C|WhM{u*)2!71jo|J016b-V&lfiAt`kxBt_*&{1rB31yL!QLJBUvIhk#vk=VHlc#F=6}zSHjO6Qw5X0VMtaoHdhVP zxqgNvK8O8L?wSdlu@^wMr(-fwP@5cj*aKHNr+^5&OXE2$qB@S-cIR)D7ypS;PcdZS zHg#DKjEokHF`T#`xrB5S;D*X(`x)P?-a2lhv=9+OFx&4aNUJE->?jV42~W&?j(6Fv za~r7zBFeMiaa0+N7y%zCO1&p|C{0v-niKszDDtzM=;J|A$Nv|Ke942Nrf77eOhHdO ztYssO<;14LT6%H@#i2z*PS~~ktp#Tg#gPVa5hmNLs&o{dUK}VdgS`x;*v6#<(f<6y zr(6){W%*$Z^u2GfeDxXSWM9&elUHykC4?lazNy^pOA;L8kKytVdP(oOHu79A{?o$} z{x5c^bG-P^&#;qO{=QosV8VZShj-b@Gp>8?@>BP*5-u*iFZJbq&A-R+Ud24qdWkO* z!^H!xGw0frJCW@93*uh~wb&dhA$GN^3KrDT58ix_Be?&sf*HgA`wTmd<+EJ!D<*#N zVd)i&`)-Mqw7|&69#iL<{&7{XMzM7N@g*o{;Dh2VbeWZaK$nw$Um@|N zgJbdGXcEuK?R{{((^!3rI$(|DGP*S5z6zX&JYNTYMuICr8o*)WQgDT-{i%r(uGvtB zaA)cI^i-H!;w`v_;27#>{DxRvL)2G{R_bOvmVK4O&Asict^{n*?APO~6b2l2JtD@c z-H=jPyhMKz*lwJ-`5;^$acUfA+f|8sN(y>Ko760jCGlK5&FOF$d&nERv0U+XYCxh0MTSP7<5gQ+H&xnO;IOst}8Bq(_JP1(I3lX6}uF!In+rra>do) zt~u!UTo*Wx#dSKkC}IOmzlp1%X2DYvaUnv{AuPGlEpta4{7(!s&o$Ndy}M!-CJIxL zKP0bf4i3L=OGCK|hy+e|b!QQLb|91;&C#+7ZQwJTzM|ttH(`Hhj+{=B)Z%LT--lC@ zs!6aOO@_Z$tjrrgdN?XD6TE_B*cGX;Zy5%TKBHMr;tm$M0bKME>$JhMU!6DvObcP- zIdL!^IC$z5YrqvXfIBHtri4g&lqt=)orP^S((@&_(j3h3fd^WA<;=sy5j0u~hs_&2 zs1heW)%6b=B!S2f`CAYfBG(&z@3vkIGsj2i`y}b2kMM!jk6wB9Nz7ta>OnA?!8O25 zKmy*Y@p~Uo2WSN7P#|wWHH%>ba0O5SCC1)z@ZTsN;c55=JL!(W#)h~-8cS-HrL@WT>!G0`7psLPR($5To5 z!K;Dc2(EITy-^iy#uNp_SdB;*jnsEc0Cm(c>v5I5O{)aOs41}2-@}y!(f*V_ z=V=LqGteRsii1-9<(EOg(_ELk3u%@3%X(A^auf=JBD+f^Ai!Zk60`zTjQ|x5X)PiQ zMPrbT7{_6mg+1x?%xbVEokxcXpgugLX_N{UGc$48!LiuCaRt~5;)mLCH)FK-HO`)S zhb`AQ0be%!9ZE_RI|YP{;M!GAKsDI3B-N(d>Aa&l|6i2if+$N^j&uMN#Up#lk^LG$ z`;GLd-4zfUmSfGlBkhAbnmaa=J5xG1H{~EKcxp0r*WueGK-~gqifwCk_kG}_$BEu< z6p`Ulva~rkid2JHxK>NYTB}nXuXnUIq9SFg0B)+=X%_PKe>5lg8>3j&Osi8q^f>=CEq^aN z`uFG0^$UtZS~UgJ(VosCf1ITsY~i9%JOOJce|7|BaL=i)-NL>!*Vb0D&whpxMzg_F zptJ%aCZJJm1rgJc4CUY!jf2|%);9IIk(y-DHoeC~go8G!rysX!_kmU}) zL=yqCaCr(yVQnAq09_GoV{E^UQhQHG!)*8D`UYyf6t4E*pUf-NtI zXAhA2eHicduhvkv|2HZ)LmRMjV+)crK+ko7Z=;z_)ZpY6)5M6y2XL@J9f5RBH1P*f zHulWz{7J}ADA)+|<~1nUb}$+Zm0e@Z9|0~41$ij)YJ6CSXp!CIRa%Kxwf3S1=)5b9 zmD8KYq26JPfFh{QzdMpYYjvQ!;^qVCjIN0depPRW>9s2WltTa{YW;3KjjqwKKeAh@ zKPH#GP}*0-PY;mqX=%6Z1WDxu71ZSua)6`Qk2L{UaE1!NR1+Je$5e`6(8TKL;&md! zb%pe5Z%xLid6JNbVDtZGibe%i~?17N-DqATGIWI-Ql|jX5v~&Sv;cGEp097 z&(S7ziScd>EvYFHmhRQ^>c0zWlDp9+W}*^f=7C=WBkcusKp$ET-&U>B-+x@tn<%IW z)oMXAb8wyc$*2l>-|hT~AW0~=iB|q5=%`EgwDLDJmcKz8M!9qCX^64~M%(7!(uN=4 z(+^|?u_$diPPlkYOxS#z)1(7)r2{GF=#W|#>8QL>RYzSwndId(Av*4{9VoH1S8_tX zphzTKRTyyNGL2Nnv9hN#!1vlS0z_djYC~q9LYK^jC#uWe390MzM}ah<&>IY!V-yMl zkN~*K;u##9P0=x?-?#$#G0W%>O_el%)$us@Hvi0>iiE1dh#P;1UX^rwmKJ$L0*_-nQgMB>A z3fDJ5QqYb+>oH|iO1Rn9@#pmZv4Kw@HGAPWj6bWJqP;OOp@QY57CyBQH%x6{t-Qju zyIZ`UwtTI)AKp%P(3TIXgu-F8UuS^GaUOO_V{m-zy^8< zskz7q&o69gL<=ba$slHhhbt_e(TE1M49f$;Fe{5XEMynQ{xF5(B}r`(c!k zeLH`+RyW(=CZspmvByqZvJ}@M9ShfD0$@cryp&-aP(`iE#DDa4Io2pvH=f1HBtW)N zs-sP8C0ph=x3~PFw~(4n!+RNFl0~I~G?3!c{;i&FtxwG_9!gSGcpB2+QX`cHYJygk zg-0MU!9Ml}6#QHD!A(sV38`E12Z2lhpTpD$5O*5raL$28R7g1eUj?m0I-ys47{!yG zB>Q=?#*CglPV?4072ewCnQT@SUb}HwJfy{B`)HD|@B*3$_zJmMf-bfXlT8*ZLvP8% z=!qPK!V8du7UX{o#io)F&mf>HMR(Ad31-`B7o)hXkxq})7|(1Moyzq%|9i+k3~AN; z>?Ia9Y7>}fPtos3c7sGnG)o7OxeJ+J-G}}SsUeNO9sHCwF)F-|@`reOpO+LuGiO6u zy0v2{O3${Z-RV7)inginzq^x}-AhT(X1YJ`!%P3lF4ck~HUmMe(`k89OMp)CNPkHkv&P@vPPxM4!EBt8QjNS3{q@{i!xL z;;K@z2lTOL-hyKmC!Ymbl~30R+L{$hT|c9PGu33?w)3~sol&R5asJ4gWem3_&z>d^}Rtme$vZ zzczrgRwL)wh#+vnpEeo{EMc^+@@KvjLxaOIap_6%Z#>z4Ox6Yt8?u{6QZd<8a+e7Z})JD zQ0k%icY__%v2PoyHq4+iBRbPk?-)Qf#Cl|RO%mpSH9fhmbak-Wi)z;g6mNLzL@{-l z#ojU?8Tgb<#s0WZJfB^RxK-+=n@AML{=$a&kk#i5(Hwh@ripptc}!T@vjzd<56u!n zK>F1X?C*zUiZ{%MH_Fd0MRT&rD6YSRh*u5b$_A`-{xqN&!#s}7G6LZY?!{ow7{qsA zX(V^1(#*PHC3Gq|G-ENhfvPlx8bz6Y?PTQngJ=lT;(RpqMa;#;RTYR~XFF2)fjkeX zInkW@_8tC8%_MzUw@#=j1=HopNFb)t4umDyU1Ze7~b|!OBd8Vx@GpQzXp!|I^%*3k%&rQP( zP>nklStgD}vC+B2j7x%ZWk-Si*`RH=1;}R%R_96-RnvPPL0f|AG6>F*h$OiT@bwNn zgRye!UxIT-syTEJaIx~GhqQ6cQ@$zJ-Qr$1Mt4a^ z6T`{Pq2e6DKRYVOqwD$Ug!9sjyWDZFJ6uhR$V7MiO(@eckKDvlAPyPx_|bEy@tRmxW*NSq-a$L2Yx=-qbZ z#t3Madv0=5S2t(O>xkP0a7O(@t+*L?0VYU48pKU_2vfHhu#t+b@ht|rLmh^1ayKJ3 zT|YqC!{iSPRJY2Npk6YF`}al#VJ}O8hiPl8C+wE5Dv`=Yba}X8l*jc zqo8NdMDi$#`mRB{sWn#3H;8Ms#Pk1-DYZ8Wqfmgiwbb7>pdHX`J~r67=(5#&#djz| zQsOf9qkrH8X$0kJD7gmh(#Kf!L!b;7b6VmnL(@p8p->}rjX``}nUe-Rgy$$v)#C?Y`(i%0oNpKCnry1p4pY?Eno9%KQ4d?LmDj@LS83S4|0_(& zreSY4x5S%)&E#XK-w6C#0PsPG%MRu>J76j;KBD#eRjt?!B!tRe8$gonZT0a z_jkTit0^M}qWDuM2z_E@Nf)<0I zlUR&|sE=?{1v|rl>r`L%kP{+(i(wn&hse7@MF`vd4uAeK*S6TM z%amU2Kc#ol-}Igau}1&_AT$TR*#M6v0&EcA($(Y4RUO@&vD73&P2DQ3td-uqUDkg; zuJpSGUu-zbd&z)djUE=UjouCccVp56fvM_P1G=a@)(||&>nujrskkR`ItZGBEe|`6 zk{)?$htHwfagRh7Zgb?(_&!w{O%YY5QCtfSEmYqzh->gLN1AGYHZDzh3OdSEt7{Iv zvcFRlHjO5%jx>ml9}#0AI+wWU5gz1^4C24Ri-qW1_%He0u^oen6%LrBMB0cN8)#@M zIz~83UCj3==et+&VN`Eu0yq&1&;j*raAlu_dECn4S$ey`(p5rPprrJuAwV>_mRtqBktULNInNj>>Y&(UJ@2=&eINzEggjcqWrpn zZ+jWDq0)J-z{~K13*RH@h`ZN~bu+4WWLl2Y-AFa2CGlRaHzwtvf0r9)K@d|=SQcjL zaD$Xayu1i<00aGLjJ*rB(hKY@D8JBm(U1a5YaQ;3!aI;vWqAhao5F@uVb!6rMObmD zi4Zh!3*bmvkEAI4>d-qip(TYiXYBM7AJSg=e64sBHwTBP=t6(}rg)7dDP)c^bS#N> z{7Pkj^fFozF7dpL|FWf3^yqY+W9bgal>M&hpOTafL6|hJRg&uJ={@L>lyY!06_kz0 zlufS{zonV7qYUD1+~h1r8N@o=d(1`|S`HiK&kYXLbO*=+se?f*#O`E>nq}Y<_i2+h zKW);Mt7-pyP03_4DVb8)ZT{Fk7-saxSzCzOu9e)7huxEsz=7B}Xtv>Z0$@umE_(%( zKIon_74O%qXvcWIf;$AJ4RiN(W2BsCFnUayuJEuQ$~3Q*M#pdpvH67!%3`{ zf#0xOS@0Y(lY$iIbL6#7o3U03VXynebEzh9_bqRasPAqN{SV~(KaqrntoFk!NN~b^r&{kPrv3(j zbjDA-Ql!j)mVjBpyL{RYoeRDE7iHT-(v6YBl(LDWQ->6s7|~u=3L8+^C2v8GI7U@) zph7T-bRPpmOop_CzxBh6h$@5asA2eiprM%WTh8~P!tF>b+!F#;0OkXx0^$M5AT|mR zM2T*lkGtMc9Fxcl<6q~g{ja>wuWYGOJBjo$S0O+x@{q~8l>X0?F6OfcW54x;$u8wz z&l7=R{gk(#CvTa*z&ClT=bO4y=`44w@CyK4PSWyWMOe?T@(EWhRB zCiM9;cB->W?RnK;loISwSNMTn@+vuCQtqcdw1g2>UghyRz~gBC~&Yo*YWrEKqXmzMaM5Wjt6#?Z=Rk0 z$_;#%Vr0SY`OBj;6X*)af!xw<$65ahALXSfuu_pfeBesoBW&6d&qeZ7F~ki^264}s z%nK)M)$X*q-O86!(063z))dmo&#^O_q?$;@4yDahGJ#=-DYK`Nai-JXg05RkE^NO} zeOq*9DjE(+R_dma@uZiM{sMW9ELFaKf$&WAcBSkEvL*P+ZXgJ=mI||$-8H)PdJsi^ z->tkqo%CkPb}Q<1@*;EUD<$?tlEZxUm9q0iaP!lzlzT6dPst=@)k|bIQ@pEa@XKU6 zAuE*aGvHS+XB(1?z*;xe#I+-fwkfuEy@QoIGl)OQR@^g4B=caG^2AKifw{d)NtsFd z6O)oNldNXG+oc4}BC)+!&;&y7g~wgaPlcvO9(>M_Wi(7EuCqG(g~y#t!~%N;neYX| zqPZH|De|T=e-;@KHdG5CYL$TRX#Hf!c0|c2#sYkXaM)sXS-_27W|60uV_THq+4!w5 zS2AXkJYrEU&&Jy8*8U>%9GD_9AAhYx%q7E^E7{6xb4d>IS02tKUopex6>XkJo@MmY z=i!FO*A)G$*Qagr}F*lNWb^GOD2qZG|2eH@pz0tW@&#pI6A<=uqi$a6Ggm={9y&tNw70z4D#`W!*q z8u785eoSSil?MvWny zM>6eBJ;~GJ6P-?1Wm8^WK)9e!zC!#A0duPt1ee8n#6py>ly?`9RMK8Kw}5ma0m_2~ z>x#UxZe zCkGc@<|@Ksa=zW5Z$Mqoga|HPh~^G?>3%KDAWtc69O$fnZY&z_ARjXf`$N%#B_y0M z4>l-WmXQ;Nx0dip69D&@6xA#vs|hn?g_0|i*O(b?ikfB8iv(qVrR81J+>&=8|LG|u zX*oH`RBlmBD@Zz1x<$!cfgbklmZI-h5S3wuysPBCOMYM?l%kA0Qs@=A{dvs%04o6V z0n-5!0K)(YfKY%hpl*^PtR$<=Hzz?s2XGc}Y*JD2N>c6>xgRg%K8NR9=$voIvlFlq z@D^YpU_tQ&ACR^ewtzp@Q0}yFC_F9*nj~tLvUMGq z!W?BSt0lWeCCqp3$Pzu;SSsD5X8Nlo*E6V+Z#1Znc z@?Adpx^F(dtpH>LCIFHFv49YOFF*&VMlr7e@&kpW5ae^_d1d{lWGJJ4uH5*Pq%!w6 z7WH3G7L$OAed5J^mTreiXba?5ZB&kaM#4`b2s6bMmCA`D=W^wwr&di9N6U^f~#; z5iu1d1q1+m0gY3zRs@^|90F_yQg(!$HBM6rj!csn3BR!)upTy+NUx_Rw z?=mW{6qS-B|9vz;SelfEC7Q{eb&CEJZsOdc1*UrfH?33BPm!Vit7%~AP8#S>-e0GD zd5YXJlwQESxNXsPP81dXfQh4*+;l~`aGG@Xk{hllji-sk9ABvnDkCeH%`25tWu%!* zQ%cLpSrV&k`U&Ec9tXs?fd|gW!T$U3!3?c=2$U@eEoqEbB=UoHh)kw z{2V#Rbh}^1C#^h=5ult;I)h(auX()S6cg=5FWq`Z5HSiPjbE-QyFk*$n$MtS*nxPi!5l+S)Ad^&r(3eyG572pR0 zOAM;1d!6`+rdjW~ccagB+o+r<*K)2I3MK8gNMKv)rG7q{)mpbky2U zgMO*f!6S!>>|O7`TcYVh?VTgv(vOK|OTva|f3l0dh^O;<;`&JP6@AI85_lbs_Q<~| z4JA6rk>hzidGTmo1R)z~j9|Mj)!!fm^yTJGWWsr#;|Uq(DWDeiiI(B@XHcLk)>M7wC0rfqhUsQ@te{Nz16z2j@*d5lR@Qzy$PAix za9|rTFAofQnZEr}qr<)1c>9QElS?OTblcQKZqa+VKP;!KFuY~bxbO{ujbFTV{upl; z8FFSd4NZsAf)}|;!x9;M&7g5-GKu*NXd?%>_I$tHD3CUIFT_aYqK-qMS zERU_2jX?}>2(S&X7Vs7z8!!XV(oy*bZoeJzj7_IZxK7aUm82Ua+0VW6U6Ff>xOXb= z-5?#Ax}D0_8)Pu|^*aNEBx?Zgzt!fiG~OT)rt>>NEP6uW0OERE5&t5+O(*{j+VQsX z-Cv}mlJ^(kO+|l)f2M^G_mewc!KE@2*dLWPH;JVa+v!TFon!QLT^B_af@Ifa!AYpr z`-e+Nh>=JkS1zPuMvp1w?3)C)vK&%!Z<0O?dq_Ee1lpA_TNRu11H&-VIrSAPcA`UXN2&Aq(KYWH3MV?;LHuFtajAk21YSO37L8S1b{ zXZvlJ^2}`_VT!WqHtEW^b}2h=V_G&vIe(kXB3+7}zC%KZ7u#@InRAu2Qx;W|XfL() zvhr0m8BB7N2h~LMV((mr?}zqE(p@sPLq2T?+T;&M44C}=l1}6?gnYQVX!~6 zdG0nz!a<_xw(c01o^K^wB>Jw<^s7C#`38$$>MD>j3m=ab;zIay|*+4!cot5ea^e5>{#o9=s7}=>zZX~@Jd6Tk|{z_Yw zLya)e>#SUDB(r=9bCJmPs5K*B4N~Sb;rosiinEEN__8Z1qX}8RLb=^U!hKnpzO7!N zbZ#cSEr(Zdoux4(zv^1ljVeeF93Zg=+`;8d@mxfdZQlxIZZjE0rYmYQd7VTmiEi=& z78{!&G0gJWD(F075eVaV^;hMNn+#!2eEUIvW-RmbyC1A(vdHic9x%}iTcm^$W-wW# z%plCa;Fi9eFsJ+z-T}3BQS~+PaC(C=?rVmLZWB!dSMc%NJ6S`bqV-sr-DH@qf$j1T zyoi}DW~4Vn>oID?DxJNU&csi7(u*0xf1?egy~dGvb7c3Py&}8OD^he3<{?q>T)jZ* z-d1*aF@wmzl?Pr7xVc8@=gq_itEH70cDK=8-%Q7+8f;GcjNNysiDxd<;qGuGlr4ZDOdGO7v|)0#m9%~#;bn7(J-`lrx^agazBxrrh{9)K+0w1 z86W0VgRifUR0laV#7{Zl!*mU~u>#+%h5z9gQcI)CuT-jgb$p(JiFFKlrbzT4!K05{Tb+`ABA4w|I1EX#hTL-chU6h3KR8s|A?-ZZkAxCE&p|n64;LE z-(`!2o1c^RNe(IY;4&%wfVw#_KqShG?U<*SRXNJmcFX|7QZ4RlIccvdx7so5NxG63 z%&f!?Oy~B@Q<#KKXwNJQ5F8+29j{HE{7CU)|raJ|FQUqG(J<28#@P(Zo*7J<=~= z4%T~sJw}~wBz`9Y;-`7)vyC4?O+9emTu3r#+4+0!&^53_YX^a}yff1;K3NN`bc!A9oQ^s)K(KDOMkZ4f&N~ryW|+&S)6cfMO}@#x@nJpM zMe~i#Vq>$tFowh^pLS;k8)D~TW$(uM#$4rgccyzt8_Gu%N8ak4Z{^Q5i{}vgX>jj} z9?XGGe{Ps)m>g&6FU|e1X`WB7Y3*M)I^}g-tW54NQoO>MZ<+n!%6H*RC#Jwr^lLbi zOL|URg!Ft#OF!0)M0S$_{6k2VisDRCp2=Jn{Rnoyb9+Mg+LfC<87p~0=^6>kJH3(` z$&3#+&@}k1Zd;Z+oGTZ!AFC;ug1Svzvn_TyllJ!-?#MYgjL}Bb5u3r~5HGncWMD zn))#f#Jn+DNLu+7PDuI)Nh6~a{Q#yU+&!O`<+BDHqjBCl#x|s#bd%rSNM~OvIPTW5 zWh0$ywmv~>=NH`@z)YZhabzO%B=hgrl=l*ur`ucJ05U4a_M>}xpf%7qJ$PuG?G6M* zBJ(A??TsB@yixS&Q+U)L0{PqLD#MeRuQ04NCNl~8|5w(Pz*SZB?KA&5_ksurNZ=OT zdqG13gsUkb>On;@QNdhrNkP#NH^enHSp*|RC0})L$#8jdNe#^$Q%k^I!Enh;5z)-o zEhXF%m-{{Es(roR$B*at%zx%Tb7nhpX1_;aRX$O6h@=Q&^F(?#@~*G%K2iGkX24p*65e{N=H`+!UQpKPsN?`58z9?F4P^NBQJxLDhPRkiBpCW7Drx4CUWI!+am@#MZ zRd4!`#Y#1XDi~Ew6jx)Z3IpN;eP|VHBjZ0HPMEDs>_vDlD)s4h*Yx7N4WRlPF|ohwrQZa*H0Af;wZ>vh3**nopShz&6Fyp z#?cHmUHlnG0q;gnvX?@#u5i?RKE%=8Lq8$y+~n|WeHb%Rw>NB5y5c6aU_3Dt@K2R} z2GSm)lvLq51lyapjDymDzx}yl;1Eh-^X2g&w32!H{eKNrd_0skbV)~myHREGzy&}d zfbUQpb~EId`>*CQIz_fC8TX!HbjGesz;gm!BWm=f4i#F_TRe7Qf=C=jT^b$NUC|n& zEz=vk?Z4WZtXMl(VF%Dg4WqDz-@S52yMk(W&=&H+J!_1@woMRk#M37}i*#pH%A&v` zOUX&LbS%Wb8-!0qVLY0`RzK6;r;W~mos{6}$DB;dJc6Pi-A3<7E(xG{6h z1A8Rq=x%yl(Pv5&9l?{t=|qZP6NKkT>Viq4fg`CU#Y__OM$$~yN*G7cC8`=Deji1* zsAwG4LTE32K29u5qJ|-#>Ggwcd}gex1Y*rW&(3V!%DnCwveROz&*mpXd{rLqcstK0 zQ7FYv5+0+eH4B#AM$=VBx5kQh#*m517K@%^Xcv7uRv5<8WtJs=A4|3M!u6c?XW=ia ze5klPj(jX}BP`m%I*M{_tVJstXVLs7ShQ%M0LUL@(ZVN-pz+j(H54Pq)1Uy-!!RFx zhK&(;zieZ4$<>DIL?Au2OUcjmqns-HYmB%(o~Cv0 zel#}96HSP}8e?$_w&<-%b9MXE(c=6Bs&1Hq5;NQMt|TQW%=fnbq*b*cKWB<7DJZ4s zlZ4Ym`UR7*S0_>}Jx`Xn4to%z^HW6FWIDhGi5HW}t5M%1`0J`Dvua*d7R*{S>Fi`- zsUm0!l{Cx8Q__KrfPybtA-F&{PsVI3xC$trB)q25dh|Z`PNjVM&nVe%8l524T9{{0 zAB+Vj&!C-jGfA|ViDvT3NHK0EWs^)24`x!F=Ndf*=1`k8piZX(Mek#*OcL?4D3X?p z6dPvINOGGj@Y|O^u}D$*35BzFW#ifUXYAT17R_;{=#@qj>mB?Efdsm|Y}NLEBu=K` z>$U46@gR++daq5?)2J%5?gs}4hglk1tZPEq7l|?>on{d|A0cg-bc8CU-r*Rii(V<2vj+*Jl>gJ3^jnW-i$Yonp1nc}#ux==~_oOtt7%}$Y ztZNf5Cdu>J6riHbH_W58%tLIPN4az_LAIGs-5IS)5E;2-^9n|G#sC$Mv9yooPJ=mq zvRJl&I-)mtZUOybuA`^IeCTG#;hV@O#_eM9P1JvgXt5M=av`mxUq^^Bi)bK~j1Y$x zp-YyyNCf54VoRo;9J70^vm144juVzF-EPs$h5+pKZl=7NNAnme^0>t`mR<}O7Z=k= zW7ZeQ<<+w5zo?S20ix+rd^x}SSPWlEog8l_j&d`ETu&5RmZH2jB#V!i(E>I{I0*Eu zhlzYa16X%aEvOX>7k>GmmLe{nK1b7bE1%v*h4ENUzq_3ok^QC3(Y<1LpmV4>;?xM? zu!6p#6{F=hE9f&uDU)T`Dtf>${%g6K=Jj>`5Gk=1yZL80Cyuc&Ctd7nRQxk~gg7TM zqb`0O^2(9xQlPUVeht_@x96V$kI;HPnm1Wyeo4(7$#1&Yyn((l7NW4qCyV|YX*J#1EFNv7@t9f}xrqYJ0|p@^?8?Et z)1{uye(VFgeD80$xA=AwwWsS}i<(W8%$kZ1HOD|Tdw_FdXfcb{&7sUvs%J`fQM#2HHR|-zPS;=^b+g?S%Hhkl(e#c!|8Q>n z%DKHObQ|cx+zU2E-+oh7CpL+WC8S#X%6Ms8XOFqTN^I1ijLk!Y+(teuT%OxT@eGx= zZ6TGg*|N5f!kACXI0P{!#DAi5;@1}TjxM!lx@0MFWB#Jg4!UN!I{>!UldWDU-PXk$ z#V@l{FD*doZivB#!K%IC{`eV*icG z=-Yns?R{ufS%kd(0}W-WZ~u%e(Q`jFVcs%%KlZYg1ylQbasB@Xb775 z7ssf?>BbpM0O-xv8FBnLwQzf=C&FA~!xmHc`m?W4PmtE=PN_v(Qe)BLr(pFII9hJe zQo!j`#LyGuQ}1WpS71F%sKZlvUorm#H8h>jEw7GyyQF7<^E$n;a&-4MTgEk~aV;>5 zRMJ-*Jb`JX-MSXG-1+x*R(n|3j=qvg>0MTDly2{jABeX%bHhc~G72*0{bbQfe-bmw zNTOm{Pm-UfkFFPqWuAr@@A}x48;azUc+nii_LJ1I(X$VrpwFAv>IO2Sn%lcKc~eB~ zNs6T_ABdhm(WIsab?2mBrMr-2mtPI@Q(O{?W*E;Ws+n1<=Qwv?zmnGhottzRE zQ|tSJu2R68{(2%pBJuMj$Ut9R_}?+1N%Xi%5xv~)DuFLmoc~*;jxNr{HLb0j)yO%v z9;Fyr8eXb|{G`_{<-hfx_YxPbqOWnMhm81*CQ|dEy&U!$N(vH7K5#85YXIM!d)edA zDbO$cKqpUE=Qp%g#Rw-{Ui@8e$#O;bf2gldxt?Z}`<=hwcH*V*I`5A5l-vG8B}8Zc z5UIEDjkZOLvRib+?MSrUQ)r;QoJ*p`q1!Z?Hb#r!J5)uEHNxW$T1=*U;;TQXxsRr6 zV?O8Qi`C99-Lr-J+B+Yi;*US56Sjf`-=!lc`oHc{IOX3LZSK)tqxC@TMrYMO8uzeT{F?kW+zUs58pO9MW>#GZKN9gM z#x0~$uOorF1vZx%T@}5{)m#_N*KJG$yg=h0cVEnXK{3rcVnKH*h*;c^&0(Xl(*O?+ZQ zhk0+8?^N!{-Yh~&m1%lvtLjAjns6-k65bmNZa65ZX34n6l}}*(#d5~aIGLcO0rAr$ zrfR|%m3J09IRAtSJBtvNU#3+?;bGuAD8@k?Htj90nkIVH;my$Xn^K4SAr>p@ z@I6LTU0!rlZRY_-|@QE!5)s6LBC$f$GMBOcrv@(K}_@J_gvTNZlSD4K=eWOWd||20nbEt>Tv_U zl~JKde$|KGJJV79cw3k^5uTCznysK%iGem1~SNxA18VdCTg4E++@lO zS@Je-&b%_h^eC}t)l$Kn-#k6m-BPlJ&62D+$NFY7IiLl9kJ0Hsx%eG!R4H$USkaQd zMJGeW-j@6aQmk@DFt>2}xvf~;id(2~hA3%;3cszbXxEw#^b&0m{FsIFN^gYZ{)Ec` zu?3nfZYwvp=GfO2DJ$RQZxHQoBObQpEj)I%(Ur}}0_;jTps~U>A|#aiy|Y2L@9ATjv4mB&dvskCT4~5?q2hBC3Haaui=n~!;2fF;;2t+ zaWRxPW|PF@P#*16W`m0V=gxBsqUU?uzwWRK|AgkO4t9!Ui}d$+Y+7Vfa-sgI4zp^y zHdNX*56y7)YuAdc*S$Gsg=YB24sJEr!U}XbYGP8X78lW{>xZGSojMQok8ST_DH+C= z>u#Z+`^N^T7cFd=F7?C?khnF|6VO-5k66xfViSTYGLQEB%sm@3CUms;{HYsP9JlKS zc|=SY??Od0#Ii8{4jnop4utX6F4-fPGdUJ}6vtqWNjSFSQDnF#`n2OASP#x>$KQ63 zylkuRxY#~GFHZ~BEQ7_qcD%Vu_OaI=4`pL}S<{YpVm_x|AVzpyt)(W^>ys}fe`~2f zq!TYhpZ5GmTKPhHbl^K!V36)SxPyPJa~6`_LYInI-!!-VkQO-FXnLdn)dC=TjSG>pK41pNwxl)N-=fRkJ(pU~y$>PesQ2e1cP6w67L_ zOHtCJMeX~%oon{l7r2QO8(v3rH6LgrI`=^Hen`&g!Dk!j@)N;h`Pdc*p4d|mSPu^^ z(#=Mro*?^peV^S8tDbQC{)t!~%PnsgzOr*ctF=`(cg6l6R|uQ!4%h$%^M)swIOlDQ zRcM;4X9%A@yf0-wk(2vye*-Bq<>~?4n^DbUDdV^cPLR%Qrlkz_)h0fB(eXc-*xU)( z8Pi@dGezY_;L{UriqWm?m>K~*Oo!P+7S2~JJ44<3bX%*zS{Jj zB6BdGgIv2Z;T-43}SK4Dsuc0UU;q4hLf3_=NzvK>A z2j{H9AA)!Ea$x0;Wcv^KV3ks4$`uK`gj3`QIdmk?q_p^1&9pwrzFKe^zV<*mWH)g2 zY)nf4g+LyV0>l8pfE!T#3EY7~AP-0ZVt`=41Smii!YTp^0Q7u!LIpRn4bvz$R)oF74cz)N| z#*~g^qDZPxJf%)ewS!wMTH<_P?fg_;BI-h4$XZdRBnR5Kc{3=nGPeh+tygzA~V)HC~@^0J}muB(KY>+U2f;PS| zQ*` zR^hTlqq#ikEyEYbUXDi775qi)eQ1vT3cWY0Wr^0xE#hslW-i~+^0N-8YhmFn0*}W2 zvV%2lbw0t_5Pp!&`P-Vkw05^!&lZ`V@-xgy_Rrx)PVrfC=zPA1IpyH-=|EPNuq?o* zFj@>*z#BI1rVkKu*P_K>Pu9VBxDKj#DC_BpPF&ss{)t|S3;8*^*!6WOuM$=GFs4nC+%W&*NV7^-&cktM#Tef$> zv{EHHDBaomoAS=*`~_ov^7g;D0Ym95QL}{Szp?KI6wL#F3N_<7XY8@qeM5Y?ln2t5 z8{*_r-i=n=klxGqXvR9q48iX+iqDi&m-8q_6aFKMR`5tx&*wh~#cFo5lyfF44hL>yDmja#jrrHb2dnv)^joBOu$pVEk9_w_?nqSryX?4z zH)QnL?_$te)X0qA<;=BQB{$nOgc0iQ@6yxN--A87CKs*ePq_E<-(Zc2Z)g4Z30|`6 z-=q2b>o@V`Ms$#?e-ryQ@{c`F>q<#xuj`ID!*RHk-s1lzx^Lo9_4n#7QRXdYEeBhn zxk_Zaev|7r@v%hfw+fFfypypAHK8g?4%)&ktX|PosE;vQG1N|EKU@{_xAM1Lcj%Vr zssy2{^37FIv=y(ixGGHBc%p|X8;vV=(C2hf6jk3zpDmVc;{)6hbwAd!coZZ$jqz8- z^KHCLZyUbh3mh;@IZ*QWH$$qRgj)~#n~u7_8V1HAymUaz7Uv|Ni0S31-8__Rmu2Q| z{)n9N;8qS4W{b?d{DhD5Wdwnv-qzBIot(Eb$Cu(rYpI?IsvNTqVbI1(S@{Fs#Tu!_ zzFIh-9P-uHfA6bl;FurK)c+v1?dSS32P@*9C|<83K8UC)TcnooRy6gJ*ieG98h1$? zE#XOY^q{aF!1$s%TZ}(|#>Q=~IDCN5ARMdcbdaY~%v`zaAihZrwp1W?r^`%NPgWWA z(z6x^<8}I~Li~P+SNV_EUD0hQPQw?!hox~VHd?m{cx8jz9IXf3Sz?9w<1l}p#fs1) zD55Aa_y{UwTe;>4|A<^74<0l*Mg+Q0v~uWxc;h$^aye9V(1c}R-BT;{!< zsBo@We3RetPCH}Ij@pva+Q+MI=^LO>NHflerMLKC8gWL{+~VKVYpW|+N}E{An&3m) zN)+DaHT3ATSbvA7xt%)=$K0*$UA_)LwK{WJw)%r_RgJ42`)Xah#PvV<&W6)ZK?PHV zZl%^bV{w^EdupQ24`7o{iEnFoOB!`bUaR4~iB6Y`cOUYghVuY1%#IS>vK!RVn$HIOhS2gkz%CLoGrVcyE36DgAj=?)Fr3yp2UD zgsQo+Yk->UNUPh(9j(<#23odXyd9?IQtE#3U6^X7(fj53Fm)C)Dxc!R_o)~ZuFj+2 zPv!M+wF9G=Perp1YDuF)IR1sN?}Lth+Kmo=S~=uAAmvj*9n}f0oqt5EEu}$Uqesp< zinNaEWLL{S?eH4m$0P~AX_K$1XQ^Bh<0Dk7S2e;g<>1{0;sMiK+`Zdb?ut;2jM8&( zTdTU3QC^N1-bLL*g*n0}QVlbfL$f+Z42@JfIk|lXUx4n>xnT zWgil`H$b0gOvHxN0a2<8Yhjv?Fo9qo6wrVuAO@&HSPIw;D4!=6c2^s5dbmeyj#j^F zkpjyCpb#k16@V(>22c&SALigx3qn>}UbK+hLmP8Cod7H$iW9Y7us48#L5KsulSg+K~W zut0v*Up;Q{DuPfBQ~}jMKh@Up!2&UNh?+$eyM*(H>QUOfOPu>q#S6AjtRAX%F^$@V z7~^*_aZiwV&^SO}Xh^j3j@D=eR&3ZVLBrIwUTzC=~v` z#M$J4cs1X{1eF-Ta}#b)02eG2=i=2{#%h?$7mC9P>bz#AMMwz{3TQw)kPhSl`9J|s zv`9=HuC}5n-^s6st6>=Vi|ZrQ{%PfKI}d1iC_Eqrhy&t*Bp?qc05$@JKsitixP6XX z1cCt#hyr4O6rc$1RR~i7n}A@T8gdHQqqy*DLfx7K=aK}6Itj&cZ=xEk(zS2pA4&RQ z60@isqke>`ui<0WJ)P1KSRPOXxGhFNKnzfbJc|eR=?u9XoB~b<@_>Ax2!0AamqW*? zGYm9(ySR|5F2>%0ag$Ulz83|P)Dg_HvhZcSYL7NYUkHz77Yc><6m>0aFBE&HsKK7= z|DQ%dp|DL+o4Xd^8HGSOP`y~TnW~QGVQ&9Iih*E21LA>npb#hrssLpPbbw$$17d)< zC9?8kbv=37kCwG}^$-6$Mz!1IvRUdD&Rj+3bafHk+A7YbtDWiBt+HW;`U|>eOGHhk z+6|w?usN#5C2A|uG&2ALuP)eMFnW$U2S0lG#~gK-)2wVi&3Ue$R+J_BXQ{pE(H5~G zOC3llO9W-B?@{>{(LP%pL2`>+o2?#ZOE$X&ljm<$s>Cc9_b$#8Zh57zZD*vu}REatiI=w`hV=lZ<2=>tM41>;s&gft5!O> zL3UlPK4NdgY(NNs^)Noh63Jz3{B6<&J8ENBs=r|)-g?pIOLYYWtd*y~REIOClmb6( z%T_<_&c8*6HR?55_HXI8R_%gmh^;bto!W-cDleagjW^Szd z(oYNjH@bRi4LPrq#;s~6Mol)!_qVC1RSGYZKHsXdIr#~>dY9VYjavUGA01Z1h|a7O z)?;cf+P_j}9#bP3jaw;?9anJ>^x!dBb3(;x)sYo4p-i2lQh<=xPpQXSALSYQ_8| za`pBZS(Vo`oq&A=}HKKIlGSYoQWrw$-GR8PKFqjtr)z1uS5f!dnW zAt~i!)eTO|jIQU`+8&a_42wRRyC}kYq|0d)i55%;B(=o|F}V^sT0olX4%Cdu~^hfWEr|JCO{vD zu-UpacFM4{c7GSj1}qlSmzOb4~`1UpYD_UUFn%uieH3v9{vNx`rY;lp`=EJWi1_ z1iF87JieU=FIFGJ>1a9~jbG+Glp;!841I9UR(QD@)=+kW{NB|t5V_V)db%6xs$_U7 z&2Jb65SGC|_BKRvGBlS(jSNMu_~lTU+1xO`K2-@>6K+7gT%$GBY(Q~@9NNL)!>O{f zoE>3EcJe69M>7B@>55VSjzLA}Vd%rjZMp2#+mPu=+H!e%gkkEN)(7EDwYW`9wcHK( z$;mZMwcs|mD&f7R+WGjVnqNXwEgg7P&{XT&0e3${H`TU8%NZGlRCg*^F7GZjcn}pX zm$cLnq*CxoXa@h()8wX?c3bdyy<>@ts5~iyyTZbDSDP^VH z^KV0h2W7t}pG(65PUS0Q$zB7_D10*=SulwkzuD1yK^TUF{EN{`T7yVn~W+4OWdTnnOG}Xc)~E9<9FI+i=Pa&PEP8T zrrI$VoYA~2gDx0cv9WlP2(uYd!E&?B@N106$nhg4B#!LYr@Q}%ps5LCr;Kba=fxOZ zNs2zk553a5BsbG+e^o23!N1(DRZ4Z)hQ~giz09^6#q2dNUc+I991S|R< zxa_t~*$0L<<-zD?+SPaFDR;mvTKrq70)M)@QaKAQSUpTR3RV#AKCsW|(`m|17-G_F z%6jl0OB0oRa0RxG=7GaKE0i3t9-&#_`FKEz&M?G->(1S+^aXF)v`L8qD~XB{{z?u8 zkC8tpe&G4ae8m&oa!fzP5v=6elxImegl0`!t~`K2fx->&jAb{K^Wa7M7AZ%;^V>%$ zyTQGCw^TO1;(YL_lNdID&nQcjbnw4CZOUY@ZNH+71&{)0OpLC0$XT zeS{R*wki+6y8R7swXIsI0`DAcQ_g~i3@KAe!I?@A<)GaiMFq~iUab^@(`v6@R|;Tw zSZ!05fR$&nlq_%=VmKXq{rpyCEI2*AT8RhSY*k7W_;hWp5)M9d=8O^y&bynZ_`Q-F zfQxt86ld^^0%Y~5X4>W*Cgl#e_T;BZ1$cSRG^KP@voyP5A1o>l7Al3{DiroAJ%uRq z^^mP)R%I3VdUdU`1Z;!D65U-%SJEMGE*qsx2A833B!bWM+oSXapHKOh(gi&6+i;~d z_-@in#ROhai(VqQ^i&j1Y-3U}`;8+?^+@!s8a7m}fop9KmGj^$sO6>L@4!Xit(7(< zS1$rQXgB2R51%Vp_M%8vwm|k>I7XSJ%m2111(20Uo01PcmvTYL0dKx>SD6LQf10n1 z1>e2s5uyWP3!? zl@$Gf$PrK2FIu!uaRgr(9ico+Y^K$ZoUc3pr>55`H^A}hA1D>z0rP{Da`4@UHYM#S z41s+Llq3XHR8*uCLB5SL+6gWjl&ow7=cT78t6uREa4qUa4j6B(G7G#jv#T;4oV)Y1 z60b)LS(F0#{QmPw61dw4n=%AkUZp90!FMz7D$(F?D<3vi;^4uCGS^`75DiR>o+8Mt z6Xo1-#*>c59A{rmb&-Rn8mIdDr0i{~sr#C0427V+0!aA_b}>K5yUUHKZ&O|;IlS0d z!>C}Q?0>*`%Y)8Ol%38Qml^1{?@7 z&B!xZT)%I;+QJ3Kcgvqn|0MbcA{VfPdqnNTp{Y|Qm^TKs)KE&74%VVtXOtW?ec1_$Zm@+YIU4Sj{r-%RgFB)!1K;KWHKi8~P0I%J2&VrlYXSlj22VuHf z+Gz)2aSeF=z`hI2nm-VbYu2iu6g3Z#n~y-iDbRZcegIC%6_!>GsmUKMHf#NWod%@M^f3)|<5=a2H*7J0iYa+->7fYrS^atW{Sc_26hA z1<2R&Dz`h`Fl!TmZa^ zj*p#}+%szvrjGjCPOm0DC^MM>$P5Yo17QA(EJM1zCV3B;v`_t5GqZBDv7Zh0a;HXTjbCJAKj1zS#BpkuN## Fe*l%}<|P0C delta 63683 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 diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 93b3152f8..1420097ed 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,10 @@ -/* 4.0.7 20170319 +/* 4.0.8 20170321 + * Fix entering non-numeric webpassword + * Force selection between TLS or Webserver due to memory restraint (#240) + * Allow entering empty string using "0" for selected commands (#242) + * Fix exception when posting commands to web console containing % (#250) + * + * 4.0.7 20170319 * Increased Sonoff Led PWM frequency from 432 to 1000 * Fix possible watch dog reboot after changing module type on web page * Fix reporting of GPIO usage from web page diff --git a/sonoff/settings.h b/sonoff/settings.h index f5a9f5b10..4575f98e5 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -145,11 +145,17 @@ struct SYSCFG { uint16_t hlw_mkwh; // MaxEnergy uint16_t hlw_mkwhs; // MaxEnergyStart + // 3.0.6 uint16_t ex_pulsetime; // Not used since 4.0.4 + + // 3.1.1 uint8_t poweronstate; + + // 3.1.6 uint16_t blinktime; uint16_t blinkcount; + // 3.2.4 uint16_t ws_pixels; uint8_t ws_red; uint8_t ws_green; @@ -162,18 +168,22 @@ struct SYSCFG { uint8_t ws_width; uint16_t ws_wakeup; + // 3.2.5 char friendlyname[4][33]; + + // 3.2.8 char switch_topic[33]; byte mqtt_switch_retain; uint8_t mqtt_enabled; + + // 3.2.12 uint8_t sleep; + // 3.9.3 uint16_t domoticz_switch_idx[4]; uint16_t domoticz_sensor_idx[12]; - uint8_t module; mytmplt my_module; - uint16_t led_pixels; uint8_t led_color[5]; uint8_t led_table; @@ -184,13 +194,20 @@ struct SYSCFG { uint8_t led_width; uint16_t led_wakeup; + // 3.9.7 uint8_t emulation; + // 3.9.20 char web_password[33]; + + // 3.9.21 uint8_t switchmode[4]; + // 4.0.4 char ntp_server[3][33]; uint16_t pulsetime[MAX_PULSETIMERS]; + + // 4.0.7 uint16_t pwmvalue[5]; } sysCfg; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 279f41f4d..d85cf8344 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -12,9 +12,9 @@ //#define ALLOW_MIGRATE_TO_V3 #ifdef ALLOW_MIGRATE_TO_V3 - #define VERSION 0x03091E00 // 3.9.30 + #define VERSION 0x03091F00 // 3.9.31 #else - #define VERSION 0x04000700 // 4.0.7 + #define VERSION 0x04000800 // 4.0.8 #endif // ALLOW_MIGRATE_TO_V3 enum log_t {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL}; @@ -115,7 +115,7 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; #define MAX_PULSETIMERS 4 // Max number of supported pulse timers #define WS2812_MAX_LEDS 256 // Max number of LEDs -#define PWM_RANGE 1023 // 127..1023 but as Color is addressed by 8 bits it should be 255 for my code +#define PWM_RANGE 1023 // 255..1023 needs to be devisible by 256 #define PWM_FREQ 1000 // 100..1000 Hz led refresh #define MAX_POWER_HOLD 10 // Time in SECONDS to allow max agreed power (Pow) @@ -132,11 +132,7 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; #define INPUT_BUFFER_SIZE 100 // Max number of characters in serial buffer #define TOPSZ 60 // Max number of characters in topic string #define LOGSZ 128 // Max number of characters in log string -#ifdef USE_MQTT_TLS - #define MAX_LOG_LINES 10 // Max number of lines in weblog -#else - #define MAX_LOG_LINES 20 // Max number of lines in weblog -#endif +#define MAX_LOG_LINES 20 // Max number of lines in weblog #define APP_BAUDRATE 115200 // Default serial baudrate #define MAX_STATUS 11 // Max number of status lines @@ -144,8 +140,8 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; enum butt_t {PRESSED, NOT_PRESSED}; #include "support.h" // Global support -#include // MQTT +#include // MQTT #define MESSZ 360 // Max number of characters in JSON message string (4 x DS18x20 sensors) #if (MQTT_MAX_PACKET_SIZE -TOPSZ -7) < MESSZ // If the max message size is too small, throw an error at compile time // See pubsubclient.c line 359 @@ -620,7 +616,7 @@ boolean mqtt_command(boolean grpflg, char *type, uint16_t index, char *dataBuf, #ifdef USE_MQTT_TLS else if (!strcmp(type,"MQTTFINGERPRINT")) { if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_fingerprint))) { - strlcpy(sysCfg.mqtt_fingerprint, (payload == 1) ? MQTT_FINGERPRINT : dataBuf, sizeof(sysCfg.mqtt_fingerprint)); + strlcpy(sysCfg.mqtt_fingerprint, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? MQTT_FINGERPRINT : dataBuf, sizeof(sysCfg.mqtt_fingerprint)); restartflag = 2; } snprintf_P(svalue, ssvalue, PSTR("{\"MqttFingerprint\":\"%s\"}"), sysCfg.mqtt_fingerprint); @@ -635,14 +631,14 @@ boolean mqtt_command(boolean grpflg, char *type, uint16_t index, char *dataBuf, } else if (!strcmp(type,"MQTTUSER")) { if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_user))) { - strlcpy(sysCfg.mqtt_user, (payload == 1) ? MQTT_USER : dataBuf, sizeof(sysCfg.mqtt_user)); + strlcpy(sysCfg.mqtt_user, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? MQTT_USER : dataBuf, sizeof(sysCfg.mqtt_user)); restartflag = 2; } snprintf_P(svalue, ssvalue, PSTR("[\"MqttUser\":\"%s\"}"), sysCfg.mqtt_user); } else if (!strcmp(type,"MQTTPASSWORD")) { if ((data_len > 0) && (data_len < sizeof(sysCfg.mqtt_pwd))) { - strlcpy(sysCfg.mqtt_pwd, (payload == 1) ? MQTT_PASS : dataBuf, sizeof(sysCfg.mqtt_pwd)); + strlcpy(sysCfg.mqtt_pwd, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? MQTT_PASS : dataBuf, sizeof(sysCfg.mqtt_pwd)); restartflag = 2; } snprintf_P(svalue, ssvalue, PSTR("{\"MqttPassword\":\"%s\"}"), sysCfg.mqtt_pwd); @@ -672,7 +668,7 @@ boolean mqtt_command(boolean grpflg, char *type, uint16_t index, char *dataBuf, for(i = 0; i <= data_len; i++) if ((dataBuf[i] == '/') || (dataBuf[i] == '+') || (dataBuf[i] == '#') || (dataBuf[i] == ' ')) dataBuf[i] = '_'; if (!strcmp(dataBuf, MQTTClient)) payload = 1; - strlcpy(sysCfg.button_topic, (payload == 1) ? sysCfg.mqtt_topic : dataBuf, sizeof(sysCfg.button_topic)); + strlcpy(sysCfg.button_topic, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? sysCfg.mqtt_topic : dataBuf, sizeof(sysCfg.button_topic)); } snprintf_P(svalue, ssvalue, PSTR("{\"ButtonTopic\":\"%s\"}"), sysCfg.button_topic); } @@ -681,7 +677,7 @@ boolean mqtt_command(boolean grpflg, char *type, uint16_t index, char *dataBuf, for(i = 0; i <= data_len; i++) if ((dataBuf[i] == '/') || (dataBuf[i] == '+') || (dataBuf[i] == '#') || (dataBuf[i] == ' ')) dataBuf[i] = '_'; if (!strcmp(dataBuf, MQTTClient)) payload = 1; - strlcpy(sysCfg.switch_topic, (payload == 1) ? sysCfg.mqtt_topic : dataBuf, sizeof(sysCfg.switch_topic)); + strlcpy(sysCfg.switch_topic, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? sysCfg.mqtt_topic : dataBuf, sizeof(sysCfg.switch_topic)); } snprintf_P(svalue, ssvalue, PSTR("{\"SwitchTopic\":\"%s\"}"), sysCfg.switch_topic); } @@ -1038,7 +1034,7 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) } else if (!strcmp(type,"NTPSERVER") && (index > 0) && (index <= 3)) { if ((data_len > 0) && (data_len < sizeof(sysCfg.ntp_server[0]))) { - strlcpy(sysCfg.ntp_server[index -1], (payload == 1) ? (index==1)?NTP_SERVER1:(index==2)?NTP_SERVER2:NTP_SERVER3 : dataBuf, sizeof(sysCfg.ntp_server[0])); + strlcpy(sysCfg.ntp_server[index -1], (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? (index==1)?NTP_SERVER1:(index==2)?NTP_SERVER2:NTP_SERVER3 : dataBuf, sizeof(sysCfg.ntp_server[0])); for (i = 0; i < strlen(sysCfg.ntp_server[index -1]); i++) if (sysCfg.ntp_server[index -1][i] == ',') sysCfg.ntp_server[index -1][i] = '.'; restartflag = 2; } @@ -1128,11 +1124,7 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) } else if (!strcmp(type,"WEBPASSWORD")) { if ((data_len > 0) && (data_len < sizeof(sysCfg.web_password))) { - if (payload == 0) { - sysCfg.web_password[0] = 0; // No password - } else { - strlcpy(sysCfg.web_password, (payload == 1) ? WEB_PASSWORD : dataBuf, sizeof(sysCfg.web_password)); - } + strlcpy(sysCfg.web_password, (!strcmp(dataBuf,"0")) ? "" : (payload == 1) ? WEB_PASSWORD : dataBuf, sizeof(sysCfg.web_password)); } snprintf_P(svalue, sizeof(svalue), PSTR("{\"WebPassword\":\"%s\"}"), sysCfg.web_password); } @@ -1757,7 +1749,7 @@ void stateloop() } else { flag = (multipress == 1); } - if (flag && sysCfg.mqtt_enabled && mqttClient.connected() && strcmp(sysCfg.button_topic, "0")) { + if (flag && sysCfg.mqtt_enabled && mqttClient.connected() && (strlen(sysCfg.button_topic) != 0) && strcmp(sysCfg.button_topic, "0")) { send_button_power(0, multipress, 2); // Execute command via MQTT using ButtonTopic to sync external clients } else { if ((multipress == 1) || (multipress == 2)) { @@ -1780,7 +1772,7 @@ void stateloop() for (byte i = 1; i < Maxdevice; i++) if (pin[GPIO_KEY1 +i] < 99) { button = digitalRead(pin[GPIO_KEY1 +i]); if ((button == PRESSED) && (lastbutton[i] == NOT_PRESSED)) { - if (sysCfg.mqtt_enabled && mqttClient.connected() && strcmp(sysCfg.button_topic, "0")) { + if (sysCfg.mqtt_enabled && mqttClient.connected() && (strlen(sysCfg.button_topic) != 0) && strcmp(sysCfg.button_topic, "0")) { send_button_power(0, i +1, 2); // Execute commend via MQTT } else { do_cmnd_power(i +1, 2); // Execute command internally @@ -1789,7 +1781,6 @@ void stateloop() lastbutton[i] = button; } -// for (byte i = 0; i < Maxdevice; i++) if (pin[GPIO_SWT1 +i] < 99) { for (byte i = 0; i < 4; i++) if (pin[GPIO_SWT1 +i] < 99) { button = digitalRead(pin[GPIO_SWT1 +i]); if (button != lastwallswitch[i]) { @@ -1811,7 +1802,7 @@ void stateloop() if ((button == NOT_PRESSED) && (lastwallswitch[i] == PRESSED)) switchflag = 2; // Toggle with releasing pushbutton from Gnd } if (switchflag < 3) { - if (sysCfg.mqtt_enabled && mqttClient.connected() && strcmp(sysCfg.switch_topic,"0")) { + if (sysCfg.mqtt_enabled && mqttClient.connected() && (strlen(sysCfg.switch_topic) != 0) && strcmp(sysCfg.switch_topic, "0")) { send_button_power(1, i +1, switchflag); // Execute commend via MQTT } else { do_cmnd_power(i +1, switchflag); // Execute command internally (if i < Maxdevice) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 79dbf6f80..0e32b81cb 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -157,6 +157,10 @@ * No user configurable items below \*********************************************************************************************/ +#if defined(USE_MQTT_TLS) && defined(USE_WEBSERVER) + #error "Select either USE_MQTT_TLS or USE_WEBSERVER as there is just not enough memory to play with" +#endif + #if (ARDUINO < 10610) #error "This software is supported with Arduino IDE starting from 1.6.10 and ESP8266 Release 2.3.0" #endif diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 988f71447..07ca6db85 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -103,7 +103,8 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM = "t=document.getElementById('t1');" "if(p==1){" "c=document.getElementById('c1');" - "o='&c1='+c.value;" +// "o='&c1='+c.value;" + "o='&c1='+encodeURI(c.value);" "c.value='';" "t.scrollTop=sn;" "}" @@ -691,8 +692,8 @@ void handleMqtt() page.replace("{m1}", sysCfg.mqtt_host); page.replace("{m2}", String(sysCfg.mqtt_port)); page.replace("{m3}", sysCfg.mqtt_client); - page.replace("{m4}", sysCfg.mqtt_user); - page.replace("{m5}", sysCfg.mqtt_pwd); + page.replace("{m4}", (sysCfg.mqtt_user[0] == '\0')?"0":sysCfg.mqtt_user); + page.replace("{m5}", (sysCfg.mqtt_pwd[0] == '\0')?"0":sysCfg.mqtt_pwd); page.replace("{m6}", sysCfg.mqtt_topic); page += FPSTR(HTTP_FORM_END); page += FPSTR(HTTP_BTN_CONF); @@ -829,8 +830,8 @@ void handleSave() strlcpy(sysCfg.mqtt_host, (!strlen(webServer->arg("mh").c_str())) ? MQTT_HOST : webServer->arg("mh").c_str(), sizeof(sysCfg.mqtt_host)); sysCfg.mqtt_port = (!strlen(webServer->arg("ml").c_str())) ? MQTT_PORT : atoi(webServer->arg("ml").c_str()); strlcpy(sysCfg.mqtt_client, (!strlen(webServer->arg("mc").c_str())) ? MQTT_CLIENT_ID : webServer->arg("mc").c_str(), sizeof(sysCfg.mqtt_client)); - strlcpy(sysCfg.mqtt_user, (!strlen(webServer->arg("mu").c_str())) ? MQTT_USER : webServer->arg("mu").c_str(), sizeof(sysCfg.mqtt_user)); - strlcpy(sysCfg.mqtt_pwd, (!strlen(webServer->arg("mp").c_str())) ? MQTT_PASS : webServer->arg("mp").c_str(), sizeof(sysCfg.mqtt_pwd)); + strlcpy(sysCfg.mqtt_user, (!strlen(webServer->arg("mu").c_str())) ? MQTT_USER : (!strcmp(webServer->arg("mu").c_str(),"0")) ? "" : webServer->arg("mu").c_str(), sizeof(sysCfg.mqtt_user)); + strlcpy(sysCfg.mqtt_pwd, (!strlen(webServer->arg("mp").c_str())) ? MQTT_PASS : (!strcmp(webServer->arg("mp").c_str(),"0")) ? "" : webServer->arg("mp").c_str(), sizeof(sysCfg.mqtt_pwd)); strlcpy(sysCfg.mqtt_topic, (!strlen(webServer->arg("mt").c_str())) ? MQTT_TOPIC : webServer->arg("mt").c_str(), sizeof(sysCfg.mqtt_topic)); snprintf_P(log, sizeof(log), PSTR("HTTP: MQTT Host %s, Port %d, Client %s, User %s, Password %s, Topic %s"), sysCfg.mqtt_host, sysCfg.mqtt_port, sysCfg.mqtt_client, sysCfg.mqtt_user, sysCfg.mqtt_pwd, sysCfg.mqtt_topic); @@ -855,8 +856,7 @@ void handleSave() break; #endif // USE_DOMOTICZ case 5: - strlcpy(sysCfg.web_password, (!strlen(webServer->arg("p1").c_str())) ? WEB_PASSWORD : webServer->arg("p1").c_str(), sizeof(sysCfg.web_password)); - if (sysCfg.web_password[0] == '0') sysCfg.web_password[0] = '\0'; + strlcpy(sysCfg.web_password, (!strlen(webServer->arg("p1").c_str())) ? WEB_PASSWORD : (!strcmp(webServer->arg("p1").c_str(),"0")) ? "" : webServer->arg("p1").c_str(), sizeof(sysCfg.web_password)); sysCfg.mqtt_enabled = webServer->hasArg("b1"); #ifdef USE_EMULATION sysCfg.emulation = (!strlen(webServer->arg("b2").c_str())) ? 0 : atoi(webServer->arg("b2").c_str()); @@ -1152,7 +1152,8 @@ void handleCmnd() if (valid) { byte curridx = logidx; if (strlen(webServer->arg("cmnd").c_str())) { - snprintf_P(svalue, sizeof(svalue), webServer->arg("cmnd").c_str()); +// snprintf_P(svalue, sizeof(svalue), webServer->arg("cmnd").c_str()); + snprintf_P(svalue, sizeof(svalue), PSTR("%s"), webServer->arg("cmnd").c_str()); byte syslog_now = syslog_level; syslog_level = 0; // Disable UDP syslog to not trigger hardware WDT do_cmnd(svalue); @@ -1211,7 +1212,7 @@ void handleAjax() byte cflg = 1, counter = 99; if (strlen(webServer->arg("c1").c_str())) { - snprintf_P(svalue, sizeof(svalue), webServer->arg("c1").c_str()); + snprintf_P(svalue, sizeof(svalue), PSTR("%s"), webServer->arg("c1").c_str()); snprintf_P(log, sizeof(log), PSTR("CMND: %s"), svalue); addLog(LOG_LEVEL_INFO, log); byte syslog_now = syslog_level;