From 21032af7690e45ea20e49bb8394069a9ac75e134 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Tue, 10 Nov 2020 19:03:29 +0100 Subject: [PATCH 01/21] for credits page --- pages/base/pics/app_codemirror.png | Bin 0 -> 12009 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pages/base/pics/app_codemirror.png diff --git a/pages/base/pics/app_codemirror.png b/pages/base/pics/app_codemirror.png new file mode 100644 index 0000000000000000000000000000000000000000..52d149e09ca6970dc0417e914c65b39a28e9de79 GIT binary patch literal 12009 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 Date: Thu, 28 Jan 2021 18:15:41 +0100 Subject: [PATCH 02/21] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 357e354da..5898e46cb 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@ # Warning ! The current version in this develop branch is experimental and should not be used in productive environments! -Use version v2.9.2 from the master branch instead. +Use version v3.0 from the master branch instead. # smartVISU From ee51e2ac097cf8db016dc39b83772186a7f99473 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Thu, 28 Jan 2021 18:16:30 +0100 Subject: [PATCH 03/21] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ab2acaed..74673aad0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ config.ini /config.php .DS_Store +readme.md # ignore directories below /pages exept listed exceptions /pages From 9d5a9d9191fe89c348223d7ce6b1f7a8fbbd1bd2 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Fri, 29 Jan 2021 22:46:14 +0100 Subject: [PATCH 04/21] fix templatechecker for sensible parsers --- lib/templatechecker/class.OldWidgets.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/templatechecker/class.OldWidgets.php b/lib/templatechecker/class.OldWidgets.php index 29bc2135f..21af725c9 100644 --- a/lib/templatechecker/class.OldWidgets.php +++ b/lib/templatechecker/class.OldWidgets.php @@ -82,5 +82,3 @@ public static function getRemoved() { ); } } - -?> \ No newline at end of file From e9b642449bd1a1315be8910c414bb88868f9c7b9 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Fri, 29 Jan 2021 23:56:34 +0100 Subject: [PATCH 05/21] fix widget html import import only if pages are configured. Necessary in order to avoid faulty page selection at startup --- pages/base/root.html | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/pages/base/root.html b/pages/base/root.html index 3049e9759..5d5ec9034 100755 --- a/pages/base/root.html +++ b/pages/base/root.html @@ -6,18 +6,20 @@ * @license GPL [http://www.gnu.de] * ----------------------------------------------------------------------------- */ -/** handle dropins */ -{% set macrofiles = dir('dropins/shwidgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$') %} -{% set macrofiles = macrofiles|merge(dir('dropins/widgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$')) %} -/** additional widgets in current pages */ -{% if isdir('pages/'~config_pages~'/widgets', '^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$') %} - {% set macrofiles = macrofiles|merge(dir('pages/'~config_pages~'/widgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$')) %} +/** handle dropins - only if page configuration is completed */ +{% if config_pages != "" %} + {% set macrofiles = dir('dropins/shwidgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$') %} + {% set macrofiles = macrofiles|merge(dir('dropins/widgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$')) %} + /** additional widgets in current pages */ + {% if isdir('pages/'~config_pages~'/widgets', '^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$') %} + {% set macrofiles = macrofiles|merge(dir('pages/'~config_pages~'/widgets','^([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\.html$')) %} + {% endif %} + {% set dynmacro = [] %} + {% for macrofile in macrofiles %} + {% set dynmacro = dynmacro|merge(['{% import "' ~ macrofile['file'] ~ '" as ' ~ macrofile['name'] ~ ' %}']) %} + {% endfor %} + {% extends template_from_string(dynmacro|join("\n") ~ '\n{% block root %}{% endblock %}') %} {% endif %} -{% set dynmacro = [] %} -{% for macrofile in macrofiles %} - {% set dynmacro = dynmacro|merge(['{% import "' ~ macrofile['file'] ~ '" as ' ~ macrofile['name'] ~ ' %}']) %} -{% endfor %} -{% extends template_from_string(dynmacro|join("\n") ~ '\n{% block root %}{% endblock %}') %} {% block root %} @@ -216,7 +218,7 @@ $.mobile.page.prototype.options.domCache = {{ (config_cache_dom ? 'true' : 'false') }}; -/** activate codemirror only if widget constructor is activated */ +/** activate codemirror only if widget assistant is activated */ {% if config_widgetassi %} From fccc2f69b5c7988ea8604b8165e3216b694c7066 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Sat, 30 Jan 2021 01:24:15 +0100 Subject: [PATCH 06/21] Create moon_12.png --- lib/weather/pics/moon_12.png | Bin 0 -> 65730 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/weather/pics/moon_12.png diff --git a/lib/weather/pics/moon_12.png b/lib/weather/pics/moon_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6282ba7a35f3db5ca3a04e33d788216f076ae2a0 GIT binary patch literal 65730 zcmdRURa2c!7woe)?i$<)?(RH8rcIyVvUVQ&m|O4VefT001<3IcaqO0Ez#%o#4{zz}uV@;3E^!p1UBHjrIiAn)g2J1u8pCOXldm*~VSLF?IFVSoN`)sfMjps>1 zfF48%Hbt)h#G6#9qHpdkhX(1`FFOHvX$TB2;M~&sdz!x68d4>0%*%!E5r1in0^Yi1 zf#?BM`mo=*(gF|P&!ys+uoVGF-wYr`CYBQEN;#(ch#jYtBb}BV&+wIi`YT5|#aJ1q z^7FvIz$ZU56~gPfAHwsp$@SqW6A3Q(W5m}5eu;6IiIG>ZFMf$mxfMAy6L`5V@D@J2 zISD90DAgQ|pQGT|BE81IOq_kl{;QQ%iP*{t zj|-BMGngXB+$XT66rDP3zHc7M-$w)ZJz47Fs>UxQ|HNCF8Csc{>088RdEdW{$;jz^ zBQ)=P{d>u|GnFk7mCXiCS!UByW&tV~8hG`)tQmwr*7_Kbqjk3QH&Ng(3ds8O`N)@` z&Raf3PMTF)`|gWf{G!*GLtCNF0YB9@-=CjBWs{)63(Gvj!t&f-4M@u*H)aM1hE* zMoClvZzBaCOK6T#OW`$wj~qmm_l=%VA>?~3t{!@2h(fMw2@w>7M|@L?F4t|^qJ+E+ z22E;r`g~f5Ac%pTbn!cyDN`z(Z*Q+NcL%0&2!6lfw&XW11GuF=*)8n{62A{!NEp3S zTMV!i=HG)3DDV(bOsP%f!0{2`aY=F<>ObeHKFcA@{xXmajYay)0w0!Vno58Y#Y78m zk@pWW4^<2#nw4>cu~(+D{_*(3Zi#)3r8sD7GEu|2EN)N2iUk(ezuN`2A65X}8{!*k z03a3-C`EzOfYbylCJC01`=VI#k%Tsr78P>{kxLrxH)!Sufy`g56wL8(j{$Tua+gGY zDfN$pacgoj1*o$`>K{sfx(B)E+{7!<9>-^mVwr=yd0Hd<68(M(D+MU3{Z3V1PLz&F ztV?r^bxn2+yNXvRBvKbCMbbp_;A#x=$$pA`l8L6ZV!)>#PSB^(pm)n;}^?62yLy1GbR`arE$6}C9;Tw$< zjWJEOdfqIk@LGYI`+Je>*SVGkj|M>~9F(3^mhU&hEY|_e&G|v+jl2boh3_809(a#v zPh(69^}Fc^qPaQ87{M?>Gr_qgw^oPd17n6}x+c74k=A~RPuZ1Lq*jKOQ(2eB*Rsbl zi!ui-I}P95Xf-~q7}Y7A&HMlfe=~Id=wp(z%pHN@e`^a69wi4TZn+46h0281 zh7zN$qUI2k62TF%@Yr&>`a<4eJPT=x-uz%*O`(cFH8lO41Fn@88GCL_{^hXcmD=mt|kK(c_SZhiBa9n--GAQg0bUAz6T2RhTuTbR8cJu* z5eDl|sygg6{ERJv4{G5y;rs>Exaere>v%qa*}cNs9Zl?*cmz!>ClW1c4?7p+)XrGj zSUgxU)DBcBvYxUtzvF+S%XUWJMYBeB@oj$Vau2YI@>4QXlKSIbp35DCvzfV!gi9@oX#o-lM#vQhoOL;0Gz-p6_;9^wRP?I&S@mwVDHY8 z0lk;0WBd2$H>F#-Uxmko{oZHZJl;-MU$0{D>HmW+pX5~5l?HSB(#=_?6w_pv6c5%V z-7d?=3*_n#&pMJ!8rq&!v-(;sw(gDZM^bijcAQHu4U0Ywk5HXsvn3B)Tf8b(65aFe zu3EV&IRoyNUXT8bU#Y)>e|2V@@Sd*S)TZkA6%Mo&)cy5mXucWa~f>c(v9QBS&&G!Z~C3>8OzGEV~)w@>Fe9Gz8#t!6UG+$U(#;| z_!>*EEXS*%KDSTtPZ$V45W>(uksaAO+gkHixU^JYIVSQ(lgkUco(kohLo=Au@A$aV z6{CamXY*CMRo>nfYq!2;4eJhP1h7At>Y!8>wtTQPoE2P2-r$`l+uR7GI*_&svy&Z< zNfsj$E_JK>mv~iLH&-zCqu6SSS%k|&+ud`=0NNTiSup9lzdN~k5OHwSiRrgJ`>8u} zzrC|<%D}bV{i<$!4@c*V4zxQ(rr83Zdg6)hEUt%0E;@{IXtsEZZJ_K{KSBbe-Ba z2fK(fMgwC4jcE zAbwb^`$cUrOEzdfC$K5qLWMPx-^KNH;3vWv>Fx7oc*n&-|Cea$S)uSb_re0@kytz)ed%>EwTBm%Xynp-eNkHKKi}P}K zV^=`!^GUri@us&3o1UiX7M(^e(37K-kD(bMJf--4LH-848X6ka7;ZlEcYWU)k{V|s zF2)lazrTIzmvvlkYi(_AH-@f?jmYGyCGTm}uuK)r*?2lTr=r2XRxH?Bo_f-)uCI?f zZb1J*DKeC=Dsb~@ri#4-;{2+U>n>X@^8@l04Zb}(pIm>1w*o^mwkPBv_Fr)>AW zrtRTN3)kqFPOH~28f$w7P)qJ8o=B()f`2UL;##X=oS?m7MD!!4g zt*_HFTT0z*cW0B!-`d98g+|YM!cGa<37K6}&)274_JM&I&P-wRp%bij@k5)tF7a=P zPoe!-@mcZ4)E}j2I%1!|xCuTLe|5?ifC2SI*(V`kVZ=kVElnOWn3mlc{&MZ|m9Zm* zrk0jO58uwy@)Wi}t3an`CWE*2;q0gWbJ1se-d7;L!}`ilAqWhJiDPI#Z|J-~iuoXy zuW$P8?QsR}&K4??udEqVXLY^5+1uD~%+E&Rvstvu`Dobtb{gTwrdwty3+aFP5{`k_ zadNfCWV)nLs0F7jiHix>JZg@up4UU0T8f+@%TPUI9b1&?(QXLw5EIujv2R}GBHoes z%k#OisNu_R`}w_XYt_o+?wq~Xz_s(!*M#bq$n$`A80ov;rCuCx@t6CoXItyDjnx5r z~>(~{Ym4I4WDCsNKSnAWK?0{ z2M2eMWu-O>`#88Kv|j>3rsuw<@v23N2WWZ2$poor=_33@$Ehy%&6nfr6AecYfHcnO zLgwXv@%ndf=4S_#EE-f(scmo(?d9Y>sI2>%wYnW;|6+17Y^il?7S8!iPOgNEi@inq zwwCRC7O1O#WdC-Rpb~H;R=GedcE6b6#QXL)gKa05{|}k>-?)>vISlhX1%Y<=N7p-O zc{NLFcRcVXw4&=DY;=WT#P z6~e)#>QpH(h;${L$<1wT5s9th>1s{Q&0*%LSL7ropG2=qwC~j#>kSy(<|m4G#psjD z--k`sUMlg8zU4V5uWj#MI64?nf;M_p?*62m2iUvqjl5rM^{c$-?2i78O9{NlI`Zne zrCXsy562mfvBD5}VZUo?1gP6*BtCq2X=>tyDUn(J3tQJI($T}$fN&P}wVm)-XVsg6z`TW`kcj8=ttE&DFmqUmo+HZ?Wj9bGzGciEJ5XDQP`bMq}& zwa`Hl5(#y71K6U|A|x-8*|#wyn|cC)hewrmUKjcF>7FU-5Q>$ZmO1*G*QaB}SD8mA zvex~-n_b?ov%`TGA?KFW9apa>z+qXmgTq%hF8$5r5j{D>%1O?RB~EcKw8L}EX$Bb8 z^;p>FR|y~^J{3~fkSxwP_{5X(3lIY-B3T9B*xu4|Wt<~)KNQk^t^dyLyB*U_M#V{?D-hf>c1tZN?L&-umVaZe=TF6Z! zCc!H21uu{i`zQXF$~0GZPYG^m17CCh%*_F`y>&12w^E|U(jNSe>7;9^MEPfx{-N5X_>^p zLcrUY#1vjuOK{aP`GogyBE9z;zA9!YC#p*nB-G%-y;4r%F#bLne(X%E*@Lwe@Qr1H zpN~p6-eZOpsO@5!7 zgYD<#%-?1AL0~wb3q$%%UaRL@Qg80Ffabh$nlf$9+rP-}oY#%(?yS$Mih*|tImohb zaUTK2m_3_zKUh3*WF#j}LQC1^raCxD!$eFpd8`K71OQnC$|qnfhvNtBSBS2FZDRje&uK0fe#0}Jxl@$r8kJ%${#RK-d7Luw#4jiWYP zA*+auT4V#dIx!>{Nm-~~JsB@*VzWk7G;A-J&F$&4`<@y*usa;X`Vxa*O(HzCcfWT* zXhQ7|aTMcXND9DHyG6Vz4N8JhDr8H#9&<8mb=?~T!)~SwUv_D!16$8BN92ZBQ95G$ zEw|?$f=u0GW0A7PzK^Rb&0V)>eR_f`#Q|^lW~D23)m;&<=M<~M$<3YqD6#s8JYM06 zOA^1!g9*y&6m)~Lj*9R2XxM4Q3fVyl#9McFo+Wdmv?T>PFb|x73yB4CH1zR>B{fN5 z4$ziRU)|X;Ltt<_&f(lK8vVH&>MqQquhvqql;$;-Z zJRX7gWJH4M;9`6Lp^%OOOV_@ZT5P*m@iFgDEP;wZWDJOohuH4G+%Nc z257#MdqBs#!E$SxBFht=jz%cXNVizxEl4IdR_#9{TAQ0gKK>hGLRk5Mg5P(TTR>CO z>K(M@wmWnSa0W8XltvR_SQ}8>{@~tkCO@b4f_o^yOi?IlQSc5OE?L}YaX}M5g{RjG zB`=i2fT_?5OnPw-M~vQep@wKQ>R{BEa!{Y40iA$lkDxP#aJkt#@wE#fDKWG3%kMqy zIDYx(`O5yW&G(eR8^8Ty12g;-XR8BuE;02tQR7|P(!5!U) z@rTOLoJPZAHPs+1FH!y{$m=~XFK^X!@;z!|p_EI?(X@*)AQ7s%G4{g2ZfP6!?qAGQrvW=6Stl6-jx+D=BniAuG!eVueM#Jp+h} z^p;ioeA}<}ql(5(n?xSJZ8L#|xdv%PP3;09l2;nY-0!oq>L-Z#AFZR zRW9*PW_R8QO^Lm~5O+UBc0Xvq{Uu+2+Bx$51R6GV>6pTW5Gpo18ouh6m&?8tU)K0O zVZM=~qPu)E7^^aB$Fj4nHfqf@-1drT5uy<;WG!T*kt&E$b%En9WF{q!5xay9txo{( zGRSInBMqvg5Aw29fW&(^(WT3_g``=+ItuIGzf|aCPf3S|+y#fanw7F$0f+ih7z;{Z z$)R4;cOs!+%2O`iCxd0K4o>Y_fAdG=zS{QsH`931S@MN{jQ({Z;0ZvheU&s+@1zsY z!s)lA*yX^KdCuF-lm)r()8W~nMzQhgvf!0jrJjIF!dS`Q$eSofWv80GmZcjKR^LI) z_57e%9hMM|V&Oa|FFCAUsYm3Fhi_!Le(hu=9C(?dMElGJ3SQJDAs7FjNOJgQy;R-t z`s4Q3ZZ}kDO~C)MFYV;1vE0U&VZMKYg%tj_Cg*gATUGdIE3a~C9K`G6nv{$xr#&0b z(YRy?&m6Pv7L1wZTZd-vxApMzq;{BWoXr2F_GFYUXH4{IS+;(nae_BGo{nz! z(tkn0I|EIRfyPO#&h00M=sv%~Y3HLUs$HKKp9wMJxx zE)5&jZ~{4X(=+TZ!{V#-Xabt~UZpD`;S-B~QFLmE-cNUab8JG)FQN=QwiAa5^GlS> zt`^)CuZzdk#t$1I7-XA8q#| z@3Zjh_%?-c)HU*F#*{aF!C^8y?VhK!>hmle<;NgrL1uT`mfl{(9*uOI8d!c(JOwqU zY;Tw?I}n+QIZDZZLUeGVctKmmsUs{9N`~n$o`#* z(0YYrFt+s5GL4%t$)+-q@5(iRWOZFWy~6-*;zlN+sSghW?MTK(#;&OIYk}D6S8LUj zCNz)`DcARXRpxCWZdU~%1wZ(FhTh~AsZ=&-$+V?XYU7+ zPoJ1~RWiIcLavYjKaB9F-H1Qe8~zFMx83alw|&L$7x&%i{>MU_f0~>&BuSb76Uh&; zO4*%n&|_e$QI)T`N%@D>lK(3#2TdhRfr!>BCuka05r(}H$j{1p1qS|3eAd?|%mx#D z*9;rLHu(kF^@ZSKt5$olqcnBVop>qO>`!LNl6GescKZDAX`G?a z&+(KD(v??bkbnNWc2{EF*3={^GK5?vO5~QhgY>D6u}8lgGz}%b{FW22m3M+-{J^xb zFM6+7a)oS}ehrA?P7}VlWM}eun)D5e7K)!$pws72^}1Z49u3@JQi#$lw+H)Aky0Q! zz;;-F&25Lx{YHn2f?qQny7#9*tofGl>n^j@^-Q=t0)tjtJaeCStn^G*y?t%HbH{pF zB`@@JIB0l$z$v@>?+Q8B%FAZMsmIud;>ca}qW@_3e6GJW;Pr#O_C&Yu-fTwTt6leV z(#e93v8C6)bwrbFu(X1=$h=$@kvu&|syAkCVdrNaHA{S4SZuASR{Xnv6Q?z3>B=8& zwt5J<62$~W)*8fRRLa>@(dwfqIe`S1Z#)Es?W;pWMA)i)M{;)GlhA#EE8e{`SPH1} zF+R7u`$Jka_Mv+s?=8fQ{3)Kq%9nNBT_diEE?_cm~_c%mmzw)KtxTP zR>GVe>VuWYQodfVZhRkv$J)MK^xmBmD4_XuxcY4=B}LGo;9xG~?cl~-a1FnucwshD z_+%;Yi@u9zvHE{M`TlUUfjGk$y3uu)^CD*aYPGOr>`O?igXREhLO)2l(<$Qh<_Bc` zDdm!&3o9!>yt`Zb?k?6N5y}%I<2`3H{(K-S28K9XJyQT<>$-`3%u?;y%mA0cMivUOOCFe9)ZLEc>hETzj(474U?UwGuiFu>=7 z7H2N{$2v4>@uE%H1#`Oe!oj_hpLAl$BG)V3O3yhxMy+^dR^lXpk(qn)C6R1^T8tFM zt?CZ${Rg*Z{HmrqPZ zK{Q{J1}#0`UyJKCiq9hLphpG^rcVlmq>l+A%Fkq;qDP459LiXP{?e2>RR$=lJ7@nK zfjaeqY=iOm8J2M=l?Ly>b|5uXwWE2ViUEcepOVKFKJ6)skV6V+;gfshvp`KbS+#p zz?s89!qifs|+7DG-H1(Ca@oJv`YLeN?);kR_9SRTfe}$%Lhz6XX5dqgbJ{ zINhZuQrZG`QYLyGdjYM*58&l~sKYz7YDg^FBHp7olu&&C6ac7>E-uh3I3*F;viL6+ z@mFhD$sGx8kzPhGYl6%i8Z{L*F)ytX)OWsn-d*B(>8{M4njT9h;&OMt?6IvT?zHqX zr~+HQFAzMv@%OXF@%_NZLHxJP6W~Kb1dimP90j(!W~sTKmcW9_LX7|>qd$^*S&Ipg zjVimERuXp7i{@8+L^cizs7D_-REhQ5qAdh#?-`H(Gy;kWr`tIs@1V40N(36_=?=~~ zc7s!x(~ogzG*l=Bmu<6#?$8(Vs-YwSl~dfeLyW|YJ9*mbxb8qCqWe%el&;7T_KUs4 zx|H9h#!C0)rAmFy_Sf3PDc8?TEr+;Rtpy=l>a6ulw*!@}zpVm~Y<_&k-BR$e>?4lg zq_kitC1gmQH|*L8XEXc#N;-)q++n163%UUEdk+-cHK3|Pm$2S))Z(-V|1p6{)o^zB zK!s9x6zvdFj~EH+)vHv&ji%w{J$iAEAp%5Bu+aFqvEt?+U-vN581<+hMJ(V)kME=3 zWcKTs>|Oiw`%1HspUdqpz75EBRES2IOF~eCx|Gc?XXKBpi$nhq0QrQNZ0JoDIt|u& zY3LJH$t?PxETHMQJnA14+{qX#XvbVIw{72HRA5=Z! z2|kJ-wau`e>36+ytNO8*Bzx~)&Gx>XL4TR%e{QrPue*1R{b2F_gWh=wL@^J%bQw^k z;&mRX(U}c(fsD})@6U6`##-H~Un`ybcYnkLp0{s?j;^8U-m=SMAn~t}3OFznUQ2r7 z5f~bp`V=xO$V*JqSPM!=6>CVk)8X}7XsT(kBn?E-RA?tmO!`zv-8y&qNMmk)Quw=0 z6Vp>}%VJU|(ffr#$;45ut6Uf!Pyh!#-aVB?E5ru>HK4&uJobRdG(ZN*mK>nNLo}HGu+<7xR3J- zvo+-y***$F1ndKY2_9kD7fgdxoaY@&=7qD{Uc0gLvFS`uMBsQ9JoIIFHTB1eNui?o z<^N>&8vhWvS8&)gu6~~GXqY*UQQlkcWz@n04q)0tV%o6)rYYfTCDQgpeZm#7CEGhw zPW%qeoBDfqE3C1YulGZH#nna~51%%+)pX1-zr)fHYM3bS7Bw`m1VwN0ZVO7ZNSQq$ zlB#*SFqPik{sNF_+FoC!09k-5bD&Jq%Px=BuKn1vagJu1yMSh160Y76gXl`~a z?X6P<%l%mHLiR<|D>}tBpM4H7)Ul_}iZ|r~`tHi9m`af$UD!AaF)Xckb-pShJzbFE z`lLpd9y$RTBDq}B;8JQtBAe#u?=~d4lIucYB|DVKAn7L4P~Ss+zx>bF-pu0R0pb3X z7F2`jd=Xnk76bz%TZ{p&EY>j%_(foV=MTos>gk85dyRBliboZTRMfJ=`(9AFD(ijW1Q)tC??mn}N7dSSis z4B2QBN>nEOoqX0}JM}6rjtVL)OG;g)0aV%R?k0CRQQgHDhe%HA&8X8BPNAz8`)lX! zw{s^aOQ)$Wi~#1VMZHs#VTRa`$E1JwtQqQ&X%pdkvo7-LanNTdH zr}acc#nH+*=yuH2@@2mlqc=u*)#Z(t3g+xn`ye3=cf)3E&seVd09+_;YJqT}vcwEK z{(tTUB;lAc4k{i^zwy*5n(@8i^CH&rkrEmBx2Zsw+*()5s1^k{F9zDxj-T&dPo{OO zNe9SnW}=2tcV1y_^0V&E5i3TbIFTE&;Okq$-JYL_d658JC?mnHFL%$z2nDc3@Z{@B zW#r)8rGNf6LN1haB*A%+%f9m*W~xl2Z_B%n`)=1lmBswAuoY5Qlh;TQizzt**OkTR z?M}zl;vE3FwO{v($T)v=} zYX||&W-dMRYiPz~oCzRat5}r_r%#~Uo^r-dVpAxEqcXOM^*pt2ozr`=Td+Ou{W`2-QSQ{0ZD^IRDk0-kzHSXB8jdDKVXMOa zIUCZ%BXJC?zCDUV*SBcib1mMOWSD#VkMR>x{BQSS#v+k2q%RR|jv<9!i!I#Mb{%}L z?qxbU>`GB8G>{M`VS|HeG-r+z9dK?Qo5h%OpXi(WV#^x@U4q_%`@Kx1I?pk_2 z&e}21r>*B2HkuwpmetN?Q8Gx)D=ytL@)Vt3dApGiW6swq(&(GGcF}jz8!{j*ww$xl z@qBC~0*Y?tH56b8mX`RWX!x3()M^G7i#1HnF8BPqDlTbaiDNMzcJdMpE@x1AE}@M~ zC1c~Y^@^WW*dOj@h8U2qf<8(Z$f=ULcU>=gD1WAi>%pM{TsNLE=RZcSZnY z&RFrQ=LbUi24)jVMK6jZ5wmIpGaP{VB1I zIg9pFR_24SZ|6;)YwzMAm4h_!@M9iEa*JKna4~_nT*6+s*51PmIYnn_H>;l*mT75a zM0}K?v{ulm;gvz_ca?g~BnBw^TP6TLrjvr?17O=z%O)al0 ztfiIPvrv21W8YwVVI*SZA@}jpLZ{=20%{)XJyu>pNI(H%ujYc665+?4Hua+W-Quqo zAG6+W%=Mn`$X|My@B`oW#niurP>yAN8|i3%O_g_btI1F_eY@jAXnb^9&5&_z+jr_! ziJiSJ*Q7g`py53Y0_S=EX9xr&?>T{7jB++{BzdlGZ*4J3_ZYjIA5({UzuXx#@}866 z63fBnZ&OTT1HLR@u2XIYCI2H_FdmnP3d$uxT4 z^$pSeX87RnW;4tmDyV>`zh>2wmRJg9OGcZNxx%QfO*@m+^% zW2qN25E85`?o;bOZgld-Tr(JV#V={!{pgUBOAi^M`FIH!ISR?)3flxG{S)n5w3s46 z$CwhnH+VZ`^FN$w=9pq+?%J?IUeg9LL7UxBi(Z?zpB%SUo6$<=4Bn3{7v2y0;_8eV zP#hrXK=?j=%R)Ch!!anvKc!Lg>%RN6Q9Z`>*`G7roYnl)N$zCR&g|#fHF(85L4@a5 zz3$aOdk6nVtis>=z%=D-mU_rG%^4)~BZsHaP;ygUU2c+Gz2Q%xS;V^zztHP{KPudJ281TkVPf#9(B!lv=H34KR-?Ae$9dwJPJT#L*~0k? zD|DWrJUVR`oKJqvfL8WzsAcb&mb_PaTEjMT^#xW&ccyK>2Vb2IGXH%B4~VyHH1dzS zKdw4Eqbg(=TyVi85QE2Iv>;Tm60f18p;KPVAl)Y={;wLYU{kd`jaoX7yP%rD_IJfp z159{3U#fBGXwunnfrQv;D^`0KuZpa|@bP^>c2?vWgGxsg)t56wuKLzEh{@KvU3#G|%QJgZ6U zglV2C7*s(9dzjN(C%NwpOQJ-fzs-y0g1y`dZou^>h@_G`A9EU9Y|=0N&nBaU2^<_6 zQORVn=Sw9?7a2b9Hs;BN5FOXNeL7J2HCh6uP?-j=J13-Y=R{yrf3z&-|(FO=B z7(eT2L!myUQG9jZ{mVL*tTi3iOe8+6>6TV7IzNCm(Pze523YRMt6lTtQ5CaNq#L&K zXbRGK#&7^Q{&6pJWNn4-$9|eW_to=qiz3STbYgKZZ_oZiUat+VZuQ^d3_^-r>0#JTe*2JJ{3s3kaUwZdpP~<_~b2460+|f zmwtzMkA zJdGW`gXBw-T?Y&)!Lt7dTdaGCnnrz%wmqn3%WH4|e;JcCB*~MJErg)MJtw!04rJA8 zna;su{+qF@C@3>8%W~v&5n|V=dBCPy(y#wV*hb)-9gH~JGdoE?oi;3r;vRYr@w~j~ z+;2R%6ACr*++6^=7VI8eoC?+u- zv%gpl(g$wtg*G9^q*`U809`DraYY@qOXI>u`UR&mMxkgw3vEe_j}0GRjCt{SAVu=e zQNObCs=g77xJk`!X_Nv22So)@&N_9d|NVMQ#K=%d6{$>J>iM4?pAG*WW#=2C56<>Y zH*$4P;KTaw8d7Z4kYXqiBO7nOi8)O;{W%U17xqTu_&P4z|emYMnc0VG1u%9m{K%aVKx6+n2}a)+`~>u&2uk zIlxhz;c)&{?-%Z2lMj%$rNM8QO~XO(<|Zv5qXje>KTzxgPJ%TZ3V~$n>&Nd1OBuey zO#9c>I0tW?zkdC)yP2ugBxz0qdx3#B2JCs;B}G0bZAB68vLwgmwMyPtWF`x|C$1)_ z7A#(`;;nlSXw9@aws5APV^(ViE$N{?IJy#b~d7& z2+OdSUKzkIW8M$YufqO)Um>fd+xTVjk{U4?)Xms24bP2t8Our?%DUG$rZ#5CF84)7 z4LoW}zaY^sxybiz1xu;gyk$ftH?-EE+l7aidb?G7(Y?k=&Pf5wzKXDCvDd;blc(gNb6$-^9U6mRG_+C1==2EXEnnu* zvO}Y{2S=mPQj)haHZzu?7d8m|h{o+0bGVe#U5-2C#~PRj&t3pEfs5{sQj z6-}<0{`pR+O{?tIQ*k{+xpeJJhp2P#YKQ7eXj;U_vL^5XCkLI~qe%lSy*rSFr>^-m zoW)UaG7fgd0)ih?|GfZ&_{7WZ3_|=vcY#Nv0pAi?a0Ee$L|J>ef(57oo4&%mt4wP0geQo9)F`=)*$CV?~ZVnrPaLk^2I#s+pxBoU=tA3#9w?Z47-)EBQA|PD`MV z8DF4YDxRW(lN-bZ!RiSw|Hk|eJ&7A6+56KE6ad7l*Flb9cPi-RY;s6VsSEIL*yJ;i z{+#~Wqs7b=k|j_y&>Dj$sw9xqG~+_hv>QvV60EG){Lcnm4EwW5gdXR6f8Va+dY*B6 zbU|#64iu2c?a0wbuSx{1qCY3^I={h z`AqjAaUV-)g5%4c5dq3)Ons{JL76g5$qIH}{k1dTyIi`(jQv{?8%T|!%B6F(#R^E>8sy#_w@1#PkLLh0M z4zrNAL>|T7(CSiRfQcieT(Kem>wrR0AQEgLe<@qk9Hd}aPrXIO{_6%rCSf&uK{`*F z)5;vebu4dN9$z{MFCP0*9M9pp>oE~sYg`t@UY}feJpFNui^Yn0oMM_72bSC`PrK~; z5z#ZabN27{eC0b1Vi8}@N`OT-tZO|Nw8!J1=!O)Kg_|7@KpIKszBzlgzoj4Mr@+uS zjdjiOa$>%Lz`( z8(lu+5-x=H(*i$2hkX=#s)qoX51+=U>tH}3_XCz_-%2Gw%J<>oh#0Kb(rEB^Jz_vC zRwR~iPF+Mw5J@#khzJuW!md{7G(#GdfSJ_F0)Q2J$+ZCui!z^hzv)~$hX6*Xb0r$=$^h4__OQi*VVDM( z&nE9Cj1U-YU7`AtE-%S22QRzD>!E9Wa!l8z;MWDK1zNhAi<^8UC5M{%s>ftfSZ?h@ z1{ROL|86MO%c3QOf-6-QFa%Hk*;Q(vE)06^?s?|>U|kzOw(e(_`yDD8?~tCFGe)n< z1g(N0=SQc04L@$Ya4xG2R~T+>t&D+e*wu(9DNvE6fq2H6;zN?00o->*nisV4A6#$XU7=hLzH#` z(`@iqCCK{K8#Wm}-GC4`GxE$4kK>k;F=genmk!6)a&b_@ae_P_R(&j#dL@Htk>nYw zqdQ$F$2{zqz0C1WZ2b(5nqV{prgMGqa6tUhoqFE-iLr#K z*LS%Z7Sdp-mEudea_K-^;7JN?ti2aRx{X`r5uVVT;+f&ThPbgaFlD?Ky?N7tPO+5jwxP6UX}A*%;zNaZQzjA zCMmhNPHr72(6Vj*U1L&X4UWH83iZI#ztfDeXcPQ%lj8}?i1Qbtldi2g3PRj zZdKQ*oNg*m`5UuBGsMP`H)z{1D9@JY&_=isjzB%B0VxcQFQ4Jxw${Ifx%rWw4f3j} zTLlLFUwlBp_DA9bk*7EXazG7Ax?E%`QYiFOnpvi%t=y;Fz*@kGcvRO;#-x0=vROSo%hzw}F3jL?{HVo=+hbqLB7oIDi_h&MT*ttwl7T;z!*XN=ukIjP|ZwDAtm9D(6i40+m-)2Lyqg~M@ z?xs9SS$2bd09bZO2}|k6_i}i%1VGF|Q|ZW-Ax2v~btd)L7Fm()vx$}y9%sNI+E0&^ zu60HTBmppy-(vV@ddg6pRt48Kr`ughxHF94Bz=6Uw$lwwG3?S-00{b|u%Z+OszfWO zNrOI8AMfwQ@qr}AM=8>pCbUKHig$!qPoTFZ1?;orcX&CjY-hX&1R%7XF&|Qb`IK@6 za3>I-p|2ST^FqD8$fbw-{VCz%`5~k3aA9%rI+M_?N`9=?Y*df7n$JZ z-x?3bx1eorX=!cy!iDQ+^Spol=eepeV&eUpoD zD@sFsQXMeiHiiSO%rzFsgGsyuo1Hs>KWuw)93$C0yc}EhO5?U9t|_-5LkL*198nI) z6k)dl1u#PmU~&WTL=RliI8AcOM@IAg?j5tj07AF@oq|B-xcg8fR$30D;1Ilk`@aPfS^ER1?5U~ zGl8)!aY?h zJIl~_qkya`)uYr!dYcdzxlS7`GA1D|hFwhooz}1{Bl>1HLPaEFiq}ihn}zVyqAY>g ze-NDV$xGFit#nMw;wi?mGp_keOzVcJB4(YZFYTQt()&A-G;7$4YmNtO6d_0^#G+^h zkL|QmJky|G(3JL&D*76e68EvXK%X=b3i^UG?|_4TB!r&65|j160jx0za2d&!u~gdZ z_Q%UqGi^4?BbGAuS5_BBomK;Twb}zg_oXss?fm1!Z*DUmA22jo@i)Cys^s6FOj^J5 zgKO7bcx-EH?u4V{;`nJ$;I;rDObL$!_hlbrjJ-4*<^TcOmZO+>6Jwi=P$6N2Ji|c@ z!jfBxifoMT7+)0OPy3)f4mLqaF6F+fMv-R}3N2bM%wui%ml>&eQ$hrE(82|zmmR1W zyPu^ZkSQR_aU|CehhQl45&K77)x0u75Tf-OU(4$u$SAU~oF8YKeqGc}y7sQj{qm`Y0rlpk{lxr-bK} zG6P}TuV-4Zn&bg2rsH8neYV4H7*8jd3Oq@oq7d)l(MU56IlRwPVV;Q{p)E7|N*-eB z!X_EgrPrz0$-*)MYD>PeB&BzEXQe+Sy@>t8v@js%(E33eag}=c%-SQ!M(=57qAUqG z6Cl~y1=^69PM2txqeivedQB63rp&OvlHPiK_O-5dU#2ZkYzIKsX@yfHJG!;T1nI6e zPF518j8iS!U_5QucaoyI=m*Q6;^)zYUO78|{`?;nlAzDzr+3^I0DM>T9X&k#bWGOr zynTq3L`}At=MBg8>>jf};e8d1dljPj&{ij4p8sPQGgQizF+cn8gsV8@)e(b-af`Hu z5sB-1h5HOP1f4P$0yJx&t{fiQ&N2KM=7zxpJISw1@A_Es3M(WU$blFO#nv)75GvWU zRw?299k3Iy(uoI*0+6{J4L)Qb!#prUNH4+kN+?O{Q$=>``9mBOV!GijVyj!ji#};N znmjfm6Xk_h6p)gs1)~5l>WtM9v>>US{-#@ev~3AA24?F7ned`=0Vb)DiTKchoJvxF zn$Syn!BDA+64OHExD}c?MmWz5C;A?yM9crq;Z<&0s=t6gQt3m1m__Xi2=GQv; zAN5WFY|oh^xo%sdw?Rt^PuJ`hADgZ^?Rdj5lj>kBBw&sfLN{~|+5l2UtKF|rAQUux zUa{R5-}w4?<~{O`vm-}{zl@bDJ}#t7G=nK~|9AvZv1gO@IB%E#YlG6T#2$mAZ+s*F zqmO^QrX8>O`z#T@UhvUnG z!81nY%f~o$G4!CnB8{+459Bk6boDv-Ovn^vPXJ$jL|?{i_od{CDUva8D_dyQ zaE1{=<2q$&Mj2`e(Py6#6QV-rWHMMEcSoN?1n91cTb!+ zkt(slHknxoXNt>3OINO3new^?XR7SXnKRN)qJ`$-wGaDoTLAFS68%va>8*U7^+@|` zcq|XvlU8du=`!L=I&$H7m=#-`ti%k@A7*Wwc+){?RO+G#%drHs?n%z9EugQ>xKt-0HgIZeV2!eHbA)_Bay1)mh_E{R!xRjvs)_h237SG)>jlt+ zVFa}jUK9A2>meJ+1+=dUAPFu?TB=E2R_YUELPe%<#&_7L$^cSGelj7A3r3=5nZ}?V z8C?mIpHb0xf}IdXQeufTFr*A?*#eb}>@jCXr5eRy?R%{z_c*t~rcGfb0x*C)D?o?GUjQS38a~3wCM#n;$CS+m;^nuQka+`L z_SW{n@areC>}^}{7R7X~U$0_QW^8vFY!}vK!X=Eds#kf$N~Ph23l|0eW@t&~`LG{% z2mq$X02AaZe7g9{ru`|d-Ue@MRiV)yLf9V3kRW(ftYI!;QHsqXst|!Z6wS4eZmB7*37j^A!evtUmOvnHB?+a8eax^8lgz;jo{Yn?L>qxI z>W#X&L}Ee6GMy$Y3nHbbVmbU%iqjRVBr8Bw#sY-*{0N)oP3=g5!pRZg{g`PYagvfO z+cHz1Nx->RtapBR-~Un$wE7`PG9-XBw)N&3Vrql;6^C6D8nbMYAWoz}BtgM7fRya- z^pyri-)EJ?lt>+3vm))Y0=)kmFf^RsJ_GAW?Xe-zPUw!Q#?0suNkWtcI&PHo^d!4P z&#n1~#6mb2$y$Y%?--#ISAY=QU-6yVdU+B5V~Ziuk<2GvnzF}A z`4G@Vr8R&+#@$i%gz7Q41s;(1S|qYn9%`T}eKwNw~?z0S{Q66tN0 zcWsAuGJha>%<|cuxRZX9u4-QGlgQ{wI}$c>+s~*EsZcc#LIqHeCIE#dQEb@Qq#;S8 zYzIet=)5Td3B1YwxWi4`YD44ltnq@^V1lg^3DftVxbh`b*Hl{6tqMPId8L{_axcTT{u)lkAzkZFa(Z;or zK@Kr*6G)M}%9K*j8F(;^Q^UEC0wr~@la2gPAGZYn|2&HCFrwPnHwJKay;3sh1AP^Z z)o44SSJZGACJbWdMAlXaPmVFe1vAv$5>j5dyw7mOmIq*QI6N7L=+M(D(n@)V&SM-H z8<}#yG^B8sLcrqG!Xi0>1pz@C;&KZ>)-lZJ@d`sL6cR#Zm`c@$XGSeI7u7~2Km=3L zN>Ya;2E_U+K)`GAiz=&!Wg8nOqXf^$TilYLbnzrdgg~e>1IZYIki@(46(7FSPtw3> zifd-(YA_~c`5pEe5EhG?MJkibmUQrOx|JA2LWwMlAf$L%8zltaxPAF2$~K&m<}N)Jx>1RU~q@fxojHn8G{^q9=@-XMMqWcXDzTcJ@60aL+Y#G zC_!o*0gUV&01p@dO)8*=^k`K0RrsIXY7Rcqp!`_65KCo1~IgjojkJZ~???Oeb8R95Nz7b8dSCH&a@lQYh(E<>-u8U7ezo zX+J0=`WIem>NKC%rAaiNKLV}{?;^qp{AXPeKB6kkebf30X%o6i9Mgx|N_(u-HrZx@ z%YV{TheR}fR#&)U$UkC*jdW5XCfhr8P-3(t+Cy6{I3(m*dj-wZZtLbg4jOHp0$)gW zl3W7&P$Q4DnW?_CMZ2f8^2tjBX-5Xykm#ZFs)}a74a&D+^T~x%+crxp7`nNIjfZ-G zu`SKbzTRn7KU%L=mx-adkH_~0eR-AVkBW>2#g0hyfItN_augBBI3~{Fe0h?e%Ns*p z`%pKy`a``_^=$z_2CpOL#~yBO)fhCf_m1)rDsYW3yGeCC#sdMsm7AcFduO@!3?_Ez zTNLL@%5i=eq{VVJ1Ud%L5a9~JF-(Z681d3Cz8LrcY%ULmcX`($(JwHXs&yS^!u!D} zBaOTSbi_Z#pF1&QtkybMD2U{dQ-qN2@SAfF8H@-g{~-`c)lBqff>Bkc@z zA*~-tXkX$)##K$HKYCU}x-ye3fWf^UQVmzs)XXOKxPrv}1|ts_1lk&gS)*7nA;CECS4r8e3>`p+?D;y`;T*I8!QXjE4h8?`AL z!Y4}Pq~dUwKm?}>+calGq?$zx=co*9g@ylu`$Qx< zB!kxolI9l^c48E2RIWmFlTjSGAw|i>B-3uj7lV&`oS$^Jg^jWO{0pg%et2$!qZA5Cl8aqpCu#`;W6xS`F6vNaOV?!b01V3UK?#_uz9D_m z2K!|n1VyWn2Ju@U6znw>kWT}tc~YBaKsX0K?|YDtlGC|O7Ce&R9Ke{QE6blJN#`-A z*aqu|-m3p)>NA-jY?!^zIO^tFJQwLq`8<_K!?L#MyN&Sq*)N?jA%XH+;5K~7C6l8O zDmt58RG6upbQ~+%ij5@j9m&4nYJlBGz|?_cyr>>@La*F9uClV!Y%^ixEXx~0wq=&( z9l?Th6ZPnjv9eBAj@UzjXuC)PU0QmQ@xRVwO}IpDmzNCQTwmwK&L7g_b^_oJN&YB2 zdLexM?_6{9J(p}UF$rXjKOPv%;8b}*Lk1Qxdc0DC6RtVB9Xo1?3Sf*pP>CgK#7?no zeUAL-PBPObg9NtL<^`0Z?}&lyhyoqlJ}Wmazs+EE`&G8XDr-Bzjxsd{8ZIR0hA15r z=-AH_9uX0OM?*4VP;-qVag|7o=mE%3qnyS^;NyQv!ljt`X_1|v>7+~fWt=F+d;o`? zQlgtn3kFPcIT+C#$uA=qsEVTVNDS-Yh;-IXd#L@LMjLP)3~U3fFAnRoUDhXH8QbSa z28BAL)n=)xt;(sRL5ZzWVaqPUVO)HIph-U{gy3+&Ox0DUw~wlriq+9i%24e$4ldqP z0+6IlO5Nx{>CSxiiEku1^Q4JJfZ{`6yf=^Kql2ll@9K?@$o{wjBbCEY31Clslcp2y zVa*M&wul*QlFjxxo$@rGr~i~%9d2`JGw5evqz5!s`JC30q$v%_2Ed8D&`wE@{;Nhy zJL4T)p@Jlbw^th4(9~WfK_9(z7_wP}lbx}QWC090=Qop187E4OS1c^hEHILnMfHYj zRJXEJYVY9yYA{e2f*J5L!#|4@32P}$<~PRE;oJFi_sZF`XNULQcb}3Vj|O6Vh>qJ0 zfIRUm1OKwil@pAy>*3f?EaQ@XhdA)@qUV;e)3Heb8=9Dh8=*xorW_|Df&@5IMg%S4 zYa|asU3g>Lc+z33gV26>=KO(Tp>X1~AE0)WIjKG=JjHNn6m zqZW)r%MHzmW}vzaa1J00gzJ~A)DA*28B+>tcwux=QNRk$<6I`;ONgepIN{ptE+>@0 z@7X;-LMcPQl;JI(5`u9OS)#^JMFlw%QB*LfCpxDE0?UI&@iDf{z+%B9%8PU}Mi(<8 zKYwfq?Xis^wFIy!bcwJl*AZXRl?2QwNZcQ3+{}_l!i*wg>!) zW{|MP3(glh?QC&@HPHrbqmu5kOUnTXM)ZNKGdhruR;o5T6$(sq`ly1(IVqyQ0HTNO zNQW@VZ*heaF-AHDy#XVg3nHFxlv7%@ET;%dpq2p5m{k=Yxr||rs{tUSPZNls7&9RQ zMY|@J7wVX++N{NfZi27v*9qd-5a8l@#<}2UdY=HDrnHcFZMf&$aI$j0Mt9M1jkBG> zN9fYP@~zz-SU0LE86q(<^<&a8YK%_u?67NVumGiFAVP{#348bS0iNI9a9mz3)s`+? z-QB&?E)zDE^SZngCS&aaq7AxhkJ}A^64tR=&WtG?5OuEKYSviW zRwIPkZMS^VVc%n$dp1*bcoF0blq$T42n;sX7L;S5sdhgR5O!d+QyEB&8VyVlrJ(c^ zhs;JkyQb7*04xPLocZTi#Qaf8;V>fEn#tNv12h4Q*voGlr&n3=PNAYuoCAN@iC4x!0 z_rrs-W_24Q`+U(<<_vl5@`ue;c| zjaQ$+NH601iXAo2k1E-Py}{smX*k^JFD~{s5jJfT&-tze!8-*2-x*5+U{~<#_lecx z5u-I=&aJV*m7WG!K)Vb8q(KJcsa8Qg7w0kt`H6nY>^5qn(fE2y0zs#|zoUd>L$9&e z%Jhizm+UO4-I^84G4+$&ZLru()vJP^gPx1v9Qs>%L~bH;xF5QTtK6J(;Uzf=hEl>~ zRK{{Ab2{Q;+=;$+g!_Vug@#5ghww@Ko*2&S0Zx%;&Sx@}4FPS*9_eTK9Q5AtpUe}U zQWDA70#g72d2Ac59r7m#wv1?#j4Kex*j^-U{IMec^Q|TD<;v{#LxA_6L@=>( zhBiuGViosvvanbhD%fA@LlQFn%?(Qhy_MxQuLx+96YxXwbL%eE!W8sL&*-z|N2e`- zism*bxjO%kzWegSOaiv1(q7=`Nk8*8}lZ9%pv3`fB z$F37UBse-ret@5*0Mcoe(5W@lUWm<+Cr%kwX`OlL;9!8W?f|4KmzR~~8(Na0pYlBK z&rxHF<)N%7sqFFWT!i0bOSUF&4y&~f4{z>_MuU}=6`G85@h%0y+YNv*@O*FxfSH@1 zaWI}3NscsRF@jq-N7m;LmR@{TOo3^(=6Ny7oTHHa;y&Ds3OZ2maFjA*I|>CzH5|$< z6EIU|?CI=vP819f-Z*ppM_`tY6K#C_1pmMjjoZ9EL@OW>^(2M8Wfts#Q7w4P;1MQl zgG~>~FM7rw{yV_MO!CqY2B@_%rwVqK;eCfDJ&95*$=_a2l7}VpndSAAiumgZd1$MZ z|1dvokLILw5eQ5IQ^{*2H*vI6NiJ5e%{Ql12C86SWJ3S z-Xm?4NfHt;c0w9++kT&=D^Zwiqi!dRppj(-ofBA^KWuvJ52>VF#}P7roL-Oh%Yq*c z5I1gBnv7;dcdW%Uyfh0NtBx*B2u>>6gy08?iqTP(RWN@T<}kM%cVHz)5wCj9v4^AP z&{f9eF4qpwl%2YKf3^}IFN0_v@Fv0@`SG9SE-Q7-@m+P?ZUE$wI=tcoebX@Tg}r?y zDc;+~lOTu-abLZb!D!^NN~YtAomu=F!%_LAGT}C3oYf!MAvvbi@Xq}&ZC~;r~}-{%ibJr53TB3BG5zF;l&O}b)0K=bTO1% zu9Jo=q5~%;qy|rwj+CBcD8b3P{g)2EBV#aCfZ99v<|#;RVe!Xn<`Fm8Bipb#l8W2ZD_<eIbBlt|xgyphMX+2@xaP%9AkZk0&CfkYz0V-qLWM!41IJ6c*@{C+7>Sn(< zLePj3f%xeXk@793`9nrH&SKWbBVA(J<(-Lx8jy-mF|D(qLgm`EYyHj5O+#jM>)#c} zodSRolV`HRXP=LV#Jt2GHw45`=Udze1!W{Lh8ZZx|1u!DX`D|G_i>U;*vK?qmBT$A zu(n@H!n@0v$&n%XgT8=6nO#m9-;PJO#scJcs19~Hn-OBwh7^*I%}oG1e)!;1+qlI= zlG$j5kRcHu1Xvkb~*_3`bg0E)j<5+7tJqFfK(}(#vS3i4_g9xj)DpAOmyR0+Iyy#XEN)jAex+#yvBbR{De_ zOAb3Om^)W^ghb7KfAI>cu&vd2B0xkiqUx`bu&q_iV{xJ>#g&kV%qXbHv~fMaEzv3_ z4eragG(;js8f%NQSvyog;|jkmL*l6js7QE)k|{#aW)N^q&#cd7UQR02Cz5DFmN>kw z3LcXHpeK!Z#|L2U>qzxEpyrZCNiS$^KLK|^G`#nKUxdfRqqbedZsF9(h(KX9#RO$u z+pEN;M>j%>_#JKG+j}t~aVnVVc+#n2+vA!V$=_ZAw>!QjH)HsfL!no-#Y z|F|sx2=SodJEDwKh24!v*#!%koefP1ix;tY>M)}o_bMQu5 zfkYC`E?Q&|iSH39}Fn7IUi_i(v$2#ml9~fkV-vKJ|#IN$f&kmz_Cp0&^GGt zP&uPKn@TOTR|!f0vJOFG-XQbEPm=_|0V;wFz$3vzG~-NaK}Kk$ol671o@p7K83ghf z0;8m79{b`H1GQQ6!=nOBFm6P8y|UJ4yX2)gO`$X zRSdFk^CW(AKMwP9D}D;P96nzq)i(P$Hj!|R*V9bl*8Gu>^ic_A8aiaf5hmpGwi-Vc zKl_fDJ|sSf6_bxNGT>QTpY@u@^3oDVz}>wJxS{!AX^}SsYHol|#uY-?D4L!|@nLo$ zv;84F$`P9S5|^gnHD+uV%1p*>)a6Z*4jGTTm>&^5M@#+D7)^V8u-iSX9d^eW4H-5*Aa)zh?s`1TOObVY616M!WvuP9@4>u0vz|KCr33vm?RNEV!eu= zjyzsR!d1D}YaF(S*^o9leR5O821^LZa@fg_Tp}wO{43;=kd`xEVtpMYc!xx$QC>;u z{VgVYg?}W9GCVPV{E9o2mA<2lIrB!BEGyMahNxf1gN$G?N)@WMmDms@Nh)@29{Oe8 zxno3WN1NOHP&%=ykn${?d!|RiAc^FmnUFTB<*$a?#P})BPEPCNYGhY4^5P|>4aO2G z<>;jr3MVCH$3XPP2boV6LW z827SKBD#vJ(g32MJUAJ!u(vd><|9pgjw^C74zxqV6pT8gIz%zZ@~k;^;Hm{GmUopKJ0CWHN2zP$grPH z1x?DQYFg|>lg@3UP(&*Ncr4exT0uNsKqvZ0Q^V8Gw^L67sYDmcpox4agMQD;h}AV* z68L!05%nhkRFVs`u{AhYs4q+jsLM7`I=i1CHz_ntCdMEtaYs7xY46i%G-h(pfngoC zR|iX-%~Kn^=Q!^q4>Ia)*dA3vqAwKfX0n2x&)P}P2}}@VrBl#|F3}iT!s{hy4yhb( ztbE6K&a)G~YolJa0g$$7N*8b9F0T;S8}$e0sOKj9w9k^l(Rg*C{Oq$i9|rCR{J3oZ z2;=Z1ga=2SugvkuC|B_ynm`fzx{##QSIlB$SHYkW&e+`bT#;eQ&M@qJrR=AH2Z;{^ z)W+xVMDlXhV;oj7__`Bxsm#(gf}XJfQYmQwM23s`snkK_Fl7RbX;i*ec#DGu0Jean z&4bMtEEJ9~P$|~|6;>njkN?cXh@uY1=u!;CR6^>c=Yf$khLB-HEHF8(@c`pY6hqbD z6d4Qz&xF0r-(i=t424yD65yG_DpDS@AXun^DjE4nU>QZh&jO-_%U;~)G=5T5P=Y$5 z9TLF;XMdG6WSYoJzI2zrA;eHWKoMSRGN*RK+_2REKUQR-zi#L%*emfF-{$K;RfmV{ zoa`!>E_>toHnj=C#MV1xcjr1Axe5l7%eBx|{O@2nvRh*8FmPZL4qK$^Z;*{1(|<&M z+C>9{jLd=tKGSbw1C>*wo%G9G;VPpGKKI!}4WQP+p`-@cBH%!>u@*P2B@RLf^3se- z_+MuC86x_fq^X^DNpIUBFwt;n?f?tAk|)~0HH%90H+A~wy}6U9)7Iw5dz}HqG+FX| zEtk3s9dgqLc6^KeYl?7AcHCHB{N)QN6)nfUD-gIJCM%-35dIJ34}iReq}XDPVg<>> z^~Ni$Up2@v001BWNklJIV#&`mH;|c) z63QJ0`2s3P2j*xp=8^m=4aP8We!fGPvoyY9d^pA^%(ifgzc8pL{1p)6B%qH`0X{Px zgK@MAA{hd)ROkSs!2&Xq3R$=qSIo{0;niyu+gsnb685_Aud={^(xRR;Ar6tC`Z=oWA+tLOa_ zgY9AIt7pEO|H5OB%50da_me=#hO}$(Tru4QSep|pCtP*3U z)Yj*b+AFBWk3<;(bbe3iA^nVYxlus0nNF($Yfo}RPum%xE|lntoY=#HU1w2!gQR)3 zwYiR}>k5!*cJ}Ps**=?st}HKQr|vt2N<83Q8LjNn_7a2H^br32B>KrEW$Qxtq`E%$gr(h#BFWMY%_3As>;%;-zhNm5ry z73C!f4G5vSIUVe)W%EA{0fzeGw}Zow7_UfwtuhWV198A8GIEdh^G-O&8y8fI4H);e zs?t_920wa)4w*)~5LD(jhZZ#G;u$eTdh{f={>=n(| z_u;g-JVm1d4|&Z*DR)WSHcRjJc%*%NKD8c*?qpgW95%SfP0R9AGYJl!x1JsgCz_RM?S-cw2q$Hd>rEx+_hPuWTs(C zb(HJ~X6RUE0z1S&dC|loBV&vqrv7aT2Q)KojB88d<3YP-C$n>kO-(~ZfqC4!&_Nyz zou!wlY_g0U9~sk1OecO@raxyLwGKhtPqZbP45RUb*3mQT^q$O=l9f}h$lG3w$B2XsPb8)egz47MT*@Y|DNng#* zUA%&HxRNa{EwZL{h^-H)Z~p)WCKrt!5P{jpHl`0NOa{>h+ZFH z;t&65Jag7;6wr2qtO5w5{XwMw7lx4GD*=Er8m8R#k+kT%^pTpdhFCIfnLk%RmbTDn z=}Ei!$?0qWMh*P-p41?m!Nu)$`p-PiF$Vk^NPKKiiKM3*%Oo4=ZKufVL=%Pc*K>A} z&RrrG&pQ?^ao0!7e<+b!_#BdK2dVrL zkMnY~Ug3T8zPUC#7~L994_J209!%5KTYc7=_Uy(7_PDJ8$OB-^%tizxWK)FcnZv`0 z?+ETR8u_7u_+c}z*ZVL*iM4DR@O1X_dUNnh3Ns(NRx5ywjsnZO$V?j zYpZabY0FSG)$bL9*%8n9!2G8{jVEX$994WQS`G_tHJM05!hj726->hss&62n`8oJ< zIu3JYu%}6_g*)Vq6jaBF6~#3x_8;G}XC&sY<2(K42S=c@O(hMA7~e32*X;s~C%{B= zxv0c2lSUozk(X3lwf?v1#V8e!k&x5+DbAT@DGtg(f&f~c2vQda=8>By&g zB_Wkets8M7RyCx)+9^E!uKpnH&dx3p4$ch%ew#QwET3IXvJ024W?OiLcTjh=b**iz zW|uEr&kha=rY^H>yq;0=M{_NZ3T<*oT6}vRM5eXY6Ky83{}>P4f?j@`R$y^LF&!T# z7PD(pQ}s=ya&Hbi3<*J8z)iO$T&$@;oEXJluhomy^g#OQxulP1$AHlI*lmM#>FzHVTzM zR|6%#B+yTd1p2+-DLpk3=>7mz5B&j3KtE+AdO%g%$OPRM$xvl9&zsZ@~Xo^#?v?AXIv|GlQY_Pjbq`y4<3i0wHFa-{`fcPdZ@TA7gv zvTTk$2Xn+&EI48J9Bg!#|vb{mU))XTE@r{rdTdidQw))^BMj}2!)+^|7Fw`_(ju6O)6<#5qM+{htq zxULG?AsZ5QLkI_-x{Crj7G5hVqi(ywa^!4W?=+_yYpra(Q!iGkrzij7&o8?+n4%v4 z?8!t3Aq4F3OT~!_v+# zEp%W#&ET5$5Ps!C$&>p_;Uc8OQsd(s;dTO)(gOEL(^fzt6ruR&O&)%?1Ijo{!Tj#-t=1{S^HY@q+FY8 zwLyE!^ilCOXoSw>esPppnLmaB5f@0RB`)JWOoLW7L#Jgp)12TXj+D=Px8^zGu8Dhzw4b3_p`3x_C)@QGcmjqUQ35>Zw7Tr1O%KK|_Ve zV2=12(=j9$gc-CX#d0h=!JqslF)lw_?EpkpET73sAmJ?@6aL8KRN(0C|+j}opt9$^drv}q#&6IX*<}^)vn|m z#ty*G(G7{3Yy7O*Ezm~dRU|}J>o{k9;y#`R$>|_LmA64YU9}%%|>|H#%etMN$BQ zDIhrScJCHPt$N<<*QyaBNNfzkJN%1&Fr6EU!oOODMFthK0zwpX=xf4RB{s1HYA*#dQ*N zc?2Lp_|y%;7r?wgW?Wt(Lxm?J3Mk84s(O}PmLHWVKT}3&C$k(|qS{+ZR;6@QRwbH1 z59$Q5{1%}brpeOgcWUz_YF;mFe^$wJ^c5MQwOXVh1zx;xCON&imYhL4yz-T236tq2 z|Ln>ikv#QQa`V;$QbbLXHuuTIs{G7v5e{NAu-(y(rI*UK1b9%s_4W613gCmnezco6 z`rheHNzphxJ1Ba}wuMCH`M>hB6&2`z}r2ADw)dNrHk{Brk zxU9G0pSD9)W05D9IYl$ZkyXXgGqk6-OjF3 z=c{Jcu%md|B9A4(5;F@wwMALD8w#s%9TX)??L<3H9yhKdU# zq2xesQWXhU<&h$73TBSJHTBVa6>a#8MNB6R!KOF>;QyTcN1)^dkU@W5R$k0G*(?sr z@dMN=2wGUlRGeGVZ#;zW!F2L$30NgV#pA7j%?c2uu~ELnZQ&BT3}M}Uma3`u@|7e0 z#PyyK&}9gZsIOQb^;+J?EaTN)V;BY>e2!n^I&WUI&rQHhcOOh9U{Q{-Y*vQpXwgot zrwl!r#@wAfwHcsr{yZ80F@oe|;+|%*#dl)?%^EFql#B}iIDC{9fI?k;xHS@de1P?` zw$V#I%E4xlBjZkA(IeE=%5$lTD%aVdvR(d2Nt__aAcT2Jp}{Ulavt@$+V4~f>`(qu zf`vsj_`^rq9M@n5D5XT&9h0*C7*{NA6L67onVM%#&D76+rcTjUs=mM);v3HeB$ddS z_L)$uGtxG7u?4F4v@L33`OxH|{|VybA|-pr*b74L3sNxTF$|t$H)0dUJX;|yaD6f! z4-ScU8IQ7!gK7Uk`lA4)d#X&OU(WK;mdESQBLjeT+k#f32Spk_IQHo+ zP;l$|^#H*EJ9V^%qyj2h)k!)+Zg6RURuDn~kqQkVkurfDIRF4mdd8zcJZ5x(V3D81 zFVtElLI#~BB&_e@gfui`WC2hoR#uQ;RMa}`EpikUl5FfVg|LS+U~re9fk27G5c$^t zKKa|)h|g3;YLjSThF~~K=f_~0U>x~|bKJxwaRkF!xNP9Xd@6y@Ys>3(LX=08MuA*S zP0M@v>fMyDWDp)7KX3%lFCS!C{^QwE2QQ$pQMB)l1jn)+s&nOMg$dWeDrag*SU%Nz zWndN%@ViMpT}k0Rdw73$clTrcuVE&e8z+zu*TW|0a=8Z&wv!J&_#im~=(G<$|BbID z>o`i@zV=RX>v!ArO( zfGLzue$!mwWF`60D(+zT14K9}z{2hTkhWzA#dbSFgv>0)f=5Oj97u}~6*WM~<$TCy zNM%ZH^pE%&!O2dZU@mpCX1pL^>laHmPtA;Nm2(VrE)6*%AsW76p ztXecAS|M=T7F#ChYeST@oj4RWqa(_=TCQ+A@JvQi_UNr< zWQfFe;TCU5`6*6)^j?EB4Q3^wX=Ti)GL8ZvAeGIVPyw5zLvAS;s9MXea*(T=E%7YX zW~NgnTW4(vjF*I=6;Q>9Yng+gC>{~u=PB)7E{fM<2W87g(3Wh-KMIx{B}1t&Y)zli z=;AlPL{fx6mEr;mrF599ytlkxwK2%q^86QsZmDJ2@s+Z5C~7nFkg;S4+T|DP9OvUV z&Z{mSFQ@!*2`F)E+!OU!fTe0EVVD8%QD=S>2duK|T*V<(QNO!#k~Jzw}L{z){j?nOwETR+6NGGAV|8im(|5 z{S@+eRFD>w?V>$=;<;r%D%zFHzyLuis$A%`vc26A4KU;+K+F?%k?)kV0Ke!{z~953 zEQeM*r{@GN#*4yyvj3gvO7K&!<_m{?q&b2K8T#U>TnT{yGS-GC(oc@N;0_U&<=B_( z-r)M*wmJT&yf#7}#jZ8N+Twv+$KBS!3h`)K7muZ8v=fzFJ-B=ZlO*a7VGVIpNZxp~ zsVHf&Tu49~IkUh~JNmmaY1XQPE~^i6Dxu`ZL+O^4l!OdTB|^TMC$Q`stMQl|k1PNN zg)TbL&hEXyAiq(9;Bb`@9*rieWWOhdowYlaW)2uKLqc1Ipb+8C8)MEU>1=D6Mvt3<+*SeM}#Je#U7 zLCZV1uH;fmvTRG2?+|r)u1_h?$sK%O0HD%P zK%Kv3nVd!{D(T;PD|OpG@3mOdHJQM`{_*^bMgJ|BS=-?I?|+co-`-2ME)k_fizi=H8Gf@sn9H_C(+Sk62kRu8V%A ziv=kTfHv=AkuOl z<4Q4HE_JA3I9AJgM!B3*igV1_-3tPs{CS*?M-~8&cOrevm@%X;B+{2Ix0oMQv-X_DSMB<&Nzwxta1M0M+G&MVJZTT=VY9)s1w*VLo2@dIU1*~N zOR)8&IvHW2P$ps;d#_~G7@uN9!+ zK`M(n!v`fsu7Up{V{C&4wb~2;Qq}>G<5vmN3;pd=sm#ZfHZz$hq{YPq>veDtF9EZB zSJH`EN7-CJf%F>%0uGczmEsweBkOC!T5`1a#d9s#QY`l&uyUV3z_VSVrRCHo9iQq2 zXs@>&Tq^SgSSo4==vK{b9QB9`SY}W@Netk{ix&X6eN@{|2$)84Cd={G`E$wlzVl*o z?VWcCj2;7e_2l064*Oz|M1e#Aj!3A!+QYyP_&1&@bNf)c$Yuu?NB7#-R;uh{Z;)vN zC3rLFS(_QaAm=NUMPDe{+7d5~7uV1)(LwP@P*O;AnpBaDNofyG!;(!S1Z43D&*=`Y*xJ+hq2V8RJK93y>-SP@uEGIL#laUrewPSa8(+ z<9C71N+J(LG4W?{y)BTL;O3C#g5Rwa=RN#xxiYo>bJ5=NJr^&ovA%R75->I<`pV~( z^_KZ7$;#?V*!EgvQ#S3@#~T{`01oOcsr@y_O}=8YJ&EIE+A= z7$?w%u~#I75=zONHu{~;5U-dRcsd;t6AQfnB9?X!CJIhlZluiTIhseX&xl8C@gUGJ ze_AC7O)EuYZ=o(qw|07L0Y)E6hT2p3gMiBgOu9UWcW!1hsfP0sAE_)Ai+1wGqNyf$ zX{YcMc7&tt@CSkdLIUj^(tkMjioWJ>%9IE2GUBLe)LU#>x*IGkHUP+Q+V9cBFTd>D<@vR1*Bo}jWV-Bn#b^#2m?%uK z1Ti~(61KuEMiGp09t?ONqBW6hhRsHtsM#c%y@u;7n5!%{o|)GfSV)R>nNEFRTvj1n zMwSzHP??SA2{;se^jbieY!9)tFnm5T6mY`BH zqF~`mK;bmZCcDJ5B=BG=$(|yE`F-~~xx^3tTOL-$d0*+xGUHfW4@51#FRw0(DeGId z!;&mNo{vrU%mZ@dW>I!8RGbXH1_DWEn)y`3fNYb#!woI7_q z`RLO#vSB$WvoL98*SwqlCwl35@$~uZR-T+bb9<b}$!a#tgA6Ai7Ga73q*mu&z)Chb?AySca1snbPSc@SF2G z_)M$BzBy1mEW@yk(GO5|rA50nZ2@eJ8I^AoD!0`ZssGm@_{;tXjo-z#d%%Y7lXkm3 z+uPflo;r1kIYOF${Eo*40PR{kxn#z&qpw`Kl3lx|ed+p)^}`jtQe*5y&B+AJ!UkB! ze+%t1u{Dr@RN$1m2n49~7)f0H`AM#Di5uy&6jnq^9g^glu4D)mWRXECV41o>`G}Wc zUu53|a{wx}NmMFg;0&|71E%1C;Vfdjso$HNaicX^KI%Wwg1 z$A0%C{l$5~*Lt!Ffs^qpeuGJwr^n-DZ zV!=sQ1|rI!Ul0kzqo!N~bo>m@EKG)LMd4c@F*HC?Hz8VHe+QIwd=~LVqYP zpdZ#7-Vp*4G$Sd!m~i5Nu^QrWhIqkhK#x9FP-u{=Q4L*i#Y3jY&!2hb@$>-GoG?ZB{@5I!0m0%585EEPQ*f|YyLBre^XaV5PCV_r#w%5o z0000W07*naRD$3++f1-@B%86*Rh7i3NrNcB(Tw!@sGuvT#Uw~AjvxkXAMPN>!eZ!z ztRs+>lcI(@ZbkIqGo+rtx_MXW2H6t+g4hDZSY;x}p!W#@ay+-j3sMvHtfaW$!t?kZ zFeER<3-r@Qr!SiCh+4p^xA3{-=7251gSv8U`IDtmCijSq@__f0KYN)xUlvpXmKG|3 z!Yc$NZz!wA$2h3Eg)9M3PFjG3KYOje$2;v++VzpX1RDX#ifTSneYf3$mi3MVsI2aA z8%WQ+``-2B4v7y|*wS$owYZ5l_lOXg|MUO)53&61%Ck?GF>{n5V3`@(?K_q7td-BR z>n)2hh*}7KQ8~X_5&!ZQzw1!I28%5?&V`!EeSion9ds^`au>Q`tlb6y$q$JQK?$i* zHP?c}ipozGX`AVBPx}xd#h5%EfgX!<2LFu`WL`{=@T{_Ruy@ypYy9JHe=E6ne;fM9 zlD+-?;>L%cDE;S3xY7}As$BW%v$VOHuCA=mchg87VcLCFUCfoJuwYYFMcQGur(J`N zY8w@DW|sVzf}GQ-8RPX|N^Lv0PzFaa+^E9LWo( zeQfpU`@z8h0nI(YkaQztdYMgcN16BTJ&1QD;WyuUFUmyJ39qQ-`=VgGP*4F7d9KnN zb@G{xgdnVhY71?zy%BR1_lDzVVIwp|$NiE49yUm=6fM;1I$L&fzCe=A*qfJ>LNf$8 zoMaRwhK03HU6L}Q4m?3xw4VZyd5{wfY9n=}{nXP9(b@Ba(ZY!YdgD!vl`)sT{A6(3=Q2)`G)0xHl;xyS9(C&x(-2Y%(8|W*NMA6oo)f&&|6ysvt?i zS*Q7c#~*Y%ozY6GHKG$($Zg?(A@T-V*Ib+6pa1!FlA_+qe*E&w`Bi?f>mQfnu>?Rn zSHfF%G9x0d``zVp#kJ&#qH+CthHa4TBp^vRWjL&o?-3L9e2|W_xf;rp4dq6V3lSnF ziAg&^g{wTkJe5*G(Nr_g6DT2{BjagLgpg8FLRM<1y;PVD*iCj9?C5~tgf;@sJU9A@=Ll}$@x_iN;spqbd;*`K%jW=J zo^4h5CH_RU7VQ*G$|*stpg$MD>1Iw5LZkGD4G^0n7B3`B0T7!Sbx7;1%N>geQGzgM zm)HaLvppdADJ_LG%1nzjBeZiti60Rf1@jnfb`x4d+TGkdkv_P;P2R&bCWcw;fkMU7 z-QDeC_LSb6n3wsio@4I?ySzspfqp1N_eYR2Q>gNpG7nlr ziY$X6Iq)dFEUE!y)pZM}P&b^C6^dX^c!Ue(Lx@mn^#tEN<6o~UD(-P1V{-;^6;XRn%GhPP_Sdx{MIf7-Wk?-Yw{t*AmLbxf)5_AGW_>G?M<#l}G zkC{ozy76ssvl1aiz;z2hhlmjXrdQVWrheC6==k366pU zYMdl<6wsr7FZuApkBUv~o|VeQbaQjl?E$D_n*4|V`2SRnjt+@#IA3|@@-r1AK35ef zA?BZa@=3nGzi0Rg?RV`ovNdzGH{#}i{OD;SvFHOnn=dJ00YHJd1_uY=$3)Hk^!b$J znQX?FA26RGc2#!t2(`Z|NiXk*|YY80`p^Yd@cY`I-ti({tTjx&*=*e2Kfcwc;k%{CzA7w z;=z=i5ZGs(@V`br#ZK5{*BvuC$J8DL!7B`Kppx_qrE%IxQAPr_ypp2fakV_WX%Pbm zV3vHwUs6MJM=;)kH=~HSK&(^?jpz9pBBf|0MApJ0Ldfg^ikzcb7K?f!s>)=DCrVYs z%$2%13|}&?KVsveV4qD5gBgPj%jSDtAn+yAmE9(-`h&j-bkRz`%H9#|;}2q@Qfzst zb&6Uo%Cq`_9*x$n6_N&Z6iBuId7m%Kv(?c)o=*f?sMaA}@*RaUDxg%SiW+^ud3xg^ z82X#7vwl{lEVJw*`^J0h2QQ2Jsk;st+iW|$GQbbOYc=q5B3KE0)AJ( zwvr5CII|Q??XW0Y@Z%FjsvMvg^IJJjmcRQb`&S9p>S#euaN?j>lj`e^j-0gi8rI)J1(GUm8W_t4E2Dern-%zo4c6O!&A5T`-*0D#|3M9jvD3x%> zZq{ehyjyDx0K2@^CeKon>=mfZ$o2ae3H!|26Z&?@J!9%a7~psU_z8#}bi!hI;_IXR z=W_vo$GaGUDtRLaR5~T)5^99R_F#RG)encm$_z_)mEDAA21>U`qDt5_IaOgABsu66 z_>2NRe`mjuk`(OU;u`y&V}pSd0!6@f#dy{yU$lYQ&D!3vlF4xJ-s|qZ~9A%EsGc zx+u>3T-ch@0ZwY>_jrELs8YnT!trBJuk7tL*1zmcyOetIU8%&*33ZjTK3m|4`ooLH zNvhH+>8VP`5--Z~5Htg9h~S7i)L?V zPMyASp(}d$6xVpaQ->ujB~3OGkM=SJrYx&S>gy*^XH7rvl5JDm^$nz-vANh&mZDuON8^gI=D2-?kj&WYG`DS^Nd}xlc_@`)i6%#$5>la za%ENqVEnk=Xpmhv9ntv%^xPxxPMOkq^bT`3>A4eafQ=T8r*^YF!E`xnw(5JWT5X5A z5jvC406sx*25(KDc;X4eYl6J^JvzZwJr2j`4gf#f>929(PZlT793JKm9;}Z~oYBeB;Jh zNQv;5EG0Kc!@R|5qy$d~>I4%7LmJ(Wf>)~t+i{ANT|g`U1OP!#FQwUmixD8g!~HIY z%u*3L=)Mdv+yq_Q#^`oBN%ix7HT*mwi{;!pIpzg zaY__T0JO0(Gd#k)J0Zsoh)8;i=9D9|Y+JnZM-V1z< z-HaeTz?x}+*$SWo1Pd})Es_&NgDEKLNH~juN_fJlWyabk3_8^r4z2-t==XqR9Py=!UAJU3sWsfMJ#z^t3XJk z#jLLfxB+9pc|ZX+L%`6v95{dg;0gJHkNiaf3tbrMkm2|-z6N)d>px{dt^rF?fXUGW zfM8b{2audQdzK`kolqa)#dsI|f+;COwV3;CR?_H{fTwif?`B+vAgMyIx4QjO5rpRVzgs{Py)0B3y!T6xUR0Tqi6JU#x!ISXCXDZsLPgqQ_5 z(R(3sbCOC>bI#i07&ynQJi~MCHvlKrbb~42BK5H2xWhrl(-A%B)A&bumf_Z!NU$`B z|9{E^FmnMlSP8ygDWc3^a(&v;yq&oux#Bgx3Gz4qha zZvv;&jqUBCclvZt;nvnVD#__$9o3jr79-@a1K4~QQfbJrj4ui)1Oo8E>;e^Jg?&%j z5<5!qEHZQIe>aI9WysgiH|7Pv{w0P+0#zn~z6h+|_2q zG?9!655xy1Kr`zkUMvgsdjL|rTO$ALCSDq` zEVGIeLWNCLU6+&XHLIiIbiBCN4wG>?L5pKJc|=+F=m(yu+d;7P74@+H>2|B6z9~JZ zb}ETlp5R710T#-)Xs$D3jrPCsh!{YDkbZE|pw=Pba2rpxVrC(-NTXw{dx^0;ovZmb zL%^b(XP(|lo9u7-(MLD)4*U9k<=JO&%2kuIXV1hK{GmUN{iRD^t`aBNx_R?fb$e%L z0*ciyZe6VP`-2&Al>N1}lNsP>KT!{qlCqbavtkCsfy77BERgsGVr~e9T!sjX(ZTi4 zQ>;GN6(I~(!wB#sH-KWG+sPbg#13=BI^YQr70i3%>EYqvp~Pq1?bAQhhDZIk&ouxp zJO9;JUj@IQ+wxcr7>N~FE%A6X+* ze%^V6xa9}cY@GuQ4EGJ!$SV0!zJQ7V5kbj5U+0av{#2^;)LO36j{v|Uqs)+?1teZp zA{rXw5Kk0JxDJ;)brBH5vTr#CEpz=+Vzp`xiJeI^DBt=}2AyraZLiOaN<{fSj+*#b zu0u?Zl{NOe8;%1cUJz=gA;6>>hzjd4(e^f`@7#PH`#$%xG>=KfKA_!(0}7;znp=D+ zURqyO;Qjp_G7e1Ai(BW@XP&;4Zs6%PwB_W<6X}zst#47oKm2CKKWGTDX8^x(kCj!F^1L}}Wmzu>u(eFDJ?NHio`-GOn^Jzml3sdc<9X5oDy&Vu=u}Q)BfJb354QE5H5W+*j0?Rr(BRAO$LLby6|%en$*NXEwy~-KCmZ1g3_W~B`5=* zsqdm}tHm_Hy~}qq7n^*0IvPc2Myuj(&H`KsmK4Zm%BFC^4{?NgtAQ?^8v$j=*hqVT zPn2z?c@7w*#HNWZo)>@*fQ6@d(GT_j#l`QI54=(Mq93@|x(JHaR}oxEQuU70=7+@e zC7AlP{NpY0oj*#+Q=CkW$7ncL%h&eit?IiXF8Ikhw56!&Gw2)IL34N##?5bj3McEbO>mk4M!zU=i^DVfD}lzajgS=R##GXEp>9pTb25>zTTX!uh*v}rI>AP zZACcFjThtdl)y)PK}mH4^(zWJqz1 zs;Z+PCcw0@6AFAvZih!lNG;mvWXL>Osjh}P8;z!-CEHUZ<;lwejUtWD4BVjWl;(!R zQF6qlK$8##{Y^A{X^`w5^}z+8?&bd#P+VVoE2G z&mwM(O~eHy9MN&Y0b|`8s=Xh)MX3+H=bk-#1bXJ_=$Ik z&FXJ?agoCpJ#mrV2~?nCYNXhz-!?n*oYg|C}B4*f1W_ z1S>!=&vM{UHUmEcK4K8*ExLik>dkJmSgW7SSOQGg%_tN6sAK-Z3or1pmp(to=K=ti zz{jx22a;jD`yDk`aUc#R;Iz@W?(CUvAaRYl-8%Lj6v$Z}S-*vP$ZnfCGyZ%E50Fm3 zU@asRB(DKtVAULon1wKjkc54SJPE7_k?TP>;3O>KB`~>jgDerYqZv%h4#h-?VCVy2 zNwYd{taRE9ogQowJ|7H6Fi&2E@ib^-^2^y2e6xa4KI~AcY?iB3r+rSTLWz&I22rCX zg+v)@>0k(h5ekC`H<$=!4gjJTmeQo1B2}wG2Y3kIoB?03OGZc|pk~4le4{*1z>{%x z%CN#Zz)wyHo}-<3d#DS1=10yeVIgq1(50087OMAB0#s&;=No?!Bg9>STHGh7s2uZd z`$C!o8_OC}c=-rUl;8;Hx%O7cCBWMmDQ@GBAQ`|$I}qJze~NmmH09X27v6=R%u=*Su5g9~|UNNOjcT z%J%kl{=topv(1w`WPoW@-6Q4Hsm&A*YCQAz{n6G+3}8Z#aenjGt@-x$PUiA6!cOYL z!JxRmy)!y{`iW7e+ZF(sx1tXe`~1ubKXhAW18T+m#>7SwX)_zUy6kY;E?Eg4Dui2HC8Gxrh!rWb_CRa-OXslt4u z&X=tjh2iU#4#YS6I8dj|6g$ z=T%wC`m=2Uu!i(Ob&kUT_CaDy*kcj+= zO2BR27c!Nw!Z*(8tSB$wdMc~FCn)ngBrtk^0hkZlXAknSNF`_s*1@8;+Irf5lpW=q zSSKAnfWNzcm<&n3uU*wWiS1iGGJ8As=;L~Nf^05Gk@;X0utK$jeL=y|DuI_RKC{)8 zH9}qX(rfR$M|%H$f|i;+*xsq!ymh;98Qeer-uJ2iAT|E|hm!nTZ@oSH<*$A@G|P6?72#geoz_4ru=M0F1S z&l~gVwC?hd_B3xME6^u%`QfxU$WG^t#;y|IvT}Cb=kjSJdWHuuImu_h2qstRNI*nLd-{8k7-j$9V+hox zO4{^e<|PDTYM!-~;c%E8^?D;3W%AaP_&>zMDaPwc1N%{p-;)R1+a|GeX%&(~tGa;- zG`;^Im{ohAj7+&OncJVBDyl~EUCB*EkikQI1!!EQVeqv{08|s@4v!MHEQy1L2}<5) zx%ckf3lQNe(p8OpdvD2Cp)z*5cnc}h$O|ASN(zVycA=vvS&#y0q7KHusmdxWF6#(i zf*#a>zEky$`+cKk!Yt09@f~B^X#dOq;cU~NVo@>6YQ(AXHT+L7~>e_9N+{vI2vXrHcpdk zl3t>65yY)A7(}Jtk=R`WOcv!ERW@6ma*T7v7Qx7A%773sJeA5ppPk1 zD9g|)vv#XPnPhKEDidJ8IJvRT((0nBtx~(G(<|6#P(JOBF7OY4NVSNc2loL{Uj=b} z)hU}Q5(rC_)pUy3l%ko{mQr03j|r{`e8!Uxy4| z;jEzNk7v$Yt335or?T5TU&)T@)#>yIXF|ht6_sjVz$1k&$56W)F?-M`GDDM9Sd6{9 zDiJY-bc8*xXv}I^8@44W0vC|2+%X5zoJn0LR6}!xU11_(TzQdNhAHp>45V0sMmxGt#Jb4Z$BUyB(^UBfaDC_lmD-^~}ZjXWMCl(x?QLxkjO!L zCk~P1M1-|)A1@|f6d0#JT8g?-nG*XvW!)Qz5ek!_4%_v{7J~lp`}XJDTI%ht-4R5$b>}L@@ZFXkhwjV2^WCBbUK7nW~L`hq~Dr z3*!lzGZcgp3vMcns7yF3BgGgN12M>EDpI*_Rv3Ux`f@UJH}wa5(lNYfe2oH3>t}Fav_MATGbM$34MMLT93JH?gCeS#B(9W*t+3bz;8@0#bV-c_ zl7~tu6Z_fVdb1>UR3YGNuAqW}OP07*naR8vA~ zW*>W#1-P8nUmPSH1-t|hhilSKvkkt5>rw_dPYrEy(|HzbY^GpSS?Qwx>9<(jUQI$qbLqb5@?NSi&Xh0HsBYB z0$?FxGvj%+IVw6pM=b&zxz?39X2|tN6bmSO9)J zih(egObBTy-oO5ShPqu`xNxEJ^wXF0_B!zt*o286>?SM3B|<0K`cP%aIVkuMDh2rE zsO#>G7#(M?FsVDBx^;On@h*mO6=sAV4?HUCl}T zhog2jGLtuCF>B~6jRrEaNq%ra$xxW`AlMoz2`TPVu47|4yuGML=s9!ar^HLNV?eY* zmJH&6i5+z}7|1t*X<33!8WT5?hVY?okX1XC3;@2!Q-~fsl)(IS$StF(jzx&w-J0Ni z5@$BX*oM~7#_M&&DRzzsK!;&MUqMn-jF8vONbI^|lBM8;CgMTk{QCM@0H7(A43eJ0 z)JPH;(t%2*_<%&I8`^qNA=x*$P|BtQo1#zw zmGXEpHRi?qY1<$J_gocC0(g{v?BRd*`s)Xtvl^6+{M*u)87I*H{Tk&1p`uGkFFkna`Vk*T42$^U{~U+`M!5?);r=@Ah5y1^{NH@q)zlbr5Y8CRRud%K%+V zL&1K+Kp8yfE;*!wdq|Q!n%k#=EN24*>s6kc%=)YS>{7cuzj5P+2~CTu4iy~pc?P|* ziRIr%3ILB+>@_IM?^j-b9kus#x_#zMC3(=PoJn>o>6jpD* zw+;5VB4GixJ@Ae_u2{{D762*+cg41VNN0c_041-r0JS!$u^L&8OEJzGkPe+aud63!M8mm0D(iAbde|dI?%k>d|mcH0BR9h19SLa zslnxzq!OyuhU3a?e>R?M)Q7{%fI%l#A55@MV*@;S@?=eB;I15@wqPZJl15~LQA*KX zrBp~QGE^ZmbZBUrfv92eM77lOBLJGbRop~-b+w8(uA0UkdGs7_01(0-yCEu7sFE7s zMuK?dzmPDgLohhk(rQ;jfc5$&0z8%6ge!pwAmj?FtS?20&OUP9aYO;Xup#nm^hV4R zA>PplA&{p<7Yk52R+I=ucVu?z!JMUL$(7XAJv@-4NnyvkdHqp>D=+6cAFT6V!<05ejnat7|c#U}nHxhgXcyQ1;`9w(srrvV)@m&ViK_;NpCf zrE+~F_SK?VYiLvsM+3d8$Sk6>h8){)G?q3IF^&veyZ2x>|M-*J$#?(wB@$30y1pf@gUPay1R;Ls@ zsi6A^er^fECP##_K_l$u0lS#`H~2;_f?Fe5FPu&CTfq~li6j|@#k#yLX~E!t9dLk+ zkg__c(WuD;HX~h0A*h9NIMY2gLI4ISNY4s8%@utSg%s3q8M!^NFY{9s%MmEW^0^Fm z8;M>Z+9AkrM3R94)@wImI3$%@dSY#rN7Pymc6P>uIUEqzw@R{1wB0uG&$HP|CuaS| z&d!5;I+fkAPw`Wup{Y&+6y}zqd_4(Vz#m*i&Jsw5z@g8vDm-6VjRwe_c#BbC8&v>L z;Hwp?!2qBL9=lTU#JFb;kb6I6kxLnpG2q#X@*u&MA;cEPX6+!@AsJe9cyw1z$`h<1+kS`r`xHJt#rTHZ12XTK;AvN{WO`fSKfX1y(!XS_4e&M z6C}hVY?MdZf89xraYfgODFd5;gIi&H%ZdxYHMtxy^&CKNhuEw4sq8*YW{GD`4#3Kw zQ&h+OenuLrZ1%znm!X$u0{qIs{ipT!kpaMeNVh-1MI^H)NCY8mFt3pmigfhNYSuE1 z2oe{m?U@(ND5}zErdmG1@L^@*Uf2(YgYfb4*6VGU0~J~zWyU7M3q->AN&|f8XnRI@ zt8)etu(6j#@gyyXLomZ^dWmh5@+^+9B}6;>HutX%( z8N)yN0adCkROzNr^@SsZF8W3fiL#r(#*Og})(1e;B7uCJG<2V9qXjeXprr`Ot_)*o zDOjm@mjhQ2(y+h*a8f{4ASJu7hC0*1oH9ft;ERt`HRAhx7VyUzQP++oipkX}zAGuJ zo&)mK$9aiSv>p6MJEr+mjB9e10~&&31ptP?TZaW-E9GH4MwY$Sq69!y)@^)VgoJ z_4fE@fAug{-Uh={W9kgCr^V9F!$^+6YNs;9caVV3 zpSP7A(JB8Q{yZ`O$ND8d|QWCuO$}0s@U~*}7wRnJUquD%LT3=$e5%!|4j0w7Km+zP;9WE%;I$E>|M=?;n> zM9RVwP>S;a;bb^Ey8qEfA6*B??(gjGf7I@-jCw}{Ld9<3u}d=y_AGhoqx9suf7!&L zmLK*9t^V+%HMdIa4@Y;~MRk{4ZR~#x2xEuTV2Mo(TUGc^8%SO_d-5g8!304 z*Ac}dh;tzz=A@2Q89 zxRNag7kLQslxpjcmOwE=fE*IO;=G|ell<#aBUzJ4hVXlB}9i> zs?L)DQ@V!x-R2%ALZ0?eGWO}TBXX_K6->%AC0a-dZw<}|Od!}|$J5GSI2r!zjbDw4 z_iT_@Wxx|L3G05!?@#CB`_#0kc55rW!K4^Y?saKJeKdK{-P_&oQ10}^iBmo5ENx@D zVRo(S%?5^mNG(O?plz#0247!D$Z-O zT1)0{xfHBoN=F3;4v|l34UW^Ag!Cg6O85LOXKDH4I_*c}+MIQg#2o-qvXzn@tU&4{ zXLh`^@W0}Mo2SA{8vB`s6~7RGs0T~x*oR>{t0Ag23FQM{VT&vsKy4!=5Z7Ko`Zy*q zT5~xefA`0;$+V5gc2u3rYFOA=hL_%JBO(w`i*XT&Dx0~!*laXZG)?#S4p=!-O!0p1 z!Ji;1ax0rQQSOLz*Yhdv7ro@jfGB`ueACX^XmsXPR(!Hh0NW>X0{n#W9V~%~QWL)_ zfxvv26LjX-dgm58%;(ZSqLIib^SJzvFbhs%1{5T~A#G7pE-l?Z{1Agm zb)!x+%Iz@iY|Ccav8ON+KrXaNQe%8QFF4{SA{i}CmC2Yqdr$?^CS`LoJqGzq{RR<^s9AyOb04~9?|w5 zi!~3J*mkML9+vA}Zry_ljxYxeC!N}`NnkbOFxTcsNBxrqKQZT#0ze0(WH75%9=|08 zZZ(SeaFboJdKvq;5XR4ZJ;&TDi=fyw@#(U}f-r$rV}&n`b{*h}L55{uOz0h;Vn!wf zWMqAjXPmU5M_>{IIv9wFMM(`&3hn@Kn3maH3+9+$!{J(jr)Fl6R#s7dfooB3098)G z9z>I|GXq%@=55l$x298|2DJ`G(;jf#ee`|&DGHqc_$)-e zSmuI^%9al^)*vI{5~nLGA)_1_e8L>iCa#;cZuAvdfax57m!47fel! z3coRdNxfCqQ=w?6=735}9t>y$`H<%$<|}KWdxC9a2#!=ygqL8?t*2R!e%k@f?oz7u zH)n=AavIc_b|H@zDne6FF%DzK9|#oZ$lW~2CXiw_M1($S)S7J3N+1Jq`6DR736}hU ztQ}^5>sG7MZZ_wpN@F=*r-DjAomr@zQdTiwemSH+_j&RzwcVRd@;yfIfVvzMjn+|% z*uQ3HHmRXvGzfJuslgZESK`Yf1%Os*IWS8gybArlMp*jkAN{C!k^s`fle4^bWPY^) zDrO7j1CH8FjDM9mD|@nfx07|+fMK(VCV+8HO$4b8)`8<##E$S4Vg~yr#IslzsgDEz zoIq5iu}PleCaY6+Q!IYarmnZojk#*`nU0Nl6N*NLf~Q!TAn`-EHMA^z!POB$9?lh* z7{L>6(pdr`0|>D=mS;f3*q*2yE)&#qd;;@H6Zs$`%CS-#^6(!0&_{ji#4?e2K4PP7 zaB`BdrQy6;Z?crD(Z(*cLfw&M%x2D>57;b`Rk1ay;#IH+klGUC67C0qge$Ou15ALD z9&^-W^2UL0%{m_McC}AE2TC4HN7zM?9IGkLCF+iKfv({+K8~Dy&Hw~{SB(WWU`O6j ziqX1QKh2cEbJ>7?PFx%LW(flnNbNn)stJhUWTNBgW{e708{kRcg>&>Vg9OOY`v`3y z5UHGKM})M{3_+5g%R^m0z>nX#FTl?}=NevOn15*{g>eUURQ&XN3ACQG1j@~jlPMch zCU;O8(CL2n6WT%0r@hHmA(V=n1Ia&SV{rh68@8$T9kN*5q2E~drv8t^i{YUMNHUeS zfoF{!^l>sn3J=dTfk|O<0m-KABE>F;RO>P}1FPv@#AzN=skWN!e5Ku~GRhI-$&55d z8pOAae3+*0Y{~kklx0B)j*e_+Je_Z|=53$bkLs;Xzd6Z9)y8zfip!AvZr!?70D!jf zi-R6`0n6Fo*2p*-#2a1V+g6lN?SOewe-Cp!T+6)c$aC4P2zLsA3~b)9B0csw$(UB50&O z(g@NTZf4Z<22x$FlEV|-d5iFc@nBkWM`|{Epy~!ymu7r=2QiD7SX3Z-3!5F-&O`ts z0M_b+VI4PLI?pB)MiEgPr9i;S5s*%8vN4;IfVGP=p~BPW1wn4reRSS+94%{%!78r~ zu+;&S*)|pgap?e(&}7CoDhNl2s|d}CGpOH)#goyvLii4AtW5=v5=p@r4DdxL1@mw_ z5*r^K!8*kTY8)4WJc5!;4SbD7Q~tSI1&h1G&Z>N;J(j*@fB<}@*BIe)pb*Yt!1y)Z z{Td(ah_F;dkr+D>yFhIJgwsW}KpmJ#Fk|@;_i+W=qO*|Euwu-(G}y+V)!TQ#BYSD2 z`*@VLsna%)y#q$>F^X)T%X;z5z<9=Ho)d-wWfU3C5>{n^smP!h5{Z3hF$YhDTyR3; z!QFl1cU<55_Dm+W+9aRYwr#U*Y}BFi%a)c&@*ebbKY_L%t{9bFqud`x~RvFR>Ge{cm$?LCrFj7 zXp6y%W!|HC@#zq$x-Cr^ixwP|7JGZ$&oD|K>fwvOgHWP?hmRjGi(ACH_j2(4<24y| z8drMv;qmZ&{V9}}O+MK~FY)4N{C+~WWG@kfpaO^W2>@6|WP1QXvT!f%{6lyxgGkP9 zzrICDz#eBK=Q;KdjH`A!8cftLf3E}*hf1tJRWXL=sDquQN?~P(b+;w);Uf@RxOuK6 zkjpw$V5h>P9>3eROX7VV;D0ygruck~AfIY$^8>hExF`J@xsgyU+>u zu#%;6RqcN@ z2HRKb7lB?#fok8eukj*;F>|41o`bH1WNUv1muqQRQ{c#La~vE4rLwOrzetJ%lV^_Jt-24|M5q+)3a7zvF_1;X*+2OS`GvOxY^`OA% z%Po~ki68k4u}#XI`H%S@fNVly2R17M4u%YPCWdTW?UG&<9N^%r6o*Jti*+zBhB-c5 z7POP$$v1$CZm%*@tvpi{tV(FtolLK5pXPwUxU3c`gmNPfiZ#O)2XGnB$J{Fy#{UKe zH}<-%vB&U;46RZWq0dIpRw&wu%A(1_25ZpMzgj2# zAZT@5h9MP#WRF6mN`{_Rt^Zvmp`V{$V}krNdJQT+Mslgu`|@IUi-JJ;az~HP1!3C=agl4~FRT-eKNmXGerp>1MAt!hhu7cH-rcR;2f} z`hV4Ooz-(wx>{AkXkYRwEB}@4NF`dYitV=Sw2=%m{zgEhh!9)*8X})G3!Wt~pv?x0 zN;`D5PQZn_gbs4G{G?S-O$~Z8hYhwl#X0e#U376UxUbgmyi_tH10M%D`9xiv5 zIt+7he8-(nDoYMk)elWB7x%P!n~%?K(}tbivucV7Q;Xf67SD@8Z;PZCXQylA)al2Y z3||N6Y4Bm1R43$9@AI=RcRF<&@52e~uBceQ{p z30kyQrIaJU^eK?S7=skCIOHu}k*-exygEqUeg*b^VE;BTb7fwJzW86-o92mgS;pPn zqEW5BU;sOH9?J6YV&y~WOPs$D>0F;zTTw`mHr8g{Ah{ix3D-b|dGc(>n^#oKakmP)n1B4{T&$=Sp@HR6Csin8IdqRFP!{nen6Cs3X>si~U|L zf6zAWS+}4Tke5cx$mEWHo?}qlkl$rWZY#u{l;cX_?Uj!HAw>p(gCg@m=ujYS=~P_p zybUgKx%tRAb@dzC71a_5(RH^K@lDI;4T$6Wrn$_C*1ugaTwpyGjtK zuSs?m*@JAn@k-rQlZ?hR;%Sa7bqf!u;RAQZ9?K}0G#?Wr>l3ejQljAx{f&-eXPwc{ zlFzIf_;9&$?Ck?LMH~c*q0W*=pO7rx9WrQMY+cDbNQ=Pv890Pig|Fn4poRWGxDhC# zA=@lbv@0fk-9q>iJA5tdb2qQG?DDEg7V)5+BCAX5y#BNj53a~}HZ_1hyY+mvAbEl^*5`S+jFc{5n z2~4Juy;RhxW_@Sz+o}hOA!0d{Eczi~#WuAA28g>6TIw?();5I#_O+kH zkqzt@8uAU0>`!Mm6)w62^a%Z5*6ev~V^uvU=vPKQ4Sk1SN;Xi-+lU^gp8>MUgL0@@&Y8Og`^6Ye!Cs0yjL1^Me)~({vnZ*Ng+=r z#wHAxO}zj9Q9J&AxhTWvAF~<=_grU_hs`WnOg0{T&Pn*MGB;Ur5oy ze&iA-z6v(-lv{uH7FXgOVgmmLXN3e7Xa6?#=d%=)>qf;w))Cba$_aYr*Vy4j3k$b^6ozyF ztEQDrfiE_|m;UgDY)8-qdCF3wVX`dTu9FL2P-squjSQ@5xfe9i+M;q05uszaGP21M z__}L1IA6&MUAQ6WV2$6L1tp*X-s9UviHrmFU{ViYB{wqwEwIADr{vyO%Pp+6yJr3$ zgQ)a}=XF0Jp@W0{2R;Nu&F8A@%9?n~u=ph3;732^1pQ$SUJ8Bfh6sCg0?NIj!8(9X zdqX=9|EvxH`PpRnsqpH_^k}jX#LN5Zb{j$;r z_P32tm*k5hz&wOE1nZ^=>$dgh9FmUeW{8$|mNW zb*)b=1diFc&oFJe6I@K3zau40w!Am?w=k=2Shy8a@hf+Ypp+Vx2Of1Yr$&j!RMF{qG$wj0V5GLBIE>4b-AuK;B z$rq$>7=#DCLbZl8g1iyMQZ$Rd(`ue^In~WhZAXv>K5l&ApeZ1DX-mC?kvsM{F8C1m`>sUM zYdHn$Z=RNXgD%hxlZa3TnR0YH39cOT3Rg90OyW^`H!g`+rjCeDhT$1QkK_+lK-4EN zX_mV7KjlNdd{{L&M0MQQZHb5>0}F*mT>(?a%TEnYoUE3~kDSlj$fgkZT~5>3qOAjwt`Jh5 z;X;Fghq_!=k=HKaOKo6bHNTA7c(7r}WhxM7Hj;KRu{_=1fYCe4#dJH_r`VC>&pzdskD zX<9^=^KFRAuPPqIWjUu6RJYQ3q$*ySck!$N_K+{gk^+CH;B-9xoNM@c5ehz)k3Hkp zWVNpi3YBDzuqk7eN37S+RZK$&PV#Tj@9i$ue|PcxcQ@70astbmUahhAi^=(WVEjqv zLa2bOs~S}sC6C-Qe#hUbw=)M`3Idml4ZX#hYT>urIa**J_gIu)dJx@sH-78NS^s?V z`O5aYr{J_^7GYxcDx;s3YQb6YM)2@9dQGS`EXpp+9|E=TVLtkqD>=Ir9;{?{nZp;P zQn)}A-+21ol11FGF?2+plbSVdpYXA!v%agr7uc@l0Cyb;6_I8JM6-YAmz^sYpEAhq z)v8`PNoP@TEJ>RjJ+XV|rz7p6+?v&D=gUrO)Cm!SuJD2^rFu=*GOFKi-}vatk)eY< zPrQvcUV1fgX3hM{VH^il{2YxUA57JlrqG#~D6~WH_mrgClJgc%n)s9B z3M}vKlFMhSt+W?i4;y)-_OIkfHeS!NZ|uG&iK*X5BS`%p7gU3u=N1ayj|#fw1Rk6t ziCDp~1?$jrqqoWfOsjl245ZUDb#!*z_m`gMlLDeU^i4wpLHbCI#Qln&=w$F&pt!_I z$IwE2JScFC<9<`->s?n-9MHGL-DU>wgfm;2tHd*&Id+H$y`}pQoNn=N}@1n zw#?T=DVQg9S&q5VG$O&3G*ahr;7OpsZEt7#y)%b$W__-C;z)q(ef2LKh)0Ho%!^h{ zu1pDf&avxj0`H4gph(bzqi0(Sk4>B^SuL`^dLkLECsC#c0OG=#r<}chl=oyU@Vq=N zr|UcqL~3`n|NQ;A`)BiRLC^tb58qSA2R4Hh%W;jxOdqJH3Xfnm(BJhj!j7t)hS^B= zPQ}cyAVT0$fo_=Tv|Nn)rCU69`{!G{=)x2(nhwibKGYWE*3<-MCM-+1Y>3&Fcs{zb zJ8mPn`w?sKaeQ_TC=<5rjO4QR(uKev$#3%K8%h#iXXlJo|KzuxRE=K^C4g7BJ#g=u zD^J$NG#sz2_Kk7iLkJsDDe!;V&w%n9dnBzciQE?b>Zs}&6c$n&iGJ7&f|4AqIyH5i zIs9D=z>Y{>3f?Cx3zH4qcq@3nwMx72KM+*?@{c3;-}W28@J7+-IM>fR1fy)->U`t( z&6eo|gd{LWem%Eu=Q9E@jR%eK}Vn1%lB=2O%1Ac~~#DoK%0z08D z_*zh>O`a&YfQ`ZgO56Q10)3%1?gr{`<#aI$j(D60oWzaSuf(f8vUhVSd8 zKlpja^)PS3i5iXjy*YS3xpMe1`;hyLJ~Ek4R}~!rx;qZ#@XPaV?0L%Z^XXd8x!7(r$k|RL=gV4K_G#5{(;-wjp!ejy z#~O75nJ&<2<`fPNiw6xhes&t4^YvP0E&je-!4EmS5Wx?-`5C&*cLw?#wy824YJN%e z!2B{OKgJ&IHN54W^)7RW=0}D>cp93^4gdB&wDSCOV?-M#G+)IOuqR3^!0_E2byJ%_ z@`0ZjoC5ffZy>3!Fb4^n#-buh4L(XNm8F3HDb=v^EKCquiV((f4zNamMaP0n;G0Yr zi$X zJ9i5*dV;RrF;0SqKLeoTq3?nUp87<+qOo{iO>Rnq&px3lvT8=v!wvcM$-Mtt z&&w;$xf`;D7B(8`ZEEN6xG3$Gsl8dXg8r+>R$Q>a-nu*Vd?tN03&b>>&2bRiW?+gi z`A62|GE^b9fPcb@zFO?UgZ9@L&C`$Qnz4#dopde!AYz%^c-M59!vjyG_wc zZ(ro}h(o&Ia}b7Qe(66*IcMJ0APE9orf2wHy+fTagjxWP35Vg-S4f7~`_~=PPfv|u z#~v8L$4lIXCns%92l-tbDZwpp*h%*ddmp(sh)@znT1#)a(#2Y%jHBYU>3?SZp?s?E zd#dnutE+Qy&qwm?gyfdJ1CQxeOxt2g!QYZlqZYQ7$=KTJR!H+tQXaos`Jw}Gl~NeB zYW94ocpsAYfs#DBLh&`L*4QlqF6T)Sq%UjrdX<+FOeMa zJ9dqV#yMr4)QZKR{qMGaLvwR;aCGZkYtT#Uh0Aonf5Re;ZakbPss#b}%eA&2%Vbrs z_JA+mF7AQ_Y~YL+OeT(L4C{uOLia6%f?gNdyj=+ca&m=Leph}(zjOdS!Uo}yFpGp~nS|m7<6o`AJ1!vY>V3K$W zD&u90m660kt=MaJcL?|Uuwf3hdvW84ksMW!G)P*=ekcToSNW!^!es6YG-SHX4N&e0 z*pt@pZ=-$$fL+44KHji9wJ=0Qpbw-*MLm!({3>hC(Alu6sQ9s-)orR(aU$nBp3XgU zCxD7sUomx`aI96;=5uwr>~zVg>rQGKSA>Y&zcu?KS;J=L0gn%xAHRfYr3*z)wX*o~) z_VBGHo4H>VBt`uCTd-BhbDkF)%)>`~V$)%NZ!=dNI~?ez`BUtxijz!+hLa4zuG6B1 z0sEnkN00QcOSoGy$V!fy6Rrh2AwDrf8@?yXH>IitEkrSnzQgebtJg>FUgQd=v~WYc zgYWs_;-KQLyOKTCrSV}B=L=im$9gp;Qp|DqfVl-Lw4VMv?UNWVvUt$Qq@efy=PgPSlcxE$itb+-^$GpbP2 zy#v9Z(2p5~zieJ=X=o{jg@wb05dek>lmR11UzLo8EilxZvq!sz~c^&6XjC0aaC@*XZ_7&`gCK*KYj3L?n=qtJf}0?9SZ^=g5=bThQXs~ERSovwjCa}ixvwQz&tZtL_EdDAnoXu=FEhj<*obsFnVVaxqPAv=WJ6>HFn&UMc*D?rlXoFz2Gj95hTEU1@54?b zpS%VmzSipKPf4R15*O$-?lzbt0PqBf4CnZJxPI7WJ?97gE4Y)Zs1*f62@jAqB1KI1 zl){J{F$Ej~|ATf-320AUmoYpIeA@QEK07-j7ZCht`S$s=jE&6=efHDXIO&FL6AM9e zVeYqQB*Uf8s8VmBKKSqF+r&91AP@^3n^5of@bITz%Ie_0*QxHEd>q0Upb9$o4Y=w6 zJ2yKY4li>|SIi#y%znQIA=8;@Zc8RZfBFjV__G=N&Flf)l#s31J zlfZz%GCRq|C=w`k7~2WnH5Pe$NPbUoXCAH!#}w$A7>Xl|VeNUnhP4oT@W>TUq+W51 zx2ApLgQZ0$7WgZ_LGnG8!iJ6A$?Yp~Xem( z8VwO_q@?kPU-$&P&exE@wB*$xkJv*$TGw31O=F1+_E3xwGbarfbS581uJi?49oHKu z(~c7;!*|?Kt&s*Wc^MgG;AomvvVEa%m5yTWxxZQ}h|U-Q90n7NBE(Tc&z$8_K^kF~ zOB4CM&D21i674*V`1}&XvXt_u*isUjfG^6V z=0%zBMB_MYc7iCZ6$r7?9G_;L89t+w+S+|`G`w=FXm~n5KRsXX!R@+Bs!Py-Bf7AO z)k5&@$vc!{EDI8HPwbTqO#9MBXr23SIf3k%^q@1jO)Tn9g=&CoPKn#as!H2iS}7zF zBu2>&%BtVH>m>(HUq3yBT0}e3ljCkm1E^Wi6XfXK2vB(e6s23?=s;XK$t;F8fT@@H zz9R=b3psLYGpxZf)A{Pv$AY#ma)g2}H^&731sTU1ao+T;;-X<(m>n*}UHl_GG zQ9$Ci0o53yub0BkJvsvivp-7OOb3or@PP|`Z)by*?7gVS6jJJ(F(qPHxpb4BQbcMOp*8aF^a$?A(o5E-@TC zAF5QQAyAY#MV89_zQjbykYuR7r$5=X_8jzMA1|k{OK>q6A#P}6Kmd_hqbDo2Nb= zidFeUQQv7vU@DYUAFi>rb!uCIUB!wk%E^#7V!`mjNjz%I^2Jy_#X0DQj|z!ei@{?_Lg)vg4oAWg&u9zLB`yvSX0L89xUdHuh4^y<@4l@;~PO)y$qX}04nHr19aNW?exsEh?kB)DolSV@7l zs1ptIw1_k@$rL%Ad2seAUEb~%Rjp>$_?$L6b-SNwxAXtQ7b^aezBvf45|?#${Z56UM#TuS$pIhM_@} z&rD$`IK1=+=CG;~TjYg(%$s$lgVz?R#F>NJ0cz1m3#{>~xk6v2Rya)~Arpa$dB*}C zRlLhyKYa92&=bR;4EK1Ms<{a^;pdY=~#f@MBkK(1w{c2kt!f{*wB0Xd$UvL)sVoLoY0&x4#KZJ z(lC$}%ljfkmD-}LOj^nyzU>9^hh-ir5c|va-#%w=X6n#3n0Wj953Stf{N7P;$DDS? z;I}KNwkW;wl|C@uQ)vHoqCg=Q3ZS^AdxbyfLsH!j0v4(l;&lFI4>d*v5`EHgW&ms- zDQk@Wc6D%=!(-Ox!&>IRhud3v2y#75k+fUzZ)4xU+ms|b+URZzX~adDtw1DAKn;)a z_dS@RTsC_8mF43tpyoucdsJHL_;8y2 z4O9gDv}}PLB@9ksu2Tj2Hzd(5rraVfw+|R-=%*i-ZbKyeH4;P2mhbbY)|7{u5{jhdDXG{$#jP|J=AHrcb={ zx-*^pAmKBUHs9~T(m8X7l81o#$uh|B$YX&tYi@ZxZ?)a$L^ef_hAK)QhkQVU{l}j- z?%+DUS=8_X*SVS9)2Gb5=Uq~0TRukSUql3JJ<6?hR0Ki7G}#z+!23N6816Q}YStou zkJ3BSD-ab^SXy|M?IS`)Fr!{^SNS6cZV?fV2w=DpGlSO&HmpLgal#HY`%H1^%9o%1 zaq1U@^3@3^H-SPpVbE3p3tj$)8ENPaz8F2R@$VFfc6qd4E14?~#_RVpe6|nQ@r?Lp zw804-5ysN4HZH~XbEwln^FxLP2{g!nv?BNV@uW#;r)=wo%z^9M-LOjjgzDMx5Fj~2 zBxQ(=oho_Cf1lClHzsfCs(~%?kLgnx`*%zhPYlvVw%ju&$R+uJo=#A||0UJ^I0)hg zFXEcV2kE)HUv+XSe6uQIO>+HX5W4l?L}6$<9?nwx99Mk1IX;DEU>jE80pNQ@-wGxb zD53lDZ_-(B94jE&8Q6sio6ay{<#JP&W(OO6*@c>mEav(zA@H`Cexf%ZC%6IqNFKx zA{OP!fTP9_p3mVtr6s0lh$Vx|&ln|YJEafX1~?yQb@s~tCL;|_JlSngK2L5HC$B9HWZ z1H-+90LIOG$Su1u1*X@fA=g8RTO>vxZL8>a{uNr`-4Wu}AG7zAiXB&~W}S_41S6#B_JqGQ*bY zi^SMy#f2RY*qjas`1tS7J~h;71%-+C;8;BUS5*dwyP;caf@^w32M`A=QJ*mEeBH^i z%J;G94@dhFi}|JIt{+Xq)xb1YpsvN0db&#*ee|)J7#?DNHs9X9Z8LE)*!RRow4}bS zWJS3ue*{H|wHo2cFH?IhW zAN&}MGTF82WOu{=UUgkq;0u`{U!MV_V8Q`7UH-$?1Xt2N4f>G~2q#dBeo9gA`thp2 z9KuKlL-o9dgiqrW@vWX? zGqT%*We%qHfB+pP9!5<1`xj!{+WU&e+>5MZ_%=JDrpliC=33@(l*JGwj;5oHXSL-U zXTC%&1Qs+k2ypAtFGL{YM@_D2-RC3khSRZT$woQ`U^Zf?KhrrI5?>^$SW1YV92<9a z4DhE=wt$x7xvFY0dTlQarjm;hFnpj6(YM#~*CBU*eQqO+;_Z5;&kYdZj6>!g=0A{l zby~KfiXsv=|-vU=lSadaw}i5wt~zn!bBbM9jT> zv3$1=?XcV7uc*iLIu>0E%soJtNOW#(B4T&W055mje|B zO(nQMgif3<7n$!nJp8j1e6-ZK0XQ5ic55kJ90>ZQNQ|lO#o}|u|KPM`SNkGA@%;%| zYa6HSGU8*>LD^&{q90c}Fl?Ijy1My(57a;PLv?&AKhi<9=R@7Y^0O)@qIeS;(%ChU&4jTk2B9vi7t<-ci`?W!Kn^Alh`yF^@OB?*9qziUFPQ->T^Si@N zlre`-n2*zQG05A8*&y7>T4c-u?R&-GT|mG<+lb`Jz;Wuz-{0KEG44%NNowfipR1)` zsrL-V;6ujn7fW~l#C_{m(ag{=KKlbDGyN^069;;&0Xb8lBLMz$33|bATb=DEK1hX6 z;X%`O0KzY5yI7^>gq}pSPDG&+JBuQ`-+nNKKo2-3&svSS<<#ikyqX8Z#C8C==j8DD zZK}=6w^*6#Ma3&ISk`FgRGeJHnQqv{W`_s|ReG%|j+8Ha)aYssGld#CQoIS>r-}t> z-z=0XjO6{+IS~#^XI{=0{q{k>r1zwa0&W=|@%;y+vIAyhr)JX1;BUL1p^TICrr}`D_ym2gMc?e&L?-~3ZGr~&yPINQ;r-npC=H+P#?JwJ< z-SnX-?@l~1!0?r^wbzRHD|cD3-nEn&9~ixR0Lep+#hT5U%w{e~u%&%$mY^ElE(Sio z1XDi)-cl6w+ejfGsvCRLWg-v*vaBqFrW+gwjE9s)(+A$LWv}&dv4x!O_JbZG_`Jgt z4RZj~)y}TUQZdUYm<#M)n(afF5FWezu{0FEo=;}6?%vqLe??}Mda0VgkDh!f)%aS8 z6L!acNv7}@&+S+2kF0afOo$0uR-KPvA( zX%QKYk+QS&zxj%eF&g(i>w;L`-cC~(ftsNnG-oKN@KH+gQn+a5d5u8((B5&Y?+6c? zvZF`SuZx>3^A>lb)Y6R{+8|+F)f|Rx_$dXghu53w9tlBFnp!a#kRnk|i_p8{3wARV}YAKKw-`JPEVWxKCfOf9o~UHLoH; z`QcIwjS@2k!@?ZD{JUaok*HvN^Q!}2_TAyPG$VITHcf&wt!vRmNY?m+o`NcfJ#Vo- zUv}E*>?YsgvNOJU`DI~a10e!0&t27loL~jhqfrjeM?`2q!#*c?*5SXKR6OyA&wLQJ zVYD)wuVDu(QNCuR!_SyVfNHdrmx6>IN>+aK%RigH(d15)-n-(PZ7y|1)@R{EJ!JA2 ztr~nCF6n7Z#7r6Ww{B3=yPV;;ISm^$pE&->uq6OpGT@^oCrjnYt?^ z#lDl9trs?Hi*3d&wWs(uZoSgVKY?!a)3=;(Ss32t7l<% zy3~$9N%Rv_*!}AtPkq@vm1Kx<_9R*et-mq@7 zHqTI{q9ROg!(&`V@j-I;Ur7~%y@5Cb$4*rY3vGHrRLMzmrh|&0RWQ`0^Ql(vs2z=&9b4_9cf1GCuq&+@gjiBaR6r# zQ=SuF%F*|BR#uCwon@=N4MezP+c;+Hbe7Rms2_N5%C-!nMSGbNSwU4e27z;o0ObN` zy@>&QhIp7x#dN0!&ejgIM{YzpG{5&2=`j1DRSEawRhMnFCM^aaUN-mCPc>brz)bSw2zBCUA25j2fDxFl3_!f{5^BWK#mcfk5@D4Oii~HC z7*S-emL^eKmj-agfm%A{aD~+G@YO1-;cFIQgvV#Y8|Hgo%D3NQC3;%pmN`jH2980e zmZq5H!(x9D-Y)>{e{tH*i1uD_rS@$B_3!}P1H*VvwMjfmegG5H@70M|DHrVU-a!~) zynnYDpQbwe4i$LVOx}NJZu3?Vw@Z^2&wgT3eof0B=$Y8;#4SL!C$0?)`nhzgE zuoP`Kh|Scj2N0j+O~bERCYygOF-Yi`m;_i5A51BN^Ze0Ef?n~6#%&1nXAu4ka(|sh zXtT~O1hpz>dlY&Bri>^fFBG7heevko=M;1&J zf!B>K%K{zu72`Q^eQ)jBYknZHvfr)I*u<%FaF5)kR9Da6`FN>;nLKUrYy#bIkwy;A z_{g`uVL+{3+}~Fpy^K9bsTQ<^`*z#u$`G?u%`GY5GODfmTjjinfW34ZRdjpf8i#9! z6QE9Q+t|EWIrqk7(%+o(s6ZlCHLma5(X zg4{)0$f%go3(U6G7?G3arxOm_;dl^z-u$^D z_d%QL(c1N4>`tT_EkBEKVrG=aBh8xm5Jq%05W;}wl{t@!0RB4nDq~_0yM<24enJPI zP_NY213FlJ!E9_YP8=|B@kgdk`y~6r^)z&iGOFGj!NSXJ6CFrFW}R*n+y!3&+%6HS z&A*9Bf4xxKUHD~q%ug;DL)WjdyXgaCrXlFgJ%dBs^**#A@{3^?8`l}&z26=zP{b3Q z^)(4UL^0p@xSSTr%$-CO~1wVX7T}e?bZ9(`A}uN2T4RFBJ%N zj=x(gjT2v)x*-l$ymF7!=d9NX{Toawg-?+NlYVF}zj*Du_M`MU`mVl6Z2Guf#KI$X zqzeS8yj-!Uo|E$Uw>%YQ#!%Q(Zu#Fb1veZ>oD|CFVw4%YqywV8V?CN^`>AqvaXTiG zyN4j|f=u4lCIGgL<`*uOMFy*O*)3Ep$8HvAcG^LJy4#hIhF@%J6`z5%uyvmXATd#8 z;gK&OTtAze&tlHPjy#ier&j&KJm3IBGPr>gg4cpbbj;TqfSTCpf%@20tnCyYf0WDu z=_{BHImEa7+GfE83}hd;CjqcQc0 z{by_~PRfJCLWkTYSHyg-dgD+cJNIKh?R6Ruey9J(!^0Z%XWP@55K%Kh1Pu2BkJJRN z>A`y1Jodji;M#6mY1QCY|I8DD75D#wx~iQ+)*n;jD2|@WgG#WI$7*|7D*kA^CPd{K11JZX)ZrVJVy>XYfq>&Ih2K5fB7_Ri70Ci4_LB9S72&Z5fXQML)Q^qUmw~A4PeDY?|+#H^HsFwNrmm?7y&#tbs z`}KBC6^b==Izy(0_=-wr&eo=0c-bm@1Evnl;VR@=;U~5uTYhu52Pt}JLx0csfC8GA zSI&SmP`JW(t7}5Bw!J?ekGPPOJ`+YO&QAI^An-Qgvs3x-6CS%o3ow4=EX#?B(Iwrs zorqoK(UI%6%O0&1_VSYX519^D3|?a27p7U#Bl_kKWHtyy8=MA^A3d);QCMN@*`Md9 z-v8FneyaVXJ~Va`D6k;xUiGr%G2Ty~5iSmt?TMkv20>z|mZ&WsFm7R<>*gl**FqST zl6>+y*#1Mr^{vkgN3t)f4I5h?t#$+^CErC9L8gO@f^%E`{1lSh$3fH$^!vR2 zE$8haW4B2$9wwszW`Uj+nkREljLHTJO9QXB$-&vAg$g&?hG&X5^iDQ``?GFKjgJZZXUWBo zv?4K^;Z6=O;w&$AmO~@ z@PJ@|`H)eJz-OmLekQ;FDnwIv12ZZ&8gL*Qd<}GL>cd1jxNX;}jM*=|qGZo{X2w>2 zz$Axv|MR6UkT1rWA3GDDQXg7lX2FK1y)mD9S|H?x6eDdh&kffZw@nUtiL7(Pl*NyL zj%)?xuLuf2cY|YXL1UY4i_ZAtR_oL@-xugDI&2~fKQiC{Czn49-6eG8PR Date: Sun, 31 Jan 2021 19:03:52 +0100 Subject: [PATCH 07/21] improve symbols and colors in tplchk --- lib/base/base.php | 4 +++- lib/templatechecker/templatechecker.css | 24 +++++++++++++++++++++--- lib/templatechecker/templatechecker.js | 8 ++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/lib/base/base.php b/lib/base/base.php index 7224a44c8..fb8a4dd60 100644 --- a/lib/base/base.php +++ b/lib/base/base.php @@ -201,6 +201,8 @@ */ var sv = { config: { - version: '' + version: '', + icon0: '', + icon1: '' } }; diff --git a/lib/templatechecker/templatechecker.css b/lib/templatechecker/templatechecker.css index 9077d527d..2813842bc 100644 --- a/lib/templatechecker/templatechecker.css +++ b/lib/templatechecker/templatechecker.css @@ -1,14 +1,32 @@ +/** + * ----------------------------------------------------------------------------- + * @package smartVISU + * @author Martin Gleiss + * @copyright 2012 - 2015 + * @license GPL [http://www.gnu.de] + * ----------------------------------------------------------------------------- + */ + +/* enable selecting text in docu pages only */ +html body { + -webkit-touch-callout: none!important; + -webkit-user-select: text!important; + -moz-user-select: text!important; + -ms-user-select: text!important; + user-select: text!important; +} + .severity_E .tplchk_text { color: red; } .severity_W .tplchk_text { - color: yellow; + color: #E1D500; } .severity_N .tplchk_text { - color: greenyellow; + color: limegreen; } .severity_I .tplchk_text { - color: greenyellow; + color: limegreen; } .check img { diff --git a/lib/templatechecker/templatechecker.js b/lib/templatechecker/templatechecker.js index 686e7577e..d239f8e6c 100644 --- a/lib/templatechecker/templatechecker.js +++ b/lib/templatechecker/templatechecker.js @@ -141,7 +141,7 @@ var tplchk_filelist = (function () { $('#check_masteritem').each(function (index) { //Show Checkbox for checking items $.getJSON('lib/base/' + $(this).attr('data-check'),{'pages' : $('#tplchk_pages').val()}, function (data) { - $('#check_masteritem').eq(index).children('img').attr('src', 'icons/ws/' + data.icon); + $('#check_masteritem').eq(index).children('img').attr('src', sv.config.icon0 + data.icon); $('#check_masteritem').eq(index).children('span').html(data.text); if ($('#check_masteritem').eq(index)[0].dataset.check == "check_masteritem.php") @@ -157,7 +157,7 @@ var tplchk_filelist = (function () { }) .error(function (jqXHR) { var data = jQuery.parseJSON(jqXHR.responseText); - $('#check_masteritem').eq(index).children('img').attr('src', 'icons/ws/' + data.icon); + $('#check_masteritem').eq(index).children('img').attr('src', sv.config.icon0 + data.icon); $('#check_masteritem').eq(index).children('span').html(data.text); }); }); @@ -222,7 +222,7 @@ var tplchk_checker = (function () { $('.check').each(function (index) { $.getJSON('lib/base/' + $(this).attr('data-check'),{'pages' : $('#tplchk_pages').val()}, function (data) { - $('.check').eq(index).children('img').attr('src', 'icons/ws/' + data.icon); + $('.check').eq(index).children('img').attr('src', sv.config.icon0 + data.icon); $('.check').eq(index).children('span').html(data.text); //Show Checkbox for checking items if ($('.check').eq(index)[0].dataset.check == "check_masteritem.php") @@ -238,7 +238,7 @@ var tplchk_checker = (function () { }) .error(function (jqXHR) { var data = jQuery.parseJSON(jqXHR.responseText); - $('.check').eq(index).children('img').attr('src', 'icons/ws/' + data.icon); + $('.check').eq(index).children('img').attr('src', sv.config.icon0 + data.icon); $('.check').eq(index).children('span').html(data.text); }); }); From ad1626b6758400e9e6bd206845d6e7b3a7cb7b47 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Sun, 31 Jan 2021 19:10:36 +0100 Subject: [PATCH 08/21] new design holo-inspired --- designs/holo-inspired.css | 876 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 876 insertions(+) create mode 100644 designs/holo-inspired.css diff --git a/designs/holo-inspired.css b/designs/holo-inspired.css new file mode 100644 index 000000000..875784795 --- /dev/null +++ b/designs/holo-inspired.css @@ -0,0 +1,876 @@ +/*! +* jQuery Mobile 1.4.5 +* Git HEAD hash: 68e55e78b292634d3991c795f06f5e37a512decc <> Date: Fri Oct 31 2014 17:33:30 UTC +* http://jquerymobile.com +* +* Copyright 2010, 2014 jQuery Foundation, Inc. and othercontributors +* Released under the MIT license. +* http://jquery.org/license +* +* @default design_icon0 icons/sw/ +* @default design_icon1 icons/bl/ +* +*/ + + +/* Globals */ +/* Font +-----------------------------------------------------------------------------------------------------------*/ +html { + font-size: 100%; +} +body, +input, +select, +textarea, +button, +.ui-btn { + font-size: 1em; + line-height: 1.3; + font-family: sans-serif /*{global-font-family}*/; +} +legend, +.ui-input-text input, +.ui-input-search input { + color: inherit; + text-shadow: inherit; +} +/* Form labels (overrides font-weight bold in bars, and mini font-size) */ +.ui-mobile label, +div.ui-controlgroup-label { + font-weight: normal; + font-size: 16px; +} +/* Separators +-----------------------------------------------------------------------------------------------------------*/ +/* Field contain separator (< 28em) */ +.ui-field-contain { + border-bottom-color: #828282; + border-bottom-color: rgba(0,0,0,.15); + border-bottom-width: 1px; + border-bottom-style: solid; +} +/* Table opt-in classes: strokes between each row, and alternating row stripes */ +/* Classes table-stroke and table-stripe are deprecated in 1.4. */ +.table-stroke thead th, +.table-stripe thead th, +.table-stripe tbody tr:last-child { + border-bottom: 1px solid #d6d6d6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0,0,0,.1); +} +.table-stroke tbody th, +.table-stroke tbody td { + border-bottom: 1px solid #e6e6e6; /* non-RGBA fallback */ + border-bottom: 1px solid rgba(0,0,0,.05); +} +.table-stripe.table-stroke tbody tr:last-child th, +.table-stripe.table-stroke tbody tr:last-child td { + border-bottom: 0; +} +.table-stripe tbody tr:nth-child(odd) td, +.table-stripe tbody tr:nth-child(odd) th { + background-color: #eeeeee; /* non-RGBA fallback */ + background-color: rgba(0,0,0,.04); +} +/* Buttons +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn, +label.ui-btn { + font-weight: bold; + border-width: 1px; + border-style: solid; +} +.ui-btn { + text-decoration: none !important; +} +.ui-btn-active { + cursor: pointer; +} +/* Corner rounding +-----------------------------------------------------------------------------------------------------------*/ +/* Class ui-btn-corner-all deprecated in 1.4 */ +.ui-corner-all { + -webkit-border-radius: .3125em /*{global-radii-blocks}*/; + border-radius: .3125em /*{global-radii-blocks}*/; +} +/* Buttons */ +.ui-btn-corner-all, +.ui-btn.ui-corner-all, +/* Slider track */ +.ui-slider-track.ui-corner-all, +/* Flipswitch */ +.ui-flipswitch.ui-corner-all, +/* Count bubble */ +.ui-li-count { + -webkit-border-radius: .3125em /*{global-radii-buttons}*/; + border-radius: .3125em /*{global-radii-buttons}*/; +} +/* Icon-only buttons */ +.ui-btn-icon-notext.ui-btn-corner-all, +.ui-btn-icon-notext.ui-corner-all { + -webkit-border-radius: 1em; + border-radius: 1em; +} +/* Radius clip workaround for cleaning up corner trapping */ +.ui-btn-corner-all, +.ui-corner-all { + -webkit-background-clip: padding; + background-clip: padding-box; +} +/* Popup arrow */ +.ui-popup.ui-corner-all > .ui-popup-arrow-guide { + left: .6em /*{global-radii-blocks}*/; + right: .6em /*{global-radii-blocks}*/; + top: .6em /*{global-radii-blocks}*/; + bottom: .6em /*{global-radii-blocks}*/; +} +/* Shadow +-----------------------------------------------------------------------------------------------------------*/ +.ui-shadow { + -webkit-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.15) /*{global-box-shadow-color}*/; + -moz-box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.15) /*{global-box-shadow-color}*/; + box-shadow: 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.15) /*{global-box-shadow-color}*/; +} +.ui-shadow-inset { + -webkit-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/; + -moz-box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/; + box-shadow: inset 0 1px 3px /*{global-box-shadow-size}*/ rgba(0,0,0,.2) /*{global-box-shadow-color}*/; +} +.ui-overlay-shadow { + -webkit-box-shadow: 0 0 12px rgba(0,0,0,.6); + -moz-box-shadow: 0 0 12px rgba(0,0,0,.6); + box-shadow: 0 0 12px rgba(0,0,0,.6); +} +/* Icons +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn-icon-left:after, +.ui-btn-icon-right:after, +.ui-btn-icon-top:after, +.ui-btn-icon-bottom:after, +.ui-btn-icon-notext:after { + background-color: #666666 /*{global-icon-color}*/; + background-color: rgba(0,0,0,.3) /*{global-icon-disc}*/; + background-position: center center; + background-repeat: no-repeat; + -webkit-border-radius: 1em; + border-radius: 1em; +} +/* Alt icons */ +.ui-alt-icon.ui-btn:after, +.ui-alt-icon .ui-btn:after, +html .ui-alt-icon.ui-checkbox-off:after, +html .ui-alt-icon.ui-radio-off:after, +html .ui-alt-icon .ui-checkbox-off:after, +html .ui-alt-icon .ui-radio-off:after { + background-color: #666666 /*{global-icon-color}*/; + background-color: rgba(0,0,0,.15) /*{global-icon-disc}*/; +} +/* No disc */ +.ui-nodisc-icon.ui-btn:after, +.ui-nodisc-icon .ui-btn:after { + background-color: transparent; +} +/* Icon shadow */ +.ui-shadow-icon.ui-btn:after, +.ui-shadow-icon .ui-btn:after { + -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/; + -moz-box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/; + box-shadow: 0 1px 0 rgba(255,255,255,.3) /*{global-icon-shadow}*/; +} +/* Checkbox and radio */ +.ui-btn.ui-checkbox-off:after, +.ui-btn.ui-checkbox-on:after, +.ui-btn.ui-radio-off:after, +.ui-btn.ui-radio-on:after { + display: block; + width: 18px; + height: 18px; + margin: -9px 2px 0 2px; +} +.ui-checkbox-off:after, +.ui-btn.ui-radio-off:after { + filter: Alpha(Opacity=30); + opacity: .3; +} +.ui-btn.ui-checkbox-off:after, +.ui-btn.ui-checkbox-on:after { + -webkit-border-radius: .1875em; + border-radius: .1875em; +} +.ui-btn.ui-checkbox-off:after { + background-color: #666; + background-color: rgba(0,0,0,.3); +} +.ui-radio .ui-btn.ui-radio-on:after { + background-image: none; + background-color: #fff; + width: 8px; + height: 8px; + border-width: 5px; + border-style: solid; +} +.ui-alt-icon.ui-btn.ui-radio-on:after, +.ui-alt-icon .ui-btn.ui-radio-on:after { + background-color: #000; +} +/* Loader */ +.ui-icon-loading { + background: url("images/ajax-loader.gif"); + background-size: 2.875em 2.875em; +} +/* Swatches */ +/* A +-----------------------------------------------------------------------------------------------------------*/ +/* Bar: Toolbars, dividers, slider track */ +.ui-bar-a, +.ui-page-theme-a .ui-bar-inherit, +html .ui-bar-a .ui-bar-inherit, +html .ui-body-a .ui-bar-inherit, +html body .ui-group-theme-a .ui-bar-inherit { + background-color: #e9e9e9 /*{a-bar-background-color}*/; + border-color: #dddddd /*{a-bar-border}*/; + color: #333333 /*{a-bar-color}*/; + text-shadow: 0 /*{a-bar-shadow-x}*/ 1px /*{a-bar-shadow-y}*/ 0 /*{a-bar-shadow-radius}*/ #eeeeee /*{a-bar-shadow-color}*/; + font-weight: bold; +} +.ui-bar-a { + border-width: 1px; + border-style: solid; +} +/* Page and overlay */ +.ui-overlay-a, +.ui-page-theme-a, +.ui-page-theme-a .ui-panel-wrapper { + background-color: #f9f9f9 /*{a-page-background-color}*/; + border-color: #bbbbbb /*{a-page-border}*/; + color: #333333 /*{a-page-color}*/; + text-shadow: 0 /*{a-page-shadow-x}*/ 1px /*{a-page-shadow-y}*/ 0 /*{a-page-shadow-radius}*/ #f3f3f3 /*{a-page-shadow-color}*/; +} +/* Body: Read-only lists, text inputs, collapsible content */ +.ui-body-a, +.ui-page-theme-a .ui-body-inherit, +html .ui-bar-a .ui-body-inherit, +html .ui-body-a .ui-body-inherit, +html body .ui-group-theme-a .ui-body-inherit, +html .ui-panel-page-container-a { + background-color: #ffffff /*{a-body-background-color}*/; + border-color: #dddddd /*{a-body-border}*/; + color: #333333 /*{a-body-color}*/; + text-shadow: 0 /*{a-body-shadow-x}*/ 1px /*{a-body-shadow-y}*/ 0 /*{a-body-shadow-radius}*/ #f3f3f3 /*{a-body-shadow-color}*/; +} +.ui-body-a { + border-width: 1px; + border-style: solid; +} +/* Links */ +.ui-page-theme-a a, +html .ui-bar-a a, +html .ui-body-a a, +html body .ui-group-theme-a a { + color: #3388cc /*{a-link-color}*/; + font-weight: bold; +} +.ui-page-theme-a a:visited, +html .ui-bar-a a:visited, +html .ui-body-a a:visited, +html body .ui-group-theme-a a:visited { + color: #3388cc /*{a-link-visited}*/; +} +.ui-page-theme-a a:hover, +html .ui-bar-a a:hover, +html .ui-body-a a:hover, +html body .ui-group-theme-a a:hover { + color: #005599 /*{a-link-hover}*/; +} +.ui-page-theme-a a:active, +html .ui-bar-a a:active, +html .ui-body-a a:active, +html body .ui-group-theme-a a:active { + color: #005599 /*{a-link-active}*/; +} +/* Button up */ +.ui-page-theme-a .ui-btn, +html .ui-bar-a .ui-btn, +html .ui-body-a .ui-btn, +html body .ui-group-theme-a .ui-btn, +html head + body .ui-btn.ui-btn-a, +/* Button visited */ +.ui-page-theme-a .ui-btn:visited, +html .ui-bar-a .ui-btn:visited, +html .ui-body-a .ui-btn:visited, +html body .ui-group-theme-a .ui-btn:visited, +html head + body .ui-btn.ui-btn-a:visited { + background-color: #f6f6f6 /*{a-bup-background-color}*/; + border-color: #dddddd /*{a-bup-border}*/; + color: #333333 /*{a-bup-color}*/; + text-shadow: 0 /*{a-bup-shadow-x}*/ 1px /*{a-bup-shadow-y}*/ 0 /*{a-bup-shadow-radius}*/ #f3f3f3 /*{a-bup-shadow-color}*/; +} +/* Button hover */ +.ui-page-theme-a .ui-btn:hover, +html .ui-bar-a .ui-btn:hover, +html .ui-body-a .ui-btn:hover, +html body .ui-group-theme-a .ui-btn:hover, +html head + body .ui-btn.ui-btn-a:hover { + background-color: #ededed /*{a-bhover-background-color}*/; + border-color: #dddddd /*{a-bhover-border}*/; + color: #333333 /*{a-bhover-color}*/; + text-shadow: 0 /*{a-bhover-shadow-x}*/ 1px /*{a-bhover-shadow-y}*/ 0 /*{a-bhover-shadow-radius}*/ #f3f3f3 /*{a-bhover-shadow-color}*/; +} +/* Button down */ +.ui-page-theme-a .ui-btn:active, +html .ui-bar-a .ui-btn:active, +html .ui-body-a .ui-btn:active, +html body .ui-group-theme-a .ui-btn:active, +html head + body .ui-btn.ui-btn-a:active { + background-color: #e8e8e8 /*{a-bdown-background-color}*/; + border-color: #dddddd /*{a-bdown-border}*/; + color: #333333 /*{a-bdown-color}*/; + text-shadow: 0 /*{a-bdown-shadow-x}*/ 1px /*{a-bdown-shadow-y}*/ 0 /*{a-bdown-shadow-radius}*/ #f3f3f3 /*{a-bdown-shadow-color}*/; +} +/* Active button */ +.ui-page-theme-a .ui-btn.ui-btn-active, +html .ui-bar-a .ui-btn.ui-btn-active, +html .ui-body-a .ui-btn.ui-btn-active, +html body .ui-group-theme-a .ui-btn.ui-btn-active, +html head + body .ui-btn.ui-btn-a.ui-btn-active, +/* Active checkbox icon */ +.ui-page-theme-a .ui-checkbox-on:after, +html .ui-bar-a .ui-checkbox-on:after, +html .ui-body-a .ui-checkbox-on:after, +html body .ui-group-theme-a .ui-checkbox-on:after, +.ui-btn.ui-checkbox-on.ui-btn-a:after, +/* Active flipswitch background */ +.ui-page-theme-a .ui-flipswitch-active, +html .ui-bar-a .ui-flipswitch-active, +html .ui-body-a .ui-flipswitch-active, +html body .ui-group-theme-a .ui-flipswitch-active, +html body .ui-flipswitch.ui-bar-a.ui-flipswitch-active, +/* Active slider track */ +.ui-page-theme-a .ui-slider-track .ui-btn-active, +html .ui-bar-a .ui-slider-track .ui-btn-active, +html .ui-body-a .ui-slider-track .ui-btn-active, +html body .ui-group-theme-a .ui-slider-track .ui-btn-active, +html body div.ui-slider-track.ui-body-a .ui-btn-active { + background-color: #3388cc /*{a-active-background-color}*/; + border-color: #3388cc /*{a-active-border}*/; + color: #ffffff /*{a-active-color}*/; + text-shadow: 0 /*{a-active-shadow-x}*/ 1px /*{a-active-shadow-y}*/ 0 /*{a-active-shadow-radius}*/ #005599 /*{a-active-shadow-color}*/; +} +/* Active radio button icon */ +.ui-page-theme-a .ui-radio-on:after, +html .ui-bar-a .ui-radio-on:after, +html .ui-body-a .ui-radio-on:after, +html body .ui-group-theme-a .ui-radio-on:after, +.ui-btn.ui-radio-on.ui-btn-a:after { + border-color: #3388cc /*{a-active-background-color}*/; +} +/* Focus */ +.ui-page-theme-a .ui-btn:focus, +html .ui-bar-a .ui-btn:focus, +html .ui-body-a .ui-btn:focus, +html body .ui-group-theme-a .ui-btn:focus, +html head + body .ui-btn.ui-btn-a:focus, +/* Focus buttons and text inputs with div wrap */ +.ui-page-theme-a .ui-focus, +html .ui-bar-a .ui-focus, +html .ui-body-a .ui-focus, +html body .ui-group-theme-a .ui-focus, +html head + body .ui-btn-a.ui-focus, +html head + body .ui-body-a.ui-focus { + -webkit-box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/; + -moz-box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/; + box-shadow: 0 0 12px #3388cc /*{a-active-background-color}*/; +} +/* B +-----------------------------------------------------------------------------------------------------------*/ +/* Bar: Toolbars, dividers, slider track */ +.ui-bar-b, +.ui-page-theme-b .ui-bar-inherit, +html .ui-bar-b .ui-bar-inherit, +html .ui-body-b .ui-bar-inherit, +html body .ui-group-theme-b .ui-bar-inherit { + background-color: #e9e9e9 /*{b-bar-background-color}*/; + border-color: #dddddd /*{b-bar-border}*/; + color: #333333 /*{b-bar-color}*/; + text-shadow: 0 /*{b-bar-shadow-x}*/ 1px /*{b-bar-shadow-y}*/ 0 /*{b-bar-shadow-radius}*/ #eeeeee /*{b-bar-shadow-color}*/; + font-weight: bold; +} +.ui-bar-b { + border-width: 1px; + border-style: solid; +} +/* Page and overlay */ +.ui-overlay-b, +.ui-page-theme-b, +.ui-page-theme-b .ui-panel-wrapper { + background-color: #f9f9f9 /*{b-page-background-color}*/; + border-color: #bbbbbb /*{b-page-border}*/; + color: #333333 /*{b-page-color}*/; + text-shadow: 0 /*{b-page-shadow-x}*/ 1px /*{b-page-shadow-y}*/ 0 /*{b-page-shadow-radius}*/ #f3f3f3 /*{b-page-shadow-color}*/; +} +/* Body: Read-only lists, text inputs, collapsible content */ +.ui-body-b, +.ui-page-theme-b .ui-body-inherit, +html .ui-bar-b .ui-body-inherit, +html .ui-body-b .ui-body-inherit, +html body .ui-group-theme-b .ui-body-inherit, +html .ui-panel-page-container-b { + background-color: #ffffff /*{b-body-background-color}*/; + border-color: #dddddd /*{b-body-border}*/; + color: #333333 /*{b-body-color}*/; + text-shadow: 0 /*{b-body-shadow-x}*/ 1px /*{b-body-shadow-y}*/ 0 /*{b-body-shadow-radius}*/ #f3f3f3 /*{b-body-shadow-color}*/; +} +.ui-body-b { + border-width: 1px; + border-style: solid; +} +/* Links */ +.ui-page-theme-b a, +html .ui-bar-b a, +html .ui-body-b a, +html body .ui-group-theme-b a { + color: #3388cc /*{b-link-color}*/; + font-weight: bold; +} +.ui-page-theme-b a:visited, +html .ui-bar-b a:visited, +html .ui-body-b a:visited, +html body .ui-group-theme-b a:visited { + color: #3388cc /*{b-link-visited}*/; +} +.ui-page-theme-b a:hover, +html .ui-bar-b a:hover, +html .ui-body-b a:hover, +html body .ui-group-theme-b a:hover { + color: #005599 /*{b-link-hover}*/; +} +.ui-page-theme-b a:active, +html .ui-bar-b a:active, +html .ui-body-b a:active, +html body .ui-group-theme-b a:active { + color: #005599 /*{b-link-active}*/; +} +/* Button up */ +.ui-page-theme-b .ui-btn, +html .ui-bar-b .ui-btn, +html .ui-body-b .ui-btn, +html body .ui-group-theme-b .ui-btn, +html head + body .ui-btn.ui-btn-b, +/* Button visited */ +.ui-page-theme-b .ui-btn:visited, +html .ui-bar-b .ui-btn:visited, +html .ui-body-b .ui-btn:visited, +html body .ui-group-theme-b .ui-btn:visited, +html head + body .ui-btn.ui-btn-b:visited { + background-color: #f6f6f6 /*{b-bup-background-color}*/; + border-color: #dddddd /*{b-bup-border}*/; + color: #333333 /*{b-bup-color}*/; + text-shadow: 0 /*{b-bup-shadow-x}*/ 1px /*{b-bup-shadow-y}*/ 0 /*{b-bup-shadow-radius}*/ #f3f3f3 /*{b-bup-shadow-color}*/; +} +/* Button hover */ +.ui-page-theme-b .ui-btn:hover, +html .ui-bar-b .ui-btn:hover, +html .ui-body-b .ui-btn:hover, +html body .ui-group-theme-b .ui-btn:hover, +html head + body .ui-btn.ui-btn-b:hover { + background-color: #ededed /*{b-bhover-background-color}*/; + border-color: #dddddd /*{b-bhover-border}*/; + color: #333333 /*{b-bhover-color}*/; + text-shadow: 0 /*{b-bhover-shadow-x}*/ 1px /*{b-bhover-shadow-y}*/ 0 /*{b-bhover-shadow-radius}*/ #f3f3f3 /*{b-bhover-shadow-color}*/; +} +/* Button down */ +.ui-page-theme-b .ui-btn:active, +html .ui-bar-b .ui-btn:active, +html .ui-body-b .ui-btn:active, +html body .ui-group-theme-b .ui-btn:active, +html head + body .ui-btn.ui-btn-b:active { + background-color: #e8e8e8 /*{b-bdown-background-color}*/; + border-color: #dddddd /*{b-bdown-border}*/; + color: #333333 /*{b-bdown-color}*/; + text-shadow: 0 /*{b-bdown-shadow-x}*/ 1px /*{b-bdown-shadow-y}*/ 0 /*{b-bdown-shadow-radius}*/ #f3f3f3 /*{b-bdown-shadow-color}*/; +} +/* Active button */ +.ui-page-theme-b .ui-btn.ui-btn-active, +html .ui-bar-b .ui-btn.ui-btn-active, +html .ui-body-b .ui-btn.ui-btn-active, +html body .ui-group-theme-b .ui-btn.ui-btn-active, +html head + body .ui-btn.ui-btn-b.ui-btn-active, +/* Active checkbox icon */ +.ui-page-theme-b .ui-checkbox-on:after, +html .ui-bar-b .ui-checkbox-on:after, +html .ui-body-b .ui-checkbox-on:after, +html body .ui-group-theme-b .ui-checkbox-on:after, +.ui-btn.ui-checkbox-on.ui-btn-b:after, +/* Active flipswitch background */ +.ui-page-theme-b .ui-flipswitch-active, +html .ui-bar-b .ui-flipswitch-active, +html .ui-body-b .ui-flipswitch-active, +html body .ui-group-theme-b .ui-flipswitch-active, +html body .ui-flipswitch.ui-bar-b.ui-flipswitch-active, +/* Active slider track */ +.ui-page-theme-b .ui-slider-track .ui-btn-active, +html .ui-bar-b .ui-slider-track .ui-btn-active, +html .ui-body-b .ui-slider-track .ui-btn-active, +html body .ui-group-theme-b .ui-slider-track .ui-btn-active, +html body div.ui-slider-track.ui-body-b .ui-btn-active { + background-color: #3388cc /*{b-active-background-color}*/; + border-color: #3388cc /*{b-active-border}*/; + color: #ffffff /*{b-active-color}*/; + text-shadow: 0 /*{b-active-shadow-x}*/ 1px /*{b-active-shadow-y}*/ 0 /*{b-active-shadow-radius}*/ #005599 /*{b-active-shadow-color}*/; +} +/* Active radio button icon */ +.ui-page-theme-b .ui-radio-on:after, +html .ui-bar-b .ui-radio-on:after, +html .ui-body-b .ui-radio-on:after, +html body .ui-group-theme-b .ui-radio-on:after, +.ui-btn.ui-radio-on.ui-btn-b:after { + border-color: #3388cc /*{b-active-background-color}*/; +} +/* Focus */ +.ui-page-theme-b .ui-btn:focus, +html .ui-bar-b .ui-btn:focus, +html .ui-body-b .ui-btn:focus, +html body .ui-group-theme-b .ui-btn:focus, +html head + body .ui-btn.ui-btn-b:focus, +/* Focus buttons and text inputs with div wrap */ +.ui-page-theme-b .ui-focus, +html .ui-bar-b .ui-focus, +html .ui-body-b .ui-focus, +html body .ui-group-theme-b .ui-focus, +html head + body .ui-btn-b.ui-focus, +html head + body .ui-body-b.ui-focus { + -webkit-box-shadow: 0 0 12px #3388cc /*{b-active-background-color}*/; + -moz-box-shadow: 0 0 12px #3388cc /*{b-active-background-color}*/; + box-shadow: 0 0 12px #3388cc /*{b-active-background-color}*/; +} + + +/* C +-----------------------------------------------------------------------------------------------------------*/ +/* Bar: Toolbars, dividers, slider track */ +.ui-bar-c, +.ui-page-theme-c .ui-bar-inherit, +html .ui-bar-c .ui-bar-inherit, +html .ui-body-c .ui-bar-inherit, +html body .ui-group-theme-c .ui-bar-inherit { + background-color: #e9e9e9 /*{c-bar-background-color}*/; + border-color: #dddddd /*{c-bar-border}*/; + color: #333333 /*{c-bar-color}*/; + text-shadow: 0 /*{c-bar-shadow-x}*/ 1px /*{c-bar-shadow-y}*/ 0 /*{c-bar-shadow-radius}*/ #eeeeee /*{c-bar-shadow-color}*/; + font-weight: bold; +} +.ui-bar-c { + border-width: 1px; + border-style: solid; +} +/* Page and overlay */ +.ui-overlay-c, +.ui-page-theme-c, +.ui-page-theme-c .ui-panel-wrapper { + background-color: #f9f9f9 /*{c-page-background-color}*/; + border-color: #bbbbbb /*{c-page-border}*/; + color: #333333 /*{c-page-color}*/; + text-shadow: 0 /*{c-page-shadow-x}*/ 1px /*{c-page-shadow-y}*/ 0 /*{c-page-shadow-radius}*/ #f3f3f3 /*{c-page-shadow-color}*/; +} +/* Body: Read-only lists, text inputs, collapsible content */ +.ui-body-c, +.ui-page-theme-c .ui-body-inherit, +html .ui-bar-c .ui-body-inherit, +html .ui-body-c .ui-body-inherit, +html body .ui-group-theme-c .ui-body-inherit, +html .ui-panel-page-container-c { + background-color: #ffffff /*{c-body-background-color}*/; + border-color: #dddddd /*{c-body-border}*/; + color: #333333 /*{c-body-color}*/; + text-shadow: 0 /*{c-body-shadow-x}*/ 1px /*{c-body-shadow-y}*/ 0 /*{c-body-shadow-radius}*/ #f3f3f3 /*{c-body-shadow-color}*/; +} +.ui-body-c { + border-width: 1px; + border-style: solid; +} +/* Links */ +.ui-page-theme-c a, +html .ui-bar-c a, +html .ui-body-c a, +html body .ui-group-theme-c a { + color: #3388cc /*{c-link-color}*/; + font-weight: bold; +} +.ui-page-theme-c a:visited, +html .ui-bar-c a:visited, +html .ui-body-c a:visited, +html body .ui-group-theme-c a:visited { + color: #3388cc /*{c-link-visited}*/; +} +.ui-page-theme-c a:hover, +html .ui-bar-c a:hover, +html .ui-body-c a:hover, +html body .ui-group-theme-c a:hover { + color: #005599 /*{c-link-hover}*/; +} +.ui-page-theme-c a:active, +html .ui-bar-c a:active, +html .ui-body-c a:active, +html body .ui-group-theme-c a:active { + color: #005599 /*{c-link-active}*/; +} +/* Button up */ +.ui-page-theme-c .ui-btn, +html .ui-bar-c .ui-btn, +html .ui-body-c .ui-btn, +html body .ui-group-theme-c .ui-btn, +html head + body .ui-btn.ui-btn-c, +/* Button visited */ +.ui-page-theme-c .ui-btn:visited, +html .ui-bar-c .ui-btn:visited, +html .ui-body-c .ui-btn:visited, +html body .ui-group-theme-c .ui-btn:visited, +html head + body .ui-btn.ui-btn-c:visited { + background-color: #f6f6f6 /*{c-bup-background-color}*/; + border-color: #dddddd /*{c-bup-border}*/; + color: #333333 /*{c-bup-color}*/; + text-shadow: 0 /*{c-bup-shadow-x}*/ 1px /*{c-bup-shadow-y}*/ 0 /*{c-bup-shadow-radius}*/ #f3f3f3 /*{c-bup-shadow-color}*/; +} +/* Button hover */ +.ui-page-theme-c .ui-btn:hover, +html .ui-bar-c .ui-btn:hover, +html .ui-body-c .ui-btn:hover, +html body .ui-group-theme-c .ui-btn:hover, +html head + body .ui-btn.ui-btn-c:hover { + background-color: #ededed /*{c-bhover-background-color}*/; + border-color: #dddddd /*{c-bhover-border}*/; + color: #333333 /*{c-bhover-color}*/; + text-shadow: 0 /*{c-bhover-shadow-x}*/ 1px /*{c-bhover-shadow-y}*/ 0 /*{c-bhover-shadow-radius}*/ #f3f3f3 /*{c-bhover-shadow-color}*/; +} +/* Button down */ +.ui-page-theme-c .ui-btn:active, +html .ui-bar-c .ui-btn:active, +html .ui-body-c .ui-btn:active, +html body .ui-group-theme-c .ui-btn:active, +html head + body .ui-btn.ui-btn-c:active { + background-color: #e8e8e8 /*{c-bdown-background-color}*/; + border-color: #dddddd /*{c-bdown-border}*/; + color: #333333 /*{c-bdown-color}*/; + text-shadow: 0 /*{c-bdown-shadow-x}*/ 1px /*{c-bdown-shadow-y}*/ 0 /*{c-bdown-shadow-radius}*/ #f3f3f3 /*{c-bdown-shadow-color}*/; +} +/* Active button */ +.ui-page-theme-c .ui-btn.ui-btn-active, +html .ui-bar-c .ui-btn.ui-btn-active, +html .ui-body-c .ui-btn.ui-btn-active, +html body .ui-group-theme-c .ui-btn.ui-btn-active, +html head + body .ui-btn.ui-btn-c.ui-btn-active, +/* Active checkbox icon */ +.ui-page-theme-c .ui-checkbox-on:after, +html .ui-bar-c .ui-checkbox-on:after, +html .ui-body-c .ui-checkbox-on:after, +html body .ui-group-theme-c .ui-checkbox-on:after, +.ui-btn.ui-checkbox-on.ui-btn-c:after, +/* Active flipswitch background */ +.ui-page-theme-c .ui-flipswitch-active, +html .ui-bar-c .ui-flipswitch-active, +html .ui-body-c .ui-flipswitch-active, +html body .ui-group-theme-c .ui-flipswitch-active, +html body .ui-flipswitch.ui-bar-c.ui-flipswitch-active, +/* Active slider track */ +.ui-page-theme-c .ui-slider-track .ui-btn-active, +html .ui-bar-c .ui-slider-track .ui-btn-active, +html .ui-body-c .ui-slider-track .ui-btn-active, +html body .ui-group-theme-c .ui-slider-track .ui-btn-active, +html body div.ui-slider-track.ui-body-c .ui-btn-active { + background-color: #3388cc /*{c-active-background-color}*/; + border-color: #3388cc /*{c-active-border}*/; + color: #ffffff /*{c-active-color}*/; + text-shadow: 0 /*{c-active-shadow-x}*/ 1px /*{c-active-shadow-y}*/ 0 /*{c-active-shadow-radius}*/ #005599 /*{c-active-shadow-color}*/; +} +/* Active radio button icon */ +.ui-page-theme-c .ui-radio-on:after, +html .ui-bar-c .ui-radio-on:after, +html .ui-body-c .ui-radio-on:after, +html body .ui-group-theme-c .ui-radio-on:after, +.ui-btn.ui-radio-on.ui-btn-c:after { + border-color: #3388cc /*{c-active-background-color}*/; +} +/* Focus */ +.ui-page-theme-c .ui-btn:focus, +html .ui-bar-c .ui-btn:focus, +html .ui-body-c .ui-btn:focus, +html body .ui-group-theme-c .ui-btn:focus, +html head + body .ui-btn.ui-btn-c:focus, +/* Focus buttons and text inputs with div wrap */ +.ui-page-theme-c .ui-focus, +html .ui-bar-c .ui-focus, +html .ui-body-c .ui-focus, +html body .ui-group-theme-c .ui-focus, +html head + body .ui-btn-c.ui-focus, +html head + body .ui-body-c.ui-focus { + -webkit-box-shadow: 0 0 12px #3388cc /*{c-active-background-color}*/; + -moz-box-shadow: 0 0 12px #3388cc /*{c-active-background-color}*/; + box-shadow: 0 0 12px #3388cc /*{c-active-background-color}*/; +} + + +/* Structure */ +/* Disabled +-----------------------------------------------------------------------------------------------------------*/ +/* Class ui-disabled deprecated in 1.4. :disabled not supported by IE8 so we use [disabled] */ +.ui-disabled, +.ui-state-disabled, +button[disabled], +.ui-select .ui-btn.ui-state-disabled { + filter: Alpha(Opacity=30); + opacity: .3; + cursor: default !important; + pointer-events: none; +} +/* Focus state outline +-----------------------------------------------------------------------------------------------------------*/ +.ui-btn:focus, +.ui-btn.ui-focus { + outline: 0; +} +/* Unset box-shadow in browsers that don't do it right */ +.ui-noboxshadow .ui-shadow, +.ui-noboxshadow .ui-shadow-inset, +.ui-noboxshadow .ui-overlay-shadow, +.ui-noboxshadow .ui-shadow-icon.ui-btn:after, +.ui-noboxshadow .ui-shadow-icon .ui-btn:after, +.ui-noboxshadow .ui-focus, +.ui-noboxshadow .ui-btn:focus, +.ui-noboxshadow input:focus, +.ui-noboxshadow .ui-panel { + -webkit-box-shadow: none !important; + -moz-box-shadow: none !important; + box-shadow: none !important; +} +.ui-noboxshadow .ui-btn:focus, +.ui-noboxshadow .ui-focus { + outline-width: 1px; + outline-style: auto; +} + +/* Highcharts +-----------------------------------------------------------------------------------------------------------*/ +.highcharts-title { + fill: #000; +} +.highcharts-subtitle { + fill: #666; +} + +.highcharts-axis .highcharts-axis-line { + stroke: #333; +} +.highcharts-tick { + stroke: #333; +} +.highcharts-axis-labels { + fill: #666; +} +.highcharts-axis-title { + fill: #999; +} + +.highcharts-legend-item text { + fill: #666; +} +.highcharts-legend-item:hover text { + fill: #333; +} +.highcharts-legend-item-hidden * { + fill: #ccc; + stroke: #ccc; +} + +.highcharts-markers path { + stroke: #fff; +} + +.highcharts-label text { + fill: #000; +} +.highcharts-data-labels { + fill: #000; + color: #000; +} + +.highcharts-tooltip-box { + fill: #dcdcdc; +} +.highcharts-tooltip text { + fill: #000; +} + + +.highcharts-color-0 { + fill: #5595c6; + stroke: #5595c6; + color: #5595c6; +} +.highcharts-color-1 { + fill: #416f92; + stroke: #416f92; + color: #416f92; +} +.highcharts-color-2 { + fill: #2e4f68; + stroke: #2e4f68; + color: #2e4f68; +} +.highcharts-color-3 { + fill: #6facd5; + stroke: #6facd5; + color: #6facd5; +} +.highcharts-color-4 { + fill: #2489ce; + stroke: #2489ce; + color: #2489ce; +} +.highcharts-color-5 { + fill: #5393c5; + stroke: #5393c5; + color: #5393c5; +} +.highcharts-color-6 { + fill: #387bbe; + stroke: #387bbe; + color: #387bbe; +} +.highcharts-color-7 { + fill: #387bbe; + stroke: #387bbe; + color: #387bbe; +} +.highcharts-color-8 { + fill: #00bcd4; + stroke: #00bcd4; + color: #00bcd4; +} +.highcharts-color-9 { + fill: #3f51b5; + stroke: #3f51b5; + color: #3f51b5; +} + +/* smartVISU +-----------------------------------------------------------------------------------------------------------*/ +.icon0, a.ui-link { + stroke: #000; + fill: #000; + stop-color: #000; +} +.icon1, a.ui-link:hover, a.ui-link:active { + stroke: #5595c6; + fill: #5595c6; + stop-color: #5595c6; +} +.switch.icon1, +html .ui-btn.icon1, +[data-widget="basic.print"].icon1, +[data-widget="basic.symbol"] .icon1 { + color: #5595c6; +} +.smartvisu { +font-family: Dosis; +} + \ No newline at end of file From 5995c61bbdc65e23e71e11b7851531a0994d98d8 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Sun, 31 Jan 2021 19:58:13 +0100 Subject: [PATCH 09/21] hint on shNG masteritem file creation --- changelog.md | 14 ++++++++++++++ lib/widget_assistant/README.html | 1 + lib/widget_assistant/README.md | 2 ++ 3 files changed, 17 insertions(+) diff --git a/changelog.md b/changelog.md index 1785ce5b1..d2dd40ace 100755 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,17 @@ +## 3.0.1 +### New / Changed Widgets + +### Other New Features +- Template Checker allows copying to clipboard + +### Improvements +- improved readability in template checker (new global config variable sv.config.icon0 / .icon1 for symbols, improved colors ) + +### Fixed Bugs +- faulty page navigation if files had been in ./dropins or ./dropins/widgets before configuration was completed +- template checker didn't run on certain systems which took a '?>' too serious in a class definition + + ## 3.0 ### New / Changed Widgets diff --git a/lib/widget_assistant/README.html b/lib/widget_assistant/README.html index 135a246c5..e5b7d0edb 100644 --- a/lib/widget_assistant/README.html +++ b/lib/widget_assistant/README.html @@ -210,6 +210,7 @@

Known Issues

then everthing is working again. (STRG+F5 / CTRL + Shift + R)

Logic to create masteritem.json from shNG

+Only needed for smarthomeNG <= v1.7.2. As of v1.8 the smartvisu plugin writes the file as default.

 #!/usr/bin/env python3
 # create_master_item.py
diff --git a/lib/widget_assistant/README.md b/lib/widget_assistant/README.md
index 14b2f52dc..6b7fcd74c 100644
--- a/lib/widget_assistant/README.md
+++ b/lib/widget_assistant/README.md
@@ -123,6 +123,8 @@ then everthing is working again. (STRG+F5 / CTRL + Shift + R)
 
 ## Logic to create masteritem.json from shNG
 
+Only needed for smarthomeNG <= v1.7.2. As of v1.8 the smartvisu plugin writes the file as default.
+
 

 #!/usr/bin/env python3
 # create_master_item.py

From 053e2ceddb87c8ab33c6a7d461e09663090cd1d7 Mon Sep 17 00:00:00 2001
From: wvhn <17801971+wvhn@users.noreply.github.com>
Date: Mon, 1 Feb 2021 00:01:26 +0100
Subject: [PATCH 10/21] disable caching for widget assistant

---
 index.php | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/index.php b/index.php
index 874858e89..690aa4807 100644
--- a/index.php
+++ b/index.php
@@ -28,9 +28,11 @@
 	$request['page'] = config_index;
 
 // Caching
+$config_cache = ($request ['page'] == 'assistant') ? false : config_cache;
+
 header('Cache-Control: must-revalidate');
 require_once 'lib/pagecache.php';
-$cache = new Pagecache(const_path . 'temp/pagecache/' . config_cachefolder . '/' . $config_pages . '/' . $request['page'] . '.html', config_cache);
+$cache = new Pagecache(const_path . 'temp/pagecache/' . config_cachefolder . '/' . $config_pages . '/' . $request['page'] . '.html', $config_cache);
 
 if (is_file(const_path."pages/".$config_pages."/".$request['page'].".html")
 		or is_file(const_path."apps/".$request['page'].".html")
@@ -78,7 +80,7 @@
 		}
 	}
 
-	if (config_cache)
+	if ($config_cache)
 		$twig->setCache(const_path.'temp/twigcache');
 
 	foreach ($request as $key => $val)

From 90e00d38d83396a0c2fa0c4b3642dcb0b6e9381f Mon Sep 17 00:00:00 2001
From: wvhn <17801971+wvhn@users.noreply.github.com>
Date: Mon, 1 Feb 2021 00:29:09 +0100
Subject: [PATCH 11/21] disable caching for widget assistant

---
 changelog.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/changelog.md b/changelog.md
index d2dd40ace..948c3f4e1 100755
--- a/changelog.md
+++ b/changelog.md
@@ -10,6 +10,7 @@
 ### Fixed Bugs
 - faulty page navigation if files had been in ./dropins or ./dropins/widgets before configuration was completed
 - template checker didn't run on certain systems which took a '?>' too serious in a class definition 
+- widget assistant did not show rendered widgets while page cache was enabled
 
 
 ## 3.0

From 687a5b199cb9f267867d79830f06f53b72f51194 Mon Sep 17 00:00:00 2001
From: wvhn <17801971+wvhn@users.noreply.github.com>
Date: Mon, 1 Feb 2021 00:32:31 +0100
Subject: [PATCH 12/21] new design css

---
 changelog.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/changelog.md b/changelog.md
index 948c3f4e1..abdebb8cb 100755
--- a/changelog.md
+++ b/changelog.md
@@ -3,6 +3,7 @@
 
 ### Other New Features
 - Template Checker allows copying to clipboard
+- new design "holo-inspired"
 
 ### Improvements
 - improved readability in template checker (new global config variable sv.config.icon0 / .icon1 for symbols, improved colors )

From 33b8dfca084d569882cad10dbfcac30e24f539aa Mon Sep 17 00:00:00 2001
From: wvhn <17801971+wvhn@users.noreply.github.com>
Date: Mon, 1 Feb 2021 12:47:24 +0100
Subject: [PATCH 13/21] fix text on stateswitch button

---
 changelog.md       | 2 +-
 widgets/basic.html | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/changelog.md b/changelog.md
index abdebb8cb..9cc1feb5a 100755
--- a/changelog.md
+++ b/changelog.md
@@ -12,7 +12,7 @@
 - faulty page navigation if files had been in ./dropins or ./dropins/widgets before configuration was completed
 - template checker didn't run on certain systems which took a '?>' too serious in a class definition 
 - widget assistant did not show rendered widgets while page cache was enabled
-
+- scalable icons caused a problem in stateswitch button with text
 
 ## 3.0
 
diff --git a/widgets/basic.html b/widgets/basic.html
index 9bb7b3e71..7842c5266 100755
--- a/widgets/basic.html
+++ b/widgets/basic.html
@@ -181,7 +181,8 @@
 			{% endif -%}
 			
-				
+				
 					{{ lib.smartvisu() }}
 					
{{ clock.miniclock('', lang('format','time') ~ ', ' ~ lang('format','day') ) }} v{{ config_version_full }}
- +
From c3579b4602bfe0842022324e9b49d7a859ee260a Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Tue, 2 Feb 2021 19:06:48 +0100 Subject: [PATCH 15/21] improve docstrings --- widgets/quad.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/widgets/quad.html b/widgets/quad.html index 4d46cd111..649f2f014 100755 --- a/widgets/quad.html +++ b/widgets/quad.html @@ -718,7 +718,7 @@ * @param {color[]=} array with on/off icon colors * @param {unspecified[?]=} Widget(s) to be shown right after linetext. Can be used to show a countdown or other additional information. Example: basic.symbol('', 'licht.og.essen.sa') - don't put basic.symbol() in high commas! (optional) * @param {unspecified=} placeholder attributes for future features, etc. - * @param {text[](colorpicker,ww_popup,ww_slider,values,sequencer,locks,stateengine,uzsu,plot,anynumber)=[[locks, sequencer, colorpicker],values, stateengine, plot, uzsu]} array with element description: Reorder elements to your liking (esp. relevant for smartphones as several columns might be too much) + * @param {text[](colorpicker,ww_popup,ww_slider,values,sequencer,locks,stateengine,uzsu,plot,extpopup,anynumber)=[[locks, sequencer, colorpicker],values, stateengine, plot, uzsu]} array with element description: Reorder elements to your liking (esp. relevant for smartphones as several columns might be too much) possible elements are: 'colorpicker', 'ww_popup', 'ww_slider', 'values', 'sequencer', 'locks', 'stateengine', 'uzsu', 'plot' For empty columns either use ' ' or a number to define the column width (e.g. '40' = 40 pixels width) Combine elements in one column by putting them in arrays. Standard is [['locks', 'sequencer', 'colorpicker'],'values', 'stateengine', 'plot', 'uzsu'] @@ -1170,7 +1170,7 @@ * @param {unspecified[?]=} Widget(s) to be shown right after linetext. Can be used to show a countdown or other additional information. Example: basic.symbol('', 'licht.og.essen.sa') - don't put basic.symbol() in high commas! (optional) * @param {unspecified=} placeholder attributes for future features, etc. - * @param {text[](move_up,move_down,stop,pos_slider,pos_shutter,pos_shutter_ext,pos_popup_shutter,pos_popup_blind,pos1,pos2,stateengine,uzsu,plot,extpopup, anynumber)=} array with element description: Reorder elements to your liking (esp. relevant for smartphones as several columns might be too much) + * @param {text[](move_up,move_down,stop,pos_slider,pos_shutter,pos_shutter_ext,pos_popup_shutter,pos_popup_blind,pos1,pos2,stateengine,uzsu,plot,extpopup,anynumber)=} array with element description: Reorder elements to your liking (esp. relevant for smartphones as several columns might be too much) possible elements are: 'move_down', 'move_up', 'stop', 'pos_slider', 'pos_shutter', 'pos_shutter_ext' (with the two saved positions), 'pos_popup_shutter', 'pos_popup_blind', 'pos1', 'pos2', 'stateengine', 'uzsu', 'plot', 'extpopup' For empty columns either use ' ' or a number to define the column width (e.g. '40' = 40 pixels width) Combine elements in one column by putting them in arrays. Standard is [['move_down', 'move_up'], 'pos_popup_shutter', 'stateengine', 'plot', 'uzsu'] @@ -2861,7 +2861,7 @@ * Select: lets you select a specific value (e.g. scene, etc.) * * @param {id=} unique id for this widget (optional) -* @param {item[?](num,list)} an (array of) item(s) +* @param {item[?](num,list,scene)} an (array of) item(s) * @param {type(menu)[?]=menu} type: 'menu', 'micro', 'mini', 'midi', 'icon' (optional, default: menu) * @param {text[]=[0,1]} list of values (optional, default [0,1]) * @param {image[?]=} list of icons for every button (optional) - not supported for type 'menu' From a111aeed58bde3c4ded2c9b5fe52795a41da07ec Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Wed, 3 Feb 2021 17:34:09 +0100 Subject: [PATCH 16/21] correct deprecated join statement --- lib/calendar/ICal/Event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/calendar/ICal/Event.php b/lib/calendar/ICal/Event.php index a6cbb9916..54329c533 100644 --- a/lib/calendar/ICal/Event.php +++ b/lib/calendar/ICal/Event.php @@ -194,7 +194,7 @@ public function printData($html = self::HTML_TEMPLATE) protected static function snakeCase($input, $glue = '_', $separator = '-') { $input = preg_split('/(?<=[a-z])(?=[A-Z])/x', $input); - $input = join($input, $glue); + $input = join($glue, $input); $input = str_replace($separator, $glue, $input); return strtolower($input); From 16300e2d8a1e386bade8217486a80607af48a7c9 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Wed, 3 Feb 2021 18:02:29 +0100 Subject: [PATCH 17/21] avoid missing variable warnings --- lib/calendar/calendar.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/calendar/calendar.php b/lib/calendar/calendar.php index 488852146..445f5778a 100644 --- a/lib/calendar/calendar.php +++ b/lib/calendar/calendar.php @@ -68,6 +68,8 @@ protected function addFromIcs($ical, $calmetadata = array()) $events = $ical->eventsFromRange(false, '+1 year'); // output events as listj foreach ($events as $event) { + if (!isset($calmetadata['calendardesc'])) $calmetadata['calendardesc'] = ""; + if (!isset($calmetadata['calendarcolor'])) $calmetadata['calendarcolor'] = ""; $this->addData(array( 'start' => $ical->iCalDateToUnixTimestamp($event->dtstart, true), 'end' => $event->dtend != null ? $ical->iCalDateToUnixTimestamp($event->dtend, true) : $ical->iCalDateToUnixTimestamp($event->dtstart, true), From 923bf5047e9ab453b02e5bb54889b9f3184ccb53 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Wed, 3 Feb 2021 20:56:11 +0100 Subject: [PATCH 18/21] improve string search and icon positioning --- widgets/calendar.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/widgets/calendar.js b/widgets/calendar.js index 5028fe881..bc0b41238 100644 --- a/widgets/calendar.js +++ b/widgets/calendar.js @@ -160,7 +160,7 @@ $.widget("sv.calendar_waste", $.sv.widget, { // handle calendar_event_format in lang.ini $.each(sv_lang.calendar_event_format, function(pattern, attributes) { - if(entry.title.toLowerCase() == pattern.toLowerCase()) { // event title equals pattern + if(entry.title.toLowerCase().trim() == pattern.toLowerCase().trim()) { // event title equals pattern // set each defined property $.each(attributes, function(prop, val) { entry[prop] = val; @@ -179,8 +179,8 @@ $.widget("sv.calendar_waste", $.sv.widget, { // apply tag to events properties entry[tag[1]] = tag[2]; }); + //console.log(entry) - console.log(entry) //get only the garbage icon, when no or the garbage keyword is used if (entry.icon === "message_garbage"){ entry.icon = "message_garbage_2"; @@ -211,7 +211,7 @@ $.widget("sv.calendar_waste", $.sv.widget, { else if (entry.start < uebermorgen) muell_html += 'border-bottom: orange 8px inset; overflow: hidden;'; muell_html += '">' - muell_html += ''; + muell_html += ''; muell_html += '
' + entry.start.transUnit('D') + ', ' + entry.start.transUnit('day') + '
' muell_html += ''; muell_html += ''; From f6ac84816c30a7c793a33ca41f6330fd9e19a147 Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Thu, 4 Feb 2021 21:10:31 +0100 Subject: [PATCH 19/21] optimize warning mesage --- changelog.md | 6 +++++- lib/base/check_masteritem.php | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 91d42892e..b6d85271c 100755 --- a/changelog.md +++ b/changelog.md @@ -8,12 +8,16 @@ ### Improvements - improved readability in template checker (new global config variable sv.config.icon0 / .icon1 for symbols, improved colors ) - page reload link in top right corner has been re-activated +- new warning message in template checker if optional masteritem file is not available ### Fixed Bugs - faulty page navigation if files had been in ./dropins or ./dropins/widgets before configuration was completed -- template checker didn't run on certain systems which took a '?>' too serious in a class definition +- template checker didn't run on certain systems which took a '?> ' before EOF too serious in a class definition - widget assistant did not show rendered widgets while page cache was enabled - scalable icons caused a problem in stateswitch button with text +- fixed search string in calendar.waste and improved icon scalability +- php errors thrown in calendar service due to usage of deprecated join() statement + ## 3.0 diff --git a/lib/base/check_masteritem.php b/lib/base/check_masteritem.php index 8325b9362..5c900fccf 100644 --- a/lib/base/check_masteritem.php +++ b/lib/base/check_masteritem.php @@ -58,7 +58,7 @@ function load_items () else { header("HTTP/1.0 600 smartVISU Config Error"); - $ret = array('icon' => 'message_attention.svg', 'text' => "Masteritem file is missing - could not check item names and item types"); + $ret = array('icon' => 'message_attention.svg', 'text' => "Optional masteritem file is not available - check of item names and types deactivated"); } echo json_encode($ret); From 918ac4202421f438d626c1b226c4b1e40b10287a Mon Sep 17 00:00:00 2001 From: wvhn <17801971+wvhn@users.noreply.github.com> Date: Fri, 5 Feb 2021 22:41:34 +0100 Subject: [PATCH 20/21] adapt iframe to design style --- lib/widget_assistant/README.html | 22 +++++++++------------- lib/widget_assistant/widget_assistant.js | 6 ++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/lib/widget_assistant/README.html b/lib/widget_assistant/README.html index e5b7d0edb..0f6464688 100644 --- a/lib/widget_assistant/README.html +++ b/lib/widget_assistant/README.html @@ -1,29 +1,26 @@