From ae9826ce1e830bb4b77b3aba8c8f39e0a003113d Mon Sep 17 00:00:00 2001 From: "Gustavo A." Date: Mon, 24 Aug 2026 07:45:29 -0300 Subject: [PATCH] feat(wireview-pro-ii): add device dashboard --- wireview-pro-ii/CHANGELOG.md | 20 + wireview-pro-ii/README.md | 102 + .../docs/screenshots/fault-state-attached.png | Bin 0 -> 98022 bytes .../docs/screenshots/fault-state-release.png | Bin 0 -> 111159 bytes .../docs/screenshots/fault-state-review.png | Bin 0 -> 109163 bytes wireview-pro-ii/panel.luau | 1670 +++++++++++++++++ wireview-pro-ii/plugin.toml | 38 + wireview-pro-ii/service.luau | 670 +++++++ wireview-pro-ii/tests/check_plugin.py | 188 ++ wireview-pro-ii/tests/check_varlink.py | 60 + wireview-pro-ii/tests/telemetry.json | 27 + wireview-pro-ii/thumbnail.svg | 57 + wireview-pro-ii/thumbnail.webp | Bin 0 -> 26572 bytes wireview-pro-ii/translations/en.json | 10 + wireview-pro-ii/varlink_bridge.py | 98 + wireview-pro-ii/widget.luau | 95 + 16 files changed, 3035 insertions(+) create mode 100644 wireview-pro-ii/CHANGELOG.md create mode 100644 wireview-pro-ii/README.md create mode 100644 wireview-pro-ii/docs/screenshots/fault-state-attached.png create mode 100644 wireview-pro-ii/docs/screenshots/fault-state-release.png create mode 100644 wireview-pro-ii/docs/screenshots/fault-state-review.png create mode 100644 wireview-pro-ii/panel.luau create mode 100644 wireview-pro-ii/plugin.toml create mode 100644 wireview-pro-ii/service.luau create mode 100644 wireview-pro-ii/tests/check_plugin.py create mode 100644 wireview-pro-ii/tests/check_varlink.py create mode 100644 wireview-pro-ii/tests/telemetry.json create mode 100644 wireview-pro-ii/thumbnail.svg create mode 100644 wireview-pro-ii/thumbnail.webp create mode 100644 wireview-pro-ii/translations/en.json create mode 100644 wireview-pro-ii/varlink_bridge.py create mode 100644 wireview-pro-ii/widget.luau diff --git a/wireview-pro-ii/CHANGELOG.md b/wireview-pro-ii/CHANGELOG.md new file mode 100644 index 00000000..52d9c1aa --- /dev/null +++ b/wireview-pro-ii/CHANGELOG.md @@ -0,0 +1,20 @@ +# Changelog + +## 0.3.0 - 2026-08-24 + +- Add an immediate device-screen selector while keeping the persisted default screen separate. + +## 0.2.0 - 2026-07-31 + +- Default the dashboard to an attached panel that opens near its bar widget. +- Distinguish urgent active alarms from lower-emphasis recorded history. +- Show session-observed fault timing without claiming device event timestamps. +- Show per-alarm clear progress, success, failure, and reassertion feedback. +- Freeze and dim stale telemetry with an explicit connection-loss banner. +- Add a configurable stacked Faults layout for constrained displays. +- Add editable electrical and thermal fault thresholds and compact device clear actions. + +## 0.1.0 - 2026-07-30 + +- Initial live telemetry, conductor, graph, fault, and device-configuration dashboard. +- Direct Unix-socket communication with `wireviewd` through the bundled transport. diff --git a/wireview-pro-ii/README.md b/wireview-pro-ii/README.md new file mode 100644 index 00000000..244b258a --- /dev/null +++ b/wireview-pro-ii/README.md @@ -0,0 +1,102 @@ +# WireView Pro II + +Live WireView Pro II telemetry for Noctalia Shell v5, with a dense power-flow +dashboard, six-conductor detail, fault registers, graphs, and guarded device +configuration. + +![Simulated active and recorded fault state](docs/screenshots/fault-state-release.png) + +## Plugin + +| Field | Value | +| --- | --- | +| ID | `gustav0ar/wireview-pro-ii` | +| Service | `monitor` | +| Bar widget | `summary` | +| Panel | `dashboard` | + +## Requirements + +- A running `wireviewd` API 1 or API 2 daemon and its default Varlink socket at + `/run/wireviewd/io.github.Gustav0ar.WireView`. +- `python3`, used by the bundled direct Varlink transport. +- `sleep`, used only to pace monitor reconnection after the daemon restarts. + +The plugin does not invoke the `wireview` CLI or `varlinkctl`. Its bundled +transport opens the Unix socket and reads and writes NUL-framed Varlink messages +directly. The service validates the daemon API and required capabilities before +consuming telemetry or changing settings. + +## Usage + +Add the `summary` widget to a Noctalia bar and click it to open the dashboard +attached to the bar below the clicked widget. Noctalia's plugin settings expose +the standard Attached / Floating selector if you prefer a detached panel. The +panel can also be opened directly: + +```sh +noctalia msg panel-toggle gustav0ar/wireview-pro-ii:dashboard +``` + +The Overview tab shows live total power, a two-minute graph, all six conductors, +temperatures, current, voltage, and fan duty. Pins expands the conductor data. +Faults preserves active, logged, and unknown register bits. + +Active alarms remain in the theme's danger color while recorded history is +deliberately quieter. Fault timing is labeled as session-observed: the current +daemon API timestamps telemetry samples, not individual fault transitions. + +If live samples stop, the panel keeps the last values visible but dims them and +labels them as frozen. The bar widget also changes its secondary value to +`STALE`. Nothing stale is presented as a current reading. + +The default Faults layout is side by side. For constrained displays, select +`Stacked` under the dashboard's plugin settings; the page becomes one scrolling +column without removing any alarm detail or action. + +## Settings + +- **Fault page layout**: show active and recorded faults side by side, or stack + them vertically on narrow displays. + +## Device configuration + +Configure edits a deliberately small set of daemon-validated settings: + +- Fan mode, temperature source, and minimum/maximum duty +- Immediate screen selection, plus backlight, sensor averaging, device logging + interval, and the default screen used after startup +- Runtime daemon telemetry polling interval +- Fault limits for temperature, total current, per-wire current, total power, + conductor imbalance, and the imbalance minimum load + +The Faults view can clear each active or recorded alarm directly on the +WireView device. An over-limit conductor also shows a compact clear action in +its pin row. If the electrical or thermal condition is still present, the device will +assert the alarm again and the plugin will continue to show it. Each action +reports clearing, success, failure, or immediate reassertion on the affected +fault row. + +`Apply until reload` changes active settings only. `Review permanent store` +requires a second explicit action before changed device settings are written to +nonvolatile memory. Daemon polling is runtime-only and is never presented as a +permanent device setting. + +## Transport + +The service subscribes to `Monitor` and coalesces events into `GetTelemetry` +requests. Graph history lives only in Noctalia shared state and is capped at 120 +samples. Configuration uses `GetConfiguration`, `GetPollInterval`, +`SetConfigurationItem`, and `SetPollInterval`. The runtime screen selector uses +`SetScreen` and also follows screen changes reported by `Monitor`. Alarm reset +uses `ClearFaults` and consumes the device's refreshed telemetry response. + +Every mutation is allowlisted in the plugin and validated again by wireviewd. +Persistent changes send `confirm=true` at the Varlink boundary. + +For development, run the read-only transport contract check against a +disposable daemon socket: + +```sh +python tests/check_varlink.py /tmp/wireviewd-test.sock +``` diff --git a/wireview-pro-ii/docs/screenshots/fault-state-attached.png b/wireview-pro-ii/docs/screenshots/fault-state-attached.png new file mode 100644 index 0000000000000000000000000000000000000000..234cd72e98e42829d14c6e425ebf06332861fdb9 GIT binary patch literal 98022 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 literal 0 HcmV?d00001 diff --git a/wireview-pro-ii/docs/screenshots/fault-state-release.png b/wireview-pro-ii/docs/screenshots/fault-state-release.png new file mode 100644 index 0000000000000000000000000000000000000000..f8d9607cce6daf0a8cf1bc650c2acf82823997e3 GIT binary patch literal 111159 zcmZ^qXHZjLwD$3jBGMHU0$2bkp?3l4T|x}HZ^386@@QIRSFQbOpRPz(VHges_@ zltelN=_-UGQltuqUhbE7=KXNzeAqMV%$hT2_E~4I{XD<@!rIb=orRx;fq{Yjo~fZN z0|R3X1H*q*W~Q^qX$R+(v*DJTsjUSAL%0|N!?PF$hU2r)vsDI$AbAFc9}gH9G_n~O zcpvAt*=U~KV0r{HF=Y7nzgKZbWyV?LV&FXsql-T--ncLj8uId+sehjQe+k~caFl!4|D8}YVAyq* zAo2g65Qy?d1Oz_xe*Ayu^nF2GKYJyHdxm=Uq0>JLLb9C@`@Qc%+|l789R}e-F@;>= zTM1RlKw;rh$ouD2N7Xz67J4>Z7tR}nr_DPu3q{#q8D(AT@S+UPF5Jwx8+Q0peXGD? zdDG|XNm!xgR8A|MxS~au(UZ(%X_%6>t>)>HH{^?xz}{kJV0g$U%>3VZy=SY?k;9Ro zDX(h`sb=`k@6IjhoXjs)D1;mDb)1-o`3832td5*EBEph`UqwDGIfT*$oY!$BTVb0g zV{6KaIp#!v|DsIG%FA&NJLhNru@2PTFWijyPJu)J1DM$j9|&^5u; z6Yar7$2&W)J98roq(XRy=TPvwjH5S{&kpfEe}#^#q;C=}Q18&FUv#-P%k>7EFe3=! zA^uZ3BWa$v(w%Cw83D(%AgVhiJ^v{ZX&s%USRo~wXI_Ct^oj);-YLt*;A{AS(?N$$ zpTCHcH>3QRU_>ssBK8TVQ73Ze{*$do$*k5(&p0>cU_}WTucq6V4q-WtiWG-9A6Nf% zSIU%rAtKqLQ}tUDBT=h=YgRG!)FK18c`8x-YJ&WP7YZJ+J<;z|7L&|?d?2+&!GeG$49+UI zFZ93FtEV=$H3rJLp1f)}k=B9{4A5S*xk|m$1F^HRUeWky=i*2+LQBskU8v_8(HXgwqQp?vdHbq=h*tpB;y`Yyv$6AoiM`N{_i}_$V+TF$HJU#*m>vg$|mKoIC$Si*dx);_4zxk|`vBi7vllpkv8$wr!_h7O_CrJ_@@61g8x0TXaWt4$-T0|A({I~ zOrYtcc_x)?ER?JO)ckh&(KXz+Vjwq89}c`4%Rk|hbE1)VAjrp<7V&Q4E2ax7^^{uN z$cBHxLBhio_*NB|zi3amB>Q(~*^r&lGj3s!qI& z^OLyQEx1lr*hmt8^DEO>6MoX;r83$AS#d&80QRq$;*ueQvlXq2Dv393-JqnKa+n|< z0xfMH?(DNu)!t0EBi>ULK4+;OUMCHbRpEfE+8zSfPB-9&--xBeadt%!a!dBMme1Yb zBH~02ty$)}S<{gkre~72*vW~N$TH6YcaDCmNuJy3*uijxOY_W`YrL1fXzCQ^c?i`g z@Vc0rVG>ZRzgpz)l@;XC{}8l{ObG&2d{Q@4Q7&VPD|FvS6eW$1R`p*4agO{j%b4i& z(`DktY)w*n{3R>xs>fH~XU8$VBLCcNLZw+tU50fTysGTEy42~R%j^W=YoDZ4GyB|_ zwd5A>Q#PRfka)}lfF9&>)e_P-Bnz~MO!9}DHHz-PBgqo|_f@`Izfgo0R;YQz4&6m& z5|=X@m<(N48lLP<6xgfbAIFVaeP=qG0>`cuiF&NYMuX@_#Az#C^g_{zmGQXB1y{md zq8yYFIm^ZpI^BHV9X8LBd0+9L?JrjLR~=wk9QXOSM_vH+(Wp{7^^S2LDFd;!E7(pl zAn1fHg;lAoH6EOMMf!n0p%vfcotWHVdzgyCj4N`%i%7>tdj$d=O%!`O^F{ZZ-}yIS zcTHt?^fL3pIv zntXZc8X^acDY1^vxSvw;-Mk5&N#ppMwhn{-{$UOh(ZnpAa+EH#42?YJ-I>ar9f!x& zVR%bdko4-ccAVXWxSR?=cK3dQ4I3VF;>9+w=9y_#b)GSDLl2!dy(@E(aNk5*>&Byd zua>tD*2-%K%J%PrRFP?ce8=@Q;vbV*N8a(;T2@-UT&ZKlAm{Et01$XE<{N(`Q z(FgT0wX{}g(Lw)kQ^cGkTKy_W%CS1Mm)(mr06Eo_)Xo*RoF`!9c71`5bNvM!WT$;$ zd8v%`_FUxP#lK>e30+Fox@>=Za^9CgKnBLU=P#P^2-&|~w8jGOc$3&$HmviOQTBxYXm#sj`Mu+AaAmnc<@M$;vGn^vEMtmUf8qDDTo{Gt5PvKMrMwGU5cSFE5G zK3#BypELe!&ZbWy{bm!CV0+sk-V%%q_#JPbn{t}!~JK3 zc}|RR9(-}Fzz?MN4ba$t6gk3VIaP^?Ccj-sOzdC#1RTPO zp&vA}ebDtf<_a%OrZr%Wo+}6VOrS~8|s9LPYW!h!#MqG?PV2~1u_(l+ml zukhZBeKc$;s;De{UY^NkV{S79CZ18~W&zPtcvH-#tsM;!cu%hox7K)5VeV;`EXc+B zYui-xoll*xyS!JrhGUHfzL&_>FTO)D6x##%k>iLc z%ISCMu{Pem>7}mW#bSwDq@muh*9d0_V-fA2G`-)f9Xv!5B!9U0sDVpn2v-ShvLI@8 z^SyybWTxp9%?8$uz1`3jPrqvcL37F{-5(%q5F!ZqH6P}~jh*bxT{ue9c0Uv1$_jGqyfU?TnW{G?!}0W8tnCX!r%5PuJs8ZuN?xrN<~r zgAdPJ>BI^B!vHFTmSixn>bJWl;6OZlzv{uYSnjp!Cs5KK0`V7; z{pyyy!VjJaemW`WMzSOZSK;q&fBrsFSVo`mPkOIp`TM`CqhH4NAcqkI&6>B%lW*b_ z>_FvLfXSRw!{v%V?vkJz1L$%Y!T3_Xz7Qn1qecSoE6RFW-1YhfDr@3I{^ zigMr^b8Q*MS~01(=r+e2z{?hL?}glIwiyEfy;tw5}-c zl&IYF%Im#l6KSd(C`*XUs}b_Z=1Q(~%L?Cia!}N_uZ{D-AePp1?oNRNqo<9^ z=mjX^86RfIA4}aC5rkAJ#vDatDj| z?-w-)4Th~`IFI_>+RteTzUdK(+E@tba1^WEM3Y^MHeav3@=Li&oM%}Rka)nBx>3&M zredG})CYswnW(fv?Muy&>b6>gB&d_5*0Wuq2J`cgkqc?hXgm@{Z<04NF4VF=BH0+& zFxd8tH(~<j@1S6FRDN=BXb{NR*lLJ=_3;7bNyU=*^I z8pXpi5$t@C2YqX@kZ`uvMg;AOY&Bya8k;8{ehnJ%MxR6FsMDiL)g*T-f8WX{1Of< zt8D-x*e!T*tv#+!xwWI^81Nh7Zx3qE{EH=xcX{0I1!58aV=A!%6xk`CFi&rXpJddS!@Flha^Sj*k6(9{CjE4y&SZ4nmCuD zaKbge%(~rye=yhXgQrfEhYpka-xI-G+H-1yzaFY*N;59pd8zkAyok{6?a;J*$9Yr} z9rZnv&B#zM7_0vlLQ-tBL<2xD1KbT6zURZd-efiq^95^ut*Gy7@xqT;w1x(by@21N z>R);ldkq(}@5!?Xg4EO57k=FKX(Ouyn(9k`=9PSd$k?NB z8^YG5UvWy#8D-ky`8DE2O5$|$Fiy=h7wBIS5r+82%GMVMIi2;FK((yZPZtN8LH!|i z&k&t(%yGWXrms&q#6=uI0DIV!Ybv|%eI#S5tzrv{&+(j^pqqE@hV}>%BQb{`0sW-N zS;efo3B8#a%Wp!cTKLa@_T3Q6r0~($_)L)g^KyzLCE&6ow zfF*U~b*iewdXsgTOTYmhi)RPBnj{UDOoaV!<>AD~4x5$P$Wf-$w<(JG}T)aON29;{db9n*>lx__n!)` z2}lS;AdT^P*Qku=4b&XXd}mc~ql-$)7=81Di=ft2O3EG$y#cgT*am(g4VHKDRsKZv zplSDnc_OATdPOC;c(En0;( z4RWi%4hBH4HS~xVMGM&rcKJt!oS5g&8lG#DGW^$EQA&+Ox-|u3%Edj~vL^o4M4n6& zlnd!9ev0=4mXHW84=!}uOEx}FB`vbzB-^xp50n{DLLc+UIB%wFj?VCTH!*)RAqS3P zD8t{H;87$zhkIbnn#8zRU-Y!RyZ7*`ofy&hTl?V3!)L2biq1RyMNtBhE`Do9^>4fV z%Y+Eu9QCDYGmwl0%D2A1b%phgPp9v-Z)_47qiZ|NfSsf+4k(lXf=MpKovif`Mz@M*bsdxs_T0m^rqsZgxQq52 z{IH^7CaVF7c$3T9``4-Wit$=_bKeObfXpax7tOwdD`7VH#*7Ve%w-#+=n|4D$KSbE;eOYizp4_cKfKs;nkP2VvffJEf@9(7)V1 zDMBcp!0+D@Tmb8&BhczOjf(X@ZkR1JkNR{Bc`i-|fpsz#`ZY-NWtooo8TJ`Qu!zyo z#lN!q1Z%&}-$|wm5j6_N0S}Nx;fgAf_M5>te_EP;XkDcK{HH|e z_iL%7$I1wrZLP|O^>*XGVrl<53fxx8F=vk+6X%#Z`Lk(Uiz!1JW3(z=%az=J@tWQWMVM(Iw%-soW0_ z)#V${$?+7fS%>~X%)B_(h|w2e7idnJ1NxEJ@S}LL3W}N1Qp{zWq3AskUc{$83oIKDxUu|ND#F zL}=~F=S>67uGptfI40k=@i^$*<@NaU-M7kXO01}2RcrGdcjv#m0z)O%KbQS+Y%92HjBe1vbKhHkNz&4*N0s~hAaFxDruiz89es|= z=lMUHUk@3pKHX4CEc0kLxpU7ALd%dAK)LGoNr5V5)1J>Lw%AhM1`@864sv(gF0dp} z>Jh(qOO;zEVUzfz*tfY13EU7a#yi+^)6FM%)zx-(3n@;ZU`-FbLdUw|d%p*g9kToN z9^QdP+M+s;omJ+v_D$-((E3@mK24h!v5+|HE0+gWH&;5dhv;Q8 zeNx=VJ{4kMb>18l@RDP08!zxT*4_K=xLHHqLE*`bxYNNFh9ZI_1r(m-#kb8OM zrRMw8JBl0NJ@%AZ{2F)^ir-gxiS@Xo3sz@@mID6fc3yb+wQKRscE9StGxFYf=5A8~ zDmhqYonJqteG9jk^7$nJ-Rkx_f(Sm~^4I&ptvv@OoLFBfG`(1Z9V=mW|IKC(`rCIP zI(8e8Ds8g1)F^0y%P@IDql~=XeV@G}!ybAwxAtqsr2lNXTY=TPj1*4bjLHc}N}TW% z5|+tPteaC^q5gCh4SK+Qp6cj+Nrw6*NuyYG6=IxU5!x5^>DZOuh~zI5O%eYH4;--l zFS5{Xz^*jRu90$}B8Ym1WNfYTb7UkY9e?0kZH!pds8s%1{yvRf5mqdO4M%S`6kak& z8{I)oyh`$cM(6Hp@+HQoaDf=L2DxxUV}fea#UfgZIPU7ygVz%;l*h}t^>#n@?%yZ) z_U$hs~U(>dR_x55so2iu|mBV^`}-1P1of^{^Vuv{dt-? zU{A2jQ~UJEh@b=XX!L)FsbwJ+7sF|R#d5E6{_7msTe~Jc0mf@6mROUH0=1U zwd_o{9C(sdq&iA2n+_kRc#UzXrkNA2C8Rf{EU#t^NvFC&n>5j_+wFXu@N4l4d^{HbgAB`5Mjor@ z2xSywalRxx>82aF23=>M!vW{4)< zU(@!1cVnfMWH3;XADc~RsUH=}XzkQ1>aLNVV3bh1yZ{wn0(2SRM zBctEdb$DWC?uR2V`fTI1HoOues-aBk#3IkQjzE3WD5=<%YxqWru)Xl3o#xfTDo!Q} zRzl|aqi>Q!w%^!{?7y_#j7u-0E6HBTQ>0z}@R*~I6!f$~*wB`Pg7UHEsa)+``TO|l zjlXLSX~cP$h{Z^UC?27<-WKueo6^6opY?SK;q1dT78jM#GYYQ0Y4!Xa1nA7cmpA_R zv`+`7gWo^#h-BA^K&w32pxOom}# zZuv>?nI0`(*_hM5Fe94y)iWwyf0zx)?8ee)vcPh3l@O(vsbpOdf*wjAfo=F&RAL+S zZlA3(eSFn&ZDGI2-k@uy(YDL#);JXWlevL}hFR757qcOdG*@ClA1TZ2W|9I;Mto{s zrZ+b*T)$7j``Sx7o8LRR5v-UikN#g-R!f%Ox;g(<0V{*9LzZ-rL2%-?J`a69?OYR4 z<%)I`Q=Gl#na_($UlI6&*QIGXm55V-l^!Rf!t6c6+(7Jkv+;3$)5su#ikEllu%=dS zvoq-BwT+RTvapU)^qe9&=~{K@@%+_@YromFWnec}25^UM zbh!%!fj2&Cxl%>gL?mlFs2`}|&0egXQHFWH9*|YkqV1JIMjWb}4dk6vC3)!~1-24hve$p5|mgH}dQf>?MnzOx1*M91(9Hg0P_N|KgkCS10 zr^ux29-&EP6jwbTmuI#9O5V|#Fc*ZWM&1u^8J&6p;X3u zBttK1huxx1Wp<4IvN1gm9Sf=n2dR%$ARHU_0N(lOn2|(P^#1KJB4DW2=NjIz=@L+! z7y?y&QRA_o#N`$O+2;-y9s_GD$CCr?Jx@Vn5pz#$9s$8zv|yyU!yfP)DdRU!*pc}L zCKhh}L|ouCn9KhwNz#$u6&y?5LsOoq%2Pf-C9_HtV*6h6S|k`J);Wg23Q#V*#0HN{ zRQYDWTme$Xz|QXb+zLpphNi0QOSu0EcGtgXMRIfc0U@*X>Iie@D*mS^aYoY?-5U7`U5+|utGF(5aX?TVsVAfu8+uULW4~5#b5pKhQ~6jXjYSv!XWvJ z3>r9M>~`ZPUng2P(j{l|9OrH8n~od6veOK7TC(zunuO=~he+NglSW~*(NcAb2YtV* zyq@3EU9b^<_@#ekvCvmAI?;W=X1-CKp}2+wl+0D_T~1!N=?Dr)4(9G?4$5*-JFGBK z*w5^h-yCV*-OBm9{BLJ+2yn>HbzbdYX0jw`r4Z5(>LO#{GPwMBCQ-%sJ)ffr!h#UO zKJZ`%*x@t7jGfZSjW(d%TY&fir~Utsdbrd#QKwEX6ObH&%m{~oM9LmyF!1p1l!tQJ z%w(_79yi}&P7OC&Fl{JkCN8qJ&TFpvv!bLY+2Tlgs`qUW8ILFu1N z2xB&_iu`<1IHl7N8H-l=Q={N}L%%q#tHI}Lf^n5$Av_9nF4va!82S9uih7jrn@Gmm z3T2ANi7@_gOg!4!v*5l!4E?L*-5llDiyGNiZQ@2t$a+fcr@D{5$8G}qh*7rO$TX5~ zSQFwT5#Rwrct(%rI^GOCxO5- zH^GQkdJ!UEAT8HeVcoiqG{PvyP9$DyJ!09n@HGxmT zF#MEkBG49!2#Z=aO{Z7)|FO>bRMvmXRax4;^qzJ+Kbt|H~X(yb+KL)<2!>mupdaznGR zO3Qexn@PiD^XkgI}Rd z^SAcs%;jIrF-di{TuQp-`6`gu@PDE(<tvzUI+jsxg8*c0>H@Dy5jXmxuJt^- zEdueUWbgfTXH94U;m>qUALon0!mLL38e(Eq`96}{R|A}uECVzl&$;6a^pteroi%^2 zt!(d*pWfjtfml_N?+n}%57`(O=FAnY>UVYhH^CMFy_h@t6IUSj{n5U`q{7#X_R-7d zKfQUAukB|kawj?JN?6ED!3-F0`~4-K;a2#sl%mCf6CcXcg>r;I?X8z3&d3P2>C#+cb(N!;Y}c;BbkD7Zyh=nr-W zOrLok==M?5J@tq=4~Pac_7^4nQ*9EZ$DDeoWtTA&Me?!NcBtsKO_^KAe{L@I?%Wy8 zf21v918PtnSMH5INzpYIZx-|`St;ir7M42&?cb4^!=+TO?eDk@RHeJgv32OXu(};s zX4qu>2tDj<&NCdc~F#yTP4UQaO zV;o{*Mx99m5Q@pv0UVRnw{{z6DCKr0)~F8Rj5_5Jklh7@LY@g2Jl~>RHLP>KWH}+5?dV zagow&(qY{=0a!0b>#hI762|8_zF8LuGX746T zL*(;CZ543(klj5YcZO)8n>8q-(TuwOPr5JmT5o`fY%)flULUS%OzMs-NeHUn&WzTt za6#>WGE@|8udHlL@{|uJBzZCtRR@tuOf`q7jm!GRo;_voe(?;?al75%>*pAxmIvOC z=44zhAN@Vgeba5N2H5iNZe{8Hl^bWD#7Zi0KF%m(p;(}g0Y!|j{`*-0^zj;f&JJ^F zRK1|Ei4M=9g_MuMnjRj8cmqxdGjtH8>Ni;LvJ#e>m;!Yc8hv6PFEW?jtz+d#;}RGmuG^ zXj!w*3&fV{8KHZpbqTaZe10cj5wK` zHptIU55fcGN!L*vH-YWs;LCAPFQ*Q{Jg|%b*ZEcLy{~U=BEC;FkGHIhjAT7n&gQKT zoAVS5AL0Dp76klMgR^cfNNfJ&u*j2cV8?@)q6AkYzr&4+Pii?1N)mob)5QmihuMZ| z6!Q#}Xk^ukuk1c1X2VEU>rYAEu*>!fY8xlg?03eO)>H_@L|YTh9-IppZ<lFO5YDyP;OMwkt&cGm`h{}@WP^wsI6+?Lu1JxP0|Xom>Yl%Yfid{_5>Fj-Xi}&Cl*aG6aAl=)`kK#`z<~$bUucM4A&mnQ&&(n z(hF(?t;rR(=L+*k#j0Ua#)bm=bJF%emt=W?r<4EfWci@~u6IphM6ICX zR|Pmi-5|}zn$4-G%<_Pszo$~FewN05UZ zzXZpRuI{NHu~gUT_qbE1E>HF}qH7eRg}Ye>qP^Nl<}7LP;DWPmg8GWi9FUa?9n4W{ z?-5_9@%T-7Bg-Rv(iqI}O0PEgj0-q(CFn2VB`8X{+FFwC#c5|AqX&dFak|Rfa(%2-P zDGb2Z=S$!|r*4fOzjS9nCT0#j#FH7-m~eSwQ?iX3*sclxA4n9L=f;4aC{rr86KQq+(9-;!>pohQ*kr?7J-ky3%A)!jb^2E4p|qH-R}tPN^XCv*~5^wOZDNP19gaWc@h zZUk$X^OV|}VOeQ$k^DIz|GUJ()zht%yWqe2B0o_5FbiYU8Mm1AGX&SgY2;$6MU+kK z6ysG^_vq&jJuXmXGV`biuETo6uD1`-j#KI8=|O9j13^XJYfQF-Xw2~Fow>HrJznBz z>sn^}XHU#r<)ZG$CFQV97v6mXkV%a2(?xjA#KCM^)?%912~1%83<{8vv49Dr1~C}u zWP}BYjEokhh5bsdhiS|mLRDW)SRo>wm+-DoZ!1EaMJM=+=|PH@NenX4V^`av{A6F@ z?c0+_BpJ{T8a3Jdw(9xI#nj55r7~v!%!auobcP6E?Yj)D$_;my`!rAHS-T&P=5yHA zk0o8O@Jn60q-CQ6H7SAc3T66P=t7wIV;+np@e?AySA^*Ey@y3SE?POUIJwcId+REw zIv;uZ-v2q$EHeN3Mu0MEBuk%%tbbCC6VGXCNdV<{fAj=t8<-HREOOE|j5Fe4MFWWe zCMx*h%vL{3(S^H+j^CxC{IHXlREJ#KizB@%2syem$J8xB3WDsrFnvR=l?hFuaO4u-{i~WX|&h$nu)>f>ZP;@J7_{&Fc9rSapJJ;%q zouq=}aDs6q_Eb`o;ylb)m-0m(lpz8(oSIzF@2gdJ9MJ&Ij;be?vEnd0L zniVw4T5?)cj+J5+bx6s`q49bAT1sc|e{RxpOWL7HToV3WqbJ3D5ZfD$rzRO=C0BGu z^5sb!j0l#eLLa2oim`NHvaPq^?nEA4lah$A0%Mrs3>^4Zd~Uv>431V~n6z0|#jj1@ zB_5(Myos_U$sTL=k}5E6HhHXW5!W{0#$}v!wD4PU!VNYzGteu!whP^mQH^vjLEEpM z^Q=cVq%b~H{Tw3H`%-S}TK><-*pF(6Iq?K(w|g8ozcklSHa5`1LnGaCu2{tuv$AnX zR*N+mduyieUiOn;1Ck+=QEn5}f@+b*1@^~wlr~EOd+Shh{$-K{EKPH2(7 zh0xPmJZ7Nm_B9+!l?pS|I670TsCbeILwzW^m2nE=Xqrw+TWvO-_awEahNqqyN^-#* z$C>0nO;9&8p=kHnTQ&XDSjC3k^w=GK=#ALE2iqAZSg(q|RkeFB zDS)ndJR`%Cv!v9ul3fh!cFlT<8Y69Yc@dm+8`H8$busEskt%FbY3kG`vlE>Q2+ zT=B`Y=7)TPV1c+&>hDp(EU}zxQ%%ZqE}&+DM|*>47oW+?%!@}(1KVTps^E7tt6M!T z3+=byuW2`wS02s!Gfy=WgN3R6$q+{k;(gWFFBfue@JU1o6tSny{fnq4#ABj>ddROr8aJ(W2@w zFSzoo$9qr4)O>B*ghxL+U0JaD7hd9v+bInbIrxBE+o1!P=Y}u$kPTc*;igAyMZ3Ca zkCH3*hby#?lQz|&=<6oa&u$gb12j;^**w4f83Hb$g-NS~EsO+gv=J8_y= z%mhE@tS0O?kKsV|qkdUJ9Y|fKpl}*9`X=5lFiYiHFJN1qN2KUmZ6-OgHqw37?>su_ z5de{p7D2-30!(TYZ0%?zNtZVR{zIVRz3yoDzEmOf$hZ>oZG-aTQ2n{sdUO4N??*il zv^17p(gDhF=xkznl_Gk=hgG2dC>m`QKDlF9G(PXEevjTFMV<7xg${Ren!&EI#AYbT z3ohFRQ~jHgzO-~!0dPP!)dY9JxI{PZ8*|+b3-UdDM{IolY!|*b=MGlkiNh-`8x|>d zfCzq!6WlpMyA=2Vmr7H$2igk-D&30B&-CMCNxDDf7h8=tQ7yOr72bY9w(Jp2S5nHr zxMB8aHP>N8pC8!Cga?EkCC+OTb?x{XIotspqt8-@#<46Gt*OsPUpo|S9{>upqw;KN z=TL`ziihld+kxgefAuw6!6#Y!J^-9;wz1{QmMTdey$!o1>DZw}GfGpXvs7Ig#Rh2@ zg3w7;Vu>8%C8{R#0qAzaHC6Q$k^LWBn_Pjfh#LEVche8>r*)^^T9cjtLbnkacxL2=_~1PhaF~mwZT}8i*zH~oLJ=&i`52E#ps1Ds z!l&E6vt5wrFa&;xJd!hsxh(HmkwSGQSz4(`Nu&!#B>gT5q>WH*3x zok6~h^i@caZIz0K#fMQA)4UZ~kz}9V^u(%)-=GpW@n|Q=n#c%^YuxiOK6GrKLzy+a z?Rm`^%H~1HxQBN(24E6jWCp*)D#of=0_sckr(v7~x3<%dGQ34QlD{rRLbY?B+awsA zPb?+{AM62`e5QH;44V;{v5#}%I~`WIYQ!*%k$^yU^94STaPEBT$P`%;Bu(ey5p~6p zXSB)egVJtx)MlwH3`Szl@a|F&xX}5+=Qb-!Fz5h{5V@NBKHI3I1YixDHh8sY?SfVp zmHq^h?9#qy_rN@C-{?SPg>=_@ViG(T*#l@l+t~bTqA7i_{sC`|6@FBf{7(Kjv`XzC zeEj{LLKtRdMU5ofZQa8SZO+Zdp2`g-j8MKP?ntXko+KW)Z2Z&r;QhVVsaBchCGM}u zsl}nmw-{3)(9M_EsCv=B9eL`Cd*O8^DN4}utQ*Gw;VeUA3VMLcBzO z@-#*wzgxTDy+<+h#Ivtcc9(Fvx$XdSd?uW=*kjwQt#38_!JE^T>C+m1do@rShQQyb#%Co1JYT53IbH01iE{vSh2O=MkHVta z1-0A5xLg~6#FjolvGd%Ji@RUz#}ac5(700>^g!kjYNLyg8R2A-2{Ep$;5)|pY&a|4 z1h@NBKjgy1XFT?#9o7P3U(?c5dSh{}N7@oyA8f5_c9H{RkqfbLCNP&RelzWJ)o1v~ zTXggb)jUIjgKJ)Vc6c2yvy(JVsp0Cq9Mi=sz5qY<9Mt2ZlwrxFPU%=XiYK30F-_Ls z6Q~B*2AdhFeR)^$W93&*)Cf;mjoLpY(TYjW#dxob+_%F$ENii{@G&_)v)rJw^K-=0 zevL_$6cF?X}1(ROY_ySPk8zLhpuOOm^pnfL)F9acz{z zQBp*lsISbT-g38R+2*ctX$0QRLW;X6!(KoMkvC46NoTcYgF-7tA!i;_W5~Vha@P3{ zXRwhP53#lpdJXIhy^P4QoV4-GM3;Dr^KckhSj7wd$=JOmz`3Rnd5kX>#DtknUeix!`FC7QN1-&>SY4H?b6;`S%cc5 zG5tsEKt8`v>fIiMyi}uWm`Bz#R635tz;=y!!r$1S5U9gQz-%XqY+zyO$>{pPT!F+ROx%pb7@;S@M@W{oGdJ{}{;P(;9|5$( zT-zF;qcsm0B-E6$n!5jpZX{s!eW}&lHUER>fW{kaL5pHYuOhLK`1ZVUW1sD7L_7I7 zC9<=w0M_#?XgvKOPo?|goxJxeZwN215GNWYdhuoVaAo^mAiv4K99Y!s=w&1z879EW zE)H4EK?wEod;ej@=9~-ivyW34e0=D;Hcq412K2%1_Bft8;L31f-ZHfZQ@r;k1+7Ro z(czB8YPO5h?ZL^*kd(6{JOjv`kNhD^DqsMb&J)7)Cb0a&u#wQQx6|EckJgb3y;Jfq zZOm~*vPD)gvnfF-zL2XyR8ZOX1$Zr1(@u3(_l5P<(%;BT!hOU1JAJQ1B`C=idz2GA z0~@dImZgG&9+GKL!Ev?m*^mslWLYq%ox@?aRaS z;o1uO%iXWN{W?B%ufB$WwNXnO{*o3o8nM&4Lk~J%mpfEHrBNrI-D$&K*}mLfcAV*S5Fl!ZOC zuNx}8mg(-s)KzezQvTy3jU>jwj#C1QE0f4MC6^Iq0HvmyG3lBoS+Bdj@>+gD2)l;rZ*E4dt36ILVetbPA_MmOs`0#A_dMs6iN%nW}Sk zOTObDS)Vkcn}g?Z5cfkcAk0~{ILxV*^?xTz>!v%_ZZR99*?WGN=Z1{Eh7e2i1Hb4i zO0iB?GUx$jl^2C;6(C_vG2oJ}O0G}$JIC%)&RwD&&Vji7P)_Mh@q6;Yg-I=*5`x4B4UJ*GG*py5t5*CEL)sVMWzAe z%WpCJ(mpU$@3JK9yaY!z_BRhWtmwXuALg^?Khn?)uRkM7?YSZ7CJ&u4aio~+=X#7;!+DEXm)dEUIY==Qz5BvPdhTp|xuAwI z4}g74uIJjhsNWM)h;&4%F=2K-dpxG7J_4?Au_P;hmM+jcxW2$wep;bk+4xHrFRlY>dMN~_sW#6-!#lcE%ttR@Dx$R_wxvz%7uSLfJ9F4ok~ zQLI)k^-Umk&TN)W^;6O>RCEmZtKW<5OU?uv$kinmarS&Q&N`_+;_Azwx=fR!NMhuF zZXDrNq4!mcRBG8&@Wvcq@DsA-4+1MsvGv8m)hzcfp3lLAJ5+$sRantEvCIH(>xs>g z+A$`9qT>1_#hj-DEu`}qO@M5$3GCe=UcA;Djkt){;r-4v*4d0rZ8`WJz;&UgO$^$D zd!Kn~$l(;rb}Q=2(O%}$s?U(9-r?9@p_4Sv7qnjvnfU3fo(1+*Fa zRrhmG+7K(2Il6+48jhpX*cUD-`{nq8`dPJ7EC;@Mki&}pG_XmWQ43Q%KK!##ZS6$| zrP=ayo=}>=@eXiIifT#GIecrfq3%boOzyY6ysN&eEN(){{=mKB^oH%y)T_oFj^rt; zlE<^Cee2bhQZoD6$27y9PDe}F^_HQGwxWnSl_#Ey)nW^cJKIJx1>a+QpKX!AM4vm$+?WZyqJl6cb|5@$qmn-Rc#XixyZIG@K7$dLBuQ3 zyxXz-CE9K@Nk<~vBE>P{oz=Tk`UAQ+Li!|Q2*k*@0fGo!Bdc!1SnytkI1lQbH?3RS zMhnUaSEbnp%>TpGcgMrEeQ%F0S|XC@Ekg9p5M7k$g6J(eqxW7SNOaMACt>v7iA3+B z8za#PqYp-TPj2r0{$8K)k2B8MXYaMwUh7%Uezqo%GO`Xg4Fi}5^E+jTvpAQ^_EE}k zm*$WbOFC!yn1C$BP%zV;{z*p91B(6d%Y^z7U;H^+57yNgodtSb2*apV?7P} z#<79WeD=XBBulvV3Pv2xvI9m+2n92Z3mb=i$0JtL3PFcKLZ3LNQZp7Ds0X}OnWK0_ zCCbZw*S`kDha6FRp$$o7sM$L_>OP?7dk1W-g_0P%+9%Xy`?R`Z|B8 zgqD?^?wZaksXbOpvwUaSA;p|@Jpagc!oaeW1?L#d!nGcdQYvsL zvr+H<>bri)Qb6adcmQ5B%CSk6KmUNT+u~IHBnNUsA)Qb+^jNyY6qWagl~~Rp9zRPZ zyWTZEfZbAgxX$A9Oe{N2ur{LBu-Q}UWMRc*~j39iPidW-) zZ8V#(_^WJ?8C7G+I|vaWuGrWoN~w_?%-NHMbLbiUhg*yNXNZ)KmCXgF1=-r;*&)ReVQF9JSM;Zk zJ9!g)5^dunsFix~<9IESQ|(iavr}|*HH$0*8~8CJ=T>$PQ{tzweaVI@?T4qhYgQ`q z?@@AaWPG(1Q*z6?SRp38chtbOzbKuAX`=5R**a_T>k(af)^a^$OAEEDTq2*yQ#(>0 z_&{efq%N~a8)uQONUZ<38M1-fi<^9An;iFq-YYrKB#A8Y=Z>a&MGcxXar_x({s$ZE zPg#zD*K<=Hbe)LR4tYun8yA;{s!b-ytLd%r;yHi%_H$1sg*_}^>+!F=#+-@h-}3>VMnstO2VGK;d706$?T zOyg1L8`g&WUp3KeG8Joj7_lWu&0o>_R-c8HY`WACEJ%LTdVD3$cB7tTp(OmCms@|x z!3fJB586NBDNB&_K{1Qo+(&ioXd@Y>lEqriE;89_sdn~Cb*l;|#vY&z`Lpv88 z((Ef6jjsD@W#jjIX+iv>Gm|ex`9ysw<27c&5f(|T2LYX(R9+pk@&Px+4MLYL2 zkTdSeWWF_Tg1ApbKk)S0mDj2QDjrcXc9*q_Ath~CJSaUIpT^3W#j05xf%@(Or>s+9 z<|rvpp0}DC?@zvV|G8H32tJ7yr|+Bbc|Op+FVOmJ%KW&Kf3Rh#wqWXyW=r&LGIJ4z zU4rnacK@DbwCDr9(Swq4rX3?IoMzwDQ*PWilu=3;tM4-u%^J6z)yU>okxaIt=!7)r@ z9%2m}biY{tLq*%IPaF{K++1IfSn32-q%1X z(4v*<9>>h}eP|uXX|A_%t>&!7h)l4h-e;t?n&O^WtWi^axnr$QdwAxcgnhXfmty_p z+0b3F=JRAl`ozH>it>hC$!q>(;WceV5LcyXCx6!gRwpv^x;LG!qG4u_==wfxG!`G!l7K{(Hz2Wi)ZG}8+a$LDrU|(I_`TU1-P8q6NBaKY-bLpsWfI!?MJ<*u5ty> zB`0G7VvSXvPagjqZql~OxIS;t+avc_P*!e}YZOyr0ys^Ps{7M3{^RvI9Q~Lah!oML zq5S&#`jnS)DJuDo7{9XO(`glCPeE9!nh3BLbQ`<|k&5Hl25B049vvSXH*^ul_nr;6 zmHI#$6sHMDS$=HXx$0Lm&W@-=C>KKUnM2J!%hdBDGDqT|!|ES92mM=f*hh!AW(zmS zn-+1Y7>ggQNj4G>pKwgGOF$5>$oC8_B|cI*SL_u%I1*z!pw_;DqWa04sSrKkbSp_Wf9JGDEYW3ADtk5MvC{Dk85p7bM0AoyRYl(rf) zvsJgbdCLEkRiCnPYJD&6*!T-T-)}gk+_E@2vvshad~{#0F~k3T|LP(6JKi{r6}!Hc zng06QLZiau>=Jy;oCWOTY;CO>*UxqyWMp-wbba#PNj4l6>gy>?g=>%C&FwFh*M8*C zg0+XP?ZO)bsD+A0=JCW{^HtcxI&FlXF{beBK?*anCa#kByP>yb4bRyKr|7kDwZ#-# zIQOIz-82Gi!Wt4gVR8k`|I%hU)?{lq_s^>2bn5v?1CWs-PCCU8zXiG zuJKJ*@hK)v*Aa&^(ALM^{o8v#(pVQwnUpXfERnI5brZvD!T z+)gg~cmJe-zWY$dLtFB`49+5Q2l0s5k+zv|izTEm#G)*_t}t0vt) zO*m&fWop&e>A+H;fYyTiBSSs2p>%qKVeUkb#SgRF74Ejibi-t+E6*1|?Dy z4=J?!-{n{9X?`rqFJPJ0&k-<}PDxk$_`W~5;n7pFcQT%iO3gsbY=8$gS$`5KT|gLI zYv?bc1c{8Y{0y<&!{dP`F{{`Z$d%3B!rBMC^bx^4lKM9Ls!DZS8kMp>`2@~i(qdlo zGrVF2r%3-i=~iUagv{mt+Gm#`mWlpaE^O)Vpv+o&5RmefjFp&p2Q!Jrn&W0t#0XJg zZ}0%`gZ4@-lzl7BBWAPvC0cmWp6y(+5fE^ZomCnFQVZH{4 z(f2n%c1$DMM@7&fHJhqUq`e5WmfA7z`_&L`_$0n;4L%VgA%0|PhcU8s5 z!PM|A!>MEQ2H8>1DS{(2Ih};0p0daONgv%`7` z$HXx2mq;fP`YMx2LX`G?9(+;$4140wGt2^ z$lSaWtr_^1;6s=UeLYfL%DeETZGeZmt1qo@@HiKNM$pYI9p2C}$G#AMf zDMR;>=LnAeFCMv;uLk_}h#r)8T57#Ub#d-LBO3lN6`hu3Z53IJva!_uz=sv?NIyK& zDkrxPaP>M%`oNen(l$)pqOk;ZvFJU-7o*E(T;x*vvr%ODUS3S+N{#NljDI&C)1Y$0d!sn1@uw*55v1RXSl$FK%E^ zIk!wUFM#^Kf2x*$N}|+MZ;|-pZe7bH-BX41BZ2lpljpgK8L_rrb8U|zqu5Y$8+F6A zs&+l}QN^)<`5Vn@&9NViNoku*9ikb(?!8RYC05x9nI_Om2hY)^T)Lc;vvg-vzb{C$ zdq+wmWhYC|p%%|h`2lT8dh`1t`%~40x)+V?FE6t#m2rNJC@2x%6H5rl%`f%I5GYn8 zk?eG>5iPAXk@1;Mda0r?k@Qf-)E2U}N(AU5uj}~d+rfZz}B*XBP%g=Od7#xz`r)h z`%r*d3WDgoWj|3LSoo!3?NxOI05Ho_Ln7+u z9`uteJ^G>eNh(hKmTD&&HrVe^F~57@>XB#s$`^ZXsl1TnQ@3LMc7yMMruniLL>jjM zP2Z<(XkI5y-xwMK@HJ^Oc&MJNeoXEwF`&^I7TgPCHm_abFP3B@ z6>ip@vqb>=0K6??wV0qR8qVv~(YN*uSbDb^(wv1*?TiXvPeMx$Gl(o3M@SBR4q8`nLQs%iTycxaM+mlcZ!j2@*3EM7k>} zF_b89tBY*2ttObw=Fv`g-@}R(^(b0A3i-`tE;hEdw4kDX9 z=&89fri(eHs~_}7BQlb#74?iTyJkG`&&upV1C1D7Xs7EdrfrNUkZb<5SP{U=dr&;z zA)($rQmnUKX}-atLPJ=s@~RKv+VCWY3kSFpiW%&rqZ*E~JX(L1*FzOL_;9ps+`1={(W9{oThPm(PkX#&3>kt77$~qVrI7T41zUFNXNxb_HIg{z z=*db+TXw33&yK;lhDrO_X6$u~Je$*Hnd-~D`$KHBsMhj zig~s(Q>=Wp`0vw-4wY|8PVDNQTq%^s@~^*3`{;|zJVT5gJtLrj+a zOO|nC(A33`#VBpTsqXq+%}ao^QGXB2YcTFxEc&j`_P?9F zoj8~J7!N63JKtD%9O=knm-%RLRMsZ%;eU-_bliID)#SRzpKPYC@f*huq7`6WDP6O2 z?@t?nC-GA)y2KMNa&Eb_aUs}0zJCGx-n{6v`1(ydGo|G9Kc%@EXGvYN9vU{+_L{`*l&u(t2dWz!)Q2E!Hh~N zrt1RaSmi^b&~>ROmN+eTRiVQD?12L&4{SeAc*@pIWB>zOb#K44S-`kM*hEQs_X20BYjp{kOv@9Jud55j4KcR^vG_ zTRDD2Ant%GcMD!}0$On@TK_||66N%F9mo|*uFi|6puC{F+wWjq*!x!U1oB_uO8*Ya zlu*K+cA<)U@ub~?AE?@8P0oIymhrAdug+?FxrHzAqL&u^7rPE9jr%P+k@$t_>F))S zH*en9EHyeD5o+5OwQij^PrgCEps4uohThI#!$@cAX}j}G!&{cZN=iZdZlHq?bMLO@ z1GcWt_G(Of&_cBCIXn^1nfjx$hA4GNeB2D5tc80>Z(y?)CX zlN&MqZB%?;SOaugtnvrUnD;nV`);i9LPOC974Kd~lT0$`RD-7Qg+rDq|cgI0h1o%pEei4+fD= z8_)u~?+B7P{`f&CE;lT?L0k;zV{B|})Qp$mf6QSakyV3zF3Zdxcv@Pc_|LQ&u#PTu z!YG^Fh#r58AFNP?h9S2ZSZ;%Nx=5LJy%@Vkdo6reT7_m#Q+@*tGQw|1Vme=3N)DfQ z(})FYR$^KOftFDWre9Bld+X=8O~>RV<9b?9z6cEa3UuFnjHD#A>~r)@|LveHF*uI# zH6{0jbDj}0obx-j?4t9*)f;eY#a-C@>}n-1EWb|nU{^o9tN z1SeKu4zUIwga*eMj|Ft?PA}h_l!6>y%mi-r3A7-_I*6D##>s1xw)ow51n`y_6f5BD zBF;Jr>$;gXWmRpHpCHv!ul}0Jx?A5>a(BCe$|Aw&;AzMfklxeI>*Xr_0Mf;E(ZL zH3Q<>2z2Wn>GGCuc9@W7qu?-i7PHZ*Ww}?x!&@6AM>NNbrt>u|Dyhb;kO-+4e(2o0 z_NM3O<8I<34j=*RcQ<2tYhM0$lST(}AYh*x@1!i4mwDiBP-^N?aA6llOU2g>PDOuzwL2ZrRn;) z98Az3y^ZWE!tx`7uGi1eLE?e?3hx)}pCYRGfEjSHyFY$Lmy8m7u|+ulrAqv5r^EsE*2*dFpP}Zu-KD+UQ)}NX zxz<_}$DzfycUqV54;24%?Psa+1Cunam1L0-pLv&Vy}5&n+jI$ZrbUl4G(qwGHT7J#^}c3TTWgD=*8Yrx zCz|gn2$Pr19SzqW-#cKQc>qlVV^HdF;bhtNh@A^#g19e><>MC`9~XlTZ~utqKDS5Sizc&&7}vjm(@B%6#VC!hEfZ*cD(!oq^+f0@1U~ zL%S5v0QrsEO8q7ZxBf2MPVfOWUw^w6LvBl#{L^Let`1Z+F(^1TAiO|fSP&Gfhv=X( zN#pBBQ-gitd)Br;fWN7RW_DtgJ^*!Q$8?7jd1oO1dV+2ZTG|);V0U^-H@V(%*p{9Jfi;lSl$Pl<-|oA zLRZIk7@+7IM0WGqGR9#k7b2A0Ni6D9EgqHo`QuB!Qir%a&jT>Q=#mFI=v2f4<-Q8e zkrULc=&XzPlIgPsHf~N<%F}8!+Qblb;Fw(*+`Y6~(mo{xC|{&EN0 z2Av{X#ve7U0sEy$Sxt%V>$nxE)DTobzj$G_)sZNuyLBVi?5v=rW*m^VprUEryuRKN z^F4nFXy3R7A$Q}ZgFK&u@-AtzkKwZHS)xz&blBxiJhLZ|@g&?kmv?z{fe~o2Jmr&> ze!25re@qUNG9q6d3!8MiV7Aw7pu$BTxmhLTx1Ax%#vzbb(8KaYr1I$&ez0dJy`e|m zmC1H9fYHCWADl2Qd5PpmU^OG#8CNLhp%6yCjHq;ZwB~A zpdBi}Ja3xxIJ~u4e9=U&PCp%jW_r|5J9}ZcP~dTk7`Sj}VJZLox^vpt4-d!xNaIxa zf(&X>L&j+N_|Gh`iVK+Wx6VhTovjSdBkQ9k90sK3o2{@wraeW-3IDh;U?V1-J9#}< z>wduDIRu|yH@6kb8*$I{Kwk1}mO5doKM1EDk!;XQK`g6}T%=7Cdy9gjX0BuYMgbb! zu8GCWQ>>+E26FbS$gc-76#FTHNJAT-BITp{F( z)v@7_IQXDZ&^cGgrbEb->uQk`h9(>{Wu(j}sGLZ0T3b>OgWnbxIpGyZz>cW}R4QgIon9 zS5Pf4~A`mkd7gykWf!c4d z&tIYmT1Bwt4BQ)xz^jyApgkS5JMwG;obLnX}Muku4%%OMwxqqiYU{uc=PnAhGb6?)y189|89TIQ2%GsWOh+o5H%2 zJqt9t%+b{~a8BQ$CYR(ekx`AqNy+?KQCO$>$yI|cza>>Gq3{FCWECD@^#Oq>wK=~p z7UNHLdO3pO?`Eq4UtnA))?FZI?*a}?zC~hnJB>#M-O`S6TD>9pCn2nzHoVx{;y%xp z*osS!wpj|`%JP5(cpsM4;Vo6y56GNnMAr_PE5I7cXOmX9I{^y-I>vsbT{uWZK|vvA z%K_H!lJUtO)@+K-V0Df*`^{sTe z&m1z-cfHj@;(09y^p)43P44-kX7kqZ8qW!g^mT^=+oJmt35a`RqrcjHvuJTng!=8D z4cEYn7j*QBmGucskgE8=TS~gm%Kt`N{zPPV7h*yusYug_*VgM@5a2Zoz5DBQdDj@A z292MkrWiw`D&Mk#St zi^L@Z4Ryf16n|b~(v>52z@a^kySw6j|CCPGLQA@H%3`H( znK)vzw7KuRdsD8RUuM@|+ry-ik>{|~sN3%C!kfuyyQjG!ZR9gyFZd;rjQgR`S_F_y zb>A$_JrCr4;(cQxSs ^E3dfxgs;4oP85B>J1`KP-7uN<-$loH_wmqs?R|enx{W z5SWmcH97VrrPB7A-yzQ^=5W3|Iu~7K{xjR$DP8F@5R>G9HC6lczF^Ni;Q{0hg!;tJ zy#W6M?c{n@%>BFQgnNCSE5Fw`RDBZ4C|F?>rdApde57_wG7Y~nd3tI88OiiL;toX$ zTE#C!eBC76;|4~R;)iaSS+!#C456xi`2HWXBJjo+;rE22j9SWZ7OE#sk*WLsjhv2U z$xj(Q5`*Ez`p1V$Jd$;@-D*T=;x{to_g3ZOK)tb8j%^RTw|+j04E?)&eZ$pYi55k+ z3H_RaBye(QR;3GXGA`f2rcZK3&Z#5$?huIiLY*K)UFulIyP&{58GHS@+CC((-Uw~o zzh8*FjmSjC1|8FS?}j^(zL|3Z8n3c+;P(>}(`C(Bv38lF}l?O zVv+6)M#=t;;Lx#wn_;aj!9%oQk}6Ov3j6TtrrW%WBaq@ROs9~x*6D^p)OI2Ns(5-+ zp!~^L-?y#X>^mx}Ix>%*8D^HML-97f%yVX^DJs5|z{)=4bN@T9O9m>A7iW~=4hCh_ zroYk(HX8C*GN0}Hp7w-!iAJcc1U@mpy?LH>J}qH>RsmBSY+lKV_S40J*=~1DdpRi5*OQOPknRU$iEe@E zBBduew9gW;|24KE_~%6D!v&om*SrKZHj6mGV_12Y8VhVQ#j5RoW>KX6kyGHhv*cH8 zy|SVssPXQTfu@O2Gj2Sd-^(j}tv~rJXy2G2w!+2fkCQ{}kj`8<&U^)0>&N=y3`WTz z;yD}?v>hh#?V=wcHFG7-4F9Z<6$%nbv+omDBn&(ol;p^ZSlO8wu_^?3j8x zzlXNg)de5?9tB+OlnRJHH>;Me$%EmRk0_hvUzt!Dq1u8tM{i6fA2lE60>?)*8DZM5 z=x+7@^^H>#R4zLW0^(f2M4;(BM`zC#U_4)OiG#%)mvC_J&-B;0_CT+ZzzRe#*0xb| zy;U1oB5*+I{LS`Nu~*tdK6n7}eM65Ywdr;QVz+D;U$@(iyOIHQ%-e|UclXrbO~XD8 zfV~as&A}sfoNn%`!7sAgjrfl)??50`)DCqT_?81|aJ$3VS$y!yPxXL+pg&g0b=PB( zaMniLtv>&gpJ!Z~U(#|kON~k@J7*{PcJuSYDoDt}+8z@2*D*c{0kVWVKosqA+@M_W zS0|eq+XZtHcjk8kel2V(a;>hPRD-Pm+z+-O_GwyV~)-+&M_Ik3NG4^KctRZI( z70eK2CM5X7FLAwxHY*HRpMLOOF^S*Nj-a-)v3a!VW6Ki!9<(IPeoOIkECtfs%zJZq zb41x5Udd%TS2P6t4gk{j*!ybsDggY~Rmz%Gg~on4@;Q#WUuawIDRe2{RDhZYO<-l| z0TfwyHsMX?L&I^txyg#Dd9^-l?%RBr{f0;76hPX8keInxuC(sDhW}YuRe(IydE{}I zT%F)PM64|UfhIfX^s)o2Fw36qbld1T_zqhs6+p8|Of0HjFF7~qK7yIX5WGn@Mb@=B zHmt_bpF5{wAmwgHuDr!+&4W+#nas&DeFg93M9}4@L-I%5VmqtAU%8QpaX4s} zo#QLU->lr0Oy6rqZ|x+o)Won?*FzZabd!POAy^V3nP2+u0`D-|-R?LV0@*5-Yv`wE zRVd>*S-uZS+?qQEk%7ix#|-u>)to^pdY04Z@ZHk<6_k$*=TFSw`a1ju%3$|W9Ma4J zgDA&7JO%HLDx&}-@oJ9=h$N>9j{IAq(69h<{<0(CSH;yXXRiLIze9D82aEK(2t|&T z-{od2rmiN@!o!CTXh|U3v7!jS%bljWzRph~;-xfJynxwAaLE8b2wfqniSl#wE3<;O^|JNfqvRL(u1yRxB?gS4==aCdyrbrSoLqS^e(`fjhq~v|fmq`Sk8%@4e1UpbuWk z);;;-`rXN!Y2WQ%`9+A~{Jb{E?WP^42(Nh4k|@xq?I5$^Y2Ko@6f1Q4ixwT!=& zH0XpHB>9B|wp{B%9Vzv)19|dc`SHAfmJ!A*%-yz$TNj4e)@RF<_?j>0v{K_trL<(< z*{!ySh!x+=?^3tNP;R*Ja)U4izfXN z?;zvq87R-7j_6`9L81rI2anTv5{m&^_T0W-?K|vy{i~yEGpNh#pV3}nmmCJ4YvFP}Qt7TztIQVsH-q}m8;ZZ@{js;_c$|taXT)0Fn-<(z@CfC@f$sZKWA1#~B(f!( zt-3|H2uq*Rx~IA?fLD4>5vCPiK9Vykf(E)3KVxw!I$Q8TtQJ1zJL&UNV2!yEA^3J& zCO|f6YqMesBR@c0=<#zoyi>x?4*yQ6vzp%GWPXc1eg&h$YWD_nUkc>)KUk$~!kD9K z#mCY_%R26$mit-T(&h+7@2-J^0=?D8K67d>{*?60o3Ev1! zhbQ96Fx9TTwurYo$*fzjU-5RRHg|YfU}VWg;LxPAqKg%*75{a@({G~`*I-1KkG6`7 zA`UE`4FZuZHr~%j*8T;&M!x2>=k`LuG?0Cad>Zt2>Cv^XTzOZVsr~aimN`$rnJ6lJ zCd#dk6$DMYpOmyW7qI5JI#-1b4#NE%a2ktHyApKXlUZ$4XhDqMJf47%Iqy$*cfW4I z-D*(Vs=R^e=AE6lzY)Z6%*^6T`}5^qgYFmv2q#w$1v9xIo@nHAK6@z%$2hA$r6Dpr zLr^2Lyu_SWcLZ`7re{m=52Ln1_TU2@T|P?%jl};Lk{Rz_hmM{9f#50KpEVgY0d>GR zowwGCf$MN&CEv9HSi!d6z&!vjnDuq6x*;lm3q}9zLbDBMYt6Q9rNaYB7woZjK50<7 z_Ph}YG~nL|;Jg1tiy}1k3O%;@RR7NkYUlgOo9k#zPHh9}x^MR=iT(YjPY?Z3OK`ae zB5J(0PH|qgQnX?8&&Zfm3VO>gy!;#$GJ+!oWxn`w?iBB0mdXxKmz$i8yGXbTrqxG` znwoD(JO^}w@8?Vgq55Z9wyn0ryJf*>v>ll4w3t-Bs+`9y4S27LLl#JaJ8|~Y-YvBt zVy&Zn2qp0pj2R+%IA|-QYb{=KUgWfxALjsj3^s=UdX2c{MByU{3mVUxC zqpCzN>S{h(PaQ;lxUvRh?qjkhO%9cJy#Ij3Eb+Eg5+Bz({mcWw%b#jp4X@(BM?3u_ z6P?IzifOBwo2=OnV;JFU^G+raz+5#uxByq1tq^EAExc=lA;0DoLa+%M9lm`1jr1am zqV2kU7JIi6BM`kBa(?a7Xc1-aDrv!DnebR;v9QAOO2B5+UKPDS0^V; zG^;o^{XXUn1iCp0wA>@1G8lhxV>yv0rQ764{e;sn?XD6Eg|1SEk?`miM(b*OvL@R# zyXlfx$j(qG8}g8dWqJ+C>(#w|LZUPBEwW5t#ji_v9sgo8p3C&SRkrz81AHwnHk8NV z%rL2V=x}fmi)_+`nI_G6d|KO&Xp}s+OSI*b4fB0WO2|U;pf@Um(esT8z=y+|4l%WGcN03P>+>^!Y9=J zV~+fGf)#onQyuTfRsR6RUO-AS>6ZJ_&PW7xqr>C(o2{YK3COXrX?((wVt=H&1fk0{ zMfTH+Z@l*aaBpDP6B^(EpceX`zqR*PkhCrMlygw-T-e=&CSc=U+X|k6Q5VL)kYzUAT_fkL)maRsg#s#YRcDe=BaTvrr-)g@HY7jJvTw=LM zNUt*eUHj#8*~+`linc-rS*7|48$I)vC9x`tX1$H9Aj#olYUASB4WQ7J?U~VN6ryy8 zx$G}qZE3y_zkg@v$ch- zye-BmP)UB%Cjr@^T74b?ipa*fhAVY*sZ|sHQxJ}q>qf<06RH>>LV7uGYraHr01#x{ z_4Th8d&@Hh;I)~qTM8#O>zdBXad^H%ocKKIecdRkwCj?<_bzv?i=_sDBn|hy zS;Eq6Pm0BQ+t8VEowe_zCf`QV`9k)?k3JAHOmqd^U8O&yA}=~P&`1z4PQ4s!!-xV` zcEd}>-)xyXJaIG(|H$V0*!`$GD|M&u{=xS?hd1+uwE~@W$W&+NQhIOuSx8!&BhT3K z2`-=+OfxF-#|5`{+3Uw_5!y_Xq;u=6kfe-v?{av|Pqo>ytquik#)9-6p&kwkG`idZ zUSl(o{h?qtLr1ZlwV(mn=SpnB6`3Jc6|U%7<$K5+(Aec0&Q|j97V3{`Ef2kqnM`|k zmn*+RL^EadZ1tMZZJJ<9DT){Y_dzA?#wW(%_&ytx(OwRCK@KT!<@&s(xz zGhIeNmga+o3i$cZ9gZ@sw}F!z2s(C0`tWfdE#Lrp*+>S>j*7kjlAP=3jrO_`D=69! zG2b(J07F(^fnt@-R`g}4ZJBMRrE>q=K~;MWqMvlc-N5ILj`q~dE^JBjf$Ea_LV-Y| z{bKMRNp|@qIAtIEo!{{loAcCtCppv#Mzw1XyXeUhqHnW_48eHRJS@cE$9bhnW6hB2 z3s3|egJJF@o#zczZ-vpsg zVej2b-HL9=742MW+fy5^Ac^tbgLgmn0*dkICrlWbjR+y|*2~pwdDlHvzM1X-2{dtk zw6qI6=jr#$Ta0yfod{S&2v-p1_3zKiTVd0|*0;EZ$QRWPY==AUt4!ncbK3ga>>#UX ztiW>#(;G$8$>>F-uF-A4#77+HZnmH&Ry58F^6y zWFDfC%qDZeEkf{ea2ukN5}%aw8&^<^xt_&S&3CZvGD_CiXf3ej!6f)^BKkmsYlIBr zcMz|-KG7*{LZ-^R`KvKqm>bHcavBcV))FLhm0um`1de9e4Of03HHb_87AQqqT3R;z z?gBgofXo4C83SNcov4FefKifY)XNGsoNAQwWT^hXCwSj~m5MHg#J-{?Q1)SH0xNcf zx|Le8XW~QkG~Sc$=g4?wK-w&M)32SFoqenYGi3qD1L9x04>%bp=x|H~v6`f*+OyaI zNr(*SRsF?8H}v_jY;n)uqCM^xolSqtKhz9FV&=o^!TIH`P8{@(h%EyBcUr7(*rX|L zxPqpCcibakG6g0`Uq#bO83c60-N9Vs3orY%D&$HMGQc+ zUppBiYYvM~>nY=yigAu>`)TzrXDJ^0?G;&Gy;=XJV%_s~raWy2(59O0_74G}gHsb^ zn=(`4eHppjL_BFGPiTy&sNkZz0>x)XrvC^8{Nl^gCQn7Ut~hyZdbyz<&=|kFvH1BK z!3WbJM!jzi9{!Iv=kjo0Y#p1i7;TrL^82$Rqj#`1d;j!*3+E4}nm_y&_8EzZhBBSs zKI7W}cDL5Cg5MVWOS!?NkBJ+QoUsSDSQ9_wH3UME4So}0xSsKFOzOWKS#-3jisl)b zkRcXavSy^Ss&`$TiHaFGmyw8vPMmkrLNco$I$FFf) z?MFfJLDm)p7d(gl|0i$Fl@G-v7m(La#VS3W(svJ?8BJSe(Y2B}VErFM&t+Bh&clnq zbFPj_rGQx5_9LXv_S4D#2zNiI_i!nN{RDSzK0N$bJ?s0i?$w-8y8$ivv;QW5*Sczt z`s|lh;<;zc3aoAij;{}hG#*%=$^`LE{cFSY02f2A)GsNfevb}dLnsrgelzvx{SL$` z;KW%u<$v!aO_4Id3=nDLG($JWx(_(NerKwoj{CLA-oOu+T*D zI02CQj|Zh~#%}`hNnB!hZ4lg#KL`0%om^8ra&?eKaBeT6uTba3j^pn-JMf%jcRl;u z3p+bGFxwR2=2EzYwdFWXGEl6-!a547y>JLG4$L-04vkU|+xC*Ie>4PAH5R5qfTDAiAYs+_Q!}lmavD%a7KGoWfY!H>r)w1DEXUA%822Qx}tC1|D5* z4A5idX|n{t>RrL6;9nHk8=>zvh5w?7(zpu(h74MDd&?dblDsGqMkh!9uOLt`NI^zQ z%N45fc5<3J{lBrCx~M*9!h1*O1TC4iJSCKc-(Oq)=~9Hz6;dB4L0++l#`PziUB2 zb))b9Oy+*25e`qHb`CCytVyEoar%HT^teu7e@@KwUlJBTx$TL8wo1L)7otSE@hDi# zF@WDufRVy1N?HH5V_@v3V^H&gg~#-_djJX}q_pL=_D928J^P0Ox-i@_QB&<Bc=HGuI)achwvY%X zkhnMY1x$ApKU2cS)5knsiOAyO@*%tNxdBVYVVWHs5(74D>)j0&87v3d&$ zW^ua6)oDNzy2CbwxvtLQ2V-fTZP6Yxu6{8Hxi`Mi*>+)-r)09K^L#@b?1aDk;@*X? z7o8?-qFCt_%o#Oy^``p<2v`D1$vhfYB#c`ry;rS84(>LyyZz#}uKH~yKtz|k>XVP= zt0|f{%DX@55oW)X#$%!`Iy_|o&s-d=#N9>UShs^fLSMFC8S{oa1O^lDg1MF>Rru6?|Yo%@y`7T+B~&# z$A+n+hSZ>#gzWP^+m8FPbyJG$%hgnOY3KZX9GTi{t$#q829(izr*>ZkL2aF%1!&Lz zWPp?PMGtA&@5sPG7j#71+_->DGj(dm6(w|~wlY5|&ENP{D#-f!fzT;cUeTk^D|pLy znx?-K1I4(%f>)x0wCCm;9V*2fvCy2C!NG-Hz`BM8@CG-9R!iJMwD6jp7@bvzGi?9x zoi+l3M=2d{cw1Gc6%<~(%zcr@WGL(^j7cf@0C||n$!JzR^nOSsW&L!u$TR6F9=ube zlq|?gSGC!l8g#w=)37uM)z$r>&XX(+h{-yiqu;;v@4t}{eK6nLcmdY`5siONrHn8O$&wV?IqR=!?GP_hBbkkwXC8MdJ~tK1AumiD=AOr2>{aa`*$|Ck!;!Y-wC%y(9U{HT#^Lz|3+ z?PI!2<6(aV)hf4QIkum`&k`eTuQ-^y0ZOTwP}Q1tzl%%(cy(9jiNy8? zw&3z$!jwb1`JK=Hfz72dKX-hUxM}O{WfxEh$M3k?)aNQiVaXS?ypC^?r~zN+0Qdc^ zmcgtK2x9tg(BMdTYJ>rBbv;i^Ig!n*B8vC9d?3#vou}WfJy6lABIvTUS*Hh@l@nfh z2LrrKP(eB`jub&4I}RNa#~A>uTfo<<^W-8y@%zLh4(5g*W574gBApu`56{+f%#*jV zu{fX(?$iJvrT>TsZzipn;L3MGwFoy3{@7sjFk27>wa9ZwwR-Y|bpXlgCvWL1ru+(; z%EthM4)a_3IWvz3Bg+JNvIQh9UwE)>KFSasSWTbjSOK5~zHs6XO529aE|J8o%W zAinnkEwdrwXbH{cheyHHQPJLokaPX$+$M_4Zq=8f(|4&&?iW`-jUOe~KgS7`8jv;8 zGmpUcBEpM<;k@I~!Zk?)1w7fk&{es4T=Gq7ztL*ar&Cn5ZF;7UNd(y=g&%vX zi+b;^r#I^?b#y|I{bGWck%%K13<}Lz3wx`O!brV9=Wy%C+MD^24Oc?76UU?8FQTcj z+x#Ei*#cxX!c!F|Cn*q}TRxTf-$ z^}YL2{mz!tstWFvW3{h-DSXNujrOOT!|jm5GV*RFZcht{TCNPMZL+UJLAM%K|&T^7zT~+aWnYf8R+p+I{2QE zfsBsgQpoc)Je~Vy82MNq@~Lewm02&WTWd(-){(K zVjIaaBWwGj=bj@;jQIeA{4~ZH+3o9ynqMV-?WHAA0wTaF1QTM>Yb3u)j}Q)_if ze#F!+)Pp|^xff~8ouhu5a>L8!0wUqx>Pc!jR&gS(8EX&S=0|9Rz{!$~CriIuMC|e9 zQf^A1__bF_GyAZ7318`filc~GBX^!eZ5j5-q7nPAq^%H)^vF0DjYa| zS3GB=Ca+7mvnYSAT-{2m#+4Zp-7rm5!{jCeO!S7})_Nf*@ybRyEqc2`-tfZZI&`-q z^JeWzJ9w>`=XLxlazW5njfpb>&xIy(X4x`ka=qZTW#ChZpJ@bnQH0?4_w1ee8yg$2UxpM~?as|RA z?LjL7yvCQq1GLipi+yn$Vl^V?l6wsJb_#%{Uc}<$obI z@#Pa;T!yw4i;ja~u2`*|LzvY3mR5}!b53zmAh{QPSQeB41X>?2#Caa1RT(9~_)@ae z#E<)_n@)#;9oaY&**?vDDR;Z7M&k`qm=_Dv z4_oyiY#bf*FJt}V)};!=PA;Y^x_A;PhE8{B0_9g6yf!-zW<^iawVGYYlj7cC&p>)w z?Ywb7QrZ>Y$N7ZF((U!am%QnNWW-T{#52MRds8J#8&4d@YR%jBH+~M7mx4cIc^F@L zQ%_kr#QsnmDlWgzcv!V+Z6l2D<&>mFxax`oM0zc}rove>h}WIbZWN*_ zYgpQY`rgrmRgVVVKabvGbMakaD8;RC(ZTnmF8%`iN52lM1I&57|@yoDu#W>2{; zPm}y;a$}0(=q~n3i}v6fOv2D*-?t(&@N2%>d-3Z8IKuWP zhwToB?ox4<-`B0qOB~ZUrQ!o|Kw-yc!nGFmpcqitZ2F2rb-id?)=kWxBI&;YMXw@# zh@X2iGiH}QrJqpyf%5tLvP^48-MebtgK*$E>zu)bstjBF?dNVGUG^hk8WYtx{?T`Q z@1O=~3uPlp>k}PwvD+u#Kkktr*8Gz)=>c>$y^_shW5_o29swX#%aF3LARd1qtRGF| z+}wVw95;(QqV+fD`5abQpUf+Zu#!)p49%n~B>S+$!sSEnOGQ)uH@Ql?M-Zu!dqBr6 zYf;`~X)`QfP99p?R#u6%Od91{BeUux{O?PLMZ1A>hlw=mM98Y~+12w#RbHP$n9Byu zDTG`FmWs_Fel>21e^h-ZBQ?u@k7uL(q^0xg=`thxLt(w~j-crT@w^7Wu$=&3ddsUyf zNYeV}>S_mt)jmM9+!NXERBnBhVi8SRW2h2 z@11N865vNgs&Y>l5`bP`3$b|J_#-3c>C3FeAhzb2L4|uk)Lq);$TDH%X(93hEHgJ_ zlGFvZ65M=_o1(bZXbX^GQx5~8u>5~fM%8C5JS2_zw>NI9 zNeIda@~f=`D;1OJ8WNz|V0XXDPeJB&g~Fc#QrRx~T5=z{#erT+V+WAV_@I zJxI>gbLukHU#>NiER)Kju@zqLJFF`I>Nh)*u($D8-3bH7rdfI*#q|p&|Dis$j*vGK z#m*7zpAsaKyWf9J3xDyTQ0FK0VyQN5-k*jSbs|<3Ia#0nu>UsUq3{IP8F|&0JR)NG zLs|jee*w=2c5qCxz!>YB>qCRJ(~tu^@XK6fL7=nJU3BqCE@umwu!Eo+P-q1}c5?s1=oaxb_~ zJcj+Wx#r%7I^RvRY`Ro7(M&DO@Wl4gY7seWyfL72>o3qU->o4#fL3V`FTB)fLvh!t zQd}TQu@H^Dr*3|?2`;Cm z_DX!9-o6GX3YoD_-_^3Orf7BjGabsk@7dK@(w0_j*q6NoK&>KMk)eIdWJ~g#hn!A- zIuyY4vSa}P;^>4Gk8BM^R@jT{-o9=`R3wYazu+Oz)Pa%ww>KEoH=}=<*N1H1A!6yF zEwX_$!OSa8dHLOM{zVP~&2kk?g~~Tdq11({i&>|Az+Xp&$Y3QT-hZeFzUm;EiMl?b z3i_LN+)~+^;+ZR#eO<5ylJZaIW;@+`?Hv{Mb|PGnoglF**2ul{XO{52?B(Z{- z3T@U9tI~cU<9`$CB(hhWWoUZrp+cXLD>-9oCp(w(pyi)C$GuOks?3+2U%NU zDPPLGE@HNeP7+G~(n@<71AWykR5;E0-x!JOdiqHqRQQ$@07_)SK9ppdya5vAahif+ zr=BkMKOxefutM{`@R%!P?BRC93%8r$&pW1Q;*>S=E8t8uoA`*03|x@3uEBtv`tWv6r6;`?F+aJCWUB zgiC(a6X!{iOnwjICkwng0~z8avN2NC%F6{4s8AD((;2^b^jGUVf#V8GvAs?7X?PECE8MZR`?dR@t^V25eP*@LZ_n7 zpFHR$uu&*uO6Y#SPZQSGi5zJ8aG4)x{3nVK1C@bp)B<&-BX*?1q$@Bh%oel4dVWFi z?1p{zCa!u`Q{FqRZhZgk5Rp}HLN*w8*atgRt<`oYD6i_S%=zl|KDqH!4 zTHf0^ULd+`+D<);^I`?Cu&(@bZAQ)l-*gIq589se`(QtPf=l=9655z89UnBQQ-uZp z%ov2>ngGXShNguJg{~P-ZCio-h4sBNvJ0^>?*cR%SRgTrk&wG-on(Wu{1lq83g_N?dI z#Oi?Ax<@q`I{}8H?@L*ABFbj*{PA^CXHe-e^)`ZDB<^0?6yruKK^7HuFGH z`Yzi7xTaUW;&b(A(pAYKF*o_ojd(bqE3bw7T6`$->|qvw$_eT_-(~2dKTvxHJ6v(L z7+zuK?*FsMgh<2*63GCiIUTZzY&7$$ZTfejQSYpxWax!wsNHTdy6vBW{GTv2ghwDe zXhEgukhOc?UWvF21JVmk9(h2I25Ol%9eA!_^`ty;Q;g2veb6CR)J{l%ZCdc?gytv}W|IBq zYp=Ujl2z}iO?wUTzj0^EGEqBx+=?VoRb`z$h1uu8QCorLcGFn^t^5>brksQWIt!Oz z#4tiOi<0>+A-Pci8`i2sG6WD;`unP!vYUr{mdy>Xo6csrn=WLRi7p2e@a}evIBnOI zv^V7%hIw;~Qvx~^NMrN;{kj6H|E-tl4Abu_f0+fsTBN)W+pBGb{z<`g1q~XHKexj= z$@I~`nFS16_0`k+z=+Jk$4x@Zq11Ct(rVBAyE!bfWMYKZhZ;;F=jllYl+zm3zgihS zgFuYwmtw~b(zl(*x!PQpuCPD=V~+gF=On^$2_J2;_%+dEzSeNuqoez^FH@r9=f>gs z23d$rxiKZ1%Vy+98R@l#e!JLqwzKmm)psA$8_Kgg94_Tjzw}TRsaDwwm5Y}`NQ@Z6vJr4bbX*WCmNi%l9otUb-Kw_#bvcqQ z!`ioag2cbikR5rmVzT5C^wvUvy2h5hN6if6zqS_93IGfskaoMAC-8A6mcRQNh)sXE zThyYKEXEq>N1b?8c3dAZCLhthbI^{6GgBt7%JA_fk^R`Y4z{DTD|_ieY*Q5fn9w;( zKZx!tYteKjtZNC&0zJ2GD69?v$ZSfhLtq?NHQiK zu^Z^@N)11|wX!j+GeK-OgWvy(W3O+vW-!l6{LpsjCW!aD^6NtfI1XCLn-={VOmdxi z%8wbwn9rc13j4jf$)#0qbr%CHjcCH!^ZU0-jb~U3ryEG>#=ztO(!A3Oa}0(ogb|OfDA$OjiG#JzPdj~SBtJ*=fafaB zS&)~<-L5JYGmO4_-w+aCY;$OBC}HyT*@6z7DxRl9nX3Zf&w+6`^1pB{t& zl6Fv^K@CCR^kD}O2Yx#BPvEBpmyn7PAB^*~nw8A`l*;AQ2nLE)UBTLKH5~Xxbd@kD z{E@E6LXIlpH`t;n?7Gk6rfx-dKe7+-TX@_wR9Ao$)3EAfsfw~UnK_W7aS~YO9)xfn z1kc^~m{h0}P>}Xp0+K^|kdnuy6zD0i#0-|fZUd@|$H@9+My z^Fo=;y02IzTr9R%r6B-~BCy;%ye_#+!*OR%RkToP%U)w@0|?PWnZ8u9v6?0Tfq1V3 z<%@-p>ij$n%NqPJIVSi|H8>K+N<}1k6KDGHS3i@K)>aJ&i)2%j8UW#BweyM63-$fU z7(TCp+qsn_`-8Q^bcKllpv^yH=lD55g630Xov2;KAVEp)s1^WFn(-MB`Rs#5n(m0> z2kvrj*x+L25GncXK6ipMXDD`e?NE|LdI}Yg*(@VtpGH{bS0#6f{Z4uKXQ9 zT&FCKU%m0EZp)oJ;E8$nd!Qg9O0vmI?L5KNF|1r*ebMCDUVcIQE>zyUDWI%32cYnV ziZs$yYhZzN;!uNCy73~Nix3Vs_8mpxqF*I**W%m^E@CQ(1KziBv03?EiqC~KX70J7 z?*~*2*+;LHQ34h1n{K&R&qEsOoByFJ-+nFy#S}Y>sn1w21vajpq{ZwsW*Xi%zj#}{xAb$}`FLNS1#CVz_RmNb!Sd1^}z!Ir{-2F z#@P^9P}};d2nTaD+-)ayJ^>Zokg;#o0=&P1>yWln*}}tIXFju*Ne;2ktRm~h3FNP7 zy>xj0w;_J$NrDu`-MIIuaptJ?t_-XV^Y~ufXss{c4S&$kWGR6GfY(+VL+@(X@RpCf z0mA&rRDw94>li(zLMYmdxM`_6KI((0K}!(=;GStooW7Gm^DJI=a=wV^aF6y+&c~ez zKVq!m&U)y;-6h}VuS}?OjqF>ZIlto#K(&6e(xr~={Cd3e4>46t#*{s51A|>Zh(*ev zDQ+>NA0y`BRlWYR$)Y<)L-c$5Q%vz%kfZ1qG1CPzz!_Q@5(0d$JeBX@g1(-;_iQOV zZ%mHrDBt*lC`BgKCa*r{+=@j&kM+#Vew;O=N@i89XDBD`5}@x*S?=Wb(f^wqL2 z4{uC=aNK@!3Ll{TA@#Khuujr&g{WJ7XN|i5XV(u67q=1Se*-tll86wxdCnd6I}7Pz zC?Ydm-Kp39CvAa{x<6ry)vnmThMSDAeAx*%Yg^$~|C=?kImy|)N3fW!v3wvYpc4y! z@YDX$6g)Ph^S^YlT`ZGgK+s53ZpWU?*cGB-W!x)c9@9hd=VJBSC9CmFSc??d0cl>M z#ZWpsY^Bw0OP97R0nA zjp-=eNxZX7n>joj{-DI(oZ9YhIwa##oKI)#5*QV=$DT_}C5bUO6Td6k6Dh1bsnekN zhizpX5)fugz3Prry`Kw|}xusPj{<0ddp8qAq}FKCWD(&4pek8ZS+rsq~TbgzOYR59hwOEbq*U@8lzXbDcx@csS?j zfT-dG3@PB{z;VC`M~HB}+0;p5o^NUOffP-s9@0$oB^A0dsU6lG)*&aM#Mq&$HLe z-UC&q(FAg=)f>?g<9GvZUFD!n@Y0V(p>eq94J0zf?SDP+vizmEG9ClmwHW!N==Z~+ z(^|k!jWp%kF8yCpj$T)PEH+B;%`e zC8&S=gLybDPP+~_De~v*FcT|CyhYwwN$cM%w)q1Z51$OGxI2LZ@2JAL0FWOFf-ac2 z>)RZ9W6Hrf|Bm3GZHeN&Jer&#Y4;w-I}ZVNW8cr&u$wcGDS-3na_7&hMzQKtgl>t| zcjQ6+gvv0untiR7xb1i8=|pq*&?OQ#h55)e8}4Y6%p2Y(SN zmQ|K1WBS=|6)YO6(aZTKrgVJtCMggXcvq~h?8OX!!S&lRi-mgaRRM_necv}h9`-QAVUJ#-`q}|FPCJ+ z9mc8-vKy&rY5)!+L4i$d4=TFrB|V@lLV&IDlB#z6g%nqp#s%=k*q4zqq-{S5OXT98 zoo7{M-T}6{oy$~Lp$6wn;c4genNnz`_;mk|@@XG&nmnwopdqkJe1>zPXMkjMF~VX8 z@{Q1Z1uVXXzLrJEsI>TMrUfq*H<0aklm6Um5J8@D8Ppxb3pGJ6KB9-3&>+C}1Q&cZ z%xgPUi3P&Q>K)HuR{^8FZZi6zt1UO0%4aVVn`v}jbXLID;Gv7uVbu+^OBj! zesjl_teByEQ}>J2TKmZcKQ7RGG}PePL@WM$RJvi10?!2%$Ppu!j*7pehat{P8_ws` zHyZ~4_H1bNT`s4od4W zGq;*N-mh}h+HA&v{O$Y2=1b(SaGUAC(gr|20&<+mkOl-4TYI7CtEB78oSUTcfIbZi zRKw&a__yPm1-c0#F%7_dK_^V+)_e+YVmK;brBj}lc* zW(k0ddOMB)1tG~C_>kLY_XKe;@nR_?R2-?bG`|IICVOP$^H`7pDU@iZTjsX$93#B- zSV}_}9R$1H_)#-xQTqZ0-3gT`vtF8$MjBGU=T=8hd?aJ=82@EH^kZ%>`Ij<^u zJG(cVms0Lf{`9}pa8Xmldi%V75t z#IO19E(yDq>CUTi~Nk?!-Me>t$+;& zDIAbivkBi^-8E$;aux^k_B!&pwk>zVh>!BVSn@y>9Fspb00JN!P*1Y3JPIfLSI1Z{ z-`eHGKI#fUBo6|&0F*J&({iqunFP8_i$OD2h0araq*S2CFoFv0K1MWcwf(ez+BxG_ z)21U1mrW5OQbTX7)i7`3_ScQK;b_K>G=LKn-~}`2Io~wXyV2FqI&GRB1@fO#(Ybj) z-4MfRYbx@dZ>8axZwU`{9NRtM^*eO|XbffJRj>hXe5Rs=#CQ}-p5QTx_jYf=I3~^X z40Qbmco=G^yva@DLQCnO_t9dt335sow+PS?ovcg#k(yxSww0VV)1VIP_JaYOnvCp9 zdYRXvbh#HN!nS%wfkn|-*KRVv zz{uCuYwIj5p!YS+NOJWYj>Yv=GsYijv*7jj$_8wVN!XaKaOWn$Z}u9h>l5|EtF;-7 zt;5M~-Z@}5F!1e?A6QRx5D^-yZ3mF-d|MlTr(u>nY<>BoXN)t>rkaD9X!d!*>2R)L(Xlyt~{6YIRQWOna_Q_l1^F@3c;ZPP%&F zXGX9vXuin%+JC9}oNn89@rh@k5CL|I%aQWSABwx9#E1?+tx~}Z*@(WlHwc(Z9f~i% zDAeO6e|^2$LkmkkXr;s4Y2WoO1Mt6uF@`5R;q}{8)PUQ8XJ8fLK3isXA^lRihagJz zx0{30@#Z<9RxRa*@CHpD<0-vwnNEwC-?u3$%Mu!qYB)?F|AA);qt} zyK2!Qk~&jrIB&5_xbzz^+TpW(Xx?zd>9yldt(GS^&aLeasGg$0?`kseO_nxS0DFm7 zjiY3MO|JluK!zC#Gw4>#l={uE5?Mj1dPaV1Rtb#vb#AE~x?0XiS-#T=`3#@~g!n08 zXnT6$#a{%QW9&Ms--dNYT60xR)%_S*gtemGEkxKP+D02A zQErkgsp4>?_*4|39{^YonzR7EjnAFUTi z@#yM9sIFbO)Hd#}|mM5&t_103AW;Ds+Zhw12wWRaySmcs_(0y{-@PH&}e~$T0;tthaX|UN4Zm zr2ZzGfh#%5=_aX3ugg?n-eiL@0|269VQM~r@s1*KXN7E8@6I=Ia0uYh;@EXVbK#33 zI2iEZIHwaeF7!bLa+Cme4Y?@nHi1`jAd ztEJnh-%>a8=T|VjtMEcA>t`OFlp8rJZH)X=Tud6J#Qc|$H#$SO>IQxkV>8u%eWR}1 zRXVbPtxS&HG!AGSDDI59D0yAocVVcM#$$A%?T~a6ITl;DEYy}L8F$G6hF|=(_bQaf z7Dz_H2ndIb6D#aEc5SJSG@9u_SW-ic`khMZRY+EMO;&1^Z#tG&~ z<8`6A`8G#m>)p~vrj!tjCm)H#7XP;Q^e2ylba2a-J7T`EWOAk2e(FKkDS8Kp+8UN+ z@)k-SXHtMqTbYXI{h)338=@>c7rsaY;La2w4?0i9_1R~9^X_I}TBLvxQ(Z=6ypXL* zs#VMI({B&0Dp|{e@0tt<#J+LzwQs3J->lncv8zXhsF&0+08oF`<+(HO#;5B{Yq+)1 zIqi@M|H_KI)2zG0i|h8+{mL6$1zjbiu1+H0(w9G+HIAAQV5a!111@^+6=IJS9-&-j z%nSw%Rw|$C5a)P8RqAZUSBn!5u52*wbcfR06qOs(bm|6PxP-Z3?QzOX-kOu1pRZ`f)Cd~((1>3-$+w3=622U~S5J%% z@A2PsC7;1}w{pB4gk8KoY#9)k20eb@}Z(8AEgYcf!B3>70 zRQQgK*%@PWvJM5!_lnMyD<;3`Pp2@z<7O2CCQm&lmB|H+Z82s@6&?l*YVri9oE3)W zShXhW@w`?moEXM+j92)J8gqtG8>)X)(dLUWLWH~@&JPiE(zR65bk1z{=a1O%Ns)rM z1vQ23v#y~|t7-D{hjX77dK#O<+`bjk!kv3 z3T65tRa9@bE;+Bz=O|{thvp{YTHkNvA(PXRk$y*fs)D>(=(y;- zA_5nrgy=p>`0Wua3ltnw)pWvbg##5}(n0aalP93>>et3|=h2U9xacObyle(;s#p2B zsvam1Jie3ehppsGo*>C6Iv+dhUZYPi>xj2ogIbnCx$~ErTiJ7M0WRSxwe%-vOdo~y z{Yedfo;Eb$gR+{U&nNO_;3E|=*&|j@Lw?o^n8BItqjfeDwSt6RRo;E&Mw+JlfnjTK zsX6T4w>H2}w*~CyV}EsCa&e4U2d{Tid(Fo00o%ZZmFBRHZs~@*hSa_y!Kpq{<2;68 zY$nY zx`j^Rq!!_xd~OFpnpgW^YL`)}L7+k|1W<|uJoa8ow{J+F6RI>H^H94j)?w=HlEDlC z!(UkwPG-TS9%r9H{(vpw3!nhT=p6z0T=r}6@`)&W9-o)2PV}ENbO4z(6TUlrfJ zK;Sh(x%q-XHGYQBzF?C4U}+fA;kfu1oIL7sU{9U=(C5De4b9jf%);6_(Qg6X;P=rFAG!H;+Oj zJmPM2^_9!8GzFZ_!&`swm$>kruk=!3?fWNG6b;`>TP$BK%4|!LP+~ z!YR-+p}c+%O=0K3M&B$cG`PWK?eurR{B5AAIY zYVhz=eQyA!ilArg5MTplx)&BfPGDaODB)xrcl*Hgzrh;==7;%){kRB$X zT7ctUB{bXj<`8QM9^qi@_b8QoNXK+Va6sk|UzUleTEB0%ADjTkO6_)rTxmbR%-x%> z{c1Yg4Z$mCwCOTIqSwENPGN+?oWCOwb^5+@0mO)~R$56LlxomJa~C8=Q9o>7Qy)%`^aw0$M+n z;gG_4Nb@NZvVozOa3(&vsgKX(4@B8Q13{|S*T=5_I>y4}8jGrZP$b^+(fLlQ=LF}C zrU&DLU~qa;di(9#21Gb4eE^V^MPD_%wixv@_;nYD9F{*DPY|wZy+e_L8)DbQBcfkk zEv^C((5e+Md;vF$0GFH3(?S$5O7+gF832sse|fXhqo}Y@Fug|Lp)i#u>nt(dnxR3& z+8@l2;4#reiwi_URM#=5j?%? z4Zyt-Qt^wz>a^^zRddsSuvRK}6Ckmw+;pQ_d9c9s$HzZtoBrADdokV15RC~-$hN2_ zzf##_uOJP3yKOl&IQakIsgFY99NI#v>#LJ1_aX;#6#rpAN78)A_)jv;B+`~oQ-qu< zlm)x1C6>3f+EddEq*ws3?s5gz1f~V2E~Ac9Y{INn$Fc*Wj?5p|Ta>Z-zQed%4jcUo z$+hUm(Aw26BNdlvE1_cmsn@vN@xf1IfF8P#aVP8#2zZ}ZzA`ErkWRBTcR^fYl7w`5 z0JuMJR6mx(Jqg2amLlYB0m>!I75-2up|+~6%q-h^de;hF;G=cmQ5s0|$p_9HJw-eU$a63FB8__!W=K3;= z$3dk7=OC>G3#8WR^6(Qhj#e=ik7D3 zoaney;gS|ryj-}ewKh1sqaI_PQ?>5k-eLP5&Ei_940LPTB-fX|JSywd zD9j*I&~Y&l{eKzsksX0mOi|ELf%1(9S>sfZv%qljK;zQKU`_n4N0+0DAwog7H&;=s&Ex zU-S>|9^46kscBzJG3DTz$R%zukdpdJ-UJXd({ZmDvKAh8eF16>@6+$3{ z?@xU+rTr)3*$V60T;CV9(S_4gD&XD20m(vUtUJekY0oO?EQeuYPu}a{Z~akuI)=?W zWlELQ?sEMWu8T+v89LO%?Y}PBA6}8Wt@>N!z&lrfYh6#&`dBmjsB665CP6 zQt=rT6B|{5PF<(hg>Cq({rfJG4Vhb2K%qxv>9Y*S$->~RIhu<{bc^l>t;L=oi77Nm`GIqSw-KL%{=Vbh zvGeg|NAL-}!Dpxu^nTf_4B5wRZg(1e(S{A0W7sE68V~1oo%PmiYTKfc*0PpvPM>Sj zjhE<)Ivkm;y0`(t6WMIdl5|*(7|}glnE$%Cl)ap?(ka7{00r}LZ3^eVNun1PPltF! zi(%bY(m$hT6ChU_Ia%Kn@icA`v^Tf_r*yx{0lQdSjjaiHz`zOP#>z@)CSCD*B^{}$ zitqWaD{fN-O?eZ3cL)rho%Q2{JkNUBt+F=8W%xmJEyQfjxmU&ZJ#g2{l*@d+D;$06 zo-s4&GSlZu=MthReqT2@402kuyGAaN?_c+jNg<$J`vRyer4K+*N5%E(wOj0I`*SRv<#w?FPM6Xr<p_8HIQlYlca79~s*Hhm>A|C}&ot64SFVGoTb8p;F0{Epd9Fw=Qtm|T zy0!VTXY*8VD$`SUUm8{+TMCTMu7mbem=b-HlXRix3Ii7wYl<@{HbXfeFy%qqI?&#g5 z(#O%f!r2u06gyJ7Yj<+WwRO2Aojgo#-1*_eHhB7-H`7)`Pq3tUQXp%e2R9fcJL-(VW@2;xz)N(^)wwxa@r?o=7qhnLw zvBM*Z{bGcT%Vx)o>3d(>=Q}2O30c0*sEE|at>NdaCQaWqFiPs!Z4q0E%W%3L$lUNd zvLah7Y1?ibd-U*YVxz-Kys3?+)yUdt$=!k0%9tEfoqA%(VId;?$vJpwa;o;0FUiIV z73FQ3xA7c0B&*3dilOn)v%VRM=6LQSoxP)vESMKNpFTMZv+gXJ0uQrt#sP0Vc$H{( zZpQ8QnMqS>56g(z{#w}H&-?!8ajvCK3*>P(lUPCOdfYDhy0!fELQ(UxMlI2D;-pF* z@C*%A9#0bbf{LLG8= z^+ibW3`w2SDhCS2>fd>mvQPY+EH}IV%Mc=-PWBF!F&XX%0~;-f@1DmGx>C=c1e{59 z^_NeAquAv0uH75*{6^23Rar_lBH)$kr(51{T%i+Id}&i%EjoZ1RG#rzru`C_>()fX zqZJ!A?CAp?D z@(N#EY?Hi8nQi@^VBaUbkDvNLri2EYstGc;s^K{PJ4Ld2-vQ)P~XBHLa^BCOH)R^21SL&0}LyQn&QyrH1$PAL#D& zmPv1DG)uAxEMZNid9>K9RIjXEV>zynU$clar{dW7t$fZ!{o2Tqc6%o-DOa%Cn=X+V zP?9wRM;sf5-uoGMYc$+Gu==tuUSy{*PI_NRlyG53e7?_E!{)R((Xm&tbaf`0r$~YA zEiup2S9%*s119w-Vn3|XGrDzmmWwl~N;-lqaKQJ-Xjeu<(8nsHbN)?JgTy2s@+le7d``P0>}!e$vD;o5t-O)3pqG2sgpJCp5N7lQQsFD$2YS;&I&8D<%(XR0ogKB#_(WFB0A z)vg8t*VfyXRp7ajc`o|lSWrBMG)g~mYiwVMHjeFU=02UpdMTM@{o2+|>*(7pJO@v0-^WF7 zRcDNruoDhnzf|-u3LPsu!rD^Q%yZs9f$`3>Pwp4oV)qUUE<=9=-*c&>_`u(TY<9~& zt+%o$JTTHIHvcoB+wGk%r{3n%CQx z)a1EfbFe?JZ?mGEuBFO*Vo~RP8ai8X!7|>lW8`7WG*bE7j74>w^SwumlwbioQjyk` z4HzU1Z5JO7Y~v{JTk{v7$K!taif+5vqeRopU1^7(lxx%#Q5~iy-o2zB_BNf-Jj_R= zxh*JXq`(^b8f=eq7?;Y;ai(HRKeun>ipHn6M|Ma8&n61YG)t^(fY?mttvRrE&gNjz z*5|$x7~yLQ>jau^FwDPUPW|Fnp8 z1NUN=KdequXo1VY(-@0_;-`*6w5FSEqe#lOExykxP+J(wP^BeI(f72)>$(vd;z z;kT4)HZIUxp`jD>Gp}$?7c+pWP8Gc-P%U&+(!XTjB?7+9SQ3+$Vw<=@j_T0fFI=>d zdHm@zNv0M{C&+pJHf)Be*!g|(Cfl?xt^^u?_CP8qSjL*ZL7D+i`Cae-qw2lm z*$ltGajllNinfZX)k$l%B{r!pZS56%RjpXH38A$*P;J%T)JhP0Z#9Ehu_ZMlV#iF3 z-|h4HKF|00`6s;GcXH*r&V8F*X_lByIA(WVaL zLsQd7Z(R7QK>|0>SUU&V@z&@|PRab=Mb^ZfF7nctnm5T4+dcEu%wj15F}_i8e_{P3 z6`Yqank@Klby6ASyqn@)-avmqsqYie$5tkIfM}vR24{#ePM=#9fuHz=c8PwE79F$3{p4nihAo9nj4 z_4nDPV?libAe&?^L+s02zSGH>6D?dNEC_dG98~>V9 zc-`NiKTbP|7OG;^oinXM8TtcsfmE>SpP&0VKVX0vcfvsk$m8VVlEGZBb=*FcO5SK? z7IT~s2To%0o(W;Uz%0t~!|Csrt6Xy4KV;Xcg7){lf%9lvmIg8p_U9t&#R?)6x+M}P z+J)x+&*1$&`=2w1KSFpMlufQKs5!bV4?hHO5XO?y(yqR~MWC%GpMpXPTC}mwJ9z;e zOUCM%{Y*g62`7o$T}$=bx(FOJyWtmQZV4*#cQ>CqL=OIE$fsGjUzEaYthzQdoKO~r z$$#=hTDrQYM9ij7qtPEegrl`a!i%yExJi>JSfHh2?0#$=1T#6;C1*4r2*0I zkEArm8AoW&yUY0OVD;ib_A$iAYc(X1p#?WWpVit_HICQ{jnNd|Gz{I=#=Txe{12+J z&t%D904M1iha1gro@V-#B_pt2BwG@c1FJ3~s67cxT(0z=Z-CXj*s)16!%C5r6%{|( zNouH*y`#+G+Gg;7(3M7nnG*DLG^f+tA_>ILyZA9E#4?xy@iEEUV@(Ua1qQe5|Vk&UNx|H`yOcf;;4#&z^9D-$J4sckZF+^V=7! zF;@NeZ{O;_+C(4QH@_3co4@?$_th2l&K8%_gLm`VJa2q`s4UOEbZ;;t+UoHRbKfH& z5D%?j=GwJrXYY58biy#^yyZU^W`?$V19nb!6!X~rEYpweh(|Kl1Q#yrr{0F&b6UwK zA!S~O+qjZu${3yB{6=g1XD98{Ki% z<_r)Oc6Or+CG2)zOoUv~6|7JO(@h^fijdiD2S11#9_kp|B#q|pZyX@h3^{JkXl|!? z%aR&=BJ+n!So+x6=A--$Z;i(jb(3{A*)?&Xhc7&`Q6Go1OCPtpQAX=oCr@`xF$&SC z=Lx|cCb`tqNIhiy+}jru343Hh7813 z9FQr@+2hGXadw&BL?0cARS1+=g+2ef)R9#29d-C!Fy?bBhZrk&5Ae0%M#m_MST&uKe4 zRHxO7xUU1=E*^I?vubUZPv)N~8uxJ|8MASlXdfoDW~*uFe7F%ndX&<)V|aD`g1ODs zZQSIhJpYr~i@OZ-wP@3Sgu6%}bbD0hB6=xVEhcrUQ+BfPZl`F|0!b}tn3;*NtH!c) zZTu3y8jzXI)N|w6>F;VbTbyRw@);9Xmo^CAujDX}`*BX1j#cT?wlp|i8QPDNF><|m zJufN;52u?KlDbv?E$&+Cd%k0Fc0S3LTDMGKESsuCZbPZ2?(V_{2jk&R6RE(m;(7D| z%I1aB>IZ3yPw6Xf6ie`Gl7zf2~Vh+-e^iPyCVeIQ#5%x0)q!lhLoj%OY>pIGJ6K zP*+D9Q*lz{ku2wJ-Qa_7R8ot#|I*>`o3zKCjaqi}w!FA-I}=ofi!JKW6PmmO?U&Fjm4SCfP-%#D1{d& zK_|;jZm~0Q5?(AcDD~xMTVJ2I5qB9byj$#kQ8M_;$K}0{L~XM2`k|!BD>LPSnx9Fk za=jHHW+f|N%x?h(FETV*B4>#B#M#TgCSgg!#QP*BOuF1C>j>}&*M=JCd8hmz+OVkU z)fk84^JF5czWGPxTpjpxANaBzl?4kqgq$cgFRqU@j5o#nCWgvZd>{IMQoP4KjTt?u z`&9bXC5BMo6x4n>_4slx?DCykRcsv<`4$5!O0VT=@KzkPM#qJN(e8(7=($>L1yz|n ztDd{1U&9^SK7kq`OH-)BrSs^r@+JAdTM6#`z3nBY`^(RrVq>qcClt2~NTn4j*a9wz zKA(bkSNgz+_iJWYKip1aWNd=bRzooGcT(x0tGi>~=%u8P{c-L?Gkl&na_EOy!+e24I)6JBs)BVIq!$VdzBWcS?h|M>^JB4=Br3j;CO3!pPS} zF9oBVuCm%n-~Sb9#B6CadqzQi zQ>-|h@pY$~aH**k#>dp60X>RYApDkwwElo?N3Qko=2W=aMd4IzT`t!CVkX;6^=XmL zOC9>uVG4rjM=aX9RIke+39G zl_by%WR`i=nuIyYL@(JB-LN{}oeW-1#IwA=mwX#|dx-z`S&pvF_gQ>3Dn^rGB6As> zyz`yec!S;Jp%)-~W!Pcf+t_&BiQWADE-ReG(e}ky`Ta}Wq2Yw#HPzsk9j6BVRcX%! zy2qF8UxFB1C~@oZ${JkSV7^Cn5D4(wdIFea*7W^Yu`Qg>h60}t9VH2UCEQ91w2X&dwd|@+$ z<5{SiOXk|?8YWb&wvqabsUm*eOX@ME@&K^F*UJdy#w9gB5A(->(|@&>TOl`jB9ajNDz-r) zDMYSeSH5q7@FOY}{TK3_IFv?v`&iM5dq@b}$Zgi)+%bCQiizN_|0>*TK;g=-><>zCy^2@Pp~QZWzx_9IP@X+Uf}Bj^U~FgSp=R| zTS$&Y{KxX=-fk_lq$2)>3&06%*FTOJBFNW!F$sf=Az`HIKa<}IU zb-3Cdxzd~se69k(b`l>c!m=M6NH-yVX_O9$bx_>MkrlWCf=eNy|YwAaZ3?3PV6R?P$lgN^ELFBP!~6IbaSBTpSd z8ujTi$g!7LZ*<^JS;(pwIt!We30s{=JsqbzS-{_qBI2v_OCsrM~{Ew|-tg`r617zso4G`6k$feqKXP~~2QeL&H8E;qL5o(YFt zlB$mIyOP0Sn_p}yy2H&L$_ESO9Q*XxcPn>Mn@y3vw%~o&$_fw~sXNh)o~$m-TQNOm z`B_|$i_ehf4pmFL1&%BL2h0q(7LTtQyOO|F)UX{n3dv>d_}P(^y;m*&Rad74pEffv%8$RaNcpFI;X)+TBlTBukQR3 zJBgT`17p-P?;w|LGhu77?*@NV%@Dl0`+lcHzTDCFP#Z@6xK{&jrmL-?p&_Rf$(F`; z{knH$Fs5~2dnl>5_s)}Cks!_;^MfwcHq>|#D}6jbX@ zBjF(Ba*f3hr2>oS5EM;bI9U7Vy2xwV*3VZT2Q2#9vip6cx-+>`S{>c>ft1iMxSk-= zRXO1m^zRou@qF{zn)-zqpG|r%7ZLf8iJhB+K7Vx`PIgGMqYe_BAqPG*=gx&(KcV3s z_+u4+bltEnG6F634LbYX*$6F)0z;O|%c@w$!u&f$I!m2=0wvZ{TaS1-M*R-xNR3C# zCQ4@LI3?@Hly%Wk-vjlm5f@1m#7Ut4xO^VyKT&DoZaS-az$LN@uOEMi_n+ zx#gzYzV^Ej>0a&Tr?-%arLmu+0rtBZ_!?SREb8>RPOSHudMJ8ZL|oWuC=haFoKG3} zRF8#@2=q#u$|IVO01ZvEWw{=G%BPKH0m`YOVab6mKPoBQ;I$37__+Ts9>~Z%r z_5R9D>J|?GWn$AJVEwc=9DH_e$G{Y$PTG}Hxg~jPiVni<(zFh1&0C<+OO=~%Hz02N2R;$7Iln>wHcIB)5 zNA~We%BjqKuisz$Iw?eb%QIc~Ex6U!cEXWn?&LtCn()L9>@G*#xkM)0j_+wzV(O7)_j#tBVX6>`-nAGY9RF2pP~?Aj8y;pDA!*nL z%Mvau<|x`VHp&K?Vteq6oL7QuPPMC#CBnjYXL_rovSmGJpGn2}|9WO~JF>v%GhW@% z!n{@F6jx^4^o=WCbVPs5xO3^-ZsY8{HC>y#B{b(E5G1F%ormJ9LwtJl$r6B0V(4+k z`PPJOK0$D8)td!&s{f4n#2cAch%+H8WAZW9rGPWRk$-*=iKeyd-~ea}ApEH-Ibis1 zla#mpI2H(FfWSx`#nK9pi1!r)vs6A<$0&V_m4NpZm%4<1Sycw2mAbM6GFc(E5D4J2 zd{%E1I!k^-8ZlZrFKePLA&W`AWElm(>cuz}W|zjLM4W~rCeGY;P|MZVcDs!b#@7|Z zPi#!n`-zeH)YfpXqx#@WQY&wvAunBFcnD2{@2oT6xu5T$ozq^Xru&`z#S6gmTLS$Q zlKrJ81E`_jV@JAgoFH|i?U;g4^y zPj7pvtxed*ewdbjsuvVLfRA~S@nyR=I z9q>{iPPlTafH(hTCHD<@U*siP5X`tkhI-joRW%-kF zwXuzzGwvKa8pFoN76bEHHQ@G-N<9PE78Ry~UnD@W4yE*Up;JR>lDU~$Wyo@X+5Q9uNNZv)BaBl<-?dt#eJSzAc9cu^56avC(GHA zU*D7-v;7AX#0L4_Gl%y>L9im+K&Fz<$n*)FU6J} zCGXn4X-%pnNe##bi4bWu;WoyXK?rMIG=K@t0Cq@u>6H;E1Z$@YM zpNjttpZ2#(M`_g%VVmCBn)&&`X{I}O?o=I9NYyi;oNwDAa@3+7Ke1oEI&<(*7d%xQ za}`c7hSQrkawB`bHWmURiNWC71m9WAiH^s$;M_ZdPhJ23X>WS!Oq)a6edBXT>t9h( z2aAc$-oO`_HXIcU5-~WBp!Doh(v<&;eFB774oVffXbeKUUYOg%2VgpX-sN~?PD2As zD*=Fi-wpmL$t(?^u2$lbKkM>_CouXrtmFd_^fMh_S7o4TUo)usruk^Houh=)ROiZg zX}pxn9RLi!Cn_2l!oa@OD~bPY-~}uOj^lonoMEWQ3vF{i@pa+$-;jA;+>g57L+rb0 zPu>;*i_a{UxX_loFDxZB=I&!9_^^KPp1yK;ueDf2NdeU26k=Ug{}0590K@aMdGG5t zs)X%rZ>Hw>$eCl6rmY7mT?{!d{$KpJaw(^1U};XWpe?`BCScQ$7h>6qXq|a5^hWQ0 zL1HiBoaB*^D8;~{u4@jIZ+(}RluDvCsGTJEgl)Z;Xy)vEf2q>X)?Crx%{Hd+Yx?>PDg#gN{+8wxt-bpGJT0DHD-UNKNv~p za9O1Qs$YM#3U=Qdgam;|Uy$dK>=^>pcVOYQ@f^x?KpyJ@_;AvhyQ;C14iX~1OS)_E zr9UUZ#%iq+CTA{0I5c4~{_UsWa3N-NuxyeB4F|4s^4Zf9X;>I|f;u>V&Sm^L%C)T# z$Dg6;Micmq^k`;t&-=r%KTlF)Dl(ON7#QmY08~~@zp35xmh*7TW+iis3n2$d6nA*H zX;16y{gK)*-B(tfXggSqA}XMba-LXeqU<=G{45n{EC!0h{Wq*C$+pJ$<(t52F!X^h z9LHWlIfaf-{@WdGo}rJJXvxI4xCJz!N$Kn7$g8x^|MB9RcQ7$RZeEkH;zx7z<+xta zXd&J`nz{yV)9G`LJz&C_8-BEMn~4YZj~&ey4@=OQ?`C3L6&edF3T!!`4iet8dQ~MW z_3>{anyN8mk?mKD6tG1!Bfo`T`^m_v{k`5GHzq^QQIzQ*e}@g6+0GQ4X^ zHu7_nX+iJQT?j`)F${mBT86;dl_^Uy={yW$PzxIfFR*^BBe$%?vI{XLY|p1oJ9*j1 z_gV`cqvUtn@c=R(b|O$RU9c|d`AXbrrr3S|{5ff7f195~`&AJhQr$99Jy{~L*8pI< z39Gz?AI|mx(W#8lHqXkrq=5oi+4X(ftc7E$sYebubd(@1`kzJe-~f$}Zw?A3m$%$W zX5k6IT$FP5vuto%8tzE;{G2*uT`Jwm2_jEO7g1_ABM$nCLRFQ8?Wgi0-MW!@nKL#T zw%i231l-Q{b@B-(0~p~1af9qNVm~o)0IX&7c&aQ(CtC=}MCa;&+fD1~=GBkqQHzJ? zUx?RibR+IiU+ec0M|^?}8EOq@t#y29*}hwZg?%i|=}tRY)s zwHcF!(doOCTv=U1lwaB5QC*$lYU_%}oWEaszVT6S()v9F@nFH~FSi=ZZ0&ugsv1Sz z{hIM)S0>(jv94N%`2_I~E|VP*6>#isfg@P2Cw@zD^CB;;!EiO9^BDf)@W%-Nm&jUs z%I}yN@o;fDQ1pL z0GF~@3&CLT9-LavfYTKMxNyh zkaNdO1lmO=`5w=-x@n*EvV?8V_}?Ke!$z);!&R12XV0n*-54o)C`@Ivq>7rwH#iM3 zgB&Y|(yWxAN}%`SRCR6rACW`EdkgbdE4LW?N!^oGKEyc2j8_bt(3xckGw3ZjK z#&jQCpC|nEb_WC8UH=zKR)vR6a`*3$V&k$2NI`g^&oRT=@jLnFISPIKfE`gkqvI)E zyu)9=JuGiP+CROZ8MVJA->ap_vtoRa(XeU!-fNlk7)jFE9OmC9jYTx3jT{vsBK1?r zj)|V3W&0(Qo>ey_di3n1%gv%KrzuvIC?nn$&K6#`^ph7V=g&1Cr8X;*{>`9t3UZ41 zY-cZfTirb*^H8#k4c({Ns0G|0e6M?qZi z_QsOrGAw~o0kw9}O%W~7CY-w^b=?%7KEf+zl0`hgE)u$z;o1XkPBBWQ?g<4p(E*y4 z9CMPweM6G;Ba#fe5EVi+uGlcU|9lZ;CbBr!a90^~oFZZTnmrUF)<{IDj%^STIxt8@N_LwGE68h?hjr#(E z8v;!h$>b~bS~xodk36P^3Bh(O(3b0lTk-&K|8ARBw0J9%{S@8g_i}nrc~WH1keN`P z)v+MCi8rDr_x)}t;}#EX=k|4bPv-sWxf(e=qXe)G;>3)EZQxJLPt}0m<6hMCx$*kh zoF{0O$Tb_nul1_A%xL423FcE>2Tkxu7~kE8h2Hf5Z2a_g73%K0kBgy+@* zWkgz483ZZY&StNhHEr(x#<9D%JI&>U{9Ulyqx?iY*Hya)IFH);=bVlfktphR2XkxB z?Tta*tVFpE&)~haPxQXeJ~(=C>qiqN*3^PfPBoeu_AWa7oGWag^dmUJZ=MJU7>7JEc9l>r8N% zwW9%&QGvp8SvPa~_=gv1R!kKl<2>aB%1`747o*~TH38eyB7nBvBaZp^W#wFNvQCHUle#3go`6mNhNHcLd)%@#5}ax_2kgHM8WP=!9mm+l zAE~j=75#a9^$@^ro~U)x9%;2YRrz(YHabObited}qJO-{YN%QLv_VdZmBm8OF*m>qX#Pl5+WOiGIL^x- z|5{QnTtw;-k1pLtJjOR|;ew;XZWw2j^8tG^Nfu<-WfxjvEbGq8~IKNO!$-HSU?`XtN*=qJcDDvi$%)66s&o0l^-s;hyjv*?$?fpgG z+r%){bx)2YKdIY>j1`~lDe{w6CQPX+O-Kd#-Ru8-$*293sw-j`C_#H^~H`CgM8%HxEv6 z>#1Q7Q&qgSQ>Q4<|&|I5E|lAG>r(8(U1v0^UQl40_kY`VYpYv}^Irh#A%DDEjp z)p39}JK#@^PDpU;$2S|jrCFnB&{Si1SKEHWD;Qe-hD zY}AAfNt3hZ1h9OmVNQNmYNyk8IkYAVxn{XX#Ryfm%Oy)E8zNKdHQ(T%7by2vdeaAY{7b|3x)P!9(s=A&8uVR&b1a&&sLhc5a;kZwFT z3r(5rHFozQ{|RR;c?t#r5s~ik%ZRMhg|_?(tkgmTM3HF6gR&4768byy;X1heo^9J7 zKsAgl+P&e$!f5C@U-H@1Y9L=pXf$lHF}XOhC)>$g2v|Yuy>F?2TG;hnhl~@9WK*IQ z1(5m7AE(^nxr{4++qp@S(Im04y^ae2H} zSSntU2QVK1xw=vtbEKblD4ndfDCf#($rG=7VxRNVS0oCKWGmi?{@gt+F|)x_(Q^_m zt8ft1awu0Ja#$kuK)%8Q;Ep}-iOPnF(R*o0%EYLW6&{vGp6(MkF|Wk6020Ow$Vt7b zSHa33_UVf@KQl`k=_uD6jiTa@ci6Vv-1dppb{gXUenZ%7Skw~>=L$-4bGHhCh+^Yn z0ktU;p9kpN)IrTX82Ls=OT*Uv&%^9H^HD`h+}^uhMUyi*1_C$E=90ou5kQPq?w`4ZmmT#=SI(^PIQR2?+o@~*3cplfBrm;KauXsqi(11r`_X( z@wB(?E?>(aWrkc!1Mb%uwO67qXE3}jzf7XlIkMHpm3%Pn63sY8+ z&4Nm+RKbQtrXPxYVmrGlo@^TeT00}_qrW9ff%?wOpH|>l&@_OO)V*?IY{0C2T*@HY z1U?%c7U17AM4ha{x!o{i4Y|CpMQvtKrxL+EYa%LFo=8 z)uyzyjQLht%yQ-)x^`q}8-Rz*eisi8jJ+LksL^u%>tT9PzxNu7*)&2IjeTsZDpwN; zV4elb?@tAM85x(hhW&m4;}9a!YY%#nhC5s+*)6zlggS+{MG~&R8xBzZ*9;LJQRcwa zr?^)xz>fYfe0ewYjC+0W+!>_H`v*X6jg1;Q&VS3`^c}5#@SXxr!(2ecp;WsV9m0^s zqTmEE&2SgtTleO}sWRBgu%$drm$xay{?7lSrmS_ULA=@VWLHOtUzDKBG!#a<@bH#4 z6at_6qMVO4A9#gcu+&o%qX4boH@uq=FGsCaKlWx4Jh@>oV`T6XlT6ie}Q} zOrclv%=+|BNPU_U{Dyz64WPJo%f-a<4?Xnz&h{q*88<9&rx&Wvub$E~qz;Cg zc5Hh$L0LoW;~zoTsSc~q?uS(<2DyF{RRINCSKXZ4#n?{)SAbq>A!xJ1tKJJW3|?|x zWLP>n9YHoq_Fj%{y{bL)(|-d`MTm%k7LvY@-6SsJ>RE8L^k)OphRoM_FrqXR6V1(0 zgrGWs*sXM1{wl798&|~`)~+|;#H(K7{)l4mv*V*!mOHe~xrV0~O{WfSEOdRT+1zVkh zW&&tWp6VZS^dx4*sKXf&+&}*Ku)lx1+!-kjLtMUdGtbPIHVC_A(}5Iy2Jv~KJoh^% z%|}w#cYB(lh_p9Id^E|I9WfySR+s+{K8rHV88kNa2a@IjRLhWM!Jc-d;GV@#UnncDNKYX*@`-JKOHDY2 zzY$`0V~^%s=+mg(4GrgYQ(DM^SE-Vch&T&SLm)MLS z8fK;AS(lI4SQ$>LD;@kZ5}w(f%RjvKfU@=*_R7&{!1YPCm~i^MR5IOj5^m!NeZQmn z3ZZ=kmcGF0{%<_3HWcOC$E6o(N(&p z@%J8#S~`LLn+>f+5{P%}^g+F3a+GpOLUm`K8=?Xt;{lhH#zdr`-{FvjlzcXfKezj3NnaO2K zGxO=v_o?;A2K;b-sjsU`^C2KLV7G%yALj2BsOzb4@{19W9T5{UKAu@DCr>@5_}OLc zutxQ4`bgWO5w+ukD40X^EA{B+T-oIC8svNUhh+Xz@saO3c4cp)#w8v*Ciz`kzgL$I zJ8mMV)i8O9Hd40ACL#?Q-c3jyJm`Cq{9xy>Su|<8wne7VnlPzr8i8snbJ?;Bi~?{S zJ2$`vWh=1dmb!EhG+=;*gB!qqn1V!lK;|)!*beErd-`2grIbs^ik{)Vmt)AmK6RA>{YqR@WFMDdOs3%P#I-y0)U#c^N0YM=4^$% zHJEz6BrL*Z(B7eoVqPzjOQKJDA@1tB8nx{5ft$aw&LM?o4seFaa&mem$ba+QO2cq0 z_HlV*Znm0JqV8|HM3&m;tLuxgSdgQaRP~HB(2PyObF1H&KmBS}q-FWk^1gM4I66xA zCQl0KUPaW-!SbWdt}$P<2+CI4Ai5WH;yGAV|2AsV4LwO{Uxs~k$Zt>z2}Tn1nb;mchiVJgltnrPe8VXBc-z6cBzF?kovcT$(1Ah0g|a%-&)L9*#lQE zy!E;$@=4x`kMD*ufB7;S_Z+X<1fzRBs=EPfzmdw;NVJqVdQz${A|+L|zaC@cbKhH)kYq|q3UfR8n(SgT8x($IXQdGkV12P-A+#2hKAL%KeX zG^;Y)4(<)pVN^SXC5bS+Bc(a?;762hNvbDp?_RR&1dKN^;8Pvfj$f-EaHcwwGo-N! zW|GH?zuO-&< zyZPJum;Xp*P?bqQB}UU7@yC?)T)dQL zOzGo-6nM~F`>y!f1Pkt4iR0+HKM8VTrjA4#w}zbWuS)I?8ku;9m%+AJoXC6u8<*63 zCY5=U7a$#yve`e8;`fr>P3Eji4ZM_dUrQTgi9L9Mz2$!#CsWD3H8sXPGOB!dwNphi zat{?0S}?pR4jD~5j!TiEXYE=)Fg;;3YW);}aJa-UEZ^7pA0ukWu$o<#Gss(_7Cxc6 zc;IFubIE6loEgO(@(g?9S4qaO1$-*#x9+H_rGs940=B0|#d95}x{j+KZwvq*QFdDK z_|&!OTK07mP!%F%RM8`=8n~1BlBjfc#B@mACR2E?I=lH{&dk8^hpwIe3bU@Qa(pX$ zWUT3^H_OB0K&MXarysf~);+t9Z5C1<5{a-N#s}@UY<; zb&=2$PRIJStjdI(0am2nnfVm4d~+RN|jYW^l!x9_(3aXK5*THASeBt214sFd4O@YH3}+3?d@Jc5k7e_bXxlt3@x zt!%p@Z_@ZefZ}s>;mJ%;|AH1!;JA;U8zFgeo=KnCm=0TJ*a0~;@Q0U);%=_W+ebId z?x@6!A9WXIp0|f|VOoacQCxKloG=^t=aAdUP0KjUYUx3Ys%DkrEWaL9bDL#=%4Bd z*3E}dWm5NS7_-`J*Ul9(ea;-dp1n3!X2)Vu>$wmn+K{G)GWFZ);@@7!r>4mJmRNQ$ z8CE*=MyV?h>oo(*!-=wl45TKO&U|a}N+(b876TT8^pPAZy-E45=M2#}diWFz_2evU zm_MLbq=pS|ZU6mcmcGJdJESD9P^9Q_yvMACISR_(bF{(;>i@9QT)Iy?R<3n)#|kK+zUlU#T$>gR>t}bnz-~Ry)Ig~_Ib2=6qD8HV_z_2x5ledMS$E;XzODX z{l*GobhLP%kfmxSRgZ_6rPN74FC29?0_jbSl=?~Ilg+7btb$9!c`Tl_$vpC~BG?WT zpz2?zD!`XUQM`bdf?q)aM+W5^x)%&cGLJxwBYHp8k1OugNi)m@h|Mg<&fr_k|9^=o zqV-_c3US~tcu}gz)G^W97{u>=XoC%(pI0b9++fo`60Y0MLF^nj&^a7n{qPW=g92^3 z+}`J#4vTxDGyQznvUd{!=|@koewy}lKwq)k>_^A9_sJb(K>$@7_IG`vtKDYOh+HhS zCLKTSkc*IxFLHcXS7Q*}l^t^5u4tnDo36iLw~(1;F~X+-^voAN`$D)i}ahnty@|*He2sco7cge@(bBDQspz( zHE9FexOEn;4dlM-5Q=V}OQ~iu=AN7;@rD_;RRtk@jvY&N7CQ2dtVWArV94UBIZgG( z9#e8{eI#w2O!=baoi{&Q4D0MPe3QLE9YJ7ZOW~ggg%LMf^apHrU{-TgEc|Lee*9?K z-<<2hU>ZS_BAzIx+EXSOQhU6b`d)odNnUbokD2)t`u^uH3J^0_aKKjI`l zpanO27Ic$=gKL;C<>LdB_MZbn5Vt39dDQ=_1*)0@GNm-16_iPs-Zy^q3oxPtNVTp@ zw0rmJRswOzzuAr`e)Vji7PTiyddNLxS+xE)P|PW2ACs^-PeL`eV=$36DL$c$ zoD$v*Z;IOEypN3KDP30Z8tI}d5X4ZL03c&fR^SP~vbJwocnA5-QxKVokf*aPHHd0soz>VE)?D-DWfwclPE z+vMkNzcME5*g2LhHd%kIoLr6Op{ss7wsPgFHa0I;nt1&b?zr-7U;N0nsl7@KzdB?T zM1++?wZmG<-@K2wTD40cpCJjO5Yp`b!35+>F>w-)+!_djWAOJ~mcaZ1_kYN;!XU;0 z8BDNV_2iuqgzKQTT!T%)$gouZuMu3eq2x&fkWU)xVe=lK!LNJ67D&M7erXJB9DFeA zf2M!^8$)9OFiSx53V~&6{xYqOr6W?(8z>5dzbn59LH^8qVAD4uAm$QU^OG-CD@svY zM-WCrLYtDmyn1x>{K933>W5TrW}7JU9(NESs+W#ej>d?+wP@0OAKwJN5)(j2wvLuh z8J7XDjw#wJH_oa~v_7x5ST^eaLmM32+QFQ6^j``XRDrLj$+LMoNQC0GQvwg=cBGCk z)WNu~&+B<~0V`RhK?&Cr{^HOiy55}L+Yi6Ked8iiz*xn(5r5R87?x)RL8C1@1 zug;Kd`dT6U8U$Xjs9v|i^96bd;FBiNwINiIVhNj{+0i;Jg z-{r>pxd&PROCK0`7G+g9nBW1x+Rb1(gxNZ|ZYWeSZ@D%*>3y;r zwb8KY02A~3Ra~LVi}$IW9k3?@T}e!ySa&+$cv1&5_#I6DKp_lU=7jDNlEd+Np5sf) zFIqCZbekr!c^%?VPAh3p!O3lH(&9p{73bpf&x*^9?N}Kgv_6Mq0^d0CvYj%OXTB&1 z7A@R`yVqWVocX>USVYk^**aAV>O}o0ckvyoESx{q&`&$t8N{h<$hK-kUz}`y8VTnI z>V6EiyrNaPqOi)e1ircq(!>Nk%Z~&)__gG4*lQ28Iku0K;_|I_3_oiLH%~lhnxIiJ z%%3I#iN0ohM45Ues&kOs`0x|KgX$~S z4Sx}TJkq6p)1GEG;YL?EK7CZSYKF}Mx(#N00i<-gtx+=7-OJMCH+0Pwdn}+3F}p-b8g>LF)KrpzF%b zrKM`{FpUy`kbIViUbBI{Q$HZl96qMcK4PC>4$hQ)OKDzw-%^pav25+pQx(LDujE7I zb&sZkAv*?uYnf4X`8*s)SJ?|G&s7Eo1|<$3&5!7%rO|i_eIBCM!9&D+#y@xq0~Q-gFfK_^%*^6*(BXZM}5 zyi~<{b#TdW$V%z|*~qHL!%rPz?w_>di`D}(1_rex^6T3_bZK%XB_7b2nxsjw}lx*kra+ph4qbqI-$!LbvNEmh4@Y%UJTqMT)D9W5{&$ ziEVff;DP>g*FK$N|NW!57ZU++6@r@aXan3Af-+TAQ~N&I(P0GFkGLvXV+eugm^iCF zI+b;v-jw0G{RuJdAZjRNgH0H*rS7ig8)$F3T$1A{N{F~)m83BuPzqf5qMTq)d-1fx zM6`MMKv|P6Z|+TMRm~-RW?lv3Ja=zEcJBZ8f#s{6_^pxGTK^r+h1-3R#ez9573}W4 zq4gkgnBG}P!S3*la45R0$F>={{l6^$E!n;-&q>a8Hm59>zaGesM?px?@b;|#kFvLb zih66`zd=ex1cNRUl@ySWR1r{8Vu+zZYUu6(K}3-dkxpr5=x#&=q$P$f8FJ_tVyJhI zp7T7v_aAG$?^?&T&N;%&_q+4n_r9;s^%7qz`e#$4;eroH3W02~(6zlsg_mpIe#L36 zbRtYuCC^8KpHbm|!3y?ODuDnA0u(y~7JY4*2x?azkA+bnhmMD>ogb_T*j2dUD}K3! zt1|&FFz0Dml_JvOk?ZncWinQ#)Uc2w4@!k#rJ##s&`e==&$TqKI@ONdF2hZil|rYg z#4pw6WBN_qzESi>=?_(j>z)Yf9-i05DxW`JFji8^o=(bT`0Mos%h59?DUkU0ufZD4 zhJ0RhC7aky^Ys2IAul^Yc179EwDmLHiQH+ zNe#KaF&p>+W7GeYd$)j;8lg-i?kRah|o#v+SlHB z*mw;Eh^ybPf#TJoZF1qdObZi61@~9tmkRRFO&{xmgthRoI{dcr%!>KosqEy1o4+v& zmAfYIIcl~p)iK1o1r_gqAG%9LO&&8{*kQ3#SmYEar&dc?ze(1&Nx{jb`kM z1XX;2!<~afT0c{EW}$efJPj_B93sq&2A)N6gAtgi?W0dd9OFH7c1#mem%h4~cPcS# z`Oy1_DN&T%r&UT{(E3!GIekO;yj`lq;;=V)jKUiVaydKSg(B=0ZQa-PAhUh8&3Z3v zb;##7!gBREzr&M~*okxiYmk*REZ~I?_-p5X%oYmJC`1)ukRQ6)BC(@m5Wim!f4<|T!8 z+qd8%A0_c*vhJA3Xge~~PNcP@1Zu1C&Q*5V1*fNtt9G?6E#p2@nAB=?XF3ir+`i_> zfBl(zV))q|9VoiOzPmC1n(eV}STNUNp51uwv6F^xiW3c@cY}g_&>W|ErdhIq-9d?O zEDGJMGirAPHZ{HOCtCstr&Bf+T{SP zlhm3i28Ce`AFXauHNKTL1jtKyXz{Dwe3Z6Z^6UIh1xUEs?BLn4t_y#KsA02r4uqEN zOvfijR?xq7ZLl!T2KUC-Z){;i$%Tj*`*Z@HTBDME4`Fbly8@}h3X*0vSHlysJO~{B`=bBy7(HAa9_H-`1H-)@xZrD?;CSZITc0xQzYNY#xU{x)@rZ05_;p* zUWGohYMmp&{n<%xCn5S!AUX==SX%P1z@(f9Sq3|7@8nJZBkutDxR`c9BKNexvu1Tg zBc-_NAQ3ga=z8+?T*A-RPc((=PV;?s8<>On%x2mRR8zT8*Q408cXHR}CwS&rxZdVG zD}c5@6|K;rRXw0Q9v9))&G*$n8AP><=Z0?U%%mZI_p;vPP@FUz+YRJ7%anM1+j!9P z^o?Pul+hcU&S4<#SJLrY7<_Jou(9{Ss2zF_Cax%>5{YI>H*Dj>3g0bQb!8^aO%Tsv ztCw+=ZHJfg%MH0;Iw#U(YWIbO8yH>B2xF$wqBE0uCG|Tju~zHr5DZ&Jdi`pk!l$eI3P zz9+H`tBw%XY%F6n%y&n8W-m#u0$ z2b4FZxefBvuM3w@OuyB?uxzxu zYZH%6a=_9%2{W0>eA(7W845(3(Mqz2Z@>$g(q+i)a&V3CGh;|L(4im#XIhzs-He9= z#g~}$Y{uq(A-Mhf$0*g+YK~7$A=w!V5ng3fv*&ojF6L2`z1ApY0F~U;;T@ZD6iAIo z*lGr{H=`GY2)5Z{QXh zT03O8q6ds6?Ub}J;AF`afb;Mwdodx53dM&5YU(d3@XVjz($KY>(f8kQ@oIpy0q!Tl zh4=(XzqammwJOz0NZ$LG3v}FKv6WE#4gz3338Y>~zJ9BLF*?>2GM%*h_5dP`k1WC_ zhC#?QNYKii*h(0+%ik=Vq{MVNNRw1=`+%kVzRonUmRH`!a4;>|U%?Ofc8Am5s0ip2 z7?X2*0{Xf~`OBgPjMns{5zYb7QO^}`NVb50D(AyRa`KNvs%V9WxF0|3g_eLK$nMvp&}(Hw>lzQaRyB?t&S-dH?=LQj&svGFay^qK*5a?^v&-vkPHy_Szw zIk6S04hPjhzfgT4iSJW<%Wgiv(J4tP=I$9F-ww`-l(IDuJb3URGuhnKv=1~3!L8f3 zm#6AQKhpAWm+Cn?Ke}?|%G63T&^wY2Dz#kPo*B@XWpOv8`z-OgzMX&9FjE(CKg`k(O`?CbN$3ZQ*jL+G7XMx5{wiX5eeFbUjC|F zhP>qN)WZT^WA+(2Y~2>dh5klB>62<_?$x;)( z;^%K0+VxRJBMTuY5YtN}@5roZhi~-Jg~XF&;M&dqM-0za%AKs$RgIxwVZA$IEx`iX z8v2k!;7_3pO?4qYD5nomgkz&3TMr6KPP97FAR#u=HN5N$Y)WAnl(u*6|2vu!$7IOW z^NlMz_S9Tjz=uGMyT?Qr`K@V^@Oe5^^zkWv@Vxsq``AQC2~AKtHHVeRGgEwnbt(mX zaJm2X|IOB5>61r-8Yj^DKG+aCB8}z~!%+z)K=tIk+Ehm@7$hnJbIE}Bo`xGRe&lmE z1O7|*HDcK3Qq7Oq^;Rd8RQ(JGhGKff)-pR*D`g4*Ayi%@ZirO(=CyK5;}X6N!}n+vJ(*ulk6-I); zWQL|dF1^V;b&#H|17qi*^~l4@A*|ePPI!$#YhQZVrO`Fl3&!|m;6}gW3$UhPv%{x% ziy3JqMd}4MKM&)IFpEol;kQgz%l ze*O9v?Y2C@KZos#41fHzr$}X0Xctzrls5CC7q-8VE*qW&){fV&UqAFcJ?2}{_1UNF=}>{=h#>=I#Mgn7J|>+lNKll|#9 zAv>1k<>l3>`UF}7Z+yLevgYQG*dnX|30l@%;ZxRSFO7~Ie?OMr&3&S z_&f2QURjMDz|h76g7EP0eEH-BXR}*{y3VXes^M2KtX)NHK0mpBn&3J#@yw(co*G&_ zCweGpv;|;luIh-!S8{t)xlaQ;OzS-_n(LCR{Z;pd%jsV_=fC(|GJwb8!-dQI-AE-n z0R7&(NFEX>`5!dCL)?kY`)M1`)#LA<*+zUAo#z0k%al zL4yzAkah|sDtY0j&1ILZjB9!;j1(t(7B{jhH;3+0Itia#AJD8*cvJc*`)INqK$Ua> z%s8t&T|Vk)B;{1;%|K-V$xX2)qtczx_xEzIQGFlG>~-MdC*+)p0pMt@h5F*vA2RPA zt!p29@TV^-+WJaZqzD17eu=jv9N=l@%_Brpf;QF;rqHGp%R%9>2fnOEUbBL(+$u-m z0C&}G$1^vRBL5;>QX7?x&%Wer?eZoy;5GED({U}%V8I7c*X+TP+p=MwA|uscNsP8t zZ@{0ggPz$+N$2c{^I9K!blr0B$s#8w2Wgp1T%|_2;+EGkKrb1vYCY@4tpR4PRBw*! zas0_WoA1VPrDsAzDWlRUq|Eq#4ND45H+fF}zaZV2%=>uO_%#~4KXkd5Y?pit|NoDS z$LtT+DTOQ-Q)VR*q^i8Q&hItd0a&!#{aL-a1{`>1e5dyVL6eDWaGda#33~q7Ku4Bk(V8yKxCMoxVEGS zQ6GB$D)p4C!Erh+?)+k`IN_tMZ4T#1IUp#yQt8Wx_Xm(#iQYo6fpzFPb^pFq zi*)Dc+}!KKS!~ef;xv<1$JesY41V{Hrh0te zNyvofRJ3$@J}*zFy2rX2-}a{LTGwP_EC616qU_pAt}%YNcsbj~U5)g)8ykRng>HH2 zuJ>X_e9}bEZLWuH2!DZpE_V?9`Lojz$(gseY%9SmD2o4_FBR!ItW5e$BW#KC^I+T) zw2v->R>{K*aK9Z6vFMMP4$DUmoA~n8y=1i(Oqf6FM|nvd)#Y|A5^+z37f5_$-}YFt z)PbL}N{S05f%f95Y^aRIH&ye1+w5+!#$(fikw3;7!Unj7#wGTR=f5fkgyD(fA1*ab zugijY6TKntrargxv=?_`aiZ-kkrI?_@7pbyD;`=6ae}3@b1+x!rMx^ENZe;}D}_Az=0Ky~l`NhB9Bg=<78JI(x3#M5Z%%vf zP`Eom8M*pe5ynWB0H2p;`hs3+;SSoRZ>&S6yMOPh;n{G&NCV)}5rZ|Y-k?Cy2#8Iq z>e23SiIN(3kFNtS-;@>!3ljtUcTA%ZIxOrO-p@fieeBv5^&kpqfxGfb)`kGu`5bi- zU0P2r&)jD1+iG&pH2Y~Ety0ir&l+=E>E;px>?p_{7&TPo-MN?)c*(9mDC(Y&)64XA zKyixDj5V-@vwv3h6RPlO0X8EFGWr@0YNj_&FTN98mxlFdv*_$xCa83+O8i~y11v_0 zmyh`F-kWqZ!1X2s!zGsJr~fn5u<;cOS(P*;Zu8z@*0`h#{L>`ak!t{L`=&Py1R7hz znT5`SOIAAAr+M0)qY$JSw&ph8yVPMZE;!126&7TzANJl*oPZ90ADCla}2jSq``nV}(B zj64O zyp*?OZ@vK^lOtqc6TF>Q<_2cNG~In^zdZjFs8jho2{t07TPq%VKEhZhB3A@2x@%Hv z?(C!I<5Ko-(ft8OfB5M~BSXEDm8r1#IvNoA2H3te^x3uX<^~V0?)x_^!VQoi=vr_0 zw|QtxJ`r!>z?X(Sx4cb6%ld0m_us>jUEi!=DHP(IZ_!tthi!e)1oQz(O7}=eNHS%< z^qZ?oc6=c&`Zt>ODx*{SIQgg*It&{I;n`0UpI?Y_r#+4GVtgF$GB@=nj^__MmuGh? zkMb3^xBkksNB%oV$^{d9sFoJE=-O=k3gX%Kh`U<=Sp1&hhqVZ!4`+70lFLP{&~EQg z$WJ;%Xno(1_CJsJeBOdL365b19Xe4%cSo1%TVAzhx=9!Lz_u=l_n)wnD$2zAYM#J} z08$ZaMv~FCpJ)0)+3J=x1j0Emh7UL%&$VfRpGBoW$hB>#*nB=ATD6L?Xh$x7TI2Jt!H3NHM_&AsukhogL&08Q zoeD7t6kb*c)$n~I0VQ^1cm;M~oGwWAKQX>&h}ww7ZoV1z4N|jzW|sv#1 zisVZ19V!rXOoiuA# zqt?PqmkWstz`5j64=P=H5+?}o$@TOR!_SrX>H|PFX+RvI2)WmyntI!hk~^s#@1BHu zc_^QC_KbXw{57a%_U7HrMJNS>z5|D3f|CO&oCE@Dooy$LY=KWLtuIIUL0DrML|1BH ze5+Qgf}#c?$C5N*3ElUaPXj5Y6&4TAlV6(0fo=I3)okAhjWD@zRNS}at{;e=H07*m zoq29C<({aV``M2!faXvkTFSngc|Uo8ECc88;TK6s@&dlVzbpO-aM!NO&fzex4F<&# z6o6=jH`X|TUU4oM{tReZ2oY_TlX+vUNC^c?(O~L(LXpV{%f%-Pv^1LsWBZ7lx89N` zQ|$W)jiuf0{q4h?+(kL}h#&Y97>vMYGZ*p#b{4wzzF`kF0NCspS%RT+YG|gsF)Q3z z!$N;+J>dcD%s9)n#$TRszv7Zsx_@(3ezPzLU+_*ETOsbr|XF#N#IVf2$)_?@HgIWqvXfluLVeY&fzzSuLJGdk&GVZM{dFn{eV}x?;Q6W{Rx*B zKCOqT0@7lZJz$3Czz<1 zvs5x=tBG3JxXit%Zgx(nlC`#s6=F;J^+?`*arFKF5c=H?j63On_h9 zwW70l)t9@4Pmgu&wB6aGb~6i{9li(n*0lnf9YGg^v*gO?~>Qret}j(6~rSp<&|_ zfJOsbIt_VP-Ys#V$fvxM=j{(-w1>g*$NH=m&rZ9Xku(F0mtJ;?cg8uj|3lZ+oyZYg z>0OHH7G z77Yl^z=tFrl3nrnQxf#+?m6HM1A=1X_0tx>B$Wln9uOEEs2&x`#W)=L-$oM9T_2$E z`NvGR5Yp*$|yAMCiZx+D)JPAR#PgO$cErSuCeUz`dpJf%e zug2omTbwf46zQ{J2pDIaVm0qbf;4$ERFqjT5-s^VFqeWq2`rchmwxH^TIPa2YM{3n z!=;~VRF2?9@nvlEV!(b%X)zKA;D#K^Hh@Q$0(jc=^yA@#eM#DIN3~oRQR#|||3Pc@ z%m-(=c$DSOy^H|74HtnCVR?0xiW^SW%}jA(Z`Q@Uz$XSAHTbqmV*6dME3Q0u66A^8 z{5H1w^6~d;E2l)?02%qKRsE3dd@}@yr$<}LZF>4sHHd*}(wuv1+{Mht0LzF!7y=KM z`K;TuH)w;;G5FT9rfle`*L6+qo;!B+W(E*fvM1me556@EctT|k@n*@BFNAawF%wQq zIf#Kluyq>7iti9cLAdx{c4u8|QugkI!vD@_E$G^d;@Ssvd2Ry(Ph+V#lgAExPHSFx ztTNzFo}`Ixq29D~jqWo}rjKod5o&Rj!Dnjtb7TEn`s;-;x0hluavE^K;R^bvr6LrE zCxbMVy~Uyv;%!N{AaUz|*tfofsaEP%_*3Pl+o=;fxY6XmtVOx=!`>UR_+2qAZFe97 zlo|Ce>7Zb~Q|EQXK_=~9jDR4;5Lt0+wU$rl5R))l2Ft!%f`Y<}FVLwBH^7_Ke?>?$+{rS$n|xeNH@d z^V@GtHXuwf)deKO&d=9Y=!cJu@r-`M=7Q_OV{sp@9lwo2uf&QV9yBE zJBqe?Y6TAXHPj?;nQudX@uo>{SpgJ14aJWy`gICcw?^)iJ&p6RH1JQilBVIYqDy00 zNqDkAO%t01_QeqkI@LmV?GxzlmT>Y!SnYptpCtvzvIo*qkQMHSZUefnnh0I-mUM?; zrj@{ik12to}kIsCvAFbWXu4mRs%cR|1wLr@c zro4#EBlF2Py^OhxYlizmlVFXI>sDE|rP5V3(|G#Yv{O8PiEciLw%*%(be9Gi-Fv7n zKQy1d2$P)8Y(iB((kUQW!4tDnk|d)&xo&b$%c>Nui%gpKMp1De4sqd~DRZtPx88M; z_HY&Q@qs&#qN0cW{r#Xsr{I+c{`$o9C;M;Qn3e%whJ!LVq#~8<(92j>8lE%Fl<_6j z$+(-LUfYvRrY)U-vx#@$0*;LCh-q~tbGAP2x(7VAxRAA%WRG11!;~Vp+*8NP!MX8w z+B-ck89H$MwH=C`Aj_4pXaXqst7(ndkK)3;JKFj9;a+2X;hjx8r$1+9E7DG+pTl*EwcFuv|SW5-*zY ziA_RA(qFJ;(gV#3f<(SBq1Q|b!&L=v8oG2~Ey5rGdv0iW19+rRgWUGiPpxTNZIF-w z;HItW!oGMS#v@{G(c&w9Mv9&>&}5z1wh%!4zX=xt1N33uOS_WoQm}ny0MMw3)zt5O zH66NLx|1+EaO97c%NAYMb2YwgHCr)I zr*w(ZxiuP@3iW*KJJgk5 zXSb8YHy??#X~q8v(p-;;8LhthU0}KnZ(K@6ZJHPaF&NFM&tg>{hIm(64zK~mRgOWU z1kfI@XEzPFX&`^rAYiJrVF`N2?z?qI$U79@D-~e^U&cj3&?`jp2lm6tQB&bVZy`Gi zcPaY-;Ba04^j6S-GQ_04@Al%w ziQn;5)>)u`d4W?;UT?hT6qyH0A z@%3xGq8dcfYfDzIx^dZ8pubI1+SAk%A_StsfxL@5P%RhQ= z&w-X9z6*nv+t zw%f1s<1#yA-fXBJD$l00qASnxp{+XezxOOvn`QCp`FyGd;|K#=!O2iIQPBi&BM}*` z!AEWE?k;@u=1tQfagXiSxd*>M-7Ew06ZWh#LF><5N5jA8(v_NAaE;dHxc^JyPj%V!|dEKvNK$NSHf$}4>?1WgXC`|V_0e->XI-_mD^jv;e(9os!{ zZ*^Yf+D|>OL_SwEO#Ci`)Ds}h3JeScC%KCk>-eM6K?xt%cUOVxyh_k__-=Uj_D`-r zvNTu*NvEW<5UNq8ZyAH^jg>f8iD|>+V@z%${JU+lmDClYRy!lx{+>I1^>77=tq*MP z2mc0l=)-O7+j8F!rih}VqN*`1*3cEv<=KFNF+kzlDum<$bXuHO<7n&rnL9H`BV7yWaYOj+gVF{QKy{Ng#>g_$ zU{}d+v(6Upylxe@w{BuLGqev!mXxfxwB%okbxhGQowaRX(V=OZ_8t54CpO6Z(0WSX zFAQ;B&d%U39uc0oXR6zX^^1V$G2x?msx*fFb1GcP1GA!`8bnBn@2_bFJ^kAfh^?9s z4mgI=g(lpkL+H-T?pw7w4@EZsFxSO)WjoV*P#kIS7@v~wgX|1(`HH|?#TlpBa6jv% zL$`;f02|CSr3dpcgBe$kpVP&zW^;O-SzgZ5)2-tyc_}YK*%&NTxct;T-Av(N_~>}Q z;%3(J`lDI)b5bxhp_&Vp4sAT{)h=|NcXyKO+w%Dw?im0tlf==+0LpbbjrC%r$VU7Z zHQCss@D;>s1043`oIjm=GtsKSiF{O4AeFCT1NL?velXCt&RmbYLDO88g-UyevW7!^ z%y!dXSgzopMF`DLDFBtn@xh|sKX33(e@`O8jT%MT&tc3D+kFYACE!lEe%I`+#+QbY z+Fyk6l-iWC(3YCddtcn%0nifGgl-v&=O=vQK{A8cuJ!M%f#Yk^J4MbN&-yHzs=dr= z-IIyMiIYYb-J@;I5oV0gM}5ty)})ktqp=CaOLe~q32eQ5d4KbE6T}|RGRaKsixF@g z>34uE99QYtry|b-GE!g;kpntaslk6m#-3X|b7E)CcB;_p&YtEc*Pp`agf@32wxD@#qMTLoV4InkJt-!cLg%cj(A0rsnHDuz~N+A?2N?Cw>bH$ z8ml=VIaZ%E&*MiTV1j;u`W}>JTZ~jN3N`Sin2D1{>AVA^(+KxJ_n3x)r5}gLJaT@@muF52$kxldQTpUgZk~%rZw!XyIZfA_6_0+OQ+vkrsd|-|DnFdpOA^{`<@F z_I5?6?LbuCm*)ju^NhAWzPx%e`b1AG>Mi&_&jt^RCeX=R)GzUkyD;~ZH zuU?jfp+YlW(xP4qf&T<);q9} z?1px(!o3%4r{X6f0T9TUjxRZ9Va;M{$9SsIgNjv&xhK<2@+XDKnrf(^1;{JgwbDA9fM+XIeHqj#(~^X>lReWCT0Ous z-~s1P9-Y>(lI((=_s9b*w(W&*NzAuTV}k&;@+197F8^AkuPDIR5K;Ns(|)~z%~g|p z2ipIpBoCQiJqILoqOTi?HyQv;$9X_idoF1Ea?O+C!=#83W`*c6!2BN7a5t7}6Nf47hO;ozo| zW;~7}M+f+&qn73BK?;hVKf6!`rFrj&A)gW%68~HlHS|HqDL(#kr|J?QE`Q-vV1?YfD8Ad4N*H6-nL=jb3m11#U3FjY=xpc4*4rFPmM99|pExO@7hyyH>v8d#q-&Nc+h6fJsJ zFEAg>gvkT5R9I!dD=-a#QZfam_}&2CPBvtrzn7vR;CAa%N`m5mEz#pThr48Fy3cwq zRNBM#v-plIBwsVt#`Gdzc|hmo4cGuPY?J&vJ9j0Rd!`)|lXbF{>k0taMlhx)_D-!< z(9yaR2FP8?_DP$w=s3JVPn|?Axq*bUOJGOK&q=h$Gq{ow8+UzJ zAYH$i(vj7Zw?OfDXMYQ*wl{< z={gTctwQ&11El@o4$`d(jh-$ZUCqN;(`Z|^69790t1RF8z~c!fxTh^N?!>KbS8hQ} zw?ByYbcUPna}U)(foS%gwQF1jpyZE$dAoivM+xZnBQ=|yvok9rLjquOMAWTv_ApJn zoLtfp>^{oql3*WWqMHHe!~yR>0c)r(TZAH%Z{hbSFmUza4q#1=4<7g>I5k<`} zB5S4wa8(0dLZx0U%EIL2+B@@%6Q{o~UfgzkDOM9xeHN=~J2uHhn|>fw%i&Vj0U&zq zU@3?bbmMQVlSr@9uBH0ki5SkupCcb;wm9Nc{6f)JESr!G0{LwNzn6885`EAe1C!Q} zxV^0Z)=aX<9~9uPjsUlLb9uKDDe?eZFZA#{`g|Ocflzt}Hd_b%T^~(sXP2=kSCxw} z6ESft<$dVrm}a=pg`s;Hb=B@6HmQM|+?EU+Z>y;OHAtjs)24_;=Hq8Ca8op8(J*l- z))-)allvz+1o1v4?m%%`8Pce0_1H>xz4(#)Z4+o(IWeQ?0s}Ijp4T9p$`kl7Z2>$f zBcn_+gMRUWIPQ&=}t9yO0ogntmS+6j4Su3Ng-_b2T66a7g@@H48vL_$!7 z1~xD)Y+sf353auzU3oCUa}D4jeh0%VXiFb!mp4V%K`!7^_AAy%R_Tre)PKxJ#pI{2 zk7y;pLe>y^6dcl!)&iM`?->IH_y8p7)p~cEG<*ZXYQt!yijC_}b4Eh(xuieO4Ur;$f^|rM z+v}Y?5^B}zO<%5hMK7pvQ%#A&I*P%Q-}^e*S)!&u+lEBH=u!PVWQn&1wmqjbwF`hG zZ{l{4g85TD8-ex>ixU_zcigeNu`duKwo(=hSFf_T+b|xl3G`;xvk9lHlpzWo@L%d4 zs-2IJus|t0p}9b5v0k~3pqY}+@FK2=`-CoR&5v@uakFiY(!Y~62XnP*(*yb8u;76Q z;w9G&8HGSuT$Aqx67%ICY^PeuszYGiQecS-;1g#H<&oMbV}aVqFrdz&E{hLkShZwH z34%y|{*o-QJv5X{vs2hw_U3`|Q+To`lP|G;{bh`x-!khn!-pfQo2%|Q%(+A5qhFtr zk2GEebfm<gI! zY!Lv4T$%h*soZxNbEcVqpkzate>$aD0lKFy5XaBWes*x7jUC?5z4w*gnQOQ1l74OR zotcJhmG>cUf*Sn`ll@1Os6}bHJikSSf9s4y?X09gHnz~U6O9@L-s<&ks!CG!_v?yi z)>qPC@K6tDmoRaU{DgX*{DQz>xc-Uh%OChEu7zL5!Zt8Q1ze$L?Z@naabJK0w=5kE zX0_^EbFCe)t@Of<;A{0xk-sXGxm~YLet!wDIVnFxFWBWoOKw(27BmAi&Om!k?I7RT z4Xh;KUWd;n4t`MWWj+4>vXLY4k?rDKL}Aj1wbD7M#JYy&4+egbBVkJVTIf4P(VpGE z7c*QlBF%j(l{5|W(@e@;w|i6M!mOfO&GZHvm`P~Rli%3`J3LI3*R=eV zLS&cX1f=s~J@ogCCahHs|VELz;`TmDK%}6dQeDhnFlpOnR!R*Jbpv6xngX{{VQSwo%?k$Vii$}uw05}x>Tx)H&2N_& z>pm$4;kd>?7&_jJCP!`idqWt<@yb-n$J%#0^&AeG4jPd@gm2$gE1A4D8L4}LDxsch z>WNx75-%^zFw2;HvQrj6KMb4PC0=pX_z_`)h<=rloujp50`nl-akLpwp1;W>%QgOx zRpgTDS$7Bb@0>$NB)Zm#TQBpe@8vq5p6-6kwy>yrsL;1o62!vpLBZ$Y{DOcl0~qm{ zo-Gc~hWx!NS4sDMFDqXPns6E#)-de}Xq=4UV+)POc>N*J0qFQ4A-C`lWx zsU6mpmMp}tYrs6tN`v>&5enMNpwksS>{$VdsP5do>wp=|Rqad=vQtVDaT%#`v5K>) zV<^HToMQM5FKN_|E{xvp@ZKtKifcyXqVEnjM}GW$CSw)Ht=)a))vgIq(Vo}Atb++5 zgp)bI?(OEghbx{rdX%SINh^=WtTT^Tp*~GrFCLssaON8(8>kH(Zm9DxX0H%;8gK-#N+*)sgOl z#*dNQsq4=B6P0$XHscj7z>0Kx?&U8MWDq5*pmLB9U-rgZB&)?slSKCl=tT-m0lL4+ z+88CjEZ}DN#&g2!64S(aK<^y;^2@$l*9%Z-QN2BqFU0pL{r^g89knVO5Y!GLUz?@p zv$r6~*{byi5OR#OM%{4-M`!Rtw|f#)k9=Jh-Sm~6$JYgQatf*&p3%WH zcz?JrWtH}^)bb0eC@Ed`+F#GqulEENCOPUw@yW@yHKD*31GpnIN_SYRYWuwN=5}Xx zy!OLYUCrNn`~9H^5Gfu6-MFVFU@`&pyXV}UMJEJx#3jn;hfXp`^`M)iVx{M{9e)q% zySrRunmUJU42(Hd7cffc_Ty^&E8N9;4}AY@a*7xAYWiG}tRX7t*Ih*aG8<{Qq_0Kv z^4`oh-1ZLKxY7gKy`2za(@+2rapKG0G4tkHH*D$8Hir}d?C#>}tAL*4)4NP#8Kfz> z=fO`#>j>moT;H6T$%NEBp&`cqgz9^cL(&F zI+u^85;9Idq&FZSKylyH`WX`)-Fa!kJPrVgMOE4iEd@Ohq>AhCy11OQoTz{p(8y&2-A>XS`0iO@@W&fSZ=OdXFwNo(L(+g^6}3^r9G0Q1y1pe@N_=t> zMoj!>L*YzO z6gdxem7;M3w;quEZYCaDxnP>4oSJxmH;WN2$R5z+c*Jnuvjz}}3}t>#BkR3Z$sPU) zw_y)`TGAV$^1%549;|BD;>?mVBqLc?e9HT72ErP6H1S2S>FdMU%LlUtpW@DyW4@K2 zWhWyCHC--t>v=QZNqQ9?@C+~zw0746Md44VE>&NEd-QrH@dpj228F!jt~GrC+2Ac&g4J#V$atW0)QV9B!TvF(T1|cD3NOKlYoVXdlET} zBrCqEg#y+T0fj+{oYb88r=;8oq)p{b+UF&^-{HEyqFbo05Y=iv1x$(g#+&<0yY=Tv z_zlNrOUCCH!HycxO==E|n-W@F-44draSuR z?f=l!LN+x%QSKP1Dcae2s*vP?{$}U~x>KCZk(A6uPIoDi+)0`5xjq0x;=N0CeeS6t zm&E`rAQA}r%pkK<6&p*&P47r;KhWBe1pLZVIqDick~+yc;z$+_ZJO~b1@2lTj`ETZ z5?YOw4t`T(&ptn3&$)E|9f%BKDdLd~=C78!MaapgRpxnr8y(aw#fnBty`byz)mtM{ z2O<6W$P`XyI%sA~l4F^uT;ae*M}Kd*NkXQ}p*j1($*jXBrGLBf3%oc5KLIZI)MZhs zhVB%=ic^H*NxU*Ckq$j9&QdoR7cH^X;M(Cf^|RY@JmjH%UFtx#sdUoY3n_=Yl7Tp> z9P@q77n#aYa^;b2HjHt6m*|Y3yt_DwU5kYJemU#;-xN2+RY;=E#!>l{Te5?KAKE&z zD%Fv`jT%zFedH5-!7wOvd*5vMr%p?B; zu*H5!JEz0(LApC~$MM^U*f(~r^)KlT%t#;YOh~7)zU!zne)|V+6C6kK)od#nzH6ww z?M{KzCO}Bf0EdpyopRjZizeBMZ_=6owDL?N9uZ+RK-+K}bJ73SAK5B`t+eRLN&fLO z66wg4SBinmqBHvdfN3+KpP$`+ALck=a(z`RizWL<)MP>PjrZ1hEJ1OXk_YpUh_yAx zTm(h^?3IIsxX)S5kF_xlaNFfaa9oaO{r@UtH3M?!kV&L^YC@9AHq_`VqMWmVPB&2v zSw@q{f-|a$CUwX7{U=;(3*wgPDyY@K(=F<0!JMLKZiTg_H{^YF;zhw~vU? z>E$Dp!32br9OMprV<(YOnDGt6tV^`Q;om=9&4#jGO@8|i8BLUZ` z3g_^%_l;s>j$xO@Fe~D0zF#@GLSWQ(gTbYagGJ@dYk;2f@kTNV9E{!jeMAd^)?6kt ze{)fTwn0xYH2$^@Afx`up&%Ys>DGiTp-kxc+#@RPSLk-vqlK(FDEGA;+OizaCzIg_BGrDP% zDpj^#u8rMw!oK@&s)Q-MmE7)pfZeM%c>Y7oDq++0g=FMk0yN9l@ZmDy9(Fi@pAwUh z#I0wSH01#iCZ7f^BYlwAUi+JvQw$6RN#CJacxrf_^Qa7=hTmSnz_0oig1%}gkZZ#68%J8MG_{I0T5FMFT zzlB;9rj3&wNc`a417cHm==5F%-@GBf7}CBdbN-)d%=eALCYiV2Ex#x?92%(sVo=rQ zVB1+OpGd>f^Li^qcn#IyrG6M*Y1N&M%7c|1fQ-1u?SdVkKxKgVI2rmBAt1CXG5_qZ zffIfB-yjBeZ2)dv#iuG+PN5HyC}^hh81UM>1p#kcXxUphksRQGK) z92^lFsVd+tke8F2MIZ~#r2-&VSG>T-Ep%ICLW0g$klOlUsChvM$+oxm8V@A-)3y`Y zg-=n*RsuP#O;L69ogTn%jqx149(8eXT+!hFd@+cLb#{xRSvrv>n|=AHwHR(GeRpk~ zHmJD?@WR|r4;R}zJJpW%WERT4smmAfK17`jYx4hlwVUH<27(7OCI}PE@$9< zpFg--h*t{}?mEOf#H;p{(iiE=$;ss|T3T8@vL2!Gd;k7?FGv)UA#gdmDfBkgL+ZeJ z?@ud%df|lM(jar@A)dmWTu=dkFnda@8eDzQGj%TamWMN+clE%~SK0YlkH7fsPK5}A z*uW<<9d5{Gcd$2ZSAVUD;kJ#*qk@g`;P#@Q|F%9NOyWF>EEgC2(&vd)<+wP@u+2yj zVS*6+qF{yjQ215r)nRsleEgWXn$S#X{uBQg?Y>d#w>Q5kPeAyKvp_%0;!+@ z-nR)*Lqy?ARGPg{HuWX6K2y+{PM>x^3 z3JxF_21d};VtnJAhBRfvKiyR@7A~bX68n4^gp%wBgUW(dy4>aXG$Fn@ev9s+uPmRf z9Oc8x-ni5^p$V-(oke?(OH*z%VX23f>97A>tuy0_gLb?9v7p2mOIj!$j9a$aCCo)x zsQudl-a*B8^WcJXrKu=Je3d&gEHs^DWw;o#g5PV^WtEoyNSH}^FMmOXuXVu;#Jf4X z!1xmeH&*4@R}=Biymdz(-}q7%)L~}mD{-g>&w!LlzARL7ys1LUW4ll`5VQRGzS-j? z6L2D1uospKHJYOUW$>X+drS8cQDb7APvpUmz}Rw)@gH>(2jRpdkd0ec@HN58V}nra zQVb^+O=d|h|3>iYTu4L6$H^|^Di|*%5;&~cu2>6%yzK|9o9T_Xu=|GZiZ% zoq@m0zA$`F)44o%3Go3-|0NZFr5Sp&@=wb3ElscGR(wNwUNRiPsJt_Fzlp)7fW;a0 z6L(3@=}!Uq$G=NIsRfAo!OFj9v1Q(IH z+kC6@Kkl5rb;|q(5iWV)=+@@1t*x!=f`Z^hO4J-0o6VGxS}fVhDH0Pd!+K1@_I{U{ zMIL(XS%bR*?L(F=g?$QB4hQ@Nss}>b5J6yl?l7exPaQAW47Tx-@oi_aYRMJ z?1E;tx^1~JB^|MPl{2a;?%|p+V=(03pAjSOep{Z@8EaLAoM2uAPvrOf=aJq%|F|{*QQL@1;4$+3f7tr!uqe0g?Lksf zLPAPFO1c|V5Ksg}1c&Zs=pGsbX+*lELAq-INolE}yM&<|hWH-d_nh;d-*tU|@CO&e zGy7S4?^XA@*P=8y6_bGzmoH)6%j*95PNMHrwwLi z)eE%dYroeD`AFwa;JJ&;@y)Z3C5M@rrnJ`f+x+&rm9m`VbBu$(cYgdG`_sbM_SNUf z1+xv-lG_PB<;&Tj>c;Qs2n_TX6HUi}!o@XK?hVr>6&lrK$DiAb0}5ZxHEevWb%CBJ zZ*lo+C8(pd`O25dIcds6X6RHzCR!=B^y}O?O zCEe(9^Xwl-jp8%>pJXbxVs^!8Z1<{?+6sv7sowYU&+$qW9R&J=>YO{JvFe|vC?>2q z>5-2G96Re0{QZnGBjT(XrpB4WyoRSStUq6DO#jH+7L)@IrsdRYasTxxC&@MZHisyB z5%VMk2TnhM8V&{2Q2ocd^c;a6nMSLx1$6MfZckIBD}my?oV z1vycOOprI908Kb7%;9#2g*Xq=W{mx@frt3-cNhu~Ibccfu{5jNNCqyM;`i;4kE$WS zNu3$8`r9mxR$N5nBvbCT^FDI#B$QhMv}5;Fg;53c+(!JclbB+$$B;+cV=FgN5c0(1 zY$qgwQfLKegx7<^)f^4bdC)8Z;o1k=x4Ty5ULjZ*M!?b-* zOxxx|49@zc2iiV2r^0*ntM4^5l3F%T#*}*wduXFlY+EQcQyuZ|$3ow0&MhdtN~mrQ zOhx?|SAD;V^@B+J+rQo&&>iq%m*R*J$XKqbk_bBBh4IorcX)Q@8i*AVIJ@wK=Asue z$v~tWnt@hjFjCvr8$p+yDZi$@Mx4l1{hg@_av>Y-y?nI(ud4f0>W&5AA-{Mlt$)@} z<(=Q?mLU;gHs&DVane?4($8C3qEUqbwANGbS%5)>T24!B4LZLN{sDfu^02UAeXF35 ztg2#tKdO2`q8WS0Y5Sz2V_Tb)1`^ z8wzF*avYW*i-?F|VPor%y1P^cwE^Xj*;*ZzS_zieYOmy5mXmq{We5-ybR+GevhtD# z7^H(EY9b1xh9U*VL#ZN(l3t=pqFc{EFVxf?m$qD4@(T#$?gJJ}hBryZ(UEWEP?)n} zEyig|A)Yu}5j|YVTZ~G9iVXFZ7wx?L5s@$L>=tSat0m@ZWRCF-FH@vi!pCKzPjS4T*%eY-Y zd35q8X}DqLc>fNobnFnyMlEo)8Qd2UtJza7(@FGk6GEhVm>&&CjW^NP-sb? zLS!8lD->SL>hemyv%Hj$NTS#*PzDD&6|9IlQv2xW5F?E^ALtOR?K(MxcOta1#S*-`#RG zS6UF#Xq?j9h#zTze5sKx%Oew9E3|AIhTwJ3oX3e8g#oO_+2U$pUJ-iG9e-|rEJlzi zlJsIOWVvPd2KVu6ox{c9I}FP0x{#}AS1w(Z^J{*^t zy#d)>F8Yo-ER`jo3Z(e@8TpmnU|byMwnZvJG9(PK?FJ@&X>L@96TNVv&6RF8YQy{* zOWF#CL3+1z2Tf%lui*R^RNtWaw!S)F5uXQF5#wd&PtdgO91+L5UXQ?MmfJIMfwuWY z)R>1$#dj!zoS5BIrTGyIC>fme1!n0b71ITJF!wr3y&+03A|+~3YBH%iO5w6ad>WDj(J=7($RSI{w?4B5jcieV=3fmqo zf^Iz@mK!-fFIHspJ5RT@l2hmS4N=N!$aaj6#vRB_P1irgpcS|wjmrz$0aLo?LJ)lkY(v0$t&gF}Pkz@~Df2U?jQpr3 zLhUaq_dZvr;G{4iwWc)gkMDzQ#Wx&bxjG(8`7cf}GVQs3mk>moKj?#k zg1u4PZWeFdUshbPK1&|ScuJW&oq#FnhM|fK?_eZWlEcNX-I?~oR2TntJLq51Z~wlG z(9Le$F;QCp1DbMf;IPl*mbdI2z72#!>f&KSbrc_0=-3Ey53F*8NaiBe(nPRkhrq7?vx2c5DLMJNaBOTLmTC#7VKi-Fa(5>u>dcT2kBB?Lge z$w6sT;8uy7`C&;%!ds8In#6G^KPdAlY0vdw7!T}DCYH?k=LJnix!vqh_yMqokEBldquXk>m1z%0qk+4~7>}t##A3a~E__aZ_>@336n%p~LxTe*%pH zpugp)k{dUt#Z7iuY33A^pvVNs>x*4EFx$|PVy&D6!%cb^<8l=nl_S6+s(5yEZ@Kev|LSOz$jVkZ!YH*O#--k9ZI>=c! zpM(kRw|8GbrYda7uAFz#G4VHSb;FNkGs0)QnhwuuO@O{%Ecq_8 z@jHH8mkFf(i8>DmbWkO<*LjXFLKe}>RBxxEGXD7f;EhYJ9+*&twS!TZ&S?VbYB?dq zLS^})@KKf?ty|X!iAv)O%|@)=r+NtQ<`wcY_uR*AzgP=>GDPsckmY$4Ql4MscR8!x z@i)s(I9d-NX|A06-pKQt?1`B*-5#74vi6;d`R?6(Flf2swflY8w#m7|&l&SZ=5%0K z_HsIbhVk(i5mqrR60QNP`hm4evlvBf|Ka4tmwfknFf(62<^YUHDowwWgvdV3H z<1g5H*?TQ^5XbBjCw{;{_S&R?d&fl}MJl22+w$ZO{R-@jQP&6LDU9w$#6A@42q>VU#4Eyk^qS*{lBe4IV;=$4d&WEud7*VK= zE|``=s5V52c2vKi+;&S&`k$P`q<^;$?Y3DFps2PcQsnJ=@FpeCP==XxBMWE!mcRL; zWFLJiGroJ;?qOP`B8VK#%|u(2SfdiJym~EOb0(n8ciH;h(y1LTB%trUtC`BXhQ&Tr zi%YvV_XReHwA*Rx1wS<=Vd*Bh$o) z=-!|4{dfFghE*bgPDIs%_5p(Gp(|6PsanLW^0}ifRLl~LQ**I}3>OpC3I{&S*Cb}R zw$9-x-yRMuR+6v3);ZXKpU+;K_NQC!*vt?=X9u}??0Sw1z*iAQW=mB8`G!Ah*THpA z9Qf{n|78l9k>=t<7Ow44re;7TU36smEYUhK}E*ES5}O0jSTuI-ke zLTFKRl)y zY->HS1{%=GB`NBc@;-7oTWDB5-%Hi%!9G*H()1GnerDo&*J-M`)7#ZAKYy-crX>+> z%xWckFRB(JwN`vMjy~Hw+z$dRimg$7BysK<;K|o7pL!ZC_{9mAaHevGBdK4(e`k98 zb73ys4=qWb3#IMjU>v@VnrXrm4tjvrmxBI7kx(`eHRfw-$8#YSUa1sH?p_1aSMt@J z3VqR7O+()vjdK3uRtAXcsSy`&=RJUCod0kH)1f_&Ww6Dfa}QKK0bE2l->a<8&f(F` zPt69HzV)6+O*+qpSIgGS@x?sZhZGs(GxQUF;(AF9i;Rm_eq3z(FIRYh+pIhJ!Gw6x z_&D^XmG-Rkkn6)Bx>tkl0}gMwWBCB5o=}=WS^lIvosfv5*eGxfPr2#Mys4$QZ8;I) zVAfy*+8NPWp?%Veq%SNVh3RB^dMEP~0zE?wBp9A)f_t!fxxDGesS3ik3r2zXiB9(8 zVBm}J0te%`Xz_Mki&t5}r{U4&2Gk7CY!i`$NvL0EHX2lRRY-dC6nOm%_L&1^a1oSr zBmX$QLTj8q7ev)m>)U^OsSKn?7)zGcGL$EQRXe*4c|z4+9ih9bKYQl!kK9730#95X z!q1pO4bQBNt-xah=F=SDJ?x#E4Ebjc89xB>St*k4U;iKngt}GI<-xUR{Mhtb9or?U z6SALj-)<%q2d+IFGJX25kG^6jm8Sn{?wA#ps)%EMr7*Pm6#*JVb30DSUD=>04s?1{ z?D%gz{)1@0PKzI9#i{x~?B&~uWBS*-1u=g#_#>>^ z-)oYgf-AG(nV@f5QR1Q-b)M!Pt4Q)(do_9?`(Q#PqvK28OZobT&3aWB=UhHSY?hNI zbFLrnq`8fL5t6HmfL zGik>L!9rKFm`}unZOiXcYw_ow$y{dO4W{0=;zgBsQw*2*RLu|5 zjCo-xQM!s!~py#qfS|s381UkxP#k(B|qRAEy zvH0;~S%YHGCq+?$F{JXq#cp({H~9x1)NdY9-2!C`K{>OMemB5DQV5&SwwGxQc(3^$ z7nIn<31wcJ^803gnp0NuX8-eQ%a`RiRQnEpBnZ^;9Ahb{gG)}OncHizo~GlVzk~B< z)aIh!=h=9((>d*6xyq;X40<0HI1bYN+YLRp8pU|_F1Spz%bs{YjikI)#YGO-*PmBX z$TM|h49>Z(p$#-c@Ug=b#wPFOwt2Hmczx5yWiUZGZ04*7rGO5Qy`Rg)1sx3Sw93W! zOwY-QCVttT{(6JoeIFDI$GlxcdVBo&Oupy{zH$T(adsnK_c?P~Sd2gYfbMZdafa6@ z%9vf(OEdZnK+uMR1@w$6^R44g0po~5?li_yF5$Dea`4&WU=sPyF$Y4h=)2V2X}U#IEDNH_@T zyEjL;b0n;JN|utTsAkTPZqO4LJ_d2p_-I}w{cyFBk18VV!nVJBY4(5vR*HE>jt#nx zFlz?)4Mxr$Z*eo7Q28-jQID5y60jg5_=0E?j-9+*ew%?n6L`+x-}rL(mV4Aks_s_t zx^-PSyWurEmBdnXb%mtuz?-dBsREs_$vSovP-iMRCylEne0UJJgW@XGwYneFzurQ} zj$VVs&-J!^wA48|Jfemwxp}0N5m2_W24X zFTHUHvZum*dQGo%%m5p%=8QNT4f?$01Grfi702si@*iu9EvLY#4ik5IugBpN3WsOe zuB(H=`<+)^wmJLIy|X(MZ8FLP&bD^uy^d}ZoUz4-yPc%1R!0a_w21>J#m8VjOceHv zJVo~SB)uU>pwCEwfxJ*euc1MXp_W{|b7AL;sd9+)P zof`7@@Fo+q8d~_yT;O7}Gte>Uz~uTmLaf4hA0O1_oY8=lvBifE;x3xiZ*D$JD_%Vq zd}x;WG=7%4$|KIDqf?gw1vFgd^FxQB)l~Tsrm(4xSfCd6XnTgsf=Kh$`&{whUFj24 z5cosYlTR=QoV*i?l%a2Qk8ikv;2pjCfG>suDt8&N zsz=5Q8+29==XMkUH`9ZFI)EA>h3mXnOOQ~*w)^mpOMwFTiC3ynE$1xMh_G#SA|?u=HnxVsv+V;U>I;DxoGv<>7 zt{)KjnotLIAEM^x;Jk+B$)dE0%}TcAEM%jA?gI+zqB5n;Ua?vAOrDWIU~Au#SXq1& zgax~?2i?&mh~zrTthfE{hQ83)PYsf*e3oVLu`4M0iT%{WKSCRi_;=>~7>DmDQ>5I4 zZsuoRmo0N`(tbA1a`ti>YY948+&F#efluS-pG5>}t0be9E6#kxtmE$0Epa2OEW=Jp z0BF;Qg`dnmkCpmoB3w7BZL!s+u5qBWTl(}xX6GDGqNq~uhbiYDk=W{>smgo|9_FA> zz+#%VtyRO^EIQhwm90!H!@#o@w#+oh1CvyqYhgfpcC|zL$N0Wx*~~f`9JjCOk!=0> z@IK}i`gVdmd`A$gDfw(^Jz`(qc|OP`cU@Ik#(98Py6H#VQUvCH+w!J2C8J3k_@?`q zg3lk6=`tqwrE7(yWXJDeh8Q0NlXTb%>sPz%=NgFyeB~G%EmFa|_Bk?Vk2k_=M@rvh z=)YD>$G9pBChz^7h1a{;{se}32n>lL*zdFO;BtKw0L24=fZpGs-hmV0)vO=aJ>Ugs zR*D@%CyPK1jk`KaO1qw-eT1YYkA+%$fh_oxI^*^l4$sw)XaaH=WKqhBv{#dTWbY?( zp+jhhhXHvHK~MNP2)=rpNsA6Docx(EE`lscoy;pvE#7 zm1kcA$TvcPta{ciXt34#D9Pz5;Y5{lQyqvSJL2U4xr2;HFAk{Q?(olc!a-;9r%Dgg z1b-qYE~OII*_Jx|R;lf#tzokWaTHfhcal5J(^qQ{D5te<;&m83^#&H=YqunY9)-QQ z_u+<4Vr$aaWfhaZsQO$Dm5D?V2qabq>HO?EsNj<>d5m=1h^JkiXuYHJx{Doa^&8fk zzoIA&yS%H%v%N)>y&x5Q&JJwokv&A?{s8KYZ!s<(V$dj#SZ<5ES1Sr;7l)B@w6Ao9 zRak2j4a@_O^Ti5T>z4|n9>d$~aqHMmdR_vJj$p`Fcu;tDDyjBZIUi&W+t7Z_WniNI zCXqHr$OhyqYw|JQ>lXsE)g#Yq|rz;)Ec%n|iiNb>SoyPQn-WV&Q7@;I|MH@68y zG*VDk8ys}9f`A*vvdRZa71}TcqTYyV$Z*^sjx@~_z(Nyia1s}UYb_aRXmxhgo?)^vj|F|tlx2TNZ zlC2*=Cfa+fq@Jo(TZ_}7FWmJ~1=(vzmr8S^vgt+=tN6WYbMqSj zSvTY1%uo-x8!5GmWGkV8b}Z)tuJT}ZRG5pR7i_|2PTP&F8?AspA4^KI3VbQ$7$A!`CjS6rf)$@mtx*uZ%cdH3<`>$B-;CEL_Hs9b{1?r zr+omLs<)=2xxDl-I~~~Qh8K4B=$*yyTWg7oi*+5o5JzlR*{`y8j3PdUy=^jVo9f-#7vl0EyKA^R2Omt`eK)o)05dx8eyxig^gq^H&+0F%5J^?E{sjLk##pPRcu@4W1Ndz z1lr0()BtNlzr>`2JMT)y%Hj)*hn5 zbu;qhd>w|&z1y29Av0YN#f0ILqgU@-yDmP?&$74mQXihHft^yVh8Cer=~O*F-n$m) zi(q|qDlq$MF@Xd9a~HW!I|ayhy=w-KYMd@bV_XoAc7$l=7Wi=JF;}HaM4!4j*JD;#6Uw zv&!d+hX#4NUcdVz*wD5A=-W$7>L430%+0woCzt=&!38okk2hzDNTQ_8lH|?uKE_Og ze*>m&nr(0C35)Y)&M0LgJ%aVW)iepN?)PW3-vB?q`d$j>xb|u2YSc->hHA13*u0^@ z?gG{ibfA0sR{MCnWNO}6C|WIdo~Jr%m+GpZRyzak`pQFMV9wdLS}awUF>Wh@F@E;~ zixN?1bblc^e*x|S>hmiD>6=>I3hzl|l##L{YUIvjBfgp1{MGNv(S-x~$S?Y4U2X=1 zfVNAvFG2d!Q6M;A&N(`br=0^@o0;do$2n82NL&1&Tp50_Cd-m#SA-b3mu$GLBg|v> zE&m?GnQHTPi+So(E1MByGmn7ua|@T2EUf@4<9Z=KXL8y+Zur@np5Wy>AVhTG#tSp+ z7#;EZw)djOz^bZlZ~7~Z3Om=fe`Wi4?8@_1?ZZZ|)2}tV4VCT&y)}buU%GhmkkR2* zUQH(h;7QHdUrIB@A(@dA5Y2==VUChNk)!dBWo$_Nw~JNzrBBSKedzck@eL0LAOs7#DM(%7cri9I|A51Cg+7w4NBwgh5fW$EVFzx^i0iSek51ZdR%LECNfxL~%DW_FUjr{yY*+~ZHh z)@kgl)D=j8Qc~uP2D<63ge=#@8ndin@<|cBIFULkQ^=+7Z^J%Dd z?>eNv2Y#(*wZfd6gp8C`QJKzY;y4))F1EdiHtY>RR9yimk^x;}Z?C(2KbCE<^)}<@wLouC0M-T0;821II602P2T>rZ4+2oBx!$7w9$-A;?-oBx+`P3}?(n za(O30s&29$1KUulQ_D;y$ff0A(%-(JH-(%@TgVthx4FhH|A8UA{6N2N({C|7{c0~c z*ss+KbLvcGsDGIGaRZaun02j@t+?r6vI(Bg)@bfUx6lrs5*O^`!&6%S36lI|Y@y-( zkkFSVUUoq4Wk%cQy5rNqX!khj-A&V(&6wCW1q*>K1ASD5L{N_02ZEii(*cd1J(}!` z6@sfX0ERv0e|qU`YcN>46YdJY(kDFpT*W?3Iz2mXJCKE7W+{)y8MF@10FN(KV!MiB zv9-nhjYrYRy=DX8y7%hfWV$n*`g-I|&oce-{N=g=v|YOY@Wnmm|8m{SPJVv`TOF_mLU)xgu7FX8%zA}BJJs^Ny8DRXK1tJE6XT}Rc%!Rb^`r@L)@Dx?UO@GQFfM65 z2M7@tTlv@!g2>Wy+8#QX+;^xw`jzYM=UW|UZfle6^tS@rB*D4#+W9E$nP%%Fu1P@x zjZu;r)e*KCNpm=T&d!Uoq%IccLHcogTME*!M{=K zULd$e%KKAz_c9m%g!~cmFznt>Ios_rYP~gWf+z#N3)lhj*ZGKBFu6mKRYYA##|xJt z{qx}=2`TDe#EYm~k{`P-Hmbyv$5VMICscCnL6hrGQw80Qqt*?zIVx1jjHsteoU!e6 zR&APFjqvs~uY_-Fwm+Xp+#`iYD8a~}sv;Y&?z3Yt%5(h>YJG{42S54zU_EjtV!|Au zW@VSk@G)OgToI~oKe``)Zcp|Cwglenn*4;D0Qx2iaON9H;@g~ctfydjQDyGvKDyU- zSNdoFErDSy*d9flSLhpwweBuzJgwh_`P^sRY90!)=vCqofNBMDBFX+}da-o13^;@_W14~W*Z*D_TmaV>e#TtHsoM%7dcX$L~=p4PIaM=9~S zc}WT9d%?Z=Y5SD$y!Ej1>vcHZn=|-CPQ;di>rJhq?e>CB&BcuZ_OZDt*yVLP#UP8_mHoV;2 zSH%ig_Coi%9)IaE1Xnro?de|0bn}SpS^y1mYX*VD7@&YSwT10|1Gpyu835_SB1)GP zKu7?-e;XO+j3_=70o0iFOck|6C|h|YuvH!_%3>-L6<$ymgWlsi*@V7y7Q{3rAR4Vt zu&9Q*TM{7Bvdp_)WKX3`ywIQ+VxL#ZTaZ{k(;R zX+r#HlLRx+28DzveGd3E4-1-IemUhC;^}a)Ql7ok_LJd<-p-$bolmhRv=KoO{bHg| zo-JPgv0sYE@vV>p-N>QbwS3PuItd9n4PW!uQ${k`fbF=tB)OwwzYvZP(oc%E6BMI9owM8sB8;pLCPqyv>5DA zMofYWr)6q2Bb&q@TY?Z@-UJyY@OtXT32FpK^w)eN$S>w7AUVHU?oC`Nn(p^>lKA}ftPKa_y~$iH!3lG-aYWO?X}x&#$m^#O$ShgHdFlO z)~Q2O))Rb5YIi}=hAabxm}a(M{1Ky?s?W+cs?}SGNPnxt9F@T%G&v|BLRP#nqjua( zvu`V+BV063(#xEZ7I9jCI*)nS!K&ATC#UVVNaL-Mg2y4RHTCj@)wqwfO{+>vs`VPg zeX|o8Il=q{5Qn`;@xEKL=}yw&+?CLn7#T5~hv@#R#p+OznnSKWwlwcMRG-a+2{}A> zP74viru#=aADbm4ZY?YMRlb1Y1y(OZs_g53VZV_Rz3|y zOA50$z*22^I+@D*4yzaS|G<;Fzh%`Gk7`0}0L+zc$oO;Ou{Beq-0Y(mX7ja&{{pO+ zcZHq_fsZg~R}bAZC*9B2lT&fj9d(KXpRrGt$kwEg(B*J&3gcx&7yJW}5`4%`3WzR6 zi?BLz8r%*^58PhUjoWRkB6mbgQ;D} zJ0P34d;2Sr$B$7!r0ihdA7w31P%-fbVEUhh z-^1UP=QmUL^nwv@E8fbd>+3N53o!K;%6fkOGzLlZ24co*)QwB!Jg#zav+olnUz58->aHA6J&!oOl`Bj0J8^jddt&h z8C`P?julQ@ANcwCb9|6M;r0rU$Q_31$91$hTyfzNvbhog7ZLaVPW@AYKz4nS(jZ;F zXxeypy(wki_4w1$S2>!O?4%t43kIm{#Q?ofRK#0=?n|V)t%L{z72v=ED%_7vf&Q|X zKvDWD9UbcX5@X>PHk)el6D7M$CPRK0=xlWE*_l?Z{FD2C{+K^Hy0-`aEsT)5*b!12MX5g?60=|aOlAm-@F^%LXd{%P@?$G&CNfL4$8g!5i3^o0CC;NZLp2)V zjCCI-`4PB=`F|@M0^IkCgp!MPiFS1O&RMVn@=;*a0j_&e zzT;95rA=E5qk^Un*=PMY`teyhFy~YpP&urybz~3m$+mM1zKbdbO{h|;t@l&=u<*MdsbD%(;pcIP{027Md3y-VE#ZHB6B77 z<|AqhV09cYSsiD}&Rdy3Ht=!Nxd;8<@{SD$CB;k+)EI{ntJ2;E{W!ykPAUKZM3<`& zPIxp*nn0=ch)CpbBXRk1%=trRau#VHMiW4x(DAQn9n{IT7Q-Tbl@;V1@$YpnSa5E5 z%WUK|a-XEmRk0+1I-E2X zn0qUBcYQokXR8Nr6i|WY!*T$(K=SGj!~LAYdt%z}EW%*`nR%BXNsWqu+lJh4jS8mm zzyb&kF55_L=05S3?vAkfgr``qX(k@%{KZ0`+wCFAT1ZwqPIh05=>8r|6AGA!dvK@z z`lw$;M<)W9xkxkL-$67wm<4dj^|^by7eXWdd}qx_KAMTATS$Rb`3CAiEih{N+fo zy|%2^Vef&j1bQ18^u{pWYZpJ3JhcA7`0A=p63x_sz)_TI#r%8a9OeqbHHuEKd4GwK z=Y@rZ7LJhqc#eXiqF0lpIwLh!pXS_FBOrT)B_-%tb56bDrQOKcIrCnHr$RdP|K(Xl z4+RU6vqmw*1w^OA$4q~p0i@wWH*sl7d>V0bV4|9|mzTsg0&$qKc#UzqIXt-v3Wa!F5N&=NqJ=mDmdg^py)<+l%?E-W3fP^z|B%1xUi{>L}55l=I_ z)zj8ay}i9Y9+tbiy{T~B*QJ8)RG6Eaw?X$|lcotvjzc1tWBJNGzrRaYI3v{O0LF+L zptAf}(5<51qyNKva?)%b`6#k3L=$DUBW=9h2z13iIlXrq02AF&=5u3(;B5D^|K*%D za9X(0Anq`0^u@^LA5Ia?8o$13Tk;gVY{OrkEGn7soQOH9b{VLM`!7dnRD@?(JC315 z5G6&yL6Q+%WF=Cjk%B>$OV9k*Ct@VhmA*Y0Qf^IB^)~_U(p3_w7uK%twQYC-s{F5q zxJNTL0;B>kdpz8B!{(<7=W+NNl{y+OPRgQ6@qgy4JbER+DU%K>qJFd8Xwz+<*YIqU zp*VRoKFrA=b+RKO;cpg~qX8v27NJ2GDL5zqQ24BE%8f%mIwr90|Dlu-5BzU0%zLtz zo2uWs{%Zf zurcXAark{V&3g`;D8T|&kN{bv}Lg;4kTQl?lwCM!Kzu8f&4feKkrTYmT|sK`KOr@{iQV-LIw}qfCiurg zIl<*181#Hdvsx77Q1oPw&ZreJWBTr|eSRfMqd4h~8g(@F;rI@4t*qQY+$Mb_*0Z&E zTD8_MrKP3y#T_KuxAE{&vWs;M2frIT2J5TFrG)s|M_S3|XtgI$3iomkK&!b2Ec#7T zVRt6v8+S8Q5I*tUTub}t^Eyll+TF_;SIujP49{3>`Z^qIQN13*L12<@Zh*G_P)1~OJF(;%laMLnhV-f< z-=>e(BAt3;J(#1k5-<8ZI3$>zxc0<+7ccf~AYO7;SL;G^o_inXc*uI!^8M{E&x$yR zmd0sVz*$-eOmNJ?O2L0djOCQey0PY3@NUw&FkWzX+8dIpmu|UE9Dl{JD8_Cw1y{eQ z8GE@d$405yIAEoz`L4-Ua@I8C#`<#x$M{fc9qiNPkO|Dvc7A*Xvf-DpTN%fOc7alR zanUthmX3bIfr!nZT_FoDKNb0<=V$2Se?%Pb@Z+;p6$dXt$CTlq&9rq4$DTLjd$`&A z+0q)+=?gA|uzT*+x#pYp8vJKny3K?FX>Wk@xw8g4w&*-g@ zbh`W`s5^Z|w$5bqtV_RV^^JO1uxGxmhQRR%H2qS;lJ6&g&8G*O-I$7=}FYYi++gQ1m)ttUG!H93P>Q;?^eR*r#5OX#cf6mKgd~I^guT=pSG|R~w;#J)E${PLQjTGh{N!q{%3=%2D7cIHUB{^4s|!~_srE9OwiR-#^~nuB z^L4FS6;0%3@ENDIeRYVYRti^t8r<9B5bNmk059c7J!=cW#qZTxd98REc+TxE+!l~{ zYatWi(K~F*bL-to4Nha~V;pHV>7yHqmeSgVv1X}1Ne3gWd0d4OW2Aaz;>oSY{Y{y7 z>wFT(buUhq-^xnPRG5I@K`!F(3?PXH&&+5B(h>c%lyQZ+^2$c>46-h^W%F zDCV_?R)-VOl((5xm;m!4Ta{*N&MIM^7eBhGn*MlSJFJY@J-#@ zU-YZBf%(2F4((g__%udM-QM%!IIZ2ZX;C@|b;$zs>q`GdfaP#i9O^9cfUT^OUEZER zLFW*;FwFUL6n~oEkDW4IhsW!UBe&v4K52_Jv_^>|>AZ9lh1Dk;Z>je>W~;U)pjOlj zDFFh;5`qzl%<8bMHiM9l<&(0vq3o?%&*q0$){Wu)slgjNsPFso?Hxnxm07=$h22xCXHuBbj=TbL z??s&i^VM#ZDC534zo?}ZWY{IEz4l71d_HD{7>wV?%(9tTkbXa0OKceQ1^&>mwk!F2 zf_ruiSFMXC;>1ry*_zr+bB-SgphqcwE0Y#WLJTiO$qnS;Fyd@c81v}vJmlF(px0MSFZFSMk^Y&EE6f)4R=UJr1nt8qc-+*dz zTn4MwI6T7v-obu2xf?w$=})s1-eqREbwn+RM5P?zTO*dS?a3FGLGO?ytPT*1k)r{; z>1=}RQ87u0iQ04X7BQ^=w*ATHWdlA^_Pd{^mshLhgI^*_DkW&!lg2!js~y<--J++e z6a{KwW^(UPaJ6o$n`+!bQdTe_BBoBYBQY9aF7eEuN)YQ#%Uw zyxu4rtcYp-ra(VXpO`hW?`0XJLmcUyMpgdBYnoH^Emy00kaauXAE=g@uV>`0PH(fl z^a-~#4?ORs5PIdJdAVLnv4nC5Q>sY|`Z^cM<~aOKq4S5SzA7gs$ZmN_#J988j@sXa zYc$1(jEDJ+C2&=PayzVv<27NwkETh5#)cG-EUQExm8>th#taZ7G446eH0CV{8GnRU zEubwNih@##P#;Y#tA1uV3P|j3-Z|C&&D6>xRnxwgggXZn*_v`q5R3r9r*w!2IFBi% zIQDbpvn@9?YM?(NF6+7Xdz(A?A1 z{_`Ity_JvcC_c%BM|QGXSqS(QuP2;|mAv~Uj{QVHAWg7U36~?o`Y_r(^Wmc{Pb>T+ zQdC!)*tWGVr1nV(I7+B2)@%d8&$GODK zQsWY7&N!DyUKS|Y6xe=2Ia95BL3ZA-4}B^l@*?bcjsgsM#^ z8M}e(95** z;c5}VeD?6F5|Q0xFxGQmJ{b(b=U@uW*Gx;GmYs3tn6Kp}7*V%)fD`&Y_(N+47O6#< zwMoY?ev*p@rTw{8lTqK37bT91!=#qGbtIgc4ON#>FCpQB>B$yVmjt}xB3i@hLDd%` zC{|WA<<;xFk6gf4P|ftqIB1f(78Kt^v++#Qzb|b%zAu+b^QJcLVe2N^w8tRxL}w-Z zJKd~Lic&!C;6z{krIzj6^7~FXypo^P)w7zLsesW(|Jl#aGV~)?>}wZbO1{+AN|^A!6-?tOv9h%>Rl zhq1%^+0~eK%Rr^R3(~ z=-vMd;}0D0L3KcL8vLf&NI@9%ds}>Dy|9%NTbyKBl2f((I;L#(6UNzLGLN7bL|Z=D z%9<_jgM^tWI=u3&8Ex--n`0Z)wwm?F&uP-$q3mqb>Yc5P@#os3_YvgKFSZSmFOV{5zp(yj><__TZQ5oI=852alQ%41l3ABZ~SDARat!dxpu zem)rjd zePMiXtt@CAbskzd(%u_Fba>iqnr1I$T%_L!Wd~kcJ7qr8^c#Zm#il3BdxPTWVYVfO zg@qZjT5WO2mdHj}Z4I9-;xGiogqhZ}81w?oULijRI_QNtKJ&nB zLev!_M2?tBi2w)G^%;$GEz_8S^46~*w7pxuJo0Ohv^d2q(?D(IOA}yW-k)DSN@A9c zwBXa=YQ1B&o-doDVKzdJG7=ONZz#^0Z5oc&U?Yoi?dN#<<$E^e#(cMaPPO)2n~^f# zfmvU)a%AScCjM;iUrV2Nk176SnUL=Wiqq)&%tS$eW1>CJQARj|I*zpVK>J>6GlR;m z4OynmG9^a}ZSmK_i;3xdws)+R1zY%Xwvl|Uts_!8+w%R&vMJ*pG{WlF@h6v~`2F5C zI_}pt**bo_Fl-z9Xg1AH+?sKe@66Vr;TY?nZNkW}egu^{O*qGtDd#eeHG$|Sdi*-M zrMN>tIoIy7)vs(ikb>gu7_%8Pf5{d{Te&s!!f&_eFzM0mag^mSa`ade7BOWH0LvpmS_VX*o0etxD*yPw~#bujw1ZMMH{9j>-8H5;#`PwULmK5H68K1(Yz-v6E$ z)OJ(XY^63TtbMPwgPLC_-=QocUi|hO!D>d#X53^(YA;o5G-X(_x8BS+?Qhp-8cI;3 zEYoHdAloz=zqs2ffETwQL+V;aFJW<1{ibp_VrpWL_%NLV1UROes5i@k&B3-cJThNp z<18Is1T-qL_tBg}VRLr0e6cmSW*%tHjqLr?oFl)Uy&$~s!6VFmG39!Gga3w zEf96UCZsi^X)8-m92lEucEyN?eBWA|pczWPI7m@qi>K`!h3O#idryAv8j7&+i;K-M z)Eq3WV^-E%n;o|0mo4Aq@3bR?WS-gVg(l9lJh63jm}MuMItRnw&>Vglw(HZ;7gXkK zVcI_X-J{J&k>wzaZLzfpG7eh(G}}?lkFmAg(jJ@Q6CvzYOj)85Q>O0*r6oxGo4;T(vcwj18G}rexa?b*gBA;FQVn0 zqYO@H`5F`FxXL>0=l5x4%I4?GJktCqi1tyI$CzcaKn=~G4r*Uq(J5;yg9QZzk&Lb) zUxL-vXluq%Ub8s^<~?Qx%bs1EW2`j>HU}e&QS%!u(w-Mn)&R)@sO6D-=~7h7hC_a@ zJwxWFU&F4wN81!AtpbEGj((1*tqf@CG~c_Q<0a!K8wE|cYa&2+q0mkImtcPL1vTIX*qy9#Q~k?@8-8b(Cq6Hm6^HC!b-aLn~8$!YRl` zO532>V!57JYs)p?L=y>`Fts_I@bNWlg33|WyKBGG&;+OJ(;@F#I?}!0*hCwA1WS;O zFh6TE#lrXk@?An{D{P$!(r?myM=gBYK!Eo?{AS(Aaug(d26x3!sOkZ4vD^F~YW!g5QL&n=yw!P2h zZo7W%EJCyuvdr3SH!SwrL-XNGvASOhRw#wpuQy%dR|#wd+~%0c9v$1WWbcnQ^+GeC ze#7cooc$V{n9np&o8u$n?D(uDkW^=^-@+`=S57Qx_<&!2nwMI%h zQGVq~8a2n5rlC24P#hLpgW^}0pfu?6*|7AUX?4gpnk7fiW0o}&+H-@9SC|2+nqO#3 zkCrw~1ju|1JGus?o@?ngeE`>|1I@2p)!G2rM!=`dw28YQ`>eIyep9$@zMA}A^Lb$L z$^AN}q{eUq22^0Nfi~YeCT5dDX@~rL0{KkW(y?QvCyZD{fPWiAUIeS3gJWI`lMva{ zVe1{UIe-Xo7~mr^ZO%(j8f>FzexlbAz1UD*w4XB~4RcJHvZpz#3C^Cfd|+tzyfbQu&=WZO>0IIF=0!{1&%M!KR4{SynX% z->fI56Rf=pn*i4uN>>??&~SZ5-doQ0U;`&7)cp_%`und!4cB|9c9GM)|q6! zOWQ8xTKfGuI&5_YN?WAGRdXC=Z?u^op5tQc@UzXx(8_KQVH|0hb|+vBl-7RP;-r-Y zzm8X}48r2jX-=Bv?8>?drEZ&X^XpC5>U}o(WD`t&`QumTw0A9qu+4Foov}7wLK72O zytQ~hv<+IB@U!(YKDM?|6Ck#<`w0d==N%SbA*jR3R-SD$b!0oCy$@Ud1(iu@n`}N9 zvS>54v`S&CwJDkyfMIj|L_RD&t5y~?ap77z{UO?hAn}8ch+uCSCZsFO;zeSYsm=6%?W*W7@PK=`x)TH9zoLvFH^O&Q3B zya-kqVZTuyt;bgTYzrf(7Y|C0hAp15LTU|&3?rz3$thU2hS)ZhF=m-RE}sK&-j=Ng z$b6p7DYU%@t+CT8i=U%pdq>)Dw8mHpF8OwPMkq##j?FJ zuban?X?diHCz($%pS7R}a8PZc$JRj=)JY@r*EVB9OH0t`lvZy1I;m{sOV$UOK4~L@ zgq~IoYz}hFXN_&lvUJ9L2hyK$l%+6IFl%j?Y-6+zbeZ3d(uo`-#$=nX`Iy=GUSZ0g z&F^)@%r&jNge`x5Na3jYh|;f>~$5NMg{T6)W6SlY`pU!1Hc zP#Q)pT$wKIdD1bo9SI`QDk~JHQ*#!*cxO9B!O!5>3aa+K+`vi;*XD@H-^dCq9UYnX zGCfk@n7<7=%S#F*TjL5JgRhlESQ;noJ4fl&_A`E3JZ(nRRYnc8G&x4kbb z&GH@8D{AZ9fW^Ude0qpwJiO0-Yv8mpYjX%?o;p4whBl`P!kEhXrL{3OL2MHeHpg40 zQ|koKjI=98z-+|CG%N_CES(5P8P&1%5c>&Xn{y%W(b5XhcF1<$6`h`1hf$ciY7*3; zrIl$dPhfH4wBKs)!?kqwYV}%*7g-)0J)YM|&UUd(k=>T+7TQZSM?Q zKFYk&&^ifX%H9Sx0buJ0^6MP1)mJF?Pd;0-FEO8)WsWkfUb{z2t5&vb?+J<>*WP(d z?CPw&2iacPM)qe1gYg8ZN`d7`~P84p|Dn0C|?r{4cz2ke5r3yXt@ z&S52l5JEo9WC&`+;6k6O1*gTJyAG1c1Y%Ch?;Ov`b6d=H+ux>~4^LzPaGX}d?m3Pz zz)fmlxBz0R8{j5gI598o4qS1Mn{0_Uym$hpPvYGja~!xy7cLB^4^GSXEqAq~(@h%U z6{)DX$+nJ)m$vlt;Q}t;#9|roa$EAHB{VorW;iKlEtZOn=SI*LZxBOD(p(x9#z*`Dq zOL%ZoWjmR40mn_36Inl5|5^Wo>VJ7fIri?|i~W@_Vw8fF5JCv)q{QQK#nm)CWpA`8 z!`X9NTpI_8WCHP69ImHUygSTMBA~_n^O;(oOr{(%*F`Mmq=Rx@H|2DD;aP(5oO|zk z&n<)Eh?_yg;2>!@rJ16@Ma+q{I+blk>7A6&L2EkWaFB45h{YVwM->rm@m)P9)e}H1 z0eFJR6alGZJ0cHT9N3f=@$_0cpW2K@H~^BG2=hiLTB6|qF*lVbo`dgZINq&!2u(D# zBrqj2VsK*slF8PXJ25zJ>T@bjV@SHm7SWLDjJG~1hGa6)B9K}}rd>BvbZW&S>8A2m z2)qpK?TBZYilHS>VlCw>;ijhiwUKm2ILQ{#(3&qPX%KG_s&0#dPYDg9eu!5ai^q{n zCQ@N0U8J%_q_8C+UXHhl^g8o!mx?v;MRG2h{({%F6vxu!a?(xe%)W@c#kH WrVqsOl;e8<0000={#(mP0%-lQv`NeQ8aCLI9@AWfwAZa_e~6cJDX z5kd#)ipq`OIp_ZOpSgFEnRl|^?Ck8d*ILiB%9~_lphZE(LIwZ;D0H;dO#lFbIsgFw zJCGPRLax>M19#zc);7@x0K)hHfM^5&@C!E-y#oM*KmdR}M*u)R9{^zTFX}di;cgH= zdZ48axc&Dk?W@YdjgSQE=xdPdk#K<61?@X6b#X(y!5UV6L&^3H*-xC;OZflA+l z$lQ|QTt{fCU?Y*P%^HxbB+CekS)A~nW!wF_? zF2;qg4whSbS`=DtA}-jrFKzuwtzz8!U%7z?o<}BmX^h7p}1L!~f_IxQOdOeyNKtN512b&=n zj@s6{)l?s#0l3@xQL1oujLH%q zqNxKpih>AL0Mm+u7!m>!EU5pO0MI!aqs;LF_VqW6N>B-~$!0s|Ou6t>j~x`TmM{vy ztE9B7J~n&EJcy6C9gwKpZc?JeHPi9yArLuuwI$`G$3eu&sU!g}2B)uZ0P)~NuB+(j zN7Q4-iX-bJ_w(hIRNsi@M*{)rum27LlTH zTpA@j$Q(BV&hKt#1I6r#u_>>U)M5!xL7}MlB}01!#x||=DM0hRFp&6imB;V->lx|4 ztL?rir>CbQQMOWW7~rY&r3y8n3ia?P%?LB>NU&UrR$#oA1mNE|wnI9Q_0f}klNuCF zD~>;xctzmAytATBA5EPhuRgeG%VIHZgtaB72(g_s)#L|^0{!ywL_QEwsa^m*c-#3mp7s%diQQz61p?^j7;`p1%*4J>*)b?vnFbGbGO_$# z31dGT?=l(6`z8^3dz3-jT>#$`ogh63YgEXV2qS0SXF% zQ-&d&@vn?-oWmkRzPttSabnnCudcuUfuT;;pH}?YVYKveL@D)FWOJap8Ym?tmHMaJ z>lAX@NQ*lY^*>n-8DeXL!f$DQy$4hE>7jTeCuL2M1E*vN6OFzPR77}lFTbLlhB;Gp zXrjaC6nOC4o=e9P4JvMlf72ZlKo7Rkyt(A1_{DkNOqd9B#-E$u!RIBDO*o14G}3iQ zf}SqC6$*%(rQ_+i7jNidL_FTcpM8}sA$rAX6R!skktHMta8Q4yHtIk93>C|?Mb(+=`tcwaFB{nVp@EV>q!uAt=Ub%fu9MR|FTv- zy{~P!yxNaSSE9VKdl{ICtF|2iM8?uxBT?mg1dnXo2|?)RtiXp!Aet~Qo(5sMIpML^ zMAf@KrG&4}5%5fYQ&Ru6t5>s*Y}_YXQq&o-wh%}<&q-t#M><|qsd^spT{R=P+YeFF zY~(}kT=!#kl@IV;rJoaskG37s1;dN}ok`v1fd0Ppcc&>l+B)265M~03&Srt%C$o^K zFkwHIO6Ym!YwA{d+0D5YG-kKrDprdf?D~rgt@ej7R=MwoyHFhsFjehHN6mos+R1~9 z&M^_jU1`jAjh8=~^Gt=g9{J&Qx&lbwoL%m4(U_8f`CF~3h~i9^6CzgUIOWtJp12#j zU2$dTRWZnv$<-j44GJ*F>chh;xQ^nv!hYqKQ!7@&Z1)btckg9?Q$uj4h1=7AWx8Is z?S{<{N#~53kSu#SmkH}i4x|Re=>#zi(*$|M{qoFCo!+Ie2;2Bq zUNpm9U-`*3l58E=^CUYXyY9Tr`5>Zdj68`*oE>7h<_0M)uJB5ZGp|>ftlNf(#hC&8 z1q`hKN(`K0Gp6>kyfDn#gAIXv(CQ*rA$M=}X@t%Xw(3UXXlwv)9Sv#V*7BU@vzhC{EzzeuQ4&t6yk zcp37$!)rd7(3>*Dkr#(RiG(Moy|dSO(ml`$e9r?l_}Fh{@Y&yrtArS?t*Q*{R?Sa@ ziU9ZdXLZE=7o4XygTV3yWS1CLFP_V91O_#n`9Z!(@#=x{vjzKl<*`jyTT(#VGh!-y z6`P$}O24hxw_2r@5}Ft?-LX)i2$OL7i@?5nBV|vB@y7_XbhZ6hvNr_v$dST^Mx}~r z<2QKl1J(Gp@x%Sd>aNGySHB_bQyke`J;0ePpkmTE-FxPBtsoUO0wvIBHh!8o+#nVr zVt$7_tArV?>f09ZSUpuJU{Fo$^(YJ|`b9HSCL@j%eh;6kFEeU=$k~>8ZG2vc`z41n zdxX-f?bz|gSxB!*3f&kV(kUH89R=9=nJYhR3M?NGZpfCFSZo7fJ8Lr>3`s}KI5S2U zY;8kOVOYH>h6^qY0_T-Yfj(=fkA(nL6@9K=Y8&7Kn^8>=VQ(*tFiMClh(b*%HR}zf z*|gtcP|#wLb;uMxg9Vu(QjkQx!knYqKIflJfHq%lH*ORA9T5DZ0*UFoLUq%vTpHBz zKCwZBZa~)^@kHAAYZUvO_t0Jt2sF znrRW)maIgP#YIXCNf)N-p>1*3hYvAGxAY=`}M2(0W)D#Xe9oI+I2tl z(sh$SiC2Sfo-`Z(dks9v)&M}!SLk%|S~qG)HqVAP;}3=kzvV_?IjWVzRpgT1H$`Y!P_Rm=$r9N5sZ1!cwRX}o`T&X+F>*X)` z{hz2`R)pW9hEBYsmc-ebxldQ1Bbe`|&8c%$l{Y0NYU5_wGOA7Ea~Lnre*iA|H|cY! zgvLM2CgtkW_PU?vB#Wn6RxsN_Gv!Wa%e>>nNHvs*g%zg1g1+{ei7|*SS5)aQpeG6I z7#HTu?$Bp-Q+1cpaj*=_1s#`Qb*A zTE<*x>0L9t2&`Tz6{7@bP33q_&Get7_JcTzw@>&FR| zOSm4Nf7pX3kB2gHANKBNs2=X7fHnoPyg1Kci({r0GMK4ZODQeG86HH5UriY=0oQs! zCFWrPS-e!A-!CsKW&=4(_O5D<{3XjPHAViMn%j#Xh-u**gf=16#X^+nLmPu?*myML zT=KMDFh&$HnLNpT+;ZR0&COX~=wwK)qo~P-U3^EbQD}R~8Fo(Q-AQ)lI`TIdpFc8? z+1YXBY_h8;s75i$Vx2qn8O!bRh*Bo&T`N)?yXEF`d5?4RTk%}6@+#Uc-V<_9jJ|SA zm&sgccW_WV)JL8X)vBu&Zt!F~y>nS6TllJXHx`4qtFog5>3ByC-wO6jnf=rZGu5VZ z>>m%FDC;U%38MFfiCCkt-kKw|UmNAAVujO9-sEZ+Ua2B@jn97@9^%cHX#Zh# z4>y0&YV}=SFbz1TUexfs2WLo+UEVK#6_hCV302lZJc?n~^#9&Rh|{%4l7?CFSat9> zi=80iEgH#gfN6oA^~!Hu`v-|+Im*OnSqpU5b{mC;pxJX?b!L~;33Ok(lPcHHyoa#s zoj}1G1l34itM9H}zldHbo$E&m4dYJpdR5ClNS1GDa~CoxI~!|3CcrE&lC{aHZ$!$K zQ8f(AHX@IZy6CcvAUwFk$3H$!h_TI4YrR z{RFXJ$Wa}+oYt#B+w`{({M1t}P_w3U_5#tzzudndF^aTZeZJgc_ z9CB)7BCbUwi}031=aA^M>MacyN9|YmQUj?8+`7kWRQT5A5=BF#ulZaT7>jo_N(2;D z7Ok|V-Y$F}yJ?)#g zlOjZjMoy=zr|8{EL^8ixmK_YtTE*r03BEWjgBUmXY`jsr%NUFq4IA&&Z^IUbbjdDU;!UNC#@) zUt(x>E=d``B4>W~tjy)~j(Hj;pQkFTa>wUo?X}xZ46sjrJoKB_T63>PscvcGN$2@z z!8_kZP+d=KhCR}YI0)C-3CLq-gUUMyoY^hF^;JXkA&D=!vdR!bu*q-l6$?T&-;|;v za|X4lPq|cr?_Y?&f6l4m!ATCh7Ia`K7ec30VG~tdtIW>;@f_;J)yC}VK;O`Cv4`UE5}x8qqt#{ADY-?1g_D=MzlRA? z@=Y7x&6n)~@SpGzm`=_*vH<%$;hUhI{pN1HSlM$f)hQhc>P2>QjC%gpK}a@>(;egK ze4)HJfhvfzqsk}ip~Dw{?A^DBT)5e3Jj5q>&{ZRn|J(T4qZL?h{s9{B+h&3ui!)hP zV@dpEAvaylj$EJ+y%B4{xHz3_--gpkL1qM>h+%be?D#E#!=kL26!kpnse@Z%_9HF0 z8U}9F4NK1av3UNRG^Q6u#jPyM1d#-r>yXlDs~P9LUDp+X)MxdBrD#KZHO%)--OIPw z(=n8bF*|Ze#+r*`-#1aOXCE+r?CXa~$nEkrU>1wWSyDPew2ZKkj!gwk9Z`JduH^-< zQ`lFt+xdy1OGMBG3Z4{m`8cUj%!?`)-cMb)ETod1#?K&6Uf=s1fC(#dDqC-4f5k|w zVq+!lEK)Zl)T(X#=L5N#mbph&w`DfE&dE>`U^t-<-q&ezI%nE?S(!7{eGkp|T;gHkCtS z1X4;+m_^%ttcel)REFJM`_*rOALPzJE0?bD&v9bE{q1>5`SyPH(-K0R>(4Wq{Mq^G zKmhVihz+dnki%XUJ95N(O8KJpfbDqu8juCJ{3+Y8vWCjXtiXAxLmCn8aS z(I0}!VyJ&g{`LGlntm(&X4T001sf-o@V`93T>v&yhHOQxqL+1Uv$T)3`|m61*;jZ# znjB`D+SY^;@5;503HD9OEE}IsXm@4}oTiz{vr>1s@5oacRsG6bei-TS(Pse}VrEZ> z-XN`i{_R?2=SRx#DEaqplF!6JPtA~hvs^*k=M2aa#a*Lso?DWLhL$Ex9s7Jy1&j+b zN;#ZmNTe02P>tQvF?{HlNMP>9eX2JOk3+T0&R6kUpF-F^WCdvu4Z@^uDS>^w0IGOn zYQiy7Wcy^bFs7MXRsWMqY>f#dQ1sO(e8+4apP$;8(QH~af88_4_`)GZbO6u1%AAzL zcP6~(L5v9Zv2hrm9j{4isIhpbO?0#N?wHGcp=FUXm_HIi(4d!F!As96OOEZ|+obS* zCiDRVQv-*U&@;hk>$&U7-(y%xjIG%jbBkiQU~<@#eE4LoK~=YhF*74r%8TeUKVcBK zvVbmWW=o5pc}LA#3e9>HUu;S0&vGmIwY|egwa*;>rY|dYm`;ziF@TH@y z`W)&((!2Weu^KG(PRq10jXq?X(W9{Ij37?M9AmR&sxA0j5Tge8DN`}khzlvzp{pcx zHgF~`T1-Qmog|^~yZuK^QK3Sg2oNz@4FBUO==y^+8m}HrmVa8zVN5PPEL2 z{1W3OoEc>wsUq4~rP2+PbetB(L0Q+;u9MZIf`sJzIf2t^#`mz-1tkjR-J0M>OWG^L z*58Zgv1?g^A?BfCc_o_ww2axz;sW}m(;J)Vb>>J(-F6pXgTKM6-|Md<2lM%bvC`W* zGx>!x%-79I?;$(Ni=?R-kF5v;ISz69OnHQK-QoKoeEc( zE*EE4%Z9XRc-O>-2-_~OTjDvtH4v_MQMEiyQQ+!16g!q0R@+n4_nZJGli$3chI zG74jHn#>`9g$iYxsu%bccqTUcPv2b%+CMLnY`a(Bkr)?1IbD&6WB4SSk7`^XDv|?Y zy4!`@e_YU=&$;K$P5~Y&biC*fq{vuK==GHKL#H`=uEE|h)7(+`U05(Pm_exK9qoCq z2IH>nNE!Uauk`BnDrlvmoTY`pjFHv837kp)_^v5??apr@r-@V(No9dBHTO5Cs>y>S zS1>7#Y%Q(^V;1XOjfFppo6Wv4j0z>RjrKOumc~&=9VX_?w+%W9yNI!amtjl zxb75+$h{rvdX877*A^p&0TsFlR8wl5huG;<4jXc&1}I+9;4SoPtn@0SN^I%`xkW_v2>p8rqWw*Myy2dAJE4mC3D0Sshd8);SMFK$z+#2Z@dOund^ z#UYk7Ha1{{xwBC`#7p9n0BNlMbZI?a(kyv-yoo>t^`YTSG=6ymLiEG>tN4ssxt{TM z^6ZUwtlw=8c+s8`#)F|n-~esCJ} zDLw~CX(q?c6Y)t_x*nD^0D|kjqPSa zM)UJ!sOO#~h(;tYIYnP}i9;#MR$WsmE2!D!iGc$z9u4H%8n+r*w`3C8DEVZ^FJr(9 z$zB3w|D0?-R6I!0qgw~@C-cERxbLj|*T91pFut{+G#Am1=Js&gz zqGCrK7GUMqHno4MfcM3MC?i{T#nI{AGfSlXU*inaEN z-SvYM^hy;$+yNUvl9+2J4YoFsKPW1=kTLt@{;Ss#vE|U)s7^+%1|AAAbBKjb$3wq| zY%kbE%7LU@jc-!PEdDOzJ>4nB|QS5d+MSPmjPi}-5mUa(p9Wtq! zu;Aq+=$^{`2e9~AoiPU=W^c-Kuu$H5Q>Yp5gm~Yh| z|9Acl0bKa3zCrGvYyX_5aCF36(s!G(aHhtM)_MLHVKWqH)!u`I!>4l5<&!eqdh1HqMsIYCp@i@e#SVZqlg&-sW{ z^L|0FD>W|SpG~FiGe@lDag`Jm(Bz}7$bto_4~fL91_afhiF{tQHiensS zJoT`?RR3^QI13l|jPcF}o$=sH10YX@su}(ebtK5?x>6aC9!`xKT4I-Wo{2eiB#t7} z6Ht5Ea?)L}lv@KDfQ?_4(b9WX)h3RI`zvbEp!uO+2!`w0H82_-#^9vjvY+X=tlO8A z;ExXVv}fwpnQf)I4R+%>mWF&!=Kk>Q@t6z}AuXlI;FOBvddW0vR4&rny}bel66fhG z_U=3_&5XyDKzbotYxfYw4J-XTlYcDE{m!kr!T+R2smD9#mLDQSMQ1AT_*4nz({-f~ z=m2?%>ZUuc!4nnS#$y~P`NGfnDX;qYOU7qeAm&D@aLH1riz@STcy|%9su{Ug*NXmR zj8u5-yR*MZnH_|znXHe}b$fmBN0~WAgsk|xydJ%>z5Vw^BjigUe%DOnUjeEKE1;_+ zc?iljrx6&TbZ^LGhvGESyd*Z^Opv+r)MNaNmXF{Y)YfPzjedMAhg(3=#U%U?k+^rX zN39i_P9v4At*Hd;)IhW{G5EAwq6$F>F51QjDD%|MmnV9qLLUjB1 z+3RhM@q?cJ%ukwk_@c8LwvA7#)7*EsDAWa{&qJ2(8x~L}#cveZ%#PI!3QCQd#LtsC zp;Q)02&vRsm`yjwP(QPUSZ(8@_SB#fiu3={(!Rgxx}5aF{u4Ns^^eWWy;TaW?DjM9K-oEE6si z0d+hHA*C2=RG*d`?1Fu4{N!k*q{iY{%Z99rt1cE23Z6GjdJNc|B8xRr+5PFmH7-kq zXn-lW0V}y`gDV#}gPG!)efoL@6dqIOLRIpK%=n!%H!5^F19Nhg&c3gPqn{r`%=t~@ zi}wC#ax3Sp&&F!Wlnm8n)ZSu|OKF}P!@)bQlB20F*o{YUNq!+u5LF*??vsVRg<3Rm zzvM~?K8u|^LTzf<)HMLp%pyNkSHI~wJ!lL7)14`=+_y1dcq*GON1j#wSZmj3&Cbh{x!kOM zuNIs0pFomROpFQw<2MEtLdkMEK+&LEGhU_$^Ejwjx|+VHsg8U8DKcp`h>@?-c$IRp zCR*f_Q2WdQ!Fy+N3(ce-9+S@~V;ssyFxX0>ay@?SY9i@RGXjJXUkiE?da2oW=`j@!rFWH3ceQoV$HGifN-8?3z=Jra)`|>C$(5fU22(Kc4L-WxqWx}ydJ-%h*SC30I zR5<4(Hj(HzAUtw_(kcGlJ_EvO+3l3=o~GFx8?R(nA-S+(1_aZy*lU4ol}rCm%$R!n z(bp!+@&7A};iA>khdX*XB1QZBh;dC)1UG>y>w|HB3v0dj}Yw z)!W78rayiBl+4V+vbNkE?+0=v7p#dY*?T zLNT#%0p`Zy85@}(P)VUM@ZRU_rWv^mT_T|hlO)`+YR<7t!>(1xiYC6xa06h5$;sKY zKHV0zMrFgBCFV88#fEBIUaJ`Ytqu+W6BZC-#=GOo(gL?>Q#2? zbX7EPwL!yFR>_pKhx5c-^V=`xTO+9_@eK$ofsq^%d69eNVa>t9taP^?zhxGGtRZ1_ zavOM^ElpJa0!+^Pk0IMNlP^|Y147}(my?`O_i`5@A;N57F$QORI2^t+*F_#Xm=3#V zn-`x5%|*Hj1L%cg9$MJ&Q8YtZO_YD>aF!F*+Na#>p(ZKWVLT|S9?WA1W;p}r>jer_zlxbt`Z>G*5UeX zJJcCLN^+L(1F{nrgJfJiSp|_>=-px2akaV;Is()8&#hz~EGJB?ADB&yIo(rPf^8Y=6vCz#*(NqQZXv26Axam$u;qka?SmIm;X^;moS-f&xB4N!nV6W$ zD=RCTI4mhtot(IIb#;wwZ9!b9x)r$yt^amw%KJ3+&r3Lip#|(*u0z#<48K_IVi7Uu zPI!={_g9cY`?0!)Innrpkdd)Ha_%%RJ1?iatQUW4YfC^(OiM$9NJwbh*up05`E%NZ z3KQ*DCMFTpbyYFc8Kxj2*h%Bxs;X@$BO~LZgHNUb9}CB+KA2g~gp$pmKG{`?OTACf! zs}ho-sXlK+K*u>)GxmA^x`$VpK6I!;G`A75A2ME|oFn}KsrXC#p8PA-_@BrZmiF_FhbX7d%jmSQDomLRUYuSp4KS)o7X0wLqzV7c#K6d%qbs#tUi(%+P>^&+B`WH^kg#yj zU(tpps*?X0c$)vNjq3VM?MKJ&!O9-jEa+nSkK({}xa~C2rXF%dFz%kw#&eZ?dP3lU zWMElEY&P^DLP{w^kcy66OlJO?&aq9qPmFMVFYRjk<9BrhEsgGL_QA&=8Qjy9 z$iMVF9X*@5pW;R1xc~7@HI837n--jw5_%o+YL&vsMb7=1Gwa8N83bm)rt<@38HU9$ z?fR+*@X+;@U#78dIy=E}36$^3;>ojnjEXt#C99UtY3I_F2ry3HS&WCOgD1H!L=jF6w+*9OtuZ~}zv4jCrf1v{nUSzNvq1Eo8Vg9zr{bT?#4mPPPq-N@R zjq59FFg$a+2MIlK6tV4uz#h|7?~4Go-=7LOfxC21?h=(#T2E%7v*cAM&A@eu+iG4^ z?pAab?wJ&^t-j>E#Byh50zP-Q&)ZZgvfi3|c&BXRerwE8#Hx{#KJ;OSubMR+4!$ou z6vadJl5vYWBbBt(%W_k&D4k_2!?qGO7iRAp%%=IC&HOoW5w3tdKKoj|bWc1cQ#o;$ zP+>1V>xm_a)0+>UN1la*@aEogK;BV!QY|vqeBaA%bO8JQFAd@8mRd*%L+-tYNV}dV z?|+u2{b+d5<}X~H%lJ-@bi5M!cPj6G*zY)IrzttqEm|$1?CJ4Wv@$K=>$7Kk_{N)T zw^{rS(eNPb#^76m5SH6r-Yi_!{X6l0rx$@}%r&B9fQbc}iN=7?cNZdr3q;J9Y9#l~ z_a=*kgzGpEngxkwL{|Ct%)(<3&HD%^d-AQC`B>h;;Uu~y&rQwABDn|5UZDMteuKEx z0~XCK(S8F_Ry|MdJvsgwkJF6=WFf>$fEZ|2L&Z)OKR5p&CRaY)*@lUfW z#lmWbC7lYG0Ea7WLyb;DkY|5kTNK|sv5Y_|&1)6Dmp{r{9N%z|ny@ER$gP=FRcC%Z zgG`#be%rFpH|SD2Ox@gwFeunqqKdZ({fb|VHbcJO(<{q-npR_^YF^3viEli#F%Cv5?Q9Ge=)cJYu+JoNGl;5R5E=9EWkj4`LIK z1kxh)@2QI$=jcQ-#1l-dH+m>FXPY5#7&5r^9x3Q?rwN0B$2qc0*vH`mTiaRfTYv-|RziNDle>Ve0WE*vgbDCN!g*Dmk) ze{vQ;UgT)=2+2bQjKUQbUg~x-OW>GOZ!0x+1%I63>CO3OtmHlfIt& z_BlJCLSnL6ySH`Agb4bFY!OSn_w z{FiGpJ6Ec+uQ?@HmYN5duFRUF7&KMbX4U9uzrv;hSx3zqj*eyW-~k+NSC)*et&YuN^eZU3uBV zzJD+(@^_60@<*}B;YZ$-AU?i%=!~5%zCIbEY6@QxwUu-wyF6Hq`+0^HHe?w>kkSpx zjkZ2r(@3~H^dIT`u``QS#GUDrgHJI}*CLtvwQIu4Oj<$AP{KG83e4GzAw{2o8WQxj z5v}%PQes9Kg2VxnE?jp)D&k4OoCy4u8 z13_%FR5MCS3{jleke7kuf;)?^`IA##IPK@YvFZ$^p}YeFDxLh;HGIahzw|~con6t$ z$|@08-iWx~pcQ%8ZHsh#9VqkbozczZVZaEpdnwL5as7a+9e#Pf4_^7N>{g*mOQ~^$ zPuC{5RAYkiQ-7pF<$!`+GKYVw_YzsTR=Ud7(HAbn;P%vuoGOQ_*z+GRv0EFTgJv}H zMC~&2@|Z63re4Tw4m9*3#lHIURO-J#?(KQ$6+ns7VW--%RSgk9$#Bq>-;N?@V{z&%3vt7TeSWQ z5F=m6hHcpU2=jA$_kNe|PZ6>WdO4o!_>=C&yOe7(7%)w)BjDTxc6cX~oqU%xgP7?G zOnAi^5z~ISTGrf5n?T8ym}bgFIE2&xoPZJY&KlU?t%*G6g=%Ag#}=sCab4iZY=@si zopm1zXb_GqPHAoq?7dv^21I8W-e+dA^~b9;C}v@KBd_S*)9xEEjUWxZ`tr2NbDl5w z`0E{PNx10c!PnF`4?8O1cef`C;&8y|^!xh9_0?v2LJ*jMYql@^>144CQxJAqqvy$? zxaXWYh(j7Qao-l#(fy&y&q3s2JE)=WQa+7cF*fav!atQ6LKR4y9QDl4)>cT3q;e$0 z#^Q_EHbR7W%5>p7lkL!mJao0SgkDi7K+P*cb-3g(ByUDH5qwnO;1n1{@s{=GxmMfkMRky zgk?W8Rz=9L3v_h}x%spFsVRtmB%L*3l;as&_ddL60%DeVKJ zh&zus9({&8-7YNg8!@MLSqGVuCbavmZWJY99anmeAMNMf+rcUQw89k(r~Kp`5fD~| zr$@urKQ_%3&e@F7<9*s60>8qsTsgWMQ!;C+=H?6r^1F9!!+!9F{#tf7!l^zd5aKb* z*$W8~s`d7o?T;kE+053bCTD)i10}!+Vv@aXWR!@>HaeA6rnbEe^G{4}li#8!d1zNs1$(dNf@mSKFH0`?2Tgv8Jb|;IGTWls50B zSn)JG0uo1TTCr^4cLB|G=2V=vev8};Gbn*E8!G;h#JNA0PB=AUQwi6MYwb;fOS{*I z>1l+xO07KgNEfc}#Q!IjzkhDT1BbQ$ohQyJHC0r&`1FesxzvcAx5jfkaqZikK)UII z=#I50*6_;%P3*Lt%i6O&9kX1^@rsA?6;`7H)fMuW*XfVI)VUZZkwnaR>W>B%_j04G`Z|_o!O-y1xlxuB{ZSZ{RcqWDfvBy3+ zTygqXXI))iKZ0XXvvt-%cFLCeZ!${U4f(I;Jlm(b7H3B%7Rbe_nGy~V=k+Uyr44Xz zeHUimi8TZnK-F6c?5);tKKM`AK&ypFdTh1BFl%pGd|{qfF^ev>jW?<^`Wk6ZS~HbiXk zeLl~5;s1`oaxBC=|0Oll)_e5w5G?7)8LM2{SW0cz9sG7YNBBd(T6nA98lHsP^zg<| zLcsNj(`3Fl!M%s=>Z1n57`+xfSGhOUb;A$D`VbfUOFZVLar!T$op4aFGg}h}RnGkA zW-1UMRvXgw^w=H;GoTy>hEMIj!XF#fqH)Hq3K5jYeK!Gqw*Adx*BCN_Gf`ljO&b~O zlAp4M2Je&O<croK@8y@%2~TQ?r_ zmHPS79y29Z=d!qC9kx(3}1_q|LQ0ebnktP_Rdi7rS%$>w@VsW9KQwk501X{{9`t+9^^e*nl1** zhH^^#e2T`z;s@`2A~kx{R#t`|{^Xb#3~}Dpn|vX|WNvQ$sl}b@W4&F9L9sk?IeuPM zVX(`0O~D5?8^s1wzN5@lzc1ZV-68wP z-TA7`6ZDY4J>j8d*NH~I+xwt9P<66AWk=k0t1Xr-ua4JJ;z%gVOh?mZhthWg1=vT! zadYD2f{aY<;`_ocAN~1tf!m|AZ2jfoY68v*V}p?6$z(oj{dbDxpCSPe$8~_2g~hi& zS8H0<*39GMx<9_6m<5D|P2V?qrQiNjDH&NAbw&Buz*G&n3A=k54OG+ zKQWTZYGf|hXLCb!F#1+4VYVx%>g2EaTr+QSa!SDZdK644LwzDb{k{okLkam-mi z504Kn3$PQgnR@4twpG)tz0GL~DB=#HfK=kQf!|vH$R#|n$8Gy~GIAL!RX@``ogf@u z^xAOrLZ)SAXKm+++y3qHFQfMR#k=8u20&M&Ua34iO7Gex7Sj(erp`RpcqVV{oWCrx zpV<~3HqE?{vp8(>{_B@U+E>5KVe34%$idy9wtfHkZhtQ6QrnCqG4zYfRQsZ?hx0|8 z-c{6+qF7$P`(`&^{XVw)?`23z4~ZL#*7Ascd;6!W3?J+?JKbfA$WeD!{Xo~V7KCnP zctNB?P_eu0(SChYs>sZQPvk_K;aSOgSo^zFqNOI+?x^MIH{K5~`&2ky=q29uy0Ehx zm=2EGyxi@k>N;}n`gAW~>3xXbRPglXFN;d=?G;fGRxZ|e z?5qnx8@e|`9(h5#^Rp*yQmYfm zdi#R`1noB&%P*(;{jQ83Qs?h?qnh=cS>(P>9z>z?NyyS9*xntb)RW|Vai3~`;e6lp z=75Q}K)uVebOkFlPq4)M%Xah#!|qUjIZ~XWN7dKKlo^1XTNGXDyE_jKIGj0Zk-ls{ z@ZJsk;JRiwb@pg&=G(L|+vb>S_UfkCYUHph;b`Ar2=l}3%L69E&{dlL!n<{wPq3_C-#L@%0rGDE{5s}g8 z{gro$4_Z_4ohQ3|v|7X_3cGi&sBVam6YNh?YkX$Nhd*!H4U;}ux)_sW^gY~QkqGb= z_brpft5pgwvD}w;ljo?vX?*>1IF%x=GC6$v(_xCjQx$!N*h1aJTId4XGPzl9>=sjO zUNG^D7@&3>BeMA9SsfKET^%Z1;9!C2=e<=ObeJQnl@XnA;5U?2c=V{EqtB4Yyhf5j zQu{`MzDuY4eKt)^J^}|*OSRRDk(ncx%eZMa<$!NfzwO%pjP&U>-nxt1+l8-PcKMSY zcaq#;lPQ#a>wTp4?AQiZQEiV->|u7>3m1(WV?=Goy|aJ(*Y73kP0_oHAD#VaA~Nsw z${wSn<)1i+nyC?*7*{w9L0Volk(*c7ih`1ufv!hgU!#x*o;{V(nu&b zMUMK>tH)ua3`;V$tBDc_=$B`9okw4m)qOrsRLC}&E*Fg=TKIUO5e zKB(VR(R(IyqtU*fr?bwr%}n#ur{1~sm{fH0W0Z=sAO9*jFzDfBXj0FBTR4};)%#AS zK%=X>Zg7DECbNJUucZ{rr3tjpOoCn~%9Um_K8UnX@5<*UOnhJC$>+B5wmSu7c9S8t zn7fbJ+~`o3A(Q8-n8lIKn>YJWMEi1EVfHS~F+L9`TNfQu8)R=jUZ_Hki0~ebcoqq? zHzY(B`vly8ZDSlc!MQRiR52{Zs11CWKf_1X&HUdC)2y@OIqj6PoGNrd8wO=%QM# zduCbu8$0asR8O;bf5c7cuASe~CUNwihr=LXkWr&ZNvEw}zvyw(KJi8vc%)Bd>CQ(+ zz5p50rRZcjMNHV4Z-R%L1pel5@xB{1zvwrV#47psUvD1tjvfv%ux#zoiEbj~Fi{)S zqGOM&$P%#c?pxM7cW}T0uzXog?&MA_RLj`6m%}SmJDr=s#b-WLSvb3Z_iv)~^SFwp zj9Q4AeH%ON!(3=l%c!5SP1HuqFi`+Ym& z#n3$8rnPQ|NT&0euBFg%*8lk4t<>`?;fwU2*mqykePNxdvj_Kq6Zx$-&wtvryMv)H zs&&ZRUzp}dn-B^My6{U~9 zuJ36DT#a{U>=H$Pp|XvfXQ!**-)d(5Hl4ZuO80Y$qEm0gG<})pKxp%-$CcbhXcOy| zVx733Xb|bco6kKT1K^={mnDhtpT6njOXNd7?a}+Tg;%dTJ(U9R^@n>;X4FL~dBY=@ zz>}?ZOMk@b{{%exaD@H!Y$@_f+pXS=eM>{9|MJykSdfn%kS4`b)xe0_{EN# z2qrS7T!5WllRMjI>Zq4H&oXr;S8v=ctdQO>D)U?Y+E>n8kx?!~{lo#PB1aLph=pCG}e zSvf(@u(aJtf_QCLpT`;kf9uTp;u4-jx46t+v3(zUaVYzP?aEDVzU}FSVau(1cYl2p zhRtu)&bNi)yR4e%W4%EqL^u0(7pl1PjQ(lEmN*yM?cssA`<25@kL;#oR;`7ug-+h3g{Jabl?gMk4l+LG-i~K~RPyGsZz5`YFf0la zcE8)dSjloB<4#~fiZT1u>EvStw%E59y=mbp+bdB;vh7PVtsHrZx$mo=7U$`)J1;en zk4}g!^>1_zbdNN9zYyg|M*77KeQi88_x~ht`Lpq5k_53eq0eWyIucv-^B|ya zwmp40g0jFROmI8weoOus@lE00j16c7yBNjZeQ=^T!|&3_-$Ht*Cv9Juw^HBaxhfGb z6POn?BqfU2Br5fWeY)xB@NMU*t_S?4KV1nXI(v-+_2NHAq18{{;=sIYn*S{hz6;}4 zV?g%pdVWnC5c+0jiU2C3rNQa*#;r7n&XQwVPhtT|ap|&|!XU`HvV$`~hF|va*8o4D z1T$|U+%Z26$czFmaZb6c7hw78IflP*+8w5|4vLm99%Xf%^Djxs^ck}}^jKY69SOCa zd)e6$Spa)7xgi+B{Iouy1`gVe_)?^*RVS0s1r7?3ak)W1R#HDabPt2Lv&x7P@MLM% z3U5o>C53!j$*iFWxSH@8;be=QIG_q(H}9cx56>9=LicStbssFzch{d(&vMmH%=92U zZ{M}Rzqd*HSS?_tRnPvrtY7(lzTKa-#}6v8FH&TkCF}h0y3V=Jn*bvbIPq=DM@90V+7YNft`u)xCDKTYYC>v;PNrpIuSc}Rd%C^r6BxTb3p)npO>3xoLWUo(0aKko`2A!n{#j8BFczm>ZqE(zc*P!HtDfg zTRnQ0P{09K)ivN1E5WuO(s1J%n;7|1;rrJO!`}7E)}t2KWYW~$yIzBL`3qxvaJ1IR z$X+)SsK{#dL5d5x$IRIs9q(>dqN1;>Po!5HRl1aPmo`^$Asbi}64{yz>dx+?Oogws z@9au#9)c2?amT9$EIE~m26p&m(i*TX?9jc<+b4?v2d><)84QtzlLiQ&zHTCM4V7Em z4b5t=I^NkN%iI~25JSbNHt9~IuO|&ynTg!Ros#;XH3{8RSQrGoey2xN z8Hn#YAaEPbY%9ZF8G^+Ow~Dyz9@?WcSCcp14D^d{7GO}96z!~WOF46bK0F{ zh!07_8n4P9g4%~+Bo?y?)tAj=H)!!(7*ENcyYG7n$(GEn*{~IZ=tyxPKxwtB ziOU`+7EsHX1f)1&WG4PhoM*Gkx@}Qn=wnL){2c8>!O^aaikolUT=nUZG^4Zb-%TAB zmW@qz=?W7{r?XaUAUMP{9dIuT2APXqTSfQ@m&|+rsqW=Q--c$#fotSW+@;`t*u9vb zG)s5Nc#3*w2oB!2FOB5Cz5)9d!DlN$UK4OnyydeOEA5mS$945o_~y!6u~$HKtC=le zc7hgqC<0@AO{QpLCCyBEvU_Vf8^cBB44gt$ZD~NA=?*jC%=e)o?pIindAyp1JWQ?0 z#SR@3!_mCL#GO96o>?kL!tLwIXa$kqp0qL`QkBa-2<{@U=Z!kluwj`8!Kh zOr>;32sEXpa+4J#UDTi>Y~3-z1*7ia%f`A+A#V=GdzeZfDRnv(=NIATm-?pOtvzg1 z)w1H#PXn(fLL7_af%RQc(Gu6kba>LZAT3>(xgq6Bzm{1QWI!{CCuoDdYW*+|sw zBVTi)Q#%l*YbWeJ0Gy;T+iPzU4xBlE7;8`4r9Gi@lgFyLJ&kJ`_kc&ZUtrUgsBa<5 zgH;I>-fw%Z|u;) z{l0Otlq!;LFX2t0I!t34_zo&2k^r_-?!^XaEXYIb-ZL7amdt=t>g56EKCJ#wytZ_> zIP#=C?c_!ozE&w22nNV0I=cX~zW`lsn3N%ST!7XnA0hZh9&Te7p}k2{-htNEw{(^S z70k;!8bckFiT=@Tx-7J*ygcnDE#{su1V0dOsjS_q_n0wsHCZ#lhPjA%s`dBjBI{y; zq`$QQqiTXIX00WZO0fskade%N`5;_^k}&XWY$n-EL{Hj02smxcBizWRms11TaxyGR z$%Q&QRg_j`-2~zHcPSU^9Aa|4&0F4(AxkY*jw5>9N6Ef)G%Xr_EY1oA%13FIqpl9D zgwe`W0&`56g;3hxl~-NJZD-=TA~1`#?9@={)m<18xEV;9(~F3bI5B>683*bf;+UI~ zeb9YS)GxJdN^T2m>m@_7n{{5giVt36zA-~*$6jwL%k>_*_v`i-I=}2?u1hmw=HjCP zJvLfAk?ijRw6Q7bp!Qi?8(TI7D6?RDpylei$XhynkoB-MRZZO#f3R1;Q^KxK4L%eA zk_XHH6&AM}J1jly)}3)ub={C6W*aE8hX>2ew81JcM;d8iWizudP=ptVmL06DYq^$Y z=Jrh~N!-*=;q}~j0`N>Y<8h_=3%Hpi@2c6R(*t3V4B!yQ;`VR@Y2oYyeA(w9M|SIt zhrfqudxtc+MAU62y~a*Om@LVxvU}R5(5hS|%1WJODyje|QffNn-Za#30+~4zK<)AC zsr2rfq{#LpW7=EacwACPHdb!NC_X3vLUDzdh}WfOIH{q1#d=p-luk5*BS<>x7zO|J z5zegUYwqoeR5paQyjx3e>@=Q<5kpQ!$ArX;QcjuO@8rzK6o!J^zCV1>V8$W-NYc8< zIcZ=JG>bIF+RQu%DW#@ep$J3xZQ_kSo6|Ul(CuoGZsDBM4EEa%ZXv=%InMB?zDZGJ9a&ST)i##Ha2 z=#Z#tk%nJ1NOgcwq+(c>U%z$++6AVfPwuz-?D>^12PQ7Db$||OywXa|uiRm;#{@S( zjf*JYrL)kK5a9=N<1%XGy3w;TORJ)&vzwdWjAlrbGIrM1gM0-n_EHB@2+$=<%X)Bp zzTX#q@?s{{?u|@mvkp!w8q=ND70!8_h<$j6gFGHw?v=)V8N=!r!;$6<95Y zKSkv{?2j4J+N%K`Ho~b!3H06pyInwA^=z9dEZn(l>d*@*6^F_uFhkujREM^PCSDEp zotM{KM1J-kESZf>xAl1s^t(2klud=u?RhE=VuZ^+m$^tsVO}&6$c)WGNA1zY>YPcJ?QlTjtQzx&_i2Hozu(miUZ&wu* z${rSsmJny3@Y(2>T7D%IlY`H>x^JnW_ zbYJ%@UTs}Vt2eirLeEOsdC@)Q4L3vz=p1zl)mMOu&{{LC8$nghc$_AG6Zhm0De7K5 zUNuu}HE_^oogIem@`*Razh%(Exer*2Zhe7b8_bluIU`GzK(Hvx!wigV0)}nXbHEf; zjY?XxeOeTk`83f}=Q7krdYs<;{S0E2r!X3?fl+c-(wrIku^-lQV;W zmaX|vN{XYD_D#A?tKnT)US0v2_r6QwHqfsz=~IWZ@EKZ=?|tauoNW1GH9?(oSQ_L( z;mj>PyHx#SZKfh0X!rU(r#5>$bUhD(_P%{a2W*4eCPIMANZSl}Han=BtDt1KdC1|Y zY2s(FnuPtX>-9+z1f%*DOp#OD;=q{321Rm<>Eb05OV-u!X?$%91r9(+hm{V{ zoykx*Q^1qE)9k`!%5a&opW1_#TI&-sOneND-_YO2b&P7A(A7hlRN!iLN){Vb^@;+d z1GbW>$o6Ifs5GK6DxDlw+BStAaY+KV7{7U{im%Zui(wH-)`Z*BKL>T0W`;TEFoRuz z#*wCNRorE(4L(r@hUQgh%5GLE+!3Rg`_4ef7o^{1V(jtyJoYRkyMlF%kuy0UsxPUGN5O|8ZgJ`N4UhVoM2)Dm0Gs@GQ^&VFYM{R1c% z13qru+V5#6aMxW4eWKF%Sj}4a^oK74pgvPHqBQ}YJ!Gdsmz>fwj&|l35Q~@Doaq2T zs__K8e~#*!u`gnlNy|0`4IRo3C7qpCVtIpd+IL?^u_SPn;p4cHR{h^B2M};qnun6i z#vXB`wzF~uHU+g>7hm($U&~4WrCx)#m}$f{4CjF7buoRQA>tOoFT=sQH5FmAx^PCz z#S+DL*h0M`=fWZ5nFEi58!4Pl=Qa4xvjTShBBoZObKK&WhFs9&w#>Fc>YXj#2?S7$ ze+>>J)N^XezHw>fJ zv7Bzrky62<@yI66X=FdIYhXw7W#a$DX*#k~xKk+j9CzPOepXtX_2#xOX?Xm<%}YDQ zrD^p81#fAmytNpgOe@$>)9QcrBmB=mFTHYLn|w9aZ)lT3`{Y&UY9((Z+dH2xj%xq4 zLFL;HG}LH;dnO%dUq5&g z0{Q>99C?mb0>g281p+IU+Ak{8SwnpsDxu@n($VWxzblgc^GI@TJeRh6#cwp&!vLi& zjmn}nzIZ@V{6OH}C0&2>1-((wD4Lm|5jCNDs!_FrSv;-g|98~|qOclL`BnqA z8Un!k&tHu*<*nK`fi#dtWJuPayo?L~G+v@R1HR<29n zv+c^c7$oQz0`!01GyUgD=Yl0msAPBn?a$%h7^C)*e z_tfpY4}mFd$_o4M`?yYohg&H;di_EJM2MPXBynjj z*EY%!MZOXdCFp>t^+q+)Qmj;*Ga!QGkL-7LbCi=A3<3nqXuLTAwOiCLJ`%Ark#Gin z->Nu?0v@iYkT@$po>yNZ%3XSUiqa(lKkD@2x_Rw!q2VxGQhO&mzJUG2cA=PZN$5jVR9mXCK+kml(TpLshXXT0XFOatTJ*Y z$VOi##%?3S#0UJdTuaMCBWH+JTSPACM|gu((Y1{9FKtBB8>HWvL9<>jaG6@$D!JtD~5boWcw zY35Ik3AOjajvyx;#MM{Vg|5l2xjg^(=!o)T!=z0^ld*ZWMXAQhoWCHqhn?Z4D85St zp(|!stn!}bf-aJz;zBQE4zA{QI3q%AitlSE6PhMwXCl&HLB!V~e)ax9HQFap9dpX7 zo(rRt6E;Yc{i#`ki~|*vzfMXSYKNtJ7cHnMmYrCHUk^nG)Xj7jJrUfx{pa`wYr$7j zb}xkb!a9ONm*^KZoNa$?wU&#I9lkONeb5wUiW!CAj}=xf?0)bMe3})fdvCX8$J!ON zY9ICt-B+OLKF@vm$JLmy8YsE+=OOl#9@3}m%-vgFXL%0Ck?th+!EC7><(V<~%boir z>oyH1?vfT}yaw|jn-kW;Uq3~N6mNAV3Z;sZ{;L@!wKqf;T-rZ~y)noaQ6K+aZ{4O+ zwEVa_Z1w9@l6RfaN+$C56V3mW92d-Mgemi+Cav`5W%`Vck`6GIRMRex9~pI2Fk0e8 zL#2$SzgFjR5H+LnSMS9od|Bxim#+Li?J%1%3F4c2Oi(_8=*HLU-5Rwa=x_RPFP&S1 z4Qt(weM9&z5f60c^BFN~?%iF=4g&W3b~JxTvp6VM$b$Paw9u&18agz4#wUC-r*z<} zRj=G~$#3x1H~tGfh4WTSZW8GCkL8N5wW!Bw+FbnI`Aj359}X}E@!o*4s4E6R&!MbW zsP4pUcSj6p+K~VnY1lJh&4<5g0Du6phrg6J#ykR$Jo#Uh((q1uONUji--5?p=v&~w zlM#BnQ`~Y1z~ZqQQ8#!PDj`A&_`o$8E~JU(tA_m5emaWc{Jl~sIUcX{?I~a_rIl7W z2Yho0qZ|_hnsXEctrqAsIq_;~^_TpwpB`CePnwDEC0G^{0jOP2q4{{ z6#d{;ZbFZxMQx-2hpAS|Mk2%;jqpEUbpYs z+UhQaA3(*Q$zfLR#1xYH5MxgSh<*vXkDntU0w_JoCfZ!FL{1lmF1nJ1a@{Df7{7m* z+^vkr@_GW=p}F9I?i~oOE)%xNVZ4E25Po7Xb3T9d2uFFReTzaHPAa3cExegpMN{9_ z$b~#TH};lybT~R2l+yI@=oUb1e)*GWG?m%Kih#_|9uZRG?6YgO?R;YrSW&gZ3 z)M=U#_+GfIw?TlrSgs5&UGZ@0YfC5{(+uXP1QDQbK7=boTdI*pfzd2Pby_}yxh=;B zm2&>80=@ui8p(5g^nyc<6u=_2A|HG%qnn2x)&p5!$X|Tq{6-L&PD8Fh5$#$hkM~g6oS}O2e98QicMX@n-yMG%VaHB_6~c-Eqn}})&B9!SeZjR< zg!A`HdH-51c7kF6<^8lR?W0eVV3x12fld(7&@70=>|*)wt890G`Gp+7Vy@OFR}>E3R+r4T4vzX@rzbU|X@c zmXmyV!BzPK&R0@3=ag+lY=jd`0oa#2-~b@z;z~jOhp-L7>d$hb3zE60>lRx@4gn!V z!(iHB>r0j3IN(HG+bLwW-J#`ReG5v$*6`?$#_EiUx%Jp*)uKkr@%<|)k*K(7DT9G( z>6h^Iv_iI-j%nBH9-}P?l6oSP0TRC|BND>>K)@`1vqR@W$TJCVPDM7tKEo=2Z-uxA z)$4hzhcQ2EJRHz=07PPof`PeJ+ymPRKrf#9gd)TD2yQLiNajZ)yh+Mld z%nvM@f(3KMZ=#}-u}v0;G-j(QcHR7;TMU2){f!RuHINDL2CA7U($`fLGpIBYv~PS< zsgl`(DuZe8Ud;q{#An;#C*!qGTeqGQGPYa{T8}7>FT${hJwK9}q#XC>Q}F~t%ystZ zAU|QAlJ<`Va&XYfO1^dY^v6qKy01>r&r#t{5I2vibaTF>oqdig`y9!!7W!NhzsF0^ zdJ8Kn)_sxOxkV+!gibqI4IvD(ky+8Jt~U2`f$d>L7U*?;$DA0=>DLhF9mn^EPp_Q| zy+)L*iCAygyQyDDC`S;K7H>uFC4JjRRhDy2Rrr1%ZVb9LTr34lr}QQ#zWM?XPP$qpoo>;v9ZJvk|-y>JXhIPdH-LAB( zI>CR~-}>v5_FUGhPrE-p=007MZX+~7@O3zeUEYwRvJGrfQR$b=;U>}g0E^ztu~|%V z{_ZbJf*p#mM1$D??Q(e;D#6^mmxk90KJ|z=38bvhQd333k?pjAZ1~yjvaExbUGo*` z=iISp{R4!uV;t0*@8)LfYRn##6y3(jG;BVgoX|Oo%->irD=4{B<&6Dt^Yp0f)=ifQ z;xFspGs)y(<>V6s6)nN&z=Z<{G3106jx$7n%_$6qk}>9Il)1JF*V|}QceO26v@DP( z`}6giq>}DeNtK72KL$rxh7<+-Q{_ z0Kjquo;v#Fht~vR!|~EfzqOCB^VNqnPeUA3((BwJd6I-F0A<04-vXz)-yCo8UJ95cRy5jp2dJtDK{F%Hck-fSf{l45`# zNiUpcgdJA^Ak9#md)ujCE|?~F=;p$x%72RI62e10-ODKP6Pp$|2_8AF?>CNvNQ`-A41$ekodzMw`IYk3XGF z)~`+8H+V?95T|lRn}a`K_$B4U(R%n@o@1`%>cGpo2ZWQeJw{VOjqd%vw`F}0Ybbj1 zgMGL}&u{ESvVE3rI!5_+0#_G~k#gAj$noY)xA+xz6&k?J**5k_KlcaSt>PK(I(vqG zWn{|py!c&ah{%N_&Xp`ANFRs2SX@789{Xc9K>agE2}rT6G{|dP0V!-Cu0y{qkV47c72TU}wQ8->iQhB)>uNI~@|d~Xiy=F-Z?c0P!plsDLf|`F6$DF8 z1F{*ysVga$Pxapx_4rV&@%?h|xIV!EvzbFq@@D1v|Z^iRf8WtM2hnP?Z?w60Azq`YdzRLIg!(3DkQt z0TlmC58AQ4rxK%c_9pN1!#f|il|wm8nXE=2Twl|TFSHA?;_BuLjCSWCBmijhUdZoO z8foTSUQ}Iq^n;(J(5?TX4yyV6a@t#qIx%*~Xnn#|2OP@{)9cCI!1n@mE>6kr*>@;4 zavyaY9uN_!eAp8LUDVqQ=>E~$vSAjP)~9vzU7Z5}jx91tq=hIUc$xPD_q4fl2J&=KZeQsjvvx%Y<=2I%DY95F z)~ozg7`d}s(Pmr$3$ez^IKqT;VoG+O6B_2ithUa6wqlIGX*4=o(x&;cjQ5LN*nzl^05eC@$4Tdlw9qX>@xCpvx++`-A2#Tq zI}QTjbhc}L#T;_Z2n^{~5j#EQcpoM3cEX`Zc0AQqb1`-PWe(qxrBvTkYBcKZZRhix zR9<(K{`q`s@oDibC+fTY50k|jR++1H&=2M{S6Tj83|>|8Y$-B(AlUijK2Ifh{Qib< z8$H3Ir`KacNl?;7<_ zhM)+lBevl*#VsI<^nQ1#9E7d?yb%Pw{baibL~eteg2k`d!lbRQPs!n=8rlVun* zb)#wJ;^9DH{YSBdIT7NIwmx%;f2kj72KUw**gb;a?#yt?SR9@(8bg{0;`?;6nY45c zOoy+B(xeyQzIu zNX(&~-{|zab@%K<*R=b4pbyg8NCMO5zq08bk?yd@u1f+C#`n%w1&rL~m}<&@7C#{D znxAi9mpuxn7aeCNa3Okc8()7phJ=q>)*b)g4jU9CB2XNYm7f<6b^kbF-5Tigj**6o z?QJighpb#p*y>EpPj9ay${t-jbq-hyn{~`NbOUDL8jzoN9CPdyPfbWet~?YnSv+;0 z)prg8ck7feFHRcawciW2`7u&&&AsdktKW|+t~&0RiW4vxcp_4iGOnM%*qulw%N`|Q zD$ZVDosO+sP*1z0v_O>`aK~b*32_JFc69a!_oyim_E)zMY<523=NJ#|9 zX*{?X&U5X4iQ1g>^JuB9|1H%7e=h25a~oP7=L@tOKwGccceeQEttj0l6;5t34FbaKbcdO;eHR~;^?-AgP)Si zyFZA5EmC?muo$eovMW*;rJocfGanW&c(peGMOXj`H69*xrS zDeH(x(hA%78IBGUgpl72$zQ~2{1KnaPsgf#rtQ1rzEf|0i>y$JGUXO3J(&F*104uJ z&GdEfUwDbQ1qACDd{Q`X+gy9(V!&fa9Zyy*`3Nak!0#hCf11s~>*_ryfiyZSP)rI+jPuc|vu+o~JnU zR#VHU#skn<&P8||Q0mG!V|BGU;Rr;3G;$k(N(`R=paB4+KCbw$$jlQ1ezMOElvLmN zOvC2fmZR4H*~p~EF`?vGuMmt<}fh zaan8QE(#57)3&^v4PRg$X<#5KYCbguAZXOh6QX9j7mj^KJubed002raz1!Oa&Mvi? z?8_Fp5w7=2pJDMt$vBYcq)Hymdp)@5W0% z;?|>}+{4GYB^>_SO^EfWZa*uX*6X`Ye!ngQAoa0X;to!2FPtg@YM#S99FV#Zbfy~2Or;p~#E4=4*Id>okGoFK=%I(37kEZ$xB1ruGG+1bsh1`u z{P%v->2);hr%!lODIaRX)GWe~W?su2=**CEo z_(5u2WrKf&qL$X@VSnSk$@6sKk>32qu(aXmv*mmEr3r#4nBO!YBD@EP4vUZAX$O@l z)sk(wn!jdMU?Ksi*J2Wwj=%Z)jNbKjoa1WIY~xVvUWet*H}o5GDSF+p1n zd>zng;;K7`BY zs07~>*(TDGVTva)Z>BifcKywmZ#WmAYZ{3cxGF8hL>KmNlGbBF9oW6h06HzC{(I(# z-lVXH6-2Y-fCoe5A;C;fhpCQcfrQw_y%PD8*|B**lG|HYLx3^Xx;Fy7rK1Attp|9S zlbT&b?zc|7kUo_Y{715S67{!QUQ@P${Zg;WROHgis3KBMw?6pMZue=u)~S)2 zD{imtnBdh;CuqmmSAfo6>zzwtl&>LV)yMwYB{9y5jK(cfoxQ zgF(6Ad0i8zext$Ss@fbw7D2sMde6)6yG`-$SCjK1etF*c z@tu)BJCtqN6D^a6UnXk?aC6Q@gR&kiL`hxcfK3OzzLwJl|BUl9$rM9RfoGK^yiQN=kUi=>&`A>sBp%3(?;FvPTzv#+Z1=;~UX zkRwI&x$gfJpH-D~{7!@IMnUkmgd5MYJ&aXBUi-?&{Vy?YsTac1{TT+%0R%89YV(7U z^-$vMyy-gx3cliG)xj7ZUoy70&V)PHv)sCqK^vsmPSmDfT%8lqz&jCF@-~IVsCj^`2&e zO`2qgRpc2`Jvg`b>ch-|EFvHN&l5=p?B!fQ9OjBh1cKKfR<2d9edxvGi?ioh4g>rJEy3cmLA9(-bQ<#>DzOTi+4IJ_C~p<{8>sYHFo}=`z*0s&i*%*$6GcbbWcq$*E$Hf=Rz@x zhbjoEwhwdKJT~e}nrgJin2-gSnAJeJI$Ipy30Kl!pY z5g&{v${l)qD_i5A0;QxQuj%eD%w8Pc36{ibXL_z^|B~CK`ry40T~hu0H^--G9z?Hc z2IdGU5y1MzmJHvW>4{AvVtL~)6;b*HtJ8D$YZ2}ERoFK|tkBW2gPX$X)fgy1ap;#K2Yb9rcMyu1 z2*APuW%W?*@?#BSp3vcfN>~1L+HSV&VOaqJgmOc+ z{WxY!D82?RA`6Z1BQYb@O~OfgYEm`X#BMFzEQ(x{%^WukS<%wMM0P47=&X}l3su}i znscPdIwYIMcU87t=CroaWRoZ#@@$WKt)N{?Lk%y8PuG?SBG8uHdt3Dtz);Anzd;tnuNnVs9tof{C*eAherE_!tR*qpHeVPr ze>Z>8Hh}0C4108eh7S%!JprnfrO8cZj;6mL6)NSF2?(y`^14hdR5lCpe&FKn1O!U{ zjd!V81>?nXt=-dpc_ADTB6Ep}KIRyal=&u(qvbkrwrz&DUq*o|j|cd)PMQc|IaNZ? zO~S1L%C}VS!x`(Ax%Nbz#O5RKU()mQw`sY16_)oxctjmCV+CABA4ZQSy--3*d9mYf zvR@qycXE)&!z3Gn= z-=;DavK|sx7={K;jzmTEm0szib4F$Xrl8c=LirykGWAd_mrA`(D| zIo}u}c?nA*_8H*FMS2{&4^YH`U&lqSS$OLQh~?WQjd?}6PTl2Y-|TmId&{VI^vNIh zUoE`Gms&KK*TX`g5|VK`V}EV9>?gyPWgWV}$?`i(_!j7*~;HMWN>zsCruT5%c7-mCfaG7U9P_jjFW zwJB<1c1%zs)Xon=acCUCjql3Pe%D)PIPrrGrU=hD6F*j!`WPa zTNKW^UYZr_d#&6I+VMK+dX-$6e8!9E!51AY)-MwN8&y=E1W|@@D0aG3K=6Y_1S76A zqD0uyT4%z?Hs@bqz0Srg!BBb2Y`{kIOrR0LnGySe^ zEiagKU5uvm4&S6p*|E%J!~Ypnc8$}ZiBy|}bESaXH;F`o=4zCV>1+46ld<^!r_6lH ziYf9N_f~YOg=xO(tl>=C(;pyDyU_dbU$#q8c==*2)XPz(X+s2S z+*|cYKewhH*ZDHKLsN6CUD|}E|GbZr#JYSdCSZQ|mEiPdzv+_yjd0TIR&BkFoo6VH zd6yXZvY=QzQyMH~kMbzc?NDsPWX$ZtcB|LsHMuPl$)(nWrr9n--V`5(X}?((1O+IQURqF39+vw5nr%M zK2qY!t8&QrcPmfE3q@o=%G9oZb9V9^m+4CdUSjyO?#Yb2voOr!YPs9HRQ*2-lrKS= z(LPpoYUR|zr}+-uRrVR7_)!by*6xq*1+># zM5>4Hx!&jXH>q*|HImLGoKQ01E-ymIaXEcGsZ+76^0gCC$l#Cb_glYc(|Fx3j!*Z| z-cnqAFFe($JyF+(`lEP$e@rs!BAspP zb$W*rS6MlNa3KGF`uikLm`Z7;1ZJn;lyqvVr3LIJE0{{`I^JjI{+Ck0pS0iP^MzhF4N{?ssRR3>dZ;PUY?)&hXN?PpBbSjnE-Ox6yo-(>Z^Y3gO zO#EaIDczWf1?3%N586DPuXvii7)0>%6SZkgy{(rzXrr_Qe@+$D!26){Psd2 z!HkoYvM(=6Ar#WWMh#{>+lZ`(JS6>JTSEu$CI~dQYl=Dm8?0{3xXaZX2+(z3X3V;nb?E}gDXBA^Fxv-e;1 zuqJ?-J$scL`?yTc%oQ7O+5p6dxn&UMZRyiB!{v44*1baWs{n^=^H{X-snmIsqx5<8 zJ}Urmi<4qGr5M6^csGQ&#!slji}{?*-90N(OR zIC1Dw+auBi`_ba>KYquk(q4Z$u-KRFm4ePOZ|lkC>`hJmg_v-WuC=VlPXT6POq-^0 zD#8Ku)(Tg@4LlI(7TP)|rznk=#N855zU3c)U{nDNwvzYsQ9K_ftR2y6%ZDlIF`K}- zyMY6)72_`^Lfpj2frLFEZ0d$2C;`%{QGFb{P6b*3n_Sq!&3{h~4%2Q(|ck}fF zp!BV06%JW;=UY#z3seLP*XXZao|p<_wf^K$r*}Q0YFLeAdw`G z@9qR5R41Wh2{hm{iqs`lq`B#K`2`0Vc>;yO0B_ZkO!%)ViCsN}YXXruhN3^X8h3P4 z&xx%791@LaB8uuzfCpU^P^isY}dxKR0{>?>XOHV*H~+Z?ZWARv#=c z`t$CwAChRdtLaq9qO-ws>RruGc~Vf`-lEC9n2B9mEslf>BlTPU6HV$}KQ%Kx?8`19 zd=V9n8%%VaVpUDSDs!mTOTQ@|p+|m100L5Muk;0rfl>E2DimYA8sn5V&-!Ouh<{T& zvy2n~z?Mr^LOqP|rWZ3FLaN3lBLR6*o%)VgPkPt{O}j_dV#D1A6fCA;WPnhbL-1?N zTr&d=G?+C3dM@%jECCk54+wQcF)d`e<@e6P5!#Xwc7_U5UH-YdW2hnWrMJQkaCkTQf;`h8h`ZQSc)m>k z;|ffPJqV9sCeAu}awBBy81cg|^qV^%U$F0hB1hxZN7)@qj#Ph=%H_QDraaw4X*mkMB;nW70mq6o{A2^qo)2>b0NFGc8ndX#-$Vo%TJOwB z$rdhK)b_Y1_nb3t8poNg;D4*0?Y&Vq^`Yb}=W>ZkZIJ?EZVa_6Ws3e6+Lf5VxCdN^ zqF%-OTIB=|V_+|4q~>99mvUXFV3=740k{-AuIsgVpoXT{BkZMr{ zK8fIAF#EOgKU^UsRJtoO2n`Wd1&KojUw^pOizd;%pr3@%!*~4d^}%+pX0txmq7`Io zd%g#f79up04w97va2$ zsRlgV%EVuY`W;@$9CfAouJ>`$tdaQ+wF@FZsmm%jh0fo)FEel+VysQ(mI0!Ha(O5V zuPaeQTb8-Fo5w8-dn@cedJYbU1-x;IWKfS{PSg`mQe0jXF zl3)5xf|x2F`C*=Yc#Mnh^=d_T$+j%^0q(QCIK-p9GFQ*sM)8y2o%&D$4Hh93YHoJ( zp^tFqR7#IU68*s&=Mf9+Of{A$2CH@hQwKeLAUlc2$3V1d+V5 zyG4^t5waJS*ue7|XozI-H1cZ35GmBZ{txg?#^%i&UiKUWjVr za9oW@6uBzpbBR+!>s8(#5J9N~sjAbCqIT(Tw_^j!HFSsh@8aA^lH2aIBppBWG(P-_ zV4SBgJ1ad6w&AX{jo2UV4=i#+sZ`VW@Ax6KAy3SG%TS|tbA-{>Wq~Sz8TCg#1pD?} zR&=NLXI&df#DERG1i%5MKZqp?J-vTyJY>rImLZnpz#io!;p&WQS75yk{bLpfzxZKW8GJT4wB`YOmc zCuq#-el6H6Uic6nZhZ(@(O>}Ke>sC3b819CVR`|ygI?nKAHfB(q=q z*_HSgA1znH;^37?R@sVfBfz}`rmXAND_dfDx!#gn%rmWBhabB?uO)uI%_!YBKwVpv zBh%n%5t-S3Fy2NoVA3Q2o-+afLIE0TsxOenC(<4xGI>MHvsdm084mhLfu>T_!f6e? z#;IwjUoCVJZj-Rva=}gOA3=1@CdgOaW%|5VAuoBqnXjoXEOHkF-L_Y{8oWb;crW98 zF-JuNDx`&=Ef+E|qv+B`nBN3CY%wV`yTj&Y0X4?Q6@qzkY%p+omWK=zIVCsRF|*Ej z_UbcasVh=oI}9>=Wu~w_3Li`Cc61f+G1zf4#`By`HJB=O*j4iObA5lev)W`IYGrKt7IE3!E{5GYiyviS6A^2ESH=oIsnVJI-k0N0c zxApR;p23)tg0kXknzCbmq~7S(gerME5d)Tza?L+Feiqdeau9ql_YcZwLu;xf9U;2ElF5y z5Io!D5X=c*r)D*v0uU;q=R6vx%q1joVmnksKIR1yveR4L;q_b9A~jP5ouGWFbfyB~ zooMnN`hIbWMr79S%;&^!6%)@F?M`c=+!X(>B=dEhYpu$sqbw7fd^0C=TXdJ|KTTA@ zuWqUw3c{VgcBIxg2V@-*Q2R*gWPF!a-q@bvQES5gvNfwsQcA^k$rcKn;vBcL{sBpO zxAqX8okzU$k7?4_R%~prTnR7#yEwH<-u3&IPhn}-@9W8;Gdd7x&^8+V6AOa3Tv7y zYg_*=`OxY=biS5b?3T`GR_i7a;qv3ah@DTRwjAbT?Rfq#527~Osq^_~fLVEuu^y6N zm6yw)%V-*?Z`#$xR2=w!flfkS1b(7YsYG&Xcq>-dXxVm}La{zg!NjHUswc z>j&Ly7YFhhS0>f&zrv=M+L7%0U8DYI692Rz338Mw$FTk2NlT3!A3W`o6HNR|s*r++ zE#$8ctYtrKAHVyIja1djY=V$2U$i8x$Bkkw(0Vxc4mA9`k$)aFyV~p;rP9EYVyvU~ zD*`v=z~e+|WMtX?drkiU({v`^v9en)>fVjV_Yz1TD_d9KtFdd9cHtY|y}w)80j<<& zUW`pf-lNryrZhkCwdN*PrKNVEE8$Fl`Hr%Qd>cG z8d&$V{=fYxZALtU)bZroF))<*uHLMH-@Ut-ZZpgEcN&-S+)}9@oz)+=l`rbZesz)_ z%N}wHd~s`${@=wIy)URIey1gsFU_Hsuc|;38vDF*wdB41f8%wu5*&>XD<0R+k-AJj zRjsr(5$lXo6af;F+5THEF8Q?gx1Q8JuIqp#jrm+%T9TA_bll24XfmE{xLf-lOT(#U zpRf5@`o&|9yeA`j%`eI9>SU#o#1m8gr@uwK@;l3y_U~6*B%}H*eWIS~m8~27+JIWG zo=PkSvbNealw}OJdcBm11WSy8g372d6ZTCV`bL}~v!cJ*iJD3M_w$E4^(Z#FxXP^= z-$Yca@r})<*69K9@|5jX%$VJnPcU+?b%ji~b~df4bEj3CDfI1`0EYh1-K)R<=6dC( z*rtiiwAtWgK1{=GccuHYpl9v)!3Mpb&F&*_@yeUN?B-GbP%}O#_tRD{Hq>QolQIf? zy4=)?5?Zeee3R|1h#y=NJeYS&+|!K*&leR*psS{JdJ5200=z~8;nHM|vr1nYd`S~W z?cQtD&Qu0-OyBz}pQBx4|BtS(4vTVm-(QdrDG3EhK@bJ$Zc#*OQM$WRx)r5MRJx=) zmhMjJTskF}uBG|Sp3gbQ^ZnzumtNw-2Ex2sRgfl^|i+fSJmxv zp%YDjOmcF?`~%$hn5s`CDcVnEB?|Ll5n^M7VV?;%t21AR;Ee(e~-%e8@hZv zG8WS^c34+t6iD&%TPSB_rP?@#RM$KH|9~dJ5AZBEc?*uejXMS!3v!TWwt8zFDoa-V znR?7+PsT=sk8f5-<=ziI7NhkUlPfdyyXi2x^Do{3zITQ8NSvG?t>?Vx{tKVJDWQrb z9^X7`x<0*sJI7R@YPF~(uJw+^FB96%h&G8n*F5!vmUnB$>V|*DVMCumn}a)93pZ0l z5-6?mXAPoiXj1;oSVLUw$8oXoUEI<4ur_PO(JV9{>vH0#7QMFr>#^m3eNNo{OgT>J zsHr5S?F5-EJ|Hr*{xbUz=EmjypJ35*SKSU`Equo-`8E1?hvTzSxt8>?%Dla2|3o<2 z5Et-)Er9hJO0UjK4(Q3s6vwrUve+4Tk*LJ~`$0aY6iZxja=CfZ(dOSih(A^ymvDc- z-P>f``X>KR7i#skNwKh+4})42pv>Beq*yUqShcGh|M}Xw4E??-h(XAh4&nFKird^4 z$4znR@kiqSnW8&}zeElDwPb&d#Kq{A`(`t7sd~#({R?pgWQLAA*qsFtPMW+UA5Z1# zSIS>28K(Hp@BOzOM)6*khL{Z_r3UokeFr=zSPvKf)478y7G=C+GWix!tg>!FCi*@~ zwSHP=;j$zgSbu^k(^onxHZF`EV;<4E3p9A$s}Fg|jCsVfB*qz<59|E+aQ=KRJX6*@ zVHG98$BS=@HInHB{JCea*33cybZhyup!eTA7|`)revwN!Z`IkDc9y8WbyLdK@{S6? z^dtU6#ZxXJY{0gmAANO_ce z?QV3;{-90EK$eyxHp}JQE($~=s=xU&Z*p|SwWGHi!IhjSera+QiOt-_GLSkor`a98 zrO{EgBD&cz86we@^YaFe697dVO&Jnd|YsdXKb#Lpva*KA(qvAFPwb{IN6d z3yy^ib~taEzOddrS+nXW=Y%ci_PBOA^a8fO?B&!yn+7|}^*tRG0DYFMCX9nLSsaHu z6k6K)Q7b3nd*)FS6~$CFKd31NPRe#)Yk5#Ye%7QC3%^bXa}vJLyNPl<_M-52vhGO2 z&4WO!Y7t`EVgyq7TVj9*4*B>i%|D^B_9XoMP|iG?qRJ2CiRqJ#QQTIM;|IuQ3s`X$ zCU&}M#)3xuGpt;mnpBFM5ru!rSAm2L`kgg)bH-BfWdJO4M7s@e+O*c36XnQ)Sb$^& z$OxW!!_|<-xkx=v-C?*O{EAQetj}t3zEbD}MF2q^#xH+`TS|5Ha?3{Dc_$E%hfyHc zj?1wVm1mD^S@DJa!rNErOQF{N)BIMP?*+qGsyHIHWB!?krZwvUswzCXoQiys%+XyG z%FOS|pL35@ZCJgMA(-mW9c_o*g7C0-;OCjtp+ZPqhqxDJEVf?Wg8ZPILF!~6Y+LVD zXjmKXeoD?Q-LvR&8i%p})A2)lF>(@|&EFD3o_5!X2i_i+0f}CW(F_I+2F(9XS^PTk zYxsn7u@IIv6<~!@Ky(4$yckJI0_V{5lr^cl6Oy=29#z#d*`te>Dbgx_tpmzHLlwBXcv!0=jgKRAp&KZXO zp1P^R=+Jf*x6+_1y~pmF*V~sp+8Yah_JfENVz>YNqQi7;pX%>6?C+;&DKO1&Y~2AR z^FwnV;vJ1^)Jz+l-jd2`3lPy!|gOmX!I@4s9V#!Q^wTIh6jo%MshBV?O>U5I~_?pkBMY>&)swER85= zB_g?`wIU~Jywp0S4Z^c}ullV*?jfp->sc+db2{x6!==S=_+IU+aD%__HTQvQDm-P% z_JP%FrpxQ3cKL;ZfqbI&_R*{auaEwIm{OF`2)9 zypgmJ;1oLj@{16s$H>wI(>nj|g6qIl55K?T=nspP?k7)L!ZWv}F02>SNK$~JiZP5r z{A(@>gt*)^vO>vsVQuk4vc9Fr&nG&sMGAUA5v*Bs^bT+j99;V&9ydA!GT7I3dIy@b; zn3+QdmylKx6uAvP(wwGFAHauc!iGR>EMq^nyTec+KBTh;pu#$}ov(QdYopwS?oDjM z60GWUqULQZMyDJepROt#oIR>5f+l?v=@pohggp=4iF?XuWRbvknd6R&{2mEk5 zVz;yMaq^);QT5*>%VV;ogBh;wM=Tp4t^t7s32*x=*ZY8u2s44zf4+!n{K#J$wG8IQ z+t}Qeor7CQxGbN)>H#KW_|LLT3gkb4jArj#@ci&nAIE%z9AYcg*{s^&EexnLt)4dg zHRPZaZw9!@!-e}_Eby(G0mnnHBdq;FI6`$GB9FNM+sI)ZJb-Br3{;pj@mf&9iVUR* zyqbuGPBqVR+l+fTuFo}Ja(t`X7m(%fSy`!bHW_CSzWdp1Qk5Pjg`G%Z6yMnroPBrl zf(;StjZ9Z*K!#DZeP+a0XTbzSM&T{1xrZ}|;Hl}x1^ad3^ZY$~kh)!t;z?j~|Zk8+JgRon45ko4x5#bFYACWC$U<;mR~VR1 zH-NbJ9v(mYHQ2Kk38v!VkXF^oY;EH7(*<^Dm7R5qR*Hi$bE1uUJyCZ6O2 zh3=U0MV{niVkJX~Y+o4j4|vq)=@Z3y3Gnk`C8gZewWR8x?TnC+I9iKug-QETaRIkJ zwzG<2K-M{IiIFSBBX{S8>-hd=z)F5G+3bnb$X+Vqjt_WZhR-@Zh-y66EZF9?n8i!H zz{kG)ZC-GzDi_*o?OA;<%yGBAVzopjZt}P zQX%xu(MALe*14wrbc$Rqj09O#Pk$ zzyWi{5x1s}#A{QPO;tu2nVS{XjJJ!+6(4U?3|HXuPzv+luO?{q*vVB6@zsy8SqhX8 z)%M`0do~t0$n*JghyCH!{c@?x;Jyd>sO%e2Fq>IS?-aEym}xMt)Ii;saP!cb%8j2z z)C@J~@DAYNNv%uK^u^!FBMZ42Zt7>$)S;tQEuWsapHa9}BAbHoZ*kOZ58|%MvCRZ( zdE@qjn5z>UQbHX-h6+G!I%OFabVanhR#1Nb39sF1uOK41{ehO>@=7Qtw7>!1n#}Ei zI!U=WfX=7xM=hi%74acpnZ;<#2k|s_QNalU@_p#;%FQGwj{$moV;Q3W=LLtCO#qii zfpAu^I`tdODpz2FRp=JP!>o%Q+Ii7(zJZJc5zk@q+cblDMkZyf)}d$a${AKRw$pQZ zJWC*xF6oX%s9#)a-W(1VW^<1Ns^xWodumw?YNVH=KI~V&XnK2Y&i)ZX(iltb86BTo zK%8B_EHlc#q@r#+iM7Q&($21vE99AoE%?h;rj@J?x8y6KL>^0lHZLCcQS0io(*Ohz z736aHwHg0NOrE7&ueGJ~Pb8`7KV7%38~6_x9iCZ#_A01ZuKC1)V&c+MHsfo(i0GcQF8bD}Lt@NvUD+!ZF< z8d>QYetRJ^O#eReyX~KA1ls63$3_H>Z{pI03cG((Rge+EAoeXR|LoS#hK`2tUcc{2 z1YQNywwY~GCqn;{a6rY8a)=jeuV$4JrVRZYJ*(O2Hvxzv~2>mhJd6J%jtn=zk->0I3Lg?C-=k<#SJ&JBIEr z`x$fNpkbQE)k`InaoxDie?M}_A;A6_Px>-D!Bfi`-(~aT7@Fq)LXUWb8;PMQ;G8T! zQ-klekNV^%S$a9F=s(yDm0K>uk2lB0uQ>Vm|iA!HY%};)EI<6cScUU=US^mR>a(yLt zr6<*hs_;$))v^cytUPZ0tZ#5U-{83Fr00WBox!xpWrk?~)FS(UU_>inz>L?1HhuKk z7Id4_sfS;5+J4f8vLbRMH}yn0{P=QpMmb`6Y3AhV=EV5|i%h??YXNv*0?Vejh|@n&^^Lxtz-;ZAz~T#^V=;KhJL6kht_3HEf6BAF z;v+4EN8hYm>$iDxFg9)h{Ib9aKZNaH${LuM`hw)b19?gv9sMeb^K{DoW4*-r_}Z*6 z)bU=9SN|esT+C%&1|iJ|&!)RM=Qni6nzZ(+eONVxfi;EIf9tKmO~LIDS7m6@0ykfs zUc^-geR~M~s>|69wTOMHOwRKMenpGG+UDj?GttVh>g}4Md-F`XSXh2c&VB2k=})B} z8ZKRgMbqM%uf7{g1*3aom}i{8`RtSV9Tocre}bZHP+O6b8Ghjv7c-{L^7OSKK;sK4 zj>T$Qy!*suejEJ>VD+j@`<7pl>962ek@TcdFh$9*H|K>NZsyr#PG;UW!)BM*gk)@ZUKu#)UVP2gqyz zlD~eS0U$i+{e+X$ZyET1zSL)Ci9R}Mr&lrQpm;Y|f%X$yb_mvTNd1@i2%AylJc6+} zeHX3v$yhXS)pndvh00h$(;qGr7p@Gm zi6C{k!8?XASq?WIU|-;OGsW#nX8z%?oW+Gl%#C#1@(^OnaxotwLqic7z!uJ5JrED0 z2@H*6)Wm)d4$yPDp3))F&(n$L;ap(WEg5_qw=4WD)v)UyQDV$7OZP^mxaAItlWf0Z zpVhy84LE0JpJdl{fCe@WcO} z#Cj1EWy$2*f9Cb=)Qv?(**iUp>p|%SFi>vj35>$5(D7|(>b93YjxS~Hq-c@w-)U9L zo4>5UsBdXTln8JZUt>NRDzvy`>iIRgO``k`@2lLL-oD1C6#rtsAXNOXU)yaomx`|;RrKLI8LX_7_AzeMO6 z>|fq^5%kP?+=tkngo-w$Yh07qT%LLFHGlWE8ic>PE8aQ+bR50>NV*cH$QKAo?z>Vsy%G*iMv?^p+T_%a7^+OynDWw@qM=qVdrlJB7c;4s``o=LYWurMbi#XfPBF#r z>bCl9WV5io+GRIcem{Ro4-B7t*LJE<$Vp^6*QIU52O^e>oyIMmm@D`czU;_8L=l_q=Syr~ej=2VBE0_ zye2eZAbB}<4gkrTR~IIWz=LL`_D0N0kH9U_`(M9uwz>u*;lX3omF>X`*Cd<|aF-Q`EWckR-2VmZeDw|>UF{_;dQ$!kH&r|CE_5`L zq&Z8Hfa>@#CLEYpkn=qN!Sux@k#&n355i_OjhZi5R{)id79+BQG8*4p3?MyGR{Rmm z3GrSbJFT7Lgh40v4Ab^(u(ckbeuq0y>|QR*fwO>6pus&|5}g;1{`83bBv*s&aB<#9 zXwG0#qL5;$JY$@*9@f3A@OFm6!nh%5?FJEiP-lxTw&0ICW%LMqJ849{7VDZ73`m+5 zE#&n9l*xWxLJq8!?mJNP+$Sfg^9N=;7Hw3o?^5Ffo@m;WA_$V0*ueGsTL_$|gR?lL znDQ%-a>T;vGu8+t2lDWhdD{{auphY>*L%H0-uLrBHQK$`_fiZexTr-X-zcMLgM0tsaVx0`FW(DkIKse*vt^H}KYIooJ8nbxN=)4AsbD3%Nn(hU zEd8#wo?_sBfwbxX6J=F>Q3fpPB-iyjpDT-P4yV+o8BNDgsT)q{IyA58j~>|b_$4CD zZo~D|W`LjCPmt|z!)|JXa=v-`pD6#_Be z-WT56a#ndoHgX-Cl#m005Ayu5g3`h<7g(ZoIpXy=^7JQ%$uZ!z|HO*^X@zJ|-9I^; zsL)3N8?_-|xVEs;eKiD>5T}Oh{}&Q`>Qw&+*84w_S&5vB##cvv=35kZTRnQq2|JH)emqri6-D?C!C=f$**G67y+%YkGLJoLKKQyN3Z^^{ejt z>^RA22LqXmxv!GZ>J_^_A_k8k5VtU)Tfj7j=8mth6(Le6ij2jjF0nGpdGywSM#gPK zr+q$<+!~Cu#3If5aFT4FF5Jc}WCHswKVMd%fNywOb{%7tnVyx-t&HH1u!bA5 z>x+wBkUXpQY8$b?KQ^MBwl8KGh&JF4Tl&UBdNEl9Xtxy09=+!i5)|O1QC!=L2Ao@h zq|rR>eWL?;9xax}am^BVs0?<%Ip$~IGMCny-K-eI?p6M+j)>*)G3obx0%JU^Kl zidtAvQ_?Y$#nm;)zZAxzn!IZT`Q1dBSBGn)Zab0dqc$;)*PeC9u;itK>YWP9=8Vu8#gW$WCKH4`LxEUoa}j+?eo+*$j5Na<&)|@8ZM}4Eb>)nmBO^lF z-(L>tZ(U>$i`c#}Fub^id=&LQC9W{;mU97^E=XbSF&}+CEykg&86c_MdRGoJHBzUL2mVM|oH<^)a|cC>s7@4xp+6T%*WsKq)HF zppDuwXue^i&}%rUQ?jr3OK8oVH;wDYgXjYDMT5af5`*8bV7ezn2>s?!%(t$;@5(iv zD<6@H+z)Z*E3?OTD!gKYi*)E9D37R}QGS-7CE1V2vmN)d-hwF0-r#3?+=O>AJ!vc9 zotaazXOUeQdZ~tP(LVIj{mA;F*74iU7>ql4}r6^GrO))1YBQ6>zW@w0{|-*J->@JN+!lanS%CdMYo zS34u;c&&ky-l-Kegb-WPh;-mQS+*Lh43MU(NMkS__*(s0(lHtvaL$$j_1iY z?&NBi&a}{hx2Nc6so)vy&%Ca+x74ThY62t@cxgHMhl$7?O;)Y?1qL-nwYaq(J}0_aCOaD>(SHFa(wG%z5C8SJPrJO04cz-FMsmM0$iqO^lW4{ zOTm>bRaYOTlYy?p`dI>R5P4Be6!(|NfPid;AAYZ)*u^grzP|}P_Ano&cg$?h*2H;x zY>fMu7WqnDO=~li(quRZy0NDN3Csx~ne_N4Vv z7(rFJE_h0PL36+>du32PRWT6$Gp@30t)rN+R8ow)^hcj@9xS03EBdcX0@UvxCx}a3 zX70RV>Tr`_Go(~zf1-rne-F3<(9)VaPMCqq)KQ?XlqkQNGru=iEK++J&pTF-uO5!_ zv0a~?gIru(T)Qm*+)y2p-c(6lbxc&h*nG53+^?)S2%ShnA<`$1psL%@XUv@YK!}I{ z`HCPPHBcRcQht$m1MMl!dNACQODs`jq=ci%|B~&mD-?Rtl2oyB`2&7H^VRK=vq;D3 zRRilHo9?xI)P&}-ncRL1`oZ^@jDVmVPyZ{UTq=`XQ~Hh=+{`arPw7rZ5^hyWy9ww_ z55hcd@HObcsJHvQxm{2o(c$11qUSp}pr)nj+phm<%-m6Rq_b9rjG9p<*I$-JXdpe} zizI^ov2)UUn^NQtp$65FqM-({Wcw7IT4e*t1|O*SNNRWk&s}#Yr4QB3qI&A>^@csQ zm&1*QUBe7Zo9VpN=;pp}Hm0A4n+g}riR7+H)(n_kLet%9rEo=FvwGv@j0<{<4EUy> z)pbxv1Eak94;u*v_4XOg1qmwylhC8W$l#S>56xk(u+f-H0=NK4SbGg#KAbB_#fEy^ z5zo7%(B5lKBOU5j&7Q;z2NbHXf)Axpt}*p zg^y@cI|vN;p+-u=oW&8#Dtd<4dG8+jzEiaure~*R0DVL`!4LyFEP1Xb@9lA>5@val z@j9up|E)3EhV*;cWJ-L0O<~#($$TP8v$HA>1{lLExN|WJXd+U_zeq{(>K1&e?VA?{ zpMiW4Z&H;=eay8asYNI6F3yxaK2>7pAh~$XsS0MWvTx};5rG0zTK*+%VdothQ|@mx z2CC)bOA3$m-eKk}>6d{?1zw|5 zJb;RvyJcU&J?2_@ltB!8Zc5sZjlzr06{B?>qjd^i1Wo5F=h65+0>2aJ$OCP;V;ZV< z??$;YpNyL!f=0`y{b^WachpbzW9V>iuXXcZ4HjqiCoIj;kQ;+iY%U3F8nTa5l3XOuG$`}Q_}fMXKi(r_&Xy|9iyP!t)*(|3=@U9 zJ{%{5o2Zy@;Hj`#XxIu)EWK)q_?*6|iJj;8DrsYl;W^VuW7e~}0eB|^ zEl1p>=z#w z{U`gh|ZR=er3LM)wO5LnQS4TiF(Ye5{^6UZ^j~T%Wci( z*7}0}hu5rT!+%&eN$sl9d%a)cPcsmBc}v+YN|*h-f;zzf%s-(HQ2~OFSlqApo2rkD ze$sUt`Q_|TaPfwL1kG^=F0c!8EIbN2?v{)mg&$_8?W~fuN{Np$#`Yn5sr;z7TImxL z9oG0TC-}eFbzlr>5h1~Y&yHH9qmD}F^Tk+ClQ@c12> z_9zwPEzHSE=^>9BArrX+vw{AWW041{)Y8xGO?*LjG}ZLiIwlgv1U2Up*5)v1`xJ%h zDPjIxBIK32Yf(C>Tdq#|SO=^{9ndkw7D9@l+|GS2@!SGGdcIWj-ut}*p#fdD^Wkwt zg+vS^_ihj!>iK@@j1u#-``$LaPhN?O|F*(WK?dMk`2;4XtFcWQ3*?#*Rjz>fQ$N}G zSRh}Ylk=}ROi+%azpKhMA|&n?s&_A^_A=-u*gy-Jl&Rv8Asl(P_KI=#W4o$c;BpAX zlGz*Vym3-xqvwSOmBUss-&qI<6yPoYTUhG-Br+n$$n6sJWaBqmp3Zu=w*;0-{qHUc zJt=LLgBy5TmP(}Z?CHKr3HMaZWba{a2l?L90JrP9@M)RS{mt$Cvol*Vz?8)QR|%mZ zQK|`*5f3>s}zzUlNJYmD+M!{$9*I|keaA_3klZ-H zR{ENoWZO;RGqxXSR>iXNqRm(QQDez%Q3~x)YP_P3>1C>p)db;FHUl794AiSkE2+4n zL#gS<+u2_(>fL;uF_BP;$r{#x33;pjJ}h+dfs5;ObauHK3S>9rM(|tfGDVpC!0zGx zlq)`8dgNpATaXYq+im=;*#J>Fn@)Ux<>~PEZ#-pY4rTvsj{f?#T zb*f1P&a3pjDmT|N!(I74&)A&E5jWXeO~ofURn@Te^}F{!`~1?cE8CWynM5486&**$ zYOsm0UW=D|tyYbbnv3n~M)mst9fgcUprb9mbS0dKvOI3TwsSUPckR}EY4LttfwirB0+w} zOwHxf1je3HY8{Jtza5K$L-lv>``y0Q$+>E^whtJo7tLyO$IUs5;US@z6^ zBb;vnE`OzBh$iPEY;eXML(`HdREjQ&NOvDJfBkr`rL0rEZR4w_Uetmd!G4V3p4+9% zZ|7&CP%Ja3FniuW2A}q~(3RMDwt^8;j~M9Pld%Fp&i=}aZxtRx7NEGh4+WkOvW8dVv)Wt`)*j%~bg>p|3)rO$ zWkbhOwQR}h{Muc2M@Qd7UJ&lm8Dn~fv3sjG73*lPNWAk+Tm1k8N=nud3 zC|P6Z6Oure;Bvtm+mQacx#HVps$R5#m%{Gi(8YXue2P(5d~Dz5C%*W0NU{%ho>L-} z-hR^Nb4%K;j;^QRLPyb}lvW@cmt|W3Z=OO^Z+>U1-q@mF8$$;xJa4Qfr;PQhK{c3h2q84M20M8^kxTto{l((tt2Wt2Dev^ z9q0Lpal5!~M<-)UpXXddaRYOmSpw?XBi-Ncmc#Q4b4!#hGK*YHx5*(N-7j=P{YR{e zZ}1ZbvieV)G2sFOBb)3NiZW}F?D_g6dcM4vn>=GbW0H!+TKpei+Z8_{(xFuKyZl9q z6Sf@);_faHg)fytH|YZyNe1`I#J5t|^$dgGtRI3w$VZG_cxyU|+L4!vf{zGv=cm?J z4BON8Om`wcz(Z^^OC}b{wHyV!jIntPw_9Sqpxnm4EtXuN^);z>fM)(I^3{_$730^ZicBHuTz56#;c>j8&8WXFy#E_dTeyB7$q^=Y$NWmf!h^tl$ z^4QK%d10M5_v-a)E$lwfboSCt!#0f9lcG=f+>0jTYDsdeY9CIp-n~k#)td~IC8e0g z&ao1_1#w!Xbhz+{kug3Z<3uNKI2%ksMU;7cXL)(DDBPubOeA$^|5dolZvHD$qg;Av?2o zqwOCy5wDXI=}B{~oApy@xL7axpEV!XK8xQJiTJH@U(bCGB}9_+V|ww4s^f>et7#pG z%ZHKId`eNlKDmSrf$I>6i~cgEi|&Gq;<cowf6+g^9~f#fc?mH7*Y#r`W+j#wGh$m)CF1@KxEJy}T_-VS>gO-5Bx zf4c82vnzywu0*f;!IE+{yn*Dkw44DVwl%v<`B7KjrN6kuBQ`FI>eqfP zmP|Qa>V5UWRxjxOgjthFl^-+eg`r}gc?km64we@b*qZUn) zFu9~uXI8Ei;kih}_35CK+zu9^XYlRp>42!{$8Izs!4G&Hj&E8s6L9(venC^YZX59W z@Pr)3apspVciHnXbNH)1*vLszrcE+9@|bykLmCv^pvoSi`=N33*1o1OPuuH4ZrQHGm2bmeLTsQ zv;5ZKPI%`8-mM57wJ&5E1=i>N2QLiK>S0F}byvkPeO1hk7y_@_(rg?mF>0%WZAN$I zZc<^+m-wFz+*3>xIR=~DWz}TqPwr85zDktPv)Iw5cq-x>G{qPqFVi|c)1lNN#ZIR& zvPv+~sD~~RBiwpjdNiB09Zr8t8I*lWXP6&VE4!l(y}SR^lVCa{>m^wZQKrET{`5Yg zz1H?@*=8vkM%~%qC@pNa5&y}C2RPhg%esa;BkFZL<*OVjl&BNPa>)z6;VQ@DK86r{ zO2Hj>W^Yz_bK7d|!)!Loe}-wZ-iiENbL-jF35^wdx~Glilp_U?$u88H#;?DA!4erw zhd6faBn6VumOSM7;~k!p6L(+EQAYlHsi~?=k(aweJ2R}I8V{rO`w>P#;NoFu6jZAER?tN*szY$)-yEIu^u1bZY`ENH;&3{bYBpz#^LpJ}X%4vRVGh=>P_*T42w&>EFCQOL zwSB%-G~$tXtLfIQqL&~>tv6i>zHN3KgVd)&!P?yd)>>K)HVWItdSmH+ZIA->EW#*$ zTK54b`rwWyOhTXIa_^K$?~JG0YbdFQ%%ojxi?;J;ZH42;e4v*x#@;#GCF{L##oswy zAaT9;okuauSFFbmMwwDaveC(=UXQFAhFfO?C=Q|j{iG?jzy{kD^?-qU%0qS9JN&bhpwfoy(#clo)c&uZ0 zMpD-Y{4Bn$d2?y<<^eweH1XZn7=hcLSsL&jr)Vhas-o!&WF%Zk?s%O*2W`cjxAbq! zrc;O@KL@^SWIuWO;`|#r-n`V!8ITR1qJv@so9nP_wG_5UayNh-=K7SVmo<7zMzwysYav^aazx3I9`CyMZ1XN_|gyW8~ zS!jiC%WHT>QQ=sA4p=O5H{Ek?xg=kMd<_7mlA38D!<#dn`N{z+EI`Z(YJojO?(0ZN zP_CR0uhW4A9^#p`TP^)!m2kk~N%t*JL8)GHvcUl83G($@pg`>t4O*^5WeFL_M@35C zmj=Sh8ER_v519c*Wn++t1a$nX4uZ!Gl=H?A9mVG5#f**Z8CG?|NK`Olh_sN9K*8dn zTnXJtn9>vWgrWTez4u2!THXMT{3Y{VN^G(P6xm$HHxE^rg7glsO?UFS$iM4A02aY^ zfyr$z5qBYTm!Mn@v{eK4)GqE|S|2*${wtT9CNyLX2V1p$r%CG5C?^IJ`tmb?=g1nA zD!&AUG5^ol&*jF30DMr?z>OcPKi&!m=;AF#PAU@s(iFsBsakB19p^VopcnXs>5Z8S z_zmK#@7mGQe)!(!7q_IT+A@W@reAdLJ62S2MfTHv^f=F$Zhn{Rz<|0>j)^L80q8xY z`X7Ch&k}K!JsEZHVgF>wcR~G8*o=gG&1(RF0wKJdZcEa*SKUn){ovg!|3iR&2011= z!vzZTlJr&dpbP~H%c{7zs)h@`)_11*4H7S>20(zfFECOt7F%EX|bBxLRI%nvv<B0{Rud9<#mJZPHil*>VJWt^aGKK79#Ck=(&v`or82Iu^+tV+BI<^YZa{UCFKGUT!dDar8@@jV%)I@okFa z-z6C04|7ah9OZ-r7v$;xG#?eO@k`%)Mye#=WXKbbgn^JR1?&v%8i}pP`FqtY&H8@r z(7a6_()z(?V1_wEG7}K^<@yTc#1T%9y59 zvZScS@{1gLt!%Foo%uU4ATFA9%n`R9wqGAmS5OVtp_M0EqkeZ?pmiFu)^uacyNecRc*)fWAR!rX99f<2MJ7I}njt!;|;w z5+M-*k1=>1vhlF(!!J^mG=@QLOG;%&Iu?wAr5fRe!4`8LEa&5TRB-De>zg}ZIkfTa z)&Iu&7HsaWr`$2lE8u<)r6Eqq{2|WHp5eX26rj(SYJ-zn2VTRP8P(Xqroi&s7tl!y z+llj_Qf}HNy`q&=x5mufgg@G!Jz;wSeaF{}< z^h}iW?sp$@H#rnY9j_i0WMOpH40nv0y+# zL-bl5sp**%*e9&*-wfc8rVIn~NE1zev8pmSAKjOV&+Ud{9kGvGtS(f#a-Iw_8@#gO zZm8PR=_-2Ga@=@D4Oz(DA=;1DCRrY-7hU#m&2tQg4VEjS#a!(#x3m7Ns=-mYIlzyR zc|0>?&)C1qhem*sf_!ffQT+a713lh=y^~gg)}fzvr+RJycU2BdQD&2m_}W-BziTE0 z;dBM@E=_(phw@WJk)e0Po1U;$9|}57E^2it$eL)c>%6kKav^5qh|cyD5-~)U3r|IT zM0VVO*iU*D>LzNLy;GMx@@5tx@XBERwHC950eqXcqyH6*htd|{WOhII&>#!thg8oI zU12T@;VKa-3KQ#xsa}l^%AL*KYyO-{?KQAIHLb-hidwhp#1*)qn)P=Pd&#eZwN@rG zW4m|g{5tgC_fu6CUPWJcA5NJRRyupa56);gf(RP}?GorDwYQlqRQd9W#p|>4NdqmI zUrZCy`&Pcb_*(HKo3Xj5lZQ{pIMQ;DQ)914uhdrC|I@^e#7`Lv*KI#zs9c=SZmW_TCKEPLld^A9*lNx%E#)yg}# z^aoTmtiuY)qfD${80wPl?0C})yr!%2kSRDgjlV+Tltp;YT0#BtCU`q=`ke_Mb6VbL zr#*MFI!UB** zZB}@44&w{t+eGY1b+*2D-aQWA2y5PUr|Ba62!NY6IKk~HsWL((*UbKPR=xdA)l!~pP>wxN_(U+FVM{z*`z;`Sem8+vX(fzyx+}bZ46Z1xQ-G5#cvkVkHyglkn*d<`-ag9{dACnZiWd&IIR$@d=95s{I3u}_8FZ;aWU-3O}(63thX>n?Hln zE8!@%kLiWzn?~!hqmpR68#6#xKeueA=U#z)1gJq=cqP6WHUzAa7oop54m=>w9o~{( zRFuTs0r(Hf$NGz`cQkzNLXY|GWV^Rs>@Sf}gi%t?U~KyU?6p&>M3d!vo-0cs%LtBg zqS=#1P-db)GRE#b$!vxT~eO$uj*v%H9I1s_*OjJv2xuN|%a&v?z^)q_lK5NK1<} zh;)OrfJiq;cZYO$cQ+j30CydKzvp@0d*A=PiyEytm7HqR=?>F1jIAsi+<&tXg0E_? z#_@?Dqwr_NxRtjkGjQIZagA6BJRSK!zS*;hcJ64A!>k@zqyBFX!0qi9;`$`?II2w7 z<_BZHBS}fnjAQsn>tU2FN{_7 z509VO5$1&H?>j0K?HV$>oi3ZFkRG6_2<-cvSme60PD-Bl&JJbp>fg1XpW?nVli|h_ znni#B-&yA-?daU;Nc0W3=fA$ud6p19=6&U%Y-(Z_+6zcb2(Ma@G4SwOXU2Pr;Z0xm zY>`~Uw?llwK&Y$bZ?jKtzD^G6y|vI$Qr;P{5E>h@xVEfWFP}wAmC+~XaN8qUAqu%22{fa8RJCl8)663N} z-%XOY`ki^~I+b!qms6ErfQz@Q=!d7tmHCbdb1912BT~HelM3t0AI=wV;&#vZBU#&@ zDw`?eca;d4y0L*Rd{q#`4p+Kd=-G-b$M(=qAN^TKeU-f!^Tl)sJN`Qx78sEa2}f{l z9)zu=^96%^Jf{1vx}`gW$zNc@BYpLT3K)6P?>C8VFmh)!+h1&?4KtrxGs1*z3tnJ8 zLU@K=j;v?hBEQ$o3pO;KJB05A(E1OyZvS>W3z6(R)f5o^XohpL+ZdWWzWJJrfjhKA z{JwbrCQR|COl1apopXw8%kJ9zV>Gc`c=cnnU|BtdF8vY-4$JNtUq$1ZP@a!^+E999 zp+|+s0vg6|)e}Kl)j$MAY-yk|F0DKZ(eN=U`;`XIo65GQAt8ssKE4ScuNLv*&%(@} zWD05RhVleSn@*SOgD`mL0)H=W?>F*>`7KA){4$c!0dMouY7cxud_!FpM^^)Dg${4k z!}AZ*JI0M==<^v4&u33@p60)$ROAWu!k~d^a2Ab6JDLhR{wN#7m5j)o_@KS=ZzuuA zyzT`7nW(KJ@wJ#!M}2wH2L|;>0{hA;IpM!Ue=Zjq81j>11tU}f$gd>f)dON(LB8_E zP3A>)+aCxks@C+Bk4J|qzI^PZol^Zm*6@pGx&E8C>Enk%!X32w(UxC~ZfDi(%}K>N zpl#pUTfp8S;ps%vdL$=-h4yv6T$Z79E2MA79)pH9T+mlpwr)nn$9Z?L6>LDhx0*!( z0rop*tIP(>KEfMM;CZ6ohaQ9g7pCtwZRk89S(gUm5d9?j42K}O8GJcBq=TKY*nonr z;V!L&8kF6#&%f+N5Wz&lWY>eaqfDV;jO;~N=@GU{tzP}qj0m;!tQn;4I6+@1swsaR zSjMPs+%(b}w|Wk;m!o_i4U1|bi&sJF66Si^#ibJEd&+|)_(kyLi2eMox$GLRTX|rG zcP&n++yC?f?_s(OT|R?x^i%!q<52WhH}I|1B>M}Oz518HBuK7dKQq&6Tc^1{pTl^2 zRTX#XOZiDC7STLtF!>kCrq(SE`vUH4F9+w9zuDHmH)cz`S(TGWbm%xGTt4T1O z6dvQHMAnpt^Pyq7^?wQ<7`igD6tmn|a_Bo9oA?*zrqjee)T+=e5Zyejt(0irQyyG> zf1FE`DKi#@EaD{Mco+Dw9|@E{JU>BZ^(#|j#KDe~^rF9r50y^x%L_4<9kq+o2PGvh zHOad2EERDlsO>@zE46;?@+V%t{Jcgk0{l3S=!>5gNg_run{{kuwD3iwbKL81ih=Mt zm9`Su^J-Axf>)B46xhMvzv9rn!Y?vbOV0486^vu_V@x3l8SV*_{q`>6VENv_Sa^w! z1{w8Je9~v*d?xr}93mumB|)PU7BU4HoYb!)Q$Rm_wm7xDhn?PT3?N225mghAgB5aB zjtTnb3$DbW^{Qun6(vE#oJx=!Ao{d+y`PQl~;JrIfPI2m6ksc z+6HTT#O&`(`}}iz&N^#S|EmOPoO#dj22*`KstkRm0t4@MiTL)`983w2V>-Rm221P; z#1(p$m3Apft!(7qVosPGFBFtCRK{o9nOikzeL(tVl2r#@Nhdg;^D;~mf0etCKrMWu zty?IstAu|3Ye#N)C?gqoT_~#&Sn@As<4B7}y>PawAQT2amzoWb>0Z&`bFsL7c=aH9 zIwT+-x$Od!P#GTGUd}bUB<7g4`-zoC%J1P6v^((g`YF#R((^OR4va-%CwjcuDC};< zE@nD2t(_Ow$*Gw)dcFJ$O}AAWvvR32T;&;mrU2wAV=Z5i%k`VN(|(+}t1HwOxJ0>0 zm4A#{br-I%H*eRMUBa(WkpJG68Q$byNzQ`=`P%y2=8xgwigyRvQS%B?^-jWIgGUOQ zt_!BvKz)@CH*-Cd7jqwcYN<4jPPyT4i1^bmh2H{pJi zqRr|q2tgukCE`z-gPG&x8=4j@yaKvsVTfOkE@y=LuIS03Ze>WLcXuRx1On|2JKhN_ z?!oG*Fz;zyOQA!II8%Osr(93o=-%NF&YhOKC*==@hDf!Z7sI^Z7twjTwlvPiK%F5( zUyiW>FeNiFJn(RO$B^Uft`Mr_G?><^KL7ThIDE-E_+r+R;+Bsx(B03RLY#q|YEW6x zZ2a&bmbzY>?32qXZJ*l}FEXU;+gOSkC;jOWU3AivfVjJDE0UwA58+2 zN7Nsqs9!t|Co}Bw9-rLYOP>&@?v*fsYF4uisYOXh2FOWor&xb}56RdH)6V4O*QQm6 z!7||w(Bx75TgRnnZ#3S1n3-F&_V~QRuMzdKjq>jDKu#|Nx+pL%5SqIS`Yq$eqdNlf zo9$;a|6(!w=iWeo7?Jj-dW1@78 zR6VdSyy={`I4~#Ho*&GaeCU~Y*k#Ev>&f7m&K#zAXaQOs?dsfHJxoGUYg_h@AugN?VfgiW2m$n-kX zt=o(^sM02%YMsImZ%$dNH_gscY%pm0o$-$OP?tc*q>uh&#pw#zo_j1_S@89RL^tne z2)i=A=_vmrYUga*FQfDjLH!9^HAF=AQzGKjkfJtPgU#amQMWlIr-PWLStl9MFVb&S z8lg`tCp6wieft_Mu1(Jg!D`%7nLD0#>ANy#5SzCV0689L>@#|>g|L*kNx0PNnu-E( zApgwI?7Wxk;`|`g679bE>5~-xjgp4n8IYDo@~<>uOO#K7PFmkW1he05>K`5k>lYTj zTPQ^Wb0WG0>F$x1>V;Wf&4*ON^(2vXGVR+v!uZ<`8tM3RBAPxItSa~N2W9+MNRL=C zaBg^Au^&d_TA)Z(s#{pt81){S&X!{KV4li(Fu1x%BKd#87@)^v}tH69$!<7rc*0Pfu?Q~VD9 zjd}9m^!hlNs6(exDM` zSu7#^L5=i`LO_@^bexhe7&Oz-_B`S0)&x6F_&WKlf7q=U1On_?$TDsL{Xw|HRQBSU zMadyFm2EWTq-yiHSIXWoJh>F+>OjJVs(9du(BugtGpM`h{4<|K3R@A(pJPpS(HkmH zI%;8BJ-X=A-(vkpkEiIrWO_~cen$ZDV=$%Aj7YknK#i1~!u=zz+VgN1Gic%~Bv%!d zyehuKDTFiK)hm#V=Se!QaVJc6<0k`3PNja4CXC z2Nyz}tjPjBqKn^2=nyP48IxTUXazJz7k|ED7Ze%$@wJU=*kaDX=wJa0vgJAKSbgY^ zCGEat47=W0WKUK6;VNnGDm)k}wHwIJo1zMdjq+O4W zJ9dHe!3+lW(}$Dk0v_(bi=9{ga1JtjjW39(7vow-|Z&5HCz;HETCzaGs%2yx11#I`0Hxe`?!3 z;K@$*hkl~)3I8b5dR3O{)gjQlJoV3*(H3iPGf&2BI8oe9M=t!}c&pr5c)j+U!$rOl z&(|W<S5+1<^>@sloUMt) z7B3+u;go`+w%)hL)!#j~1lD#8WyG)p;WT+mSq_R1c-ANl#1=QcKRsTv+)Dr4m<+jY&vDQD7?bBxmQDkOx>Llep!!N zxV(-ewLQ1T)H^yNT}fWIyz4m^aKGS$(K+{)5Lh;I1DHG(F^k$87YV7L zTl~m=e(BnFk|3FIaae*jX3$XhUYh*tttX>*MHb08zA?_ZlJKD8I$5m(C&P;3H7LQ9 zw%2Wd&l~>?3Tnf3+%5hSq4vx(aS-Ia*S*AmcP3@Z58q)<{-Gsj%Cs*P*(EvzJXX7!6atk`LhZ9S2hWC(Yb|fw8BGM z1?tS*VugpgDRk9Yzgum6IWz@3-paJi^K<*;dvGLIbC zjo;{6Ot_iSN~(%G<_&l-6uW+qq zoCLQ7V^waU=CN=OHICK@E z2ZmI72F^@v1|5!za}4zw) zHQJrg#7VTB0O6L&zP=)|IH<+%!Q}GiqQ_oL@??FaF#R6r5E$pQ<^J^ zVsb6He437fv=E~L*rUgXE_i4Yw+|$uY}{sf&PW81K&*69y2Fnacy>VQR9sUV;&P>Q zxLE)ja|y6bI;m2b)Junpjy^oMvgK1b&LWf(l;SYG1_$o3;}h~-;(0hkOS}f)u`;5{iN93*~TDz+%1#>WbjVVYqFVYMEgd`uHxeUGN(EP_=@ck z&3CCgcKmXk`YOJyC?)ig;@0+-L0}4c16v@Du;d77+H|+Ee6?ld-*6Q4SUM;0pB_j7Z4AIn;S2_qrM;x0t-6-nLJ4~3yY(+=rX;++)pF+ zv(%1NO{#>OKic7nyQ+H=Y-yS|6CM|@dx8fbJcp;?SPPc6uQeuJ2kT@#f@U5Z!11-` zHf%G;v0B{YkX_qzA6z<+2iePw-z*gq#ElH{M~2a2SDVs&X1O0o6O}5MJgZh%tZ^+0 zDOw~|B)I?i&_R+H*VF9+uxpOaShcPPaoNK6F$Q+F$(tCPjqhQQKS*NFZkCvpVxLS? z@>c89W$~S$&a~64oHbg(9q)@I8K~QV&NViTTLU@e!skXeE1biYYZl!uE6PGY;98u! zE|&9~1|7PS%5FN7EsB(Zn-99-W)P^LkPOMv2~x5QIqO8O&8jsE;G=nMMe?AEafHch zs=VL;Z68}IEA>{)p{MocZS1GIwI^CY?>Jv$ zFte!JcCfxU+r^m&4~@gDw0+V^3^_p64e5D=EVUPY9VP>-_CGp9`^2z1EUR8+7OQm2 z$3DusNj86KR4yub9z9}5+(pzi{q`{v(V0$_|$UqG}i_#Z=3Xw-HaHn_VWpHt;k_>PH1N zp!bWQ+9z9-#{4tQn<0+08vA!5{NX@J>FizX_USmrElSbgE$wHt3)Eu9uX!nM5@xm) z8ikFeIQgCrj~0cN#>ty4c)fWS5g6}^1nyZ_5PY(}@atmGHKzyjMXLxqTkde17I+hq zL>H+z8%B9G)tkB{kSMAgv&!i}H;l$A9F-Lhr5bjJ;&<(bwNDz(Csq04!aGe5EQI>= zsT&7R8wP74(3b|BysL1#1)!b>38&v95c_Ug&h5VJ&K$X`W{v5lz~)xAEnddv*9hp! zM{l18C|A;zChK=W#ah}oj7s$+Ar_@-SPVbAp8P;O*hiZac!>T0rBiEkj@$fpvsnN= z{&N$wC(iy!yk{~rY|~u5!JQ(puD-EdQCpWe9_1|?+2zv027{DE4Gohw3uj4X2J~v; zGV#nI;qC$@A{C==8>LSc;qE5KI<}46ZILgZTcE01u_!iC&OCxEH_9cDG-rbjlob1c zGAQZV7tDrK9F)Pm(*ciJ)C*OFADEz9FqN1v4Hc!s?#Jr9hgEy$$vuAH7Tl{WcwD{J zyUc7(Q1q%0TbM9@XfrL`9PCI5De@%YDtUByipHIc`6)V1`0~g@@8`P+wE(!b=!?- z!A*n{PLD-CG@}CBKK}`OJcYH*@riEFO)?anTG;`6;dPn!2%nrWzU&y>I?R+8>lPiE zI_pLgn=XnrW*sh|yyv(*$t#97W1jcs@#FeV3kp88Su_#!rwB84SZ7Z^*BEu#-%9qm z&^{ZqRqV-+^WTOdd8Y|>=`{NYhqz;JB~v!IzI^%Q%O&a4$~PtVa!U=|GuzyCG;w@b zBD4_udoMpO0p7!>l=ysH6Y9K!}j0iM|zw zEn0H8vf&PR#7cX1+^wFR!hBxTN7`N-It#qt;?)r{ki)=rXKFEudPqdST%nBzLww<| zL%Y1qj>mZCIO`-y#3m{f_YRLj%Z6iqH#PRv9v+57E?$Zz%d=M^vb`(Wsg?1?-=1KE zGsoT^3<Yb3|(JVTD_H1@eC_f>h zVA_;tk<%EIcprHr5%w+T%hmmjK-`dLl*Ky!V73mA#=0c4`e>r>VGm6#ZNiP+hWC~hM zAtP7t)%?+iCdZCzJ?sbr3!0(axS`H`)vitK7uP@11>POg^{1c}k2#7p!7ci#fqh33 z!>Muh42oRnMw8J!+0xwht z8Pik~5`gOAjFyu-#-eCj^qC^L^m1EZb84V$b6W)UAu*;1ZLO|Op+k8O3Z%>F57;FS z#ay2_E2*4WAFo|F;Hee9i&gH^lvZdfCN4DGZTQT=GQp2l(^X!zOTHL$!qeN9dponp zLwZay)RRBDx);^Njq1fDfS^6Pwo3Qbk&>4e_n?u2#J-80LwC(pW8|iupb?58ZP)uj zaWGnkUzp1Kh9B*Y8zZOa=%8Zxrieh7HN) zzesgVrH@tIc&-rN|It-W-By%H?hTvXIHpQWQ^)jIO}DD0ucOUvR9>Z%NPK>&^Nq`{ zOTk@ZzD{I@`o$S9x^5A_4jvSXGFb5ujAybXtZ`P@a`sRP>NHZITcg2l>rhX&((ECS zQ?cF~{!*;V$tSn&gH58maG?z5P>z~RC_}Ld&$M`XFSU-aRP(e&A@tgmzOcTSELFccX&2#QXuH9A+b{FRDS0)_oo>?{6 z?|kAJC`y{xWN#=}gCgXKiP_>jH)WG1!5<{XL(TV5K1Y^bxm1>j((ovuzrMw+0Vm!f zG%q+dmkYiri|cFrtlo2QMrqijPhDY2Td8*we;$$T80lzU;czsp_d=|wMSf+ z|JHtfT-T1|Q$~dwY}G?i3fT;-xo^%|42>gvgS8%HEI%k1e_ z8l%qp)%kSmR?-w9U$9Nr$ER(hZo0#fPC`QcD{DPv$S$Bm6*iyuI_IoY`X+0BvKKHd z;4N%kEzpkU$Aw!WSytE$nHMG1zvh~Ib0wlJ7bCZUIPV8(5Oapk{K!A7vwG~MsXJUf z!91p`0W~z#g%+hewjQJX$AV8!6J>z~vjwiI#Zcyu(D3y~5U7-%D`{nmV=2iKPLZf{ z3BTuXCTL93MZU9sel)t<+@y-cKHi+`-YoUTyKUQ!GjDUEw+u=?_dS$`v zj?*XlW_@405@ELyMdwoSZep*@xw&$&d~_nZMwJ5Vu8;D>>zrK|(Z32Y)5MFLvOA`~ zR9nzFvc5@&!Z6C47`JCJk7J$eEcIo!qB4zB!XGs%C%NGnXgJD@a{)cl=K_e1WZdAN z32KwmpHMPBmvzTDl^TPnwV>Mx)wL$vY$Q^`KbsQy^)8c|#RWU35svRS*-NsQCqouW zD|C1<=nj%e8&>NybevB0+ARbbiU-2VtmtfRNbQ_fsb<#>M33j^>S%B_ZHi5be9H_u zH#|;_8oN2mzd@ZFp?}VHj3p3ts!1+)8Jb1y*G?>0GdX<-YLGdFx2Yt~SGiau1J=j!uIrqDJ{kG$yv9;Rk+r26_MS_LRid6-M z*a$?JG5^t_S%325=jI4s@c^!Ktnr_{TuO(lx7r{eaT8S6)D+{>F4G>R)6KoXWe zzVmQU6sQ}NJ74#2a(;>xK$J`p-vuf;zPQG0KI6Box z4>-jRv`rZ|Kkq@V1&j)1xuOhMF`+VP1-xiD5(=+P23wH;AW~vpHch6X7E{!`Qd=PQ zicL@X!HZ9XXq&C7U8Q(|vikycL>%yty5cRYeuLwDPI$-IVoYj|sH6J(ZUB;9$Jam~ z2jUV?#GK!P3fKqczU8rHkE*VeF!K|MGJ?GGs%W)NxT4ilKGkKO#<<}5yH+Ty!TlGuTw=&Z1km{_G_G*nJX(hU}tKNg-HFAzMPhu@gdWI)21FSIDobiQ0z z%WXu1{Z``AyWUf|vP$N#7jQGN*=jN0`coRL8L9YwVs~0{QFHVnvSo+KmBG z_q%t^BtbPAww?;(7i0gbv))3Ox1qksu({CUF9 z^AqRhBdPU{_(JxR%5P7WV&m2j=B#)jPM*lfsJ+@YsVNBG*N_wsQJJe{Qp9fBZoKz< zy#lKcqwgMEqV-_nvAEUT9hYB7yhq4d#6|W)BzHx?#XHKS8bslZrN@``v-m;FqPwJHZySrMtoP`zjWzgEBdh zHBC3iTn?vQ#zG!p?R&xOlo6hZ<+JNSutWZl8a3MhGynHBrc!S_NlOWsy}TsT#xQ$> zcA@24Pb;NJBJP6cew!B}e7@K5Oa+lc%{^F1dh0GkB29c>ZrjG=2=celt} zvq~aFYUt{2!XLQcuDG`>F+WE72*ZBAM}1F8GHs*&Bh%e78`gpZku`!umiD`EfB~a9 zS6HT%`{ry1v?M6r4}OlCV^EM)wG%AYk5>@(yW^*l_QO=7Uh~%oD^;i(_!bwB^cGB) z`plLBjRlqJFRJzkny$?lv_rI~v&)zEE`VF^a=vm|^10Ds2retnXBb1VPC1nU9FWaV z$?KBIX{vHyca9B63B)YWvt6+Amz|GP^eYHblsz=+K`i7YVb`$__iWmpsU-HCe;fBFOJfas+lO{GlCN(ZH#ZC z=AKV&*sVluh+bKW+3O+z@{oq%E@Ncv-Ee+(d03_g^DZUmfb0~{_ZBL8)TZotnk4`` zl9qU()>l8Ws7~h=Y^{y5X3Ng2ia1z^cJjvCCu!$!)bshP)ptMhq*LPQ3`6IbzRXuO zV|w-!{!Z;js=TF<(>Mms!3f`?5gEtYk<28qrfS(8vJ{Te`~%lZC*8}iZXnF3@V{I@ zc!Fd1Z8<*cAG?}6SZPf$;-g2z+ufC&l(utq2e(d>@A7C505KX*$ z-vD00Ky|eYmMJlis>tuQ0B{CCAZ6;y!?4HOYsKCa_$ph9`gWdhJOGR=IP>P19$uIN zM=cRB4v4Q|`+)&m;Z<;1#Wnln-wX(uK?yx-F2H{*=&6;zME$iBt86T3WSa#_V}4C| z%M^e%x*2=S07@5tgyUv)C8JjCHJf9m-p*E%)C|bVz$bkzgY75T(NFn5N zrGHl`D^+`iTKHFo1t2xAxr?T{bK32J&Pt!1h-hlW{CysFKa6339%!Kcy(su~WYKFs zWh}jCjBm_aw$$i#46Of?F z!pwl0yOU-7H)-?SocMc;_IDsulHM$2SI5@$R}O4EfBq>GV|sS?@}H-Uv41z9cTi)b&+^WjIrCI#cS&D-)FDeVnWg6Ga{2Vb<2I;BAHdhis z+ZsJABmQ{*b7R2Qw&N5R5i3Qq$#%*f{)(w8a%#p&Bd#j2#g{-ZsDh|yiIiK$fXLBl@~QTR{`yM6Wyrqg|8Lpd>_(k zjU-|JMa?+-0g6#eV8b(I)n7bNqJs5~LJl<)NNy#`#EF5@CWViZb|CnDg|(P$@G`hu z*S4Tlm42JtKknj z{6MIKxdkZ0KL$&Ca zF+vtbRAG`t82^j-sbD4p>?EKJbvdEV3@)kdP=0NSg9dm^tj`JKejkgqfCorKvVddW zu*+TA=x4`R$+5I1IzfJ!E(Fh;A(|!dem5B%6c?s|tuP|ze)26=bG+v>9cjM{kio9K z;Wn?_a^Iiy_`9LthyoSH#Cw~DOKGfkDH|n)vqQGkJGzIdi+KpRk3GG1HTrzUpl1AG>k5T~fs$OdwOHzcFI$T(*MZ&MnmMjoGM zf_>pjFcD76@0S{0)HaD0w;IK42xqla8(%4MX~+6sr5|?OwXTBl^Un4#VRZ zul7XOA#=xtzz=C7EqilxQpp0RwZIuc*$sO43U0rlv^V#wk4J5^dwhXdL(IeYkq1{j z2^=z1)x{Um&+U4o-zfxX2HGKUV=Medp6UV}7f>f_N>MlQ`7=SW{=TBEeR1&cGe%UD zn2s;G2giisi#|zlx0uuGCa<0su~1ODFnnZ82|kDae>jrmbKrh-)u`*Rh@|CAdHtZ`Q)+ZXz{@$<4rfjgV^?1ICe?kr z{x>l(s+xP7?sfzUo#OzX7(rF}B^qsaYyA>`$z-PLAr7lD;NJezIM;tgl+_>NU-gTqgYJswFc z+s5;5xwtu*;%C$rFKiaNVkQ`Kza*T%+8>*R4#1i|d%vTLoNRqAQA zlp2gtp3qJ}MR~OI0{wM01mXpe5P7FW83M$DM{8NQ`-AwSyJV5ztSe#B1c=vvPBhi2)cYwvr-$TE0^_>o{DE94Q2WZCs35BA ze+Tx=-@Mypcg|zP1xTTNXbmqk^Zg;e%>~6$&&@-;x>|SH&iNAvz%H+vft9Kz&sYfpnIt1q6d zRDglh)@TLr5mQf>+d_P~)V>D-wVE)n7}Tzd_MSeb0E{r9@EoI%klo;sL_5nr)4ObZ z4Tk@LVuPc)mAP%s%|!EtzfUb7fsclYgR6&PYD4A8^Ewz7WJ%hXRW@dw9crAdvh_8r zt>o-d4E7l&2NyfiL`y(DY%UU&4o*Ag;%w|Fxm0GX`+c6I;C6utoa?#Rrm@Q zGkPQ3zu>-Bx&1Z*Bg+U&omjF5+in0aKokq=ji1}eT7G-dl^Zng+3=_rzM;+Tp{!pv zy;Hb7I%3s38!i|ukmW?-128j;+?6<|;)}uQ)Y+vsefmlo`HrbK?VY$s&CLlpmE%(a z-w~UmllWV6e``Haia~ds6dp@nnJ`U-pxusrQr7UA*Cz?a~;w z@$c?^G*{PZJ08J<<5HtBcAfr}KA=iDudgtE%$De2&$ULF)A%`+DDpQ007b&GN)75| zr2tCLjE=Lh21>2v0e8BQCfu{XM*hI=&Hb~;VRS5P@q=M^8J?>D!pd~j{{P0xfLKuM zA!wJ!TW|>8EHQUN5vUV?sG%|bs9J$YH^DNuAPev2LHOz~+4K^2Czh}$sY0Sw_?@&_ z`W8j2Xnf~YST*=4mpjc0S__VEfq?D@pLi5dj&Rd^^c=j@R_5?%z{>522f4_xca}DvGZeIO$Q7Oz!Z^jR5Nio?3co z*&iuD1gDn7`TT(s(E_|a%#EEsf05hy_0Gi&DJZYk#=bcB!s?#F7VYlMv8~py<5&0D z;g!)Z&u;Cpg0=$*#pi=Dqy3iWwHFO7irhi~Gb|nO#f;*TTfAEz<8%#4${kMm2g|Ok zpRusMsN~cUIDGe(>xkzY+BdkF>CE5Z1JF+At|6s}ftu^vy7f_)O(6yurydMQm(=g0 z`Lvh-EG+8-DXGl>2?^m+(1WtyKdu4|C7iGXl#ShmFNf+W%T4DuLu**@cW!>BLB0GI z{O6QazM#VEe&gl}B{nPb%83B+Xx1~xUUr(2^wqj#d>_Hw=^}eP^ps-mxP|59;*TnK zhOJ(k9l(+BG`g)3{G}0}VN{*I10yoU5M=FWMq+^S=okF}fu%#0UUasJe*jQ`v@!+n zFlnbh88Ikr26%(ufd*rs=HK&_Q~#1W873uSR1Qy33Y2#gZfacswRNMWb-mM#Xvu^r zuC=MDI%z`}qHvq-A)!Sn>~_<}ZIb5ZLdTHC@F;}zXvQ%e)CwuHgkpHQqtE-xG^3Se z?`}xQy`O}0kH;)0ArQo0yuWx-5jeq$j^q3!eIS-f`RfFS53?A^US{7^C*!7L=ABuo zd{xL-rpTv8%>`n4fY~4^gl&l;`-(1IZwd(abc4F8?_b-;-Vr$*JHEouPC#mV{&19T zeNWB~S{Cl>2WpN8Z{$EN8wBD`BP}i}@n|HD(Zr$=xQ*rM zL&J{)wrR+q$&8R4Z2;Fe?|{x?jYtJVu8*k9N;{ODr7`s2T*n8plwF<&HHhiOsXl+4 zZXZ9hn)#LY>j{YIsBW`SE^ZaXeuRI2v^jepXQ}emUY_NuH1cueYr9{!rFp;c`kLNi z|2HMYCAFBIp=H2$(Xe@qq14s*c47#icNm>-?`_5(9~ulM>PEP~Os|oPPU7+d@v2)Y z7h&Xxrb@$Ds1Vjiz7*W_T4aWIxwXXV+ApmK@%ors0Ck2vOUlM#^mQ#V?JpjIvKl!Q zu&9ZCDa7+E-$Ka{=usB?fVNzEj3TsInOrrkMF$FICNCRajn0 zfz|^brr?pKmz6*AXw~sZDcqU$@O|VnpBhBuiEP0|H;Ds#l*nN9CGCOGpB(ei5Ud_5 zei8j$<~;z5oWaMFddhc%s&4WITiY^c`p6_8~|rwYd5{8St+Cm(iu z!G~ZCH&t*@I1eIVk(s`a_6_Ur&;4Ak$B0x|NmOxLl^?8y-VKO|Y+@y0vv<^#e5*hi z=+I%HdCaJ91u(GymP43UFbYtb>>sLr(hKvBNAJ?VE0o8M1V|NS+%aXSGXaPW&h51u?Ss7I$Vm=whBB)_3%I_K^A9ostlp~ z@8#@I8i6ttlziB8ptjOL0|4Yw!on${TsBz}z;9HZj|!@tP|6=S$2I8a>SzYnBzCGO z2Idv`(0$SgQ%y!@zd=bvLX%FBYGHojynLk$+cXFe^jP6E~&j!zce4kKs z)XHX0D5`ZTq$Qqc&y~)3F~Ddnkn=&X=tr znV)EwOEf(lLIIJtJr-Dz!*A}@f1R**iVZSa{t%VG#r7|QAOUAfLw63*cC_i4fIoxs zB{e+Lg1BN-W8jlcRN!LB|6KT&sO`o}TgLoq?YU0Y0-4kHlG#!q-2sq-kva8Yd{c~O z|4o6Q$pP1&HDz|P8;i4FZxP`aT&}dzCh;=-eL8eW%zT$5p{N%inbvly4*=Q+7x_=5 z$$d#1x(l)sWInptE;p6HZ!%h0eU)~OG85^oU)|VcB!c|Sg-tu(r~`ycKbU(h4xU$b z!$=(${+xa(1Y>7QEA0TMfMQ}hlt4v*>ai-KLi8UaT!WbPPwm8C-KkB<0Z9Rb0U*$N z%8|hY$Ra^NHk-t&Nx|p&Kadlip!{A?SXS5{)WuOhD{YdqzPXrlx-e&{u&Y^_SE0jj z@?tRu*h|0<`HdHNJ_^U4#%}q;SQu*Kg*hwI3OmfLjcc&>XArM@0EJX{XYRNP6m~$G zh+ld?H{;5K+HofGvxAaW(*CG#<9^9Vo!Q_k)$!!Qo1rRgPGoh&5)dTT*X_C*#cse! zjEmZ5WFGvrI4XaFFamw_qhA2sHH!5i3yRQ|Tr{^IkY5iw6P_+*V)5c{T&N+(wF`tw-0h0CaRw5Vx!Rm1Nw1&(T$JwRl8{K^Kj2x zw!crRaQC<2`m5GChAz%rVS}-5qnRo-#8ON8;ys{u62d`upcSxnCWCoG#~M`NW4JJs z#}t3{Ep?|N$mou;1!%Oc17zcj{tJ!|N-kGR(@q>UJY8t%E%I$et1uGH*e>ep zT(m`^qy5u8>prPP))2po6`UKhpg$nB!RGjQD5i2nj1?l$GCohsaaEBK@SlJrho5<{ zZO=(=5}3XiOzjilFXBpt6?Vx1rN5g$+gmQ1EU8K5Lybq=M}>#*5SopyG_jUdVf#6w zY`Mh?VX$rca?a@Ww5C!;XYo$q@+e+t$f3WW6vRWI0-L>3qhN3*5QM^pMq0XXjIRD7 z|FCu>5kW9m>;rYTCQf)JSoi|q?^J>(IvmRjc}V;)3@D}BK^Uu+S~1#q2(TaTfLTad z^uW2QFT~r^{@*|sF>UG#93M@VX1?Q<ZnPNcq#f5(lk<%f&wPihEQ?KA^q z>=)}vT=;OKi9eb>7D$d2-Q~eojeAD_3egoaYz2@L5h2eJg(3-N%N799XrZikkjvdo zbYsJ%E9&VoK!^M)$wP)?9^Mw=-Z|M26YS{*0VK!KSpe@aD`U~0VrtLR>8e;bS_RN6 zfc31*e8(K3drn~?Yh`~$Qr9|eF-NPxpItXd)=7BdfdV=EZ@S9RlH;xAAzr_Q=nI2- zc*f3qVo1h#oRB*9F)3ZBxjuWnREYw5DG2AD0`jsIeI~DskSQ;mh4bQDXZI{GPA*|d zC1wyZgpA=&UYsmo`#`+*PRa_!vwKgyYYF&7!RhNK48f3Qe%XP=J%2FQLz)5Ug7Uju z>;@0E+O4#S$)Q~=CtuMN8>Nyx#84#YrgUgQ2qNW|ArHDYuAVBWUYMG zb{&2*PBtEbDK#UFR%?C78PGoD%^Xo4=p(2LVaxu;GOo9`KdHu3ILMt6ea1C(ezKxvkY!HGK2NHN-oYv6!?+5;Jl6w zIIlzdsfDFVfBlm&6w>3g{k>TO;a_{6n$%a$0CEHVg^#aQUMm6Fu)JNNycMS=D=>l5AH&_4*_5!T$fN@QAbL$ zWIxDHCwkyysp$U;6oQIq0wSrIF-~|lr2Xy*0?_)nUXQ{|*`g&U55dk94tGA7~FlhpS7AkGyXR*8`18D@C zcO$Q`LbkmLM+BVctRY7oce=JYTQ3ySc@0IhbmR3u*`-tf9LrDpFNj5l+{CJmNdfM@ zU1TTQk{<9BH$Z=HkwtplplJpFI6(|YHW#4O#w`020+Mq8ur;5<*1qeY;}7R-JH`{M z6|!#52kicu_&ym02-IEb6m!Ofye9uogva>#X{KXg09gg>pKQ%9!T@te?1>%qT{;@M z$%06;(GTV0tX?2G1j~WzDo)0PyP(@cI?Th<9@alqTEkX|pY{PP7SPkfUlXwNkY{4% zuY{K3{sNeZKArQoAT4HoV1O6-4%RxGR{2c|03hUdf0Y-}KV~+w3jT*&kvM2=DVz!F z62^xset!#nZCJwfev&Y@Jk7ohoCyF3V7|bcr4?i$E>ddDXPo^V#+pzu^ao&V3_$|)3@LAe4poi-{XHDhvTSd-1oKJ*K&T& za|y3ss0*KGdr)YG&V2~%Zzw?>t@jkU@LcM(kF~mJz`={5Jr{iIO5RlzDCa#HD+zm( zzac5PvaeV~YnY2U2Ts|6l%$6)!oiat&O` zOOp!GZdv?mizBxrU7d}p+gA&i>knEU{0(`*o!rT)S(J@@%chgq@zlkOL+hF+Bv1eN zb7AqW4e~Mb;y=gC)^BAV3Pos(nJn6wzT(&!d}iGRBmjR_Jy{sYiGgFaYToQOE|}|F z6IJ`Yn44k(TxfH>EXn4Ng)wqP+O)Y-^>@;3z_MO9v2+u8%~j7X2-s18>+`!?sp5JW z@gr|<4%(D+4vGwc1Q|PCHi8_2jyl7rBq1mrOg+Gr>y}zrC)n->PLA_gUkY{&?e1mep1HS71PsA)*GSYYL_#-8RV1{-QBC#1?eeVI z4l9;~n18%4GmmAe2j*17#%TeE)(`Aq+K2%|mm{4*Hq5*4V*JNp#UkHQi+kPB((>Xf zYsJlu8!8WSc;D~$R=wZp;3EU+fVY1&w?*|rMPh4q&9zxkYow~?VDx+S1!Gbt)1M#O ztYTjtxeFlq)g$lAbAc7CfNbsSCN#ykG>NQ%*a3^yq(#q=fOS)f9p zhy;;>V6_YRXYTRjMu$HM{-!(hu0RHV23zgV52D1XH^+kv-VXa#~Z0Kwn4;9^E%Wgxay6-U)9uyOuIm&IF`1F=$hOXt2&+^`P#_#J* z#UW_V<*NXB-Ch70Q2w~T>d~A;-tq=s3RgPiCU>?516r*0_qI*QkJZU~iaQ$6xa*TE zEL;lS9?2$;T^Fx39uT~`-@L0vn%z7_b`fAKAXE(ZQ2(m=WR0-_V`b6fvz!B63DKqL zd+#5&Dlq(Gd`_F$Ic>PK|J8Hw_gU`YP5Iy6%P%%tKvNNB~#P2jsL6l!W|-`)w*@n zR6Kgnsz=XAVlje10jX-NqJMk>YzAT!kPvn(K^XFBsbtFy_?Pr+C|@t*0f6iy--GuW zxNk}B)Kzvd(NiyIiW3pmNDu+&hIt|Keq(+_d|>REKv4r1+0eizu(pRd3VuKN8`Yb6 zS`vg9O-4H@Pt$K~Pk;> zLAvjet{MoVs0J+=^&yNaKfyVd7& zq!FSg*6(efmFD?SCrt%8F!SVDC7h!II3Fjn@xZ4W2aX|oN3lOWrk@;S*7GxAx=A!u z^;PsoqV;DXrv^nCv-b^lkJLBIz@Lk-TiXAdmH%n|-BL54bXfa zs)%5(2_zE+W;gkn3G{6|@IqAKnn)i*z46t6oUf&O8{_30b5eH4PdbEQr)~MacxZV( zlxJESQ=sAN{`hjsR+%CO3IT4{SwbZXb@+`zFBR@yH++56f{c8+(EpE-z>v?*UG#a< z9t9xe+GJ|I;<`}$Cl2X}Nzh-<0^}VhkWg!2klhE!r#F;1(o4 z4G3feN~9!z@%S^f51>Vwj4+H56_xGT*SY+iAL$K_<_nq>&jflY1`SE3#+NB@QDN7$gIYkOp>KAe=kvMKAGZM=_Snre%w zZL%ppU+LgN9>;ul%9Kh5pVpb|{x36t+pZ~c#mWu9vosGrAaF<(u9MzVL<7?JC3h&60O!+2Czb zqe`y|6h}_#kCqZC5WThe*I8ql^YkB?oiGGRA^s0-9Mv@MaJE=6FM5SKMPWUJ)K9uS z+Y;=5`i=@x#`!cl*@Tijc-77L) z{gYP#?eFe0Q7|nEr`78WuN7^}r7O_@zwWvqO`GiHG10ocJJA4AeKMBw12_~|Eu_F? zm$^93uKr~8J6wT%26cB1KW`d{-xGO=)&Nx(`L*BVV?{hJ|6{&-B&krUCHbOKzei}U zm)-CVC)l+X`e9S9B7|VZ^GfzZx9`Pd?;r&rnXzM7@szh6Z;57ro9zpNDCy zL{sZojzP`Zx{|kBgp#-0Bdg#bB*S?22{t~v_zwPY;v|mmIOvIr?GM^Yog5zPm`49z zR0lRr;Q~g%DDaU2D{qh!{pp1}z4KDRa=QhF^Mm{SLdm`l0bUM{K)wfKL1|HpVV3FHRc~6FkT>;xA7`UuwJPC>!0|}JYgH(u zyJVUQy05a_~^~TlT3>2X0u@0No|C8)>6kjV!XRkAb;y8ro;lXc(fGTfLKwxk;Ed3~RtbbltH!+7GO4jZF8f@D+d6BIJXj;EE z`AeFcTsvYVjFX{&B&#P~eWJ3|?20mcaI9isP5EurLULqX!R(#xGzRc#uqP--%V~kd z7nr|iXk$3(2#J{4;~$vWKj?_bjP(Ctkzz3O0jFEzOA_FPopmR+uOB)B2s?o+jwQd3 z89;ra$XmKlEo%sZ)}rW9f@Edsi9*xzM^X<2V;7knhlHCKrF1K3R-z@TS^TsChrYMH z8j~VV&f)}zJ|CG=qqj~qhhKc4*tX85oBc{Zl~aG;$mIE-rv-9MvP{Y(loc4Hsfl0E zans~2HUD{Bm+YReT1ZDA#|AF(7j2&RrqZP?1q)T65`C?}!B!$j%>vkHNowh@qW|pP zpOzB47!lTfsM_gmotpzDgV7Xu%wO#_3!ZI%R0MZoiu%JBTzty`gbGiu6c(w6Wj$tD zIQzRLUz(xp$#ZftK>vZbC79HX=X_0#-X==B&$5G~4YsSls;W)6`#S$y1&QOPgv7K> zm0ZuOh9yuSGQfHMd5`QHD?3H_Yf)CgE|;A=klF{p2U-$2vZz2N&ta&KK@6xdyVYPX=L?E1{>vSBP^; zR9G=12VozFtBJS9)1_kQY$%u*XqBp~YCL+~ug`k@HZ+|E<&rhxFWBzCc*5%soSj>H z5FOK*pOTRAE4=!S#ytufr4#-CK~fo?_wiN}1o*`{#6N`Q*g__MZ8idaxslG*Tws0G zB;*;@7c4_;qhateYQO2gWp+CU%V6xvWqyr<4=Yxs>&eSsbt4GR{kpVWLb)7!Om3Iv zc4i1k;kcvO7x-NV5!Zi_w{?MiYqXRq0Hh6}jeL%)aEd&b73si;CF?5LD&?8o*s=N_ zxNEQcmwQ2`Rbo_^uqPiJ2u<)EFF2sr-zy{5IE>#RrQVn|T%5fX#1LCQ=a0L)Bm+5h z=A^JL@A=2e_EceQGKQ7DRyL=&i`(!E7Js@T_NedOQ%_nS^*<4MZqtfQ`NZTe=5*6ccyZI~S}U*Qb=VzS7$OPv z@Mz{MfMii)S1o>?L2WZXxe)kKCbm@HM9J_6E^6# z@?VfF8pYCe!ISGVbalH@de%^`E6f)(hdDz(FaK1>6A3G`q&32WmJ*Gb6_}_uQSLZn zvbd-J(dKiW@v)`Cu`@R5*-15~g;<_5WpPcVtf5J)>(a7Ff_M%|)d;}+_w zE<#-W?Urt_`Q*o9CR)hBidBt5%xx=daZduDhxzkzT&VKlBoh=k&uI~(N>hd%-vMq| zg*(R)Y!h6frloZtzI^%e`XUOve=fERo()7ed+l^&JH@ZOHByDtNL{?fc8{dvocHQ4 zRr;1sxsmQlPZ9}R{m41#gah4$T}ob~^Db3`orR@WTSEbwn!i~-0;p38N#dm(YDh*x z&lX48@hsB$sxkwIkTIk~PJlgW_+3JJ=GU!!9n*%O7>}K;h4@VQ8Qt5Z4aL;ZHm|M-D1-j1et(v+t zT)+L_!0At@lhmA{%=DszHAZlv3`vD-pructINXjP?)Pa_Wq2&CI*biqQtQ_Az(_Dt z{;eje-z}v#W-!+xJ>pnF=Wm3i#oJfOUr#P*Hw%8+XvQ3S#+Ohh7vI3^YstA@d{w;} zy=rqJm%vQf6tNa6#;bjCdhQOdkH9Hbrusm|Q&`45f=|!Z^J}u+I(>u?1H*|uq^>E& z%BKBF08!*%-*M5;=bf@GZeU6e%9mYNfOQ*{Z4|=v8u0dGZd!bk!gM0ar~3s4#`}Lt zxy>5;O$Amh9Y5R`5VyXu4zEdXU|V#jJti%>hEW!Qmj0B`S$&e)e>VU*;d91JmKYJg_G&AxmaXGIoTu#ls?(UyGFpsL6isA| zRc_o&Yz<00Zj8?wJt=s96^@MP$*!~3Mn2pzr7Nm$4{Mz%BO7F(Pg6bB1ImfB=NN!Z zVKHR!Luim?OZJ8|#r?d^H~esgtOhO8tEO1m(EMvPTvqL8Yv?9Q)0zs4zeD*R(%uk# zbJ^rz!E0h15&F@7qF-qu`$JQLQ&X)=C_C}3QHxRvts{Y9sFc$8stFOg^rjqjXhk88 zquLMK`-6IJxpP0H^)5P=Zo~ux6SUG&#=AchfBOvxx@czaHu~=u2= z`Izbj(I{+1DlGi?C>GjkG}~c2n&A_uSDanvCqDJjfeg)7icmX4Rh(HB$~0H!xW)@7 zJ$ij8#l08-amK)>jCg^FxGgb<`DVMoGRGT!dc zX;YykBt;RHQNg=$sn||2-M0|2rr3aaAym9kKfOu#23M|q2L*ralv>s=jpr|OFMcKvKoPjAB zvGX4)*!1z59=I3Z=>k9D$Q2s%wY}ILsMDW5umwKwJ0B5K^iM3$#n~%e`ph`p-7tX}^%6vi$2Z z(G0KEQzL0?PCL7kbDoVI$Yw2`fE3x#9b*OCm_3h|nSsI|1j5X|MYc`oj7>bBxt1NF z8oMakv`A@J_zTS2`USW-jJpg=jhSq7@=94 z#f!?{;kZt-2|x>QJ>Gi4H0}vxin9HEuivI=1{FN01{SB>Hc8});L$Gz55K1EL-JyK zdv;i7s07$kLv$RKbgQb}r@++BUh{7-lc-9*sf$kRWUO=4^#YBO_ZD7NW`)^Ke>Nhc za;+bsnT4I%^@1h*eRDFp$+>(MM>@H+WaHopxkFL1N`_*mUd8YmDsEBM;U35*mjNJc ziHU)uu8B^98-Cs^Wy0SG&1ZYi?~}0 z`A$s!0B%d4;-}woXf*`pB>+*!#ry7dH0Ex~e}2n(d)ZVeVL`Xl-mt;kSDs*pkD5F+ z7TH{cnL+TskU0$K{@fNHky;>?R#mfmm0{iBI>~&TIl}_a!WbGR{TsaWl zW=Zi4W$#HT*z0A8kkY!XREjI>smYwBRek} za$*FJk<+IBd31wbHRIoEqea5jnXL8xZ!&n|lO*yDHBp_Usi)t`eFHSp!+v1cEN0-P zXD+~Xj$whB-Xb-h`IDhATjX(LVTI(1bKvmo_7n$M_e1@S|0z#wv`}+YTw=sbYm{o6 zjn(}(=3sl8Mf_D^o}&S|y+{6`>X_B3F1!>)E}HAu`O`$m!5=i;EY+b@H7 zBk)@WU+r*_&jhB9)h;@>DAh0uExyn$-Pd=tU?nTo!S%T7^Yt6iEP{5LpAZjvp7lS{ zY8|xDxmM`Oz(&{P43N5h`;EFk=-J!sdl`mBPZezj=7)L!#M7CjZb&_OKwb&?OZ-_0 zfl#p}>YS;9rp1+r+1A_^yVEIek_Pqui{6VFV%0aOd$OP9f1agA>(#IRTlu}~^MwPZ z^f70WoRL$$x^6tWJ7+rnv@O;CYq=PU0mFAs9iz7M03P*H13XGCyuAA1-{oory&=oh zJR_sFYBYJa1^CM^Qahys_J!=(U=RWqn62Qro=9J_-}$st6QXnI7V%%r!x(r1UQ-c& zD%8v|Y&H1$Z4$A^GE0P}$ny1~`Xh~hZUCG4&2GvNp&pwPKOVa*;V_@2abDs;_hZt) zEf8@>zAEU|3ogam>P*SP;TQEYRA((SG7K@mFpPW|@>+9p9WSRAf*J|G^JkIp`v^}6 z*FNu-J*IK>n0|W z&WbvOS+A>;|FJFntAeR6CVn_KprXUtX+|Og-)o8zw3zdIXlu#c;3B(po%e%|?lS+W z_p9k<4c$*v2(r*8nehvGWwoBgE!phJm@YwCjp9<&_7j7&@pMx;WSlT!rq?Yyg4wOS zK=bmA>$jy;N|-SQg@gWtfRE=W5OR-LGu;cnSgp~PrU#VX@R?r;Ex-AvP-kue_w;s8 zP?>6yj=dMNxk^k)HVyaxbGo;mXC>#x$t97l%|x~HoHtffUnS_n0B~miQ{3Rq1_U=9 z?&k_R@)^x7CIDIiEa@{5#e*{%jwWER1(&@+f8wlQX{y|yHl=>%C6jAFLnYA%My#LD zP5%LZ!D*Xu@YC4Yx2woS{(;sw4fO#VC}uub!SpX2}LqKk-@JviliP?=?VPj`X2pz6kdItDj@hOd~w!Q@inaEM+kFeGeK8#Xsz=jbnSs=<}aut)MQR z|H%KBAhO|?(I8N_DxPA`Z?0ZkZBbL3QN3`DV!g+g>az#?n&f$_4PJpwnu}`MC_Bqj zOXVgnk{Y`$Ee57_2ae#czSGeg3&cb%t}6*#V_TCrU;GH1TV>T6#wD&-gy=XV7;Ly? zhdAn7+!PgH_queR^FN=*SZeWj;UeOPO4g4%7p@6b0{D7h;Ogsvv9MR)Z`Na?Vo`+H z@A~zqsQTN>2MFoWJ{<7z*K7wcF?jvRWS)V5^X1l)dp&zd0a=9}ixEX68s&gfG$%ou ziP`!d{#;mYdG@<8TGKr`XbK292?j)Sf8)!knvPUKY)s7uKp-G2d2eIgKG4gYv-ayk z2teb!?m2k$@Dduy;oI-iLdm3+VG23h4sNo33@D!@9NHvh4BjC=pdv91p*Xdk=I$rz{o`oV zOsG}cDYL1YzTDY_VTllNoC?1Tw=a~@b?*A>A-d{G&WSYn&=-9>urVib@l~2nPA>vu z;ij|&6`LN|TAnMNU{ynrjHWWJJ{h$ns7wP%%5G}zZbG|2HpVKd!1`}=b8~pQkZ^XW z?jiP_$CK&djc7;EEOW1dT~fe0ofXC2>(&W{TB1|yy*3_K%@7S&N=K` zi9XQAnj2f51wt?G-T>b*E;0^S*pOp2&{4R%VriHr!2Ex3fQ+oxmaYU-kX}=u*ucY* z7%`QosBAYUAt?U2xh$_QdGQkesjb^H-$SI|6cedm-ldXOx=b5;`C7=ls`>8*;HJ@3 zq;nG&>V7BP=XL-zg>_y@mDu2-_!A#!zJu$5jojd^UbZktxtmXR-AvKvCq!{SyD>A3 z>>y~?@eNh~?AWc9o)hDv-PEESV7>V)pvjQxWfgVA16txCcE85F#Gmonmlo&T_}+Xo za$FoaQk*A9ER6Hgvt;&(E-K_Oyj;qb@1SBS0#w{xLq{zjKsqP#<#I6MkmYK^eSKH+ zt7OS2V7-K8O3nby%mE_BK?yU;Y7MRd< zda2?e0PSGlM-;T(d6uCK6lYO>KBeuEylB(TGa3eJ1n4l$$xk zO_EKFaixSFaOk(CGHNLMCENCz@FQGK9T8lrextr*$0Ig+Eiz%_NL={{$>@a{9Bm*c z_cRBG&a;m(bUk!znHVw!|H26=kzD%}Wabsr4N5=eF`ffbQmi`T#lfz7<|oo@Iq z3WTJV^TF|)PWQ);bY6huH}U3|3maQN z1O?qrX)5uz^ZH*=_x!hR|37l;wZ&XIr3dC}rL8r_T<*VbH%V*Mt%>6Hbr^+hx_j>U zHlMzUZ{9?gXh33+haz5H;ag?*-W+D$*>8EUZ!WNk@9x`-JmwHL-Fw`B1R3yf^|P@q zM76EU&ZdCkAdLxZkJq^+2!yRl+Iqb$Kgf1^bnM5a8dJuSJ^8E}5f^1j5#oESAN|RE z^^%z(xgUH%V)5@%+gBwcAKMiUb~7#U+uu+dw61CpMWS*@=V`z6ES6`=Lr6FIodh50 z9&;pUt}dqd(0?DLi)x_%=6^w#c>7)zDArrw-f4TWTRit?>eUf`(Vnk+e=Pfui@7CW@z6=pZ9du9SbrQzm>*&rjm zK#czwWGM|J(orS|)24_56A;(+RMN#@b{~u}WYjdRWm=-L^(M%n%V^g{q%@Y-pQ13O z*M~VK!n}xPAum@qhu|fZO_PPc33yp8Udip|pr%NCS7G+irPLsW&uQFOBJRS+ygg~n zcd2@icUDc4-kt<*NZ|(HR`OewClnF(q#^uy!@{`0Y7_L5QoK-Y`jNRY2&_}t6$Lb*x%NY~ z2Hdk`T;|s=quE~}6F}Se=&4CWN`PitR#wK)$2ukuBuP#<<0|vE0J1;ufBH4n{vQk? z;njllTlVuRsG}%%7)6XJwHy=K(sW+=wEpg`qm#zJ)&l*69|eCo^f1pp4I;L@~s-406kYX*S{z$qoTT@De$YF~#5X<%NM`p@2v7*AWAVf1Z{t&PN^dSmIV78Z z_FzPEpTEZYpSj^lH(9RZl9Va~4Ep;cxoY={1Mgg9dtxVd!+p`}d~dUQ`gh-YbX06x zKhzV>{#1P?oLF_q1L0oU{HFUHkbIAM6sgi>GFX}|D}XJs%0);h`&$4Y+{`8ax0vj2^- zs;=XG9inbkJ#zwk$(zgnx?8e$+gd#e-vq2zNY^gp45~C*BwvjY|K}W& zKVFYDB`zt-*Z>_FRsV7<_g|A_HAT{EnTP@V3b`K!AM+g!U2wK*`t5%fZj#v}cBCxbqab@8-E46~$@{Mo z#oX+;&Wl-H)Ox0XwN-7OQdFB^UA*r;P!37?<8cJAtoiE>JtysMq%>3x37_tGfc?Oc zI-lD9pZWYOpOK&Q|+UeQp~FTaL=0VJnJ@racRA5OhBaHSg+Q6uQ>K-G(E)o47f7BJ!w5gCi<0 zO)Wzsh4FaF-sDp|US0U_XuvAnuBiC(3&jLLlZK70pGsLGkcplo^yKr7g-c0So2FpY z>`LLlqo6>kh85(T_ODzg=ki&bpfauW1Hill%v!=gz^^4p(atR$_>EsWofMnm|L_hh z_riNk8*ahQZ&3Wvi|x^)xX!wqJ^^;lZMAD46w7?njPFryf*KyLrwla$G9sG$8nx5725&uYXC3 z`&}#nly(~vZv>9hpJ*-09-l}-Ip3H$tnoE#vfSOm!MUx&C`w`KolhGlZmk#|8 zwd!kwLWB4O#zzz%<7(WA3MTPO0T0?iptlsCQ3;f+#MMqjcgvzCLZm?Q6+P1b#+w7! zO?}UR_YZ8c#E56;;OSJ5kg~8i`^to4P>wsNJ)KH4u)_cgK0;S0~g-Ei(E>7 zXPjK)PaGXaf8Tu4`mI98#K2)7=aR`2^r>aAec*DeNMPz{m|XK2C%_dl(Fr@?P*F@4JhUiNu7v&9lcpdEWKe;`v!pAw?A_VHv&_u{78bS=J3 z6MQPE$(&G`MHFy7LMTrl@g~tKTzb_NW>z~ueHePq0uth+e1v(uh3g6K|3P1iRzu-Y zVEV2CvS@P%ib^xZ^DJX+L}*AGADFBAy8e7{Y@d1}C(~g}X?JGkbamZ$l6VTYyiIuj zz^(O`fB@|!1wAx8r|a}0-|`@FhLVbE@GB>@xj)h@ba+`tRE+<^C=oA(hKA2j2&|9@ zv^1G2YuAkrplhwlGRIPogj3?5R_zwNJ|J-DfumSaF{ua3=jh@%wCHUn9TG)lQxw&~ zkxOOe*|ARl0Jz5TO~JH8HhB z0U@V^Ri9?f6~dv@j&l7t-QaEEs?!P0($XA`6iv`w;fP}=XisWQR82$WwlACocR7N3 z$OvmS2`Vn3MUchqU8OsF3-gA{S7q$S(ewD-Fa3V2smfZ(D)jnHtkzTb#D!hBKwHko zK+~Q(Y6I4#Afx7Ujo5HlE|5Bv%%WhW3w2DdYaB9zkh3l%KK}bM6}CdX?9d49fW8&j z&IixzBNr`OR1d7nzYE_pyCktaJl633cC1jA>LyY5ReirojF`Q(tDMtrqWvSAJmp+bgw!k+3^) zGO*hAaf4W9T(FCaeHw0YU-C1z#qFlr`R{xH!;DZ%qhjWGn#_Q-VH6JDOlDmo5(M8h z?sHs-L+6t3RVaDq*5rZ}1Ojx5ye4V1iNlUeUrY)!jSB-5($YU(Uc3gntq_6J#MC`* z=taIX{azde%r}m!0=67}lM0GG-6IHSc~ZlQ7AIm>aDI zgYSdq9cfwudpP644=ZPR$vrpi{M2dlq5y5#1{QF2*#}Bvg!yrI> z0@aEXKq!pcHJyY2V=J&eJ$?Gr3pbwL<(;;*%Y7yazYSEDUQ~eiU}1$a8a>ankVho* zEZk~2UiI2R!x)QKI_S?)?l1SKhe^ELBP@W=`keKJ8}Np$lb;jg1iNI>p8_77h)~}u zFWp%3kpOf8Sxnu^r6;p}oHC@P4+VmKPK|yMIWTq2Zr~lNSmtVqlj|I)MfEM@`F;M= z70WqB@CHer1 zv_0gk8ce=H8 zZFC>vRqK^4*P@O_YNii^rI*rEKC}@FbP$`wh%Nckmm?aiv;suy=_6NbowCts!e;xL zbN^`JC4u=7t$)U8ukRu8zeiZ-0=Qp@v+$MqKn*YgsCW;v<5$ z3M$fusxrU59dq+l4qg~0H4=}Cd3Sd9R385S-n7hzydg+#_zgvO_`GJCKk77vza?Qoc_=5_xb(IlAhw6Z$QHIG?

eg6aGTX9}a-)K9OBTrC)<$DU+geb_h~=+^ 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 limit +end + +local function temperatureIsHigh(value) + return exceedsThreshold(value, "temperature_c") +end + +local function totalCurrentIsHigh() + return exceedsThreshold(snapshot and snapshot.total_current_a, "total_current_a") + or faultIsActive("over_current") +end + +local function totalPowerIsHigh() + return exceedsThreshold(snapshot and snapshot.total_power_w, "total_power_w") + or faultIsActive("over_power") +end + +local function syncDraft(force) + local settings = currentSettings() + if settings == nil then + return + end + local revision = configuration.revision + if force or draft == nil or (not draftDirty and revision ~= draftRevision) then + draft = copyValue(settings) + draft.daemon = copyValue(configuration.daemon or {}) + draftRevision = revision + draftDirty = false + confirmPermanent = false + end +end + +local function markDraftChanged() + draftDirty = true + confirmPermanent = false + localMessage = nil + render() +end + +local function tabButton(id, label) + local selected = activeTab == id + local faultAttention = id == "faults" and hasActiveFaults() + return ui.column({ + flexGrow = 1, + gap = 7, + paddingH = 8, + paddingV = 8, + align = "stretch", + onClick = function() + activeTab = id + render() + end, + }, { + ui.label({ + text = faultAttention and label .. " (" .. tostring(knownFaultCount( + snapshot.active_faults, + snapshot.unknown_active_fault_mask + )) .. ")" or label, + color = faultAttention and DANGER or (selected and TEXT or MUTED), + fontWeight = (selected or faultAttention) and "bold" or "normal", + fontSize = 11, + textAlign = "center", + }), + ui.box({ height = 2, fill = selected and (faultAttention and DANGER or ACCENT) or "surface/0" }), + }) +end + +local function statusState() + return type(status) == "table" and tostring(status.state or "offline") or "offline" +end + +local function telemetryIsLive() + return type(snapshot) == "table" and snapshot.stale ~= true and statusState() == "ready" +end + +local function stackedFaultLayout() + return noctalia.getConfig("faults_layout") == "stacked" +end + +local function statusColor() + if hasActiveFaults() then + return DANGER + end + local state = statusState() + if state == "ready" then + return ACCENT + end + if state == "error" or state == "incompatible" then + return DANGER + end + return DIM +end + +local function header() + local state = statusState() + local live = telemetryIsLive() + local activeCount = hasActiveFaults() and knownFaultCount( + snapshot.active_faults, + snapshot.unknown_active_fault_mask + ) or 0 + local statusText = not live and (state == "ready" and "STALE" or string.upper(state)) + or (activeCount > 0 and "FAULT" + or (state == "ready" and "LIVE" + or (state == "connecting" and "CONNECTING" or string.upper(state)) + )) + local observedAt = sampleObservedAt() + local statusMessage = not live and (type(snapshot) == "table" + and "Values frozen; last sample " .. relativeTime(observedAt) + or (status and tostring(status.message or "") or "Waiting for wireviewd")) + or (activeCount > 0 + and tostring(activeCount) .. (activeCount == 1 and " active fault" or " active faults") + or (observedAt ~= nil and "Updated " .. relativeTime(observedAt) or "Live device telemetry")) + return ui.column({ gap = 0 }, { + ui.row({ paddingH = 18, paddingV = 12, align = "center", gap = 12 }, { + ui.glyph({ name = "bolt", size = 20, color = ACCENT }), + ui.column({ flexGrow = 1, gap = 2 }, { + ui.row({ gap = 6, align = "center" }, { + ui.label({ text = "WireView", color = TEXT, fontSize = 16, fontWeight = "bold" }), + ui.label({ text = "PRO II", color = ACCENT, fontSize = 10, fontWeight = "bold" }), + }), + ui.row({ gap = 6, align = "center" }, { + ui.box({ width = 6, height = 6, radius = 3, fill = statusColor() }), + ui.label({ text = statusText, color = statusColor(), fontSize = 10, fontWeight = "bold" }), + ui.label({ + text = statusMessage, + color = MUTED, + fontSize = 10, + maxLines = 1, + }), + }), + }), + ui.column({ gap = 1, align = "end" }, { + ui.label({ + text = live and "LIVE POWER" or "LAST POWER", + color = totalPowerIsHigh() and DANGER or DIM, + fontSize = 9, + fontWeight = "bold", + }), + ui.row({ gap = 5, align = "end" }, { + ui.label({ + text = format(snapshot and snapshot.total_power_w, 1), + color = totalPowerIsHigh() and DANGER or TEXT, + fontSize = 25, + fontWeight = "heavy", + fontFamily = "monospace", + }), + ui.label({ text = "W", color = totalPowerIsHigh() and DANGER or ACCENT, fontSize = 10, fontWeight = "bold" }), + }), + }), + ui.button({ glyph = "x", variant = "ghost", controlSize = "sm", onClick = "onCloseClicked" }), + }), + ui.separator({ color = LINE, thickness = 1 }), + ui.row({ paddingH = 10, gap = 0, align = "stretch" }, { + tabButton("overview", "OVERVIEW"), + tabButton("pins", "PINS"), + tabButton("faults", "FAULTS"), + tabButton("configure", "CONFIGURE"), + }), + ui.separator({ color = LINE, thickness = 1 }), + }) +end + +local function emptyState(title, detail) + return ui.column({ flexGrow = 1, align = "center", justify = "center", gap = 8 }, { + ui.glyph({ name = "plug-off", size = 30, color = DIM }), + ui.label({ text = title, color = TEXT, fontSize = 15, fontWeight = "bold", textAlign = "center" }), + ui.label({ text = detail, color = MUTED, fontSize = 11, textAlign = "center", maxLines = 3 }), + }) +end + +local function telemetryBanner() + if type(snapshot) ~= "table" or telemetryIsLive() then + return nil + end + local state = statusState() + local title = state == "stale" and "TELEMETRY PAUSED" or "TELEMETRY UNAVAILABLE" + local detail = state == "stale" + and "No fresh sample has arrived. Values below are frozen at " .. os.date("%H:%M:%S", sampleObservedAt()) .. "." + or "Showing the last received sample. Reconnect the device service to resume live monitoring." + return ui.row({ paddingH = 18, paddingV = 8, gap = 9, align = "center" }, { + ui.glyph({ name = "cloud-off", size = 15, color = DANGER }), + ui.label({ text = title, color = DANGER, fontSize = 9, fontWeight = "bold" }), + ui.label({ text = detail, color = MUTED, fontSize = 10, flexGrow = 1, maxLines = 1 }), + }) +end + +local function pinValues(index) + if type(snapshot) ~= "table" then + return 0, 0, 0 + end + local power = type(snapshot.pin_power_w) == "table" and number(snapshot.pin_power_w[index], 0) or 0 + local current = type(snapshot.pin_currents_a) == "table" and number(snapshot.pin_currents_a[index], 0) or 0 + local voltage = type(snapshot.pin_voltages_v) == "table" and number(snapshot.pin_voltages_v[index], 0) or 0 + return power, current, voltage +end + +local function pinRow(index, expanded) + local power, current, voltage = pinValues(index) + local currentHigh = exceedsThreshold(current, "wire_current_a") + local pinColor = currentHigh and DANGER or ACCENT + local maxPinPower = math.max(number(snapshot and snapshot.cable_capability_w, 600) / 6, 1) + local progress = math.max(0, math.min(1, power / maxPinPower)) + local pinAction = currentHigh and faultIsActive("wire_over_current") + and ui.button({ + glyph = "x", + tooltip = "Clear this conductor alarm on the device", + variant = "ghost", + height = 24, + enabled = not faultClearPending(), + onClick = "onClearWireAlarmClicked", + }) + or ui.label({ + text = string.format("%.1f%%", progress * 100), + color = pinColor, + fontSize = 9, + fontWeight = "bold", + }) + + if not expanded then + return ui.row({ flexGrow = 1, gap = 9, paddingV = 8, align = "center" }, { + ui.label({ + text = "P" .. tostring(index) .. (currentHigh and "!" or ""), + color = pinColor, + fontSize = 10, + fontWeight = "bold", + width = 22, + }), + ui.progress({ + progress = progress, + flexGrow = 1, + height = 3, + radius = 1, + fill = pinColor, + track = TRACK, + }), + ui.label({ + text = format(current, 2) .. " A", + color = currentHigh and DANGER or MUTED, + fontSize = 10, + fontFamily = "monospace", + width = 64, + textAlign = "end", + }), + }) + end + + return ui.column({ height = 96, gap = 7, paddingV = 10, align = "stretch" }, { + ui.row({ align = "end", gap = 7 }, { + ui.label({ text = "P" .. tostring(index), color = pinColor, fontSize = 11, fontWeight = "bold", width = 24 }), + currentHigh and ui.label({ + text = "ABOVE LIMIT", + color = DANGER, + fontSize = 9, + fontWeight = "bold", + }) or ui.spacer({ width = 0 }), + ui.label({ + text = format(power, 2), + color = currentHigh and DANGER or TEXT, + fontSize = 21, + fontWeight = "heavy", + fontFamily = "monospace", + }), + ui.label({ text = "W", color = MUTED, fontSize = 9 }), + ui.spacer({ flexGrow = 1 }), + pinAction, + }), + ui.progress({ + progress = progress, + height = 3, + radius = 1, + fill = pinColor, + track = TRACK, + }), + ui.row({ justify = "space_between", align = "center" }, { + ui.label({ + text = format(current, 2) .. " A", + color = currentHigh and DANGER or MUTED, + fontSize = 10, + fontWeight = currentHigh and "bold" or "normal", + fontFamily = "monospace", + }), + ui.label({ text = format(voltage, 2) .. " V", color = MUTED, fontSize = 10, fontFamily = "monospace" }), + }), + }) +end + +local function metric(label, value, unit, accent) + local valueColor = type(accent) == "string" and accent or (accent and ACCENT or TEXT) + local supportingColor = valueColor == DANGER and DANGER or MUTED + return ui.column({ gap = 3, flexGrow = 1 }, { + ui.label({ text = label, color = valueColor == DANGER and DANGER or DIM, fontSize = 9, fontWeight = "bold" }), + ui.row({ gap = 4, align = "end" }, { + ui.label({ + text = value, + color = valueColor, + fontSize = 17, + fontWeight = "heavy", + fontFamily = "monospace", + }), + ui.label({ text = unit, color = supportingColor, fontSize = 9 }), + }), + }) +end + +local function metricStrip() + return ui.row({ height = 72, paddingV = 10, gap = 12, align = "stretch" }, { + metric("VOLTAGE", format(snapshot.avg_voltage_v, 2), "V"), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric("CURRENT", format(snapshot.total_current_a, 2), "A", totalCurrentIsHigh() and DANGER or false), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "INPUT TEMP", + format(snapshot.input_temp_c, 1), + "°C", + temperatureIsHigh(snapshot.input_temp_c) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "OUTPUT TEMP", + format(snapshot.output_temp_c, 1), + "°C", + temperatureIsHigh(snapshot.output_temp_c) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric("FAN", format(snapshot.fan_duty_percent, 0), "%"), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric("CABLE", tostring(math.floor(number(snapshot.cable_capability_w, 0))), "W", true), + }) +end + +local function overview() + if type(snapshot) ~= "table" then + return emptyState("Waiting for WireView Pro II", status and status.message or "Connect wireviewd to begin.") + end + local powerValues = type(series.power) == "table" and series.power or {} + local pinRows = {} + for index = 1, 6 do + table.insert(pinRows, pinRow(index, false)) + if index < 6 then + table.insert(pinRows, ui.separator({ color = LINE, thickness = 1 })) + end + end + + local loadPercent = number(snapshot.total_power_w, 0) + / math.max(number(snapshot.cable_capability_w, 1), 1) * 100 + + return ui.column({ flexGrow = 1, padding = 18, gap = 14, align = "stretch" }, { + ui.row({ flexGrow = 1, gap = 20, align = "stretch" }, { + ui.column({ width = 190, gap = 0 }, pinRows), + ui.column({ flexGrow = 1, gap = 10 }, { + ui.row({ align = "end" }, { + ui.column({ gap = 2, flexGrow = 1 }, { + ui.label({ text = "POWER / 2 MINUTES", color = DIM, fontSize = 9, fontWeight = "bold" }), + ui.label({ + text = string.format("%.1f%% LOAD", loadPercent), + color = totalPowerIsHigh() and DANGER or TEXT, + fontSize = 17, + fontWeight = "bold", + fontFamily = "monospace", + }), + }), + ui.column({ gap = 2, align = "end" }, { + ui.label({ text = "CABLE LIMIT", color = DIM, fontSize = 9, fontWeight = "bold" }), + ui.label({ + text = tostring(math.floor(number(snapshot.cable_capability_w, 0))) .. " W", + color = ACCENT, + fontSize = 11, + fontWeight = "bold", + fontFamily = "monospace", + }), + }), + }), + ui.graph({ + values = powerValues, + color = totalPowerIsHigh() and DANGER or ACCENT, + lineWidth = 2, + fillOpacity = 0.12, + flexGrow = 1, + }), + ui.row({ align = "center" }, { + ui.label({ text = "-2:00", color = DIM, fontSize = 9, fontFamily = "monospace" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ text = "-1:00", color = DIM, fontSize = 9, fontFamily = "monospace" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ text = "NOW", color = ACCENT, fontSize = 9, fontWeight = "bold" }), + }), + }), + }), + ui.separator({ color = LINE, thickness = 1 }), + metricStrip(), + }) +end + +local function pinsView() + if type(snapshot) ~= "table" then + return emptyState("No pin telemetry", "Waiting for a complete six-conductor sample.") + end + local left = {} + local right = {} + for index = 1, 3 do + table.insert(left, pinRow(index, true)) + if index < 3 then + table.insert(left, ui.separator({ color = LINE, thickness = 1 })) + end + end + for index = 4, 6 do + table.insert(right, pinRow(index, true)) + if index < 6 then + table.insert(right, ui.separator({ color = LINE, thickness = 1 })) + end + end + return ui.scroll({ flexGrow = 1, padding = 18, gap = 14, align = "stretch" }, { + ui.row({ align = "end" }, { + ui.label({ text = "SIX-CONDUCTOR BALANCE", color = TEXT, fontSize = 15, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ + text = format(snapshot.avg_voltage_v, 2) .. " V BUS", + color = ACCENT, + fontSize = 10, + fontWeight = "bold", + }), + }), + ui.separator({ color = LINE, thickness = 1 }), + ui.row({ height = 292, gap = 28, align = "stretch" }, { + ui.column({ flexGrow = 1, gap = 0, align = "stretch" }, left), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + ui.column({ flexGrow = 1, gap = 0, align = "stretch" }, right), + }), + ui.separator({ color = LINE, thickness = 1 }), + ui.row({ height = 72, gap = 20, align = "stretch" }, { + metric("CONTROLLER VDD", format(snapshot.vdd_v, 2), "V"), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "EXTERNAL 1", + snapshot.external_1_present == true and format(snapshot.external_1_temp_c, 1) or "—", + snapshot.external_1_present == true and "°C" or "NOT FITTED", + snapshot.external_1_present == true and temperatureIsHigh(snapshot.external_1_temp_c) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "EXTERNAL 2", + snapshot.external_2_present == true and format(snapshot.external_2_temp_c, 1) or "—", + snapshot.external_2_present == true and "°C" or "NOT FITTED", + snapshot.external_2_present == true and temperatureIsHigh(snapshot.external_2_temp_c) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric("CAPABILITY", tostring(math.floor(number(snapshot.cable_capability_w, 0))), "W", true), + }), + }) +end + +local function hottestTemperature() + local candidates = { + { "Input", number(snapshot and snapshot.input_temp_c, 0) }, + { "Output", number(snapshot and snapshot.output_temp_c, 0) }, + } + if snapshot and snapshot.external_1_present == true then + table.insert(candidates, { "External 1", number(snapshot.external_1_temp_c, 0) }) + end + if snapshot and snapshot.external_2_present == true then + table.insert(candidates, { "External 2", number(snapshot.external_2_temp_c, 0) }) + end + local hottest = candidates[1] + for _, candidate in ipairs(candidates) do + if candidate[2] > hottest[2] then + hottest = candidate + end + end + return hottest[1], hottest[2] +end + +local function pinCurrentExtremes() + local currents = snapshot and snapshot.pin_currents_a + if type(currents) ~= "table" or #currents == 0 then + return 1, 0, 1, 0 + end + local highIndex, highValue, lowIndex, lowValue = 1, number(currents[1], 0), 1, number(currents[1], 0) + for index, rawValue in ipairs(currents) do + local value = number(rawValue, 0) + if value > highValue then + highIndex, highValue = index, value + end + if value < lowValue then + lowIndex, lowValue = index, value + end + end + return highIndex, highValue, lowIndex, lowValue +end + +local function faultContext(fault) + local limits = faultThresholds() + if fault == "chip_over_temperature" then + return "The device's internal safety temperature was exceeded." + end + if fault == "sensor_over_temperature" then + local source, temperature = hottestTemperature() + return source .. " " .. format(temperature, 1) .. " °C now / " + .. format(limits.temperature_c, 1) .. " °C limit" + end + if fault == "over_current" then + return format(snapshot and snapshot.total_current_a, 2) .. " A now / " + .. format(limits.total_current_a, 0) .. " A limit" + end + if fault == "wire_over_current" then + local pin, current = pinCurrentExtremes() + return "P" .. tostring(pin) .. " " .. format(current, 2) .. " A now / " + .. format(limits.wire_current_a, 1) .. " A per-wire limit" + end + if fault == "over_power" then + return format(snapshot and snapshot.total_power_w, 1) .. " W now / " + .. format(limits.total_power_w, 0) .. " W limit" + end + if fault == "current_imbalance" then + local highPin, highValue, lowPin, lowValue = pinCurrentExtremes() + return "P" .. tostring(highPin) .. " " .. format(highValue, 2) .. " A high, P" + .. tostring(lowPin) .. " " .. format(lowValue, 2) .. " A low / " + .. format(limits.current_imbalance_percent, 0) .. "% limit above " + .. format(limits.current_imbalance_min_load_a, 0) .. " A total" + end + return "The device reported a fault that this plugin does not yet recognize." +end + +local function faultItem(fault, active) + local info = FAULT_INFO[fault] + if info == nil then + return nil + end + local clearHandler = FAULT_CLEAR_HANDLERS[fault] + local operationForFault = faultOperationFor(fault) + local pending = operationForFault ~= nil and operationForFault.status == "running" + local alarmColor = active and DANGER or MUTED + local titleColor = active and DANGER or TEXT + local actions = { + ui.label({ + text = active and "ACTIVE NOW" or "RECORDED", + color = alarmColor, + fontSize = 9, + fontWeight = "bold", + }), + } + if clearHandler ~= nil then + table.insert(actions, ui.button({ + glyph = pending and "hourglass" or "x", + tooltip = not telemetryIsLive() and "Reconnect live telemetry before clearing this alarm" + or (active and "Clear this active alarm on the device" + or "Clear this recorded alarm on the device"), + variant = "ghost", + height = 24, + enabled = telemetryIsLive() and not faultClearPending(), + onClick = clearHandler, + })) + end + local details = { + ui.row({ height = 24, align = "center" }, { + ui.label({ text = info.category, color = alarmColor, fontSize = 9, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.row({ gap = 10, align = "center" }, actions), + }), + ui.label({ text = info.title, color = titleColor, fontSize = 13, fontWeight = "bold", maxLines = 1 }), + ui.label({ text = faultContext(fault), color = active and TEXT or MUTED, fontSize = 10, maxLines = 1 }), + ui.label({ text = info.action, color = active and MUTED or DIM, fontSize = 10, maxLines = 2 }), + } + local observedAt = faultObservedAt(fault, active) + if observedAt ~= nil then + table.insert(details, ui.label({ + text = active and "Observed " .. relativeTime(observedAt) .. " this session" + or "History first observed " .. relativeTime(observedAt) .. " this session", + color = DIM, + fontSize = 9, + maxLines = 1, + })) + end + if operationForFault ~= nil then + local feedback = operationForFault.status == "running" and "CLEARING ON DEVICE" + or (operationForFault.status == "success" and "CLEARED ON DEVICE" + or (operationForFault.status == "warning" and "CONDITION STILL PRESENT" or "CLEAR FAILED")) + table.insert(details, ui.label({ + text = feedback .. " · " .. tostring(operationForFault.message or ""), + color = (operationForFault.status == "error" or operationForFault.status == "warning") and DANGER or ACCENT, + fontSize = 9, + fontWeight = "bold", + maxLines = 2, + })) + end + local itemHeight = operationForFault ~= nil and 150 or (observedAt ~= nil and 128 or 110) + return ui.row({ height = itemHeight, gap = 10, paddingV = 8, align = "stretch" }, { + ui.box({ width = 3, fill = alarmColor }), + ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, details), + }) +end + +local function faultList(title, faults, unknownMask, active, naturalHeight) + local count = knownFaultCount(faults, unknownMask) + local children = { + ui.row({ align = "center" }, { + ui.label({ text = title, color = TEXT, fontSize = 13, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ + text = count == 0 and "CLEAR" or tostring(count) .. (count == 1 and " FAULT" or " FAULTS"), + color = count > 0 and (active and DANGER or MUTED) or ACCENT, + fontSize = 10, + fontWeight = "bold", + }), + }), + ui.separator({ color = LINE, thickness = 1 }), + } + if count == 0 then + table.insert(children, ui.column({ + height = stackedFaultLayout() and 110 or 248, + gap = 8, + align = "center", + justify = "center", + }, { + ui.glyph({ name = "circle-check", size = 24, color = ACCENT }), + ui.label({ + text = active and "No active faults" or "No recorded faults", + color = TEXT, + fontSize = 12, + fontWeight = "bold", + textAlign = "center", + }), + ui.label({ + text = active and "All monitored limits are within range." + or "No fault events are stored on the device.", + color = MUTED, + fontSize = 10, + textAlign = "center", + }), + })) + else + for _, fault in ipairs(faults) do + local item = faultItem(tostring(fault), active) + if item ~= nil then + table.insert(children, item) + end + end + end + if number(unknownMask, 0) ~= 0 then + local unknownColor = active and DANGER or MUTED + table.insert(children, ui.row({ gap = 10, paddingV = 8, align = "stretch" }, { + ui.box({ width = 3, fill = unknownColor }), + ui.column({ flexGrow = 1, gap = 3 }, { + ui.label({ text = "UNRECOGNIZED DEVICE FAULT", color = unknownColor, fontSize = 9, fontWeight = "bold" }), + ui.label({ text = "Unknown firmware fault", color = active and DANGER or TEXT, fontSize = 13, fontWeight = "bold" }), + ui.label({ + text = string.format("Diagnostic code 0x%04X", math.floor(number(unknownMask, 0))), + color = TEXT, + fontSize = 10, + fontFamily = "monospace", + }), + ui.label({ text = "Update wireviewd and this plugin before diagnosing it.", color = MUTED, fontSize = 10 }), + }), + })) + end + local props = { gap = 8, align = "stretch" } + if not naturalHeight then + props.flexGrow = 1 + end + return ui.column(props, children) +end + +local function faultPane(title, faults, unknownMask, active) + if knownFaultCount(faults, unknownMask) > 2 then + return ui.scroll({ flexGrow = 1 }, { + faultList(title, faults, unknownMask, active), + }) + end + return faultList(title, faults, unknownMask, active) +end + +local function faultsView() + if type(snapshot) ~= "table" then + return emptyState("No fault status", "Waiting for wireviewd telemetry.") + end + local activeCount = knownFaultCount(snapshot.active_faults, snapshot.unknown_active_fault_mask) + local loggedCount = knownFaultCount(snapshot.logged_faults, snapshot.unknown_logged_fault_mask) + local statusLabel = activeCount > 0 + and tostring(activeCount) .. (activeCount == 1 and " ACTIVE FAULT" or " ACTIVE FAULTS") + or (loggedCount > 0 and "NO ACTIVE FAULTS / " .. tostring(loggedCount) .. " RECORDED" or "SYSTEM NOMINAL") + local operationVisible = type(faultOperation) == "table" + and faultOperation.message ~= nil + and faultOperationFor(faultOperation.fault) ~= nil + local operationSummary = type(faultOperation) == "table" and ( + faultOperation.status == "running" and "CLEARING DEVICE ALARM" + or (faultOperation.status == "success" and "ALARM CLEARED" + or (faultOperation.status == "warning" and "ALARM STILL PRESENT" or "CLEAR FAILED")) + ) or nil + local visibleStatus = operationVisible and operationSummary or statusLabel + local visibleStatusColor = operationVisible + and ((faultOperation.status == "error" or faultOperation.status == "warning") and DANGER or ACCENT) + or (activeCount > 0 and DANGER or ACCENT) + local limits = faultThresholds() + local _, hottest = hottestTemperature() + local _, maxWire = pinCurrentExtremes() + local faultSection + if stackedFaultLayout() then + faultSection = ui.column({ gap = 18, align = "stretch" }, { + faultList("ACTIVE NOW", snapshot.active_faults, snapshot.unknown_active_fault_mask, true, true), + ui.separator({ color = LINE, thickness = 1 }), + faultList("RECORDED HISTORY", snapshot.logged_faults, snapshot.unknown_logged_fault_mask, false, true), + }) + else + faultSection = ui.row({ height = 312, gap = 28, align = "stretch" }, { + faultPane("ACTIVE NOW", snapshot.active_faults, snapshot.unknown_active_fault_mask, true), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + faultPane("RECORDED HISTORY", snapshot.logged_faults, snapshot.unknown_logged_fault_mask, false), + }) + end + local children = { + ui.row({ align = "end" }, { + ui.label({ text = "FAULT STATUS", color = TEXT, fontSize = 15, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ + text = visibleStatus, + color = visibleStatusColor, + fontSize = 10, + fontWeight = "bold", + maxLines = 1, + }), + }), + ui.separator({ color = LINE, thickness = 1 }), + faultSection, + ui.separator({ color = LINE, thickness = 1 }), + ui.row({ height = 72, gap = 20, align = "stretch" }, { + metric( + "TEMPERATURE", + format(hottest, 1) .. " / " .. format(limits.temperature_c, 1), + "°C", + (temperatureIsHigh(hottest) + or faultIsActive("chip_over_temperature") + or faultIsActive("sensor_over_temperature")) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "TOTAL CURRENT", + format(snapshot.total_current_a, 2) .. " / " .. format(limits.total_current_a, 0), + "A", + totalCurrentIsHigh() and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "MAX WIRE", + format(maxWire, 2) .. " / " .. format(limits.wire_current_a, 1), + "A", + (exceedsThreshold(maxWire, "wire_current_a") + or faultIsActive("wire_over_current") + or faultIsActive("current_imbalance")) and DANGER or false + ), + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + metric( + "POWER", + format(snapshot.total_power_w, 1) .. " / " .. format(limits.total_power_w, 0), + "W", + totalPowerIsHigh() and DANGER or false + ), + }), + } + return ui.scroll({ flexGrow = 1, padding = 18, gap = 14, align = "stretch" }, children) +end + +local function settingBlock(label, value, control) + return ui.column({ gap = 6, paddingV = 5, align = "stretch" }, { + ui.row({ align = "center" }, { + ui.label({ text = label, color = TEXT, fontSize = 11, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ text = value, color = ACCENT, fontSize = 10, fontFamily = "monospace" }), + }), + control, + }) +end + +local function buildChanges(persist) + local settings = currentSettings() + if settings == nil or draft == nil then + return {} + end + local items = {} + local function changed(key, before, after) + if tostring(before) ~= tostring(after) then + table.insert(items, { key = key, value = after }) + end + end + changed("fan.mode", settings.fan.mode, draft.fan.mode) + changed("fan.temperature_source", settings.fan.temperature_source, draft.fan.temperature_source) + changed("fan.duty_min_percent", settings.fan.duty_min_percent, draft.fan.duty_min_percent) + changed("fan.duty_max_percent", settings.fan.duty_max_percent, draft.fan.duty_max_percent) + changed("backlight_percent", settings.backlight_percent, draft.backlight_percent) + changed("averaging_ms", settings.averaging_ms, draft.averaging_ms) + changed("logging_interval_seconds", settings.logging_interval_seconds, draft.logging_interval_seconds) + changed("display.default_screen", settings.display.default_screen, draft.display.default_screen) + changed( + "fault_thresholds.temperature_c", + settings.fault_thresholds.temperature_c, + draft.fault_thresholds.temperature_c + ) + changed( + "fault_thresholds.total_current_a", + settings.fault_thresholds.total_current_a, + draft.fault_thresholds.total_current_a + ) + changed( + "fault_thresholds.wire_current_a", + settings.fault_thresholds.wire_current_a, + draft.fault_thresholds.wire_current_a + ) + changed( + "fault_thresholds.total_power_w", + settings.fault_thresholds.total_power_w, + draft.fault_thresholds.total_power_w + ) + changed( + "fault_thresholds.current_imbalance_percent", + settings.fault_thresholds.current_imbalance_percent, + draft.fault_thresholds.current_imbalance_percent + ) + changed( + "fault_thresholds.current_imbalance_min_load_a", + settings.fault_thresholds.current_imbalance_min_load_a, + draft.fault_thresholds.current_imbalance_min_load_a + ) + if not persist then + changed( + "daemon.poll_interval_ms", + configuration.daemon and configuration.daemon.poll_interval_ms, + draft.daemon and draft.daemon.poll_interval_ms + ) + end + return items +end + +local function submitChanges(persist) + local items = buildChanges(persist) + if #items == 0 then + localMessage = persist + and "No changed device settings to store. Daemon polling is runtime-only." + or "No settings changed." + confirmPermanent = false + render() + return + end + requestSequence = requestSequence + 1 + noctalia.state.set("wireview.config.request", { + id = tostring(os.time()) .. ":" .. tostring(requestSequence), + action = "apply", + persist = persist, + items = items, + }) + localMessage = nil + confirmPermanent = false + render() +end + +local function configureView() + if type(configuration) ~= "table" or configuration.loading == true then + return emptyState("Reading device configuration", "Requesting active settings from wireviewd.") + end + if configuration.error ~= nil then + return emptyState("Configuration unavailable", tostring(configuration.error)) + end + syncDraft(false) + if draft == nil then + return emptyState("Configuration unavailable", "wireviewd returned no editable settings.") + end + + local visibleScreenOperation = recentScreenOperation() + local operationText = localMessage + or (visibleScreenOperation and visibleScreenOperation.message) + or (type(operation) == "table" and operation.message) + or (draftDirty and "Unsaved changes" or "Active settings match the device") + local operationColor = visibleScreenOperation ~= nil + and (visibleScreenOperation.status == "error" and DANGER or ACCENT) + or (type(operation) == "table" and operation.status == "error" and DANGER + or (draftDirty and ACCENT or MUTED)) + local controlsEnabled = not (type(operation) == "table" and operation.status == "running") + + local fanColumn = ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, { + ui.label({ text = "FAN CONTROL", color = DIM, fontSize = 9, fontWeight = "bold" }), + settingBlock("Mode", string.upper(tostring(draft.fan.mode)), ui.select({ + options = FAN_MODE_LABELS, + selectedIndex = indexOf(FAN_MODES, draft.fan.mode), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFanModeChanged", + })), + settingBlock("Temperature source", tostring(draft.fan.temperature_source), ui.select({ + options = TEMP_SOURCE_LABELS, + selectedIndex = indexOf(TEMP_SOURCES, draft.fan.temperature_source), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onTemperatureSourceChanged", + })), + settingBlock("Minimum duty", tostring(math.floor(number(draft.fan.duty_min_percent, 0))) .. "%", ui.slider({ + min = 0, + max = 100, + step = 1, + value = number(draft.fan.duty_min_percent, 0), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFanMinimumChanged", + })), + settingBlock("Maximum duty", tostring(math.floor(number(draft.fan.duty_max_percent, 100))) .. "%", ui.slider({ + min = 0, + max = 100, + step = 1, + value = number(draft.fan.duty_max_percent, 100), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFanMaximumChanged", + })), + }) + + local systemColumn = ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, { + ui.label({ text = "DISPLAY + SAMPLING", color = DIM, fontSize = 9, fontWeight = "bold" }), + settingBlock("Backlight", tostring(math.floor(number(draft.backlight_percent, 100))) .. "%", ui.slider({ + min = 0, + max = 100, + step = 1, + value = number(draft.backlight_percent, 100), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onBacklightChanged", + })), + settingBlock("Sensor averaging", tostring(draft.averaging_ms) .. " ms", ui.select({ + options = AVERAGING_LABELS, + selectedIndex = indexOf(AVERAGING_VALUES, draft.averaging_ms), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onAveragingChanged", + })), + settingBlock("Screen shown now", screenLabel(currentScreen()) or "SELECT", ui.select({ + options = CURRENT_SCREEN_LABELS, + selectedIndex = indexOf(CURRENT_SCREEN_VALUES, currentScreen() or ""), + controlSize = "sm", + enabled = controlsEnabled and not screenChangePending(), + onChange = "onCurrentScreenChanged", + })), + settingBlock("Default screen", tostring(draft.display.default_screen), ui.select({ + options = SCREEN_LABELS, + selectedIndex = indexOf(SCREEN_VALUES, draft.display.default_screen), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onDefaultScreenChanged", + })), + settingBlock( + "Device logging", + tostring(math.floor(number(draft.logging_interval_seconds, 60))) .. " s", + ui.slider({ + min = 0, + max = 255, + step = 1, + value = number(draft.logging_interval_seconds, 60), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onLoggingIntervalChanged", + }) + ), + settingBlock( + "Daemon polling", + tostring(math.floor(number(draft.daemon.poll_interval_ms, 500))) .. " ms", + ui.slider({ + min = 100, + max = 5000, + step = 100, + value = number(draft.daemon.poll_interval_ms, 500), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onPollIntervalChanged", + }) + ), + }) + + local thresholdA = ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, { + settingBlock( + "Temperature alarm", + format(draft.fault_thresholds.temperature_c, 1) .. " °C", + ui.slider({ + min = 0, + max = 120, + step = 0.1, + value = number(draft.fault_thresholds.temperature_c, 80), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultTemperatureChanged", + }) + ), + settingBlock( + "Total current alarm", + tostring(math.floor(number(draft.fault_thresholds.total_current_a, 55))) .. " A", + ui.slider({ + min = 0, + max = 150, + step = 1, + value = number(draft.fault_thresholds.total_current_a, 55), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultTotalCurrentChanged", + }) + ), + }) + + local thresholdB = ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, { + settingBlock( + "Per-wire current alarm", + format(draft.fault_thresholds.wire_current_a, 1) .. " A", + ui.slider({ + min = 0, + max = 25.5, + step = 0.1, + value = number(draft.fault_thresholds.wire_current_a, 10.5), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultWireCurrentChanged", + }) + ), + settingBlock( + "Total power alarm", + tostring(math.floor(number(draft.fault_thresholds.total_power_w, 660))) .. " W", + ui.slider({ + min = 0, + max = 2000, + step = 1, + value = number(draft.fault_thresholds.total_power_w, 660), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultPowerChanged", + }) + ), + }) + + local thresholdC = ui.column({ flexGrow = 1, gap = 3, align = "stretch" }, { + settingBlock( + "Current imbalance alarm", + tostring(math.floor(number(draft.fault_thresholds.current_imbalance_percent, 40))) .. "%", + ui.slider({ + min = 0, + max = 100, + step = 1, + value = number(draft.fault_thresholds.current_imbalance_percent, 40), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultImbalanceChanged", + }) + ), + settingBlock( + "Imbalance minimum load", + tostring(math.floor(number(draft.fault_thresholds.current_imbalance_min_load_a, 6))) .. " A", + ui.slider({ + min = 0, + max = 10, + step = 1, + value = number(draft.fault_thresholds.current_imbalance_min_load_a, 6), + controlSize = "sm", + enabled = controlsEnabled, + onChange = "onFaultImbalanceMinimumLoadChanged", + }) + ), + }) + + local actions = { + ui.button({ + text = "RESET", + variant = "ghost", + controlSize = "sm", + enabled = controlsEnabled and draftDirty, + onClick = "onResetDraftClicked", + }), + ui.button({ + text = "APPLY FOR SESSION", + variant = "outline", + controlSize = "sm", + enabled = controlsEnabled and draftDirty, + onClick = "onApplyTemporaryClicked", + }), + ui.button({ + text = confirmPermanent and "STORE TO DEVICE" or "REVIEW DEVICE STORE", + variant = confirmPermanent and "primary" or "outline", + controlSize = "sm", + enabled = controlsEnabled and draftDirty, + onClick = confirmPermanent and "onStoreConfirmedClicked" or "onStoreReviewClicked", + }), + } + + local body = { + ui.row({ align = "end" }, { + ui.label({ text = "DEVICE CONFIGURATION", color = TEXT, fontSize = 15, fontWeight = "bold" }), + ui.spacer({ flexGrow = 1 }), + ui.label({ text = "DEVICE CONNECTED", color = ACCENT, fontSize = 9, fontWeight = "bold" }), + }), + ui.separator({ color = LINE, thickness = 1 }), + } + if confirmPermanent then + table.insert(body, ui.row({ gap = 9, paddingV = 8, align = "center" }, { + ui.box({ width = 3, height = 30, fill = ACCENT }), + ui.label({ + text = "This writes changed device settings to nonvolatile memory. Daemon polling stays runtime-only.", + color = TEXT, + fontSize = 10, + flexGrow = 1, + }), + })) + end + table.insert(body, ui.scroll({ flexGrow = 1, align = "stretch" }, { + ui.column({ gap = 12, align = "stretch" }, { + ui.label({ text = "FAULT LIMITS", color = DIM, fontSize = 9, fontWeight = "bold" }), + ui.row({ gap = 18, align = "stretch" }, { + thresholdA, + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + thresholdB, + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + thresholdC, + }), + ui.separator({ color = LINE, thickness = 1 }), + ui.row({ gap = 28, align = "stretch" }, { + fanColumn, + ui.separator({ orientation = "vertical", color = LINE, thickness = 1 }), + systemColumn, + }), + }), + })) + table.insert(body, ui.separator({ color = LINE, thickness = 1 })) + table.insert(body, ui.label({ + text = operationText, + color = operationColor, + fontSize = 10, + maxLines = 2, + })) + table.insert(body, ui.row({ gap = 8, align = "center", justify = "end" }, actions)) + return ui.column({ + height = 542, + padding = 18, + gap = 10, + align = "stretch", + justify = "start", + }, body) +end + +render = function() + if not opened then + return + end + local body = overview() + if activeTab == "pins" then + body = pinsView() + elseif activeTab == "faults" then + body = faultsView() + elseif activeTab == "configure" then + body = configureView() + end + local children = { header() } + local banner = telemetryBanner() + if banner ~= nil then + table.insert(children, banner) + table.insert(children, ui.separator({ color = LINE, thickness = 1 })) + end + table.insert(children, ui.column({ flexGrow = 1, opacity = telemetryIsLive() and 1 or 0.52 }, { body })) + panel.render(ui.column({ flexGrow = 1, gap = 0, fill = SURFACE, align = "stretch" }, children)) +end + +function onOpen() + opened = true + panel.setWantsSecondTicks(true) + syncDraft(false) + noctalia.state.set("wireview.config.request", { + id = "open:" .. tostring(os.time()), + action = "refresh", + }) + render() +end + +function update() + render() +end + +function onClose() + opened = false +end + +function onCloseClicked() + panel.close() +end + +-- Makes every dashboard view directly addressable for shell automation and +-- accessibility tooling without pointer injection. +function onIpc(event, payload) + if event ~= "tab" then + return + end + if payload == "overview" or payload == "pins" or payload == "faults" or payload == "configure" then + activeTab = payload + render() + end +end + +function onFanModeChanged(index) + if draft ~= nil then + draft.fan.mode = valueAt(FAN_MODES, index) or draft.fan.mode + markDraftChanged() + end +end + +function onTemperatureSourceChanged(index) + if draft ~= nil then + draft.fan.temperature_source = valueAt(TEMP_SOURCES, index) or draft.fan.temperature_source + markDraftChanged() + end +end + +function onFanMinimumChanged(value) + if draft ~= nil then + draft.fan.duty_min_percent = math.min(number(value, 0), number(draft.fan.duty_max_percent, 100)) + markDraftChanged() + end +end + +function onFanMaximumChanged(value) + if draft ~= nil then + draft.fan.duty_max_percent = math.max(number(value, 100), number(draft.fan.duty_min_percent, 0)) + markDraftChanged() + end +end + +function onBacklightChanged(value) + if draft ~= nil then + draft.backlight_percent = number(value, 100) + markDraftChanged() + end +end + +function onAveragingChanged(index) + if draft ~= nil then + draft.averaging_ms = valueAt(AVERAGING_VALUES, index) or draft.averaging_ms + markDraftChanged() + end +end + +function onDefaultScreenChanged(index) + if draft ~= nil then + draft.display.default_screen = valueAt(SCREEN_VALUES, index) or draft.display.default_screen + markDraftChanged() + end +end + +function onCurrentScreenChanged(index) + local screen = valueAt(CURRENT_SCREEN_VALUES, index) + if screen == nil or screen == "" then + return + end + requestSequence = requestSequence + 1 + localMessage = nil + noctalia.state.set("wireview.screen.request", { + id = "screen:" .. tostring(os.time()) .. ":" .. tostring(requestSequence), + action = "set", + screen = screen, + }) +end + +function onLoggingIntervalChanged(value) + if draft ~= nil then + draft.logging_interval_seconds = number(value, 60) + markDraftChanged() + end +end + +function onPollIntervalChanged(value) + if draft ~= nil then + draft.daemon.poll_interval_ms = math.floor(number(value, 500) / 100 + 0.5) * 100 + markDraftChanged() + end +end + +function onFaultTemperatureChanged(value) + if draft ~= nil then + draft.fault_thresholds.temperature_c = math.floor(number(value, 80) * 10 + 0.5) / 10 + markDraftChanged() + end +end + +function onFaultTotalCurrentChanged(value) + if draft ~= nil then + draft.fault_thresholds.total_current_a = math.floor(number(value, 55) + 0.5) + markDraftChanged() + end +end + +function onFaultWireCurrentChanged(value) + if draft ~= nil then + draft.fault_thresholds.wire_current_a = math.floor(number(value, 10.5) * 10 + 0.5) / 10 + markDraftChanged() + end +end + +function onFaultPowerChanged(value) + if draft ~= nil then + draft.fault_thresholds.total_power_w = math.floor(number(value, 660) + 0.5) + markDraftChanged() + end +end + +function onFaultImbalanceChanged(value) + if draft ~= nil then + draft.fault_thresholds.current_imbalance_percent = math.floor(number(value, 40) + 0.5) + markDraftChanged() + end +end + +function onFaultImbalanceMinimumLoadChanged(value) + if draft ~= nil then + draft.fault_thresholds.current_imbalance_min_load_a = math.floor(number(value, 6) + 0.5) + markDraftChanged() + end +end + +function onClearChipTemperatureClicked() + requestFaultClear("chip_over_temperature") +end + +function onClearSensorTemperatureClicked() + requestFaultClear("sensor_over_temperature") +end + +function onClearTotalCurrentClicked() + requestFaultClear("over_current") +end + +function onClearWireAlarmClicked() + requestFaultClear("wire_over_current") +end + +function onClearPowerClicked() + requestFaultClear("over_power") +end + +function onClearImbalanceClicked() + requestFaultClear("current_imbalance") +end + +function onResetDraftClicked() + syncDraft(true) + localMessage = "Draft reset to active settings." + render() +end + +function onApplyTemporaryClicked() + submitChanges(false) +end + +function onStoreReviewClicked() + confirmPermanent = true + render() +end + +function onStoreConfirmedClicked() + submitChanges(true) +end + +noctalia.state.watch("wireview.snapshot", function(value) + snapshot = value + render() +end) + +noctalia.state.watch("wireview.series", function(value) + series = type(value) == "table" and value or {} + render() +end) + +noctalia.state.watch("wireview.status", function(value) + status = value + render() +end) + +noctalia.state.watch("wireview.config", function(value) + configuration = value + syncDraft(false) + render() +end) + +noctalia.state.watch("wireview.config.operation", function(value) + operation = value + if type(value) == "table" and value.status == "success" then + draftDirty = false + end + render() +end) + +noctalia.state.watch("wireview.screen.operation", function(value) + screenOperation = value + render() +end) + +noctalia.state.watch("wireview.fault.operation", function(value) + faultOperation = value + render() +end) + +noctalia.state.watch("wireview.fault.observations", function(value) + faultObservations = value + render() +end) diff --git a/wireview-pro-ii/plugin.toml b/wireview-pro-ii/plugin.toml new file mode 100644 index 00000000..f89ebe4a --- /dev/null +++ b/wireview-pro-ii/plugin.toml @@ -0,0 +1,38 @@ +id = "gustav0ar/wireview-pro-ii" +name = "WireView Pro II" +version = "0.3.0" +plugin_api = 9 +author = "Gustavo" +license = "MIT" +dependencies = ["python3", "sleep"] +tags = ["bar", "panel", "service", "system", "hardware", "utility"] +icon = "bolt" +description = "Live WireView Pro II power, pin, temperature, fault, and configuration telemetry." + +[[service]] +id = "monitor" +entry = "service.luau" + +[[widget]] +id = "summary" +entry = "widget.luau" + +[[panel]] +id = "dashboard" +entry = "panel.luau" +width = 900 +height = 680 +placement = "attached" +position = "auto" +open_near_click = true + + [[panel.setting]] + key = "faults_layout" + type = "select" + label_key = "settings.faults_layout.label" + description_key = "settings.faults_layout.description" + default = "side_by_side" + options = [ + { value = "side_by_side", label_key = "settings.faults_layout.side_by_side" }, + { value = "stacked", label_key = "settings.faults_layout.stacked" }, + ] diff --git a/wireview-pro-ii/service.luau b/wireview-pro-ii/service.luau new file mode 100644 index 00000000..b87f5755 --- /dev/null +++ b/wireview-pro-ii/service.luau @@ -0,0 +1,670 @@ +--!nonstrict + +-- Noctalia does not expose Unix-domain sockets to Luau. The bundled transport +-- opens wireviewd's socket and speaks NUL-framed Varlink directly. + +local SUPPORTED_APIS = { [1] = true, [2] = true } +local MAX_POINTS = 120 +local pluginDirectory = noctalia.pluginDir() +local bridgePath = pluginDirectory and pluginDirectory .. "/varlink_bridge.py" or nil + +local SNAPSHOT_KEY = "wireview.snapshot" +local SERIES_KEY = "wireview.series" +local STATUS_KEY = "wireview.status" +local CONFIG_KEY = "wireview.config" +local CONFIG_REQUEST_KEY = "wireview.config.request" +local CONFIG_OPERATION_KEY = "wireview.config.operation" +local SCREEN_REQUEST_KEY = "wireview.screen.request" +local SCREEN_OPERATION_KEY = "wireview.screen.operation" +local FAULT_REQUEST_KEY = "wireview.fault.request" +local FAULT_OPERATION_KEY = "wireview.fault.operation" +local FAULT_OBSERVATIONS_KEY = "wireview.fault.observations" +local KNOWN_FAULT_MASK = 0x003f + +local series = { + power = {}, + current = {}, + temperature = {}, + fan = {}, +} +local telemetryPending = false +local telemetryDirty = false +local lastTelemetryAt = nil +local stalePublished = false +local monitorStarted = false +local compatible = false +local statusPending = false +local lastStatusProbeAt = 0 +local lastDaemonStatus = nil +local faultObservations = { + session_id = nil, + active = {}, + logged = {}, +} + +local function shellQuote(value) + return "'" .. tostring(value):gsub("'", "'\\''") .. "'" +end + +local function methodCommand(method, parameters) + if bridgePath == nil then + return nil + end + local command = "python3 " .. shellQuote(bridgePath) .. " call " .. shellQuote(method) + if parameters ~= nil then + local encoded, encodeError = noctalia.json.encode(parameters) + if encoded == nil then + noctalia.log("wireview: failed to encode Varlink request: " .. tostring(encodeError)) + return nil + end + command = command .. " " .. shellQuote(encoded) + end + return command +end + +local function decodeReply(result) + if result.exitCode ~= 0 then + local message = noctalia.string.trim(result.stderr or "") + if message == "" then + message = "The wireviewd request failed with exit code " .. tostring(result.exitCode) + end + -- Bridge diagnostics can reach the status label. Keep transport details out + -- of user-facing errors while retaining the actionable daemon context. + message = message:gsub("Varlink", "device"):gsub("varlink", "device") + return nil, message + end + local decoded, decodeError = noctalia.json.decode(noctalia.string.trim(result.stdout or "")) + if type(decoded) ~= "table" then + return nil, "wireviewd returned invalid JSON: " .. tostring(decodeError) + end + return decoded, nil +end + +local function hasCapability(status, expected) + if type(status.api_capabilities) ~= "table" then + return false + end + for _, capability in ipairs(status.api_capabilities) do + if capability == expected then + return true + end + end + return false +end + +local function publishStatus(state, message, status) + local previous = lastDaemonStatus or {} + noctalia.state.set(STATUS_KEY, { + state = state, + message = message, + daemon_version = status and status.daemon_version or previous.daemon_version, + daemon_build_id = status and status.daemon_build_id or previous.daemon_build_id, + connected_port = status and status.connected_port or previous.connected_port, + session_id = status and status.session_id or previous.session_id, + sequence = status and status.sequence or previous.sequence, + updated_at = os.time(), + }) +end + +local function push(values, value) + table.insert(values, value) + if #values > MAX_POINTS then + table.remove(values, 1) + end +end + +local function copyArray(values) + local copied = {} + for _, value in ipairs(values) do + table.insert(copied, value) + end + return copied +end + +local function clamp(value, minimum, maximum) + return math.max(minimum, math.min(maximum, value)) +end + +local function reconcileObservedFaults(previous, faults, observedAt) + local nextObserved = {} + local changed = false + if type(faults) == "table" then + for _, rawFault in ipairs(faults) do + local fault = tostring(rawFault) + nextObserved[fault] = previous[fault] or observedAt + if previous[fault] == nil then + changed = true + end + end + end + for fault in pairs(previous) do + if nextObserved[fault] == nil then + changed = true + end + end + return nextObserved, changed +end + +local function publishFaultObservations(snapshot) + local sessionId = tonumber(snapshot.session_id) + local observedAt = math.floor((tonumber(snapshot.observed_at_ms) or os.time() * 1000) / 1000) + local changed = false + if sessionId ~= faultObservations.session_id then + faultObservations = { session_id = sessionId, active = {}, logged = {} } + changed = true + end + local active, activeChanged = reconcileObservedFaults( + faultObservations.active, + snapshot.active_faults, + observedAt + ) + local logged, loggedChanged = reconcileObservedFaults( + faultObservations.logged, + snapshot.logged_faults, + observedAt + ) + faultObservations.active = active + faultObservations.logged = logged + if changed or activeChanged or loggedChanged then + noctalia.state.set(FAULT_OBSERVATIONS_KEY, { + session_id = sessionId, + active = active, + logged = logged, + }) + end +end + +local function publishTelemetry(snapshot) + local capability = math.max(tonumber(snapshot.cable_capability_w) or 1, 1) + push(series.power, clamp((tonumber(snapshot.total_power_w) or 0) / capability, 0, 1)) + push(series.current, clamp((tonumber(snapshot.total_current_a) or 0) / 55, 0, 1)) + push(series.temperature, clamp((tonumber(snapshot.input_temp_c) or 0) / 100, 0, 1)) + push(series.fan, clamp((tonumber(snapshot.fan_duty_percent) or 0) / 100, 0, 1)) + + lastTelemetryAt = os.time() + stalePublished = false + publishFaultObservations(snapshot) + noctalia.state.set(SNAPSHOT_KEY, snapshot) + noctalia.state.set(SERIES_KEY, { + power = copyArray(series.power), + current = copyArray(series.current), + temperature = copyArray(series.temperature), + fan = copyArray(series.fan), + }) + publishStatus( + snapshot.stale == true and "stale" or "ready", + snapshot.stale == true and "The daemon is serving its last known sample." or "Live device telemetry", + { + session_id = snapshot.session_id, + sequence = snapshot.sequence, + } + ) +end + +local fetchTelemetry + +fetchTelemetry = function() + if not compatible then + return + end + if telemetryPending then + telemetryDirty = true + return + end + telemetryPending = true + local command = methodCommand("GetTelemetry") + if command == nil then + telemetryPending = false + return + end + noctalia.runAsync(command, function(result) + telemetryPending = false + local snapshot, replyError = decodeReply(result) + if snapshot ~= nil + and type(snapshot.pin_power_w) == "table" + and type(snapshot.pin_currents_a) == "table" + and type(snapshot.pin_voltages_v) == "table" + and #snapshot.pin_power_w == 6 + and #snapshot.pin_currents_a == 6 + and #snapshot.pin_voltages_v == 6 then + publishTelemetry(snapshot) + else + publishStatus("error", replyError or "wireviewd returned an incomplete telemetry sample") + end + if telemetryDirty then + telemetryDirty = false + fetchTelemetry() + end + end, 5000) +end + +local function fetchConfiguration() + if not compatible then + return + end + noctalia.state.set(CONFIG_KEY, { loading = true }) + local command = methodCommand("GetConfiguration") + noctalia.runAsync(command, function(result) + local reply, replyError = decodeReply(result) + if reply == nil then + noctalia.state.set(CONFIG_KEY, { error = replyError }) + return + end + local settings, settingsError = noctalia.json.decode(reply.configuration_json or "") + if type(settings) ~= "table" then + noctalia.state.set(CONFIG_KEY, { + error = "wireviewd returned invalid configuration JSON: " .. tostring(settingsError), + }) + return + end + local pollCommand = methodCommand("GetPollInterval") + noctalia.runAsync(pollCommand, function(pollResult) + local pollReply = decodeReply(pollResult) + noctalia.state.set(CONFIG_KEY, { + revision = reply.revision, + settings = settings, + daemon = { + poll_interval_ms = pollReply and tonumber(pollReply.milliseconds) or nil, + }, + }) + end, 5000) + end, 5000) +end + +local enumValues = { + ["fan.mode"] = { curve = true, fixed = true }, + ["fan.temperature_source"] = { + input = true, + output = true, + external1 = true, + external2 = true, + maximum = true, + }, + ["display.default_screen"] = { + main = true, + simple = true, + current = true, + temperature = true, + status = true, + }, +} + +local integerRanges = { + ["backlight_percent"] = { 0, 100 }, + ["fan.duty_min_percent"] = { 0, 100 }, + ["fan.duty_max_percent"] = { 0, 100 }, + ["logging_interval_seconds"] = { 0, 255 }, + ["daemon.poll_interval_ms"] = { 100, 5000 }, + ["fault_thresholds.total_current_a"] = { 0, 150 }, + ["fault_thresholds.total_power_w"] = { 0, 2000 }, + ["fault_thresholds.current_imbalance_percent"] = { 0, 100 }, + ["fault_thresholds.current_imbalance_min_load_a"] = { 0, 10 }, +} + +local decimalRanges = { + ["fault_thresholds.temperature_c"] = { 0, 120 }, + ["fault_thresholds.wire_current_a"] = { 0, 25.5 }, +} + +local allowedAveraging = { + [22] = true, + [44] = true, + [89] = true, + [177] = true, + [354] = true, + [709] = true, + [1417] = true, +} + +local function normalizedValue(key, value) + local enums = enumValues[key] + if enums ~= nil then + local text = tostring(value) + return enums[text] and text or nil + end + if key == "averaging_ms" then + local number = tonumber(value) + return number ~= nil and allowedAveraging[number] and tostring(math.floor(number)) or nil + end + local range = integerRanges[key] + if range ~= nil then + local number = tonumber(value) + if number ~= nil and number == math.floor(number) and number >= range[1] and number <= range[2] then + return tostring(math.floor(number)) + end + end + local decimalRange = decimalRanges[key] + if decimalRange ~= nil then + local number = tonumber(value) + if number ~= nil and number >= decimalRange[1] and number <= decimalRange[2] + and math.abs(number * 10 - math.floor(number * 10 + 0.5)) < 0.0001 then + return string.format("%.1f", number) + end + end + return nil +end + +local function finishOperation(id, status, message, persist) + noctalia.state.set(CONFIG_OPERATION_KEY, { + id = id, + status = status, + message = message, + persist = persist, + }) +end + +local screenAliases = { + main = "main", + simple = "simple", + current = "current", + temp = "temperature", + temperature = "temperature", + status = "status", +} + +local screenLabels = { + main = "Main", + simple = "Simple", + current = "Current", + temperature = "Temperature", + status = "Status", +} + +local function normalizedScreen(value) + return screenAliases[tostring(value):lower()] +end + +local function finishScreenOperation(id, status, message, screen) + noctalia.state.set(SCREEN_OPERATION_KEY, { + id = id, + status = status, + message = message, + screen = screen, + updated_at = os.time(), + }) +end + +local function handleScreenRequest(request) + if type(request) ~= "table" or request.action ~= "set" then + return + end + local screen = normalizedScreen(request.screen) + if screen == nil then + finishScreenOperation(request.id, "error", "The screen request was invalid.", nil) + return + end + if not compatible then + finishScreenOperation(request.id, "error", "The WireView device is not connected.", nil) + return + end + + finishScreenOperation(request.id, "running", "Switching the screen shown on the device…", screen) + local command = methodCommand("SetScreen", { screen = screen }) + noctalia.runAsync(command, function(result) + local reply, replyError = decodeReply(result) + if reply == nil then + finishScreenOperation(request.id, "error", replyError, nil) + return + end + local active = normalizedScreen(reply.active) or screen + finishScreenOperation( + request.id, + "success", + "Showing " .. screenLabels[active] .. " on the device.", + active + ) + end, 10000) +end + +local function applyItems(request, items, index) + if index > #items then + finishOperation( + request.id, + "success", + request.persist and "Stored on the WireView device." or "Applied until reload or reboot.", + request.persist + ) + fetchConfiguration() + return + end + + local item = items[index] + local value = normalizedValue(item.key, item.value) + if value == nil then + finishOperation(request.id, "error", "Rejected invalid setting " .. tostring(item.key), request.persist) + return + end + + local method + local parameters + if item.key == "daemon.poll_interval_ms" then + method = "SetPollInterval" + parameters = { milliseconds = tonumber(value) } + else + method = "SetConfigurationItem" + parameters = { + key = item.key, + value = value, + persist = request.persist == true, + confirm = request.persist == true, + } + end + + local command = methodCommand(method, parameters) + noctalia.runAsync(command, function(result) + local _, replyError = decodeReply(result) + if replyError ~= nil then + finishOperation(request.id, "error", replyError, request.persist) + fetchConfiguration() + return + end + applyItems(request, items, index + 1) + end, 60000) +end + +local function handleConfigurationRequest(request) + if type(request) ~= "table" then + return + end + if request.action == "refresh" then + fetchConfiguration() + return + end + if request.action ~= "apply" or type(request.items) ~= "table" or #request.items > 18 then + return + end + + local items = {} + for _, item in ipairs(request.items) do + if type(item) == "table" and normalizedValue(item.key, item.value) ~= nil then + table.insert(items, { key = item.key, value = item.value }) + else + finishOperation(request.id, "error", "The configuration request was invalid.", request.persist) + return + end + end + if #items == 0 then + finishOperation(request.id, "success", "No settings changed.", request.persist) + return + end + + finishOperation(request.id, "running", "Writing verified settings to the device…", request.persist) + applyItems(request, items, 1) +end + +local function finishFaultOperation(id, status, message, fault) + noctalia.state.set(FAULT_OPERATION_KEY, { + id = id, + status = status, + message = message, + fault = fault, + updated_at = os.time(), + }) +end + +local function masksOverlap(left, right) + local a = math.floor(tonumber(left) or 0) + local b = math.floor(tonumber(right) or 0) + while a > 0 and b > 0 do + if a % 2 == 1 and b % 2 == 1 then + return true + end + a = math.floor(a / 2) + b = math.floor(b / 2) + end + return false +end + +local function handleFaultRequest(request) + if type(request) ~= "table" or request.action ~= "clear" or request.confirm ~= true then + return + end + local activeMask = math.floor(tonumber(request.active_mask) or 0) + local loggedMask = math.floor(tonumber(request.logged_mask) or 0) + if activeMask < 0 or loggedMask < 0 + or activeMask > KNOWN_FAULT_MASK or loggedMask > KNOWN_FAULT_MASK + or (activeMask == 0 and loggedMask == 0) then + finishFaultOperation(request.id, "error", "The alarm clear request was invalid.", request.fault) + return + end + + finishFaultOperation(request.id, "running", "Clearing the device alarm…", request.fault) + local command = methodCommand("ClearFaults", { + active_mask = activeMask, + logged_mask = loggedMask, + confirm = true, + }) + noctalia.runAsync(command, function(result) + local refreshed, replyError = decodeReply(result) + if refreshed == nil then + finishFaultOperation(request.id, "error", replyError, request.fault) + return + end + publishTelemetry(refreshed) + local stillPresent = masksOverlap(refreshed.active_fault_mask, activeMask) + or masksOverlap(refreshed.logged_fault_mask, loggedMask) + finishFaultOperation( + request.id, + stillPresent and "warning" or "success", + stillPresent and "Alarm remains on the device because the condition is still present." + or "Alarm cleared on the device.", + request.fault + ) + end, 10000) +end + +local probeStatus + +local function handleMonitorLine(line) + local cleaned = tostring(line):gsub("^%c+", "") + local event = noctalia.json.decode(cleaned) + if type(event) ~= "table" then + return + end + if event.event == "snapshot" then + finishScreenOperation(nil, "unknown", nil, nil) + compatible = false + probeStatus() + elseif event.event == "screen_changed" then + local screen = normalizedScreen(event.screen) + if screen ~= nil then + finishScreenOperation( + "event:" .. tostring(event.sequence or os.time()), + "success", + "Showing " .. screenLabels[screen] .. " on the device.", + screen + ) + end + elseif event.event == "telemetry_updated" + or event.event == "connected" + or event.event == "disconnected" then + if event.event == "disconnected" then + finishScreenOperation(nil, "unknown", nil, nil) + end + fetchTelemetry() + end +end + +local function startMonitor() + if monitorStarted then + return + end + local command = "while true; do python3 " .. shellQuote(bridgePath) + .. " monitor 2>/dev/null; sleep 1; done" + monitorStarted = noctalia.runStream(command, handleMonitorLine) + if not monitorStarted then + publishStatus("error", "Noctalia could not start the device monitor.") + end +end + +probeStatus = function() + if statusPending then + return + end + statusPending = true + lastStatusProbeAt = os.time() + publishStatus("connecting", "Connecting to wireviewd…") + local command = methodCommand("GetStatus") + noctalia.runAsync(command, function(result) + statusPending = false + local status, replyError = decodeReply(result) + if status == nil then + compatible = false + publishStatus("offline", replyError) + return + end + if not SUPPORTED_APIS[tonumber(status.api_version)] then + compatible = false + publishStatus( + "incompatible", + "wireviewd API " .. tostring(status.api_version) .. " is not supported by this plugin.", + status + ) + return + end + if not hasCapability(status, "telemetry") + or not hasCapability(status, "configuration-items") + or not hasCapability(status, "device-control") then + compatible = false + publishStatus("incompatible", "wireviewd is missing required API capabilities.", status) + return + end + + lastDaemonStatus = status + compatible = true + publishStatus(status.state == "ready" and "ready" or "connecting", status.state, status) + fetchTelemetry() + fetchConfiguration() + end, 5000) +end + +local function start() + if not noctalia.commandExists("python3") then + publishStatus("missing", "Install Python 3 to connect to wireviewd.") + return + end + if bridgePath == nil then + publishStatus("error", "Noctalia did not provide the plugin directory.") + return + end + startMonitor() + probeStatus() +end + +noctalia.state.watch(CONFIG_REQUEST_KEY, handleConfigurationRequest) +noctalia.state.watch(SCREEN_REQUEST_KEY, handleScreenRequest) +noctalia.state.watch(FAULT_REQUEST_KEY, handleFaultRequest) + +function update() + noctalia.setUpdateInterval(1000) + if not compatible and not statusPending and os.time() - lastStatusProbeAt >= 3 then + probeStatus() + end + if compatible and not stalePublished + and lastTelemetryAt ~= nil and os.time() - lastTelemetryAt > 8 then + stalePublished = true + publishStatus("stale", "No telemetry event has arrived for eight seconds.") + end +end + +start() diff --git a/wireview-pro-ii/tests/check_plugin.py b/wireview-pro-ii/tests/check_plugin.py new file mode 100644 index 00000000..3c614e68 --- /dev/null +++ b/wireview-pro-ii/tests/check_plugin.py @@ -0,0 +1,188 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import json +import re +import tomllib +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + + +def main() -> None: + manifest = tomllib.loads((ROOT / "plugin.toml").read_text()) + assert manifest["id"] == "gustav0ar/wireview-pro-ii" + assert manifest["version"] == "0.3.0" + assert manifest["plugin_api"] == 9 + assert "wireview" not in manifest["dependencies"] + assert "python3" in manifest["dependencies"] + dashboard = manifest["panel"][0] + assert dashboard["placement"] == "attached" + assert dashboard["position"] == "auto" + assert dashboard["open_near_click"] is True + fault_layout = dashboard["setting"][0] + assert fault_layout["key"] == "faults_layout" + assert fault_layout["default"] == "side_by_side" + assert {option["value"] for option in fault_layout["options"]} == {"side_by_side", "stacked"} + + service = (ROOT / "service.luau").read_text() + assert "SUPPORTED_APIS = { [1] = true, [2] = true }" in service + assert "wireview telemetry" not in service + assert "varlinkctl" not in service + for method in ( + "GetStatus", + "GetTelemetry", + "Monitor", + "GetConfiguration", + "SetConfigurationItem", + "SetPollInterval", + "SetScreen", + "ClearFaults", + ): + assert method in service + + bridge = (ROOT / "varlink_bridge.py").read_text() + assert "/run/wireviewd/io.github.Gustav0ar.WireView" in bridge + assert "socket.AF_UNIX" in bridge + assert 'b"\\0"' in bridge + + telemetry = json.loads((ROOT / "tests" / "telemetry.json").read_text()) + for field in ("pin_voltages_v", "pin_currents_a", "pin_power_w"): + assert len(telemetry[field]) == 6 + assert 0 <= telemetry["total_power_w"] / telemetry["cable_capability_w"] <= 1 + assert abs(sum(telemetry["pin_power_w"]) - telemetry["total_power_w"]) < 1 + + panel = (ROOT / "panel.luau").read_text() + assert "varlink" not in panel.lower() + for tab in ("OVERVIEW", "PINS", "FAULTS", "CONFIGURE"): + assert tab in panel + for role in ( + '"primary"', + '"error"', + '"surface"', + '"on_surface"', + '"on_surface_variant"', + '"outline/0.55"', + ): + assert role in panel + assert re.search(r"#[0-9a-fA-F]{3,8}", panel) is None + assert "flexGrow = 1" in panel + assert "height = 72" in panel + assert "height = 96" in panel + assert "height = 292" in panel + assert "height = 312" in panel + assert 'align = "stretch"' in panel + assert "local function faultPane" in panel + assert '"SAMPLE "' not in panel + for fault in ( + "chip_over_temperature", + "sensor_over_temperature", + "over_current", + "wire_over_current", + "over_power", + "current_imbalance", + ): + assert fault in panel + for human_label in ( + "Monitoring chip is too hot", + "Connector temperature is too high", + "Total current is too high", + "A conductor is carrying too much current", + "Total power is too high", + "Current is uneven across conductors", + ): + assert human_label in panel + assert "ACTIVE MASK" not in panel + assert "LOGGED MASK" not in panel + assert '"HEX"' not in panel + assert "local function exceedsThreshold" in panel + assert 'exceedsThreshold(current, "wire_current_a")' in panel + assert 'exceedsThreshold(value, "temperature_c")' in panel + assert 'exceedsThreshold(snapshot and snapshot.total_current_a, "total_current_a")' in panel + assert 'exceedsThreshold(snapshot and snapshot.total_power_w, "total_power_w")' in panel + assert 'color = currentHigh and DANGER or MUTED' in panel + assert 'color = totalPowerIsHigh() and DANGER or TEXT' in panel + for threshold in ( + "fault_thresholds.temperature_c", + "fault_thresholds.total_current_a", + "fault_thresholds.wire_current_a", + "fault_thresholds.total_power_w", + "fault_thresholds.current_imbalance_percent", + "fault_thresholds.current_imbalance_min_load_a", + ): + assert threshold in panel + assert threshold in service + assert "FAULT LIMITS" in panel + assert "ABOVE LIMIT" in panel + assert "Clear this conductor alarm on the device" in panel + assert "Clear this active alarm on the device" in panel + assert 'action = "clear"' in panel + assert 'methodCommand("ClearFaults"' in service + assert 'methodCommand("SetScreen"' in service + assert 'hasCapability(status, "device-control")' in service + assert 'SCREEN_REQUEST_KEY = "wireview.screen.request"' in service + assert 'noctalia.state.watch(SCREEN_REQUEST_KEY, handleScreenRequest)' in service + assert 'confirm = true' in service + assert 'FAULT_OBSERVATIONS_KEY = "wireview.fault.observations"' in service + assert "publishFaultObservations(snapshot)" in service + assert "observed_at_ms" in service + assert "masksOverlap(refreshed.logged_fault_mask, loggedMask)" in service + assert "updated_at = os.time()" in service + assert "function onIpc(event, payload)" in panel + assert "REVIEW DEVICE STORE" in panel + assert "STORE TO DEVICE" in panel + assert 'noctalia.getConfig("faults_layout") == "stacked"' in panel + assert "TELEMETRY UNAVAILABLE" in panel + assert "Values frozen" in panel + assert "History first observed" in panel + assert "CONDITION STILL PRESENT" in panel + assert 'panel.setWantsSecondTicks(true)' in panel + assert "preview-release" not in panel + assert "Screen shown now" in panel + assert "Choose screen" in panel + assert 'action = "set"' in panel + assert 'noctalia.state.watch("wireview.screen.operation"' in panel + + widget = (ROOT / "widget.luau").read_text() + assert '"primary"' in widget + assert '"on_surface"' in widget + assert '"on_surface_variant"' in widget + assert "active_fault_mask" in widget + assert 'return "error"' in widget + assert 'noctalia.togglePanel("gustav0ar/wireview-pro-ii:dashboard")' in widget + assert 'or "STALE"' in widget + + for user_facing_protocol_copy in ( + "Live Varlink telemetry", + "Writing verified settings through Varlink", + "Varlink monitor", + "Varlink socket", + "Varlink request failed", + ): + assert user_facing_protocol_copy not in service + assert re.search(r"#[0-9a-fA-F]{3,8}", widget) is None + + translations = json.loads((ROOT / "translations" / "en.json").read_text()) + fault_layout_translations = translations["settings"]["faults_layout"] + assert fault_layout_translations["label"] == "Fault page layout" + assert fault_layout_translations["stacked"] == "Stacked" + + catalog_path = ROOT.parent / "catalog.toml" + if catalog_path.is_file(): + catalog = tomllib.loads(catalog_path.read_text()) + matching_entries = [ + entry for entry in catalog.get("plugin", []) if entry["id"] == manifest["id"] + ] + if matching_entries: + catalog_entry = matching_entries[0] + assert catalog_entry["version"] == manifest["version"] + assert catalog_entry["plugin_api"] == manifest["plugin_api"] + assert (ROOT / "CHANGELOG.md").is_file() + + print("WireView Pro II plugin contract checks passed.") + + +if __name__ == "__main__": + main() diff --git a/wireview-pro-ii/tests/check_varlink.py b/wireview-pro-ii/tests/check_varlink.py new file mode 100644 index 00000000..7c2dba2c --- /dev/null +++ b/wireview-pro-ii/tests/check_varlink.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +from __future__ import annotations + +import argparse +import json +import os +import subprocess +from pathlib import Path + + +BRIDGE = Path(__file__).resolve().parents[1] / "varlink_bridge.py" + + +def call(socket: str, method: str) -> dict[str, object]: + environment = os.environ.copy() + environment["WIREVIEWD_VARLINK_ADDRESS"] = socket + result = subprocess.run( + [ + "python3", + str(BRIDGE), + "call", + method, + ], + check=True, + capture_output=True, + text=True, + timeout=5, + env=environment, + ) + reply = json.loads(result.stdout) + assert isinstance(reply, dict) + return reply + + +def main() -> None: + parser = argparse.ArgumentParser( + description="Check the plugin's read-only Varlink contract against a test daemon." + ) + parser.add_argument("socket", help="Path to a disposable wireviewd socket") + args = parser.parse_args() + + status = call(args.socket, "GetStatus") + assert status["api_version"] in {1, 2} + assert {"telemetry", "configuration-items", "device-control"} <= set(status["api_capabilities"]) + + telemetry = call(args.socket, "GetTelemetry") + for field in ("pin_voltages_v", "pin_currents_a", "pin_power_w"): + assert len(telemetry[field]) == 6 + + configuration = call(args.socket, "GetConfiguration") + settings = json.loads(configuration["configuration_json"]) + assert "fan" in settings + assert "display" in settings + + print("Direct wireviewd Varlink checks passed.") + + +if __name__ == "__main__": + main() diff --git a/wireview-pro-ii/tests/telemetry.json b/wireview-pro-ii/tests/telemetry.json new file mode 100644 index 00000000..1bf60214 --- /dev/null +++ b/wireview-pro-ii/tests/telemetry.json @@ -0,0 +1,27 @@ +{ + "sequence": 42, + "session_id": 3, + "observed_at_ms": 1785459693153, + "stale": false, + "vdd_v": 3.3, + "avg_voltage_v": 12.08, + "total_current_a": 35.43, + "total_power_w": 428.1, + "fan_duty_percent": 40.0, + "cable_capability_w": 600, + "pin_voltages_v": [12.08, 12.08, 12.08, 12.08, 12.08, 12.08], + "pin_currents_a": [5.79, 5.83, 5.88, 5.91, 5.98, 6.04], + "pin_power_w": [69.9, 70.4, 71.0, 71.4, 72.2, 72.9], + "input_temp_c": 46.2, + "output_temp_c": 39.8, + "external_1_present": false, + "external_1_temp_c": 0.0, + "external_2_present": false, + "external_2_temp_c": 0.0, + "active_fault_mask": 0, + "logged_fault_mask": 0, + "unknown_active_fault_mask": 0, + "unknown_logged_fault_mask": 0, + "active_faults": [], + "logged_faults": [] +} diff --git a/wireview-pro-ii/thumbnail.svg b/wireview-pro-ii/thumbnail.svg new file mode 100644 index 00000000..9015c1d2 --- /dev/null +++ b/wireview-pro-ii/thumbnail.svg @@ -0,0 +1,57 @@ + + + + + WIREVIEW + PRO II + + LIVE + + + OVERVIEW + PINS + FAULTS + CONFIGURE + + + + + P169.9 W5.79 A + + P270.4 W5.83 A + + P371.0 W5.88 A + + P471.4 W5.91 A + + P572.2 W5.98 A + + P672.9 W6.04 A + + + + + POWER FLOW + 428.1 + W + CABLE + 600 W + + + + + + + + 2 MINUTES + 71.4% LOAD + + + + VOLTAGECURRENTINPUT TEMPOUTPUT TEMPFAN + + + 12.08 V35.43 A46.2 C39.8 C40 % + + + diff --git a/wireview-pro-ii/thumbnail.webp b/wireview-pro-ii/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..4e72be88c3cb34feff40d6141c90972b4c178cb7 GIT binary patch literal 26572 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 literal 0 HcmV?d00001 diff --git a/wireview-pro-ii/translations/en.json b/wireview-pro-ii/translations/en.json new file mode 100644 index 00000000..d3b95909 --- /dev/null +++ b/wireview-pro-ii/translations/en.json @@ -0,0 +1,10 @@ +{ + "settings": { + "faults_layout": { + "label": "Fault page layout", + "description": "Stack the active and recorded sections on narrow displays.", + "side_by_side": "Side by side", + "stacked": "Stacked" + } + } +} diff --git a/wireview-pro-ii/varlink_bridge.py b/wireview-pro-ii/varlink_bridge.py new file mode 100644 index 00000000..1beee5c0 --- /dev/null +++ b/wireview-pro-ii/varlink_bridge.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 + +"""Minimal WireView Varlink transport for Noctalia's socket-less Luau VM.""" + +from __future__ import annotations + +import argparse +import json +import os +import socket +import sys +from collections.abc import Iterator +from typing import Any + + +DEFAULT_ADDRESS = "/run/wireviewd/io.github.Gustav0ar.WireView" +INTERFACE = "io.github.Gustav0ar.WireView" +MAX_FRAME_BYTES = 4 * 1024 * 1024 + + +def messages(connection: socket.socket) -> Iterator[dict[str, Any]]: + buffer = b"" + while True: + chunk = connection.recv(64 * 1024) + if not chunk: + if buffer: + raise RuntimeError("wireviewd closed the socket with an incomplete Varlink frame") + return + buffer += chunk + if len(buffer) > MAX_FRAME_BYTES: + raise RuntimeError("wireviewd returned an oversized Varlink frame") + while b"\0" in buffer: + frame, buffer = buffer.split(b"\0", 1) + if not frame: + continue + decoded = json.loads(frame) + if not isinstance(decoded, dict): + raise RuntimeError("wireviewd returned a non-object Varlink reply") + yield decoded + + +def emit_reply(reply: dict[str, Any]) -> bool: + error = reply.get("error") + if error is not None: + parameters = reply.get("parameters") + detail = parameters.get("message") if isinstance(parameters, dict) else None + raise RuntimeError(f"{error}: {detail}" if detail else str(error)) + parameters = reply.get("parameters", {}) + print(json.dumps(parameters, separators=(",", ":")), flush=True) + return reply.get("continues") is True + + +def request(method: str, parameters: dict[str, Any] | None, more: bool) -> None: + address = os.environ.get("WIREVIEWD_VARLINK_ADDRESS", DEFAULT_ADDRESS) + payload: dict[str, Any] = {"method": f"{INTERFACE}.{method}"} + if parameters is not None: + payload["parameters"] = parameters + if more: + payload["more"] = True + + with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as connection: + connection.settimeout(5) + connection.connect(address) + connection.sendall(json.dumps(payload, separators=(",", ":")).encode() + b"\0") + if more: + connection.settimeout(None) + for reply in messages(connection): + continues = emit_reply(reply) + if not more or not continues: + return + raise RuntimeError("wireviewd closed the socket without a Varlink reply") + + +def main() -> None: + parser = argparse.ArgumentParser(description="WireView plugin Varlink transport") + commands = parser.add_subparsers(dest="command", required=True) + call = commands.add_parser("call") + call.add_argument("method") + call.add_argument("parameters", nargs="?") + commands.add_parser("monitor") + arguments = parser.parse_args() + + if arguments.command == "monitor": + request("Monitor", None, True) + return + + parameters = json.loads(arguments.parameters) if arguments.parameters is not None else None + if parameters is not None and not isinstance(parameters, dict): + raise ValueError("Varlink parameters must be a JSON object") + request(arguments.method, parameters, False) + + +if __name__ == "__main__": + try: + main() + except (OSError, RuntimeError, ValueError, json.JSONDecodeError) as error: + print(str(error), file=sys.stderr) + raise SystemExit(1) from error diff --git a/wireview-pro-ii/widget.luau b/wireview-pro-ii/widget.luau new file mode 100644 index 00000000..13e5db85 --- /dev/null +++ b/wireview-pro-ii/widget.luau @@ -0,0 +1,95 @@ +--!nonstrict + +local snapshot = noctalia.state.get("wireview.snapshot") +local status = noctalia.state.get("wireview.status") + +local function formatNumber(value, decimals) + local number = tonumber(value) + if number == nil then + return "—" + end + return string.format("%." .. tostring(decimals) .. "f", number) +end + +local function statusColor() + if snapshot ~= nil and tonumber(snapshot.active_fault_mask) ~= nil + and tonumber(snapshot.active_fault_mask) ~= 0 then + return "error" + end + if status ~= nil and status.state == "ready" then + return "primary" + end + if status ~= nil and (status.state == "error" or status.state == "incompatible") then + return "error" + end + return "on_surface_variant" +end + +local function telemetryIsLive() + return snapshot ~= nil and snapshot.stale ~= true and status ~= nil and status.state == "ready" +end + +local function render() + local vertical = barWidget.isVertical() + local hasFault = snapshot ~= nil and tonumber(snapshot.active_fault_mask) ~= nil + and tonumber(snapshot.active_fault_mask) ~= 0 + local live = telemetryIsLive() + local container = vertical and ui.column or ui.row + local children = { + ui.box({ width = 6, height = 6, radius = 3, fill = statusColor() }), + ui.glyph({ name = "bolt", size = 14, color = hasFault and "error" or "primary" }), + } + if not vertical then + table.insert(children, ui.label({ + text = snapshot and formatNumber(snapshot.total_power_w, 0) .. " W" or "WireView", + color = hasFault and "error" or (live and "on_surface" or "on_surface_variant"), + fontWeight = "bold", + })) + if snapshot ~= nil then + table.insert(children, ui.label({ + text = live and formatNumber(snapshot.input_temp_c, 0) .. "°" or "STALE", + color = "on_surface_variant", + fontWeight = live and "normal" or "bold", + })) + end + end + barWidget.render(container({ gap = 5, align = "center" }, children)) + + local stateText = status and status.message or "Waiting for wireviewd" + if snapshot ~= nil and not live then + stateText = "Telemetry unavailable; displayed values are frozen" + end + if hasFault then + local count = type(snapshot.active_faults) == "table" and #snapshot.active_faults or 0 + stateText = tostring(math.max(count, 1)) .. (count == 1 and " active fault" or " active faults") + end + if snapshot ~= nil then + barWidget.setTooltip({ + { key = "Power", value = formatNumber(snapshot.total_power_w, 1) .. " W" }, + { key = "Current", value = formatNumber(snapshot.total_current_a, 2) .. " A" }, + { key = "Input", value = formatNumber(snapshot.input_temp_c, 1) .. " °C" }, + { key = "Status", value = stateText }, + }) + else + barWidget.setTooltip(stateText) + end +end + +function onClick() + noctalia.togglePanel("gustav0ar/wireview-pro-ii:dashboard") +end + +noctalia.state.watch("wireview.snapshot", function(value) + snapshot = value + render() +end) + +noctalia.state.watch("wireview.status", function(value) + status = value + render() +end) + +function update() + noctalia.setUpdateInterval(1000) + render() +end