From 4a3850d1e39ad16700e4bf249ea147c6fbadcae2 Mon Sep 17 00:00:00 2001
From: Max Prokhorov
}3S>4h%!prQBXIUBr-k z)Xe5$0wIX1E8@%XYHDgoBrP*o*n8xQGY|spr0#nHuJ5QZ8#w+usE z4OzDagI64x7XzrW6*DnJ>7oI-H54v9x|dQlnadH|IU_+ng6ieu5q6;+^_vlVi76Zq z2=2Ljb?+Bn?4@*c9j#5n;0=aOAE8Ld$B(-ggP~ay4D~KOhT0SiAKx+zVpCJkJQ!%g zKzKAGhGu(pA*eWj8aQHk-&u`TWpTEN6y;gv=Z+=z!cu&4>H=l&nXk@(j7Zd>V5eaa z7u&hlfx$vAwlA?7_Tw1FXQ;uq %icqYnC`RypxLIKA?ts_Gb0q7~Wr647BF( z$}@9gXr?QhW_5P3?7g)?)E$BgZ~8~N4>!w?j|c@ey q%Ukp z#h`c7xz~fi>2@FAyQCPLGt}_$J(M_x#wEpIv!H~PU(Jod;&eu4VaSsmXBRWY_RcJj zKMquNG3^|NU4V+^(-g{iqrA0q)`l$;jElVz#e_4he4}}t*M-6BbS^!HJ!u%eOu^t^ zLJUk4Z8 8uk%Ny^njeR!tX8Ign D9_%Rif~*u$s!K>22+hX&436iu~#itZU0j`yALoh52i zHF@b6OyCHAQfg>|7%q1oOLa=)=@?jbB)>g^Y7P7ffuP{JO^q;V_LfUrYKUpTLBMAA zGp)o0Fa$w$0Lr)I-&qJdyTyi}!G3_D^F&Xpl*t$(qDD<*&sh1%@IbdHT g_HQARtDMzrmDvQG4br$#4Q!Y(Ol2x?M=^JpU z3T%OMl=^d%{Z)}1&mK;vNf?r~__`I;OUFB$3(YCLF$_x|qMKS9YA*r| {d{IS95)?{Bj(m66V#f-g|S^Rw*vRf;#QR^x7 zLjzSE`aDw0*cD+Tfk0pn^|D)hqiyB|)<7kkQvLN|=v#UWBRGZ+;!f!p#IPrZA&+F0 zVGsSs|Ej<5#<#Pt|L5#3&e4?;s-Bb=^$rb0R7?w@2PCXrb762RHSF%;*1;3GjoKW1 zxItfgkzg@sExnZbBU2rU352B!PG1a%sZ`?NfR7s@_x7evs*K`u)M{$rDv22wx~?x_ zRW5PefMYlTFw}n#cS^^)lNeZ)&DHRcf%1> TV#-Xd2D)$JxQKq5BPdHLl?PS9sOf$ zyCEHe`#LcQZv}?a2@IGTK7kk-Fbp|pyELl1NfhomIm}?QYeRgN++-{eAjRa<14^-@ zr423@xHK>{-Vs~hfMbX>?wg!!)gXR*>*RS~c2_MmqW6#xJKRC!beBXVhXZGINV}wq z&?Ono 7!_1wzGMO1*@Ad?gi|O3bQpGWtitqvhqpLsXfU=`kCFjRazQJFz7!6FO0I zfxxoo@aPp=8V0wf<9ZTSdN4A!#293081DP{gL;VJ;s~w=&!CLYe>n!>gCD=RdUXQB zh7GG$ZOn{eBjB)MLjuF<)lWW?b?rWigoLdDK?*!t4`Oi#sOJY7c*QiP8BrrDm3kkW zGm5W$!!X!+#O#%ymG@Jb9)m%xVlvfyslgl>-b Ahx<-TrkWENdZ|`#s9`0*FxlU~xbcP{kC8>8_y(2?g9>2i zypoFH9!mLe5`%4kVEX@JVyJpCl>)#3)UYwL8a4toY f@7rYLw;-%7emU zjhsgo4VPz?S8<8ec2M~$?bK{ZhbXoZ6vH6r6?RkhPF=XlZB}ayBvK8@P++=p0aCb< zE$Jf^;K>iG$ksM?;?m&Ny=V4b7@LsO%vwIaIz)i@n>B>X<@Jh-$@%XFDu*oI$52oJ z26isTyHE?6uZY^kZN95`R&ZXmlo+~1V+w%bQ(O(@!(%7n7`)uUmVd@0!>=$3={_m0 zhV|>yH~=+lz`W9jaSVXN?@w}Qyou~FiKI%RSeZqMtpUyIk&NZ$O3t0EKXO7ejIWEv zhJ8Ze&SQHih5NFOj51^>6Vw^S1LyW)6nx{Og=l=b28(3utm?f&%!Q*o^*uvWI%+mE zQL9&2-7s{l9=NdKAq6Ault}HlXJrGBLjBS6<3sv|T1Y*?Ay@lgII17Y9=(Fx0t_F| z#t_V|y>t&oAuELfj$ze?gc@dGSOq!Y!66}s)i3^M6<1M@-*f5A>|0pX*B|NQ9K&}B zz%WDz N0w9fhk=jwm`t&s!F1ArEzIfV>jBJWlT?4T7b`kgK>l zTMb@6NjB}{;$nCPG$c*|_etwOY?v7uQoIs?v@YhAVtQEp;;F1z_hLGddON17sw#ZX z3~Z{gg8*mk6*>sv)8`VSY4xXkXGIbP*_*n3PMyKnE~*kSs1v;xk~bp5zkMR|P4x}? z9Pxxz8tUM59l=hwaxtqD_=LXcA^h?r@ylBx3}+#RG^aEj$571~>cDfP)wmYoVn|Dr z)~}x_2Rv0u$l-n{ht*>jdL+5Oj~0Z{wpm7 GfUdoSYJk!G*r@@=ZtE zQ`OhSCNFk%LZ$NT(Oxc_oO*dnf}v&bO4kXzqdSS=^hjr`3}E0LzdVg$_`hismSbX= z8v~vyL9dkLuzK}RKmTAar93L27EjNz-oCNXo~batpAv?liE!!E-g@%c%VW9IUA2=9 zgAJ1-Tv6`mu_*#dnlZhIrK>Qto|j1aMZN(xxs!^mTb`)pW>5E54IiD_M@wL X>|td8>c4*d^4{4PR3u)1?_~_b4{-_@28=^$qBL6# zSgMqeLyW@@;XM|=hzc$_GTgN7=yBhkCKTUY44W?2xbM=rz4a4Q-HPd>N4xtu98Q0? zWLUx_x&;|}v-6|^Jz+wm7_AyR&glhJIcVr^iK3^fV}jsDl3O;gDpi5PsopBdB3CEm zk!-Sti+xp+l*_yM7??l#IrYcC{fEE(mzV3mz%YC|69cCg!+=Wx9Mq+l001BWNkl $(#!$#nh)*jlhF6owV5b!`BM+GAp$LE6L#9n);7`l#fn+Rm? zWsqUzil#bwCczvV^09OVzdJn0$mWcVDuxwDyEz>L 4^3Quy$N*Ht^2=(BJ5 zAM-zUXziMf8@B`72) 6ajf`(qfc@D?#vZK~ck2{D`=y`&}; zpkj?YP^@QaYvyY?mP^VvH+zL4S(7ZJ5jUGFYHrdVFH2>tP3yO>{r-2Jd 5 z_TKYpObv=LQ3eb#DZH@!*)60>R}S1Yyy6v5Cgta^S(BfiZy@cE7OmImilp1OAJ~r5 z$On>$alj%3j={4i3}S#`<*a#1-zWnNHm?2l^6%X7 U;gD^{`K$vtLN$kN<34# zs>q#<;cjS{KYHEz)?1~dJXcPROIj(dtl6>SKuyi|nj#>5@Jko`1F#}sy7hN%Uwa60 z03e_ut_wpWf&5Lzz `xk%l7cV~Z 5>mE}ji_#CR?iz66@ zvz;w7F<_zj*=Jubqepg;SgcotzaeOLR5ES0*IzZ*q$o|i-&VAr{`yu@fsMIUYe4)c z^OgL9Lx(WOgjEpNgTeGo#=v@NdxF7t@3`a1XD0p+ J@Un;scINZ$FLkP+Ma!*0CDU> zN>qZVTo`cc@}eeL+0UzyVsT?*M2I$-j54{&CN~9kJKnNwBkWfG#B7FwfH~83VURfq z4Sk>rW?%efVb~OB5Yxe<;e$exS11b;2ie@|?qjhkI);G@FgVgMEPousP+)j|TW~9h zwAG;Xi)}hq)FPKPqQ(2RID*bbo7vbLln0qMYng2~FG#a__Z@so{OV&^?h2%|SPbHh zu5f_eSHG8XWF%X$=bM6owJAjh?_vxbWi)0 JqX)c3VTn{g;_o1lf^>Hozs!w >{+B60{hsNqxS4i_f`6k@gIRe*Ql^?+~rMWPy zgCzjK@CpeD(htf&%OFmxL(^1k+2Y(Kvu{BgJt|qiZrie-R7@AXs^VGPJbj6{Mkutt zih}ZD)uHRafYx#*rm}!bI&!3=f4GJ84PXGv1CW}&8)NWGUZ~jWFW>_PELSD7EIe52 z>mB>sfByB$U&Yk$*(r#DJp;oA=vNNyw7tc5<>`u8d3kv{m&?V1Nvg}0gMD?mbb0Vs zE|9ds)D>p1d90ku{5RfsWz{MWsMjqPgLzPrJ&t#4<{mxaklywT@bUmK`0l$PB>$2p zcUx2ih9VYVP@^^5cC|E&{PwT^`XB!G*Dt?J`QS^4;j7QCj%L8HcEg4Z00YY8SG=u6 zVf!kPC<~ZhY?9Luhe@R_B?a}SprB0LTr3niRZOP~J}fV%==nF+LJS)=EEWU5>Gb%} zz$AHMN>rsF8+ErcgOu_BgyeT0{bgg|9rO(W34~Qv4oQpH#P*Mf|M<+0{|Q#nfB);O zBVT>_F^1t(CJeB9;?SD4ex#zLktdCU1_p0@*vwuB(?Qf2?M+RlEeCmew5d_bl1g)Q zd3iZ`xasoEYd78rIIdbO25B?VH`?9DIo_?1TyYfC-M$Rc%Y!Eg@7u*T!~^@XSUQs6 z4b*9GBs{wM-50Sc`X7EVKK$#GXJTrY6T_-i8wCY?gkG(oSFl+6;+7_WR7^0LciH9M zk}|qYRi<>>nHBp@`%#jbhL*s+msy+g43BNuc;~7^hZc>&RbdQIWamn%I9zH#Rmr-I z86?YtN5iuB#5Qw`fk9wK_sgq)`Q&QgtN#7ppZWJ6|I<&i|1I~w&%td1mfiOUh@pQr zhK+Dw^Um#C1co;bMyib@R@55iIaE1OZ=;w-rw1BQp%AGMqOyZxAx~oz+g_FN_9GsZ zfmFIR|M@N3H(n10pjH9u3^+m>y^1fr9mSBbJg^}ZuxFB0WGGNI)8)KhK8gSR-FKgS zlK4aN|KSc{87qe2%*p>4?H`(j0Ut-${>o0$D`jQ2Xf!V>mY1UH99F5EE|zQ50U;gL zZVeff%KavHu!Kp}*sYe9-2t0bzF)BAm5q09T)TGTVljN<$^)5(#ze4w@;WJB&9o{b z2?lrE@ttoke_>a3E0sNUxDVgg3d3+Jh9M$0&%|)&D{2FxR2ulwoT!Zica~@Q=~`1* zh|(>MGPl4&Xe@IgWnvR8;$TWEh(@KuUbdCL1vsURhgSXn0Yj$ppv>woseq!clU9^4 zjhfxOM^hMlf9>`yO!2mT)QLC-poTBcoIHnNpk~DId;y=y3s*a;w-&ju_{$PU)VAGL zryFS$%jhmyV<1EeC~XACew*Jcj>t{)x8EZ1A%?YU?);`>$XFhfs$%6qO@*4N7s|qE z4AyLaYEzVCHiZZP!|&5D9Gwfp`t7d>NUwy1ys(fS3K?Maz*5Q)3(w+}R|mY>K#7$X zf_>erC{|OjU@}!?*pdIr#`WKL471CF_vP+pSRT~DDgMu!ZTesn#^AeY41mQkbo9aP z#c&K4Vi^7>gBrGP@$;GQd+EY}S*pY306FKmqIuXC7AWQNSXd&;Mc00){66sY*G zhD=7cz=gMS9!o9en{85~4YiTH; Qd7vl z9jGQeIR}FzhVu}^1q!Byy#T|14o$JC`y!?k4A^l0_WV~%^0!8mfykD4OS4d(+Qws| z%7DhgEJM@+rB&&zN#)?u`tUM@CSrX*|WbmEk-(I_B z{Zr|sP%4I)8X$(gIWQFQO9lB`tE&$-79=px!fs{2uM7#ByjtECZ`r=E#U@R|;L4Gb zNR=D&?@VHN;t3Y(o4{bM^56i_!KR{owZEAjs!oF$SAvz4QbIP7K3+_w2o}a!w2` z1FfQnL^D~eqy&Z%vDl=lG}-*kDk+U`Gtz7`oKjt$tB7= ^Zi@G*|z@EmF&ne%l;MXsV6X$}jv zAdJwnuMfs(R?ILAx|#zAfKN(dSg~T+BM(3P!0k&TV|hS>OEB`VduM_2pm tMNplS93KvNyCG9ZO z t^%0rbVX(MM8-=AN2ZHs* zN-NVbJoL~q%x*&(Gs=TIu+f8Nf2=%!qX(wB%7YuiK$wl;z?N4@t~#BL#mdQXxm?gG zMg2V4uD~`m)7Z9qzcrw*L8}8ip)IEjt RaFXBhg?z0givy zU9t0A&sk=V9=tE#k8VvHJ!qV>JXiq3rGe}u2DnP2uOl-CsiB~z^7#@my{v{6Ef88Q z%pw-E$!w#0Xkww$BM(#?_~P9%rITDmIjCqoIC0T O~ByE>tz5jAgLHWz|@d6H-_~jghbk^e4A+o-pEAQ z)2?N)EHYux&3B+-yUi=MduT$Tu*quU8NFiEK@;*3M8~QF!QlYNSCbgz5m{3sfB|T< z+(H@v0wC~6> 5Kv;OGG?4|ofg2iK2b4mH%+ z3{q`bSgEd18}_553T+O{VwbCIa=j_CE5HOa#7d!EZZ!(&f^9NovB}mPw)q9pq9W;< zR5hR$D^0H#dvO}_-#D7!hFLLf{LSAi2@MRw4}O3hbA=pOAP|ttUwY}`hhJLugJloj zbysFV%uybwE8y g} zn#7Z%9-)VaGKF%X+#wDM#lmV-pehTRbUStw6>U$$fFN%$nKm0n!zA|Zrxy#~v&(U9 zU^IX@{-*6_(g0F;;9&@1#Wv9X_FzyL6bggE;I3T(dF0`jz=0pm;F%KTK{7SnU2J7y zlZ)W!f%>}2g9R{5Vi@4Gy%+}0Yz%luH^d+i1_Grp31VTxJ~mlcXb?6TwgqU2uq4o2 zS{4!pwz-vVYw>PW OCZC#5QNY;w^SSROd8r#zSs zLjc3jJN`)$LlureuAhY=pGMk&G->wJH7Lujf<-jTx-IM|t=Lv!r@PC9-U@M9Fz6}e zY3PmWQd)_S=F+)xihxtvxG@!jw2}nx#K-4Xcmx0jqVnU~FamA7>7
4VDMI z>njfy!obMx?M`Co0T>3L8fIf4HIr%t2Q{Q ^!;n`8S3pQH8u|JBiY-tZh*`yqYeVeyI)OG|6i=t| zH#b0o6_-LNU>8CLPOn!SGw*&t0)UW*mO(+_95Rd^1l~*;J%9{upgfq<4kXkt1H<`= z!c1x)(MVFYIB0j K0?niZGy=d=9mHw;4;IC*OB+wz^#GKDBV-S1 zl=S@ofnKkt8EG`5Q4i$@K?DJBoI~EM^5CPlQ%4WpK=;30eM9BJoK}Opg{i^Ui|uQb zs)o!MoJN}|j0T9i{I3d1jHMnv%V4V^nfaiAEZHJ0sT3FtTB(|5E#ON@hLREivUP`6 zE!Y8K1N2G>47waw-6q_l0~mElZ5S|5B`AP2VBA1s+JG5u5TgNes_TmzAUFdGO%Ay| zSgZs}FzIPlV9m|V;46)WgD4ih9oh{url<4M$^!x%JwUYa$wgZ&?gd8=ZUlodBZlmO zOArGxa}bndMS r&XSlmETtHY{aD<9G~TaHX1Mcf Kw-TANY)KG4u$ zV$cka>BKlVHb3~YpL}=L=mDHu 6D?8q@x z=yGbndtU02@^w;!6yp)Y023wY# ;PG>R}! zbpX$)v{>9gV%h*Xl~@cs6{Hc^hS5mW8#8EtsPNKDvQR)+>;@EQKnak6U*%V+K!OGj zhp~0K0f*3oKl%~#1vq*TDTeDmu=1c1n_T4h`sKmmFdUgr4Qp4yT> FSz88#biO=%!hLTL6s#?|7jWq-q05 z1H_FKPgR%DMvO+mPLSem#WGwJqv4JBjKpj4|4F6s$V |F2O2!jDuSV>VMgD&*iwV^5A&{1?55b z(VLl?E`Z^33 M(iB%xGj6$>O#Pm0Py@ zOPNfX6%`tdW*c3_q&xl6{aY=;QW6lujy3sf4?VU#iD4fh4EM=^Gy?Ahfi?gPy|EOh z5!VJDH)>*W! >N7^AZkcvnKb Q4A|9kWb{4p9^Vx9`isX!F3t4qspQ|b*or%Gyr_LfO3 zMxTEAY1wap81@5~WPub)Vu c#tug@H&@olB}lm!dqFA45Bt;X8q0 z_yewn?%r(1 DzXD;F=nRN9M{6!IOASboK#=pQ$Dop;Or2H$Vy+oc zNex^42#W3i{%J?$_Kj;dtXr45F8c4tdpZZH)WWuQfCJL_Igi)a DNOh7^Jg=Eh?{q+C(Xer8r1=JA7@D+~XlkQ&M0FI$1b$L46Cg52niU#b2R=dqX z5ZLAKwA%a*lrA?H+sq-FdzV=$R4TU#8$)JOKpqIZz4duMiL`yqp>>Zx`}hkf7?v%2 z=%H`@)%P$OgVaI*1E&$jwGprfHL&2tYAuWg)J9246vt_#MsW}~Tybq+&HFrz8v@dE z&o%7^X%dJGPz+lUwMUCNy93z0;b6Q6E)Bull2Po2a(H_4=ASG{d9XM&e3pU%Q-d)D z!-v@BBQMY_G-X7rFKaYg!n =|ELbU}Ht8aS6)}7jt zEu;f$@Le-f_smGtRx@eDJymt}LB}>Mii5b}#kFC>w4vS!>Wx=GOXlM=q%dxzdMc3N zCOs8N_nb}^0hJp_lS)yh-waXa=K~1fsg;$01QuEl1j@lEc7h-skv;gJ<-1E!9xM{W znRzh44P@TC`zJ40Ul;E$L&}Q9WhFMHvecv1i 99;oS8TgjAG+Pv(Bg z^;Av~(8A-(KU|)^gUln#9>E5|X3}VwK?7=I8?KEsPX)DsSAQwm$WZ+i!6m{n`Fk;+ z#DrV%ZUI`ra$*b? } zc;WSDndX8mq#cz~owRZXcq Amuo>~vSJ@wS~JJ+r{gl$@a zZ>9uydBZViukcv$sX}oYnY7W+nL!)zoa)V#xUm&MfTw!?m83Sn+rt%)8y|t%P5BPU zlTZx9E0`FHu!&Z%qoopH*dhQC-G-K8!2wioD<0YW+^w9lmcTGQHwF%d;l8z(kP?5y)hbiy#a!_0Lz2o+Q +k7gfR?b{l_s3KgIT)1SH~{TLBu+`u( )-AK$PJ zc>YzZ;HcWH4M4GtSZ8gA`$PQh1JUS2Xx>>AUsoIZ<2jYhhCKJ&bB((LLghP&M5)4% zR6`sCbV>k&1*icO4vvGbJ!t#RcR< &a;7-~fR>149tQAj%#6 zk0gf67zR7Q5F9>t^-HYz%H!J-e~9mtj%`akYd73kJ_%2eFbtR&uDu+MvWpk-I#^FE zLK}M;X3}VE+6{85_dvY?Xz0
4QCk%V!5 ;|*z}8q%-_y+3>U=|%@EqG6^4;zo%8 zFB@QD3nwJtK1u6Q!%V5!=yikG;CS%C%`e=6btnBr9LBeC7>lmu %~@=TO584DA>O8~5aeU&n5vk^5p&4iLkth18IS;oo9+yZU7S z$Ury0R620|H=|gTHfGcKP3dOXr3CvjV8Y6LqeP$u7!Fio-GrdrhJ$;C3N4nf;&p>v zE_-_OX3ftZeey{FU=|DzG8O~FViN)X`+tA< @)ix46@Gc^&AV5xe(}fu0-7P0 zI0FNZI19sxgc>}9C$oC?#%?Ne&oePOERWwtV*xeb6z&ETewY>*EzU_v$-(QS2 z_N34tXf{8%Sr)Qu=y0&X2E39QdZk!xfp-Vu`KlR2XshW>tcrf_xf;J%X?MKOBc#E2 z7lW~UF)+dtpI+PhB510|H{7{?Q(_w6ovR*S4npNGu3h_W>r4zl4P6k!g}wJ+7!(i# z8OKoL7%Ts;-+i38#nL}L6ZcAsQ3KYK1nPx _$Nw0OwgseLdxHGJ+Q4WOh97+G zL0QC(1&3z5Pf5$q2OKaESf5f%46!a&p* QVu$Cs{6OUyD2vu zgOTCic0`LNnKx-`p82)$8l>^PcV2s~3G+%=Zw8cu0PkTXVLhyP&)!bFhZXuHP`%;R zH@uA{sR9(KHmkSnZO8lJG-Z5u0T`WC*S>u5Za@JRRckgL*mz(&6d%BGXgPQz|NXVo z% +je| zem>uZlrW!XYC(oz6PUHj?_U15*M6&-jbUU?4AC4FQQ`~xv%k0*H>3Q8EgCfuRXIzv zqAiuiOAo&UK3;q9>AUW_w<+?ruz0`sEqwG1>H(D4`38K3pvO}HN8eCv^bH$~-u(2> ztTdEqRzJ@t6}b{HD%6-VG;#+9V>N{F-MN$jG2FlWF}Df_0000W07*naRAw;~p-BZz z#bq+!-^BJ^!rl9u^&dVyHW!9|9K)A0F|aDF)c#3Zblb~c`_`=WATC4&gVv?pv<=dL zi`!N#d+D|R^`p&CKX>oFO(10jHMR+q4k=^Ne82!e5WorLOxUjn!~pW7-48zapz`No zUXxttHbNL4!+{tKS5c+m`2vtrS@#RKHN78K#=GgtSO;P3sk-*T-Rls6*iZ79nQ)Sz ziD|Lf#9LLRDDCkLznBjLC5~bGVlBi#0~n%tBwFF+LPIo<_`8??^}ZXmk6->B@hMo= z4C)Pe(WN!GnBkEhEL--ieeb{h&W|ddd(I_`1d=l|uudn~1?YJ`eP)Iij=gRB(U1Jr zyYGM-kUaWJ42IW;`VqC(P@}_c{mya$WoXqPvoh}2Y?JZg%81ABcd?p}Ty^b><%i7b zW}S}jGL+I#v#t46fyV$h(Okdb&R=E1um{JGwKo%nXdMY9_y%vzowk} )oEUBP)km30Hu0&4`AkwAR!d(xn_`$Lje?=rz2k0i7 znv~;uLbfe{b^Yn#9Z2EK$+TH}fPxj9Ef$nVmMz=-;OpP{PO?Q)U<5R78c+s+u_FQF z0N=9{Dg%Q-cr*@UqUze2$DVq1tB}dBaCw|`x6opzi VfLl)3@p)z*9VyKM6kdpWw;HE4_cTg_l5q|mP zlMqA6olIsRfViRtwc4*LQIp`EM{-=QxiN472Do=g8ix1c81Nen`SqGeBk#tnF{07? zm*x&dvnhb0;i2}{a8uA}w3$5yxMGu4htI2jQ;bimx5Z|3!+Egy+)FQADa0sX3w~Ie zo?5?s7L0dOVHAt4HWg3?DF$Ox5(YgO0#517&P`gx4$FfrUYpp8s!$TXtBY&>EDY)x zhM@$8lMut{G&S5dmI%)6Ej)+NYqcTI=Sy?&frSXh!Ra*_A&A5R2W(osDK@V@0-pOo zav36ou`vY(o}OYbo_z9ALb%#t*8muAAO#g9DRw(8a3WCidDL%^F$@B2DHG0e7w{_# zHCnz4Zt>;Ht9vRcnhV46qbrk6NrYht-fkG;!TDP-I19zia4iO;keB1qJ@?#hz#%?t zO2ZcWG&h%8X*6SOwGX7QV%Y FK98! t}~sP|1Af;|A^Lh6d#jJD~i`Ct%u?{9mrSl *FtZ{*G0RX&i(G#y67O30*ng_P>7GxVlciBV0>o=jMW&7k0QZI3 PF*!w^$r>+l8jm3f89enK3k^VK_H>8#*NxPT`SnwYTydLEwuK56CB3fI>~az>FHb zO6C6o6kdC2n>-K<3N;$IOF(gPv8GH2lz>Bc_<_5wXLBXEiNHn(V|fM`Fk#*K6w|g} z%(Qp}G!<&w%Jesvs+j1O68@cYWJ&---z*HblNyr2xrG-Iis7ynSa60(WPu7b(F0Aq z@cWw0FD-lN;YUL9fc?FoPzd+TcyCugjzM_jk;O@2)|r7awy&K91178p-;dfn*p9$1 z+~7i4kgv{xp&^dpgJt*JmKaj|FXS4rg{g+Y8LO)*)P9RtBj*uXsekv-ikBXKX$4%X zyKEWUJqCP&pMHQrm~#i2MV+68ml;VIKn-6#`&fZlsAjRETZ~ML#aK$SRq)};%*A8q zswER|9}KK}?@CRPP`?`XP-DUQ6*Uvys+G5oIQVxDLB|7k6 &`>#f0Yr#S%{$r$8aHr z;r3BOJUD-k7(NL5FSf$qoQF}+A~u>c=-{=q4}Nb2?*8Fm#4>zf2m*lXrXTn^O2_~M zC OW^;(9D71woyYeMdHbVZzhAYt|s4O zwi(^_kHW2moqq)=VDA43Y_B~yO!vt3ZMAn@)(OWO9)J8 zmi!HmulvQK)o`0&Nc3N{!Qkw*+Dh>Li@YKboXx1o9jFesQX9UtVg(4o@%Cmtk=S|i ziKXf0f*9^!{^4>swQ El0oB)qa%vitvDG)c--+AY%4ePL*XaD`R- {-tn`@Ij*RK5-F3efJZtbf06e5TLXyN|5S5vNWJ+op% z=UMLIR1Ez~h@qM6J59J*cbCNaFOq``s7jC@@4t9nZL@lXyRqPW>nTLZ<@a5qya*|* zx-&UnW7B%T0jS|u*RD~`e^d;$sG24U-t_(p*?ar(!37 e6{ISeF0;o5b(!Xt?Qv z3$Xv9M2mN8!~Tn{sGe?b0x41hpa3i6CvNS&-@#7NRctEpr=P-U#Buxl(@#IerV{^> zUywl!Qwa=|CC0!V%sP_WaC0ccg7g3Iwh6t>%#tl6tp5U}NIU(o{{jZ*J>P=8*ALu# ziz!5z;r6nDGjmK+`B%lRyr4G?Lvu_GoD3K;Ii>0=Ed*fUF#Os&AVL #zk zhkYlydv1bLN*P?>$%{dXw6g*mT*!g_7fjStEaw3V }bYB&tiK(oQcs`RMP=J1rLWr53?km@47)DX=W>%9p#fQ}C?e6N+z zi1l9-;DZY~so|9pW~o>RD(86r#UFzLFq2>|4txPp5nT|&(HI6{CJY?z=ut^8uX$Wi zC6P#m72#;q-`Ux+kD5)y8<)mz2Qul*9sxQrvDuoMO3MV7i={`6j6q fn4M7Q?`v z%A|&j7=)vW(b3Dn)|0ilqoazIjEbm|s4_?m6$nuT5jXJ!B!k-Q51yZlMzj40QX>^I zRVrqvHy9n@dn!mIZPO@rq= sOt`Hq2o$6rYKhg-=<{m{q*=!!X5{;_% zN%^M~5=s4$F;O(y#iNG2zVek-;NW8|(d^y}SyOfT(Om3_M5{rI)=gY4M8ku9KnpDf z>9Li$XSGa6hhotw5;nL{f)6g#!TyU^VQ_9Fw1VKA)_-xEVCc()Va`k`Y#5GVs39Y? za^F~Qt5ZKYMv4|PbGip|k9PNteL{^!MbiU3>M7CG;lrZwmHH^Ts-Hs^Q;+mx&n&bu z2S&@M8D!!FM-q)*Qb)5o`uf5&YM8xTnU3SZU1|+aBJHir~l$>VyI5TK*?H^8fxMg z_MrQ&p33dzRFxn3towL0=Tf#WYm`voL4CX!hN*N6R#F0k6?0F876Z^nm!RfCA690Y zTj#_uqyGX n|3$;?lp>`%rB)on zu{Z`v|Ip$wTnh1s@?JIgDM!sDMXf{!cur2Mx4oW&^>eU2W@7go7??N)s~>!KH1U~U zuGiVdRCi>?kT$pgg7eno;DSfZw2Flh*nd$7g7fW0Aw4!EFdSbvHW=dN8}lst64OdO zKgBK_?AR9_poiK GtZsSXd2 xgE13J|rrpz`pM+*4Sg(9n8*kW_%EOtq)6hf|9=pN++S>OV4ueb222-v`N~-IuD{ zvkR*gM->@^^TVlw3y3xroNElp{)>iK|HTux*$sDZ6hl|mNl9$)jS8PHJL^J^qWt8j z x(*XoSH9GIIe27tHLH-9SxUgVC zIp?uq2tS(KO+^}n&3#?x;^SlcPgQa-U02E7`1pG#le-n<%es!PbLY;*cAO=#bS9j* z>T^W>L|T(Ot|Xt#tV%e2J$P_o3Lad*yGUlzIU|H~Zsbq2`HK;_Xo%s!uo(Pf9PVRx zJk%7rnLlvAjrhJw&t(iV*=sxO5MuVMT;RB)h6pZDiz7we#gTbjlM^`S>c<>hcvKj6 zJq(8N5Pqhqt~D~$DM}c;qzF2H5f+9A7wGv5jTA=y$@z<86Vo|AaTsD8mWHZyvpgxH zzjCPHf{e;sfJ;=##gVn!>Z$pQ1rwCQcr{AnA+4413H#b_BzIqlH3yr&I7|i?nDZAZ zg;r^;3vI~^pFqKd;1~)5F?2l+4CdYw35kgv$!9&nAoCYwaN$$jIg`PKtz4r%SMFVZ z@%@QP!N(ddKVA$Yn7{A|E&%7;ASrks1{aP^T<846S;I)?FPMuXIrQSl%;^)H0>qFT zXbu1MI9&8F^A~V&q}xFR7c|8B3+SA8xMdUGIR{$9<;UAo3Oav51Q+n+P7^nen!i9$ zkt!g#fMF9F!;{is4K{z_T^tE3FA&Zdc9GN*Ik+&PtikJ?t4rm%dWE<00-yksI~ylz zaACy0;pF3Y(Tw?vI+#DQE?w{m>6~-O`HP7fTo`dr>G5M=R$gE%j$B1#F3{^QCh+{l z2(969HcH;$0(8#B V>g9{_4P*!^8 zX7LC=ULO+|N9F<0S64(2x#Pt6WK=$RjS`i)03-jz`~|v611m2Sr4jQNKF)b$w%`ae zC@+uj^P}NzSR#Yon (&ahd6zFGAf@q49vxmlylbbFdiQHSLk+(D!9;O(wylS z;U93k>D=9VyC~}XG3uEXt)?};Z-~>!C!> WAHV#th8yFVm>1a 08qw>k>u+sAvt=0U-0yuw> zgI8WikrL}Kn8Aeyb&=H9dXI-w7>xECBgMc8i-|c 6R07 z_{Iz_$aD2ZDy@)Mf6*Yx#Vaoy7+G+kUdt;wNn;Qec0J5r;;|=rF_iI-l*DO=a?#9; z%BxagbLIF>?S1 eLET!>!sW4A;^L0OPEKY+ zS^RBgvZK&?AuO~drjj)j2Hq(GLqo-#-rnBuxFb4T<(0>K!^7`cZC4|sTZMiZl`!2B zk<#gwzPXqa2Lp3)By`Sj{(@W_SxzT+j&S`&CSPSpukjc;9F8h77Oo-}+nnWsa*hs9 zb`%`TGMAxdwIsTE2n@m#1cs~noOCmS2*QtpU&4)u#aU$ML^hWTIJa%snIZ%MJ%>7C zsb@5oV?Z=?x+ToTEJ6(ylkDce=rA0848Fm?tTUJMdRh^+I1)PNhpM~~#g7b=@RJG? zx=XGfy$&$sq+5_{vAx<*nCvL*HQFl&OYSL)>$-#AsUGQN0>hc`q#J#F>_Qw|&KZ|3 zRpm(SQUgbAJaDxHi#``ocm`3D8I{NR2l%;_g-KVg;OUmCYJ__|IU!-%zK-}YSi`rA zff-zA%z}~s9J+F(NcGT_7eY_AMb@3~x!TrtE;cy|%Vcrm@MOo<7?|wXtQ018b#_GY zT~RR=!(%AE+|k`;%k6K2J*7B~;YwkX(-3vJy7^{eGLcbPylWrfzVUR+K|I~EBS{N- zXPgou7xP5q$S{OGb_^s1vhsqSC{88h(ZL10@ ;ZpIW%4Hs@F503$tUO^k4DHCU?Xm2~ND7|qy&J ?q*dg>?gQaTl5`F-cc~W5_=LNsOX7>E0QWo5G+dZ>Kx6z3G*7 zy5$8IzkyTA$i;jJYxr!W**=fNIR`9`97}K^lU2^ZklXG}c690OW+mL!N5wuht$!pK zMCS=>;9NV>m#JV~>BuzY(ij9x4BkAy+=_FtSv*EA=18r9NHf7RLC-xX&EyfyU)bDK z<%Ly5StNr+JIck8nJf_l1B;RD7}g+-JA1S%wm)g#w0+4V!Jw`rF&t=1&Qz#6t}ro_ zF)_r^7=(ACqa%_-MI2Klf0WkH{ViI9Z{-E=`U`yIybcBz>O#Xt5nRY*ac (G)fZ^ER>Bd3QL9eboc7&sJ$W6{Z(MngZqprn0+lz~Cb$a*DnF`e$nE6BrR z*!}HdU<4OR@yZL-`U_%lq{KUa@sJC`GIi>tE*gV@k?d&XqgO9<<4Kb-VVse;Xd1%- zh@q;(2ZP3o;Q%MxC*2a}V&?WHopV2AqeN8+_|_Vwp(`(-8C$8!3lA4uAf?*LsW_u1 zF*KCl@FqJ7V;pSHRX$uPD=-D`#dwN>Vlco)$;gEm95e=@ce*NuqoC6*>0HcR)4G~Q zf`RYTVck8V^z?D;BE9TWInrC!8O~pfq4GjQXama_9(VI*Y$(u` xm}8ui_A@ZSR|WBdnA({x$!rX z2eQ$04o7}BcpQO|VF~0;%dOK8L$o{TbRT$+gar6NIQK~Q=^nbbbs+5K0i--#ZM=UT zi!N8=xtQnnk-3-;#&9gKX2!Q*4b0$z&F##$sOjWR=$y&Lk;g_`IWp|ag!YK! OSzTeYBy91bRc_S(LY)?X4U@qpvVHjCGrE#6VsOC54($1Mjt-tUtjvQU(NMU9| ze0*DcSMt?>WJin>2VOhU*>&`+Ea $!sw_U$H|XGWCSPyD9|+CU8I@4* zbju@nx@BN4<_H@l8UtD6?afDu!7sQ#FOC#a>o3Nk@&YF;#+w-#@Y)E{A|GCu>6QVx zm=A*iZ #(&QQEKRTWXznXDXXeC%bN zAD=aRixum=^A|0le}KuIDxcs&gEOn~v6ppz3>d!c{TmqDQhjc%h1*i45%U*Ca9b+V z_K9D4Vcf0Z5ny14F%11bpZ#O(^6&2r_Vgr#8SMVscH^7a z|7Y@eW1tpCwuFV&S=oAK=7QN<)_Ee#U+~c81`M wh37s?Ca{&)7@F?f(v#s`%K5`Z+TBVp~oG1Ve? 5C6>Z19}=gpWg<9mcG zrMASy1w21*`TRvwryhFhsUQAu){0*gQg86Z?>hRrTv7tVE`Z^r7sI$(16_H6UL48T zmI^QHTso@7k&j2pdu0N_22zKg{q&7lvuF& i-{U3?*+cDF6(>8d8H>Ln^R_<%BW%~B)H&= z>uvg1!ZZ8}PQkZLqO4)*QXdY$8kXa&(jm$mXb#W*y7A0C9f{$B*BUNDYq)!Rd@wK; zM}7|1UwjCI3q)CG7+jcm+fuosEABjl>o0;qfxs|hIc*Jo7-m2YgmX9qFc9YO2GK5U zKr>@=X$ -XJIt zZPI+;8~j}Zqg4Ws=7UxVSOaAbvsMre2D3#smgO-p+#;-DaGWssRE`u&@-5!Vk!k54 zDzt1@-Gp0zQ5t)$jp!rIB5VP0I7DLbc9b9hXctR2ZcI&Obd?r?Q*m>^?P1m+?i?^} zTzwhG55qSQL;rYSU@ne)AKx=F1FyWmoWE#!Y};y&QurtD-NiBd`3;)FQ&WMgoDW(h z5<}|umVOWDAIhA0^U@a{Ja};4Jn(Q3_tG?nS%1d6te7gQl)w;v;dp%a|6Iqd;qQbs zM2!`L|Kdn0a{+XbHj|4Zt0!LNNPc(cJsiVN2nw)`S-W vf(itJIccdIKS`Z)aN$ZXho2A_)D?Wn8UTh%IEHT^hW^u)I0oJ5 zF)+(I6N@9M;6hqC$1-6nNAkO4JFYB60000W07*naRB;RxghOjTShzW@?31+D;Vmx^ zy#D&;3;~ohBsH~2nk^LCQ-nfIcDB%N7YegC&N;YpEx`eRATWq701PZQX$|9w!EbRS zF@LcNRN)s4@nI7{V?nvCk(#ZQf (MIpj!(I!wNJqT_0Smp`c?a2U;jN|4Wq?C1sAHr zJf$w+oW0vpAynlBFmj%tiz8_ahv1-X<;wIl(fjUoD6&o<;_A7=ni_>%R;S3VHrw3A zbryrJ!7X=JSxjP;>`ga|>uf1y{h^_h?c5Fr5Qh#0U^pLuVYJpj1sB5L{KbxsEC%oV z1>u}0^x{Y_2B64A3%NOI20q*6)QR(oM2KJ$g1Fg^0zrX;<0;njZ5CEDKi68WaIn?+ zb>gxzmC~(biMADN``KDJ)|l#xp_R0Tp3z_cj^GDB_&yZy^T$7?wxv4U;<4?A&RIkU z7vTDf9s4Ktwp26*e8{%Yl7krB>^(9B!#KsJomusz#*E@^GHZsSu3RN^SuGj0NG@Bv zMa4Hd__{nvnOLkya}^jrSh)y}=YRAg z@LRCTku^kFBrW^nI^diq@U~Pm2B^h_TR#0DO_-v|=B1>7ZmHeQ1Km^bLx?}x?V1$$ zl-&+Gt9Bvy4V(sk1;dD?smtfj2Ox&UP}tWo5)80c`Xc~f`pdLT2hIIk(-+X&Y7-ke zlZzvPb0*ebgiqjYsb~y9jZ-tWusELx {rK0z?2*@0ID`-}7(%<_~|U_sv`&Dn}B* zg$cba6^#Mj&d64+K+56sr5I2yxbdNioi?s5EK6stuh(bn;cFH3byA*GD%7N;2vbP0 z3pe6Zean|KG3 =C)?05qKjoddul&a8 z)G4;46V92g9BG^Q+fvaOfEMRxXXp?_m0Oy{HuHGe+@^Zq1SO$*!#1njnODHJs0x(D zR<5~LU#mdWEJYr$ejfaP)zTR=md}_sV_pD;^AN+0ix9&;3Pb3S7~uHqc?e SeE0sno>c$Qok)Lg$zi+fvaO;QhQLM~;?pOLy{h2oE!P z_%@XgbJj^%Y__XTAr^DYVufsvM9k09Ni17r{8~=A3Pts-Jai)-ot`m+iNQ)+1CHUd z2V%gdDyEYVtZs2uL9P-=t}-`E?6!XV{`8EnBk&MG-o40R|T)$F@{V3^SIXHi0Hb zth8WQ3MP@~E7U?>zML(QXQ^FcwjyU;BdS!^>K*PpZdjJpWNg~$vY2e^6{3xJJT4GJ zR1gfALtr4 %I}y+^EI8|!2akukKcpqNu2(X*OuT&X!sr?k0#CgOos z335mc#87#9q}ITrOrg d!u5of+Dg}D+i~~HlQgR>J59w7PMt)?w#({VjVzba5^AfpR2d}Aay?tF2Tqy{ zjxsRl@J6ZfZh!LNjf>v^4ATlvTp7k1evAkCr`sB>?kpv{79h}SwJaTrrPFD(ddYSO z!tH9b)$m}7Et;d|<}>CmCVGmkF9t _yZ3N 1CYtdX__EC-j`cQ%eK}i&SS( zSP-YAfcUbM_GuZaQDS1axNpOIzx>s&UwC)L8++C++_-cJ&&M&qDQuhkW3iH5EYa#r z4M6)A3l|rQMPY0JASA^&2b*xsn%5c}AJ q1uOwFs8Us_RH`aSLSe)?H~@!6&|g|+EcgQ%T$mI&{|pREmo7or zW<*t5x~DFk#=!D8l&&geqqyFg!_ROQRC|mTX#j>L#2O|)48R)hK@4C06*fxk5%2x$ z&wu^u3-7-0$3H&3HzXuvHo;=aDjsN(rc9}CcDZxe+a+3P3KnkFhXw-&iopO#SQLr| z!XAL1UbAf3+$;}V96230=O2B4;tP!d>T$^@Rfw?2q&J!n8bh8$qE{8^EmaLFDNA6{ zu`IzFr6t5-vOsIN*WZU@_~Myqw+1gC?T`I^^e=w8V)5eVo__l2=Kzb@vu6Sp%ND#m zWsgk``bfnR*dPH2>kJ&VS`G6|)oKm_g5Z#~Uv68rdi9Rb$p5|It>>SAYszF09}KCR z%{kc`jXk>z7N-O41@zE?J$&e+d87~+YL*6KaN!s_DGZ-Yi%7bZ*m>mqmlapTfBTcg zvqD1l(k!^|ESR#V5x8fE6SPQxg37?j+bSx@MI=(^aSRj(hf?fXFIzqLmC%2hGX1T$ zrcY lCh=F9XBTV|+~ zhe>2r;wBfejnC)X>fGhl9Bs4AU_*_L{5o;I-o_#9p=L=ShEN *!R`I6Iz1_ePQ4`9HwOWOPD7xUmEJs*EiH? zvcVWt!{Z5scDo%mN>~+Nw#~I(&D9;=S!;4>%M_(9zStrxP}FEZ%R~+?YHEbTV)zTd zfG=V_efxfIQ=`^^3SkJjN}>CitDaw4JNLD@Hu*MS40_lkRT((x )lS6zlAfjwUlqX>ql<}~1vB}8I=5gx{7IryH zA}%hMyGl`kWT&iHqI9m4pn2 -l-GLnNy;s(_1@@I88oLa%6+@fGW= zh|T5N8LG&UH;O!=a+Zvv@^IEwiOT#tte-#(nM@4Nd^HUpMZX&Ti;9869vIjEaH|=~ zuEAqRDKhzfvQ6TuK$DaKY@rM;+sw`eBp?TKxtg;Mcn6l&$u6)q%GRtws`5?2BtJi& zejG}Me{~dR4s+T_-oY0`kq*)16nK Bd7Fz1Xh@V|tK6g$ zvqkG=%3Qsr!2<@o85(~Kh!?|U62rxIfC0{Cys%=$8*jY$Hos1uD^XN&M5qR!ur-1< zNdns>!WaOBBDi=~D5N+5b1>je+UdyM)@TD3lw$y6>@8ci7z~CFKm1U|5azGo7@R{K z(9aVG%wN~7TSq?wj)_bB-VHntj){+BK1n} NLW6 nlf?<#o7_Lwl!0_$AyMG`3?z=01H9QALZg4^auy}v& z>SX|fSm}`HK$`^jRR+fJiBzhw+iO5442)EyWw2G+N;?O)tGN#Fk(NCHvT4(%v0vyr zZb0-%8K*w0mYt>GSyiwT#51k;*z(Qm%~rOfK eAE!! z8t&j2B4`X?+;B7Iz(2pZCuH_)FmT&T45DYxojdn)o6D`NB{6IT4jMNGI~=UnKy!et z5^xSG*ky$n IjEL(`}RN)gB5?Lv$HeYA;C{UTWe49<|-sa|()m6K)Y&wHpO3ZE4_=kN6YXBHx zOHM>g`|Jx6Ls#3)tC7_^YZd8pUV3Tf)Y 5#iIJSa( ziAUiI+g7zjl&8xt7w}L^8DbD1Ih?! O9QDC{V~A$pD7o}FEU&=}zO4GbJ?DfSdi(db%j zzvmy=xEB=_joJZ>P#73e4+=6ARa}cDn`05!$;njMEWrPWm0|c1kD6u$kN81KcJ|T- zW7rKb9Pz jo`@JWfbJ?>EK9aYIpu2DQ) Vd;GdCbnk`e?J)aP^yT!Ef!Bf)m}mN(L-(EN4`TL+=xhCYbi|on45>3# zsz4tFGzch)2 q!2HZFJV!&X`XFBMx<~p3P!^-_IPm}{N zd{P8Cz-&ip(I>zda_|l-F>bKRW%#&(?wB)s>qLhgbjg{+0^--e-aYdYzX3JHhX}-z^gw|gmk?tSFNPTlKT791xed)8ncSF7Yg$u=ZW5wqjS$?OQmI`k z&`41!&cjPVxHLG1t7qD13}4gMP`%z4!;fJcTGnXIV#8pA1++?P*eb#C8yrW22VxYx z6%5}L4JQ3|d=$NG4a$9pVd}_-&CHVn55`OUhWg%Bdj}V-P2Z~6gsAsybJf^sW5{im zH= ~6@J$!+zj^kNxgiGu-b|wbD#gjOONCt*yp*0)@7-9l2@Nf*xR@^x>5OYd7 zf;7MZ2Z7Hik;Xtyv5KwDvSrI&)3bxl;rPi&o)4TXVoo;=e{#@I@w `_X6Gpz*Sk {8$tr96yWu8jy&;F3|hRGMPXhOsxHMyQe6 zkxfD}K8j;Vow0o0jCsK@B#_qdHN fx@PD78n%G+YqAzG#44`s`9y9 zmPsMj=?oUOipwsplGdt>a`8IYnMs|ueExD~eggwT673s+H5`cxf&q69_01oPb8DR+ z5z#kj4`wrHnScm@Unoz9(KiJieZzy%@67#;r}gjygJna7%mSlte&-Bz?Dr0VZxuA| z_P|h}H|YviD_OYEV%VB4$`DC&xB|6kQ;~?1jarO(A`P-hiXzzvsxHewq&a1q)H!7- z8B&yMLEtK-)EV>ULkYytMPhjN>x(_t;r8hegTxmD@B4VG 6Vi}hgWz=%Z)00RI) zq~_pFQoart1L!C1eCM5a{*bvVeA0*yhK2K2nzpCsRarP1)KH#XzK)|RN;71OM8b9D zs7k8f3W1~Ks0|#I6wOd^6c!lrS(PG`rp`OKXc05_jl^&hVz@=P=!?J_x*>)pe+(F& zb}nmnc~@ps!R0X`K%)G0-<26o7<*g))|APz7QlZ=z|=!)rvgQ;+`fHJ7QZEnyS|jO z-{lOosN}|4xms*7G@BgT3`(m~xn5k_XwbUW%WXE%CPV-R)EfbY`92A`ObijbDQmbi z1co2OGF4z8y+4bMui3*Fi*Y#kLZz*02*JBfNeR~}y#**tpG?BQaA@kvsq+`D{2}4Z5DReI&q_-THjEOip>hAUSI1L7mM=5EbRxPjdKnjgo&g> zV7TRrp*Ii%k1&VzE^z_Q!Dv*#m6JZJ_5cMFzFN#JZ+`2o=igc|S*_s^ROF(C3m2+4 zn?6z)%ef!rbIhp4lDAc*QM&nxtgtsd+xLi3=ID9}oOhc;KmczLfZ+&@;Tx|t*d!k! z{>cq6#Y6@djNu$i#2Qw7m|0atEG9OwbZ`x;+uAtg<;k&PGT7qDLx-NCKpcEskeViX zJugpy3J}n5)YPP`f@|uD74>#JS9%qADrJdKn4OwBZ$4gQ>=3h91H@2GWB3}!aN{g# z4Lc?N3+s75`2GUC(+W9kmk`V9E#!)Bz(AqES9CksN-?A`1+L+qoD=d>zHs5zh3TnjX>+nyElF8L%_yw`gXblLEL{qn!g3k{qjU+t&|K|j4KxOuBuIV( z&Y>CSQ0&y}AP73a0bf?HC)d?C!>p3Ywr`tnAs>Rn)cNz5A3O+#W2vdI%HGnYOO`HK zwQ3ctWmU5ZS3i6*6^z*qE}xIPWEo)Uo}hG`9dzj2mWrW6bV!Qtg8I{}9Rw!;Y% zO;~ucPeVh#iN(^9**<{6beP*S*>=zKuP#P5O!Hy+Pi84x+5o(@SYajB`HM&j5W-Vr zk+&Q#hI3s yPVDfMn@N$N*P{V@8kEy(9M{#kjgUpL|yX0$@&0Sr! zc5V8mRg(=vX+p;px*V>T15uRNw?Ow2-}=yab?8M*3RF2<&DDB{p(!#Z?p!y(aPjMB zM}h%QP+u_R<>?F7%Uy1_I4cWQ3CPXO%_ cfB+^ nu`?tB|a?lj KZHE;=YSC?scJVAqPG2k$B&XUQ+ z!Fe*`)&_FpfW>|_x`(xf88fIhiL`~q)W!iA7NtWz1Q>dUz#tnM1JN?Us$$cLdRBN+ z)%17fzVh1KSJVj4zFGg~ti6Ck>XJ!?!4lVV>pgNCjl?&+=0KK8AKn^#F#Mj}M&oTv zdPaq)BsPcvmSMf|_iwxyjz0(k-ZH@gZ&M(P>Ch+^ELbr2gOIgv7FZB0`$I?QtmmE! zd1>RMa?|C#JrSpNlN-W3vw}1S!Z|$H8VCwc0SZ5%HkH{R#k7Y73=C&U44>`8G2B1) z01N~PhyoVdTY#6^Tb8$W?{gt<=W?W25l8%X$kTggPc9B+w*JEZ{@oY!7EAB0pjxGo zSi@AJUj0wrJxgz~^ji!&?2^(L5(6=`JP-qe1zvgb$M%ggL!R3^%TvtJV2Hx?BIGcs z+_X?}^=!xg`Q5l}IQIKZSoQ$7#uvk12@HkF{SSe`N0tB%Pw!p)rY@(3m!^;{#=A?C z$W8Om=DQtd{&}1@Jo~#3Fs!u^<#{nA58n6+V)$ZA7 +{XLlpI~%r0XsT zRbdI0o~r1t#$z+eUs*6rAEpvwh{_2tT*EQ6e??hCU;o|nqr-slmd=|BRR3ZlaMQvZ z=cMZ{@rq25-2)bE{f04b&AJcx1x$o*%}Q7Uh2bxxH9!m(Mu!38ZG34qQ2pEctIDu! zgYs?AU7A#GIt5{6-pfR>l(64z`1fZ=D_?B*T^PJKxxHF61@p6p01Q 3j5FB}*p2EYNj=~-_&(}g_5B8T0j zNj0m%lZtYCqikdULfUW_M~W}z!>!@iwc|lC)Q=7WM!M-zt;o(3G}KQzH_ZbbOmS;P zlU6Y5@5B>G!VX)xh@E%`+!~JECop`*z;JsE7 YNX~W zZB}y~e{@pUoTaTYOKT{M5JL;Z(4RcGkHj#I#!x&u4A`nAFHHq*`o)hGC??EvdiH{$ z^~{ZvF8DBhLSslwE+jELv#;=S$GtIOz}+ ~+#04qYp5I>25d E}GqYrqG6*!j7!LSZL&S-(W1wa=7S~%) zo;^eN=Hk6$>MjZRQQ-#$Zbml?CzO8Gt#MJh5n-qY7;c~Tv4#^@AcnBIv0%V>nt9Mo z0kINJ?Z0TXAehEb%pX$_C^yn1%HgQEb&0wOg`rih3XL5JhV8x>2y3{~2{G&$69&4w zl*NJFr7_KFq-UCW(S_}|A|eu-CKQG<>17v^M}na^h&7xdFpSL_a1J4`yHpE } zT^f~}4l^Q!ZFghO#h09NPbds=B2)jRkz=@rSGDrN5I$xMWOr%to01&ZU6PHyyA;J~ z>Aup0n8Ttx$YW8b`daVt@X=sMFHIORhKk##0fuRxeen-p47Fp#KzEl+87V2Rk0A(@ zDX@;jwjZ6;>uSnQjtWCv$wOcO)&NUp_*sKvj2P%3P_qICfh0r_XawCQLDN7>Xv@_$ zCpa!Ey%3Xy);O-l#T}3K?{-+DZ^jqnN8Fg`ScmVGSl!LG7_-mM=z-jU%+RI_o&KI) z5P2rPg+I{LG;kWf6stORtf@LOIt+o`or;z!A*%)c0TuGzo1LN5RdwgO#TdqlX$@_P ztc(;8&oMtFPGo}^gr#w9@wx|K*i})9V|a$fP%=&!s36dbRu}~0u-}B;rJ3_KE*aiY zE5c0zxE~ESDpQEDdktz1l2WWvsko+azi!8IQ5owJ-iIBqAlIVsD~pga6u%O?gO*qF z!E1LA!EO9!8B)*Zl&dZJtH=F5ve||TLY-y=6|rKWzLa4qREi2XE%9b7vp!uUu!kBA z29+hOzZyv|5th|OeOZj9_oAV(LJwbrAOb Ls9Oj )(BwjEYE)?NrIO?Q z;6vg>j*g>PvCUGFkfa?J!{=cT!<7?0)<9yY8oNVWwQ)WX1QKa@pH!{=+3b+na4&+H zFU?sx6o?iR=Xz{sM|7CByeZMl>W@FeZ#^4-^T?5NUCB{?jZ!Gb7TFIDdR5g4$$}Om z?*x9OQ2?&QJfh^b81SMeJ0Y6*>5RYC)fOH(?cOPW@1xazd8zO&_|^ll30PUUNKjbW z-`OH*2=7NiyP`AYXL_!-wVjK-6cbr=vtl4BUFyDiEJ}3k`1w|pUl`rreYHA=AC7;B zP>X*^X3yzUSR6-kF44i~UhYVi4euN32n?qvYxrh&MAG &t6+WrCTr|05*i z>8F8B%$zqAhe%FLQeu;k6Ymt90ga0;GCWMw5uF?p6LZI7_B~Zt$uh;9vtWX1 $F3s0Xo7o}+FNyM6+yyM6F1i~nV z=w2Kjaree6N_*n*KR|Fn6n_6+BvMux(-BjiSb3k7T^N6zBlLs`TonoMLuyL!54qiQ zG#-mH2wGzJhW_Cx&=@*t49`A8V<;UL4D^~A1;XQPOrJUR?KeY0_C5`L#L}P_i0Zk? z=V0U0;E|p=(+8jGMJmso3T`>Fh6B6Wu+Ro&Qi(-W&+8zs n!&a{ zEyn5W8)OGy2;EniY{tSB+@5Z%Lc|LTjf;yrAQ4@vJO^JkqTp# q=4(pfjUV0%-UE-H!VfDhpndOsviRgM;m!jmt_um@rYhZyKa>1!NA^tfRF-6bLj z#C}}^nkY}*PPwbm7V_MXeI~x%G+22X*9{uefj8p4WpPJ>V<@}kERE>`qwJ2@B#hsX zl0;sK+yPg55I+pOv&73my2RS%eX+pQG8KXw-PizHQ>PM%L~7N*jk|p~1`UOwSIZ4M zrf|wUkyrVGD~aJ~%N1w@0AS6jHsFRm_CfE5#Bo*SqVmehV-M=EI!Fw(HH &rH{ARb(QM^OxZiao=pi>)}T76Pw4Bk4S_e%&2MMGi0qTE>rTCYh&g^4n#tjpw; z$Te`KC%ezj8VD>wKQwn=H?D7UdpEWVQJqRkjEyZRY;W&? `F*0aX05iA-TfQXkhs0TwQBCaD$g9GK#DH5v!nk4}x=VX!uUy!~mn$W# zPmK*Mi4tGm8q6H3i=ByQ@D61d8lONkO41=QaC;p_kz5oXdtHcC>&jx8S9*9?AQii< zi1H0XW6(JW3=JHBAqMqa0v;JieB!Al{AuJCiJ`2i%3x~fj8gE_RbR$`8G|Zgui$?p zH@l}Z5`0Jz6NBQwm8PrO;_%23V2G;hEb+01amIkJnb{i>veMI>t2c7Da130dHWv=5 zHwHP`$ah}23bik4M$g7xCmN;WL-+>JR >7uXHvy5m!ojz?Dr!T3M&*SaF#- zg1~?bgF#1PPynmABUV_gooe{UsBs-s>(PocYU0$JDpgZNXJoik*izVm+) 1Vo+PL93AY1|itns#+vIZIhd)zSamdpeLhESW5#Z4D{0_)ju zS<1c7&7KqN d zIQ^jE cBIzJZ?hyTEy3O&5rt!Nw}$#CA9gjLc2k2Yz0=n$Ve>ElO95 zc2%}P*0%?am!jq6IW2uyrmSRN#|bQ|vH!+t&}7E!>W)&2L`4-n9jD+u({%ra_d}u^ zla3~1toYupuB)-O5nxD)*!}e*#DKj7TmfHRY~%>agqXcZz%dpNg#l}fZ@b=eHlnAb zzk?XAb$0b6#1Hk(BEIBCY=`faSMV$4=M(qsYrh_Upr_|3oY6TRLHrEXFSyX&e!~0H zTv=HeaqC21M0;|=9o*-Cnb025mmJZPgsIQ8w PH6DX|Y9 z9Qb_5&A5F@02M1fzP l}QiQ ^eF0bN$oHz1qJaNhv>u&G0xZsrd}YDW_O zw@d2G31H|J{7S?f=|BH5VnN);d?rsgVS$q=q k7ngImME_+m(% zy7#$iqNkK&&Pi7(BtvyrA1W$#p~cCmi0F`E6Iy&Qkk)Xq2UtT}RCw#SVps|%mWXkK z!2re$`U2n@UK;EAVm@CKn%vW!ES%^V*bEGWHT)gNaAsh9F)Wz}%waZPp6g^a7>z7R z?rb=zG}dLUbvHW_y7~td*rdboS7;4g c zCLxBuKN1XZnZ|4|cHr098s&{PaP-|8Z(7iA4+Alw5%R&jY%F`;%8>t vXYZXo^E(O*415B^^`70|JYo!BB>mj%wdueb($~&@F65=} z)X&7wIuHd5*7sce7BD;=vPXenh++>o`VNC1hBIx@8onJ29vzAaSfSrx2!^2xV)*N~ zf`OHWp)AjL7>2^|_W%saM}h&x(sbWp_zuGpjN$0Fh5`77wC@_F$BqH`hVL*u5!Qfy z*C_d8P!5m5Uy!lL%DsQw8&;qyGi0@Zqm@H$u=)hZNcL$(#wJX)J^;gTQspZuANkPW zCvex9wTu6_II>R9(S9BYj@EL#q7EYILx^Y`BwaMryKfErL-IJoiT@Wh`0RbE^3zh) z5Xu}DgEGkGkq)mEQ{rTZgc7}1w1lkx$sbpQH@S4yzlE>(<4@MJNMUZlNo)l{%cn+v zQH-DXy>o-n=cAcBgR;D$qvazlE#7ZRe|v^TXf-iZ7qHLeFc^YJDJ6A;d|pq8j1+SB z#%4m^Z^T7T%G-Z@Va5GSkJXd;e^ BdDiK)MHzm<@WU4)R|tC1A)TQjz>ghFcQ^LkQcv
e9CBTc*XDC z>i2wJH@t>O@h~LFMwR&Yt!`opLp5PRg{j{mFa${Wfd8g|yMP=Z 0UVZns1l$Lq^`%Q7t{y@{!9Pg8+N+j8X{v4t5Z}*xpvv$KD>EsH z^b=YMxJn51Kurbg1_?CEl%N;_B+5@JNV$N^eIVDM#4zM4EqCtR8MqVm>aSmjkGnr` zKknQMuf9;hgt?1`+3RH)$didSGV@_2GEikflt(M@*iZ`eYVHmc`b#pudJNPBR0^RU zQdj;ujPlWN5DY;i+AEb_xeev~`SZtdiKFEvAzuQaKIYG_{_59VN8+O5+G2nGt5@R~ z6mf|6{V6gzk}L@U-+y4Va)%*4?;hhP*C<8aXXufsNm_mIJCa}brdI)RxI%zt&O;3` zG{(@QpN0c41d&)D=_KUdy?dvD+`W4@-Ye$_IdbI4pL`Jh{#QT$RY&Z(%5$Cl;OI|( zCfPCmata;=@XKMWF^B*q5vr;f>h2r*Zp1(COYg_W`787|q0j(*QeW{;;QNx_+^Y(p z7^t7qKu@H`eAVcuV?PW5lE9D>Lato7(m_Z+E{U{s137uppI&EY_s@U%^Gh9Fr@Q(u zfusMr>(32>I}&Jom4R~GN1%Sr<8mDQJCAGZIDQD9hbQ=)9{6?vx96YQygCh{)q9=( zN~QF85`On?S`&n3`Uy2%fkG;ep-vw?`(PMCl4v=F%ZU>wE(7T!B$<#)gfQ7r-2VID z-ut(t FuJhh$-0Vox!zKRVg}Rh_t9#zNv=e?@;EnoU zCkf3`s_jqoYL-?jL! |8q3qs4p v0;aJ6;#FHrtM z2*Hbh^^89({DA!XzWO^2YIlHP;rCMejds$s80HnwC_c2@@@W{zcfZj?={J~$z4tJ# zW8!}M%3s0HkP0T1OXwp|QMdx(e?tnu@Gx5t!2h28$4FsOm~c>E4*`l{Rg_)r9-=J_ zBKxM1O+a8%;4i!Vn+KwS_{vwsK3ev@g@b9C&~R|o!ha)`{||xIRvddk4pRUC002ov JPDHLkV1iX|nOFb- literal 0 HcmV?d00001 From f6b02b1c0b5236eb45e8898452aba04b8dbb5906 Mon Sep 17 00:00:00 2001 From: Matt Schmitt Date: Fri, 25 May 2018 05:37:49 -0400 Subject: [PATCH 08/33] Add HomeKit support for media players (#5378) --- source/_components/homekit.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 162ac3b10b9..0d306231ccb 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -30,9 +30,16 @@ homekit: include_domains: - alarm_control_panel - light + - media_player entity_config: alarm_control_panel.home: code: 1234 + media_player.living_room: + mode: + - on_off + - play_pause + - play_stop + - toggle_mute ``` {% configuration %} @@ -95,6 +102,11 @@ homekit: required: false type: string default: '' + mode: + description: Operation modes of switches within HomeKit. Valid modes are `on_off`, `play_pause`, `play_stop`, and `toggle_mute`. Only applicable for `media_player` entities. + required: false + type: list + default: '` `' {% endconfiguration %} @@ -229,6 +241,7 @@ The following components are currently supported: | fan | Fan | Support for `on / off`, `direction` and `oscillating`. | | light | Light | Support for `on / off`, `brightness` and `rgb_color`. | | lock | DoorLock | Support for `lock / unlock`. | +| media_player | MediaPlayer | Represented as a series of switches which control `on / off`, `play / pause`, `play / stop`, or `mute` depending on `supported_features` of entity and the `mode` list specified in `entity_config`. | | sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. | | sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. | | sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | From 9293fb5b3807619b712b75f55146c9f348d77f34 Mon Sep 17 00:00:00 2001 From: Matt Schmitt
Date: Fri, 25 May 2018 05:39:19 -0400 Subject: [PATCH 09/33] Add automation to HomeKit (#5418) --- source/_components/homekit.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown index 0d306231ccb..6c57811dc3a 100644 --- a/source/_components/homekit.markdown +++ b/source/_components/homekit.markdown @@ -231,6 +231,7 @@ The following components are currently supported: | Component | Type Name | Description | | --------- | --------- | ----------- | | alarm_control_panel | SecuritySystem | All security systems. | +| automation / input_boolean / remote / script / switch | Switch | All represented as switches. | | binary_sensor | Sensor | Support for `co2`, `door`, `garage_door`, `gas`, `moisture`, `motion`, `occupancy`, `opening`, `smoke` and `window` device classes. Defaults to the `occupancy` device class for everything else. | | climate | Thermostat | All climate devices. | | cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` as their `device_class`. | @@ -247,7 +248,6 @@ The following components are currently supported: | sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` | | sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` | | sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` | -| switch / remote / input_boolean / script | Switch | All represented as switches. | ## {% linkable_title Error reporting %} From cf0f034accb2e85f4d99ae71b155e3ca927a6b82 Mon Sep 17 00:00:00 2001 From: Marius Kotlarz Date: Fri, 25 May 2018 15:40:19 +0200 Subject: [PATCH 10/33] Update coinmarketcap configuration to use currency_id instead of currency (#5422) --- source/_components/sensor.coinmarketcap.markdown | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/sensor.coinmarketcap.markdown index 1fc1300ab50..e31c656efae 100644 --- a/source/_components/sensor.coinmarketcap.markdown +++ b/source/_components/sensor.coinmarketcap.markdown @@ -25,17 +25,22 @@ sensor: ``` {% configuration %} -currency: - description: The cryptocurrency to use. +currency_id: + description: The ID of the cryptocurrency to use, default is the ID of Bitcoin. required: false - type: string - default: Bitcoin + type: int + default: 1 display_currency: description: The currency to display. required: false type: string default: USD +display_currency_decimals: + description: The amount of decimals to round to. + required: false + type: int + default: 2 {% endconfiguration %} -All supported currencies can be found [here](https://coinmarketcap.com/api/). +All supported currencies can be found [here](https://coinmarketcap.com/api/), a list of currency IDs can be found [here](https://api.coinmarketcap.com/v2/ticker/). From b8978de2fe2dc24dede596dc01ae402fbcdf5ae1 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Fri, 25 May 2018 20:55:32 +0200 Subject: [PATCH 11/33] Remove 'mention my name' as I no longer active develop this component --- source/_components/rflink.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/rflink.markdown b/source/_components/rflink.markdown index a8f340c48fa..208301d229b 100644 --- a/source/_components/rflink.markdown +++ b/source/_components/rflink.markdown @@ -127,7 +127,7 @@ Wildcards only work at the end of the ID, not in the middle or front! ### {% linkable_title Device support %} -Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this component please consider testing and adding support yourself or [create an issue](https://github.com/home-assistant/home-assistant/issues/new) and mention `@aequitas` in the description. +Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this component please consider testing and adding support yourself. ### {% linkable_title Device Incorrectly Identified %} From 313479464cb460fea53c8d38ace12ecd0d2e1442 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Fri, 25 May 2018 22:42:08 +0200 Subject: [PATCH 12/33] Extend packages support (#5425) --- source/_docs/configuration/packages.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 7c95fa719e2..b8caf5394cb 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -73,7 +73,7 @@ There are some rules for packages that will be merged: input_boolean: my_input: ``` -4. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] cannot be merged and can only occur once between all packages and the main configuration. +4. Any component that is not a platform [2], or dictionaries with Entity ID keys [3] can only be merged if its keys, except those for lists, are solely defined once. Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the component name. From 9f9aacbbcd54978533997d2f56f727997908158d Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello
Date: Sat, 26 May 2018 07:44:03 -0400 Subject: [PATCH 13/33] Added UDP and parallel streams support to Iperf3 (#5434) --- source/_components/sensor.iperf3.markdown | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/source/_components/sensor.iperf3.markdown b/source/_components/sensor.iperf3.markdown index 4853711328f..add891e3c17 100644 --- a/source/_components/sensor.iperf3.markdown +++ b/source/_components/sensor.iperf3.markdown @@ -49,14 +49,23 @@ sensor: required: true type: string duration: - description: Specify the test duration in seconds. Default is 10 and valid range is from 5 to 10. + description: Specify the test duration in seconds. Default is 10 and the valid range is from 5 to 10. required: false default: 3 type: int - scan_interval: - description: Specify the frequency in seconds which the test will be perfomed. Default value is 30 minutes. + parallel: + description: Specify the number of concurrent streams to connect to the server. Default is 1 and the valid range is from 1 to 20. + default: 1 + type: int + protocol: + description: Specify the protocol to be used on the test. Default is TCP and the valid values are TCP or UDP. If your Iperf3 server is located in the Internet, consider to use TCP instead of UDP. If the protocol is set to use UDP, the sensor may not get updated due to package retransmission issues due to its nature. required: false - default: 1800 + default: tcp + type: string + scan_interval: + description: Specify the frequency in seconds which the test will be perfomed. Default value is 1 hour. + required: false + default: 3600 type: int {% endconfiguration %} @@ -64,6 +73,8 @@ You can find a list of public Iperf3 servers [here](https://iperf.fr/iperf-serve The frequency when the test will be automatically triggered can be adjusted by setting the value `scan_interval` in seconds. +Parallel streams can help in some situations. As TCP attempts to be fair and conservative, you may consider increasing the `parallel` attribute. Use this value with careful and refer to Iperf3 man page for more information. + You can use the service `sensor.iperf3_update` to trigger a manual speed test for all sensors. Iperf3 has its own service call that allow to perform a speed test on a particular entity. ### {% linkable_title Service `sensor.iperf3_update` %} From 59a2ec0d99bf8e66d0ec654295e9dcde2e0f49ea Mon Sep 17 00:00:00 2001 From: Max Muth Date: Sat, 26 May 2018 13:54:11 +0200 Subject: [PATCH 14/33] Add new shopping_list services (#5438) --- source/_components/shopping_list.markdown | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/_components/shopping_list.markdown b/source/_components/shopping_list.markdown index c30bbd9ff6e..e99b96e7b3a 100644 --- a/source/_components/shopping_list.markdown +++ b/source/_components/shopping_list.markdown @@ -18,3 +18,18 @@ The `shopping_list` component allows you to keep track of shopping list items. I # Example configuration.yaml entry shopping_list: ``` + +### Services +You can add or remove items on your shopping list by using the following services. + +#### {% linkable_title Service `shopping_list.add_item` %} + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------------| +| `name` | no | Name of the item to add. Example: "Beer" | + +#### {% linkable_title Service `shopping_list.complete_item` %} + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------------| +| `name` | no | Name of the item to mark as completed. Example: "Beer" | \ No newline at end of file From f76f45f33c789395df02cf795e8eb0bc9d78ace2 Mon Sep 17 00:00:00 2001 From: guillaume1410 Date: Sat, 26 May 2018 16:47:01 -0400 Subject: [PATCH 15/33] Initial documentation for Ryobi cover (#5424) * Initial documentation for Ryobi cover * Update 'ha_release', configuration style and setup --- source/_components/cover.ryobi_gdo.markdown | 59 ++++++++++++++++++++ source/images/supported_brands/Ryobi.png | Bin 0 -> 13389 bytes 2 files changed, 59 insertions(+) create mode 100644 source/_components/cover.ryobi_gdo.markdown create mode 100644 source/images/supported_brands/Ryobi.png diff --git a/source/_components/cover.ryobi_gdo.markdown b/source/_components/cover.ryobi_gdo.markdown new file mode 100644 index 00000000000..eac9454463d --- /dev/null +++ b/source/_components/cover.ryobi_gdo.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "Ryobi GDO Cover" +description: "Instructions on how to integrate Ryobi Garage Door Opener (RyobiGDO) within Home Assistant." +date: 2018-04-22 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ryobi.png +ha_category: Cover +ha_release: 0.71 +ha_iot_class: "Cloud Polling" +--- + + +The `ryobi_gdo` cover platform lets you control [Ryobi](https://www.ryobitools.com/gdo/) garage door opener through Home Assistant. + +## {% linkable_title Setup %} + +In order to be able to use your Ryobi garage door opener, you will have to get the DEVICE_ID_OF_YOUR_COVER (one for each garage door). + +The DEVICE_ID_OF_YOUR_COVER can be retrieved using `curl`, simply use your username and password using the following example. Your `DEVICE_ID_OF_YOUR_COVER` will be `varName`: + +```bash +$ curl -H "Content-Type: application/json" -X GET \ + -d '{"username":"RYOBIGDO_USERNAME","password":"RYOBIGDO_PASSWORD"}' \ + https://tti.tiwiconnect.com/api/devices +``` + +## {% linkable_title Configuration %} + +To enable Ryobi covers in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +cover: + - platform: ryobi_gdo + username: RYOBIGDO_USERNAME + password: RYOBIGDO_PASSWORD + device_id: + - DEVICE_ID_OF_YOUR_COVER#1 + - DEVICE_ID_OF_YOUR_COVER#2 +``` + +{% configuration %} +username: + description: Your RyobiGDO account username. + required: true + type: string +password: + description: Your RyobiGDO account password. + required: true + type: string +device_id: + description: List of your doors. + required: true + type: list +{% endconfiguration %} diff --git a/source/images/supported_brands/Ryobi.png b/source/images/supported_brands/Ryobi.png new file mode 100644 index 0000000000000000000000000000000000000000..154ecec84cbed46fe92a3409707e0d5d7bdc124a GIT binary patch literal 13389 zcmch-WmH^2*Dlz&2X}|y4grER?(XjHkj5prySux)1`AGbch>}m1h?DC`+axr+?o4p z)|y_6UWeMdw$wRYXFs){2qgtc6hs0<004j@EhVM`06>I*uT$V*!QX9xN0tBpGM%-k zsFJj(D47z-(Zbr!8~~7tNYRATQvHFGtD6`fKLd##kKu(`tXWYYjuub90xwNg5S)%C zb~aiVh>eY;;i4`!+X84T5AS9~yn9j-6W7LdZ78^*M#!()_P+E!em>fI&*gER@|()Z zaD)Zi;>BuZ$JhYkDaVoqLt)rxK9;dc$3Z}b3!(gkRR5q!{~ pj_>yMQy< z_6}qyc>k_BdvIN%2Z+ZDpZ8F4_%Ij-@qM$yM4AK;Oj6FBl}i(v4zCSqkMI$`p@Ybh zwxNuujP6TuKea$A%oln9z1j!KL } ml;q>??msp$76qIX?Tqq!*Cgi#UV$K8gT z>_gY_v6y&M`oUvyYvoxqTVWslQPq|4Yt;Zoe&d-pD9y1zPAFu65`7#d5kv#TU}@o5 z`KWNW;WyS~6t-$00n3Ex2*XGrzqG?yzF)IH3rYlGKT!ll>PD$rY6{xtpUzGG( m zTD0McDmP+vM@X1OWEw#aJ)anuO=gb73;eM;%_tLw#&`z&Vgp>Ht*Yl>Ii?dn9ENxz z1)r4*6J^kZqiV(ul{)btI($R3yeYw?2=lmk=p!HNs;B6oHI5h5V4gyXByQd&pNhqA z9?5)IH3oIl4c5%Pv==mVdpb4J{T>SV%tCGO17&&YAUZ}F^xa DbLCz6MfGXxkSG6;Ns)H66vQOZOtAjLy8RLG8E_=6BHKeN>AINYPsySY}C&sva+ zxMPor7>) n5(j%dZV0#T%OyCyroa^v3MfL)S;N75nSy8 z7h%sk30L@lERKr^Z B3}X?3pb>o%PaPZWHK$~W*J!0MAEtWB$p!+^m- z%2N-HjDhvQq6y0VOFG +KJLK}TqFifeo=}Ev;#J%U581_Msd9` zWjRYpn)ax%d*8#Qo794pdGz5S$8UutfQN4%kdZ%qofof!a>ASPlsV?kY2ntJf&pY3 z4yQ=pr10v!kpU2u!WhI+@%p;Q2`mnfHv&-M0pv!E;jq_a_;LZRINv?#A?EuSSxJ-q z+3O*zAqc XOs9E?=BstL*`SUX(&3O8uwW3us-B!e27~R2JLVPo6R-~}3>d^ri zMtA8n!~KN~Sd7F;M$Yvr)sR*FHVqOFWp&2HTBvvEG f{2j>J+26H%_yP$8OM~K1BM*f6Y zHehE<`kd4r+#b=Mw<2dp>4xzv^)Zp;N9=)YB=r|5&ti-@uQ`J`1QouDs6WEu>O)#X z+Ei*(;^M_B#VQ4jl85awonss+zKyV}foJlu)W1hLM#q2fjm8`>9590f#gk0LuS*71 z+39}Mozk`>b0j|}w^deFmR1^6?yHAX{#IMAAW;I=JxSeCsz=$#nk&;Nn=hCz=r35D z5TEE0#8^lp<(JIdSdCjPHmf#=HKW?NaKdr65-8f&>Xhi@=ya|zxHf(Z@ydU~x)r%a zycIpsT=4!hN{~vxh!Q(Y6eAN;M9}u>>C>-Fh0NJZo=n+K_f`foKDFX=jSGmgd)C;t z_RG8_i_#-MEnIMNWDSM3g#|?~=csLTt(#gnTE?62t=nwwPpp2mpL{&Q`l)t8H2=%U z2w4_3D`8S=>hoy(kB3kFPGURoZ{b6fHj>S89(8;w+(Kz}x|N-V_n{Xwz*2*7gVZgV zZm({*r}mzjH;>m}Pg%FqKkuU#NPcl7@-?~~^d-2XC_(84X$57#uA?v${=p}}55 z6m9UYFC6 zf0D0}!<37XyU!9}ElT&yEXk_jvSmBv mP zl6spuUE@--q7kCOsc~Opz4W#;UtLvQw~l7dZ{KLgwW`-5Zog><)0)z%d8WkY&R4KW z-Px)ftZYyuR#Yjm*;uv)w|2a~ydnrP`Ygta#k0WIMPM($YyM|!_E^Ht)x~+jZDZGC zT6)~NS~WqnXr9ng*Rs~R K?WS5rmuwO^o0* zePc0c!3k&DXWUoPS3|BtjzCT*LK2!8Y7x8?d>7ggGKp;afhJfoxDL5@h|A1*b@6Pg zfyC4@4oEB<6CSmKcKvydO9f-~^9N#Xw~fj#_eG3_V#>F(WSPX>^iRUk>J!cB+as7G zBhht4@1K_F+%(QQK6`B}v;)6f?gj0ojcm)-E5uVZf2^cYkf~Pi$-~N4%UxhI{u8{4 z$xL-hgOo(5B1IQL$EW&49V(~C(O{dnUYsb+O`|K%obF>B`IdY}H&R-ucqj) JBL9ir z7)%&k$1%XsX4W$uIklF;8K0BfEhtGv!+BgTC7Vpen`4`-8^2E7ikTM9SL&%Tc3= zLB2{SUYt~d;< 5e z8B9%b7L$3mR&G0I_RjG<*3LRdnUhSp>zpihTNjVXkJ`WAX+eziEKlCTbAiJq1ACrB zIlaNJDyoGV6m%UeGnTul;tv$Ng-b)sQOhiEI%5poT1Q$M%6Fa!?mvb~6l9l~h_zCC zs$DytZzdVS8N?VIYX2B^bm}#A)pt2BwyV2VWmL&(zIR)kWFleLV(TucER8L>RY&P9 z*Khf}M&9Oe!*gwvBUf(p&Km9S#awb (m0E+L)p5hN0>#l`~H z=6=q59Jq&VyK`oIQYV?`X?^*8=y81=fEhyblsPmBq~TC-Yn8L_aJT8NI4v8=a{yv~ zIeJ;0X)2q7$>sa9b?-9|bBQF$;$=|Xd*EAf(YSs{>DT`HrFgNs @>|mY}2YU!|C^3jdUBY!*2({-lVU`x0^4WulGlrG#e~m^RM&w z3i<{r{Z?OW{ldIQ8YKJTm<40Ked?0dA8#W5{5Y=ND{C&po{r8_7j*aCS|DEgdOI|T ztIsmT^6V}1w(#P-&v2?4_Kx^)3c3v5s$EW8hH^~pTJ-KbbzJV%eKL6>=^6K2e((7c zv=z2V3KYzJPX6;t`~A;!@$_lWiVygOcYXUNH1*v-opP5p781|S%8M7^=msGq3+wNT zol8nhe`$dzoO~}01Nn}?aOsHn1uh?_=U~K1g989()D#@Ug$j5?=NACvGcym^D;57@ zo{}+C^Drg%!Nc>gg$Goi`?Dkl1iZ;ZK^eLUHM#?=a!b1~$HaZ%Hc#j!&!Yo9ci lRcXwxY=U{dOS+cP4@bIv(va_(WGl4aj zoIM>}j6IkfoGJff zpcW}0Hbm3?Do28xg|7P{y z=>Od;|G%{U50UWyjh$B!WDO3``0wHgu<^6}KgRxR5&z@!e_84O+{S-C!S_)Bk)P#% zJ`)0n48IZj0RXCSX)$3n4~TPpI3KLVCBa|h2xu5mFpw&C{79D-sIPxk^GrmQm6QiV zQN)$ehhVjol%a)TJZZyWuud^go9<(C3WfY#=J=!^F8rM2$vgR)ye}@!rg(a{Ei5fB zvb`_fw WQf}tUVh0xHTp&>$qiu1|f;UNS4$;jZ_(a=hEL_~UE{v$n* z7asmQ43-KpK;D$jM1~L{{MFp?fEJ_s> L%gk17pWS>dE zR$@sZA^(#`4LCHbA(7aBkvZ{07Ge v`+%`5Ny|(~V_4^^V`F+Ou!%rI}VEAKI!91IdhNpqpt!NNA$#RS9dx3*Q2CZEVUb zx}r1b$I3gpvNIXRttDlnTn&gX!hdB*NW&3t>{h=E>MjJ8?Y+9cSPqVo^HQaJ`@ol+ zu&zj`Rd8J zSp6pPwMTuwqW{lp0DbtKtKiLwkovJ7P=0cu_>Cp&+VAPOtfY3yugBNvr|)0`R>scy z=U>%2(J8}B9Xa}QZp |!Y~S3v>255m zX~?t))|8$&_7 (Uh_FtqxU|iVs 21AT #o^dhe7^(}FD@zsq d6a{14`zc@ 7Ncl|nPVFaJ?2;=b64CFgm48?zp AyevecDN&v2Npuita`>Tp0!CkmYYpCB~6BFm75HdUJ@=i9!@i{r%nYFsDwN zv@YM@dB