From a3ae1ed6678c7665ee06932ade2ef08ab872dfd4 Mon Sep 17 00:00:00 2001 From: Lereldarion <131812197+lereldarion@users.noreply.github.com> Date: Sun, 13 Oct 2024 02:18:06 +0200 Subject: [PATCH] Initial commit --- .github/workflows/build-listing.yml | 64 +++++ .gitignore | 2 + README.md | 43 ++++ Website/app.js | 231 ++++++++++++++++++ Website/banner.png | Bin 0 -> 60292 bytes Website/favicon.ico | Bin 0 -> 77918 bytes Website/index.html | 220 +++++++++++++++++ Website/styles.css | 356 ++++++++++++++++++++++++++++ source.json | 28 +++ 9 files changed, 944 insertions(+) create mode 100644 .github/workflows/build-listing.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100644 Website/app.js create mode 100644 Website/banner.png create mode 100644 Website/favicon.ico create mode 100644 Website/index.html create mode 100644 Website/styles.css create mode 100644 source.json diff --git a/.github/workflows/build-listing.yml b/.github/workflows/build-listing.yml new file mode 100644 index 0000000..45d20a5 --- /dev/null +++ b/.github/workflows/build-listing.yml @@ -0,0 +1,64 @@ +name: Build Repo Listing + +on: + workflow_dispatch: + push: + branches: main + paths: source.json + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +env: + listPublishDirectory: Website + pathToCi: ci + +jobs: + + build-listing: + name: build-listing + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v3 # check out this repo + - uses: actions/checkout@v3 # check out automation repo + with: + repository: vrchat-community/package-list-action + path: ${{env.pathToCi}} + clean: false # otherwise the local repo will no longer be checked out + + - name: Restore Cache + uses: actions/cache@v3 + with: + path: | + ${{env.pathToCi}}/.nuke/temp + ~/.nuget/packages + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }} + + - name: Build Package Version Listing + run: ${{env.pathToCi}}/build.cmd BuildMultiPackageListing --root ${{env.pathToCi}} --list-publish-directory $GITHUB_WORKSPACE/${{env.listPublishDirectory}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup Pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v1 + with: + path: ${{env.listPublishDirectory}} + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e2d6d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +.vscode \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c72df27 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# VPM Package Listing Template + +Starter for making your own Package Listings, including automation for building and publishing them. + +Once you're all set up, you'll be able to update the `source.json` file, and generate a listing which works in the VPM for delivering updates for all the listed packages. + +## ▶ Getting Started + +* Press [![Use This Template](https://user-images.githubusercontent.com/737888/185467681-e5fdb099-d99f-454b-8d9e-0760e5a6e588.png)](https://github.com/vrchat-community/template-package-listing/generate) +to start a new GitHub project based on this template, and follow the directions there. + * Choose a fitting repository name and description. + * Set the visibility to 'Public'. You can also choose 'Private' and change it later. + * You don't need to select 'Include all branches.' +* Edit this project on GitHub in your web browser, or clone it repository locally using Git. + * If you're unfamiliar with Git and GitHub, [visit GitHub's documentation](https://docs.github.com/en/get-started/quickstart/ + +## Setting up the Automation + +You'll need to edit some of the files in this template, starting with [`source.json`](source.json): +- Fill out general information about your listing, such as the `name`, `id`, `author`, `description`, etc. +- Make sure to update the "url" field on line 4, replacing "vrchat-community" with your GitHub username, and "template-package-listing" with your repo name. This is the link that will be used to download your listing once it's published by GitHub. For example, the user "thupper" who made a repo called "thupper-listing" would update the url to "https://thupper.github.io/thupper-listing/index.json". +- Update the "url" within "infoLink" (on line 11) with the url of this new repo you've created. +- If you'd like to include packages hosted on GitHub, specify them in `githubRepos`. +- If you'd like to include packages hosted elsewhere as a `.zip` file, specify them in `packages`. + - You can safely remove either `githubRepos` or `packages` if you're not using them. +- Finally, go to the "Settings" page for your repo, then choose "Pages", and look for the heading "Build and deployment". Change the "Source" dropdown from "Deploy from a branch" to "GitHub Actions". + +## 📃 Rebuilding the Listing + +Whenever you make a change to the `main` branch, or when you trigger it manually, the 'Build Repo Listing' action will make a new index of all the releases available and publish them as a website hosted fore free on GitHub Pages. This listing can be used by the VPM to keep your package up to date, and the generated index page can serve as a simple landing page with info for your package. The URL for your package will be in the format https://username.github.io/repo-name. + +## 🏠 Customizing the Landing Page + +The contents of the `Website` directory can be customized to change the appearance of the landing page. Most of the information will be automatically filled in with information from [`source.json`](source.json). Customizing the landing page by hand is not required. + +## Technical Stuff + +You are welcome to make your own changes to the automation process to make it fit your needs, and you can create Pull Requests if you have some changes you think we should adopt. Here's some more info on the included automation: + +### Build Listing +[build-listing.yml](.github/workflows/build-listing.yml) + +This is a composite action which builds a vpm-compatible [Repo Listing](https://vcc.docs.vrchat.com/vpm/repos) based on the items you've added to your `source.json` file. you've created. In order to find all your releases and combine them into a listing, it checks out [another repository](https://github.com/vrchat-community/package-list-action) which has a [Nuke](https://nuke.build/) project which includes the VPM core lib to have access to its types and methods. This project will be expanded to include more functionality in the future - for now, the action just calls its `BuildRepoListing` target, which calls `RebuildHomePage` when it completes. If you wanted to make an action that just rebuilds the home page, you could call that directly instead - just copy the existing call and replace the target names. diff --git a/Website/app.js b/Website/app.js new file mode 100644 index 0000000..b15c8fe --- /dev/null +++ b/Website/app.js @@ -0,0 +1,231 @@ +import { baseLayerLuminance, StandardLuminance } from 'https://unpkg.com/@fluentui/web-components'; + +const LISTING_URL = "{{ listingInfo.Url }}"; + +const PACKAGES = { +{{~ for package in packages ~}} + "{{ package.Name }}": { + name: "{{ package.Name }}", + displayName: "{{ if package.DisplayName; package.DisplayName; end; }}", + description: "{{ if package.Description; package.Description; end; }}", + version: "{{ package.Version }}", + author: { + name: "{{ if package.Author.Name; package.Author.Name; end; }}", + url: "{{ if package.Author.Url; package.Author.Url; end; }}", + }, + dependencies: { + {{~ for dependency in package.Dependencies ~}} + "{{ dependency.Name }}": "{{ dependency.Version }}", + {{~ end ~}} + }, + keywords: [ + {{~ for keyword in package.Keywords ~}} + "{{ keyword }}", + {{~ end ~}} + ], + license: "{{ package.License }}", + licensesUrl: "{{ package.LicensesUrl }}", + }, +{{~ end ~}} +}; + +const setTheme = () => { + const isDarkTheme = () => window.matchMedia("(prefers-color-scheme: dark)").matches; + if (isDarkTheme()) { + baseLayerLuminance.setValueFor(document.documentElement, StandardLuminance.DarkMode); + } else { + baseLayerLuminance.setValueFor(document.documentElement, StandardLuminance.LightMode); + } +} + +(() => { + setTheme(); + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => { + setTheme(); + }); + + const packageGrid = document.getElementById('packageGrid'); + + const searchInput = document.getElementById('searchInput'); + searchInput.addEventListener('input', ({ target: { value = '' }}) => { + const items = packageGrid.querySelectorAll('fluent-data-grid-row[row-type="default"]'); + items.forEach(item => { + if (value === '') { + item.style.display = 'grid'; + return; + } + if ( + item.dataset?.packageName?.toLowerCase()?.includes(value.toLowerCase()) || + item.dataset?.packageId?.toLowerCase()?.includes(value.toLowerCase()) + ) { + item.style.display = 'grid'; + } else { + item.style.display = 'none'; + } + }); + }); + + const urlBarHelpButton = document.getElementById('urlBarHelp'); + const addListingToVccHelp = document.getElementById('addListingToVccHelp'); + urlBarHelpButton.addEventListener('click', () => { + addListingToVccHelp.hidden = false; + }); + const addListingToVccHelpClose = document.getElementById('addListingToVccHelpClose'); + addListingToVccHelpClose.addEventListener('click', () => { + addListingToVccHelp.hidden = true; + }); + + const vccListingInfoUrlFieldCopy = document.getElementById('vccListingInfoUrlFieldCopy'); + vccListingInfoUrlFieldCopy.addEventListener('click', () => { + const vccUrlField = document.getElementById('vccListingInfoUrlField'); + vccUrlField.select(); + navigator.clipboard.writeText(vccUrlField.value); + vccUrlFieldCopy.appearance = 'accent'; + setTimeout(() => { + vccUrlFieldCopy.appearance = 'neutral'; + }, 1000); + }); + + const vccAddRepoButton = document.getElementById('vccAddRepoButton'); + vccAddRepoButton.addEventListener('click', () => window.location.assign(`vcc://vpm/addRepo?url=${encodeURIComponent(LISTING_URL)}`)); + + const vccUrlFieldCopy = document.getElementById('vccUrlFieldCopy'); + vccUrlFieldCopy.addEventListener('click', () => { + const vccUrlField = document.getElementById('vccUrlField'); + vccUrlField.select(); + navigator.clipboard.writeText(vccUrlField.value); + vccUrlFieldCopy.appearance = 'accent'; + setTimeout(() => { + vccUrlFieldCopy.appearance = 'neutral'; + }, 1000); + }); + + const rowMoreMenu = document.getElementById('rowMoreMenu'); + const hideRowMoreMenu = e => { + if (rowMoreMenu.contains(e.target)) return; + document.removeEventListener('click', hideRowMoreMenu); + rowMoreMenu.hidden = true; + } + + const rowMenuButtons = document.querySelectorAll('.rowMenuButton'); + rowMenuButtons.forEach(button => { + button.addEventListener('click', e => { + if (rowMoreMenu?.hidden) { + rowMoreMenu.style.top = `${e.clientY + e.target.clientHeight}px`; + rowMoreMenu.style.left = `${e.clientX - 120}px`; + rowMoreMenu.hidden = false; + + const downloadLink = rowMoreMenu.querySelector('#rowMoreMenuDownload'); + const downloadListener = () => { + window.open(e?.target?.dataset?.packageUrl, '_blank'); + } + downloadLink.addEventListener('change', () => { + downloadListener(); + downloadLink.removeEventListener('change', downloadListener); + }); + + setTimeout(() => { + document.addEventListener('click', hideRowMoreMenu); + }, 1); + } + }); + }); + + const packageInfoModal = document.getElementById('packageInfoModal'); + const packageInfoModalClose = document.getElementById('packageInfoModalClose'); + packageInfoModalClose.addEventListener('click', () => { + packageInfoModal.hidden = true; + }); + + // Fluent dialogs use nested shadow-rooted elements, so we need to use JS to style them + const modalControl = packageInfoModal.shadowRoot.querySelector('.control'); + modalControl.style.maxHeight = "90%"; + modalControl.style.transition = 'height 0.2s ease-in-out'; + modalControl.style.overflowY = 'hidden'; + + const packageInfoName = document.getElementById('packageInfoName'); + const packageInfoId = document.getElementById('packageInfoId'); + const packageInfoVersion = document.getElementById('packageInfoVersion'); + const packageInfoDescription = document.getElementById('packageInfoDescription'); + const packageInfoAuthor = document.getElementById('packageInfoAuthor'); + const packageInfoDependencies = document.getElementById('packageInfoDependencies'); + const packageInfoKeywords = document.getElementById('packageInfoKeywords'); + const packageInfoLicense = document.getElementById('packageInfoLicense'); + + const rowAddToVccButtons = document.querySelectorAll('.rowAddToVccButton'); + rowAddToVccButtons.forEach((button) => { + button.addEventListener('click', () => window.location.assign(`vcc://vpm/addRepo?url=${encodeURIComponent(LISTING_URL)}`)); + }); + + const rowPackageInfoButton = document.querySelectorAll('.rowPackageInfoButton'); + rowPackageInfoButton.forEach((button) => { + button.addEventListener('click', e => { + const packageId = e.target.dataset?.packageId; + const packageInfo = PACKAGES?.[packageId]; + if (!packageInfo) { + console.error(`Did not find package ${packageId}. Packages available:`, PACKAGES); + return; + } + + packageInfoName.textContent = packageInfo.displayName; + packageInfoId.textContent = packageId; + packageInfoVersion.textContent = `v${packageInfo.version}`; + packageInfoDescription.textContent = packageInfo.description; + packageInfoAuthor.textContent = packageInfo.author.name; + packageInfoAuthor.href = packageInfo.author.url; + + if ((packageInfo.keywords?.length ?? 0) === 0) { + packageInfoKeywords.parentElement.classList.add('hidden'); + } else { + packageInfoKeywords.parentElement.classList.remove('hidden'); + packageInfoKeywords.innerHTML = null; + packageInfo.keywords.forEach(keyword => { + const keywordDiv = document.createElement('div'); + keywordDiv.classList.add('me-2', 'mb-2', 'badge'); + keywordDiv.textContent = keyword; + packageInfoKeywords.appendChild(keywordDiv); + }); + } + + if (!packageInfo.license?.length && !packageInfo.licensesUrl?.length) { + packageInfoLicense.parentElement.classList.add('hidden'); + } else { + packageInfoLicense.parentElement.classList.remove('hidden'); + packageInfoLicense.textContent = packageInfo.license ?? 'See License'; + packageInfoLicense.href = packageInfo.licensesUrl ?? '#'; + } + + packageInfoDependencies.innerHTML = null; + Object.entries(packageInfo.dependencies).forEach(([name, version]) => { + const depRow = document.createElement('li'); + depRow.classList.add('mb-2'); + depRow.textContent = `${name} @ v${version}`; + packageInfoDependencies.appendChild(depRow); + }); + + packageInfoModal.hidden = false; + + setTimeout(() => { + const height = packageInfoModal.querySelector('.col').clientHeight; + modalControl.style.setProperty('--dialog-height', `${height + 14}px`); + }, 1); + }); + }); + + const packageInfoVccUrlFieldCopy = document.getElementById('packageInfoVccUrlFieldCopy'); + packageInfoVccUrlFieldCopy.addEventListener('click', () => { + const vccUrlField = document.getElementById('packageInfoVccUrlField'); + vccUrlField.select(); + navigator.clipboard.writeText(vccUrlField.value); + vccUrlFieldCopy.appearance = 'accent'; + setTimeout(() => { + vccUrlFieldCopy.appearance = 'neutral'; + }, 1000); + }); + + const packageInfoListingHelp = document.getElementById('packageInfoListingHelp'); + packageInfoListingHelp.addEventListener('click', () => { + addListingToVccHelp.hidden = false; + }); +})(); \ No newline at end of file diff --git a/Website/banner.png b/Website/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..6609efc752ed6a5b1e37f22631a8bda3242080f5 GIT binary patch literal 60292 zcmXuKWk6J28!ikZ-3%Q9GYs9`(%s$Nt(1avhrlpHcXtk@sFZ+o3|&$KNcjMQ(tf<( zIcNV_`{&ww-EqaelJs;`3Grz0(9qBb)zy>?(9kfSU(wNUu%4IGhIQ2Qg5j^AZiMsv zgyJ|QqMKZ`u599(?GtbqV@Z%fW;;oZcWjy4LV-&k(EfoTq0atEI@TE zlmq}l#l^xNVA#a49H@dC0QZX=P$B6J&H&bjw$uS*1dF+~DUzqhw0pTdB4U!m@a>k+ z`-92l630#dKR-O1z6M!utqScGcJIhwU^pB7OGGO}*<~`9*?zo!vkJD8RWt}lTXC|` z#_$FecD=4tUIUs7+c0Fb#l+6LZN2lZvtTyE=CItQxb@zdrOH!L=sVAKXbFD-$aP zCER-G&CqMS77_Ye`o9sUh0>D2$J;|JI6srKM)6)NJR( zRKszoMrDextxN5SZKsWPj;Jv&R*WYkoE$#ptoa4p$3uSyo`3jvo>f+<%tu3em}r;( zLRil)4!Xf=n4PGFJ+@M=LqHoRFOt;Rsa?b=V)kR^BS`be2eUakDD78+5n z2l+?tB_#iZJ3%_>82`Y${TC}~hBR+z>s9A2`AdMoRpgCqR7+viyJYH^OrEmIYLBuX zOS`~#BSN;|z^}kgkRblOVD|ABpwuOEirQq>U}AQeuq}SoguKk!oSBJQ<_i6ktw}|R z`YDya*CsB0sHji)2AmF2vJef$!*=Pls6?*`Y&y>F$>j9PK{$Syv~oP_0z9?QchDpq5YO zr7HDESJ}|DO=$@8Ux*jL7gRl&r7_E_#t{1R&7(A=|KCd-T<(Vj#djK1{8@vFZM`Xj@T%bSOrJt><18f}>gnLuAd0xZ^EF3sWRDDX-X24Ug?RoyQCZRjN(yXT7NDMsuRUWQCr9~-u* zGiB)^4ODIZYyevO1Msz=7~bEr=AX(jluOLcL|^SmW0Wp-?nHv_X&m4e`TO`$&q04Z zP7oAf&052j(52ngBo8^WABoH#@rAqr<98y~x_&7M-xw1(=M5Xjd{4Z}4XW_oU)jcu zQkXWLJ)BWx(_p_Ozk5C9Dfm@4%Zf9n1{!|6kS77wVYu^h$ZlpmuI;vvCFL5kLi-3D zK9G+J9eOO;om8J9lad_~6}C*cdSDlPRNKc}Fq!X}>|`^r+_;&*OWNJq`nf(>DZqw2 zsp~49IG9c=RLXd4U4iwR8J>c1$Ig1}r_8BIMd&{HqU$tUcpbV749}HfMjm&LH`@k$ z8>+10OHJp8s-^sR<2Q~{0v2hxyVL|PXI{8-uboC!NJ6n+DYm6wM zWo`~931h((caNH!i8_Vgn5|mAkw7?CE1pp;_=thS$V9p2)hF6O*a{z~6iYIZ;%s@$ zj(<|H=BsL|oUtGHkW82Q_tgY4T_nl;1s)T`Pn-3@iEeY}1adS^?HQhG%-cCi8VBcm zh4k*(TI3qEJSUX)kgsml1n7eURy+Y1M*0rOwaJ>`J6$uy!C6wH`o&U<{FEUIHtL@& z4hGEk&7(mY@k9Ecv~g!go%_0ZYs#6tacG09SCU6`{eMmq$*{;TD60P~hCIbo8P-fR zaU@UmL5Kwn55m`65iFlx8Nx-5S=u-}{6s*q-O@{|z4Wa=qy?NlJ~nz{HWis&{WAt}(59Nplp}BiEN^AZI(Ne*=!mGr1s1^7M6;g5(9-V&Qju z;G!Jjy`=$j3%c7wHpZX%%A>NRQ|=@Yb6^xlQ;1E`&?8Afdp=Z{w01|hw3KJZHZUVn zxms$d9(m!OK&1>1m+o!5m`@t{0LLhV>#<`K0?XW)Dg4OFN&V{nxcSV-o*nQpz7X)DuKGBLBauQg|%~X zc*=>;ie^ObAwO<7T9AN(zYO&KE(Qm?;qW4f?k+o$!-- zdfUSDgK)}!-An($V+HAwiyF6NCyuu1_)difXqd_PJ-$+)BlgcKIEp7(SN@2dyL8aS zpPHJxc5(o5KOAFv;HPTkZ?LwjO<)l$C_+Z&tL7^=CX1hhsENmzcrJCR7otT$(gX9f^a<9@8R2Zu1`bCE74U$@4$9~x$kxIbr6s#_~l zpz2z*1)V8OrDL40N3*OLFaoP(`jYyqzkb#ZubASayiu-bIQ`q>rUT~Gnxot-ZR!>6 zG@-YmGYrA9qhEQ+ir<_XzluA^dLEysu0>+fkCgl=sA-j!6lW=%Lj>v5H;`^+fKvR^ zR)!gvmwUzxWE77y^(h=lZ{v~&7jiPp;wRKza1$Cf;BqyrPa^eLR4Az-)%SPaSR+nRu*btou z-UQ?poEY1=JUZ$g;Wm9%@PMU*VjXA|)aNlz{?6s;*QIIET1Rb|0a=d-@6`H!YKgHU zTeoI$<%&z0WzM}B+X+_VL}%bJxQVy0bZMxXqt6mtX96E`GDA0m`z;gFX(!(su%eHY zZ+8npZi>aD8RA@sFD%mCvMK(mC5fmW<+V(DrJvh~U9zE*ve=VZw>S5u5? zWc?ISb%f1+$1;i;@BkvS?V-K>t}j`ED$&eOg!4Ge%0C<_*x<-gYAp&8g7qLRqdWuB z9$w7o``2bdHMC(M9N*7=nG~EJ9=u5{>G>lVf3)$ot#SAFk}@4V)=QDsS$<9hueAUn zBMJ(mW@voP`ae{#(B0(s1TxZ6$1OgUcW`Gg@ZNau)V_71Ebu6>hIC?Ut6(2e1DTjB zr}S4(==_DfKbhcrb$CxCHGlf1U2_2Cx8Tqt6d=0x=amTiqBUhaKFcR9#ihr48!H>582gWO)d>u zmI=K6mmgtOjEBGflWxauj*BzZz#COanY}kr%;vQ3t_q=)@mABSa=xaV^Ld+)9NVj{ zk1n}DHmbMdZ5eKw zEebMidTMQcv_j%oDY_9b(I!OsObl&xEI5A=<*4$>hU)Spr+-f@}P>$Jv zG+keKY7mr#8VV`cn25jI&KcH(j73tE)?+0$7B^P}zAGH7`0jG4n+f4OOiwgljg9x1 zE#W>o^boqXh0X3rh1`xB0SmxQY`J2=Ks~Q7-`P@94M=6WX4(wASu-_Y00CHb|Cn* z;VKjR&#EO3LYS_6a)%i@qnmB_DyJc(qi1dT(pi?@iXv<^rg3@QuF;p);GR?zf-5(& zt%ny&vB<{Egnq6qC%UL~0&8i#nBX#~3k&-!4H)w!_<27UAo}+b_AMm_I5twGDAG#S zC_pS*tuAZtx-*5=+ZmVhur~+UHJ$rX{+^VgJV~xeTH6B#DdC1OVH$@`vI4%zCLWVb zaA`T4D*)=_45Yj866Y&RvYO#RMsphC{Xm&975agOABOrGyryxT)84Jz_O5)6RjLOJ@%t8ruu{a$EX%|+d<3uPKS%D3A39gwl+IN+Z{O=<6nF24*qvhhUe z_AYERNY|{HW$XHwDbmsnc)?|swD}|mZm^$;&B8iuu@9jgPuvA=7Cjk84WMOqS02b2vqQR5ANDwl zh%Rd4uI6?6-6K^BuJoc@68q1IS0U)bm;6XvU0!3LUY3(l6q7thfoASX=0fe21E2ZN z)h(y@>1@m_N5WyP_U0N?qzv0zt>$T=>%OXISLOq-%3F+5J)<08qZr8-_(yG#x%SKg zTN8Nvol6E~sH^h}()NsJT&Gar8P~so_VYo5mQIFl{}QtfoP-qeQXtdy=Br~CcUjC% zc-UJkFL>aBi$bna$~SOc!l0~=m5H6T3aqbKz5e3s)c~B=dBVwK4;@KgKHNe!hKrbf zkuE)OiXyT=NAz_PQFRmBJy{%|Ab%R#!a;4#_%(B4cC<+G?AJQADf+b~{SV)A{uic3 zT^Z^$piC|rlK+umOgIIn~dSM`9 z9~P7_R=wZ;QkJZHBfl<$H|D%Q%kT>iWrQP5rvCSk^wNl3hZFE090kz#w}uw9YvY5Y1MB<=$u6t!?v<#-e&;$ z_fdmY_W`$|yj~0blPoT>3D2oC-@DvdJiId>163E3Hk#txG9saWPs0BZi-t=Ro;yNs zAKnL>X5hgdRg5zh_pOdZ{aF*8QxlcB-x92f9&Jt)z$oRR(D0SmOW0icG6I zCr5SpNfN^#|CAD&`EP4@4Ot_qGBGYxwL83Y_yIbCP)!&&MQuxj5G26b~P|Qg`0@>2?)QvHK=8avvBs3yhxOH2n z%uSfSYSeOw$u?AfL1A(kTc^pE;M}qSVul#APU_i^d_?4oIGyC>wT0~sTrK!e>lotALdIh}W z>YNi>K<?Rd2=kq^6_a8#rh% z%i2d`#;HE%NaBBnN1LIAR2rk)-$|ll5?-R##<0FeF~SAr$aK!xxLSn?#^{~G!(Dw zo(#8Naj4)4N(4otbyR^}0Gwa>r)G{LHyHxt9sk8unW6Vi)oWAc*q5oZf~+?o50#}c zdcC*sfCP7GJvgoHnvylTW zre=I!)G80E{mb*Pg>}-4RO|DfMFfi z=UhM4$@R~oj)#85h~AoRnM_t&j4{RCayqv9ViB%qTv|qYzab#(T5)5`7;0Gs$a3b{ z)%**FrUfFNV4Imp0HD3=r)E20{;@nTpRHEe_+i@A#8u86ylKSW-0d9*k8n^TU#=6V z7%E`^@USaiGZSyd+Qrfn&AI5lIEJ7HPKo&S45`V@A91n}O#L1C1C6p$2ssYx%aF5p z$M3n!*1hCh7Zx}O)opxT<3-?v@6|T>e9~&mBbm7UPNlBxnHXAF`Re^P6CP0OSPJDD zJ{<%2k2sTG=4{tdUYk#vF&yuO|0=H{HU=VNPwhDNwCT#^O2cEBiPH-`7|u|P5z|+R zvJ%mg1oo~LIlNrPiE{cfm$#D{k?LQ`l|W({8Q-&CO8DY)?Ua0SqfD%-VljQmU7wqO z;K{oFhm%tNvnO&(m(_x$x%^L>Kwzb7--^xz*7>RDe0(q$7+3DA$Jy&DnII?hF&&sW z)D1HiJ@!-3M1^YA33*@NBKCeNQ3BHlkDSYzRa5%NK`EsOMP{2{9W3S!`RS}d^D=#a zo(A+Zl-LSUdu2YlUR@z7s8l-XE_WLm1dpuu{}36@eALkxfAE+K$;uie&-E8R^zQGH zH#J}9upD$jK)XR?1{7rxVke;V@RShg)X*n~XYWjzaTj^c%ANDeesV;SuGSLT< zGYp#|l;`}xj4~FtnzbGT4@x{B1pc@n?kJGvDT5y=5gP)#vekkW_c2%gw4GXHQF)sY zvIU2H&8e7Tb6_5#t#qli*y>#G%TAqW^hYoB%+z}$q3;(*c9G7&0>CKERq%h+`kwQ( zeM)NAiu{Xp+X_^u}XO+;0H*uzOGO!Fi_$+yv>VWtv6%;fB zO!##c`LIISsuX)cQ#aiEyJUpPW`T6Y zXmn~<|A&^Ls>__(6j!wTs4*9H+j^TRN-eMktC?M&07R{4e;_sX&N$udn^I!|6cmOK6V6-gw0`2xUt}CCcVyQ!+meIUPf8oj|TB;xz1@ zbbYmzKDeT)0KCye@|?j!=1d)~GM&pKM&;uZnzw(q5fEqaa3o%nRSOTaUNQRpJGy@7 zE``m;*D1Z$*%A;b&tu*!jML6ZobAw zjI(>8RP7TO!=((Q(cNkky;KKo*!Tp@hgMon{9cd96Y9r`KHX}ze|}577Qm6=j0iE} z)jMLEK}PjX_>I9MthygGMhSDumg7rkC-HW^18l>FLYW;EAC~RPS9k{eZc%D-T?`ti&ZoiK%#U#07BYkWF5rD;|+7)Ge9>!d(;f2np?Q>czn5(T# z;`gs4{@moRzcQMB*UGGf<`T6>iT#ae-sMvHEiLM|3l%REfOstv)n(pQ_1}cTe=4wX z31`gU+8BXcd|n4luIFEgRqLe^h;eg@V11@#^{HIMLYC2}l31;Xr^=*8X%G*X|EWP% zoej6vleoU3uQiw27zj1&Hj-?LMUPKn;bv7QyJpKUIfMqJ8Z%@GR@>ZbN(Pe6kFUL_ zkz0~LSH89A%2gp$W6)=H7e^m$FEceQy>)7*uYdIU z4cW*{fBgRW$OLQX3-+^#qjYMjaJM~}CH;7RGOBH)v9BKekfLi}!`k-q=mFyF8Or(f zOYN)P-D-6?;9YseznU;Ee$S0MY2Ve;jV9Y3nUl|-O2v=9rpvtQr1{cNSs!a;mrthF zcuaZ!5zo?#`}Dk^)F&b1xwn<=PRehjq13V4x0k&%3+C+Z{9?*KF7UaopnKdvP{Qv; zb9T`5>LJ$!vPm|wl5YlZDRWpN%_K(BGLfU`6h*Ax*;Cd&++?-ed}98m;00qJV9_+n z10&gEi%fo{=ew1@0&|=ixrA$6gu)_s9rNF(>c>|Hn}jkCvx#LwWDDMSnyk?M)G@55 z@+aiS)ebLfEE-GA=omPsnsVld@zr&F@$Rpr``~LWr;nN8xozK!&ct!$EDJ6Bb)3o~ zYP}QSQKwkLrE5x=l}5gpEAGY?txewU1HbsE2maqIKtqpC(T+`^kOoils%|FQ2*JZO z{4b+a`o!Llpaf9z5jJeFQs+PdxeJKWAj&r=gpgAI>-;0cN036$mb^N7zi{>UuMFcp2AcZ{ycb@_x1=tl^#~GHdNh-5t(uN|`Ovzoa*x%+ExcY5 z_!f=dzsg3J_U!p+c?~uBwXa0PScq~ss&F2us_TKNm_ej{@#a_>>VbghqIH+cbe&g8 z**ggda_vc{d-9_;)*}TzDRMS+YH~aw7(SS3leOPQ-fdnY+=8m)E-!RslH~n-2UeJe zG+WhOs2SiP&3a*l^Puv%ZE zq7)6abuq885+fgOZOwlOb(WV!a&qyll5rBrb(-^N&=tnYk7To%E&}i3%{ZZ(jL@6P z%rc)8?aqv-=*JJ`4lriF8ldGoVjWS^Q8lybkRU+~LGyl7yrkb~{q_1X6$JX0weXsJ z$%^pJo4hkLXD8p^1%c`7#OrI;5qf4>weoJ#AQqeY>~f7)cPFf-+MB47d>a`I!&WOI z^*(VomKWMxq_*Gp;k6&j{WBuJ>?w7H3h!{1m#|v?`*QqGlMlJx;k0WrxgbS#jz+ABx4YdpmK)vO&eu8LieB9cQ|GB1S3&J?$ zW7haHMw#qxLM;zAAe)d7R4s4DpHm|d8CYC1n5FVR=dNd7`cq*BuOiLs_M5c$Y3r~N zaWpGOG1>z4g)`PJh3FpGlHNDvrSOV_qhL^_VuEG&J)!&$@<%#LOE*_hEw5wm2C1@8 zySugyvc8rzA7`7Z+5jmq!&RgXEA&$J*wt+!@`&4U$nL=}!{5TKD1Aih--88_WGe2Cr9J3|8mx zt4CVoU3kb+)qhlvvj%LG|1q;_@JD4?&s5u(yhpWYKuB`1SXPlojVO1A%qhtHW} zMk61S3P$@fP(;1rB}a~LpZRc;Dr=Hxs-J|qz$WF`?Ih79pJYj5f>DyJ>`{&}dqz|* z81ISrfwm~el=W*O0}#6G6Fj@$cI@u)Lr7U`O*Goe!f2rn%3gJioh9|^^Yw|`)dQJP_G34iBVuwrhwbV zAq!W6UT=PRi}p3!(xNlPSBGZ<;|%N)b%wIdtAjB;!M=XY;eVy>p2GrAKI_QBAfF|B zsE)%h;wadruU4jQnp%-;vRY5}P67)e4&j2sA0De!TrJdmPz{5WQU-Fz#=4tm6|JX~ zcAIv>#TEzyAAf#N?7pkJb8OlF#nru6r3Iud&onCR#}3-JC_mHOlOipO7VND~CXO`& z+#Yuw3H2+3Ri=L!Dg8t4vXq~`S7;{?kb1Ht%Kc*m$FcV%jxNXpI440CrGMj?$a`S< zLY(UV@}1~lHkR&Rir2@c43nrq1Z2=X*Z;;()}!3t@N6MO|e=Hf}=7836IXr~bbcr;Us z+yEdQ!%_;`fy=FaDL($qi@ivVZ_kyF*?-oLH0H`oAk;%7XxcZX)e#$ z0VT*h@VJV~uq?GALZ8mGr@o|QPW!i42u4frKj5+HbR{{+H|xjU%5G8Ny1f%|6Momt z59xp=MTA9#-Lsx}_C|x1NxIfw&vi;|n%VsPYnW(#As>I~MyuZa!;BJu>TP?B@R|vW zk_iO6Zg>#~`;Y%WFSdV5_W4)LFvj^miCLqfxV6W+loL??Ps$w6%>?DuB#cHl~8Q2mPMBZp{3-Q5~ymVU<$KOP(_O^A(Ssq7R&H z(w;h2#`G4Z1E2B03ccP&6^rlV;Q}Y!BOl1(pOIcl3rym=roe4p8vR>6w-B3-4cuAsp+7R*)g; zAw`fDL9DSnXk!G~EA(82Lv{SRTCs+O=r`0+0Zl-HIkL$AQSi7UVf^sQNRQq}`J@kO z*F3;76iEvs?qeC5pMtvxD%;M@mXb?1aYb0}=?zLV;YLV#lBLPC5C=70B91%iBKRSd zrmROr6XDV1G%euZNxJna)tb2Jp@x*&tWT(y0+Ank5X~b>8FZt+qR%+m62a4hDQ^GT zN@@8dsj2mQxCB^QeFZ4s zI?w3G;-!eB0*UNT_U={LN1`=4`m#oQ-J4F|c`fI~>78krnif37rb+PIo0Q!iJMrV} z?y2IbNvZd}T}-;Qs5trY<2d*iqh>|;rS2rH`Bnp2xO{TjwZ5WX;PZ$8Ih1s@$yi;^ z!l(0s$9AosHhTyFzfjhy^|XvDJX>wtXvZfP^oVFP*CJjG`trEs`IR<1vy}5x27T1n zREoy+7T7hQ^RK!$P;H2(>#8{5v=r+<6Q3>vQV(3G7}+rQ4u71seK1b-PvmaUv4=PB zQL>WxopYcZ72zORV`AYwoaNil(MOUDRS!metXWHwVtS)8^4p0wvQ&CS(CE^OQ1{^chyTXSWMWr2&6!Q(uf z!wx^0Qa^f5yH)3B`!_SW4EF!Eu1`~SqG>8G0x*pvNw`Gtt)p<)0pi2kC8HW;IeM~> z-yKO^8F(+#sj8FsWLInY7jW6};L#2WPMNcIW;(ENH72Vctr>Y!;pbO4R75WBggq)3o>wl~>d&GH@KdO7 zH3Nk$`Asv^b5730IruXqY2Z80cZ@(Ve*N-Vite|)=vzq`R0&^kP=(d@Nj6v)0+&sg zUYcDK^q14U9`sOY3Af1TI#b6!S|6Z@WWfrQ^7_PDpba5Yb1wdX(t*F=^LEe(2_2&b zCs~T7T&l%9kfF;&WcloYA7NNU1SnaG+GW>Hdi9J*K$tMn_~?U7ac>RdpUI?plC9{& znqPNzT|Oa|>w6LJx!cf#lxfHMch@Yu^0n0xgc6sPpZ$6M)>&ul)5fGCle{>dK;F~s z1R2qBa|c$rBp&zl&nWv!B6o~rk!UTen6dZ;P(eBxQuk@DuFb>4sZ02opbf1UJtcWJ zxrIFgXNc-0=@ui_VQiwTWB6=6udiN1{*UW^UNP4)M&-%3toD!bW0X>`*s#E^ z888KTXsWtdAV3eh(QVM^13Ol-IV3_`IxG&jnspT5 z&tZ~|P!T?eWKI3XZ0 z=MAm+yIAI?aR6r&+)f*c)-f98F{bfpQBRB5Wnjk^zd%l6v>Om|2F-Cvk$q_04?z@% z751WyPcI2Z@n--FRJdwXKf|p49Ldhx1v-$SY(q6}Xd=wno}zIU66E&W<%%GsJ-opJ zcR2oGG70`RV}_;_kw4B~o#;SFBUZ5_CcHj#*ARD|!cwT$xG#@w!>uO^uUB~V3emVp zQXH5HlwAlGasCgYbJ|qNGUQst_-hZgkx1UIQn{ilPoK1_(kvQ68hDFDk4s;u3P%L2 z8Qp8J0RrKXjRf^nj2L&#{MgNcCF3*mV^hkZ0KqTP)cLyY+Zo&|wz5G#t+$SGEV?!0 zBJeBIqtS$89p0@chj`Htq8q#%%x*I4S({wRwTRdw`r;fzN#^bz8C0&gkBa2~OoU;L5vnn< z^1FLf;k#P+PTBImj8sERbKG|`6y&@R9p*vybmUcZ+vMZQX^*@~YHN(bw_d8(nu#s! zc81_dJ+%H`F*g{rxl6*Tlw`ExlydWI^Y;4R%8K z=}E}}m@*>pau)Fjf4iDgBS|iMgN8u(f$hUY@9h#)Pg@n(PV4oqq4y&%` zUXW*)WRJN~h^TzIHdSL?s0pMbBHCjr{>N6qH9sm(f%j8cagGh|MlS$|7n;}yTkv2J z&UNLRa(u@2xm$$|o@)0PX*5nN0h~i470Fau+0Hc$q}5l_JN;Ji-0i7XDKYUqG_2^i zgDQ&w(}+O_Bq+yAq1uxpjP!Z>zH3-T>TK2_i^n)6?i!17TM5CFw=6CRvIctKRO+DR zOS~j$;1WO?=1g;qORwRX5tJQptRX3>S5!RYmSQNVLUdoFK&eICFWR36+LUp|=br@* zCaxh{5`>c7neJ~$Y4kf6(pym>gsWrn0)I{{VpX{1O_!dAqPBKZ*l)!*pk-E^1qu7V zs0xuwTF1kRz)PHqk1VtnKIptX>e1|l)+&G46v`g`n#;O(Im>chj&{FPw|PqZ=aG_* zIbh$_Y$y1MNoU@@{$l`37aPyz4EcpBHKXC3(&h4#usQ%?ZvQguo056>rygF0BgE3Q zxfml=dwE9S{aIu<-;(3!)+L9jo@45|h2CE4Vs-KvH12*Sfo6DYZujq?{S|4iI)6k^ zEhbX*8~C0=yRDWLSbE)>DEw=@UXR)fpt^ZjJt}LgL>B6GH$yIvONl#*EKf(lStpqj zREyO)FwKmw8@n@_{UP@gm*= z6`unr&*4$qQnuu}12&<L7LRNT`Nvu^v}lO0t;5!=p_e{H zLJIX|3t}Mi`99vqS^&dtS_-C4-khSeL&=9^ym62~VBvc@tyN;6=r)rrSDfsr!J7fK z%jHQ*55vsndR%XV6mF~Ql|+gRH1Z$di`1+S0nEiDnOUs4y6#Wv&3tOM^@*dbx>0i@ zsXOO_*GxPw@RKA@wD`P3`RvT1vb5c*^pV>Q+P%kCrIDPMqF`=u^jhLz&q6>nyQJLs z=<6411-ucW%6wiIUwMKsNaV+rEc4SIvqQ9L4r~;v2ICQpyKNHj$Lg^U4f=1Yab#`q zQSPeG#ntNlt)T-lwcUn>tsMfjX>z;bE^}_jSfX_yIR4$y>wt^bp=26GLj8-+qDC$o z$_3!x8a)A5_yukj@&+y}8`yp60%2b7+fqFfj&lwmkJ^f9mvAZ`uqEb{gO%cw%Mz)? z^DL=2e#swAI*%Ga@b42a`X}KbNVPwno|M;5;rdpOVuW%E5259Xy+!9shG|c3iL^$$z+ysI}Lr)sSp-v6Z@*Dto?>uB@7 z^yu3&JSS@9^n&J>3G zWsl|~Hui&m8(r3sL=Y&XkNvG9jeeSs1P30>IK~GE1mZyreTuY%TpIE)+14B!?Xmez zyP;UUs# zsYfO9&w8Y~xVDMQpMLO#yDY7UVu7E_?_~9QA*Z+hS(eJ7^Ch=UDyZQ0dr4Yi)GhG; z^XbHjYnVqXS-$Sjj^-(pYlR&>X*l#zLwzkuSGPCt1Ytroxo$70Xg^pPk;+`Ff*u3p zGYA^@7t{euh~xj-1%O!;`*~(BfK4T&Z=K5sx!VNvg%F5l3aI>?C@vV&mFmngUR3qx z?^=~-nMq&Sm&1+%cnrPcT~B7`hT^Xvvje1H?Sf&nnx5`yja^rfX4JA7<;cGfoe#Jf z7W+h{dg+5r15mycTFO!qc3@JY6d~0_gID;e6++JCf&+QvROkkP+Qk7c4 z#xV-g!g{!pfQjcOr=p8Sxh;>FR}w&HO+9@FY6*)GN}SYDeAAyjzVcj|%v<$k0~XiP z<|B3x$*$y%*NGVs#j^81T{3C_x5;@wL36j?bF=1FG|O+Sx?$GDcArx5(J3bee{L zP8g4hycHi)3?_^RAd#D+!Q;=E=PhrskOmc7Vxid3B}h5O$*r@zY;zbbIplL&yU-z*y7ToIWMuMpl;rGsC9Q9_4ElW% zJ0svAE<6a4Tf6Qm2YT`?2%th*KV^^XX-)W6ePN?}t^o4^uHW^DPX!(3kKL!S9^2$Iwva>8*vd zt&n*Wuk{stG;tZ>IKIb2($L4Jj9j4fBO5NH#(fyZ`Y>%Nx(mZMLBq(+&HrZlpG-Vo zsDENZsD^e!B7{&!H^+P`&+`h9r#!cej3xSyi!4$!4)CY+TqCN|ZlF$!kTq7>OplNF zM|d#)5|8%>ZCRFyh%X{qO(}8n&)4Y(7>{ zP!-L`Pl&#?+lNtd|L2p$9TMP%RWm)kvl9cqdFoY{e)rC18cRRs#YYc+F5bZcmCU9K}ThQ?UP}?tOmG*7{!nP*imAHLp8 z^X_S%?gDZDXKyN^RaMX7DSGxK=OePrXDdk6{CBryWl1 zQbfp(%LD2wTH4WVpQ@Z!J}q_DAw;pf-{0Lp;@Q4u27V2BOXst?n8ek6Z4&X8{ySl# zdO(;Mx9@QLe$z(>Pq8153U=>88MeZ`Fd{C$>IW+T(PnNW-x>?q1ilgb@p=mH>beUn zIY$AUxVPlGe8+ogu@zUqd-_ck?NmZCtwlyUvG1d=(Kr#US(WXZRlx@&{?d!YpZ)^x zK`mMg<$P{2d*aj#1xu=E2WSp8|HSv(o-b**f|peG_y3cZCe?pnwVCw%+M%3y6n*)!h@O}PMObc5>cFbw^9gOAn!Zx%qjG4fUJsWvfVag3sdTpb4D zBaT6Rn4HFIHQa)1k-g=XJVnEp+wjMGvA1^1Yog-pS-3oZ_c~KDDKE~;o{jq9n%188 zI%cZR0siU&W+Q!@p?x!|X}UMwvWSDS|yze@0Z#oGhNZD=?$UYlta zx;B1u(2DS{TnQ_b=^zC*=k!L7y6rlHi*9P_cJFj9Pi)isWXH2M zsE_FHP0P^&oMrVa@t8t&4U11TScL<5;OQ?tHH6pWP<_b%i4jM;}wIMDzS(wa)lY_Fw!P; zD!M0CwY5@ZKh8Q|{}HX&MCNggnNHI?>XUIsQfl$PyTHO2X5@r;TjJRj+K)6-4Hkk3kCXXzlIwU~~63Ei2W+q#5#pc66tfX%Ie*H=Ot*Xz)ac)#$a z{+lJOk#<@5^^WLC8^5>rTT{&!Hg~}FMeWQ#o7=f($|0-9 zH}l-Sk42J5eY2?u(N3p;-K+J7bByar(!`##ce0CD3R|Io)9Q26>UNMFmdtu<2X)8Jp*%26n9wZZ5D$)?Pt$89? za4TU{{c#9AjT+}A!B>ty60~i8K1wN+C6pgfSAD-Rvm~TBJ#SAMpP0@cY=kZb;N%UD ztopt56`%&^B=rv;(avedy&g86hkL>NwNfxm<~HExolWTa;L5M%^fe@t!E8s(5Zx=R zVO^X*cp`k@Uf9E}-^x?qfimkw0Hx%k!CF)9YP;@OUb=#T;(KCCMM)EQ4iQK8&aJv#XACUB7GEu{|k6e+hl!786!TCq5v8wF;q2J!AtOh!Z z%G?}KH2*^Ymk~Wufdc|#LuC*4`$*sWGi0p z1trp={L?Uk0o}Fs*Ohh}=y1@()#rK7jU>~|Sw><)rj{ns=GUj0fQx6Gn6A{8>MDML zF5qV!XGywE|HjofyIwH-Y$)sPhIKeT7eUtRX*_)XJy@h2Ma;g#^-q4d?8LD*`Pk_5 zvdr?hO(jQ?m&nXJgJ(c;CJBr}sQe#-ICU$T;$&6jM6W|@T?DD4lU#~8%WsfiA~dNNc2>&3;Rvmf zaeB#nH)&4`I6>jPpR9M(D7vBCBntWS6RF|MgvTtuxSWa~{v$@K_4e@zpVTRvG7ncimB(E%-VK8tZM|3g?&Ig% z1~+scva~56*ZvqUs{_Q>dF%C^KJ{pTnh4Wx(^hxhYnu5H+i1@S(%K9=8O=qW>nmk7 zlRC{tO1L;YWtL48PE_pLfG3Fd-+5%GQi{r{7Uq7NO_25cd9g*`#R^^7%Qx>Wy+dQjUzoan2Su!vPSJMWg+P!I z5=4h#-X|SO3xwKTWtWZqBt9qPFm!phW7`e*=T?fo&|=UMPUXz+{>-z+hY4*AXJWEVjcg)hc;e7cNVn) zL51S#j{!#%l5UsVB3F9aM7iq6zQwUS&jt_|d$azhJRnKhfPZ-Cgn{+c-YJle7(*6B!n4K zG3>X4{L-yKh3aabhfS&qFqZYbK3;|A?>c}lRq#`UTB{<*@2_Oa%=h7o-FhXX0D|b9j<`-O{t5ax&4C zBqj*cNEQdgU24F8ze~C+O&NFTENS$<1#%2+g-3A;Qj~K+<{z&JI*>}`1~ql9x9L8a zsp-aDpun3#h)Wf&;CVyVE@RWSFWo0cXIJyw&EPFDu~|@9@ac9+O~NKr?FI!p7}VYI zu{s~HsUBCp9}uPQ@B52RNZ9z%b}bNn!iWqzLW(2fBSW-EHPMYjVg_-LLwXAj823nF zL-+1OT@(-fiFubWjTE?o6$PRj>~6^tDLbT{sJJ^WmFjjTxPd^e@id6k1=Sy$6(6&c z8#dF_cyVNWA{j48X$QMkdYFzu{E-awRHY<=*b&S8Vv}e=7ET4k`1#Lx4pIi?l!De8 z459uf#7>5Dk)mcbFAwe{93`Xz?<%F)Pk*1fNzH1oKi*2vLQg4@TN-6aNm?!?_BW7n zR)W_jcFz#MCr=%gJmh#OQ(PIcWJIPTKPy-m?l93yne=>X&@3|-h@>!|h)MS@m-jJV zi15H?y&nz0el2d?L(0DN>o;f)r!CM}QugKQa#1Efn&C~$m5{3w%dy%p0lsCd7>yUZ zMSkp?-2^`WQob*G+N}@z>=$2QI!h*RUyggA6)Ug`ex9D=1)nFH_GN#0VPR=YUwiH* z^J1DE?|ehf00RwowSxL`A#^8B9exouV$x$bm^i2mS!Z}4UUK#^6Ck0eG=O+S zUAobVNySAiDoO>Egfc0RP09#uEkdy-vE<(XNFKye(Xq4?GS$??nE_NBka%>F5S>T; zE_W%26Y+dmyxA)*Y$GF@;8B&Ju{kW&u}G;LN&3zzDuY>Ekl+q0!yoy{_B(7efJXLV zfim=f^$XS({c8fv0z(8Ol&25C%omg(4O?(hiMTBQ+y^^U@nHE-}Y%@ zUg7Cj>9X4&-%_YV);>eOPnL9OHtk;D(CgcwsLnuVq6QxDS#`vk1j+cxf2(4#&UoxQ zART_Q@&P}K#$iC#I!FadlmWYdaMMdjM8NKDG@eNC64q%Yct;paWi{h%K@y(qz$qC57 z;Jg2BVUhj%Du!ynzP(AcGf2eQ6^KJ8BN3%7H=UB=hFE=YPD!bjL~lLbWUVe#ji;sR z*^Rv|ZkrFdU~y?jyr_`wB>!`_Sbw}7eB^m&ojU|(q& zfzZMTTdBgwTo17EQqX$fn{@x^?o&Gt+Ct>On?cs8j_cY$DQTh5&|YVVcaAB%Jd{s8 zPB;%%M)hE~gQz8qIIVD;&neBvji+bm27yGv*l(BJTq99E->=pu!W~8H!*Ko-@&18d z^T<3Vl2WFm3_g_{WZM&85o?{p*S(CGeUQ4^2Tl-pqA=a`FN8b@W99s>{XM+PP|7=( zYWz9g%06pksYqit+G#=>xlUkOrg7KXT|>i+uWVW0(0k)jtc}a`QR2QxSEWGE`5`Bl%^fcrW&ODI0W&}DnHlHQ}UJoOF85(a>(5*Cf zV%@1HSJ|I%7^UHEZ_^Q|ifsK(RXmEU{kekJSZycilfKZEfZ`ekJ9 z$x?*p@?X0`TGi1X6KnF&@hS`{?RpHS6K6S%19Wx!3Ew^HkQhDj1aND45a4<&_#@zW z4@50lwEhXuQHB_+%f52?@- z4U&*q3bA{(+X!_&aO_$gKj8q0(QojF5tPr#f7JY|lhkcep|9^CfOEVTsSRwfl`M1=uk=`XslZNt^;-3?+m2 zWBip1!Tln+Z=0!74eKmFbZrZWZ!z0Q!HAx>f>Wd=o!!=_W4XPN*Di*ay_c(pBN^ft zZ%36TKyyK;YU(H(zL7~9`F2E&`U|b-b{wxZ7`hc65DjMr8% z7)yW~h?D0t|FIE)_4~UL)2?G-!V+K#;H~59SH~)XsQm*=^3 zY3=jt@phG}2D_)d;KSDFh&BVv)0jr$&-g=LF+)a5uU+6wd@wE?wbQ~ck-zh@IEo5; zeQ7z^!_NdAd7W~%BAeLcYWmN4oc`olmWP;dV-QyH6^x}>d9jA+jMR6VH;I+pcgpuX zGQ@7W!kxRy??Y8vVX=1t%OQcF&D{*g5mNXwD-|NjZ8ySA_l~u>&OMp0Np7+M=C5$?oWU0;G~Q0~1eI zM11skgr|fOnNZ1~E25i=c#B%SUzSp|`wONBn9uJE=zxBY6Bw|iK)sPTUmqZoX!P}0{2&KT~%dkwG#yIsK2+&=@>F-y~#yIBwhU|PxF9K0k`OZp( zFHe=OV&4rBTHX!Yu0R9X`Bo<4On2%q0CPN!1H<$_BN;N15!!hki~uBU_Q2L)!Rf-r zlNr!V#dp(ay6~CC=ZD5U$<<4EtspD(q}WaB!sM{@hv~9jBivb(cW`#c`)6q$uCcxk z{8Y|r!NZCA>V$3(B;BKQt@zYDs(871bL-lF@DMk-3O^} zEG7!N^;=VXf6tvI zDIA5`FkCs`#pyW9(pFC1X|JF6_%^DMFxa@oCJSx1|13*!#obM`qO*!dQnU$d zWxBe9+|stQMFS8W(G6Z@(+*0b-)AL}eeA zkLX%nwj2$M)HRC9_TkHNU5ZOHfljhoD{y^Qw_(tTEum}ZW$0jm>v-?Q&8{5y@Qp@c ztBd|XHz~I5sW~XK8$r3;v0U+~`?6Kib&s&o{A6kA%U-Git<3As0fTm@i!kw+0QL)p z;FANFF5cuu_#C%nwO_L&`^n0R?osWa#yI=}!9%|$_yzVj$%CY$$Y#d-onsM;SM+oD zjdw010RPFMkOhDkKK1n-@<^mVG^X9W6vJMaTn@|6tffc)z$0d`r0hD_9K#rF934_9 z*5NM(xdl?6G?TdIuH_sUX70Si?YN%72@GtbDIA!|x+#oSnU`q#n-PxK8^jwX7n2Z( z@xO}SnzT9+6K8Ar_5PXDvnczw?=FnlFj|Wu2!UM}4Gz|p#6If=Y*0&`07QS+0cxM+ zc(qsQyDp-?v8?YX`63)wJwB`TaYLR_bL8|%!P}}h@IM{qPO`Ak@EGCLYJ`;^JNN9b zv2~$&gAcoChKmzxW17I@lrra;Z=^h3MdspYe7xXvKoi~4@GSr#;%71j%nb|*yyGsE z`{&YHgb!}%AObemjq5*STxf5mX%+R^dOly-2Q(86F~9AMcr8Rvana&FZn_!`f*grM z_Wrq~>oQQt;z$^0ri~ovZDgN-q8cABiQ@?dfqc2`=8%s>#~nu*U$==m@UG7u3K6B* zl3Kj9WTzFz$y)(H^N1fRp<&>sGHJ9r*!MQ^L6O{#l~SDAt;@t|K%Kj+@a~WsF(Qqv z@glCnCv9JLx$fds;TKK!@b;q`zP1D8Y!foX?8RFqjhS+j&9OHWE_;2;W;N6pc^=mz zo!LF+(1X~)C2QB&F}=qv`Zf-lx5{08b&Gb?ZJRf%*FPvK2_BB=;;%p=hEFQ2+tnXG z#IdCQ$Ns6L4<3nAOiRXe8J&x)HGB(GQRXmSeu(W$7z&JWy&^hb^>58jfyNu`*dMMt zx=>wBmpdToQR7Br>|3FOq)2FE=P*Cvm7!5X$kmo zyL>wRbpM_(NJ+-02Od#|59R`C+qaN}E533>-pp;IAUX!^B+2Ia8dGy3&c-$02UeN^7 zD?PO)f#?vwUq2ZEykVasvhb`46@UU!N*d^*Wk9U0;3a%coT`R)H0km){o-|x#oUuV zGpw~l*DVj$`=acC+mkUm*0STE69p#CKb!IKY8EFSFtTV0I#YUiR`5E`hr`|B<|yF; zmB-~QO#*e1jjpQZ#xu64gGQk{`XvUbdTrcq&kB_RBUuw|J|{d`d)Yl>_0FgrGhabs zIFZWhe&)*Mi><%mD6ppqVyzm(wEf-DjdrA~bE}ag7Ww0rnd9MobUK7s-M{b>u z53kum@Ac=l%7I34^8si4$V(dNh9clk3w3GZqn_&JO=gqI+)vVJ%2W~2p?|@ z_MJj}J@qYmb>AmK?p_bHkk;dIuE4`H3o6}bM8T4Q_B|)-^)F8X|DgvSjNiG9GjI4F z;CI%(D*NtD^VBF>9n_mgdhThT)JRLAp83|sdOa`sy;lIEod~zP8@tod!sO3C0J{g} zH{zd^%r%$;cfK55f9cG)cnJJA#s=MA<*s&9^EV{k>aM|rEPAQ9o;Eu-ZOLI&hcV#? ztUkY9KiThBOV(8nACN8-aQ&DYOJTAU^Yoz^R(rSLGc6b+cA}<9kyxWbXuW)k?!aNx z86@Gj7}wsv{!7VmRc~EkhIk-4Jx z1_P}!QU0T2PnOT{&%YfuN#9=v)G$bihZd@PJNSNW#!G5I14>sCTf0@?x}kgdyu(#e zvUUA?h@N!_w(3x2(T=n~QC@x?J7(c2k$Q{TXdDl}Rh}rID>X*ks`NIVDQ=vpjY4+t zlV6h!xWxb8bc$c2%k`l~b5U=1F8A1mu7Ouz9 z9g)0DcMfERjatG#F833NnPdGusMC>7=Kf50=KlE4GY6!z!DKYB!-_6VZUwD7dA*hx z+!m-%WHLi}wcm8xMi0GgPvI(OD47D_phucuiWm)ivwL+t*JUL)-Fw)i2yt0;OBcd$kIY0jpXb{3e9Fp=<%`e z^%#T8;Bk58h|Ff-u%m2_xwGMP^c~8Yref*i?WS_M8HKaG7Zveac-I5wQD(XaP-~P* z>Rr860Czou1jj~j;q}~b>&b4ns7y01ce2RsZEGdScZW+JmUJZoe}WmI&$_1MsUo0l zw`OiZ0O#T=n%*c7oEkOxn&%+4gJWS84M4n=ms?mDSzPQ(pxUSLHaUCwZ#6f6<<`dCC)G@V_$tsC7#j|}hty*wz$xG<=>P3JOZNJ?9W{kpiK zQ?eq`5C#o@{{!@zNK`QH({XOepJq8vaPn1r1JFtc@XLGpetX(WI+_qhrd&T>B7#lh zw+*FnF}pvzIp1}_1NXJl{Hv|Shrr41MmqtnTjBhMd#v9-81-2d7FO9+1#@!awpnnS z+(}(lJTr}{haYc{YEx!7ZMIyBa@XGI($JK4x6o8YfCSH3S#OA%4{;9UvHWQ=!AH<1fs!^t7x&~FQi<*K6(!E?lf*h#aHywwMzD)`HiqgL(4Fi zyW2FfQ@Vvd=j}QuST`HN2`;>ZHfcJm=^M?b4)C4iZkQusUrAh=KjBua=rDi%&s8m7 zUkY0Wno4X2+Lz$Zx^`Jp@k5wH>1Pu3obvV zZ!YDMF=A@={HfUQJ)-bIcm;{kq1_d1Uk{9)WwAlenQ0I$Gja>x!G;`Z}C6q^nCC&nKy%*gF?=+zo=g9b{>{wF8ib6z|6@v%cSW}5^*Dih>mict zDLyIh-_Q4=PV~u{S-iS{Ypl29Wje=cC8B24uLNaWF2apd)qvG0-R!*cgX0vv})Vgy_QN{IeR$uXM0erS`N+ZLBRVr5Pq9N&GPpPV?{I9z7;uqxmFCfvtL@aQ+a=zjIG`!>km#V6};|zhZqE#2yiQ6 z|NksN)Dt=ee1g&Fr+A{f-na&G?L2OYmcQ|#X{|JG%gDEmJrRNK5@$qZ_{Jkx_-RFEggTdsU2SsGHRF+f+w1o`b^>RFIEk5*uKgTaI* zL8qivnwZ)=H!>M_ z72g1#rjvooOB}7L8j+_HJ}s6c$Y3NTw zVrJIpo>eS7eoZNiswd*WVnO^ae%5BOnsK7Q*uA5X+4>82)%lzt)9LKtDzGX_e)qHEyba| z+`3dcjT8{~d~Bon&6Ut^l(vUKV;NQBk=Z8qCMJEghv%o4?400Mp#ZD?FNi=IE;Pw0qE zMx?C)0^pf;OH#wXAwpY<2?e(spl=cUC+ za*hu@E-NeD}sO7PCqFu8}$){T)Yd|O<&InoYWLJNju0GPC;<+L{c9k7VYzAx%Q zLuMOxtxcET_#qiy;K_sr;1LFqbhGYEB!P{r<@qJ#5WBCdnL#HH^SDwM>Gh1j{qhlg zuuE@J2QDow@?gECjW|0{S2P1ht7r;4J~MR?CM6Q}fYF6QlSxON>LyXZ zwI)A(qBNS!uNrOZdPt$I0gvSXOpCASPbEN*a0ZZ-3PTL9v9;}xm&*QT3aO;>+k|7% zFG&VV5877S>k9HMO~ui81D}&d5qtLjsod=oWyp?_{(O_WdUS#R4Dcj>U=EYz)1koy z!G^&{j;qrd71B6vtRDDX0U){oAA0&yl(#izN;-CsTN~;Yw{2r?Ht=lR4Jy)pnWTPy zcy5)F8vij^*y12fRyqj4iKjZ+M3Js)s@?QYD_JNmKs+2HgEpf(HR>8)91MGpt;c8Y zs*<9&I)NPo;vQ90y;!4oHtep7dl7e8M2CI-yaEhi}?Vs2Z~s&r7@u&t{K>!xg5E z`*N$46#K5cK}U++n{BU>+sstm{^oIHi57&kCKy>(I~r zyT(hB#%MWYttuJmUPt1Bzrd}-e6mAhm{hukN_pwA;>EEi^hC&zql z(An}l*|d(NocBvLxXpXm(#+2WBkLyKpcVi)@wdT$`v0=mqxKczVSx3!Q@54#-dBLG zT8vf7^rJ53!64+e`2FtA_@-QE3mq@-@ya`<+tMwulx*OJ!J{FqluVo*q59^BM7hG^tZhm>U~5M<4&f)~582_Z9WIPq7jITEya1CIXI8nz7>mka&-h zYT#j96R{m|3>F=V5dWJOL1(^y|fAsA8d zhsUga>V4@gG_&SHBgU(jusF4=?|OSki$eM{Q}T2QUtK_O?HFhWV|+BWOo2vbe24Q} z0E5NpFrT#=vekcfpPKtfx)&~(Q0qjBRXbt+ZWc~0VTo2TkhLw+>)!ctMU}kHc+6$+ zRy5m%mxv`qfYPuv6jAeZrew%2ad4nn<|1A9iN%p z$8BDul4MEEMl&<31;@N4OrthFZ4WrVp1&j9_#x{3v$7F4URp4?m)-XCob)Iq<#hh> zARgeKlsusoXtwr6Uo?D&4=jy?n8-5Bpa=6g#ty7lUTkqSlsogRa~)PobkQTa-et2^tf!Je4OL69na}{& z)hA|TErE=DPn~0*M&d(z2}N)=NIcR%P%KQY*A%j;Lu9){6JU5ngzh*-)mPa8Rk%k* z0goduvHyFGaWr` z%&HfaFqmBWKd-q4tQ)Y3w7(KJ)NCaG@fo%gM)U4Oe05Z++Gp$5S8Rh>M7JsaJ<|fH zB`ASP(j`A&Em})#ICLlJJ)o8qzAM)K+p{LVS}oU3FEaLbV*G0)9Szb*{>0g@E zG&vs{ezt3q3nG~RGtum2E!H+}1j*N@l;?Arq_NH2$n*^&^Qmx;WKl?7fVnt2{3K8+ zyx2G7qynI`b4paNn4UZdY`8yB?^T)W`!fTpB~6X@+pY**03+vMvjcQMqb z0Kw7q`(s`=CdcF_f3wt6n4L0o=4>-{zM&dfE2a#j^&L14@ebKT8HpUWxRvOVWmRseWqHhll4MIgpti^HUN5PQefPpX6Nu7&2bxHV}o z9)vzJMhZoxhf-3Sc4j;YtRB zqcfDy9*+_eYxB>B6a<@4A=?ni;m2c;(C37dHwv z>X`f=0|QUj|JlY82>C}TJ`>4ca?=>dy*zhZY?#K3+K3R`ZqU&>a~eKI?ABOG^t64t zfCvV<|6-m}{1Av0#Ovrl5tz$o83eE!#)N+wQIQA0ebdvK!IkAX^^3Tf1NQ@u7h5PL z#n(cMA%*J5TQhXzu3O0Ym~>2fB?83M?MMO7;yH9k?cG(q*z0R`vG>#v8@LEP9rA@f z+!dZ4%8JsT#Lv}#a7R?b?0YKLG)v~V9sZUX%!O6Tw2 zd=&9)CR&a==pi5SSEL?J|92sICw%a7V|j^m9RzstR!N>ZN6EPJFg~Bj=ik%uE3a%m z@0R`=TtP0*ne^P}UWePP1G;^lsE=3j5r$loQm@Esp?K8u8CSiEwVk(opO;{5`0Y#m z;_EdE{%2NBjA)Wh@ofl*uPhGml`k&ti?==BD4yP8V*$ORf1%1B6I``$xL{$N9<^lA9q5&tnQDdw9APqa)aLok{jgo;BW^rE z9rVUfs^LN|oSJK9lfN82Xa@8&KeZsH?WD`W@TKzt@1F(9zjiJxiJul!!5WXOQzCJ2 z!jo#>&BuW$qLeGa_aFV|vbkY$PSpB1Mb$S7#6g0Tx(P>)f!?jo!@dr+zRQnHIpr=F zQ24D@>RqFQG@$gRsG*YAR$2G#WIhi|N^rn76}2sS-gMVe;oys>Bj3;fFur5@6jjq$ zf)}!%k2d)&YB3|IzbudjHA>SmNtOJ1Ss?G-kw zBvtWQ9#c=K`YT2gBu`9gXc=nz*1)Fpl5-+F1GHk94y`o5j z{GE>xd%YOEV^=pA^&Rsm!ietTUtN7=rLRPm>1<<)j@VzVrtThU3cOCG8sT{%B{^$j zG+4bS)!_7LQaZG*vXy*#ZyS%`C6j#Q3o~XGfLs_3anCD4wT6v<={2*RhWKH@A~}`q zLB(}$j9;%ztINa&m5++#aJn_v`VR_iSx!J(|E6V?-nY6YfJ@7*8B%w4p|o#e#|%C@ z?Brf&>NOe*leRo>V`0&0_lcB=$T|HL@{Z*_EDrdcHnEW5S`)XjsZPNM|7CvHa;0;3 zr?gq0-AUa1%Z6BjaW#t5+MRPTaomjBCi1h#_IwOeXW^s_g`~$pEBn|2%=_!QpeQUW ze?lY)a?yM0F|rvOektkD{n`K+Qo2@3cD>)t`h=8-F>>y|3>Z2^yxZih+d3hfh|$4h z{&c>r`8;1*s_Er*<@&X6X)I&`N16bq+zQF=25p6wZG&JSO2|eTh1RvW#}p2Wm^;?w1mxzD))zYcI<8-R&+kMVbs+)B|SjgB7Oj4u|F=xz0pD%IbbFcccP!W$Z z>u14VbC?|_aG9bqvz;qhCjlhm2$E={J6xwH-O(Jl=X_<3`(Vs*r=)1+Z*SwoFJ*{U zU3q`~ju>!9KQl{MWyYw3o1I0e#f=;jtPkxNqpmIxeXcrYTb<&85^!*pChL|our_w@ zh&)wzu!~GKFTUu&`fhfvt5Yzhl&!8e)M-~Z7qluD^qKt4mM{*7v^6e=@cKXM3Y93-SkrBq-ZXY;GJa9H z`xA6O;r8rfDmO02_w*BFy`8kKUr>?MZ4fn;0@E!$kf%p^X-XNVdm-0@F2WY`{=yTj zvgx}s>}^n%7-Gw(?xQvZV?2Os-r<$;KyvoTN4DouR&R^mK^{<)W*w3RugF+Fpow{Q zL{3lJNL@gwNb$GbvHknc+h=yhhThLie(ze5F)6Rj!p>pI{dPH#N~@TN9$xTA%(wfK z`UHu0ngDKhb1G9@2DgQT=|B{|@|lL)@;Bd))k|-OCth0l$D((wjj|bw+iYF@wE9Dt z%DZ(fPpmW$T@a{;&&~RxWNViBJjHR+O@|co4b<&JvF?vgU&-6Pk@8n=pYXAYVL){Oa;x_WgB^k~Z*cB&{AT^_pzx8Ofl$ zuz7EHS5A==!szFD;G3$2_Bl83CjE{%95~>zu#N`(Oy|3TZ_>rvlMwf^n;_rRV+d^VKbq2ZtMXgXuY#qO)5sEkT}U5JJDb5n1Xfp(NRlN|B)Qx=R#IYT;}@4EvR>nlq?P!&$t06V@tfSh*V+SD*~1?>x#9Mv@$#%m0yY2% zV;-AZZ+4slDwFa2^k2N;b!i$)gz7lmo+TuEdJ%nBBA-JiLT+)i7{hXcO4pm0sY;Z2cO-AWmdYpb-tNdotYT;) zQ_2@?p#qiuCf5JVrY`CmEDwR#tb?u3!;=6M- zG3sbz2N0;x#v2()uKGH=zSIJi)XbPH-l`hM! zAY}yMwKe4=__UTWB3B|H+gU!?xS`1hG8^AHXj_h zs=4a%%rNK2QQf+KL*yh@bVLNl)Ju$nl@`H}Qf!5nsz+{Y8-s;-DeCxQ0xp?2loRJO zC6sOwYR|`CkWH6JX;}y8-JYkO|F?foVvGKrhOkU_j^+3Irhj$sL{)2#Hpp(hY+0&Z z=uWsQIFT#OpxQ4SKZYA_{HC&_iM*~yq7>J(*$gDj^$m@PXh)OB*q=v6=G&mNzr1^B zG1^D}dga|%Ia?r?O)=gdUBXYsBlb2c9%?iaTXl1lEbsm@qs4VH5~g^(cP?yoP$C1j ziw7@PMp|iuS<|ZTp~}yR383d66Z$ir6r1OnxWj?PEawGTMGyer&OH&nu$0 zOdrs&@;36%%xn}C)@y~sBV^{{fR9q~K#)!kzP8H=k+A>aVzfiVe61FnvEqBzj(>G| z9Z)o0+2cW!|tK|jzL&_>^eeey)qOWY7dQ9!EkA4Pw?FrtK{11X^c0BLKUgjW@HPK44A4)=KbJ*I zRl3+vw70>9?89P^idbeVvK`*6J8Zy7$164x>KbS3GXPaHQ@@~EqSLHbEKaCDi_nyRi89^Q%+w@$S&dO7A-`MZ4JE7_wS050U!3p1cjb=QjSRG)B32bj8pFfJ;sNpSVx-sBQ zdV^W|8xEFfi&f3q{7tD)QS|PJQ{+-1$DhsQ2c{5v(h6ME`%~U>NvFo>%devc<4S`{ z!!22T?qyLJoiKfxz{d)a`!fidIjk-g%;0HWee5ku92PdIq{yaXAW{@c#kWYHM)&VB zvBAME=C*InCe#8uGvSpv8RDEh>9p??MUq;`xA(jIIe0{}FK@C`QJ{iLB zFT*?ZMr_J5-`uB_{;8+1CJ=DjHKFFdp;Sg+@9w_#+r%Sg>T{5P2MB+ngD`yB410>G zs3i%*TCqhE_FV_76VP2^J7>_;(xOX=;BPI3kY3KaH5i~u2Y{2WZ29&XdQN;}YY^_o z_ncoN5w|!;8Gk{p30-T^cz~K)w&Y-j45wLVZD-pfVL>7xZpy6u>&ZQmp#Hqw7S{A=g%Ys zNve^U^=4eJ5@XP}ldz;f+9IsR4V5umdJXR5qI)ZYCc&Gj2?AN!e3qQ0N_Dfhn_iNZ z7K(`S*wSLz#@G0ljVk*D0`yub#E#u5C0%&(50v4hLa7Wx1p%F2Rk87?Mv^(N`HSzz7$h@SBgw}x z8~JyZ*9aOc=-nv^YVXcwq*AQ3H{TfG^@8B?Az-OLwIskXCndCmrM#@I>^B*+L$(&CkmB$jRp2h|!j#y^a$WL5f>G9HqW zb=ruF=guhsSz^tx9_QQ3Y5xrhmi3{H`R0+~^1F*KEiX6wpfpK%n5Nb4qoE3@m)Yo& zn`9WPhP15{<-hN?=~O74fJMmt8L4!RAO`gq@Zgc(BU)FKHMdzaYhLShjf_Jm&DNfj zf?cW1M_d2~9kg@9C*)Y9L`Ct9A{R)QxEDI`kL^=@+Sz(G3uM;iD9IVG2#4zF=D}AM z63?Z?EyoXbMXzSYHcDRRopDHbzu{jmDShh`B1=ar*P%cHs0qI#4NeDs^cRl;MV@6z z0KYxj@jxD(Pp0D=VgzJy5r<72JBPGe`5_KPB!D^-|2IEz-O(BKEg;cD9h1?mUyh~T za-OlmPj^(FDqm;un^QmqiGQtxWyQBoRGE3d`62xnq2xreh6%aJu4)GE@1I^Rps0+u z)FvuVh$qP0dTnv%S1w8i$ZzBeeenY^lFHO^^NBuHs$Z45VXWOVBxatp-y~PbOjG&e zi_UIgBv_D=hCFusdxG#H`mLz>_?F;FkwTYE2V=?iSC#7nGH{~f=nWrm%*OOO_vZ9^ zBTUi4&ZN0sPfbRhU8RC)ieaI9p`^TKwl8+!)PwcmwbziskJrCm=-eg02$5sgLmYZW zl;=e3eX?LW6MnPFb0e)FTU zYoNegO!(X2=l(#eH(qF!K%R86pUqF>fx>xtu9SjU%zxt}ZTxt2#P1j|+>znbxjv|# z*QQL3Y;rEw*;mx-@a$MP?M>1LHU{dxSOG_Qy zfkKjg^r)hMXE9fc(Di3Omm+2ue6!!_zyHeU*vEH}2L$dRxp8b{IrQ%+f1-O=kh|{E z@?_t!Z&dtwdYs25Z^xEXkyrlV$5wr^l8}`;FAPeYVmz0u!dbpO>)83zK6IYTtYT8>Gk6kn`^J|*&HPcEl(ayPZ+h&vvTQ8FVjfc@_ zI`#}WXALL6 zsPfsLyO_s27+N+DOT1_B3YZPR)Hyu(X8JzAJdS_@k#MJnU;vH3N-TVucklm-AMBV> zr;NNfIezElK#26;Pu2IMhHL7TsEW_UOU;L^qs zIym4|5qlqU5i}m86F=&Pw(1u6P6aqIYpDfBH!+B_uuYAR_zQ#RQu)u7B1?1`*Uh-r zsiA-La-5c&mR|cl=#{K0vYos5zEa>%EC?qyGHlus_|$%6y&TOMq`C$PTa77O*CPqSJ91)8afy-Q2lOuzkccq4yG^!Gfnr}eAO z^7T(`8y*|1Sl|qfEVp!hW2Qw;d>04KTZi{;dSrFZ)nLYwJsOfCM(;lBwD#t!q*cv) zpX8C454HJp6H6bo8C@NIg^}i=XNenEATu|p;ESBmI*MG28ZVrT8H($h%VhPME#VY} z)Koh(CdTKsx{$GiB}(7zjQVeDhG}~pXZXrU12(elb5`Y|{@kx~s^+(u?g2cgDbMkCw zM;U$XMa->;q~4$HozpBR7hB1=+}8 ziBxN(>o*o~WZaouc*MT-We|Zf+e)f8%LA$&xMiDwcV1Oe5Pfp!5zg@l@b;?-KK2Xi zgu}L8psTeET2^i=mP;5;0^iYF?I46a~)sSH<}sj8ExN@3K>q@Y;J=`Yu|Z4fjsGSufjrWQ+> zShVN;w|za;&TT3^r{{_&7;H@jfG_+ahWEZEkG={&M`iCDBt6%60bhM@2|x+M7YH`? z0c+Z*RE(l7Qa%D8m#6r~LrWN%?Xv0p$H$8_r)X^LL%2iO`XSsSBmhH%2ob_1PAJrDtvd0DARQ~)?SLNStJkBxy| zXbDak;k97YFDO-d0Lr{d<*J^a7K!;YlLE3uV0@M$xg5dllCs>9d0=XhVs=G5>yL#X zmTrS<8GVSV9LuQWRq3A|n|lQiD1!vavA9faZJ%Av5q#lb8y-JX#BDFi;QBpLT(vuf z?hXRN@&ncJe0>J@+eh#9;?Y<0LeuG$(0(hX0_i-xOP`rb5(u5>2o7x z6iWK!-C)0p1Xsx*gdm#}FrTrvJ$Bpra&>$#&v2yT`JsB}|H<*8uTp&W9ik8o8C=s8 z0I+i-Y9z5by(-_)VR3u?bD{TNh!7zZ2#Hc7galv+5e?%o)-Z~O@B$6g+y`enaL2|a z-Fwc?_7b-Dui&Y%Uc7VHoT03&;NJTW02T`o45wSMv&(pIWPhuG+XvHl@O-D^vb@5H zWNXC}$GG9I?JuA=UdHT7quj=fJM-Rk1(A@@Bh>^TW7)yVzk&0Od-CXRD_3=5616&c zDS*B8M5DCDnMRvWbO(fbVt$4~1WnFV60EjY(Eq0q97|;(YBBfp_5HWCvjtTc{j4(X_ zCCo32<)`yHZi@zZ)!xb$YDu=LKjlimSW=9n%)*vl@tiqLKdca5^J!5q>m0`$c0!St zrTKflz%F-qri^?En9ouqSAcZhUSJz{Ft+iQKB2Z9ltHinz?lirt1@dkr#N3kZR#`j zAe&DMSWt{x^Rh~1f)f{7F+5B0^HW7!(x1bN27#Ae*@DZrMG=<;n~(Ij9Nh)S|maC!p*yRNZwkr|+@2Wu0`ko)(h#@Q^i4!5-gfyiKJjFa2U^x2-7V!R>BEYkO8|^56JHPQ zH^T>S&f})RqS7;?;;A9&{KK;`+;K5Gw5X){J6~MDCm)GhB22myvc;{e{pI9iG8=`R zp7x&W%8G4>dKMMQJAEA3r1TJ?lxl>HEkrA_WIr0Hx_2YA-gYvtqltO(O0mompcUL5 z2NcmkWj2(`7@v=+JPMWQj#EIOYHqHI)G`4;P%ImH|7r2k-4Sf*W$1@m+nyX1C04gk z%dmZI1nRR1)#tS((<*m98BUH%{w-oy$UiGSpZ1_QtaF5W;uP-feuTsfG< zZC6Ec+m+(dhDq#J^x3_sh&AyTmJQDDqcAvow1U}1U?JnCv5Z ziEcOq5~)U+A9HUVD{$6c`!K72=R}j^o0Lx-P0nr&Pd}K8n#4#dMk? zm0^&7zQOstx}}dDaaW4GN@*EGy0`X?8?(6KqCD;!UW3tP zYqy-w9PPsGTe7C<`dcYJdi^|p?`P{=YN^DVFU_F4jpDx32`rj;fq8*$YkVi3zF_YR zCo@>>UEOhtZ@hj*lUi<>RF2@wC*zn|20r&x4FB>fHd`s>dDGq^KK*#ilu)6d$}OxF z&n&7+V-G(#eY)cKbzwo2mnpD`jP3*x$w$W4YYB5J1Pd8sz14WhZi1V3 z5CDS04)Xl-E5LXvilG@cS-iEMh{OS_&KofTA3HJ2HuHktmLD(@7Mh}IlhGL{mZy)O9Yo}R_4zY zfbkgtr^iLxTs9CvPls}=wB*G)o3?oK3=tv(2MB3rUeH)iHX%F$za&ZsYY1B~2-vr> z**So_5@qac*Y|w#+WSw!*Uoq1?UxvDPX>UC;w60I+8Mm#k&8Sj_kC9^;Lop^2LQZl z&mwO6ug#W7z{e)zn94+PQ9FYjQtjyb?TfQGbonyA_^i1HrWv|h1>ARM3O8-a0|dBf za}IC*VV`TcX4u-Ls;ADb#pz6Kq2y`~(9O)g@NajnU~9Lrr^~%36Udeb9yv>p&bHz& zZ_eSOHToJ})?dOsdrP?Qs2)K>tKV2U$<4E+vkaic)F%5k3iyL-wZx>}S%%|FQOq&6 zo=WJ7mqo8U#)7*ln^NR$IH^ixr=lM6{y-_F(^lNj2)0WEnfek12nZ;tZB5pC6pFbH zY*vz-EW$LkM3K(x1PPJJlH-%Fhk{&?CzF2t;R%tn&ar>xx8?w5n zu^EEpoHnwqTa?NKU;1SXuerJw-JUA>BUqU|ui04}xGWMewL}3p_dZicp_WkFwp-J4 zIj>K$UAn2Hej`%Vl~Ul`lz_CY2)U9R<4*T4}@X9c4hsDOIBsRG=t243OqMc+n$74Pl!!3szrC`d{PKMF57Z zNeCW605N=I*f|>=X6FDJk$(Wo`_DP#J?ab3_39IVszu^G+m=xlrtud~uEV0iqQeN? ztpfh@Wz)EEV^;CoH(oJ~S3a;&^e{BRCysREA8$-qD(_P_rce}subg&H0^YPKkNfUS zp}V!V;JNGK96oyE5RmF@j6o_qc&-&g3o$(Q z0+7y$*Y7*gia)+CubT$|{?GMA9Rje1k%cG#6=|oEx3jN|zIFkrjJ}+nIPmYk#XbvD zk7Udm$IijFZrOHS9sP!rF{CnTLG1bd=IymJ)AU+;XeMGD*;a(G5lMIvu( zUh*hpm)adyk`x3G&n%OXfSD4(impeZR_3Sf0rqc#mi(yLjQ~hxfJ0{@7)c3YfD#6_ z^@+A8vb^d#8U@bz(=BbnNHv8AAZn_}|HxQ8JI*oG{Z@wLqPbz2fi)__ zoey23V7cY3pn=MqYCm* z!ezY$eDeCF_=ib1{Pvj+%-A?w{j)cx@Wa>6V6fBPAzg!AW&D3Ho5zE{HK!o|B>e9K z%eZ^Dx-Q<{YqoZoyND$XqConEeH%*nz>UUzU_2eggD=D}JWDVu~3lMQy*8>2ma}=qad&{oBflzQj6zR2?A1F1p&4I%(`g z1!S@mFC_J!2lj6*R&`>IB`RQIR=|Sc{X@qNnzIR&x=qfNF}vKx&TF?U18nIl>9)ly z_q$}VLj(*GEnUR#gVvvLlg-c3gG{yRC@g@O-$n@efat-Ok5yjxZ$Ea4&FV5ADmC%!E@q=g?(!axM6bvH*Lz} zu8VaDE?HZB=A{cbyAZ`Q(~QuC9)P*MR@GOMIfA6d+r+=|)g7n!w>vYU2bhj-*%HC$ zkGCV81D+UBCRxl8{N#lgUUz9xkw=X`x~_olJj-q;0C;3XXDq1X{pk&P{OEKWj!r3U z)Ds7O`aiPRe-Skte=KB+#)-G~8rYtS-hTkFz&Zm^YCBmI-m=47r?JH-=BuuW#_hj< zlX2f51Q?!;VRA`-%=W}}wsA_fq!hpN;w--X46_8qU+;N|fPZ{lZObil>oo;VT!`V= zSQJAuWsEQA6Z)N%vmDjicBLQK?Wg?hD~BSu>5`h8AZ7HCTP`i&6L+`b&%R|oFZZ-l zyyw<3-hY?YYjtxE@c8>FF8`oi(nJoEKDkyonic5MC?TYc4C} ztp`e?C!7q~62U{~T5#u1*~(be55|`w7)cqo{9!EmUJCq;sX8HA;RFCU8FAMU2;tPtIL+lk+EYYw;Wj^e%F zY{6(Mf{~;$!Ty0V{@e9sy!DzgdfJ7m+11$IFW@t8B6!c&j9w<_4`Q?1%3#G?N<)gG zawePr4D>IS6d!*>7B}rK;m^L_fst7y=_Hr3b)A5(zIzGX3Dx#v8AJAqV^Pd5N3m=W zf%y1nOEmz98d7>}Kq5IyTy z=L<^TGWiH*4aluMTMF9tmVr`WE*-&q#@-o#;y6$efC};-z{DKEV%~Te$&Y0d+E`(%bn5frTXVSMUNwnOllhq^TJf)U96ndlJ^K$J=rMXvB6+A* zyv)oZO@HR$DBgdEF;Ptb?Actx&)!>OUmrOWMRy$7zl9ORr;~wtb`@~#&H@e(>l3|~Z!T)Q z?5fd*DR3cWVe+RGpk>ic>b9-aCbekaOK;ESf-?F#w0$I#w|;ZF^NI}a*q6oa`?Bat zC?hM2!r5h9qxR5Oc_C5&Z@e~(PyWb(7ocr~6vFC8*#7(>Y!jzo%$AKwY&53UR?*zG z3t@(^{Tm5(&jAd=`%gl?7{z-Y+lYH#I)Q6@ZFujo;DDUEcQk>+$rc>Hkig_p3#|0( z>6I9M>xb*{y*pxf@LxULh6mql?BV#5twmh3C62>m?CaloHj2N$ zouIwNp0^z9+Tn>793F4MmFpQg$?}XZMUXNGwy~|xyz!*~6vkbpa@9hcWsBN{yi&Hl zH=q-2lLBDdwDbPW%#@~i?|mYHp_v#)QUaczG43<_H=B^E6c}5m5U_a_+oi%^KhT0# zyhy-RTV-R>!Z^D5lCpWb$@^3)ickHd1K9$>+BNWn0NgiF5QDVn=%v|qUD3~|8j|%W zl@WK9Jei!fuiboUQRzJfh|!~E1mg1(Q6!h;FH^(|-3f}%{cgINU-HP5>-^^HGI-N< z8F@BC<)vu2*#g0rABtf)M=&z4Bmh}ro*O54@eb|$Y%~;r8j1BMccgL8aKEls^)T8w98_VJPvXUG~}is4hIYUJOENq^4&8|*4OtBVJDPE2bTh2MDHvhv(N zMme85){bn6;Hgpe)?YaudLf1>3(|tpN`@FQ*n&UQ_L(I z8!%G>ie>#Y-ExOTon+%nF$~QZ2RT9Is^+{thRkF}A_TMxbHe!L<{ic|$14QcEHg+3 z!PY*;&ny_3(yX6WuHXAa0*BAFAe|HN*b4=NekBn_=CZAN00O{k|22+``ixU6W6WZj z!)IFY@gJ-~wm@)XjN;gYg?u(|NQwX>l&xEB+qLW?XJZ&2BKs%;t_T9M3@5jD2A&ZFwsHXOx*~_cz5?U{VE_S?mO*JPu!uYug(BF8DiDkm$ReAk_|*4Xku4A$ zJl}2@07SwMkG6`;r7B03ZNKL_t*U zNIPbhfyZ7b=^gJ?m6yy!#k1q8)l$}P|3;Mnh90%U_sz#?kA=YBNt2)gS|ZRGHIG8V z_{cl}0bM(1OIEfi8t70W3i9uVr;3(>7VIC8Z86oscq)pKd1LQC33JQ9YyPDTOt-Wab)K9u9=M4&M z@{tj7SN(b8HA_s{gMB4q!V3aYm6Jr4^ZHA*>o3VLi9|W6HpleRGe%d!Jc@HN9l=6Q zEBnqXR`8uaoWPb|Er}>arG_9Qo+}?J2+XvEYSSt|0{S`xyks}q)&Q^1|IPXg+?Z%? z3pID`Lf8ivX8;DX!7+eR!kwBn5gIInci^cvSv?2PwfCQkNCGNINp_Bi{II|hJt40l)WMxo2ukYOxI5{q=Ty=S>;?GZS_6 ze)xPV?mrzzI!E!N(*kl9x_T-@3_Sp?oQ;>vL@~7_^-%%>s%xYDtY90eK9S5saXw}4 zxxdqmO?6u>|fuki$TaV7vd0FGO(f6A6qjM62Xqnz5y{ zhFSp%`|FIIOpzd8v@$`8nIAn9!Cn87!2Q3M!_Ez|xy8!ZWTZKKwiOQ^izB%#lI0H# zQKT}^CS>TszGAFIx8A!IYaFODy^Xe1dRSV|SS+(^^v7TALOut)?%F&OCQ;?haD1c% zU;bqR*@EQBZ7%}zUwoqrU;JP5q8@q&C03xW%flzyFfs|mqEzE?xTU{X@oZzuq7Z|3 z05J64lb<2TQg3)NhIG#UQg5KIpovgSRbS>9k2w1V^7!)GCn~xr&wZ3negwcoDuOdp zQH&)cNa}EReOA>iG8;Ul!An9RpsRjS?R4)!qW^vCY864;? zVqdSdsKP89pO4|_LJN+iV#rn&X@}0oF)|;kEZX$Ovb%9E<=$!`0uQ#^5As1i)~J`=-xZ!DpM<=ja{`=s+l zRV&y2VtOm82|EUPtk-LL66Sp=l_4k;B`H#Y4p7lEBQqh(;#>8PFRNl`Hip-Ip$&g= zTM4hcyo7}MoJLidfLM*g;OIEDv=!M6_OUzwRr=W?0b!he zcv4(KEUNnX&AZLdm;L$aHeJ#4*$Dp6x4QAOlX={8Z3egQDcU9i4-d8C@K6heDmp%T zHi40O`%9jmo@&P*e2L=EU%iB#8?DXN!;>*Q_;eeFCSzF6M-Y!uEUWtVU|-RYP$U3S zOThS|K4E#|t}Nu|^fB!z2q@SXS5^Ib#g{?yz%g>NGFyybVp01Rh8QI+?f*Y&klujPCckG;^1GqVXC-ME6a9R&=;%ebz$h=EG9zMUP) zg-=!>;(2@oNEQgjb5R^yY(cVe=GJmPf@i1Nabc+yxuW;CyXAZYkDTqm@N66QZpvY> ztB74)W$f=MqQ8|Q5v3SVMGa0BB1l%YQjKRK7)r-5v=pt9e#<$66H{%NSd1da2)5uC z9-U}KPp5^pcVb3Oo?1D{Tog-{h5IdoMSS+xZ5ZsO=v$-JC0mN%&}0j;C4xuKnxFfp zD8C}^b5FHkV-LaQ>qS- z#dtb`W79DVrNl>^!{-GI%?L8R2}TxxH+-WVzk8K{1Y?XQv$A?JhSI%HNAS#r2rgNt z>MJVM7qe7#k=@qEE)e|vucEl@B7HB}WG0GaMm`qxU{eu0*OwJ!;P^rW;|oz7yU>DT<6^s{ za{`_mDdAkQ4D$}IyngTDD4sk|4ebR;=Q!FMJQE87{_f`l4?o|5m+ls@>!K3&50uc~ zDQ-2CBefDiayf$W`6z~_V;Gu>R?i+Bo&lbnqL|OvDqe(x@&4#g3?F+SfdguC)C~;u zkb-!qJ=Fg5@dOr4&iyQy+!vN}1m8Q+hNBZPT>o?d*X}A}*TxbC`pX#T*G@p=$tcE? zQ4CGSFnl3aC6~_5wcx~58tyDt>4o}7~G#SO= z=WE2)@e6T0H1RDz2Ni!f1zBTbtKp;i4r=mFU9;Gg;8 zU&9a~yvHX_t;7CJE!e%zcq?$dy#LggO1EMv-HNpx1#IXn;JL*d*0fo7S(#gD!G*;Z zOs88IXAbGi04^to$)y-3m)2liM+qCcO4!j~z?wGei{IJhC@w6q6Qc`GcWWoLOqY)mzKJEIVyF2OK&d#mq9`w9)?l(HL&t5ySdU{WNWD zKxdq)&KFeT*(r+2C4z@9ieu+`{loK4UJx)mOLe39{_-rvQa*+~o3w;)?d&*pYl?r} zdnAfo>m#`N665o=v}7rJEAaQ8jo{I95xo9@@fO8GS>3iYo`>*wCp@qEDv21CfI9R9w0qzw@hXE`fJE0oFvXJ=b5l8WK+^CfKQ5wNAl+zW3xM{qXT zf^+k&j)_0D9*>`I$HZa`2cORy-eZ>Y5xkIW#hJOb%8Mj+`Hv07adfl|uesd#ezlO* zU#5+wV)&0oI&sZbOVzN2&-|EWzi)Pn8J*|DY%A|#R`j|mmYwu} z_I2enVK1*<8uL^}^N8E>%~AZ60RcdO;}bD_?(uf~`@xLjcL3;&N6;OQDB2}c02Xr; z>6{=-YUNSZB0)%4DeaSswJXYNeeDF@aUiDR97`pF#T-SZ2;>x7v{@w>>BIJbV(Frr z&*U0Wd~q(*$ZGo8^(1pDm&oizO z-9I$HJJLh9IODP`>!D+NGntmgo=Ly4XAj2j#G)P+erNt=VO~~VvDqe!$;W-4CkD4G z2lqa`d=~DBruRLgYnmqT`2Ne7la1tY>;XvN)kAF4pbjQk9jy>#Emwy{J%z?(&Dvi4 z^^JTnf_x!@`KlL!Q=&-^-q$%-j38G;E#L@)fYO%8i|vi{U|-`!b1z}1PPrm5vEYB- zBLHYMi&vWlLT8!=AI=v9*tgS@oVNDKNGeK{_jA{$&fVbdDmO(%>2t)yW%6>}n$dsnT7G!WOQpGCvARH6~=!Lg3Mt7iUI-mzT6Un~++ zCTXl`D0_8myGq2-M-u^QbbB^u@zLL$G)!}7xCP0Tw#s?RK(O`=%i^XiOJbUT?A4`)&2Lr*;MXW2 z0T?(Ma6%0cqM6YU!=xdU^cZFY3=eRpQ84wfwqUnsZJw?f!#Jk{xwf)+O#;e@K%dbg zIqDejfa41hjbv{9n9Yng1=LE=SSxUg3%*w5^QAO zU=jCRy=Y73tM)G8yYD`a?u7o?kJ&;551nem*n-9LlzC~EIwCYd2)+<+Q`qmeeR@)z%F zYrY*=Ri^X|>r)roze%>W*I+AfDq|&ruL$eppLJ>a68-Z2b1lU-JYTLf#rlVrN`!hy z_}R%0yzZ(c?FHE!^|!B|#=e09zW!u44xV8XcHN0G?%12go35G14LkHB5lguL$vCnF zg3-k~MblcPsDF0zf#>0)y|S=A|u- z^$1SOU`ldVijCYBlJe36bm57DMnc^5Ju~GP*A+iG$gh*m9tj92h(K5@#v*zWsvj66 z;LvOgB~4UfHtdmqX6Xp?tE2ojbNcQ%$N8Gel6szb$$IX;%QYIOK5R|@`4|040#Ii@ zdeb%Yc+)lW0DzMdaV*NtQ|wL%*t02XO$`bhKHG}JXIgM{qEEK{*AFzShf=_01y)=W z+b~23573|4LNu-`=yfY4^?uRa*dbCFJou11+v ztk;1LFF+k>wnW+^0byCRiv9DD4BWrjTDpa-wJ;{$k$=jh-YMK1ekcvgIWTr_Y1 z^oRU2lj@WAA2Cf~OAG6AoDyq<{g-Jynwh9Hn&F61GQZWZdeNF_PxN;tE|M2NH-1}GpEBP3XUFbzg@M1aJxX->JLhy+C_405mn;|3seL!P&1wYYT z1JVAX#@kXuG&+K9ONYzd0KtnMMrZ^bIfrEv`b9uECx-N{>rgB%%8;icrktHoUR~DD z5-~`yf0K@Q)nYxJ(=vcHk#=fell=2#Nc!2of)UXO@VAQQrdjP`uU-U3`_+B1 zkwU1I66|Oprgg8ky$5g2`G0CqU}%>8{@B?IGMnV7ZgO6||C+jdia0R12V0efcyx2w>u{>%oPnoQ$G8<(+v zYY7Lo6tQz-8HpBafrEypVi=l=Vt6u!p=oisnp|navB@4JSK7e8{jHBYha$a}zG@L# zZg-&P;A#-Ct$1k~H{hxcN@e)+ z0`!sugbi(!M4+9Vb}=#!{LN3I_`U1RTmj2I6Mw37j>$h4n)vGdXFr)MaJ9&Bh`{R* zOo2Z3-~gf2BVUZ-sj(gm&vxLcksP-7Wzf-9LZX#oOP~1iV4$yzL@PzMKro&XqxfcI z-zA)!>c-4+yh8lh(<4y$Tr?jo9i$dvSz%f3%W|(3A0y98G!+5J)%qob=P+&GumjW? z4cq{ZRk!H@E!7F zsSm?uZaet*$FqhSu>P`!pvgb|G{oq-B{lu>9BjS?2T;#i8Bw#uC>bZ;YubvY6MLenu3nne!2JQ16(Z8)rv-zo(l-@vKLx{yE*XY(3H zN;W5C06pI7Yq``wNI)r%^i7%9>!IY>tIeV`({#GzpBLr1 zy>67!x%Z!OPV2;>SBp~Lxlqe!aMIM=-PE0EzfIsW`i@8jstG+d0c%Lk2MQi^@DA2$ z(_D295yCB+ZA5So1vtnlzFFVYgk=R%RdcECMzE(NPc`yj$;Qbw z^UL1DXClcUiFs~k#E^CoZin!4Y7e6L5X~=6CCQ)AoJeCywwku~RX>+I^3FXM69f_J z5lq>kM!DAL^FL48>wy;?-Rr?iO{}BwGdenu3dd!w#@4rly1!g%zOpzV07LMO za6;l2{*e#O3SR0QtRBu6&^(|)JU(2i!ck2ez^I4Wc5l*6=q*ib9Ad#u8O}*SyJ?MN zn3ICm$Ud+1agf#(`De2%mt|;ETFlEF9t|?*1r4sM-so*)Fn0wCUTnpS9znu+omZo^ z_(uH+rN%GIfACZrPY6JsD%A7{ja>%>WOUOv^vw!y>)iN{G|jC?aJ6gn1)4K>^-{nw zq2Z!T@ADcmNY?T@)WJOo=(WAAQ-I!=X(xT{t2^?~IE^96X6at+XTSAEt{eK?o1Fg0 z@fOW|pJ;Ub`GEIUT#fBwb}#n0tW}J<)P8lFydmL$0BqJl+?-{3;p1SZwB{_!9|T?l zTLm`0eVYYdE#kaI11_4Fo;DT}@^Z~Gq2!`{d}zM$VdGM85`5>QId>3A}P6TO2Z z{~Twvn8gj*=F0$dk-*|LO)`$>QN7f48fsp>wBZH8y*#oDUi1hOHtHO(d77g&!gX(m zU}1mV!bT+QP9YQsJA@?=#^6+H0Zs5e|HB5n8o|_R_}g z9w^NgQx*st*KS|#NI;_D#+=xL$UeNljZUg|^_l!LO`~ONP4jy@Gx;z^EY-=XROfIl zho>%IfqhR5|0?0KnJpILa{-pQaff<%u0ApRGdOTKIDCh-S2C1`C3BTm@@T>{IddkeaQE*;V^Ig zXA_?0Poq|BSNWR2XZ)R_=_N!eDB~+C0;7z ztsc&$@nR1pxbg3B!wboUIJ)LGbt8iq{OSJ!Q7gsG2(!(8*plu(nbp$@-4j$*e#SQ< zkOydqKl6DcX!6gCvfT7NH|_1$-NE9#(o9{|23!%q9!TR0gz-)Pm-@h&9=vGpJ$R`Z zFM2d9nw6ulUY2RfRoVqZ55N$CA-w%sfCEp25J8~<+Qsify6Xz33n=qz>=gc$Xa8C~ z;D+t>j?gf>ZhygP#hu6x5>UUFv8Vk;CjuGz6Dzf<2l*FJpY!3WakhH&AD-q-p04?a zV4AuS=Aux?AmA$!6!lGJV%INz<0lKil!p~xfnooQKC6JC_nJ0&VgIfR)G$* z^Poa?eS_=+;h}NvsT=rPxYPwcR@E!fUOmg25+J@3bw)WEd0nW|7$l%^S^_Y(1y`@w zET>-3(UrhtyRSU2)pD$)2!i~x0cN+a&lohD7XqEj>Mf@chL&e=ct7ylMuhpb4vKgI z59bV5uu*b=?dxxGjnF^5Mw8c>gX(dhg6A+G0GpLiYSyy+1)nwHQ!9VLOP%Ya2Xk@E zJNVJjnI`@aNV+-sF_&}rQipmFxHZ-$*!S7?NEv_15YzZW0$L;j8-fhfC;hx9{-pF) zQdnzW_wci?+RLltG<}>C7+-aM@U*yQ15YFfUuJHEeiRs^Wg?%Kmg7Z_Ai-aq{nw~j zITZfd(r<9(0l50i?+~^P6%HalKp5ZZi~8$fec=@Z-0RU?H`Acul(2HR=;aE*)ZGfK z(j|UL*U!mxhq58t%*(}z0=m>JYt~; z|K~z`a~^Xh(5R?AeUw@3s+MF#3-V-a^wKE~p$d;7_CvIFaqgC+lL^i3vb>Jv$4p&$DLALNF& zD?ZTh!NvT#Z+Z#;OS3bR)*sEbBC!IWwBf6gbwuM6n_fzdcr7r57ij!WT36KV0oX3Q z)5D#l=Cg-?@ZdqR&einFo5Bkiau*E`-iTOl2nYL89FTmr28?||M>kDfNkA!&Ju1yQ zA?N}!*~B*KCl}zPV5_OTBLA$HXz4mLsTX}(FSWaI9{jR}w|UZI=v2YKnl+%U&4!Cz zA>4u&9YZ~o;P#=sVGHG@Wt$!@o@=-|15g1=_2HW+Yy1Jgr+w=_Z3SW$UV2Y`^w5?X zpdOBk;`HI#clfd3uy@TGJw*)uG@=mf>lqZypiSfr$!Gs^y_aoXQ6N@HK&vIVA-*KdlZXS(Xrfv@K$tA2-NEY&e01S=q zFB;pv&a`jrI-5aLyE@;@Tnh?Z|GHDcK9;~~-?ze(gy4!ywnUVeNgz%&FwWsVAc&O` zZ4f|~2o5_sxg}oQ5v)!=_0rcK>1m-XPsu-t#-^d7q8DGJJ%s zuFVyi?3shbsVG(XZmmaDpP=Do`SxU3?!$qTf96Sj z8#9*bYJ8omd!^|dV{bn8>N(AJ?tuD%HOUUIHFW@xMyMMvI)-{E5$drz(7g7IG-KuX zsu5q>1cTLB=SF~ey9Cp6&HO-Sammtj?)zcw91EUxFgI^k-I5SqG>8u* zpoQ1S_PhZl9lYv*YC_H{*?!5D%eIrlLY``ppvgbCecRr3`+d#nb;A7WzFgjJf;`=) zg0mY>w?Ljq=wR*Qe`(fAsC#d)i~*%6TGz(W)C=&^dO=#<^es?e2u_7y?aR>?;5u}y zMuzRRVH4EZHvD?yZ5NGT`%p*!i{f}OM+z0wDG z(Ci$-hjtItMq$782Eo|Myp+}0X12+NCO}hE!Zu6@z~GItx|)IG+WMv%FRXsu6{x^F zJ^ZUteQafqWAInU`t}y1MJg}-*d26h;mfm#`9r!_gqv+X!flzhi8A-)y0D79s|`g0 z@^jiUue3S_3g>_4(Ix-Na@0SV|VjVzsIvpMy< zC$dkY!+Bk7^-&MVKWF5y74pw50cXZA_(^OT)z3MdUiW*lg}Q{-VDb#n%;2crx~eq7 z^N-ncf;UCfQ@-os>(bR4orHG+KDDYRTo8cTf$g7pS7XERQfFTDXl^)N9`OqI1cP_r z<$b3=5}ku5T^a}WAG&RG6Sm6q6CS>hagfWqV=IW}FXz-nCAVcx%c(b@s=S68t?qOd zb6U(_O=hP&ugE_uCDr>L;+A}L3cpCnMj8kFqxr2_XQJ6P8sYFJZ)YTbz>5`m(IZHN zb>>xSl>l6gO=KUek>M)121|QA=J@-c<{Ep(MOo&S(%M2I zv!%3~S`w4)?1cpxGA!25OpZH!iOno-i9o3^9tlBj^s+_#Ng0%1>|~Oa=@e#jxfRLw z2s&-ocQ<~`D0m$;%u+i~>8e{Bjc9j75SRBjo~8h&u-wIhCGvQ@_tzJpj@H2oPr!>k zoT0IKf`H)iM&Q#HV2>KX{%U8HfR{RldMHch#U4fo?qSzCIC*OuxFM|9+vqRrGI@g0 zqR<1fH8A+4Prd4CfuJx^jiztfr#W$wn7JNP9#fPQSN2#51-({G(Mdg|rqe$7oY@Ulj6pQ^qfvj5i;_18c| zs7L+a>07bDAXjO1p8;snIQH6(mzMTd4^Q6m28vJ*>)=mEd)xvqeV-$k7|_`wn4<^$ zy1>O7URPw9jZ_v1GOr(}{djBZ-FblQbnIUo5KA_R1@DMJxgJKJpygO8#imSa1BqD@ zQ;bPE6D17DKkvyoultJGsIybBRch6o)O1SBHqyN%=zFVvZ*Mjd(|?VL!JpPgLH)p| zR!TI2j{G6;zF#+Z$U^W^B~$pLXdMW^AT3_!)^+r-8X`#W(K7X3fcqqw593zQEQ<#Y zLAhJ1nhItNbz+L0%vB@Q^U8W9-G1H6?_5L!4O z{)pm>jf`f$=>KY%&N2CCvmEtbM0?#VznikXl^vX1!uX~w!n{l_?``2Di%T@f^PnSD z{L$a9(OEA9H}c(r7d`5Lx>vpK3iyf&0oZ(%Y@EUE0ye8)`@z&V6Pdp1^|Tll34G0N zO}>wXcqZE68|DDvTnq2t$a}`itR^(UHemPfgP2QN*RVED?U8_v@|&jModlGncR&Qn z$-riVvUX00KfrNY82(~Mu2I%ANsW5KfqHlZ6Fmt$5dzZU2gubcBEF3Sjp1oXzX z6-f^HFG+@+4CHzKA=QsdZL3+G$nc{*t#oRy$Umb07tvm~Uxv3m$Us}$LiBTcq_akh z`F(-kdz#O3c%Eo>Hkken9_sC13&8~(doub3zsmGju0>+Z+LG5E31~mR%QPO5fOda1moFm% zU6H^15Q1#N&xJ;=h(9Tx*)Qf-bkiA-e^zK~TV*jXxgVRxDa`8X=gS4&}%&weR#1FFM0%t#;LPQ0?_PXzZnq@a3y%rqY)5{ zt+*oLIqDwHRq>uwR4m0fvXK^k5URXAh#EcEyLsp|qLAF&JI!7<@YA9E($BC}0wDoi z5P@z)Fytx!^GLL&6g~RUWl0J#9@tg&tA2W`a?P`NV{1G5*8^tyxg!U??yu@^+5$MZ z&-i|gV_1ItS;aPUq-LY9HXEUBc+s(W_3-j}yIH`#g}JMwe3q2rh4SFVg8u4Z zU3z2KgAXl@7PCHT=$U8}vZIj^xcb%~UM(-eOuXm3s-o|53=1$?r25r}4I?mr^6d9@ZTEFQ zCM`b&c|N7NVNdHpLz_^l={X5bD18OGHErWf-47T4$~SGB;607)UZNSb>6|d|=8@A13Fx*A6I#O&38PK=}>I$nA8nbX?C*GcAyo5>Jh~}5ziVsGB zN8m*dBh*1hznA8XV0Hk0Dq5!~z`@>x0Zsyy8r)2?}xO# zNsh_@!;7bxeR{Wv3W$m@Nt%xxIQrTc|LQXniAm=P?hp|{baC3?^waz?VBG?;mU}73 zO)6P1Hqvc6cM@%~fM-EM46}`~FPJ3YqTglCsNH+IPdi4Z^ZV!RVS8NcWlbP@E#CST zk$-v*$!B!mLz*+gMnE@VEGPdm-pNSlp(7x-X!Y^m?6y1Obf4VW{!D!Acm;er2BXFw zPXu7E1*x~D-hv0Z&`NymCrIQY$Hq7<`ir>Js+eu*G>Oij`Kcn|8{3C8xvFL^38w)j z8L&^}Rahk8rr+ghjo;Q*#}R?=a>n&xhnO_AhiTxR_}lwmqXQZG^EVNd^1wdh^1y%g z>j)^JeMmh>mb=cqOA%Ekv>i}6cZYG3oqV(AVe|8%P9#XDHM)ZT@{J93Uh2I*)#&1# ze|CWH0PJG;2R(7Z{^-K=?@;tASIXq?^@?pztE$j{ZJ95lFlp{z(#k~w?s`q0y)q4M z-J*;{5^zbipkO%hBlYb0bq(dp#>C|nXVJwN4 zd$;$$JGixUA!&`d>yg_>uT2Slk@zeH*7bPQ8tw=IqFgE@decqxn3bu6dp0N$+=2flWj#4hU@V+Z#R_y+<3 zm~hx3`Ef?*B;R`@a*<@COU(&>+`*UBoj!XmvJ>lk@AuNkwPso*25HcblJ3#ElZYkE zAZZ~MfDH2Er`N7%e}CX0k0vd0Yev$<{K>L)-71gQ>U(;)?1{=H?AtW*Pbp3f>D*Pl z`%k`Wa?4qTHiBU+-u2q8Q(n|7pQ?nPKH~W+GsIA|rfroI_GA|uKX$yD;J4#K07jKu zwLlWD4D~^Zlw$jQ+s{ruuC%%|*0-Gi^4uD^!)!{UIrKx^Sy+zFBFrvik&o)Lw_{^r zVr?=nAIue`K@OV)#AUwrw-SL^k9(uSe`EXbwTVgo2_s<<VB!2n@+2gdj;T@oB(lnbNeGOGwJr<0^D#Nn&SkI^|jIe zsv8d~Ei{vM^uxVgxn)^J=V3%a`?h^aj;rTPg}W~#n#?NKI~F4XZ~_q~0l{{h_SESJ zqK4mk2?hM+09Fx!J>wh~@?7JHzp;FH?ae0tBvK8Lg`GdycSY^v@ehG64H@f<+%$<7 z3A9A6IL8X$XU~k73Hg^*eT+t@COrG7LvQOI_}GZ!Z`e^t0R9aJkodVyVp}v_8Y7b7zHRXCDA`6q#fOV9v+D6Aq>Lh;2z4>Quy5>-txAuE1eC}Li~jd9 z9%Adc*PRGKY(6o>-_N-9!}rE?@{e}6$9(jcw+s2PZ%lsEqkx-@E+BX);DaM zo z7EWTas6lw#cKJ0qKsNa&pE-fvBJn2rL3@*1HQSsJBVq(`pwkN*D3Ek$*~CK=Q9w z`))*49GB&~C8)&gB4{zG7@#7H=S>BD4mTu|A+vb|W)1L+pbj0QW-oM~kAeWyO(kyP z-Cg?i)yKvzcI+@-{x@yIr4(S7&z|LIfy|_7 zq#h=L?jkLnUCeH;qLP^;AgT{doJB^+EPF1DO$N?JMG%A>`MMDdU%x%I>9709Z%6Xa z`*;7Cqt=3?h(fW1$_nk`gAl*1ax3m^;e4#SMdUhnfIXM9osk%S_E@E6XN94ao#ch$ zVaB=_&r9wXtIY))L~ukDK=$J!+oQE-z$(CUjSv?e|jt znmZCf7g?ql>#w$n?E(5XMb5nI*(Bhjr^plq5`lVp%&VCVyKRiw=!riq_2=Dlwd9|4 zsB&VE{X8r5PtT|o5~&#=m#XJkgf#~^2*zpLWcDwpBS6MI9s2e4bv`R{!onokD5^QZ zS30a_^e6rX;5n}^;Ke{4n!VbgMj+`yo_^ky6VbL9al#fULd?g2D-abU$a~Q`c0!W* z39H2@60vFLE&mD$2t@x7BJf#;PR@*Yiy{Ykx>#0Ph(A5`cN_9g0h)h?$BOkxbKIUt zVS31a?z-jHJ5MWYeTnIudDQ1P0iaJRFRzc6qYi!;yVqcD?T}44?wEr@TU2e`K$^!$iW4NV%sMuv+~&30%T`vhR7C=6 zEQDAjx1POlKS{PD>?}Wa@Fcy;n>;Oy)4%Jlg8cJn-1J!P+1)dFu?fX;gzC;WYk~He zWAMLTD)aw(zLC&&JCji-ORf|$UB zp|=Mg7%%^GN@)QsOy^ik%Ox9uWu{q9hM#D8%&wqekvkgrDFv2Xb2IWbJLy5q5d2G2+h_ZJ>{E15y^{&5lUpx7S^z+23^^-dC57TLv zqKG$YC7#*>j-V8|p%TF_&uSlaj0TqHkl9cenl~qT4@R9h3wWv6F}r4gf_T+HqD_03 zwZ7V+dL~0PEDHf*#yZxc z*Hu&kQp4u8k)bXanB>Kk1oRgII#OyN)KMA{_%62tDVSl4m-y4#)Svv5dr9P2P`r3) z;(s$SUQk8G`KYl^5-wuSzW4wAnvwzhY1H{l4~ zaU8v;wp7Uv@(fjM?&{^T|LoK>4qRIz$R&MS&EEm+F?YGG0()Cyto8Y4-6OKF^r-R{ zt-N-X@2+fyFglI|T#wX}Pr7wh5rNadF!medL)iI&|m$TJC5 zq@KpEMH3*y_Hu=P-&~GJHTkFLqa*(?@nJELNglQtTOc>%M^k^nrN^VVBXZ=;N!Hg@6XYfacC*7ftQx1cXrzTwGf za8bfK74{5ntXTFiyqs<>FdYP~ru~;#BPPKBl_APlw~|S~x9&U=Q0LIc2rm)%-1wIx zv)}_I@n<{r0p#DNFDmoBk2)Go2QbLLO`q@L1c?szc3aoy0j3id_U^y8UbOq9f{@%r zWsW`FaT0ndt^q~dP@{`%_T?ma#>#^YM#UD|Ld z2f=WeiJ4-Y7if}?TBwL*q?rT4z6>PF2UTM+*>-{|x*fqp#^os{38?4?lYluyAXM0j zT;E?J13}WS74i2oMtJu3UOt2T)1xMK;brfM_X+=g6i3zk4VDdVl0#WRnns;B#zwhs z{W`6%+m>|?jUFV&ixU4KRH(Ul2c>ajnuOceLNI+%3wMtyv$xsquTE{=-lw8j?MYRcYk$sNo(H^^s6~T!09w)8u@CeQ0!Rs$ zg+AJxA6RI*HCyDDO~INjFHNdQE&|VlNoUuwk~n8EEtUi-7FE=7ItjQR$sv5OkxE($ zBEH@Uw9bK9VXI*}9@@|5JCOKMlYdyhKI9)_M)XI2BlrDH?x0_Z6)_?{Ur}?us2n3Y zN8%S8W9SBsIml-sFW1grid|+zB@2RZ!sb2KMgsv@{7L{M&>bxzB)1^Gomds&KUHYP4&IskG=L|+O2~8Gm5@+)y0X-_GNTZGeHhotnA%?LFYN+%Rf{& zH?O)Q`g`@WC$2bs-s9zePAQHKVS|%2>PL{@0jR3%iqPJ`FEq$?nhB?%=gjClzZiTX z79Mel70bUPV-Bjs+BmbQTz#vfA`$8+7a$&#jphiO6nK8shy4P3KBqdg4u%y?>X|}Jkz6@lS zHyX6Y6nJ*6&+T^GfRW<#>^j6gaDnvPgH4!x_ubWQmli8AxRz=$@c^E% zHAl00MUANXhKanh*yL{j_Hg?i+>M_<<6TLlv?em=N|hKG44Q6fm03;aP>15=%CUI6 zM?827_n@)cW^w_FaAjZ%-0ogZWVVNpfN$JLHzM#M;hE@iF5ZfOV~~WAvcDB@NWU+q zLF*WB+1>|}f7Ckw@&lR3QWIrTwAqZ8*)*v`!?Bp$tA=xl!#@v&tJ-?iVHlc`aN7z% zH79p&xix-KQFn4KoPg-`_UFN)$0_bVLqxsuJE#Cf$_}LsA$W$!%1TAQ&mVfyY9-j zVwcG&ttoL~|23Tf&&%tvAprXuAGSe+p>EHN%P%)X?co(QB)Z<8H0}!Th)XfAjg`3a z2)8KIUuJL-=rYGMIB={%G>>4DcDY?XewFBoezmR2f=N#wDEq$gFMB#BhD5SS<5Ogn zh?`Fw@pswE;ypW)g7-a+{2NFwFToZaa~-0Y_moOhR83P+vf}wrx7-f5Zr^6h2b#4h zV-ebxdh@lvX6tK*I6#*PDy0A?_8Tn&+A?L4$<_5B6%FZ%EPDaENlwvX1!HqlthM3G-0+tiIalOgBhjw|41JI1C> zsil*DIYf98TqXd6$y3yevl$TZ5n$`90y*%MkY^z2AhvUp?-eIotAKVsdVpmXZF*sT z+GV5x=R`#|I0R?Nb^XC`#aPw4IQ1IlR`7aX;-zkZ|pC_&R3+#&%e~rk$r#`-Ypp3C<2FM#@5r0}``!&o* z1(9t@IZ1}jnB35wv)cA&-U`Jb5{VZ5000W-Nkla2WHNi$b46#aDTD@Li(0c{8Z<;gi>=6utKR%cZT~1V*La;@jFaP_JuF1|S?6 z*n*GDOsmidvPnQ~-|zktt_HKr>(hKP@I0`5gi*WmA%;Dr=xd^gT;v}K138^!axMF) zh<5|=UQ&s2=ncE?*7J#5wofj*Mgg%FbZ}Ew^5|`obRJ54bmm#da_~O(3-18zW9S++ zHoCQr%P(dvomL6A1(>&UVx9cb4O#hTy$&03W;Vx@=Z86Az>ld7r){prQZUFiZ-Iz#DHre-&&$V8q|$IF4zHTi1L48uCwn&R5Mo z@(+QRfRmz!%|>PxuB1R|dZn@4D8wm#4cCW3=kB}(#pY)DG|QYj-ekNv`AOLO`SH@_IzCSVYVcBlDoq~h?kAoh(rU#l{VseJkuqZsH zze?lcrc63ZDg!-Lm0V;rP~|3L z)5b#kJo*@wejI7^4{T>iO?3tOh%fr+1^ue9Kj+(B+$F{f!qb74icp)=M=f03 z!iXzaX0d2*`GjjogA7z8v^<^oIn_yWjYaq>Sg%y%dI`4Zb_7U~*qH>B_5OzFzt<+gnnAW9&ahckw321|vuub>}5ACE4z-P5OWT21eL>uQa! zUm|dFmhoFTizGvAu>4d3w_)1rcerOB`n{H7j!}VG28TZF@$!^yr$r|dA=f9gQ zW1Tmi(6c`GSX_~0o!#=&PWgEQ-?(Ez1D_Gy*kDC|;fXGnHs{3Z{IZLjomOjwhmF8H z02@yRGR+a_8c+R!1_3_MM``X)TxXUlUXtWd+D*qU1dr*jq2>gg!LfYcliOzOU~V-j z9kdm3_+^hLhMtlS8V!9cOy5Us_mZ(eHS38P9|<&;e2p#{t|ryGL+7I{@yA$mISWTln zuJ{+_1C+ec>-86n*0IiZ(X;^li-O~xB;bY!RO|hbXd`JNi9j0}_?K@dy&smnf1f0* zv2x51vZkw!^+Uv#>$9XYol5=%$8-tewOwhS=N2&UMAcZGUWZNFp*gYBSM||$!WV$V8Bp{$08c-CeGZa{G;^#z0otZr^8MT?Q1B7Ben)_n zo^f=lMjD9}K(bOSQSZZB-kQmQwA*|_Bm&)J;QOeP zVx|_hd5WZ83Gw$Br=P{!Q_H?c3u-q){=q%{xLA2<($5^n3#1xi_P5onISbU z-rYYhz0Vxq(7<$_2?y6z4c6fm4SW)Ynz_LQV4izrN1VIV6U%i~nO1rkYHi65y1F*3 zWHz+TvrSMYh>V4G5luVq(z4dITvc0?PTg20k>zRi!AY>%_ZHBmIuj%zNdEoYEnOrBwdWl!S zXpdO$kj}4>KvC-z#d_XSe|45F0e6;2z})uF8thxFo2Lwv`uu8u7D`VvAlk7eZ9!`% zbo}RKe67ATU22%m( z%nm$Pn^M7;3JtoK#b%;jl_+ftM~613dtjZPkN>v9`DJmF!npPf8q@U<&3Fya0sm|S z-vQWoQtl$A@!UeOyOQqbuNGFfFk**@VBc-hWBTjj37|!(lL+5mudtPrmfpItyUW!J z2D!$u0a5F-6QSV-;r^WW+fy`}DjX+!{`Iu3Ba2uXUnm*q-*GDf4*6lq@LRs^z+4-X z9PRr|C%p}X##M^`EbhBxk$*@7BmU~|m)B=)<88h0QJghe^|bq)nSac7@k_7naFpx{JJ4wMYvrOKU2s9(~Y9&urfO_xA@i#A(|me@8n zZK6yN8T(1pfz2^5-fT3vVxXe;rE5@f4y+B$@9H@@+fzOYjO*}}gjgwby`$~=uKo7* zZ(^8ZFF%HR2qOmB^d#q*44jA^lb;;aXj^K1>A>`eZ!hRR?)#$;Rljbu6E#4;?>vD+ zEFt!LDJx9ve`)^am34^WBH#cX_NPRzphuV-yYfORt z4{%!l1mPE=3>?BOc-J*`? zk@qP_%T-p6%{;j^`J{Qzx_X~3C!0L$dBgU!DhlVV4+o36%`XzFTGcxM^Oiu~2%WY= zjxE^XuqTdA#O~7^blOxcaZ-Q=&ji(M+&^KdpNU8!=$(v>+Y#Pk%2`Z8Fxa?QJ2Qa> z_Bo3L)Y$M$$#fwCpXH6O%ew=Wq#)Ze6ee3Poug*qUu(StIu=bgLdwpM$(<>Ae6emPvW#CS#rv^nR{ iX_sSnNRGu?E&l^<7ZA)BPJMd-0000^c-Ri=rqc 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 a5%X`!50>64ZUi&Q)bJr=28ZZdtoc7lZNXOn literal 0 HcmV?d00001 diff --git a/Website/index.html b/Website/index.html new file mode 100644 index 0000000..884a5f0 --- /dev/null +++ b/Website/index.html @@ -0,0 +1,220 @@ + + + + + + VCC Listing + + + + +
+
+ {{~ if listingInfo.BannerImage; ~}} +
+ {{~ end; ~}} +

+ {{~ listingInfo.Name ~}} +

+ {{~ if listingInfo.Description; ~}} +
{{ listingInfo.Description }}
+ {{~ end; ~}} +
+ {{~ if listingInfo.Author.Email; ~}} + + {{ listingInfo.Author.Email }} + + {{~ end; ~}} + + {{~ if listingInfo.InfoLink.Url ~}} + + {{~ end; ~}} +
+
+
+ + + Add to VCC + + + + + Copy + + + How to add a listing to your VCC + + + + + + +
+ +
+ +
+ + + + + + + Name + + + Type + + + + + {{~ for package in packages ~}} + + +
+
{{ package.DisplayName }}
+
{{ package.Description }}
+
{{ package.Name }}
+
+
+ + {{ package.Type }} + + + Add to VCC + + + + + + + + + + + +
+ {{~ end ~}} +
+
+ {{~ if listingInfo.InfoLink.Url ~}} + + {{~ end; ~}} +
+ + + \ No newline at end of file diff --git a/Website/styles.css b/Website/styles.css new file mode 100644 index 0000000..ce999b0 --- /dev/null +++ b/Website/styles.css @@ -0,0 +1,356 @@ +:root { + color-scheme: light dark; +} + +* { + box-sizing: border-box; +} + +body { + padding: 0; + margin: 0; + min-width: 100vw; + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + color: var(--neutral-foreground-rest); +} + +.hidden { + display: none !important; +} + +.row { + display: flex; + flex-direction: row; +} + +.col { + display: flex; + flex-direction: column; +} + +.content { + max-width: 1000px; + width: 100%; + margin: 0 auto; +} + +.align-items-center { + align-items: center; +} + +.justify-content-between { + justify-content: space-between; +} + +.justify-content-end { + justify-content: flex-end; +} + +h1 { + margin-bottom: 0.5rem; +} + +.caption1 { + font-size: 1rem; + color: var(--neutral-foreground-hover); +} + +.caption2 { + font-size: 0.8rem; + margin-top: 0.25rem; + color: var(--neutral-foreground-rest); +} + +.packages { + margin: 0.5rem 0 1rem 0; + max-width: 90%; + padding: 0.25rem; + display: flex; + flex: 1; +} + +#packageGrid { + overflow-y: auto; + width: 100%; + max-height: 40rem; +} + +.packages .packageName { + font-size: 1.1rem; + font-weight: 600; + margin: 0.25rem 0; +} + +.searchBlock { + margin-top: 1rem; + width: 100%; + max-width: 90%; +} + +.searchBlock .root { + width: 100%; +} + +#searchInput { + width: 100%; +} + +.vccUrlField { + min-width: 450px; + max-width: 90%; + flex-grow:1; +} + +#addListingToVccHelp { + z-index: 11; +} + +#packageInfoModal { + z-index: 10; +} + +#rowMoreMenu { + top: 0; + left: 0; + position: absolute; + z-index: 10; +} + +#rowMoreMenu a { + display: block; + text-decoration: none; + color: var(--neutral-foreground-rest); +} + +.bannerImage { + aspect-ratio: 5 / 1; + border-radius: 6px; + max-width: 90%; + width: 100%; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + margin-bottom: 0.25rem; +} + +.badge { + border-radius: 4px; + padding: 0.25rem 0.5rem; + background-color: var(--neutral-fill-hover); +} + +.m-0 { + margin: 0; +} + +.m-1 { + margin: 0.25rem; +} + +.m-2 { + margin: 0.5rem; +} + +.m-3 { + margin: 0.75rem; +} + +.m-4 { + margin: 1rem; +} + +.m-5 { + margin: 2rem; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mt-5 { + margin-top: 2rem; +} + +.mb-1 { + margin-bottom: 0.25rem; +} + +.mb-2 { + margin-bottom: 0.5rem; +} + +.mb-3 { + margin-bottom: 0.75rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.mb-5 { + margin-bottom: 2rem; +} + +.ms-1 { + margin-left: 0.25rem; +} + +.ms-2 { + margin-left: 0.5rem; +} + +.ms-3 { + margin-left: 0.75rem; +} + +.ms-4 { + margin-left: 1rem; +} + +.ms-5 { + margin-left: 2rem; +} + +.me-1 { + margin-right: 0.25rem; +} + +.me-2 { + margin-right: 0.5rem; +} + +.me-3 { + margin-right: 0.75rem; +} + +.me-4 { + margin-right: 1rem; +} + +.me-5 { + margin-right: 2rem; +} + +.p-1 { + padding: 0.25rem; +} + +.p-2 { + padding: 0.5rem; +} + +.p-3 { + padding: 0.75rem; +} + +.p-4 { + padding: 1rem; +} + +.p-5 { + padding: 2rem; +} + +.pt-1 { + padding-top: 0.25rem; +} + +.pt-2 { + padding-top: 0.5rem; +} + +.pt-3 { + padding-top: 0.75rem; +} + +.pt-4 { + padding-top: 1rem; +} + +.pt-5 { + padding-top: 2rem; +} + +.pb-1 { + padding-bottom: 0.25rem; +} + +.pb-2 { + padding-bottom: 0.5rem; +} + +.pb-3 { + padding-bottom: 0.75rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + +.pb-5 { + padding-bottom: 2rem; +} + +.ps-1 { + padding-left: 0.25rem; +} + +.ps-2 { + padding-left: 0.5rem; +} + +.ps-3 { + padding-left: 0.75rem; +} + +.ps-4 { + padding-left: 1rem; +} + +.ps-5 { + padding-left: 2rem; +} + +.pe-1 { + padding-right: 0.25rem; +} + +.pe-2 { + padding-right: 0.5rem; +} + +.pe-3 { + padding-right: 0.75rem; +} + +.pe-4 { + padding-right: 1rem; +} + +.pe-5 { + padding-right: 2rem; +} + +.w-100 { + width: 100%; +} + +.flex-1 { + flex: 1; +} \ No newline at end of file diff --git a/source.json b/source.json new file mode 100644 index 0000000..47772cc --- /dev/null +++ b/source.json @@ -0,0 +1,28 @@ +{ + "name":"Example Listing", + "id":"com.vrchat.example-listing", + "url":"https://vrchat-community.github.io/template-package-listing/index.json", + "author":{ + "email":"developer@vrchat.com", + "name":"VRChat", + "url":"https://hello.vrchat.com" + }, + "description":"Example listing of VRChat packages", + "infoLink":{ + "url":"http://github.com/vrchat-community/template-package-listing", + "text":"View on GitHub" + }, + "bannerUrl":"banner.png", + "githubRepos":[ + "vrchat-community/clientsim" + ], + "packages":[ + { + "name":"com.vrchat.udonsharp", + "releases":[ + "https://github.com/vrchat-community/UdonSharp/releases/download/1.1.7/com.vrchat.UdonSharp.zip", + "https://github.com/vrchat-community/UdonSharp/releases/download/1.1.6/com.vrchat.UdonSharp-1.1.6.zip" + ] + } + ] +}