From 9b179076987484d19c1e5027035f05de308676ec Mon Sep 17 00:00:00 2001 From: Scott Petersen Date: Tue, 10 Dec 2013 12:36:59 -0800 Subject: [PATCH] Moved doc build directory. --- .gitignore | 2 +- README.md | 2 +- docs/Makefile | 2 +- docs/_build/doctrees/alarmdecoder.doctree | Bin 245301 -> 0 bytes docs/_build/html/objects.inv | Bin 1366 -> 0 bytes docs/_build/html/searchindex.js | 1 - docs/build/doctrees/alarmdecoder.doctree | Bin 0 -> 250563 bytes .../doctrees/alarmdecoder.event.doctree | Bin 18411 -> 18446 bytes .../doctrees/environment.pickle | Bin 89852 -> 89325 bytes docs/{_build => build}/doctrees/index.doctree | Bin 6122 -> 6141 bytes .../doctrees/modules.doctree | Bin 2812 -> 2826 bytes docs/{_build => build}/html/.buildinfo | 0 .../html/_modules/alarmdecoder/devices.html | 251 +++++++++--------- .../_modules/alarmdecoder/event/event.html | 1 + .../html/_modules/alarmdecoder/messages.html | 17 +- .../html/_modules/alarmdecoder/util.html | 20 +- .../_modules/alarmdecoder/zonetracking.html | 77 +++--- .../html/_modules/index.html | 0 .../html/_sources/alarmdecoder.event.txt | 0 .../html/_sources/alarmdecoder.txt | 0 .../{_build => build}/html/_sources/index.txt | 0 .../html/_sources/modules.txt | 0 .../html/_static/ajax-loader.gif | Bin docs/{_build => build}/html/_static/basic.css | 0 .../html/_static/comment-bright.png | Bin .../html/_static/comment-close.png | Bin .../html/_static/comment.png | Bin .../html/_static/default.css | 0 .../html/_static/doctools.js | 0 .../html/_static/down-pressed.png | Bin docs/{_build => build}/html/_static/down.png | Bin docs/{_build => build}/html/_static/file.png | Bin docs/{_build => build}/html/_static/jquery.js | 0 docs/{_build => build}/html/_static/minus.png | Bin docs/{_build => build}/html/_static/plus.png | Bin .../html/_static/pygments.css | 0 .../html/_static/searchtools.js | 0 .../{_build => build}/html/_static/sidebar.js | 0 .../html/_static/underscore.js | 0 .../html/_static/up-pressed.png | Bin docs/{_build => build}/html/_static/up.png | Bin .../html/_static/websupport.js | 0 .../html/alarmdecoder.event.html | 0 docs/{_build => build}/html/alarmdecoder.html | 54 +++- docs/{_build => build}/html/genindex.html | 4 + docs/{_build => build}/html/index.html | 0 docs/{_build => build}/html/modules.html | 0 docs/build/html/objects.inv | Bin 0 -> 1378 bytes docs/{_build => build}/html/py-modindex.html | 0 docs/{_build => build}/html/search.html | 0 docs/build/html/searchindex.js | 1 + docs/conf.py | 2 +- docs/make.bat | 2 +- 53 files changed, 241 insertions(+), 195 deletions(-) delete mode 100644 docs/_build/doctrees/alarmdecoder.doctree delete mode 100644 docs/_build/html/objects.inv delete mode 100644 docs/_build/html/searchindex.js create mode 100644 docs/build/doctrees/alarmdecoder.doctree rename docs/{_build => build}/doctrees/alarmdecoder.event.doctree (79%) rename docs/{_build => build}/doctrees/environment.pickle (57%) rename docs/{_build => build}/doctrees/index.doctree (87%) rename docs/{_build => build}/doctrees/modules.doctree (78%) rename docs/{_build => build}/html/.buildinfo (100%) rename docs/{_build => build}/html/_modules/alarmdecoder/devices.html (87%) rename docs/{_build => build}/html/_modules/alarmdecoder/event/event.html (99%) rename docs/{_build => build}/html/_modules/alarmdecoder/messages.html (96%) rename docs/{_build => build}/html/_modules/alarmdecoder/util.html (95%) rename docs/{_build => build}/html/_modules/alarmdecoder/zonetracking.html (91%) rename docs/{_build => build}/html/_modules/index.html (100%) rename docs/{_build => build}/html/_sources/alarmdecoder.event.txt (100%) rename docs/{_build => build}/html/_sources/alarmdecoder.txt (100%) rename docs/{_build => build}/html/_sources/index.txt (100%) rename docs/{_build => build}/html/_sources/modules.txt (100%) rename docs/{_build => build}/html/_static/ajax-loader.gif (100%) rename docs/{_build => build}/html/_static/basic.css (100%) rename docs/{_build => build}/html/_static/comment-bright.png (100%) rename docs/{_build => build}/html/_static/comment-close.png (100%) rename docs/{_build => build}/html/_static/comment.png (100%) rename docs/{_build => build}/html/_static/default.css (100%) rename docs/{_build => build}/html/_static/doctools.js (100%) rename docs/{_build => build}/html/_static/down-pressed.png (100%) rename docs/{_build => build}/html/_static/down.png (100%) rename docs/{_build => build}/html/_static/file.png (100%) rename docs/{_build => build}/html/_static/jquery.js (100%) rename docs/{_build => build}/html/_static/minus.png (100%) rename docs/{_build => build}/html/_static/plus.png (100%) rename docs/{_build => build}/html/_static/pygments.css (100%) rename docs/{_build => build}/html/_static/searchtools.js (100%) rename docs/{_build => build}/html/_static/sidebar.js (100%) rename docs/{_build => build}/html/_static/underscore.js (100%) rename docs/{_build => build}/html/_static/up-pressed.png (100%) rename docs/{_build => build}/html/_static/up.png (100%) rename docs/{_build => build}/html/_static/websupport.js (100%) rename docs/{_build => build}/html/alarmdecoder.event.html (100%) rename docs/{_build => build}/html/alarmdecoder.html (97%) rename docs/{_build => build}/html/genindex.html (99%) rename docs/{_build => build}/html/index.html (100%) rename docs/{_build => build}/html/modules.html (100%) create mode 100644 docs/build/html/objects.inv rename docs/{_build => build}/html/py-modindex.html (100%) rename docs/{_build => build}/html/search.html (100%) create mode 100644 docs/build/html/searchindex.js diff --git a/.gitignore b/.gitignore index 9d8443d..00daf42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -build +./build dist tmp *.pyc diff --git a/README.md b/README.md index 06066dc..bdb1196 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Requirements Documentation ------------- -API documentation can be found [here](http://github.com/nutechsoftware/alarmdecoder/tree/master/docs/_build/html). +API documentation can be found [here](http://github.com/nutechsoftware/alarmdecoder/tree/master/docs/build/html). Examples -------- diff --git a/docs/Makefile b/docs/Makefile index 2283e13..3ed8e91 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -5,7 +5,7 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = -BUILDDIR = _build +BUILDDIR = build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) diff --git a/docs/_build/doctrees/alarmdecoder.doctree b/docs/_build/doctrees/alarmdecoder.doctree deleted file mode 100644 index ee19f083cb0c41c8cd2af4ab45344b219241d73e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245301 zcmc#+1$bS>@-J4y-641iZQ9}#3X}>IN?Y0nE>hCl;WcXwxIXJ%(-XLpYrws3V#V|8mwZC!IkLt{;@ zxi7QzxrUa$#fADEUR>BKE>d3Ery*OPYnk1YYc4M86&EYdtka`Mk8E95)z{>zfu$AB{LowCij-F2qevn{i66tE^YqqZ7wBP6YukjvIg$}3zeRBJ=AS6gPIG>nOj z)d%ES3|@6zV{@+9yDhU}6x`>;a8Xg6udUBjH8vFcv}MYp(3YLbi8~p}wGAyfH7#46 zEB0;6tQUokQ77xOi;K5q76)i^>(r)f^#N2wafz|%t%XEsZmz4U&K8$!%WRU`+JsS7 zn&#G~oSISFTnmAgYRhbpisE!ch04w>E?q*kf%MaA8)~Yub#=vM+A=FdXqOq;ip!3T zD<-bU#-?0Dak+#Zii4Vx;__{owIYpH#Gs2SB#2E5t{7FT>StzEu43Y(VLOkk8ZmC{ z$l{9K5__j%l_Mq$n>4bxQV9-5Xp^n2DXv^Xs);#Oo2@gjw2tB`ZJBkWQpN13B{!?3 zxN2KwDL@*L%jz3zTI+Jf)y8JlPQ~{vqquroW>6F?raX+hmRxm<8FI}njZMWh5=Lo^ zy{Rzky4vaa77nB}yDPq!z*=pYimv$@HEG1?s__%Xji?+xscQ6y;@WMQ)uLFTPA-;} z8ZcufOt2#+Hv`_RswUf#Ew0m+84x8J6ScZkH8-lNy2k2k3rE?yZJDxEq@bPRdI_d; zU}HnBML~D94bv<3L8iEVTW0krHIZw0V}1Qdr5aUngSO13QIHsy;(e>MY>n06S>IK}uDA#$o%p3s8N+sIi>*#^u8R`c1K8ilE#*e}5{(^{x# zY^VZKOQXsaH%_q3kPVoDUO9fuxM3qkkKMVrNrGi2VZcF5m{jcFmRS;t2GhB^W;@yj zjLobc)qafGis55M4x3P{=+4Nl&o&=W9GJkE?U~SQAVX$Q!pvi#!@jyWIHC8FB;IM< zxJkuL6NZeX8{#6E1UF0Q1B(){g216#)i%j^*}Sbg3LG`8a?GUS7Hyg3p=?*bwjZ_} z8;>$XE&NojxLt{U z3QbA=3_r9jvsGGCLC=Qf3yjTdOG~yo4_~u=_tl=AnVntSA;D1Hei!%10X?a5VsXa= zX?%SLKDVMN3k`_X4Qop`7gzq`PHmZib160>)8RV8A9+;F zD(+UoVFmJuZyQr$P#DnKW=sKDOeBazYiHz&yO-))XH`%fJ2$gabw1kw$6p-RE#9RY z$Cv2FV94lh+@nO`=^A8(2A|Mf@R_O>!+m1H0I>!YqV7kwlM>9rVg$TXOznv(6T%s> zw@Fw|HMX|sSY^+I-t;YGcfAg*;4rV6I=d;`+ziLDSAzeIIRX=JRJ1lBaLW}lrJ9L` z9TP^58Mb$E?}QmQ##y$ys;O}%;+lODypsSh=7 z2`<3LiS$N=Fj$))lhsz>0^AwDSm;hKA|9wdpo&IaJfMV%jSgVrTE%q*?!qnk&5saLv2;FjOcCn=`(=TeKKDf`c2F5CQ zX0bJ)Pkn@deqAFr6J{ig;&`9RVt>z(V@Hgez_tF&1S3oGr+W<>J&CKlS#6m$yON+d zd!E8uEQ@t`dtibfzR*@n*jP}rVViZ?*;S3xrWFrLP_30d)NhR556I0f9$d;aoyevl zn3ug$_8%Sg`)~{FkOb#qxeA7T*s&g((C4vPt77;rBZu!+JS@SqE&Zs}#luTTJR-Iy zEE`luB-pp5Z%|}QgF3>TaAXPa5Ifon9hI;l6Q*7~x~;WxS?ujLW32(ZgafO|O=~V5 z;}wssTnbB&=3JFEjbhv6;+*p6o_h1_=9XN&1?pQo4m<0|d&Lv5vyQDSYHxG1I02QjarFh!WhZj%xif2r%?A4N;&NG1G znU%eoH7mulD*M7osM@KmE!gfp+bf<^UfH{*wTW=e#d9ZD_NuO9#MfLrZ*paCZXhaZ z?fl7=i`3RM7cZDxys&Zwx6J`|fB7HT%EdI5izXK@&M%v7tz1-A$CvE3Fq$w26vay+ zd~fXT*I}2bp?KNk;^i^Lqr>VT{1s5zm0s~GC@sFLJznqF7q5mkPs*Q?KRthDJ2`*e4UX4UjuOYz~%5|N2PYHJ$nv$YMGg;CcuyZ8vZ5oWkJ@N%=7>T0WN zTjrQPzG!k~PZYz(ijT%<6(6hY-86fMn04{-v6X$0F{*!JELFZJE#k?jMbu%zrm}T? zi%&rpPkY5@*z*rivS*EMi_eu;E=qkBpU*#%=_zau0OjHfImhZc^7oPci}}ttXD`91 zUiONwSnGKjMg=?WW!f&js*S8O(+k9HU%v*V*S+E!>>IcIP4-9Y)LdYgZ+XSHE$NV9 z{yStH#dpeOcUvoEfNNm(9H;nhZt-&v{J;@=ZSDt@9|D|gj z--nIkQ&RW=#=)*MOcj4b7yslHf3}_Xwb(^I(HwpO?5|$&H)_Q-hu^6VF^AY#$7x}1 zR^Q?u;QCLm_?K-3y;0d`yKHMqBL>p;#lPuM1yuD|s7DWor4~Y3uGJHayk3l_YIDt# z)xxaC%mzPFms5)%7mxUih-Ky4jQVwDd6hj{)S{pyR<@9_vev25(TW*3i*4Mdd|$N~ zp!*%JdLr>uFI=ga@zCz@#)cL+l;*OU+G*2roUzN~biAx_TA5{QYOb!aVLAjTYiTTN z$>++3ahY2-LLZoyl@A-SX}_{*+4|bL*%hich-)j(>;d{|)3iIF2AYN{;Dk7RLvv^g z47fmc)Tusf;7oWdE1l}g67!M5U_Lp$h{q#Iq+^)bgw@h$Zosfe{jFmX(VyFRN`x)LOs% z(KMPBfJ&no8`w;A&g1zrKJtb@c;>kwz8)lw`wEiPmRS(zUh{u9yZbsiKjNkbt>mXZLk+jR+|tV&MFrrq#B1h@;06@m5U-uRh5h8 zTk7l79;^v_IoE(Euo~fwnutH1nnZkYLLgSjj2}u@_MTCjn<;m1?THE-_U0dR0-4H1 znp_;r1Cfi$AdSw&wGCYM^;LVL z4l?b7#8dm?>dUmBWTf-dWc;sO(n>V|s0XP1QI>UM=mHhP_Nth6id)-Pub?NZDJVn7 zW|4SmDz3Vnjsjao$D)6FYMxZJEy+J9J&s^GdEiweRzQHzSJeOmLgbKmY8tMVxOS!1 zSLgv|u+((G(Gc~%u4V}ycw){NSR)`44Hx%1dI47&_1~d zyYV`foLR8pLA_9kHN2Z29yADmjyg>N$60%Kt99bR0oEA9hK zj9PJ{LrrUSOLK)f3S@jM%49(7zaF|)7^izQn+ojm7!ja^T^>vL&i}7~ZJ+`T&q3m; z!n>t-s;=76t`iJ*2pi#PqB2-soyck( z4D((HL!_)cF$B>1FZ1{M`sK$kDn1D`!clR-#J?w_##5&V3wmDEUZ!A}v;pv`!o_O1 z&MB;pYjV6>kTACo*z`G2rvbVk0WSZ!^WW*nmlsR`dj>L|I+I0+&$!UnvRJL5kI1VZ zrxn&`4kPs}K|!o~HVejN3th#i=Kv07axM~2orh~UMm^trQ0r zV(!?jEYu(aqrY6Bu5h5j3boVMl>(8@$5p7e4(e*5d5xwi_jeD6Bg)m3&CKT-WF>7p zR6g5WhQqanGLC>;jk*>n&;)scCXBJ!dF(o&7vmt9$2y7DIXCTH4-9DP1|*)kQRuf9 z3=Dhtk6Jj6``c(Vp{Jwz5gIlufSZC&m#QMaIB$3@&Ke5AUF+gPn#1n(-gRJ!dW zM$t$76GW1I#O>?9sCWW-4%FjC4(JPcgx zB_0v_kK#&+xNNtb2T>?)Ac}Ppj|p&WaQJTGaboFM+0s%^pbXMHiNsS+2?5=aY~Px` z^%GAE)H4oLSf|!cJS!0Cj68>W>nENUnlEUY-5R&jpEc@5pghlhYcR5`llVwb;3Pg~_4uxx#3z7*v3!ceQ=j1)b`qZ( zGU6n{kp%fDabs`BP2xScfu`c3kfsKs|-$i^wEI*PUDfKOiAj)@0 zJoUZc>rQ0r*66K=_(7n4bfCftwI1Rpfk@}$XVhB{@r%&>RnwG*W86q0TgJ_WGCztS z&t=n8W4#k&sNaB$&Lwxyi7`9tD}EQsFZg~U^TOH1tq!wvSoS-{>uD%!}XX15E8V_|NqleTAm+8;c|3sU=txi!MZB*cO=$#+!8< zO9~Dg$5O1W>)LTF4LI1#GDtkNEUsb4v78~35M2l(r98*-z_p%Z1);wpu9V0`7giLC z8;D|E$4UYm8z#Q%SeaOUbRo3VDky_At0M8#YC=GFB-^*9Z+*w=0=0$%71pWs9cv0i zIwNbL-ujNUg=U$iDNhWzzJpJb1)hT}V~@`s^y%e^S_io3UNQ%r7|XM+V_hK}Vk+MUo*G^ssLGNAe~>PaetrQRArr(z-j6$(tR;71H>;jN*a7)T5aH+)+G8Xqr(x7#UA($|Bf2 zw<63Mp_UUrSqzNcj^E7$8sm3!R>_0B z{X>O4K`HU5qp+9XM%s-*!F@*EKjmQG@RWlRa}Rek(!$6||8ahVE4l*X4&08B zj3`{~PSE`U8a}_EjHEP{Y2^H39LmrG~&k&FB(nSB8{ z-_|;{HEM4*6Kp5%BMio53jFcDgzqdVz0X;lr)su4v{ zZ4(k4DB)@io8-lut!CtCS4n9ycT*c{a1z@L2yoYe#8a)f`rOTsOgeWnQE!cVmY~me z(GN^PXG;|BAf}yi2mU176jWP-vqAj~CvNX8Gk5V!YgEqYs89z33F3Q5Jaq`J;CAjv zU|^A1?E@Hugp@{|s6(Yb2P4DX5qLyM9i|cF&MzA)9F8(i9f7Ou0ll~H#tKJDZP;Bq zhYv@wTE_}oa{38B>{s5e^dbNcz~mci`sH_L+;B8VCC3fNpvF_j3MYCJ3iz~fLz^(t zy|{sgiMnYu2WUEI;6HaBI!*|hpy7CAJaqz#&{?Yh-v$j)fzdZ)H<*5H4ACygh#@*y zy?fU&#EF1|ot%WkQzzpZjv-DlWF&^*v2Zd+>Qum$3MfuPy&q7Vj*O?yU=ifxzGb9G zAs%%Rh-agVGX*C)()`=3)LF#pOd_eyMim4-2Z^W76*{_?$&L22Nw;WK@%A@)gi1Ty z^8gJmaK4baz#$W2xN_`9RR|oFn3(4xY2@NqBW}!d32VC-^IQs0 ziFqy)x|jQO!P6B&W`V^#G#|!1l$b8>N~AXCxeEV1bv3Tqe}LO-BqJJB*Ag@y^H4@o zx{hfi=IKNkOyPPYp1J{7>zLS-_ID*>o*M=2CI>A%6m86Nvp}SFv$}=#c3QYqh~B1& zW;Vx=7>!%v`Ivq)53z7Fs49bp$NgmD<+<^Mk`{RlQdw;?&fW3UbA|dR2tbWw5dl#i zWaeK$6!uB#cD5NrM|X%QG3kTo=uX0S&bz300Uw=sHxf_XBdxU;jQrH54C#W2kM0$y z`!tlqM_NT3Nj4_BUut6<`!Uf2s4tl4=Ru+OFP|Q4@}WfZjslyeAwJCdf(daRLB>;$ z3W|xI9+OP8`HljcBL3q{!y(QSD1r)}M1u1aT&*3GytZQ<))Y+a^0Yuc<3ob&XC;%~ z>~pBMM*6&}oCe z(M!RPSPDs@%4^c#>$*W_TO(65KSz@DB$|2yZNnyeAl%|q@uskn8W+9AY8@Bx^*;`w z?#4t%GA4Q(WRhc|f1}1z?+6!eOjIy@+PLUlVPvl3qW6HN<0AfZ zU=i$q?-(;tNJwDxIN1$?1{)K7D2RxOK4SHeUB^Tp0}kf*2@+3zifcF~`pl4#m}t2~ zZq(<1DHRWWfqFk4`VtvWeZ?ZkCvS!0`~bjA&3TjQQLzgaw#8W+S)r30=Y)X5;67ftgLF?_Hg@=)iXZi?4YB#IC zsJAo4;zDx?O;c7f6JgQK@z|w8EeRlKid?|PjbE{Q-b)FESeroaDu=`Rf7>MzS6fPpyw@*ynFx$cWG91EXdJ z(!I7JYD;ES6c{qi26wYYv;P?ygJ*3jop0F`8)I}tT_07sZ`eJ)wF z{zLL?ad;%rd5+?P1l}xKfs|QCnLcb2(DqzTV=?I=Uq05B{c;grQB~8_2q@ZSW{u=ZYnZ30AUei z3_XEI@dJT2H*2sO0gc(I?|*Z|3O#T)4JD9hIubmFBj~z2*|v7T!!rb zPkzA3-xuwxS^$JzX+`3x8A4I_incSZFJ?+csqAo}dxTFH0v;)37T8qA z;lrtn5>uZ?A+=N4(fIGFV{p|f1h>aZM!G|_5i~xPQASdl!!$CL9fvaX&GATZ)`6?- z8#X09)8pNtaw>6(X^AgGuc)0nqz+_Sv`7Q3jQqfdtQ<2tf4NH?nA+eLG9Q&Ng6l z()QW67@O)GK!I0c%cJjkzMDdwOWf3l;FbZ!D5ZqQ;m#vXnJQCmelU;2(Yo?a6lOwC zGVj1F&Sw!Hdb+L=j` zLtTnGsQNM_p1K@YYkg!ztS|of+Z6(Qr3RK4;L=G4+wU{;wbl7DJmH3q6fgp^FLsLF z8Cs#P0uA4EGSyJ@d|OTi^N6~dtp+A~jR;c0M6V@$=l@I4>p%i(?nL6L>!rc=f{~u; zl=()UaJfN1Zqy(Wmg#|&Y5L!2C-hQ9brbk-;=!ARt<-q%7FO$ca0hVfzMiq5L9<1@HW(V>Yu`rp1F++GECbD@pj>=dl6#z8M!-vsiQ>xbECvNg{FxT z??T2?ce4l)6u-U@i-bd3g~gNi@H4~ru;fht@wt128luMgSU$b$sPTTl!NMLu;;9F5 z4M&atGGrub?3zU#JvrUfIO4cQ(QgxHw# zW5~ydrQgxy(o>J498x}k#8XcS5#9CVLk5uzYo8L3r!|Od29ymg8$2k+k&SAf5y*6o zo<%)4;u1m#spn7tR-Q-VsTTxWv%;2z73`nc`@&unsFxflZ2?vy|6j>i~uPv?T3Ayn|#M7@Xh9as0hu#@WQ{=;hR>UakZ zDRi;X=sG!j2hI`na36qFvWNQ+HJjdh9}6?x^Ki~xIG+GbyEp!G-P@-^ z(73nHknz;#EW!|X?!t*^P~K@nmV+guT?2n1$na)gvigXwz1dfQg9&|cnk8un)2 z8ZzR|oV#!$9I5XBSIU)rk9yyg{eX<8eq<5kT-5X`1`HJt$YfpEPXZVlFun`>nOL1Z z9rX+H5b0MWp88FYb)T|b?Yhi4)9(WEhXWGkz^*s{6o^y~f~DJELh$bxL3ioa0|Iw* z>9!C+W$Css{&;E;V%i%M7ZoxKZ0W`h=hBT5GxS{y?AWDSPvN$g%WZGThz3<3g2tC_ zl#!JBGL0ozXMP6sOriCCk-bg&Z9I=g6MWdK1z zt02M4x`bqV!L&)mfr2#*nrq)37&P1@LaFaR_ti@_Q5o`e_ zL0}%{fnJ;k)&`~Id7un6o?1s33C#nBRXY!?E4Fw)C}(xAuBU;1fP?*PjKou$;2NF=`WrGb4e;fb zi43U$04p^MRG{9U1qLGHsX;7)lyD>LQbP4 z1TQWVT-~2+H8cloDIi-pAYlgV9I&-Oq%si90ow?{Au)pP9I!2GySII}9YAFc7%FtP z_vvE4Vh16!z~%sUH|GFKOwYX|Qac9>!+*RS4Of508ZH^ppc+BY_#8kPNoge0$Q&>V zW$4nKk>E)gT?njs@zm>VcQKWaLv#Pe1r z>?7n+>7PQ?BIBt7iy&3#6p8`|QrPwS0RkGcPT%v^5i4{GRgV&g(SQU8K7y{DFWc76 zcZfcPY7&s521$S8A~YQ4ZK$zJC79{FHKQK9amGq~U6g7809b8Bf=U}R1Pze)gOCb7=3uTQ_*QxQ@WC7bKF$Hw^0^b}@vQCM1bPBMWddy%x*a}UNOhu+ zSzr?=t%wsSC8iQjLTV?_lkp!fCc{;$4BVb78R<}U8bRX|C}kw2)0svl&@)hmzBm&J z-WrCh?F%-g`=Z1m>TE$f$3Y7_Jv)J(D-h{ccOL8Q40^s0y+9L{PYOrQzY<5S4nC(q zabyY}tB&p%^B9uWp7bEf1B?1sV3M04XDC|-JyUc*C5C3A1 z!b)+hE(ZeGCL!lk>ePB1Kz23$ z;Bgmnh66I;8y0x2u(j|3Stm-u2V_(i&GLGto$-&#hDB0001SO`BN9*D zgsZhwawV1;KP$UgfN#;j@)2LWv>fi$yyLtKucgIZLU=J-ZA-pv{A_;JXQO7kOdFp& z;0LrT)U81EO=>=!2-itI&iQJu@5cW7xGZ=|jR#_hQoUDcHln)Nv{QxpCh zk0Rr#$5@02j@!h(I1x?4oXIsjWaQB6aY068`UID>W3p7?Rsvncg<2cAR5Q_r&qLh}CGaK}P4>LC!#2461-N^B(g;p&UT>P(=h zUP29Id>M(SUJ)|7pUI1kP|TfNuL{U(8bp77f=6DPZWZIo2GOqzY&utOpdMVwmn<|X z^(KnI&Ra-4^|s(^cG$YG;~abaTcF-?pu!z*XXkeXBAt)-P;V#a_l4$vG)}O| z)!OCpoyamW0%CLH^VX)%`x@kuecm^y@zl4%O~~gNeyz{@P8gaOpZ7g5wa?=}*XR8p zG>y;u5g9!1!y>o?-g*@Ad4c#aIpS+L>seqr_6T|2#B0S9aP4T-0I$2IKq z{xD?3>6K)ul-K(cRD7@Zmo)V^iy$VSPmlC1grh0~;jG*1f$fciFA4c>Zz0rUKqZh= z3!@5RE`r2UiwYgx*W@PT_ZAb7o*G1AKAg~Ry7?Ac(eZ`(vW~Bp0LMnU&sT5MgD*Z+ zWNE2BC<8-%k>HarLO?Ub_M@I}34vPDfeQD&^?XYSL^>l&quzSHWrXIknx=e!eY}2) zc=uf2azKPa$Qe4y3>EA8mKUlqJ_6Ub0?|6>zSR|h2d%Ay1Rr#fR@w`O6$%vfeX9uI zsv6MseKqKd`5Eo)G^}#Ogkh6Ls@2f8!4 zyR}e*XMTi@khe38T5ne-oXm^2TL+lh+wq_4?ba2V#@nrj44wsI5!?VDaR|Jfl^X^| zegjWn-P{I(1~<1Mt5@pU&20oY7*077JRO8<*v)Nh$cURu=B1Q>+XU#of9o%83}6ui z%_P8~k1LUQYEN9l?q)ATCc)iU1{H4(Eah|dM!kRF zu@5phL}C%{oms+BTAA7prI3tT2_&=Qe6pa#tlRfI`x8swIvFBbg>ncu1&OD!LPYmC zInmz7oGDBdkZKJg?$C-DW6HY28UapcDu;UG4lOM;4P{_xIubk;Bm^`=Y+o~EjuvVK zq~L&rRb!794iJcRF6vls&lc*1XoDsyQd$G!!9rsqsg43!;g(?&Q|;d^nku3U0x2Y( zYQ~j4%Z_AI5C~&RpDI`uS_HCHLyBkiEt@>dkcy}{0S_}#4<6{zeLOV_gK zC}<|wn9Bs0>0|VH*Fge&umi01>mF@*tnJ>>#vuTeqm4s_?qNP%$aJ`nSzt#S9HKnh zpv3IPBaqsojU(|NCrY^Legn5hOGbJ?9YfIg(FSECrDK^!jyBp*hQ64C1Yf?v)fxnw z(tT0lXybT6JHbHQhCYmc)qblA@0q}9#aRM%wuTZ!M$mg3gx6 zbthB3ufW&TIUki(*P{yD-+%<4oWT{`%LYUQ5LV5GwLAq6(V@Wqj_PH?V6i} z-p!hx^tJTBDFtJye7zF&eTzUu1?P9K_1DnVtpu2u z6vzp6a0gS-9$;bUt z8mcv8PwoSWx|S{+yh2!)c%}sGH+4)^T5?nJO8;+`wK$VMC~skLI3YdAuG!;p~(ozKO`m{D&6q*Q?Z z7V7-~{cU9M_zH_~)Vv>3h(eJAQEW*5jsV3>)%W4=5-TAje-Gu5=zS!f`i~IN-O0Aa zTJ0;xKM;@)HHe(Y7zM|8vJv@50-Mg$$EY{n!H`m)pa|@IiUi+H5q!-KTi5KEfc$d- z`N9DSE5-)oUkXGj6F~&}l@R+Lic;0F5J}*LS}(QptM0o zpp=+i`bVTT0{sd9J@qrL+Ao9KUnCW)Bm(^%W$4mBkl-C)xLSwL zrnECG5rO_CXn#9s;h}6J&>py7ujDR2>+KY(L{Qo@+q)5HS#`ELpR2(~W%QIC z-t{S~YvlVsYs&DFXT1Njta)~GORl~`EecXlD49hFS`C8pbDP)>mc`g=5P|j-d196x zM4-J0-}&E=w>K!EPx~P8R9|Vgy? z8w)Z z0H>VQI>6yedAT5)>*!`MqnmyplpNh`j2b-cA$+7oH~oc;SahQXpgi)G3;pra=*DCP z0CkANe{P5~P)M5)XAm-;8q6Z}3h#Lfq6(2+cjnNsjSV?&Mw0g+KCq$Arh<=9XERn0 z?mE=j9B{CSEs%I>OI*XD&Q^wuggU$lCCrrC8ug{(oNZ9=$2mig!OOW=6vR1{JCMW1 zIokM?YM0CfpZSAhi*5fb%*-3+B5Pge+ct z0Mi*7fqF1x>8O#&gOO24@X>lf){L-S&4`I`b`g-#4oH{-8{zCK5a}H3hI+f*H%4gg zu4&5M%#QVNB{epYSVw`((5H-Js_$lYFx7YzL#jQHcxnQ!)*G@x?IB`!Gfx!YNe-}< z&keXLS=+sUYfpemz_pjqzzBH*ePv>FF3>`-jLl@o|`tDDAp zJ9$kPqIpd;Gah4V6dnd@RI~A77Jdi)~XS2bn6V==pe{maZ} zHKx@n#Aw*mpf?`6l10@q}zoWpWh<^}M{YJI%_Hz);>R^;Y4IUDFVg*-g`)onm zemE*SR3H!YA;J0Kl1Xp*2-I7{K2p$+a?y`YL1#;3{210pKWc+7#xyoe@2ieQC3bDw zka%hiAu;D8G21xw(8oz>oISEa`o}X3y?X5glt3x%NIcbnt5ph{5v5f2)C{N-r3C2M zD(q2Ku1-Q8s3#-ABNw<@RJLaB_&-%DPxC9mW@*yA)_QV+mGQ?{?K79OtA zJisfVhpv@Oyoan4xsLVLiF6A7^)CJmDfn!PJ$xh6@Vf3M6hZYjBf(BNuC|X!KFNdJ zDv-DNkYM|tl8Lizo4pKU~gw7@FS|jPJKRZL*FAYAR8C4nTF3M9zzk7 z^EeVuJ%Ow3d$yC*_fHDsQyMa}B*x^}#u4%ml0Kh!8a0&a8G(pO74Y&b>a9UMhyS?0 zUohGWLZPF;hOihi%CdJEy&ynQvQ!r2dyy!e2~53&3P|}f65P!%B>Z;RI0V(Qnt>WU zqj*&iU(<*wOZeBNHgyUA2CMZFo^NSu#+1-fRg-Ih1=lvFzr7-`(eNEc^<2%r37W~P z`L|Gm2L*&Bz1E7KRs35xim&G1L3y`U^X~#sujcvBUCqBIq|IvnePpoF&LRvv9)9~m z;T=$6H8eIACZ1d ztc0ciHz-y-qUcS1y40oxX1w?`b`3&;-|L=I#lvO(Qp-s~>GkAjoV+fS$mZ@kGo zLQ?&VDzNtp5>NdqbToV9Mzd!&1b!2c-yM)JGj>DZ4}nN$=1vvgF*Mw1faJ=>Ti(yW15@v9^2L z6-xtDwkwtqy36`>A=+|6W`S*2Z~!yJro`;r<&oO$iWTtRQ!A1|`@XG}BqJT6RwihC zyMi*3(ke_N+ZC)KX05>Ks;tDSV&lNZ0JXNFM=}nXRy0!8e*<7aj1>8acua#Qc6vD(XhoW3$0##QMT~ zOx|EKVgtf=c3Zd&0ghhU2#Kf4g?M|xNKAEUM`iXG`U%v=8cHGrtrT~EVH2s1G3a~q z{;0RX;{c&o;nTwq8JLLPQDD=wv_Y)5Vd7w9aJ##paGV2wGs#4o?KmzxLR9f3))u0+Y4I@q^p>|peRM%PwY9D;*J8deyd40rrX7mJ zQ`-wQBh(I(iIXN56lzD-M``nnH0PDP|pb!L{B{n~-q`VEIa5mgEdTnp~_tZXY8j%#qQdj#*KCUZrO=EhXif_$}r)+B)raumc}jHx*s%VPxK z9R>MZLs`~taPT9WCP1!GIZbw&ke#l{%F5Qt)m=*P;hO2twnb$hf1s#5sN=>FGhAw= z#e!~8dzS+w6W6*OE_JB4!=+x(8(j3p6m+)4PHSSl9WF&=Jf#H1A1*fBp$RlgRh$_% zOlmDm{o!IURV#|oO*4?-dk?r;D`11k!)2C6nJp*>Iw)+)43~qX@?gIb40_CTbGRG= z*ts4qR?a9_HjUvzveeZPl8@_(TvJy^GK~zEqfiD#9gPH^Wx&-cicORr zF2@Q^n}cIC_8Rq*NH~1RmU@JnM0uB&X_28pDu#Z!Pq11hi z(^#$dHF#H1nATk1q_7dUHBJY~JP=g!5g(JOs(c2mY!?V2&^DJR1wzbi%U5&GW zt9Lc{&)wBHN2r=zjdPK~emaY=tFanHcXu^hg~}V6$$7B8w_6tH3p%zeE@1UWU2j=j z2sn(4e;~mf<+z5oEG{-=WXmG_>Wy&6s7nA@YRBSI)cZRYmm!0D&RG=fSWp3hM0UsG z3IU3GlVH(tC9x8AEUrR11iKmu-ZUgcbO*C-j2_HA=4OR!1>`ynBCqZUi-y4&X3cI` zbP7s3YuBS5tnto{Fhz9(YQWr$Nbm|GA)}ciFPb^CUvaa5+~R9okI66pDqUa-9l!8Ex~D#T!K?#&O7%YwM+1O@gIBl zxax@p+}k>=wM+EIr2Q56l z?GpSkfk^FU^*HKnQ1pb*d{WcQtP3lg=zpwKA7vygz@Gv*bVhzK7L6CQd*x3Htyt^9 zg7_Jtb#}L{X8{eBJ%G3tG7$8XCilI)Ab>AwKxaOq>DtNVC8b~gF9;9@p; zht-F6J)67>IP~ayNIdmEuHo6_KZcCVCM6hB9{{k_Wbz^E{m1@4LdH`cvj}qX04XXR zH4#W>-S;Pg5wm80_vBMz>BFB8LG>9bAm!&sJoSZ8(Va|AwD%sPpUC`DK)!N7G%K#N z{hGDibGF|ARGjU%LianLF5K7mLS}(ETlN^8EhVOl`~j(Twm;%OUay0z?`(gTjCQua z5H#*=DI+QU$~59^e?u91;CCdR`U6+%Y}r(o&h}41`^!NKo4<9oe+xvqf%L#8gumap z5Hg-xm_@L{jbVj&B2(4oW|(h>Y7;6muBLIC+@WPplotUSlt;#}?O6-t`FZ12*qRq* z+rg&iVj@9I=)lMKBz))GO4tin=&{~NJk>|qXfGJCsX9Gu%-&~Tfm&QciKEw=;jpm} zTrMHCF+Tm#yCmxE-se(6Z)u+%hRZUE=p6+%O{-g$^>*)bIb=Mwyr6KT1Ahg{M4QKF z7*J096`6+bidYFnP{GPbJhck0)@Vsy8*O;wb5(&{&4)y@t4k)m*)>pa=l?YYeJvM# z?G$vjM6S!2c4o?8fP58rNt;~*c z?%z;qQ|JDTSgq%Ne(Oiy^V7t`^0}G$H|NY>4pPZ8e?QcCYGdIfZRX!Z7@3!uzdtbb z%+G)B%s)VAnwh@>8Eo&f2z|o$QwKA@BQ`pM>;^NVo%aU`Cg%OYtlqrqd4E&D!4@_{ z;;GGX4bS^q7&0>Nr?R8A1X!tAe=F4cv;Nk|;9WN?f{c7FAS@Ym5J+a{{2>A#9Y4Wp za$92ATeEpjnAnHf4#kjfC=whO2o2r2N6>#cvCC`2b|qM347 zV0gxN?2!+y^I11L-&X<&sv}#N@23NGe$Mv}BWh1J8O-*3AsfFZ;gVps=Nnbf7v*y! z-QK`KU+seghbOqAuL?$FDoqa5OB5TO7hxV z!*l%s0$Jxng6(?Aq&M4udTWb~g5Kn!7gNyL61i4P&4&QRG<|m$wbo`pLYNjLo@&Jv z!srhOmc)aBlPxW6cjx&T(#TBRNXk4vOKMZ+`Pr=2^E{tz^IyU}H?w?S&hiI>Q1UE) z5NbSiu<(&K%X`Acyv*{408`KM{O8W{hYC$I%O8dePG4Ar{s=#}?+cAiAhW?tXy^DN z1P^okk*x09^&Ec`;9vzuBf$|3uHiZUSVKnU_!MST8-Pm9@N-b_&+x|~OUH+1)oE|83RPjSUUFeH@4F?p%KbNI;Qf5_5eHgy!d5@3W<@ zWP`y>f0alQ6F!*fuO@uw|3}hmKmomYEfP;%C+)QtjQCWi9!h53?-Z!(HIz7dts!^b zzd>qaJo{_>8&PlP{hNf|%|1OCTm9R)T`OT3l!cHX}Y89a3$C}!TjT{6+;@kSh! z6aNmT;d%c~6hQ@dA;I|vuGWxAUK?_F-oHm6@AVwWs|CNHy zmdN!(O!XUpX{NrxbY;g60}rA-g2Ypg;!3aFALcwaR4@?8vera*V}i$|$;Wk*DKWtl zQkxnRJjrSu6I6g@KGIX(ugieIzI}5!MgvcQL~=CnG-~jCf^d))4LmCh#G(Q99Lf_< zk#R#(5A*iT=K-VR0seF2fft0Ti3eUp2Ji7<5qgI2EeclsBCvfG>rnj)+Wut?ja9tu zGN-Ea{g*>WW$T*d0eFfO%&sU!BH=PEH+YjM*yRvEQl1|C6>O0M0j}* zd5H2p5I+msyf2Y>>MLBW<6^^lxQ1^q|5_lw(U9`}x@2o2U*8H; zRMLR2?@$lE_z}EhBIkZPHUfRxa>JMoBt%hKRdv>AKYN=7uI$!So;;A z60H3ubbt5hLcl+S%mNG6I8GR>QDXMTg_ikAmACh^5Vjh;cS$G**Yfn;@VvRVXX=!->>cxo|Rt*Njn-4`W-wVs03%RvkK8XK(j7Ko_L z1mm+0>+LkySBNgIiDvlLuyGjs?!D#}Y6;XrM{FN)*c8Cb&p1qc#*%C+2*H*T{$e5p zA=uJ{?@Zx;8B{{;%Ob(k4MM8DV1%Ol+6S5FYI%WLK|{%uspWQ~s}-d-#*QCdt;Bj8 zUac$ySMdqLj8;v=?5jNttx6K|eP5q|(uYuOd}kF9*cFzACM6GvxDL?6t0duQvW$ly+WLDBET zx1OJld2=a`lVYnRwFOf>{4JW=5@qOst&n(XYg}yyuqoXE(ObZ`(I`U%Wm^Y@?U;L7 zx0A}DekHiuo|*J}S{K0(M)az70GN9_YYPfrtdl$hO?cf;wICrw{idvB0O+d#a zfvy0xOhRC9JB;g5d{C)E?XFSB3hFqGnn{C(r__xn-H~c-d%Td^Lz9A+fwm?{Cax`O z+Y?c5ZF`cSSGwqXrl7MWDtj;1TifQI5Z+58DDCo$TQqtgNBc;9oFleQlKV2%kKIMl z)qbdhwkIR;)c&~I&ScZcwqB)CrU**bL1BBw)~8BkwO{iriK(@v{9slvZb~X!RCs``1R`PLWkz*>Wz*L)~uyX+NP*5EbY*^!J6-4r-t-V2T z8XX*?A;;RAPz&-!0aZz$yo+nEJYIl<`?v5;n}$Z&f62DC;58U6wS3}Xc9}fpC3`Y@ zwS&LGwdPdXT1?;o35I$p7F(N*x7q!anzyh9B}j1V!kVLy>suFkEf7 zvmM>-;Ys*#fjmM(COl7nBx-1XM+rn!s(_cHQE%PHG5GJPV+EtVAQUO6Zw^tC9`Zj96_E0HB%V4!NcioraR{nqJygGqBl?hkyC8OGMCnR>b9p8U z{m;+fv$_r+BULA&VVGPGbKCt%!bj>3$;qtNJ0t_ao{*S}Es{OBMRE#gByW+NiW*Oy zCM@WMo4L>4Flld!JYBemZIg7hLvjYt^bQICxjQ6h3PH0&auzb4I-5nWPd4PlUoR0*rcgHon_i>>iBYPiwrajoK(cSkC0F>JN zxCr(B=Eudz;KRZ!f@FLxkPv}1lsS;b?tWYJawgD z>waX*G7t)8`{ODBx!M5v(oK*YT8?p6OORz4kAA<-^5seboKRtJ7}rov;ybK!S$vNa7F$$s}~)L?5`SaAI=8MHq4 zS>Yh&bJcSw@5=E$4;ZsGjeoA=eL<+&t!ZSiHO(Tpr|=zMTH=~)OO|h9A;W>Yvd;Hq z!Q{p>t8-mD-&X;Lj(iOXHlA?}JKr}9nFQx6?5H;ZP|Eqfg?iulzKslao>^p^uMmMW zFQP1v#ya131Tto%zVm&TSlan&Zr(!yqcP3j7Io}TiE2-+C6BpK6-2vCht7wDwsd73}MxoL=X1raGJ_iuwY1$nhl-Y%=3&JFi-g*ZP7nFZ$kX>;`cl$hH4390q|KjS~% zB9E(98MysbGSY?WH-g5!KV>AP-HYr}v>tr}wD7>S z-hUy1NVl_vS#RC{BFNzFHkznB0l62wVRIRcCwi>D7{H(`GJ@^g`5jT~aoCe>2K%|a zgwvRC!DQ2$@SR;r(g#rJiM~kiA|0XGUNGWOC3=9Hjol>#YDoN0R zGmUNRu7XmiVO1oaS`AlgkZeI4WOz-vxC6Df?Zmdx@ z5tRN83fnNdOar8{!mosW1~QYr%fua3yu?%u0$6C1iGxfcm=ZgxR=UAJwwp|w;y-qu z*(x@fNS5}ox#Z*eA;Z+q7EJYyD!JJbS*T|#B-n7q)vAZowR+NaRJReFAr6kwkF&?L zEowo2I{_V<1j{Q9l`b*X9vOAQRB$2MhFb8RtTDvz*J;BRm~#A%6!*du?#BfDM%OamNx zb2<|2bmJOc1k@Tb33s266IDQcsWrd>sQ1?Zb;w``oJEj}+x4UYStxKIi(LXV2w==K z{VBSUSlUSmFHOiplp+$mr$&%<|FK=MO1u5iEFdioNSFh=0%#S8R1Sjeml;BEW{jX4 zfX`xW_X60&sRX18_=A7vUkb0r(;K@2Nv^)eaBb9wr&l zpgNqO@c^7MlF|`OBLVo4C_|SXg#=$H#npOJHl@8xiS3tT1npP{Ej(y!0Ny4LsokvR zu-^LCBH=sdQm&JLgl;++3Eti=O|%z`u+*0xd?q?SRiIAOP~!i! zKHTX1bg7N8=@0!gSZ`y3Glk$;K0%n>*@^hrwnjN^?HtzI+5cQ*@KPB;G12+?l8Lt8 zQD9TVzkq4@uGR}t1ReYX30@L|t2I@U*QOc{%`Xfzf3@(v9d3G41eDZ{$Eq&6y1z{lOFw_Sb@{(I_P!DufCg^mIn z!Q2@c=l2Ovl&txp=>0^AhIJ315Yjz}1Ya!`biWNYEMu78^-c-v9umZdHDXFw_lVS{ zhINm!T8DL;ncx7gqHLI(t=>w;c8`Hha%}fFYVgK&VIwWJds4WF#dhi`ly?>2Jq;Kg z;PIau;5{Q$O@Q|-GM;*lMHo_i04p5eX{lRk>vN5*Ekg%Y4C-Ij)QXQ;R84K2HZ7-u zTaYPF5IET&@OdGOAn*lNS9To)z6dz<{YywZ^)jyEAn+AKMuNcbV@vcL!mWB0K&2wV z*HG_Ag0CavsW(^z1#rRR6N2ZUdIG6zIQXVO$4uIv6W$`0wrZc4dK-n1?B7T{^^Q=` z{Z0nM;Lx}lGm z>SwJTO!WzhA=alzu)~b2bwzAYyQ1)&$e#=37aCGdcH#y_e!dilsB{58U!flSEQcP8 z6Hs5H7HoZk1UEDbDXncb@3Q6Gf&85SfA0Wmy}P0F53KE8==>uF`}g>b(J znFSU)bA&K-ro`;qUy<6-`8WLc)bF_Jo&>jlNJhFs{YlVx=u8<&=`W^{(D`qap)Y#i zseex`gsU|XHl_QbMCiP*pe^E{g`}FCoe5f%V;Q>P_-i5IC)vAjj`tY#N}9TgRJF+;0iuL*w~7R`1l?v%4t|DvEGJL zD zWYSw+2le*$!rNf;*aVwVlQ$lkIw6jk2GhOm^$U&s&aesKG7AJh8?**5#ID z+ysAS@7+hz|#y>$SG3;Gc*`jIK8YS#k5miugSe5iT316tTW|{f&8e+ z(Ex!I#~{J|%D6&`QV8fiGNR?{dV{G==+4n}C76;PIi=7CMdp-|L+Utzh$`Ze-TK&b z!{Z5HJMaW#Jk>5Z(a*wlBvR@qkQ3_UM5f^lrjt+v9h{5=+o-tOo@6^oJ$b4?o~9v1 zTmHFW|FTJX`#^sn?sULVzB2?iDqq0WnW(oNeHQ*>D^)Ps3qk=qsK{b%Zq#OPDLhAj zqGYKyNO~?&bnmCJcOF0>`T0n2AFvSfTO=D0Udx}d`E;Qm{zD^5_Xb~Hv-cQYB(AfdBzYX7tXzK(t`;AMsLQJQnp|}w9u2S1@2qO>moISt=@O7i z-ha9jHJ-XmIMFNPfKPj?;pM_eZ2u{7>q+0loNaDaR{%@zJn^5q^K_-qGdoXLA>*m5 zS%mR5BvsII=Yu9Cz6nQpf}I+>|8$Lz$Ntl`tS)rD|8yPT(EXiAJas*;;r*u@3>n#f z;semhouh69T&XRnn^5n+Uj1fd@cIiDK@)u1Lw7A43zZZ|WnZ#>tANIA++S`ObB0-UBbupIgme}2bkj~OQs0T|76J2`h zUX+8e`;g$B-aX!~^`v%vPoICQx;Mv2+EZy>dMV{hWWr{2O<_aeA`TQbrS>fZ#7?~PGL zQhJAJWN++Ul%X%)LxNXu<7&-=P3gWUu{ZV~LHoc#3%fzPH};`GM6D&*8~cd$cC!6g zh<>7p$}3`b%Hpp6A!S3vnGBhtpT}b;tf!(W&=xs?qpIW6OTm8Cr$QvwZm?hVnE>e6 z!?dD4M;TP|1rqE63xM8hFaT(cESfdZR|5960pn*nQ`uDC0LozJPl4s;ALQu%mbm^B z$~=vOi7fxnoczNw0HXps3n}?(c++h49Z8qE=Pv(f{;~Yy1zK1BiNZ|iNoGcv#rG_F z3U`$KfIqmc8CMuVL6`-5KS^F2*w6C+`2t&$w>&h>9w42fenCktfBt0haM5JiFBL

WQ+e@B8{URA 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�njaz>-$K#&{t-~H|4FDn*FxpZ&qN*->V7fqzl!^B#{K_z z_Nb{)Yp(R{?9oYZZ-iYpaJ7a+m;6ncVwZ%abuz-k()xGNPae}xQ9{qE*rii4&4;6= zLJ^vMY9t67;~ILE?5$Vx>*}<^oG!(L*wZUh6gyNq1K_~`%qa4iV)B2Kkh3OAJu}ns zP4jv4mYylvP&j*j7GOe|S&<}eHe8`h59na{D3)p4eGuxOVn4gFmy@ObIkw_`zz~F* zLm1V~5}i#tClNw-&LysM8`r8J)I2pgbyX+{TWDUU`5@GMC_+=rj|8DsTtmOIo?897 zfG`&{%({nvE(9DJkcEX?tzRb9B7lc(UlhL)ZWTpmMH~=iMHaX1zS+W4$6i9JX6w%; z?M;&UXOk`t6llH#lEn29v$RHv0p(5qeG8uv*vAC8wjPDY|4WKPqj6wAw;tVkZ0iZF zC$*kT^_LPLlG82C61`tJs%_ZVku6I$^Qf$0c2ZX3*p3k+U0P;f8l zWt4P9QALuXx?D9Y3E_5Bvod}qZWZNizlo?Cw<^lPpR#!Vca#5WL{AqqeMAV^>_j%M zW|T2n$imTUtCNj_d?gN>9lbWFH9dB1;H(_&YmkoTuC0k5I3|^~V_lPQkY+9ArL7yF z-%nLomFCo#acpE7v&k$E*4I7rJ5t zquWq)1C35QCu(AfC)3m=1~FRiSiQ z7&*kpM+gb=@e09X()c)Uw~9k;7a*a>M$!)+)Pe>jk zcDu3&9?dkd#toP@)Fu-=oRaK>UKr+Spr@Tw7HCP^ufcVo6bg(*f_IX|f&qxG3T4oE z4JReJpqSsj2joZy1f8}kb5IZTq0H`BxN!o2biJS zM=1LmO6cf(dxhr(`w6LBr2PShNX3zV005BYKqQGfNL)-BR&LU4WYQcgltUsE6D5va zA4+J?V%Pr$s$$oNiSOYlUo3-1h|TXEyXJ~A#MY1YrQ(iRN{jsDu4VX$VQOXuuBk2; z)gzIHz;!2n;lr(>8_1+I@p8Jhn%Bsg^y*I-*%6`CLR ztxn+j1d*K>k>$-m2wa~ejPlWOGT~u)JVi`THKt7qqtX1)x#8s7bi%bat`lt6j%YDT zgPA-M!zEgM}jT2aSfxC;%Jl>&*{BN$X6S(bR5*?&qShMHFor{Mt2RM*}(DZXt9ZV;=^im#8N$+SfuVBaXjn+!4bVFsh$e@B0=G5egmW zFSn@fQvc;vg3W)S*O0NfjcgX7?{YhS)%IQP03>mDl11Kk@iGM8;Ur6v>9w2y;ZhV&qfrS2k2ub1|#x?J| zJmPuCcVV@qzRRNkroPK#$l!%<7S-}ys7)q#@Liq|dST$EzRQ!OD)=r>p%e-{jU;i; zh=nc0l))C_m2Dw@Rw&OIN{N?&S(O(q_%6?jtX#Mk0EciTzRQb%LdchpB<^LgG9f9G z3F&>8SA_Dap@fdkixhm9*Mw9q((8ajr2MFV1BH;}O(cnXOB_rRR&0`ZzvXSAyc40A z7_r~-E}=d1Tiyez{Fe8{_k)x#?C^(T^Vj$-9Mtq%s4i{#M@WO;@-cp63vOI(`a{%D zl~JR+&xl&|Tc{v8ea^JXZ}|dcX#Ove;B{_XgI!@&X#VB?3u=O|6(nFaHKd=P~ zWrBs5$QW*uD{sSX3jKbn!s_xK%9JR{dnjxoj=`w_!5A!a!rat=qv5APfzgLp)Y=Ee*Rjw>LD8ZfJ21(VwAhqehJ#t)rL_q1k-|&S_#m$bvtO zZU#`JOZ*V>t7-6HW)$l>Lue*a+d+#HUiCjf43%d_f>*~?RcFP^L)ByiBM)a*AWiG5*;Re1lQRdw=H%$0fSA*qoYT=IU77bEyN^AcmC{G9nfX?_lW#eUBG;_3aI24oVq0E;jSBzjkc(q-;K@N*Uv z68xNn2;Qn2KWAYeq1P8dlDI{2&HFivc^>j}SZ%4F(+j}V&*_Z}UJqwcEkB3aWP%4j zX9=MfhIi`c^dVKj&sh?sP@oYBopB7H;q7EG?A2hEn2@VD9CG3w};Nk(CR# z4B!y1#Lrn4Pzbpk5%SxHFcBCQNKL@EsYRZtFL zRz-s66=Gt-ux=B^yE>~2WsL~MB#B*}H3{vRtJ5E-a&^`c-vKFK81%KpCM-IYt>Bst zo&pgRM6+8TjP8jmTQeL`?`BxYehFQ8jE)MG;4X)0*_>JR9aWxA7QP)>S z?d~=pYSGo9g5TD{E^1-ng z;lb6}TuiqxrW4}oP@1Bvv!xgn>dsu9!9vKpI$NO(&9XHTylO6lYFCG1dRJ!~p>6BY zx_5Q9115Ty9AZ~zdouVvT%8@rxZbF==XW-tGgoIG4w8S7mafha{J=KblnF*&B4fBU zD{sSXC;fh^!s_y_&QO%(T^%+N*$-n{$JJ>891TAl33k)QHH=4!qw!dDby|fy!jPNR z#DX9B8{vJchTU67jBIJ>aO3ze3fqKcz7L$DYR{(vX6PY5qWtJ}Z04Bn(?Q7yNK+GK(Ux9Cuz7sh_-7X6!41-IxhltO{S zk>L49bGPr z@-cD+;lVo^FQ!)-(+Tm8C{58jx=M@+b!Xnu)k4U7N7tYX&2lXgY+NpcYVU|*dhh5u zpv>d&j~Qa*_0alF!h1Ay&f|iXdLvH|Y~IKs zXry&VxKX<|BVg8RC|{Rq7%{r|`cm)K2D&Csg0i-2@)RJ6ds-En-Ck1RO^OxVl4n$J z&)%p>pW3=-L1iupf5k4zbK>V+lIM|0+zTwi8b4K}mwOR~=va!FE%U)Yc}W!TPhKXt zp&S3?6(FIvUPXc}Z*a}~C$D=R@=sW8sekeYfT@4-CNg;X!6L}cQ=+UVAT-s=gbu#R z+d?gj#?&`?hg5d>p>cBWq6C7!ha_?Di`=@2b=&gl{gMxa@}Z%Wcn}4_f?x8H$jSx# z7;p$y;+K2^D1`hJN#Z^eD-)73nULNu`CKSp7)r%=aK5dAU-G4p%0>Dw;1DS{V!lEd z1o;{Xwon%X6NL4eAl@1IpHRMyP)v&08TpRTo;f4m169t*590e{$``ZxC$af!oDsG# zoe`=_^Zhf@;Eeo&---JbSF_O&^*3eI=57*f_FBUkp@QTzDZsw@w`*@3>xQ=M;Qod( zH2-8s@CX9eVEkDXn!mm?GP%g6h{*CYKR6>(3Zr~rOhtHbMy3|iX^d$TOk4HaG;P?j zZD_}iXd~8NbU&sQX`!~v{g_S&dG}*_l%XMJK$5r_g;4E&P%!U)%p|mbc(fTIV|ahY z3+HAA3=)zib~t7sNvXp@dt?lvcwl&edRDUPfs3Ijngw9`u1dCb#+#}rffCYNxfLyODMe!MLvtok=SQhT+mXVWeI}K zXJH>~v1R}D))|89=37=B_N>>jLyI&tci@%moyK;w^lt4#2c{3$)OKK&1O$7kOA52~ znT)}KSxQ3m%z@!+4r%RfX;7LI!(Xuz(^ovb6VneFY{t$aI0Af18Z>E)G{#7xw6HO^ zVVh2Lc<^PG6(M|?~^h-h9RYMv<+*6!7WUl_rupR+otY^RBcom&IN&}>a4_%=g4tV=0{ zE#G}1EiBJkLK$Ev+Uc!fwT7k9z(9M-LY!YCCY`;ucLG2A#}m<{Q0t1w8=(rLE|!8YxdP5W%? z{u^w$!JzeeI`Q`4#M=~%YEQh)07=~DlA~&l7 zYZhU6a(S8Q*Q^)LsPF@ zn0k}%Utp0=z9Fh-M;1XlzC3QTB~yy}XG(?X*DQ+Ck>++HmA#FgW9Wtg0R4s`NnDG# zSl3dL+yophl${MFOq{-G=Db8<0=5dVT%r+xXA`ims~`_Sc0rQ3ks>xhSa0i`Cn>!SxQ0w1FuqBUJSa(u}+>AS1C`TAdm~s8kx_NQJj5|_@ z<>GV#p3S&^t_yhxaukxp9W7!Lg!NX>xMPHMY=o8X;xOZm6Go{J*^E103{Qv{7H8av zf|ky>lL)S!aT{&Yf9;;GciVHuoeVCuXWS`(;H**!Q8wdFlME9x<4y;q%{cywXWSX$ z>1W)T$l!|%7S*0{R2XA|!e&D>%($~fhZ%Pc!P|E;F9Eok}95Y$3+qnG zkehMig>t2#gc-LCS~o9Fm~mGLv0R+10ncXKGVU7WA;`5z@QgylCJ5`To^jU+>-q>Q z-^F3Z-5`uoA+i~FqZr;4F)Yrwn*}YMakmg`Gj93RMh@PTtvms4<`SHCw}MseX?GhS ziMw5rluf%kB*?@}yE{Q?(~iI5X?K@+`e}DJGI*T9A`DL?)eBv!HAV*|&IW6kd-sYM zbMHQam*{5h-47&;jR%lmTO(ZabMGO~Lvs(mOU0=-0UrioIsqR+1{)c%2pTd5Ws6j- z7+WDzEX=~kL{mEA+~cGgUyG%C0w8GlBob_UBtF)~lqNS7pBBn9h7zXYvS{qQOkpZM zE5ve{o&!9aip#p^k%u5JAW7VdA~r!-Z}n7sNmwsOSot0gQ}GpHlnRke#aG4fwTNMH zD!wjg=~R4!;OfP1?M()))6>OoHqOE~!KL;rd<&4oy)7ZiX5l-MVPa*mD?GwypKmW%TP;Mt5@&i#ly1o;UGzSI!03Br1-XWTEs z`ZdDJcX60;zX_vMh-}79g5yT8e-f@}@shyi-vlk4agz~jGj17J%duldw$(T-A|KUk z?`ZBAF*Mypczw>fzk^ThIX5{ViJL-VR0|m*n^Q`P!klwcq1?jzt=1gp>`1f4vCQ}2`<{p2=b8i~)_H%DqWN;oVi!esH+^4sCUUdY``yjABvSoDhsFpqr zV_e(L2)DNn8QMH@-TLM|A(FX|*U&S>{b5;N~Fz)hO7B>oWDZ|u* zsxXpS`_d|})*-9CFW{)1kD>#a>xVLkundyKEh`4rlB}wh2+Ij`dBapFv-T9CKr0BV zT%Z*Jhd>NL)@I^X0tUoe8431m5<3%*V#MMx(7llbx>ptQY7w$^dHl?LbwYdg%zO=? z>Y4eP;@dyv3kBB_o4@9nIc)=-A4S7X%G+TK z{t*vN8@rdk!??S*h_f_G5lA`5aVu0P5Q11>*iqFk?^oXU^6m_ z+esvx=b#^|Om+QT6;?(1VNA_|+_c$YP48%N?XCr-XolfP@bv?(VYspe8?O01A6tbv zBE>|_6=lk6-UaZmm-0xFkBZ4hmyok23f@L|*mHIaGB|5hBwlf+OtE@aMf!H6VJdXs zcjCs1!jtc&Op%;5k$iW;!=AHyAd|RpBC)sI!UDlA*i+?2R;-n*_F`JKuI!C6bU=b6 zar@vJI)GJK2UPE-yswe$CzAam64vA2K{-Ic15+TRJBXR|?UKrga1-Kh#llIG2Lmm7 z!K5-3@^#-Vp=}Ks9s=aB)$F18ow$GF3Y98k%QiYp`C=PUV7AfWOtX_Fk3bg9b0iWR zX^LxT9&)$lDcec8OEgDCG`@YJoo0^)6zq=?>an#@u|KSKQXZbZV&Yw5cbw54FWM7~ zwy6}|HxjJ9w{9kU>y%U@jP4V~>m=i4)B0p(itQCf_bGsf(S54OPm9S*~!n1`?6p7W7=Q&JmBbfrdI~PE-_<2YWg~l~>C@Zf$-Y+nc z3q^8KM8XRFc)wV{OHv@jyp);p@h1|=7yU7^dEQYrj!=?%2fjMG=)|w+d z+e!IWRezgRua#Qs=dl&&kDNDfs<7Sa9YhGr?VaL!mvPnom1`b>4K3NX zch}_9RiPy8+k2SWE#l@PYH;_W2yK5K5}e11Yv@|mV_lnHbRQ7rgNE5OH#%leyme!r zhTI+j4*`#oJuLic9W%)u0X&$FNAVjQ-HQSn-y=n5uv**``=$%8;6E;;YPM`TX!`_7 z#&;{?lR!fYJcR^rtBYY;D@8#gSUYsLG4C_t@T_rQf9E&meNKQ#R`)zhni|lAwsl>8 zW8OUx)4-;cLwCU^o9+dm4xS}03LEvl2#7Z7eF;BWmuI|Z;Jjhvyo@s2sP`58O5Cf; zcj^Fj+d(&GnQqwo8d-H!sE~grR2%lbF6u}FzhQ4$-5WyShP`j%7hYdi-X7oAsLs6& zIO?Hn@w=z*kSw*9`Hg!SWQt{uEM<8A^j)%3aIM=7e8WB``uO)f((&EX_wfV4U`heQ zDIqb0KU7}YyN~qysS2yo9P}IbevEwn%~Li62jeG9Z3lo@eD^8JG5S73f-U%Q4fBse zXx#btPyM_N`}BTcbYF_@zebna$oDIh`L@l1lV1z{8$*{#@_ig{eWOkKmn-`JUfe#v0e(@;AnGKe4v#*79d5R-9R(A>1#-AOD9a z{wr8x1pbBuN6%uL1`c}P8ffm^8h3 zFj`IU!fCV`T~R*S+>Ag*FV2JnQEObQqSl_5qSkyDl`ZdPL8(I3wRZZQ6~HV`jSS+{ zEP{Hu&yl7@VWveItrluwM5m262dQ$OBh85tXfPKN1gk}EJvkeGYY>JVe&-R&yoRE+ ztkei`r{BDQ;j^UqL|!i7{D4D1T+3U%(KP@Lp%*}cpf;|-d{agf+DF(I63W7cQen#% zL<_O?MTAr?+M*;j|5@F*81fLJ7ZQZCMQkm{I!y>4SzlZzOGGI7#tD)2KEf!MU`fJ5 zWW7;Lmolar8#e0c_bpwMQCEe6a9Qlj)P{i(xqc{tGRq)Aa2waqqO1nWU_$5P>&ppq zdBfBa=qDTNUqQvyie&Y#2srA;o$n-`%B_SV2(U5|gs(+!t;vdN39za#S2IjS>cb?b z1gopOT!J+KhXlL@3}kLiltG04ND!|U0~3K&#Uexz^Z`O%J3_XujU(vm5Zbc{`no_> z1bsd6T|eaul{OHY-#da%XQK8V&KwzGfgkMma^?hLw1;YQAZ>^=MA8T1Hx8P`)y57) z-dGv+f*VBCVkDi4lG7$kt0L)}q6{6f84|pgj%yf{tjap1P9%K`k!=}~xYFNX-`GNz0)=#E!38Uv$qvO{_C^tP=lI#v3U5)MVj=Eo;?L=1Hd;eyEA8x9@ zstyG+-cV_$=3(T_`-2wzNZfE-(exFmfFZWC@;1a;_4}y`h0)Z;{eix^bt6!cze8Xn zaokmy=Dtna1tnp);sl=1A=Zm+TRk=RcB@jcR}1E^@Tu}JU^yBK#? zyoziaG#duz&*;V7g|dgC$eZ;|F#Jzwg2n+Gt#1Pt3!jwACdl78T z^U{z}EUI3@%JmA{I{w_Pkv{a^U{c$MP5?pNUozNo;|+(GGWgN^N{pWQ(fLo__5-E) z()<ht=|IF)fIZ zt(NDIZ2SaQdM?P&X6GTnGYD1ES@Duk9W|Rhn3vVMK!_I_;-7A{*6lxdqb=P5^a>ndatcQuP*t0jFgtSDzT*~88LHA08gx|ZPOdT6!&17r-E>yRYwdR+5X>juv& zZ?z;yJ*#yi$Wp6ylX&0EB5$>VBGfZeBv`Fmgjtv$snxobRA#lr$lZnl=x{rd#N8ok z>ps?;vs!lwuw>IOL7n3nbqp+?nNGg+=m2DKtybUu-c`1X{dPQPPjMaJ-lxDT~E4Es%iKn+( zuOpMVH&_%~E$NG4MLDy{9<0`zLWk9Qi{SlwXtmx3G6u~%ND}uhu6e8Vp68XfS`wt5 z)p{Rfsnz;Gygy`7@U__YP=tDBiUh0mkuVGMBehx|lgj&A8bqI<06Kh%1ltjb+PaT5 z=d9M}Lixf_g4NfsgXbeG!p!7mAG)W*mtas9{Z1jX`56q&^up(}5Q5k2p`n=($mqkF zkl=$4-6mTYeXQ_hUJ& z*gM1;2DTn#mPh^;{%MjeFhx2t=AY)`KhXhA5;F_PWD|lYH`Rd!;tq7ndZLLR` zD*>23!dw{{JkVj0pRwtViqtt%Cd`3Vg<3kc+-juCJ;GcaB~WAyB#B#7&)uy9EC{_W5}d9emL@c1G@<fa1qYT}!1Cqr33s+-|=QQ|@Zoq9+oyT26M7Co@ zmNyo`b~g*7e2nZwcyKp|is>+8TIX?>YXJ%xib7yYk2L!f{K(;=FI1WNkvj_^|IDiu zWoV5NNbrGy5UQVfQ9A$3YZsx7^k}u7d5r=L5|So<<~5om6Zg!kjjXg{)qUg5rtHI& zq4Z<%RI8EwKZdk?s`B)?(xA@x+n4zE3DE>;xF6`ysQV+qAqlFb zv*Oief)1v*eD2N{ZPSZt~^jrsGMrLk@F5XF+*!H^>g${ZrGN`0?G2{zwrWk?&i zba$^5{IhiL#onzu&_||WH^yJF zH`Xbh-W%&eCUHlx2u=%ke~gyPv>7qBDRJh)1b^&k5yBrkhTt7~=#L!>WDKU`kl^HM zT=V|e37(hyu`-eDMvBW;@$uM+EcHIcN%)P2MYvKyz6BF{6-rV2OsU{ooFe4HBuek3 zP9>GCXn~hI4P{X2bR>y8Lkz56S-&O+p0R{4AI}ulSrJygb;AO7wlK;CIS25tew{0x z=NV5~Fn-T~?-zD&Z5bV%JBUvmJFsamqa`wDnkJ3zd=R2RC>a{WkHWC3T_COnIkHvl zLXw$PnV?!P0v%fIVk9^LLbY^OyeL#CG+em7x>Sgl8DeZ(+@EV(usJ|Sn`?2GLz2k4 zTp__qt;=|V&AO~=Y@)?aP&5Slhl_1qhxMNuHd2@e&97a*afq82fT9D9yg` zS8QMYBc9&AT!#!EA+ZS4j~{hc*%#jg7<-gCn~cH2+#pg|m>UURyoVO%CLm*A-Har0 zx8Rz$Ft>VMvM}XB)w40Tfkm(}x2u{vaHW!bj1RkzDaJO)6bn}7PN5ejRcdAKB9(o^ znsIY?qZEqWgCueHiiPzrWeC$H*qQr;b$^7FZ{uKR9uP*kC=UW2?94;r`LOY9S`oT- zGvoC;#d!R9=w8VWLHHs>*tjsL$%@Hlv&HJ?C| zxF=O(XT^&}MMHxI`}33#pEktU{)|RD{7Eif<2p^7Zm{_}?iolC*`8-5RH^NGj$pGr z>@(vr5q4)s+MVaYthU{G0TAp$C0TNI$4eXR&Px(!V(iY#pftO~U$NbJMLfOTc@-I) zmcb%SNuK=>+Z|IMV~_G;>{Y$$^Sa1jbKW3$#~#|8H-U`7^cE6qH-&57=Dg#1$>!7+ zsGhxf7vyPh_&wF}K8v6ogTtvtR6Nrt7@H4-T9{3#vH6fxb{FM`*GDLUHXkFw@!ul1 z4rSe%7vZI!PlfWCq3Hc11c#U5TR(YOLfGqbVV2AC1>lf{fkiQLU!nk_{1-{$z7n;G z!kQ%t=4Y^ZUkmG-2rJ*m!RGx>80AuY3wW@3--+k<##3A9aWFNs>@jA9vzHz_?6l!V z_XCiiIi)}^_)#Bh+K=K;s57%^Kap&F{ThA-4qD?EBsc*>96Kw%S_)civwjoeB=cyj zL^dmafHbL~rN-lL1e@_#0lhMI%&_K;mR`MkYCdeYrrxbhv>lUyS8dzzcR+C3w?v6; zNBkIR3Q1D18*WOJ*Zj_gbHnczH5G8oa`0DdIi?m@Z#kwx2IqjY2y+XKm$MvRcYl~u zZ#NzA(BG6D{aqEUo?c8~M`j?nsfTuCMj)euXF`IfOStCk$jqKsO*>-Zxmkcy&zQ^# zcxp^$Lk6GTu*e$|;{vtV7MWVXn9MHJ!Z1#a$sD9IW8&qR6D3e-E+qK$M&#DRtlNx< z|A1s3q0AehdIfc`+gPijYmOIGo&@(4K{p7YC}s$xDcD zpOh~&T2gHO+Hf)lAj8R2o2}T0G=!6v!f!kP!qwUhBKK8Bz3KW9wHQvOqU5v;)2eXt zvM57`EQbWocW@0I!m6x8>V%V55ZQ_mS$;N$6=Nk~ln=R;2@gxgDq^~-G1X}&gJm`C zrrSQmL3DAaW^OTnx90i6=+Lpw;fR-TQe2~34diG<3W(i^{!Aa!&)d~ma~54(L+TV- zAX~rIB)%Q)G7;+b2Q|8JEhLE>pt?FMz75!(W+?nNMQaOd9mCS>vu5Ii3fmN|D`-L9 z)KIMlc-W{7HTO3@0NA;G6WxQ4;Z8f-A6|HBsVVym2j^nTv=Zjn`sH4pRDpMj~ z_ZbQ8VbFU7ki#}A75q-zF1SL|3fXe-j8wkZa@2z@H;Sn}d#xknXkei++mIw~46dOu zS*bN<*_J}PipE7WzBQwbRoVds`wpRwt%b^WH-Axy@B&Np`T9z=eR4HyaTjv|YKn}_(n^(Z{6+EexKW%bj#-SR?R;8O|znR7{$mbs_Qh83UW0{%<>$~nalwhPEk0fy? z;2I_ptJg%Ty^Y3+Mt73vPByySHX5g(%(rLu8qujjKh4m!xcMH9x6wFV;L@A6GYGbu zHvG!J{$WaG8)(qfm5*EAww(zc8k=Fqh-~YOvjDG zIZ9<@uE3Ah_0*9|1|u^bWoBfq#IM9%rMv~}ZSDtlshPQ&Y`Q8`A~rMEh%%Deo0+t# zYlT2F^B??5+;z&^p8Zu-x$6N#9h50HG&hi>#L)2RUXZnhskxD?dSq&J9#C%22OCK4 zCa|D|)>)D_lOIjcE%<@ss&Sh%EhBcro!4;JHcD=Y`WL@k+t{63RnkAVL2R%7YxnCtO?tTI6R0Ge08Lwv-nF#W{h`gXhoc811 zczjV(6PwRVOxDeZORMjIt7TiI2_N;bWj8L{hppvh7+`C$mwY&DjnFq_UO@`JS0?%E zyEnRZyLTJ^DcKj?Z7h1DF`Nhc8npC%M*ea#SFejbbD!}I9N-IPj6!SWJXpuQvHW}w zA%=I~>;ut%i3V;ezQyD|!A(Vejk9R~Qg1^LRrU@7tiz3c^oHVl#*W-j{*5!P%*=Uy5onxUY~7aC~-L+_L%_5&-)R z0$=?{%xSR1rooyiD&LC8cUr__i5I}Kw_d*&p=4M;P+3oVb!+iQL<7rD2=L56Y-lXZ zT4OQyDSr`>vQbit(rI=1xc4c0F}1Y&l*>U>?o%$0A6QpAu#59!Z!z<0->2khrubK0 zEH&6Kys)5oO-`42#_a<<_8w(lf!oi8+g}c(=+yv<7T%+zle9FDVeB5|AjF{x1|#s* z5bW)_n^~a>!1JBlqZ}$~!yL6JIoNxYD~d#N`xwr2d*^2*F}kug+R2nxlo9hs4{nUk zb{!$A1-XUy16L7&=xoQ|K`zPxYHb+eXmKzbMLDfSG%ycEsg-B#TCwj-B5%# z(!%l_k~D%(7^L&~fMfv+Zt#dgoQ#=;PCl;O-I5!qCW2s7$VQB~XXu2-n^Vzn8vhWlmggJ>|D z3zEd4(-utDLnprU2LrLkwLwifMeKgeWhlo_lVPR!_-RX|_-cxP(B~4v5eBB6>9LjI zC~XWCox!>_H1#-&zua-uHe%C^qqfC?ueM_p#vNn`#~~IR8Y#hozGBlnwig|Yq^2@? zXbB^!9UzF-G7W*RcEmn9lG@4Gk&#ppB>Iu845cr=m^0;YFBFM&&;zO&BP&`n1uijEJRmVAam7&0rNSR*&?#L7SR`s+mz47 z)CUx46p9_w?IE(sQ1(PRpzw2e<=T{*gDAk+3xTip7JUtexeFX;c1KF2_Hm@5Rcp_K z`-(&|jw+w)7pI4Mq~HmQGJ`U9gc;cS z4H%V2LgMvRD-wh2t2P|qi(`z6UtiJJ&&_dHC(C^Rd@u2Dlft>WmCBd+|E@+oqiFlBzx zt08wNKOe`k7brgkp~ukW-cXMhzg}W;;jvFUT(@_1An0|FE?+- z4`1DaJz9<@_|YnFm1Es1ZZ}?w+Hfh6!SE7Ft;k&i4tgR9}Rph%%O=g@D+`yOe)!!YhQ1?JBXkt}!QT#n|ZEDW| z_cFKey7WH5+({F@pYk1D_2~gnxjNW*+-#DWS4ULsh z!H2PH)aOJ4BhlxXJg|h3=nD`;J9!a-uU^7FIud=^*pZQF0S-bhaFhGCXxl6A{dOmPAxs@U$>$+5CJ#dM1Z#`L|a!NbC$Ml z-#>UuMBdgS!e6+woStsX^D;Gx#tx0&5#eMs?;_oth^;O49^wG#eFVPxKn!R=%wGUG z*QpU)^autI32t~$Lqy;OaR+#OQ;PQWCR+V@P>q_!zA zhIYEZY}=99et@Ck%=RNveD#yyh%lQ$YMJe4fzlmj`vsbs+4#$4wlX|q8S5El>xBb+ zpo~$`3+;-~ZL~Jx4QatX%v@g7KyNGHM|Qgs=&d&d(RlhGz&FRRkJ4K|V@K%Cx$1Yo zbjET0p&oGD0Lfz@qu?1|>x_6r$3u@S(G3#ug8mZ_-C%0zNxz{rH3YHnYA6C<4HFZ( zQi&nLb}Nd=a4iyNyC@{fb}NZ+GNhG}9%s7|hy$Qi5cq0UF`xl4|2W&NCQ_?AQqkJB zY`2C;Bm)_Vbjx;Yip^2lW)(k2UK-m;p_WUZT?@)+c|?bLGX28x+}dKf087YodnxQR@jTmr*Qf*=~trU-ns8TL_z+uYbmU^s&5jN!I`dcbg#C66r` z6=68z5giXbvJ5vx#0z>(z;Ihp%VjuPQ(GezUTuQ_Yu1PfU8%$nVYux?WP2?VXSgUN z%WzXgI2qCoNRKnzG{gbWjtH>pH_p&bvbwrMCwHU+pP5wR;8*9g8#E z91+}03%U%K?cp(84Hmd;Y*>(OtLr&2jDmMu z*T?4iBs++Do zo?Dn%+LErr`;n&i^2;IUzz0JgO^^UlS*D9v!aGEa7r+S#?@+3BbUSk&>L|m* z5cukF$*kQoi0EFN^NtX~BekH*d5!SC2X9DL$V%ktrY0=x%c*b~brdi-ymz!fO60v` zn5=n^UqOpo>jL*pA@>~%bH%yuIHdUMH-aX@eFm@PzT*W@cew8aXlm}`FPHmH6q|u#fWJX~vH5 zUuTdyj-ocz*+_$*=OFOa zAHpopBefmnMqrQj_^<{dD zrNXPkb^)4@3a_S`ep9;}d0zu9U}NAE$A{~Pd|~U$z)pc z>Uw1C(BBP$Ba!}YWU{6|K9LX;UEsWf$ay!xMsd#jGg9#4lR$`Yo&jk&?`A>K9nQN2 znws8k+ZhEmaGwN-$7ouF8d8BJx;sPzM0Y2X4=RD^?t&m%%U=;- zB_8afM0dBbBScq#qce892bux9-7DtrV-)=16A9}FJq`V^ly<*J7Icw-(jK6eej=e; z(SwM98xJAy)x)B#E08%ycY@`x6(A2J%x6@{WuEQviTlF3jWL%M;2#}VTvsK*fj zDE~l!r(2?}p)lt-gFPuyPdQT2inR>(v`8eQcn0Z~!JZYH&uN=g<51YM+nQ?l0HVHJ zcNk0<&eb;HaRa_U+0dE|AK9wsp@pI#EYyl=_LjI_5R(NULgIRnY8_q7@+Bytyk17& zt5+n8cF*9TD{;PhRRsU31zo;sfTukNNmxc@FQNv#ec{D?vI6%ydy*9d&|jabnY zOe7J0`;Ulxt3~4Dv?wY|ao>q>GOF*94pe-DH+bUu1L6SaM+A7%B?dGg<{xLdpGE2y zM=DzFmgUOUW`QOH>4kL5a?9bjua*~$cKHfL;#kRiO&3?GLGN7wdT4zFhFUV+!}45j zFx*le_bZvD@ZgEDb zLCD)7xxoS@k>rLjS(DsEAhcGxz;FAL--g0WaefjkzqissHj&5eX8I)0en!7a7mf0Ng0 zv-lJ!pEXQD-VU#AB~TK1ZEGfnyk@O*f!F$z*S3L~;=HykQt+CTpos9A!D)GIdjZlN zUYiO{&1?MS^4bn!)9~6f9N^_CM#Xr|I*leqv>_8%UfW5Oz-!Z)+`j}~+ZlprHoGA3 z)eP*Tytb>cQ^0E$N@u(_6UqUv&5|5;W0c`FYXaWT<nuUT7a z55&QrJrUsJaAH7LCi9Q*+Fl~Ew-$->S`?7wwUh`a1KJ1aabDXOaR5|>08g>RfCj|; zPmqV;Tf?EsNT1~L!nme&pxo7LK8)p(pxI^{JfNj^--G^cB@Jc61JO;iz~ zp^8jru$-0_vjspxPOG6>M>n#qg(AwW4uP*Sl1;m3u+XJApVf=t0xjtBSqnVw$tzNs zS6!W1gpa3G=W68>m31l$91gcN2&_bI^O&r;ZCjr3`C*lq#V+vN`sBHVFj<`E8j<3w zCP5V8IfL2qT(f}c4$tMFsd;Wx?u<|CYi~z<&ozZig@m-tuv6v1*2w zESAtq%Y}!EVnIg>xX`DTetoi-U3D1J;q&1Le078v)0IzL5nen}M2^xTabApqv%Gk; z2q%L(2I+BLJQi^PbQ}Ua;SvKH5c7}o;_)JNf+H1e3zip86p3UYCn4SP;%~)fyS7=y zS*VG;n8pNQ`Ph;4^73pNk6LX{KN$v4Yea}zGkwU?<0)dj08dDdr&6t>`?>!P`Y6TI z5cukJ$*tWpkmz8XC4Vo1XJ|o}B|Z4x^DLRqwP8kf^8$4y5IFpJmHA4@kk=bAlzpj0UY`#&ZQucbM@!XliEUFP9n57n_C|FTepl z7|1Aa1z+(Du55)Ft?Oua#2m7P<;06b6`Xi6lea8^6EA@v8q%c*e03T2QBJ(v*bz=l z2GkiFUI7yU8(t~-T*WAOIHaIb;Ta1d^vv?$)uK|+qXHhhhFTp(EUIgf0uQf4;HwTX zqbr$MA`JK^5xHKA#2GLO%QD~%BAg8CMx@6X@Fv6o(4P_Dd6yW_fS7-r0dE$mTO6rq z&07Y%RV0#u+=g_^fVYdyJG9NthiCx(a(5ZE zw7N03Sly589m0D+&?FMxgG|U_A$p*?Cz;$<0@XbQ zLA0Nz5%}sE?4wlotg$0hmw=`-o_h}Z0na@znY_R#_{ML?MSY_0p--0NUKII)z7vq# zOVrXIF>}nRmk|xeUO|8l_lXT%u|yGJxPOYsYg#1Ea8XQ_;a(TvWK3@$JNJT5$GTgf&kqqQLq+5o2Uu=G$ZB}uzLgE;YZ--$X316K> zf5p5y>AUJf=%Vcr9O}t*4a;%=7Q+QlLXP{0Y8~Cm_+zM|>^?!@t4}4PcF&-pTXB~A zOawpIf-cJ~gx5Vevcq*RIIb?!m|j|)tFKpI0D{AGUkai`ru&M?n(4L#(3r6Ebn+kFR3&363dvfcM$)3DtSIPlevi~=L93ZL!i zBIY|<9YKfeU>WZx(FNoE%;ZB#V7y--h_+N#&a8W3A7#Ad5JNk{c%2~XjP;g>jezx5 zzyUsA$SC;8?>rUy#&QUKv&`2=bP9S@z2dZOiZ}ooh5*mY#DE6G{NwC5T%=ZVq@tB?*>7c$NCq+j z>6ZOg5u2-Oo6DZmD|Lj`PtlRx`+uuJA8nBUQD3IJSO#2Oj2FNO8E_4%l`x|?A@h+? zM;We(z*nOrvv$uQqI+=`TuTJk)`Bhz_Vk;u^$jXhEf=P$9JxCLI9k9Y65u*a)&$6V z5TTtea9<6%Zww3-=e~83;;Z$Tk@-%IdB@)%wcNKpCA{u%-v-ds+{a%o_l*^shWp0h zz*ieG3cTRHd>XoqrbfIWHCWo)NYp@k8#B441lk)9K{TEU1iq@oK1zF=7&}6H#ldvO zcoU!=Fy2JTV-lm_*?=;)BHWivZ8h#DE6G{Np^gy+}=Uq@uNL zd2R=hNCq+u>6Yhq#BaQzrfqiq_!P^mqNAF-dG59BbZDcZ2oDuyI)-JroyBwkn2_am zq1rN@+$Lr{1Ij4BT@mFA%|VK<_7WVr^%;&cNG-?hEl|3{aVcnOj^i(v6<72~+jZ8S9E4H?05+jWHEOD)ZDp*2;9Sa_8|;H!Eup(~Xb zA{@6sM6y~W&T&ylmg5>kI2n?M^f<>YL>vG$BEYjVF`xl4|2W4ri&V~$iq^K}xE7H} z267P6EypRbnb$U}wl7=em24WN$F7>kw@%Wn_`JzMZNhxGtZi;>$Te4}Rv1IQ5iRP? z^b<>YZHO&03oxX-MO5qfb&xEEEtKvO1io4-Ik$TT9vzP};K3qzh!%7i&@1cNYu%QN z!sHd))WiIh#--{|AaGdF7eI+Dco>s43r+^ksI4wAVU|pIIE)o%!XuF4t0S>TH+2ff zGiWUn9z}_6jrNX)re;F^a+&ZLv1yp_SRDB3I7WdlRw)awbfd1L4H9$69hMD$BdTD- zQENiSSaYE&Co{v5YT+D$4G11irdLGHUk>8oCwd zy(>lVDlO=A?W$~9&+=Y#8$M9cP+MKgcV(|e{toM1BXAN~?^-5n*4rE?T}xfyyk>IV zbud+&^E!}%4_h*;DCZfhmh-NsM7KEa254%|<1d% zz)0k_mzk`&tpez1p$nY0IyvnXm?+L^uObB>kYpB7PBR!Sr@cmrZgJY{(A1p9UoNM; zAvO)Cy@>;SVUkg%*V`u+bQmp)NW)%lx$G@b0GGYZB#!MmXzp5&1%kxI}{zeG{=E7Ry;*ifl5Luc#H}tgjITINu<^(=XB2 zaF~0Xv%VFn?;NRU&05a-UL=xn{D5@JSwD)+pR~=Y$z__evTaT2=JEXGCg&K-@)2D1 zxF%Cx*O14mr%S^%-}QSIv!?B+eufd04N;p7}EfZ)(tUqO^eYyFt4 zX>CgYjT!3#!>vPx>kn(i8Eybld^J$O=vHa&*%`Q&;RXqw?%cB*3{A~&{N*y-5V2_( zZYU1$RY^vH6IO-KmRe%IqxlhZ*flNLtth%6yWvb;rv$QF34&-#Dv>1VRB;!J2~j7Xii~0#MdPfM;Q%t)VdI zI1{cfQX4o@(Q3C$I94Q*QH(>nWx@@`=0@6P)p`IntxYN1j4RirhG{3dx0dIc<@?0? z3r}ieXrOKg33X$-hNZpnVy*x{NP87j>*zvul~6!AZGym86U02$`=S+mz!5>5<0gvW zBrWK2+e8qm^)r0jLvv#CnyHIHC?Rl%qTNnGhWcm&%khS_`^tRoBC8RnyQ~-;imnQ#HujVXRt#lE_$f zOxBDw5eTi7F0fWLSt|oG#aXK!DOiR~P()bE;Iyoj6(HSVtp;dn*5WUhwLGzDSZg5; z@Fhq_p`Qx!Y7v)u3h-DK^F=lp&tXW9vDo2=0-Pfd;7OF|YdFk3&SFQ2)X|Pqw3aQ4 z9U~ISIF3cSWwGPL=5Mr3VKLq*v&B{9E?LNG>Ue0OFbE5kW4eK5u@l5(0f>;rPNbS< zvC^|V2}&rh-y-l;yJXSs860#a&SEEv;3-Qv9ax-y_9WX9$i6lNqFz$<7og-C?q`psAURzg#9eTWlI8 zI|m2&jw7Sc=Z8B?7P^fFM!aF~w_Nr|Q3IEq%j6j)aM^hfMB_Oh0oGE(KFVbm8au*e z#ldvOW*0#{V6%%Qk4qQ@&jv&)5+2d<&?C!dmx_2nmkIdnGHU4=AYu8a%MlB&u0Y_c zE5(GaRAPuQ+EpTQwHApnS`?9Gv};5*8PT;!k1^VHhyt7r1bEIQ`Wg;%k2Bi!B6Wi! z6|HN_Xg7*PGLD;&ZW-;*V)HNBrp$38y-0zTvp-^98%7tMGuzG3Ml}&0s>yT<%WSuZ z=>jkzv)xKHJ;$xFa_l;7M`u2r1QA3Bc#K7O|f!U|A2tdPO8W{T2CM`Sk?7O9Qf)f zM!~^8wtULbkm-BqjP2b|i)cYZ4*2F7YDHFceHJlr<~anudS29ZT{3UYHB)+(m0_vC z7ewSmEz-%_s|Db;fj(R7OQM<#?q#F{+$wNWCX?4?#$#4@ zeMdyzbwr{SXjgZAPb8ATypMFdy6XpG^FwVjx=JgH``<-Po$L_`7is*6VSIJhj}Zxv zK0$ytudqkM6Y^nZ@CY5JV0G8eMEG+@So`L#?)n8&OIzLbONh$qu3w4WuLHaA=^HWg zzgyjv4T-C}(q)$6e-PT$UBAU|UwwzYE;GRWUJj%-)ejUsuov2P_PlvqxAUTTv_vOq z=|_h8%4RNJGFG*jdFm&`p)!6(;HzJ-x0S)HbY;}`GQYC-N_%rwnJZg|YQ3BSlx9n)KFtImpu)QJ9{sSZwQV3>WjM$WhQcB zPYqO=`plA+#)jI4))UOPDKDCreJJ~I_V1e6g2i2Dvn36qD%W;h5kGu2ocQplPS6AI zN^-2*}^vdHfh0y zYrC!?!XveC)mEsZs=IwVt>y zA3rgSVy@;vS8_SL;Zo?Vc$C7OPN%teQARMAp?JLhz=9 zdTKUZtb{7|-+lH@YCYtSVk$FCw7$Se9L{dQWIdeS9Q8;GNmtOZ+}t%`596SAEKC(2 z)Q&?6UegjJ`pjp@%3!qv+l>Uw8bE%6Hxm1*RHU!$5E~y@lj5nNjeLGf`Nb@P=-O z-qfL@O?+Gv@j*c*a3aZRJZ8x$<=R{&=6F+%~}q zH4_$5N`#E+GM&R-PtTI<3IK*@^4+M`@hifa4TC7>-4Xa|56QmWGZv3rW( z94+YbUjs_$zi@`An6uNYsr#wD0Kg%@y#-Gq0j8L&32+O*6cgQG!2QU8`@mLl2HY1Z zc!^7(L>SP3wG6nQpy>_+?hj4Pfc)ih#9Xmy81Mib;Jq$Jfg?u1W83`f(-A2Fv_e7- zNyA>*A1Iojz-lJ%R{{mjhag%}8iB8Bu#Zw;t+68%n24t{4y=QPfCDpzK`u!VMPga7 zSp<`jnB?E? z8IUZ5I1e5!f=6gUmk0k_`6)#izUHxMK&4B zc}NEqcZSRPhyt7o5a1JsqOajF_c#w;BvKbUQqdZ=Ja~ynB;&Xg>6QmC6PuT7n^ikH zr_^B3$MT;N4D{@oRxY-1nQfWR#_JQ!6)=bvNW`c!(?cu^UMaa1;0sysDynt-dT6eO zJ(Th_2z+&|t!keL~nUKF+CcHYa9I2YAnm zQQ!*B3r;9VG)00A>BExY?V<}Zyo1T(N+82KA&9ng7XmzP!#+xee=~N33_C&886Vya z8v!5QBN^SxDELV3F!c(b=zr*wrNsM0wxD|jlz2b2G!5By_5h;b)Po4{_)PS5#WME@ zD?ThDf7c@6gyI4)mJ=Tl$z(8(A{}5j*3~nUA43G7JdOaLK@@Ebg*nF=@d=T7(vgZ* zvt`7mL?Ri*(@3|B_>9>-<8onjC=S8_7yO7{s zpjtRlY* zT`oo?@Rcb8v@C)S`?lq)_eB?c^#PN2FM+QU21@YUC%uPc_hNBHU+ z5&4f6326oe90gRXXa2J;=#BYgEeA^_zF1o)7lXlp3UInGxE2jw-kb?GcE6Fi;q)tayn z@YN{EW-Ug+KaNAJKlD8G$FkMhB3aN+0=6ormLAZEAvGEiaAzF^z8WLix+z#78e!^XT6o-nHT2-Y$>UUoHB*Uno~FhVa{}O zHNET^c_T?9TS2`zjckn+Jnxd+bybJhEQM?>qkQz;@8m^ub>)eQYoG41G++ zfvNhqQZ<;8AJ$7XB$P(CNCkUbrrz7yy&e%uUV;5sb*n^K@ z12}31l7u#j&BEIiiNP$qnK;1vQH+99ky&{3H*~}H)ZIk1pqU1wF`HVES$Ml625#(u zz*l>Ux~@OwtyyD=ek?pkME24moy?U(ABuvrv+(v7)nsrfqyt#-3Xv63H-Xk#6VT)rrlFwplp;uD+Qow9h(qm&Cz9+p+acq-{tY!SFPCVG6UQ;Igr{^izr$+|Bg=5(qe|O`FBeYhss!r z0B;syZ!3dY>B{J2{@o#>cBrEkB|Upa^+h7N$sNXYdrCcAj2@wlc6RcH%6?B^Y4y_8tR_rocVVr z(Acj&|L#O)A}8?9=idpZMd#n0L{-ke`z?Opl_uiD{5wI9HhHof>o$3c{C>(~ZqfO7 zry?dg|Bgk+hWa~(rOv-Q4Z^6M(-Gi{dDz<)Ol;DE3+LaRA;M>BVR?V7llgbe<#VQE z?pAOu z@YQ*eMZ0G_WnsyQMrPHWFCrIc5ut5e5@cdKHoQ<$6UT-ZFBWzJN{3=m9+pJ+K3un?$OhZ3ctFKU1qi8v*XW z;Luk$i;}J@W+qL|PF=f2L~hk0cGAYA0swYYdYcF)1GpXO0KmC;xHmsZ-GO5Oxf6k} z?h<7Ug!u{(XR`TUMe1*kRJ0!L$?k5ENCeSV1Dn#7?h%9cItF!Ht?H?VazTfx$m4U5 z>Bee&TdoEx(BB6LPWQcE5G8is2bdh*wf{%mYW29c;8A~Db%y#(~ zL?f}Ws~4%&QD{)TgakPFG6G+{B35)I6G?;vUKNplY7uv?K>;XB1Fwl}GN{*)4p8p2 zg*OldIBz1rgB8)&aF~0X3EmQ^w;icywOb~5MU~dazOQXot%VBMOZq6k z|A;1+rU1m{3ZAN_nQIr6&pju3yuy>I@6gveuhvVFTQ>~+vd_ICCO6Fq( zzWPM$wtFUXf|kN@rk#E&f}d$YXMj*u3!i#)s8peEPkxT99X9(ykR-C%mrT}dHUR*| zM3-1>E?Mj=SSik8Un2!CbqR$i`iaSNOJJ{`A&55f3j$x2ts7^rUWlO`VXq=cI%BQn zpc}B(@;LC-3XFnJ?yYWm8+u~ds<%iMbc2apA%MY%N%pI;O7c7ZfHJZtqt0n=WG14Wr zY9(8(13SgpY7A0*wXVR3u$2L7*=jvO(jB&1ADWu2_{(Lh4aBBltFbun)i_3>XRjDx zE8{ns72$@x-160iq6NO%h{>%b@YTi;M9UeEz*iO6M@L(g#*Xk+Q7oM?)+W#n7;A!L zF_BU5izATG8~Pl2V>xS*$QE>xfU`EGmLAO5R<#+T;Lhd>&j&A5!RY4B3o*a z_#y&PJeIhoh;TBVt&k2p{1y_3YkIm71Ieus2SD2(z?bX9fCj|;62C@UvEq6^5n>%Woa^rsoy#S~z25R3F$~CKMdVQ7yW`9L%!OX zYWl%Kg8f|}fs&Ykz*oD9y>`!JN|14mnkj;_w4lpTJvE^q92Df+FuQnB179^&y8(d1 zQ?mt6B2VqkWX)4spcy!Zy2MpO$W?p5R&lP{6Dhu$BTyn-Wx!gl+Dp)MhpYC6rsgXC za=9ucHVs$pg9Bgf%P90|PADi^h-g-X9QJU_S5=}3zS@t;LrUPQ{UL}}G#7!d4!}Oj zSM!V=;j2VEopIKIun=%owPZ7&QSgs9lAIcaSM)#h%JNoPukVG2unXGAy-xi{UF7ekQ^4DQ7Qk=gIM~bhG5DXFiGAJ#79Vsxn!(T^1Q}Y*p zx%_ps*fjig3=Z&Mi&5y`L*Q!2UvwHxiCDufZi(wSQ2}xNhRKUcAg<#fhz4^40$-ho zeU!LPGIoTx3W0RSSigm8z*y~K|71qNqZLf$!4J9``eCW+6cH@w5&>16N-cfcSenuA za11X_L*T2^MOjxM^Nn!S??vPcEh1eCW1_h-DB4($jiSN40*scr&J-KT7|%kw>9xzq zLY)m!z&{58zGEkLHGHCtGuj_T>Rd-E+7>LMohK5>_|8YVWwZ;#=7rj(+=`gRzGa4C zIh9uzAq_>r%u!vYLs$m8SQHDg3K{GYs_D-e#SLGIB=~+A0$*J&hT1)o8(}$&chjd8prEy3&BkE7k()__+E`MAv_6&dAfCD@tVw4&Ggx)z*qSQ^0K&28dDm6AQ z>d&GMF8K?S$CSV&H$xCrc?$wx-HLsbOKvlEgiH7>!w{6Z9ce-)#U@7Gfy7{9)SWoM zqajAYx5&gOx*hsq`{`drw4iYYT=F++MJ7hwjTrcG4+4B@PSkZZGH=Z$Q}isD`$Xh^ zEz-&KB@}WLoShi;fT$*edl2aW*U7}Fhads44|>59!tCc zmgV2aL?{{7<5bq4kaQ~XABY8%ClL7RNim_JFlP@0w^&UkFXGYOUT6&*hY-ZF4h(l$3hyWj&!`@Z~v(lB($;_ya zMD1foElPX#wE2lhBsaNFnQqUUpNY}WwbAa)j8b1f8)Zm*Ag@NAyu!&PUyA7hG~t=` zD-noJkNO&MD5!4`U=1P>h)<6qa5FvXTM_%th;?y#)b~&Wc$#yjNBux!zxwp3ADM}q z&O4tTCCnC`9`zGdIX&uU{J>}Jh!4}F1U(vN*?K(I4YQa0e#&ER(dkjkAtgFJibcoP zx;#?QT1VrYR{SH9{9c_IU8ofxjN0jqz*l{+x6PQ?q!|}ZkLoMJ{j{(w2^Y*HDo+P* zQP-E;D^IGL_%$W^HRPz;(_)q#N76PI?*nP31j3|sL)0p3X~9z=P) z)?Jqz8w@>^N5T}kjH4pCQTa(LS=w3Bqz8)oXx&>GF*>Im2>K3rV|DZW}&py;!k;UWXp4p~=;?I<|~jQC^zIY3aseKR$ul7ZNSBAubu2v$5aNvF-vcDFo>J3OT!=nI> zWx%;2nGELuqytW1NXe>EbJjG`9lmjCL+ zW=7kr;vioyDPX#z{T^dDPozBEg0KI|cNkSY)KC`0g{m>V!BX7woZ*Dg#i$mG=ph)H7w0CgdLWCxKfW^R_fG`k#cVO%5zu0T!~N44ey1GoW zx)re}pxz%&4Zs+>F_X_VH!fATF*dcrg2r5px?Lm^&Nk`}q|Q@!Vn18f$co&ll8&M7 zLgI1iuh^$keN480!_f(;K?X~G12R^3BW|9$2YZhy=~Ta_^pd(vOKVo$i{o8?!5>@K z7HC!X*ZKx03b z3s|I9Xl!WC%v>(D0(*9<@4i##%$_lOXY~Nondx%2rXHj{%MB0V0Pn6y7Gx#l_jfsn zx7m}kC$T>~f<&}euJ5xqOS>HHEu)w-zD%7f&u4S0wL(1#DKy{55a4|jv8O4I*}-!R z1;`|AHSs3g*np3+<9(kRtUeqsmL@{S9qn^QG>^t$ebFY1UmT7v)Vz*Hw=BJ*60^EKcfv;Y` z-nMc&Aa17yM?6$7N&?%!iSY9!QG7X6%-*QmhG*NtE0R`fTj;IZf@hmRZ`%Z3r5W1< z{wcY>7UYUjd);KimgO#xLV#=qZ!lbDD|i!9D2{(2@YP$`+u~r3ZY%IiJ-;oI?`X-Y zO4RcdEFCdrzFYe9%XgF2BnFHx^2Zu~m+Bs?*(+YTp7r8A$iRzkv(%EuiQ&cK;tJ=OsttOzGW!{Dl!We zRO<6mWoAihrE#mGW$8K_mkV!Anz;GKn9^aqtIpMUnc7xlTwY#Xtv#-;9-GfJ)>oi0 zHm931;|9!-g4ju^oSITTJ7-ITiCFrsF|C@+dRYV1mnc!Rl&=urduiC)mcrU`I{|M+ zrH07h3wOmex2ta;G&?nb))ZC4THs@M1)p;y~*{Z%p%FJG=zC_Vb zmsj867|R}EKQ`M3TVHJbu=U3_0NX%pgFKFYvV*Y=!8R1zFl;MkFU$_dwi33Lv5mmC z3bs|Tt%hxNY-?oS%#OsiCbm)7*21n8Our*`LVQay55H^J^kF6D38@5H*7Gqn2Z7H^cu^oc#P;5T7!>}EW?Fei~ zVmk`k(b$f`c5L?8Hg@$NSn;Q(dBY_&uvKBH9xR>RghAeqNSK`(9JDShd6ZW_A<|br zW1s4W2)41j`b8qk)<@*9{L-eHTw}G>%Bx<8o~M>$;);>hD)yF_)D@Vza!j>a1bT}= z9}4uxVoTEa^Qy1J_QRg1veY2kUD%OTe?-qt4G(;=BdNR^AZi1#Cwh_?{2V0W{Tk{_ z{~3&9^q;{l*t{Adsza$d*y7L#hat{aD>7vmXN2L)3$4}Yi3>8Vc{N$Q)=T4MO4Y%c4O`3$43-f9n~kr5YCxO?Y~jS8GY^V2s@z zh-=eeZ=|cGs+_+EH{!W#8%DKI#CUNu#VtL+jd_TB?He!WdLty7bD zxMF5W15P#QTy1$%iks4O?^K`KTyuTH0=1c#lsZS_<~tUxIi)t2*b%jjx%9&7OcTZj z)#h`?DDf?jczkLUTx|;2AZ$j}dK5kxLMNn_&onPmTZ%F5cuPLhRtGPe8r2ku9)>Sy z=FpBC&{0$~UeQroN&Ik@9xmeLiqDkF)?#y@K66&Huc&QAcnG_L(~!57*rBl+Q`;dr z)w`{=e*9#$J%0}{rr3$5YD*2xZY8T7DAr$8#^+I7(|A0z8e@`l4JyDC;*O%*A4G%8 zj{1frYA1@Z$E9nk7dO=5@^Ct0X7)=Bi8fNTGX;C6_MQ$%yYP2kJ205Rqwz`870_Jr zmF_sCLZOZ9N}Zvgr&bJv*n=@_YE?54dwi<@f(#fm&Dx!Xh}o$j(h|dR-%Vl%<(n|n zs6MC-!;ZX~jW}Ebv%v*yvpeEaYa6y%ym&DNS{$kg+u()pN(kpG)gF|>IitBXy`(zZ zuprxr|5mjpqgQCeL=82EKi7=6Ct%TRAyBxi?t zd-O)|X7<(WB(DQ+31(OJs%dkC_wH&4R`JF#{a9}_=UlDkeTNsHvm^Bv?AG+E2jOUx zHxDoVXV>yP%ze+U?R`!4a_@P3;2}F&Kd@iN8;W^9*)e*8=epiN+%m}S=Ka&a?wmHA)B9&hw?H z(o$6VUc-0}_)g3Il07TcN1v8e4U&0{SSw<<#ew_fb@(kA@WxiEcS9bd{Nwd472Y=K zWv-cViT;LX^2$KPSM_2<@6pN_R+lJ+~i8o^<1oisH z_ylj0J~*1_9n3;m$$N$sw5eCYO5e=8o_bq&Yhl)hcNp4;h1r0N@!>jwqKo8UwxB4| zg_5j`q7lEv!ZN{5_A1!`w)8GwMNaWf;?Y)K{V)Vudvn<6w(&fCog=%gw<252c3v-t z$oSoRhJ*O+y@9Ofsrt$0g}80IgZC^Yr+I%sAj5S}s&IAh&2q%=m6P44Tx z$6~DV2C$m;)9XF$?~Py)&-LW(`~$r6*#hQyC$sPl^j5~*{A{(ikWFU3_bMaPdO7ME zZyZalR(}qq&a2{_pp5qnAj!3lC#AB$yMysr?^p^qcqig*`K;$%g?Hz&3%z|A+2{?V zn@!%o`XFfbZenE4Ta`V(#alr92YI&m50xHxt-GfjkSe;60NjF_-G|{G;mt@^^Tk%^gEVB|1@qQqn zL%mDcN_}r0CNO0W(`y|b?!8JzI>LL6UFt}$j3P&QAF^lh3e}SibhP&tOXL`DCjDI1 zn}DOX)Nl+(Fg|U?9eJD;^aWCzxUmR(Jdn7Q%(FPeOuC8P!);6Tw*&sXS_08|YAN=q UJ{&jTd~h%he02!+Z8a7D2Q;{v?EnA( diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv deleted file mode 100644 index 1293b301521d5e825e7a10277297e0d6ddd71467..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1366 zcmV-c1*!TYAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkmY+-V3 zWMyM-WMy&+BOq2~a&u{KZaN?eBOp|0Wgv28ZDDC{WMy(7Z)PBLXlZjGW@&6?AZc?T zV{dJ6a%FRKWn>_Ab7^j8AbMy|yY3!eB3eBz3mJOiOK zFcEB_aP1ZK`I5H^{4p6=)JSR<-26VdIhT`zwJ6+P7xLlfzjOi4aPcaO7f%u4Hk7;o zy5$zWw>PyYp}4h^&jXUKDG<$?zfl4_OE(6uk*SJCEpQv1 zjT82)#Vfc@q)^(zSV_HQomG+8$Q+n%RN~GVxvCtD(`xyA+o>cA2WHI$cu2bvuA{8- z{jT>$y+Qi`SDbB-wTcPuA+1*{xj!gos}jssTIsb@L-8CLz9ZT6HDV{@O7#ii6WK>` zx&)g12noguwMJ%tja<>aH2IDjh@R8w*O<)~k1>hEZ>P&yGEGB-c^TDv8I0trQ>M-s zZxHI^+f$RHPiEjixDH{h(`7I)t`LfpeA&1#a6EHXNNgW%y-#Oz_LMAU%e$1#XCBI( zh381$_l|lYD@~89mXcWKjR&xW!H?-n6`@Y{u{_D zPBn{k!BC{rCZIfwr5i(4Vfpm1n9k;pUqjQllZV$NrEpYq_YhALihRzweWl`5GzeN# z7Oy}b^7!pyk&-0hNmLQ=s0^$yvh+mIi@wb>i0-G$hcuX|5cN9v4l=gUIZ%Xk3&>Vi zMb@<}p%P1@UkuN46vxo*Kt(%hQpA)jfP_~!Z4DSF*AfdfnUbe%gmqZ?MOgfwF+xOp z)RBvgSIs;b=tS{hBr;gnP9`G%E#({5IQ2o1{7Bf9*ycOFCjoziwsiSSL%k48Fj_o; zXed@_y9JMV%!T(Iyg8B@;L}dM!%B?x9xj6jMO7-@YBN3`FR`sID8VhlaUk**UR2Og z2RacZNLp6!8yLhdxg|kaD&{OUygHb5s2d9k}KNu`Sbdq*P zIvPm?1D|t*@gf5aIHWQMT{*I@wyr#EwJ$N!y-M@d{;n!B?))j^`#ehGhv^Rz)+ku1 zcWu=VN5L&u6%cifbstLHVXt|mT!^Lbx53xm%juqUYYB=pDVLFk&!SUUe6FP14umx`N+ zUP88`3$>@r?m*Lr`MocbIx;8_uk2Sh0uE-JeV`G{ZLzHi9Nb=5i>Zm*E0`c0KZG2_ zHHGR?x01+M#|ogdzS_(StU@yDWclheI9j1OOp8`%7MMLrooq!hrFS$XKNksj?>X8T1p)^qy6^nzVpp-w;GSln_@3$Yn(_w^uR!+u z3GYtjYJvGlbp#(uWUe;XHRJN@t_KcqzQuQc67DT2EAcs_zv?vux!wZFRH8WzZKpXt Y4f5C%lR;kxO%4u4_kRM#zen)wF#rvR&;S4c diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js deleted file mode 100644 index 93bf40b..0000000 --- a/docs/_build/html/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({envversion:42,terms:{represent:1,all:[1,0],code:1,entri:1,zone_bypass:1,text:1,sent:1,recogn:1,arm:1,ssl_kei:1,socketdevic:1,through:1,human:1,stage_don:1,data:1,find:1,backlight:1,paramet:1,raw:1,current:1,baudrat:1,locat:1,expos:1,also:0,readabl:1,except:1,identif:1,whether:1,add:0,program:1,serialdevic:1,bypass:1,on_read:1,match:1,sourc:[1,0],"return":1,string:1,serial_numb:1,format:1,read:1,numeric_cod:1,stop:1,ssl:1,lcd:1,lrr:1,progress:1,report:1,detach:1,requir:1,enabl:1,ad2:1,name:1,earg:0,list:1,upload:1,authent:1,factori:1,"try":1,provid:1,expand:1,stage_wait:1,mode:1,timeout:1,contain:1,found:1,alarm_event_occur:1,expandermessag:1,page:3,certif:1,nodeviceerror:1,on_open:1,request:1,"static":1,connect:1,usbdevic:1,on_writ:1,our:1,charact:1,read_lin:1,event:1,stop_read:1,pyseri:1,index:3,statu:1,detect:1,parent:1,purge_buff:1,pattern:1,ad2seri:1,callback:1,content:3,pyftdi:1,written:1,reader:1,"new":0,awai:1,method:1,localhost:1,ser2sock:1,process:1,perimet:1,run:1,timeouterror:1,kei:1,state:1,numer:1,gener:1,stage_load:1,cursor_loc:1,entry_delay_off:1,like:0,on_clos:1,base:[1,0],ssl_certif:1,address:1,path:1,"byte":1,armed_hom:1,valu:1,describ:1,fire_alarm:1,search:[1,3],actual:1,zone:1,thread:1,fault:1,readthread:1,stage_start:1,prior:1,rais:1,loop:1,fals:1,find_al:1,ad2usb:1,first:1,oper:0,rang:1,via:1,vid:1,appli:1,keypad:1,"float":1,number:1,automat:1,filenam:1,read_timeout:1,"long":1,famili:1,batteri:1,chime:1,open:1,on_attach:1,differ:1,from:1,usb:1,commun:1,detectthread:1,support:1,system:1,been:1,beep:1,attach:1,singl:1,handler:0,call:[1,0],on_detach:1,start_detect:1,ac_pow:1,interfac:1,stage_upload:1,type:1,start:1,low:1,"function":[1,0],no_reader_thread:1,fire:[1,0],tupl:1,commerror:1,chime_on:1,specifi:1,stage_boot:1,rfmessag:1,flag:1,indic:1,relai:1,obj:0,line:1,repres:1,cach:1,present:1,must:0,sound:1,none:[1,0],sender:0,retriev:1,on_restor:1,restor:1,"default":1,remov:[1,0],purg:1,displai:1,dev:1,stop_detect:1,cursor:1,defin:0,"while":1,kwarg:0,can:0,str:1,error:1,battery_low:1,alarm:1,radio:1,expir:1,backlight_on:1,"int":1,descript:1,arg:0,pid:1,templat:1,bitfield:1,check_zon:1,on_fault:1,itself:0,exist:0,aliv:1,ftdi_vendor_id:1,home:1,close:1,vendor:1,ftdi_product_id:1,alarm_sound:1,serial:1,delai:1,readi:1,panel_data:1,progress_callback:1,author:1,receiv:1,anoth:1,belong:1,when:1,invalid:1,port:1,write:1,field:1,client:1,bool:1,which:1,occur:1,instead:0,you:0,event_data:1,channel:1,updat:1,status:1,product:1,relat:1,intend:1,firmwar:1,supervis:1,buffer:1,expans:1,decod:1,event_typ:1,ftdi:1,partit:1,perimeter_onli:1,wire:1,power:1,user:1,attent:1,basemessag:1,eventhandl:0,associ:1,"class":[1,0],check:1,armed_awai:1,handl:1,classmethod:1,doc:0,clear:1,mask:1,object:[1,0],ssl_ca:1,issu:1,lrrmessag:1,is_reader_al:1,thi:1,programming_mod:1,track:1,func:0,invalidmessageerror:1,usual:1},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:classmethod","5":"py:exception","6":"py:staticmethod"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","classmethod","Python class method"],"5":["py","exception","Python exception"],"6":["py","staticmethod","Python static method"]},filenames:["alarmdecoder.event","alarmdecoder","modules","index"],titles:["event Package","alarmdecoder Package","alarmdecoder","Welcome to alarmdecoder’s documentation!"],objects:{"alarmdecoder.messages.LRRMessage":{partition:[1,3,1,""],event_data:[1,3,1,""],event_type:[1,3,1,""]},"alarmdecoder.messages.BaseMessage":{raw:[1,3,1,""]},"alarmdecoder.messages.ExpanderMessage":{RELAY:[1,3,1,""],ZONE:[1,3,1,""],value:[1,3,1,""],address:[1,3,1,""],type:[1,3,1,""],channel:[1,3,1,""]},"alarmdecoder.event.event":{EventHandler:[0,1,1,""],Event:[0,1,1,""]},"alarmdecoder.zonetracking.Zone":{STATUS:[1,3,1,""],FAULT:[1,3,1,""],CLEAR:[1,3,1,""],CHECK:[1,3,1,""]},"alarmdecoder.devices.SerialDevice":{write:[1,2,1,""],BAUDRATE:[1,3,1,""],read:[1,2,1,""],read_line:[1,2,1,""],find_all:[1,6,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.zonetracking":{Zonetracker:[1,1,1,""],Zone:[1,1,1,""]},"alarmdecoder.zonetracking.Zonetracker":{on_restore:[1,3,1,""],EXPIRE:[1,3,1,""],update:[1,2,1,""],on_fault:[1,3,1,""]},"alarmdecoder.devices.Device.ReadThread":{READ_TIMEOUT:[1,3,1,""],stop:[1,2,1,""],run:[1,2,1,""]},"alarmdecoder.event":{event:[0,0,1,""]},"alarmdecoder.messages":{Message:[1,1,1,""],LRRMessage:[1,1,1,""],RFMessage:[1,1,1,""],ExpanderMessage:[1,1,1,""],BaseMessage:[1,1,1,""]},"alarmdecoder.devices":{Device:[1,1,1,""],SocketDevice:[1,1,1,""],USBDevice:[1,1,1,""],SerialDevice:[1,1,1,""]},"alarmdecoder.devices.USBDevice.DetectThread":{run:[1,2,1,""],stop:[1,2,1,""],on_attached:[1,3,1,""],on_detached:[1,3,1,""]},alarmdecoder:{zonetracking:[1,0,1,""],messages:[1,0,1,""],devices:[1,0,1,""],util:[1,0,1,""],panels:[1,0,1,""],event:[0,0,1,""]},"alarmdecoder.devices.SocketDevice":{ssl_certificate:[1,3,1,""],ssl_key:[1,3,1,""],read:[1,2,1,""],ssl_ca:[1,3,1,""],read_line:[1,2,1,""],ssl:[1,3,1,""],write:[1,2,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.devices.USBDevice":{write:[1,2,1,""],BAUDRATE:[1,3,1,""],description:[1,3,1,""],read:[1,2,1,""],DetectThread:[1,1,1,""],stop_detection:[1,4,1,""],devices:[1,4,1,""],start_detection:[1,4,1,""],read_line:[1,2,1,""],find_all:[1,4,1,""],FTDI_VENDOR_ID:[1,3,1,""],serial_number:[1,3,1,""],"interface":[1,3,1,""],close:[1,2,1,""],FTDI_PRODUCT_ID:[1,3,1,""],open:[1,2,1,""],find:[1,4,1,""]},"alarmdecoder.messages.Message":{backlight_on:[1,3,1,""],alarm_event_occurred:[1,3,1,""],programming_mode:[1,3,1,""],text:[1,3,1,""],bitfield:[1,3,1,""],armed_home:[1,3,1,""],alarm_sounding:[1,3,1,""],ready:[1,3,1,""],zone_bypassed:[1,3,1,""],panel_data:[1,3,1,""],check_zone:[1,3,1,""],numeric_code:[1,3,1,""],battery_low:[1,3,1,""],chime_on:[1,3,1,""],entry_delay_off:[1,3,1,""],perimeter_only:[1,3,1,""],fire_alarm:[1,3,1,""],ac_power:[1,3,1,""],beeps:[1,3,1,""],mask:[1,3,1,""],armed_away:[1,3,1,""],cursor_location:[1,3,1,""]},"alarmdecoder.devices.Device":{stop_reader:[1,2,1,""],on_open:[1,3,1,""],on_write:[1,3,1,""],ReadThread:[1,1,1,""],on_close:[1,3,1,""],on_read:[1,3,1,""],close:[1,2,1,""],is_reader_alive:[1,2,1,""],id:[1,3,1,""]},"alarmdecoder.messages.RFMessage":{battery:[1,3,1,""],value:[1,3,1,""],supervision:[1,3,1,""],serial_number:[1,3,1,""],x:[1,3,1,""],loop:[1,3,1,""]},"alarmdecoder.event.event.EventHandler":{fire:[0,2,1,""],add:[0,2,1,""],remove:[0,2,1,""]},"alarmdecoder.util.Firmware":{STAGE_LOAD:[1,3,1,""],upload:[1,6,1,""],STAGE_BOOT:[1,3,1,""],STAGE_START:[1,3,1,""],STAGE_UPLOADING:[1,3,1,""],STAGE_WAITING:[1,3,1,""],STAGE_DONE:[1,3,1,""]},"alarmdecoder.util":{CommError:[1,5,1,""],Firmware:[1,1,1,""],TimeoutError:[1,5,1,""],NoDeviceError:[1,5,1,""],InvalidMessageError:[1,5,1,""]}},titleterms:{subpackag:1,alarmdecod:[1,2,3],welcom:3,modul:[1,0],devic:1,zonetrack:1,util:1,packag:[1,0],messag:1,indic:3,tabl:3,document:3,event:0,panel:1}}) \ No newline at end of file diff --git a/docs/build/doctrees/alarmdecoder.doctree b/docs/build/doctrees/alarmdecoder.doctree new file mode 100644 index 0000000000000000000000000000000000000000..74acdcf2d7b0424e6cc7c130254c3f2ab29992a5 GIT binary patch literal 250563 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 literal 0 HcmV?d00001 diff --git a/docs/_build/doctrees/alarmdecoder.event.doctree b/docs/build/doctrees/alarmdecoder.event.doctree similarity index 79% rename from docs/_build/doctrees/alarmdecoder.event.doctree rename to docs/build/doctrees/alarmdecoder.event.doctree index 20bb85fc20d00f6ed3997650a260d02129a9decf..efd70566653dd601391cb071408c9fcc50efdd1b 100644 GIT binary patch delta 166 zcmaFe&)7GCaf2Zfqt)biby1$goW!Esl+@(>l+>clK1_aMjD;BDleKjuH=mP;VrMMD zDmVF@g!$&l3a8l^i*U=IRKF=BZ>3*cQks^gpPpHwpO|7)TAZYh?10HWOfs9Vxrj0Y E0M1Z4r2qf` delta 195 zcmeC1!1%hKaf2a~v@rt%gMM*IXC0)-*qu$1_1QPKZ^hW diff --git a/docs/_build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle similarity index 57% rename from docs/_build/doctrees/environment.pickle rename to docs/build/doctrees/environment.pickle index 2b5e17a5e8e1023eee6b41fccada837bcf047c3e..3a0b59a85b42d38911ac732524ba78e41fc8e96e 100644 GIT binary patch delta 17370 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 F{|EE7PPG64 delta 17262 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 delta 234 zcmeyX|4M&@Go!Q`0|SG8aY<=fntpm_iGE^=QE73KenBOWu{o7dM?^vmm+S`7P)6ra zv9!#b)cDN2;?$y&%>2Cg)V#!`oYa&edqxI^j!^ER#B#Wh15n7DF_br@G`AqWIJKlC zGcUck$Z@i-xSX&PNRA C>=!-& diff --git a/docs/_build/html/.buildinfo b/docs/build/html/.buildinfo similarity index 100% rename from docs/_build/html/.buildinfo rename to docs/build/html/.buildinfo diff --git a/docs/_build/html/_modules/alarmdecoder/devices.html b/docs/build/html/_modules/alarmdecoder/devices.html similarity index 87% rename from docs/_build/html/_modules/alarmdecoder/devices.html rename to docs/build/html/_modules/alarmdecoder/devices.html index 36eccc1..b77c905 100644 --- a/docs/_build/html/_modules/alarmdecoder/devices.html +++ b/docs/build/html/_modules/alarmdecoder/devices.html @@ -53,18 +53,20 @@ .. moduleauthor:: Scott Petersen <scott@nutech.com> """ -import usb.core, usb.util +import usb.core +import usb.util import time import threading -import serial, serial.tools.list_ports +import serial +import serial.tools.list_ports import socket from OpenSSL import SSL, crypto -from pyftdi.pyftdi.ftdi import * -from pyftdi.pyftdi.usbtools import * +from pyftdi.pyftdi.ftdi import Ftdi, FtdiError from .util import CommError, TimeoutError, NoDeviceError from .event import event +

[docs]class Device(object): """ Generic parent device to all Alarm Decoder (AD2) products. @@ -92,7 +94,7 @@ """ return self - def __exit__(self, type, value, traceback): + def __exit__(self, exc_type, exc_value, traceback): """ Support for context manager __exit__. """ @@ -142,7 +144,7 @@ self._read_thread.stop() self._device.close() - except: + except Exception: pass self.on_close() @@ -182,15 +184,14 @@ try: self._device.read_line(timeout=self.READ_TIMEOUT) - except TimeoutError, err: + except TimeoutError: pass - except Exception, err: + except Exception: self._running = False - #raise err - time.sleep(0.01) +
[docs]class USBDevice(Device): """ @@ -206,6 +207,7 @@ """Default baudrate for AD2USB devices.""" __devices = [] + __detect_thread = None @classmethod
[docs] def find_all(cls, vid=FTDI_VENDOR_ID, pid=FTDI_PRODUCT_ID): @@ -237,9 +239,11 @@ @classmethod
[docs] def find(cls, device=None): """ - Factory method that returns the requested USBDevice device, or the first device. + Factory method that returns the requested USBDevice device, or the + first device. - :param device: Tuple describing the USB device to open, as returned by find_all(). + :param device: Tuple describing the USB device to open, as returned + by find_all(). :type device: tuple :returns: USBDevice object utilizing the specified device. @@ -281,7 +285,7 @@ try: cls.__detect_thread.stop() - except: + except Exception: pass
@property @@ -350,28 +354,32 @@ """ Constructor - :param interface: May specify either the serial number or the device index. + :param interface: May specify either the serial number or the device + index. :type interface: str or int """ Device.__init__(self) self._device = Ftdi() + self._interface = 0 self._device_number = 0 self._serial_number = None - self.interface = interface self._vendor_id = USBDevice.FTDI_VENDOR_ID self._product_id = USBDevice.FTDI_PRODUCT_ID self._endpoint = 0 self._description = None + self.interface = interface +
[docs] def open(self, baudrate=BAUDRATE, no_reader_thread=False): """ Opens the device. :param baudrate: The baudrate to use. :type baudrate: int - :param no_reader_thread: Whether or not to automatically start the reader thread. + :param no_reader_thread: Whether or not to automatically start the + reader thread. :type no_reader_thread: bool :raises: NoDeviceError @@ -383,11 +391,11 @@ # Open the device and start up the thread. try: self._device.open(self._vendor_id, - self._product_id, - self._endpoint, - self._device_number, - self._serial_number, - self._description) + self._product_id, + self._endpoint, + self._device_number, + self._serial_number, + self._description) self._device.set_baudrate(baudrate) @@ -415,10 +423,10 @@ try: Device.close(self) - # HACK: Probably should fork pyftdi and make this call in .close(). + # HACK: Probably should fork pyftdi and make this call in .close() self._device.usb_dev.attach_kernel_driver(self._device_number) - except: + except Exception: pass
[docs] def write(self, data): @@ -459,29 +467,28 @@ """ Reads a line from the device. - :param timeout: Read timeout + :param timeout: The read timeout. :type timeout: float - :param purge_buffer: Indicates whether to purge the buffer prior to reading. + :param purge_buffer: Indicates whether to purge the buffer prior to + reading. :type purge_buffer: bool :returns: The line that was read. :raises: CommError, TimeoutError """ - if purge_buffer: - self._buffer = '' - def timeout_event(): + """Handles read timeout event""" timeout_event.reading = False - timeout_event.reading = True - got_line = False - ret = None + if purge_buffer: + self._buffer = '' + + got_line, ret = False, None - timer = None + timer = threading.Timer(timeout, timeout_event) if timeout > 0: - timer = threading.Timer(timeout, timeout_event) timer.start() try: @@ -492,36 +499,27 @@ self._buffer += buf if buf == "\n": - if len(self._buffer) > 1: - if self._buffer[-2] == "\r": - self._buffer = self._buffer[:-2] + self._buffer = self._buffer.rstrip("\r\n") - # ignore if we just got \r\n with nothing else in the buffer. - if len(self._buffer) != 0: - got_line = True - break - else: - self._buffer = self._buffer[:-1] + if len(self._buffer) > 0: + got_line = True + break except (usb.core.USBError, FtdiError), err: - if timer: - timer.cancel() - raise CommError('Error reading from device: {0}'.format(str(err)), err) else: if got_line: - ret = self._buffer - self._buffer = '' + ret, self._buffer = self._buffer, '' self.on_read(data=ret) - if timer: - if timer.is_alive(): - timer.cancel() else: raise TimeoutError('Timeout while waiting for line terminator.') + finally: + timer.cancel() + return ret
def _get_serial_number(self): @@ -576,17 +574,15 @@ try: current_devices = set(USBDevice.find_all()) - new_devices = [d for d in current_devices if d not in last_devices] - removed_devices = [d for d in last_devices if d not in current_devices] - last_devices = current_devices + for dev in current_devices.difference(last_devices): + self.on_attached(device=dev) - for d in new_devices: - self.on_attached(device=d) + for dev in last_devices.difference(current_devices): + self.on_detached(device=dev) - for d in removed_devices: - self.on_detached(device=d) + last_devices = current_devices - except CommError, err: + except CommError: pass time.sleep(0.25) @@ -620,7 +616,7 @@ else: devices = serial.tools.list_ports.comports() - except SerialException, err: + except serial.SerialException, err: raise CommError('Error enumerating serial devices: {0}'.format(str(err)), err) return devices @@ -655,7 +651,8 @@ self._port = interface self._id = interface - self._device = serial.Serial(timeout=0, writeTimeout=0) # Timeout = non-blocking to match pyftdi. + # Timeout = non-blocking to match pyftdi. + self._device = serial.Serial(timeout=0, writeTimeout=0)
[docs] def open(self, baudrate=BAUDRATE, no_reader_thread=False): """ @@ -663,7 +660,8 @@ :param baudrate: The baudrate to use with the device. :type baudrate: int - :param no_reader_thread: Whether or not to automatically start the reader thread. + :param no_reader_thread: Whether or not to automatically start the + reader thread. :type no_reader_thread: bool :raises: NoDeviceError @@ -675,17 +673,17 @@ if self._port is None: raise NoDeviceError('No device interface specified.') - self._device.port = self._port - # Open the device and start up the reader thread. try: + self._device.port = self._port self._device.open() - self._device.baudrate = baudrate # NOTE: Setting the baudrate before opening the - # port caused issues with Moschip 7840/7820 - # USB Serial Driver converter. (mos7840) - # - # Moving it to this point seems to resolve - # all issues with it. + # NOTE: Setting the baudrate before opening the + # port caused issues with Moschip 7840/7820 + # USB Serial Driver converter. (mos7840) + # + # Moving it to this point seems to resolve + # all issues with it. + self._device.baudrate = baudrate except (serial.SerialException, ValueError), err: raise NoDeviceError('Error opening device on port {0}.'.format(self._port), err) @@ -706,7 +704,7 @@ try: Device.close(self) - except: + except Exception: pass
[docs] def write(self, data): @@ -721,7 +719,7 @@ try: self._device.write(data) - except serial.SerialTimeoutException, err: + except serial.SerialTimeoutException: pass except serial.SerialException, err: @@ -753,64 +751,60 @@ :param timeout: The read timeout. :type timeout: float - :param purge_buffer: Indicates whether to purge the buffer prior to reading. + :param purge_buffer: Indicates whether to purge the buffer prior to + reading. :type purge_buffer: bool - :returns: The line read. + :returns: The line that was read. :raises: CommError, TimeoutError """ + def timeout_event(): + """Handles read timeout event""" timeout_event.reading = False - timeout_event.reading = True - got_line = False - ret = None + if purge_buffer: + self._buffer = '' + + got_line, ret = False, None - timer = None + timer = threading.Timer(timeout, timeout_event) if timeout > 0: - timer = threading.Timer(timeout, timeout_event) timer.start() try: while timeout_event.reading: buf = self._device.read(1) - if buf != '' and buf != "\xff": # AD2SERIAL specifically apparently sends down \xFF on boot. + # NOTE: AD2SERIAL apparently sends down \xFF on boot. + if buf != '' and buf != "\xff": self._buffer += buf if buf == "\n": - if len(self._buffer) > 1: - if self._buffer[-2] == "\r": - self._buffer = self._buffer[:-2] + self._buffer = self._buffer.rstrip("\r\n") - # ignore if we just got \r\n with nothing else in the buffer. - if len(self._buffer) != 0: - got_line = True - break - else: - self._buffer = self._buffer[:-1] + if len(self._buffer) > 0: + got_line = True + break except (OSError, serial.SerialException), err: - if timer: - timer.cancel() - raise CommError('Error reading from device: {0}'.format(str(err)), err) else: if got_line: - ret = self._buffer - self._buffer = '' + ret, self._buffer = self._buffer, '' self.on_read(data=ret) - if timer: - if timer.is_alive(): - timer.cancel() else: raise TimeoutError('Timeout while waiting for line terminator.') + finally: + timer.cancel() + return ret +
[docs]class SocketDevice(Device): """ @@ -835,8 +829,7 @@ :param value: Tuple containing the host and port to use. :type value: tuple """ - self._host = value[0] - self._port = value[1] + self._host, self._port = value
@property def ssl(self): @@ -898,7 +891,8 @@ @property def ssl_ca(self): """ - Retrieves the SSL Certificate Authority certificate used for authentication. + Retrieves the SSL Certificate Authority certificate used for + authentication. :returns: The CA path """ @@ -935,7 +929,8 @@ :param baudrate: The baudrate to use :type baudrate: int - :param no_reader_thread: Whether or not to automatically open the reader thread. + :param no_reader_thread: Whether or not to automatically open the reader + thread. :type no_reader_thread: bool :raises: NoDeviceError, CommError @@ -976,11 +971,12 @@ self._device.shutdown() else: - self._device.shutdown(socket.SHUT_RDWR) # Make sure that it closes immediately. + # Make sure that it closes immediately. + self._device.shutdown(socket.SHUT_RDWR) Device.close(self) - except Exception, ex: + except Exception: pass
[docs] def write(self, data): @@ -1031,27 +1027,26 @@ :param timeout: The read timeout. :type timeout: float - :param purge_buffer: Indicates whether to purge the buffer prior to reading. + :param purge_buffer: Indicates whether to purge the buffer prior to + reading. :type purge_buffer: bool - :returns: The line read from the device. + :returns: The line that was read.: :raises: CommError, TimeoutError """ - if purge_buffer: - self._buffer = '' - def timeout_event(): + """Handles read timeout event""" timeout_event.reading = False - timeout_event.reading = True - got_line = False - ret = None + if purge_buffer: + self._buffer = '' - timer = None + got_line, ret = False, None + + timer = threading.Timer(timeout, timeout_event) if timeout > 0: - timer = threading.Timer(timeout, timeout_event) timer.start() try: @@ -1062,39 +1057,34 @@ self._buffer += buf if buf == "\n": - if len(self._buffer) > 1: - if self._buffer[-2] == "\r": - self._buffer = self._buffer[:-2] + self._buffer = self._buffer.rstrip("\r\n") - # ignore if we just got \r\n with nothing else in the buffer. - if len(self._buffer) != 0: - got_line = True - break - else: - self._buffer = self._buffer[:-1] + if len(self._buffer) > 0: + got_line = True + break except socket.error, err: - if timer: - timer.cancel() - raise CommError('Error reading from device: {0}'.format(str(err)), err) else: if got_line: - ret = self._buffer - self._buffer = '' + ret, self._buffer = self._buffer, '' self.on_read(data=ret) - if timer: - if timer.is_alive(): - timer.cancel() else: raise TimeoutError('Timeout while waiting for line terminator.') + finally: + timer.cancel() + return ret
def _init_ssl(self): + """ + Initializes our device as an SSL connection. + """ + try: ctx = SSL.Context(SSL.TLSv1_METHOD) @@ -1122,6 +1112,9 @@ raise CommError('Error setting up SSL connection.', err) def _verify_ssl_callback(self, connection, x509, errnum, errdepth, ok): + """ + SSL verification callback. + """ return ok diff --git a/docs/_build/html/_modules/alarmdecoder/event/event.html b/docs/build/html/_modules/alarmdecoder/event/event.html similarity index 99% rename from docs/_build/html/_modules/alarmdecoder/event/event.html rename to docs/build/html/_modules/alarmdecoder/event/event.html index 4cb5a8b..e62ec66 100644 --- a/docs/_build/html/_modules/alarmdecoder/event/event.html +++ b/docs/build/html/_modules/alarmdecoder/event/event.html @@ -58,6 +58,7 @@ # * Added type check in fire() # * Removed earg from fire() and added support for args/kwargs. +
[docs]class Event(object): def __init__(self, doc=None): diff --git a/docs/_build/html/_modules/alarmdecoder/messages.html b/docs/build/html/_modules/alarmdecoder/messages.html similarity index 96% rename from docs/_build/html/_modules/alarmdecoder/messages.html rename to docs/build/html/_modules/alarmdecoder/messages.html index 6d2d509..2645690 100644 --- a/docs/_build/html/_modules/alarmdecoder/messages.html +++ b/docs/build/html/_modules/alarmdecoder/messages.html @@ -58,6 +58,7 @@ from .util import InvalidMessageError +
[docs]class BaseMessage(object): """ Base class for messages. @@ -77,6 +78,7 @@ String conversion operator. """ return self.raw +
[docs]class Message(BaseMessage): """ @@ -137,7 +139,7 @@ """ BaseMessage.__init__(self) - self._regex = re.compile('("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*),("(?:[^"]|"")*"|[^,]*)') + self._regex = re.compile('^(!KPE:){0,1}(\[[a-fA-F0-9\-]+\]),([a-fA-F0-9]+),(\[[a-fA-F0-9]+\]),(".+")$') if data is not None: self._parse_message(data) @@ -157,12 +159,12 @@ :raises: InvalidMessageError """ - m = self._regex.match(data) + match = self._regex.match(data) - if m is None: + if match is None: raise InvalidMessageError('Received invalid message: {0}'.format(data)) - self.bitfield, self.numeric_code, self.panel_data, alpha = m.group(1, 2, 3, 4) + header, self.bitfield, self.numeric_code, self.panel_data, alpha = match.group(1, 2, 3, 4, 5) self.mask = int(self.panel_data[3:3+8], 16) is_bit_set = lambda bit: not self.bitfield[bit] == "0" @@ -188,7 +190,9 @@ self.text = alpha.strip('"') if int(self.panel_data[19:21], 16) & 0x01 > 0: - self.cursor_location = int(self.bitfield[21:23], 16) # Alpha character index that the cursor is on. + # Current cursor location on the alpha display. + self.cursor_location = int(self.bitfield[21:23], 16) +
[docs]class ExpanderMessage(BaseMessage): """ @@ -200,7 +204,6 @@ RELAY = 1 """Flag indicating that the expander message relates to a Relay Expander.""" - type = None """Expander message type: ExpanderMessage.ZONE or ExpanderMessage.RELAY""" address = -1 @@ -253,6 +256,7 @@ self.type = ExpanderMessage.RELAY else: raise InvalidMessageError('Unknown expander message header: {0}'.format(data)) +
[docs]class RFMessage(BaseMessage): """ @@ -315,6 +319,7 @@ except ValueError: raise InvalidMessageError('Received invalid message: {0}'.format(data)) +
[docs]class LRRMessage(BaseMessage): """ diff --git a/docs/_build/html/_modules/alarmdecoder/util.html b/docs/build/html/_modules/alarmdecoder/util.html similarity index 95% rename from docs/_build/html/_modules/alarmdecoder/util.html rename to docs/build/html/_modules/alarmdecoder/util.html index 57eabec..3540201 100644 --- a/docs/_build/html/_modules/alarmdecoder/util.html +++ b/docs/build/html/_modules/alarmdecoder/util.html @@ -56,29 +56,34 @@ import time import threading +
[docs]class NoDeviceError(Exception): """ No devices found. """ pass +
[docs]class CommError(Exception): """ There was an error communicating with the device. """ pass +
[docs]class TimeoutError(Exception): """ There was a timeout while trying to communicate with the device. """ pass +
[docs]class InvalidMessageError(Exception): """ The format of the panel message was invalid. """ pass +
[docs]class Firmware(object): """ @@ -93,6 +98,7 @@ STAGE_UPLOADING = 4 STAGE_DONE = 5 + # FIXME: Rewrite this monstrosity. @staticmethod
[docs] def upload(dev, filename, progress_callback=None): """ @@ -110,13 +116,13 @@ """ Perform the actual firmware upload to the device. """ - with open(filename) as f: - for line in f: + with open(filename) as upload_file: + for line in upload_file: line = line.rstrip() if line[0] == ':': dev.write(line + "\r") - res = dev.read_line(timeout=10.0) + dev.read_line(timeout=10.0) if progress_callback is not None: progress_callback(Firmware.STAGE_UPLOADING) @@ -125,9 +131,11 @@ def read_until(pattern, timeout=0.0): """ - Read characters until a specific pattern is found or the timeout is hit. + Read characters until a specific pattern is found or the timeout is + hit. """ def timeout_event(): + """Handles the read timeout event.""" timeout_event.reading = False timeout_event.reading = True @@ -137,7 +145,6 @@ timer = threading.Timer(timeout, timeout_event) timer.start() - buf = '' position = 0 while timeout_event.reading: @@ -152,7 +159,7 @@ else: position = 0 - except Exception, err: + except Exception: pass if timer: @@ -162,6 +169,7 @@ raise TimeoutError('Timeout while waiting for line terminator.') def stage_callback(stage): + """Callback to update progress for the specified stage.""" if progress_callback is not None: progress_callback(stage) diff --git a/docs/_build/html/_modules/alarmdecoder/zonetracking.html b/docs/build/html/_modules/alarmdecoder/zonetracking.html similarity index 91% rename from docs/_build/html/_modules/alarmdecoder/zonetracking.html rename to docs/build/html/_modules/alarmdecoder/zonetracking.html index 3cd34b7..b0ed0c1 100644 --- a/docs/_build/html/_modules/alarmdecoder/zonetracking.html +++ b/docs/build/html/_modules/alarmdecoder/zonetracking.html @@ -59,6 +59,7 @@ from .event import event from .messages import ExpanderMessage +
[docs]class Zone(object): """ Representation of a panel zone. @@ -71,7 +72,7 @@ CHECK = 2 # Wire fault """Status indicating that there is a wiring issue with the zone.""" - STATUS = { CLEAR: 'CLEAR', FAULT: 'FAULT', CHECK: 'CHECK' } + STATUS = {CLEAR: 'CLEAR', FAULT: 'FAULT', CHECK: 'CHECK'} def __init__(self, zone=0, name='', status=CLEAR): """ @@ -100,6 +101,7 @@ Human readable representation operator. """ return 'Zone({0}, {1}, ts {2})'.format(self.zone, Zone.STATUS[self.status], self.timestamp) +
[docs]class Zonetracker(object): """ @@ -129,7 +131,7 @@ """ if isinstance(message, ExpanderMessage): if message.type == ExpanderMessage.ZONE: - zone = self._expander_to_zone(message.address, message.channel) + zone = self.expander_to_zone(message.address, message.channel) status = Zone.CLEAR if message.value == 1: @@ -137,9 +139,10 @@ elif message.value == 2: status = Zone.CHECK - # NOTE: Expander zone faults are handled differently than regular messages. - # We don't include them in self._zones_faulted because they are not reported - # by the panel in it's rolling list of faults. + # NOTE: Expander zone faults are handled differently than + # regular messages. We don't include them in + # self._zones_faulted because they are not reported + # by the panel in it's rolling list of faults. try: self._update_zone(zone, status=status) @@ -149,12 +152,13 @@ else: # Panel is ready, restore all zones. # - # NOTE: This will need to be updated to support panels with multiple partitions. - # In it's current state a ready on partition #1 will end up clearing all zones, even - # if they exist elsewhere and it shouldn't. + # NOTE: This will need to be updated to support panels with + # multiple partitions. In it's current state a ready on + # partition #1 will end up clearing all zones, even if they + # exist elsewhere and it shouldn't. if message.ready: - for z in self._zones_faulted: - self._update_zone(z, Zone.CLEAR) + for zone in self._zones_faulted: + self._update_zone(zone, Zone.CLEAR) self._last_zone_fault = 0 @@ -168,17 +172,18 @@ except ValueError: zone = int(message.numeric_code, 16) - # NOTE: Odd case for ECP failures. Apparently they report as zone 191 (0xBF) regardless - # of whether or not the 3-digit mode is enabled... so we have to pull it out of the - # alpha message. + # NOTE: Odd case for ECP failures. Apparently they report as + # zone 191 (0xBF) regardless of whether or not the + # 3-digit mode is enabled... so we have to pull it out + # of the alpha message. if zone == 191: zone_regex = re.compile('^CHECK (\d+).*$') - m = zone_regex.match(message.text) - if m is None: + match = zone_regex.match(message.text) + if match is None: return - zone = m.group(1) + zone = match.group(1) # Add new zones and clear expired ones. if zone in self._zones_faulted: @@ -198,6 +203,25 @@ self._last_zone_fault = zone self._clear_expired_zones() +
+
[docs] def expander_to_zone(self, address, channel): + """ + Convert an address and channel into a zone number. + + :param address: The expander address + :type address: int + :param channel: The channel + :type channel: int + + :returns: The zone number associated with an address and channel. + """ + + # TODO: This is going to need to be reworked to support the larger + # panels without fixed addressing on the expanders. + + idx = address - 7 # Expanders start at address 7. + + return address + channel + (idx * 7) + 1
def _clear_zones(self, zone): """ @@ -323,26 +347,7 @@ :returns: Whether or not the zone is expired. """ - return time.time() > self._zones[zone].timestamp + Zonetracker.EXPIRE - - def _expander_to_zone(self, address, channel): - """ - Convert an address and channel into a zone number. - - :param address: The expander address - :type address: int - :param channel: The channel - :type channel: int - - :returns: The zone number associated with an address and channel. - """ - - # TODO: This is going to need to be reworked to support the larger - # panels without fixed addressing on the expanders. - - idx = address - 7 # Expanders start at address 7. - - return address + channel + (idx * 7) + 1
+ return time.time() > self._zones[zone].timestamp + Zonetracker.EXPIRE
diff --git a/docs/_build/html/_modules/index.html b/docs/build/html/_modules/index.html similarity index 100% rename from docs/_build/html/_modules/index.html rename to docs/build/html/_modules/index.html diff --git a/docs/_build/html/_sources/alarmdecoder.event.txt b/docs/build/html/_sources/alarmdecoder.event.txt similarity index 100% rename from docs/_build/html/_sources/alarmdecoder.event.txt rename to docs/build/html/_sources/alarmdecoder.event.txt diff --git a/docs/_build/html/_sources/alarmdecoder.txt b/docs/build/html/_sources/alarmdecoder.txt similarity index 100% rename from docs/_build/html/_sources/alarmdecoder.txt rename to docs/build/html/_sources/alarmdecoder.txt diff --git a/docs/_build/html/_sources/index.txt b/docs/build/html/_sources/index.txt similarity index 100% rename from docs/_build/html/_sources/index.txt rename to docs/build/html/_sources/index.txt diff --git a/docs/_build/html/_sources/modules.txt b/docs/build/html/_sources/modules.txt similarity index 100% rename from docs/_build/html/_sources/modules.txt rename to docs/build/html/_sources/modules.txt diff --git a/docs/_build/html/_static/ajax-loader.gif b/docs/build/html/_static/ajax-loader.gif similarity index 100% rename from docs/_build/html/_static/ajax-loader.gif rename to docs/build/html/_static/ajax-loader.gif diff --git a/docs/_build/html/_static/basic.css b/docs/build/html/_static/basic.css similarity index 100% rename from docs/_build/html/_static/basic.css rename to docs/build/html/_static/basic.css diff --git a/docs/_build/html/_static/comment-bright.png b/docs/build/html/_static/comment-bright.png similarity index 100% rename from docs/_build/html/_static/comment-bright.png rename to docs/build/html/_static/comment-bright.png diff --git a/docs/_build/html/_static/comment-close.png b/docs/build/html/_static/comment-close.png similarity index 100% rename from docs/_build/html/_static/comment-close.png rename to docs/build/html/_static/comment-close.png diff --git a/docs/_build/html/_static/comment.png b/docs/build/html/_static/comment.png similarity index 100% rename from docs/_build/html/_static/comment.png rename to docs/build/html/_static/comment.png diff --git a/docs/_build/html/_static/default.css b/docs/build/html/_static/default.css similarity index 100% rename from docs/_build/html/_static/default.css rename to docs/build/html/_static/default.css diff --git a/docs/_build/html/_static/doctools.js b/docs/build/html/_static/doctools.js similarity index 100% rename from docs/_build/html/_static/doctools.js rename to docs/build/html/_static/doctools.js diff --git a/docs/_build/html/_static/down-pressed.png b/docs/build/html/_static/down-pressed.png similarity index 100% rename from docs/_build/html/_static/down-pressed.png rename to docs/build/html/_static/down-pressed.png diff --git a/docs/_build/html/_static/down.png b/docs/build/html/_static/down.png similarity index 100% rename from docs/_build/html/_static/down.png rename to docs/build/html/_static/down.png diff --git a/docs/_build/html/_static/file.png b/docs/build/html/_static/file.png similarity index 100% rename from docs/_build/html/_static/file.png rename to docs/build/html/_static/file.png diff --git a/docs/_build/html/_static/jquery.js b/docs/build/html/_static/jquery.js similarity index 100% rename from docs/_build/html/_static/jquery.js rename to docs/build/html/_static/jquery.js diff --git a/docs/_build/html/_static/minus.png b/docs/build/html/_static/minus.png similarity index 100% rename from docs/_build/html/_static/minus.png rename to docs/build/html/_static/minus.png diff --git a/docs/_build/html/_static/plus.png b/docs/build/html/_static/plus.png similarity index 100% rename from docs/_build/html/_static/plus.png rename to docs/build/html/_static/plus.png diff --git a/docs/_build/html/_static/pygments.css b/docs/build/html/_static/pygments.css similarity index 100% rename from docs/_build/html/_static/pygments.css rename to docs/build/html/_static/pygments.css diff --git a/docs/_build/html/_static/searchtools.js b/docs/build/html/_static/searchtools.js similarity index 100% rename from docs/_build/html/_static/searchtools.js rename to docs/build/html/_static/searchtools.js diff --git a/docs/_build/html/_static/sidebar.js b/docs/build/html/_static/sidebar.js similarity index 100% rename from docs/_build/html/_static/sidebar.js rename to docs/build/html/_static/sidebar.js diff --git a/docs/_build/html/_static/underscore.js b/docs/build/html/_static/underscore.js similarity index 100% rename from docs/_build/html/_static/underscore.js rename to docs/build/html/_static/underscore.js diff --git a/docs/_build/html/_static/up-pressed.png b/docs/build/html/_static/up-pressed.png similarity index 100% rename from docs/_build/html/_static/up-pressed.png rename to docs/build/html/_static/up-pressed.png diff --git a/docs/_build/html/_static/up.png b/docs/build/html/_static/up.png similarity index 100% rename from docs/_build/html/_static/up.png rename to docs/build/html/_static/up.png diff --git a/docs/_build/html/_static/websupport.js b/docs/build/html/_static/websupport.js similarity index 100% rename from docs/_build/html/_static/websupport.js rename to docs/build/html/_static/websupport.js diff --git a/docs/_build/html/alarmdecoder.event.html b/docs/build/html/alarmdecoder.event.html similarity index 100% rename from docs/_build/html/alarmdecoder.event.html rename to docs/build/html/alarmdecoder.event.html diff --git a/docs/_build/html/alarmdecoder.html b/docs/build/html/alarmdecoder.html similarity index 97% rename from docs/_build/html/alarmdecoder.html rename to docs/build/html/alarmdecoder.html index 6b8a672..2ac6071 100644 --- a/docs/_build/html/alarmdecoder.html +++ b/docs/build/html/alarmdecoder.html @@ -212,12 +212,14 @@
classmethod find(device=None)[source]
-

Factory method that returns the requested USBDevice device, or the first device.

+

Factory method that returns the requested USBDevice device, or the +first device.

- + @@ -303,7 +305,8 @@ @@ -361,8 +364,9 @@ @@ -462,7 +466,8 @@ @@ -521,11 +526,12 @@ -
Parameters:device (tuple) – Tuple describing the USB device to open, as returned by find_all().
Parameters:device (tuple) – Tuple describing the USB device to open, as returned +by find_all().
Returns:USBDevice object utilizing the specified device.
Parameters:
  • baudrate (int) – The baudrate to use.
  • -
  • no_reader_thread (bool) – Whether or not to automatically start the reader thread.
  • +
  • no_reader_thread (bool) – Whether or not to automatically start the +reader thread.
Parameters:
    -
  • timeout (float) – Read timeout
  • -
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to reading.
  • +
  • timeout (float) – The read timeout.
  • +
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to +reading.
Parameters:
  • baudrate (int) – The baudrate to use with the device.
  • -
  • no_reader_thread (bool) – Whether or not to automatically start the reader thread.
  • +
  • no_reader_thread (bool) – Whether or not to automatically start the +reader thread.
Parameters:
  • timeout (float) – The read timeout.
  • -
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to reading.
  • +
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to +reading.
Returns:

The line read.

+
Returns:

The line that was read.

Raises :

CommError, TimeoutError

@@ -602,7 +608,8 @@ exposed via ser2sock or another Serial to IP interface.

ssl_ca[source]
-

Retrieves the SSL Certificate Authority certificate used for authentication.

+

Retrieves the SSL Certificate Authority certificate used for +authentication.

@@ -623,7 +630,8 @@ exposed via ser2sock or another Serial to IP interface.

@@ -684,11 +692,12 @@ exposed via ser2sock or another Serial to IP interface.

-
Parameters:
  • baudrate (int) – The baudrate to use
  • -
  • no_reader_thread (bool) – Whether or not to automatically open the reader thread.
  • +
  • no_reader_thread (bool) – Whether or not to automatically open the reader +thread.
Parameters:
  • timeout (float) – The read timeout.
  • -
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to reading.
  • +
  • purge_buffer (bool) – Indicates whether to purge the buffer prior to +reading.
Returns:

The line read from the device.

+
Returns:

The line that was read.:

Raises :

CommError, TimeoutError

@@ -861,6 +870,27 @@ exposed via ser2sock or another Serial to IP interface.

+
+
+expander_to_zone(address, channel)[source]
+

Convert an address and channel into a zone number.

+ +++ + + + + + +
Parameters:
    +
  • address (int) – The expander address
  • +
  • channel (int) – The channel
  • +
+
Returns:

The zone number associated with an address and channel.

+
+
+ diff --git a/docs/_build/html/genindex.html b/docs/build/html/genindex.html similarity index 99% rename from docs/_build/html/genindex.html rename to docs/build/html/genindex.html index 111128e..e92fc80 100644 --- a/docs/_build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -281,6 +281,10 @@ +
expander_to_zone() (alarmdecoder.zonetracking.Zonetracker method) +
+ +
ExpanderMessage (class in alarmdecoder.messages)
diff --git a/docs/_build/html/index.html b/docs/build/html/index.html similarity index 100% rename from docs/_build/html/index.html rename to docs/build/html/index.html diff --git a/docs/_build/html/modules.html b/docs/build/html/modules.html similarity index 100% rename from docs/_build/html/modules.html rename to docs/build/html/modules.html diff --git a/docs/build/html/objects.inv b/docs/build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..7e14e500e52ba034f95fb1e5e262a189e245a20a GIT binary patch literal 1378 zcmV-o1)cgMAX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkmY+-V3 zWMyM-WMy&+BOq2~a&u{KZaN?eBOp|0Wgv28ZDDC{WMy(7Z)PBLXlZjGW@&6?AZc?T zV{dJ6a%FRKWn>_Ab7^j8AbM;{1=}1`qK2gGxW9g>hvkRlv?6g)B8kEPAn@S>=u{>=OW=K^P4Y$16^PNp=TUxq zNShbI)}-Q((Thw90i$X8=+g$Wo{vsXn=k668mMC1>xK2RX4#@%@J2WAi3+OH1ei=f z1+a(A)K{y|m$X*kuTjsUN>aVx;m^^-wVV{Rw!-y&As>GJQ)XZkWjmg297Xuskkbr= zs|AJO!tv7t_MADp?&SI4k!pCUZ%R>2P_0LwdnDacAedBtg9vC6Zmv}z-(nQ zOxQxQ9hgQW6H>!aNv&m#RRP=b6o{-;qQ)q`Dhv$MYPoo9RN|QdwWbUlq}>VEK~}kb z*LtJepreN?t~N+(K^S$A)~XdfpA^$Y4rDJIj2gK}5l zInej5qh?Wb@>N9yNJ5Pl+O;LAP+BS?B%{U?@6I|7wDPhV1wZVK3jjRHG!2!Ks{9z< z8RV5cZeFS0lG@XfSsy7#P~fD@7Lru?(|CI@ig&zK-GFipt?=FQM*F0-JxP@P*OOIT zY8J?hSdm65kMb~-ZuC`!<=bpNo=jiA`lfLs&t9V#!%@N0EF4D|`J7U{!{Ssp2wGAW zr$F!X_~U#Yqa@-*R3Y%F1T<4TcSO)m-{u%Z&*SAR_9iMwy^ehc3E9dNFv7Y9WG#y< zX<8OviMf&+Mbp%ZBi8MJiFeRIDlwA$Z0ea4#l9tfL~svjoqh?F;cIRyKVXrr%l}g@x`Pl2v4(?-hz2CYWcO4Z+54}2i5l@VRw>-9_SIJs#wg7 zmkS(DXHm*VizCAI#R_g4;xOpxc;CRgK`AaSecBBO+gNXL*o&zYxsbIs!}GBVnq{T( z?mfuCgr|a)TV;(QBW3(lCv$%tm832uYs$Q<=?mPBh2c${}k=s zY2!pZddm==q=VuHM-sv$=^A02$Up@SF;77j2CZE#D-T&6a~tVSrTH$AD)NLHcP@IH zM^QK%e@CICjO6lASABmJ+*45iQcGGkxX7*hnij(NSbDn+uJ(4vhTN<<2-J`Z|9hK8 zA)>hhi$MQ@rVpuHa|NVYf^Dy2w5Ncd53>>y!KD{I+;fZr)v!d`gc5y-G=zA?|Mx^ kD))dgm8gzc>uHWlgFN&orq|bAlY>*y{Y{|wADC(lk#EbS5C8xG literal 0 HcmV?d00001 diff --git a/docs/_build/html/py-modindex.html b/docs/build/html/py-modindex.html similarity index 100% rename from docs/_build/html/py-modindex.html rename to docs/build/html/py-modindex.html diff --git a/docs/_build/html/search.html b/docs/build/html/search.html similarity index 100% rename from docs/_build/html/search.html rename to docs/build/html/search.html diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js new file mode 100644 index 0000000..ae78dc9 --- /dev/null +++ b/docs/build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({envversion:42,terms:{represent:1,all:[1,0],code:1,entri:1,zone_bypass:1,text:1,sent:1,recogn:1,arm:1,ssl_kei:1,socketdevic:1,through:1,human:1,stage_don:1,data:1,find:1,backlight:1,paramet:1,raw:1,current:1,baudrat:1,locat:1,expos:1,also:0,readabl:1,except:1,identif:1,whether:1,add:0,program:1,serialdevic:1,bypass:1,on_read:1,match:1,sourc:[1,0],"return":1,string:1,serial_numb:1,format:1,read:1,numeric_cod:1,stop:1,ssl:1,lcd:1,lrr:1,progress:1,report:1,detach:1,requir:1,enabl:1,ad2:1,name:1,earg:0,list:1,upload:1,authent:1,factori:1,"try":1,provid:1,expand:1,stage_wait:1,mode:1,timeout:1,contain:1,found:1,alarm_event_occur:1,expandermessag:1,page:3,certif:1,nodeviceerror:1,on_open:1,request:1,"static":1,connect:1,usbdevic:1,on_writ:1,our:1,charact:1,read_lin:1,event:1,stop_read:1,pyseri:1,index:3,statu:1,detect:1,parent:1,purge_buff:1,pattern:1,ad2seri:1,callback:1,content:3,pyftdi:1,written:1,reader:1,"new":0,awai:1,method:1,localhost:1,ser2sock:1,process:1,perimet:1,run:1,timeouterror:1,kei:1,state:1,numer:1,gener:1,stage_load:1,cursor_loc:1,entry_delay_off:1,like:0,on_clos:1,base:[1,0],ssl_certif:1,address:1,path:1,"byte":1,armed_hom:1,valu:1,describ:1,fire_alarm:1,search:[1,3],actual:1,zone:1,thread:1,fault:1,readthread:1,stage_start:1,prior:1,rais:1,loop:1,fals:1,find_al:1,ad2usb:1,first:1,oper:0,rang:1,via:1,vid:1,appli:1,keypad:1,"float":1,number:1,automat:1,filenam:1,read_timeout:1,"long":1,famili:1,batteri:1,chime:1,open:1,on_attach:1,differ:1,from:1,usb:1,commun:1,detectthread:1,support:1,system:1,been:1,beep:1,attach:1,singl:1,handler:0,call:[1,0],on_detach:1,start_detect:1,ac_pow:1,interfac:1,stage_upload:1,type:1,start:1,low:1,"function":[1,0],no_reader_thread:1,fire:[1,0],tupl:1,commerror:1,chime_on:1,convert:1,specifi:1,stage_boot:1,rfmessag:1,flag:1,indic:1,relai:1,expander_to_zon:1,line:1,repres:1,cach:1,present:1,must:0,sound:1,none:[1,0],sender:0,retriev:1,on_restor:1,restor:1,"default":1,remov:[1,0],purg:1,displai:1,dev:1,stop_detect:1,cursor:1,defin:0,"while":1,kwarg:0,can:0,str:1,error:1,battery_low:1,alarm:1,radio:1,expir:1,backlight_on:1,"int":1,descript:1,arg:0,pid:1,templat:1,bitfield:1,check_zon:1,on_fault:1,itself:0,exist:0,aliv:1,ftdi_vendor_id:1,home:1,close:1,vendor:1,ftdi_product_id:1,alarm_sound:1,serial:1,delai:1,readi:1,panel_data:1,progress_callback:1,author:1,receiv:1,anoth:1,belong:1,when:1,invalid:1,port:1,write:1,field:1,client:1,bool:1,which:1,occur:1,instead:0,you:0,event_data:1,channel:1,updat:1,status:1,product:1,relat:1,intend:1,firmwar:1,supervis:1,buffer:1,expans:1,decod:1,event_typ:1,ftdi:1,partit:1,perimeter_onli:1,wire:1,power:1,user:1,attent:1,basemessag:1,eventhandl:0,associ:1,"class":[1,0],check:1,armed_awai:1,handl:1,classmethod:1,doc:0,clear:1,mask:1,object:[1,0],ssl_ca:1,issu:1,lrrmessag:1,is_reader_al:1,obj:0,thi:1,programming_mod:1,track:1,func:0,invalidmessageerror:1,usual:1},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:classmethod","5":"py:exception","6":"py:staticmethod"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","classmethod","Python class method"],"5":["py","exception","Python exception"],"6":["py","staticmethod","Python static method"]},filenames:["alarmdecoder.event","alarmdecoder","modules","index"],titles:["event Package","alarmdecoder Package","alarmdecoder","Welcome to alarmdecoder’s documentation!"],objects:{"alarmdecoder.messages.LRRMessage":{partition:[1,3,1,""],event_data:[1,3,1,""],event_type:[1,3,1,""]},"alarmdecoder.messages.BaseMessage":{raw:[1,3,1,""]},"alarmdecoder.messages.ExpanderMessage":{RELAY:[1,3,1,""],ZONE:[1,3,1,""],value:[1,3,1,""],address:[1,3,1,""],type:[1,3,1,""],channel:[1,3,1,""]},"alarmdecoder.event.event":{EventHandler:[0,1,1,""],Event:[0,1,1,""]},"alarmdecoder.zonetracking.Zone":{STATUS:[1,3,1,""],FAULT:[1,3,1,""],CLEAR:[1,3,1,""],CHECK:[1,3,1,""]},"alarmdecoder.devices.SerialDevice":{write:[1,2,1,""],BAUDRATE:[1,3,1,""],read:[1,2,1,""],read_line:[1,2,1,""],find_all:[1,6,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.zonetracking":{Zonetracker:[1,1,1,""],Zone:[1,1,1,""]},"alarmdecoder.zonetracking.Zonetracker":{on_restore:[1,3,1,""],EXPIRE:[1,3,1,""],expander_to_zone:[1,2,1,""],update:[1,2,1,""],on_fault:[1,3,1,""]},"alarmdecoder.devices.Device.ReadThread":{READ_TIMEOUT:[1,3,1,""],stop:[1,2,1,""],run:[1,2,1,""]},"alarmdecoder.event":{event:[0,0,1,""]},"alarmdecoder.messages":{Message:[1,1,1,""],LRRMessage:[1,1,1,""],RFMessage:[1,1,1,""],ExpanderMessage:[1,1,1,""],BaseMessage:[1,1,1,""]},"alarmdecoder.devices":{Device:[1,1,1,""],SocketDevice:[1,1,1,""],USBDevice:[1,1,1,""],SerialDevice:[1,1,1,""]},"alarmdecoder.devices.USBDevice.DetectThread":{run:[1,2,1,""],stop:[1,2,1,""],on_attached:[1,3,1,""],on_detached:[1,3,1,""]},alarmdecoder:{zonetracking:[1,0,1,""],messages:[1,0,1,""],devices:[1,0,1,""],util:[1,0,1,""],panels:[1,0,1,""],event:[0,0,1,""]},"alarmdecoder.devices.SocketDevice":{ssl_certificate:[1,3,1,""],ssl_key:[1,3,1,""],read:[1,2,1,""],ssl_ca:[1,3,1,""],read_line:[1,2,1,""],ssl:[1,3,1,""],write:[1,2,1,""],"interface":[1,3,1,""],close:[1,2,1,""],open:[1,2,1,""]},"alarmdecoder.devices.USBDevice":{write:[1,2,1,""],BAUDRATE:[1,3,1,""],description:[1,3,1,""],read:[1,2,1,""],DetectThread:[1,1,1,""],stop_detection:[1,4,1,""],devices:[1,4,1,""],start_detection:[1,4,1,""],read_line:[1,2,1,""],find_all:[1,4,1,""],FTDI_VENDOR_ID:[1,3,1,""],serial_number:[1,3,1,""],"interface":[1,3,1,""],close:[1,2,1,""],FTDI_PRODUCT_ID:[1,3,1,""],open:[1,2,1,""],find:[1,4,1,""]},"alarmdecoder.messages.Message":{backlight_on:[1,3,1,""],alarm_event_occurred:[1,3,1,""],programming_mode:[1,3,1,""],text:[1,3,1,""],bitfield:[1,3,1,""],armed_home:[1,3,1,""],alarm_sounding:[1,3,1,""],ready:[1,3,1,""],zone_bypassed:[1,3,1,""],panel_data:[1,3,1,""],check_zone:[1,3,1,""],numeric_code:[1,3,1,""],battery_low:[1,3,1,""],chime_on:[1,3,1,""],entry_delay_off:[1,3,1,""],perimeter_only:[1,3,1,""],fire_alarm:[1,3,1,""],ac_power:[1,3,1,""],beeps:[1,3,1,""],mask:[1,3,1,""],armed_away:[1,3,1,""],cursor_location:[1,3,1,""]},"alarmdecoder.devices.Device":{stop_reader:[1,2,1,""],on_open:[1,3,1,""],on_write:[1,3,1,""],ReadThread:[1,1,1,""],on_close:[1,3,1,""],on_read:[1,3,1,""],close:[1,2,1,""],is_reader_alive:[1,2,1,""],id:[1,3,1,""]},"alarmdecoder.messages.RFMessage":{battery:[1,3,1,""],value:[1,3,1,""],supervision:[1,3,1,""],serial_number:[1,3,1,""],x:[1,3,1,""],loop:[1,3,1,""]},"alarmdecoder.event.event.EventHandler":{fire:[0,2,1,""],add:[0,2,1,""],remove:[0,2,1,""]},"alarmdecoder.util.Firmware":{STAGE_LOAD:[1,3,1,""],upload:[1,6,1,""],STAGE_BOOT:[1,3,1,""],STAGE_START:[1,3,1,""],STAGE_UPLOADING:[1,3,1,""],STAGE_WAITING:[1,3,1,""],STAGE_DONE:[1,3,1,""]},"alarmdecoder.util":{CommError:[1,5,1,""],Firmware:[1,1,1,""],TimeoutError:[1,5,1,""],NoDeviceError:[1,5,1,""],InvalidMessageError:[1,5,1,""]}},titleterms:{subpackag:1,alarmdecod:[1,2,3],welcom:3,modul:[1,0],devic:1,zonetrack:1,util:1,packag:[1,0],messag:1,indic:3,tabl:3,document:3,event:0,panel:1}}) \ No newline at end of file diff --git a/docs/conf.py b/docs/conf.py index 5ad6bb4..e06150d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -64,7 +64,7 @@ release = '' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -exclude_patterns = ['_build'] +exclude_patterns = ['build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None diff --git a/docs/make.bat b/docs/make.bat index d97cafa..c686d23 100644 --- a/docs/make.bat +++ b/docs/make.bat @@ -5,7 +5,7 @@ REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) -set BUILDDIR=_build +set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" (