From c9813b54e71e8c72860c0e84714c3752dc42a577 Mon Sep 17 00:00:00 2001 From: Thomas Jung <12159356+jung-thomas@users.noreply.github.com> Date: Tue, 14 Jul 2026 12:26:59 +0200 Subject: [PATCH] fix(vscode): ship node_modules in .vsix + add extension metadata The .vsix packaging used `vsce package --no-dependencies`, which strips node_modules from the archive. But esbuild.config.mjs marks @sap/cds, @sap/cds-dk, and @sap/cds-compiler as external (inlining breaks their lazy module.require). With node_modules stripped, `require("@sap/cds")` threw at module load, activate() never ran, and no commands registered -> VS Code reported "command 'hana-cli.openTools' not found". Remove --no-dependencies from all four packaging callers and route them through one canonical script: - vscode-extension `package` script: clean:vsix -> bundle -> vsce package - root `package:vscode` now delegates to the extension `package` script - both CI workflows drop the --no-dependencies flag Also complete the extension manifest so the extensions page renders correctly: add repository, homepage, bugs, license, a README, the Apache LICENSE file, and a 128x128 icon (extracted from the Vue app favicon). Bump version to 0.1.6. --- .github/workflows/release-hana-cli.yml | 2 +- .github/workflows/vscode-extension.yml | 2 +- package.json | 2 +- vscode-extension/LICENSE | 201 +++++++++++++++++++++++++ vscode-extension/README.md | 59 ++++++++ vscode-extension/icon.png | Bin 0 -> 36966 bytes vscode-extension/package.json | 16 +- 7 files changed, 277 insertions(+), 5 deletions(-) create mode 100644 vscode-extension/LICENSE create mode 100644 vscode-extension/README.md create mode 100644 vscode-extension/icon.png diff --git a/.github/workflows/release-hana-cli.yml b/.github/workflows/release-hana-cli.yml index 3b272260..05e85b67 100644 --- a/.github/workflows/release-hana-cli.yml +++ b/.github/workflows/release-hana-cli.yml @@ -211,7 +211,7 @@ jobs: npm ci --prefix app/vue npm ci --prefix vscode-extension npm run build:vscode - cd vscode-extension && npx vsce package --no-dependencies + cd vscode-extension && npx vsce package - name: Verify package version matches tag run: | diff --git a/.github/workflows/vscode-extension.yml b/.github/workflows/vscode-extension.yml index dec4f210..e62a2e58 100644 --- a/.github/workflows/vscode-extension.yml +++ b/.github/workflows/vscode-extension.yml @@ -44,7 +44,7 @@ jobs: test -f "$BUNDLE" || { echo "::error::$BUNDLE missing — bundle step did not copy the Vue build"; exit 1; } grep -q "Import / Export / Convert" "$BUNDLE" || { echo "::error::Bundled webview is stale: 'Import / Export / Convert' group not found in $BUNDLE"; exit 1; } echo "Bundled webview contains the current navigation." - - run: cd vscode-extension && npx vsce package --no-dependencies + - run: cd vscode-extension && npx vsce package - uses: actions/upload-artifact@v7 if: matrix.os == 'ubuntu-latest' && matrix.node == 22 with: diff --git a/package.json b/package.json index bba4ac1f..a1ed68b1 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "release:notes": "node scripts/extract-release-notes.js", "build:vue": "cd app/vue && npm run build", "build:vscode": "cd vscode-extension && npm run bundle", - "package:vscode": "npm run build:vscode && cd vscode-extension && node -e \"const fs=require('fs');for(const f of fs.readdirSync('.'))if(f.endsWith('.vsix'))fs.rmSync(f)\" && npx vsce package --no-dependencies", + "package:vscode": "cd vscode-extension && npm run package", "prepack": "npm run build:vue && npm run package:vscode" }, "repository": { diff --git a/vscode-extension/LICENSE b/vscode-extension/LICENSE new file mode 100644 index 00000000..53896a0f --- /dev/null +++ b/vscode-extension/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [2026] [SAP SE] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vscode-extension/README.md b/vscode-extension/README.md new file mode 100644 index 00000000..06d567d2 --- /dev/null +++ b/vscode-extension/README.md @@ -0,0 +1,59 @@ +# hana-cli Tools for SAP HANA + +Visual editors and database tools for **SAP HANA**, powered by [hana-cli](https://github.com/SAP-samples/hana-developer-cli-tool-example). + +This extension brings the most-used capabilities of the `hana-cli` developer tool directly into Visual Studio Code — custom editors for HANA design-time artifacts, an interactive tools panel, and quick commands for exploring a connected database. + +## Features + +### Custom editors + +Open HANA design-time files and inspect them visually — no need to read raw source: + +| File type | Editor | +|-----------|--------| +| `*.hdbcalculationview` | Calculation View Editor | +| `*.hdbtable`, `*.hdbmigrationtable` | Table Inspector | +| `*.hdbview` | View Inspector | +| `*.hdbprocedure` | Procedure Inspector | +| `*.hdbfunction` | Function Inspector | +| `*.hdbsynonym` | Synonym Inspector | +| `*.hdbrole` | Role Inspector | +| `*.hdbsequence` | Sequence Inspector | + +### Commands + +Available from the Command Palette (`Ctrl/Cmd+Shift+P`), all prefixed with **HANA:** + +- **Open hana-cli Tools** — launch the interactive tools panel +- **New Query Editor** — run ad-hoc SQL against the connected database +- **Show Tables** / **Show Views** — browse catalog objects +- **System Info** — inspect the connected HANA system +- **Add Connection** — store HANA connection details securely +- **Import Data** — load data into a table +- **CF Login** — authenticate to Cloud Foundry + +## Connection resolution + +On activation the extension automatically resolves a HANA connection from your workspace, trying in order: + +1. `default-env.json` +2. `.cdsrc-private.json` (CAP dynamic binding) +3. `.env` / `VCAP_SERVICES` +4. Connections you save via **HANA: Add Connection** (stored in VS Code Secret Storage) + +The current connection is shown in the status bar. + +## Requirements + +- Visual Studio Code `^1.85.0` +- A reachable SAP HANA database (HANA Cloud or on-premise). For CAP projects, a bound HDI container or `default-env.json` is used automatically. + +## Learn more + +- [hana-cli documentation](https://sap-samples.github.io/hana-developer-cli-tool-example/) +- [Source & issues](https://github.com/SAP-samples/hana-developer-cli-tool-example) + +## License + +Licensed under the [Apache License 2.0](./LICENSE). diff --git a/vscode-extension/icon.png b/vscode-extension/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..468074923dcc00705b837f9ad87e320a80d9603c GIT binary patch literal 36966 zcmV)BK*PU@P)gftEs5MaL^<--%hB|?BZ!0}NTrgPo1cdZE({F~>3egz45p{2P^;I`*V~7d zmNt}1B}`3CqEs%MF?MyMTCHGmY6^uy0j({q=I!^bFGhw(5DJGi#)ZWtz_Ktn z(2s`31ai3?W@l$LhW@^OG&MJ)kk4akdK#QZj<2JmUB6FHPir1qnp-e1IEZ?^u6azS z_mD_5>A3+5b8~apNhT4EL@_ot3b)&gabt4}kx*E3rZKLsV`XI-{(v9DBclifLwdIP z`31P#E{u+hA{L7wlgVIqW(GCO!qDIV8XFTR77Cc0nna~iL0?ZFTHD)Duh-zM)~Xt8 z-LkZ(Uav=g;C0J_uJKj3c&!4fUWeQ5)-_JL`D`6tkB4v8bzbwh-SD_P`n(HnRH{{2 zu=H77bGcC|SM1--5C5j`tDCX#hYMD#)pgw&kH_Ohty)E;T-J9w@2yp8D3>c54=2%# zyN*hws*TNO16+E(VyUQ!tD3D_qyJY20-Sm2wHSfM4U*do2rOw-=QvuT|l7 zdo(7qd1^W=d@epXKg)4&O#27R#RF@>rPT+pxv_@1`C0h9ejGb~48b79bP5v_m$Vs< zjgRk(z>60zpjxR&%(k|+>!Hq_yPy-)-`|Vw?jAklg^L%kx0gakTRVn^M>V)h7cXKj zokmkr6GlgQ&BDaw1a?!qQUl}T$thIpb&L#ijIAh_N*WJU%HZH2+S=MtEaq_T+(nej zWpwxUpue|Io8aPwa~fkJ(Wv`yJQEX>64T91O*nGoh@NF~@{-1sNHpX4@#DHiF}<+3 zC<%D%_z{FcF{zU2nHgAh3rCM0K`hpQy}doDHZJ_|$RJvp+mX*_aq;3sb8UE3D!5e4 zKhO-FI!4uT zt|uBIaHEEBm?yLXSQPUT!WGpPVV!2rBIO5F;)UZbgb zU_4YU7cXA0IO(xi6wS>oTGaKmRTPRv?V6U>Hho}YZ5`=M2BC0ByU^otV`pavySuwu zi1zjl4V+RVok`0k=;-K__{(I{*xK6CU}(s3(kMx`x3~15-09&+6vaXw+uJ*E!;Qv7 zBcidGHr&d}icT)222U?rW>53YQ{39p1b-li^q#p!waR%2hJsQlYin!TcpdF+ zXlQJdDqCM)lTFgn+$3qvljlvR)7oXxXawPKM2kcnNo$%`W+Y-?D;1H>?7`!8?_cA_ z;rk+yC}Q!Lc6TzBL^7GwA`C{j8~w7@X_@lx{(hhSMuQ}i&VbeiEoWN5JoTy6u1*WB z)NnYgla&YCF={!nh8e~<}Yc*+com@&Fo-9fn8D2(b^7~y@O*RovQ#=wxM@u6HdRj2t z(}s8uXo`Aq`SB5S$78xTCwyloiH?po%@JSp3OE;3ZP8eRuF-Q!?WT}uOzh7sPw-xP zPtO*KMx^ig+0^cyHgb@-X{)yJdgyaPrUm1dof8o5k983ai_B%&cW`@1ql#UfM#YP(iU&k@4pBx)JanvaI!z zd$Dh6>qjr=?|cXUXWq(xIZu^ZO=^uEl;7({*yl!9TMXA;egsdxVho*)0W?NAX5KG= za;1h`E~|TSp~8`nPH7>ZL#=MX>+vEOqKdJ!*gUPA?}mm(xy$)NUJ`}#%#%(jOGBCm zgloX}aUSWpaJ^_uN24)aqa@Ae^BODfZH!GBfptDTHa6EWKQ}8eb?n$NL?SVX&*|A& zoyf5<8ZR*o?9#-9P9}ZKj*c#gXBvyeLJ>W^J+`l2!i5W$baJU41_lOn!%LSY}$2q6U zF%XTRcVNJ9&U^v7V;Vqorc}Ti(xE3mRA)bSx5r-{-=`*(Lnw z*N@`o_g%u=@;36hB7A-?0s$WyqDED4$D46D&%kGOR@>rZn~mW-@$att?=1e|_n2=x zBrRNk+v`El>qVFbt_7@ZXEC?*7=CcO3w=GUxawFhURm|xy3JLA!BbA+#%qrv771f@eFM3CPU?)3(c|&SzM(4R$K$c6yfaE)8it%l8pAXU zX*g4wP>(aZNYP%Yl#tC9G$`6uTr+MOzK;Q`hK86_1K;3HC6h9QdV0FGID9RyEFzgq zp{2E1VMM;x*4JgNI-ys-QhO;o%ow(-xo)o@i=DzL3TG>WUWbfwf)y=$;Au{O+^ZOXm>|1<(*> zfW<62_3^%1w-@hVO`Ij-d)#o*&$GtYPeA-BKQUBL% zB_+)N_&KlF1;5viYR$qg?z@CL9+=QZ_@kFT4MXig6mvP$0zt(TcoQx(!_z#NgM$OI z{OMgKQz?Wa5yWFLZ2$(@_+Hv1-CV<1qhc>JvvZOntt~Awh-t4eG)+6Gsi{Hs0$*Ob z1C#*t&FL=D_vcNy3j+Z^_R=X$3@y*bc%xjEY&K_H2)74K_O9F8-P0iHqO~+NYm#Z4 z(D-8LG||)~KRlPsYJoM7M3ZKjVcFf?ltexko`w-OWu69;RmJRD3g5l`9PYcYjC`Sj zXvmL-c*Ism#yB(H`oTgwi?3yqzs&dYBw8p}i#iD|`ptend>%TUb^XimFeMs|GI}bG zp~r|KBcEl3q-n5ur02c-tR4O}n+g9v62y#$u}}^)9tr8a_dGg>`_Ihb>XZF=@eRlE zUX)aiY%G~ zZZM&sDs-Ba>{7W?q<5Sp4=^g$*cC~_EqQZl5F z$K=EW@`WP0yF1a>Hz3z?YH~vApslS{(KiNM7@?!9MqhMba7cq-L~MI|8x8Roj*K6Z zPrI|ZhRN9_{NSz${OHbeNM#C$MuPAuSfudL|Hn`>653@J1TIvqI!dLgCW(e+JRU_$ zV+1`Njp%J_L}zOPeg=L59(1=iqra~Q0Ur}uYZAefN{vk|$QMhPoSMVR`Zn^VI?9#@ zOB*T7ENxSax45_2ip+!)zIDAh|?#IN?-CdJ#ikHbQWDbU1;y@(X~=G1)r;e zo{na8_LytU{wntR8qw0+jPAZcT|0aJ0xr$2U@KF`@>U)XpPj|b@)mZpMcFyrOmxo< z+tPNScqT9rN%W-S)wV^hpUV^Mt|pU=r}_qbe2 zqf+njL^DLp4MPKl1EZf>ES2=M4BYUhJb~F9{d*HcVhEDfD%AxSO`DM48}MRvGl?(# z;C_7X_Q!R~!+x*Qn#RDgJ&8kGfcNA?mCIEW={I}a818MwbDwe=PdGh-_69D51)qmW z6+h~5%NV0k=60EJ^E;Vjp~1;#2?c{1H{%|KVo85zFvT&Zs4Dq5gG&1!`r)A zY-h{3w3x*0_g}>0lS|0vOUhjY{3gpMuiJSY3PbS4d-5RhfIaQ1A-v@kH(;c%6_%SG zgB#UyMKKksRH|a;M=WJ&tGdQ0EfZdxTe_57*I+Q9_foZUP5JUV$uj=V+*7@osExNR$i?)5mmSYHAuA>uX3fH{tj(lYC$vdu@GH!4@Vj zsKc0`V1k4%hCdldVuECHa#FjL2_WjHdmg!ncYpF5m|jXD9y1xfiZfyMWH~mS7M{|m z!dQO|eH~4>Y_uJxhg)&&$st^J`jp=D>SAGeO`G|uV`I4S`YZ6p z7e5*QbK7rm`~8>j@TC>3r;0jI!2l=T1dk4DFq770q>+|;5WjkG24|*L@%Gm|9j|-I zGxeU;)m1DnEoq~iI(ZVINJN(XB9lt>I!+uvhIqVDb`}#p+|WmljM>I?4(HCEm3ulo zG$gN08-Sug>07r;R=CoV9JzG)03%X9AADXnzWn_=@qhpA$0%3pXl#t^C#3d;nloQ^ikikH z4V=NQCcNxfSK-AsU5T*Qgjy+`_Rd*L? zvxRT`^g*1TF&l**%;BJvqbd2HHH-F21er=5ANlg_SWg!4r@w!bat@4|a=c|G@yaEo zgXylDbb3vOGv}Rl0Kc1RmFvoEC?#9H?$R1lEzpj0mCGfIr-G3j#L4;qJ<1m8xa*ucx~ct!2F znuc+28dyhhwlQp!k33{2C zp4G-^N;IOse?SX0KR=I5Hmmpq(LwZhmY0`gymB+q!18*0SY2I_5lMAAJT!n{Fp69* zjoqDXjQ{|gYrOx29i_f1YOKTP)w)uOzGC~>SvwAcR%%K_>-4E1Fg+* zY;2{J$)m)gnB@tleL~fy2p#Y3^(tM=@o?vJ(+7e<=}yJSZCi%l!S~RXF?!jnxv11k zEZrcB43db36b}M*umO>{HBO3NelO>MKRk77n@NSoU;m;f;fJ4l2R{7f7a$h)V>gpG z&*&I)#$LAFRvOiH#G)bGe_;iG{;_Z3;>r@ zb!`-RDOy*r4j82bZ8O*M@}i`WfLpc*cP3w!qEIPjR7NDb6d&M={yfE`CdzA&I?neT z4!=4fVB@g65eAIu%tH^d7D3-3tb&DrFMx2+r<}!?zkfHr{qqOma(fU8&{*4#Q~xgm zk#UtGx;qm1=%2q3R~+rbZaSm;&@EJmU3d<^R1+ncQSCgq246r4YM$i)M(3t6ME{?G zg3it^{m|f}p~MC5?d?ZTPp_=p`T0e~0Vpb!m#5i`(Tv4%U=9Uu83&Ri$8towfNZEZpL+| zk0aWU!20?+mX;Q@>$|(V(ACwYvGLyNOx8S0N2e@)-j|}ft+f^H?d{qytE=nS+T22O zb3!?Io|whOC8cm%nws=^rkaUGph&0vLmUKkD~-ja&YzM{D1!o4_{i6;ZAAE@$mT=Ms90sQ~G#yjq^>Uln>oqU3zx<{sg)50CT=N zJ3HYu$PgpG7(?b_P)yJU;O=$A3K2iSAfseHRLVu|SPqpjWf~>S1Zwxe*@;F4nC~#i zm&SMmXC@Z$wvT@svr9V)tY|?g%K80V zAR~#4nqdTwDP$Udd=@7@NTZGUfq?+{ly0g>LU?S1^IepVhT>fj8(jG7L#8 z(@2prnp+HNhlAkhA$*Cs{qD{VOwO<1_3!_8tZd~Fiv|^5HT!)(PNx5&$meEw`7=)A zjkjEjf&N~(gUOv8MY^cxdwP52n{(WBW%=sv=@GDnW29uFDD3L$P~4l*$A!gt>1LjI z8hzDjRT6`?OG{HiMkE($X>kepVjhhRjp*p?)C#ODugJsTX6o+g(#B@=G`*LWtIG(e zBAD9*#O!D@c6E2^Z^RdFZEos&D6QyWQCcl6ElUg&j^EnatV8t4FW-uP|NecFu7RKt z=LdFyeLxsKFP0Du`S7{FdNppi?xg;Eb!AzGDi1+#Pq)JPL@Mp>rR2T!_xI~?tgWxf zedJ;G1_L2uae8P37Ipd<wuA!Up`t`<)wVPpnx#z2Z! zMkRrZgfFEF6}s%!|_o16iYPX zn7-yc+_DdDdGZJnQ4jw4yANPDS3x9fqJ)|w`;>5VFu;>5*YUp3{Sg1r(SosoE^Xx9 zy)>FVZiFKSw8K-L&17{yj>lZ1;ah;;Ux#aBV?)R%C1@%%_?Y+wVtXrzNHmP&$Bya5Q8lfsEJ->XKYkQGUr_MwSs|j_x)upDTA5On z6o*O3c|)90zYHcW5zbu~YKKT3#uzSLx+v+$=qC+6ZXnJhC1_`7haFEa*C-7*#*q;N zm1h+X4Kx~?KDmN;ltCQFCpqwzxUiXA38#iz@b!d2cvj~GezwNqlcc_ShMIDj?B_Vg@X3&VB zaYFaVj$YCIQ{3D+NyNwbiTm>-6!7B<-~Kti`h(vhL7h)`h{>KqP%J(GjlH9T?fAln zUXAgAR+Os7Xmq~MxL+m@;22-b=X1m9WLOrqa#{TS#40|wS;YT&bPiv7_?&GR+VE$- z*B+xOC}D2Ez~RmJ8q6Vo47}W2=X(eOWz5|`&ujWVQ+VQ_o=hZF>d+o1@8whoaqtez z-o#E0e01mDI-!g$*m6FTFQ6&v!3X~E23#@TCFC+yPcQ_KSTt zPq7%n=505W<1s1hgE0zOl*y!JWiZ0W9nV3~o#5%9IAVm53r_cf7(D89#>hEw1dGrp zqS)Ko-qOU2Ukzd_&27mVPZ=!B-lO2F29K(;BDVHyzyDg6Y=dI6|B^+xoVOtt| zL?Ls~yf6zPPBb3>-H8RYlU*r{6hlZO|ODil$uR`KHgR=n?c7Xp!(j4p~- z8g0BaPckEh^}2=4tqlc48XFoEGv{+{tgT6OGWO4t%5iURZ7C2$9nSG^Q7LVR!K3X! z@C*Y`beH+V#cywK(>ziKGx|xjpt<##FgZWZL|3A*LHD9MBb1znkXT3>;%-!NeqtUU z{=zSDaef<-5Ni*dRO+D&qXl6XKK!QV;rUNKZi0CpFE+O}H68*}J3G2`U}-p0N+?)F zH;&;=PAdI*=8pN_{Gl$PxMI3A;P(kw$hfl}a(7REr#nRhXwSx{bF*+$6svW7^1pwB za*cSugT>$9@opMHRdlyD-~(^C2~81~u=!jZ-iN!EphtpA7^5eug&T)3Yr@kAb>cNX zB*U6qoDlV{8wm2m0!Z#81!Jc%7YP$DpF?IZt<%Qmjzq(n2wLf!MLq|gn}w)+9)`2I zd3Y}xxkM+^)6twoqFN{(8hQ-OfAGCr_}$&KKr@7X^P1Q1)A!MMW<7w$?el4q@9pl& zeu&2!4(2gsYAtw}{DCkcei#1gbvNjM+(Ug1xQf1X(GU|O@)QVAP{65jR542m8f^3@t{YL4LT$GYKQ&c@U+FWC@#h>Vv?ejS{3QN45Hy6 zW>=H=i+}hYwsv#ydk?_74ggBg!a@m8I5mLJzW4W)Su}7lOIS*dkso294#%Wq*~1S% zZ1F$Z+gmU+G%68Dh&PK87(E&qGR73^_mbP&GWZA^r*2tXoX7h5hQ!zS5tfI0k=)wA zw{N=_AN|^IWi6Y^SeYC9n0pSKq1^Yp_C`G8>H#EL+tJ+Ag1vMSQC^Z34=Kz!afwjroMH~d%rPtW(8QE5i5$=9zyO-VVf@{%@5e6|*3lA+>e;#@ z0lay%1Nqc0yna899Xl#dgGn5wP`SyE9vwqC9Fs(wo|%@HGd4Pc#zd1O;`G#nJQ>2V zRU28%3;k3sRpiqX7Eg6}=@JdTjG~W2L&I96iA#iYrv;H49p&7*gxaBGBes%thcr}~ zaAS%(8js=F(W9E%-P9(&_wxtvf4_3){z2kN+Q&O9@8Lo^TfiT^@EW}IX~)pk-l@0; z4>%1&N(3gz+S@x#3EhECmiYje%TgRb#SHsp;KX3n_e+qSYF)ZQDl1nU-+agN<{m!x zjXSZsm(f77g(}k7GE#e4q|$k0@?|7;%llyGx+%W-;awA$TS*B`W$r<2qlr#BCFuHGGMSW1PJ@rT zn|e7IHu-$3UIA*XZ?}{eXY9LPs|X!TYnU}>1Xaj**-2`!3+pNT<`KG6E+l!%h?5V8 z_e;1b&a7GquXxrK=0yoU_CX(#zDhj^RY#pHe_zNDF9cB1AkW-Oq9J z?|~45RYb&;Wf#N)0eo^|1wUBYM2sO`w;O}e5dP^2$C02etkqMzy~+vdp`9YVI`yC!2X7Hwin&%bhe0RTr-Tn{nHl+ zJHhoJWr0>e)GoaArViwC6(xJ9-xpTau)dQq zv29-j?toj9wXw6Ocymur7vAxP6VlCO5MjWht)&&MZEc$9jkQ%xM!r%*w!&f*7dBIA zEd=Wlg7JicD{HA;?51}$3EmjXn*vDXb6DA2*EYAJeuO+0Qu!1%wl{R2tBzeJq;Yz0 zS2^&C-;Y!-hpZj+DAsD&$uj;9Eo{A3SHgsFwP3IljrL-1tZ$e&h+y%oXkz*NhBkSk ziC&J0m+bECD#RO$H|$s9WU?%T-4+6g7z*Yd1c6T_<<1gA5st*AhvygPCCP|0Bsx2v z%LsQsLBZ-C+F~@=n3y9tl+b-=ygGu+-HR@MuO;b(Fd5{U-5JtaNF^7V+f6rFzPN35>%TiHpxhe(WWs8B!d{@L^8_AiB|DtmPM9~ZTJO!Bh-ym zx~kN1yQRzdHwS^l_i`gK*~4(M*T)EJMXoXDnFb;eKOCb_QWnusWt~bUrYKPrDXdmC z9)6ZN7$xmI9Ai$`y4xD?XTSFpy#Mn*vDsa0;EY|5K*?FIS@_;>F5tS;&zH;0dI7$V zYJk<#!a5N4&6~9}x1z6q1TD=OBpQ60ECv|5x(CtLQN!Hqw8Zk!o~Vp2pU02o)n#mL zZz{h%I6R1;KcIL3qgo8WFha-4VU&$U4txk!urjop%Ve;yw19FMk{UwoFk!Q>pzth{ zCUjdEFJB_Qtz3~$PJ@aD*7WSOftR;5qo=zE+vya3eD*Hv?j&*jz)3~!I3uru3(rj^ zC8Eh~L|2Jv--{Q|D>hD}i(;Mej)}=j(!+e8fyJjVH9e(89UdCSK)g|L2c~n&#VQ5| z2GQHsuP`wqft6ZWsaKLp@EM5Ep*o;3d*sNtjIQaaNyY1#ULGAC)BSkDnQEu+Z;U`U z78VzzepF{R!JCnk}60C=KRHW-J%{E;r(#sD6&G^x(dw3+T^xVE{vt zJ~db0Y%uzWA+Q;R&aDjR9}hfbMeyZEUPtdMG7>DoS8* zfmC%;t{9Ld+z14H`1F?_!^CU>jj^B%n76*>6s|ngt@o7*dFgoSzHo>e#FR60(@-4A zpsCkQ=8c#G`x>oriN8`oKELsk{jw*xF%mJ zCtv(5Z5?I@L%|5{Ui}i5au37n@}hmJVFlt9NWv~PWvPLN?dqx1&3R;^Q@vUE;!3RJ8L&55_=mOE2f2lfi z**yOCPoIw$-E^&it1$ywE-4c0r60`~89bPuX6W_Uv2ppq3`)$+8AIjdiKAHGs^i{A zHkFvj=JNQHS5sFu>EX_=u4r*8?kFO(rfW6j@42y9TM&&I_;xC}qs8E4Q^fN$XVZJK zp6hNmnwpE!SGmj{viY>=S7MC~sJV%_&B{>XPL4Ikq^n7WK=IAZ(ALtT;0bdMznXmj zt-iQy7}^QBQX1Pk>#(X-G$a}YPAOM&*h#IURw)XlODoy3DhTA;5v}$j(Go+mT?DeV zy@Bm*CdgXROD>^}A~K~NL<2Dtt2s0VnD%Z{Jc00SZm?6Qx+J={w>M?n30{8uIKrU_ z(&=4Q=+HGBJ2IxKD+b=qpI_9*H_+{N1=-G@Ju89^;vJmzI(P1z9pVk*HMcwk-@5I7 zT$tNbCehSNntEnQGPegmzUu;B`;uqszd1(67-R!*C(%0PE+yEIzNZm|Jke#dNH)HY zK4mQILo7_-Wl&;{z9lVwim7negJjMU6iP)OT)a?FdWnUgOk8-}KKOzph_J+L!5jgL zHW*ziR;$?CBjlVuxrG23yhJ*YMZQu-4K=xX6vvrd7PYJepQ3AV89wQ3TGFOJ(ItkB zYQ2I&senu&jjC0IH{gRi;6=Gs!uDJcvZJ(=#*F66^y!W#|+>f|A zICHLBBox476Dzpyu}ir2^bvz}3Yrpq@65C@0-2CtgpXo~ib<8g;C^|?Z zv$wZbdU9!bS+RA-F=((clSdbbiJ^esuQV;iFJt43YSJ5dyzm{I$$t+WwO;I8+>%W& zFgT)xrD4cgy=-k4RaXI-VjVSC3Ayqv&Ye4t_O^DNa?a`8tbvzPvhW&J-{Jz{euV}_MPg$;I9u2PqlkpPVOGlt9^PjiET zh-W^r8J8VvKwDe0k{N^T70fJbz~u=d+K@pYP{zhi8p|8T=kk6Qb{E^yk4ZUCcfU#*r1#M)l@o{m5UZjG}y>oH}a*t zHm*0|g~#R-ER^!t&7@IxS?KqflTj@5+OA<7^VArNLd7a$H@hQ`<~hgSj2}*Z0zaGo zJf4_%1Kf4iE0`26A@G%Y6%Dm9G&l94A(lX{m_}x+f>OP_kM`l@Q_mKq`wgR*;w|Me ziiMIAMcjCN(dFjJX7rVtQsw3r0X3w4F*rvD%SZQ-wuPV4%!c!m4W&I6#qT})8hr4d ze|)HX&bS2J3uIio@B9*;eN7)uALqdgkcI=Um6c_?;KpF@sgshudo`YZ6Ba zk`0Hw(=3$8sDueH8^k;x5ju=`k}l4H-rG9d_B^N(_i+qN;E46pz}*cBis^O_l6x7v z{zG5K@@Cr9B0Ax8m&v{oQ}C`oxB;(v?v<)?7ABC13u6Ql5i=*h{n*iC5hz=O5#)?XTcm=BMZ?Un^Bc!)$2G5M-<@t!X^G=ZRAWIkmaAr8ooU@5nLw?*XY7 zj*;uFF%lG-+1n?DWZZyRP)cK7qftFPOft(3V+5YRAa8|0Ps8V2#p91ZuJ;qRPe3YP z`D_|jjJ9EJC5a$mYYx)dt{mp3IXkn4Lb;5krFBU_#Q{u}i=i)dfRd)7#n7CZUG0={ zlR$!QU2V6oHni|4*#`Q-GMVSyo#MDu`nM#&uB!mkKTlo1St0))p z*vsY+iPh0Ee@X5l*+*y?c{~-gE}xUd&sh9sGJ~Vd0gR22ewOwK{bIkYVNT5V9-qbR zMhXQ2NBlnAS(ry497HysS3F;-*5VRk8@s4kHQk4`eYaFA=(B2yLi&9{RH`|2M#peN z?A7?@xqrZDYz{G3Gm^O|b`~$evY6D`K*1`&SN0*dK;7(-WuA3s;HkRMRfwa>+aqa5 z6~cqT6p>2d%T+`}4aUD`_=DHz_KE?FMxU8);t-VQAm&h|^fkM#(!kaAaho8Ms^f{5 z4dQ1H&S|clniXyYN-w(Tk6c*7%0?P3O^vFM_7dyIU8q{Uqet~S4G<277`0=^jw}31 zV`FuFRsQ(VBS&%D-H%~@ZCk9GrUJ;k!~#+*;q+)1o_76ZLKZV-e(~ZZO+r^^r`Rk> zfx5f0h#&lR2@lO?5s&*&^X{RBW$A0TIDbrRv+i2wv%%+cqvEQgGYT|Dd>BlG;15N0 zs`!u_%S)J_UB=%(o)id$n%7Ec?!;Ce}R~%0d7`uZ8L+&#j3%}5Oo=-=P2?CBsImW^?DhF=`9=!yd05O zSSel3EhD0Zd=az7U!m&D!0!oSa^6D!@>3CwBoy_dXr}bNaPhnjq9U&XkR)XUavpnn zSa}^3Fo#lux}J5J&ws{~aO(q$xc$Ki#DWB`9-yx2Ic#T2SlTY(+RIPMK5^4(CMbgX ziN-}F5>if`NEe0{Dc%T9Anx4o37HzRht4nUqloc4X-OCA)jCcMx606=^~w`ZWDlc@ z6paiNv0g6ZF5`VSx8Yb%MC8zM9}xF@kq8G65BL!A`4A2G(Llru5lLPb5J z9flV{guDqXmmkF0-S5*<*eA5)9I$+QvowLp-8*q%=T}%QK8{?0q)>TzD$`_8bu6?98A?rRAF6ilFh9xJapcWJ{{b^kReelwb$PLiRebgA2BJQKF>UxcRn`7(6(bZwWfTdBd0qJa zZWhC_C|;LJV$UXIU^y7wvUbnQuv^;1a{eL$ZX%2fuduKQ{GCQCIg6OYk}FO_+KW}! zJy^((A-s7bsv!2TQS&>y)quSkxq@8qx`Lv9;pW-cT+@70U9c#H|MKMXMG4Z@(Jn(e zxohy7jF>WW$Q3RY%W_l4`NPT<_ROKJka z#dp%B7i^=eInjji@go}Bm9=TS@rGvn(=U_oilx+)V!>FRVdph8)H{k5qvkLPb85>2Sxlw@Ii-Mf9ti21v zLnGPd_+t^Jy&WVly`I(e6n^`_d0ct4i`2LW zRVRu+tEquggkT~`v2jr1944I;6pJCJN zoOG^&=U?7{-@7(}e7+7=9da%$(!S~ap8Xwc)#%1quqqaU9yh*vCW!|&tET3_M$4++ zzFNgwjy7O8>O-Mihli-8np>Z@_}z87x$KWXN11LS;H|k(s95;yb_y%R3DU*1cX+u{ zM6lL?t7Eso=Z+X^xjK_8MgmZp5dExsus%@!H~mi+YVHE&T|Yt1odxuF3s-l%9H;z$ zfK!1#z)k&ch0h(rdioO5m_f<6ipA6;C{ZMCE5UFw))22mF3RJ$BPl!Z%@ZRns*7hF5 zZ!V+}4pE&rM1AIz+U~s;%PqD`7wR4_KKDoxr$@RG+1pX2EbW2bfdP#By!c>b1@F3J z7CDM(?kh?HgOY-B=iFO{DOz(Jc6+f=tm4y~JNQgnE6Ov|DAnp>Fl%jV!ANx!uK7Cd zOa70&BW)%?F1Y-4w^V_~OL&=ZcL8LrO-$9kkLVJCC}aR>#S>4AYwn4^oS9s~qr2b2 zV(A`)JTa74S^xiLw1vkNJ*E03@da^xl+py~Fs?y+fbD9e0^@Nsx3s|Ps-dqfDiTT^ zmIEPea~is^l`f;FcK~hzABpp4+@Ik|ehH&ejMG#65Xis+P-gb{zEnDkl^w$lY6uqX z$z;h|bI>X$$O!@#>~B zCgOGB+*%eNyQ_?k+}N)e11Cv^nxz_^J=TuxstcccY|YpMwyJRPs~r5NB!St^ywu?F z;@8`IXs*}s_Fk42|KYIfnT+#L{WHz=jUw8~*Z$$P0BY#3cGZIKeC(GNeqLNYQ z$C~vZ8Uj7&54{+v-5s&3vay!8DU9W86%|(wma7g{x5wI}XbH6lK;m(cZ^=?Y4AnH} zRwekQk~V{?sw)QRM0=sHy9525jab}B3cO>e?~NVc_j$0gxr>?kWq28Ja=GXMY+-V0 z+7LyKj>rh42QW1=tuJRng4wV;A385OG=_cou#SdtB*5uogBTk-DiP1<7u`P+DA2#< z&562UnwgL*CYtynZxCV7lmeq;!x$J2AX5U~`R^BC)tEOh>cv3^*KJNPrL(d+<*^8!&7tt?7* zDuZj?9y~pl!G(o+(ZaC}4Ka$oz-#cMnG90aGJGztj6Zq>rm~;mV1A{EXK+i1J;fEk zeDw~r7yIE}??J`NV}$KtC}o$fL}jIhfY@~l{V*^n(bMui9o z_XE?w^x~!h8E(%3gxLu>65BV@XQ<{V8H9-8EbODG4HD*nj>hSl#R#L(nHoRK;f6t+0T|{)NNU9>tEoD6D0Ygq0`A%PBGT3z+;x7J5kp6spNb>CThQma z2~X;O9pZsD)aq=#!^&PK(rQ@QX;3rS4tizrO#K zI6lxO`cziis3TXUY)F^LUL9qnj%f}-@=1ONjZGSh)w-cMqb?-^IT8xuqu-vumw&m4 zc+5uw+H4{(jX%0^W)EpExk=Y<{CfK0pT2nvH;#8~6DM$?Ari(`$--N2J%{O3 z4&fk809z8!6?DGS&D{XhJ;e0`Wsik~7xmmCAMtPkv%6>UtqY$5 zLxSpdW=}H3KNpu~m)FD0stHJt^^+)~2wL&XzV{;RZbq?^w-H08Z<7*CB&n>|rR#a1 zC{?*O>YWrcAW`*1BHRrIxT?8j;;mN1y^qh~ouB&Qeu1hZ-MCp;js41Joq~I7dmC$O z>!?(ylUrn^(`qL(2qS?MpZwv%Ft@(Cxo2nV?CoS{ySRy{Un71umR44Rs{h`;K!u2B&Wb##TedQK$*Gm%E zO(5*vQxrC|z$;bY?{1&RPR$E@7S-glTmm` zC9oSv4G3CpY~(8V=;Q(_J|EIMJ1V-2grkTyL~y+GYFrk*NoifjEi?@z%%nSpVU3c2 z?kKqjtRT|0HJnX<6X_h;SvKX@ceZznKA&ZA?2E)Y!^Xx2%^9tJmfsV-Mf^rvYn$wV z)wNae9nt7!P>7AK*48!xD(=dWGNPkt)#-zmKs3ZZvrYK(%Zk?(yNFjXk{o!N*mu zrEZ*M^73b}n@Qn{_NU{T)|<5nEW%su#u`*!v;!z8>DJb2G!$jjAmEN*CV4;3?|vUm z4b38QB!GlC2S!6VXM}_^!pC)>I_BK)hu4JVU=M;&WWT=>-^V#831??pv!Z>q|5Z35 z%gyD&Ubajla7ZVb?#09e+qPCQIx>uCv;oP~&OV(h>&YlyiltixI5a2k5S5wBE!NLi zFo^EaVZpiQ=9UcPyro$L63pDq%`VD<<)&jB8opRSLKw8#qz(@&&rb{;nZ-zOc=f5H z_{X<4<24_@8<{erStb~?&mPJU?;%pjYSlu6-;ev|QuxRFgZRf+Tx$|AvvUH!uvYF3 zH(ZIVJAi+d!cR{Yh=Mp0m8k4~qN1QOY{F=+ED>i25J zLfq%Ww;o!?=kB%HYUBjkrc=L^(-beTB_sliF^WI_`B?Ov_T`n7&Ow1+ZAF7#}1QIDkgZRQP zR`97GEg&BC8paXZDAbRM8_UR1dmX7<3zo-)kKKF}&mL{WUa_hGlc?$4Zq&U#yyLbD zxMwMaXvm|gBe9qmb#4F7?5ZoELL7@BZ}naoc^D5M?cfViZRFb3U75LAVJICXpf+odyIAH?m=^ ztgg!HWTlHp829$Du(XT{yMNm4Rt^jb!kQ|GM;SnJ>9YiewzM{>YKMjjORss2yutiF z7CI81Y}%qkbYDgdNmaMHwxYk2iG$b4T)w)pBKzarzkd~8ePbVXvz%0$c)}q|unjsL zV8!>1`^Zs#@Fy2Al>>UayHPBc#cjN{xry%fHhl8M*Pu7%N3O`l@EA$p*aNnK$%rAh zFelM37IQcL?!r9sktllGTh-}%WoZSaS{|dlC-D2H{}KUr2o;N94L53v3K9^)G28h9 z+64TY_NpHxD~rdn-$bm*ud&ZB%qc!YioVV+0Vh?<$ZRa@201s3sB&&N=j2QvK_%@0 zstp?QqGB?Q>iOR)A}}2z4*YsM3E(IL#SvmMBz@iV@0UQrCGm9ZU^vdIS z!jTwuGiB3tj9!}^<~8ElM7#`ph6SHhN48kU+rRZF7Pog1^ctfy8V(Cy-Wl@ZLpP2h z?4>$l1kbf^=NLet{iKW&s8ZfS#O21^ZWe!b`#sps7gUttS3!*--0X>s;>n#aMzKnc zC63D&f<_IPvU=^SI*v*QHV>Oxz^oIFI}xDv0w%HAy#` z7y^1?`eA(|3s{J2@EcHw)9l08Nyc)QcTg%7EsAH-!|*gxI+N*&kw99wWYpq93=j2V zeJ76>z3sCoRv6Z#qihzQzh{bNyy&S%@i%XN9%7BHGCX+dX#+6X)7{mnzzhi`iI?YY zr7_0MvrK}+bXE`6KhS5$4A<6F;%%VYeR?3qyXmrqLtY@9!0SKr80I#M2nF4?s8=bB zExJi&ZKEJu#5;J9snl?~-H$K4>Kb&kG%Kvj2qZ1%v4LLPu~Ej`zyFXreGn;ZzSA;9 zq9Uv|;#-r*ljU&U7(1 zKs8`=Gr!(LG4C;*Ny}Cqm$%=78wUOerE(FgE9;sw!t^N>X~+@+PkV+nh9u48&LY7j zE0|a(!MSCD>O21azwzIrgarzj30S!>4PR1+MPC3B_sw7F)Q;0HjE!0cbLY+-S0A>r@qh&lSS`%iqDponIjuiL33N z$*Y)1DbY%t7gisuFvLq%a=#XsU>iyb10`pB`HBwep*D|)9XEJ4S#NK%UUqgFbZI7& z6EigzgdBH#sPtYI>zk$odY|#aVZ;y&jH-eDFMH;i?`&*r(huKHUOs_Eo0{~)PdXBZ z5HXfpQO&TD*cgyr^!D`W@2tyrsMkn7O?|eP+QmI*R#7e2;bytH6Wg~FM~5M5!WEF0 zzg9=o0}RGV>AHbJsjN~f0ae{DEUs-}b~`VdkBe)pGyD6rsZ5~-kF1Lw!PzURT1O|x zZ`Bmo;(~T{a*TDPQ(0`*H?f{uHFG1iWZ2OhDmMdprx#(wvx}R+RYBO*jPkA@NpDK0 zUhL#nU44dWAk!se7dOtC=9^JgmEf^age6=jIhe$$^gHY-X3-q>a4!uAiWl+$4cdG_ zlam*bOzo-0p8hRgmo8pVT9mKfMcloI#)=&nJ^ud7kKm}gqBgs|WCibKqbW6f+trdJO8@hN>MB0jxZB^WiCqRYYOY7^BhVG#s#D$mHwwc+f!FlAtNXFvhn{ z`oz$t%Y(cc8@pwEi1n&U&U&^ottz%JgU_yXH7+Jq4_&tus4$5p79cQ%ofIW}#?uG?2&2u{q3$tk>qJm<4k^C8(zg+T-&P`7t>B;va} zyA+&w`Con(k53aV#0ZlOIZ}Cf9peLS_|jj$22D-GvQ@COyrg_Jn=5s+cW7ePSJy=B zz>u#97h$PZk9v;Y2XhfrGfYL3){Ps4YKW4gn9tzc)EfTJmuE4*#ZoG-)Ur!JLfdz@ zeHu+8bE5xKLMl@#EPr0d4$6&IVQTJB~je29dR^>JaT1OCqB5jTy%sS6B|nH`2M!;H_09DE)SUNBPqmFdt33R$9v@e(@-WNndA1k{5Z3I zKYq6K17q+xt{>e%g?((#QZ}XC^|bCr$tqwtel-T&Przn!Rr{IG%*CWy-~nZ%kMqcl zK@I}eThJBc`#6vMJ8=V)4$OU&t8DL^m9GEa5JKL+A?$~jkYfr6TIb9z2}P43(-ljY z%c46qG_7e=$|bZkL~UG|6MVN5F)komC}VYV2h9x;6pCf>>T&TYZp9*6CyOY{q!|_t zh%0~}r78{q=evSSxL-{;wS!l0*_7?5R3YhbRmS;Sn7;4{_Z0(uTSw8 z_IvQbTZYgQs$(nGh;Ffd){xmtVI@_-$9}znblFnpPN!Lw6RDI+q1z{QWK4`g)xuyr zjQ3wVEIK-#=1?H0youi(#M15@ew)0*Ktn9URX{bx({2oAZUU1R;KI5d*i<`jXn_rJr%4lM(tDU)T0_26JA?^f zwA2o1Sao!^Ho(iI3rQTf_(MYmx=p^DWO7$5S>&56r6X2i$P-g&#NFh77Z%%FvZ+~77dct{3FD$Fq9s@@!ON%&r zaS|W7V++&UMMT5);v4QNr?lRDzil;BIv{O?0#~J}l`=m_F&JINVpg8~Dw_Q5xH9}glyY^992w9UNgg>lwIYc)eq>y3 zD?KE3KBHticJv5BHfoE|ea-`oKuQcA>gA<*oSRq?Opl$_O)%(?4Oq7@K1|ve#?JSf zE*Y*Gb=35m5^i(N)DKb*w{)f6n0%YX0_H#_^KtJJooB8A!g?rb=9UJWshFmB;1F{fslmA= z(9{vVrbz}VW}JC6_aGjShiTuNvE4v51NXSl*VzOwDNK2pIe(^p`6bK=F!sz$;N+BH z$)boR%=q|T4L;AE<{|8j;G7uVez#B)0~LGQF`8#Mcl~xHuuCmfR+iUfWU}aj-%Xof zOCS)hu!sCcGK%D~)0kc=;&b0zFwko)hTUbtY1?k+0fgYG)lFimSi^HpH{yB6*d{)R zW8>q(^-s^tBI5VrpYL45PcCK<3lmXeplDLgb`AQz5lGmZZQ~Scz#C6A;z_MOgcF@; z>2?dqdTHV!{2m{Eo4On4QWp{RM}%y0`YH>`CWpj)r`H~{Q+aVk_!&6baV7j=@-SDF zvgYO|Y4-S-!T&AO2&~l=FB#!HT9#VDEEbp4xRWV#UL%s5F#+0cbeGq5?$ZWxy1qFs zfI7s7{BTwCaI;K_Fm0X+!yvsULaNoq_3kd353-%?6toONq8bu4Lf_!*RTDFovCU4vq1cTIkXmFJ;TPbMY?Ry?T$5Kk7Cjo59Y% z+oxZdJsZyMw!A1;OE?{UDux4B0N#o~9`uZ8bTe*3b;)rPYd{b!ud$k0fRK2DQp7Zp zxoO1i9*fD2<0c?smfPpY{K}5l+QcJxNCBzsZ7htSw+^pi0b}=Xvq%!%q+8mfF7eceScy+uP(5H7dai)U({h3SIjB zGA#L`gkW@#aetmFb?z$H@Gsw7!R%@o(XiV@8tLv4$Inwm%T_1V{5Mruu~b8ElMf$$ zj$c!SAl(+? zO`PGwZYn95b=VigC2I|LZu}NLH{%p`kjKs;IZZB17}iOFLnY-W8?VI^yPqp#jMxQ| zMsf2H*Y7mkq~*`J2`O(xX6bSZvBlsR{e08MDWKX44xYag)|Y6AnywN^r+u~|@J?iRwdX+^RiL~!mpnXf0b<9d5KarNmDJUX>% zmnxov2TTIlHRR}tmx+&tD+ zmavg^;iI>%Ae*niAGCu{Zf;zYFgBaYwoVkL1#)Ezqlp0i^s+{DwRgZDiYQunkz|cE z3#D)c-&yzxvXzpeY6tmt6L~aT+;#n~UPbVrSj(f`--W05yijD1{J{L&f)Y8ghM3y% zFosW(306~a;YY_tlp~=^otm0Zyn*vb_s@_|%*wW4dl=56RV(9bKfV`*GAUyXONx0! zyWqB7$JM8X75Q~jT9v2NTbIKhXRVqLj07^;P0Vd3w@U-HF#Pi^>OmgdYSiKH= zvUd9(^&i{^)3A4;0n|9X6@`J37j_`x8FFTKk>BY@Y;SJHJJ`zS@^Qm~>}3*$BcaG4 zFoZADfszbeMa)c336e}ce-ov1p)FoOA{IhAS2UFJij&)AM{bCz${&gesmcwZM#?l) z=-F=Xpt`Yc6CaqkK2w;Rn-geCgmC}a48HiS84(#91B_u^L4?dhQa?MT3?ff-AzuRC z@}h41;R}un!|fxoh_L90)J}FUiGTR+ByM|T zTh%}Wi#n&>q;}o=@FC+~8fbW-RKpvuYQl4mwYaO z!lhN2Lp%`|kprpfh>~KSgY!V6k479tJ&SBO z-%ZU;^7RP^C#i$3H8shQUbhWwhPHW)p4Z-968Akeg|*FHbs%-bz<$WST0w7X7*-{R zrR5d4>HZnWan;q@J`WgV0Rn<5kk?nPdrT%n4q z$6|QvO9ynFMyr8Fm(bOoz)v5~<7>a!luco(WStFQ*A!T$kc(k$6F;($DOT|EQ%!jJ zWzEQxNZ@Fo)})7PZb;zP*}L%dM}7pqoB4MWDpsMY8bcEYY=;x{-^M`ASBtp5^+`C@ zd>PV3(`Lr$Jwz-&u?kv;LP6ni)=tpiG#R0331uAwi%Xd1|qmy z$X?BxjE{}t#m@o$=gx~JhHhKZMk-V6`f=~$^LWo2Ux1@sJ@QS@U$`KHhP8TpNE(4t zlZ;@o`9mu{^W{reT+6FdCPg6)A!V^_v9IDr+n6EOPpM*Is4I-Wd)t+`?AQSE#WGfw zmc%{S)7gxLOax!})uzhTg;#Lw2HCB4P9H2Vu?<)skSSVt>Tm--@`}r4sIsZk^z@|u zesp*YcdtH*@6Fy0pU0<2r$C*emb1Hq+ndwD5fEvdtK{*tfv4dQuX(*x)57ASHYgXK z%;04(qi!uq<2hVSX)zyB;>R?7T)7lDk~r=k}_Eirxj0tAF#U-{Q`D7ZHnk zb$XoEEyU7u15lFD12ma5rid#DxGVUxmv^DJoh@5EaxWRU^13QGJD0*c{^en962=b< zqRW_D($mt_mPjM`S3gN63w4Y%`SBM|X+0IVp;Qf<7sXl`y@5VFf8cp`f-Gc1XIeJU-NE+5rc{aILSe z>s`FLIeBio3%FS{VfPu5WY=z|QIX4ySR{yl{q9}(^nc!NcL8_A3>V3RY`%!=PxRrF z?|O-H+@dp6M{PrNs1$cBTswRqQQ|NKfXvgdKpkme0(;CFT z{n2F@YbV(hL$n62MZLS8*}^9t{5t0Is|dP0!tJZrf?-%OpwRF%^%6d{Xys&=FxuRY zcU<>Y#5^&DeN7DnQNlQAh9ua`hYZ5QExhgT zzk@SV>ymuJAULX-nbBMkfBD*H;!Q7oBKFd(TL8Rlz`z%c5%!j+jy`_uxM}o2-k=$_ zfu;XGgvQ2Zo#G1@FJjvbJmF*?z8DIqUO=5R4>eJuDfF9%Ch&t_J&2b*`+BsrnyO*4 zf)HcS)7^n`J&M#`9XCIH&|uoxwmxV&jghF4Xjo>lXqULj0$!_QFI~Wu$D;Uy7oURL z6GFAJj@kKnZGuxLkKw0h_At~P$7naJnt^yUs=^XR@B%)O-Y9Jwj)oZPd9D$3%GKW=(vg2jqC2&N>B(s=;@FWh}lE8h6xC*tvmWksBXlR4CuG+(MB zUpB^>Lv6}?(MDj?h2GvM{^PSR6V!Ex6wkD+)XYO1!i3rxiNtwj)K+*tNeIrhDGvF? zePnetNEjNqstB@-RN5;RaQ!u780=19eSO>T1CeO*;>8OVGe(4Ilj*u{m2vm|6ZqcG zR%8fyJ$1b1MMn_umb4K_9L(azV|THIEDpiWqu(Ya6UW zrfTTyXt!hDdt&FN2xOrMku3}t(+?)EZ&!DZDu$`=7ZwTKE{SM@@d+B5^r5qvG+J0_ z(rL!Cys{#sY$!~SX|GDs?|FOz>0Ay+d)qNIz?g?yq?b&0dp#cX_xG!il1-wvH#em! zNWw^iwUjI4R}(+N#O}j*#pySpr+E@GGpw^6Iq(bLs~hUPd*`3h!crcgsw)zA#* zGPt(5v?zC%=%enQUTrQKe3YV$-4iO$gGVEo_7yh?kvxB=So>&z9@)kA;=QK|qe zrV2)MXUVfuz-Fn6rF2fanNoyBpu{95%Qa+j1?;l$BN8yxxHj1$4K*500aDDe9-pai z7XwlT5>F;>rdS_ec@Ph--GQgH-;A!tL3r7@gbkv0_pn~MgeBK~2&KX(mb1vEt7x;1 z39_a1tj`#$g#s=9nrSReTcuvteblJh9uH5yVN>@g&f;7%Mzc$t0qnCN=w2ox1Q!uk z!g8{6*-jGQ`NgBE+6wxOtEW7P&DlU!u;HF&oE~mPI+I63!o+x_A{H0sja}p+6}nF? zN*_AAf!Ds{4y8)zuYctePs3$L8<9+9u%66gC&|IO?FPpoq;_+-^Pve@r!>*nUWS1T zkunhmRjuL3Kqp2AJ5=n!1!VM#J%PDtc6Qj4*WmxzvR-}fGHFr2b7h(u8#Q1;)-riR zP{rN>9NS)oJ@C>JiR2R?Heal!sg&L~*x8Oqz%OwqW=%E3C>`+f1`QQE)s&&B2V&tU zHVUiw=GlM4wOu#h@|Gu|?lCnB{4CYi&z3)rsni1^cB;AZ=#Gux`MvK!FklilJYDqR z4Rqc*U?mrD(*(81v&3tq0&5d0vVpj`Tr_nTa~eGgY)Y=BstJt?1Hi-TQs1U;{_K8y z^vkzPr5NHarwG*KXL7{~{_-_9;#JSO44HgU^Ps+vtjnZfA)?5gZIv9el}bxT+3KMcdl!Mh~#mb~Tl%ps6W}kx>()rd_bQTGYZHJvt=Tj5W1mG3{nXM}|}p zyStmj{M?*&{n*fef-C9WB&Mp=wH|b|nA(JVA%_d+FBsmS!67k#R@9dEk^)ri9c>sK zFyZRQ&OeO*nfXr~@3;!jx$Gsn#@NVWa!G0KBV$M4TMqygqMsX3wtV9CA&Dc28JJ8X zne)-{qZ&T}oV-Tcf~{&9)L|xcYHCt|4VL4xWeiC*FI_UN^oY}73?M zg6i4%frfY(k4`M&^WXR-UiHkAY6@X0gUxQ{4kzf8CqNFc9qi|LL~mkSv?8hSvv88G z536YnWh>uL1Cr2mSXxhmPe!(3{buBlr@XNtivPIvVVs>@Q;RWBot#i9>X?1H9cu@LMgVmyE$l9;!tddqY)ufNIXRHNa{3l-M6)po7SaD7=|FJ za~qr5@W#LXirf&2T(NaJMTv^Uv0%}U&%f_g3PZB92%}X#JMK>ujrcU|uGoYv3r@|p zbvA=3eQ9<8p|KSSg=AE+Cy+yL?-bev*mbO2Lat)Mqg=B>nVZhkG%|rjEJMwzB2&o< zXyLU9E|xNjVgi5dm46IW-J;9o5;9-HU=!8L&h`#|v-uS)WX{4>^TP6#(GwrV4K06! zSkwS)IH#-=q$O`S5F2zK=UOlj5}ey4$hI|)e1`V+R&4;PN|JVS{LL-R3ZCulk!#U_ zYe$9$@W{nwy#9kCsh4PR zGZ68KuiS=m9cqY}&t~OI^TFBio30)WEN(z`C5f=gIHuBd_3mZs_gKs{lq{B{wiu9U zN;Jb4^sB7Bm@8mzV+lKjwBq74r09opLFj4tLVn~c1#G3ZMeV`~Caj9PWIMGDeNy_KnuY|4{LP%C&b8-00oM+Ah4MzI)TnE|%Trb81a>X(}{^g&E zET(MH}=}HTm3Kn)s+fmtv(( zZtJ0#y`m9B%b5(H>=MGpl8J_(vS&NVEnIiJ7dKsV1h?M#xVQogkkS|gGzh~1A09e0 zg`fWVLA>`3&%^o#dHp?lI2N5S+PJe5(ut17B8bP>v5bwR6N;=6*s0d4fT&P7VeD2K zi5WhlTuT;@FV0}EoX2&8C(+Z|fmBmc1{IAf!l~48OpN91$HNw?Ea>pcU?cR3Mr#-m z1!{NzSd76Jt@&Eb)GqMkHdmXG2s9z=4x{3!pxzJ`B@E|M?A}z3F|(MQKh7;BTO`Z` z4vS(rk35ksJv-f7stCGzRB4m~ybs5=o7}att^l*Qw9`KE<)7ic$7b}qup4$h&IzTn zW6O=#9>X)QJ1Pl7^}@9_y$MU&nA$M)dex%NWEyy3eoi+hGKl5jEF7JgotJevYO{s! z?I!W~xk=o6b`QaD6tP$Y&$zx9yF1IGPD|!$`16l{7nyv?W)V54A#@`m8dgREcf*BkO)ecW5d2y&KX&BP~r`vYo*l`s+?t zgDd++5h&MDtduc2Jch?%e* zOsoXqcqDydB#@GBuzvs@on11Z*|vuVpsl?_?RbB3*BQL!Z@wze!tfH>^Q)3`!Y1no zczyWZXWoX!kcHW~1G#lD|2)(Tx&;ItG{qJAnkqfiZNtFt1 z0Cw}LN=>lcITP=`=DdxhB^j@n0@C(rg=_&m&hZ%5K;$X7Rx6MO-y<3?~Oh z#J9`b>}qli3&|xcrB<<5Pa|8;?bE2ZZR1zZw_iQ$Oo+qKZA0E{(2_wk?e}6a(6W8% z1;;+LYbN)3Xl+QiQzqnSY7u1GI0pxmtV-nrw3TWwBtb1iLjg=LuHpTk`Hs2cA^KMb z%t#lykgwnkFMbNfhq{n2&>QmE(0Ri}qIDs7m6Bs-X4>K}^uZ}2`87;2((R?Ap^8Zk$y|S-Qbe{~kTJ<764cR5!k7$UU1e3gR<|ms zk}bokqdVS&<88f?4Ah%^%jfU@4?MK?7~+u_Dzyqa!mW7oRj-Ac89SFtCz_MaE*|+} zLCqnkhiP;Y5k-PbPB!1iAdotFWHWlEn82E*y9YTBxZw1H7-m%oyGr0Hx<+G~i$q|F zfyx^_%$1?HNfle6i{Qqp`T85e;~wa!A%0lhLm@0F44BA38eP(9qau``{}Il~Vt41ISXf$q|7T zw0HI6nNRM=#!dlsx+Jv%qVYJQ@M3j!P0*<~yx=NKEp4h96c>1(e9INY;{ zA3w!EyzBRI`SBqkS{O>Ez8dc9kr$FHuL* z`|`ySIeG&0um}xf@$FxK^uKX-%24)m1Ii;cjEMb;S(;hnF47OKS@Hg-$0aoDAV zM*M!UZlf8u=7-TZ6;ybA$Y$B{l}U;anww3hDu!HD%I)=tjznP2Y91ed=aaQ_O;36j zmNLC)fS%q!5GO{P@s^i82_OEKAHf?68PLc+y_^wg1Sd`{tm6}3xfTENp*NzrAr4DT z637S^KqMMK)NjGn+AQOg+=7j4LS3t)mS{pT6jn3ImUzP8-7+~FE#$#odRI*#DH44i zFFZB+y)L-@9-ZU{+b!GO+cS(?j3hQR+AZ%2GFmxlJo$Xl;G|X0QZ>z)*trZwf+g&< z<^^!ATME$7kfkJIY=crIliAx(0Fg3>5`fo?TJ@>ckLs1hxoW!U^Qh%L;~RUKEZ+C& z@8IXZJulzi@H9D^JVl5AVK&c*t+`vJ~3^yBEP8*<1By!p8}Ha@2NF#xr-wIlc# zA<)bzFrvnU4|hIEC0Juf1B*!)ZoZ+xL5Y6y=g%$7BN~k0YZKqYeajCb|l$&Cl!bkpqb*m7CTWi!O9_b}RXnFXr)< zzy1<_diMkxqK5O&!8DjzG(JDw!Dn1Ej<^5*6QsHY!gaYYKR+kekA^1=d2SRjjcsn4 z#*wDYsWB+j(uL#@0%90Y1}8*B&^7?UDax!`)qVayr~N!5REEsZkUTJE{<`N~j;-AS z?!UNzNYH2M@b)ok^k3QhIfDDoFXF@hdK*6f!FIGH*!;;<0GSwqb8qIgD{%2tvADxN z1&oi2lGQev=zWOvx>CaR16O0Hb5Qa4WIBafu7*1E0Cv@~i-i*VFnC_$My<*-h$%8> z3`TBBzE5;6Hq*ICEtDo_?W7qWpNtzyXdm$!nQKB)sdK3rqiF@pyud-QjFOAegmw@0 zHx1x-{QWm^+r1O}?%sakfqnj|Ug=d`KGuu3y!1Mi(^I0+jdTo9j*-;620rd^I~%S; z*W%*5CB7Pu+mIaDR&Ev8oUHHHsKL_IjU8=^VOs8&jDr{8gA^>Pv*Oj~9 z&$Sorg@nXBMXKmyShi-1VzO>!@)?_5J0LYDG7&yAy#ZUCs-rro*(9}WHWNFU!$ndu z$InKaG;%9)-FT7n;2^5#dWtz%C@VJDs4IYF8gzJVwZRwz`z4#hLozKU%2Me({^s9) zg4=$3-o#Y)0Ui!c)*zjDpc0V)KKAD?z!fJ3mHBg6M75#qUdB`b#3DG5bB>d9>ZY&F ze)kN*Fc?9Dh2n`~f&*hM00R;n_!^rY7K-+@HciCx(vnmKJA<*roDa0Vwjr^@@^XSr z`?{L(7q7S;Eir~tNvUoybo;)Po&F@v?4uLQcapyNmD4nb=ONH3Yq0yz@0r zLwmvxw=bZ3&_6 zd{|nK+&z2`EnmL0n>;>6($o_GjDW@D3USlWE=Xtd7#nECU;W{;&=8Gimr8Xw6~<20 z3SFy67|BcpZ~n;F@SUGMAe>(`9FjCqSFBP&E|=pnajYB*$4Dtg_?YNqiX3A>Cyjv` zN+%k$bY;~WfkYKvzK?{9z?=r1BW9COct3<|=By+T3ZGk* z#055o%*g$s;YE?l?<9V~ocyq)3E}sgOH&OTM@L&TZoB(YyyR`4G1flCzTMtNaRa-N zwyNXUNE$A@=XE#Y+7o0Y^Qtcb$IYYVGuP{-;c=htqvJyyimncbOOwG-SB8CVV z8iqswfB&}o@PU8*39`kqDpyQBor9q_0)Y~O-$h;c!l#|Y2i|fEni`u#?@E`6te67> z1M+1V<|NY@bvdJCq-r6uhz2cBUT;s2+_FqItr|SKOl+~rN~cP-s&Uh@=NQS2#LqBN zMjL?F*x`(E5Ply|FC{_$K))7^Qi)+-hR!)2sv|GQzi&DktYJ(2aX_t+`_nA2pv3Akm9ry2Ti)NirpXmTf1CgKQy*O9K_@q>* zC{Xsug?YU8egBG2eeIWqRoz~ECpzdD%p!(Rdf0#oUvHx9Vr~A^%CCli`Z@L_> zz4oPrEBo1MI38+48@ZHS=`q>+do4$;w= z5Um|Lrne(&{xHLd&63W_Ae-*qcqRe+nt^E%p}euPhp+zVK78kwXOJmW)!jqPB>Oi0 zevnvFk*sD6xxeoZZ^F$_Ie~PppatgbSl>Wg1rMNePyUdq&j~9t9wOX=4ZYWU9(wpe zi)megHJ$dZOqx(7&=7KXgV@QMh7J=eCypPN;%4-VMi+H4i3|Cn7-EGE_2%*8#|@cb zGKrb#X}c}$QK^?geiuKv{Xu;C8~0##H7Qa%L3r6P`nHG*l@b1?>9Z$Nf4_&>38tdlP z2BxQGv`LR29Y;fBlijFuLWgZ^bQp<5v*HOC&Yu^Ub#Q1vYFa@kWrSRel6ln8gH|ijV&3 z^YKsLz880%nNx~c_JDA02Vy|9bZ!@7VLvX-uHr90{tcWS>%xnkb_&ny=r#sY-Sjtb z)PhJSne4GoBu_j!1l)czv5pH^lgmUSuqG4{kx34~gx83?6-=Am(-;e=l=mBHss68K zh%{9SZ#QI;WT_a8UocE#lXGPx(1RBj@$Fxn#e)}@4Eci^b(!`u+V3`oP>}}pJs>GW z9^-u-c*kp=hQ78S_HspZa9!+^EG!_qk<<(^r$fu*WjVP$|8+eRH<}3~snndVXFi{^ zC^qQ&kDBQ^VVNK zgxl`9gau%1CsGcGh=nT%UBFx(9O0P_GW{wN}& z4xBDol?-_j??-5|DtSC6sKCKHRmKbr)8gbVo6FDZ^K^wwVFY9h5xY+{!1tNcTf=Lf zeFD9$5q#ygN3gw@M=Z?N>ULL=L%hW5#N{%11m5GmbMv_O%nbV4VtC23uEmR=bsf5! zqi|bQlTGVr(YU!uxuI#aaZ?y3Gne8TrdWejNkQGkuybeRDw_GB`Y9p3n}NS2XkRn2 z3--THF+C zgm!b1=nqq0aiP@ukX;QQKOp=BDZDy8}_{7(Ki3cx`?V75DYQq)>2k?c13A0ZQ z%bn=fwKhd@YNP|l2byvDcn?mE4-2kl5;p~nUk0C=L)1<9+HRA}@G?a@H!?S!_=FXI zu#^^-X!ZH`QAzBw#`i0h5@Gjp3o{F=xciX_Jalmd=Vmsrp3F+UhDZUl4@>ZPLBrS) zZ3pce_Ltv*(sOZ!yPNQi*W83>KJk?5_~;U|-k)RSxOrHqCOJNycth}M;v5w9r1F(o zQ0I4JtP3CMW+yn~xv0+a;YS{_$Qse!Y0xGzrY>H@PHJ0XaeVxkt`Wk_DimIG7{sTh zr?9cUrU1x^6UX84_!WU#S|VF`0ORB1`d2L1^9vH~N5{u?`VB04N;Uy2h?-m4bn0j% zk!ayJXIAj#|G67$TTH;v9x)qjpCsatw<6td^Br;%_MO-Q6FgeNYYISsV zcf%hdA=4aw@!LmnVRjR9Ybk7{vZ}--m$6(v#W@b4N;GWe_?yL{(VHt&1e^PVo3F$3 zuOAVK1Lxw@>C=M6uWxK%VSZkVcYYlmziLhd^3Z=z` zix=b$4i5ICz1=kH@T!!^_FoNyHGOC9EcXB5i74A8Mh+V0KxA=88>5Rx65U9n&s5v5 z1+(EwPMcmkf#Qh${q7ac_qu>GdHYbqAHU>Dc;*vN;^SZVA%6AXglJm?F0q@H3i~M3 zsSyFWi$#klNDFtcS z8)NGrjBB^Kv>UBBMB5OqfzS2CD~<>&dBw3o%+F3^d39Hy6B_5NC*=Eiig|KP_mBGi zJw#9E!0+T5nnqj>bx&0ZD@tsGf^rN&S2~^6NOGC1a^w61`GM)aF}%9HwWTj+gpWOJ z7$FnV6_&X27;>bA%*YmZ7o~wQ0&Bwbsczkdm(yzHXK7$jG9(glEf~?p3|26BL6?ae zN}WsX@a3hIH2&>7cjCS?OhcO_3?EE3@WJldH>URE0@}2ONnAyk6{9Bjz_ifaLXp=c zo*DXPq*D9=>gZ+YV;Qz)R+A^1tQ-2*4)pN7wEk)3Q*WDi$^q=l2`4xkV4q&wUU_~u z=VG|K8E<;UO?duOP9U4!Q)<_#x}vCNI+?10pibIYTq8F7Vknp5zq!R+OQj6j$Uyv? zWiW4TY{~Ya^mU9tBCLr*W?;$71>=hgKqwebFL`ub{Ef`0upNsa^>0HZUoZ?b_VlK_XGd zGoEk?H$CALzVxl1xjIxRhfOP|O9yM^s6ROoj##qvc8{`- zg*0`ljq`I(t(_8gICczy1}Sryir%LevN?im@qTy{9%``a*egmGR~Y8D(A%ECO;`2f z4KI5d`g{72%kE)u*@WYH5C~8q1e{m|<~0mt++<>D%TQ8ru^So;vPfvG-L##wG6vsr zWm)sh&&K1t=Fxu}K1MHGdwaVYB8?nk&UrFacjxsQKAK!!PZ5cRb!vHy@n%jqT|k~t zZU6!^xKY%N%T743me1@+X9HN$y#!)#gE1S%o9_yOZFVjP%8DVflae1mH3JcL&vKz! zDq(SL3lCjb!%y#>z`40~fgb%Hm+I`C33n#l5w*V)T0GETIABn<1++~(>0CZw!Lv`a zeZeUX+K(6>@=^>!fg8sb^Fm3P6g#CSpJ%kM4Y%BI3QxcG2oe#$iLZDWf+j^iQ9_o= z!YEyt$L9f&%NL6))5pV+-pk19r!=Ir;Cxe(avr%R4&;k93~K%B^XZzvBU!ct%9#l7 zqmMpnF(ARRX5!HpTAZ4klBiB38pILA$6{L&8BPs^MH>k8;^Km8;ptuwp~D@uva+nC z4RsYGQ%r`C8jkPfgwuee)M28D?N2z}j5acQ$0UyUimf_^28XmkxLFu^W3GX!X?U0h zs7o;Id(Y0{j)$i4@c9L7B(w0c4V?l`M(>$`l0(^f=rlT)T!$$7Y}~;lTVE3vG(HV zv2l1kJ}fLOXx^wkM}~%k6QJ~D^p$#i{OA!ilw!1!b%)#lV`C$#gJcv}oWpLHP)QEt zoMfGfR`&KNIY(Q;D+7XJ(jhmtX-5nIoql#FH<7CfvaW-1X2Tesb62 zI5WA7Th^Plw&zkuoL%>M*tuHO+(U_Yw@^@EO@KbUUi6_wkj1;=n||LZ4mXW)dQCJT&4=T!J<8M8z>jPos^Er(GT&R<_f)>!Azy^#hl%w8?UI zQqkpAPrz~b_BWitA{bzb!=_=UqiiEh1)2_Hj~${l8-(;Th99tQpK{Jon2j$QBIs?6 zVSJzk&w1*VI5ym?ntkf)LaDNEG_v^y13SDG=SG=3wy(?V={t!zPzKeWTT@I*egae1 z&o}_f@rmLRl$>472CQlC%^@kS$~L!yyq@ZsFKvnZ7-qBNs%$oV9ihAn5=^QWoFz@0a@ zE+LgnqPe+gKZ!FrHHn?=ZP^qKoO>ok>hnznSo->VMUcRdssVrkCr=(jI22b6BP)4m zyfPMXY@`n(JqcWWgn-H#%J5@(GlL5=YdAN(f|adZq%&q?Rz##=lSRrSFx9_KW$wNO zU~~RC6sA47pLt?aHGVKRODRo0tWHRF@QNVuFme z&h9S3tfbcJsK8Jv#XEN=VcXofq=V((=pPf_&D}}VjG}^G8Zr%r=SSl)BF$-m zQe*+7*WlcU+A-Keg8ew2q6|#>yrp76B62sqCq3E}523HO3pZY$K&?{JBCKpCkuTR# zuDP(0Ok-mwgH(oChKha|?^l0hyF!W)Q7&dY8b(t?46Th3bhRbW(inofPVQmmNe(vi z_SO!z89RZ6ofP?lSR+|cp{l~n!bdPdX9`Q4Xr0p}lZ6}%QjkBtl%tzu-5*SJVDKuCEa$obNu#O=t) zs9Zf7nfy-Dzz+@$3bRHLM&pGqHbG|8kt~>WCpkGyO$jAAxLN0B=LOy71M_51R8CG_ z(y8F4BP^OCZfRi&+sUN-{E?9Xse!fCRV7HG(I~ol%);%Zc9fK&wCo@37mSPrqC!al z7#!?HIFbNr70fR#NL{wJw<6KlguP4}3-gN_7aKj3vxu9O(Nh|>OehTw4$F3#o1Kvr z&SDKpHol0QGSKaq>Iu1EJf)gjyGaBWmyNZV@=x7&55Y?`m2of3_G63BMg`;>s^|HvAS({Iu9|lCqB5OEoa4;Yu zgbj784MHFqhwnFJ1O__JNTEY^U{1KHIaD(P2Ntb%@pcP&e$GQ9&aXracfJ`5Q_^nb z4#cEQU)DA*m3}6Nu%ck()iJ;o>RVB;&{%*6g<=)ksSI{fbW_c72+QNt)?k3&ps`X4X#cL)%p}&u9u(_5!EKU8R?sM~ZLDPn51=NGqAWMa8Wk3B(Ud1AW}chF#J@H19GIB2Jrey~9K(od z2qT$ZHbBp!YS*|x6o1@WoJ#T6TFw7&4WQV%4{Nol~652*+JVlA#fWVWqTMb4&gkO z2+S-MWWDp$@;mrlX7ibi?`(d;+a%6?0U6!uN<#i3Z3M3!Vm1byW26ewNBqBvc+H&g z;5hXNW*$thB%!0|P1tNAZo-9(l)7903j?PZ0rPupual^uYeTVR z$O()!Y)(0oM@~}&!)?O|qR(&o?wK~Q=9E*Vm}r>s@g>$-xnhfFqk0SqmiMB;#I`Js zO5in7*!oOF&Exaics@!TlW?J`G1AGLJ`*!w^^g-8WTK>MiaTm%EDo8akKM!^GG&{H zQS)G{mILggA#&hza$}fkC4(=NinOH~UrM^DOIaP3*F3j_B67wkl$1?t