From fa56c266913a2c4365464be12ac3c64bfe0a126d Mon Sep 17 00:00:00 2001 From: dgtal1 <27864579+dgtal1@users.noreply.github.com> Date: Tue, 4 Oct 2022 09:12:31 +0200 Subject: [PATCH] 2.2b3 * raise scene notifications from controller as HA events --- extalife.zip | Bin 0 -> 48313 bytes extalife/helpers/const.py | 1 + extalife/helpers/core.py | 22 ++++++++++++++++++++-- extalife/manifest.json | 2 +- extalife/pyextalife.py | 3 ++- 5 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 extalife.zip diff --git a/extalife.zip b/extalife.zip new file mode 100644 index 0000000000000000000000000000000000000000..c4479f266db65807b951627fda04e1e0406754c9 GIT binary patch literal 48313 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

Z0 zrJgPMR|VuhImxE$8kD^0mREYvk&uW-Vy2FcenP#|7!vIJh&Hk`6J^~_yf~ZEYp@mp zzW`avk~6%%@(oS(#6m+S)$SGZXGh?$$=o=icTp~8sQ5l2VnIBuY7tm#fn^uIz#Z0i zDA-BtYd}h6CUTbW{A2vP;7%Kj_6~x$+j+kCEqqT8H>9}dk5zF$*KlVrLH7J6?j6Oy)nq zd|djpG(|bG)Cf64uG?yGal3P(!}CKqg5}a8tVP|2{X(#8v|6%i+(p%}O*UuWqBE%k z{9MDxqFUw3X&Sv#Yl=md###k3-KJH(dJzkOyO~_1VPL_3(OpGWXH2a^J)z|&Tcd;6 zVDaqV$s@dSXc*uNuOY?Nx?u{1J@XzN9(iTky`NHqofVaFW#HOzz3Njh)RHjFJ?m04zrn4)|Wu7;PC+sFr_y zm?&$Ce?p%2RP|E)vRep8?1f4E`J^>tKl-NJKK;Z9<=ICZt=jj-^ip&!*I+JUzv+jB z$T02hKjbBT#c&yMa?$7F!m;_&J0R23Txu3O!?4tYkGVZiZY%pwIEqIl$v?8KxBhS} zVc;Tbw{2>bY)8-k&VK!uxm+kiYDN&>9PWCuyakBR^ju00<@54++&oDlhZ30oq#~>q&8CXS9RXP3p0V$nLo;42)9&HNji=TzVq) zWn5u1@!D=`(G~Z%6|sKe=hD10nu-eThlC!8tKLa z9PsI;weesRoU|1u8u-v=E4^Ggn6k{Jk)XeaZxXe(`(IaFrT`|o2YrHFehhcf@< zx;3Y60YP2#jr3zLG;r73h!o4i`KQhGPbO?HS2p}`Vt9vt zC6lmE8lHj$pTc6_U7R-bapnH!ZL1=T*0>EFBmwqc?;az7Sf-+Y#iUrMCP-vVH)k}Ij5n820vah-mXLpw zxFbh&Fkcr%QNjOI)g4<3{&Br2B#P40jl7SNd;F~Ds1z=Yl|A3F@|~+~!=JHz_}wl} zRyYsrVnYNWWb~nU1HGGLc|n{n!!i+^S-4*AZF>TDaV+E2dU1yp^q#9`H`7-vD;LXM z{{`26Ku;Q|+&4>G;xi&g=@QbSO zz)3ot6rE{}t2Q*tEepZlq9B`WAUC?Ohh0n!3)|%G6o^NXHK#oIgWo(%q@kke zF6@RsJdFF047BgZnP`D}42ufHEDQY$W1pBbH6k>uewmE9mW+b+uRqR+Xuzu1wYAo` z0_Z&~y~4cC0W;F1_9_=4{Y$p(_H~@%TJsok(M7)C0+%%2-PLpRr=nYIK_~z~cqmS5 z8h;&S9WiPJ|Jq_g=$>ft4!s-$)-0Mmr?YagIXfjII`|k28%VMt(yVSLL9L}6U`Gyn z*|4vh$ChkCBH>m9RwQ2a!X92|ps#nW*)%`28OHo>qi?EoaiYLa@~lQx$){p)XKFTh zSOFw~VPzr7Z`5oq@W(0KW2(sLPNoQ$q{h*v&_q6?)->6efBS~pC(g618m7!dxQTdC zeW=S!EoPF0i3zhRAz_~p ze|Z)|umNzBxV^17iJ9qJXbZJHLEYL-s|#j)8$kBz;^|3iM@1MxV)A9bU7)C4)%EtuNWA z%?<-y4E49tggZu+3qphLX$s|3EXxh!hku*P z3}Rx9UcWf;4;~{5=1^DUl1LpjWDJD-#Lb2{bw;n(;{++~YO#1dZzB20_>~sWD(7w^wDIEP*F4m|a?Z`cey^7SD#!leF@ZXGg=gm-{leuQb3F0^#4f zhJHRbLSL&XvljlNM31G}#d0gTf+{wD}uaW3n|up{Kbi`@!|K2z#X5rV8!Dg ztf(Z$25c*+!zH|E18w0vpAsjnSsPzOIw^OZFD9en%HwZprpDV3tNG@3C>7pkjF|f| zsh>_CF8A?D+xOly`lfGOz)4?UCmW*?6G8M+$$_IMypUIa&|_oK1ay`e_V+pa7@gJnj1-eWo8rT|^-^nJMA>d}ExPcG znpD9{;A6~W%r9Vroqc)9?>7}-QsRE;@$`oRvm;>JY|!3IF5wvT2uiiLk4*{CULK%R zJ5^JwFG@-iq%IR`T~WBQ>50y5pmp0Ja0SATM!{^a>J2y>pk$cN4hvFdh#$+a!KmadqEOkIDBwaCX7l zo=ite;-Bvbwcw^*q+wM0%0p!XXt3S!HEjLYcf`0qVlc5uwe#>AGHO2FQRpZUM0__N zIQsN8AW?~Cp_QN}_}AN2MQfa^F@y`vesP z5*Uhsks0j53ONM@#FA>q3i?H3zVUR&-0$4E@Wm;-8IyAs>UV_fW6xP|dZGnjBbx9L zyx;Eo;>20pO7Y2#1J=SfZpdWpPh+TKpA~C$lv>W2vgPVa4hp#5y>UO!S+OL>8_~by zIC*taArP@^o7n{t<9elFT$jXRz{9H#O_67B%a6#SF#VD+^Jm2IEDhbY z8q0k_8d}edW+u~(>EL_tahq-b2(_}g0tG3jU)KAD;p5Srclc>6w4R|XAR@B`Cg{Mk zQBIx8bJ%u>PLb*cFVrUbjv!Hl2S*7_@3N|~)@E$26^FK{eO#36{U$m;CYsCsU{ym2 zXN+bdGaWV7>wCAW(NGx9+B>!*^wQ#9*#r_0h(j1FEy0uAw;H_mrmKC}ZxhPQ14RzVmv!jPN zDx}YwS6Jz9rH-)GpHD1sdp&_AbwoBk>l?{kqs^_;K$Z);j4slORl0X;@Sp+ikec#_ zUBohvE{&hLN!j5MJ~*Zk%N$Ts{>{RbqEXwJTyVxNFrrbRZ;1Ad5Hc#!iY~!YW8no* zMpaj_$hhb<)5f2BIC&4|6Hx!crZ5{#(4&nwug1c0^ZNxE%JhYd{l@6yTr;Lldo${* z_k(9?_P4D6HZ<&ilqwVr39Z$b#W%Lv{k2RT%wKAR*a((HZ2`}(nW%>FN=V*YfbH9~ zUFa{pbb#HogMut>KV+CIpayA8%!EgaW4Wh*SlZ;5>PmL3WrTKwakV1_$w&jYO=pMO82>O4JR7=LT@ZvERoOdU&m}>_e$Uu z0&I+e6k2^bm2l#}-@yGE^0>e~Osu*Icl7^T#n5jIc*)e7`WG+anJlW&d#NOn0G zI1qx@KJ+%;KlpWOZO5}aEL#8c))kZM*DZ}{_R5#AjT7c@f6ew_<%AY6Z%@hGJAc1m zP@a!@sCJr|LpR9DGhvjPV)dx;3z&kdf!ne1Ds@puHsNz*&EcF;Pa}`(IfmSewU7iz z^hs1%d_w>)<_qD&$VCyeig}sy#ryd#M7!;jX;F6E5xYNNQZ@@HeoTbjV!H6)>)hDE zG4ey%T)9(fcKeAnUNAPO`2cIL?EdA(T<_Sw1XFOJalz@#HK4KSM=ezz5y8nHc}smr zIfz9YQ%wGb)uN@=+IwJpq8I6ZagAJuF}D+hyZ)_84P9h)(=?I_Qf{Uy`--o~ zx@Cb_0bFXR-`Rh`anu@N} z%B)?52qVb-|IqbLL81iRnrPd$ZQJhMwr$(C zZQHhO?6z&&_MSd5cjm-@?!6K9Qc+JCQ7c!jPiY|r$U+Bv^}$Lb!FH{Y>wRzCa^=#3 zOe-$sH$6DJQXdjpR0hwF?b~x!7{%yg5%aUgsx!p0XT*HRzke5_(Mb4|0eX+an#QTb zFnU;IAIgIdz1qF6F+QccaAQ6>0XvRMwV}96vZ*E62M4Zc`31+bU)016`Xm0TGPg4A zi;p0QIU>ro+Rv~A#rBuR@4oPk#@en1FHok>WD$|XO^=O$4X_$|g^s7_Q#J6s^LWAU zKMyJ0@+-)=zlCcK{y!vE|6RDYPR_q|8=@@Zw8((a<5v1l&|L#p*gZo8NWhfh3@u6$vP z(q^w?C+lq?MQ2Y(PlicUy2C@jpNq08tR97*H&~DAY9BSVTB7TVEKP3cHT7YpamUCz zmrZc<#CvXzW1`uG=srN!Nlw}^-KXRX} z2BVSgnTq4ggie|?%zQ@Pu~V9xmdg|tn&e(4T`Nl))^Q|?Z2u@oqy}Gw2qc1pRoON= ziS-k=i-K@|pt&}?F7{6(o@JLESzh$N$3W+buj`v#14orzYVOsR<7J=ix=J1A;JJam zVs_vPpmlqYR9Yv>do8;s-g4BBak|IxAVz?Z$Hj&>&8}DC0Pz3G-oOo5wRsxJ7tL>q zxy5rJ-_QG5W@mD9rh8R(RCO{En@E@h-A(4Ji%`G-N*F+er*TxlNY-gl3@=OjJZYBF zFY{7e9d*|yG5D(53Bn^$tYsU$?q8)yz2$RIWu3XDZ}B6UDZ}AhFtu7-v31<4%-<`(1WjOLtx-&q;@9eLastRHCz zMG;MkQFx+T8%sok4mky`XAQ%j>?8oN;nE#_J1EG$B63%c?h*3PhKzAE zg8``qIn@NPh3f*E9!iOd4|;zoCQZy>d-5!zUU4NW7WVVRM|a zUMF2Rum&VG@==uW#7XWd!5=R(Q@0L$ZAHfo0MH5WJn@;Snb)bAg^_{^t#Nm^>Q<5O zFO7nm$&dYla=cKl=Q0|$p`>gn!l)qkAM4c>aI!eqek%^w>B&Sp$p&M!Wd-4@%b-0S zHRnV%rtPRkM4PloF$K(r$SCPn?@vzQ4Gjf}dA%`WRZF4RwIBaJb)m*- zDZy38F?S`jYy04g{QS~*8T!2K?RxKD8C6*XC-n2rE0k%hKG@?~7YayJYtX(@-yQ=} zPPPe10Z*_QkYeAn8pmVlHI9vlrCw!;T7EQxsf~()e$h?P_Xz^*mt;sT{}Xj;oJW1py{3sLk!}N-jdTo>p~ylY*?(aL zw#PK@%#32e`l1Bz*-#q{##E^rlg!hfLE2fJLE6&Mt5$dbTPQ4P;JERnr=9b(!Swq96z|*A^X{Km)_&5SPI2Xa8xiYu*sg zq9cbU#?%cL0_#*0d^-0HuafhZUP_3MdJL?P2C+4m5}WeG(r?R`6FsLNwC+6bQZ5lb zHq?M6B3Gi+uVA>OdVBz1w>B7W+tacc(e^!DA#M{{#B_VEHp)rw`GD^F1FBmqZ;kK} z(bi$tbsOBwR^=vr(?WPTO>aoO9_mJ9=Au8;X6MapxdQH^WXw6>EQF;<75RrIPMgub z4c@ZB;R(i3`k_>Nsx}9(Eo7>(82R{yng_1|YHa>rrlvCKWcI^t{KK|2PGIQ**~xh` z-yoLcGKG(pe6mc&F<<5tgCfExEK}yXQAhQ7s;DQ_>K5&JSH`P zG$uGAcYOeb{UI z25!?AjV zO#luG*gVlE9UN=n`>gJhI;snB_7Cvw-$Vp;GLP5wiYuxLnz6eIDtC~?b`Ck0PfQRU z=`|RauS>hbehe&tOQsr*rMMMW!HCv!!8B&kN5kY(kJ8MHDHi7OKY7jJqjlDojlubf zw9k_4i%DC85|#r`$cDms^J*s3kK#oJpB$itAY%-2lv46rVL8BeaL30M{49`_y(l@Q zK=hQ0290K|TwWb)6Pr4lUI+K&y5h&!Y`u*(lLB%uL~%951({T2Lt(|l3M_7P1&L-8w3JRUP|If8GVbLrpyU^I zY)Nkf7AR*)CK@6NIsJ7tY zSY=SxAu!qhg77LfriaC~NFf^Cvh%x=oIY6|YmzKqU4pV&~+}D~Z@-Qwpj18XCsQ}FIjWRP_gR5lpB;+m)Vq;R29tujk z46vn`!63>x_!uq?iG>*iNw~*(5z45(e(|lqjJsB%$ZxeAYUIRnEVPcPAF^FFrO^a* zntWBWotX!yn_>`-sU&6&aKO^GIx5(=+rYvB$Hx#H08A!zK)aqo!p(RR*PsQutIf3s zIT?+I)O2af% zBYIjsna4f)%VJnIA1l;d@zhL5b2A0y*@vVY?Ld8*0LRW*ySrCRPjF$Zpe09w7tSD# zWt0XvzDrD#6Ld~~Q zf>n8>D#XAb6IGAFrr|QV2^5*nUQm=|m1ZM?(OCY`U>qkx?IpkGk91RqqMwhPQ`1cx z=H(PM6K1V}k}W-@6i%RZyszyi>xObx-Y%f@F@>VsiaPT>6ky+eHIe3DiWaI^>!v4qw>3lCbGN*Pi*m~)JJ7wEuwl&1N_aS*IpbUx| zi?L*eRWwjXH^OSGB-#*6Q5_0a%qsXdu@u=ym;Ne2tA5goU}D)}+{82EM-g2m(d5G* zwM0h=jVVAa>T|hjH4hE!8q{lA@*YC+6dQ-v?z1&S(PB*FBT|Kc-+Mo$QZK_ZsCiuq zww2}0>U-58PY3=(!|1J_uUZCXu%wEPY9$RW@h6gedZg4(oX%9GOML;0`bEaAz?Umn znLiRV}Q0M^*Z7`H8 zOQ`>a{!D&=7!P2~`@H{VTLya7*dKzs{VE=_E#GdkSDYoC=E5MVIe@%3C;#{w|zgXmCSRYYch_^+UlGWz{xX#3tJdmo-nq--{<*gW51e=S~BVg@N|FMCA&3z1cbV*dC!N zc5thaLnqhe2VSJ9*6BS@h5L7*o3L!6(&HQe#vM9uBC38w1;s~bB<9Id-w*BrRvSkt zb8){oRxCb1^^Z1S%jJ+O29DgQv-)J zicR=bM0SU)7v&~<0jVB(t_@3p2P?F&4@}mEuIPh&N7cR2=f0sZKUjT9kKt+g6e{lH zvCyi0O9;5Q8OH%JM~UbqOPUPV(}N`83$ome`l}9v@gER;C+Zt!Ii~+A}J&on= zpKZ?J+3*8@8+zFy2jeV$UWUJjEA-EzVmWAJ3%?;SCT|2MD#0Iqr*eIZ{zI!6=nBX& zd@FCyLihF!580PMtdO(vudS=DvR>VGWJA+x{Yl_3l1DWt9h19@z5Z7rdAOj1xLjX& z0U3Hv6FGDEo&);N8wyE}=i+y{_&qTgQdwVOodOK&)Iad*;yx0tvEW*0+Vk zV-0D;7xUGHVX0_G;=Si+=(hNA-G4gg3kH^NXPYhHpwtq-vHugvFkG!|ul~~#OUJVhi9z!A zogG8yd*X@;!o<>SJ{>)oF=Vc=?GEC;W>K5h-S_llPT5~_{&}2KJl62v@$&R^Qsr^( z9u_5Gu~N=!!hs*&kLbS%HvYK}(pNuOnWL-~9h zIC?QX`rN@0a$xRx8g=J;pSw<#H5;*TeR-L+Jy#Cxq0ZUKM*rL3#`zI!w*9CS^%yha z!I$B}U6Mq4dTsHS%USMP*lY`p(s_v2{_FS-3T83Z_$1jF9D8OOaJElQ70Nlu59hS_09H9Wmw@p)BW@L%gw=_ zNP)lG5IzaP*k8^(xPW8lTAY48{9Nhp`DJsCJF&$GkD!#`q;lE<}oN6G?E`rXh!7=;f1#qJh^@JEv1i1LLM&d3yI~>fX#pE%t<4^`T zq=-Xn&Vkd;4nxlNEhRwg=J=YGhse zvx*@t?71jJ4@|?PBx?Ju_l8?+Oox{is|@s!c#^#5F8llwc?;4+UX;d7+Is=c*wlZb z)O$k+A{v1l72<<63q9bXa3cw~%w>>-fWi1q%nzs}g&tsYZYsR$-hgVqP$`jVmixBy zd^>KvE$Ri@z6Qbe@kH~S<&>t(hoN(i?QFwG63DwsPeJCYFk}wX<*jvjc$kG{Lk+w|?B0)PyJ6n2Tp8P(=|;K%g+O zZS-HR`|paMDP$@h#`wHET)Jrm;xH;l`JMzDlsDlt4s$v{kF&C^F5i%gj0b<_fY%}l zZ1^bn(D>ho%+SZ?#0(wQ%@&(pHE*?#VIE33?A8v%Hx2d_`rJ>sT$KQ7Xbnn`Uc+?N z=H$x2%vy(z2;RVs1k}N<6bRm|I~_&RmgfHLI(=|=(w#k;?#RLF9+bo|1MKJ^gG(=- z`*)`N9v)eJ5t^fl%JMUReg?KlDgY`Bke)vF9^jjBjiVh2qow#P>I;ST3KvGcq=o#*bExj4)SgT!nJTptn!{DA$zM29onAx)ja+)9qOgZwi^0XlRtC>(tWC z$tYMe$jEwvKr)bd!xrxw!gp?>hW<2kP1nCjflbk-KxKnF3GQ<4rb%Lnk&3uxvlbW- zu|xC$EC_ST2tVP6MPx#$rr^u-OP?4VdAPH;sINC~d+W)~ql=#fmllkt^nM%;{9GZn z^-o*;sc;nddcC-G*@x6W-ex+cVtK-Th zHzSav$!^Y+q&%v(Sas>lYSf@tyR5J^XzafG%w#E#xL=#b=iD?m?l`#3vji=XQzE@P zyU$cNF%rbE@aoxA<(APNhbACyCSPBEGQ3eaO0y*A->+h`^*QpuhsKM0ofejlL6;Oh z#Db8nUQ)v$w~%Z>1tS5|0wSrR0i(wNACVbu#Ytv4pe0fnZCyS^Jk`|H#QR7wfsP`1 zgej4og@tJ-q!KIxU@F`JD*~H1$h4`@(1;oZ0h@tP1@%oxcAn%FB6@2D&n0yox8a;i zz%=E-sL}mWZYo0Xho**6Mkb6@3e zpQLN7EFTX39Px#htN<5gWeQ{hZd@#aKsbB&ai5&P8FBBsMcga zlwu0vA=@^_NdU2lAKB9(D)d)HWGz!X2cPvSxi>YTg;TuREmhHHAl{_KW$Px}hAUV2;U zV79ub`Q+)K!d+z50h*33L>ES+lA*zjOS+POn&i9dI64sI(Fz{`Pr+&AUXd2Os92i| zOW>F!2K(ws^J#67PTsd zOD8V}&A^x`^ckZq-j26*FP%Q4e5Ga)Cs*yBqhk{VpO5dMPD{K7&VRJp>-=0;w(&)y zfs0oA_%nlv>fk-|DX>Hto;Kxo>mG^A-4PE))NVr^6{G$L_p${v(@q-Af#tD6uOvJQ zf7fPVVW?*DK&+7o`ScOl0gh-U}5-BN$y1M#7LV)6R{|IZybU8J_4`&ZT#{VR+3&9wi2 zvpY^Ej{l|aa{AqbdsJn9U1JD6*mr&e*+Hb$YGb;mtO zP$C_ykzcR4iG_d0U2}~2kAg@arl+#@?-GjU!>b8QvMI?p5Gf;?qLT^QXaW+8g^*ed zNDZ_HG)KW$uwp`iQ_+Q}kkYtw8Ross40}wyx4rE|R8cFDR3hZRS#gRLkBo^O!zU9{ zs7|OPLFiE{Waw^f`RCrRA3Wd5dwh4@FEp(Qs0C6H?MIekCDjjux6TO&6JFi&Ojp}%si<79ekNp{D-OaI|r-2M!E42tNL+Jm04+U>+6eL8>!05%+-0 zgh*&1h${gbGD&c^XGmf@UyPj$>VJs?(%UD?XGmcu!p1Y`8TVQQr$0I*%4za;ycVN0Ub6Xsu{6_Et*+nT44o!Vj0X)1&tX z=gxTfDC=nQ3;hD&+dIRmgT+UCw)|3e>_*)5f+~qwg4-7X$JH5xxE1RluyqVuMZ5lR zrS`!uC5W{hY%$ru#Pcy8>|vs)WwK?&8V)*K3Y4P(l`+BYDx;Jj1jIp%SJ?)0bc!7J zsx%Y96oU}Q1ry2$H!36RZFD_`9N#XO?Hd@?74a>NvI1-|`fE>Chw>*|mY+-fb)CGI z(LL5U1Q%d%)&6qf<{VRChdVJ@;gaxf9n4k5AjgXByq{ zrmF`s#($xpMXYQt5uZ!Rz>VKY#$#{q)Y(Q?nM;AS8EC?_r@3yl_dPVPGq&pt9muT7%S+`)%FSN0V< z^vzP&C%17c8{1}Mm)3AIJz}$p`Pgoy%2f~eqEK(*zMcR#iLA?eF5)(8ZsP0IsmvC3 z@?U`8+NkNndnK-eE}>K9wB?BI!i+o>${xN_`7Gc*C_7NQmGTp7JhJ!yw2fw>9}6`k ztB(9eZO)M`?@v_W;AVRrIgBJlllp=FOkkDoW%OUQ$mmVy&W+pga(Moj*gdJ++(k1e zH~_%jL;I-qBliP(`|P|vm{_x2zd7(Xs~|7#uz4jL#HREI^utLh$xALt6l_Qb*M?`{YEs}=eGL|2?W>@94~ ze)qhP1R1zN0)&uPk}U&8bn9qv1_u>v)}LV!_F9+5Ba?29fqcS5`*;S3sZ5-8P`NrWe3I@Mr2x##yI*Uy&x_8uPH4}v-g+wd5 zEJ=(YF0!Ov!&_-PZOLx>j(tCOJ%{#%Ywf9J82!ZdLCf{UyBrEecXF?M7O@&AYpmrM z9w;U=AkxCO-wy3Aa&`3SU2FI2;j=Q3iO z>lO;*KFAP`nDWzxf&4I2yl7AJ4}z=RwW3sCxoF4aZovO+4&7qHg8eW60E~41!{cIY zVP^hc$MR{cP20_}=U>j>pisZbxYC^T9m}S>+)%0k@Eu5F9fScUFjW+(>zDIS#=W-n zFT54W`&>#Z+?~5!$2aFMIGu`N?jBR^gjR-Ub2*vnn9gu2vTWISS$SrP9ONKfWFTX7 z@mcsx?lj($p}g-|=OI005I>xIwa7-Wa(7fAA4+=U>cE4sdEjPp@k0o&#{%08UZj-3 z>vrZTlL&*Mue%tUbYd!a-AN~7(`Z-tLq046;y_POwtZcLC3!%bPT{54uGc@B`^_^Wos9)?9rZYo9Hfa0cHVAlHC3PuUW(UV%drj`R2Hg-*(cDmgJ-Av@?2qr#Gr(!4j4G~+LP)k%_ zseFTC--%?_99hm}AzYY`pO1|*yG@YatDXAPzZTJmie40sw0MPLNVQso3cA79sUEBL zdI8gX>Eq|R<Vn`ArsVcX_`H(_1d=*5u9yw>NJ9-uX=sjDKlA4D+i6&M#*`OGdcCv~>Yr z+f}T6?Nyi^6xu{8sL4vZBZ1}OkESs1b$OZ2b8}hl%kpA?CzrBZ-Lg_u1zrY6TPOtF zA4UY>puK<`x4P`dNo3d8;8TDFxi30)ZZKYlAuXs4r1;jrW>8}>L01rCH9=QUV>!VW z5Mw>T7tkXCK{${jc|kbPqn5z#R3y{DAeq)SJ||vK@ye|83hH&j=}tgU7cDZ7C7Ub+ zdAGm8{+(UFFWbz7`8U0gfG+UT5anLxLIT^XWFX5ap0;)}6vibDmy0acx7Ql4wSC2| zVRrsoPBBs>Il??pg(i|~Tm}P`@0H8ei7dh3YwP+EP;MhEI-`I`O>$`NYlF}<>b1yG zi)8eWhU_*Eu;TN<;8`I+!bs|C(ntj3q=Jc(iKj<6PWFw#`j0&r#~m~IJZ*t< zcrJRu^3d(RSTpD3(0v?tGRy#}*smyq_1efpB~Iv)i0lMz$@1_pC`oe8vPk03@yi5U zMkxST9Uu@=^^J(;r=+_6gg(-!n_RYyQJI>d*6i0aHQWAFkO!STxj6N-gygHRpE?5L z3iXi87j<^XU$5nq6DF&ql}Rf<#9$O{r%JGUG({1pA4y!0XF;|9KFtqGS(Nal6e$Q( zYj5kY)b|)K{Y&MKXE1kVR0q=c5bMdw1CGZcyxB*DHZz5BmC3uSYoSrxmt z2By-91bw@7N3;tV=_-@^^P|1R25WQ_=H4P4n;Hq-rZQK#62a~g>XEi|UPaSL45LLy zerU2cZkWQxj(9OInzLDfzeBy4CtlRlP;Z70n#U{|;m?GnPdUnnT= zlVvpc^cU?@gt?aXat|HaoG6?*Oa84m48k8^>Wcsiok92({+#%#43%T$mP3#3(FQQ8 zUqw9c@)dHq?-zoLiWL(f%ciQmP6RC{5&>Ih_^W z9r1xQA&oIc0(1>8SW^VMEbaB+-zIK#iyqYNp^31!fSCPW1yEmF7mx@dG^F zM=TvpYGrt_^b4`}_mW3-q^ETr&-AS+V@aD7H%L+U)vAUiDbFf~>@YH*f~MrL;3hiT z&DcOsyrB&P+nqyEO;K*R3Z}V&GDQ*7o!<`a>iLt`IQe27N6oJZ+Hs-vRWl!69Xqx{ zGXMUTfFC1qc46>(y+nVV-u`?0MY%pE>HR(*`~E$z#@rO6ooDn#Ap-+SZegAs!z*su zsa*}u2HB$>bJN?)_R9b_OzV7fplIx0iG%ytvI5S}_( zne-SObM%xDwO1$KOSGf5&~z8Nb6@Ok8P8(p5cb~?64b)+{8i$#wf5{s9P7L?ev#+i zIn^K=lSwdS2#eabML=Kg&~<2)T*;uLXr8QSyAN;EB_@07)JWCJ1aXOI!!R($hws)Vz7FI`)!kY74F;Quc z@)|0?1HP6VK?Is_R8^I=f4izl^wr&YKY9nAK6?_ndZ+!&MB%U_U2ohpJ`GELa@yf* zNQaWrR=7G#6NPWC-4(iaiK?(%JlHw5_?b$n_sd<$=~SsIH!J$WMwO|4K#xsiiL%Kl z;Zd%nie~X`u88CQkg~ZsH3eUF1A-ngl%B}qG%fn{H$S~%=#|51RYGyAT8(2wzbAtF ziLcRB$vxPK)wnJ+MX%ocxnwxBN3hOoTkF=8G$>f1yBIb6l4h_ixs7`9TVZs1ScM1_~Xq`h~zi*aPwy;=NPsB>iLb#TwI%RdcljckDEO6_Qu0Q@j*H7sQ z1o1}1Zr~^Dd)N+*{PX)6FFVeCnhM3$k_qHnPv^_`-)i@}z_nDJZ{93|6eE7$XJ1$+ zL0~?uC>sWdyO2qm9=hPxIBSgA2xyOf1lP%K9&UoGEd8NL*o@7iD!ZG6l&u&gGa${o z;DF3~O^?r#x3!RReSy9*25Ajp8Z0{0(p}CbB>s;Tay+cjos%J){#rAO*M5+V>t5*& z?{uHF2Pt^Ky0KoB&2Y9zo(8|e3XM(jH(Wjf{HjOYij+J$#eCtmBk4bvQW{tMk3E9j z4D(u391}R3827o#1~8Lt1EN8uQ7&Fq-8kmf?oEcRhk0m2>`w#kqCnW1*8Twqn`^VZ z3~L(%Ethjgl{qT5+sEQ+xezu8>}3x_nfo$PRqItqzs!mAs>T&W{}5Gv8`4kKJgB8zAXt)HtzJ=P}u#P7#UWovhxRIq4vZH&FDAu_p6 zQOx)*cK@0yu$RoG?w8V0C6M*(i7+8~WaD1ALY!cbLM;M@ir3gzw!c2hen5ras{ z#sKw!6|Gu?5cq<$|tLtdZoKnMHd)J?;A$Lwnb!#X(-?B!-_aMZ|wed>*&RBW2!sxH~?0mu;^PfE5f@{fI6a1^)=6-XB3=Xawisz?8;D2LbHU_r8_dEU?2P~cJY(-*sp#}*s#BRa8!0$cJpdv9qww+h8 zhanbcW$yH5_6a;+ooPCszW8SDb<`jX_FDGev3Fd$+1^?{muJxb zT&4Q}cMCre002yx&e(e-rujDj)c*<#jL}!@rjw)*6u9z;GSEG1NGI_~*OLyNe$sudCbBMT}~daejV&^IuPfhGmN;!<)8f z+PDqQ*Xr{d)tOA_fH2-~L;)U6QWnnyzSaOijBTm|BF%x^I1k*3hUUq7BPLCvVXjZ) z<6i=9CFOtU_Yyoyn|+% zKVm&ug;PZyoc#-vG+I?FCK*P5_mAHW3>jc$MRsetFbHmM4!ZF|Et-KEu_4;anA3{e z=I)KT_`EjrLW*{lHy?HVUR))^E&HBCgC;X8`|za0f~=|s1R?BEvN!DSRyF8(^5DRb zZg}Ec+JD|G*>LrA;Y#<-z1iAHIFP(x&x;!EJ)f1@qFC?hcdu8XAMDvMWb*r}F7K5G zKuo%USi|kZ1Bqm#XxKAxCFg{jwxVwAu{+22=cx;A8{y^rF0fF;Di7w$IaE>qijE9O zRSrZ3r8S;7+OvIGah&&B8(lN$lH>(3ZBE^e0D!5Nsbk7@;u87stlzpuKh)Bw73<1* zaPnXv@gcj$Fth;H{}se$|ous8xO$j_&Ob`1fH&6kucs6MpnCo%bO<>18;- znBnyDGw&62Q&0W|(S*d$hEV1u#LtceqdUjKa@Ca)6S4#Ud^k?r4F$#GPj)qGm-&&L z;h*0X0n&$oC)HK>=Vc!Eg+J&``HBVRCg|*>9CPvVL-O!vJa`Zvy@=B1;WX^$T;aDo zFW6?Kxo&z|oGPOH`sm-Y+R}#d2Aj^GFAs^Ud)H}_;sCvO!ve9IR2PEHp;l8PZK({k zs600@!~yx4_Qi5qDQ+>4D||@qaWIeRP2Q!7v}OHU*#LKR?tFK3(!YBxqyj9D8Q?b^ zg<4}E*He)d|2mPq@iy&qBlQ{`@W;Qwx4U=5(crJ{F$|37lWPa?lis?py-n8h1N1RK zn(@nl?OW5xyrkLnLGCSbLb}(Pr)O2yTcKQ>qyXcb0fcqm-BqZH0r^kS(|cE-Ln+ri z4I1gXSEJ)~AC=UJR4}!5moBD)6j-2^;PxoX&nM6%X`q%w&N9OW87E6uQt&R^_ac=f z@-meb{szvEDktMrDb}>DdRE{Nj$mghC~VA2kyc~LvJ@05--m+ze!eIPY^*(si7ul^ z=}tIDDXDu>gsgHGZlYWgKOilld=ftt+UHf)&L2Q2iENaD9g^x%p0h76jxAM8rka?O zhf+yl$PS4LEp^K780q(XGypYdMGw z^sPDMdwa>Mn?g82a5xo#*>`$zXiD9|kjD1{+6-eukk-39UX-|FY@dGkb(p<@2s+D~ zP-sE^Nf7C|UuJ9-^zp?nvFL_DSHNsJ!>6$muiDI#9sfxn4Yu8N%Nj61E~We0{mm)X zfur}$Cd@9o`P){suOYH+%+=l-8sAsw`Sjw*R(uo3+j8s4tV!L?fAz5uYbLB-Y|s*S zaBpnC+=rv5v>H~&gAi0T@N{67zSEr+L<~O%I+tHV1(6|h*|lH&k9fsjHwYFSF_5JT z{O(@?U&4^q*sU5F&z38m`iyae-+0*Z#yi>kZ&@8E^*4rML3;#`j8(EuIUOxX$S! zVEm_Lcdm;7g^Ou`%h@H9$NY7V9#GdMY+W7XqbgHy3HCxRK60p{9&KSDm+yi2xG{%M zVbEl(9blXk;6%k&jDH^6f1pGEIp5{c{W$sm!%-zn!U8ab0Mt_hl(YdD3ihw71n9uS z!C|;zP2V{t?bqP(?hE+~uQE-___LzC4fB;Ephv1p3G1g+d1BNlkwgRAxJjT%7i8!p z%vch%I!jK?3h5kth(y_8I;vwg%~4AsmfE)5^QgQr2!@bGP}g2QcQkF*PSt@f)cUFT zxN{bR+I7c5EjF}1RU*$0N`~2M(FYnx*0uS32Xuie8RA0pEeNYQqR=qT=mBmO-^D`7 z9`z>IXH(cLJ@FS=EydjB*Tm>{eU@aOjn|OG{FHn-a{`>`lvJ$nGnT|JV)D-}RE^gZ zTBk%ocA-ciGp@Qag>IqBMhIX~q-(69v@$2pP^umkc|hNX8)m+LOss$|sqhc60S%AC z2qry2B309#-Q>|t@0V7+t|;lSI(2lN@0A2zD1*V0u?mm#A7iNA3|<^|J$CM}>6uAW z@I!gWq4b~Wq!4@VWQbCGnqB?TH!>=Jn0mu;9x1g$kCsX)~LwR^Dwq- zq#iGO`+TyXbHc&rr%btN{&qQkCyhfUK;-2Wcu0=Fe!$h2LCWf{j5ql8L`4XjHhaeJ zf*lm9mID<)nEI930dvNp*%O&&RjKQ{A0d?H0QGy_8dnXM=fLIl+x2%pi0}pMY72yL`W`}OFX7w;-EzxI)c{;i3oYw?T6pLXZK-uVOtrtBx zF*$7N<>$3f7~2Vlwuy0AT65+@V^EgMu%$s#_0GUOko1+-&c3#8#FDM74qS>Rxu$mH zmGJjh;EQ*ac6jnQdLc?aRY1#k7rVTB(z~#UHH9@X&9T{o7olX_vir!e+kCWmAs5f< zLcHk>?r6}T{JQ%>yY;~>Jh^`%$q+5c;+eu(@g&s&QdO!`Jd)9>ifMGTv*C+&F-k?< zp_Pc2DD|(=?rji4A%hhS)aeh7ZIF?1E|J~D8X#q9q??#Jj(bV6g>n3lr}=YrO)R9B z_tX{bEpo9oG@q5(+R=yLJ(-*h53}?D;d)Tw>od|c=*mapF38s48(9^RXn_NgwR2@n z2Da!p#a5~z2*N3DjkaM6v%te5_CeZrr*Y7-N3OwADJQS!Bx-I@>1RvyGf)x!+>M^a z>PWJLMdRZns&a+_W;~Pkh%|>XhB1oFYY6O9WvVTqz!So8IlBi^enC-e0kd7A4&(JF zcb<{9^#d|~iiILj#X~A=SlHvyMy-WZ zrZWss%8&xeVZXBMo=Fg#B-ttrdoZgDKfS~sN158^p_VWUs=KL!w%^C;gsA63{aaH3 zVpWb3bMo)_z-}^BGQE)g;|NWR3qvm05PM3{<6e*{oFl5O7!L%B0bxaw2S%@JzD2RY zAvQ0ZoSZ4G^-c!5h%%aY$SI$=n!&1oTtFHQjXDpTRQ2uyV-$Oo0x4}qMBPbia{?nP zz{xU56ZuF%X;@qUf5<-OL{POd%Qgwh+9lH;Z;k|F;Uh`ZRF^4esD~9Kkt|kKI1*9- zu?95xR}1zBO=;!9mCvSS~KJ`Bwtga^$if+QUqoJ zks5|Rk`_5Fp}$n_nPew)oss;>fgxzXMc|d{di{mYN3^<7s!oIX8IzaQQV+pFPXJmu zJx4#xL(A*L>gGf_i^nBP-Rs0&Dh@Xu9mK3H5-$fbf8&l=v_{0csbffE;4TP=;b6FU z4Mm+TI~(Mm=2B*6DLV??HW~$(X6ZQ##mu3h4JKk4;l09ZCWJLyFPA8A|5^zHfv&nK z-2P4*e|KHOp+O7$fEz|zLwvzYb3^|N8els3n8CZKO5j+T79O% zZ5M0q$1kkY=*_P7VJa=@V=}oQjoyUZsTXOF>Q6Fmp{z*FRH<-&a?qHDQd6rXa^p(< z{pjU3;qo2aCL8@qk%IUY4irW-n{GlAssB4hh zyu=5@9{gxWVldDS4YCnlfO}5ozm8&>-tXp6;R)s%u6!@b02&FHQ^h$y@+m=i7eW6)w~`6M#q}b+7*zs3Va%SzYa;#F zE)yGy0CdTCv;M{>M}vQvn*nPoWpdoe<6zk(k^(?Udl_8ntY{;QFJ^3W5-i;4`Z-!Qa>$rZvXUhy) zq=$T=ZZ<9CG8^OCi5Mgf4Z1!ZwDQEJRbn8^xL@$ce+Kh;R&4J@Mbsw?S#i>a)Jz>) z)q@07_c$JR^18_e-JzoC+8sP-{M}OUR8qjDcj>OcRVeYTQh=bmxhMmdh{m+*Abxhg zGrO1Pb0=AcUHYh%CZ8D75;5S8J;uc4I!II z;6q1}x!6R0FqYJTqBzKm``pWe;57bgfYH2!v1wZqYUV_NcJsy~saB&^?M0ZsrPqV{ zzD3Uc0-2omkJ?=zq4@FG6ftilrzfPeCu#2K28V^39TICLzJh)%XDeQg!3_@n!BLJt zyjYu858RZZ38@GWGz=2DJJuwYa}%pfh2+{?|AWyqK)-$h?Y{uOkY}>Ytj?uAgTOF%o+cx`4&zzZ_$vMC4d;dvQ zs@8Mus^nVlz1QA*J%tSDJZ&W(5CL>QQSVc6xE#x^Q-q{Dhs>0BmByVW42$C!{pL^vJc8_ZUOv;7xuK;srW-3i;Fo8Ff5z^53 zda(G~Rxa>O#lS9lZ1}|wm}SBXs6**;kJuvCZ;m76UqN&yA*`2*Cx|eH6MC8hhLzRr zg(WsT4?y3+@663py7NrCzHMkt>+yA{QRNosqokAghUQ-b|LCq0Y)A651Z2Z@%p=tM z*(eCSbgCoRPQ{lLXZVwU2ihXWbZpHOrHwNKM>k8>AR<3O1IIE5sVk5AdQieOg@s(R z%1ZBp7ua6qa=J0NfX4*5i8l@-~ZmK)?SH3;LEa(2mUz%WJ@+snOOpMUPlMZx(gxOW;*#BjR1A z)}sLwz%?V1IvbDg*9Tvbs0vJ$oPORrucINOq%h5*P$ffTl6^Ay&>{1cV*l95R7z!Z zC)Xh`*KeX~n~$2Rn@Oc_A-}dTpm}K@86`h;M=m}_HnX-YR2wONgJ=+UUS`r3`ASan zKK|u}&#TsftEg8BX1b@|{j8%gKNwc2tVhMMSf#wP>^zg`o=U~lM{3ZO-=6&m&|U6M z084K@U_zu9dOb1heo)s3pb)C|ej; zX_n@=s9#lux|i2Dq)+cbrtep>C`}nh!;r9{5+$t#t&hs6d}!b5gq4w>Lrf5uun%N{ z{BhW3evwrSpJj*|h{)^q*jy;qg$Bx0n%Rt7gZe3X4zx#>uSa32qO0S}6^UI$D5W^= zdH8waSqC}S==#%HR!Ie_RJ&z7|714Hra(VBR5Ou%-B&`QxJZi2^#g?4JW8yfL7*ZK zR5iL|4Zv^Y+fuJ2Kz$@LNNmM`egdS1@R=0|Kv&bBFS1e9w=ng%K0I=BW@Egyyp_EM zfGW)JdzPyo&7or;n1E{*_3Ezu+&Nin;hv3}nhg;6zDYvm#l1k!k@})sMcqem8 z>Eg4oG>+VMPOU@t$5XBY@M)*L0S@mDPPH+_=anWqxQ(;1+&zT$!IIse&Vd|3S<5fU zJ4#iWWb0^mH`c!EE__1c!s&e7rUB^F1hp#)U(t7qF5w(fbThYba<3uuZ%D*2@|2N`XF%M+tcsYFMfs7Yb;&DyHv{I}ML)VUg{h zjb)g)4Uh>R?Gv)oxn#>M`|1_ZdLBlfvj<&ZIM^OZDK-`{!+3WQs>;nj3EG+>f!~Dk z!)v>})~iPvO<@E> z8y(Vxp2eZLMd{STbt0flYT(3uzL?~QZ*t(Ov`Lpc^<^f3x@vSjjl>sNZJ(*Iu6|}{ z`EH66iVMMwF3L3*D+_q>)F#p!FYC`5-Z)O4js4Q%LkV3X? zAKA1o$9LUrG{Mq1y>0CbBlUish!RPadt|E_z+`H~p_1QJyl4b8T}4Y4T4J}e0r zb7E&q@xev+=fLp8Pk)r3;Y}AxguM%iL!)q$cAGb0$Ug|0iu71_;tb>6J&cB%n0rAf zEqnK+0AuGa&G1p{7C%KnL988UcrZ{&SE~{z8X=-adt&zz>^LTWI(|m@O4N%_Y?xV$ zGT8)1O7ldS$60(W^GH}$VDh{KmZqiQ5c-{(9N;V%iO!rOjp4<0%w6`!WkJF2FkXx= z88-|=MFIDRJCTIYyrd##w#s-aB?tAsbtYu50AQu%`nT7 z30)1dDwVPY$fShK?8(Z&uMci!T%X8ijftk#7(EHkaP<3DN6mgvRUwb^BujjWbwNAk4r16cT# zTOGCbEyCVPxo>XzBGM7lFXfLE;ukfBXloaMLuuKfrdojEK~PYOrM0jzNCJe*&&|wC zf&p#S3Rx+_`XgH4i9k=3@ZBFAA&D!=Q|N5?j1D}XFs8!qOUr{b5cq6j12FtOQYZAK}(CB@B^yRyzZhPJ3fsZ<8`n|s> zc117sRSI*ms>!W(Ifn{x`z_>I7aqM0^jix%{qL`W3@Q7yIQgeDHZml9A7mQWQ_jt% z>U2TRSsc4i5Beei-NOJpjjBl6Sn#y2<+VR0Uo^CC^#iX60^%tI*UIerti%}{)mX$% zS_CxbEv5JwcAgW<@$vm$)EV z>BU=|p}nHg+1LXUzRp=$935XDVCR);Hb=}OW$ry(@*5g5)xOpD9dgI(LZELiVUe1= zpa#Nwy;%k#hDrnMIrMQ%s=Iuf;9N9PjsYhrsWRvrb<|56(7CiemTXr{*HWGG3Hqvf za~5AcwR&bMa%A^o(j80Urqpkuphvuh45UQ6nuHyHUEi$=4>KD71ZqeTZ(&vT`L?Zp zJtdXgkx{1p2eG{J6^535@X{?GUSIW!c9@tBBKw_>ABP)Nc++9^K=jz z%us40^TRoFK^ZYN&~v)D0Dnr9g)h<+eiWz21}wbQ4oI?w0R8uwE2eDHzTDcyiH96P zJV`iZBgTe~-Cr*Vt~!OQ?V_rkoV(=A{1cz7E&TNOpDx|G8%Cg(oyp%?S8q$WcYwD{ zY7}HrMkO-hb^ic09tVFzhuR}Yd7guj1*@Tti~UXVUE!Kxf5UiohAc)&}DS&xHGwrwXn;%P0!8 zt}fDb^yeGZ`-*#&JAlpx*3ah5B~Ka1eHLL#hY%Gz7-T+Ekx9U5Ir2 zGuBCNK)$+CvX12Ey?f>Z22t7$ni#c7*f5&OJAtnWqQ0#9Nej_kIgx3cAI4b*Ei{## z>H>AwHz}p_$};tGEX-&;RGs4~Rkxq;DR@pKyi5-=S z7*nR9y%H8^80pRk+WL5#*=c-9AoMPs9c~O~^bw?C`{X_kW8X4;9u&qCbAX7CyfDp( z|7MIT)m{sZKj+XxSM2vWlFMy!_EQ~L%(F@I4YQyPv zdE=^w);&b+XYIN+2?#<>7L^th!N#x!)AK+44-0rFQD_N)^15Uk&EQb z;usYtL{iYWmJIfw!r8#*mA)ZwaUNv0Ut=QRk{AUkpQE}t+p0c?W;ZM#>-hX^^CYT@ z>fz7U#8}nXbRT;@r2Pzv*JcO98;F%=o3E-{U1imFW$nz8#PaFnrtzn|Gj}SSYfd0O zvT!h4;Z_o=&fQTl;02}H@M_@KLHqCytLcpIcs2t&P+r~ncXl84F<{I+;BhE|Z)e%0 zD5=JCkaHLNO~9}=zI_!}`KDM=6zwcH3^F&Gc`B#xWC6a8T168(p-=q<^rws{tM&K? zw(XxgB^wT0k~zdvWAnZJgEcFH7rZH$A71N{iwz5_q}V3aBXn+vM^V9kppr>sR!X_Z zQ^(+SDn!6EPmJ+TwsOqOROr%S%`UjZs|WaUasqJGFXk4e+#@U9lmRu(u1OWR-lL3*u0J`c|477i8zrsnY!J_yOuXP2K z(e=2P-b-VRz;`-g}` zFz9ISfArh7@aBmTX0%8Yovw5jlE6*WRT+U|rA;xJ4v<(F^VF4t8xm5Y72Q@FFSTEK zLVk)Zo*nT}tfT`1)5qy%#x|b1?IJ>pnX8z`tOQ*byy{)`7U-9xaN{nx(3C!EKoXZ^ zSlOWFu$yqWD3`t}b+9zJaex^a!{*7kEIqWWF!TTlOULbl@b)TGEXlZfNUK>pHZMGNngPPUW7Cw<=ASSlpjRE zZDbkfS(mU|l&C#Qw<+g_a40NDPw!oKK-9IEAU__ScWVRTB}zX%>XytqLBck^6KmvA zEG)qkj~+Aa-C#XNeOiHsNW1WuQ$2U@@q__+K@=Lzhy{hIO|yT^4L^g~w49!vo@!Vu zMCx|z-_M)yVl(RaSvT?8AKJm2gDSb((n{OFl)>t97{ojO^tkp-%6E;m-^$=T8fmSP z+6x;`9luRTDA)KPpaqpX>ap!e#hEcLgXqXHO4Z`NVhg}H$f?c&Zyc^B1A>Vgb}Y!q zU~G&oUuly@M=A>L&s36lWfn}6(_sw_JO3|g zY>*ZS2gkIPO1uZSkIP_sMhD$t%05#){+ z4ItLhgTR=Zb5EP5#-#aozAE8oD?o3C+1$iKsHjm0GNqMv?w>-i7zi~!^=o{ynB`y% z-$}f`r4N?0e4EUI+-Q9WJ}xE0vbffO^^EN|z=%g+7HgaHR(3Cl`GJ|x#V~9Z)JJ+Q zWtzk5hX^$1z}oym0_Y3dGU z8o55yF^4l-X}Tj027JY$T|=-dE2@uMl4_3+KXZM2T+3Jjzm>tWvDg7}TYJr9?U;-` zt#PvDdw_o~x&llGJ-zII2=gWLx9|-h{&}1F^W8ZDTUYl3^0#IdH*d`>-cI`d-dOXu z<#FAYBdbkegr9HyiF<}7Zz_kH5_2=6r&z^HK_Fw1qm>jD%W!Hs55rGf(NB%zeztvh z^1gxYR@{R}TyS~Wt@@zn_Ki(*$3;n$X&4I0GaeE19Fy2L4+t*bd{mE&Yn+pNL!vKH z|B78^uYkOUNG+C&-kB;SYbR45b8s42P(xn=4YDgBTn@7r(>jkPo`~TvV*X_7y!j^| zk&fr2%{_xBP924qk-Id%L|1YpmgNrR~2HFt&t4B@nR2*r7`Awfnm*WNP zm-N$K1@f`#ZEUb+WSZRmB&{f6ssXZNdkpFB&kf0-JyQZ$*Jr2Xw9N7KXp8423g5GQnC2#F~_hn8o@uo8)IHYMD3G&9^!G^@^im(Rk!v5xye48Xds0OAq{ zvNI{q-vgBMOUbJa${ZK?brMZ2O^HJ0SU zmFen*rNz42cKUg9eUw8f+S-@mr=^GC)$FRv@*GY>cGGs#@)QB*X3*z`vu5mVm3DZi zG`>L5KJ^_q&JFykR&4~^qGEsj59G+IUp`*+r)0`Hs>>}R(j+_3igQHhD_jhG=>iXh zv-HI`54a0vm(wP+W@mI7>!8}hd%dh@lw)8qlUm-;HiJq>2s0{xfNw2!X$I=-G^8Jl z^yaXyt$@%JK<~m-F(d$g7@5)+92;ax>G@eg*@GaW-y}{l7q6*k2C@)Wo}=G~rBQw! z*S1%a?j|c7VKFKO%hNAFiM2Zd8$8**(@wO9`sw~h&NS=kqQ2DkmCt(|!7`ZreHRSJ zojl%MZhI$e9xkmWoLq28jsuULFueFtT?=Axp9mffaX)J&)k39N(FU`j_5gmQ8Xed$ zDG&Ehv;pvw+O}axDcP1nwFQV$4UPn!R;Bw{ps-wb`thTxEq?5{7Y$dN6(Q^%+L&AB zYmIIta^c3#SNIMDLg)e3k!F#kbI>4Rjm|~++=SuRo zEmU*Jr4!FQ3TupXTVG*0v}YGm6dz5TeK_8D5+ORrkz(O=i&a> zj?sEo%2;>EyeLw?#DXmIi7%By1@n%YILVqd`N|!ASlhyK`drr{CrvPqE{$GY#&U>(*LW>xJpseQI7bxYSVxN6|n zHf&l|9DG#4EDe0To`IC1akIXxfm!oI6p+SVSz(_>FZ+5Cyd^x_2+tROAsZJ0 zbLfgniZ8M&leW!psbBS4_Lwm9!#2c^NB? zy=3e7AkNFvMlBwHr3+A0*#JXy@1{0aP&<(Ze__fP7KN<0o}IC@!G-)xSzo;R7ZoZS zpS-a|m6Y6&0l6=VbVB`hJ{d7S)F44^g?{VJ00vw9D%9U`O<=5%iDT3y)_#acX*z=Z z93Px=*R&tWb|c&2oJo&|>{Km0e`}vppgrf_Hr^KQ1b^BsybyBc`1bM87+0`!t=I7A%_o^K3x2Rg_a00| z)cwwqRR@*b=u}d~Se#vr+6(R5peclOU z-w?UeLC_?sjq=UxkFL_fmm3fi2%=U{MJ$G|JG zG7-zP}Yxq#(OwK#d% zYFhfF*BPyPc#rQp0#IF01(A$x;uL8xL8ov7$aIbD;s*MDbBfxgPA&XRd7+jVSoX}{ zw+%&PU+XBtDendeLh^l3ffq4VvTb#~K-ydAoxx=dXwPk`cGAj=7pH~QwfdPzn(i|b zx-XctVy>>2d|O43qMdOiS2P(_?z#G5FhaLi2E0}CY8@Z$>4ew_JV>$Pg^*Km2+!YY zFH>uBD|{cZ*+##>>6A(Uvjvp8$h z5OS|Ajaqy(Wfn>g8H=ts@(AnM8(@esvQI6iKi>?-Dz!4?=JFyNN7UU0o-yuKhajaf zTP83@hmB=kvMKsuKGzbX5MgR$iM(+eiOy7MSsT|UAx~G8zSA)jyVY?PT91LQ{$6%B zK)2kA=ld}8lK*tTdN79BRvHcK@pT5QwUEKbtO``Vxd7tSy=*etaGiPJ1$?_NO}h9+ zSdsE<(tl@pYjg7WFuk+3URqyZZDDbq;HYC#adNe~WPg0$)impj(E%(10DCp1b$r&t z-VEOfzrFvQ5u3xut6uNIi{wGQ)uJP6KK3#oIG1jtww7qBzLoSUScA>nbmp^s`T%=k z#Z${^`L(zk)a>>|UyqC$hWgWLQ=eP<@}Z@H$7wn8IhpavcD1$a(}%p}5I31OvnYC3 zNn+9CFG6%J8XP5bAA>*;f-Uu`JX%sP*2G^QD^`-2WI9?Oi!eEm zWcnX(5@3QA%SVh=5oHRC9ubID@z+O-9nrnw!rX@#q#;TEBx*=FNF%@mEw+hob(fL5 zH+~L%^Dd+RFuh&ned`BQ@Yapu-xCEV6MH@5Unh>gsL5=zqIimI@-`N!8YoTE9229; zA;MH5v5m^sA*rg6*%+1@Zhm*vo-Y2`ws+6eG}@V9QL+nYkY@KX<`ij>O`-Zjku;vL zNkRX1fx(v4R$Bi-bC-Q`ygQe=JnH-NttFIK`NcTs;Qd$8rpRn#FPYLZPr^ir&vbWp zwxn~p#c>p{7i&}u?S_V4<6atrEJmu(7GF$a6%v}h$Z2AcHo|cfI68oZjl$7JQ}c_F z(+y=dR(9}xPBIi9v#gNeSw+Zy!Pa=bym-B~Eg3|mrz*GCO@U&9yrtvcCHcP0hPsv; z1A^EKtHY^LRlWV`9_N_f*VQioT8}2%IkjnX!)?a8QbSt|tX=w)M|$w)WZ^he;1dsy zuEO=l?Wk78ZcNeY}msh>q6uusjONA^2FB61ex(D~JqPKG#j!TNZsJ%X=(70D+QRY7{i z#37_ki|PeChM8Z)U8*KrwP6eGea$0EbygWbfW0hAEYP7nWwb{cdCDfk^eRoXu}6#M zC0aW$#&V^GQzBcP{^JJ$RNQ-EaMc~_L5^N zSuW9-tWiaZkh*x^oX$Mm3{8t#v;orY2>d14N;-d{>AMS^s-k;9OWDv(s@tqqZT8K7 zK-Qe7VdxX@PoIoWOIux=c*@vgyS_DKV(^inbB^KH{7jnB6gqJX!3iE!Dy4`GrPm1{ zDP-(B9Sp$8e&B`UhMDYM>B;M})q^|biPL5O{m^&18Hhz%dE_COQ=to@9Vl&~V()5! zMqB7?x28`Qs4Ti|q1WA!g;QmuzN;Y2@t=wMT+Vic zzW2Oh{a05NM#S^?ZuZx}mL=Oq3?MwO3Y3s~Ys@FRfX^2>Hl5wC>Q>YK~-JI_8&>>O0RO zvFJ31V3q;#%z%U9S3oaWW`B*Ex1ioStw`RUhaV3Oo8FCgAbmAXo8B z`{u0036{bGu*wbkp+PF_wDGlr4@2}Ux$+g3Z1Nw+~LCZogg^Sthmo%8^?a9A}8cPepBnPkz`UnbEdbtU&`2){&a&79v6;Ss}SEpS!10)!55*-A+~Vbe)^jBh(7e!^x56#l6f$~T^J z&e`R9&{O7^yR?c)4X9EL!_%yRUhDa#tpngMfc|e=q<;aly{(R=ow<&^iIwGhZ=`?H zAMQWt?_V(nmj9tZHM6&DJ+Ov;%Zc+`4Jla=(>B*0$GlPxy+n2l3k8@{#Zr$IrBC8w z7!-ZBN<4@+thZCmz)(Lnsm0M@cX4uM1Q4>3uQNy=-TKp#!hPE;fhH|0T6dJXc6m`* zeIl@K>u5cTbpxyX|4)I|9GS(Rt4)%8zutMNKidmS`-CEimqR!8DgJ{3c^?sm15kWX zrE$lvsj{q@%$qsQ-_|yFDdJ*aHI;peR!+cn5~!MWj3*`q$=Eo3FDqbmV4C2;#F$}A zF($^oBgI4ah-aF)-JV)sJI~iOqFE2e#Zv9*(w=F%lCjuhA<#KuSp~A)7ZJPIPvuOM5ba4Wcn{ph4r<;mZ5 zMbH~Ih4dPPRqJHWA2Cm2fW8-o*7B$mA|XI!4$p>Qt28ZaROxo1-;0&2$*=4F;vX1R zywwc0M&NB5s&_eCSapEavqVOt+vd(i367+-{AL8`g%M0fcktCv|BDnXnmnC84_c8K z7?nTs)g>fdlYdwWDqE6Bra@8CEOcf3CRRoIOt&)zx|%!1l>nnM8~$_4S~y=|o3ppV z5Z>PySV+f#|Av7|H-dJ5Vj$Na7`Q$kelSq;3j^VPV_5RT;Zx6atil73q@_E@t# zipix29;+(U?g-i#jZvYsV{cH?8m3e4uRl2=+?nyVh2JpH`%ers`2zz1{=`7jKQWN$ z4FdyyVIc3nFfiZR{1*mlzhU6k>XNnj(;EghV*ZVRKYJK|VPNkY1|q#-AWpr@8j=U) z*5U*S>+b7T*3npF(V09;qz%l^tX0_1t7gXu~%LB`HA}%20Bp&=Fm4w5sQ}oiGfSMFmU7#3{(QV{r_X&${Pj>n%l&^VPJxw zuFS*eQS5`oRA<`QsEYR3?rx&b!_M+E6+=f#suuX}oZVGw=d+=uCw9`>*ytJ1RZCNH zT7dc(5gf8LqAiJ#2+^@9M3m5e3<7@0IWZw05}~MoKS_7AKZ2M)5hPL<2*j z+c1ncDWtGgzF;na1W_9rG3j}ChnR9+#1SWsS^n8$%bZs$c4zmSuiV+45MM9W*+J=l zGQF)*f53xj!ABw;?*-{lpRaKKjHPMbUXH@C<{8vLNsmkmMI2YFqg4w_ijS;WuQ1je z9k0Za>P6VYVkRcqL!Lr9{h+LBI!RIQc!qEpcMJ%$t3}u+;3hOIHN8lrW^W-zXXMzJ?v$AW^?;jk* zPT`VtPA|@@fj+fl+=ZP*Bp0cMF5D7PKq+Mdanuznm#VwVar)-2fwM9p%@TKA9K5dj zj>byBKcX7ZKOxV~>WYI2DUtaae1uhqk&M?*-Ue@|@@$Fif{x8I5A|BYN~ob*45bLh zmxen)kB2{q@HX+$JkRpzGK#Yy231#Qi&NB#%b}KU3sqDgWeuK@TBT`sXnN$>%&N9l zDbUZI%I#x2a1O+s61y|YvaP!x6Dv{D(xPpbh-nP6l=lS7=?7aBtrTq-K#eC^|8K3vF3XxXq3?^*P(6c{u=i02)IOEge^o&l7;j1{$g-;ysITUVExQCR2t5AjrHkhyddsJ$tu z{&+_5$l_D1R*I4;MRhqfYITUhtJ!%~ad}B}Wp#4hi!#nk5zTDi$yhP6*yI-TK)>4( z<4RPZ8uRp*&ct@Cr>%|gh{s1$Q%1`mY%bBGp`M^ z5xEx8xg0^F?m%U5y1sgJ$%~xZYn_iEaxJ0zi_jGjN9lv-2N~{f!f|<`@aK%ZUi}=9nPM_swZeYH8k`ZO}cT{{@JDdVc{3jSvjKmHMm@007?B?tU-a{Q-LxCieD! zIR3UNo0)BWM0wHN_d=kQu=xH64$@p|(z?R82r{7YC6K?c{y5Y@Uym{!a`^SG&9$$3 zi^mXy3_oRl$|K#)zMLa<)G?^uf+J)oUvN-aY$7EdWiZmZ%1CYs4)r==!b84QcNH< z`G{JO!)=d?TLF)(b@;l1EKRjo)VtR_Sv;YQ#V_d>&0S%RVQ79;Xb z(W$K7Bp+Z+Vi=QuCu>HX8*IEYs*fFV_q*P;&Bh0I^`w!F_2WXJAjd~{$ZH`GS_Fh3 zPtbv4yMCkGs5F~wHP4)uvQU`k!kE`E6~x81aS#Yi==qGLm-#kmO~Rz=8f#%t4-SPc z^Fg82R$0XvdR@lV!s(G_7nxU zVsz>?7!DBRjNST$5)R+B9|K3<6)|jj z#(e$>K^cU6-czGPH@pu@H93KZKJcv^Up1o`1-xfIm}BC2TpxiCqnf0El})~kT4gA* zJj!l_e%=Y*n3x7{%rpJ~b;-7&n+Wwfo&H=4XOqGNmP}B6B^Vhg1aAgIXMYVz>}}v- zSKd12L307&OZVX-X$4q0IPK$21LJrB!MEG{5aJaF3&j3}2XnTYNy3f*ze`Wl>1psC}KBEhj&iGt(!_*#*iM3#mS>Yr< z*_ph9-Ju(WbO?=C#d^h8y5h9PykTga^0U95cL*s z1?;UcZiW@WAHRKj0RRwy;Mb40>#v3x^jcabmL~RET5lD~_X@m4BrnWwG%NX5)5QEU z>^}-0-*o?0&^58tv31e23nZ3Gt*eyBqv6QvP-Q zDFVjyFA>K-ZVd0o@ZLoJclhnce}w;+rTlN5|1MnoH4FfNx0@6|4fj8E{_;xs9scJZ z^}WCI?_q5IukgR!p5N=dx10T~lgj@;hN1UXP5IR|^S#V_ht1zIXF~r|<`2Kk_bTrl zV}7d`yq&B0`~U2(@8oa)nD;vGd-DI*kx=;`I)8QOe=qaCvGi}5QO*A$^Y@bNe}6si zo3;K{>e2fjN`JR*eLtf2-AsS$9P0l==da$T@5A4B2l^epVDpdgfAtD_ukpV3&Towl z+ka^Ms}s+AjrW_Werqtr|3l;dOeF7D&40&-r2Z@ZKYhP{t)agk!#|6Fzm|Z1YXGGG zQ{x{C!tW*CFZKMEP|NzK#9s?PzvKTq1^lXA{(1dM0Ymx!i2qkr^0&sHdElQP<5!{K z*Y#&Md;LE({!`g}FZI4=@mor#gio_fmf&xU2-|TU!2ghrtAB Me0y|M_v_jJ161*N#Q*>R literal 0 HcmV?d00001 diff --git a/extalife/helpers/const.py b/extalife/helpers/const.py index b3386fc..2fdd920 100644 --- a/extalife/helpers/const.py +++ b/extalife/helpers/const.py @@ -63,6 +63,7 @@ CONF_EXTALIFE_EVENT_BASE = f"{DOMAIN}" CONF_EXTALIFE_EVENT_TRANSMITTER = f"{CONF_EXTALIFE_EVENT_BASE}_transmitter" +CONF_EXTALIFE_EVENT_SCENE = f"{CONF_EXTALIFE_EVENT_BASE}_scene" CONF_PROCESSOR_EVENT_STAT_NOTIFICATION = "notification" CONF_PROCESSOR_EVENT_UNKNOWN = "unknown" diff --git a/extalife/helpers/core.py b/extalife/helpers/core.py index d6fc88b..e1c572c 100644 --- a/extalife/helpers/core.py +++ b/extalife/helpers/core.py @@ -10,7 +10,7 @@ from homeassistant.config_entries import ConfigEntry from homeassistant.const import EVENT_HOMEASSISTANT_STOP -from .const import DATA_CORE, DOMAIN +from .const import DATA_CORE, DOMAIN, CONF_EXTALIFE_EVENT_SCENE from ..pyextalife import ExtaLifeAPI from .typing import ( TransmitterManagerType, @@ -22,6 +22,11 @@ from .services import ExtaLifeServices +MAP_NOTIF_CMD_TO_EVENT = { + ExtaLifeAPI.CMD_ACTIVATE_SCENE: CONF_EXTALIFE_EVENT_SCENE +} + + _LOGGER = logging.getLogger(__name__) @@ -198,7 +203,13 @@ def _on_disconnect_callback(self): def _on_status_notification_callback(self, msg): if self._is_unloading or self._is_stopping: return - self._data_manager.on_notify(msg) + + # forward only state notifications to data manager to update channels + if msg.get("command") == self.api.CMD_CONTROL_DEVICE: + self._data_manager.on_notify(msg) + + self._put_notification_on_event_bus(msg) + async def _periodic_reconnect_callback(self, now): """Reconnect with the controller after connection is lost @@ -217,6 +228,13 @@ def controller_entity_added_to_hass(self, entity): entity - Entity object""" self._controller_entity = entity + def _put_notification_on_event_bus(self, msg): + """ This method raises a notification on HA Event Bus """ + data = msg.get("data") + event = MAP_NOTIF_CMD_TO_EVENT.get(msg.get("command")) + if event: + self._hass.bus.async_fire(event, event_data=data) + @property def api(self) -> ExtaLifeAPI: return self._api diff --git a/extalife/manifest.json b/extalife/manifest.json index 062fb76..95dafa7 100644 --- a/extalife/manifest.json +++ b/extalife/manifest.json @@ -1,7 +1,7 @@ { "domain": "extalife", "name": "Exta Life", - "version": "2.2b2", + "version": "2.2b3", "config_flow": true, "documentation": "https://www.forumextalife.pl/index.php/board,56.0.html", "requirements": [ diff --git a/extalife/pyextalife.py b/extalife/pyextalife.py index 4e613c5..67d2a7b 100644 --- a/extalife/pyextalife.py +++ b/extalife/pyextalife.py @@ -259,6 +259,7 @@ class ExtaLifeAPI: CMD_FETCH_RECEIVERS = 37 CMD_FETCH_SENSORS = 38 CMD_FETCH_TRANSMITTERS = 39 + CMD_ACTIVATE_SCENE = 44 CMD_FETCH_NETW_SETTINGS = 102 CMD_FETCH_EXTAFREE = 203 CMD_VERSION = 151 @@ -388,7 +389,7 @@ async def _async_on_tcp_disconnect_callback(self): async def _async_on_notification_callback(self, data): """ Called when notification from the controller is received """ - if self._on_notification_callback(data) is not None and data.get("command") == self.CMD_CONTROL_DEVICE: + if self._on_notification_callback(data) is not None: # forward only device status changes to the listener self._on_notification_callback(data)