pax_global_header00006660000000000000000000000064146531203640014516gustar00rootroot0000000000000052 comment=bfbee17932ff24009008aa94cdd75c0c41f59279 hugo-0.131.0/000077500000000000000000000000001465312036400126225ustar00rootroot00000000000000hugo-0.131.0/.circleci/000077500000000000000000000000001465312036400144555ustar00rootroot00000000000000hugo-0.131.0/.circleci/config.yml000066400000000000000000000060561465312036400164540ustar00rootroot00000000000000parameters: # v2: 11m. defaults: &defaults resource_class: large docker: - image: bepsays/ci-hugoreleaser:1.22200.20501 environment: &buildenv GOMODCACHE: /root/project/gomodcache version: 2 jobs: prepare_release: <<: *defaults environment: &buildenv GOMODCACHE: /root/project/gomodcache steps: - &remote-docker setup_remote_docker: version: 20.10.14 - checkout: path: hugo - &git-config run: command: | git config --global user.email "bjorn.erik.pedersen+hugoreleaser@gmail.com" git config --global user.name "hugoreleaser" - run: command: | cd hugo go mod download go run -tags release main.go release --step 1 - save_cache: key: git-sha-{{ .Revision }} paths: - hugo - gomodcache build_container1: <<: [*defaults] environment: <<: [*buildenv] steps: - &restore-cache restore_cache: key: git-sha-{{ .Revision }} - run: no_output_timeout: 20m command: | mkdir -p /tmp/files/dist1 cd hugo hugoreleaser build -paths "builds/container1/**" -workers 3 -dist /tmp/files/dist1 -chunks $CIRCLE_NODE_TOTAL -chunk-index $CIRCLE_NODE_INDEX - &persist-workspace persist_to_workspace: root: /tmp/files paths: - dist1 - dist2 parallelism: 7 build_container2: <<: [*defaults] environment: <<: [*buildenv] docker: - image: bepsays/ci-hugoreleaser-linux-arm64:1.22200.20501 steps: - *restore-cache - &attach-workspace attach_workspace: at: /tmp/workspace - run: command: | mkdir -p /tmp/files/dist2 cd hugo hugoreleaser build -paths "builds/container2/**" -workers 1 -dist /tmp/files/dist2 - *persist-workspace archive_and_release: <<: [*defaults] environment: <<: [*buildenv] steps: - *restore-cache - *attach-workspace - *git-config - run: name: Add github.com to known hosts command: ssh-keyscan github.com >> ~/.ssh/known_hosts - run: command: | cp -a /tmp/workspace/dist1/. ./hugo/dist cp -a /tmp/workspace/dist2/. ./hugo/dist - run: command: | cd hugo hugoreleaser archive hugoreleaser release go run -tags release main.go release --step 2 workflows: version: 2 release: jobs: - prepare_release: filters: branches: only: /release-.*/ - build_container1: requires: - prepare_release - build_container2: requires: - prepare_release - archive_and_release: context: org-global requires: - build_container1 - build_container2 hugo-0.131.0/.dockerignore000066400000000000000000000001011465312036400152660ustar00rootroot00000000000000*.md *.log *.txt .git .github .circleci docs examples Dockerfile hugo-0.131.0/.gitattributes000066400000000000000000000002401465312036400155110ustar00rootroot00000000000000# Text files have auto line endings * text=auto # Go source files always have LF line endings *.go text eol=lf # SVG files should not be modified *.svg -text hugo-0.131.0/.github/000077500000000000000000000000001465312036400141625ustar00rootroot00000000000000hugo-0.131.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001465312036400163455ustar00rootroot00000000000000hugo-0.131.0/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000010031465312036400210310ustar00rootroot00000000000000--- name: 'Bug report' labels: 'Bug, NeedsTriage' assignees: '' about: Create a report to help us improve --- ### What version of Hugo are you using (`hugo version`)?
$ hugo version

### Does this issue reproduce with the latest release? hugo-0.131.0/.github/ISSUE_TEMPLATE/config.yml000066400000000000000000000005511465312036400203360ustar00rootroot00000000000000blank_issues_enabled: false contact_links: - name: SUPPORT, ISSUES and TROUBLESHOOTING url: https://discourse.gohugo.io/ about: Please DO NOT use Github for support requests. Please visit https://discourse.gohugo.io for support! You will be helped much faster there. If you ignore this request your issue might be closed with a discourse label. hugo-0.131.0/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000004301465312036400220670ustar00rootroot00000000000000--- name: Proposal about: Propose a new feature for Hugo title: '' labels: 'Proposal, NeedsTriage' assignees: '' --- hugo-0.131.0/.github/SUPPORT.md000066400000000000000000000003121465312036400156540ustar00rootroot00000000000000### Asking Support Questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. hugo-0.131.0/.github/dependabot.yml000066400000000000000000000003561465312036400170160ustar00rootroot00000000000000# See https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#package-ecosystem version: 2 updates: - package-ecosystem: "gomod" directory: "/" schedule: interval: "daily" hugo-0.131.0/.github/workflows/000077500000000000000000000000001465312036400162175ustar00rootroot00000000000000hugo-0.131.0/.github/workflows/stale.yml000066400000000000000000000047201465312036400200550ustar00rootroot00000000000000name: 'Close stale and lock closed issues and PRs' on: workflow_dispatch: schedule: - cron: '30 1 * * *' permissions: contents: read jobs: stale: permissions: issues: write pull-requests: write runs-on: ubuntu-latest steps: - uses: dessant/lock-threads@08e671be8ac8944d0e132aa71d0ae8ccfb347675 with: issue-inactive-days: 21 add-issue-labels: 'Outdated' issue-comment: > This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. pr-comment: > This pull request has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. - uses: actions/stale@04a1828bc18ada028d85a0252a47cd2963a91abe with: operations-per-run: 999 days-before-issue-stale: 365 days-before-pr-stale: 365 days-before-issue-close: 56 days-before-pr-close: 56 stale-issue-message: > This issue has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help. If this is a **bug** and you can still reproduce this error on the master branch, please reply with all of the information you have about it in order to keep the issue open. If this is a **feature request**, and you feel that it is still relevant and valuable, please tell us why. This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions. stale-pr-message: This PR has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help. Please check https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#code-contribution and verify that this code contribution fits with the description. If yes, tell is in a comment. This PR will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions. stale-issue-label: 'Stale' exempt-issue-labels: 'Keep,Security' stale-pr-label: 'Stale' exempt-pr-labels: 'Keep,Security' hugo-0.131.0/.github/workflows/test.yml000066400000000000000000000117201465312036400177220ustar00rootroot00000000000000on: push: branches: [master] pull_request: name: Test env: GOPROXY: https://proxy.golang.org GO111MODULE: on SASS_VERSION: 1.63.2 DART_SASS_SHA_LINUX: 3ea33c95ad5c35fda6e9a0956199eef38a398f496cfb8750e02479d7d1dd42af DART_SASS_SHA_MACOS: 11c70f259836b250b44a9cb57fed70e030f21f45069b467d371685855f1eb4f0 DART_SASS_SHA_WINDOWS: cd8cd36a619dd8e27f93d3186c52d70eb7d69472aa6c85f5094b29693e773f64 permissions: contents: read jobs: test: strategy: matrix: go-version: [1.21.x, 1.22.x] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - if: matrix.os == 'ubuntu-latest' name: Free Disk Space (Ubuntu) uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be with: # this might remove tools that are actually needed, # if set to "true" but frees about 6 GB tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - name: Checkout code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 - name: Install Go uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 with: go-version: ${{ matrix.go-version }} check-latest: true cache: true cache-dependency-path: | **/go.sum **/go.mod - name: Install Ruby uses: ruby/setup-ruby@5f19ec79cedfadb78ab837f95b87734d0003c899 with: ruby-version: "2.7" bundler-cache: true # - name: Install Python uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d with: python-version: "3.x" - name: Install Mage run: go install github.com/magefile/mage@v1.15.0 - name: Install asciidoctor uses: reitzig/actions-asciidoctor@03fcc74cd74880b697950c4930c9ec8a67c69ecc - name: Install docutils run: | pip install docutils rst2html --version - if: matrix.os == 'ubuntu-latest' name: Install pandoc on Linux run: | sudo apt-get update -y sudo apt-get install -y pandoc - if: matrix.os == 'macos-latest' run: | brew install pandoc - if: matrix.os == 'windows-latest' run: | choco install pandoc - run: pandoc -v - if: matrix.os == 'windows-latest' run: | choco install mingw - if: matrix.os == 'ubuntu-latest' name: Install dart-sass Linux run: | echo "Install Dart Sass version ${SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-linux-x64.tar.gz"; echo "${DART_SASS_SHA_LINUX} dart-sass-${SASS_VERSION}-linux-x64.tar.gz" | sha256sum -c; tar -xvf "dart-sass-${SASS_VERSION}-linux-x64.tar.gz"; echo "$GOBIN" echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH - if: matrix.os == 'macos-latest' name: Install dart-sass MacOS run: | echo "Install Dart Sass version ${SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${SASS_VERSION}/dart-sass-${SASS_VERSION}-macos-x64.tar.gz"; echo "${DART_SASS_SHA_MACOS} dart-sass-${SASS_VERSION}-macos-x64.tar.gz" | shasum -a 256 -c; tar -xvf "dart-sass-${SASS_VERSION}-macos-x64.tar.gz"; echo "$GITHUB_WORKSPACE/dart-sass/" >> $GITHUB_PATH - if: matrix.os == 'windows-latest' name: Install dart-sass Windows run: | echo "Install Dart Sass version ${env:SASS_VERSION} ..." curl -LJO "https://github.com/sass/dart-sass/releases/download/${env:SASS_VERSION}/dart-sass-${env:SASS_VERSION}-windows-x64.zip"; Expand-Archive -Path "dart-sass-${env:SASS_VERSION}-windows-x64.zip" -DestinationPath .; echo "$env:GITHUB_WORKSPACE/dart-sass/" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf-8 -Append - if: matrix.os == 'ubuntu-latest' name: Install staticcheck run: go install honnef.co/go/tools/cmd/staticcheck@latest - if: matrix.os == 'ubuntu-latest' name: Run staticcheck run: staticcheck ./... - if: matrix.os != 'windows-latest' name: Check run: | sass --version; mage -v check; env: HUGO_BUILD_TAGS: extended - if: matrix.os == 'windows-latest' # See issue #11052. We limit the build to regular test (no -race flag) on Windows for now. name: Test run: | mage -v test; env: HUGO_BUILD_TAGS: extended - name: Build tags run: | go install -tags extended,nodeploy - if: matrix.os == 'ubuntu-latest' name: Build for dragonfly run: | go install env: GOARCH: amd64 GOOS: dragonfly hugo-0.131.0/.gitignore000066400000000000000000000000211465312036400146030ustar00rootroot00000000000000 *.test imports.*hugo-0.131.0/.gitmodules000066400000000000000000000000001465312036400147650ustar00rootroot00000000000000hugo-0.131.0/.mailmap000066400000000000000000000002421465312036400142410ustar00rootroot00000000000000spf13 Steve Francia bep Bjørn Erik Pedersen hugo-0.131.0/CONTRIBUTING.md000066400000000000000000000206211465312036400150540ustar00rootroot00000000000000>**Note:** We would apprecitate if you hold on with any big refactorings (like renaming deprecated Go packages), mainly because of potential for extra merge work for future coming in in the near future. # Contributing to Hugo We welcome contributions to Hugo of any kind including documentation, themes, organization, tutorials, blog posts, bug reports, issues, feature requests, feature implementations, pull requests, answering questions on the forum, helping to manage issues, etc. The Hugo community and maintainers are [very active](https://github.com/gohugoio/hugo/pulse/monthly) and helpful, and the project benefits greatly from this activity. We created a [step by step guide](https://gohugo.io/tutorials/how-to-contribute-to-hugo/) if you're unfamiliar with GitHub or contributing to open source projects in general. *Note that this repository only contains the actual source code of Hugo. For **only** documentation-related pull requests / issues please refer to the [hugoDocs](https://github.com/gohugoio/hugoDocs) repository.* *Changes to the codebase **and** related documentation, e.g. for a new feature, should still use a single pull request.* ## Table of Contents * [Asking Support Questions](#asking-support-questions) * [Reporting Issues](#reporting-issues) * [Submitting Patches](#submitting-patches) * [Code Contribution Guidelines](#code-contribution-guidelines) * [Git Commit Message Guidelines](#git-commit-message-guidelines) * [Fetching the Sources From GitHub](#fetching-the-sources-from-github) * [Building Hugo with Your Changes](#building-hugo-with-your-changes) ## Asking Support Questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. ## Reporting Issues If you believe you have found a defect in Hugo or its documentation, use the GitHub issue tracker to report the problem to the Hugo maintainers. If you're not sure if it's a bug or not, start by asking in the [discussion forum](https://discourse.gohugo.io). When reporting the issue, please provide the version of Hugo in use (`hugo version`) and your operating system. - [Hugo Issues · gohugoio/hugo](https://github.com/gohugoio/hugo/issues) - [Hugo Documentation Issues · gohugoio/hugoDocs](https://github.com/gohugoio/hugoDocs/issues) - [Hugo Website Theme Issues · gohugoio/hugoThemesSite](https://github.com/gohugoio/hugoThemesSite/issues) ## Code Contribution Hugo has become a fully featured static site generator, so any new functionality must: * be useful to many. * fit naturally into _what Hugo does best._ * strive not to break existing sites. * close or update an open [Hugo issue](https://github.com/gohugoio/hugo/issues) If it is of some complexity, the contributor is expected to maintain and support the new feature in the future (answer questions on the forum, fix any bugs etc.). Any non-trivial code change needs to update an open [issue](https://github.com/gohugoio/hugo/issues). A non-trivial code change without an issue reference with one of the labels `bug` or `enhancement` will not be merged. Note that we do not accept new features that require [CGO](https://github.com/golang/go/wiki/cgo). We have one exception to this rule which is LibSASS. **Bug fixes are, of course, always welcome.** ## Submitting Patches The Hugo project welcomes all contributors and contributions regardless of skill or experience level. If you are interested in helping with the project, we will help you with your contribution. ### Code Contribution Guidelines Because we want to create the best possible product for our users and the best contribution experience for our developers, we have a set of guidelines which ensure that all contributions are acceptable. The guidelines are not intended as a filter or barrier to participation. If you are unfamiliar with the contribution process, the Hugo team will help you and teach you how to bring your contribution in accordance with the guidelines. To make the contribution process as seamless as possible, we ask for the following: * Go ahead and fork the project and make your changes. We encourage pull requests to allow for review and discussion of code changes. * When you’re ready to create a pull request, be sure to: * Sign the [CLA](https://cla-assistant.io/gohugoio/hugo). * Have test cases for the new code. If you have questions about how to do this, please ask in your pull request. * Run `go fmt`. * Add documentation if you are adding new features or changing functionality. The docs site lives in `/docs`. * Squash your commits into a single commit. `git rebase -i`. It’s okay to force update your pull request with `git push -f`. * Ensure that `mage check` succeeds. [Travis CI](https://travis-ci.org/gohugoio/hugo) (Windows, Linux and macOS) will fail the build if `mage check` fails. * Follow the **Git Commit Message Guidelines** below. ### Git Commit Message Guidelines This [blog article](https://cbea.ms/git-commit/) is a good resource for learning how to write good commit messages, the most important part being that each commit message should have a title/subject in imperative mood starting with a capital letter and no trailing period: *"js: Return error when option x is not set"*, **NOT** *"returning some error."* Most title/subjects should have a lower-cased prefix with a colon and one whitespace. The prefix can be: * The name of the package where (most of) the changes are made (e.g. `media: Add text/calendar`) * If the package name is deeply nested/long, try to shorten it from the left side, e.g. `markup/goldmark` is OK, `resources/resource_transformers/js` can be shortened to `js`. * If this commit touches several packages with a common functional topic, use that as a prefix, e.g. `errors: Resolve correct line numbers`) * If this commit touches many packages without a common functional topic, prefix with `all:` (e.g. `all: Reformat Go code`) * If this is a documentation update, prefix with `docs:`. * If nothing of the above applies, just leave the prefix out. Also, if your commit references one or more GitHub issues, always end your commit message body with *See #1234* or *Fixes #1234*. Replace *1234* with the GitHub issue ID. The last example will close the issue when the commit is merged into *master*. An example: ```text tpl: Add custom index function Add a custom index template function that deviates from the stdlib simply by not returning an "index out of range" error if an array, slice or string index is out of range. Instead, we just return nil values. This should help make the new default function more useful for Hugo users. Fixes #1949 ``` ### Fetching the Sources From GitHub Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build. The easiest is to clone Hugo in a directory outside of `GOPATH`, as in the following example: ```bash mkdir $HOME/src cd $HOME/src git clone https://github.com/gohugoio/hugo.git cd hugo go install ``` For some convenient build and test targets, you also will want to install Mage: ```bash go install github.com/magefile/mage ``` Now, to make a change to Hugo's source: 1. Create a new branch for your changes (the branch name is arbitrary): ```bash git checkout -b iss1234 ``` 1. After making your changes, commit them to your new branch: ```bash git commit -a -v ``` 1. Fork Hugo in GitHub. 1. Add your fork as a new remote (the remote name, "fork" in this example, is arbitrary): ```bash git remote add fork git@github.com:USERNAME/hugo.git ``` 1. Push the changes to your new remote: ```bash git push --set-upstream fork iss1234 ``` 1. You're now ready to submit a PR based upon the new branch in your forked repository. ### Building Hugo with Your Changes Hugo uses [mage](https://github.com/magefile/mage) to sync vendor dependencies, build Hugo, run the test suite and other things. You must run mage from the Hugo directory. ```bash cd $HOME/go/src/github.com/gohugoio/hugo ``` To build Hugo: ```bash mage hugo ``` To install hugo in `$HOME/go/bin`: ```bash mage install ``` To run the tests: ```bash mage hugoRace mage -v check ``` To list all available commands along with descriptions: ```bash mage -l ``` **Note:** From Hugo 0.43 we have added a build tag, `extended` that adds **SCSS support**. This needs a C compiler installed to build. You can enable this when building by: ```bash HUGO_BUILD_TAGS=extended mage install ```` hugo-0.131.0/Dockerfile000077500000000000000000000021061465312036400146160ustar00rootroot00000000000000# GitHub: https://github.com/gohugoio # Twitter: https://twitter.com/gohugoio # Website: https://gohugo.io/ FROM golang:1.21-alpine AS build # Optionally set HUGO_BUILD_TAGS to "extended" or "nodeploy" when building like so: # docker build --build-arg HUGO_BUILD_TAGS=extended . ARG HUGO_BUILD_TAGS ARG CGO=1 ENV CGO_ENABLED=${CGO} ENV GOOS=linux ENV GO111MODULE=on WORKDIR /go/src/github.com/gohugoio/hugo COPY . /go/src/github.com/gohugoio/hugo/ # gcc/g++ are required to build SASS libraries for extended version RUN apk update && \ apk add --no-cache gcc g++ musl-dev git && \ go install github.com/magefile/mage RUN mage hugo && mage install # --- FROM alpine:3.18 COPY --from=build /go/bin/hugo /usr/bin/hugo # libc6-compat & libstdc++ are required for extended SASS libraries # ca-certificates are required to fetch outside resources (like Twitter oEmbeds) RUN apk update && \ apk add --no-cache ca-certificates libc6-compat libstdc++ git VOLUME /site WORKDIR /site # Expose port for live server EXPOSE 1313 ENTRYPOINT ["hugo"] CMD ["--help"] hugo-0.131.0/LICENSE000066400000000000000000000261351465312036400136360ustar00rootroot00000000000000 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 [yyyy] [name of copyright owner] 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. hugo-0.131.0/README.md000066400000000000000000000323511465312036400141050ustar00rootroot00000000000000[bep]: https://github.com/bep [bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug [contributing]: CONTRIBUTING.md [create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md [documentation repository]: https://github.com/gohugoio/hugoDocs [documentation]: https://gohugo.io/documentation [dragonfly bsd, freebsd, netbsd, and openbsd]: https://gohugo.io/installation/bsd [features]: https://gohugo.io/about/features/ [forum]: https://discourse.gohugo.io [friends]: https://github.com/gohugoio/hugo/graphs/contributors [go]: https://go.dev/ [hugo modules]: https://gohugo.io/hugo-modules/ [installation]: https://gohugo.io/installation [issue queue]: https://github.com/gohugoio/hugo/issues [linux]: https://gohugo.io/installation/linux [macos]: https://gohugo.io/installation/macos [prebuilt binary]: https://github.com/gohugoio/hugo/releases/latest [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 [spf13]: https://github.com/spf13 [static site generator]: https://en.wikipedia.org/wiki/Static_site_generator [support]: https://discourse.gohugo.io [themes]: https://themes.gohugo.io/ [website]: https://gohugo.io [windows]: https://gohugo.io/installation/windows Hugo A fast and flexible static site generator built with love by [bep], [spf13], and [friends] in [Go]. --- [![GoDoc](https://godoc.org/github.com/gohugoio/hugo?status.svg)](https://godoc.org/github.com/gohugoio/hugo) [![Tests on Linux, MacOS and Windows](https://github.com/gohugoio/hugo/workflows/Test/badge.svg)](https://github.com/gohugoio/hugo/actions?query=workflow%3ATest) [![Go Report Card](https://goreportcard.com/badge/github.com/gohugoio/hugo)](https://goreportcard.com/report/github.com/gohugoio/hugo) [Website] | [Installation] | [Documentation] | [Support] | [Contributing] | Mastodon | X ## Overview Hugo is a [static site generator] written in [Go], optimized for speed and designed for flexibility. With its advanced templating system and fast asset pipelines, Hugo renders a complete site in seconds, often less. Due to its flexible framework, multilingual support, and powerful taxonomy system, Hugo is widely used to create: - Corporate, government, nonprofit, education, news, event, and project sites - Documentation sites - Image portfolios - Landing pages - Business, professional, and personal blogs - Resumes and CVs Use Hugo's embedded web server during development to instantly see changes to content, structure, behavior, and presentation. Then deploy the site to your host, or push changes to your Git provider for automated builds and deployment. Hugo's fast asset pipelines include: - Image processing – Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data - JavaScript bundling – Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing. - Sass processing – Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS - Tailwind CSS processing – Compile Tailwind CSS utility classes into standard CSS, bundle, tree shake, optimize, minify, perform SRI hashing, and integrate with PostCSS And with [Hugo Modules], you can share content, assets, data, translations, themes, templates, and configuration with other projects via public or private Git repositories. See the [features] section of the documentation for a comprehensive summary of Hugo's capabilities. ## Sponsors

 

Linode     Route Planning & Route Optimization Software

## Installation Install Hugo from a [prebuilt binary], package manager, or package repository. Please see the installation instructions for your operating system: - [macOS] - [Linux] - [Windows] - [DragonFly BSD, FreeBSD, NetBSD, and OpenBSD] ## Build from source Hugo is available in two editions: standard and extended. With the extended edition you can: - Encode to the WebP format when processing images. You can decode WebP images with either edition. - Transpile Sass to CSS using the embedded LibSass transpiler. The extended edition is not required to use the Dart Sass transpiler. Prerequisites to build Hugo from source: - Standard edition: Go 1.20 or later - Extended edition: Go 1.20 or later, and GCC Build the standard edition: ```text go install github.com/gohugoio/hugo@latest ``` Build the extended edition: ```text CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest ``` ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=gohugoio/hugo&type=Timeline)](https://star-history.com/#gohugoio/hugo&Timeline) ## Documentation Hugo's [documentation] includes installation instructions, a quick start guide, conceptual explanations, reference information, and examples. Please submit documentation issues and pull requests to the [documentation repository]. ## Support Please **do not use the issue queue** for questions or troubleshooting. Unless you are certain that your issue is a software defect, use the [forum]. Hugo’s [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. ## Contributing You can contribute to the Hugo project by: - Answering questions on the [forum] - Improving the [documentation] - Monitoring the [issue queue] - Creating or improving [themes] - Squashing [bugs] Please submit documentation issues and pull requests to the [documentation repository]. If you have an idea for an enhancement or new feature, create a new topic on the [forum] in the "Feature" category. This will help you to: - Determine if the capability already exists - Measure interest - Refine the concept If there is sufficient interest, [create a proposal]. Do not submit a pull request until the project lead accepts the proposal. For a complete guide to contributing to Hugo, see the [Contribution Guide](CONTRIBUTING.md). ## Dependencies Hugo stands on the shoulders of great open source libraries. Run `hugo env --logLevel info` to display a list of dependencies.
See current dependencies ```text cloud.google.com/go/compute/metadata="v0.2.3" cloud.google.com/go/iam="v1.1.5" cloud.google.com/go/storage="v1.35.1" cloud.google.com/go="v0.110.10" github.com/Azure/azure-sdk-for-go/sdk/azcore="v1.9.0" github.com/Azure/azure-sdk-for-go/sdk/azidentity="v1.4.0" github.com/Azure/azure-sdk-for-go/sdk/internal="v1.5.0" github.com/Azure/azure-sdk-for-go/sdk/storage/azblob="v1.2.0" github.com/Azure/go-autorest/autorest/to="v0.4.0" github.com/AzureAD/microsoft-authentication-library-for-go="v1.2.0" github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69" github.com/alecthomas/chroma/v2="v2.14.0" github.com/armon/go-radix="v1.0.1-0.20221118154546-54df44f2176c" github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream="v1.5.4" github.com/aws/aws-sdk-go-v2/config="v1.26.1" github.com/aws/aws-sdk-go-v2/credentials="v1.16.12" github.com/aws/aws-sdk-go-v2/feature/ec2/imds="v1.14.10" github.com/aws/aws-sdk-go-v2/feature/s3/manager="v1.15.7" github.com/aws/aws-sdk-go-v2/internal/configsources="v1.3.5" github.com/aws/aws-sdk-go-v2/internal/endpoints/v2="v2.6.5" github.com/aws/aws-sdk-go-v2/internal/ini="v1.7.2" github.com/aws/aws-sdk-go-v2/internal/v4a="v1.2.9" github.com/aws/aws-sdk-go-v2/service/cloudfront="v1.35.4" github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding="v1.10.4" github.com/aws/aws-sdk-go-v2/service/internal/checksum="v1.2.9" github.com/aws/aws-sdk-go-v2/service/internal/presigned-url="v1.10.9" github.com/aws/aws-sdk-go-v2/service/internal/s3shared="v1.16.9" github.com/aws/aws-sdk-go-v2/service/s3="v1.47.5" github.com/aws/aws-sdk-go-v2/service/sso="v1.18.5" github.com/aws/aws-sdk-go-v2/service/ssooidc="v1.21.5" github.com/aws/aws-sdk-go-v2/service/sts="v1.26.5" github.com/aws/aws-sdk-go-v2="v1.26.1" github.com/aws/aws-sdk-go="v1.50.7" github.com/aws/smithy-go="v1.20.2" github.com/bep/clocks="v0.5.0" github.com/bep/debounce="v1.2.0" github.com/bep/gitmap="v1.1.2" github.com/bep/goat="v0.5.0" github.com/bep/godartsass/v2="v2.0.0" github.com/bep/godartsass="v1.2.0" github.com/bep/golibsass="v1.1.1" github.com/bep/gowebp="v0.3.0" github.com/bep/lazycache="v0.4.0" github.com/bep/logg="v0.4.0" github.com/bep/mclib="v1.20400.20402" github.com/bep/overlayfs="v0.9.2" github.com/bep/simplecobra="v0.4.0" github.com/bep/tmc="v0.5.1" github.com/clbanning/mxj/v2="v2.7.0" github.com/cli/safeexec="v1.0.1" github.com/cpuguy83/go-md2man/v2="v2.0.3" github.com/disintegration/gift="v1.2.1" github.com/dlclark/regexp2="v1.11.0" github.com/dustin/go-humanize="v1.0.1" github.com/evanw/esbuild="v0.21.4" github.com/fatih/color="v1.16.0" github.com/frankban/quicktest="v1.14.6" github.com/fsnotify/fsnotify="v1.7.0" github.com/getkin/kin-openapi="v0.123.0" github.com/ghodss/yaml="v1.0.0" github.com/go-openapi/jsonpointer="v0.20.2" github.com/go-openapi/swag="v0.22.8" github.com/gobuffalo/flect="v1.0.2" github.com/gobwas/glob="v0.2.3" github.com/gohugoio/go-i18n/v2="v2.1.3-0.20230805085216-e63c13218d0e" github.com/gohugoio/httpcache="v0.7.0" github.com/gohugoio/hugo-goldmark-extensions/extras="v0.2.0" github.com/gohugoio/hugo-goldmark-extensions/passthrough="v0.2.0" github.com/gohugoio/locales="v0.14.0" github.com/gohugoio/localescompressed="v1.0.1" github.com/golang-jwt/jwt/v5="v5.1.0" github.com/golang/groupcache="v0.0.0-20210331224755-41bb18bfe9da" github.com/golang/protobuf="v1.5.3" github.com/google/go-cmp="v0.6.0" github.com/google/s2a-go="v0.1.7" github.com/google/uuid="v1.4.0" github.com/google/wire="v0.5.0" github.com/googleapis/enterprise-certificate-proxy="v0.3.2" github.com/googleapis/gax-go/v2="v2.12.0" github.com/gorilla/websocket="v1.5.1" github.com/hairyhenderson/go-codeowners="v0.4.0" github.com/hashicorp/golang-lru/v2="v2.0.7" github.com/invopop/yaml="v0.2.0" github.com/jdkato/prose="v1.2.1" github.com/jmespath/go-jmespath="v0.4.0" github.com/josharian/intern="v1.0.0" github.com/kr/pretty="v0.3.1" github.com/kr/text="v0.2.0" github.com/kylelemons/godebug="v1.1.0" github.com/kyokomi/emoji/v2="v2.2.12" github.com/mailru/easyjson="v0.7.7" github.com/makeworld-the-better-one/dither/v2="v2.4.0" github.com/marekm4/color-extractor="v1.2.1" github.com/mattn/go-colorable="v0.1.13" github.com/mattn/go-isatty="v0.0.20" github.com/mattn/go-runewidth="v0.0.9" github.com/mitchellh/hashstructure="v1.1.0" github.com/mitchellh/mapstructure="v1.5.1-0.20231216201459-8508981c8b6c" github.com/mohae/deepcopy="v0.0.0-20170929034955-c48cc78d4826" github.com/muesli/smartcrop="v0.3.0" github.com/niklasfasching/go-org="v1.7.0" github.com/olekukonko/tablewriter="v0.0.5" github.com/pbnjay/memory="v0.0.0-20210728143218-7b4eea64cf58" github.com/pelletier/go-toml/v2="v2.2.2" github.com/perimeterx/marshmallow="v1.1.5" github.com/pkg/browser="v0.0.0-20210911075715-681adbf594b8" github.com/pkg/errors="v0.9.1" github.com/rogpeppe/go-internal="v1.12.0" github.com/russross/blackfriday/v2="v2.1.0" github.com/rwcarlsen/goexif="v0.0.0-20190401172101-9e8deecbddbd" github.com/sass/dart-sass/compiler="1.77.5" github.com/sass/dart-sass/implementation="1.77.5" github.com/sass/dart-sass/protocol="2.7.1" github.com/sass/libsass="3.6.5" github.com/spf13/afero="v1.11.0" github.com/spf13/cast="v1.6.0" github.com/spf13/cobra="v1.8.0" github.com/spf13/fsync="v0.10.1" github.com/spf13/pflag="v1.0.5" github.com/tdewolff/minify/v2="v2.20.20" github.com/tdewolff/parse/v2="v2.7.13" github.com/webmproject/libwebp="v1.3.2" github.com/yuin/goldmark-emoji="v1.0.3" github.com/yuin/goldmark="v1.7.4" go.opencensus.io="v0.24.0" go.uber.org/automaxprocs="v1.5.3" gocloud.dev="v0.36.0" golang.org/x/crypto="v0.23.0" golang.org/x/exp="v0.0.0-20221031165847-c99f073a8326" golang.org/x/image="v0.16.0" golang.org/x/mod="v0.17.0" golang.org/x/net="v0.25.0" golang.org/x/oauth2="v0.15.0" golang.org/x/sync="v0.7.0" golang.org/x/sys="v0.20.0" golang.org/x/text="v0.15.0" golang.org/x/time="v0.5.0" golang.org/x/tools="v0.20.0" golang.org/x/xerrors="v0.0.0-20231012003039-104605ab7028" google.golang.org/api="v0.152.0" google.golang.org/genproto/googleapis/api="v0.0.0-20231120223509-83a465c0220f" google.golang.org/genproto/googleapis/rpc="v0.0.0-20231120223509-83a465c0220f" google.golang.org/genproto="v0.0.0-20231120223509-83a465c0220f" google.golang.org/grpc="v1.59.0" google.golang.org/protobuf="v1.33.0" gopkg.in/yaml.v2="v2.4.0" gopkg.in/yaml.v3="v3.0.1" software.sslmate.com/src/go-pkcs12="v0.2.0" ```
hugo-0.131.0/SECURITY.md000066400000000000000000000006771465312036400144250ustar00rootroot00000000000000## Security Policy ### Reporting a Vulnerability Please report (suspected) security vulnerabilities to **[bjorn.erik.pedersen@gmail.com](mailto:bjorn.erik.pedersen@gmail.com)**. You will receive a response from us within 48 hours. If we can confirm the issue, we will release a patch as soon as possible depending on the complexity of the issue but historically within days. Also see [Hugo's Security Model](https://gohugo.io/about/security/). hugo-0.131.0/bench.sh000077500000000000000000000015331465312036400142420ustar00rootroot00000000000000#!/usr/bin/env bash # allow user to override go executable by running as GOEXE=xxx make ... GOEXE="${GOEXE-go}" # Convenience script to # - For a given branch # - Run benchmark tests for a given package # - Do the same for master # - then compare the two runs with benchcmp benchFilter=".*" if (( $# < 2 )); then echo "USAGE: ./bench.sh (and (regexp, optional))" exit 1 fi if [ $# -eq 3 ]; then benchFilter=$3 fi BRANCH=$1 PACKAGE=$2 git checkout $BRANCH "${GOEXE}" test -test.run=NONE -bench="$benchFilter" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-$BRANCH.txt git checkout master "${GOEXE}" test -test.run=NONE -bench="$benchFilter" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-master.txt benchcmp /tmp/bench-$PACKAGE-master.txt /tmp/bench-$PACKAGE-$BRANCH.txt hugo-0.131.0/benchSite.sh000077500000000000000000000010211465312036400150570ustar00rootroot00000000000000#!/bin/bash # allow user to override go executable by running as GOEXE=xxx make ... GOEXE="${GOEXE-go}" # Send in a regexp matching the benchmarks you want to run, i.e. './benchSite.sh "YAML"'. # Note the quotes, which will be needed for more complex expressions. # The above will run all variations, but only for front matter YAML. echo "Running with BenchmarkSiteBuilding/${1}" "${GOEXE}" test -run="NONE" -bench="BenchmarkSiteBuilding/${1}" -test.benchmem=true ./hugolib -memprofile mem.prof -count 3 -cpuprofile cpu.prof hugo-0.131.0/benchbep.sh000077500000000000000000000001061465312036400147240ustar00rootroot00000000000000gobench -package=./hugolib -bench="BenchmarkSiteNew/Deep_content_tree"hugo-0.131.0/bepdock.sh000077500000000000000000000001651465312036400145720ustar00rootroot00000000000000docker run --rm --mount type=bind,source="$(pwd)",target=/hugo -w /hugo -i -t bepsays/ci-goreleaser:1.11-2 /bin/bashhugo-0.131.0/bufferpool/000077500000000000000000000000001465312036400147655ustar00rootroot00000000000000hugo-0.131.0/bufferpool/bufpool.go000066400000000000000000000021141465312036400167600ustar00rootroot00000000000000// Copyright 2015 The Hugo Authors. All rights reserved. // // 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. // Package bufferpool provides a pool of bytes buffers. package bufferpool import ( "bytes" "sync" ) var bufferPool = &sync.Pool{ New: func() any { return &bytes.Buffer{} }, } // GetBuffer returns a buffer from the pool. func GetBuffer() (buf *bytes.Buffer) { return bufferPool.Get().(*bytes.Buffer) } // PutBuffer returns a buffer to the pool. // The buffer is reset before it is put back into circulation. func PutBuffer(buf *bytes.Buffer) { buf.Reset() bufferPool.Put(buf) } hugo-0.131.0/bufferpool/bufpool_test.go000066400000000000000000000016251465312036400200250ustar00rootroot00000000000000// Copyright 2016-present The Hugo Authors. All rights reserved. // // 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. package bufferpool import ( "testing" qt "github.com/frankban/quicktest" ) func TestBufferPool(t *testing.T) { c := qt.New(t) buff := GetBuffer() buff.WriteString("do be do be do") c.Assert(buff.String(), qt.Equals, "do be do be do") PutBuffer(buff) c.Assert(buff.Len(), qt.Equals, 0) } hugo-0.131.0/cache/000077500000000000000000000000001465312036400136655ustar00rootroot00000000000000hugo-0.131.0/cache/docs.go000066400000000000000000000001151465312036400151410ustar00rootroot00000000000000// Package cache contains the different cache implementations. package cache hugo-0.131.0/cache/dynacache/000077500000000000000000000000001465312036400156045ustar00rootroot00000000000000hugo-0.131.0/cache/dynacache/dynacache.go000066400000000000000000000355311465312036400200610ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package dynacache import ( "context" "fmt" "math" "path" "regexp" "runtime" "sync" "time" "github.com/bep/lazycache" "github.com/bep/logg" "github.com/gohugoio/hugo/common/collections" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/rungroup" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/resource" ) const minMaxSize = 10 type KeyIdentity struct { Key any Identity identity.Identity } // New creates a new cache. func New(opts Options) *Cache { if opts.CheckInterval == 0 { opts.CheckInterval = time.Second * 2 } if opts.MaxSize == 0 { opts.MaxSize = 100000 } if opts.Log == nil { panic("nil Log") } if opts.MinMaxSize == 0 { opts.MinMaxSize = 30 } stats := &stats{ opts: opts, adjustmentFactor: 1.0, currentMaxSize: opts.MaxSize, availableMemory: config.GetMemoryLimit(), } infol := opts.Log.InfoCommand("dynacache") evictedIdentities := collections.NewStack[KeyIdentity]() onEvict := func(k, v any) { if !opts.Watching { return } identity.WalkIdentitiesShallow(v, func(level int, id identity.Identity) bool { evictedIdentities.Push(KeyIdentity{Key: k, Identity: id}) return false }) resource.MarkStale(v) } c := &Cache{ partitions: make(map[string]PartitionManager), onEvict: onEvict, evictedIdentities: evictedIdentities, opts: opts, stats: stats, infol: infol, } c.stop = c.start() return c } // Options for the cache. type Options struct { Log loggers.Logger CheckInterval time.Duration MaxSize int MinMaxSize int Watching bool } // Options for a partition. type OptionsPartition struct { // When to clear the this partition. ClearWhen ClearWhen // Weight is a number between 1 and 100 that indicates how, in general, how big this partition may get. Weight int } func (o OptionsPartition) WeightFraction() float64 { return float64(o.Weight) / 100 } func (o OptionsPartition) CalculateMaxSize(maxSizePerPartition int) int { return int(math.Floor(float64(maxSizePerPartition) * o.WeightFraction())) } // A dynamic partitioned cache. type Cache struct { mu sync.RWMutex partitions map[string]PartitionManager onEvict func(k, v any) evictedIdentities *collections.Stack[KeyIdentity] opts Options infol logg.LevelLogger stats *stats stopOnce sync.Once stop func() } // DrainEvictedIdentities drains the evicted identities from the cache. func (c *Cache) DrainEvictedIdentities() []KeyIdentity { return c.evictedIdentities.Drain() } // DrainEvictedIdentitiesMatching drains the evicted identities from the cache that match the given predicate. func (c *Cache) DrainEvictedIdentitiesMatching(predicate func(KeyIdentity) bool) []KeyIdentity { return c.evictedIdentities.DrainMatching(predicate) } // ClearMatching clears all partition for which the predicate returns true. func (c *Cache) ClearMatching(predicatePartition func(k string, p PartitionManager) bool, predicateValue func(k, v any) bool) { if predicatePartition == nil { predicatePartition = func(k string, p PartitionManager) bool { return true } } if predicateValue == nil { panic("nil predicateValue") } g := rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearMatching(predicateValue) return nil }, }) for k, p := range c.partitions { if !predicatePartition(k, p) { continue } g.Enqueue(p) } g.Wait() } // ClearOnRebuild prepares the cache for a new rebuild taking the given changeset into account. func (c *Cache) ClearOnRebuild(changeset ...identity.Identity) { g := rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearOnRebuild(changeset...) return nil }, }) for _, p := range c.partitions { g.Enqueue(p) } g.Wait() // Clear any entries marked as stale above. g = rungroup.Run[PartitionManager](context.Background(), rungroup.Config[PartitionManager]{ NumWorkers: len(c.partitions), Handle: func(ctx context.Context, partition PartitionManager) error { partition.clearStale() return nil }, }) for _, p := range c.partitions { g.Enqueue(p) } g.Wait() } type keysProvider interface { Keys() []string } // Keys returns a list of keys in all partitions. func (c *Cache) Keys(predicate func(s string) bool) []string { if predicate == nil { predicate = func(s string) bool { return true } } var keys []string for pn, g := range c.partitions { pkeys := g.(keysProvider).Keys() for _, k := range pkeys { p := path.Join(pn, k) if predicate(p) { keys = append(keys, p) } } } return keys } func calculateMaxSizePerPartition(maxItemsTotal, totalWeightQuantity, numPartitions int) int { if numPartitions == 0 { panic("numPartitions must be > 0") } if totalWeightQuantity == 0 { panic("totalWeightQuantity must be > 0") } avgWeight := float64(totalWeightQuantity) / float64(numPartitions) return int(math.Floor(float64(maxItemsTotal) / float64(numPartitions) * (100.0 / avgWeight))) } // Stop stops the cache. func (c *Cache) Stop() { c.stopOnce.Do(func() { c.stop() }) } func (c *Cache) adjustCurrentMaxSize() { c.mu.RLock() defer c.mu.RUnlock() if len(c.partitions) == 0 { return } var m runtime.MemStats runtime.ReadMemStats(&m) s := c.stats s.memstatsCurrent = m // fmt.Printf("\n\nAvailable = %v\nAlloc = %v\nTotalAlloc = %v\nSys = %v\nNumGC = %v\nMaxSize = %d\nAdjustmentFactor=%f\n\n", helpers.FormatByteCount(s.availableMemory), helpers.FormatByteCount(m.Alloc), helpers.FormatByteCount(m.TotalAlloc), helpers.FormatByteCount(m.Sys), m.NumGC, c.stats.currentMaxSize, s.adjustmentFactor) if s.availableMemory >= s.memstatsCurrent.Alloc { if s.adjustmentFactor <= 1.0 { s.adjustmentFactor += 0.2 } } else { // We're low on memory. s.adjustmentFactor -= 0.4 } if s.adjustmentFactor <= 0 { s.adjustmentFactor = 0.05 } if !s.adjustCurrentMaxSize() { return } totalWeight := 0 for _, pm := range c.partitions { totalWeight += pm.getOptions().Weight } maxSizePerPartition := calculateMaxSizePerPartition(c.stats.currentMaxSize, totalWeight, len(c.partitions)) evicted := 0 for _, p := range c.partitions { evicted += p.adjustMaxSize(p.getOptions().CalculateMaxSize(maxSizePerPartition)) } if evicted > 0 { c.infol. WithFields( logg.Fields{ {Name: "evicted", Value: evicted}, {Name: "numGC", Value: m.NumGC}, {Name: "limit", Value: helpers.FormatByteCount(c.stats.availableMemory)}, {Name: "alloc", Value: helpers.FormatByteCount(m.Alloc)}, {Name: "totalAlloc", Value: helpers.FormatByteCount(m.TotalAlloc)}, }, ).Logf("adjusted partitions' max size") } } func (c *Cache) start() func() { ticker := time.NewTicker(c.opts.CheckInterval) quit := make(chan struct{}) go func() { for { select { case <-ticker.C: c.adjustCurrentMaxSize() // Reset the ticker to avoid drift. ticker.Reset(c.opts.CheckInterval) case <-quit: ticker.Stop() return } } }() return func() { close(quit) } } var partitionNameRe = regexp.MustCompile(`^\/[a-zA-Z0-9]{4}(\/[a-zA-Z0-9]+)?(\/[a-zA-Z0-9]+)?`) // GetOrCreatePartition gets or creates a partition with the given name. func GetOrCreatePartition[K comparable, V any](c *Cache, name string, opts OptionsPartition) *Partition[K, V] { if c == nil { panic("nil Cache") } if opts.Weight < 1 || opts.Weight > 100 { panic("invalid Weight, must be between 1 and 100") } if partitionNameRe.FindString(name) != name { panic(fmt.Sprintf("invalid partition name %q", name)) } c.mu.RLock() p, found := c.partitions[name] c.mu.RUnlock() if found { return p.(*Partition[K, V]) } c.mu.Lock() defer c.mu.Unlock() // Double check. p, found = c.partitions[name] if found { return p.(*Partition[K, V]) } // At this point, we don't know the number of partitions or their configuration, but // this will be re-adjusted later. const numberOfPartitionsEstimate = 10 maxSize := opts.CalculateMaxSize(c.opts.MaxSize / numberOfPartitionsEstimate) onEvict := func(k K, v V) { c.onEvict(k, v) } // Create a new partition and cache it. partition := &Partition[K, V]{ c: lazycache.New(lazycache.Options[K, V]{MaxEntries: maxSize, OnEvict: onEvict}), maxSize: maxSize, trace: c.opts.Log.Logger().WithLevel(logg.LevelTrace).WithField("partition", name), opts: opts, } c.partitions[name] = partition return partition } // Partition is a partition in the cache. type Partition[K comparable, V any] struct { c *lazycache.Cache[K, V] zero V trace logg.LevelLogger opts OptionsPartition maxSize int } // GetOrCreate gets or creates a value for the given key. func (p *Partition[K, V]) GetOrCreate(key K, create func(key K) (V, error)) (V, error) { v, err := p.doGetOrCreate(key, create) if err != nil { return p.zero, err } if resource.StaleVersion(v) > 0 { p.c.Delete(key) return p.doGetOrCreate(key, create) } return v, err } func (p *Partition[K, V]) doGetOrCreate(key K, create func(key K) (V, error)) (V, error) { v, _, err := p.c.GetOrCreate(key, create) return v, err } func (p *Partition[K, V]) GetOrCreateWitTimeout(key K, duration time.Duration, create func(key K) (V, error)) (V, error) { v, err := p.doGetOrCreateWitTimeout(key, duration, create) if err != nil { return p.zero, err } if resource.StaleVersion(v) > 0 { p.c.Delete(key) return p.doGetOrCreateWitTimeout(key, duration, create) } return v, err } // GetOrCreateWitTimeout gets or creates a value for the given key and times out if the create function // takes too long. func (p *Partition[K, V]) doGetOrCreateWitTimeout(key K, duration time.Duration, create func(key K) (V, error)) (V, error) { resultch := make(chan V, 1) errch := make(chan error, 1) go func() { v, _, err := p.c.GetOrCreate(key, create) if err != nil { errch <- err return } resultch <- v }() select { case v := <-resultch: return v, nil case err := <-errch: return p.zero, err case <-time.After(duration): return p.zero, &herrors.TimeoutError{ Duration: duration, } } } func (p *Partition[K, V]) clearMatching(predicate func(k, v any) bool) { p.c.DeleteFunc(func(key K, v V) bool { if predicate(key, v) { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("clearing cache key %v", key) }, ), ) return true } return false }) } func (p *Partition[K, V]) clearOnRebuild(changeset ...identity.Identity) { opts := p.getOptions() if opts.ClearWhen == ClearNever { return } if opts.ClearWhen == ClearOnRebuild { // Clear all. p.Clear() return } depsFinder := identity.NewFinder(identity.FinderConfig{}) shouldDelete := func(key K, v V) bool { // We always clear elements marked as stale. if resource.StaleVersion(v) > 0 { return true } // Now check if this entry has changed based on the changeset // based on filesystem events. if len(changeset) == 0 { // Nothing changed. return false } var probablyDependent bool identity.WalkIdentitiesShallow(v, func(level int, id2 identity.Identity) bool { for _, id := range changeset { if r := depsFinder.Contains(id, id2, -1); r > 0 { // It's probably dependent, evict from cache. probablyDependent = true return true } } return false }) return probablyDependent } // First pass. // Second pass needs to be done in a separate loop to catch any // elements marked as stale in the other partitions. p.c.DeleteFunc(func(key K, v V) bool { if shouldDelete(key, v) { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("first pass: clearing cache key %v", key) }, ), ) return true } return false }) } func (p *Partition[K, V]) Keys() []K { var keys []K p.c.DeleteFunc(func(key K, v V) bool { keys = append(keys, key) return false }) return keys } func (p *Partition[K, V]) clearStale() { p.c.DeleteFunc(func(key K, v V) bool { staleVersion := resource.StaleVersion(v) if staleVersion > 0 { p.trace.Log( logg.StringFunc( func() string { return fmt.Sprintf("second pass: clearing cache key %v", key) }, ), ) } return staleVersion > 0 }) } // adjustMaxSize adjusts the max size of the and returns the number of items evicted. func (p *Partition[K, V]) adjustMaxSize(newMaxSize int) int { if newMaxSize < minMaxSize { newMaxSize = minMaxSize } oldMaxSize := p.maxSize if newMaxSize == oldMaxSize { return 0 } p.maxSize = newMaxSize // fmt.Println("Adjusting max size of partition from", oldMaxSize, "to", newMaxSize) return p.c.Resize(newMaxSize) } func (p *Partition[K, V]) getMaxSize() int { return p.maxSize } func (p *Partition[K, V]) getOptions() OptionsPartition { return p.opts } func (p *Partition[K, V]) Clear() { p.c.DeleteFunc(func(key K, v V) bool { return true }) } func (p *Partition[K, V]) Get(ctx context.Context, key K) (V, bool) { return p.c.Get(key) } type PartitionManager interface { adjustMaxSize(addend int) int getMaxSize() int getOptions() OptionsPartition clearOnRebuild(changeset ...identity.Identity) clearMatching(predicate func(k, v any) bool) clearStale() } const ( ClearOnRebuild ClearWhen = iota + 1 ClearOnChange ClearNever ) type ClearWhen int type stats struct { opts Options memstatsCurrent runtime.MemStats currentMaxSize int availableMemory uint64 adjustmentFactor float64 } func (s *stats) adjustCurrentMaxSize() bool { newCurrentMaxSize := int(math.Floor(float64(s.opts.MaxSize) * s.adjustmentFactor)) if newCurrentMaxSize < s.opts.MinMaxSize { newCurrentMaxSize = int(s.opts.MinMaxSize) } changed := newCurrentMaxSize != s.currentMaxSize s.currentMaxSize = newCurrentMaxSize return changed } // CleanKey turns s into a format suitable for a cache key for this package. // The key will be a Unix-styled path with a leading slash but no trailing slash. func CleanKey(s string) string { return path.Clean(paths.ToSlashPreserveLeading(s)) } hugo-0.131.0/cache/dynacache/dynacache_test.go000066400000000000000000000106721465312036400211170ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package dynacache import ( "path/filepath" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/resource" ) var ( _ resource.StaleInfo = (*testItem)(nil) _ identity.Identity = (*testItem)(nil) ) type testItem struct { name string staleVersion uint32 } func (t testItem) StaleVersion() uint32 { return t.staleVersion } func (t testItem) IdentifierBase() string { return t.name } func TestCache(t *testing.T) { t.Parallel() c := qt.New(t) cache := New(Options{ Log: loggers.NewDefault(), }) c.Cleanup(func() { cache.Stop() }) opts := OptionsPartition{Weight: 30} c.Assert(cache, qt.Not(qt.IsNil)) p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", opts) c.Assert(p1, qt.Not(qt.IsNil)) p2 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", opts) c.Assert(func() { GetOrCreatePartition[string, testItem](cache, "foo bar", opts) }, qt.PanicMatches, ".*invalid partition name.*") c.Assert(func() { GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", OptionsPartition{Weight: 1234}) }, qt.PanicMatches, ".*invalid Weight.*") c.Assert(p2, qt.Equals, p1) p3 := GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", opts) c.Assert(p3, qt.Not(qt.IsNil)) c.Assert(p3, qt.Not(qt.Equals), p1) c.Assert(func() { New(Options{}) }, qt.PanicMatches, ".*nil Log.*") } func TestCalculateMaxSizePerPartition(t *testing.T) { t.Parallel() c := qt.New(t) c.Assert(calculateMaxSizePerPartition(1000, 500, 5), qt.Equals, 200) c.Assert(calculateMaxSizePerPartition(1000, 250, 5), qt.Equals, 400) c.Assert(func() { calculateMaxSizePerPartition(1000, 250, 0) }, qt.PanicMatches, ".*must be > 0.*") c.Assert(func() { calculateMaxSizePerPartition(1000, 0, 1) }, qt.PanicMatches, ".*must be > 0.*") } func TestCleanKey(t *testing.T) { c := qt.New(t) c.Assert(CleanKey("a/b/c"), qt.Equals, "/a/b/c") c.Assert(CleanKey("/a/b/c"), qt.Equals, "/a/b/c") c.Assert(CleanKey("a/b/c/"), qt.Equals, "/a/b/c") c.Assert(CleanKey(filepath.FromSlash("/a/b/c/")), qt.Equals, "/a/b/c") } func newTestCache(t *testing.T) *Cache { cache := New( Options{ Log: loggers.NewDefault(), }, ) p1 := GetOrCreatePartition[string, testItem](cache, "/aaaa/bbbb", OptionsPartition{Weight: 30, ClearWhen: ClearOnRebuild}) p2 := GetOrCreatePartition[string, testItem](cache, "/aaaa/cccc", OptionsPartition{Weight: 30, ClearWhen: ClearOnChange}) p1.GetOrCreate("clearOnRebuild", func(string) (testItem, error) { return testItem{}, nil }) p2.GetOrCreate("clearBecauseStale", func(string) (testItem, error) { return testItem{ staleVersion: 32, }, nil }) p2.GetOrCreate("clearBecauseIdentityChanged", func(string) (testItem, error) { return testItem{ name: "changed", }, nil }) p2.GetOrCreate("clearNever", func(string) (testItem, error) { return testItem{ staleVersion: 0, }, nil }) t.Cleanup(func() { cache.Stop() }) return cache } func TestClear(t *testing.T) { t.Parallel() c := qt.New(t) predicateAll := func(string) bool { return true } cache := newTestCache(t) c.Assert(cache.Keys(predicateAll), qt.HasLen, 4) cache.ClearOnRebuild() // Stale items are always cleared. c.Assert(cache.Keys(predicateAll), qt.HasLen, 2) cache = newTestCache(t) cache.ClearOnRebuild(identity.StringIdentity("changed")) c.Assert(cache.Keys(nil), qt.HasLen, 1) cache = newTestCache(t) cache.ClearMatching(nil, func(k, v any) bool { return k.(string) == "clearOnRebuild" }) c.Assert(cache.Keys(predicateAll), qt.HasLen, 3) cache.adjustCurrentMaxSize() } func TestAdjustCurrentMaxSize(t *testing.T) { t.Parallel() c := qt.New(t) cache := newTestCache(t) alloc := cache.stats.memstatsCurrent.Alloc cache.adjustCurrentMaxSize() c.Assert(cache.stats.memstatsCurrent.Alloc, qt.Not(qt.Equals), alloc) } hugo-0.131.0/cache/filecache/000077500000000000000000000000001465312036400155705ustar00rootroot00000000000000hugo-0.131.0/cache/filecache/filecache.go000066400000000000000000000243131465312036400200250ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package filecache import ( "bytes" "errors" "io" "os" "path/filepath" "strings" "sync" "time" "github.com/gohugoio/httpcache" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/helpers" "github.com/BurntSushi/locker" "github.com/spf13/afero" ) // ErrFatal can be used to signal an unrecoverable error. var ErrFatal = errors.New("fatal filecache error") const ( FilecacheRootDirname = "filecache" ) // Cache caches a set of files in a directory. This is usually a file on // disk, but since this is backed by an Afero file system, it can be anything. type Cache struct { Fs afero.Fs // Max age for items in this cache. Negative duration means forever, // 0 is effectively turning this cache off. maxAge time.Duration // When set, we just remove this entire root directory on expiration. pruneAllRootDir string nlocker *lockTracker initOnce sync.Once initErr error } type lockTracker struct { seenMu sync.RWMutex seen map[string]struct{} *locker.Locker } // Lock tracks the ids in use. We use this information to do garbage collection // after a Hugo build. func (l *lockTracker) Lock(id string) { l.seenMu.RLock() if _, seen := l.seen[id]; !seen { l.seenMu.RUnlock() l.seenMu.Lock() l.seen[id] = struct{}{} l.seenMu.Unlock() } else { l.seenMu.RUnlock() } l.Locker.Lock(id) } // ItemInfo contains info about a cached file. type ItemInfo struct { // This is the file's name relative to the cache's filesystem. Name string } // NewCache creates a new file cache with the given filesystem and max age. func NewCache(fs afero.Fs, maxAge time.Duration, pruneAllRootDir string) *Cache { return &Cache{ Fs: fs, nlocker: &lockTracker{Locker: locker.NewLocker(), seen: make(map[string]struct{})}, maxAge: maxAge, pruneAllRootDir: pruneAllRootDir, } } // lockedFile is a file with a lock that is released on Close. type lockedFile struct { afero.File unlock func() } func (l *lockedFile) Close() error { defer l.unlock() return l.File.Close() } func (c *Cache) init() error { c.initOnce.Do(func() { // Create the base dir if it does not exist. if err := c.Fs.MkdirAll("", 0o777); err != nil && !os.IsExist(err) { c.initErr = err } }) return c.initErr } // WriteCloser returns a transactional writer into the cache. // It's important that it's closed when done. func (c *Cache) WriteCloser(id string) (ItemInfo, io.WriteCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) info := ItemInfo{Name: id} f, err := helpers.OpenFileForWriting(c.Fs, id) if err != nil { c.nlocker.Unlock(id) return info, nil, err } return info, &lockedFile{ File: f, unlock: func() { c.nlocker.Unlock(id) }, }, nil } // ReadOrCreate tries to lookup the file in cache. // If found, it is passed to read and then closed. // If not found a new file is created and passed to create, which should close // it when done. func (c *Cache) ReadOrCreate(id string, read func(info ItemInfo, r io.ReadSeeker) error, create func(info ItemInfo, w io.WriteCloser) error, ) (info ItemInfo, err error) { if err := c.init(); err != nil { return ItemInfo{}, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info = ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { err = read(info, r) defer r.Close() if err == nil || err == ErrFatal { // See https://github.com/gohugoio/hugo/issues/6401 // To recover from file corruption we handle read errors // as the cache item was not found. // Any file permission issue will also fail in the next step. return } } f, err := helpers.OpenFileForWriting(c.Fs, id) if err != nil { return } err = create(info, f) return } // NamedLock locks the given id. The lock is released when the returned function is called. func (c *Cache) NamedLock(id string) func() { id = cleanID(id) c.nlocker.Lock(id) return func() { c.nlocker.Unlock(id) } } // GetOrCreate tries to get the file with the given id from cache. If not found or expired, create will // be invoked and the result cached. // This method is protected by a named lock using the given id as identifier. func (c *Cache) GetOrCreate(id string, create func() (io.ReadCloser, error)) (ItemInfo, io.ReadCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { return info, r, nil } var ( r io.ReadCloser err error ) r, err = create() if err != nil { return info, nil, err } if c.maxAge == 0 { // No caching. return info, hugio.ToReadCloser(r), nil } var buff bytes.Buffer return info, hugio.ToReadCloser(&buff), c.writeReader(id, io.TeeReader(r, &buff)) } func (c *Cache) writeReader(id string, r io.Reader) error { dir := filepath.Dir(id) if dir != "" { _ = c.Fs.MkdirAll(dir, 0o777) } f, err := c.Fs.Create(id) if err != nil { return err } defer f.Close() _, _ = io.Copy(f, r) return nil } // GetOrCreateBytes is the same as GetOrCreate, but produces a byte slice. func (c *Cache) GetOrCreateBytes(id string, create func() ([]byte, error)) (ItemInfo, []byte, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { defer r.Close() b, err := io.ReadAll(r) return info, b, err } var ( b []byte err error ) b, err = create() if err != nil { return info, nil, err } if c.maxAge == 0 { return info, b, nil } if err := c.writeReader(id, bytes.NewReader(b)); err != nil { return info, nil, err } return info, b, nil } // GetBytes gets the file content with the given id from the cache, nil if none found. func (c *Cache) GetBytes(id string) (ItemInfo, []byte, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} if r := c.getOrRemove(id); r != nil { defer r.Close() b, err := io.ReadAll(r) return info, b, err } return info, nil, nil } // Get gets the file with the given id from the cache, nil if none found. func (c *Cache) Get(id string) (ItemInfo, io.ReadCloser, error) { if err := c.init(); err != nil { return ItemInfo{}, nil, err } id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) info := ItemInfo{Name: id} r := c.getOrRemove(id) return info, r, nil } // getOrRemove gets the file with the given id. If it's expired, it will // be removed. func (c *Cache) getOrRemove(id string) hugio.ReadSeekCloser { if c.maxAge == 0 { // No caching. return nil } if removed, err := c.removeIfExpired(id); err != nil || removed { return nil } f, err := c.Fs.Open(id) if err != nil { return nil } return f } func (c *Cache) getBytesAndRemoveIfExpired(id string) ([]byte, bool) { if c.maxAge == 0 { // No caching. return nil, false } f, err := c.Fs.Open(id) if err != nil { return nil, false } defer f.Close() b, err := io.ReadAll(f) if err != nil { return nil, false } removed, err := c.removeIfExpired(id) if err != nil { return nil, false } return b, removed } func (c *Cache) removeIfExpired(id string) (bool, error) { if c.maxAge <= 0 { return false, nil } fi, err := c.Fs.Stat(id) if err != nil { return false, err } if c.isExpired(fi.ModTime()) { c.Fs.Remove(id) return true, nil } return false, nil } func (c *Cache) isExpired(modTime time.Time) bool { if c.maxAge < 0 { return false } // Note the use of time.Since here. // We cannot use Hugo's global Clock for this. return c.maxAge == 0 || time.Since(modTime) > c.maxAge } // For testing func (c *Cache) GetString(id string) string { id = cleanID(id) c.nlocker.Lock(id) defer c.nlocker.Unlock(id) f, err := c.Fs.Open(id) if err != nil { return "" } defer f.Close() b, _ := io.ReadAll(f) return string(b) } // Caches is a named set of caches. type Caches map[string]*Cache // Get gets a named cache, nil if none found. func (f Caches) Get(name string) *Cache { return f[strings.ToLower(name)] } // NewCaches creates a new set of file caches from the given // configuration. func NewCaches(p *helpers.PathSpec) (Caches, error) { dcfg := p.Cfg.GetConfigSection("caches").(Configs) fs := p.Fs.Source m := make(Caches) for k, v := range dcfg { var cfs afero.Fs if v.IsResourceDir { cfs = p.BaseFs.ResourcesCache } else { cfs = fs } if cfs == nil { panic("nil fs") } baseDir := v.DirCompiled bfs := hugofs.NewBasePathFs(cfs, baseDir) var pruneAllRootDir string if k == CacheKeyModules { pruneAllRootDir = "pkg" } m[k] = NewCache(bfs, v.MaxAge, pruneAllRootDir) } return m, nil } func cleanID(name string) string { return strings.TrimPrefix(filepath.Clean(name), helpers.FilePathSeparator) } // AsHTTPCache returns an httpcache.Cache implementation for this file cache. // Note that none of the methods are protected by named locks, so you need to make sure // to do that in your own code. func (c *Cache) AsHTTPCache() httpcache.Cache { return &httpCache{c: c} } type httpCache struct { c *Cache } func (h *httpCache) Get(id string) (resp []byte, ok bool) { id = cleanID(id) b, removed := h.c.getBytesAndRemoveIfExpired(id) return b, !removed } func (h *httpCache) Set(id string, resp []byte) { if h.c.maxAge == 0 { return } id = cleanID(id) if err := h.c.writeReader(id, bytes.NewReader(resp)); err != nil { panic(err) } } func (h *httpCache) Delete(key string) { h.c.Fs.Remove(key) } hugo-0.131.0/cache/filecache/filecache_config.go000066400000000000000000000144121465312036400213510ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. // Package filecache provides a file based cache for Hugo. package filecache import ( "errors" "fmt" "path" "path/filepath" "strings" "time" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" "github.com/spf13/afero" ) const ( resourcesGenDir = ":resourceDir/_gen" cacheDirProject = ":cacheDir/:project" ) var defaultCacheConfig = FileCacheConfig{ MaxAge: -1, // Never expire Dir: cacheDirProject, } const ( CacheKeyGetJSON = "getjson" CacheKeyGetCSV = "getcsv" CacheKeyImages = "images" CacheKeyAssets = "assets" CacheKeyModules = "modules" CacheKeyGetResource = "getresource" ) type Configs map[string]FileCacheConfig // For internal use. func (c Configs) CacheDirModules() string { return c[CacheKeyModules].DirCompiled } var defaultCacheConfigs = Configs{ CacheKeyModules: { MaxAge: -1, Dir: ":cacheDir/modules", }, CacheKeyGetJSON: defaultCacheConfig, CacheKeyGetCSV: defaultCacheConfig, CacheKeyImages: { MaxAge: -1, Dir: resourcesGenDir, }, CacheKeyAssets: { MaxAge: -1, Dir: resourcesGenDir, }, CacheKeyGetResource: FileCacheConfig{ MaxAge: -1, // Never expire Dir: cacheDirProject, }, } type FileCacheConfig struct { // Max age of cache entries in this cache. Any items older than this will // be removed and not returned from the cache. // A negative value means forever, 0 means cache is disabled. // Hugo is lenient with what types it accepts here, but we recommend using // a duration string, a sequence of decimal numbers, each with optional fraction and a unit suffix, // such as "300ms", "1.5h" or "2h45m". // Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". MaxAge time.Duration // The directory where files are stored. Dir string DirCompiled string `json:"-"` // Will resources/_gen will get its own composite filesystem that // also checks any theme. IsResourceDir bool `json:"-"` } // GetJSONCache gets the file cache for getJSON. func (f Caches) GetJSONCache() *Cache { return f[CacheKeyGetJSON] } // GetCSVCache gets the file cache for getCSV. func (f Caches) GetCSVCache() *Cache { return f[CacheKeyGetCSV] } // ImageCache gets the file cache for processed images. func (f Caches) ImageCache() *Cache { return f[CacheKeyImages] } // ModulesCache gets the file cache for Hugo Modules. func (f Caches) ModulesCache() *Cache { return f[CacheKeyModules] } // AssetsCache gets the file cache for assets (processed resources, SCSS etc.). func (f Caches) AssetsCache() *Cache { return f[CacheKeyAssets] } // GetResourceCache gets the file cache for remote resources. func (f Caches) GetResourceCache() *Cache { return f[CacheKeyGetResource] } func DecodeConfig(fs afero.Fs, bcfg config.BaseConfig, m map[string]any) (Configs, error) { c := make(Configs) valid := make(map[string]bool) // Add defaults for k, v := range defaultCacheConfigs { c[k] = v valid[k] = true } _, isOsFs := fs.(*afero.OsFs) for k, v := range m { if _, ok := v.(maps.Params); !ok { continue } cc := defaultCacheConfig dc := &mapstructure.DecoderConfig{ Result: &cc, DecodeHook: mapstructure.StringToTimeDurationHookFunc(), WeaklyTypedInput: true, } decoder, err := mapstructure.NewDecoder(dc) if err != nil { return c, err } if err := decoder.Decode(v); err != nil { return nil, fmt.Errorf("failed to decode filecache config: %w", err) } if cc.Dir == "" { return c, errors.New("must provide cache Dir") } name := strings.ToLower(k) if !valid[name] { return nil, fmt.Errorf("%q is not a valid cache name", name) } c[name] = cc } for k, v := range c { dir := filepath.ToSlash(filepath.Clean(v.Dir)) hadSlash := strings.HasPrefix(dir, "/") parts := strings.Split(dir, "/") for i, part := range parts { if strings.HasPrefix(part, ":") { resolved, isResource, err := resolveDirPlaceholder(fs, bcfg, part) if err != nil { return c, err } if isResource { v.IsResourceDir = true } parts[i] = resolved } } dir = path.Join(parts...) if hadSlash { dir = "/" + dir } v.DirCompiled = filepath.Clean(filepath.FromSlash(dir)) if !v.IsResourceDir { if isOsFs && !filepath.IsAbs(v.DirCompiled) { return c, fmt.Errorf("%q must resolve to an absolute directory", v.DirCompiled) } // Avoid cache in root, e.g. / (Unix) or c:\ (Windows) if len(strings.TrimPrefix(v.DirCompiled, filepath.VolumeName(v.DirCompiled))) == 1 { return c, fmt.Errorf("%q is a root folder and not allowed as cache dir", v.DirCompiled) } } if !strings.HasPrefix(v.DirCompiled, "_gen") { // We do cache eviction (file removes) and since the user can set // his/hers own cache directory, we really want to make sure // we do not delete any files that do not belong to this cache. // We do add the cache name as the root, but this is an extra safe // guard. We skip the files inside /resources/_gen/ because // that would be breaking. v.DirCompiled = filepath.Join(v.DirCompiled, FilecacheRootDirname, k) } else { v.DirCompiled = filepath.Join(v.DirCompiled, k) } c[k] = v } return c, nil } // Resolves :resourceDir => /myproject/resources etc., :cacheDir => ... func resolveDirPlaceholder(fs afero.Fs, bcfg config.BaseConfig, placeholder string) (cacheDir string, isResource bool, err error) { switch strings.ToLower(placeholder) { case ":resourcedir": return "", true, nil case ":cachedir": return bcfg.CacheDir, false, nil case ":project": return filepath.Base(bcfg.WorkingDir), false, nil } return "", false, fmt.Errorf("%q is not a valid placeholder (valid values are :cacheDir or :resourceDir)", placeholder) } hugo-0.131.0/cache/filecache/filecache_config_test.go000066400000000000000000000073001465312036400224060ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package filecache_test import ( "path/filepath" "runtime" "testing" "time" "github.com/spf13/afero" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" qt "github.com/frankban/quicktest" ) func TestDecodeConfig(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archetypeDir = "archetypes" [caches] [caches.getJSON] maxAge = "10m" dir = "/path/to/c1" [caches.getCSV] maxAge = "11h" dir = "/path/to/c2" [caches.images] dir = "/path/to/c3" [caches.getResource] dir = "/path/to/c4" ` cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 6) c2 := decoded["getcsv"] c.Assert(c2.MaxAge.String(), qt.Equals, "11h0m0s") c.Assert(c2.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c2/filecache/getcsv")) c3 := decoded["images"] c.Assert(c3.MaxAge, qt.Equals, time.Duration(-1)) c.Assert(c3.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c3/filecache/images")) c4 := decoded["getresource"] c.Assert(c4.MaxAge, qt.Equals, time.Duration(-1)) c.Assert(c4.DirCompiled, qt.Equals, filepath.FromSlash("/path/to/c4/filecache/getresource")) } func TestDecodeConfigIgnoreCache(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" ignoreCache = true [caches] [caches.getJSON] maxAge = 1234 dir = "/path/to/c1" [caches.getCSV] maxAge = 3456 dir = "/path/to/c2" [caches.images] dir = "/path/to/c3" [caches.getResource] dir = "/path/to/c4" ` cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 6) for _, v := range decoded { c.Assert(v.MaxAge, qt.Equals, time.Duration(0)) } } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) cfg := config.New() if runtime.GOOS == "windows" { cfg.Set("resourceDir", "c:\\cache\\resources") cfg.Set("cacheDir", "c:\\cache\\thecache") } else { cfg.Set("resourceDir", "/cache/resources") cfg.Set("cacheDir", "/cache/thecache") } cfg.Set("workingDir", filepath.FromSlash("/my/cool/hugoproject")) fs := afero.NewMemMapFs() decoded := testconfig.GetTestConfigs(fs, cfg).Base.Caches c.Assert(len(decoded), qt.Equals, 6) imgConfig := decoded[filecache.CacheKeyImages] jsonConfig := decoded[filecache.CacheKeyGetJSON] if runtime.GOOS == "windows" { c.Assert(imgConfig.DirCompiled, qt.Equals, filepath.FromSlash("_gen/images")) } else { c.Assert(imgConfig.DirCompiled, qt.Equals, "_gen/images") c.Assert(jsonConfig.DirCompiled, qt.Equals, "/cache/thecache/hugoproject/filecache/getjson") } c.Assert(imgConfig.IsResourceDir, qt.Equals, true) c.Assert(jsonConfig.IsResourceDir, qt.Equals, false) } hugo-0.131.0/cache/filecache/filecache_integration_test.go000066400000000000000000000055771465312036400235020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package filecache_test import ( "path/filepath" "testing" "time" "github.com/bep/logg" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/htesting" "github.com/gohugoio/hugo/hugolib" ) // See issue #10781. That issue wouldn't have been triggered if we kept // the empty root directories (e.g. _resources/gen/images). // It's still an upstream Go issue that we also need to handle, but // this is a test for the first part. func TestPruneShouldPreserveEmptyCacheRoots(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" -- content/_index.md -- --- title: "Home" --- ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files, RunGC: true, NeedsOsFS: true}, ).Build() _, err := b.H.BaseFs.ResourcesCache.Stat(filepath.Join("_gen", "images")) b.Assert(err, qt.IsNil) } func TestPruneImages(t *testing.T) { if htesting.IsCI() { // TODO(bep) t.Skip("skip flaky test on CI server") } t.Skip("skip flaky test") files := ` -- hugo.toml -- baseURL = "https://example.com" [caches] [caches.images] maxAge = "200ms" dir = ":resourceDir/_gen" -- content/_index.md -- --- title: "Home" --- -- assets/a/pixel.png -- iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg== -- layouts/index.html -- {{ warnf "HOME!" }} {{ $img := resources.GetMatch "**.png" }} {{ $img = $img.Resize "3x3" }} {{ $img.RelPermalink }} ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files, Running: true, RunGC: true, NeedsOsFS: true, LogLevel: logg.LevelInfo}, ).Build() b.Assert(b.GCCount, qt.Equals, 0) b.Assert(b.H, qt.IsNotNil) imagesCacheDir := filepath.Join("_gen", "images") _, err := b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir) b.Assert(err, qt.IsNil) // TODO(bep) we need a way to test full rebuilds. // For now, just sleep a little so the cache elements expires. time.Sleep(500 * time.Millisecond) b.RenameFile("assets/a/pixel.png", "assets/b/pixel2.png").Build() b.Assert(b.GCCount, qt.Equals, 1) // Build it again to GC the empty a dir. b.Build() _, err = b.H.BaseFs.ResourcesCache.Stat(filepath.Join(imagesCacheDir, "a")) b.Assert(err, qt.Not(qt.IsNil)) _, err = b.H.BaseFs.ResourcesCache.Stat(imagesCacheDir) b.Assert(err, qt.IsNil) } hugo-0.131.0/cache/filecache/filecache_pruner.go000066400000000000000000000057041465312036400214230ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package filecache import ( "fmt" "io" "os" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/hugofs" "github.com/spf13/afero" ) // Prune removes expired and unused items from this cache. // The last one requires a full build so the cache usage can be tracked. // Note that we operate directly on the filesystem here, so this is not // thread safe. func (c Caches) Prune() (int, error) { counter := 0 for k, cache := range c { count, err := cache.Prune(false) counter += count if err != nil { if herrors.IsNotExist(err) { continue } return counter, fmt.Errorf("failed to prune cache %q: %w", k, err) } } return counter, nil } // Prune removes expired and unused items from this cache. // If force is set, everything will be removed not considering expiry time. func (c *Cache) Prune(force bool) (int, error) { if c.pruneAllRootDir != "" { return c.pruneRootDir(force) } if err := c.init(); err != nil { return 0, err } counter := 0 err := afero.Walk(c.Fs, "", func(name string, info os.FileInfo, err error) error { if info == nil { return nil } name = cleanID(name) if info.IsDir() { f, err := c.Fs.Open(name) if err != nil { // This cache dir may not exist. return nil } _, err = f.Readdirnames(1) f.Close() if err == io.EOF { // Empty dir. if name == "." { // e.g. /_gen/images -- keep it even if empty. err = nil } else { err = c.Fs.Remove(name) } } if err != nil && !herrors.IsNotExist(err) { return err } return nil } shouldRemove := force || c.isExpired(info.ModTime()) if !shouldRemove && len(c.nlocker.seen) > 0 { // Remove it if it's not been touched/used in the last build. _, seen := c.nlocker.seen[name] shouldRemove = !seen } if shouldRemove { err := c.Fs.Remove(name) if err == nil { counter++ } if err != nil && !herrors.IsNotExist(err) { return err } } return nil }) return counter, err } func (c *Cache) pruneRootDir(force bool) (int, error) { if err := c.init(); err != nil { return 0, err } info, err := c.Fs.Stat(c.pruneAllRootDir) if err != nil { if herrors.IsNotExist(err) { return 0, nil } return 0, err } if !force && !c.isExpired(info.ModTime()) { return 0, nil } return hugofs.MakeReadableAndRemoveAllModulePkgDir(c.Fs, c.pruneAllRootDir) } hugo-0.131.0/cache/filecache/filecache_pruner_test.go000066400000000000000000000051071465312036400224570ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package filecache_test import ( "fmt" "testing" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/spf13/afero" qt "github.com/frankban/quicktest" ) func TestPrune(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getjson] maxAge = "200ms" dir = "/cache/c" [caches.getcsv] maxAge = "200ms" dir = "/cache/d" [caches.assets] maxAge = "200ms" dir = ":resourceDir/_gen" [caches.images] maxAge = "200ms" dir = ":resourceDir/_gen" ` for _, name := range []string{filecache.CacheKeyGetCSV, filecache.CacheKeyGetJSON, filecache.CacheKeyAssets, filecache.CacheKeyImages} { msg := qt.Commentf("cache: %s", name) p := newPathsSpec(t, afero.NewMemMapFs(), configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache := caches[name] for i := 0; i < 10; i++ { id := fmt.Sprintf("i%d", i) cache.GetOrCreateBytes(id, func() ([]byte, error) { return []byte("abc"), nil }) if i == 4 { // This will expire the first 5 time.Sleep(201 * time.Millisecond) } } count, err := caches.Prune() c.Assert(err, qt.IsNil) c.Assert(count, qt.Equals, 5, msg) for i := 0; i < 10; i++ { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i < 5 { c.Assert(v, qt.Equals, "") } else { c.Assert(v, qt.Equals, "abc") } } caches, err = filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache = caches[name] // Touch one and then prune. cache.GetOrCreateBytes("i5", func() ([]byte, error) { return []byte("abc"), nil }) count, err = caches.Prune() c.Assert(err, qt.IsNil) c.Assert(count, qt.Equals, 4) // Now only the i5 should be left. for i := 0; i < 10; i++ { id := fmt.Sprintf("i%d", i) v := cache.GetString(id) if i != 5 { c.Assert(v, qt.Equals, "") } else { c.Assert(v, qt.Equals, "abc") } } } } hugo-0.131.0/cache/filecache/filecache_test.go000066400000000000000000000151361465312036400210670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package filecache_test import ( "errors" "fmt" "io" "strings" "sync" "testing" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/spf13/afero" qt "github.com/frankban/quicktest" ) func TestFileCache(t *testing.T) { t.Parallel() c := qt.New(t) tempWorkingDir := t.TempDir() tempCacheDir := t.TempDir() osfs := afero.NewOsFs() for _, test := range []struct { cacheDir string workingDir string }{ // Run with same dirs twice to make sure that works. {tempCacheDir, tempWorkingDir}, {tempCacheDir, tempWorkingDir}, } { configStr := ` workingDir = "WORKING_DIR" resourceDir = "resources" cacheDir = "CACHEDIR" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getJSON] maxAge = "10h" dir = ":cacheDir/c" ` winPathSep := "\\\\" replacer := strings.NewReplacer("CACHEDIR", test.cacheDir, "WORKING_DIR", test.workingDir) configStr = replacer.Replace(configStr) configStr = strings.Replace(configStr, "\\", winPathSep, -1) p := newPathsSpec(t, osfs, configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) cache := caches.Get("GetJSON") c.Assert(cache, qt.Not(qt.IsNil)) cache = caches.Get("Images") c.Assert(cache, qt.Not(qt.IsNil)) rf := func(s string) func() (io.ReadCloser, error) { return func() (io.ReadCloser, error) { return struct { io.ReadSeeker io.Closer }{ strings.NewReader(s), io.NopCloser(nil), }, nil } } bf := func() ([]byte, error) { return []byte("bcd"), nil } for _, ca := range []*filecache.Cache{caches.ImageCache(), caches.AssetsCache(), caches.GetJSONCache(), caches.GetCSVCache()} { for i := 0; i < 2; i++ { info, r, err := ca.GetOrCreate("a", rf("abc")) c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "a") b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "abc") info, b, err = ca.GetOrCreateBytes("b", bf) c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "b") c.Assert(string(b), qt.Equals, "bcd") _, b, err = ca.GetOrCreateBytes("a", bf) c.Assert(err, qt.IsNil) c.Assert(string(b), qt.Equals, "abc") _, r, err = ca.GetOrCreate("a", rf("bcd")) c.Assert(err, qt.IsNil) b, _ = io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "abc") } } c.Assert(caches.Get("getJSON"), qt.Not(qt.IsNil)) info, w, err := caches.ImageCache().WriteCloser("mykey") c.Assert(err, qt.IsNil) c.Assert(info.Name, qt.Equals, "mykey") io.WriteString(w, "Hugo is great!") w.Close() c.Assert(caches.ImageCache().GetString("mykey"), qt.Equals, "Hugo is great!") info, r, err := caches.ImageCache().Get("mykey") c.Assert(err, qt.IsNil) c.Assert(r, qt.Not(qt.IsNil)) c.Assert(info.Name, qt.Equals, "mykey") b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, "Hugo is great!") info, b, err = caches.ImageCache().GetBytes("mykey") c.Assert(err, qt.IsNil) c.Assert(info.Name, qt.Equals, "mykey") c.Assert(string(b), qt.Equals, "Hugo is great!") } } func TestFileCacheConcurrent(t *testing.T) { t.Parallel() c := qt.New(t) configStr := ` resourceDir = "myresources" contentDir = "content" dataDir = "data" i18nDir = "i18n" layoutDir = "layouts" assetDir = "assets" archeTypedir = "archetypes" [caches] [caches.getjson] maxAge = "1s" dir = "/cache/c" ` p := newPathsSpec(t, afero.NewMemMapFs(), configStr) caches, err := filecache.NewCaches(p) c.Assert(err, qt.IsNil) const cacheName = "getjson" filenameData := func(i int) (string, string) { data := fmt.Sprintf("data: %d", i) filename := fmt.Sprintf("file%d", i) return filename, data } var wg sync.WaitGroup for i := 0; i < 50; i++ { wg.Add(1) go func(i int) { defer wg.Done() for j := 0; j < 20; j++ { ca := caches.Get(cacheName) c.Assert(ca, qt.Not(qt.IsNil)) filename, data := filenameData(i) _, r, err := ca.GetOrCreate(filename, func() (io.ReadCloser, error) { return hugio.ToReadCloser(strings.NewReader(data)), nil }) c.Assert(err, qt.IsNil) b, _ := io.ReadAll(r) r.Close() c.Assert(string(b), qt.Equals, data) // Trigger some expiration. time.Sleep(50 * time.Millisecond) } }(i) } wg.Wait() } func TestFileCacheReadOrCreateErrorInRead(t *testing.T) { t.Parallel() c := qt.New(t) var result string rf := func(failLevel int) func(info filecache.ItemInfo, r io.ReadSeeker) error { return func(info filecache.ItemInfo, r io.ReadSeeker) error { if failLevel > 0 { if failLevel > 1 { return filecache.ErrFatal } return errors.New("fail") } b, _ := io.ReadAll(r) result = string(b) return nil } } bf := func(s string) func(info filecache.ItemInfo, w io.WriteCloser) error { return func(info filecache.ItemInfo, w io.WriteCloser) error { defer w.Close() result = s _, err := w.Write([]byte(s)) return err } } cache := filecache.NewCache(afero.NewMemMapFs(), 100*time.Hour, "") const id = "a32" _, err := cache.ReadOrCreate(id, rf(0), bf("v1")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v1") _, err = cache.ReadOrCreate(id, rf(0), bf("v2")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v1") _, err = cache.ReadOrCreate(id, rf(1), bf("v3")) c.Assert(err, qt.IsNil) c.Assert(result, qt.Equals, "v3") _, err = cache.ReadOrCreate(id, rf(2), bf("v3")) c.Assert(err, qt.Equals, filecache.ErrFatal) } func newPathsSpec(t *testing.T, fs afero.Fs, configStr string) *helpers.PathSpec { c := qt.New(t) cfg, err := config.FromConfigString(configStr, "toml") c.Assert(err, qt.IsNil) acfg := testconfig.GetTestConfig(fs, cfg) p, err := helpers.NewPathSpec(hugofs.NewFrom(fs, acfg.BaseConfig()), acfg, nil) c.Assert(err, qt.IsNil) return p } hugo-0.131.0/cache/httpcache/000077500000000000000000000000001465312036400156305ustar00rootroot00000000000000hugo-0.131.0/cache/httpcache/httpcache.go000066400000000000000000000111121465312036400201160ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package httpcache import ( "encoding/json" "time" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/predicate" "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) // DefaultConfig holds the default configuration for the HTTP cache. var DefaultConfig = Config{ Cache: Cache{ For: GlobMatcher{ Excludes: []string{"**"}, }, }, Polls: []PollConfig{ { For: GlobMatcher{ Includes: []string{"**"}, }, Disable: true, }, }, } // Config holds the configuration for the HTTP cache. type Config struct { // Configures the HTTP cache behaviour (RFC 9111). // When this is not enabled for a resource, Hugo will go straight to the file cache. Cache Cache // Polls holds a list of configurations for polling remote resources to detect changes in watch mode. // This can be disabled for some resources, typically if they are known to not change. Polls []PollConfig } type Cache struct { // Enable HTTP cache behaviour (RFC 9111) for these rsources. For GlobMatcher } func (c *Config) Compile() (ConfigCompiled, error) { var cc ConfigCompiled p, err := c.Cache.For.CompilePredicate() if err != nil { return cc, err } cc.For = p for _, pc := range c.Polls { p, err := pc.For.CompilePredicate() if err != nil { return cc, err } cc.PollConfigs = append(cc.PollConfigs, PollConfigCompiled{ For: p, Config: pc, }) } return cc, nil } // PollConfig holds the configuration for polling remote resources to detect changes in watch mode. type PollConfig struct { // What remote resources to apply this configuration to. For GlobMatcher // Disable polling for this configuration. Disable bool // Low is the lower bound for the polling interval. // This is the starting point when the resource has recently changed, // if that resource stops changing, the polling interval will gradually increase towards High. Low time.Duration // High is the upper bound for the polling interval. // This is the interval used when the resource is stable. High time.Duration } func (c PollConfig) MarshalJSON() (b []byte, err error) { // Marshal the durations as strings. type Alias PollConfig return json.Marshal(&struct { Low string High string Alias }{ Low: c.Low.String(), High: c.High.String(), Alias: (Alias)(c), }) } type GlobMatcher struct { // Excludes holds a list of glob patterns that will be excluded. Excludes []string // Includes holds a list of glob patterns that will be included. Includes []string } type ConfigCompiled struct { For predicate.P[string] PollConfigs []PollConfigCompiled } func (c *ConfigCompiled) PollConfigFor(s string) PollConfigCompiled { for _, pc := range c.PollConfigs { if pc.For(s) { return pc } } return PollConfigCompiled{} } func (c *ConfigCompiled) IsPollingDisabled() bool { for _, pc := range c.PollConfigs { if !pc.Config.Disable { return false } } return true } type PollConfigCompiled struct { For predicate.P[string] Config PollConfig } func (p PollConfigCompiled) IsZero() bool { return p.For == nil } func (gm *GlobMatcher) CompilePredicate() (func(string) bool, error) { var p predicate.P[string] for _, include := range gm.Includes { g, err := glob.Compile(include, '/') if err != nil { return nil, err } fn := func(s string) bool { return g.Match(s) } p = p.Or(fn) } for _, exclude := range gm.Excludes { g, err := glob.Compile(exclude, '/') if err != nil { return nil, err } fn := func(s string) bool { return !g.Match(s) } p = p.And(fn) } return p, nil } func DecodeConfig(bcfg config.BaseConfig, m map[string]any) (Config, error) { if len(m) == 0 { return DefaultConfig, nil } var c Config dc := &mapstructure.DecoderConfig{ Result: &c, DecodeHook: mapstructure.StringToTimeDurationHookFunc(), WeaklyTypedInput: true, } decoder, err := mapstructure.NewDecoder(dc) if err != nil { return c, err } if err := decoder.Decode(m); err != nil { return c, err } return c, nil } hugo-0.131.0/cache/httpcache/httpcache_integration_test.go000066400000000000000000000034651465312036400235740ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package httpcache_test import ( "testing" "time" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/hugolib" ) func TestConfigCustom(t *testing.T) { files := ` -- hugo.toml -- [httpcache] [httpcache.cache.for] includes = ["**gohugo.io**"] [[httpcache.polls]] low = "5s" high = "32s" [httpcache.polls.for] includes = ["**gohugo.io**"] ` b := hugolib.Test(t, files) httpcacheConf := b.H.Configs.Base.HTTPCache compiled := b.H.Configs.Base.C.HTTPCache b.Assert(httpcacheConf.Cache.For.Includes, qt.DeepEquals, []string{"**gohugo.io**"}) b.Assert(httpcacheConf.Cache.For.Excludes, qt.IsNil) pc := compiled.PollConfigFor("https://gohugo.io/foo.jpg") b.Assert(pc.Config.Low, qt.Equals, 5*time.Second) b.Assert(pc.Config.High, qt.Equals, 32*time.Second) b.Assert(compiled.PollConfigFor("https://example.com/foo.jpg").IsZero(), qt.IsTrue) } func TestConfigDefault(t *testing.T) { files := ` -- hugo.toml -- ` b := hugolib.Test(t, files) compiled := b.H.Configs.Base.C.HTTPCache b.Assert(compiled.For("https://gohugo.io/posts.json"), qt.IsFalse) b.Assert(compiled.For("https://gohugo.io/foo.jpg"), qt.IsFalse) b.Assert(compiled.PollConfigFor("https://gohugo.io/foo.jpg").Config.Disable, qt.IsTrue) } hugo-0.131.0/cache/httpcache/httpcache_test.go000066400000000000000000000024101465312036400211560ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package httpcache import ( "testing" qt "github.com/frankban/quicktest" ) func TestGlobMatcher(t *testing.T) { c := qt.New(t) g := GlobMatcher{ Includes: []string{"**/*.jpg", "**.png", "**/bar/**"}, Excludes: []string{"**/foo.jpg", "**.css"}, } p, err := g.CompilePredicate() c.Assert(err, qt.IsNil) c.Assert(p("foo.jpg"), qt.IsFalse) c.Assert(p("foo.png"), qt.IsTrue) c.Assert(p("foo/bar.jpg"), qt.IsTrue) c.Assert(p("foo/bar.png"), qt.IsTrue) c.Assert(p("foo/bar/foo.jpg"), qt.IsFalse) c.Assert(p("foo/bar/foo.css"), qt.IsFalse) c.Assert(p("foo.css"), qt.IsFalse) c.Assert(p("foo/bar/foo.css"), qt.IsFalse) c.Assert(p("foo/bar/foo.xml"), qt.IsTrue) } hugo-0.131.0/check_gofmt.sh000077500000000000000000000000631465312036400154310ustar00rootroot00000000000000#!/usr/bin/env bash diff <(gofmt -d .) <(printf '')hugo-0.131.0/codegen/000077500000000000000000000000001465312036400142265ustar00rootroot00000000000000hugo-0.131.0/codegen/methods.go000066400000000000000000000303631465312036400162250ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. // Package codegen contains helpers for code generation. package codegen import ( "fmt" "go/ast" "go/parser" "go/token" "os" "path" "path/filepath" "reflect" "regexp" "sort" "strings" "sync" ) // Make room for insertions const weightWidth = 1000 // NewInspector creates a new Inspector given a source root. func NewInspector(root string) *Inspector { return &Inspector{ProjectRootDir: root} } // Inspector provides methods to help code generation. It uses a combination // of reflection and source code AST to do the heavy lifting. type Inspector struct { ProjectRootDir string init sync.Once // Determines method order. Go's reflect sorts lexicographically, so // we must parse the source to preserve this order. methodWeight map[string]map[string]int } // MethodsFromTypes create a method set from the include slice, excluding any // method in exclude. func (c *Inspector) MethodsFromTypes(include []reflect.Type, exclude []reflect.Type) Methods { c.parseSource() var methods Methods excludes := make(map[string]bool) if len(exclude) > 0 { for _, m := range c.MethodsFromTypes(exclude, nil) { excludes[m.Name] = true } } // There may be overlapping interfaces in types. Do a simple check for now. seen := make(map[string]bool) nameAndPackage := func(t reflect.Type) (string, string) { var name, pkg string isPointer := t.Kind() == reflect.Ptr if isPointer { t = t.Elem() } pkgPrefix := "" if pkgPath := t.PkgPath(); pkgPath != "" { pkgPath = strings.TrimSuffix(pkgPath, "/") _, shortPath := path.Split(pkgPath) pkgPrefix = shortPath + "." pkg = pkgPath } name = t.Name() if name == "" { // interface{} name = t.String() } if isPointer { pkgPrefix = "*" + pkgPrefix } name = pkgPrefix + name return name, pkg } for _, t := range include { for i := 0; i < t.NumMethod(); i++ { m := t.Method(i) if excludes[m.Name] || seen[m.Name] { continue } seen[m.Name] = true if m.PkgPath != "" { // Not exported continue } numIn := m.Type.NumIn() ownerName, _ := nameAndPackage(t) method := Method{Owner: t, OwnerName: ownerName, Name: m.Name} for i := 0; i < numIn; i++ { in := m.Type.In(i) name, pkg := nameAndPackage(in) if pkg != "" { method.Imports = append(method.Imports, pkg) } method.In = append(method.In, name) } numOut := m.Type.NumOut() if numOut > 0 { for i := 0; i < numOut; i++ { out := m.Type.Out(i) name, pkg := nameAndPackage(out) if pkg != "" { method.Imports = append(method.Imports, pkg) } method.Out = append(method.Out, name) } } methods = append(methods, method) } } sort.SliceStable(methods, func(i, j int) bool { mi, mj := methods[i], methods[j] wi := c.methodWeight[mi.OwnerName][mi.Name] wj := c.methodWeight[mj.OwnerName][mj.Name] if wi == wj { return mi.Name < mj.Name } return wi < wj }) return methods } func (c *Inspector) parseSource() { c.init.Do(func() { if !strings.Contains(c.ProjectRootDir, "hugo") { panic("dir must be set to the Hugo root") } c.methodWeight = make(map[string]map[string]int) dirExcludes := regexp.MustCompile("docs|examples") fileExcludes := regexp.MustCompile("autogen") var filenames []string filepath.Walk(c.ProjectRootDir, func(path string, info os.FileInfo, err error) error { if info.IsDir() { if dirExcludes.MatchString(info.Name()) { return filepath.SkipDir } } if !strings.HasSuffix(path, ".go") || fileExcludes.MatchString(path) { return nil } filenames = append(filenames, path) return nil }) for _, filename := range filenames { pkg := c.packageFromPath(filename) fset := token.NewFileSet() node, err := parser.ParseFile(fset, filename, nil, parser.ParseComments) if err != nil { panic(err) } ast.Inspect(node, func(n ast.Node) bool { switch t := n.(type) { case *ast.TypeSpec: if t.Name.IsExported() { switch it := t.Type.(type) { case *ast.InterfaceType: iface := pkg + "." + t.Name.Name methodNames := collectMethodsRecursive(pkg, it.Methods.List) weights := make(map[string]int) weight := weightWidth for _, name := range methodNames { weights[name] = weight weight += weightWidth } c.methodWeight[iface] = weights } } } return true }) } // Complement for _, v1 := range c.methodWeight { for k2, w := range v1 { if v, found := c.methodWeight[k2]; found { for k3, v3 := range v { v1[k3] = (v3 / weightWidth) + w } } } } }) } func (c *Inspector) packageFromPath(p string) string { p = filepath.ToSlash(p) base := path.Base(p) if !strings.Contains(base, ".") { return base } return path.Base(strings.TrimSuffix(p, base)) } // Method holds enough information about it to recreate it. type Method struct { // The interface we extracted this method from. Owner reflect.Type // String version of the above, on the form PACKAGE.NAME, e.g. // page.Page OwnerName string // Method name. Name string // Imports needed to satisfy the method signature. Imports []string // Argument types, including any package prefix, e.g. string, int, interface{}, // net.Url In []string // Return types. Out []string } // Declaration creates a method declaration (without any body) for the given receiver. func (m Method) Declaration(receiver string) string { return fmt.Sprintf("func (%s %s) %s%s %s", receiverShort(receiver), receiver, m.Name, m.inStr(), m.outStr()) } // DeclarationNamed creates a method declaration (without any body) for the given receiver // with named return values. func (m Method) DeclarationNamed(receiver string) string { return fmt.Sprintf("func (%s %s) %s%s %s", receiverShort(receiver), receiver, m.Name, m.inStr(), m.outStrNamed()) } // Delegate creates a delegate call string. func (m Method) Delegate(receiver, delegate string) string { ret := "" if len(m.Out) > 0 { ret = "return " } return fmt.Sprintf("%s%s.%s.%s%s", ret, receiverShort(receiver), delegate, m.Name, m.inOutStr()) } func (m Method) String() string { return m.Name + m.inStr() + " " + m.outStr() + "\n" } func (m Method) inOutStr() string { if len(m.In) == 0 { return "()" } args := make([]string, len(m.In)) for i := 0; i < len(args); i++ { args[i] = fmt.Sprintf("arg%d", i) } return "(" + strings.Join(args, ", ") + ")" } func (m Method) inStr() string { if len(m.In) == 0 { return "()" } args := make([]string, len(m.In)) for i := 0; i < len(args); i++ { args[i] = fmt.Sprintf("arg%d %s", i, m.In[i]) } return "(" + strings.Join(args, ", ") + ")" } func (m Method) outStr() string { if len(m.Out) == 0 { return "" } if len(m.Out) == 1 { return m.Out[0] } return "(" + strings.Join(m.Out, ", ") + ")" } func (m Method) outStrNamed() string { if len(m.Out) == 0 { return "" } outs := make([]string, len(m.Out)) for i := 0; i < len(outs); i++ { outs[i] = fmt.Sprintf("o%d %s", i, m.Out[i]) } return "(" + strings.Join(outs, ", ") + ")" } // Methods represents a list of methods for one or more interfaces. // The order matches the defined order in their source file(s). type Methods []Method // Imports returns a sorted list of package imports needed to satisfy the // signatures of all methods. func (m Methods) Imports() []string { var pkgImports []string for _, method := range m { pkgImports = append(pkgImports, method.Imports...) } if len(pkgImports) > 0 { pkgImports = uniqueNonEmptyStrings(pkgImports) sort.Strings(pkgImports) } return pkgImports } // ToMarshalJSON creates a MarshalJSON method for these methods. Any method name // matching any of the regexps in excludes will be ignored. func (m Methods) ToMarshalJSON(receiver, pkgPath string, excludes ...string) (string, []string) { var sb strings.Builder r := receiverShort(receiver) what := firstToUpper(trimAsterisk(receiver)) pgkName := path.Base(pkgPath) fmt.Fprintf(&sb, "func Marshal%sToJSON(%s %s) ([]byte, error) {\n", what, r, receiver) var methods Methods excludeRes := make([]*regexp.Regexp, len(excludes)) for i, exclude := range excludes { excludeRes[i] = regexp.MustCompile(exclude) } for _, method := range m { // Exclude methods with arguments and incompatible return values if len(method.In) > 0 || len(method.Out) == 0 || len(method.Out) > 2 { continue } if len(method.Out) == 2 { if method.Out[1] != "error" { continue } } for _, re := range excludeRes { if re.MatchString(method.Name) { continue } } methods = append(methods, method) } for _, method := range methods { varn := varName(method.Name) if len(method.Out) == 1 { fmt.Fprintf(&sb, "\t%s := %s.%s()\n", varn, r, method.Name) } else { fmt.Fprintf(&sb, "\t%s, err := %s.%s()\n", varn, r, method.Name) fmt.Fprint(&sb, "\tif err != nil {\n\t\treturn nil, err\n\t}\n") } } fmt.Fprint(&sb, "\n\ts := struct {\n") for _, method := range methods { fmt.Fprintf(&sb, "\t\t%s %s\n", method.Name, typeName(method.Out[0], pgkName)) } fmt.Fprint(&sb, "\n\t}{\n") for _, method := range methods { varn := varName(method.Name) fmt.Fprintf(&sb, "\t\t%s: %s,\n", method.Name, varn) } fmt.Fprint(&sb, "\n\t}\n\n") fmt.Fprint(&sb, "\treturn json.Marshal(&s)\n}") pkgImports := append(methods.Imports(), "encoding/json") if pkgPath != "" { // Exclude self for i, pkgImp := range pkgImports { if pkgImp == pkgPath { pkgImports = append(pkgImports[:i], pkgImports[i+1:]...) } } } return sb.String(), pkgImports } func collectMethodsRecursive(pkg string, f []*ast.Field) []string { var methodNames []string for _, m := range f { if m.Names != nil { methodNames = append(methodNames, m.Names[0].Name) continue } if ident, ok := m.Type.(*ast.Ident); ok && ident.Obj != nil { switch tt := ident.Obj.Decl.(*ast.TypeSpec).Type.(type) { case *ast.InterfaceType: // Embedded interface methodNames = append( methodNames, collectMethodsRecursive( pkg, tt.Methods.List)...) } } else { // Embedded, but in a different file/package. Return the // package.Name and deal with that later. name := packageName(m.Type) if !strings.Contains(name, ".") { // Assume current package name = pkg + "." + name } methodNames = append(methodNames, name) } } return methodNames } func firstToLower(name string) string { return strings.ToLower(name[:1]) + name[1:] } func firstToUpper(name string) string { return strings.ToUpper(name[:1]) + name[1:] } func packageName(e ast.Expr) string { switch tp := e.(type) { case *ast.Ident: return tp.Name case *ast.SelectorExpr: return fmt.Sprintf("%s.%s", packageName(tp.X), packageName(tp.Sel)) } return "" } func receiverShort(receiver string) string { return strings.ToLower(trimAsterisk(receiver))[:1] } func trimAsterisk(name string) string { return strings.TrimPrefix(name, "*") } func typeName(name, pkg string) string { return strings.TrimPrefix(name, pkg+".") } func uniqueNonEmptyStrings(s []string) []string { var unique []string set := map[string]any{} for _, val := range s { if val == "" { continue } if _, ok := set[val]; !ok { unique = append(unique, val) set[val] = val } } return unique } func varName(name string) string { name = firstToLower(name) // Adjust some reserved keywords, see https://golang.org/ref/spec#Keywords switch name { case "type": name = "typ" case "package": name = "pkg" // Not reserved, but syntax highlighters has it as a keyword. case "len": name = "length" } return name } hugo-0.131.0/codegen/methods2_test.go000066400000000000000000000013221465312036400173370ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package codegen type IEmbed interface { MethodEmbed3(s string) string MethodEmbed1() string MethodEmbed2() } hugo-0.131.0/codegen/methods_test.go000066400000000000000000000050511465312036400172600ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package codegen import ( "fmt" "net" "os" "reflect" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/herrors" ) func TestMethods(t *testing.T) { var ( zeroIE = reflect.TypeOf((*IEmbed)(nil)).Elem() zeroIEOnly = reflect.TypeOf((*IEOnly)(nil)).Elem() zeroI = reflect.TypeOf((*I)(nil)).Elem() ) dir, _ := os.Getwd() insp := NewInspector(dir) t.Run("MethodsFromTypes", func(t *testing.T) { c := qt.New(t) methods := insp.MethodsFromTypes([]reflect.Type{zeroI}, nil) methodsStr := fmt.Sprint(methods) c.Assert(methodsStr, qt.Contains, "Method1(arg0 herrors.ErrorContext)") c.Assert(methodsStr, qt.Contains, "Method7() interface {}") c.Assert(methodsStr, qt.Contains, "Method0() string\n Method4() string") c.Assert(methodsStr, qt.Contains, "MethodEmbed3(arg0 string) string\n MethodEmbed1() string") c.Assert(methods.Imports(), qt.Contains, "github.com/gohugoio/hugo/common/herrors") }) t.Run("EmbedOnly", func(t *testing.T) { c := qt.New(t) methods := insp.MethodsFromTypes([]reflect.Type{zeroIEOnly}, nil) methodsStr := fmt.Sprint(methods) c.Assert(methodsStr, qt.Contains, "MethodEmbed3(arg0 string) string") }) t.Run("ToMarshalJSON", func(t *testing.T) { c := qt.New(t) m, pkg := insp.MethodsFromTypes( []reflect.Type{zeroI}, []reflect.Type{zeroIE}).ToMarshalJSON("*page", "page") c.Assert(m, qt.Contains, "method6 := p.Method6()") c.Assert(m, qt.Contains, "Method0: method0,") c.Assert(m, qt.Contains, "return json.Marshal(&s)") c.Assert(pkg, qt.Contains, "github.com/gohugoio/hugo/common/herrors") c.Assert(pkg, qt.Contains, "encoding/json") fmt.Println(pkg) }) } type I interface { IEmbed Method0() string Method4() string Method1(myerr herrors.ErrorContext) Method3(myint int, mystring string) Method5() (string, error) Method6() *net.IP Method7() any Method8() herrors.ErrorContext method2() method9() os.FileInfo } type IEOnly interface { IEmbed } hugo-0.131.0/commands/000077500000000000000000000000001465312036400144235ustar00rootroot00000000000000hugo-0.131.0/commands/commandeer.go000066400000000000000000000462551465312036400171000ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "errors" "fmt" "io" "log" "os" "os/signal" "path/filepath" "runtime" "strings" "sync" "sync/atomic" "syscall" "time" "go.uber.org/automaxprocs/maxprocs" "github.com/bep/clocks" "github.com/bep/lazycache" "github.com/bep/logg" "github.com/bep/overlayfs" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/hstrings" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/resources/kinds" "github.com/spf13/afero" "github.com/spf13/cobra" ) var errHelp = errors.New("help requested") // Execute executes a command. func Execute(args []string) error { // Default GOMAXPROCS to be CPU limit aware, still respecting GOMAXPROCS env. maxprocs.Set() x, err := newExec() if err != nil { return err } args = mapLegacyArgs(args) cd, err := x.Execute(context.Background(), args) if err != nil { if err == errHelp { cd.CobraCommand.Help() fmt.Println() return nil } if simplecobra.IsCommandError(err) { // Print the help, but also return the error to fail the command. cd.CobraCommand.Help() fmt.Println() } } return err } type commonConfig struct { mu *sync.Mutex configs *allconfig.Configs cfg config.Provider fs *hugofs.Fs } // This is the root command. type rootCommand struct { Printf func(format string, v ...interface{}) Println func(a ...interface{}) Out io.Writer logger loggers.Logger // The main cache busting key for the caches below. configVersionID atomic.Int32 // Some, but not all commands need access to these. // Some needs more than one, so keep them in a small cache. commonConfigs *lazycache.Cache[int32, *commonConfig] hugoSites *lazycache.Cache[int32, *hugolib.HugoSites] // changesFromBuild received from Hugo in watch mode. changesFromBuild chan []identity.Identity commands []simplecobra.Commander // Flags source string buildWatch bool environment string // Common build flags. baseURL string gc bool poll string forceSyncStatic bool // Profile flags (for debugging of performance problems) cpuprofile string memprofile string mutexprofile string traceprofile string printm bool logLevel string verbose bool debug bool quiet bool devMode bool // Hidden flag. renderToMemory bool cfgFile string cfgDir string } func (r *rootCommand) isVerbose() bool { return r.logger.Level() <= logg.LevelInfo } func (r *rootCommand) Build(cd *simplecobra.Commandeer, bcfg hugolib.BuildCfg, cfg config.Provider) (*hugolib.HugoSites, error) { h, err := r.Hugo(cfg) if err != nil { return nil, err } if err := h.Build(bcfg); err != nil { return nil, err } return h, nil } func (r *rootCommand) Commands() []simplecobra.Commander { return r.commands } func (r *rootCommand) ConfigFromConfig(key int32, oldConf *commonConfig) (*commonConfig, error) { cc, _, err := r.commonConfigs.GetOrCreate(key, func(key int32) (*commonConfig, error) { fs := oldConf.fs configs, err := allconfig.LoadConfig( allconfig.ConfigSourceDescriptor{ Flags: oldConf.cfg, Fs: fs.Source, Filename: r.cfgFile, ConfigDir: r.cfgDir, Logger: r.logger, Environment: r.environment, }, ) if err != nil { return nil, err } if !configs.Base.C.Clock.IsZero() { // TODO(bep) find a better place for this. htime.Clock = clocks.Start(configs.Base.C.Clock) } return &commonConfig{ mu: oldConf.mu, configs: configs, cfg: oldConf.cfg, fs: fs, }, nil }) return cc, err } func (r *rootCommand) ConfigFromProvider(key int32, cfg config.Provider) (*commonConfig, error) { if cfg == nil { panic("cfg must be set") } cc, _, err := r.commonConfigs.GetOrCreate(key, func(key int32) (*commonConfig, error) { var dir string if r.source != "" { dir, _ = filepath.Abs(r.source) } else { dir, _ = os.Getwd() } if cfg == nil { cfg = config.New() } if !cfg.IsSet("workingDir") { cfg.Set("workingDir", dir) } else { if err := os.MkdirAll(cfg.GetString("workingDir"), 0o777); err != nil { return nil, fmt.Errorf("failed to create workingDir: %w", err) } } // Load the config first to allow publishDir to be configured in config file. configs, err := allconfig.LoadConfig( allconfig.ConfigSourceDescriptor{ Flags: cfg, Fs: hugofs.Os, Filename: r.cfgFile, ConfigDir: r.cfgDir, Environment: r.environment, Logger: r.logger, }, ) if err != nil { return nil, err } base := configs.Base cfg.Set("publishDir", base.PublishDir) cfg.Set("publishDirStatic", base.PublishDir) cfg.Set("publishDirDynamic", base.PublishDir) renderStaticToDisk := cfg.GetBool("renderStaticToDisk") sourceFs := hugofs.Os var destinationFs afero.Fs if cfg.GetBool("renderToMemory") { destinationFs = afero.NewMemMapFs() if renderStaticToDisk { // Hybrid, render dynamic content to Root. cfg.Set("publishDirDynamic", "/") } else { // Rendering to memoryFS, publish to Root regardless of publishDir. cfg.Set("publishDirDynamic", "/") cfg.Set("publishDirStatic", "/") } } else { destinationFs = hugofs.Os } fs := hugofs.NewFromSourceAndDestination(sourceFs, destinationFs, cfg) if renderStaticToDisk { dynamicFs := fs.PublishDir publishDirStatic := cfg.GetString("publishDirStatic") workingDir := cfg.GetString("workingDir") absPublishDirStatic := paths.AbsPathify(workingDir, publishDirStatic) staticFs := hugofs.NewBasePathFs(afero.NewOsFs(), absPublishDirStatic) // Serve from both the static and dynamic fs, // the first will take priority. // THis is a read-only filesystem, // we do all the writes to // fs.Destination and fs.DestinationStatic. fs.PublishDirServer = overlayfs.New( overlayfs.Options{ Fss: []afero.Fs{ dynamicFs, staticFs, }, }, ) fs.PublishDirStatic = staticFs } if !base.C.Clock.IsZero() { // TODO(bep) find a better place for this. htime.Clock = clocks.Start(configs.Base.C.Clock) } if base.PrintPathWarnings { // Note that we only care about the "dynamic creates" here, // so skip the static fs. fs.PublishDir = hugofs.NewCreateCountingFs(fs.PublishDir) } commonConfig := &commonConfig{ mu: &sync.Mutex{}, configs: configs, cfg: cfg, fs: fs, } return commonConfig, nil }) return cc, err } func (r *rootCommand) HugFromConfig(conf *commonConfig) (*hugolib.HugoSites, error) { h, _, err := r.hugoSites.GetOrCreate(r.configVersionID.Load(), func(key int32) (*hugolib.HugoSites, error) { depsCfg := r.newDepsConfig(conf) return hugolib.NewHugoSites(depsCfg) }) return h, err } func (r *rootCommand) Hugo(cfg config.Provider) (*hugolib.HugoSites, error) { h, _, err := r.hugoSites.GetOrCreate(r.configVersionID.Load(), func(key int32) (*hugolib.HugoSites, error) { conf, err := r.ConfigFromProvider(key, cfg) if err != nil { return nil, err } depsCfg := r.newDepsConfig(conf) return hugolib.NewHugoSites(depsCfg) }) return h, err } func (r *rootCommand) newDepsConfig(conf *commonConfig) deps.DepsCfg { return deps.DepsCfg{Configs: conf.configs, Fs: conf.fs, LogOut: r.logger.Out(), LogLevel: r.logger.Level(), ChangesFromBuild: r.changesFromBuild} } func (r *rootCommand) Name() string { return "hugo" } func (r *rootCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { b := newHugoBuilder(r, nil) if !r.buildWatch { defer b.postBuild("Total", time.Now()) } if err := b.loadConfig(cd, false); err != nil { return err } err := func() error { if r.buildWatch { defer r.timeTrack(time.Now(), "Built") } err := b.build() if err != nil { return err } return nil }() if err != nil { return err } if !r.buildWatch { // Done. return nil } watchDirs, err := b.getDirList() if err != nil { return err } watchGroups := helpers.ExtractAndGroupRootPaths(watchDirs) for _, group := range watchGroups { r.Printf("Watching for changes in %s\n", group) } watcher, err := b.newWatcher(r.poll, watchDirs...) if err != nil { return err } defer watcher.Close() r.Println("Press Ctrl+C to stop") sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) <-sigs return nil } func (r *rootCommand) PreRun(cd, runner *simplecobra.Commandeer) error { r.Out = os.Stdout if r.quiet { r.Out = io.Discard } // Used by mkcert (server). log.SetOutput(r.Out) r.Printf = func(format string, v ...interface{}) { if !r.quiet { fmt.Fprintf(r.Out, format, v...) } } r.Println = func(a ...interface{}) { if !r.quiet { fmt.Fprintln(r.Out, a...) } } _, running := runner.Command.(*serverCommand) var err error r.logger, err = r.createLogger(running) if err != nil { return err } r.changesFromBuild = make(chan []identity.Identity, 10) r.commonConfigs = lazycache.New(lazycache.Options[int32, *commonConfig]{MaxEntries: 5}) // We don't want to keep stale HugoSites in memory longer than needed. r.hugoSites = lazycache.New(lazycache.Options[int32, *hugolib.HugoSites]{ MaxEntries: 1, OnEvict: func(key int32, value *hugolib.HugoSites) { value.Close() runtime.GC() }, }) return nil } func (r *rootCommand) createLogger(running bool) (loggers.Logger, error) { level := logg.LevelWarn if r.devMode { level = logg.LevelTrace } else { if r.logLevel != "" { switch strings.ToLower(r.logLevel) { case "debug": level = logg.LevelDebug case "info": level = logg.LevelInfo case "warn", "warning": level = logg.LevelWarn case "error": level = logg.LevelError default: return nil, fmt.Errorf("invalid log level: %q, must be one of debug, warn, info or error", r.logLevel) } } else { if r.verbose { hugo.Deprecate("--verbose", "use --logLevel info", "v0.114.0") hugo.Deprecate("--verbose", "use --logLevel info", "v0.114.0") level = logg.LevelInfo } if r.debug { hugo.Deprecate("--debug", "use --logLevel debug", "v0.114.0") level = logg.LevelDebug } } } optsLogger := loggers.Options{ DistinctLevel: logg.LevelWarn, Level: level, Stdout: r.Out, Stderr: r.Out, StoreErrors: running, } return loggers.New(optsLogger), nil } func (r *rootCommand) Reset() { r.logger.Reset() loggers.Log().Reset() } // IsTestRun reports whether the command is running as a test. func (r *rootCommand) IsTestRun() bool { return os.Getenv("HUGO_TESTRUN") != "" } func (r *rootCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Use = "hugo [flags]" cmd.Short = "hugo builds your site" cmd.Long = `hugo is the main command, used to build your Hugo site. Hugo is a Fast and Flexible Static Site Generator built with love by spf13 and friends in Go. Complete documentation is available at https://gohugo.io/.` // Configure persistent flags cmd.PersistentFlags().StringVarP(&r.source, "source", "s", "", "filesystem path to read files relative from") _ = cmd.MarkFlagDirname("source") cmd.PersistentFlags().StringP("destination", "d", "", "filesystem path to write files to") _ = cmd.MarkFlagDirname("destination") cmd.PersistentFlags().StringVarP(&r.environment, "environment", "e", "", "build environment") _ = cmd.RegisterFlagCompletionFunc("environment", cobra.NoFileCompletions) cmd.PersistentFlags().StringP("themesDir", "", "", "filesystem path to themes directory") _ = cmd.MarkFlagDirname("themesDir") cmd.PersistentFlags().StringP("ignoreVendorPaths", "", "", "ignores any _vendor for module paths matching the given Glob pattern") _ = cmd.RegisterFlagCompletionFunc("ignoreVendorPaths", cobra.NoFileCompletions) cmd.PersistentFlags().String("clock", "", "set the clock used by Hugo, e.g. --clock 2021-11-06T22:30:00.00+09:00") _ = cmd.RegisterFlagCompletionFunc("clock", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&r.cfgFile, "config", "", "config file (default is hugo.yaml|json|toml)") _ = cmd.MarkFlagFilename("config", config.ValidConfigFileExtensions...) cmd.PersistentFlags().StringVar(&r.cfgDir, "configDir", "config", "config dir") _ = cmd.MarkFlagDirname("configDir") cmd.PersistentFlags().BoolVar(&r.quiet, "quiet", false, "build in quiet mode") cmd.PersistentFlags().BoolVarP(&r.renderToMemory, "renderToMemory", "M", false, "render to memory (mostly useful when running the server)") cmd.PersistentFlags().BoolVarP(&r.verbose, "verbose", "v", false, "verbose output") cmd.PersistentFlags().BoolVarP(&r.debug, "debug", "", false, "debug output") cmd.PersistentFlags().BoolVarP(&r.devMode, "devMode", "", false, "only used for internal testing, flag hidden.") cmd.PersistentFlags().StringVar(&r.logLevel, "logLevel", "", "log level (debug|info|warn|error)") _ = cmd.RegisterFlagCompletionFunc("logLevel", cobra.FixedCompletions([]string{"debug", "info", "warn", "error"}, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().BoolVarP(&r.buildWatch, "watch", "w", false, "watch filesystem for changes and recreate as needed") cmd.PersistentFlags().MarkHidden("devMode") // Configure local flags applyLocalFlagsBuild(cmd, r) return nil } // A sub set of the complete build flags. These flags are used by new and mod. func applyLocalFlagsBuildConfig(cmd *cobra.Command, r *rootCommand) { cmd.Flags().StringSliceP("theme", "t", []string{}, "themes to use (located in /themes/THEMENAME/)") _ = cmd.MarkFlagDirname("theme") cmd.Flags().StringVarP(&r.baseURL, "baseURL", "b", "", "hostname (and path) to the root, e.g. https://spf13.com/") cmd.Flags().StringP("cacheDir", "", "", "filesystem path to cache directory") _ = cmd.MarkFlagDirname("cacheDir") cmd.Flags().StringP("contentDir", "c", "", "filesystem path to content directory") cmd.Flags().StringSliceP("renderSegments", "", []string{}, "named segments to render (configured in the segments config)") } // Flags needed to do a build (used by hugo and hugo server commands) func applyLocalFlagsBuild(cmd *cobra.Command, r *rootCommand) { applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().Bool("cleanDestinationDir", false, "remove files from destination not found in static directories") cmd.Flags().BoolP("buildDrafts", "D", false, "include content marked as draft") cmd.Flags().BoolP("buildFuture", "F", false, "include content with publishdate in the future") cmd.Flags().BoolP("buildExpired", "E", false, "include expired content") cmd.Flags().BoolP("ignoreCache", "", false, "ignores the cache directory") cmd.Flags().Bool("enableGitInfo", false, "add Git revision, date, author, and CODEOWNERS info to the pages") cmd.Flags().StringP("layoutDir", "l", "", "filesystem path to layout directory") _ = cmd.MarkFlagDirname("layoutDir") cmd.Flags().BoolVar(&r.gc, "gc", false, "enable to run some cleanup tasks (remove unused cache files) after the build") cmd.Flags().StringVar(&r.poll, "poll", "", "set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes") _ = cmd.RegisterFlagCompletionFunc("poll", cobra.NoFileCompletions) cmd.Flags().Bool("panicOnWarning", false, "panic on first WARNING log") cmd.Flags().Bool("templateMetrics", false, "display metrics about template executions") cmd.Flags().Bool("templateMetricsHints", false, "calculate some improvement hints when combined with --templateMetrics") cmd.Flags().BoolVar(&r.forceSyncStatic, "forceSyncStatic", false, "copy all files when static is changed.") cmd.Flags().BoolP("noTimes", "", false, "don't sync modification time of files") cmd.Flags().BoolP("noChmod", "", false, "don't sync permission mode of files") cmd.Flags().BoolP("noBuildLock", "", false, "don't create .hugo_build.lock file") cmd.Flags().BoolP("printI18nWarnings", "", false, "print missing translations") cmd.Flags().BoolP("printPathWarnings", "", false, "print warnings on duplicate target paths etc.") cmd.Flags().BoolP("printUnusedTemplates", "", false, "print warnings on unused templates.") cmd.Flags().StringVarP(&r.cpuprofile, "profile-cpu", "", "", "write cpu profile to `file`") cmd.Flags().StringVarP(&r.memprofile, "profile-mem", "", "", "write memory profile to `file`") cmd.Flags().BoolVarP(&r.printm, "printMemoryUsage", "", false, "print memory usage to screen at intervals") cmd.Flags().StringVarP(&r.mutexprofile, "profile-mutex", "", "", "write Mutex profile to `file`") cmd.Flags().StringVarP(&r.traceprofile, "trace", "", "", "write trace to `file` (not useful in general)") // Hide these for now. cmd.Flags().MarkHidden("profile-cpu") cmd.Flags().MarkHidden("profile-mem") cmd.Flags().MarkHidden("profile-mutex") cmd.Flags().StringSlice("disableKinds", []string{}, "disable different kind of pages (home, RSS etc.)") _ = cmd.RegisterFlagCompletionFunc("disableKinds", cobra.FixedCompletions(kinds.AllKinds, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().Bool("minify", false, "minify any supported output format (HTML, XML etc.)") } func (r *rootCommand) timeTrack(start time.Time, name string) { elapsed := time.Since(start) r.Printf("%s in %v ms\n", name, int(1000*elapsed.Seconds())) } type simpleCommand struct { use string name string short string long string run func(ctx context.Context, cd *simplecobra.Commandeer, rootCmd *rootCommand, args []string) error withc func(cmd *cobra.Command, r *rootCommand) initc func(cd *simplecobra.Commandeer) error commands []simplecobra.Commander rootCmd *rootCommand } func (c *simpleCommand) Commands() []simplecobra.Commander { return c.commands } func (c *simpleCommand) Name() string { return c.name } func (c *simpleCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { if c.run == nil { return nil } return c.run(ctx, cd, c.rootCmd, args) } func (c *simpleCommand) Init(cd *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = c.short cmd.Long = c.long if c.use != "" { cmd.Use = c.use } if c.withc != nil { c.withc(cmd, c.rootCmd) } return nil } func (c *simpleCommand) PreRun(cd, runner *simplecobra.Commandeer) error { if c.initc != nil { return c.initc(cd) } return nil } func mapLegacyArgs(args []string) []string { if len(args) > 1 && args[0] == "new" && !hstrings.EqualAny(args[1], "site", "theme", "content") { // Insert "content" as the second argument args = append(args[:1], append([]string{"content"}, args[1:]...)...) } return args } hugo-0.131.0/commands/commands.go000066400000000000000000000021411465312036400165510ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "github.com/bep/simplecobra" ) // newExec wires up all of Hugo's CLI. func newExec() (*simplecobra.Exec, error) { rootCmd := &rootCommand{ commands: []simplecobra.Commander{ newVersionCmd(), newEnvCommand(), newServerCommand(), newDeployCommand(), newConfigCommand(), newNewCommand(), newConvertCommand(), newImportCommand(), newListCommand(), newModCommands(), newGenCommand(), newReleaseCommand(), }, } return simplecobra.New(rootCmd) } hugo-0.131.0/commands/config.go000066400000000000000000000144521465312036400162250ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "encoding/json" "fmt" "os" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/cobra" ) // newConfigCommand creates a new config command and its subcommands. func newConfigCommand() *configCommand { return &configCommand{ commands: []simplecobra.Commander{ &configMountsCommand{}, }, } } type configCommand struct { r *rootCommand format string lang string commands []simplecobra.Commander } func (c *configCommand) Commands() []simplecobra.Commander { return c.commands } func (c *configCommand) Name() string { return "config" } func (c *configCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { conf, err := c.r.ConfigFromProvider(c.r.configVersionID.Load(), flagsToCfg(cd, nil)) if err != nil { return err } var config *allconfig.Config if c.lang != "" { var found bool config, found = conf.configs.LanguageConfigMap[c.lang] if !found { return fmt.Errorf("language %q not found", c.lang) } } else { config = conf.configs.LanguageConfigSlice[0] } var buf bytes.Buffer dec := json.NewEncoder(&buf) dec.SetIndent("", " ") dec.SetEscapeHTML(false) if err := dec.Encode(parser.ReplacingJSONMarshaller{Value: config, KeysToLower: true, OmitEmpty: true}); err != nil { return err } format := strings.ToLower(c.format) switch format { case "json": os.Stdout.Write(buf.Bytes()) default: // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. var m map[string]interface{} if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } maps.ConvertFloat64WithNoDecimalsToInt(m) switch format { case "yaml": return parser.InterfaceToConfig(m, metadecoders.YAML, os.Stdout) case "toml": return parser.InterfaceToConfig(m, metadecoders.TOML, os.Stdout) default: return fmt.Errorf("unsupported format: %q", format) } } return nil } func (c *configCommand) Init(cd *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = "Print the site configuration" cmd.Long = `Print the site configuration, both default and custom settings.` cmd.Flags().StringVar(&c.format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) cmd.Flags().StringVar(&c.lang, "lang", "", "the language to display config for. Defaults to the first language defined.") _ = cmd.RegisterFlagCompletionFunc("lang", cobra.NoFileCompletions) applyLocalFlagsBuildConfig(cmd, c.r) return nil } func (c *configCommand) PreRun(cd, runner *simplecobra.Commandeer) error { return nil } type configModMount struct { Source string `json:"source"` Target string `json:"target"` Lang string `json:"lang,omitempty"` } type configModMounts struct { verbose bool m modules.Module } // MarshalJSON is for internal use only. func (m *configModMounts) MarshalJSON() ([]byte, error) { var mounts []configModMount for _, mount := range m.m.Mounts() { mounts = append(mounts, configModMount{ Source: mount.Source, Target: mount.Target, Lang: mount.Lang, }) } var ownerPath string if m.m.Owner() != nil { ownerPath = m.m.Owner().Path() } if m.verbose { config := m.m.Config() return json.Marshal(&struct { Path string `json:"path"` Version string `json:"version"` Time time.Time `json:"time"` Owner string `json:"owner"` Dir string `json:"dir"` Meta map[string]any `json:"meta"` HugoVersion modules.HugoVersion `json:"hugoVersion"` Mounts []configModMount `json:"mounts"` }{ Path: m.m.Path(), Version: m.m.Version(), Time: m.m.Time(), Owner: ownerPath, Dir: m.m.Dir(), Meta: config.Params, HugoVersion: config.HugoVersion, Mounts: mounts, }) } return json.Marshal(&struct { Path string `json:"path"` Version string `json:"version"` Time time.Time `json:"time"` Owner string `json:"owner"` Dir string `json:"dir"` Mounts []configModMount `json:"mounts"` }{ Path: m.m.Path(), Version: m.m.Version(), Time: m.m.Time(), Owner: ownerPath, Dir: m.m.Dir(), Mounts: mounts, }) } type configMountsCommand struct { r *rootCommand configCmd *configCommand } func (c *configMountsCommand) Commands() []simplecobra.Commander { return nil } func (c *configMountsCommand) Name() string { return "mounts" } func (c *configMountsCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { r := c.configCmd.r conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, nil)) if err != nil { return err } for _, m := range conf.configs.Modules { if err := parser.InterfaceToConfig(&configModMounts{m: m, verbose: r.isVerbose()}, metadecoders.JSON, os.Stdout); err != nil { return err } } return nil } func (c *configMountsCommand) Init(cd *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cmd := cd.CobraCommand cmd.Short = "Print the configured file mounts" cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, c.r) return nil } func (c *configMountsCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.configCmd = cd.Parent.Command.(*configCommand) return nil } hugo-0.131.0/commands/convert.go000066400000000000000000000143431465312036400164370ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "fmt" "path/filepath" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/gohugoio/hugo/parser/pageparser" "github.com/gohugoio/hugo/resources/page" "github.com/spf13/cobra" ) func newConvertCommand() *convertCommand { var c *convertCommand c = &convertCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "toJSON", short: "Convert front matter to JSON", long: `toJSON converts all front matter in the content directory to use JSON for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.JSON) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "toTOML", short: "Convert front matter to TOML", long: `toTOML converts all front matter in the content directory to use TOML for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.TOML) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "toYAML", short: "Convert front matter to YAML", long: `toYAML converts all front matter in the content directory to use YAML for the front matter.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return c.convertContents(metadecoders.YAML) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, }, } return c } type convertCommand struct { // Flags. outputDir string unsafe bool // Deps. r *rootCommand h *hugolib.HugoSites // Commands. commands []simplecobra.Commander } func (c *convertCommand) Commands() []simplecobra.Commander { return c.commands } func (c *convertCommand) Name() string { return "convert" } func (c *convertCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *convertCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Convert your content to different formats" cmd.Long = `Convert your content (e.g. front matter) to different formats. See convert's subcommands toJSON, toTOML and toYAML for more information.` cmd.PersistentFlags().StringVarP(&c.outputDir, "output", "o", "", "filesystem path to write files to") _ = cmd.MarkFlagDirname("output") cmd.PersistentFlags().BoolVar(&c.unsafe, "unsafe", false, "enable less safe operations, please backup first") cmd.RunE = nil return nil } func (c *convertCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) cfg := config.New() cfg.Set("buildDrafts", true) h, err := c.r.Hugo(flagsToCfg(cd, cfg)) if err != nil { return err } c.h = h return nil } func (c *convertCommand) convertAndSavePage(p page.Page, site *hugolib.Site, targetFormat metadecoders.Format) error { // The resources are not in .Site.AllPages. for _, r := range p.Resources().ByType("page") { if err := c.convertAndSavePage(r.(page.Page), site, targetFormat); err != nil { return err } } if p.File() == nil { // No content file. return nil } errMsg := fmt.Errorf("error processing file %q", p.File().Path()) site.Log.Infoln("attempting to convert", p.File().Filename()) f := p.File() file, err := f.FileInfo().Meta().Open() if err != nil { site.Log.Errorln(errMsg) file.Close() return nil } pf, err := pageparser.ParseFrontMatterAndContent(file) if err != nil { site.Log.Errorln(errMsg) file.Close() return err } file.Close() // better handling of dates in formats that don't have support for them if pf.FrontMatterFormat == metadecoders.JSON || pf.FrontMatterFormat == metadecoders.YAML || pf.FrontMatterFormat == metadecoders.TOML { for k, v := range pf.FrontMatter { switch vv := v.(type) { case time.Time: pf.FrontMatter[k] = vv.Format(time.RFC3339) } } } var newContent bytes.Buffer err = parser.InterfaceToFrontMatter(pf.FrontMatter, targetFormat, &newContent) if err != nil { site.Log.Errorln(errMsg) return err } newContent.Write(pf.Content) newFilename := p.File().Filename() if c.outputDir != "" { contentDir := strings.TrimSuffix(newFilename, p.File().Path()) contentDir = filepath.Base(contentDir) newFilename = filepath.Join(c.outputDir, contentDir, p.File().Path()) } fs := hugofs.Os if err := helpers.WriteToDisk(newFilename, &newContent, fs); err != nil { return fmt.Errorf("failed to save file %q:: %w", newFilename, err) } return nil } func (c *convertCommand) convertContents(format metadecoders.Format) error { if c.outputDir == "" && !c.unsafe { return newUserError("Unsafe operation not allowed, use --unsafe or set a different output path") } if err := c.h.Build(hugolib.BuildCfg{SkipRender: true}); err != nil { return err } site := c.h.Sites[0] var pagesBackedByFile page.Pages for _, p := range site.AllPages() { if p.File() == nil { continue } pagesBackedByFile = append(pagesBackedByFile, p) } site.Log.Println("processing", len(pagesBackedByFile), "content files") for _, p := range site.AllPages() { if err := c.convertAndSavePage(p, site, format); err != nil { return err } } return nil } hugo-0.131.0/commands/deploy.go000066400000000000000000000061331465312036400162510ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. //go:build !nodeploy // +build !nodeploy // Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "github.com/gohugoio/hugo/deploy" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/bep/simplecobra" "github.com/spf13/cobra" ) func newDeployCommand() simplecobra.Commander { return &simpleCommand{ name: "deploy", short: "Deploy your site to a Cloud provider.", long: `Deploy your site to a Cloud provider. See https://gohugo.io/hosting-and-deployment/hugo-deploy/ for detailed documentation. `, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfgWithAdditionalConfigBase(cd, nil, "deployment")) if err != nil { return err } deployer, err := deploy.New(h.Configs.GetFirstLanguageConfig(), h.Log, h.PathSpec.PublishFs) if err != nil { return err } return deployer.Deploy(ctx) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().String("target", "", "target deployment from deployments section in config file; defaults to the first one") _ = cmd.RegisterFlagCompletionFunc("target", cobra.NoFileCompletions) cmd.Flags().Bool("confirm", false, "ask for confirmation before making changes to the target") cmd.Flags().Bool("dryRun", false, "dry run") cmd.Flags().Bool("force", false, "force upload of all files") cmd.Flags().Bool("invalidateCDN", deployconfig.DefaultConfig.InvalidateCDN, "invalidate the CDN cache listed in the deployment target") cmd.Flags().Int("maxDeletes", deployconfig.DefaultConfig.MaxDeletes, "maximum # of files to delete, or -1 to disable") _ = cmd.RegisterFlagCompletionFunc("maxDeletes", cobra.NoFileCompletions) cmd.Flags().Int("workers", deployconfig.DefaultConfig.Workers, "number of workers to transfer files. defaults to 10") _ = cmd.RegisterFlagCompletionFunc("workers", cobra.NoFileCompletions) }, } } hugo-0.131.0/commands/deploy_off.go000066400000000000000000000031601465312036400171000ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. //go:build nodeploy // +build nodeploy // Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "github.com/bep/simplecobra" "github.com/spf13/cobra" ) func newDeployCommand() simplecobra.Commander { return &simpleCommand{ name: "deploy", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.Hidden = true }, } } hugo-0.131.0/commands/env.go000066400000000000000000000043571465312036400155530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "runtime" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/hugo" "github.com/spf13/cobra" ) func newEnvCommand() simplecobra.Commander { return &simpleCommand{ name: "env", short: "Print Hugo version and environment info", long: "Print Hugo version and environment info. This is useful in Hugo bug reports", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Printf("%s\n", hugo.BuildVersionString()) r.Printf("GOOS=%q\n", runtime.GOOS) r.Printf("GOARCH=%q\n", runtime.GOARCH) r.Printf("GOVERSION=%q\n", runtime.Version()) if r.isVerbose() { deps := hugo.GetDependencyList() for _, dep := range deps { r.Printf("%s\n", dep) } } else { // These are also included in the GetDependencyList above; // always print these as these are most likely the most useful to know about. deps := hugo.GetDependencyListNonGo() for _, dep := range deps { r.Printf("%s\n", dep) } } return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, } } func newVersionCmd() simplecobra.Commander { return &simpleCommand{ name: "version", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Println(hugo.BuildVersionString()) return nil }, short: "Print Hugo version and environment info", long: "Print Hugo version and environment info. This is useful in Hugo bug reports.", withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, } } hugo-0.131.0/commands/gen.go000066400000000000000000000225651465312036400155350ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "encoding/json" "fmt" "os" "path" "path/filepath" "strings" "github.com/alecthomas/chroma/v2" "github.com/alecthomas/chroma/v2/formatters/html" "github.com/alecthomas/chroma/v2/styles" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/docshelper" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/parser" "github.com/spf13/cobra" "github.com/spf13/cobra/doc" "gopkg.in/yaml.v2" ) func newGenCommand() *genCommand { var ( // Flags. gendocdir string genmandir string // Chroma flags. style string highlightStyle string lineNumbersInlineStyle string lineNumbersTableStyle string ) newChromaStyles := func() simplecobra.Commander { return &simpleCommand{ name: "chromastyles", short: "Generate CSS stylesheet for the Chroma code highlighter", long: `Generate CSS stylesheet for the Chroma code highlighter for a given style. This stylesheet is needed if markup.highlight.noClasses is disabled in config. See https://xyproto.github.io/splash/docs/all.html for a preview of the available styles`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { builder := styles.Get(style).Builder() if highlightStyle != "" { builder.Add(chroma.LineHighlight, highlightStyle) } if lineNumbersInlineStyle != "" { builder.Add(chroma.LineNumbers, lineNumbersInlineStyle) } if lineNumbersTableStyle != "" { builder.Add(chroma.LineNumbersTable, lineNumbersTableStyle) } style, err := builder.Build() if err != nil { return err } formatter := html.New(html.WithAllClasses(true)) formatter.WriteCSS(os.Stdout, style) return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&style, "style", "friendly", "highlighter style (see https://xyproto.github.io/splash/docs/)") _ = cmd.RegisterFlagCompletionFunc("style", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&highlightStyle, "highlightStyle", "", `foreground and background colors for highlighted lines, e.g. --highlightStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("highlightStyle", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&lineNumbersInlineStyle, "lineNumbersInlineStyle", "", `foreground and background colors for inline line numbers, e.g. --lineNumbersInlineStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("lineNumbersInlineStyle", cobra.NoFileCompletions) cmd.PersistentFlags().StringVar(&lineNumbersTableStyle, "lineNumbersTableStyle", "", `foreground and background colors for table line numbers, e.g. --lineNumbersTableStyle "#fff000 bg:#000fff"`) _ = cmd.RegisterFlagCompletionFunc("lineNumbersTableStyle", cobra.NoFileCompletions) }, } } newMan := func() simplecobra.Commander { return &simpleCommand{ name: "man", short: "Generate man pages for the Hugo CLI", long: `This command automatically generates up-to-date man pages of Hugo's command-line interface. By default, it creates the man page files in the "man" directory under the current directory.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { header := &doc.GenManHeader{ Section: "1", Manual: "Hugo Manual", Source: fmt.Sprintf("Hugo %s", hugo.CurrentVersion), } if !strings.HasSuffix(genmandir, helpers.FilePathSeparator) { genmandir += helpers.FilePathSeparator } if found, _ := helpers.Exists(genmandir, hugofs.Os); !found { r.Println("Directory", genmandir, "does not exist, creating...") if err := hugofs.Os.MkdirAll(genmandir, 0o777); err != nil { return err } } cd.CobraCommand.Root().DisableAutoGenTag = true r.Println("Generating Hugo man pages in", genmandir, "...") doc.GenManTree(cd.CobraCommand.Root(), header, genmandir) r.Println("Done.") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&genmandir, "dir", "man/", "the directory to write the man pages.") _ = cmd.MarkFlagDirname("dir") }, } } newGen := func() simplecobra.Commander { const gendocFrontmatterTemplate = `--- title: "%s" slug: %s url: %s --- ` return &simpleCommand{ name: "doc", short: "Generate Markdown documentation for the Hugo CLI.", long: `Generate Markdown documentation for the Hugo CLI. This command is, mostly, used to create up-to-date documentation of Hugo's command-line interface for https://gohugo.io/. It creates one Markdown file per command with front matter suitable for rendering in Hugo.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { cd.CobraCommand.VisitParents(func(c *cobra.Command) { // Disable the "Auto generated by spf13/cobra on DATE" // as it creates a lot of diffs. c.DisableAutoGenTag = true }) if !strings.HasSuffix(gendocdir, helpers.FilePathSeparator) { gendocdir += helpers.FilePathSeparator } if found, _ := helpers.Exists(gendocdir, hugofs.Os); !found { r.Println("Directory", gendocdir, "does not exist, creating...") if err := hugofs.Os.MkdirAll(gendocdir, 0o777); err != nil { return err } } prepender := func(filename string) string { name := filepath.Base(filename) base := strings.TrimSuffix(name, path.Ext(name)) url := "/commands/" + strings.ToLower(base) + "/" return fmt.Sprintf(gendocFrontmatterTemplate, strings.Replace(base, "_", " ", -1), base, url) } linkHandler := func(name string) string { base := strings.TrimSuffix(name, path.Ext(name)) return "/commands/" + strings.ToLower(base) + "/" } r.Println("Generating Hugo command-line documentation in", gendocdir, "...") doc.GenMarkdownTreeCustom(cd.CobraCommand.Root(), gendocdir, prepender, linkHandler) r.Println("Done.") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVar(&gendocdir, "dir", "/tmp/hugodoc/", "the directory to write the doc.") _ = cmd.MarkFlagDirname("dir") }, } } var docsHelperTarget string newDocsHelper := func() simplecobra.Commander { return &simpleCommand{ name: "docshelper", short: "Generate some data files for the Hugo docs.", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { r.Println("Generate docs data to", docsHelperTarget) var buf bytes.Buffer jsonEnc := json.NewEncoder(&buf) configProvider := func() docshelper.DocProvider { conf := hugolib.DefaultConfig() conf.CacheDir = "" // The default value does not make sense in the docs. defaultConfig := parser.NullBoolJSONMarshaller{Wrapped: parser.LowerCaseCamelJSONMarshaller{Value: conf}} return docshelper.DocProvider{"config": defaultConfig} } docshelper.AddDocProviderFunc(configProvider) if err := jsonEnc.Encode(docshelper.GetDocProvider()); err != nil { return err } // Decode the JSON to a map[string]interface{} and then unmarshal it again to the correct format. var m map[string]interface{} if err := json.Unmarshal(buf.Bytes(), &m); err != nil { return err } targetFile := filepath.Join(docsHelperTarget, "docs.yaml") f, err := os.Create(targetFile) if err != nil { return err } defer f.Close() yamlEnc := yaml.NewEncoder(f) if err := yamlEnc.Encode(m); err != nil { return err } r.Println("Done!") return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.Hidden = true cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().StringVarP(&docsHelperTarget, "dir", "", "docs/data", "data dir") }, } } return &genCommand{ commands: []simplecobra.Commander{ newChromaStyles(), newGen(), newMan(), newDocsHelper(), }, } } type genCommand struct { rootCmd *rootCommand commands []simplecobra.Commander } func (c *genCommand) Commands() []simplecobra.Commander { return c.commands } func (c *genCommand) Name() string { return "gen" } func (c *genCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *genCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "A collection of several useful generators." cmd.RunE = nil return nil } func (c *genCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) return nil } hugo-0.131.0/commands/helpers.go000066400000000000000000000061221465312036400164150ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "errors" "fmt" "log" "os" "path/filepath" "strings" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/spf13/pflag" ) const ( ansiEsc = "\u001B" clearLine = "\r\033[K" hideCursor = ansiEsc + "[?25l" showCursor = ansiEsc + "[?25h" ) func newUserError(a ...any) *simplecobra.CommandError { return &simplecobra.CommandError{Err: errors.New(fmt.Sprint(a...))} } func setValueFromFlag(flags *pflag.FlagSet, key string, cfg config.Provider, targetKey string, force bool) { key = strings.TrimSpace(key) if (force && flags.Lookup(key) != nil) || flags.Changed(key) { f := flags.Lookup(key) configKey := key if targetKey != "" { configKey = targetKey } // Gotta love this API. switch f.Value.Type() { case "bool": bv, _ := flags.GetBool(key) cfg.Set(configKey, bv) case "string": cfg.Set(configKey, f.Value.String()) case "stringSlice": bv, _ := flags.GetStringSlice(key) cfg.Set(configKey, bv) case "int": iv, _ := flags.GetInt(key) cfg.Set(configKey, iv) default: panic(fmt.Sprintf("update switch with %s", f.Value.Type())) } } } func flagsToCfg(cd *simplecobra.Commandeer, cfg config.Provider) config.Provider { return flagsToCfgWithAdditionalConfigBase(cd, cfg, "") } func flagsToCfgWithAdditionalConfigBase(cd *simplecobra.Commandeer, cfg config.Provider, additionalConfigBase string) config.Provider { if cfg == nil { cfg = config.New() } // Flags with a different name in the config. keyMap := map[string]string{ "minify": "minifyOutput", "destination": "publishDir", "editor": "newContentEditor", } // Flags that we for some reason don't want to expose in the site config. internalKeySet := map[string]bool{ "quiet": true, "verbose": true, "watch": true, "liveReloadPort": true, "renderToMemory": true, "clock": true, } cmd := cd.CobraCommand flags := cmd.Flags() flags.VisitAll(func(f *pflag.Flag) { if f.Changed { targetKey := f.Name if internalKeySet[targetKey] { targetKey = "internal." + targetKey } else if mapped, ok := keyMap[targetKey]; ok { targetKey = mapped } setValueFromFlag(flags, f.Name, cfg, targetKey, false) if additionalConfigBase != "" { setValueFromFlag(flags, f.Name, cfg, additionalConfigBase+"."+targetKey, true) } } }) return cfg } func mkdir(x ...string) { p := filepath.Join(x...) err := os.MkdirAll(p, 0o777) // before umask if err != nil { log.Fatal(err) } } hugo-0.131.0/commands/hugo_windows.go000066400000000000000000000020311465312036400174620ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( // For time zone lookups on Windows without Go installed. // See #8892 _ "time/tzdata" "github.com/spf13/cobra" ) func init() { // This message to show to Windows users if Hugo is opened from explorer.exe cobra.MousetrapHelpText = ` Hugo is a command-line tool for generating static websites. You need to open PowerShell and run Hugo from there. Visit https://gohugo.io/ for more information.` } hugo-0.131.0/commands/hugobuilder.go000066400000000000000000000666611465312036400173020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "errors" "fmt" "os" "path/filepath" "runtime" "runtime/pprof" "runtime/trace" "strings" "sync" "sync/atomic" "time" "github.com/bep/logg" "github.com/bep/simplecobra" "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/terminal" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/livereload" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/watcher" "github.com/spf13/fsync" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" ) type hugoBuilder struct { r *rootCommand confmu sync.Mutex conf *commonConfig // May be nil. s *serverCommand // Currently only set when in "fast render mode". changeDetector *fileChangeDetector visitedURLs *types.EvictingStringQueue fullRebuildSem *semaphore.Weighted debounce func(f func()) onConfigLoaded func(reloaded bool) error fastRenderMode bool showErrorInBrowser bool errState hugoBuilderErrState } var errConfigNotSet = errors.New("config not set") func (c *hugoBuilder) withConfE(fn func(conf *commonConfig) error) error { c.confmu.Lock() defer c.confmu.Unlock() if c.conf == nil { return errConfigNotSet } return fn(c.conf) } func (c *hugoBuilder) withConf(fn func(conf *commonConfig)) { c.confmu.Lock() defer c.confmu.Unlock() fn(c.conf) } type hugoBuilderErrState struct { mu sync.Mutex paused bool builderr error waserr bool } func (e *hugoBuilderErrState) setPaused(p bool) { e.mu.Lock() defer e.mu.Unlock() e.paused = p } func (e *hugoBuilderErrState) isPaused() bool { e.mu.Lock() defer e.mu.Unlock() return e.paused } func (e *hugoBuilderErrState) setBuildErr(err error) { e.mu.Lock() defer e.mu.Unlock() e.builderr = err } func (e *hugoBuilderErrState) buildErr() error { e.mu.Lock() defer e.mu.Unlock() return e.builderr } func (e *hugoBuilderErrState) setWasErr(w bool) { e.mu.Lock() defer e.mu.Unlock() e.waserr = w } func (e *hugoBuilderErrState) wasErr() bool { e.mu.Lock() defer e.mu.Unlock() return e.waserr } func (c *hugoBuilder) errCount() int { return c.r.logger.LoggCount(logg.LevelError) + loggers.Log().LoggCount(logg.LevelError) } // getDirList provides NewWatcher() with a list of directories to watch for changes. func (c *hugoBuilder) getDirList() ([]string, error) { h, err := c.hugo() if err != nil { return nil, err } return helpers.UniqueStringsSorted(h.PathSpec.BaseFs.WatchFilenames()), nil } func (c *hugoBuilder) initCPUProfile() (func(), error) { if c.r.cpuprofile == "" { return nil, nil } f, err := os.Create(c.r.cpuprofile) if err != nil { return nil, fmt.Errorf("failed to create CPU profile: %w", err) } if err := pprof.StartCPUProfile(f); err != nil { return nil, fmt.Errorf("failed to start CPU profile: %w", err) } return func() { pprof.StopCPUProfile() f.Close() }, nil } func (c *hugoBuilder) initMemProfile() { if c.r.memprofile == "" { return } f, err := os.Create(c.r.memprofile) if err != nil { c.r.logger.Errorf("could not create memory profile: ", err) } defer f.Close() runtime.GC() // get up-to-date statistics if err := pprof.WriteHeapProfile(f); err != nil { c.r.logger.Errorf("could not write memory profile: ", err) } } func (c *hugoBuilder) initMemTicker() func() { memticker := time.NewTicker(5 * time.Second) quit := make(chan struct{}) printMem := func() { var m runtime.MemStats runtime.ReadMemStats(&m) fmt.Printf("\n\nAlloc = %v\nTotalAlloc = %v\nSys = %v\nNumGC = %v\n\n", formatByteCount(m.Alloc), formatByteCount(m.TotalAlloc), formatByteCount(m.Sys), m.NumGC) } go func() { for { select { case <-memticker.C: printMem() case <-quit: memticker.Stop() printMem() return } } }() return func() { close(quit) } } func (c *hugoBuilder) initMutexProfile() (func(), error) { if c.r.mutexprofile == "" { return nil, nil } f, err := os.Create(c.r.mutexprofile) if err != nil { return nil, err } runtime.SetMutexProfileFraction(1) return func() { pprof.Lookup("mutex").WriteTo(f, 0) f.Close() }, nil } func (c *hugoBuilder) initProfiling() (func(), error) { stopCPUProf, err := c.initCPUProfile() if err != nil { return nil, err } stopMutexProf, err := c.initMutexProfile() if err != nil { return nil, err } stopTraceProf, err := c.initTraceProfile() if err != nil { return nil, err } var stopMemTicker func() if c.r.printm { stopMemTicker = c.initMemTicker() } return func() { c.initMemProfile() if stopCPUProf != nil { stopCPUProf() } if stopMutexProf != nil { stopMutexProf() } if stopTraceProf != nil { stopTraceProf() } if stopMemTicker != nil { stopMemTicker() } }, nil } func (c *hugoBuilder) initTraceProfile() (func(), error) { if c.r.traceprofile == "" { return nil, nil } f, err := os.Create(c.r.traceprofile) if err != nil { return nil, fmt.Errorf("failed to create trace file: %w", err) } if err := trace.Start(f); err != nil { return nil, fmt.Errorf("failed to start trace: %w", err) } return func() { trace.Stop() f.Close() }, nil } // newWatcher creates a new watcher to watch filesystem events. func (c *hugoBuilder) newWatcher(pollIntervalStr string, dirList ...string) (*watcher.Batcher, error) { staticSyncer := &staticSyncer{c: c} var pollInterval time.Duration poll := pollIntervalStr != "" if poll { pollInterval, err := types.ToDurationE(pollIntervalStr) if err != nil { return nil, fmt.Errorf("invalid value for flag poll: %s", err) } c.r.logger.Printf("Use watcher with poll interval %v", pollInterval) } if pollInterval == 0 { pollInterval = 500 * time.Millisecond } watcher, err := watcher.New(500*time.Millisecond, pollInterval, poll) if err != nil { return nil, err } h, err := c.hugo() if err != nil { return nil, err } spec := h.Deps.SourceSpec for _, d := range dirList { if d != "" { if spec.IgnoreFile(d) { continue } _ = watcher.Add(d) } } // Identifies changes to config (config.toml) files. configSet := make(map[string]bool) var configFiles []string c.withConf(func(conf *commonConfig) { configFiles = conf.configs.LoadingInfo.ConfigFiles }) c.r.Println("Watching for config changes in", strings.Join(configFiles, ", ")) for _, configFile := range configFiles { watcher.Add(configFile) configSet[configFile] = true } go func() { for { select { case changes := <-c.r.changesFromBuild: c.errState.setBuildErr(nil) unlock, err := h.LockBuild() if err != nil { c.r.logger.Errorln("Failed to acquire a build lock: %s", err) return } c.changeDetector.PrepareNew() err = c.rebuildSitesForChanges(changes) if err != nil { c.r.logger.Errorln("Error while watching:", err) } if c.s != nil && c.s.doLiveReload { doReload := c.changeDetector == nil || len(c.changeDetector.changed()) > 0 doReload = doReload || c.showErrorInBrowser && c.errCount() > 0 if doReload { livereload.ForceRefresh() } } unlock() case evs := <-watcher.Events: unlock, err := h.LockBuild() if err != nil { c.r.logger.Errorln("Failed to acquire a build lock: %s", err) return } c.handleEvents(watcher, staticSyncer, evs, configSet) if c.showErrorInBrowser && c.errCount() > 0 { // Need to reload browser to show the error livereload.ForceRefresh() } unlock() case err := <-watcher.Errors(): if err != nil && !herrors.IsNotExist(err) { c.r.logger.Errorln("Error while watching:", err) } } } }() return watcher, nil } func (c *hugoBuilder) build() error { stopProfiling, err := c.initProfiling() if err != nil { return err } defer func() { if stopProfiling != nil { stopProfiling() } }() if err := c.fullBuild(false); err != nil { return err } if !c.r.quiet { c.r.Println() h, err := c.hugo() if err != nil { return err } h.PrintProcessingStats(os.Stdout) c.r.Println() } return nil } func (c *hugoBuilder) buildSites(noBuildLock bool) (err error) { h, err := c.hugo() if err != nil { return err } return h.Build(hugolib.BuildCfg{NoBuildLock: noBuildLock}) } func (c *hugoBuilder) copyStatic() (map[string]uint64, error) { m, err := c.doWithPublishDirs(c.copyStaticTo) if err == nil || herrors.IsNotExist(err) { return m, nil } return m, err } func (c *hugoBuilder) copyStaticTo(sourceFs *filesystems.SourceFilesystem) (uint64, error) { infol := c.r.logger.InfoCommand("static") publishDir := helpers.FilePathSeparator if sourceFs.PublishFolder != "" { publishDir = filepath.Join(publishDir, sourceFs.PublishFolder) } fs := &countingStatFs{Fs: sourceFs.Fs} syncer := fsync.NewSyncer() c.withConf(func(conf *commonConfig) { syncer.NoTimes = conf.configs.Base.NoTimes syncer.NoChmod = conf.configs.Base.NoChmod syncer.ChmodFilter = chmodFilter syncer.DestFs = conf.fs.PublishDirStatic // Now that we are using a unionFs for the static directories // We can effectively clean the publishDir on initial sync syncer.Delete = conf.configs.Base.CleanDestinationDir }) syncer.SrcFs = fs if syncer.Delete { infol.Logf("removing all files from destination that don't exist in static dirs") syncer.DeleteFilter = func(f fsync.FileInfo) bool { return f.IsDir() && strings.HasPrefix(f.Name(), ".") } } start := time.Now() // because we are using a baseFs (to get the union right). // set sync src to root err := syncer.Sync(publishDir, helpers.FilePathSeparator) if err != nil { return 0, err } loggers.TimeTrackf(infol, start, nil, "syncing static files to %s", publishDir) // Sync runs Stat 2 times for every source file. numFiles := fs.statCounter / 2 return numFiles, err } func (c *hugoBuilder) doWithPublishDirs(f func(sourceFs *filesystems.SourceFilesystem) (uint64, error)) (map[string]uint64, error) { langCount := make(map[string]uint64) h, err := c.hugo() if err != nil { return nil, err } staticFilesystems := h.BaseFs.SourceFilesystems.Static if len(staticFilesystems) == 0 { c.r.logger.Infoln("No static directories found to sync") return langCount, nil } for lang, fs := range staticFilesystems { cnt, err := f(fs) if err != nil { return langCount, err } if lang == "" { // Not multihost c.withConf(func(conf *commonConfig) { for _, l := range conf.configs.Languages { langCount[l.Lang] = cnt } }) } else { langCount[lang] = cnt } } return langCount, nil } func (c *hugoBuilder) fullBuild(noBuildLock bool) error { var ( g errgroup.Group langCount map[string]uint64 ) c.r.logger.Println("Start building sites … ") c.r.logger.Println(hugo.BuildVersionString()) c.r.logger.Println() if terminal.IsTerminal(os.Stdout) { defer func() { fmt.Print(showCursor + clearLine) }() } copyStaticFunc := func() error { cnt, err := c.copyStatic() if err != nil { return fmt.Errorf("error copying static files: %w", err) } langCount = cnt return nil } buildSitesFunc := func() error { if err := c.buildSites(noBuildLock); err != nil { return fmt.Errorf("error building site: %w", err) } return nil } // Do not copy static files and build sites in parallel if cleanDestinationDir is enabled. // This flag deletes all static resources in /public folder that are missing in /static, // and it does so at the end of copyStatic() call. var cleanDestinationDir bool c.withConf(func(conf *commonConfig) { cleanDestinationDir = conf.configs.Base.CleanDestinationDir }) if cleanDestinationDir { if err := copyStaticFunc(); err != nil { return err } if err := buildSitesFunc(); err != nil { return err } } else { g.Go(copyStaticFunc) g.Go(buildSitesFunc) if err := g.Wait(); err != nil { return err } } h, err := c.hugo() if err != nil { return err } for _, s := range h.Sites { s.ProcessingStats.Static = langCount[s.Language().Lang] } if c.r.gc { count, err := h.GC() if err != nil { return err } for _, s := range h.Sites { // We have no way of knowing what site the garbage belonged to. s.ProcessingStats.Cleaned = uint64(count) } } return nil } func (c *hugoBuilder) fullRebuild(changeType string) { if changeType == configChangeGoMod { // go.mod may be changed during the build itself, and // we really want to prevent superfluous builds. if !c.fullRebuildSem.TryAcquire(1) { return } c.fullRebuildSem.Release(1) } c.fullRebuildSem.Acquire(context.Background(), 1) go func() { defer c.fullRebuildSem.Release(1) c.printChangeDetected(changeType) defer func() { // Allow any file system events to arrive basimplecobra. // This will block any rebuild on config changes for the // duration of the sleep. time.Sleep(2 * time.Second) }() defer c.postBuild("Rebuilt", time.Now()) err := c.reloadConfig() if err != nil { // Set the processing on pause until the state is recovered. c.errState.setPaused(true) c.handleBuildErr(err, "Failed to reload config") } else { c.errState.setPaused(false) } if !c.errState.isPaused() { _, err := c.copyStatic() if err != nil { c.r.logger.Errorln(err) return } err = c.buildSites(false) if err != nil { c.r.logger.Errorln(err) } else if c.s != nil && c.s.doLiveReload { livereload.ForceRefresh() } } }() } func (c *hugoBuilder) handleBuildErr(err error, msg string) { c.errState.setBuildErr(err) c.r.logger.Errorln(msg + ": " + cleanErrorLog(err.Error())) } func (c *hugoBuilder) handleEvents(watcher *watcher.Batcher, staticSyncer *staticSyncer, evs []fsnotify.Event, configSet map[string]bool, ) { defer func() { c.errState.setWasErr(false) }() var isHandled bool // Filter out ghost events (from deleted, renamed directories). // This seems to be a bug in fsnotify, or possibly MacOS. var n int for _, ev := range evs { keep := true if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Write) { if _, err := os.Stat(ev.Name); err != nil { keep = false } } if keep { evs[n] = ev n++ } } evs = evs[:n] for _, ev := range evs { isConfig := configSet[ev.Name] configChangeType := configChangeConfig if isConfig { if strings.Contains(ev.Name, "go.mod") { configChangeType = configChangeGoMod } if strings.Contains(ev.Name, ".work") { configChangeType = configChangeGoWork } } if !isConfig { // It may be one of the /config folders dirname := filepath.Dir(ev.Name) if dirname != "." && configSet[dirname] { isConfig = true } } if isConfig { isHandled = true if ev.Op&fsnotify.Chmod == fsnotify.Chmod { continue } if ev.Op&fsnotify.Remove == fsnotify.Remove || ev.Op&fsnotify.Rename == fsnotify.Rename { c.withConf(func(conf *commonConfig) { for _, configFile := range conf.configs.LoadingInfo.ConfigFiles { counter := 0 for watcher.Add(configFile) != nil { counter++ if counter >= 100 { break } time.Sleep(100 * time.Millisecond) } } }) } // Config file(s) changed. Need full rebuild. c.fullRebuild(configChangeType) return } } if isHandled { return } if c.errState.isPaused() { // Wait for the server to get into a consistent state before // we continue with processing. return } if len(evs) > 50 { // This is probably a mass edit of the content dir. // Schedule a full rebuild for when it slows down. c.debounce(func() { c.fullRebuild("") }) return } c.r.logger.Debugln("Received System Events:", evs) staticEvents := []fsnotify.Event{} dynamicEvents := []fsnotify.Event{} filterDuplicateEvents := func(evs []fsnotify.Event) []fsnotify.Event { seen := make(map[string]bool) var n int for _, ev := range evs { if seen[ev.Name] { continue } seen[ev.Name] = true evs[n] = ev n++ } return evs[:n] } h, err := c.hugo() if err != nil { c.r.logger.Errorln("Error getting the Hugo object:", err) return } n = 0 for _, ev := range evs { if h.ShouldSkipFileChangeEvent(ev) { continue } evs[n] = ev n++ } evs = evs[:n] for _, ev := range evs { ext := filepath.Ext(ev.Name) baseName := filepath.Base(ev.Name) istemp := strings.HasSuffix(ext, "~") || (ext == ".swp") || // vim (ext == ".swx") || // vim (ext == ".tmp") || // generic temp file (ext == ".DS_Store") || // OSX Thumbnail baseName == "4913" || // vim strings.HasPrefix(ext, ".goutputstream") || // gnome strings.HasSuffix(ext, "jb_old___") || // intelliJ strings.HasSuffix(ext, "jb_tmp___") || // intelliJ strings.HasSuffix(ext, "jb_bak___") || // intelliJ strings.HasPrefix(ext, ".sb-") || // byword strings.HasPrefix(baseName, ".#") || // emacs strings.HasPrefix(baseName, "#") // emacs if istemp { continue } if h.Deps.SourceSpec.IgnoreFile(ev.Name) { continue } // Sometimes during rm -rf operations a '"": REMOVE' is triggered. Just ignore these if ev.Name == "" { continue } // Write and rename operations are often followed by CHMOD. // There may be valid use cases for rebuilding the site on CHMOD, // but that will require more complex logic than this simple conditional. // On OS X this seems to be related to Spotlight, see: // https://github.com/go-fsnotify/fsnotify/issues/15 // A workaround is to put your site(s) on the Spotlight exception list, // but that may be a little mysterious for most end users. // So, for now, we skip reload on CHMOD. // We do have to check for WRITE though. On slower laptops a Chmod // could be aggregated with other important events, and we still want // to rebuild on those if ev.Op&(fsnotify.Chmod|fsnotify.Write|fsnotify.Create) == fsnotify.Chmod { continue } walkAdder := func(path string, f hugofs.FileMetaInfo) error { if f.IsDir() { c.r.logger.Println("adding created directory to watchlist", path) if err := watcher.Add(path); err != nil { return err } } else if !staticSyncer.isStatic(h, path) { // Hugo's rebuilding logic is entirely file based. When you drop a new folder into // /content on OSX, the above logic will handle future watching of those files, // but the initial CREATE is lost. dynamicEvents = append(dynamicEvents, fsnotify.Event{Name: path, Op: fsnotify.Create}) } return nil } // recursively add new directories to watch list if ev.Has(fsnotify.Create) || ev.Has(fsnotify.Rename) { c.withConf(func(conf *commonConfig) { if s, err := conf.fs.Source.Stat(ev.Name); err == nil && s.Mode().IsDir() { _ = helpers.Walk(conf.fs.Source, ev.Name, walkAdder) } }) } if staticSyncer.isStatic(h, ev.Name) { staticEvents = append(staticEvents, ev) } else { dynamicEvents = append(dynamicEvents, ev) } } lrl := c.r.logger.InfoCommand("livereload") staticEvents = filterDuplicateEvents(staticEvents) dynamicEvents = filterDuplicateEvents(dynamicEvents) if len(staticEvents) > 0 { c.printChangeDetected("Static files") if c.r.forceSyncStatic { c.r.logger.Printf("Syncing all static files\n") _, err := c.copyStatic() if err != nil { c.r.logger.Errorln("Error copying static files to publish dir:", err) return } } else { if err := staticSyncer.syncsStaticEvents(staticEvents); err != nil { c.r.logger.Errorln("Error syncing static files to publish dir:", err) return } } if c.s != nil && c.s.doLiveReload { // Will block forever trying to write to a channel that nobody is reading if livereload isn't initialized if !c.errState.wasErr() && len(staticEvents) == 1 { h, err := c.hugo() if err != nil { c.r.logger.Errorln("Error getting the Hugo object:", err) return } path := h.BaseFs.SourceFilesystems.MakeStaticPathRelative(staticEvents[0].Name) path = h.RelURL(paths.ToSlashTrimLeading(path), false) lrl.Logf("refreshing static file %q", path) livereload.RefreshPath(path) } else { lrl.Logf("got %d static file change events, force refresh", len(staticEvents)) livereload.ForceRefresh() } } } if len(dynamicEvents) > 0 { partitionedEvents := partitionDynamicEvents( h.BaseFs.SourceFilesystems, dynamicEvents) onePageName := pickOneWriteOrCreatePath(h.Conf.ContentTypes(), partitionedEvents.ContentEvents) c.printChangeDetected("") c.changeDetector.PrepareNew() func() { defer c.postBuild("Total", time.Now()) if err := c.rebuildSites(dynamicEvents); err != nil { c.handleBuildErr(err, "Rebuild failed") } }() if c.s != nil && c.s.doLiveReload { if c.errState.wasErr() { livereload.ForceRefresh() return } changed := c.changeDetector.changed() if c.changeDetector != nil { lrl.Logf("build changed %d files", len(changed)) if len(changed) == 0 { // Nothing has changed. return } } // If this change set also contains one or more CSS files, we need to // refresh these as well. var cssChanges []string var otherChanges []string for _, ev := range changed { if strings.HasSuffix(ev, ".css") { cssChanges = append(cssChanges, ev) } else { otherChanges = append(otherChanges, ev) } } if len(partitionedEvents.ContentEvents) > 0 { navigate := c.s != nil && c.s.navigateToChanged // We have fetched the same page above, but it may have // changed. var p page.Page if navigate { if onePageName != "" { p = h.GetContentPage(onePageName) } } if p != nil && p.RelPermalink() != "" { link, port := p.RelPermalink(), p.Site().ServerPort() lrl.Logf("navigating to %q using port %d", link, port) livereload.NavigateToPathForPort(link, port) } else { lrl.Logf("no page to navigate to, force refresh") livereload.ForceRefresh() } } else if len(otherChanges) > 0 { if len(otherChanges) == 1 { // Allow single changes to be refreshed without a full page reload. pathToRefresh := h.PathSpec.RelURL(paths.ToSlashTrimLeading(otherChanges[0]), false) lrl.Logf("refreshing %q", pathToRefresh) livereload.RefreshPath(pathToRefresh) } else if len(cssChanges) == 0 { lrl.Logf("force refresh") livereload.ForceRefresh() } } if len(cssChanges) > 0 { // Allow some time for the live reload script to get reconnected. if len(otherChanges) > 0 { time.Sleep(200 * time.Millisecond) } for _, ev := range cssChanges { pathToRefresh := h.PathSpec.RelURL(paths.ToSlashTrimLeading(ev), false) lrl.Logf("refreshing CSS %q", pathToRefresh) livereload.RefreshPath(pathToRefresh) } } } } } func (c *hugoBuilder) postBuild(what string, start time.Time) { if h, err := c.hugo(); err == nil && h.Conf.Running() { h.LogServerAddresses() } c.r.timeTrack(start, what) } func (c *hugoBuilder) hugo() (*hugolib.HugoSites, error) { var h *hugolib.HugoSites if err := c.withConfE(func(conf *commonConfig) error { var err error h, err = c.r.HugFromConfig(conf) return err }); err != nil { return nil, err } if c.s != nil { // A running server, register the media types. for _, s := range h.Sites { s.RegisterMediaTypes() } } return h, nil } func (c *hugoBuilder) hugoTry() *hugolib.HugoSites { var h *hugolib.HugoSites c.withConf(func(conf *commonConfig) { h, _ = c.r.HugFromConfig(conf) }) return h } func (c *hugoBuilder) loadConfig(cd *simplecobra.Commandeer, running bool) error { cfg := config.New() cfg.Set("renderToMemory", c.r.renderToMemory) watch := c.r.buildWatch || (c.s != nil && c.s.serverWatch) if c.r.environment == "" { // We need to set the environment as early as possible because we need it to load the correct config. // Check if the user has set it in env. if env := os.Getenv("HUGO_ENVIRONMENT"); env != "" { c.r.environment = env } else if env := os.Getenv("HUGO_ENV"); env != "" { c.r.environment = env } else { if c.s != nil { // The server defaults to development. c.r.environment = hugo.EnvironmentDevelopment } else { c.r.environment = hugo.EnvironmentProduction } } } cfg.Set("environment", c.r.environment) cfg.Set("internal", maps.Params{ "running": running, "watch": watch, "verbose": c.r.isVerbose(), "fastRenderMode": c.fastRenderMode, }) conf, err := c.r.ConfigFromProvider(c.r.configVersionID.Load(), flagsToCfg(cd, cfg)) if err != nil { return err } if len(conf.configs.LoadingInfo.ConfigFiles) == 0 { //lint:ignore ST1005 end user message. return errors.New("Unable to locate config file or config directory. Perhaps you need to create a new site.\nRun `hugo help new` for details.") } c.conf = conf if c.onConfigLoaded != nil { if err := c.onConfigLoaded(false); err != nil { return err } } return nil } var rebuildCounter atomic.Uint64 func (c *hugoBuilder) printChangeDetected(typ string) { msg := "\nChange" if typ != "" { msg += " of " + typ } msg += fmt.Sprintf(" detected, rebuilding site (#%d).", rebuildCounter.Add(1)) c.r.logger.Println(msg) const layout = "2006-01-02 15:04:05.000 -0700" c.r.logger.Println(htime.Now().Format(layout)) } func (c *hugoBuilder) rebuildSites(events []fsnotify.Event) error { if err := c.errState.buildErr(); err != nil { ferrs := herrors.UnwrapFileErrorsWithErrorContext(err) for _, err := range ferrs { events = append(events, fsnotify.Event{Name: err.Position().Filename, Op: fsnotify.Write}) } } c.errState.setBuildErr(nil) h, err := c.hugo() if err != nil { return err } return h.Build(hugolib.BuildCfg{NoBuildLock: true, RecentlyVisited: c.visitedURLs, ErrRecovery: c.errState.wasErr()}, events...) } func (c *hugoBuilder) rebuildSitesForChanges(ids []identity.Identity) error { c.errState.setBuildErr(nil) h, err := c.hugo() if err != nil { return err } whatChanged := &hugolib.WhatChanged{} whatChanged.Add(ids...) err = h.Build(hugolib.BuildCfg{NoBuildLock: true, WhatChanged: whatChanged, RecentlyVisited: c.visitedURLs, ErrRecovery: c.errState.wasErr()}) c.errState.setBuildErr(err) return err } func (c *hugoBuilder) reloadConfig() error { c.r.Reset() c.r.configVersionID.Add(1) if err := c.withConfE(func(conf *commonConfig) error { oldConf := conf newConf, err := c.r.ConfigFromConfig(c.r.configVersionID.Load(), conf) if err != nil { return err } sameLen := len(oldConf.configs.Languages) == len(newConf.configs.Languages) if !sameLen { if oldConf.configs.IsMultihost || newConf.configs.IsMultihost { return errors.New("multihost change detected, please restart server") } } c.conf = newConf return nil }); err != nil { return err } if c.onConfigLoaded != nil { if err := c.onConfigLoaded(true); err != nil { return err } } return nil } hugo-0.131.0/commands/import.go000066400000000000000000000401221465312036400162630ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "errors" "fmt" "io" "log" "os" "path/filepath" "regexp" "strconv" "strings" "time" "unicode" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/htime" "github.com/gohugoio/hugo/common/hugio" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/gohugoio/hugo/parser/pageparser" "github.com/spf13/afero" "github.com/spf13/cobra" ) func newImportCommand() *importCommand { var c *importCommand c = &importCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "jekyll", short: "hugo import from Jekyll", long: `hugo import from Jekyll. Import from Jekyll requires two paths, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`.", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 2 { return newUserError(`import from jekyll requires two paths, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`.") } return c.importFromJekyll(args) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().BoolVar(&c.force, "force", false, "allow import into non-empty target directory") }, }, }, } return c } type importCommand struct { r *rootCommand force bool commands []simplecobra.Commander } func (c *importCommand) Commands() []simplecobra.Commander { return c.commands } func (c *importCommand) Name() string { return "import" } func (c *importCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *importCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Import your site from others." cmd.Long = `Import your site from other web site generators like Jekyll. Import requires a subcommand, e.g. ` + "`hugo import jekyll jekyll_root_path target_path`." cmd.RunE = nil return nil } func (c *importCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) return nil } func (i *importCommand) createConfigFromJekyll(fs afero.Fs, inpath string, kind metadecoders.Format, jekyllConfig map[string]any) (err error) { title := "My New Hugo Site" baseURL := "http://example.org/" for key, value := range jekyllConfig { lowerKey := strings.ToLower(key) switch lowerKey { case "title": if str, ok := value.(string); ok { title = str } case "url": if str, ok := value.(string); ok { baseURL = str } } } in := map[string]any{ "baseURL": baseURL, "title": title, "languageCode": "en-us", "disablePathToLower": true, } var buf bytes.Buffer err = parser.InterfaceToConfig(in, kind, &buf) if err != nil { return err } return helpers.WriteToDisk(filepath.Join(inpath, "hugo."+string(kind)), &buf, fs) } func (c *importCommand) getJekyllDirInfo(fs afero.Fs, jekyllRoot string) (map[string]bool, bool) { postDirs := make(map[string]bool) hasAnyPost := false if entries, err := os.ReadDir(jekyllRoot); err == nil { for _, entry := range entries { if entry.IsDir() { subDir := filepath.Join(jekyllRoot, entry.Name()) if isPostDir, hasAnyPostInDir := c.retrieveJekyllPostDir(fs, subDir); isPostDir { postDirs[entry.Name()] = hasAnyPostInDir if hasAnyPostInDir { hasAnyPost = true } } } } } return postDirs, hasAnyPost } func (c *importCommand) createSiteFromJekyll(jekyllRoot, targetDir string, jekyllPostDirs map[string]bool) error { fs := &afero.OsFs{} if exists, _ := helpers.Exists(targetDir, fs); exists { if isDir, _ := helpers.IsDir(targetDir, fs); !isDir { return errors.New("target path \"" + targetDir + "\" exists but is not a directory") } isEmpty, _ := helpers.IsEmpty(targetDir, fs) if !isEmpty && !c.force { return errors.New("target path \"" + targetDir + "\" exists and is not empty") } } jekyllConfig := c.loadJekyllConfig(fs, jekyllRoot) mkdir(targetDir, "layouts") mkdir(targetDir, "content") mkdir(targetDir, "archetypes") mkdir(targetDir, "static") mkdir(targetDir, "data") mkdir(targetDir, "themes") c.createConfigFromJekyll(fs, targetDir, "yaml", jekyllConfig) c.copyJekyllFilesAndFolders(jekyllRoot, filepath.Join(targetDir, "static"), jekyllPostDirs) return nil } func (c *importCommand) convertJekyllContent(m any, content string) (string, error) { metadata, _ := maps.ToStringMapE(m) lines := strings.Split(content, "\n") var resultLines []string for _, line := range lines { resultLines = append(resultLines, strings.Trim(line, "\r\n")) } content = strings.Join(resultLines, "\n") excerptSep := "" if value, ok := metadata["excerpt_separator"]; ok { if str, strOk := value.(string); strOk { content = strings.Replace(content, strings.TrimSpace(str), excerptSep, -1) } } replaceList := []struct { re *regexp.Regexp replace string }{ {regexp.MustCompile("(?i)"), ""}, {regexp.MustCompile(`\{%\s*raw\s*%\}\s*(.*?)\s*\{%\s*endraw\s*%\}`), "$1"}, {regexp.MustCompile(`{%\s*endhighlight\s*%}`), "{{< / highlight >}}"}, } for _, replace := range replaceList { content = replace.re.ReplaceAllString(content, replace.replace) } replaceListFunc := []struct { re *regexp.Regexp replace func(string) string }{ // Octopress image tag: http://octopress.org/docs/plugins/image-tag/ {regexp.MustCompile(`{%\s+img\s*(.*?)\s*%}`), c.replaceImageTag}, {regexp.MustCompile(`{%\s*highlight\s*(.*?)\s*%}`), c.replaceHighlightTag}, } for _, replace := range replaceListFunc { content = replace.re.ReplaceAllStringFunc(content, replace.replace) } var buf bytes.Buffer if len(metadata) != 0 { err := parser.InterfaceToFrontMatter(m, metadecoders.YAML, &buf) if err != nil { return "", err } } buf.WriteString(content) return buf.String(), nil } func (c *importCommand) convertJekyllMetaData(m any, postName string, postDate time.Time, draft bool) (any, error) { metadata, err := maps.ToStringMapE(m) if err != nil { return nil, err } if draft { metadata["draft"] = true } for key, value := range metadata { lowerKey := strings.ToLower(key) switch lowerKey { case "layout": delete(metadata, key) case "permalink": if str, ok := value.(string); ok { metadata["url"] = str } delete(metadata, key) case "category": if str, ok := value.(string); ok { metadata["categories"] = []string{str} } delete(metadata, key) case "excerpt_separator": if key != lowerKey { delete(metadata, key) metadata[lowerKey] = value } case "date": if str, ok := value.(string); ok { re := regexp.MustCompile(`(\d+):(\d+):(\d+)`) r := re.FindAllStringSubmatch(str, -1) if len(r) > 0 { hour, _ := strconv.Atoi(r[0][1]) minute, _ := strconv.Atoi(r[0][2]) second, _ := strconv.Atoi(r[0][3]) postDate = time.Date(postDate.Year(), postDate.Month(), postDate.Day(), hour, minute, second, 0, time.UTC) } } delete(metadata, key) } } metadata["date"] = postDate.Format(time.RFC3339) return metadata, nil } func (c *importCommand) convertJekyllPost(path, relPath, targetDir string, draft bool) error { log.Println("Converting", path) filename := filepath.Base(path) postDate, postName, err := c.parseJekyllFilename(filename) if err != nil { c.r.Printf("Failed to parse filename '%s': %s. Skipping.", filename, err) return nil } log.Println(filename, postDate, postName) targetFile := filepath.Join(targetDir, relPath) targetParentDir := filepath.Dir(targetFile) os.MkdirAll(targetParentDir, 0o777) contentBytes, err := os.ReadFile(path) if err != nil { c.r.logger.Errorln("Read file error:", path) return err } pf, err := pageparser.ParseFrontMatterAndContent(bytes.NewReader(contentBytes)) if err != nil { return fmt.Errorf("failed to parse file %q: %s", filename, err) } newmetadata, err := c.convertJekyllMetaData(pf.FrontMatter, postName, postDate, draft) if err != nil { return fmt.Errorf("failed to convert metadata for file %q: %s", filename, err) } content, err := c.convertJekyllContent(newmetadata, string(pf.Content)) if err != nil { return fmt.Errorf("failed to convert content for file %q: %s", filename, err) } fs := hugofs.Os if err := helpers.WriteToDisk(targetFile, strings.NewReader(content), fs); err != nil { return fmt.Errorf("failed to save file %q: %s", filename, err) } return nil } func (c *importCommand) copyJekyllFilesAndFolders(jekyllRoot, dest string, jekyllPostDirs map[string]bool) (err error) { fs := hugofs.Os fi, err := fs.Stat(jekyllRoot) if err != nil { return err } if !fi.IsDir() { return errors.New(jekyllRoot + " is not a directory") } err = os.MkdirAll(dest, fi.Mode()) if err != nil { return err } entries, err := os.ReadDir(jekyllRoot) if err != nil { return err } for _, entry := range entries { sfp := filepath.Join(jekyllRoot, entry.Name()) dfp := filepath.Join(dest, entry.Name()) if entry.IsDir() { if entry.Name()[0] != '_' && entry.Name()[0] != '.' { if _, ok := jekyllPostDirs[entry.Name()]; !ok { err = hugio.CopyDir(fs, sfp, dfp, nil) if err != nil { c.r.logger.Errorln(err) } } } } else { lowerEntryName := strings.ToLower(entry.Name()) exceptSuffix := []string{ ".md", ".markdown", ".html", ".htm", ".xml", ".textile", "rakefile", "gemfile", ".lock", } isExcept := false for _, suffix := range exceptSuffix { if strings.HasSuffix(lowerEntryName, suffix) { isExcept = true break } } if !isExcept && entry.Name()[0] != '.' && entry.Name()[0] != '_' { err = hugio.CopyFile(fs, sfp, dfp) if err != nil { c.r.logger.Errorln(err) } } } } return nil } func (c *importCommand) importFromJekyll(args []string) error { jekyllRoot, err := filepath.Abs(filepath.Clean(args[0])) if err != nil { return newUserError("path error:", args[0]) } targetDir, err := filepath.Abs(filepath.Clean(args[1])) if err != nil { return newUserError("path error:", args[1]) } c.r.Println("Import Jekyll from:", jekyllRoot, "to:", targetDir) if strings.HasPrefix(filepath.Dir(targetDir), jekyllRoot) { return newUserError("abort: target path should not be inside the Jekyll root") } fs := afero.NewOsFs() jekyllPostDirs, hasAnyPost := c.getJekyllDirInfo(fs, jekyllRoot) if !hasAnyPost { return errors.New("abort: jekyll root contains neither posts nor drafts") } err = c.createSiteFromJekyll(jekyllRoot, targetDir, jekyllPostDirs) if err != nil { return newUserError(err) } c.r.Println("Importing...") fileCount := 0 callback := func(path string, fi hugofs.FileMetaInfo) error { if fi.IsDir() { return nil } relPath, err := filepath.Rel(jekyllRoot, path) if err != nil { return newUserError("get rel path error:", path) } relPath = filepath.ToSlash(relPath) draft := false switch { case strings.Contains(relPath, "_posts/"): relPath = filepath.Join("content/post", strings.Replace(relPath, "_posts/", "", -1)) case strings.Contains(relPath, "_drafts/"): relPath = filepath.Join("content/draft", strings.Replace(relPath, "_drafts/", "", -1)) draft = true default: return nil } fileCount++ return c.convertJekyllPost(path, relPath, targetDir, draft) } for jekyllPostDir, hasAnyPostInDir := range jekyllPostDirs { if hasAnyPostInDir { if err = helpers.Walk(hugofs.Os, filepath.Join(jekyllRoot, jekyllPostDir), callback); err != nil { return err } } } c.r.Println("Congratulations!", fileCount, "post(s) imported!") c.r.Println("Now, start Hugo by yourself:\n") c.r.Println("cd " + args[1]) c.r.Println("git init") c.r.Println("git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke themes/ananke") c.r.Println("echo \"theme = 'ananke'\" > hugo.toml") c.r.Println("hugo server") return nil } func (c *importCommand) loadJekyllConfig(fs afero.Fs, jekyllRoot string) map[string]any { path := filepath.Join(jekyllRoot, "_config.yml") exists, err := helpers.Exists(path, fs) if err != nil || !exists { c.r.Println("_config.yaml not found: Is the specified Jekyll root correct?") return nil } f, err := fs.Open(path) if err != nil { return nil } defer f.Close() b, err := io.ReadAll(f) if err != nil { return nil } m, err := metadecoders.Default.UnmarshalToMap(b, metadecoders.YAML) if err != nil { return nil } return m } func (c *importCommand) parseJekyllFilename(filename string) (time.Time, string, error) { re := regexp.MustCompile(`(\d+-\d+-\d+)-(.+)\..*`) r := re.FindAllStringSubmatch(filename, -1) if len(r) == 0 { return htime.Now(), "", errors.New("filename not match") } postDate, err := time.Parse("2006-1-2", r[0][1]) if err != nil { return htime.Now(), "", err } postName := r[0][2] return postDate, postName, nil } func (c *importCommand) replaceHighlightTag(match string) string { r := regexp.MustCompile(`{%\s*highlight\s*(.*?)\s*%}`) parts := r.FindStringSubmatch(match) lastQuote := rune(0) f := func(c rune) bool { switch { case c == lastQuote: lastQuote = rune(0) return false case lastQuote != rune(0): return false case unicode.In(c, unicode.Quotation_Mark): lastQuote = c return false default: return unicode.IsSpace(c) } } // splitting string by space but considering quoted section items := strings.FieldsFunc(parts[1], f) result := bytes.NewBufferString("{{< highlight ") result.WriteString(items[0]) // language options := items[1:] for i, opt := range options { opt = strings.Replace(opt, "\"", "", -1) if opt == "linenos" { opt = "linenos=table" } if i == 0 { opt = " \"" + opt } if i < len(options)-1 { opt += "," } else if i == len(options)-1 { opt += "\"" } result.WriteString(opt) } result.WriteString(" >}}") return result.String() } func (c *importCommand) replaceImageTag(match string) string { r := regexp.MustCompile(`{%\s+img\s*(\p{L}*)\s+([\S]*/[\S]+)\s+(\d*)\s*(\d*)\s*(.*?)\s*%}`) result := bytes.NewBufferString("{{< figure ") parts := r.FindStringSubmatch(match) // Index 0 is the entire string, ignore c.replaceOptionalPart(result, "class", parts[1]) c.replaceOptionalPart(result, "src", parts[2]) c.replaceOptionalPart(result, "width", parts[3]) c.replaceOptionalPart(result, "height", parts[4]) // title + alt part := parts[5] if len(part) > 0 { splits := strings.Split(part, "'") lenSplits := len(splits) if lenSplits == 1 { c.replaceOptionalPart(result, "title", splits[0]) } else if lenSplits == 3 { c.replaceOptionalPart(result, "title", splits[1]) } else if lenSplits == 5 { c.replaceOptionalPart(result, "title", splits[1]) c.replaceOptionalPart(result, "alt", splits[3]) } } result.WriteString(">}}") return result.String() } func (c *importCommand) replaceOptionalPart(buffer *bytes.Buffer, partName string, part string) { if len(part) > 0 { buffer.WriteString(partName + "=\"" + part + "\" ") } } func (c *importCommand) retrieveJekyllPostDir(fs afero.Fs, dir string) (bool, bool) { if strings.HasSuffix(dir, "_posts") || strings.HasSuffix(dir, "_drafts") { isEmpty, _ := helpers.IsEmpty(dir, fs) return true, !isEmpty } if entries, err := os.ReadDir(dir); err == nil { for _, entry := range entries { if entry.IsDir() { subDir := filepath.Join(dir, entry.Name()) if isPostDir, hasAnyPost := c.retrieveJekyllPostDir(fs, subDir); isPostDir { return isPostDir, hasAnyPost } } } } return false, true } hugo-0.131.0/commands/list.go000066400000000000000000000134241465312036400157310ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "encoding/csv" "os" "path/filepath" "strconv" "strings" "time" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/resource" "github.com/spf13/cobra" ) // newListCommand creates a new list command and its subcommands. func newListCommand() *listCommand { createRecord := func(workingDir string, p page.Page) []string { return []string{ filepath.ToSlash(strings.TrimPrefix(p.File().Filename(), workingDir+string(os.PathSeparator))), p.Slug(), p.Title(), p.Date().Format(time.RFC3339), p.ExpiryDate().Format(time.RFC3339), p.PublishDate().Format(time.RFC3339), strconv.FormatBool(p.Draft()), p.Permalink(), p.Kind(), p.Section(), } } list := func(cd *simplecobra.Commandeer, r *rootCommand, shouldInclude func(page.Page) bool, opts ...any) error { bcfg := hugolib.BuildCfg{SkipRender: true} cfg := flagsToCfg(cd, nil) for i := 0; i < len(opts); i += 2 { cfg.Set(opts[i].(string), opts[i+1]) } h, err := r.Build(cd, bcfg, cfg) if err != nil { return err } writer := csv.NewWriter(r.Out) defer writer.Flush() writer.Write([]string{ "path", "slug", "title", "date", "expiryDate", "publishDate", "draft", "permalink", "kind", "section", }) for _, p := range h.Pages() { if shouldInclude(p) { record := createRecord(h.Conf.BaseConfig().WorkingDir, p) if err := writer.Write(record); err != nil { return err } } } return nil } return &listCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "drafts", short: "List draft content", long: `List draft content.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !p.Draft() || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildDrafts", true, "buildFuture", true, "buildExpired", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "future", short: "List future content", long: `List content with a future publication date.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !resource.IsFuture(p) || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildFuture", true, "buildDrafts", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "expired", short: "List expired content", long: `List content with a past expiration date.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { if !resource.IsExpired(p) || p.File() == nil { return false } return true } return list(cd, r, shouldInclude, "buildExpired", true, "buildDrafts", true, ) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "all", short: "List all content", long: `List all content including draft, future, and expired.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { return p.File() != nil } return list(cd, r, shouldInclude, "buildDrafts", true, "buildFuture", true, "buildExpired", true) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, &simpleCommand{ name: "published", short: "List published content", long: `List content that is not draft, future, or expired.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { shouldInclude := func(p page.Page) bool { return !p.Draft() && !resource.IsFuture(p) && !resource.IsExpired(p) && p.File() != nil } return list(cd, r, shouldInclude) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, }, } } type listCommand struct { commands []simplecobra.Commander } func (c *listCommand) Commands() []simplecobra.Commander { return c.commands } func (c *listCommand) Name() string { return "list" } func (c *listCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { // Do nothing. return nil } func (c *listCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Listing out various types of content" cmd.Long = `Listing out various types of content. List requires a subcommand, e.g. hugo list drafts` cmd.RunE = nil return nil } func (c *listCommand) PreRun(cd, runner *simplecobra.Commandeer) error { return nil } hugo-0.131.0/commands/mod.go000066400000000000000000000260711465312036400155370ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "errors" "os" "path/filepath" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/modules/npm" "github.com/spf13/cobra" ) const commonUsageMod = ` Note that Hugo will always start out by resolving the components defined in the site configuration, provided by a _vendor directory (if no --ignoreVendorPaths flag provided), Go Modules, or a folder inside the themes directory, in that order. See https://gohugo.io/hugo-modules/ for more information. ` // buildConfigCommands creates a new config command and its subcommands. func newModCommands() *modCommands { var ( clean bool pattern string all bool ) npmCommand := &simpleCommand{ name: "npm", short: "Various npm helpers.", long: `Various npm (Node package manager) helpers.`, commands: []simplecobra.Commander{ &simpleCommand{ name: "pack", short: "Experimental: Prepares and writes a composite package.json file for your project.", long: `Prepares and writes a composite package.json file for your project. On first run it creates a "package.hugo.json" in the project root if not already there. This file will be used as a template file with the base dependency set. This set will be merged with all "package.hugo.json" files found in the dependency tree, picking the version closest to the project. This command is marked as 'Experimental'. We think it's a great idea, so it's not likely to be removed from Hugo, but we need to test this out in "real life" to get a feel of it, so this may/will change in future versions of Hugo. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return npm.Pack(h.BaseFs.ProjectSourceFs, h.BaseFs.AssetsWithDuplicatesPreserved.Fs) }, }, }, } return &modCommands{ commands: []simplecobra.Commander{ &simpleCommand{ name: "init", short: "Initialize this project as a Hugo Module.", long: `Initialize this project as a Hugo Module. It will try to guess the module path, but you may help by passing it as an argument, e.g: hugo mod init github.com/gohugoio/testshortcodes Note that Hugo Modules supports multi-module projects, so you can initialize a Hugo Module inside a subfolder on GitHub, as one example. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } var initPath string if len(args) >= 1 { initPath = args[0] } return h.Configs.ModulesClient.Init(initPath) }, }, &simpleCommand{ name: "verify", short: "Verify dependencies.", long: `Verify checks that the dependencies of the current module, which are stored in a local downloaded source cache, have not been modified since being downloaded.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().BoolVarP(&clean, "clean", "", false, "delete module cache for dependencies that fail verification") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Verify(clean) }, }, &simpleCommand{ name: "graph", short: "Print a module dependency graph.", long: `Print a module dependency graph with information about module status (disabled, vendored). Note that for vendored modules, that is the version listed and not the one from go.mod. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().BoolVarP(&clean, "clean", "", false, "delete module cache for dependencies that fail verification") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Graph(os.Stdout) }, }, &simpleCommand{ name: "clean", short: "Delete the Hugo Module cache for the current project.", long: `Delete the Hugo Module cache for the current project.`, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) cmd.Flags().StringVarP(&pattern, "pattern", "", "", `pattern matching module paths to clean (all if not set), e.g. "**hugo*"`) _ = cmd.RegisterFlagCompletionFunc("pattern", cobra.NoFileCompletions) cmd.Flags().BoolVarP(&all, "all", "", false, "clean entire module cache") }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } if all { modCache := h.ResourceSpec.FileCaches.ModulesCache() count, err := modCache.Prune(true) r.Printf("Deleted %d files from module cache.", count) return err } return h.Configs.ModulesClient.Clean(pattern) }, }, &simpleCommand{ name: "tidy", short: "Remove unused entries in go.mod and go.sum.", withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return h.Configs.ModulesClient.Tidy() }, }, &simpleCommand{ name: "vendor", short: "Vendor all module dependencies into the _vendor directory.", long: `Vendor all module dependencies into the _vendor directory. If a module is vendored, that is where Hugo will look for it's dependencies. `, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions applyLocalFlagsBuildConfig(cmd, r) }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return h.Configs.ModulesClient.Vendor() }, }, &simpleCommand{ name: "get", short: "Resolves dependencies in your current Hugo Project.", long: ` Resolves dependencies in your current Hugo Project. Some examples: Install the latest version possible for a given module: hugo mod get github.com/gohugoio/testshortcodes Install a specific version: hugo mod get github.com/gohugoio/testshortcodes@v0.3.0 Install the latest versions of all direct module dependencies: hugo mod get hugo mod get ./... (recursive) Install the latest versions of all module dependencies (direct and indirect): hugo mod get -u hugo mod get -u ./... (recursive) Run "go help get" for more information. All flags available for "go get" is also relevant here. ` + commonUsageMod, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.DisableFlagParsing = true cmd.ValidArgsFunction = cobra.NoFileCompletions }, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { // We currently just pass on the flags we get to Go and // need to do the flag handling manually. if len(args) == 1 && (args[0] == "-h" || args[0] == "--help") { return errHelp } var lastArg string if len(args) != 0 { lastArg = args[len(args)-1] } if lastArg == "./..." { args = args[:len(args)-1] // Do a recursive update. dirname, err := os.Getwd() if err != nil { return err } // Sanity chesimplecobra. We do recursive walking and want to avoid // accidents. if len(dirname) < 5 { return errors.New("must not be run from the file system root") } filepath.Walk(dirname, func(path string, info os.FileInfo, err error) error { if info.IsDir() { return nil } if info.Name() == "go.mod" { // Found a module. dir := filepath.Dir(path) cfg := config.New() cfg.Set("workingDir", dir) conf, err := r.ConfigFromProvider(r.configVersionID.Add(1), flagsToCfg(cd, cfg)) if err != nil { return err } r.Println("Update module in", conf.configs.Base.WorkingDir) client := conf.configs.ModulesClient return client.Get(args...) } return nil }) return nil } else { conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, nil)) if err != nil { return err } client := conf.configs.ModulesClient return client.Get(args...) } }, }, npmCommand, }, } } type modCommands struct { r *rootCommand commands []simplecobra.Commander } func (c *modCommands) Commands() []simplecobra.Commander { return c.commands } func (c *modCommands) Name() string { return "mod" } func (c *modCommands) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { _, err := c.r.ConfigFromProvider(c.r.configVersionID.Load(), nil) if err != nil { return err } // config := conf.configs.Base return nil } func (c *modCommands) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Various Hugo Modules helpers." cmd.Long = `Various helpers to help manage the modules in your project's dependency graph. Most operations here requires a Go version installed on your system (>= Go 1.12) and the relevant VCS client (typically Git). This is not needed if you only operate on modules inside /themes or if you have vendored them via "hugo mod vendor". ` + commonUsageMod cmd.RunE = nil return nil } func (c *modCommands) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) return nil } hugo-0.131.0/commands/new.go000066400000000000000000000165511465312036400155530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "path/filepath" "strings" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/create" "github.com/gohugoio/hugo/create/skeletons" "github.com/spf13/cobra" ) func newNewCommand() *newCommand { var ( force bool contentType string format string ) var c *newCommand c = &newCommand{ commands: []simplecobra.Commander{ &simpleCommand{ name: "content", use: "content [path]", short: "Create new content for your site", long: `Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with ` + "`-k KIND`" + `. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("path needs to be provided") } h, err := r.Hugo(flagsToCfg(cd, nil)) if err != nil { return err } return create.NewContent(h, contentType, args[0], force) }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) != 0 { return []string{}, cobra.ShellCompDirectiveNoFileComp } return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs } cmd.Flags().StringVarP(&contentType, "kind", "k", "", "content type to create") cmd.Flags().String("editor", "", "edit new content with this editor, if provided") _ = cmd.RegisterFlagCompletionFunc("editor", cobra.NoFileCompletions) cmd.Flags().BoolVarP(&force, "force", "f", false, "overwrite file if it already exists") applyLocalFlagsBuildConfig(cmd, r) }, }, &simpleCommand{ name: "site", use: "site [path]", short: "Create a new site (skeleton)", long: `Create a new site in the provided directory. The new site will have the correct structure, but no content or theme yet. Use ` + "`hugo new [contentPath]`" + ` to create new content.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("path needs to be provided") } createpath, err := filepath.Abs(filepath.Clean(args[0])) if err != nil { return err } cfg := config.New() cfg.Set("workingDir", createpath) cfg.Set("publishDir", "public") conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, cfg)) if err != nil { return err } sourceFs := conf.fs.Source err = skeletons.CreateSite(createpath, sourceFs, force, format) if err != nil { return err } r.Printf("Congratulations! Your new Hugo site was created in %s.\n\n", createpath) r.Println(c.newSiteNextStepsText(createpath, format)) return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { if len(args) != 0 { return []string{}, cobra.ShellCompDirectiveNoFileComp } return []string{}, cobra.ShellCompDirectiveNoFileComp | cobra.ShellCompDirectiveFilterDirs } cmd.Flags().BoolVarP(&force, "force", "f", false, "init inside non-empty directory") cmd.Flags().StringVar(&format, "format", "toml", "preferred file format (toml, yaml or json)") _ = cmd.RegisterFlagCompletionFunc("format", cobra.FixedCompletions([]string{"toml", "yaml", "json"}, cobra.ShellCompDirectiveNoFileComp)) }, }, &simpleCommand{ name: "theme", use: "theme [name]", short: "Create a new theme (skeleton)", long: `Create a new theme (skeleton) called [name] in ./themes. New theme is a skeleton. Please add content to the touched files. Add your name to the copyright line in the license and adjust the theme.toml file according to your needs.`, run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { if len(args) < 1 { return newUserError("theme name needs to be provided") } cfg := config.New() cfg.Set("publishDir", "public") conf, err := r.ConfigFromProvider(r.configVersionID.Load(), flagsToCfg(cd, cfg)) if err != nil { return err } sourceFs := conf.fs.Source createpath := paths.AbsPathify(conf.configs.Base.WorkingDir, filepath.Join(conf.configs.Base.ThemesDir, args[0])) r.Println("Creating new theme in", createpath) err = skeletons.CreateTheme(createpath, sourceFs) if err != nil { return err } return nil }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions }, }, }, } return c } type newCommand struct { rootCmd *rootCommand commands []simplecobra.Commander } func (c *newCommand) Commands() []simplecobra.Commander { return c.commands } func (c *newCommand) Name() string { return "new" } func (c *newCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { return nil } func (c *newCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "Create new content for your site" cmd.Long = `Create a new content file and automatically set the date and title. It will guess which kind of file to create based on the path provided. You can also specify the kind with ` + "`-k KIND`" + `. If archetypes are provided in your theme or site, they will be used. Ensure you run this within the root directory of your site.` cmd.RunE = nil return nil } func (c *newCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.rootCmd = cd.Root.Command.(*rootCommand) return nil } func (c *newCommand) newSiteNextStepsText(path string, format string) string { format = strings.ToLower(format) var nextStepsText bytes.Buffer nextStepsText.WriteString(`Just a few more steps... 1. Change the current directory to ` + path + `. 2. Create or install a theme: - Create a new theme with the command "hugo new theme " - Or, install a theme from https://themes.gohugo.io/ 3. Edit hugo.` + format + `, setting the "theme" property to the theme name. 4. Create new content with the command "hugo new content `) nextStepsText.WriteString(filepath.Join("", ".")) nextStepsText.WriteString(`". 5. Start the embedded web server with the command "hugo server --buildDrafts". See documentation at https://gohugo.io/.`) return nextStepsText.String() } hugo-0.131.0/commands/release.go000066400000000000000000000035071465312036400163770ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "context" "github.com/bep/simplecobra" "github.com/gohugoio/hugo/releaser" "github.com/spf13/cobra" ) // Note: This is a command only meant for internal use and must be run // via "go run -tags release main.go release" on the actual code base that is in the release. func newReleaseCommand() simplecobra.Commander { var ( step int skipPush bool try bool ) return &simpleCommand{ name: "release", short: "Release a new version of Hugo.", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { rel, err := releaser.New(skipPush, try, step) if err != nil { return err } return rel.Run() }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.Hidden = true cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.PersistentFlags().BoolVarP(&skipPush, "skip-push", "", false, "skip pushing to remote") cmd.PersistentFlags().BoolVarP(&try, "try", "", false, "no changes") cmd.PersistentFlags().IntVarP(&step, "step", "", 0, "step to run (1: set new version 2: prepare next dev version)") _ = cmd.RegisterFlagCompletionFunc("step", cobra.FixedCompletions([]string{"1", "2"}, cobra.ShellCompDirectiveNoFileComp)) }, } } hugo-0.131.0/commands/server.go000066400000000000000000001017441465312036400162670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package commands import ( "bytes" "context" "crypto/tls" "crypto/x509" "encoding/json" "encoding/pem" "errors" "fmt" "io" "net" "net/http" _ "net/http/pprof" "net/url" "os" "os/signal" "path" "path/filepath" "regexp" "strconv" "strings" "sync" "sync/atomic" "syscall" "time" "github.com/bep/mclib" "github.com/bep/debounce" "github.com/bep/simplecobra" "github.com/fsnotify/fsnotify" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugolib/filesystems" "github.com/gohugoio/hugo/livereload" "github.com/gohugoio/hugo/tpl" "github.com/gohugoio/hugo/transform" "github.com/gohugoio/hugo/transform/livereloadinject" "github.com/spf13/afero" "github.com/spf13/cobra" "github.com/spf13/fsync" "golang.org/x/sync/errgroup" "golang.org/x/sync/semaphore" ) var ( logDuplicateTemplateExecuteRe = regexp.MustCompile(`: template: .*?:\d+:\d+: executing ".*?"`) logDuplicateTemplateParseRe = regexp.MustCompile(`: template: .*?:\d+:\d*`) ) var logReplacer = strings.NewReplacer( "can't", "can’t", // Chroma lexer doesn't do well with "can't" "*hugolib.pageState", "page.Page", // Page is the public interface. "Rebuild failed:", "", ) const ( configChangeConfig = "config file" configChangeGoMod = "go.mod file" configChangeGoWork = "go work file" ) func newHugoBuilder(r *rootCommand, s *serverCommand, onConfigLoaded ...func(reloaded bool) error) *hugoBuilder { var visitedURLs *types.EvictingStringQueue if s != nil && !s.disableFastRender { visitedURLs = types.NewEvictingStringQueue(20) } return &hugoBuilder{ r: r, s: s, visitedURLs: visitedURLs, fullRebuildSem: semaphore.NewWeighted(1), debounce: debounce.New(4 * time.Second), onConfigLoaded: func(reloaded bool) error { for _, wc := range onConfigLoaded { if err := wc(reloaded); err != nil { return err } } return nil }, } } func newServerCommand() *serverCommand { // Flags. var uninstall bool c := &serverCommand{ quit: make(chan bool), commands: []simplecobra.Commander{ &simpleCommand{ name: "trust", short: "Install the local CA in the system trust store.", run: func(ctx context.Context, cd *simplecobra.Commandeer, r *rootCommand, args []string) error { action := "-install" if uninstall { action = "-uninstall" } os.Args = []string{action} return mclib.RunMain() }, withc: func(cmd *cobra.Command, r *rootCommand) { cmd.ValidArgsFunction = cobra.NoFileCompletions cmd.Flags().BoolVar(&uninstall, "uninstall", false, "Uninstall the local CA (but do not delete it).") }, }, }, } return c } func (c *serverCommand) Commands() []simplecobra.Commander { return c.commands } type countingStatFs struct { afero.Fs statCounter uint64 } func (fs *countingStatFs) Stat(name string) (os.FileInfo, error) { f, err := fs.Fs.Stat(name) if err == nil { if !f.IsDir() { atomic.AddUint64(&fs.statCounter, 1) } } return f, err } // dynamicEvents contains events that is considered dynamic, as in "not static". // Both of these categories will trigger a new build, but the asset events // does not fit into the "navigate to changed" logic. type dynamicEvents struct { ContentEvents []fsnotify.Event AssetEvents []fsnotify.Event } type fileChangeDetector struct { sync.Mutex current map[string]uint64 prev map[string]uint64 irrelevantRe *regexp.Regexp } func (f *fileChangeDetector) OnFileClose(name string, checksum uint64) { f.Lock() defer f.Unlock() f.current[name] = checksum } func (f *fileChangeDetector) PrepareNew() { if f == nil { return } f.Lock() defer f.Unlock() if f.current == nil { f.current = make(map[string]uint64) f.prev = make(map[string]uint64) return } f.prev = make(map[string]uint64) for k, v := range f.current { f.prev[k] = v } f.current = make(map[string]uint64) } func (f *fileChangeDetector) changed() []string { if f == nil { return nil } f.Lock() defer f.Unlock() var c []string for k, v := range f.current { vv, found := f.prev[k] if !found || v != vv { c = append(c, k) } } return f.filterIrrelevant(c) } func (f *fileChangeDetector) filterIrrelevant(in []string) []string { var filtered []string for _, v := range in { if !f.irrelevantRe.MatchString(v) { filtered = append(filtered, v) } } return filtered } type fileServer struct { baseURLs []urls.BaseURL roots []string errorTemplate func(err any) (io.Reader, error) c *serverCommand } func (f *fileServer) createEndpoint(i int) (*http.ServeMux, net.Listener, string, string, error) { r := f.c.r baseURL := f.baseURLs[i] root := f.roots[i] port := f.c.serverPorts[i].p listener := f.c.serverPorts[i].ln logger := f.c.r.logger if i == 0 { r.Printf("Environment: %q\n", f.c.hugoTry().Deps.Site.Hugo().Environment) mainTarget := "disk" if f.c.r.renderToMemory { mainTarget = "memory" } if f.c.renderStaticToDisk { r.Printf("Serving pages from %s and static files from disk\n", mainTarget) } else { r.Printf("Serving pages from %s\n", mainTarget) } } var httpFs *afero.HttpFs f.c.withConf(func(conf *commonConfig) { httpFs = afero.NewHttpFs(conf.fs.PublishDirServer) }) fs := filesOnlyFs{httpFs.Dir(path.Join("/", root))} if i == 0 && f.c.fastRenderMode { r.Println("Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender") } decorate := func(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { if f.c.showErrorInBrowser { // First check the error state err := f.c.getErrorWithContext() if err != nil { f.c.errState.setWasErr(true) w.WriteHeader(500) r, err := f.errorTemplate(err) if err != nil { logger.Errorln(err) } port = 1313 f.c.withConf(func(conf *commonConfig) { if lrport := conf.configs.GetFirstLanguageConfig().BaseURLLiveReload().Port(); lrport != 0 { port = lrport } }) lr := baseURL.URL() lr.Host = fmt.Sprintf("%s:%d", lr.Hostname(), port) fmt.Fprint(w, injectLiveReloadScript(r, lr)) return } } if f.c.noHTTPCache { w.Header().Set("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0") w.Header().Set("Pragma", "no-cache") } var serverConfig config.Server f.c.withConf(func(conf *commonConfig) { serverConfig = conf.configs.Base.Server }) // Ignore any query params for the operations below. requestURI, _ := url.PathUnescape(strings.TrimSuffix(r.RequestURI, "?"+r.URL.RawQuery)) for _, header := range serverConfig.MatchHeaders(requestURI) { w.Header().Set(header.Key, header.Value) } if redirect := serverConfig.MatchRedirect(requestURI); !redirect.IsZero() { // fullName := filepath.Join(dir, filepath.FromSlash(path.Clean("/"+name))) doRedirect := true // This matches Netlify's behavior and is needed for SPA behavior. // See https://docs.netlify.com/routing/redirects/rewrites-proxies/ if !redirect.Force { path := filepath.Clean(strings.TrimPrefix(requestURI, baseURL.Path())) if root != "" { path = filepath.Join(root, path) } var fs afero.Fs f.c.withConf(func(conf *commonConfig) { fs = conf.fs.PublishDirServer }) fi, err := fs.Stat(path) if err == nil { if fi.IsDir() { // There will be overlapping directories, so we // need to check for a file. _, err = fs.Stat(filepath.Join(path, "index.html")) doRedirect = err != nil } else { doRedirect = false } } } if doRedirect { switch redirect.Status { case 404: w.WriteHeader(404) file, err := fs.Open(strings.TrimPrefix(redirect.To, baseURL.Path())) if err == nil { defer file.Close() io.Copy(w, file) } else { fmt.Fprintln(w, "

Page Not Found

") } return case 200: if r2 := f.rewriteRequest(r, strings.TrimPrefix(redirect.To, baseURL.Path())); r2 != nil { requestURI = redirect.To r = r2 } default: w.Header().Set("Content-Type", "") http.Redirect(w, r, redirect.To, redirect.Status) return } } } if f.c.fastRenderMode && f.c.errState.buildErr() == nil { if strings.HasSuffix(requestURI, "/") || strings.HasSuffix(requestURI, "html") || strings.HasSuffix(requestURI, "htm") { if !f.c.visitedURLs.Contains(requestURI) { // If not already on stack, re-render that single page. if err := f.c.partialReRender(requestURI); err != nil { f.c.handleBuildErr(err, fmt.Sprintf("Failed to render %q", requestURI)) if f.c.showErrorInBrowser { http.Redirect(w, r, requestURI, http.StatusMovedPermanently) return } } } f.c.visitedURLs.Add(requestURI) } } h.ServeHTTP(w, r) }) } fileserver := decorate(http.FileServer(fs)) mu := http.NewServeMux() if baseURL.Path() == "" || baseURL.Path() == "/" { mu.Handle("/", fileserver) } else { mu.Handle(baseURL.Path(), http.StripPrefix(baseURL.Path(), fileserver)) } if r.IsTestRun() { var shutDownOnce sync.Once mu.HandleFunc("/__stop", func(w http.ResponseWriter, r *http.Request) { shutDownOnce.Do(func() { close(f.c.quit) }) }) } endpoint := net.JoinHostPort(f.c.serverInterface, strconv.Itoa(port)) return mu, listener, baseURL.String(), endpoint, nil } func (f *fileServer) rewriteRequest(r *http.Request, toPath string) *http.Request { r2 := new(http.Request) *r2 = *r r2.URL = new(url.URL) *r2.URL = *r.URL r2.URL.Path = toPath r2.Header.Set("X-Rewrite-Original-URI", r.URL.RequestURI()) return r2 } type filesOnlyFs struct { fs http.FileSystem } func (fs filesOnlyFs) Open(name string) (http.File, error) { f, err := fs.fs.Open(name) if err != nil { return nil, err } return noDirFile{f}, nil } type noDirFile struct { http.File } func (f noDirFile) Readdir(count int) ([]os.FileInfo, error) { return nil, nil } type serverCommand struct { r *rootCommand commands []simplecobra.Commander *hugoBuilder quit chan bool // Closed when the server should shut down. Used in tests only. serverPorts []serverPortListener doLiveReload bool // Flags. renderStaticToDisk bool navigateToChanged bool serverAppend bool serverInterface string tlsCertFile string tlsKeyFile string tlsAuto bool pprof bool serverPort int liveReloadPort int serverWatch bool noHTTPCache bool disableLiveReload bool disableFastRender bool disableBrowserError bool } func (c *serverCommand) Name() string { return "server" } func (c *serverCommand) Run(ctx context.Context, cd *simplecobra.Commandeer, args []string) error { if c.pprof { go func() { http.ListenAndServe("localhost:8080", nil) }() } // Watch runs its own server as part of the routine if c.serverWatch { watchDirs, err := c.getDirList() if err != nil { return err } watchGroups := helpers.ExtractAndGroupRootPaths(watchDirs) for _, group := range watchGroups { c.r.Printf("Watching for changes in %s\n", group) } watcher, err := c.newWatcher(c.r.poll, watchDirs...) if err != nil { return err } defer watcher.Close() } err := func() error { defer c.r.timeTrack(time.Now(), "Built") return c.build() }() if err != nil { return err } return c.serve() } func (c *serverCommand) Init(cd *simplecobra.Commandeer) error { cmd := cd.CobraCommand cmd.Short = "A high performance webserver" cmd.Long = `Hugo provides its own webserver which builds and serves the site. While hugo server is high performance, it is a webserver with limited options. The ` + "`" + `hugo server` + "`" + ` command will by default write and serve files from disk, but you can render to memory by using the ` + "`" + `--renderToMemory` + "`" + ` flag. This can be faster in some cases, but it will consume more memory. By default hugo will also watch your files for any changes you make and automatically rebuild the site. It will then live reload any open browser pages and push the latest content to them. As most Hugo sites are built in a fraction of a second, you will be able to save and see your changes nearly instantly.` cmd.Aliases = []string{"serve"} cmd.Flags().IntVarP(&c.serverPort, "port", "p", 1313, "port on which the server will listen") _ = cmd.RegisterFlagCompletionFunc("port", cobra.NoFileCompletions) cmd.Flags().IntVar(&c.liveReloadPort, "liveReloadPort", -1, "port for live reloading (i.e. 443 in HTTPS proxy situations)") _ = cmd.RegisterFlagCompletionFunc("liveReloadPort", cobra.NoFileCompletions) cmd.Flags().StringVarP(&c.serverInterface, "bind", "", "127.0.0.1", "interface to which the server will bind") _ = cmd.RegisterFlagCompletionFunc("bind", cobra.NoFileCompletions) cmd.Flags().StringVarP(&c.tlsCertFile, "tlsCertFile", "", "", "path to TLS certificate file") _ = cmd.MarkFlagFilename("tlsCertFile", "pem") cmd.Flags().StringVarP(&c.tlsKeyFile, "tlsKeyFile", "", "", "path to TLS key file") _ = cmd.MarkFlagFilename("tlsKeyFile", "pem") cmd.Flags().BoolVar(&c.tlsAuto, "tlsAuto", false, "generate and use locally-trusted certificates.") cmd.Flags().BoolVar(&c.pprof, "pprof", false, "enable the pprof server (port 8080)") cmd.Flags().BoolVarP(&c.serverWatch, "watch", "w", true, "watch filesystem for changes and recreate as needed") cmd.Flags().BoolVar(&c.noHTTPCache, "noHTTPCache", false, "prevent HTTP caching") cmd.Flags().BoolVarP(&c.serverAppend, "appendPort", "", true, "append port to baseURL") cmd.Flags().BoolVar(&c.disableLiveReload, "disableLiveReload", false, "watch without enabling live browser reload on rebuild") cmd.Flags().BoolVarP(&c.navigateToChanged, "navigateToChanged", "N", false, "navigate to changed content file on live browser reload") cmd.Flags().BoolVar(&c.renderStaticToDisk, "renderStaticToDisk", false, "serve static files from disk and dynamic files from memory") cmd.Flags().BoolVar(&c.disableFastRender, "disableFastRender", false, "enables full re-renders on changes") cmd.Flags().BoolVar(&c.disableBrowserError, "disableBrowserError", false, "do not show build errors in the browser") r := cd.Root.Command.(*rootCommand) applyLocalFlagsBuild(cmd, r) return nil } func (c *serverCommand) PreRun(cd, runner *simplecobra.Commandeer) error { c.r = cd.Root.Command.(*rootCommand) c.hugoBuilder = newHugoBuilder( c.r, c, func(reloaded bool) error { if !reloaded { if err := c.createServerPorts(cd); err != nil { return err } if (c.tlsCertFile == "" || c.tlsKeyFile == "") && c.tlsAuto { c.withConfE(func(conf *commonConfig) error { return c.createCertificates(conf) }) } } if err := c.setServerInfoInConfig(); err != nil { return err } if !reloaded && c.fastRenderMode { c.withConf(func(conf *commonConfig) { conf.fs.PublishDir = hugofs.NewHashingFs(conf.fs.PublishDir, c.changeDetector) conf.fs.PublishDirStatic = hugofs.NewHashingFs(conf.fs.PublishDirStatic, c.changeDetector) }) } return nil }, ) destinationFlag := cd.CobraCommand.Flags().Lookup("destination") if c.r.renderToMemory && (destinationFlag != nil && destinationFlag.Changed) { return fmt.Errorf("cannot use --renderToMemory with --destination") } c.doLiveReload = !c.disableLiveReload c.fastRenderMode = !c.disableFastRender c.showErrorInBrowser = c.doLiveReload && !c.disableBrowserError if c.fastRenderMode { // For now, fast render mode only. It should, however, be fast enough // for the full variant, too. c.changeDetector = &fileChangeDetector{ // We use this detector to decide to do a Hot reload of a single path or not. // We need to filter out source maps and possibly some other to be able // to make that decision. irrelevantRe: regexp.MustCompile(`\.map$`), } c.changeDetector.PrepareNew() } err := c.loadConfig(cd, true) if err != nil { return err } return nil } func (c *serverCommand) setServerInfoInConfig() error { if len(c.serverPorts) == 0 { panic("no server ports set") } return c.withConfE(func(conf *commonConfig) error { for i, language := range conf.configs.Languages { isMultihost := conf.configs.IsMultihost var serverPort int if isMultihost { serverPort = c.serverPorts[i].p } else { serverPort = c.serverPorts[0].p } langConfig := conf.configs.LanguageConfigMap[language.Lang] baseURLStr, err := c.fixURL(langConfig.BaseURL, c.r.baseURL, serverPort) if err != nil { return err } baseURL, err := urls.NewBaseURLFromString(baseURLStr) if err != nil { return fmt.Errorf("failed to create baseURL from %q: %s", baseURLStr, err) } baseURLLiveReload := baseURL if c.liveReloadPort != -1 { baseURLLiveReload, _ = baseURLLiveReload.WithPort(c.liveReloadPort) } langConfig.C.SetServerInfo(baseURL, baseURLLiveReload, c.serverInterface) } return nil }) } func (c *serverCommand) getErrorWithContext() any { errCount := c.errCount() if errCount == 0 { return nil } m := make(map[string]any) m["Error"] = cleanErrorLog(c.r.logger.Errors()) m["Version"] = hugo.BuildVersionString() ferrors := herrors.UnwrapFileErrorsWithErrorContext(c.errState.buildErr()) m["Files"] = ferrors return m } func (c *serverCommand) createCertificates(conf *commonConfig) error { hostname := "localhost" if c.r.baseURL != "" { u, err := url.Parse(c.r.baseURL) if err != nil { return err } hostname = u.Hostname() } // For now, store these in the Hugo cache dir. // Hugo should probably introduce some concept of a less temporary application directory. keyDir := filepath.Join(conf.configs.LoadingInfo.BaseConfig.CacheDir, "_mkcerts") // Create the directory if it doesn't exist. if _, err := os.Stat(keyDir); os.IsNotExist(err) { if err := os.MkdirAll(keyDir, 0o777); err != nil { return err } } c.tlsCertFile = filepath.Join(keyDir, fmt.Sprintf("%s.pem", hostname)) c.tlsKeyFile = filepath.Join(keyDir, fmt.Sprintf("%s-key.pem", hostname)) // Check if the certificate already exists and is valid. certPEM, err := os.ReadFile(c.tlsCertFile) if err == nil { rootPem, err := os.ReadFile(filepath.Join(mclib.GetCAROOT(), "rootCA.pem")) if err == nil { if err := c.verifyCert(rootPem, certPEM, hostname); err == nil { c.r.Println("Using existing", c.tlsCertFile, "and", c.tlsKeyFile) return nil } } } c.r.Println("Creating TLS certificates in", keyDir) // Yes, this is unfortunate, but it's currently the only way to use Mkcert as a library. os.Args = []string{"-cert-file", c.tlsCertFile, "-key-file", c.tlsKeyFile, hostname} return mclib.RunMain() } func (c *serverCommand) verifyCert(rootPEM, certPEM []byte, name string) error { roots := x509.NewCertPool() ok := roots.AppendCertsFromPEM(rootPEM) if !ok { return fmt.Errorf("failed to parse root certificate") } block, _ := pem.Decode(certPEM) if block == nil { return fmt.Errorf("failed to parse certificate PEM") } cert, err := x509.ParseCertificate(block.Bytes) if err != nil { return fmt.Errorf("failed to parse certificate: %v", err.Error()) } opts := x509.VerifyOptions{ DNSName: name, Roots: roots, } if _, err := cert.Verify(opts); err != nil { return fmt.Errorf("failed to verify certificate: %v", err.Error()) } return nil } func (c *serverCommand) createServerPorts(cd *simplecobra.Commandeer) error { flags := cd.CobraCommand.Flags() var cerr error c.withConf(func(conf *commonConfig) { isMultihost := conf.configs.IsMultihost c.serverPorts = make([]serverPortListener, 1) if isMultihost { if !c.serverAppend { cerr = errors.New("--appendPort=false not supported when in multihost mode") return } c.serverPorts = make([]serverPortListener, len(conf.configs.Languages)) } currentServerPort := c.serverPort for i := 0; i < len(c.serverPorts); i++ { l, err := net.Listen("tcp", net.JoinHostPort(c.serverInterface, strconv.Itoa(currentServerPort))) if err == nil { c.serverPorts[i] = serverPortListener{ln: l, p: currentServerPort} } else { if i == 0 && flags.Changed("port") { // port set explicitly by user -- he/she probably meant it! cerr = fmt.Errorf("server startup failed: %s", err) return } c.r.Println("port", currentServerPort, "already in use, attempting to use an available port") l, sp, err := helpers.TCPListen() if err != nil { cerr = fmt.Errorf("unable to find alternative port to use: %s", err) return } c.serverPorts[i] = serverPortListener{ln: l, p: sp.Port} } currentServerPort = c.serverPorts[i].p + 1 } }) return cerr } // fixURL massages the baseURL into a form needed for serving // all pages correctly. func (c *serverCommand) fixURL(baseURLFromConfig, baseURLFromFlag string, port int) (string, error) { certsSet := (c.tlsCertFile != "" && c.tlsKeyFile != "") || c.tlsAuto useLocalhost := false baseURL := baseURLFromFlag if baseURL == "" { baseURL = baseURLFromConfig useLocalhost = true } if !strings.HasSuffix(baseURL, "/") { baseURL = baseURL + "/" } // do an initial parse of the input string u, err := url.Parse(baseURL) if err != nil { return "", err } // if no Host is defined, then assume that no schema or double-slash were // present in the url. Add a double-slash and make a best effort attempt. if u.Host == "" && baseURL != "/" { baseURL = "//" + baseURL u, err = url.Parse(baseURL) if err != nil { return "", err } } if useLocalhost { if certsSet { u.Scheme = "https" } else if u.Scheme == "https" { u.Scheme = "http" } u.Host = "localhost" } if c.serverAppend { if strings.Contains(u.Host, ":") { u.Host, _, err = net.SplitHostPort(u.Host) if err != nil { return "", fmt.Errorf("failed to split baseURL hostport: %w", err) } } u.Host += fmt.Sprintf(":%d", port) } return u.String(), nil } func (c *serverCommand) partialReRender(urls ...string) error { defer func() { c.errState.setWasErr(false) }() c.errState.setBuildErr(nil) visited := types.NewEvictingStringQueue(len(urls)) for _, url := range urls { visited.Add(url) } h, err := c.hugo() if err != nil { return err } // Note: We do not set NoBuildLock as the file lock is not acquired at this stage. return h.Build(hugolib.BuildCfg{NoBuildLock: false, RecentlyVisited: visited, PartialReRender: true, ErrRecovery: c.errState.wasErr()}) } func (c *serverCommand) serve() error { var ( baseURLs []urls.BaseURL roots []string h *hugolib.HugoSites ) err := c.withConfE(func(conf *commonConfig) error { isMultihost := conf.configs.IsMultihost var err error h, err = c.r.HugFromConfig(conf) if err != nil { return err } // We need the server to share the same logger as the Hugo build (for error counts etc.) c.r.logger = h.Log if isMultihost { for _, l := range conf.configs.ConfigLangs() { baseURLs = append(baseURLs, l.BaseURL()) roots = append(roots, l.Language().Lang) } } else { l := conf.configs.GetFirstLanguageConfig() baseURLs = []urls.BaseURL{l.BaseURL()} roots = []string{""} } return nil }) if err != nil { return err } // Cache it here. The HugoSites object may be unavailable later on due to intermittent configuration errors. // To allow the en user to change the error template while the server is running, we use // the freshest template we can provide. var ( errTempl tpl.Template templHandler tpl.TemplateHandler ) getErrorTemplateAndHandler := func(h *hugolib.HugoSites) (tpl.Template, tpl.TemplateHandler) { if h == nil { return errTempl, templHandler } templHandler := h.Tmpl() errTempl, found := templHandler.Lookup("_server/error.html") if !found { panic("template server/error.html not found") } return errTempl, templHandler } errTempl, templHandler = getErrorTemplateAndHandler(h) srv := &fileServer{ baseURLs: baseURLs, roots: roots, c: c, errorTemplate: func(ctx any) (io.Reader, error) { // hugoTry does not block, getErrorTemplateAndHandler will fall back // to cached values if nil. templ, handler := getErrorTemplateAndHandler(c.hugoTry()) b := &bytes.Buffer{} err := handler.ExecuteWithContext(context.Background(), templ, b, ctx) return b, err }, } doLiveReload := !c.disableLiveReload if doLiveReload { livereload.Initialize() } sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) var servers []*http.Server wg1, ctx := errgroup.WithContext(context.Background()) for i := range baseURLs { mu, listener, serverURL, endpoint, err := srv.createEndpoint(i) var srv *http.Server if c.tlsCertFile != "" && c.tlsKeyFile != "" { srv = &http.Server{ Addr: endpoint, Handler: mu, TLSConfig: &tls.Config{ MinVersion: tls.VersionTLS12, }, } } else { srv = &http.Server{ Addr: endpoint, Handler: mu, } } servers = append(servers, srv) if doLiveReload { baseURL := baseURLs[i] mu.HandleFunc(baseURL.Path()+"livereload.js", livereload.ServeJS) mu.HandleFunc(baseURL.Path()+"livereload", livereload.Handler) } c.r.Printf("Web Server is available at %s (bind address %s) %s\n", serverURL, c.serverInterface, roots[i]) wg1.Go(func() error { if c.tlsCertFile != "" && c.tlsKeyFile != "" { err = srv.ServeTLS(listener, c.tlsCertFile, c.tlsKeyFile) } else { err = srv.Serve(listener) } if err != nil && err != http.ErrServerClosed { return err } return nil }) } if c.r.IsTestRun() { // Write a .ready file to disk to signal ready status. // This is where the test is run from. var baseURLs []string for _, baseURL := range srv.baseURLs { baseURLs = append(baseURLs, baseURL.String()) } testInfo := map[string]any{ "baseURLs": baseURLs, } dir := os.Getenv("WORK") if dir != "" { readyFile := filepath.Join(dir, ".ready") // encode the test info as JSON into the .ready file. b, err := json.Marshal(testInfo) if err != nil { return err } err = os.WriteFile(readyFile, b, 0o777) if err != nil { return err } } } c.r.Println("Press Ctrl+C to stop") err = func() error { for { select { case <-c.quit: return nil case <-sigs: return nil case <-ctx.Done(): return ctx.Err() } } }() if err != nil { c.r.Println("Error:", err) } if h := c.hugoTry(); h != nil { h.Close() } ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() wg2, ctx := errgroup.WithContext(ctx) for _, srv := range servers { srv := srv wg2.Go(func() error { return srv.Shutdown(ctx) }) } err1, err2 := wg1.Wait(), wg2.Wait() if err1 != nil { return err1 } return err2 } type serverPortListener struct { p int ln net.Listener } type staticSyncer struct { c *hugoBuilder } func (s *staticSyncer) isStatic(h *hugolib.HugoSites, filename string) bool { return h.BaseFs.SourceFilesystems.IsStatic(filename) } func (s *staticSyncer) syncsStaticEvents(staticEvents []fsnotify.Event) error { c := s.c syncFn := func(sourceFs *filesystems.SourceFilesystem) (uint64, error) { publishDir := helpers.FilePathSeparator if sourceFs.PublishFolder != "" { publishDir = filepath.Join(publishDir, sourceFs.PublishFolder) } syncer := fsync.NewSyncer() c.withConf(func(conf *commonConfig) { syncer.NoTimes = conf.configs.Base.NoTimes syncer.NoChmod = conf.configs.Base.NoChmod syncer.ChmodFilter = chmodFilter syncer.SrcFs = sourceFs.Fs syncer.DestFs = conf.fs.PublishDir if c.s != nil && c.s.renderStaticToDisk { syncer.DestFs = conf.fs.PublishDirStatic } }) logger := s.c.r.logger for _, ev := range staticEvents { // Due to our approach of layering both directories and the content's rendered output // into one we can't accurately remove a file not in one of the source directories. // If a file is in the local static dir and also in the theme static dir and we remove // it from one of those locations we expect it to still exist in the destination // // If Hugo generates a file (from the content dir) over a static file // the content generated file should take precedence. // // Because we are now watching and handling individual events it is possible that a static // event that occupies the same path as a content generated file will take precedence // until a regeneration of the content takes places. // // Hugo assumes that these cases are very rare and will permit this bad behavior // The alternative is to track every single file and which pipeline rendered it // and then to handle conflict resolution on every event. fromPath := ev.Name relPath, found := sourceFs.MakePathRelative(fromPath, true) if !found { // Not member of this virtual host. continue } // Remove || rename is harder and will require an assumption. // Hugo takes the following approach: // If the static file exists in any of the static source directories after this event // Hugo will re-sync it. // If it does not exist in all of the static directories Hugo will remove it. // // This assumes that Hugo has not generated content on top of a static file and then removed // the source of that static file. In this case Hugo will incorrectly remove that file // from the published directory. if ev.Op&fsnotify.Rename == fsnotify.Rename || ev.Op&fsnotify.Remove == fsnotify.Remove { if _, err := sourceFs.Fs.Stat(relPath); herrors.IsNotExist(err) { // If file doesn't exist in any static dir, remove it logger.Println("File no longer exists in static dir, removing", relPath) c.withConf(func(conf *commonConfig) { _ = conf.fs.PublishDirStatic.RemoveAll(relPath) }) } else if err == nil { // If file still exists, sync it logger.Println("Syncing", relPath, "to", publishDir) if err := syncer.Sync(relPath, relPath); err != nil { c.r.logger.Errorln(err) } } else { c.r.logger.Errorln(err) } continue } // For all other event operations Hugo will sync static. logger.Println("Syncing", relPath, "to", publishDir) if err := syncer.Sync(filepath.Join(publishDir, relPath), relPath); err != nil { c.r.logger.Errorln(err) } } return 0, nil } _, err := c.doWithPublishDirs(syncFn) return err } func chmodFilter(dst, src os.FileInfo) bool { // Hugo publishes data from multiple sources, potentially // with overlapping directory structures. We cannot sync permissions // for directories as that would mean that we might end up with write-protected // directories inside /public. // One example of this would be syncing from the Go Module cache, // which have 0555 directories. return src.IsDir() } func cleanErrorLog(content string) string { content = strings.ReplaceAll(content, "\n", " ") content = logReplacer.Replace(content) content = logDuplicateTemplateExecuteRe.ReplaceAllString(content, "") content = logDuplicateTemplateParseRe.ReplaceAllString(content, "") seen := make(map[string]bool) parts := strings.Split(content, ": ") keep := make([]string, 0, len(parts)) for _, part := range parts { if seen[part] { continue } seen[part] = true keep = append(keep, part) } return strings.Join(keep, ": ") } func injectLiveReloadScript(src io.Reader, baseURL *url.URL) string { var b bytes.Buffer chain := transform.Chain{livereloadinject.New(baseURL)} chain.Apply(&b, src) return b.String() } func partitionDynamicEvents(sourceFs *filesystems.SourceFilesystems, events []fsnotify.Event) (de dynamicEvents) { for _, e := range events { if !sourceFs.IsContent(e.Name) { de.AssetEvents = append(de.AssetEvents, e) } else { de.ContentEvents = append(de.ContentEvents, e) } } return } func pickOneWriteOrCreatePath(contentTypes config.ContentTypesProvider, events []fsnotify.Event) string { name := "" for _, ev := range events { if ev.Op&fsnotify.Write == fsnotify.Write || ev.Op&fsnotify.Create == fsnotify.Create { if contentTypes.IsIndexContentFile(ev.Name) { return ev.Name } if contentTypes.IsContentFile(ev.Name) { name = ev.Name } } } return name } func formatByteCount(b uint64) string { const unit = 1000 if b < unit { return fmt.Sprintf("%d B", b) } div, exp := int64(unit), 0 for n := b / unit; n >= unit; n /= unit { div *= unit exp++ } return fmt.Sprintf("%.1f %cB", float64(b)/float64(div), "kMGTPE"[exp]) } hugo-0.131.0/common/000077500000000000000000000000001465312036400141125ustar00rootroot00000000000000hugo-0.131.0/common/collections/000077500000000000000000000000001465312036400164305ustar00rootroot00000000000000hugo-0.131.0/common/collections/append.go000066400000000000000000000074621465312036400202370ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package collections import ( "fmt" "reflect" ) // Append appends from to a slice to and returns the resulting slice. // If length of from is one and the only element is a slice of same type as to, // it will be appended. func Append(to any, from ...any) (any, error) { if len(from) == 0 { return to, nil } tov, toIsNil := indirect(reflect.ValueOf(to)) toIsNil = toIsNil || to == nil var tot reflect.Type if !toIsNil { if tov.Kind() == reflect.Slice { // Create a copy of tov, so we don't modify the original. c := reflect.MakeSlice(tov.Type(), tov.Len(), tov.Len()+len(from)) reflect.Copy(c, tov) tov = c } if tov.Kind() != reflect.Slice { return nil, fmt.Errorf("expected a slice, got %T", to) } tot = tov.Type().Elem() if tot.Kind() == reflect.Slice { totvt := tot.Elem() fromvs := make([]reflect.Value, len(from)) for i, f := range from { fromv := reflect.ValueOf(f) fromt := fromv.Type() if fromt.Kind() == reflect.Slice { fromt = fromt.Elem() } if totvt != fromt { return nil, fmt.Errorf("cannot append slice of %s to slice of %s", fromt, totvt) } else { fromvs[i] = fromv } } return reflect.Append(tov, fromvs...).Interface(), nil } toIsNil = tov.Len() == 0 if len(from) == 1 { fromv := reflect.ValueOf(from[0]) if !fromv.IsValid() { // from[0] is nil return appendToInterfaceSliceFromValues(tov, fromv) } fromt := fromv.Type() if fromt.Kind() == reflect.Slice { fromt = fromt.Elem() } if fromv.Kind() == reflect.Slice { if toIsNil { // If we get nil []string, we just return the []string return from[0], nil } // If we get []string []string, we append the from slice to to if tot == fromt { return reflect.AppendSlice(tov, fromv).Interface(), nil } else if !fromt.AssignableTo(tot) { // Fall back to a []interface{} slice. return appendToInterfaceSliceFromValues(tov, fromv) } } } } if toIsNil { return Slice(from...), nil } for _, f := range from { fv := reflect.ValueOf(f) if !fv.IsValid() || !fv.Type().AssignableTo(tot) { // Fall back to a []interface{} slice. tov, _ := indirect(reflect.ValueOf(to)) return appendToInterfaceSlice(tov, from...) } tov = reflect.Append(tov, fv) } return tov.Interface(), nil } func appendToInterfaceSliceFromValues(slice1, slice2 reflect.Value) ([]any, error) { var tos []any for _, slice := range []reflect.Value{slice1, slice2} { if !slice.IsValid() { tos = append(tos, nil) continue } for i := 0; i < slice.Len(); i++ { tos = append(tos, slice.Index(i).Interface()) } } return tos, nil } func appendToInterfaceSlice(tov reflect.Value, from ...any) ([]any, error) { var tos []any for i := 0; i < tov.Len(); i++ { tos = append(tos, tov.Index(i).Interface()) } tos = append(tos, from...) return tos, nil } // indirect is borrowed from the Go stdlib: 'text/template/exec.go' // TODO(bep) consolidate func indirect(v reflect.Value) (rv reflect.Value, isNil bool) { for ; v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface; v = v.Elem() { if v.IsNil() { return v, true } if v.Kind() == reflect.Interface && v.NumMethod() > 0 { break } } return v, false } hugo-0.131.0/common/collections/append_test.go000066400000000000000000000074121465312036400212710ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package collections import ( "html/template" "testing" qt "github.com/frankban/quicktest" ) func TestAppend(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { start any addend []any expected any }{ {[]string{"a", "b"}, []any{"c"}, []string{"a", "b", "c"}}, {[]string{"a", "b"}, []any{"c", "d", "e"}, []string{"a", "b", "c", "d", "e"}}, {[]string{"a", "b"}, []any{[]string{"c", "d", "e"}}, []string{"a", "b", "c", "d", "e"}}, {[]string{"a"}, []any{"b", template.HTML("c")}, []any{"a", "b", template.HTML("c")}}, {nil, []any{"a", "b"}, []string{"a", "b"}}, {nil, []any{nil}, []any{nil}}, {[]any{}, []any{[]string{"c", "d", "e"}}, []string{"c", "d", "e"}}, { tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, []any{&tstSlicer{"c"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}, &tstSlicer{"c"}}, }, { &tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, []any{&tstSlicer{"c"}}, tstSlicers{ &tstSlicer{"a"}, &tstSlicer{"b"}, &tstSlicer{"c"}, }, }, { testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}}, []any{&tstSlicerIn1{"c"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}, &tstSlicerIn1{"c"}}, }, // https://github.com/gohugoio/hugo/issues/5361 { []string{"a", "b"}, []any{tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, []any{"a", "b", &tstSlicer{"a"}, &tstSlicer{"b"}}, }, { []string{"a", "b"}, []any{&tstSlicer{"a"}}, []any{"a", "b", &tstSlicer{"a"}}, }, // Errors {"", []any{[]string{"a", "b"}}, false}, // No string concatenation. { "ab", []any{"c"}, false, }, {[]string{"a", "b"}, []any{nil}, []any{"a", "b", nil}}, {[]string{"a", "b"}, []any{nil, "d", nil}, []any{"a", "b", nil, "d", nil}}, {[]any{"a", nil, "c"}, []any{"d", nil, "f"}, []any{"a", nil, "c", "d", nil, "f"}}, } { result, err := Append(test.start, test.addend...) if b, ok := test.expected.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) continue } c.Assert(err, qt.IsNil) c.Assert(result, qt.DeepEquals, test.expected, qt.Commentf("test: [%d] %v", i, test)) } } // #11093 func TestAppendToMultiDimensionalSlice(t *testing.T) { t.Parallel() c := qt.New(t) for _, test := range []struct { to any from []any expected any }{ { [][]string{{"a", "b"}}, []any{[]string{"c", "d"}}, [][]string{ {"a", "b"}, {"c", "d"}, }, }, { [][]string{{"a", "b"}}, []any{[]string{"c", "d"}, []string{"e", "f"}}, [][]string{ {"a", "b"}, {"c", "d"}, {"e", "f"}, }, }, { [][]string{{"a", "b"}}, []any{[]int{1, 2}}, false, }, } { result, err := Append(test.to, test.from...) if b, ok := test.expected.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) } else { c.Assert(err, qt.IsNil) c.Assert(result, qt.DeepEquals, test.expected) } } } func TestAppendShouldMakeACopyOfTheInputSlice(t *testing.T) { t.Parallel() c := qt.New(t) slice := make([]string, 0, 100) slice = append(slice, "a", "b") result, err := Append(slice, "c") c.Assert(err, qt.IsNil) slice[0] = "d" c.Assert(result, qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(slice, qt.DeepEquals, []string{"d", "b"}) } hugo-0.131.0/common/collections/collections.go000066400000000000000000000015331465312036400212770ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. // Package collections contains common Hugo functionality related to collection // handling. package collections // Grouper defines a very generic way to group items by a given key. type Grouper interface { Group(key any, items any) (any, error) } hugo-0.131.0/common/collections/order.go000066400000000000000000000013761465312036400201010ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // 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. package collections type Order interface { // Ordinal is a zero-based ordinal that represents the order of an object // in a collection. Ordinal() int } hugo-0.131.0/common/collections/slice.go000066400000000000000000000044631465312036400200650ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package collections import ( "reflect" "sort" ) // Slicer defines a very generic way to create a typed slice. This is used // in collections.Slice template func to get types such as Pages, PageGroups etc. // instead of the less useful []interface{}. type Slicer interface { Slice(items any) (any, error) } // Slice returns a slice of all passed arguments. func Slice(args ...any) any { if len(args) == 0 { return args } first := args[0] firstType := reflect.TypeOf(first) if firstType == nil { return args } if g, ok := first.(Slicer); ok { v, err := g.Slice(args) if err == nil { return v } // If Slice fails, the items are not of the same type and // []interface{} is the best we can do. return args } if len(args) > 1 { // This can be a mix of types. for i := 1; i < len(args); i++ { if firstType != reflect.TypeOf(args[i]) { // []interface{} is the best we can do return args } } } slice := reflect.MakeSlice(reflect.SliceOf(firstType), len(args), len(args)) for i, arg := range args { slice.Index(i).Set(reflect.ValueOf(arg)) } return slice.Interface() } // StringSliceToInterfaceSlice converts ss to []interface{}. func StringSliceToInterfaceSlice(ss []string) []any { result := make([]any, len(ss)) for i, s := range ss { result[i] = s } return result } type SortedStringSlice []string // Contains returns true if s is in ss. func (ss SortedStringSlice) Contains(s string) bool { i := sort.SearchStrings(ss, s) return i < len(ss) && ss[i] == s } // Count returns the number of times s is in ss. func (ss SortedStringSlice) Count(s string) int { var count int i := sort.SearchStrings(ss, s) for i < len(ss) && ss[i] == s { count++ i++ } return count } hugo-0.131.0/common/collections/slice_test.go000066400000000000000000000064331465312036400211230ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package collections import ( "errors" "testing" qt "github.com/frankban/quicktest" ) var ( _ Slicer = (*tstSlicer)(nil) _ Slicer = (*tstSlicerIn1)(nil) _ Slicer = (*tstSlicerIn2)(nil) _ testSlicerInterface = (*tstSlicerIn1)(nil) _ testSlicerInterface = (*tstSlicerIn1)(nil) ) type testSlicerInterface interface { Name() string } type testSlicerInterfaces []testSlicerInterface type tstSlicerIn1 struct { TheName string } type tstSlicerIn2 struct { TheName string } type tstSlicer struct { TheName string } func (p *tstSlicerIn1) Slice(in any) (any, error) { items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { case testSlicerInterface: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } func (p *tstSlicerIn2) Slice(in any) (any, error) { items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { case testSlicerInterface: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } func (p *tstSlicerIn1) Name() string { return p.TheName } func (p *tstSlicerIn2) Name() string { return p.TheName } func (p *tstSlicer) Slice(in any) (any, error) { items := in.([]any) result := make(tstSlicers, len(items)) for i, v := range items { switch vv := v.(type) { case *tstSlicer: result[i] = vv default: return nil, errors.New("invalid type") } } return result, nil } type tstSlicers []*tstSlicer func TestSlice(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { args []any expected any }{ {[]any{"a", "b"}, []string{"a", "b"}}, {[]any{&tstSlicer{"a"}, &tstSlicer{"b"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, {[]any{&tstSlicer{"a"}, "b"}, []any{&tstSlicer{"a"}, "b"}}, {[]any{}, []any{}}, {[]any{nil}, []any{nil}}, {[]any{5, "b"}, []any{5, "b"}}, {[]any{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}}, {[]any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}, []any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}}, } { errMsg := qt.Commentf("[%d] %v", i, test.args) result := Slice(test.args...) c.Assert(test.expected, qt.DeepEquals, result, errMsg) } } func TestSortedStringSlice(t *testing.T) { t.Parallel() c := qt.New(t) var s SortedStringSlice = []string{"a", "b", "b", "b", "c", "d"} c.Assert(s.Contains("a"), qt.IsTrue) c.Assert(s.Contains("b"), qt.IsTrue) c.Assert(s.Contains("z"), qt.IsFalse) c.Assert(s.Count("b"), qt.Equals, 3) c.Assert(s.Count("z"), qt.Equals, 0) c.Assert(s.Count("a"), qt.Equals, 1) } hugo-0.131.0/common/collections/stack.go000066400000000000000000000034351465312036400200710ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package collections import "sync" // Stack is a simple LIFO stack that is safe for concurrent use. type Stack[T any] struct { items []T zero T mu sync.RWMutex } func NewStack[T any]() *Stack[T] { return &Stack[T]{} } func (s *Stack[T]) Push(item T) { s.mu.Lock() defer s.mu.Unlock() s.items = append(s.items, item) } func (s *Stack[T]) Pop() (T, bool) { s.mu.Lock() defer s.mu.Unlock() if len(s.items) == 0 { return s.zero, false } item := s.items[len(s.items)-1] s.items = s.items[:len(s.items)-1] return item, true } func (s *Stack[T]) Peek() (T, bool) { s.mu.RLock() defer s.mu.RUnlock() if len(s.items) == 0 { return s.zero, false } return s.items[len(s.items)-1], true } func (s *Stack[T]) Len() int { s.mu.RLock() defer s.mu.RUnlock() return len(s.items) } func (s *Stack[T]) Drain() []T { s.mu.Lock() defer s.mu.Unlock() items := s.items s.items = nil return items } func (s *Stack[T]) DrainMatching(predicate func(T) bool) []T { s.mu.Lock() defer s.mu.Unlock() var items []T for i := len(s.items) - 1; i >= 0; i-- { if predicate(s.items[i]) { items = append(items, s.items[i]) s.items = append(s.items[:i], s.items[i+1:]...) } } return items } hugo-0.131.0/common/constants/000077500000000000000000000000001465312036400161265ustar00rootroot00000000000000hugo-0.131.0/common/constants/constants.go000066400000000000000000000030351465312036400204720ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // 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. package constants // Error/Warning IDs. // Do not change these values. const ( // IDs for remote errors in tpl/data. ErrRemoteGetJSON = "error-remote-getjson" ErrRemoteGetCSV = "error-remote-getcsv" WarnFrontMatterParamsOverrides = "warning-frontmatter-params-overrides" ) // Field/method names with special meaning. const ( FieldRelPermalink = "RelPermalink" FieldPermalink = "Permalink" ) // IsFieldRelOrPermalink returns whether the given name is a RelPermalink or Permalink. func IsFieldRelOrPermalink(name string) bool { return name == FieldRelPermalink || name == FieldPermalink } // Resource transformations. const ( ResourceTransformationFingerprint = "fingerprint" ) // IsResourceTransformationLinkChange returns whether the given name is a resource transformation that changes the permalink based on the content. func IsResourceTransformationPermalinkHash(name string) bool { return name == ResourceTransformationFingerprint } hugo-0.131.0/common/docs.go000066400000000000000000000001201465312036400153620ustar00rootroot00000000000000// Package common provides common helper functionality for Hugo. package common hugo-0.131.0/common/hashing/000077500000000000000000000000001465312036400155335ustar00rootroot00000000000000hugo-0.131.0/common/hashing/hashing.go000066400000000000000000000077401465312036400175130ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package hashing provides common hashing utilities. package hashing import ( "crypto/md5" "encoding/hex" "io" "strconv" "sync" "github.com/cespare/xxhash/v2" "github.com/gohugoio/hashstructure" "github.com/gohugoio/hugo/identity" ) // XXHashFromReader calculates the xxHash for the given reader. func XXHashFromReader(r io.Reader) (uint64, int64, error) { h := getXxHashReadFrom() defer putXxHashReadFrom(h) size, err := io.Copy(h, r) if err != nil { return 0, 0, err } return h.Sum64(), size, nil } // XXHashFromString calculates the xxHash for the given string. func XXHashFromString(s string) (uint64, error) { h := xxhash.New() h.WriteString(s) return h.Sum64(), nil } // XxHashFromStringHexEncoded calculates the xxHash for the given string // and returns the hash as a hex encoded string. func XxHashFromStringHexEncoded(f string) string { h := xxhash.New() h.WriteString(f) hash := h.Sum(nil) return hex.EncodeToString(hash) } // MD5FromStringHexEncoded returns the MD5 hash of the given string. func MD5FromStringHexEncoded(f string) string { h := md5.New() h.Write([]byte(f)) return hex.EncodeToString(h.Sum(nil)) } // HashString returns a hash from the given elements. // It will panic if the hash cannot be calculated. // Note that this hash should be used primarily for identity, not for change detection as // it in the more complex values (e.g. Page) will not hash the full content. func HashString(vs ...any) string { hash := HashUint64(vs...) return strconv.FormatUint(hash, 10) } var hashOptsPool = sync.Pool{ New: func() any { return &hashstructure.HashOptions{ Hasher: xxhash.New(), } }, } func getHashOpts() *hashstructure.HashOptions { return hashOptsPool.Get().(*hashstructure.HashOptions) } func putHashOpts(opts *hashstructure.HashOptions) { opts.Hasher.Reset() hashOptsPool.Put(opts) } // HashUint64 returns a hash from the given elements. // It will panic if the hash cannot be calculated. // Note that this hash should be used primarily for identity, not for change detection as // it in the more complex values (e.g. Page) will not hash the full content. func HashUint64(vs ...any) uint64 { var o any if len(vs) == 1 { o = toHashable(vs[0]) } else { elements := make([]any, len(vs)) for i, e := range vs { elements[i] = toHashable(e) } o = elements } hashOpts := getHashOpts() defer putHashOpts(hashOpts) hash, err := hashstructure.Hash(o, hashOpts) if err != nil { panic(err) } return hash } type keyer interface { Key() string } // For structs, hashstructure.Hash only works on the exported fields, // so rewrite the input slice for known identity types. func toHashable(v any) any { switch t := v.(type) { case keyer: return t.Key() case identity.IdentityProvider: return t.GetIdentity() default: return v } } type xxhashReadFrom struct { buff []byte *xxhash.Digest } func (x *xxhashReadFrom) ReadFrom(r io.Reader) (int64, error) { for { n, err := r.Read(x.buff) if n > 0 { x.Digest.Write(x.buff[:n]) } if err != nil { if err == io.EOF { err = nil } return int64(n), err } } } var xXhashReadFromPool = sync.Pool{ New: func() any { return &xxhashReadFrom{Digest: xxhash.New(), buff: make([]byte, 48*1024)} }, } func getXxHashReadFrom() *xxhashReadFrom { return xXhashReadFromPool.Get().(*xxhashReadFrom) } func putXxHashReadFrom(h *xxhashReadFrom) { h.Reset() xXhashReadFromPool.Put(h) } hugo-0.131.0/common/hashing/hashing_test.go000066400000000000000000000064661465312036400205560ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hashing import ( "fmt" "math" "strings" "sync" "testing" qt "github.com/frankban/quicktest" ) func TestXxHashFromReader(t *testing.T) { c := qt.New(t) s := "Hello World" r := strings.NewReader(s) got, size, err := XXHashFromReader(r) c.Assert(err, qt.IsNil) c.Assert(size, qt.Equals, int64(len(s))) c.Assert(got, qt.Equals, uint64(7148569436472236994)) } func TestXxHashFromReaderPara(t *testing.T) { c := qt.New(t) var wg sync.WaitGroup for i := 0; i < 10; i++ { i := i wg.Add(1) go func() { defer wg.Done() for j := 0; j < 100; j++ { s := strings.Repeat("Hello ", i+j+1*42) r := strings.NewReader(s) got, size, err := XXHashFromReader(r) c.Assert(size, qt.Equals, int64(len(s))) c.Assert(err, qt.IsNil) expect, _ := XXHashFromString(s) c.Assert(got, qt.Equals, expect) } }() } wg.Wait() } func TestXxHashFromString(t *testing.T) { c := qt.New(t) s := "Hello World" got, err := XXHashFromString(s) c.Assert(err, qt.IsNil) c.Assert(got, qt.Equals, uint64(7148569436472236994)) } func TestXxHashFromStringHexEncoded(t *testing.T) { c := qt.New(t) s := "The quick brown fox jumps over the lazy dog" got := XxHashFromStringHexEncoded(s) // Facit: https://asecuritysite.com/encryption/xxhash?val=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog c.Assert(got, qt.Equals, "0b242d361fda71bc") } func BenchmarkXXHashFromReader(b *testing.B) { r := strings.NewReader("Hello World") b.ResetTimer() for i := 0; i < b.N; i++ { XXHashFromReader(r) r.Seek(0, 0) } } func BenchmarkXXHashFromString(b *testing.B) { s := "Hello World" b.ResetTimer() for i := 0; i < b.N; i++ { XXHashFromString(s) } } func BenchmarkXXHashFromStringHexEncoded(b *testing.B) { s := "The quick brown fox jumps over the lazy dog" b.ResetTimer() for i := 0; i < b.N; i++ { XxHashFromStringHexEncoded(s) } } func TestHashString(t *testing.T) { c := qt.New(t) c.Assert(HashString("a", "b"), qt.Equals, "3176555414984061461") c.Assert(HashString("ab"), qt.Equals, "7347350983217793633") var vals []any = []any{"a", "b", tstKeyer{"c"}} c.Assert(HashString(vals...), qt.Equals, "4438730547989914315") c.Assert(vals[2], qt.Equals, tstKeyer{"c"}) } type tstKeyer struct { key string } func (t tstKeyer) Key() string { return t.key } func (t tstKeyer) String() string { return "key: " + t.key } func BenchmarkHashString(b *testing.B) { word := " hello " var tests []string for i := 1; i <= 5; i++ { sentence := strings.Repeat(word, int(math.Pow(4, float64(i)))) tests = append(tests, sentence) } b.ResetTimer() for _, test := range tests { b.Run(fmt.Sprintf("n%d", len(test)), func(b *testing.B) { for i := 0; i < b.N; i++ { HashString(test) } }) } } hugo-0.131.0/common/hcontext/000077500000000000000000000000001465312036400157465ustar00rootroot00000000000000hugo-0.131.0/common/hcontext/context.go000066400000000000000000000025451465312036400177670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hcontext import "context" // ContextDispatcher is a generic interface for setting and getting values from a context. type ContextDispatcher[T any] interface { Set(ctx context.Context, value T) context.Context Get(ctx context.Context) T } // NewContextDispatcher creates a new ContextDispatcher with the given key. func NewContextDispatcher[T any, R comparable](key R) ContextDispatcher[T] { return keyInContext[T, R]{ id: key, } } type keyInContext[T any, R comparable] struct { zero T id R } func (f keyInContext[T, R]) Get(ctx context.Context) T { v := ctx.Value(f.id) if v == nil { return f.zero } return v.(T) } func (f keyInContext[T, R]) Set(ctx context.Context, value T) context.Context { return context.WithValue(ctx, f.id, value) } hugo-0.131.0/common/herrors/000077500000000000000000000000001465312036400155765ustar00rootroot00000000000000hugo-0.131.0/common/herrors/error_locator.go000066400000000000000000000105761465312036400210120ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "io" "path/filepath" "strings" "github.com/gohugoio/hugo/common/text" ) // LineMatcher contains the elements used to match an error to a line type LineMatcher struct { Position text.Position Error error LineNumber int Offset int Line string } // LineMatcherFn is used to match a line with an error. // It returns the column number or 0 if the line was found, but column could not be determined. Returns -1 if no line match. type LineMatcherFn func(m LineMatcher) int // SimpleLineMatcher simply matches by line number. var SimpleLineMatcher = func(m LineMatcher) int { if m.Position.LineNumber == m.LineNumber { // We found the line, but don't know the column. return 0 } return -1 } // NopLineMatcher is a matcher that always returns 1. // This will effectively give line 1, column 1. var NopLineMatcher = func(m LineMatcher) int { return 1 } // OffsetMatcher is a line matcher that matches by offset. var OffsetMatcher = func(m LineMatcher) int { if m.Offset+len(m.Line) >= m.Position.Offset { // We found the line, but return 0 to signal that we want to determine // the column from the error. return 0 } return -1 } // ContainsMatcher is a line matcher that matches by line content. func ContainsMatcher(text string) func(m LineMatcher) int { return func(m LineMatcher) int { if idx := strings.Index(m.Line, text); idx != -1 { return idx + 1 } return -1 } } // ErrorContext contains contextual information about an error. This will // typically be the lines surrounding some problem in a file. type ErrorContext struct { // If a match will contain the matched line and up to 2 lines before and after. // Will be empty if no match. Lines []string // The position of the error in the Lines above. 0 based. LinesPos int // The position of the content in the file. Note that this may be different from the error's position set // in FileError. Position text.Position // The lexer to use for syntax highlighting. // https://gohugo.io/content-management/syntax-highlighting/#list-of-chroma-highlighting-languages ChromaLexer string } func chromaLexerFromType(fileType string) string { switch fileType { case "html", "htm": return "go-html-template" } return fileType } func extNoDelimiter(filename string) string { return strings.TrimPrefix(filepath.Ext(filename), ".") } func chromaLexerFromFilename(filename string) string { if strings.Contains(filename, "layouts") { return "go-html-template" } ext := extNoDelimiter(filename) return chromaLexerFromType(ext) } func locateErrorInString(src string, matcher LineMatcherFn) *ErrorContext { return locateError(strings.NewReader(src), &fileError{}, matcher) } func locateError(r io.Reader, le FileError, matches LineMatcherFn) *ErrorContext { if le == nil { panic("must provide an error") } ectx := &ErrorContext{LinesPos: -1, Position: text.Position{Offset: -1}} b, err := io.ReadAll(r) if err != nil { return ectx } lines := strings.Split(string(b), "\n") lineNo := 0 posBytes := 0 for li, line := range lines { lineNo = li + 1 m := LineMatcher{ Position: le.Position(), Error: le, LineNumber: lineNo, Offset: posBytes, Line: line, } v := matches(m) if ectx.LinesPos == -1 && v != -1 { ectx.Position.LineNumber = lineNo ectx.Position.ColumnNumber = v break } posBytes += len(line) } if ectx.Position.LineNumber > 0 { low := ectx.Position.LineNumber - 3 if low < 0 { low = 0 } if ectx.Position.LineNumber > 2 { ectx.LinesPos = 2 } else { ectx.LinesPos = ectx.Position.LineNumber - 1 } high := ectx.Position.LineNumber + 2 if high > len(lines) { high = len(lines) } ectx.Lines = lines[low:high] } return ectx } hugo-0.131.0/common/herrors/error_locator_test.go000066400000000000000000000067351465312036400220530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "strings" "testing" qt "github.com/frankban/quicktest" ) func TestErrorLocator(t *testing.T) { c := qt.New(t) lineMatcher := func(m LineMatcher) int { if strings.Contains(m.Line, "THEONE") { return 1 } return -1 } lines := `LINE 1 LINE 2 LINE 3 LINE 4 This is THEONE LINE 6 LINE 7 LINE 8 ` location := locateErrorInString(lines, lineMatcher) pos := location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"LINE 3", "LINE 4", "This is THEONE", "LINE 6", "LINE 7"}) c.Assert(pos.LineNumber, qt.Equals, 5) c.Assert(location.LinesPos, qt.Equals, 2) locate := func(s string, m LineMatcherFn) *ErrorContext { ctx := locateErrorInString(s, m) return ctx } c.Assert(locate(`This is THEONE`, lineMatcher).Lines, qt.DeepEquals, []string{"This is THEONE"}) location = locateErrorInString(`L1 This is THEONE L2 `, lineMatcher) pos = location.Position c.Assert(pos.LineNumber, qt.Equals, 2) c.Assert(location.LinesPos, qt.Equals, 1) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "This is THEONE", "L2", ""}) location = locate(`This is THEONE L2 `, lineMatcher) c.Assert(location.LinesPos, qt.Equals, 0) c.Assert(location.Lines, qt.DeepEquals, []string{"This is THEONE", "L2", ""}) location = locate(`L1 This THEONE `, lineMatcher) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "This THEONE", ""}) c.Assert(location.LinesPos, qt.Equals, 1) location = locate(`L1 L2 This THEONE `, lineMatcher) c.Assert(location.Lines, qt.DeepEquals, []string{"L1", "L2", "This THEONE", ""}) c.Assert(location.LinesPos, qt.Equals, 2) location = locateErrorInString("NO MATCH", lineMatcher) pos = location.Position c.Assert(pos.LineNumber, qt.Equals, 0) c.Assert(location.LinesPos, qt.Equals, -1) c.Assert(len(location.Lines), qt.Equals, 0) lineMatcher = func(m LineMatcher) int { if m.LineNumber == 6 { return 1 } return -1 } location = locateErrorInString(`A B C D E F G H I J`, lineMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"D", "E", "F", "G", "H"}) c.Assert(pos.LineNumber, qt.Equals, 6) c.Assert(location.LinesPos, qt.Equals, 2) // Test match EOF lineMatcher = func(m LineMatcher) int { if m.LineNumber == 4 { return 1 } return -1 } location = locateErrorInString(`A B C `, lineMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"B", "C", ""}) c.Assert(pos.LineNumber, qt.Equals, 4) c.Assert(location.LinesPos, qt.Equals, 2) offsetMatcher := func(m LineMatcher) int { if m.Offset == 1 { return 1 } return -1 } location = locateErrorInString(`A B C D E`, offsetMatcher) pos = location.Position c.Assert(location.Lines, qt.DeepEquals, []string{"A", "B", "C", "D"}) c.Assert(pos.LineNumber, qt.Equals, 2) c.Assert(location.LinesPos, qt.Equals, 1) } hugo-0.131.0/common/herrors/errors.go000066400000000000000000000111501465312036400174370ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package herrors contains common Hugo errors and error related utilities. package herrors import ( "errors" "fmt" "io" "os" "regexp" "runtime" "runtime/debug" "strings" "time" ) // PrintStackTrace prints the current stacktrace to w. func PrintStackTrace(w io.Writer) { buf := make([]byte, 1<<16) runtime.Stack(buf, true) fmt.Fprintf(w, "%s", buf) } // ErrorSender is a, typically, non-blocking error handler. type ErrorSender interface { SendError(err error) } // Recover is a helper function that can be used to capture panics. // Put this at the top of a method/function that crashes in a template: // // defer herrors.Recover() func Recover(args ...any) { if r := recover(); r != nil { fmt.Println("ERR:", r) args = append(args, "stacktrace from panic: \n"+string(debug.Stack()), "\n") fmt.Println(args...) } } // IsTimeoutError returns true if the given error is or contains a TimeoutError. func IsTimeoutError(err error) bool { return errors.Is(err, &TimeoutError{}) } type TimeoutError struct { Duration time.Duration } func (e *TimeoutError) Error() string { return fmt.Sprintf("timeout after %s", e.Duration) } func (e *TimeoutError) Is(target error) bool { _, ok := target.(*TimeoutError) return ok } // errMessage wraps an error with a message. type errMessage struct { msg string err error } func (e *errMessage) Error() string { return e.msg } func (e *errMessage) Unwrap() error { return e.err } // IsFeatureNotAvailableError returns true if the given error is or contains a FeatureNotAvailableError. func IsFeatureNotAvailableError(err error) bool { return errors.Is(err, &FeatureNotAvailableError{}) } // ErrFeatureNotAvailable denotes that a feature is unavailable. // // We will, at least to begin with, make some Hugo features (SCSS with libsass) optional, // and this error is used to signal those situations. var ErrFeatureNotAvailable = &FeatureNotAvailableError{Cause: errors.New("this feature is not available in your current Hugo version, see https://goo.gl/YMrWcn for more information")} // FeatureNotAvailableError is an error type used to signal that a feature is not available. type FeatureNotAvailableError struct { Cause error } func (e *FeatureNotAvailableError) Unwrap() error { return e.Cause } func (e *FeatureNotAvailableError) Error() string { return e.Cause.Error() } func (e *FeatureNotAvailableError) Is(target error) bool { _, ok := target.(*FeatureNotAvailableError) return ok } // Must panics if err != nil. func Must(err error) { if err != nil { panic(err) } } // IsNotExist returns true if the error is a file not found error. // Unlike os.IsNotExist, this also considers wrapped errors. func IsNotExist(err error) bool { if os.IsNotExist(err) { return true } // os.IsNotExist does not consider wrapped errors. if os.IsNotExist(errors.Unwrap(err)) { return true } return false } var nilPointerErrRe = regexp.MustCompile(`at <(.*)>: error calling (.*?): runtime error: invalid memory address or nil pointer dereference`) const deferredPrefix = "__hdeferred/" var deferredStringToRemove = regexp.MustCompile(`executing "__hdeferred/.*" `) // ImproveRenderErr improves the error message for rendering errors. func ImproveRenderErr(inErr error) (outErr error) { outErr = inErr msg := improveIfNilPointerMsg(inErr) if msg != "" { outErr = &errMessage{msg: msg, err: outErr} } if strings.Contains(inErr.Error(), deferredPrefix) { msg := deferredStringToRemove.ReplaceAllString(inErr.Error(), "executing ") outErr = &errMessage{msg: msg, err: outErr} } return } func improveIfNilPointerMsg(inErr error) string { m := nilPointerErrRe.FindStringSubmatch(inErr.Error()) if len(m) == 0 { return "" } call := m[1] field := m[2] parts := strings.Split(call, ".") if len(parts) < 2 { return "" } receiverName := parts[len(parts)-2] receiver := strings.Join(parts[:len(parts)-1], ".") s := fmt.Sprintf("– %s is nil; wrap it in if or with: {{ with %s }}{{ .%s }}{{ end }}", receiverName, receiver, field) return nilPointerErrRe.ReplaceAllString(inErr.Error(), s) } hugo-0.131.0/common/herrors/errors_test.go000066400000000000000000000027711465312036400205070ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package herrors import ( "errors" "fmt" "testing" qt "github.com/frankban/quicktest" "github.com/spf13/afero" ) func TestIsNotExist(t *testing.T) { c := qt.New(t) c.Assert(IsNotExist(afero.ErrFileNotFound), qt.Equals, true) c.Assert(IsNotExist(afero.ErrFileExists), qt.Equals, false) c.Assert(IsNotExist(afero.ErrDestinationExists), qt.Equals, false) c.Assert(IsNotExist(nil), qt.Equals, false) c.Assert(IsNotExist(fmt.Errorf("foo")), qt.Equals, false) // os.IsNotExist returns false for wrapped errors. c.Assert(IsNotExist(fmt.Errorf("foo: %w", afero.ErrFileNotFound)), qt.Equals, true) } func TestIsFeatureNotAvailableError(t *testing.T) { c := qt.New(t) c.Assert(IsFeatureNotAvailableError(ErrFeatureNotAvailable), qt.Equals, true) c.Assert(IsFeatureNotAvailableError(&FeatureNotAvailableError{}), qt.Equals, true) c.Assert(IsFeatureNotAvailableError(errors.New("asdf")), qt.Equals, false) } hugo-0.131.0/common/herrors/file_error.go000066400000000000000000000243741465312036400202670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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 lfmtaw 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. package herrors import ( "encoding/json" "errors" "fmt" "io" "path/filepath" godartsassv1 "github.com/bep/godartsass" "github.com/bep/godartsass/v2" "github.com/bep/golibsass/libsass/libsasserrors" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/text" "github.com/pelletier/go-toml/v2" "github.com/spf13/afero" "github.com/tdewolff/parse/v2" ) // FileError represents an error when handling a file: Parsing a config file, // execute a template etc. type FileError interface { error // ErrorContext holds some context information about the error. ErrorContext() *ErrorContext text.Positioner // UpdatePosition updates the position of the error. UpdatePosition(pos text.Position) FileError // UpdateContent updates the error with a new ErrorContext from the content of the file. UpdateContent(r io.Reader, linematcher LineMatcherFn) FileError // SetFilename sets the filename of the error. SetFilename(filename string) FileError } // Unwrapper can unwrap errors created with fmt.Errorf. type Unwrapper interface { Unwrap() error } var ( _ FileError = (*fileError)(nil) _ Unwrapper = (*fileError)(nil) ) func (fe *fileError) SetFilename(filename string) FileError { fe.position.Filename = filename return fe } func (fe *fileError) UpdatePosition(pos text.Position) FileError { oldFilename := fe.Position().Filename if pos.Filename != "" && fe.fileType == "" { _, fe.fileType = paths.FileAndExtNoDelimiter(filepath.Clean(pos.Filename)) } if pos.Filename == "" { pos.Filename = oldFilename } fe.position = pos return fe } func (fe *fileError) UpdateContent(r io.Reader, linematcher LineMatcherFn) FileError { if linematcher == nil { linematcher = SimpleLineMatcher } var ( posle = fe.position ectx *ErrorContext ) if posle.LineNumber <= 1 && posle.Offset > 0 { // Try to locate the line number from the content if offset is set. ectx = locateError(r, fe, func(m LineMatcher) int { if posle.Offset >= m.Offset && posle.Offset < m.Offset+len(m.Line) { lno := posle.LineNumber - m.Position.LineNumber + m.LineNumber m.Position = text.Position{LineNumber: lno} return linematcher(m) } return -1 }) } else { ectx = locateError(r, fe, linematcher) } if ectx.ChromaLexer == "" { if fe.fileType != "" { ectx.ChromaLexer = chromaLexerFromType(fe.fileType) } else { ectx.ChromaLexer = chromaLexerFromFilename(fe.Position().Filename) } } fe.errorContext = ectx if ectx.Position.LineNumber > 0 { fe.position.LineNumber = ectx.Position.LineNumber } if ectx.Position.ColumnNumber > 0 { fe.position.ColumnNumber = ectx.Position.ColumnNumber } return fe } type fileError struct { position text.Position errorContext *ErrorContext fileType string cause error } func (e *fileError) ErrorContext() *ErrorContext { return e.errorContext } // Position returns the text position of this error. func (e fileError) Position() text.Position { return e.position } func (e *fileError) Error() string { return fmt.Sprintf("%s: %s", e.position, e.causeString()) } func (e *fileError) causeString() string { if e.cause == nil { return "" } switch v := e.cause.(type) { // Avoid repeating the file info in the error message. case godartsass.SassError: return v.Message case godartsassv1.SassError: return v.Message case libsasserrors.Error: return v.Message default: return v.Error() } } func (e *fileError) Unwrap() error { return e.cause } // NewFileError creates a new FileError that wraps err. // It will try to extract the filename and line number from err. func NewFileError(err error) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, pos := extractFileTypePos(err) return &fileError{cause: err, fileType: fileType, position: pos} } // NewFileErrorFromName creates a new FileError that wraps err. // The value for name should identify the file, the best // being the full filename to the file on disk. func NewFileErrorFromName(err error, name string) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, pos := extractFileTypePos(err) pos.Filename = name if fileType == "" { _, fileType = paths.FileAndExtNoDelimiter(filepath.Clean(name)) } return &fileError{cause: err, fileType: fileType, position: pos} } // NewFileErrorFromPos will use the filename and line number from pos to create a new FileError, wrapping err. func NewFileErrorFromPos(err error, pos text.Position) FileError { // Filetype is used to determine the Chroma lexer to use. fileType, _ := extractFileTypePos(err) if fileType == "" { _, fileType = paths.FileAndExtNoDelimiter(filepath.Clean(pos.Filename)) } return &fileError{cause: err, fileType: fileType, position: pos} } func NewFileErrorFromFileInErr(err error, fs afero.Fs, linematcher LineMatcherFn) FileError { fe := NewFileError(err) pos := fe.Position() if pos.Filename == "" { return fe } f, realFilename, err2 := openFile(pos.Filename, fs) if err2 != nil { return fe } pos.Filename = realFilename defer f.Close() return fe.UpdateContent(f, linematcher) } func NewFileErrorFromFileInPos(err error, pos text.Position, fs afero.Fs, linematcher LineMatcherFn) FileError { if err == nil { panic("err is nil") } f, realFilename, err2 := openFile(pos.Filename, fs) if err2 != nil { return NewFileErrorFromPos(err, pos) } pos.Filename = realFilename defer f.Close() return NewFileErrorFromPos(err, pos).UpdateContent(f, linematcher) } // NewFileErrorFromFile is a convenience method to create a new FileError from a file. func NewFileErrorFromFile(err error, filename string, fs afero.Fs, linematcher LineMatcherFn) FileError { if err == nil { panic("err is nil") } f, realFilename, err2 := openFile(filename, fs) if err2 != nil { return NewFileErrorFromName(err, realFilename) } defer f.Close() return NewFileErrorFromName(err, realFilename).UpdateContent(f, linematcher) } func openFile(filename string, fs afero.Fs) (afero.File, string, error) { realFilename := filename // We want the most specific filename possible in the error message. fi, err2 := fs.Stat(filename) if err2 == nil { if s, ok := fi.(interface { Filename() string }); ok { realFilename = s.Filename() } } f, err2 := fs.Open(filename) if err2 != nil { return nil, realFilename, err2 } return f, realFilename, nil } // Cause returns the underlying error or itself if it does not implement Unwrap. func Cause(err error) error { if u := errors.Unwrap(err); u != nil { return u } return err } func extractFileTypePos(err error) (string, text.Position) { err = Cause(err) var fileType string // LibSass, DartSass if pos := extractPosition(err); pos.LineNumber > 0 || pos.Offset > 0 { _, fileType = paths.FileAndExtNoDelimiter(pos.Filename) return fileType, pos } // Default to line 1 col 1 if we don't find any better. pos := text.Position{ Offset: -1, LineNumber: 1, ColumnNumber: 1, } // JSON errors. offset, typ := extractOffsetAndType(err) if fileType == "" { fileType = typ } if offset >= 0 { pos.Offset = offset } // The error type from the minifier contains line number and column number. if line, col := extractLineNumberAndColumnNumber(err); line >= 0 { pos.LineNumber = line pos.ColumnNumber = col return fileType, pos } // Look in the error message for the line number. for _, handle := range lineNumberExtractors { lno, col := handle(err) if lno > 0 { pos.ColumnNumber = col pos.LineNumber = lno break } } if fileType == "" && pos.Filename != "" { _, fileType = paths.FileAndExtNoDelimiter(pos.Filename) } return fileType, pos } // UnwrapFileError tries to unwrap a FileError from err. // It returns nil if this is not possible. func UnwrapFileError(err error) FileError { for err != nil { switch v := err.(type) { case FileError: return v default: err = errors.Unwrap(err) } } return nil } // UnwrapFileErrors tries to unwrap all FileError. func UnwrapFileErrors(err error) []FileError { var errs []FileError for err != nil { if v, ok := err.(FileError); ok { errs = append(errs, v) } err = errors.Unwrap(err) } return errs } // UnwrapFileErrorsWithErrorContext tries to unwrap all FileError in err that has an ErrorContext. func UnwrapFileErrorsWithErrorContext(err error) []FileError { var errs []FileError for err != nil { if v, ok := err.(FileError); ok && v.ErrorContext() != nil { errs = append(errs, v) } err = errors.Unwrap(err) } return errs } func extractOffsetAndType(e error) (int, string) { switch v := e.(type) { case *json.UnmarshalTypeError: return int(v.Offset), "json" case *json.SyntaxError: return int(v.Offset), "json" default: return -1, "" } } func extractLineNumberAndColumnNumber(e error) (int, int) { switch v := e.(type) { case *parse.Error: return v.Line, v.Column case *toml.DecodeError: return v.Position() } return -1, -1 } func extractPosition(e error) (pos text.Position) { switch v := e.(type) { case godartsass.SassError: span := v.Span start := span.Start filename, _ := paths.UrlToFilename(span.Url) pos.Filename = filename pos.Offset = start.Offset pos.ColumnNumber = start.Column case godartsassv1.SassError: span := v.Span start := span.Start filename, _ := paths.UrlToFilename(span.Url) pos.Filename = filename pos.Offset = start.Offset pos.ColumnNumber = start.Column case libsasserrors.Error: pos.Filename = v.File pos.LineNumber = v.Line pos.ColumnNumber = v.Column } return } // TextSegmentError is an error with a text segment attached. type TextSegmentError struct { Segment string Err error } func (e TextSegmentError) Unwrap() error { return e.Err } func (e TextSegmentError) Error() string { return e.Err.Error() } hugo-0.131.0/common/herrors/file_error_test.go000066400000000000000000000060031465312036400213130ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package herrors import ( "errors" "fmt" "strings" "testing" "github.com/gohugoio/hugo/common/text" qt "github.com/frankban/quicktest" ) func TestNewFileError(t *testing.T) { t.Parallel() c := qt.New(t) fe := NewFileErrorFromName(errors.New("bar"), "foo.html") c.Assert(fe.Error(), qt.Equals, `"foo.html:1:1": bar`) lines := "" for i := 1; i <= 100; i++ { lines += fmt.Sprintf("line %d\n", i) } fe.UpdatePosition(text.Position{LineNumber: 32, ColumnNumber: 2}) c.Assert(fe.Error(), qt.Equals, `"foo.html:32:2": bar`) fe.UpdatePosition(text.Position{LineNumber: 0, ColumnNumber: 0, Offset: 212}) fe.UpdateContent(strings.NewReader(lines), nil) c.Assert(fe.Error(), qt.Equals, `"foo.html:32:0": bar`) errorContext := fe.ErrorContext() c.Assert(errorContext, qt.IsNotNil) c.Assert(errorContext.Lines, qt.DeepEquals, []string{"line 30", "line 31", "line 32", "line 33", "line 34"}) c.Assert(errorContext.LinesPos, qt.Equals, 2) c.Assert(errorContext.ChromaLexer, qt.Equals, "go-html-template") } func TestNewFileErrorExtractFromMessage(t *testing.T) { t.Parallel() c := qt.New(t) for i, test := range []struct { in error offset int lineNumber int columnNumber int }{ {errors.New("no line number for you"), 0, 1, 1}, {errors.New(`template: _default/single.html:4:15: executing "_default/single.html" at <.Titles>: can't evaluate field Titles in type *hugolib.PageOutput`), 0, 4, 15}, {errors.New("parse failed: template: _default/bundle-resource-meta.html:11: unexpected in operand"), 0, 11, 1}, {errors.New(`failed:: template: _default/bundle-resource-meta.html:2:7: executing "main" at <.Titles>`), 0, 2, 7}, {errors.New(`failed to load translations: (6, 7): was expecting token =, but got "g" instead`), 0, 6, 7}, {errors.New(`execute of template failed: template: index.html:2:5: executing "index.html" at : error calling partial: "/layouts/partials/foo.html:3:6": execute of template failed: template: partials/foo.html:3:6: executing "partials/foo.html" at <.ThisDoesNotExist>: can't evaluate field ThisDoesNotExist in type *hugolib.pageStat`), 0, 2, 5}, } { got := NewFileErrorFromName(test.in, "test.txt") errMsg := qt.Commentf("[%d][%T]", i, got) pos := got.Position() c.Assert(pos.LineNumber, qt.Equals, test.lineNumber, errMsg) c.Assert(pos.ColumnNumber, qt.Equals, test.columnNumber, errMsg) c.Assert(errors.Unwrap(got), qt.Not(qt.IsNil)) } } hugo-0.131.0/common/herrors/line_number_extractors.go000066400000000000000000000030571465312036400227070ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package herrors import ( "regexp" "strconv" ) var lineNumberExtractors = []lineNumberExtractor{ // Template/shortcode parse errors newLineNumberErrHandlerFromRegexp(`:(\d+):(\d*):`), newLineNumberErrHandlerFromRegexp(`:(\d+):`), // YAML parse errors newLineNumberErrHandlerFromRegexp(`line (\d+):`), // i18n bundle errors newLineNumberErrHandlerFromRegexp(`\((\d+),\s(\d*)`), } type lineNumberExtractor func(e error) (int, int) func newLineNumberErrHandlerFromRegexp(expression string) lineNumberExtractor { re := regexp.MustCompile(expression) return extractLineNo(re) } func extractLineNo(re *regexp.Regexp) lineNumberExtractor { return func(e error) (int, int) { if e == nil { panic("no error") } col := 1 s := e.Error() m := re.FindStringSubmatch(s) if len(m) >= 2 { lno, _ := strconv.Atoi(m[1]) if len(m) > 2 { col, _ = strconv.Atoi(m[2]) } if col <= 0 { col = 1 } return lno, col } return 0, col } } hugo-0.131.0/common/hexec/000077500000000000000000000000001465312036400152065ustar00rootroot00000000000000hugo-0.131.0/common/hexec/exec.go000066400000000000000000000166661465312036400165000ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // 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. package hexec import ( "bytes" "context" "errors" "fmt" "io" "os" "os/exec" "path/filepath" "regexp" "strings" "sync" "github.com/cli/safeexec" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/security" ) var WithDir = func(dir string) func(c *commandeer) { return func(c *commandeer) { c.dir = dir } } var WithContext = func(ctx context.Context) func(c *commandeer) { return func(c *commandeer) { c.ctx = ctx } } var WithStdout = func(w io.Writer) func(c *commandeer) { return func(c *commandeer) { c.stdout = w } } var WithStderr = func(w io.Writer) func(c *commandeer) { return func(c *commandeer) { c.stderr = w } } var WithStdin = func(r io.Reader) func(c *commandeer) { return func(c *commandeer) { c.stdin = r } } var WithEnviron = func(env []string) func(c *commandeer) { return func(c *commandeer) { setOrAppend := func(s string) { k1, _ := config.SplitEnvVar(s) var found bool for i, v := range c.env { k2, _ := config.SplitEnvVar(v) if k1 == k2 { found = true c.env[i] = s } } if !found { c.env = append(c.env, s) } } for _, s := range env { setOrAppend(s) } } } // New creates a new Exec using the provided security config. func New(cfg security.Config, workingDir string) *Exec { var baseEnviron []string for _, v := range os.Environ() { k, _ := config.SplitEnvVar(v) if cfg.Exec.OsEnv.Accept(k) { baseEnviron = append(baseEnviron, v) } } return &Exec{ sc: cfg, workingDir: workingDir, baseEnviron: baseEnviron, } } // IsNotFound reports whether this is an error about a binary not found. func IsNotFound(err error) bool { var notFoundErr *NotFoundError return errors.As(err, ¬FoundErr) } // SafeCommand is a wrapper around os/exec Command which uses a LookPath // implementation that does not search in current directory before looking in PATH. // See https://github.com/cli/safeexec and the linked issues. func SafeCommand(name string, arg ...string) (*exec.Cmd, error) { bin, err := safeexec.LookPath(name) if err != nil { return nil, err } return exec.Command(bin, arg...), nil } // Exec enforces a security policy for commands run via os/exec. type Exec struct { sc security.Config workingDir string // os.Environ filtered by the Exec.OsEnviron whitelist filter. baseEnviron []string npxInit sync.Once npxAvailable bool } func (e *Exec) New(name string, arg ...any) (Runner, error) { return e.new(name, "", arg...) } // New will fail if name is not allowed according to the configured security policy. // Else a configured Runner will be returned ready to be Run. func (e *Exec) new(name string, fullyQualifiedName string, arg ...any) (Runner, error) { if err := e.sc.CheckAllowedExec(name); err != nil { return nil, err } env := make([]string, len(e.baseEnviron)) copy(env, e.baseEnviron) cm := &commandeer{ name: name, fullyQualifiedName: fullyQualifiedName, env: env, } return cm.command(arg...) } // Npx will in order: // 1. Try fo find the binary in the WORKINGDIR/node_modules/.bin directory. // 2. If not found, and npx is available, run npx --no-install . // 3. Fall back to the PATH. func (e *Exec) Npx(name string, arg ...any) (Runner, error) { // npx is slow, so first try the common case. nodeBinFilename := filepath.Join(e.workingDir, nodeModulesBinPath, name) _, err := safeexec.LookPath(nodeBinFilename) if err == nil { return e.new(name, nodeBinFilename, arg...) } e.checkNpx() if e.npxAvailable { r, err := e.npx(name, arg...) if err == nil { return r, nil } } return e.New(name, arg...) } const ( npxNoInstall = "--no-install" npxBinary = "npx" nodeModulesBinPath = "node_modules/.bin" ) func (e *Exec) checkNpx() { e.npxInit.Do(func() { e.npxAvailable = InPath(npxBinary) }) } // npx is a convenience method to create a Runner running npx --no-install 0 case reflect.Bool: truth = val.Bool() case reflect.Complex64, reflect.Complex128: truth = val.Complex() != 0 case reflect.Chan, reflect.Func, reflect.Ptr, reflect.Interface: truth = !val.IsNil() case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: truth = val.Int() != 0 case reflect.Float32, reflect.Float64: truth = val.Float() != 0 case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: truth = val.Uint() != 0 case reflect.Struct: truth = true // Struct values are always true. default: return } return } type methodKey struct { typ reflect.Type name string } type methods struct { sync.RWMutex cache map[methodKey]int } var methodCache = &methods{cache: make(map[methodKey]int)} // GetMethodByName is the same as reflect.Value.MethodByName, but it caches the // type lookup. func GetMethodByName(v reflect.Value, name string) reflect.Value { index := GetMethodIndexByName(v.Type(), name) if index == -1 { return reflect.Value{} } return v.Method(index) } // GetMethodIndexByName returns the index of the method with the given name, or // -1 if no such method exists. func GetMethodIndexByName(tp reflect.Type, name string) int { k := methodKey{tp, name} methodCache.RLock() index, found := methodCache.cache[k] methodCache.RUnlock() if found { return index } methodCache.Lock() defer methodCache.Unlock() m, ok := tp.MethodByName(name) index = m.Index if !ok { index = -1 } methodCache.cache[k] = index if !ok { return -1 } return m.Index } var ( timeType = reflect.TypeOf((*time.Time)(nil)).Elem() asTimeProviderType = reflect.TypeOf((*htime.AsTimeProvider)(nil)).Elem() ) // IsTime returns whether tp is a time.Time type or if it can be converted into one // in ToTime. func IsTime(tp reflect.Type) bool { if tp == timeType { return true } if tp.Implements(asTimeProviderType) { return true } return false } // IsValid returns whether v is not nil and a valid value. func IsValid(v reflect.Value) bool { if !v.IsValid() { return false } switch v.Kind() { case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: return !v.IsNil() } return true } // AsTime returns v as a time.Time if possible. // The given location is only used if the value implements AsTimeProvider (e.g. go-toml local). // A zero Time and false is returned if this isn't possible. // Note that this function does not accept string dates. func AsTime(v reflect.Value, loc *time.Location) (time.Time, bool) { if v.Kind() == reflect.Interface { return AsTime(v.Elem(), loc) } if v.Type() == timeType { return v.Interface().(time.Time), true } if v.Type().Implements(asTimeProviderType) { return v.Interface().(htime.AsTimeProvider).AsTime(loc), true } return time.Time{}, false } func CallMethodByName(cxt context.Context, name string, v reflect.Value) []reflect.Value { fn := v.MethodByName(name) var args []reflect.Value tp := fn.Type() if tp.NumIn() > 0 { if tp.NumIn() > 1 { panic("not supported") } first := tp.In(0) if IsContextType(first) { args = append(args, reflect.ValueOf(cxt)) } } return fn.Call(args) } // Based on: https://github.com/golang/go/blob/178a2c42254166cffed1b25fb1d3c7a5727cada6/src/text/template/exec.go#L931 func indirectInterface(v reflect.Value) reflect.Value { if v.Kind() != reflect.Interface { return v } if v.IsNil() { return reflect.Value{} } return v.Elem() } var contextInterface = reflect.TypeOf((*context.Context)(nil)).Elem() var isContextCache = maps.NewCache[reflect.Type, bool]() type k string var contextTypeValue = reflect.TypeOf(context.WithValue(context.Background(), k("key"), 32)) // IsContextType returns whether tp is a context.Context type. func IsContextType(tp reflect.Type) bool { if tp == contextTypeValue { return true } if tp == contextInterface { return true } isContext, _ := isContextCache.GetOrCreate(tp, func() (bool, error) { return tp.Implements(contextInterface), nil }) return isContext } hugo-0.131.0/common/hreflect/helpers_test.go000066400000000000000000000055221465312036400207420ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package hreflect import ( "context" "reflect" "testing" "time" qt "github.com/frankban/quicktest" ) func TestIsTruthful(t *testing.T) { c := qt.New(t) c.Assert(IsTruthful(true), qt.Equals, true) c.Assert(IsTruthful(false), qt.Equals, false) c.Assert(IsTruthful(time.Now()), qt.Equals, true) c.Assert(IsTruthful(time.Time{}), qt.Equals, false) } func TestGetMethodByName(t *testing.T) { c := qt.New(t) v := reflect.ValueOf(&testStruct{}) tp := v.Type() c.Assert(GetMethodIndexByName(tp, "Method1"), qt.Equals, 0) c.Assert(GetMethodIndexByName(tp, "Method3"), qt.Equals, 2) c.Assert(GetMethodIndexByName(tp, "Foo"), qt.Equals, -1) } func TestIsContextType(t *testing.T) { c := qt.New(t) type k string ctx := context.Background() valueCtx := context.WithValue(ctx, k("key"), 32) c.Assert(IsContextType(reflect.TypeOf(ctx)), qt.IsTrue) c.Assert(IsContextType(reflect.TypeOf(valueCtx)), qt.IsTrue) } func BenchmarkIsContextType(b *testing.B) { type k string b.Run("value", func(b *testing.B) { ctx := context.Background() ctxs := make([]reflect.Type, b.N) for i := 0; i < b.N; i++ { ctxs[i] = reflect.TypeOf(context.WithValue(ctx, k("key"), i)) } b.ResetTimer() for i := 0; i < b.N; i++ { if !IsContextType(ctxs[i]) { b.Fatal("not context") } } }) b.Run("background", func(b *testing.B) { var ctxt reflect.Type = reflect.TypeOf(context.Background()) for i := 0; i < b.N; i++ { if !IsContextType(ctxt) { b.Fatal("not context") } } }) } func BenchmarkIsTruthFul(b *testing.B) { v := reflect.ValueOf("Hugo") b.ResetTimer() for i := 0; i < b.N; i++ { if !IsTruthfulValue(v) { b.Fatal("not truthful") } } } type testStruct struct{} func (t *testStruct) Method1() string { return "Hugo" } func (t *testStruct) Method2() string { return "Hugo" } func (t *testStruct) Method3() string { return "Hugo" } func (t *testStruct) Method4() string { return "Hugo" } func (t *testStruct) Method5() string { return "Hugo" } func BenchmarkGetMethodByName(b *testing.B) { v := reflect.ValueOf(&testStruct{}) methods := []string{"Method1", "Method2", "Method3", "Method4", "Method5"} b.ResetTimer() for i := 0; i < b.N; i++ { for _, method := range methods { _ = GetMethodByName(v, method) } } } hugo-0.131.0/common/hstrings/000077500000000000000000000000001465312036400157535ustar00rootroot00000000000000hugo-0.131.0/common/hstrings/strings.go000066400000000000000000000067701465312036400200050ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hstrings import ( "fmt" "regexp" "strings" "sync" "github.com/gohugoio/hugo/compare" ) var _ compare.Eqer = StringEqualFold("") // StringEqualFold is a string that implements the compare.Eqer interface and considers // two strings equal if they are equal when folded to lower case. // The compare.Eqer interface is used in Hugo to compare values in templates (e.g. using the eq template function). type StringEqualFold string func (s StringEqualFold) EqualFold(s2 string) bool { return strings.EqualFold(string(s), s2) } func (s StringEqualFold) String() string { return string(s) } func (s StringEqualFold) Eq(s2 any) bool { switch ss := s2.(type) { case string: return s.EqualFold(ss) case fmt.Stringer: return s.EqualFold(ss.String()) } return false } // EqualAny returns whether a string is equal to any of the given strings. func EqualAny(a string, b ...string) bool { for _, s := range b { if a == s { return true } } return false } // regexpCache represents a cache of regexp objects protected by a mutex. type regexpCache struct { mu sync.RWMutex re map[string]*regexp.Regexp } func (rc *regexpCache) getOrCompileRegexp(pattern string) (re *regexp.Regexp, err error) { var ok bool if re, ok = rc.get(pattern); !ok { re, err = regexp.Compile(pattern) if err != nil { return nil, err } rc.set(pattern, re) } return re, nil } func (rc *regexpCache) get(key string) (re *regexp.Regexp, ok bool) { rc.mu.RLock() re, ok = rc.re[key] rc.mu.RUnlock() return } func (rc *regexpCache) set(key string, re *regexp.Regexp) { rc.mu.Lock() rc.re[key] = re rc.mu.Unlock() } var reCache = regexpCache{re: make(map[string]*regexp.Regexp)} // GetOrCompileRegexp retrieves a regexp object from the cache based upon the pattern. // If the pattern is not found in the cache, the pattern is compiled and added to // the cache. func GetOrCompileRegexp(pattern string) (re *regexp.Regexp, err error) { return reCache.getOrCompileRegexp(pattern) } // InSlice checks if a string is an element of a slice of strings // and returns a boolean value. func InSlice(arr []string, el string) bool { for _, v := range arr { if v == el { return true } } return false } // InSlicEqualFold checks if a string is an element of a slice of strings // and returns a boolean value. // It uses strings.EqualFold to compare. func InSlicEqualFold(arr []string, el string) bool { for _, v := range arr { if strings.EqualFold(v, el) { return true } } return false } // ToString converts the given value to a string. // Note that this is a more strict version compared to cast.ToString, // as it will not try to convert numeric values to strings, // but only accept strings or fmt.Stringer. func ToString(v any) (string, bool) { switch vv := v.(type) { case string: return vv, true case fmt.Stringer: return vv.String(), true } return "", false } type Tuple struct { First string Second string } hugo-0.131.0/common/hstrings/strings_test.go000066400000000000000000000030761465312036400210400ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hstrings import ( "regexp" "testing" qt "github.com/frankban/quicktest" ) func TestStringEqualFold(t *testing.T) { c := qt.New(t) s1 := "A" s2 := "a" c.Assert(StringEqualFold(s1).EqualFold(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).EqualFold(s1), qt.Equals, true) c.Assert(StringEqualFold(s2).EqualFold(s1), qt.Equals, true) c.Assert(StringEqualFold(s2).EqualFold(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).EqualFold("b"), qt.Equals, false) c.Assert(StringEqualFold(s1).Eq(s2), qt.Equals, true) c.Assert(StringEqualFold(s1).Eq("b"), qt.Equals, false) } func TestGetOrCompileRegexp(t *testing.T) { c := qt.New(t) re, err := GetOrCompileRegexp(`\d+`) c.Assert(err, qt.IsNil) c.Assert(re.MatchString("123"), qt.Equals, true) } func BenchmarkGetOrCompileRegexp(b *testing.B) { for i := 0; i < b.N; i++ { GetOrCompileRegexp(`\d+`) } } func BenchmarkCompileRegexp(b *testing.B) { for i := 0; i < b.N; i++ { regexp.MustCompile(`\d+`) } } hugo-0.131.0/common/htime/000077500000000000000000000000001465312036400152205ustar00rootroot00000000000000hugo-0.131.0/common/htime/htime_integration_test.go000066400000000000000000000040051465312036400223160ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package htime_test import ( "testing" "github.com/gohugoio/hugo/hugolib" ) // Issue #11267 func TestApplyWithContext(t *testing.T) { t.Parallel() files := ` -- config.toml -- defaultContentLanguage = 'it' -- layouts/index.html -- {{ $dates := slice "2022-01-03" "2022-02-01" "2022-03-02" "2022-04-07" "2022-05-06" "2022-06-04" "2022-07-03" "2022-08-01" "2022-09-06" "2022-10-05" "2022-11-03" "2022-12-02" }} {{ range $dates }} {{ . | time.Format "month: _January_ weekday: _Monday_" }} {{ . | time.Format "month: _Jan_ weekday: _Mon_" }} {{ end }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/index.html", ` month: _gennaio_ weekday: _lunedì_ month: _gen_ weekday: _lun_ month: _febbraio_ weekday: _martedì_ month: _feb_ weekday: _mar_ month: _marzo_ weekday: _mercoledì_ month: _mar_ weekday: _mer_ month: _aprile_ weekday: _giovedì_ month: _apr_ weekday: _gio_ month: _maggio_ weekday: _venerdì_ month: _mag_ weekday: _ven_ month: _giugno_ weekday: _sabato_ month: _giu_ weekday: _sab_ month: _luglio_ weekday: _domenica_ month: _lug_ weekday: _dom_ month: _agosto_ weekday: _lunedì_ month: _ago_ weekday: _lun_ month: _settembre_ weekday: _martedì_ month: _set_ weekday: _mar_ month: _ottobre_ weekday: _mercoledì_ month: _ott_ weekday: _mer_ month: _novembre_ weekday: _giovedì_ month: _nov_ weekday: _gio_ month: _dicembre_ weekday: _venerdì_ month: _dic_ weekday: _ven_ `) } hugo-0.131.0/common/htime/time.go000066400000000000000000000074521465312036400165150ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package htime import ( "log" "strings" "time" "github.com/bep/clocks" "github.com/spf13/cast" "github.com/gohugoio/locales" ) var ( longDayNames = []string{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", } shortDayNames = []string{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", } shortMonthNames = []string{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", } longMonthNames = []string{ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", } Clock = clocks.System() ) func NewTimeFormatter(ltr locales.Translator) TimeFormatter { if ltr == nil { panic("must provide a locales.Translator") } return TimeFormatter{ ltr: ltr, } } // TimeFormatter is locale aware. type TimeFormatter struct { ltr locales.Translator } func (f TimeFormatter) Format(t time.Time, layout string) string { if layout == "" { return "" } if layout[0] == ':' { // It may be one of Hugo's custom layouts. switch strings.ToLower(layout[1:]) { case "date_full": return f.ltr.FmtDateFull(t) case "date_long": return f.ltr.FmtDateLong(t) case "date_medium": return f.ltr.FmtDateMedium(t) case "date_short": return f.ltr.FmtDateShort(t) case "time_full": return f.ltr.FmtTimeFull(t) case "time_long": return f.ltr.FmtTimeLong(t) case "time_medium": return f.ltr.FmtTimeMedium(t) case "time_short": return f.ltr.FmtTimeShort(t) } } s := t.Format(layout) monthIdx := t.Month() - 1 // Month() starts at 1. dayIdx := t.Weekday() if strings.Contains(layout, "January") { s = strings.ReplaceAll(s, longMonthNames[monthIdx], f.ltr.MonthWide(t.Month())) } else if strings.Contains(layout, "Jan") { s = strings.ReplaceAll(s, shortMonthNames[monthIdx], f.ltr.MonthAbbreviated(t.Month())) } if strings.Contains(layout, "Monday") { s = strings.ReplaceAll(s, longDayNames[dayIdx], f.ltr.WeekdayWide(t.Weekday())) } else if strings.Contains(layout, "Mon") { s = strings.ReplaceAll(s, shortDayNames[dayIdx], f.ltr.WeekdayAbbreviated(t.Weekday())) } return s } func ToTimeInDefaultLocationE(i any, location *time.Location) (tim time.Time, err error) { switch vv := i.(type) { case AsTimeProvider: return vv.AsTime(location), nil // issue #8895 // datetimes parsed by `go-toml` have empty zone name // convert back them into string and use `cast` // TODO(bep) add tests, make sure we really need this. case time.Time: i = vv.Format(time.RFC3339) } return cast.ToTimeInDefaultLocationE(i, location) } // Now returns time.Now() or time value based on the `clock` flag. // Use this function to fake time inside hugo. func Now() time.Time { return Clock.Now() } func Since(t time.Time) time.Duration { return Clock.Since(t) } // AsTimeProvider is implemented by go-toml's LocalDate and LocalDateTime. type AsTimeProvider interface { AsTime(zone *time.Location) time.Time } // StopWatch is a simple helper to measure time during development. func StopWatch(name string) func() { start := time.Now() return func() { log.Printf("StopWatch %q took %s", name, time.Since(start)) } } hugo-0.131.0/common/htime/time_test.go000066400000000000000000000122201465312036400175410ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package htime import ( "testing" "time" qt "github.com/frankban/quicktest" translators "github.com/gohugoio/localescompressed" ) func TestTimeFormatter(t *testing.T) { c := qt.New(t) june06, _ := time.Parse("2006-Jan-02", "2018-Jun-06") june06 = june06.Add(7777 * time.Second) jan06, _ := time.Parse("2006-Jan-02", "2018-Jan-06") jan06 = jan06.Add(32 * time.Second) mondayNovemberFirst, _ := time.Parse("2006-Jan-02", "2021-11-01") mondayNovemberFirst = mondayNovemberFirst.Add(33 * time.Second) c.Run("Norsk nynorsk", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("nn")) c.Assert(f.Format(june06, "Monday Jan 2 2006"), qt.Equals, "onsdag juni 6 2018") c.Assert(f.Format(june06, "Mon January 2 2006"), qt.Equals, "on. juni 6 2018") c.Assert(f.Format(june06, "Mon Mon"), qt.Equals, "on. on.") }) c.Run("Custom layouts Norsk nynorsk", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("nn")) c.Assert(f.Format(june06, ":date_full"), qt.Equals, "onsdag 6. juni 2018") c.Assert(f.Format(june06, ":date_long"), qt.Equals, "6. juni 2018") c.Assert(f.Format(june06, ":date_medium"), qt.Equals, "6. juni 2018") c.Assert(f.Format(june06, ":date_short"), qt.Equals, "06.06.2018") c.Assert(f.Format(june06, ":time_full"), qt.Equals, "kl. 02:09:37 UTC") c.Assert(f.Format(june06, ":time_long"), qt.Equals, "02:09:37 UTC") c.Assert(f.Format(june06, ":time_medium"), qt.Equals, "02:09:37") c.Assert(f.Format(june06, ":time_short"), qt.Equals, "02:09") }) c.Run("Custom layouts English", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("en")) c.Assert(f.Format(june06, ":date_full"), qt.Equals, "Wednesday, June 6, 2018") c.Assert(f.Format(june06, ":date_long"), qt.Equals, "June 6, 2018") c.Assert(f.Format(june06, ":date_medium"), qt.Equals, "Jun 6, 2018") c.Assert(f.Format(june06, ":date_short"), qt.Equals, "6/6/18") c.Assert(f.Format(june06, ":time_full"), qt.Equals, "2:09:37 am UTC") c.Assert(f.Format(june06, ":time_long"), qt.Equals, "2:09:37 am UTC") c.Assert(f.Format(june06, ":time_medium"), qt.Equals, "2:09:37 am") c.Assert(f.Format(june06, ":time_short"), qt.Equals, "2:09 am") }) c.Run("English", func(c *qt.C) { f := NewTimeFormatter(translators.GetTranslator("en")) c.Assert(f.Format(june06, "Monday Jan 2 2006"), qt.Equals, "Wednesday Jun 6 2018") c.Assert(f.Format(june06, "Mon January 2 2006"), qt.Equals, "Wed June 6 2018") c.Assert(f.Format(june06, "Mon Mon"), qt.Equals, "Wed Wed") }) c.Run("Weekdays German", func(c *qt.C) { tr := translators.GetTranslator("de") f := NewTimeFormatter(tr) // Issue #9107 for i, weekDayWideGerman := range []string{"Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"} { date := mondayNovemberFirst.Add(time.Duration(i*24) * time.Hour) c.Assert(tr.WeekdayWide(date.Weekday()), qt.Equals, weekDayWideGerman) c.Assert(f.Format(date, "Monday"), qt.Equals, weekDayWideGerman) } for i, weekDayAbbreviatedGerman := range []string{"Mo.", "Di.", "Mi.", "Do.", "Fr.", "Sa.", "So."} { date := mondayNovemberFirst.Add(time.Duration(i*24) * time.Hour) c.Assert(tr.WeekdayAbbreviated(date.Weekday()), qt.Equals, weekDayAbbreviatedGerman) c.Assert(f.Format(date, "Mon"), qt.Equals, weekDayAbbreviatedGerman) } }) c.Run("Months German", func(c *qt.C) { tr := translators.GetTranslator("de") f := NewTimeFormatter(tr) // Issue #9107 for i, monthWideNorway := range []string{"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli"} { date := jan06.Add(time.Duration(i*24*31) * time.Hour) c.Assert(tr.MonthWide(date.Month()), qt.Equals, monthWideNorway) c.Assert(f.Format(date, "January"), qt.Equals, monthWideNorway) } }) } func BenchmarkTimeFormatter(b *testing.B) { june06, _ := time.Parse("2006-Jan-02", "2018-Jun-06") b.Run("Native", func(b *testing.B) { for i := 0; i < b.N; i++ { got := june06.Format("Monday Jan 2 2006") if got != "Wednesday Jun 6 2018" { b.Fatalf("invalid format, got %q", got) } } }) b.Run("Localized", func(b *testing.B) { f := NewTimeFormatter(translators.GetTranslator("nn")) b.ResetTimer() for i := 0; i < b.N; i++ { got := f.Format(june06, "Monday Jan 2 2006") if got != "onsdag juni 6 2018" { b.Fatalf("invalid format, got %q", got) } } }) b.Run("Localized Custom", func(b *testing.B) { f := NewTimeFormatter(translators.GetTranslator("nn")) b.ResetTimer() for i := 0; i < b.N; i++ { got := f.Format(june06, ":date_medium") if got != "6. juni 2018" { b.Fatalf("invalid format, got %q", got) } } }) } hugo-0.131.0/common/hugio/000077500000000000000000000000001465312036400152255ustar00rootroot00000000000000hugo-0.131.0/common/hugio/copy.go000066400000000000000000000037361465312036400165370ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package hugio import ( "fmt" "io" iofs "io/fs" "path/filepath" "github.com/spf13/afero" ) // CopyFile copies a file. func CopyFile(fs afero.Fs, from, to string) error { sf, err := fs.Open(from) if err != nil { return err } defer sf.Close() df, err := fs.Create(to) if err != nil { return err } defer df.Close() _, err = io.Copy(df, sf) if err != nil { return err } si, err := fs.Stat(from) if err != nil { err = fs.Chmod(to, si.Mode()) if err != nil { return err } } return nil } // CopyDir copies a directory. func CopyDir(fs afero.Fs, from, to string, shouldCopy func(filename string) bool) error { fi, err := fs.Stat(from) if err != nil { return err } if !fi.IsDir() { return fmt.Errorf("%q is not a directory", from) } err = fs.MkdirAll(to, 0o777) // before umask if err != nil { return err } d, err := fs.Open(from) if err != nil { return err } entries, _ := d.(iofs.ReadDirFile).ReadDir(-1) for _, entry := range entries { fromFilename := filepath.Join(from, entry.Name()) toFilename := filepath.Join(to, entry.Name()) if entry.IsDir() { if shouldCopy != nil && !shouldCopy(fromFilename) { continue } if err := CopyDir(fs, fromFilename, toFilename, shouldCopy); err != nil { return err } } else { if err := CopyFile(fs, fromFilename, toFilename); err != nil { return err } } } return nil } hugo-0.131.0/common/hugio/hasBytesWriter.go000066400000000000000000000031521465312036400205340ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hugio import ( "bytes" ) // HasBytesWriter is a writer will match against a slice of patterns. type HasBytesWriter struct { Patterns []*HasBytesPattern i int done bool buff []byte } type HasBytesPattern struct { Match bool Pattern []byte } func (h *HasBytesWriter) patternLen() int { l := 0 for _, p := range h.Patterns { l += len(p.Pattern) } return l } func (h *HasBytesWriter) Write(p []byte) (n int, err error) { if h.done { return len(p), nil } if len(h.buff) == 0 { h.buff = make([]byte, h.patternLen()*2) } for i := range p { h.buff[h.i] = p[i] h.i++ if h.i == len(h.buff) { // Shift left. copy(h.buff, h.buff[len(h.buff)/2:]) h.i = len(h.buff) / 2 } for _, pp := range h.Patterns { if bytes.Contains(h.buff, pp.Pattern) { pp.Match = true done := true for _, ppp := range h.Patterns { if !ppp.Match { done = false break } } if done { h.done = true } return len(p), nil } } } return len(p), nil } hugo-0.131.0/common/hugio/hasBytesWriter_test.go000066400000000000000000000031301465312036400215670ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hugio import ( "bytes" "fmt" "io" "math/rand" "strings" "testing" "time" qt "github.com/frankban/quicktest" ) func TestHasBytesWriter(t *testing.T) { r := rand.New(rand.NewSource(time.Now().UnixNano())) c := qt.New((t)) neww := func() (*HasBytesWriter, io.Writer) { var b bytes.Buffer h := &HasBytesWriter{ Patterns: []*HasBytesPattern{ {Pattern: []byte("__foo")}, }, } return h, io.MultiWriter(&b, h) } rndStr := func() string { return strings.Repeat("ab cfo", r.Intn(33)) } for i := 0; i < 22; i++ { h, w := neww() fmt.Fprintf(w, rndStr()+"abc __foobar"+rndStr()) c.Assert(h.Patterns[0].Match, qt.Equals, true) h, w = neww() fmt.Fprintf(w, rndStr()+"abc __f") fmt.Fprintf(w, "oo bar"+rndStr()) c.Assert(h.Patterns[0].Match, qt.Equals, true) h, w = neww() fmt.Fprintf(w, rndStr()+"abc __moo bar") c.Assert(h.Patterns[0].Match, qt.Equals, false) } h, w := neww() fmt.Fprintf(w, "__foo") c.Assert(h.Patterns[0].Match, qt.Equals, true) } hugo-0.131.0/common/hugio/readers.go000066400000000000000000000060171465312036400172050ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package hugio import ( "bytes" "io" "strings" ) // ReadSeeker wraps io.Reader and io.Seeker. type ReadSeeker interface { io.Reader io.Seeker } // ReadSeekCloser is implemented by afero.File. We use this as the common type for // content in Resource objects, even for strings. type ReadSeekCloser interface { ReadSeeker io.Closer } // ReadSeekCloserProvider provides a ReadSeekCloser. type ReadSeekCloserProvider interface { ReadSeekCloser() (ReadSeekCloser, error) } // readSeekerNopCloser implements ReadSeekCloser by doing nothing in Close. type readSeekerNopCloser struct { ReadSeeker } // Close does nothing. func (r readSeekerNopCloser) Close() error { return nil } // NewReadSeekerNoOpCloser creates a new ReadSeekerNoOpCloser with the given ReadSeeker. func NewReadSeekerNoOpCloser(r ReadSeeker) ReadSeekCloser { return readSeekerNopCloser{r} } // NewReadSeekerNoOpCloserFromString uses strings.NewReader to create a new ReadSeekerNoOpCloser // from the given string. func NewReadSeekerNoOpCloserFromString(content string) ReadSeekCloser { return stringReadSeeker{s: content, readSeekerNopCloser: readSeekerNopCloser{strings.NewReader(content)}} } var _ StringReader = (*stringReadSeeker)(nil) type stringReadSeeker struct { s string readSeekerNopCloser } func (s *stringReadSeeker) ReadString() string { return s.s } // StringReader provides a way to read a string. type StringReader interface { ReadString() string } // NewReadSeekerNoOpCloserFromString uses strings.NewReader to create a new ReadSeekerNoOpCloser // from the given bytes slice. func NewReadSeekerNoOpCloserFromBytes(content []byte) readSeekerNopCloser { return readSeekerNopCloser{bytes.NewReader(content)} } // NewReadSeekCloser creates a new ReadSeekCloser from the given ReadSeeker. // The ReadSeeker will be seeked to the beginning before returned. func NewOpenReadSeekCloser(r ReadSeekCloser) OpenReadSeekCloser { return func() (ReadSeekCloser, error) { r.Seek(0, io.SeekStart) return r, nil } } // OpenReadSeekCloser allows setting some other way (than reading from a filesystem) // to open or create a ReadSeekCloser. type OpenReadSeekCloser func() (ReadSeekCloser, error) // ReadString reads from the given reader and returns the content as a string. func ReadString(r io.Reader) (string, error) { if sr, ok := r.(StringReader); ok { return sr.ReadString(), nil } b, err := io.ReadAll(r) if err != nil { return "", err } return string(b), nil } hugo-0.131.0/common/hugio/writers.go000066400000000000000000000040461465312036400172570ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package hugio import ( "io" ) // As implemented by strings.Builder. type FlexiWriter interface { io.Writer io.ByteWriter WriteString(s string) (int, error) WriteRune(r rune) (int, error) } type multiWriteCloser struct { io.Writer closers []io.WriteCloser } func (m multiWriteCloser) Close() error { var err error for _, c := range m.closers { if closeErr := c.Close(); closeErr != nil { err = closeErr } } return err } // NewMultiWriteCloser creates a new io.WriteCloser that duplicates its writes to all the // provided writers. func NewMultiWriteCloser(writeClosers ...io.WriteCloser) io.WriteCloser { writers := make([]io.Writer, len(writeClosers)) for i, w := range writeClosers { writers[i] = w } return multiWriteCloser{Writer: io.MultiWriter(writers...), closers: writeClosers} } // ToWriteCloser creates an io.WriteCloser from the given io.Writer. // If it's not already, one will be created with a Close method that does nothing. func ToWriteCloser(w io.Writer) io.WriteCloser { if rw, ok := w.(io.WriteCloser); ok { return rw } return struct { io.Writer io.Closer }{ w, io.NopCloser(nil), } } // ToReadCloser creates an io.ReadCloser from the given io.Reader. // If it's not already, one will be created with a Close method that does nothing. func ToReadCloser(r io.Reader) io.ReadCloser { if rc, ok := r.(io.ReadCloser); ok { return rc } return struct { io.Reader io.Closer }{ r, io.NopCloser(nil), } } hugo-0.131.0/common/hugo/000077500000000000000000000000001465312036400150545ustar00rootroot00000000000000hugo-0.131.0/common/hugo/hugo.go000066400000000000000000000256271465312036400163610ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package hugo import ( "fmt" "html/template" "os" "path/filepath" "runtime/debug" "sort" "strings" "sync" "time" godartsassv1 "github.com/bep/godartsass" "github.com/bep/logg" "github.com/mitchellh/mapstructure" "github.com/bep/godartsass/v2" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/hugofs/files" "github.com/spf13/afero" iofs "io/fs" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/hugofs" ) const ( EnvironmentDevelopment = "development" EnvironmentProduction = "production" ) var ( // buildDate allows vendor-specified build date when .git/ is unavailable. buildDate string // vendorInfo contains vendor notes about the current build. vendorInfo string ) // HugoInfo contains information about the current Hugo environment type HugoInfo struct { CommitHash string BuildDate string // The build environment. // Defaults are "production" (hugo) and "development" (hugo server). // This can also be set by the user. // It can be any string, but it will be all lower case. Environment string // version of go that the Hugo binary was built with GoVersion string conf ConfigProvider deps []*Dependency } // Version returns the current version as a comparable version string. func (i HugoInfo) Version() VersionString { return CurrentVersion.Version() } // Generator a Hugo meta generator HTML tag. func (i HugoInfo) Generator() template.HTML { return template.HTML(fmt.Sprintf(``, CurrentVersion.String())) } // IsDevelopment reports whether the current running environment is "development". func (i HugoInfo) IsDevelopment() bool { return i.Environment == EnvironmentDevelopment } // IsProduction reports whether the current running environment is "production". func (i HugoInfo) IsProduction() bool { return i.Environment == EnvironmentProduction } // IsServer reports whether the built-in server is running. func (i HugoInfo) IsServer() bool { return i.conf.Running() } // IsExtended reports whether the Hugo binary is the extended version. func (i HugoInfo) IsExtended() bool { return IsExtended } // WorkingDir returns the project working directory. func (i HugoInfo) WorkingDir() string { return i.conf.WorkingDir() } // Deps gets a list of dependencies for this Hugo build. func (i HugoInfo) Deps() []*Dependency { return i.deps } // Deprecated: Use hugo.IsMultihost instead. func (i HugoInfo) IsMultiHost() bool { Deprecate("hugo.IsMultiHost", "Use hugo.IsMultihost instead.", "v0.124.0") return i.conf.IsMultihost() } // IsMultihost reports whether each configured language has a unique baseURL. func (i HugoInfo) IsMultihost() bool { return i.conf.IsMultihost() } // IsMultilingual reports whether there are two or more configured languages. func (i HugoInfo) IsMultilingual() bool { return i.conf.IsMultilingual() } // ConfigProvider represents the config options that are relevant for HugoInfo. type ConfigProvider interface { Environment() string Running() bool WorkingDir() string IsMultihost() bool IsMultilingual() bool } // NewInfo creates a new Hugo Info object. func NewInfo(conf ConfigProvider, deps []*Dependency) HugoInfo { if conf.Environment() == "" { panic("environment not set") } var ( commitHash string buildDate string goVersion string ) bi := getBuildInfo() if bi != nil { commitHash = bi.Revision buildDate = bi.RevisionTime goVersion = bi.GoVersion } return HugoInfo{ CommitHash: commitHash, BuildDate: buildDate, Environment: conf.Environment(), conf: conf, deps: deps, GoVersion: goVersion, } } // GetExecEnviron creates and gets the common os/exec environment used in the // external programs we interact with via os/exec, e.g. postcss. func GetExecEnviron(workDir string, cfg config.AllProvider, fs afero.Fs) []string { var env []string nodepath := filepath.Join(workDir, "node_modules") if np := os.Getenv("NODE_PATH"); np != "" { nodepath = workDir + string(os.PathListSeparator) + np } config.SetEnvVars(&env, "NODE_PATH", nodepath) config.SetEnvVars(&env, "PWD", workDir) config.SetEnvVars(&env, "HUGO_ENVIRONMENT", cfg.Environment()) config.SetEnvVars(&env, "HUGO_ENV", cfg.Environment()) config.SetEnvVars(&env, "HUGO_PUBLISHDIR", filepath.Join(workDir, cfg.BaseConfig().PublishDir)) if fs != nil { var fis []iofs.DirEntry d, err := fs.Open(files.FolderJSConfig) if err == nil { fis, err = d.(iofs.ReadDirFile).ReadDir(-1) } if err == nil { for _, fi := range fis { key := fmt.Sprintf("HUGO_FILE_%s", strings.ReplaceAll(strings.ToUpper(fi.Name()), ".", "_")) value := fi.(hugofs.FileMetaInfo).Meta().Filename config.SetEnvVars(&env, key, value) } } } return env } type buildInfo struct { VersionControlSystem string Revision string RevisionTime string Modified bool GoOS string GoArch string *debug.BuildInfo } var ( bInfo *buildInfo bInfoInit sync.Once ) func getBuildInfo() *buildInfo { bInfoInit.Do(func() { bi, ok := debug.ReadBuildInfo() if !ok { return } bInfo = &buildInfo{BuildInfo: bi} for _, s := range bInfo.Settings { switch s.Key { case "vcs": bInfo.VersionControlSystem = s.Value case "vcs.revision": bInfo.Revision = s.Value case "vcs.time": bInfo.RevisionTime = s.Value case "vcs.modified": bInfo.Modified = s.Value == "true" case "GOOS": bInfo.GoOS = s.Value case "GOARCH": bInfo.GoArch = s.Value } } }) return bInfo } func formatDep(path, version string) string { return fmt.Sprintf("%s=%q", path, version) } // GetDependencyList returns a sorted dependency list on the format package="version". // It includes both Go dependencies and (a manually maintained) list of C(++) dependencies. func GetDependencyList() []string { var deps []string bi := getBuildInfo() if bi == nil { return deps } for _, dep := range bi.Deps { deps = append(deps, formatDep(dep.Path, dep.Version)) } deps = append(deps, GetDependencyListNonGo()...) sort.Strings(deps) return deps } // GetDependencyListNonGo returns a list of non-Go dependencies. func GetDependencyListNonGo() []string { var deps []string if IsExtended { deps = append( deps, formatDep("github.com/sass/libsass", "3.6.5"), formatDep("github.com/webmproject/libwebp", "v1.3.2"), ) } if dartSass := dartSassVersion(); dartSass.ProtocolVersion != "" { dartSassPath := "github.com/sass/dart-sass-embedded" if IsDartSassV2() { dartSassPath = "github.com/sass/dart-sass" } deps = append(deps, formatDep(dartSassPath+"/protocol", dartSass.ProtocolVersion), formatDep(dartSassPath+"/compiler", dartSass.CompilerVersion), formatDep(dartSassPath+"/implementation", dartSass.ImplementationVersion), ) } return deps } // IsRunningAsTest reports whether we are running as a test. func IsRunningAsTest() bool { for _, arg := range os.Args { if strings.HasPrefix(arg, "-test") { return true } } return false } // Dependency is a single dependency, which can be either a Hugo Module or a local theme. type Dependency struct { // Returns the path to this module. // This will either be the module path, e.g. "github.com/gohugoio/myshortcodes", // or the path below your /theme folder, e.g. "mytheme". Path string // The module version. Version string // Whether this dependency is vendored. Vendor bool // Time version was created. Time time.Time // In the dependency tree, this is the first module that defines this module // as a dependency. Owner *Dependency // Replaced by this dependency. Replace *Dependency } func dartSassVersion() godartsass.DartSassVersion { if DartSassBinaryName == "" { return godartsass.DartSassVersion{} } if IsDartSassV2() { v, _ := godartsass.Version(DartSassBinaryName) return v } v, _ := godartsassv1.Version(DartSassBinaryName) var vv godartsass.DartSassVersion mapstructure.WeakDecode(v, &vv) return vv } // DartSassBinaryName is the name of the Dart Sass binary to use. // TODO(beop) find a better place for this. var DartSassBinaryName string func init() { DartSassBinaryName = os.Getenv("DART_SASS_BINARY") if DartSassBinaryName == "" { for _, name := range dartSassBinaryNamesV2 { if hexec.InPath(name) { DartSassBinaryName = name break } } if DartSassBinaryName == "" { if hexec.InPath(dartSassBinaryNameV1) { DartSassBinaryName = dartSassBinaryNameV1 } } } } var ( dartSassBinaryNameV1 = "dart-sass-embedded" dartSassBinaryNamesV2 = []string{"dart-sass", "sass"} ) func IsDartSassV2() bool { return !strings.Contains(DartSassBinaryName, "embedded") } // Deprecate informs about a deprecation starting at the given version. // // A deprecation typically needs a simple change in the template, but doing so will make the template incompatible with older versions. // Theme maintainers generally want // 1. No warnings or errors in the console when building a Hugo site. // 2. Their theme to work for at least the last few Hugo versions. func Deprecate(item, alternative string, version string) { level := deprecationLogLevelFromVersion(version) DeprecateLevel(item, alternative, version, level) } // DeprecateLevel informs about a deprecation logging at the given level. func DeprecateLevel(item, alternative, version string, level logg.Level) { var msg string if level == logg.LevelError { msg = fmt.Sprintf("%s was deprecated in Hugo %s and will be removed in Hugo %s. %s", item, version, CurrentVersion.Next().ReleaseVersion(), alternative) } else { msg = fmt.Sprintf("%s was deprecated in Hugo %s and will be removed in a future release. %s", item, version, alternative) } loggers.Log().Logger().WithLevel(level).WithField(loggers.FieldNameCmd, "deprecated").Logf(msg) } // We ususally do about one minor version a month. // We want people to run at least the current and previous version without any warnings. // We want people who don't update Hugo that often to see the warnings and errors before we remove the feature. func deprecationLogLevelFromVersion(ver string) logg.Level { from := MustParseVersion(ver) to := CurrentVersion minorDiff := to.Minor - from.Minor switch { case minorDiff >= 12: // Start failing the build after about a year. return logg.LevelError case minorDiff >= 6: // Start printing warnings after about six months. return logg.LevelWarn default: return logg.LevelInfo } } hugo-0.131.0/common/hugo/hugo_integration_test.go000066400000000000000000000036651465312036400220210ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hugo_test import ( "strings" "testing" "github.com/gohugoio/hugo/hugolib" ) func TestIsMultilingualAndIsMultihost(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ['page','rss','section','sitemap','taxonomy','term'] defaultContentLanguageInSubdir = true [languages.de] baseURL = 'https://de.example.org/' [languages.en] baseURL = 'https://en.example.org/' -- content/_index.md -- --- title: home --- -- layouts/index.html -- multilingual={{ hugo.IsMultilingual }} multihost={{ hugo.IsMultihost }} ` b := hugolib.Test(t, files) b.AssertFileContent("public/de/index.html", "multilingual=true", "multihost=true", ) b.AssertFileContent("public/en/index.html", "multilingual=true", "multihost=true", ) files = strings.ReplaceAll(files, "baseURL = 'https://de.example.org/'", "") files = strings.ReplaceAll(files, "baseURL = 'https://en.example.org/'", "") b = hugolib.Test(t, files) b.AssertFileContent("public/de/index.html", "multilingual=true", "multihost=false", ) b.AssertFileContent("public/en/index.html", "multilingual=true", "multihost=false", ) files = strings.ReplaceAll(files, "[languages.de]", "") files = strings.ReplaceAll(files, "[languages.en]", "") b = hugolib.Test(t, files) b.AssertFileContent("public/en/index.html", "multilingual=false", "multihost=false", ) } hugo-0.131.0/common/hugo/hugo_test.go000066400000000000000000000056001465312036400174050ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package hugo import ( "fmt" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" ) func TestHugoInfo(t *testing.T) { c := qt.New(t) conf := testConfig{environment: "production", workingDir: "/mywork", running: false} hugoInfo := NewInfo(conf, nil) c.Assert(hugoInfo.Version(), qt.Equals, CurrentVersion.Version()) c.Assert(fmt.Sprintf("%T", VersionString("")), qt.Equals, fmt.Sprintf("%T", hugoInfo.Version())) c.Assert(hugoInfo.WorkingDir(), qt.Equals, "/mywork") bi := getBuildInfo() if bi != nil { c.Assert(hugoInfo.CommitHash, qt.Equals, bi.Revision) c.Assert(hugoInfo.BuildDate, qt.Equals, bi.RevisionTime) c.Assert(hugoInfo.GoVersion, qt.Equals, bi.GoVersion) } c.Assert(hugoInfo.Environment, qt.Equals, "production") c.Assert(string(hugoInfo.Generator()), qt.Contains, fmt.Sprintf("Hugo %s", hugoInfo.Version())) c.Assert(hugoInfo.IsDevelopment(), qt.Equals, false) c.Assert(hugoInfo.IsProduction(), qt.Equals, true) c.Assert(hugoInfo.IsExtended(), qt.Equals, IsExtended) c.Assert(hugoInfo.IsServer(), qt.Equals, false) devHugoInfo := NewInfo(testConfig{environment: "development", running: true}, nil) c.Assert(devHugoInfo.IsDevelopment(), qt.Equals, true) c.Assert(devHugoInfo.IsProduction(), qt.Equals, false) c.Assert(devHugoInfo.IsServer(), qt.Equals, true) } func TestDeprecationLogLevelFromVersion(t *testing.T) { c := qt.New(t) c.Assert(deprecationLogLevelFromVersion("0.55.0"), qt.Equals, logg.LevelError) ver := CurrentVersion c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelInfo) ver.Minor -= 1 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelInfo) ver.Minor -= 6 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelWarn) ver.Minor -= 6 c.Assert(deprecationLogLevelFromVersion(ver.String()), qt.Equals, logg.LevelError) } type testConfig struct { environment string running bool workingDir string multihost bool multilingual bool } func (c testConfig) Environment() string { return c.environment } func (c testConfig) Running() bool { return c.running } func (c testConfig) WorkingDir() string { return c.workingDir } func (c testConfig) IsMultihost() bool { return c.multihost } func (c testConfig) IsMultilingual() bool { return c.multilingual } hugo-0.131.0/common/hugo/vars_extended.go000066400000000000000000000012551465312036400202410ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. //go:build extended // +build extended package hugo var IsExtended = true hugo-0.131.0/common/hugo/vars_regular.go000066400000000000000000000012601465312036400200760ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. //go:build !extended // +build !extended package hugo var IsExtended = false hugo-0.131.0/common/hugo/version.go000066400000000000000000000153511465312036400170750ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package hugo import ( "fmt" "io" "math" "runtime" "strconv" "strings" "github.com/gohugoio/hugo/compare" "github.com/spf13/cast" ) // Version represents the Hugo build version. type Version struct { Major int Minor int // Increment this for bug releases PatchLevel int // HugoVersionSuffix is the suffix used in the Hugo version string. // It will be blank for release versions. Suffix string } var ( _ compare.Eqer = (*VersionString)(nil) _ compare.Comparer = (*VersionString)(nil) ) func (v Version) String() string { return version(v.Major, v.Minor, v.PatchLevel, v.Suffix) } // Version returns the Hugo version. func (v Version) Version() VersionString { return VersionString(v.String()) } // Compare implements the compare.Comparer interface. func (h Version) Compare(other any) int { return compareVersions(h, other) } // VersionString represents a Hugo version string. type VersionString string func (h VersionString) String() string { return string(h) } // Compare implements the compare.Comparer interface. func (h VersionString) Compare(other any) int { return compareVersions(h.Version(), other) } func (h VersionString) Version() Version { return MustParseVersion(h.String()) } // Eq implements the compare.Eqer interface. func (h VersionString) Eq(other any) bool { s, err := cast.ToStringE(other) if err != nil { return false } return s == h.String() } var versionSuffixes = []string{"-test", "-DEV"} // ParseVersion parses a version string. func ParseVersion(s string) (Version, error) { var vv Version for _, suffix := range versionSuffixes { if strings.HasSuffix(s, suffix) { vv.Suffix = suffix s = strings.TrimSuffix(s, suffix) } } vv.Major, vv.Minor, vv.PatchLevel = parseVersion(s) return vv, nil } // MustParseVersion parses a version string // and panics if any error occurs. func MustParseVersion(s string) Version { vv, err := ParseVersion(s) if err != nil { panic(err) } return vv } // ReleaseVersion represents the release version. func (v Version) ReleaseVersion() Version { v.Suffix = "" return v } // Next returns the next Hugo release version. func (v Version) Next() Version { return Version{Major: v.Major, Minor: v.Minor + 1} } // Prev returns the previous Hugo release version. func (v Version) Prev() Version { return Version{Major: v.Major, Minor: v.Minor - 1} } // NextPatchLevel returns the next patch/bugfix Hugo version. // This will be a patch increment on the previous Hugo version. func (v Version) NextPatchLevel(level int) Version { prev := v.Prev() prev.PatchLevel = level return prev } // BuildVersionString creates a version string. This is what you see when // running "hugo version". func BuildVersionString() string { // program := "Hugo Static Site Generator" program := "hugo" version := "v" + CurrentVersion.String() bi := getBuildInfo() if bi == nil { return version } if bi.Revision != "" { version += "-" + bi.Revision } if IsExtended { version += "+extended" } osArch := bi.GoOS + "/" + bi.GoArch date := bi.RevisionTime if date == "" { // Accept vendor-specified build date if .git/ is unavailable. date = buildDate } if date == "" { date = "unknown" } versionString := fmt.Sprintf("%s %s %s BuildDate=%s", program, version, osArch, date) if vendorInfo != "" { versionString += " VendorInfo=" + vendorInfo } return versionString } func version(major, minor, patch int, suffix string) string { if patch > 0 || minor > 53 { return fmt.Sprintf("%d.%d.%d%s", major, minor, patch, suffix) } return fmt.Sprintf("%d.%d%s", major, minor, suffix) } // CompareVersion compares the given version string or number against the // running Hugo version. // It returns -1 if the given version is less than, 0 if equal and 1 if greater than // the running version. func CompareVersion(version any) int { return compareVersions(CurrentVersion, version) } func compareVersions(inVersion Version, in any) int { var c int switch d := in.(type) { case float64: c = compareFloatWithVersion(d, inVersion) case float32: c = compareFloatWithVersion(float64(d), inVersion) case int: c = compareFloatWithVersion(float64(d), inVersion) case int32: c = compareFloatWithVersion(float64(d), inVersion) case int64: c = compareFloatWithVersion(float64(d), inVersion) case Version: if d.Major == inVersion.Major && d.Minor == inVersion.Minor && d.PatchLevel == inVersion.PatchLevel { return strings.Compare(inVersion.Suffix, d.Suffix) } if d.Major > inVersion.Major { return 1 } else if d.Major < inVersion.Major { return -1 } if d.Minor > inVersion.Minor { return 1 } else if d.Minor < inVersion.Minor { return -1 } if d.PatchLevel > inVersion.PatchLevel { return 1 } else if d.PatchLevel < inVersion.PatchLevel { return -1 } default: s, err := cast.ToStringE(in) if err != nil { return -1 } v, err := ParseVersion(s) if err != nil { return -1 } return inVersion.Compare(v) } return c } func parseVersion(s string) (int, int, int) { var major, minor, patch int parts := strings.Split(s, ".") if len(parts) > 0 { major, _ = strconv.Atoi(parts[0]) } if len(parts) > 1 { minor, _ = strconv.Atoi(parts[1]) } if len(parts) > 2 { patch, _ = strconv.Atoi(parts[2]) } return major, minor, patch } // compareFloatWithVersion compares v1 with v2. // It returns -1 if v1 is less than v2, 0 if v1 is equal to v2 and 1 if v1 is greater than v2. func compareFloatWithVersion(v1 float64, v2 Version) int { mf, minf := math.Modf(v1) v1maj := int(mf) v1min := int(minf * 100) if v2.Major == v1maj && v2.Minor == v1min { return 0 } if v1maj > v2.Major { return 1 } if v1maj < v2.Major { return -1 } if v1min > v2.Minor { return 1 } return -1 } func GoMinorVersion() int { return goMinorVersion(runtime.Version()) } func goMinorVersion(version string) int { if strings.HasPrefix(version, "devel") { return 9999 // magic } var major, minor int var trailing string n, err := fmt.Sscanf(version, "go%d.%d%s", &major, &minor, &trailing) if n == 2 && err == io.EOF { // Means there were no trailing characters (i.e., not an alpha/beta) err = nil } if err != nil { return 0 } return minor } hugo-0.131.0/common/hugo/version_current.go000066400000000000000000000014521465312036400206340ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package hugo // CurrentVersion represents the current build version. // This should be the only one. var CurrentVersion = Version{ Major: 0, Minor: 131, PatchLevel: 0, Suffix: "", } hugo-0.131.0/common/hugo/version_test.go000066400000000000000000000074601465312036400201360ustar00rootroot00000000000000// Copyright 2015 The Hugo Authors. All rights reserved. // // 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. package hugo import ( "testing" qt "github.com/frankban/quicktest" ) func TestHugoVersion(t *testing.T) { c := qt.New(t) c.Assert(version(0, 15, 0, "-DEV"), qt.Equals, "0.15-DEV") c.Assert(version(0, 15, 2, "-DEV"), qt.Equals, "0.15.2-DEV") v := Version{Minor: 21, Suffix: "-DEV"} c.Assert(v.ReleaseVersion().String(), qt.Equals, "0.21") c.Assert(v.String(), qt.Equals, "0.21-DEV") c.Assert(v.Next().String(), qt.Equals, "0.22") nextVersionString := v.Next().Version() c.Assert(nextVersionString.String(), qt.Equals, "0.22") c.Assert(nextVersionString.Eq("0.22"), qt.Equals, true) c.Assert(nextVersionString.Eq("0.21"), qt.Equals, false) c.Assert(nextVersionString.Eq(nextVersionString), qt.Equals, true) c.Assert(v.NextPatchLevel(3).String(), qt.Equals, "0.20.3") // We started to use full semver versions even for main // releases in v0.54.0 v = Version{Minor: 53, PatchLevel: 0} c.Assert(v.String(), qt.Equals, "0.53") c.Assert(v.Next().String(), qt.Equals, "0.54.0") c.Assert(v.Next().Next().String(), qt.Equals, "0.55.0") v = Version{Minor: 54, PatchLevel: 0, Suffix: "-DEV"} c.Assert(v.String(), qt.Equals, "0.54.0-DEV") } func TestCompareVersions(t *testing.T) { c := qt.New(t) c.Assert(compareVersions(MustParseVersion("0.20.0"), 0.20), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.0"), float32(0.20)), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.0"), float64(0.20)), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.19.1"), 0.20), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.19.3"), "0.20.2"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), 3), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), int32(3)), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.1"), int64(3)), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.20"), "0.20"), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20.1"), qt.Equals, 0) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.20.0"), "0.20.1"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.20.1"), "0.20.2"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.21.1"), "0.22.1"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.0"), "0.22-DEV"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.22.0"), "0.22.1-DEV"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.0-DEV"), "0.22"), qt.Equals, 1) c.Assert(compareVersions(MustParseVersion("0.22.1-DEV"), "0.22"), qt.Equals, -1) c.Assert(compareVersions(MustParseVersion("0.22.1-DEV"), "0.22.1-DEV"), qt.Equals, 0) } func TestParseHugoVersion(t *testing.T) { c := qt.New(t) c.Assert(MustParseVersion("0.25").String(), qt.Equals, "0.25") c.Assert(MustParseVersion("0.25.2").String(), qt.Equals, "0.25.2") c.Assert(MustParseVersion("0.25-test").String(), qt.Equals, "0.25-test") c.Assert(MustParseVersion("0.25-DEV").String(), qt.Equals, "0.25-DEV") } func TestGoMinorVersion(t *testing.T) { c := qt.New(t) c.Assert(goMinorVersion("go1.12.5"), qt.Equals, 12) c.Assert(goMinorVersion("go1.14rc1"), qt.Equals, 14) c.Assert(GoMinorVersion() >= 11, qt.Equals, true) } hugo-0.131.0/common/loggers/000077500000000000000000000000001465312036400155545ustar00rootroot00000000000000hugo-0.131.0/common/loggers/handlerdefault.go000066400000000000000000000051341465312036400210700ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. // package loggers contains some basic logging setup. package loggers import ( "fmt" "io" "strings" "sync" "github.com/bep/logg" "github.com/fatih/color" ) // levelColor mapping. var levelColor = [...]*color.Color{ logg.LevelTrace: color.New(color.FgWhite), logg.LevelDebug: color.New(color.FgWhite), logg.LevelInfo: color.New(color.FgBlue), logg.LevelWarn: color.New(color.FgYellow), logg.LevelError: color.New(color.FgRed), } // levelString mapping. var levelString = [...]string{ logg.LevelTrace: "TRACE", logg.LevelDebug: "DEBUG", logg.LevelInfo: "INFO ", logg.LevelWarn: "WARN ", logg.LevelError: "ERROR", } // newDefaultHandler handler. func newDefaultHandler(outWriter, errWriter io.Writer) logg.Handler { return &defaultHandler{ outWriter: outWriter, errWriter: errWriter, Padding: 0, } } // Default Handler implementation. // Based on https://github.com/apex/log/blob/master/handlers/cli/cli.go type defaultHandler struct { mu sync.Mutex outWriter io.Writer // Defaults to os.Stdout. errWriter io.Writer // Defaults to os.Stderr. Padding int } // HandleLog implements logg.Handler. func (h *defaultHandler) HandleLog(e *logg.Entry) error { color := levelColor[e.Level] level := levelString[e.Level] h.mu.Lock() defer h.mu.Unlock() var w io.Writer if e.Level > logg.LevelInfo { w = h.errWriter } else { w = h.outWriter } var prefix string for _, field := range e.Fields { if field.Name == FieldNameCmd { prefix = fmt.Sprint(field.Value) break } } if prefix != "" { prefix = prefix + ": " } color.Fprintf(w, "%s %s%s", fmt.Sprintf("%*s", h.Padding+1, level), color.Sprint(prefix), e.Message) for _, field := range e.Fields { if strings.HasPrefix(field.Name, reservedFieldNamePrefix) { continue } fmt.Fprintf(w, " %s %v", color.Sprint(field.Name), field.Value) } fmt.Fprintln(w) return nil } hugo-0.131.0/common/loggers/handlersmisc.go000066400000000000000000000065571465312036400205740ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. package loggers import ( "fmt" "strings" "sync" "github.com/bep/logg" "github.com/gohugoio/hugo/common/hashing" ) // PanicOnWarningHook panics on warnings. var PanicOnWarningHook = func(e *logg.Entry) error { if e.Level != logg.LevelWarn { return nil } panic(e.Message) } func newLogLevelCounter() *logLevelCounter { return &logLevelCounter{ counters: make(map[logg.Level]int), } } func newLogOnceHandler(threshold logg.Level) *logOnceHandler { return &logOnceHandler{ threshold: threshold, seen: make(map[uint64]bool), } } func newStopHandler(h ...logg.Handler) *stopHandler { return &stopHandler{ handlers: h, } } func newSuppressStatementsHandler(statements map[string]bool) *suppressStatementsHandler { return &suppressStatementsHandler{ statements: statements, } } type logLevelCounter struct { mu sync.RWMutex counters map[logg.Level]int } func (h *logLevelCounter) HandleLog(e *logg.Entry) error { h.mu.Lock() defer h.mu.Unlock() h.counters[e.Level]++ return nil } var errStop = fmt.Errorf("stop") type logOnceHandler struct { threshold logg.Level mu sync.Mutex seen map[uint64]bool } func (h *logOnceHandler) HandleLog(e *logg.Entry) error { if e.Level < h.threshold { // We typically only want to enable this for warnings and above. // The common use case is that many go routines may log the same error. return nil } h.mu.Lock() defer h.mu.Unlock() hash := hashing.HashUint64(e.Level, e.Message, e.Fields) if h.seen[hash] { return errStop } h.seen[hash] = true return nil } func (h *logOnceHandler) reset() { h.mu.Lock() defer h.mu.Unlock() h.seen = make(map[uint64]bool) } type stopHandler struct { handlers []logg.Handler } // HandleLog implements logg.Handler. func (h *stopHandler) HandleLog(e *logg.Entry) error { for _, handler := range h.handlers { if err := handler.HandleLog(e); err != nil { if err == errStop { return nil } return err } } return nil } type suppressStatementsHandler struct { statements map[string]bool } func (h *suppressStatementsHandler) HandleLog(e *logg.Entry) error { for _, field := range e.Fields { if field.Name == FieldNameStatementID { if h.statements[field.Value.(string)] { return errStop } } } return nil } // whiteSpaceTrimmer creates a new log handler that trims whitespace from log messages and string fields. func whiteSpaceTrimmer() logg.Handler { return logg.HandlerFunc(func(e *logg.Entry) error { e.Message = strings.TrimSpace(e.Message) for i, field := range e.Fields { if s, ok := field.Value.(string); ok { e.Fields[i].Value = strings.TrimSpace(s) } } return nil }) } hugo-0.131.0/common/loggers/handlerterminal.go000066400000000000000000000043011465312036400212520ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. package loggers import ( "fmt" "io" "strings" "sync" "github.com/bep/logg" ) // newNoColoursHandler creates a new NoColoursHandler func newNoColoursHandler(outWriter, errWriter io.Writer, noLevelPrefix bool, predicate func(*logg.Entry) bool) *noColoursHandler { if predicate == nil { predicate = func(e *logg.Entry) bool { return true } } return &noColoursHandler{ noLevelPrefix: noLevelPrefix, outWriter: outWriter, errWriter: errWriter, predicate: predicate, } } type noColoursHandler struct { mu sync.Mutex outWriter io.Writer // Defaults to os.Stdout. errWriter io.Writer // Defaults to os.Stderr. predicate func(*logg.Entry) bool noLevelPrefix bool } func (h *noColoursHandler) HandleLog(e *logg.Entry) error { if !h.predicate(e) { return nil } h.mu.Lock() defer h.mu.Unlock() var w io.Writer if e.Level > logg.LevelInfo { w = h.errWriter } else { w = h.outWriter } var prefix string for _, field := range e.Fields { if field.Name == FieldNameCmd { prefix = fmt.Sprint(field.Value) break } } if prefix != "" { prefix = prefix + ": " } if h.noLevelPrefix { fmt.Fprintf(w, "%s%s", prefix, e.Message) } else { fmt.Fprintf(w, "%s %s%s", levelString[e.Level], prefix, e.Message) } for _, field := range e.Fields { if strings.HasPrefix(field.Name, reservedFieldNamePrefix) { continue } fmt.Fprintf(w, " %s %v", field.Name, field.Value) } fmt.Fprintln(w) return nil } hugo-0.131.0/common/loggers/logger.go000066400000000000000000000221421465312036400173630ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. package loggers import ( "fmt" "io" "os" "strings" "time" "github.com/bep/logg" "github.com/bep/logg/handlers/multi" "github.com/gohugoio/hugo/common/terminal" ) var ( reservedFieldNamePrefix = "__h_field_" // FieldNameCmd is the name of the field that holds the command name. FieldNameCmd = reservedFieldNamePrefix + "_cmd" // Used to suppress statements. FieldNameStatementID = reservedFieldNamePrefix + "__h_field_statement_id" ) // Options defines options for the logger. type Options struct { Level logg.Level Stdout io.Writer Stderr io.Writer DistinctLevel logg.Level StoreErrors bool HandlerPost func(e *logg.Entry) error SuppressStatements map[string]bool } // New creates a new logger with the given options. func New(opts Options) Logger { if opts.Stdout == nil { opts.Stdout = os.Stdout } if opts.Stderr == nil { opts.Stderr = os.Stdout } if opts.Level == 0 { opts.Level = logg.LevelWarn } var logHandler logg.Handler if terminal.PrintANSIColors(os.Stdout) { logHandler = newDefaultHandler(opts.Stdout, opts.Stderr) } else { logHandler = newNoColoursHandler(opts.Stdout, opts.Stderr, false, nil) } errorsw := &strings.Builder{} logCounters := newLogLevelCounter() handlers := []logg.Handler{ logCounters, } if opts.Level == logg.LevelTrace { // Trace is used during development only, and it's useful to // only see the trace messages. handlers = append(handlers, logg.HandlerFunc(func(e *logg.Entry) error { if e.Level != logg.LevelTrace { return logg.ErrStopLogEntry } return nil }), ) } handlers = append(handlers, whiteSpaceTrimmer(), logHandler) if opts.HandlerPost != nil { var hookHandler logg.HandlerFunc = func(e *logg.Entry) error { opts.HandlerPost(e) return nil } handlers = append(handlers, hookHandler) } if opts.StoreErrors { h := newNoColoursHandler(io.Discard, errorsw, true, func(e *logg.Entry) bool { return e.Level >= logg.LevelError }) handlers = append(handlers, h) } logHandler = multi.New(handlers...) var logOnce *logOnceHandler if opts.DistinctLevel != 0 { logOnce = newLogOnceHandler(opts.DistinctLevel) logHandler = newStopHandler(logOnce, logHandler) } if opts.SuppressStatements != nil && len(opts.SuppressStatements) > 0 { logHandler = newStopHandler(newSuppressStatementsHandler(opts.SuppressStatements), logHandler) } logger := logg.New( logg.Options{ Level: opts.Level, Handler: logHandler, }, ) l := logger.WithLevel(opts.Level) reset := func() { logCounters.mu.Lock() defer logCounters.mu.Unlock() logCounters.counters = make(map[logg.Level]int) errorsw.Reset() if logOnce != nil { logOnce.reset() } } return &logAdapter{ logCounters: logCounters, errors: errorsw, reset: reset, out: opts.Stdout, level: opts.Level, logger: logger, tracel: l.WithLevel(logg.LevelTrace), debugl: l.WithLevel(logg.LevelDebug), infol: l.WithLevel(logg.LevelInfo), warnl: l.WithLevel(logg.LevelWarn), errorl: l.WithLevel(logg.LevelError), } } // NewDefault creates a new logger with the default options. func NewDefault() Logger { opts := Options{ DistinctLevel: logg.LevelWarn, Level: logg.LevelWarn, Stdout: os.Stdout, Stderr: os.Stdout, } return New(opts) } func NewTrace() Logger { opts := Options{ DistinctLevel: logg.LevelWarn, Level: logg.LevelTrace, Stdout: os.Stdout, Stderr: os.Stdout, } return New(opts) } func LevelLoggerToWriter(l logg.LevelLogger) io.Writer { return logWriter{l: l} } type Logger interface { Debug() logg.LevelLogger Debugf(format string, v ...any) Debugln(v ...any) Error() logg.LevelLogger Errorf(format string, v ...any) Erroridf(id, format string, v ...any) Errorln(v ...any) Errors() string Info() logg.LevelLogger InfoCommand(command string) logg.LevelLogger Infof(format string, v ...any) Infoln(v ...any) Level() logg.Level LoggCount(logg.Level) int Logger() logg.Logger Out() io.Writer Printf(format string, v ...any) Println(v ...any) PrintTimerIfDelayed(start time.Time, name string) Reset() Warn() logg.LevelLogger WarnCommand(command string) logg.LevelLogger Warnf(format string, v ...any) Warnidf(id, format string, v ...any) Warnln(v ...any) Deprecatef(fail bool, format string, v ...any) Trace(s logg.StringFunc) } type logAdapter struct { logCounters *logLevelCounter errors *strings.Builder reset func() out io.Writer level logg.Level logger logg.Logger tracel logg.LevelLogger debugl logg.LevelLogger infol logg.LevelLogger warnl logg.LevelLogger errorl logg.LevelLogger } func (l *logAdapter) Debug() logg.LevelLogger { return l.debugl } func (l *logAdapter) Debugf(format string, v ...any) { l.debugl.Logf(format, v...) } func (l *logAdapter) Debugln(v ...any) { l.debugl.Logf(l.sprint(v...)) } func (l *logAdapter) Info() logg.LevelLogger { return l.infol } func (l *logAdapter) InfoCommand(command string) logg.LevelLogger { return l.infol.WithField(FieldNameCmd, command) } func (l *logAdapter) Infof(format string, v ...any) { l.infol.Logf(format, v...) } func (l *logAdapter) Infoln(v ...any) { l.infol.Logf(l.sprint(v...)) } func (l *logAdapter) Level() logg.Level { return l.level } func (l *logAdapter) LoggCount(level logg.Level) int { l.logCounters.mu.RLock() defer l.logCounters.mu.RUnlock() return l.logCounters.counters[level] } func (l *logAdapter) Logger() logg.Logger { return l.logger } func (l *logAdapter) Out() io.Writer { return l.out } // PrintTimerIfDelayed prints a time statement to the FEEDBACK logger // if considerable time is spent. func (l *logAdapter) PrintTimerIfDelayed(start time.Time, name string) { elapsed := time.Since(start) milli := int(1000 * elapsed.Seconds()) if milli < 500 { return } l.Printf("%s in %v ms", name, milli) } func (l *logAdapter) Printf(format string, v ...any) { // Add trailing newline if not present. if !strings.HasSuffix(format, "\n") { format += "\n" } fmt.Fprintf(l.out, format, v...) } func (l *logAdapter) Println(v ...any) { fmt.Fprintln(l.out, v...) } func (l *logAdapter) Reset() { l.reset() } func (l *logAdapter) Warn() logg.LevelLogger { return l.warnl } func (l *logAdapter) Warnf(format string, v ...any) { l.warnl.Logf(format, v...) } func (l *logAdapter) WarnCommand(command string) logg.LevelLogger { return l.warnl.WithField(FieldNameCmd, command) } func (l *logAdapter) Warnln(v ...any) { l.warnl.Logf(l.sprint(v...)) } func (l *logAdapter) Error() logg.LevelLogger { return l.errorl } func (l *logAdapter) Errorf(format string, v ...any) { l.errorl.Logf(format, v...) } func (l *logAdapter) Errorln(v ...any) { l.errorl.Logf(l.sprint(v...)) } func (l *logAdapter) Errors() string { return l.errors.String() } func (l *logAdapter) Erroridf(id, format string, v ...any) { id = strings.ToLower(id) format += l.idfInfoStatement("error", id, format) l.errorl.WithField(FieldNameStatementID, id).Logf(format, v...) } func (l *logAdapter) Warnidf(id, format string, v ...any) { id = strings.ToLower(id) format += l.idfInfoStatement("warning", id, format) l.warnl.WithField(FieldNameStatementID, id).Logf(format, v...) } func (l *logAdapter) idfInfoStatement(what, id, format string) string { return fmt.Sprintf("\nYou can suppress this %s by adding the following to your site configuration:\nignoreLogs = ['%s']", what, id) } func (l *logAdapter) Trace(s logg.StringFunc) { l.tracel.Log(s) } func (l *logAdapter) sprint(v ...any) string { return strings.TrimRight(fmt.Sprintln(v...), "\n") } func (l *logAdapter) Deprecatef(fail bool, format string, v ...any) { format = "DEPRECATED: " + format if fail { l.errorl.Logf(format, v...) } else { l.warnl.Logf(format, v...) } } type logWriter struct { l logg.LevelLogger } func (w logWriter) Write(p []byte) (n int, err error) { w.l.Log(logg.String(string(p))) return len(p), nil } func TimeTrackf(l logg.LevelLogger, start time.Time, fields logg.Fields, format string, a ...any) { elapsed := time.Since(start) if fields != nil { l = l.WithFields(fields) } l.WithField("duration", elapsed).Logf(format, a...) } func TimeTrackfn(fn func() (logg.LevelLogger, error)) error { start := time.Now() l, err := fn() elapsed := time.Since(start) l.WithField("duration", elapsed).Logf("") return err } hugo-0.131.0/common/loggers/logger_test.go000066400000000000000000000066601465312036400204310ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. package loggers_test import ( "io" "strings" "testing" "github.com/bep/logg" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/loggers" ) func TestLogDistinct(t *testing.T) { c := qt.New(t) opts := loggers.Options{ DistinctLevel: logg.LevelWarn, StoreErrors: true, Stdout: io.Discard, Stderr: io.Discard, } l := loggers.New(opts) for i := 0; i < 10; i++ { l.Errorln("error 1") l.Errorln("error 2") l.Warnln("warn 1") } c.Assert(strings.Count(l.Errors(), "error 1"), qt.Equals, 1) c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) c.Assert(l.LoggCount(logg.LevelWarn), qt.Equals, 1) } func TestHookLast(t *testing.T) { c := qt.New(t) opts := loggers.Options{ HandlerPost: func(e *logg.Entry) error { panic(e.Message) }, Stdout: io.Discard, Stderr: io.Discard, } l := loggers.New(opts) c.Assert(func() { l.Warnln("warn 1") }, qt.PanicMatches, "warn 1") } func TestOptionStoreErrors(t *testing.T) { c := qt.New(t) var sb strings.Builder opts := loggers.Options{ StoreErrors: true, Stderr: &sb, Stdout: &sb, } l := loggers.New(opts) l.Errorln("error 1") l.Errorln("error 2") errorsStr := l.Errors() c.Assert(errorsStr, qt.Contains, "error 1") c.Assert(errorsStr, qt.Not(qt.Contains), "ERROR") c.Assert(sb.String(), qt.Contains, "error 1") c.Assert(sb.String(), qt.Contains, "ERROR") } func TestLogCount(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, } l := loggers.New(opts) l.Errorln("error 1") l.Errorln("error 2") l.Warnln("warn 1") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) c.Assert(l.LoggCount(logg.LevelWarn), qt.Equals, 1) c.Assert(l.LoggCount(logg.LevelInfo), qt.Equals, 0) } func TestSuppressStatements(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, SuppressStatements: map[string]bool{ "error-1": true, }, } l := loggers.New(opts) l.Error().WithField(loggers.FieldNameStatementID, "error-1").Logf("error 1") l.Errorln("error 2") errorsStr := l.Errors() c.Assert(errorsStr, qt.Not(qt.Contains), "error 1") c.Assert(errorsStr, qt.Contains, "error 2") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 1) } func TestReset(t *testing.T) { c := qt.New(t) opts := loggers.Options{ StoreErrors: true, DistinctLevel: logg.LevelWarn, Stdout: io.Discard, Stderr: io.Discard, } l := loggers.New(opts) for i := 0; i < 3; i++ { l.Errorln("error 1") l.Errorln("error 2") l.Errorln("error 1") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 2) l.Reset() errorsStr := l.Errors() c.Assert(errorsStr, qt.Equals, "") c.Assert(l.LoggCount(logg.LevelError), qt.Equals, 0) } } hugo-0.131.0/common/loggers/loggerglobal.go000066400000000000000000000024621465312036400205470ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // Some functions in this file (see comments) is based on the Go source code, // copyright The Go Authors and governed by a BSD-style license. // // 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. package loggers import ( "sync" "github.com/bep/logg" ) func InitGlobalLogger(level logg.Level, panicOnWarnings bool) { logMu.Lock() defer logMu.Unlock() var logHookLast func(e *logg.Entry) error if panicOnWarnings { logHookLast = PanicOnWarningHook } log = New( Options{ Level: level, DistinctLevel: logg.LevelInfo, HandlerPost: logHookLast, }, ) } var logMu sync.Mutex func Log() Logger { logMu.Lock() defer logMu.Unlock() return log } // The global logger. var log Logger func init() { InitGlobalLogger(logg.LevelWarn, false) } hugo-0.131.0/common/maps/000077500000000000000000000000001465312036400150525ustar00rootroot00000000000000hugo-0.131.0/common/maps/cache.go000066400000000000000000000052111465312036400164430ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package maps import "sync" // Cache is a simple thread safe cache backed by a map. type Cache[K comparable, T any] struct { m map[K]T sync.RWMutex } // NewCache creates a new Cache. func NewCache[K comparable, T any]() *Cache[K, T] { return &Cache[K, T]{m: make(map[K]T)} } // Delete deletes the given key from the cache. // If c is nil, this method is a no-op. func (c *Cache[K, T]) Get(key K) (T, bool) { if c == nil { var zero T return zero, false } c.RLock() v, found := c.m[key] c.RUnlock() return v, found } // GetOrCreate gets the value for the given key if it exists, or creates it if not. func (c *Cache[K, T]) GetOrCreate(key K, create func() (T, error)) (T, error) { c.RLock() v, found := c.m[key] c.RUnlock() if found { return v, nil } c.Lock() defer c.Unlock() v, found = c.m[key] if found { return v, nil } v, err := create() if err != nil { return v, err } c.m[key] = v return v, nil } // Set sets the given key to the given value. func (c *Cache[K, T]) Set(key K, value T) { c.Lock() c.m[key] = value c.Unlock() } // ForEeach calls the given function for each key/value pair in the cache. func (c *Cache[K, T]) ForEeach(f func(K, T)) { c.RLock() defer c.RUnlock() for k, v := range c.m { f(k, v) } } func (c *Cache[K, T]) Drain() map[K]T { c.Lock() m := c.m c.m = make(map[K]T) c.Unlock() return m } func (c *Cache[K, T]) Len() int { c.RLock() defer c.RUnlock() return len(c.m) } func (c *Cache[K, T]) Reset() { c.Lock() c.m = make(map[K]T) c.Unlock() } // SliceCache is a simple thread safe cache backed by a map. type SliceCache[T any] struct { m map[string][]T sync.RWMutex } func NewSliceCache[T any]() *SliceCache[T] { return &SliceCache[T]{m: make(map[string][]T)} } func (c *SliceCache[T]) Get(key string) ([]T, bool) { c.RLock() v, found := c.m[key] c.RUnlock() return v, found } func (c *SliceCache[T]) Append(key string, values ...T) { c.Lock() c.m[key] = append(c.m[key], values...) c.Unlock() } func (c *SliceCache[T]) Reset() { c.Lock() c.m = make(map[string][]T) c.Unlock() } hugo-0.131.0/common/maps/maps.go000066400000000000000000000127461465312036400163530ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package maps import ( "fmt" "strings" "github.com/gohugoio/hugo/common/types" "github.com/gobwas/glob" "github.com/spf13/cast" ) // ToStringMapE converts in to map[string]interface{}. func ToStringMapE(in any) (map[string]any, error) { switch vv := in.(type) { case Params: return vv, nil case map[string]string: m := map[string]any{} for k, v := range vv { m[k] = v } return m, nil default: return cast.ToStringMapE(in) } } // ToParamsAndPrepare converts in to Params and prepares it for use. // If in is nil, an empty map is returned. // See PrepareParams. func ToParamsAndPrepare(in any) (Params, error) { if types.IsNil(in) { return Params{}, nil } m, err := ToStringMapE(in) if err != nil { return nil, err } PrepareParams(m) return m, nil } // MustToParamsAndPrepare calls ToParamsAndPrepare and panics if it fails. func MustToParamsAndPrepare(in any) Params { p, err := ToParamsAndPrepare(in) if err != nil { panic(fmt.Sprintf("cannot convert %T to maps.Params: %s", in, err)) } return p } // ToStringMap converts in to map[string]interface{}. func ToStringMap(in any) map[string]any { m, _ := ToStringMapE(in) return m } // ToStringMapStringE converts in to map[string]string. func ToStringMapStringE(in any) (map[string]string, error) { m, err := ToStringMapE(in) if err != nil { return nil, err } return cast.ToStringMapStringE(m) } // ToStringMapString converts in to map[string]string. func ToStringMapString(in any) map[string]string { m, _ := ToStringMapStringE(in) return m } // ToStringMapBool converts in to bool. func ToStringMapBool(in any) map[string]bool { m, _ := ToStringMapE(in) return cast.ToStringMapBool(m) } // ToSliceStringMap converts in to []map[string]interface{}. func ToSliceStringMap(in any) ([]map[string]any, error) { switch v := in.(type) { case []map[string]any: return v, nil case Params: return []map[string]any{v}, nil case []any: var s []map[string]any for _, entry := range v { if vv, ok := entry.(map[string]any); ok { s = append(s, vv) } } return s, nil default: return nil, fmt.Errorf("unable to cast %#v of type %T to []map[string]interface{}", in, in) } } // LookupEqualFold finds key in m with case insensitive equality checks. func LookupEqualFold[T any | string](m map[string]T, key string) (T, string, bool) { if v, found := m[key]; found { return v, key, true } for k, v := range m { if strings.EqualFold(k, key) { return v, k, true } } var s T return s, "", false } // MergeShallow merges src into dst, but only if the key does not already exist in dst. // The keys are compared case insensitively. func MergeShallow(dst, src map[string]any) { for k, v := range src { found := false for dk := range dst { if strings.EqualFold(dk, k) { found = true break } } if !found { dst[k] = v } } } type keyRename struct { pattern glob.Glob newKey string } // KeyRenamer supports renaming of keys in a map. type KeyRenamer struct { renames []keyRename } // NewKeyRenamer creates a new KeyRenamer given a list of pattern and new key // value pairs. func NewKeyRenamer(patternKeys ...string) (KeyRenamer, error) { var renames []keyRename for i := 0; i < len(patternKeys); i += 2 { g, err := glob.Compile(strings.ToLower(patternKeys[i]), '/') if err != nil { return KeyRenamer{}, err } renames = append(renames, keyRename{pattern: g, newKey: patternKeys[i+1]}) } return KeyRenamer{renames: renames}, nil } func (r KeyRenamer) getNewKey(keyPath string) string { for _, matcher := range r.renames { if matcher.pattern.Match(keyPath) { return matcher.newKey } } return "" } // Rename renames the keys in the given map according // to the patterns in the current KeyRenamer. func (r KeyRenamer) Rename(m map[string]any) { r.renamePath("", m) } func (KeyRenamer) keyPath(k1, k2 string) string { k1, k2 = strings.ToLower(k1), strings.ToLower(k2) if k1 == "" { return k2 } return k1 + "/" + k2 } func (r KeyRenamer) renamePath(parentKeyPath string, m map[string]any) { for k, v := range m { keyPath := r.keyPath(parentKeyPath, k) switch vv := v.(type) { case map[any]any: r.renamePath(keyPath, cast.ToStringMap(vv)) case map[string]any: r.renamePath(keyPath, vv) } newKey := r.getNewKey(keyPath) if newKey != "" { delete(m, k) m[newKey] = v } } } // ConvertFloat64WithNoDecimalsToInt converts float64 values with no decimals to int recursively. func ConvertFloat64WithNoDecimalsToInt(m map[string]any) { for k, v := range m { switch vv := v.(type) { case float64: if v == float64(int64(vv)) { m[k] = int64(vv) } case map[string]any: ConvertFloat64WithNoDecimalsToInt(vv) case []any: for i, vvv := range vv { switch vvvv := vvv.(type) { case float64: if vvv == float64(int64(vvvv)) { vv[i] = int64(vvvv) } case map[string]any: ConvertFloat64WithNoDecimalsToInt(vvvv) } } } } } hugo-0.131.0/common/maps/maps_test.go000066400000000000000000000071571465312036400174120ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package maps import ( "fmt" "reflect" "testing" qt "github.com/frankban/quicktest" ) func TestPrepareParams(t *testing.T) { tests := []struct { input Params expected Params }{ { map[string]any{ "abC": 32, }, Params{ "abc": 32, }, }, { map[string]any{ "abC": 32, "deF": map[any]any{ 23: "A value", 24: map[string]any{ "AbCDe": "A value", "eFgHi": "Another value", }, }, "gHi": map[string]any{ "J": 25, }, "jKl": map[string]string{ "M": "26", }, }, Params{ "abc": 32, "def": Params{ "23": "A value", "24": Params{ "abcde": "A value", "efghi": "Another value", }, }, "ghi": Params{ "j": 25, }, "jkl": Params{ "m": "26", }, }, }, } for i, test := range tests { t.Run(fmt.Sprint(i), func(t *testing.T) { // PrepareParams modifies input. PrepareParams(test.input) if !reflect.DeepEqual(test.expected, test.input) { t.Errorf("[%d] Expected\n%#v, got\n%#v\n", i, test.expected, test.input) } }) } } func TestToSliceStringMap(t *testing.T) { c := qt.New(t) tests := []struct { input any expected []map[string]any }{ { input: []map[string]any{ {"abc": 123}, }, expected: []map[string]any{ {"abc": 123}, }, }, { input: []any{ map[string]any{ "def": 456, }, }, expected: []map[string]any{ {"def": 456}, }, }, } for _, test := range tests { v, err := ToSliceStringMap(test.input) c.Assert(err, qt.IsNil) c.Assert(v, qt.DeepEquals, test.expected) } } func TestToParamsAndPrepare(t *testing.T) { c := qt.New(t) _, err := ToParamsAndPrepare(map[string]any{"A": "av"}) c.Assert(err, qt.IsNil) params, err := ToParamsAndPrepare(nil) c.Assert(err, qt.IsNil) c.Assert(params, qt.DeepEquals, Params{}) } func TestRenameKeys(t *testing.T) { c := qt.New(t) m := map[string]any{ "a": 32, "ren1": "m1", "ren2": "m1_2", "sub": map[string]any{ "subsub": map[string]any{ "REN1": "m2", "ren2": "m2_2", }, }, "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, } expected := map[string]any{ "a": 32, "new1": "m1", "new2": "m1_2", "sub": map[string]any{ "subsub": map[string]any{ "new1": "m2", "ren2": "m2_2", }, }, "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, } renamer, err := NewKeyRenamer( "{ren1,sub/*/ren1}", "new1", "{Ren2,sub/ren2}", "new2", ) c.Assert(err, qt.IsNil) renamer.Rename(m) if !reflect.DeepEqual(expected, m) { t.Errorf("Expected\n%#v, got\n%#v\n", expected, m) } } func TestLookupEqualFold(t *testing.T) { c := qt.New(t) m1 := map[string]any{ "a": "av", "B": "bv", } v, k, found := LookupEqualFold(m1, "b") c.Assert(found, qt.IsTrue) c.Assert(v, qt.Equals, "bv") c.Assert(k, qt.Equals, "B") m2 := map[string]string{ "a": "av", "B": "bv", } v, k, found = LookupEqualFold(m2, "b") c.Assert(found, qt.IsTrue) c.Assert(k, qt.Equals, "B") c.Assert(v, qt.Equals, "bv") } hugo-0.131.0/common/maps/params.go000066400000000000000000000175721465312036400167000ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package maps import ( "fmt" "strings" "github.com/spf13/cast" ) // Params is a map where all keys are lower case. type Params map[string]any // KeyParams is an utility struct for the WalkParams method. type KeyParams struct { Key string Params Params } // GetNested does a lower case and nested search in this map. // It will return nil if none found. // Make all of these methods internal somehow. func (p Params) GetNested(indices ...string) any { v, _, _ := getNested(p, indices) return v } // SetParams overwrites values in dst with values in src for common or new keys. // This is done recursively. func SetParams(dst, src Params) { for k, v := range src { vv, found := dst[k] if !found { dst[k] = v } else { switch vvv := vv.(type) { case Params: if pv, ok := v.(Params); ok { SetParams(vvv, pv) } else { dst[k] = v } default: dst[k] = v } } } } // IsZero returns true if p is considered empty. func (p Params) IsZero() bool { if len(p) == 0 { return true } if len(p) > 1 { return false } for k := range p { return k == MergeStrategyKey } return false } // MergeParamsWithStrategy transfers values from src to dst for new keys using the merge strategy given. // This is done recursively. func MergeParamsWithStrategy(strategy string, dst, src Params) { dst.merge(ParamsMergeStrategy(strategy), src) } // MergeParams transfers values from src to dst for new keys using the merge encoded in dst. // This is done recursively. func MergeParams(dst, src Params) { ms, _ := dst.GetMergeStrategy() dst.merge(ms, src) } func (p Params) merge(ps ParamsMergeStrategy, pp Params) { ns, found := p.GetMergeStrategy() ms := ns if !found && ps != "" { ms = ps } noUpdate := ms == ParamsMergeStrategyNone noUpdate = noUpdate || (ps != "" && ps == ParamsMergeStrategyShallow) for k, v := range pp { if k == MergeStrategyKey { continue } vv, found := p[k] if found { // Key matches, if both sides are Params, we try to merge. if vvv, ok := vv.(Params); ok { if pv, ok := v.(Params); ok { vvv.merge(ms, pv) } } } else if !noUpdate { p[k] = v } } } // For internal use. func (p Params) GetMergeStrategy() (ParamsMergeStrategy, bool) { if v, found := p[MergeStrategyKey]; found { if s, ok := v.(ParamsMergeStrategy); ok { return s, true } } return ParamsMergeStrategyShallow, false } // For internal use. func (p Params) DeleteMergeStrategy() bool { if _, found := p[MergeStrategyKey]; found { delete(p, MergeStrategyKey) return true } return false } // For internal use. func (p Params) SetMergeStrategy(s ParamsMergeStrategy) { switch s { case ParamsMergeStrategyDeep, ParamsMergeStrategyNone, ParamsMergeStrategyShallow: default: panic(fmt.Sprintf("invalid merge strategy %q", s)) } p[MergeStrategyKey] = s } func getNested(m map[string]any, indices []string) (any, string, map[string]any) { if len(indices) == 0 { return nil, "", nil } first := indices[0] v, found := m[strings.ToLower(cast.ToString(first))] if !found { if len(indices) == 1 { return nil, first, m } return nil, "", nil } if len(indices) == 1 { return v, first, m } switch m2 := v.(type) { case Params: return getNested(m2, indices[1:]) case map[string]any: return getNested(m2, indices[1:]) default: return nil, "", nil } } // GetNestedParam gets the first match of the keyStr in the candidates given. // It will first try the exact match and then try to find it as a nested map value, // using the given separator, e.g. "mymap.name". // It assumes that all the maps given have lower cased keys. func GetNestedParam(keyStr, separator string, candidates ...Params) (any, error) { keyStr = strings.ToLower(keyStr) // Try exact match first for _, m := range candidates { if v, ok := m[keyStr]; ok { return v, nil } } keySegments := strings.Split(keyStr, separator) for _, m := range candidates { if v := m.GetNested(keySegments...); v != nil { return v, nil } } return nil, nil } func GetNestedParamFn(keyStr, separator string, lookupFn func(key string) any) (any, string, map[string]any, error) { keySegments := strings.Split(keyStr, separator) if len(keySegments) == 0 { return nil, "", nil, nil } first := lookupFn(keySegments[0]) if first == nil { return nil, "", nil, nil } if len(keySegments) == 1 { return first, keySegments[0], nil, nil } switch m := first.(type) { case map[string]any: v, key, owner := getNested(m, keySegments[1:]) return v, key, owner, nil case Params: v, key, owner := getNested(m, keySegments[1:]) return v, key, owner, nil } return nil, "", nil, nil } // ParamsMergeStrategy tells what strategy to use in Params.Merge. type ParamsMergeStrategy string const ( // Do not merge. ParamsMergeStrategyNone ParamsMergeStrategy = "none" // Only add new keys. ParamsMergeStrategyShallow ParamsMergeStrategy = "shallow" // Add new keys, merge existing. ParamsMergeStrategyDeep ParamsMergeStrategy = "deep" MergeStrategyKey = "_merge" ) // CleanConfigStringMapString removes any processing instructions from m, // m will never be modified. func CleanConfigStringMapString(m map[string]string) map[string]string { if len(m) == 0 { return m } if _, found := m[MergeStrategyKey]; !found { return m } // Create a new map and copy all the keys except the merge strategy key. m2 := make(map[string]string, len(m)-1) for k, v := range m { if k != MergeStrategyKey { m2[k] = v } } return m2 } // CleanConfigStringMap is the same as CleanConfigStringMapString but for // map[string]any. func CleanConfigStringMap(m map[string]any) map[string]any { if len(m) == 0 { return m } if _, found := m[MergeStrategyKey]; !found { return m } // Create a new map and copy all the keys except the merge strategy key. m2 := make(map[string]any, len(m)-1) for k, v := range m { if k != MergeStrategyKey { m2[k] = v } switch v2 := v.(type) { case map[string]any: m2[k] = CleanConfigStringMap(v2) case Params: var p Params = CleanConfigStringMap(v2) m2[k] = p case map[string]string: m2[k] = CleanConfigStringMapString(v2) } } return m2 } func toMergeStrategy(v any) ParamsMergeStrategy { s := ParamsMergeStrategy(cast.ToString(v)) switch s { case ParamsMergeStrategyDeep, ParamsMergeStrategyNone, ParamsMergeStrategyShallow: return s default: return ParamsMergeStrategyDeep } } // PrepareParams // * makes all the keys in the given map lower cased and will do so // * This will modify the map given. // * Any nested map[interface{}]interface{}, map[string]interface{},map[string]string will be converted to Params. // * Any _merge value will be converted to proper type and value. func PrepareParams(m Params) { for k, v := range m { var retyped bool lKey := strings.ToLower(k) if lKey == MergeStrategyKey { v = toMergeStrategy(v) retyped = true } else { switch vv := v.(type) { case map[any]any: var p Params = cast.ToStringMap(v) v = p PrepareParams(p) retyped = true case map[string]any: var p Params = v.(map[string]any) v = p PrepareParams(p) retyped = true case map[string]string: p := make(Params) for k, v := range vv { p[k] = v } v = p PrepareParams(p) retyped = true } } if retyped || k != lKey { delete(m, k) m[lKey] = v } } } hugo-0.131.0/common/maps/params_test.go000066400000000000000000000077011465312036400177300ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package maps import ( "testing" qt "github.com/frankban/quicktest" ) func TestGetNestedParam(t *testing.T) { m := map[string]any{ "string": "value", "first": 1, "with_underscore": 2, "nested": map[string]any{ "color": "blue", "nestednested": map[string]any{ "color": "green", }, }, } c := qt.New(t) must := func(keyStr, separator string, candidates ...Params) any { v, err := GetNestedParam(keyStr, separator, candidates...) c.Assert(err, qt.IsNil) return v } c.Assert(must("first", "_", m), qt.Equals, 1) c.Assert(must("First", "_", m), qt.Equals, 1) c.Assert(must("with_underscore", "_", m), qt.Equals, 2) c.Assert(must("nested_color", "_", m), qt.Equals, "blue") c.Assert(must("nested.nestednested.color", ".", m), qt.Equals, "green") c.Assert(must("string.name", ".", m), qt.IsNil) c.Assert(must("nested.foo", ".", m), qt.IsNil) } // https://github.com/gohugoio/hugo/issues/7903 func TestGetNestedParamFnNestedNewKey(t *testing.T) { c := qt.New(t) nested := map[string]any{ "color": "blue", } m := map[string]any{ "nested": nested, } existing, nestedKey, owner, err := GetNestedParamFn("nested.new", ".", func(key string) any { return m[key] }) c.Assert(err, qt.IsNil) c.Assert(existing, qt.IsNil) c.Assert(nestedKey, qt.Equals, "new") c.Assert(owner, qt.DeepEquals, nested) } func TestParamsSetAndMerge(t *testing.T) { c := qt.New(t) createParamsPair := func() (Params, Params) { p1 := Params{"a": "av", "c": "cv", "nested": Params{"al2": "al2v", "cl2": "cl2v"}} p2 := Params{"b": "bv", "a": "abv", "nested": Params{"bl2": "bl2v", "al2": "al2bv"}, MergeStrategyKey: ParamsMergeStrategyDeep} return p1, p2 } p1, p2 := createParamsPair() SetParams(p1, p2) c.Assert(p1, qt.DeepEquals, Params{ "a": "abv", "c": "cv", "nested": Params{ "al2": "al2bv", "cl2": "cl2v", "bl2": "bl2v", }, "b": "bv", MergeStrategyKey: ParamsMergeStrategyDeep, }) p1, p2 = createParamsPair() MergeParamsWithStrategy("", p1, p2) // Default is to do a shallow merge. c.Assert(p1, qt.DeepEquals, Params{ "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, "b": "bv", "a": "av", }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyNone) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "a": "av", "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyShallow) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "a": "av", "c": "cv", "nested": Params{ "al2": "al2v", "cl2": "cl2v", }, "b": "bv", }) p1, p2 = createParamsPair() p1.SetMergeStrategy(ParamsMergeStrategyDeep) MergeParamsWithStrategy("", p1, p2) p1.DeleteMergeStrategy() c.Assert(p1, qt.DeepEquals, Params{ "nested": Params{ "al2": "al2v", "cl2": "cl2v", "bl2": "bl2v", }, "b": "bv", "a": "av", "c": "cv", }) } func TestParamsIsZero(t *testing.T) { c := qt.New(t) var nilParams Params c.Assert(Params{}.IsZero(), qt.IsTrue) c.Assert(nilParams.IsZero(), qt.IsTrue) c.Assert(Params{"foo": "bar"}.IsZero(), qt.IsFalse) c.Assert(Params{"_merge": "foo", "foo": "bar"}.IsZero(), qt.IsFalse) c.Assert(Params{"_merge": "foo"}.IsZero(), qt.IsTrue) } hugo-0.131.0/common/maps/scratch.go000066400000000000000000000104341465312036400170320ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package maps import ( "reflect" "sort" "sync" "github.com/gohugoio/hugo/common/collections" "github.com/gohugoio/hugo/common/math" ) // Scratch is a writable context used for stateful operations in Page/Node rendering. type Scratch struct { values map[string]any mu sync.RWMutex } // Scratcher provides a scratching service. type Scratcher interface { // Scratch returns a "scratch pad" that can be used to store state. Scratch() *Scratch } type scratcher struct { s *Scratch } func (s scratcher) Scratch() *Scratch { return s.s } // NewScratcher creates a new Scratcher. func NewScratcher() Scratcher { return scratcher{s: NewScratch()} } // Add will, for single values, add (using the + operator) the addend to the existing addend (if found). // Supports numeric values and strings. // // If the first add for a key is an array or slice, then the next value(s) will be appended. func (c *Scratch) Add(key string, newAddend any) (string, error) { var newVal any c.mu.RLock() existingAddend, found := c.values[key] c.mu.RUnlock() if found { var err error addendV := reflect.TypeOf(existingAddend) if addendV.Kind() == reflect.Slice || addendV.Kind() == reflect.Array { newVal, err = collections.Append(existingAddend, newAddend) if err != nil { return "", err } } else { newVal, err = math.DoArithmetic(existingAddend, newAddend, '+') if err != nil { return "", err } } } else { newVal = newAddend } c.mu.Lock() c.values[key] = newVal c.mu.Unlock() return "", nil // have to return something to make it work with the Go templates } // Set stores a value with the given key in the Node context. // This value can later be retrieved with Get. func (c *Scratch) Set(key string, value any) string { c.mu.Lock() c.values[key] = value c.mu.Unlock() return "" } // Delete deletes the given key. func (c *Scratch) Delete(key string) string { c.mu.Lock() delete(c.values, key) c.mu.Unlock() return "" } // Get returns a value previously set by Add or Set. func (c *Scratch) Get(key string) any { c.mu.RLock() val := c.values[key] c.mu.RUnlock() return val } // Values returns the raw backing map. Note that you should just use // this method on the locally scoped Scratch instances you obtain via newScratch, not // .Page.Scratch etc., as that will lead to concurrency issues. func (c *Scratch) Values() map[string]any { c.mu.RLock() defer c.mu.RUnlock() return c.values } // SetInMap stores a value to a map with the given key in the Node context. // This map can later be retrieved with GetSortedMapValues. func (c *Scratch) SetInMap(key string, mapKey string, value any) string { c.mu.Lock() _, found := c.values[key] if !found { c.values[key] = make(map[string]any) } c.values[key].(map[string]any)[mapKey] = value c.mu.Unlock() return "" } // DeleteInMap deletes a value to a map with the given key in the Node context. func (c *Scratch) DeleteInMap(key string, mapKey string) string { c.mu.Lock() _, found := c.values[key] if found { delete(c.values[key].(map[string]any), mapKey) } c.mu.Unlock() return "" } // GetSortedMapValues returns a sorted map previously filled with SetInMap. func (c *Scratch) GetSortedMapValues(key string) any { c.mu.RLock() if c.values[key] == nil { c.mu.RUnlock() return nil } unsortedMap := c.values[key].(map[string]any) c.mu.RUnlock() var keys []string for mapKey := range unsortedMap { keys = append(keys, mapKey) } sort.Strings(keys) sortedArray := make([]any, len(unsortedMap)) for i, mapKey := range keys { sortedArray[i] = unsortedMap[mapKey] } return sortedArray } // NewScratch returns a new instance of Scratch. func NewScratch() *Scratch { return &Scratch{values: make(map[string]any)} } hugo-0.131.0/common/maps/scratch_test.go000066400000000000000000000122471465312036400200750ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package maps import ( "reflect" "sync" "testing" qt "github.com/frankban/quicktest" ) func TestScratchAdd(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Add("int1", 10) scratch.Add("int1", 20) scratch.Add("int2", 20) c.Assert(scratch.Get("int1"), qt.Equals, int64(30)) c.Assert(scratch.Get("int2"), qt.Equals, 20) scratch.Add("float1", float64(10.5)) scratch.Add("float1", float64(20.1)) c.Assert(scratch.Get("float1"), qt.Equals, float64(30.6)) scratch.Add("string1", "Hello ") scratch.Add("string1", "big ") scratch.Add("string1", "World!") c.Assert(scratch.Get("string1"), qt.Equals, "Hello big World!") scratch.Add("scratch", scratch) _, err := scratch.Add("scratch", scratch) m := scratch.Values() c.Assert(m, qt.HasLen, 5) if err == nil { t.Errorf("Expected error from invalid arithmetic") } } func TestScratchAddSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() _, err := scratch.Add("intSlice", []int{1, 2}) c.Assert(err, qt.IsNil) _, err = scratch.Add("intSlice", 3) c.Assert(err, qt.IsNil) sl := scratch.Get("intSlice") expected := []int{1, 2, 3} if !reflect.DeepEqual(expected, sl) { t.Errorf("Slice difference, go %q expected %q", sl, expected) } _, err = scratch.Add("intSlice", []int{4, 5}) c.Assert(err, qt.IsNil) sl = scratch.Get("intSlice") expected = []int{1, 2, 3, 4, 5} if !reflect.DeepEqual(expected, sl) { t.Errorf("Slice difference, go %q expected %q", sl, expected) } } // https://github.com/gohugoio/hugo/issues/5275 func TestScratchAddTypedSliceToInterfaceSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("slice", []any{}) _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) c.Assert(scratch.Get("slice"), qt.DeepEquals, []int{1, 2}) } // https://github.com/gohugoio/hugo/issues/5361 func TestScratchAddDifferentTypedSliceToInterfaceSlice(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("slice", []string{"foo"}) _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) c.Assert(scratch.Get("slice"), qt.DeepEquals, []any{"foo", 1, 2}) } func TestScratchSet(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("key", "val") c.Assert(scratch.Get("key"), qt.Equals, "val") } func TestScratchDelete(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.Set("key", "val") scratch.Delete("key") scratch.Add("key", "Lucy Parsons") c.Assert(scratch.Get("key"), qt.Equals, "Lucy Parsons") } // Issue #2005 func TestScratchInParallel(t *testing.T) { var wg sync.WaitGroup scratch := NewScratch() key := "counter" scratch.Set(key, int64(1)) for i := 1; i <= 10; i++ { wg.Add(1) go func(j int) { for k := 0; k < 10; k++ { newVal := int64(k + j) _, err := scratch.Add(key, newVal) if err != nil { t.Errorf("Got err %s", err) } scratch.Set(key, newVal) val := scratch.Get(key) if counter, ok := val.(int64); ok { if counter < 1 { t.Errorf("Got %d", counter) } } else { t.Errorf("Got %T", val) } } wg.Done() }(i) } wg.Wait() } func TestScratchGet(t *testing.T) { t.Parallel() scratch := NewScratch() nothing := scratch.Get("nothing") if nothing != nil { t.Errorf("Should not return anything, but got %v", nothing) } } func TestScratchSetInMap(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.SetInMap("key", "lux", "Lux") scratch.SetInMap("key", "abc", "Abc") scratch.SetInMap("key", "zyx", "Zyx") scratch.SetInMap("key", "abc", "Abc (updated)") scratch.SetInMap("key", "def", "Def") c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []any{0: "Abc (updated)", 1: "Def", 2: "Lux", 3: "Zyx"}) } func TestScratchDeleteInMap(t *testing.T) { t.Parallel() c := qt.New(t) scratch := NewScratch() scratch.SetInMap("key", "lux", "Lux") scratch.SetInMap("key", "abc", "Abc") scratch.SetInMap("key", "zyx", "Zyx") scratch.DeleteInMap("key", "abc") scratch.SetInMap("key", "def", "Def") scratch.DeleteInMap("key", "lmn") // Do nothing c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []any{0: "Def", 1: "Lux", 2: "Zyx"}) } func TestScratchGetSortedMapValues(t *testing.T) { t.Parallel() scratch := NewScratch() nothing := scratch.GetSortedMapValues("nothing") if nothing != nil { t.Errorf("Should not return anything, but got %v", nothing) } } func BenchmarkScratchGet(b *testing.B) { scratch := NewScratch() scratch.Add("A", 1) b.ResetTimer() for i := 0; i < b.N; i++ { scratch.Get("A") } } hugo-0.131.0/common/math/000077500000000000000000000000001465312036400150435ustar00rootroot00000000000000hugo-0.131.0/common/math/math.go000066400000000000000000000073311465312036400163270ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package math import ( "errors" "reflect" ) // DoArithmetic performs arithmetic operations (+,-,*,/) using reflection to // determine the type of the two terms. func DoArithmetic(a, b any, op rune) (any, error) { av := reflect.ValueOf(a) bv := reflect.ValueOf(b) var ai, bi int64 var af, bf float64 var au, bu uint64 switch av.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: ai = av.Int() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: bi = bv.Int() case reflect.Float32, reflect.Float64: af = float64(ai) // may overflow ai = 0 bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: bu = bv.Uint() if ai >= 0 { au = uint64(ai) ai = 0 } else { bi = int64(bu) // may overflow bu = 0 } default: return nil, errors.New("can't apply the operator to the values") } case reflect.Float32, reflect.Float64: af = av.Float() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: bf = float64(bv.Int()) // may overflow case reflect.Float32, reflect.Float64: bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: bf = float64(bv.Uint()) // may overflow default: return nil, errors.New("can't apply the operator to the values") } case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: au = av.Uint() switch bv.Kind() { case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: bi = bv.Int() if bi >= 0 { bu = uint64(bi) bi = 0 } else { ai = int64(au) // may overflow au = 0 } case reflect.Float32, reflect.Float64: af = float64(au) // may overflow au = 0 bf = bv.Float() case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: bu = bv.Uint() default: return nil, errors.New("can't apply the operator to the values") } case reflect.String: as := av.String() if bv.Kind() == reflect.String && op == '+' { bs := bv.String() return as + bs, nil } return nil, errors.New("can't apply the operator to the values") default: return nil, errors.New("can't apply the operator to the values") } switch op { case '+': if ai != 0 || bi != 0 { return ai + bi, nil } else if af != 0 || bf != 0 { return af + bf, nil } else if au != 0 || bu != 0 { return au + bu, nil } return 0, nil case '-': if ai != 0 || bi != 0 { return ai - bi, nil } else if af != 0 || bf != 0 { return af - bf, nil } else if au != 0 || bu != 0 { return au - bu, nil } return 0, nil case '*': if ai != 0 || bi != 0 { return ai * bi, nil } else if af != 0 || bf != 0 { return af * bf, nil } else if au != 0 || bu != 0 { return au * bu, nil } return 0, nil case '/': if bi != 0 { return ai / bi, nil } else if bf != 0 { return af / bf, nil } else if bu != 0 { return au / bu, nil } return nil, errors.New("can't divide the value by 0") default: return nil, errors.New("there is no such an operation") } } hugo-0.131.0/common/math/math_test.go000066400000000000000000000056561465312036400173760ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package math import ( "testing" qt "github.com/frankban/quicktest" ) func TestDoArithmetic(t *testing.T) { t.Parallel() c := qt.New(t) for _, test := range []struct { a any b any op rune expect any }{ {3, 2, '+', int64(5)}, {3, 2, '-', int64(1)}, {3, 2, '*', int64(6)}, {3, 2, '/', int64(1)}, {3.0, 2, '+', float64(5)}, {3.0, 2, '-', float64(1)}, {3.0, 2, '*', float64(6)}, {3.0, 2, '/', float64(1.5)}, {3, 2.0, '+', float64(5)}, {3, 2.0, '-', float64(1)}, {3, 2.0, '*', float64(6)}, {3, 2.0, '/', float64(1.5)}, {3.0, 2.0, '+', float64(5)}, {3.0, 2.0, '-', float64(1)}, {3.0, 2.0, '*', float64(6)}, {3.0, 2.0, '/', float64(1.5)}, {uint(3), uint(2), '+', uint64(5)}, {uint(3), uint(2), '-', uint64(1)}, {uint(3), uint(2), '*', uint64(6)}, {uint(3), uint(2), '/', uint64(1)}, {uint(3), 2, '+', uint64(5)}, {uint(3), 2, '-', uint64(1)}, {uint(3), 2, '*', uint64(6)}, {uint(3), 2, '/', uint64(1)}, {3, uint(2), '+', uint64(5)}, {3, uint(2), '-', uint64(1)}, {3, uint(2), '*', uint64(6)}, {3, uint(2), '/', uint64(1)}, {uint(3), -2, '+', int64(1)}, {uint(3), -2, '-', int64(5)}, {uint(3), -2, '*', int64(-6)}, {uint(3), -2, '/', int64(-1)}, {-3, uint(2), '+', int64(-1)}, {-3, uint(2), '-', int64(-5)}, {-3, uint(2), '*', int64(-6)}, {-3, uint(2), '/', int64(-1)}, {uint(3), 2.0, '+', float64(5)}, {uint(3), 2.0, '-', float64(1)}, {uint(3), 2.0, '*', float64(6)}, {uint(3), 2.0, '/', float64(1.5)}, {3.0, uint(2), '+', float64(5)}, {3.0, uint(2), '-', float64(1)}, {3.0, uint(2), '*', float64(6)}, {3.0, uint(2), '/', float64(1.5)}, {0, 0, '+', 0}, {0, 0, '-', 0}, {0, 0, '*', 0}, {"foo", "bar", '+', "foobar"}, {3, 0, '/', false}, {3.0, 0, '/', false}, {3, 0.0, '/', false}, {uint(3), uint(0), '/', false}, {3, uint(0), '/', false}, {-3, uint(0), '/', false}, {uint(3), 0, '/', false}, {3.0, uint(0), '/', false}, {uint(3), 0.0, '/', false}, {3, "foo", '+', false}, {3.0, "foo", '+', false}, {uint(3), "foo", '+', false}, {"foo", 3, '+', false}, {"foo", "bar", '-', false}, {3, 2, '%', false}, } { result, err := DoArithmetic(test.a, test.b, test.op) if b, ok := test.expect.(bool); ok && !b { c.Assert(err, qt.Not(qt.IsNil)) continue } c.Assert(err, qt.IsNil) c.Assert(test.expect, qt.Equals, result) } } hugo-0.131.0/common/para/000077500000000000000000000000001465312036400150355ustar00rootroot00000000000000hugo-0.131.0/common/para/para.go000066400000000000000000000034431465312036400163130ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. // Package para implements parallel execution helpers. package para import ( "context" "golang.org/x/sync/errgroup" ) // Workers configures a task executor with the most number of tasks to be executed in parallel. type Workers struct { sem chan struct{} } // Runner wraps the lifecycle methods of a new task set. // // Run will block until a worker is available or the context is cancelled, // and then run the given func in a new goroutine. // Wait will wait for all the running goroutines to finish. type Runner interface { Run(func() error) Wait() error } type errGroupRunner struct { *errgroup.Group w *Workers ctx context.Context } func (g *errGroupRunner) Run(fn func() error) { select { case g.w.sem <- struct{}{}: case <-g.ctx.Done(): return } g.Go(func() error { err := fn() <-g.w.sem return err }) } // New creates a new Workers with the given number of workers. func New(numWorkers int) *Workers { return &Workers{ sem: make(chan struct{}, numWorkers), } } // Start starts a new Runner. func (w *Workers) Start(ctx context.Context) (Runner, context.Context) { g, ctx := errgroup.WithContext(ctx) return &errGroupRunner{ Group: g, ctx: ctx, w: w, }, ctx } hugo-0.131.0/common/para/para_test.go000066400000000000000000000041301465312036400173440ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package para import ( "context" "runtime" "sort" "sync" "sync/atomic" "testing" "time" "github.com/gohugoio/hugo/htesting" qt "github.com/frankban/quicktest" ) func TestPara(t *testing.T) { if runtime.NumCPU() < 4 { t.Skipf("skip para test, CPU count is %d", runtime.NumCPU()) } // TODO(bep) if htesting.IsCI() { t.Skip("skip para test when running on CI") } c := qt.New(t) c.Run("Order", func(c *qt.C) { n := 500 ints := make([]int, n) for i := 0; i < n; i++ { ints[i] = i } p := New(4) r, _ := p.Start(context.Background()) var result []int var mu sync.Mutex for i := 0; i < n; i++ { i := i r.Run(func() error { mu.Lock() defer mu.Unlock() result = append(result, i) return nil }) } c.Assert(r.Wait(), qt.IsNil) c.Assert(result, qt.HasLen, len(ints)) c.Assert(sort.IntsAreSorted(result), qt.Equals, false, qt.Commentf("Para does not seem to be parallel")) sort.Ints(result) c.Assert(result, qt.DeepEquals, ints) }) c.Run("Time", func(c *qt.C) { const n = 100 p := New(5) r, _ := p.Start(context.Background()) start := time.Now() var counter int64 for i := 0; i < n; i++ { r.Run(func() error { atomic.AddInt64(&counter, 1) time.Sleep(1 * time.Millisecond) return nil }) } c.Assert(r.Wait(), qt.IsNil) c.Assert(counter, qt.Equals, int64(n)) since := time.Since(start) limit := n / 2 * time.Millisecond c.Assert(since < limit, qt.Equals, true, qt.Commentf("%s >= %s", since, limit)) }) } hugo-0.131.0/common/paths/000077500000000000000000000000001465312036400152315ustar00rootroot00000000000000hugo-0.131.0/common/paths/path.go000066400000000000000000000275311465312036400165240ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package paths import ( "errors" "fmt" "net/url" "path" "path/filepath" "strings" "unicode" ) // FilePathSeparator as defined by os.Separator. const ( FilePathSeparator = string(filepath.Separator) slash = "/" ) // filepathPathBridge is a bridge for common functionality in filepath vs path type filepathPathBridge interface { Base(in string) string Clean(in string) string Dir(in string) string Ext(in string) string Join(elem ...string) string Separator() string } type filepathBridge struct{} func (filepathBridge) Base(in string) string { return filepath.Base(in) } func (filepathBridge) Clean(in string) string { return filepath.Clean(in) } func (filepathBridge) Dir(in string) string { return filepath.Dir(in) } func (filepathBridge) Ext(in string) string { return filepath.Ext(in) } func (filepathBridge) Join(elem ...string) string { return filepath.Join(elem...) } func (filepathBridge) Separator() string { return FilePathSeparator } var fpb filepathBridge // AbsPathify creates an absolute path if given a working dir and a relative path. // If already absolute, the path is just cleaned. func AbsPathify(workingDir, inPath string) string { if filepath.IsAbs(inPath) { return filepath.Clean(inPath) } return filepath.Join(workingDir, inPath) } // AddTrailingSlash adds a trailing Unix styled slash (/) if not already // there. func AddTrailingSlash(path string) string { if !strings.HasSuffix(path, "/") { path += "/" } return path } // AddLeadingSlash adds a leading Unix styled slash (/) if not already // there. func AddLeadingSlash(path string) string { if !strings.HasPrefix(path, "/") { path = "/" + path } return path } // AddTrailingAndLeadingSlash adds a leading and trailing Unix styled slash (/) if not already // there. func AddLeadingAndTrailingSlash(path string) string { return AddTrailingSlash(AddLeadingSlash(path)) } // MakeTitle converts the path given to a suitable title, trimming whitespace // and replacing hyphens with whitespace. func MakeTitle(inpath string) string { return strings.Replace(strings.TrimSpace(inpath), "-", " ", -1) } // ReplaceExtension takes a path and an extension, strips the old extension // and returns the path with the new extension. func ReplaceExtension(path string, newExt string) string { f, _ := fileAndExt(path, fpb) return f + "." + newExt } func makePathRelative(inPath string, possibleDirectories ...string) (string, error) { for _, currentPath := range possibleDirectories { if strings.HasPrefix(inPath, currentPath) { return strings.TrimPrefix(inPath, currentPath), nil } } return inPath, errors.New("can't extract relative path, unknown prefix") } // ExtNoDelimiter takes a path and returns the extension, excluding the delimiter, i.e. "md". func ExtNoDelimiter(in string) string { return strings.TrimPrefix(Ext(in), ".") } // Ext takes a path and returns the extension, including the delimiter, i.e. ".md". func Ext(in string) string { _, ext := fileAndExt(in, fpb) return ext } // PathAndExt is the same as FileAndExt, but it uses the path package. func PathAndExt(in string) (string, string) { return fileAndExt(in, pb) } // FileAndExt takes a path and returns the file and extension separated, // the extension including the delimiter, i.e. ".md". func FileAndExt(in string) (string, string) { return fileAndExt(in, fpb) } // FileAndExtNoDelimiter takes a path and returns the file and extension separated, // the extension excluding the delimiter, e.g "md". func FileAndExtNoDelimiter(in string) (string, string) { file, ext := fileAndExt(in, fpb) return file, strings.TrimPrefix(ext, ".") } // Filename takes a file path, strips out the extension, // and returns the name of the file. func Filename(in string) (name string) { name, _ = fileAndExt(in, fpb) return } // FileAndExt returns the filename and any extension of a file path as // two separate strings. // // If the path, in, contains a directory name ending in a slash, // then both name and ext will be empty strings. // // If the path, in, is either the current directory, the parent // directory or the root directory, or an empty string, // then both name and ext will be empty strings. // // If the path, in, represents the path of a file without an extension, // then name will be the name of the file and ext will be an empty string. // // If the path, in, represents a filename with an extension, // then name will be the filename minus any extension - including the dot // and ext will contain the extension - minus the dot. func fileAndExt(in string, b filepathPathBridge) (name string, ext string) { ext = b.Ext(in) base := b.Base(in) return extractFilename(in, ext, base, b.Separator()), ext } func extractFilename(in, ext, base, pathSeparator string) (name string) { // No file name cases. These are defined as: // 1. any "in" path that ends in a pathSeparator // 2. any "base" consisting of just an pathSeparator // 3. any "base" consisting of just an empty string // 4. any "base" consisting of just the current directory i.e. "." // 5. any "base" consisting of just the parent directory i.e. ".." if (strings.LastIndex(in, pathSeparator) == len(in)-1) || base == "" || base == "." || base == ".." || base == pathSeparator { name = "" // there is NO filename } else if ext != "" { // there was an Extension // return the filename minus the extension (and the ".") name = base[:strings.LastIndex(base, ".")] } else { // no extension case so just return base, which will // be the filename name = base } return } // GetRelativePath returns the relative path of a given path. func GetRelativePath(path, base string) (final string, err error) { if filepath.IsAbs(path) && base == "" { return "", errors.New("source: missing base directory") } name := filepath.Clean(path) base = filepath.Clean(base) name, err = filepath.Rel(base, name) if err != nil { return "", err } if strings.HasSuffix(filepath.FromSlash(path), FilePathSeparator) && !strings.HasSuffix(name, FilePathSeparator) { name += FilePathSeparator } return name, nil } func prettifyPath(in string, b filepathPathBridge) string { if filepath.Ext(in) == "" { // /section/name/ -> /section/name/index.html if len(in) < 2 { return b.Separator() } return b.Join(in, "index.html") } name, ext := fileAndExt(in, b) if name == "index" { // /section/name/index.html -> /section/name/index.html return b.Clean(in) } // /section/name.html -> /section/name/index.html return b.Join(b.Dir(in), name, "index"+ext) } // CommonDirPath returns the common directory of the given paths. func CommonDirPath(path1, path2 string) string { if path1 == "" || path2 == "" { return "" } hadLeadingSlash := strings.HasPrefix(path1, "/") || strings.HasPrefix(path2, "/") path1 = TrimLeading(path1) path2 = TrimLeading(path2) p1 := strings.Split(path1, "/") p2 := strings.Split(path2, "/") var common []string for i := 0; i < len(p1) && i < len(p2); i++ { if p1[i] == p2[i] { common = append(common, p1[i]) } else { break } } s := strings.Join(common, "/") if hadLeadingSlash && s != "" { s = "/" + s } return s } // Sanitize sanitizes string to be used in Hugo's file paths and URLs, allowing only // a predefined set of special Unicode characters. // // Spaces will be replaced with a single hyphen. // // This function is the core function used to normalize paths in Hugo. // // Note that this is the first common step for URL/path sanitation, // the final URL/path may end up looking differently if the user has stricter rules defined (e.g. removePathAccents=true). func Sanitize(s string) string { var willChange bool for i, r := range s { willChange = !isAllowedPathCharacter(s, i, r) if willChange { break } } if !willChange { // Prevent allocation when nothing changes. return s } target := make([]rune, 0, len(s)) var ( prependHyphen bool wasHyphen bool ) for i, r := range s { isAllowed := isAllowedPathCharacter(s, i, r) if isAllowed { // track explicit hyphen in input; no need to add a new hyphen if // we just saw one. wasHyphen = r == '-' if prependHyphen { // if currently have a hyphen, don't prepend an extra one if !wasHyphen { target = append(target, '-') } prependHyphen = false } target = append(target, r) } else if len(target) > 0 && !wasHyphen && unicode.IsSpace(r) { prependHyphen = true } } return string(target) } func isAllowedPathCharacter(s string, i int, r rune) bool { if r == ' ' { return false } // Check for the most likely first (faster). isAllowed := unicode.IsLetter(r) || unicode.IsDigit(r) isAllowed = isAllowed || r == '.' || r == '/' || r == '\\' || r == '_' || r == '#' || r == '+' || r == '~' || r == '-' || r == '@' isAllowed = isAllowed || unicode.IsMark(r) isAllowed = isAllowed || (r == '%' && i+2 < len(s) && ishex(s[i+1]) && ishex(s[i+2])) return isAllowed } // From https://golang.org/src/net/url/url.go func ishex(c byte) bool { switch { case '0' <= c && c <= '9': return true case 'a' <= c && c <= 'f': return true case 'A' <= c && c <= 'F': return true } return false } var slashFunc = func(r rune) bool { return r == '/' } // Dir behaves like path.Dir without the path.Clean step. // // The returned path ends in a slash only if it is the root "/". func Dir(s string) string { dir, _ := path.Split(s) if len(dir) > 1 && dir[len(dir)-1] == '/' { return dir[:len(dir)-1] } return dir } // FieldsSlash cuts s into fields separated with '/'. func FieldsSlash(s string) []string { f := strings.FieldsFunc(s, slashFunc) return f } // DirFile holds the result from path.Split. type DirFile struct { Dir string File string } // Used in test. func (df DirFile) String() string { return fmt.Sprintf("%s|%s", df.Dir, df.File) } // PathEscape escapes unicode letters in pth. // Use URLEscape to escape full URLs including scheme, query etc. // This is slightly faster for the common case. // Note, there is a url.PathEscape function, but that also // escapes /. func PathEscape(pth string) string { u, err := url.Parse(pth) if err != nil { panic(err) } return u.EscapedPath() } // ToSlashTrimLeading is just a filepath.ToSlash with an added / prefix trimmer. func ToSlashTrimLeading(s string) string { return TrimLeading(filepath.ToSlash(s)) } // TrimLeading trims the leading slash from the given string. func TrimLeading(s string) string { return strings.TrimPrefix(s, "/") } // ToSlashTrimTrailing is just a filepath.ToSlash with an added / suffix trimmer. func ToSlashTrimTrailing(s string) string { return TrimTrailing(filepath.ToSlash(s)) } // TrimTrailing trims the trailing slash from the given string. func TrimTrailing(s string) string { return strings.TrimSuffix(s, "/") } // ToSlashTrim trims any leading and trailing slashes from the given string and converts it to a forward slash separated path. func ToSlashTrim(s string) string { return strings.Trim(filepath.ToSlash(s), "/") } // ToSlashPreserveLeading converts the path given to a forward slash separated path // and preserves the leading slash if present trimming any trailing slash. func ToSlashPreserveLeading(s string) string { return "/" + strings.Trim(filepath.ToSlash(s), "/") } // IsSameFilePath checks if s1 and s2 are the same file path. func IsSameFilePath(s1, s2 string) bool { return path.Clean(ToSlashTrim(s1)) == path.Clean(ToSlashTrim(s2)) } hugo-0.131.0/common/paths/path_test.go000066400000000000000000000216721465312036400175630ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package paths import ( "path/filepath" "testing" qt "github.com/frankban/quicktest" ) func TestGetRelativePath(t *testing.T) { tests := []struct { path string base string expect any }{ {filepath.FromSlash("/a/b"), filepath.FromSlash("/a"), filepath.FromSlash("b")}, {filepath.FromSlash("/a/b/c/"), filepath.FromSlash("/a"), filepath.FromSlash("b/c/")}, {filepath.FromSlash("/c"), filepath.FromSlash("/a/b"), filepath.FromSlash("../../c")}, {filepath.FromSlash("/c"), "", false}, } for i, this := range tests { // ultimately a fancy wrapper around filepath.Rel result, err := GetRelativePath(this.path, this.base) if b, ok := this.expect.(bool); ok && !b { if err == nil { t.Errorf("[%d] GetRelativePath didn't return an expected error", i) } } else { if err != nil { t.Errorf("[%d] GetRelativePath failed: %s", i, err) continue } if result != this.expect { t.Errorf("[%d] GetRelativePath got %v but expected %v", i, result, this.expect) } } } } func TestMakePathRelative(t *testing.T) { type test struct { inPath, path1, path2, output string } data := []test{ {"/abc/bcd/ab.css", "/abc/bcd", "/bbc/bcd", "/ab.css"}, {"/abc/bcd/ab.css", "/abcd/bcd", "/abc/bcd", "/ab.css"}, } for i, d := range data { output, _ := makePathRelative(d.inPath, d.path1, d.path2) if d.output != output { t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output) } } _, error := makePathRelative("a/b/c.ss", "/a/c", "/d/c", "/e/f") if error == nil { t.Errorf("Test failed, expected error") } } func TestMakeTitle(t *testing.T) { type test struct { input, expected string } data := []test{ {"Make-Title", "Make Title"}, {"MakeTitle", "MakeTitle"}, {"make_title", "make_title"}, } for i, d := range data { output := MakeTitle(d.input) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } // Replace Extension is probably poorly named, but the intent of the // function is to accept a path and return only the file name with a // new extension. It's intentionally designed to strip out the path // and only provide the name. We should probably rename the function to // be more explicit at some point. func TestReplaceExtension(t *testing.T) { type test struct { input, newext, expected string } data := []test{ // These work according to the above definition {"/some/random/path/file.xml", "html", "file.html"}, {"/banana.html", "xml", "banana.xml"}, {"./banana.html", "xml", "banana.xml"}, {"banana/pie/index.html", "xml", "index.xml"}, {"../pies/fish/index.html", "xml", "index.xml"}, // but these all fail {"filename-without-an-ext", "ext", "filename-without-an-ext.ext"}, {"/filename-without-an-ext", "ext", "filename-without-an-ext.ext"}, {"/directory/mydir/", "ext", ".ext"}, {"mydir/", "ext", ".ext"}, } for i, d := range data { output := ReplaceExtension(filepath.FromSlash(d.input), d.newext) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } func TestExtNoDelimiter(t *testing.T) { c := qt.New(t) c.Assert(ExtNoDelimiter(filepath.FromSlash("/my/data.json")), qt.Equals, "json") } func TestFilename(t *testing.T) { type test struct { input, expected string } data := []test{ {"index.html", "index"}, {"./index.html", "index"}, {"/index.html", "index"}, {"index", "index"}, {"/tmp/index.html", "index"}, {"./filename-no-ext", "filename-no-ext"}, {"/filename-no-ext", "filename-no-ext"}, {"filename-no-ext", "filename-no-ext"}, {"directory/", ""}, // no filename case?? {"directory/.hidden.ext", ".hidden"}, {"./directory/../~/banana/gold.fish", "gold"}, {"../directory/banana.man", "banana"}, {"~/mydir/filename.ext", "filename"}, {"./directory//tmp/filename.ext", "filename"}, } for i, d := range data { output := Filename(filepath.FromSlash(d.input)) if d.expected != output { t.Errorf("Test %d failed. Expected %q got %q", i, d.expected, output) } } } func TestFileAndExt(t *testing.T) { type test struct { input, expectedFile, expectedExt string } data := []test{ {"index.html", "index", ".html"}, {"./index.html", "index", ".html"}, {"/index.html", "index", ".html"}, {"index", "index", ""}, {"/tmp/index.html", "index", ".html"}, {"./filename-no-ext", "filename-no-ext", ""}, {"/filename-no-ext", "filename-no-ext", ""}, {"filename-no-ext", "filename-no-ext", ""}, {"directory/", "", ""}, // no filename case?? {"directory/.hidden.ext", ".hidden", ".ext"}, {"./directory/../~/banana/gold.fish", "gold", ".fish"}, {"../directory/banana.man", "banana", ".man"}, {"~/mydir/filename.ext", "filename", ".ext"}, {"./directory//tmp/filename.ext", "filename", ".ext"}, } for i, d := range data { file, ext := fileAndExt(filepath.FromSlash(d.input), fpb) if d.expectedFile != file { t.Errorf("Test %d failed. Expected filename %q got %q.", i, d.expectedFile, file) } if d.expectedExt != ext { t.Errorf("Test %d failed. Expected extension %q got %q.", i, d.expectedExt, ext) } } } func TestSanitize(t *testing.T) { c := qt.New(t) tests := []struct { input string expected string }{ {" Foo bar ", "Foo-bar"}, {"Foo.Bar/foo_Bar-Foo", "Foo.Bar/foo_Bar-Foo"}, {"fOO,bar:foobAR", "fOObarfoobAR"}, {"FOo/BaR.html", "FOo/BaR.html"}, {"FOo/Ba---R.html", "FOo/Ba---R.html"}, /// See #10104 {"FOo/Ba R.html", "FOo/Ba-R.html"}, {"трям/трям", "трям/трям"}, {"은행", "은행"}, {"Банковский кассир", "Банковский-кассир"}, // Issue #1488 {"संस्कृत", "संस्कृत"}, {"a%C3%B1ame", "a%C3%B1ame"}, // Issue #1292 {"this+is+a+test", "this+is+a+test"}, // Issue #1290 {"~foo", "~foo"}, // Issue #2177 } for _, test := range tests { c.Assert(Sanitize(test.input), qt.Equals, test.expected) } } func BenchmarkSanitize(b *testing.B) { const ( allAlowedPath = "foo/bar" spacePath = "foo bar" ) // This should not allocate any memory. b.Run("All allowed", func(b *testing.B) { for i := 0; i < b.N; i++ { got := Sanitize(allAlowedPath) if got != allAlowedPath { b.Fatal(got) } } }) // This will allocate some memory. b.Run("Spaces", func(b *testing.B) { for i := 0; i < b.N; i++ { got := Sanitize(spacePath) if got != "foo-bar" { b.Fatal(got) } } }) } func TestDir(t *testing.T) { c := qt.New(t) c.Assert(Dir("/a/b/c/d"), qt.Equals, "/a/b/c") c.Assert(Dir("/a"), qt.Equals, "/") c.Assert(Dir("/"), qt.Equals, "/") c.Assert(Dir(""), qt.Equals, "") } func TestFieldsSlash(t *testing.T) { c := qt.New(t) c.Assert(FieldsSlash("a/b/c"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/a/b/c"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/a/b/c/"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("a/b/c/"), qt.DeepEquals, []string{"a", "b", "c"}) c.Assert(FieldsSlash("/"), qt.DeepEquals, []string{}) c.Assert(FieldsSlash(""), qt.DeepEquals, []string{}) } func TestCommonDirPath(t *testing.T) { c := qt.New(t) for _, this := range []struct { a, b, expected string }{ {"/a/b/c", "/a/b/d", "/a/b"}, {"/a/b/c", "a/b/d", "/a/b"}, {"a/b/c", "/a/b/d", "/a/b"}, {"a/b/c", "a/b/d", "a/b"}, {"/a/b/c", "/a/b/c", "/a/b/c"}, {"/a/b/c", "/a/b/c/d", "/a/b/c"}, {"/a/b/c", "/a/b", "/a/b"}, {"/a/b/c", "/a", "/a"}, {"/a/b/c", "/d/e/f", ""}, } { c.Assert(CommonDirPath(this.a, this.b), qt.Equals, this.expected, qt.Commentf("a: %s b: %s", this.a, this.b)) } } func TestIsSameFilePath(t *testing.T) { c := qt.New(t) for _, this := range []struct { a, b string expected bool }{ {"/a/b/c", "/a/b/c", true}, {"/a/b/c", "/a/b/c/", true}, {"/a/b/c", "/a/b/d", false}, {"/a/b/c", "/a/b", false}, {"/a/b/c", "/a/b/c/d", false}, {"/a/b/c", "/a/b/cd", false}, {"/a/b/c", "/a/b/cc", false}, {"/a/b/c", "/a/b/c/", true}, {"/a/b/c", "/a/b/c//", true}, {"/a/b/c", "/a/b/c/.", true}, {"/a/b/c", "/a/b/c/./", true}, {"/a/b/c", "/a/b/c/./.", true}, {"/a/b/c", "/a/b/c/././", true}, {"/a/b/c", "/a/b/c/././.", true}, {"/a/b/c", "/a/b/c/./././", true}, {"/a/b/c", "/a/b/c/./././.", true}, {"/a/b/c", "/a/b/c/././././", true}, } { c.Assert(IsSameFilePath(filepath.FromSlash(this.a), filepath.FromSlash(this.b)), qt.Equals, this.expected, qt.Commentf("a: %s b: %s", this.a, this.b)) } } hugo-0.131.0/common/paths/pathparser.go000066400000000000000000000316651465312036400177440ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package paths import ( "path" "path/filepath" "runtime" "strings" "sync" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/hugofs/files" "github.com/gohugoio/hugo/identity" ) // PathParser parses a path into a Path. type PathParser struct { // Maps the language code to its index in the languages/sites slice. LanguageIndex map[string]int // Reports whether the given language is disabled. IsLangDisabled func(string) bool // Reports whether the given ext is a content file. IsContentExt func(string) bool } // NormalizePathString returns a normalized path string using the very basic Hugo rules. func NormalizePathStringBasic(s string) string { // All lower case. s = strings.ToLower(s) // Replace spaces with hyphens. s = strings.ReplaceAll(s, " ", "-") return s } // ParseIdentity parses component c with path s into a StringIdentity. func (pp *PathParser) ParseIdentity(c, s string) identity.StringIdentity { p := pp.parsePooled(c, s) defer putPath(p) return identity.StringIdentity(p.IdentifierBase()) } // ParseBaseAndBaseNameNoIdentifier parses component c with path s into a base and a base name without any identifier. func (pp *PathParser) ParseBaseAndBaseNameNoIdentifier(c, s string) (string, string) { p := pp.parsePooled(c, s) defer putPath(p) return p.Base(), p.BaseNameNoIdentifier() } func (pp *PathParser) parsePooled(c, s string) *Path { s = NormalizePathStringBasic(s) p := getPath() p.component = c p, err := pp.doParse(c, s, p) if err != nil { panic(err) } return p } // Parse parses component c with path s into Path using Hugo's content path rules. func (pp *PathParser) Parse(c, s string) *Path { p, err := pp.parse(c, s) if err != nil { panic(err) } return p } func (pp *PathParser) newPath(component string) *Path { return &Path{ component: component, posContainerLow: -1, posContainerHigh: -1, posSectionHigh: -1, posIdentifierLanguage: -1, } } func (pp *PathParser) parse(component, s string) (*Path, error) { ss := NormalizePathStringBasic(s) p, err := pp.doParse(component, ss, pp.newPath(component)) if err != nil { return nil, err } if s != ss { var err error // Preserve the original case for titles etc. p.unnormalized, err = pp.doParse(component, s, pp.newPath(component)) if err != nil { return nil, err } } else { p.unnormalized = p } return p, nil } func (pp *PathParser) doParse(component, s string, p *Path) (*Path, error) { hasLang := pp.LanguageIndex != nil hasLang = hasLang && (component == files.ComponentFolderContent || component == files.ComponentFolderLayouts) if runtime.GOOS == "windows" { s = path.Clean(filepath.ToSlash(s)) if s == "." { s = "" } } if s == "" { s = "/" } // Leading slash, no trailing slash. if !strings.HasPrefix(s, "/") { s = "/" + s } if s != "/" && s[len(s)-1] == '/' { s = s[:len(s)-1] } p.s = s slashCount := 0 for i := len(s) - 1; i >= 0; i-- { c := s[i] switch c { case '.': if p.posContainerHigh == -1 { var high int if len(p.identifiers) > 0 { high = p.identifiers[len(p.identifiers)-1].Low - 1 } else { high = len(p.s) } id := types.LowHigh{Low: i + 1, High: high} if len(p.identifiers) == 0 { p.identifiers = append(p.identifiers, id) } else if len(p.identifiers) == 1 { // Check for a valid language. s := p.s[id.Low:id.High] if hasLang { var disabled bool _, langFound := pp.LanguageIndex[s] if !langFound { disabled = pp.IsLangDisabled != nil && pp.IsLangDisabled(s) if disabled { p.disabled = true langFound = true } } if langFound { p.posIdentifierLanguage = 1 p.identifiers = append(p.identifiers, id) } } } } case '/': slashCount++ if p.posContainerHigh == -1 { p.posContainerHigh = i + 1 } else if p.posContainerLow == -1 { p.posContainerLow = i + 1 } if i > 0 { p.posSectionHigh = i } } } if len(p.identifiers) > 0 { isContentComponent := p.component == files.ComponentFolderContent || p.component == files.ComponentFolderArchetypes isContent := isContentComponent && pp.IsContentExt(p.Ext()) id := p.identifiers[len(p.identifiers)-1] b := p.s[p.posContainerHigh : id.Low-1] if isContent { switch b { case "index": p.bundleType = PathTypeLeaf case "_index": p.bundleType = PathTypeBranch default: p.bundleType = PathTypeContentSingle } if slashCount == 2 && p.IsLeafBundle() { p.posSectionHigh = 0 } } else if b == files.NameContentData && files.IsContentDataExt(p.Ext()) { p.bundleType = PathTypeContentData } } return p, nil } func ModifyPathBundleTypeResource(p *Path) { if p.IsContent() { p.bundleType = PathTypeContentResource } else { p.bundleType = PathTypeFile } } type PathType int const ( // A generic resource, e.g. a JSON file. PathTypeFile PathType = iota // All below are content files. // A resource of a content type with front matter. PathTypeContentResource // E.g. /blog/my-post.md PathTypeContentSingle // All below are bundled content files. // Leaf bundles, e.g. /blog/my-post/index.md PathTypeLeaf // Branch bundles, e.g. /blog/_index.md PathTypeBranch // Content data file, _content.gotmpl. PathTypeContentData ) type Path struct { // Note: Any additions to this struct should also be added to the pathPool. s string posContainerLow int posContainerHigh int posSectionHigh int component string bundleType PathType identifiers []types.LowHigh posIdentifierLanguage int disabled bool trimLeadingSlash bool unnormalized *Path } var pathPool = &sync.Pool{ New: func() any { p := &Path{} p.reset() return p }, } func getPath() *Path { return pathPool.Get().(*Path) } func putPath(p *Path) { p.reset() pathPool.Put(p) } func (p *Path) reset() { p.s = "" p.posContainerLow = -1 p.posContainerHigh = -1 p.posSectionHigh = -1 p.component = "" p.bundleType = 0 p.identifiers = p.identifiers[:0] p.posIdentifierLanguage = -1 p.disabled = false p.trimLeadingSlash = false p.unnormalized = nil } // TrimLeadingSlash returns a copy of the Path with the leading slash removed. func (p Path) TrimLeadingSlash() *Path { p.trimLeadingSlash = true return &p } func (p *Path) norm(s string) string { if p.trimLeadingSlash { s = strings.TrimPrefix(s, "/") } return s } // IdentifierBase satisfies identity.Identity. func (p *Path) IdentifierBase() string { return p.Base() } // Component returns the component for this path (e.g. "content"). func (p *Path) Component() string { return p.component } // Container returns the base name of the container directory for this path. func (p *Path) Container() string { if p.posContainerLow == -1 { return "" } return p.norm(p.s[p.posContainerLow : p.posContainerHigh-1]) } // ContainerDir returns the container directory for this path. // For content bundles this will be the parent directory. func (p *Path) ContainerDir() string { if p.posContainerLow == -1 || !p.IsBundle() { return p.Dir() } return p.norm(p.s[:p.posContainerLow-1]) } // Section returns the first path element (section). func (p *Path) Section() string { if p.posSectionHigh <= 0 { return "" } return p.norm(p.s[1:p.posSectionHigh]) } // IsContent returns true if the path is a content file (e.g. mypost.md). // Note that this will also return true for content files in a bundle. func (p *Path) IsContent() bool { return p.BundleType() >= PathTypeContentResource } // isContentPage returns true if the path is a content file (e.g. mypost.md), // but nof if inside a leaf bundle. func (p *Path) isContentPage() bool { return p.BundleType() >= PathTypeContentSingle } // Name returns the last element of path. func (p *Path) Name() string { if p.posContainerHigh > 0 { return p.s[p.posContainerHigh:] } return p.s } // Name returns the last element of path without any extension. func (p *Path) NameNoExt() string { if i := p.identifierIndex(0); i != -1 { return p.s[p.posContainerHigh : p.identifiers[i].Low-1] } return p.s[p.posContainerHigh:] } // Name returns the last element of path without any language identifier. func (p *Path) NameNoLang() string { i := p.identifierIndex(p.posIdentifierLanguage) if i == -1 { return p.Name() } return p.s[p.posContainerHigh:p.identifiers[i].Low-1] + p.s[p.identifiers[i].High:] } // BaseNameNoIdentifier returns the logical base name for a resource without any identifier (e.g. no extension). // For bundles this will be the containing directory's name, e.g. "blog". func (p *Path) BaseNameNoIdentifier() string { if p.IsBundle() { return p.Container() } return p.NameNoIdentifier() } // NameNoIdentifier returns the last element of path without any identifier (e.g. no extension). func (p *Path) NameNoIdentifier() string { if len(p.identifiers) > 0 { return p.s[p.posContainerHigh : p.identifiers[len(p.identifiers)-1].Low-1] } return p.s[p.posContainerHigh:] } // Dir returns all but the last element of path, typically the path's directory. func (p *Path) Dir() (d string) { if p.posContainerHigh > 0 { d = p.s[:p.posContainerHigh-1] } if d == "" { d = "/" } d = p.norm(d) return } // Path returns the full path. func (p *Path) Path() (d string) { return p.norm(p.s) } // Unnormalized returns the Path with the original case preserved. func (p *Path) Unnormalized() *Path { return p.unnormalized } // PathNoLang returns the Path but with any language identifier removed. func (p *Path) PathNoLang() string { return p.base(true, false) } // PathNoIdentifier returns the Path but with any identifier (ext, lang) removed. func (p *Path) PathNoIdentifier() string { return p.base(false, false) } // PathRel returns the path relative to the given owner. func (p *Path) PathRel(owner *Path) string { ob := owner.Base() if !strings.HasSuffix(ob, "/") { ob += "/" } return strings.TrimPrefix(p.Path(), ob) } // BaseRel returns the base path relative to the given owner. func (p *Path) BaseRel(owner *Path) string { ob := owner.Base() if ob == "/" { ob = "" } return p.Base()[len(ob)+1:] } // For content files, Base returns the path without any identifiers (extension, language code etc.). // Any 'index' as the last path element is ignored. // // For other files (Resources), any extension is kept. func (p *Path) Base() string { return p.base(!p.isContentPage(), p.IsBundle()) } // BaseNoLeadingSlash returns the base path without the leading slash. func (p *Path) BaseNoLeadingSlash() string { return p.Base()[1:] } func (p *Path) base(preserveExt, isBundle bool) string { if len(p.identifiers) == 0 { return p.norm(p.s) } if preserveExt && len(p.identifiers) == 1 { // Preserve extension. return p.norm(p.s) } id := p.identifiers[len(p.identifiers)-1] high := id.Low - 1 if isBundle { high = p.posContainerHigh - 1 } if high == 0 { high++ } if !preserveExt { return p.norm(p.s[:high]) } // For txt files etc. we want to preserve the extension. id = p.identifiers[0] return p.norm(p.s[:high] + p.s[id.Low-1:id.High]) } func (p *Path) Ext() string { return p.identifierAsString(0) } func (p *Path) Lang() string { return p.identifierAsString(1) } func (p *Path) Identifier(i int) string { return p.identifierAsString(i) } func (p *Path) Disabled() bool { return p.disabled } func (p *Path) Identifiers() []string { ids := make([]string, len(p.identifiers)) for i, id := range p.identifiers { ids[i] = p.s[id.Low:id.High] } return ids } func (p *Path) BundleType() PathType { return p.bundleType } func (p *Path) IsBundle() bool { return p.bundleType >= PathTypeLeaf } func (p *Path) IsBranchBundle() bool { return p.bundleType == PathTypeBranch } func (p *Path) IsLeafBundle() bool { return p.bundleType == PathTypeLeaf } func (p *Path) IsContentData() bool { return p.bundleType == PathTypeContentData } func (p Path) ForBundleType(t PathType) *Path { p.bundleType = t return &p } func (p *Path) identifierAsString(i int) string { i = p.identifierIndex(i) if i == -1 { return "" } id := p.identifiers[i] return p.s[id.Low:id.High] } func (p *Path) identifierIndex(i int) int { if i < 0 || i >= len(p.identifiers) { return -1 } return i } // HasExt returns true if the Unix styled path has an extension. func HasExt(p string) bool { for i := len(p) - 1; i >= 0; i-- { if p[i] == '.' { return true } if p[i] == '/' { return false } } return false } hugo-0.131.0/common/paths/pathparser_test.go000066400000000000000000000251521465312036400207750ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package paths import ( "path/filepath" "testing" "github.com/gohugoio/hugo/hugofs/files" qt "github.com/frankban/quicktest" ) var testParser = &PathParser{ LanguageIndex: map[string]int{ "no": 0, "en": 1, }, IsContentExt: func(ext string) bool { return ext == "md" }, } func TestParse(t *testing.T) { c := qt.New(t) tests := []struct { name string path string assert func(c *qt.C, p *Path) }{ { "Basic text file", "/a/b.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.txt") c.Assert(p.Base(), qt.Equals, "/a/b.txt") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.Dir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.IsContent(), qt.IsFalse) }, }, { "Basic text file, upper case", "/A/B.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.txt") c.Assert(p.NameNoExt(), qt.Equals, "b") c.Assert(p.NameNoIdentifier(), qt.Equals, "b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b.txt") c.Assert(p.Ext(), qt.Equals, "txt") }, }, { "Basic text file, 1 space in dir", "/a b/c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a-b/c.txt") }, }, { "Basic text file, 2 spaces in dir", "/a b/c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a--b/c.txt") }, }, { "Basic text file, 1 space in filename", "/a/b c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b-c.txt") }, }, { "Basic text file, 2 spaces in filename", "/a/b c.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b--c.txt") }, }, { "Basic text file, mixed case and spaces, unnormalized", "/a/Foo BAR.txt", func(c *qt.C, p *Path) { pp := p.Unnormalized() c.Assert(pp, qt.IsNotNil) c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "Foo BAR") }, }, { "Basic Markdown file", "/a/b/c.md", func(c *qt.C, p *Path) { c.Assert(p.IsContent(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.Name(), qt.Equals, "c.md") c.Assert(p.Base(), qt.Equals, "/a/b/c") c.Assert(p.Section(), qt.Equals, "a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "c") c.Assert(p.Path(), qt.Equals, "/a/b/c.md") c.Assert(p.Dir(), qt.Equals, "/a/b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "md") }, }, { "Content resource", "/a/b.md", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.md") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNoLeadingSlash(), qt.Equals, "a/b") c.Assert(p.Section(), qt.Equals, "a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") // Reclassify it as a content resource. ModifyPathBundleTypeResource(p) c.Assert(p.BundleType(), qt.Equals, PathTypeContentResource) c.Assert(p.IsContent(), qt.IsTrue) c.Assert(p.Name(), qt.Equals, "b.md") c.Assert(p.Base(), qt.Equals, "/a/b.md") }, }, { "No ext", "/a/b", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b") c.Assert(p.NameNoExt(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "") }, }, { "No ext, trailing slash", "/a/b/", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b") c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "") }, }, { "Identifiers", "/a/b.a.b.no.txt", func(c *qt.C, p *Path) { c.Assert(p.Name(), qt.Equals, "b.a.b.no.txt") c.Assert(p.NameNoIdentifier(), qt.Equals, "b.a.b") c.Assert(p.NameNoLang(), qt.Equals, "b.a.b.txt") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"txt", "no"}) c.Assert(p.Base(), qt.Equals, "/a/b.a.b.txt") c.Assert(p.BaseNoLeadingSlash(), qt.Equals, "a/b.a.b.txt") c.Assert(p.PathNoLang(), qt.Equals, "/a/b.a.b.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.PathNoIdentifier(), qt.Equals, "/a/b.a.b") }, }, { "Home branch cundle", "/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Path(), qt.Equals, "/_index.md") c.Assert(p.Container(), qt.Equals, "") c.Assert(p.ContainerDir(), qt.Equals, "/") }, }, { "Index content file in root", "/a/index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "a") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.Container(), qt.Equals, "a") c.Assert(p.ContainerDir(), qt.Equals, "") c.Assert(p.Dir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md"}) c.Assert(p.IsBranchBundle(), qt.IsFalse) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsTrue) c.Assert(p.Lang(), qt.Equals, "") c.Assert(p.NameNoExt(), qt.Equals, "index") c.Assert(p.NameNoIdentifier(), qt.Equals, "index") c.Assert(p.NameNoLang(), qt.Equals, "index.md") c.Assert(p.Section(), qt.Equals, "") }, }, { "Index content file with lang", "/a/b/index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a") c.Assert(p.Dir(), qt.Equals, "/a/b") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md", "no"}) c.Assert(p.IsBranchBundle(), qt.IsFalse) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsTrue) c.Assert(p.Lang(), qt.Equals, "no") c.Assert(p.NameNoExt(), qt.Equals, "index.no") c.Assert(p.NameNoIdentifier(), qt.Equals, "index") c.Assert(p.NameNoLang(), qt.Equals, "index.md") c.Assert(p.PathNoLang(), qt.Equals, "/a/b/index.md") c.Assert(p.Section(), qt.Equals, "a") }, }, { "Index branch content file", "/a/b/_index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b") c.Assert(p.BaseNameNoIdentifier(), qt.Equals, "b") c.Assert(p.Container(), qt.Equals, "b") c.Assert(p.ContainerDir(), qt.Equals, "/a") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"md", "no"}) c.Assert(p.IsBranchBundle(), qt.IsTrue) c.Assert(p.IsBundle(), qt.IsTrue) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.NameNoExt(), qt.Equals, "_index.no") c.Assert(p.NameNoLang(), qt.Equals, "_index.md") }, }, { "Index root no slash", "_index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Name(), qt.Equals, "_index.md") }, }, { "Index root", "/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "md") c.Assert(p.Name(), qt.Equals, "_index.md") }, }, { "Index first", "/a/_index.md", func(c *qt.C, p *Path) { c.Assert(p.Section(), qt.Equals, "a") }, }, { "Index text file", "/a/b/index.no.txt", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b/index.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.Identifiers(), qt.DeepEquals, []string{"txt", "no"}) c.Assert(p.IsLeafBundle(), qt.IsFalse) c.Assert(p.PathNoIdentifier(), qt.Equals, "/a/b/index") }, }, { "Empty", "", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "") c.Assert(p.Name(), qt.Equals, "") c.Assert(p.Path(), qt.Equals, "/") }, }, { "Slash", "/", func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/") c.Assert(p.Ext(), qt.Equals, "") c.Assert(p.Name(), qt.Equals, "") }, }, { "Trim Leading Slash bundle", "foo/bar/index.no.md", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/foo/bar/index.no.md") pp := p.TrimLeadingSlash() c.Assert(pp.Path(), qt.Equals, "foo/bar/index.no.md") c.Assert(pp.PathNoLang(), qt.Equals, "foo/bar/index.md") c.Assert(pp.Base(), qt.Equals, "foo/bar") c.Assert(pp.Dir(), qt.Equals, "foo/bar") c.Assert(pp.ContainerDir(), qt.Equals, "foo") c.Assert(pp.Container(), qt.Equals, "bar") c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "bar") }, }, { "Trim Leading Slash file", "foo/bar.txt", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/foo/bar.txt") pp := p.TrimLeadingSlash() c.Assert(pp.Path(), qt.Equals, "foo/bar.txt") c.Assert(pp.PathNoLang(), qt.Equals, "foo/bar.txt") c.Assert(pp.Base(), qt.Equals, "foo/bar.txt") c.Assert(pp.Dir(), qt.Equals, "foo") c.Assert(pp.ContainerDir(), qt.Equals, "foo") c.Assert(pp.Container(), qt.Equals, "foo") c.Assert(pp.BaseNameNoIdentifier(), qt.Equals, "bar") }, }, { "File separator", filepath.FromSlash("/a/b/c.txt"), func(c *qt.C, p *Path) { c.Assert(p.Base(), qt.Equals, "/a/b/c.txt") c.Assert(p.Ext(), qt.Equals, "txt") c.Assert(p.Name(), qt.Equals, "c.txt") c.Assert(p.Path(), qt.Equals, "/a/b/c.txt") }, }, { "Content data file gotmpl", "/a/b/_content.gotmpl", func(c *qt.C, p *Path) { c.Assert(p.Path(), qt.Equals, "/a/b/_content.gotmpl") c.Assert(p.Ext(), qt.Equals, "gotmpl") c.Assert(p.IsContentData(), qt.IsTrue) }, }, { "Content data file yaml", "/a/b/_content.yaml", func(c *qt.C, p *Path) { c.Assert(p.IsContentData(), qt.IsFalse) }, }, } for _, test := range tests { c.Run(test.name, func(c *qt.C) { test.assert(c, testParser.Parse(files.ComponentFolderContent, test.path)) }) } } func TestHasExt(t *testing.T) { c := qt.New(t) c.Assert(HasExt("/a/b/c.txt"), qt.IsTrue) c.Assert(HasExt("/a/b.c/d.txt"), qt.IsTrue) c.Assert(HasExt("/a/b/c"), qt.IsFalse) c.Assert(HasExt("/a/b.c/d"), qt.IsFalse) } func BenchmarkParseIdentity(b *testing.B) { for i := 0; i < b.N; i++ { testParser.ParseIdentity(files.ComponentFolderAssets, "/a/b.css") } } hugo-0.131.0/common/paths/paths_integration_test.go000066400000000000000000000045171465312036400223500ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package paths_test import ( "testing" "github.com/gohugoio/hugo/hugolib" ) func TestRemovePathAccents(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] defaultContentLanguage = "en" defaultContentLanguageInSubdir = true [languages] [languages.en] weight = 1 [languages.fr] weight = 2 removePathAccents = true -- content/διακριτικός.md -- -- content/διακριτικός.fr.md -- -- layouts/_default/single.html -- {{ .Language.Lang }}|Single. -- layouts/_default/list.html -- List ` b := hugolib.Test(t, files) b.AssertFileContent("public/en/διακριτικός/index.html", "en|Single") b.AssertFileContent("public/fr/διακριτικος/index.html", "fr|Single") } func TestDisablePathToLower(t *testing.T) { t.Parallel() files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] defaultContentLanguage = "en" defaultContentLanguageInSubdir = true [languages] [languages.en] weight = 1 [languages.fr] weight = 2 disablePathToLower = true -- content/MySection/MyPage.md -- -- content/MySection/MyPage.fr.md -- -- content/MySection/MyBundle/index.md -- -- content/MySection/MyBundle/index.fr.md -- -- layouts/_default/single.html -- {{ .Language.Lang }}|Single. -- layouts/_default/list.html -- {{ .Language.Lang }}|List. ` b := hugolib.Test(t, files) b.AssertFileContent("public/en/mysection/index.html", "en|List") b.AssertFileContent("public/en/mysection/mypage/index.html", "en|Single") b.AssertFileContent("public/fr/MySection/index.html", "fr|List") b.AssertFileContent("public/fr/MySection/MyPage/index.html", "fr|Single") b.AssertFileContent("public/en/mysection/mybundle/index.html", "en|Single") b.AssertFileContent("public/fr/MySection/MyBundle/index.html", "fr|Single") } hugo-0.131.0/common/paths/pathtype_string.go000066400000000000000000000014371465312036400210110ustar00rootroot00000000000000// Code generated by "stringer -type=PathType"; DO NOT EDIT. package paths import "strconv" func _() { // An "invalid array index" compiler error signifies that the constant values have changed. // Re-run the stringer command to generate them again. var x [1]struct{} _ = x[PathTypeFile-0] _ = x[PathTypeContentResource-1] _ = x[PathTypeContentSingle-2] _ = x[PathTypeLeaf-3] _ = x[PathTypeBranch-4] } const _PathType_name = "PathTypeFilePathTypeContentResourcePathTypeContentSinglePathTypeLeafPathTypeBranch" var _PathType_index = [...]uint8{0, 12, 35, 56, 68, 82} func (i PathType) String() string { if i < 0 || i >= PathType(len(_PathType_index)-1) { return "PathType(" + strconv.FormatInt(int64(i), 10) + ")" } return _PathType_name[_PathType_index[i]:_PathType_index[i+1]] } hugo-0.131.0/common/paths/url.go000066400000000000000000000110431465312036400163610ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package paths import ( "fmt" "net/url" "path" "path/filepath" "strings" ) type pathBridge struct{} func (pathBridge) Base(in string) string { return path.Base(in) } func (pathBridge) Clean(in string) string { return path.Clean(in) } func (pathBridge) Dir(in string) string { return path.Dir(in) } func (pathBridge) Ext(in string) string { return path.Ext(in) } func (pathBridge) Join(elem ...string) string { return path.Join(elem...) } func (pathBridge) Separator() string { return "/" } var pb pathBridge // MakePermalink combines base URL with content path to create full URL paths. // Example // // base: http://spf13.com/ // path: post/how-i-blog // result: http://spf13.com/post/how-i-blog func MakePermalink(host, plink string) *url.URL { base, err := url.Parse(host) if err != nil { panic(err) } p, err := url.Parse(plink) if err != nil { panic(err) } if p.Host != "" { panic(fmt.Errorf("can't make permalink from absolute link %q", plink)) } base.Path = path.Join(base.Path, p.Path) base.Fragment = p.Fragment base.RawQuery = p.RawQuery // path.Join will strip off the last /, so put it back if it was there. hadTrailingSlash := (plink == "" && strings.HasSuffix(host, "/")) || strings.HasSuffix(p.Path, "/") if hadTrailingSlash && !strings.HasSuffix(base.Path, "/") { base.Path = base.Path + "/" } return base } // AddContextRoot adds the context root to an URL if it's not already set. // For relative URL entries on sites with a base url with a context root set (i.e. http://example.com/mysite), // relative URLs must not include the context root if canonifyURLs is enabled. But if it's disabled, it must be set. func AddContextRoot(baseURL, relativePath string) string { url, err := url.Parse(baseURL) if err != nil { panic(err) } newPath := path.Join(url.Path, relativePath) // path strips trailing slash, ignore root path. if newPath != "/" && strings.HasSuffix(relativePath, "/") { newPath += "/" } return newPath } // URLizeAn // PrettifyURL takes a URL string and returns a semantic, clean URL. func PrettifyURL(in string) string { x := PrettifyURLPath(in) if path.Base(x) == "index.html" { return path.Dir(x) } if in == "" { return "/" } return x } // PrettifyURLPath takes a URL path to a content and converts it // to enable pretty URLs. // // /section/name.html becomes /section/name/index.html // /section/name/ becomes /section/name/index.html // /section/name/index.html becomes /section/name/index.html func PrettifyURLPath(in string) string { return prettifyPath(in, pb) } // Uglify does the opposite of PrettifyURLPath(). // // /section/name/index.html becomes /section/name.html // /section/name/ becomes /section/name.html // /section/name.html becomes /section/name.html func Uglify(in string) string { if path.Ext(in) == "" { if len(in) < 2 { return "/" } // /section/name/ -> /section/name.html return path.Clean(in) + ".html" } name, ext := fileAndExt(in, pb) if name == "index" { // /section/name/index.html -> /section/name.html d := path.Dir(in) if len(d) > 1 { return d + ext } return in } // /.xml -> /index.xml if name == "" { return path.Dir(in) + "index" + ext } // /section/name.html -> /section/name.html return path.Clean(in) } // UrlToFilename converts the URL s to a filename. // If ParseRequestURI fails, the input is just converted to OS specific slashes and returned. func UrlToFilename(s string) (string, bool) { u, err := url.ParseRequestURI(s) if err != nil { return filepath.FromSlash(s), false } p := u.Path if p == "" { p, _ = url.QueryUnescape(u.Opaque) return filepath.FromSlash(p), true } p = filepath.FromSlash(p) if u.Host != "" { // C:\data\file.txt p = strings.ToUpper(u.Host) + ":" + p } return p, true } // URLEscape escapes unicode letters. func URLEscape(uri string) string { // escape unicode letters u, err := url.Parse(uri) if err != nil { panic(err) } return u.String() } hugo-0.131.0/common/paths/url_test.go000066400000000000000000000076231465312036400174310ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package paths import ( "testing" qt "github.com/frankban/quicktest" ) func TestMakePermalink(t *testing.T) { type test struct { host, link, output string } data := []test{ {"http://abc.com/foo", "post/bar", "http://abc.com/foo/post/bar"}, {"http://abc.com/foo/", "post/bar", "http://abc.com/foo/post/bar"}, {"http://abc.com", "post/bar", "http://abc.com/post/bar"}, {"http://abc.com", "bar", "http://abc.com/bar"}, {"http://abc.com/foo/bar", "post/bar", "http://abc.com/foo/bar/post/bar"}, {"http://abc.com/foo/bar", "post/bar/", "http://abc.com/foo/bar/post/bar/"}, {"http://abc.com/foo", "post/bar?a=b#c", "http://abc.com/foo/post/bar?a=b#c"}, } for i, d := range data { output := MakePermalink(d.host, d.link).String() if d.output != output { t.Errorf("Test #%d failed. Expected %q got %q", i, d.output, output) } } } func TestAddContextRoot(t *testing.T) { tests := []struct { baseURL string url string expected string }{ {"http://example.com/sub/", "/foo", "/sub/foo"}, {"http://example.com/sub/", "/foo/index.html", "/sub/foo/index.html"}, {"http://example.com/sub1/sub2", "/foo", "/sub1/sub2/foo"}, {"http://example.com", "/foo", "/foo"}, // cannot guess that the context root is already added int the example below {"http://example.com/sub/", "/sub/foo", "/sub/sub/foo"}, {"http://example.com/тря", "/трям/", "/тря/трям/"}, {"http://example.com", "/", "/"}, {"http://example.com/bar", "//", "/bar/"}, } for _, test := range tests { output := AddContextRoot(test.baseURL, test.url) if output != test.expected { t.Errorf("Expected %#v, got %#v\n", test.expected, output) } } } func TestPretty(t *testing.T) { c := qt.New(t) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name.html")) c.Assert("/section/sub/name/index.html", qt.Equals, PrettifyURLPath("/section/sub/name.html")) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name/")) c.Assert("/section/name/index.html", qt.Equals, PrettifyURLPath("/section/name/index.html")) c.Assert("/index.html", qt.Equals, PrettifyURLPath("/index.html")) c.Assert("/name/index.xml", qt.Equals, PrettifyURLPath("/name.xml")) c.Assert("/", qt.Equals, PrettifyURLPath("/")) c.Assert("/", qt.Equals, PrettifyURLPath("")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name.html")) c.Assert("/section/sub/name", qt.Equals, PrettifyURL("/section/sub/name.html")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name/")) c.Assert("/section/name", qt.Equals, PrettifyURL("/section/name/index.html")) c.Assert("/", qt.Equals, PrettifyURL("/index.html")) c.Assert("/name/index.xml", qt.Equals, PrettifyURL("/name.xml")) c.Assert("/", qt.Equals, PrettifyURL("/")) c.Assert("/", qt.Equals, PrettifyURL("")) } func TestUgly(t *testing.T) { c := qt.New(t) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name.html")) c.Assert("/section/sub/name.html", qt.Equals, Uglify("/section/sub/name.html")) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name/")) c.Assert("/section/name.html", qt.Equals, Uglify("/section/name/index.html")) c.Assert("/index.html", qt.Equals, Uglify("/index.html")) c.Assert("/name.xml", qt.Equals, Uglify("/name.xml")) c.Assert("/", qt.Equals, Uglify("/")) c.Assert("/", qt.Equals, Uglify("")) } hugo-0.131.0/common/predicate/000077500000000000000000000000001465312036400160525ustar00rootroot00000000000000hugo-0.131.0/common/predicate/predicate.go000066400000000000000000000037201465312036400203430ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package predicate // P is a predicate function that tests whether a value of type T satisfies some condition. type P[T any] func(T) bool // And returns a predicate that is a short-circuiting logical AND of this and the given predicates. func (p P[T]) And(ps ...P[T]) P[T] { return func(v T) bool { for _, pp := range ps { if !pp(v) { return false } } if p == nil { return true } return p(v) } } // Or returns a predicate that is a short-circuiting logical OR of this and the given predicates. func (p P[T]) Or(ps ...P[T]) P[T] { return func(v T) bool { for _, pp := range ps { if pp(v) { return true } } if p == nil { return false } return p(v) } } // Negate returns a predicate that is a logical negation of this predicate. func (p P[T]) Negate() P[T] { return func(v T) bool { return !p(v) } } // Filter returns a new slice holding only the elements of s that satisfy p. // Filter modifies the contents of the slice s and returns the modified slice, which may have a smaller length. func (p P[T]) Filter(s []T) []T { var n int for _, v := range s { if p(v) { s[n] = v n++ } } return s[:n] } // FilterCopy returns a new slice holding only the elements of s that satisfy p. func (p P[T]) FilterCopy(s []T) []T { var result []T for _, v := range s { if p(v) { result = append(result, v) } } return result } hugo-0.131.0/common/predicate/predicate_test.go000066400000000000000000000035641465312036400214100ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package predicate_test import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/predicate" ) func TestAdd(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 c.Assert(p(1), qt.IsTrue) c.Assert(p(2), qt.IsFalse) neg := p.Negate() c.Assert(neg(1), qt.IsFalse) c.Assert(neg(2), qt.IsTrue) and := p.And(intP2) c.Assert(and(1), qt.IsFalse) c.Assert(and(2), qt.IsFalse) c.Assert(and(10), qt.IsTrue) or := p.Or(intP2) c.Assert(or(1), qt.IsTrue) c.Assert(or(2), qt.IsTrue) c.Assert(or(10), qt.IsTrue) c.Assert(or(11), qt.IsFalse) } func TestFilter(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 p = p.Or(intP2) ints := []int{1, 2, 3, 4, 1, 6, 7, 8, 2} c.Assert(p.Filter(ints), qt.DeepEquals, []int{1, 2, 1, 2}) c.Assert(ints, qt.DeepEquals, []int{1, 2, 1, 2, 1, 6, 7, 8, 2}) } func TestFilterCopy(t *testing.T) { c := qt.New(t) var p predicate.P[int] = intP1 p = p.Or(intP2) ints := []int{1, 2, 3, 4, 1, 6, 7, 8, 2} c.Assert(p.FilterCopy(ints), qt.DeepEquals, []int{1, 2, 1, 2}) c.Assert(ints, qt.DeepEquals, []int{1, 2, 3, 4, 1, 6, 7, 8, 2}) } var intP1 = func(i int) bool { if i == 10 { return true } return i == 1 } var intP2 = func(i int) bool { if i == 10 { return true } return i == 2 } hugo-0.131.0/common/rungroup/000077500000000000000000000000001465312036400157735ustar00rootroot00000000000000hugo-0.131.0/common/rungroup/rungroup.go000066400000000000000000000040141465312036400202020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package rungroup import ( "context" "golang.org/x/sync/errgroup" ) // Group is a group of workers that can be used to enqueue work and wait for // them to finish. type Group[T any] interface { Enqueue(T) error Wait() error } type runGroup[T any] struct { ctx context.Context g *errgroup.Group ch chan T } // Config is the configuration for a new Group. type Config[T any] struct { NumWorkers int Handle func(context.Context, T) error } // Run creates a new Group with the given configuration. func Run[T any](ctx context.Context, cfg Config[T]) Group[T] { if cfg.NumWorkers <= 0 { cfg.NumWorkers = 1 } if cfg.Handle == nil { panic("Handle must be set") } g, ctx := errgroup.WithContext(ctx) // Buffered for performance. ch := make(chan T, cfg.NumWorkers) for i := 0; i < cfg.NumWorkers; i++ { g.Go(func() error { for { select { case <-ctx.Done(): return nil case v, ok := <-ch: if !ok { return nil } if err := cfg.Handle(ctx, v); err != nil { return err } } } }) } return &runGroup[T]{ ctx: ctx, g: g, ch: ch, } } // Enqueue enqueues a new item to be handled by the workers. func (r *runGroup[T]) Enqueue(t T) error { select { case <-r.ctx.Done(): return nil case r.ch <- t: } return nil } // Wait waits for all workers to finish and returns the first error. func (r *runGroup[T]) Wait() error { close(r.ch) return r.g.Wait() } hugo-0.131.0/common/rungroup/rungroup_test.go000066400000000000000000000020251465312036400212410ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package rungroup import ( "context" "testing" qt "github.com/frankban/quicktest" ) func TestNew(t *testing.T) { c := qt.New(t) var result int adder := func(ctx context.Context, i int) error { result += i return nil } g := Run[int]( context.Background(), Config[int]{ Handle: adder, }, ) c.Assert(g, qt.IsNotNil) g.Enqueue(32) g.Enqueue(33) c.Assert(g.Wait(), qt.IsNil) c.Assert(result, qt.Equals, 65) } hugo-0.131.0/common/tasks/000077500000000000000000000000001465312036400152375ustar00rootroot00000000000000hugo-0.131.0/common/tasks/tasks.go000066400000000000000000000062021465312036400167130ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package tasks import ( "sync" "time" ) // RunEvery runs a function at intervals defined by the function itself. // Functions can be added and removed while running. type RunEvery struct { // Any error returned from the function will be passed to this function. HandleError func(string, error) // If set, the function will be run immediately. RunImmediately bool // The named functions to run. funcs map[string]*Func mu sync.Mutex started bool closed bool quit chan struct{} } type Func struct { // The shortest interval between each run. IntervalLow time.Duration // The longest interval between each run. IntervalHigh time.Duration // The function to run. F func(interval time.Duration) (time.Duration, error) interval time.Duration last time.Time } func (r *RunEvery) Start() error { if r.started { return nil } r.started = true r.quit = make(chan struct{}) go func() { if r.RunImmediately { r.run() } ticker := time.NewTicker(500 * time.Millisecond) defer ticker.Stop() for { select { case <-r.quit: return case <-ticker.C: r.run() } } }() return nil } // Close stops the RunEvery from running. func (r *RunEvery) Close() error { if r.closed { return nil } r.closed = true if r.quit != nil { close(r.quit) } return nil } // Add adds a function to the RunEvery. func (r *RunEvery) Add(name string, f Func) { r.mu.Lock() defer r.mu.Unlock() if r.funcs == nil { r.funcs = make(map[string]*Func) } if f.IntervalLow == 0 { f.IntervalLow = 500 * time.Millisecond } if f.IntervalHigh <= f.IntervalLow { f.IntervalHigh = 20 * time.Second } start := f.IntervalHigh / 3 if start < f.IntervalLow { start = f.IntervalLow } f.interval = start f.last = time.Now() r.funcs[name] = &f } // Remove removes a function from the RunEvery. func (r *RunEvery) Remove(name string) { r.mu.Lock() defer r.mu.Unlock() delete(r.funcs, name) } // Has returns whether the RunEvery has a function with the given name. func (r *RunEvery) Has(name string) bool { r.mu.Lock() defer r.mu.Unlock() _, found := r.funcs[name] return found } func (r *RunEvery) run() { r.mu.Lock() defer r.mu.Unlock() for name, f := range r.funcs { if time.Now().Before(f.last.Add(f.interval)) { continue } f.last = time.Now() interval, err := f.F(f.interval) if err != nil && r.HandleError != nil { r.HandleError(name, err) } if interval < f.IntervalLow { interval = f.IntervalLow } if interval > f.IntervalHigh { interval = f.IntervalHigh } f.interval = interval } } hugo-0.131.0/common/terminal/000077500000000000000000000000001465312036400157255ustar00rootroot00000000000000hugo-0.131.0/common/terminal/colors.go000066400000000000000000000041061465312036400175560ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package terminal contains helper for the terminal, such as coloring output. package terminal import ( "fmt" "os" "runtime" "strings" isatty "github.com/mattn/go-isatty" ) const ( errorColor = "\033[1;31m%s\033[0m" warningColor = "\033[0;33m%s\033[0m" noticeColor = "\033[1;36m%s\033[0m" ) // PrintANSIColors returns false if NO_COLOR env variable is set, // else IsTerminal(f). func PrintANSIColors(f *os.File) bool { if os.Getenv("NO_COLOR") != "" { return false } return IsTerminal(f) } // IsTerminal return true if the file descriptor is terminal and the TERM // environment variable isn't a dumb one. func IsTerminal(f *os.File) bool { if runtime.GOOS == "windows" { return false } fd := f.Fd() return os.Getenv("TERM") != "dumb" && (isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd)) } // Notice colorizes the string in a noticeable color. func Notice(s string) string { return colorize(s, noticeColor) } // Error colorizes the string in a colour that grabs attention. func Error(s string) string { return colorize(s, errorColor) } // Warning colorizes the string in a colour that warns. func Warning(s string) string { return colorize(s, warningColor) } // colorize s in color. func colorize(s, color string) string { s = fmt.Sprintf(color, doublePercent(s)) return singlePercent(s) } func doublePercent(str string) string { return strings.Replace(str, "%", "%%", -1) } func singlePercent(str string) string { return strings.Replace(str, "%%", "%", -1) } hugo-0.131.0/common/text/000077500000000000000000000000001465312036400150765ustar00rootroot00000000000000hugo-0.131.0/common/text/position.go000066400000000000000000000052011465312036400172670ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package text import ( "fmt" "os" "strings" "github.com/gohugoio/hugo/common/terminal" ) // Positioner represents a thing that knows its position in a text file or stream, // typically an error. type Positioner interface { // Position returns the current position. // Useful in error logging, e.g. {{ errorf "error in code block: %s" .Position }}. Position() Position } // Position holds a source position in a text file or stream. type Position struct { Filename string // filename, if any Offset int // byte offset, starting at 0. It's set to -1 if not provided. LineNumber int // line number, starting at 1 ColumnNumber int // column number, starting at 1 (character count per line) } func (pos Position) String() string { if pos.Filename == "" { pos.Filename = "" } return positionStringFormatfunc(pos) } // IsValid returns true if line number is > 0. func (pos Position) IsValid() bool { return pos.LineNumber > 0 } var positionStringFormatfunc func(p Position) string func createPositionStringFormatter(formatStr string) func(p Position) string { if formatStr == "" { formatStr = "\":file::line::col\"" } identifiers := []string{":file", ":line", ":col"} var identifiersFound []string for i := range formatStr { for _, id := range identifiers { if strings.HasPrefix(formatStr[i:], id) { identifiersFound = append(identifiersFound, id) } } } replacer := strings.NewReplacer(":file", "%s", ":line", "%d", ":col", "%d") format := replacer.Replace(formatStr) f := func(pos Position) string { args := make([]any, len(identifiersFound)) for i, id := range identifiersFound { switch id { case ":file": args[i] = pos.Filename case ":line": args[i] = pos.LineNumber case ":col": args[i] = pos.ColumnNumber } } msg := fmt.Sprintf(format, args...) if terminal.PrintANSIColors(os.Stdout) { return terminal.Notice(msg) } return msg } return f } func init() { positionStringFormatfunc = createPositionStringFormatter(os.Getenv("HUGO_FILE_LOG_FORMAT")) } hugo-0.131.0/common/text/position_test.go000066400000000000000000000023621465312036400203330ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package text import ( "testing" qt "github.com/frankban/quicktest" ) func TestPositionStringFormatter(t *testing.T) { c := qt.New(t) pos := Position{Filename: "/my/file.txt", LineNumber: 12, ColumnNumber: 13, Offset: 14} c.Assert(createPositionStringFormatter(":file|:col|:line")(pos), qt.Equals, "/my/file.txt|13|12") c.Assert(createPositionStringFormatter(":col|:file|:line")(pos), qt.Equals, "13|/my/file.txt|12") c.Assert(createPositionStringFormatter("好::col")(pos), qt.Equals, "好:13") c.Assert(createPositionStringFormatter("")(pos), qt.Equals, "\"/my/file.txt:12:13\"") c.Assert(pos.String(), qt.Equals, "\"/my/file.txt:12:13\"") } hugo-0.131.0/common/text/transform.go000066400000000000000000000037171465312036400174500ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package text import ( "strings" "sync" "unicode" "golang.org/x/text/runes" "golang.org/x/text/transform" "golang.org/x/text/unicode/norm" ) var accentTransformerPool = &sync.Pool{ New: func() any { return transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) }, } // RemoveAccents removes all accents from b. func RemoveAccents(b []byte) []byte { t := accentTransformerPool.Get().(transform.Transformer) b, _, _ = transform.Bytes(t, b) t.Reset() accentTransformerPool.Put(t) return b } // RemoveAccentsString removes all accents from s. func RemoveAccentsString(s string) string { t := accentTransformerPool.Get().(transform.Transformer) s, _, _ = transform.String(t, s) t.Reset() accentTransformerPool.Put(t) return s } // Chomp removes trailing newline characters from s. func Chomp(s string) string { return strings.TrimRightFunc(s, func(r rune) bool { return r == '\n' || r == '\r' }) } // Puts adds a trailing \n none found. func Puts(s string) string { if s == "" || s[len(s)-1] == '\n' { return s } return s + "\n" } // VisitLinesAfter calls the given function for each line, including newlines, in the given string. func VisitLinesAfter(s string, fn func(line string)) { high := strings.IndexRune(s, '\n') for high != -1 { fn(s[:high+1]) s = s[high+1:] high = strings.IndexRune(s, '\n') } if s != "" { fn(s) } } hugo-0.131.0/common/text/transform_test.go000066400000000000000000000033101465312036400204740ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package text import ( "testing" qt "github.com/frankban/quicktest" ) func TestRemoveAccents(t *testing.T) { c := qt.New(t) c.Assert(string(RemoveAccents([]byte("Resumé"))), qt.Equals, "Resume") c.Assert(string(RemoveAccents([]byte("Hugo Rocks!"))), qt.Equals, "Hugo Rocks!") c.Assert(string(RemoveAccentsString("Resumé")), qt.Equals, "Resume") } func TestChomp(t *testing.T) { c := qt.New(t) c.Assert(Chomp("\nA\n"), qt.Equals, "\nA") c.Assert(Chomp("A\r\n"), qt.Equals, "A") } func TestPuts(t *testing.T) { c := qt.New(t) c.Assert(Puts("A"), qt.Equals, "A\n") c.Assert(Puts("\nA\n"), qt.Equals, "\nA\n") c.Assert(Puts(""), qt.Equals, "") } func TestVisitLinesAfter(t *testing.T) { const lines = `line 1 line 2 line 3` var collected []string VisitLinesAfter(lines, func(s string) { collected = append(collected, s) }) c := qt.New(t) c.Assert(collected, qt.DeepEquals, []string{"line 1\n", "line 2\n", "\n", "line 3"}) } func BenchmarkVisitLinesAfter(b *testing.B) { const lines = `line 1 line 2 line 3` for i := 0; i < b.N; i++ { VisitLinesAfter(lines, func(s string) { }) } } hugo-0.131.0/common/types/000077500000000000000000000000001465312036400152565ustar00rootroot00000000000000hugo-0.131.0/common/types/closer.go000066400000000000000000000020021465312036400170660ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package types import "sync" type Closer interface { Close() error } type CloseAdder interface { Add(Closer) } type Closers struct { mu sync.Mutex cs []Closer } func (cs *Closers) Add(c Closer) { cs.mu.Lock() defer cs.mu.Unlock() cs.cs = append(cs.cs, c) } func (cs *Closers) Close() error { cs.mu.Lock() defer cs.mu.Unlock() for _, c := range cs.cs { c.Close() } cs.cs = cs.cs[:0] return nil } hugo-0.131.0/common/types/convert.go000066400000000000000000000061371465312036400172740ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package types import ( "encoding/json" "fmt" "html/template" "reflect" "time" "github.com/spf13/cast" ) // ToDuration converts v to time.Duration. // See ToDurationE if you need to handle errors. func ToDuration(v any) time.Duration { d, _ := ToDurationE(v) return d } // ToDurationE converts v to time.Duration. func ToDurationE(v any) (time.Duration, error) { if n := cast.ToInt(v); n > 0 { return time.Duration(n) * time.Millisecond, nil } d, err := time.ParseDuration(cast.ToString(v)) if err != nil { return 0, fmt.Errorf("cannot convert %v to time.Duration", v) } return d, nil } // ToStringSlicePreserveString is the same as ToStringSlicePreserveStringE, // but it never fails. func ToStringSlicePreserveString(v any) []string { vv, _ := ToStringSlicePreserveStringE(v) return vv } // ToStringSlicePreserveStringE converts v to a string slice. // If v is a string, it will be wrapped in a string slice. func ToStringSlicePreserveStringE(v any) ([]string, error) { if v == nil { return nil, nil } if sds, ok := v.(string); ok { return []string{sds}, nil } result, err := cast.ToStringSliceE(v) if err == nil { return result, nil } // Probably []int or similar. Fall back to reflect. vv := reflect.ValueOf(v) switch vv.Kind() { case reflect.Slice, reflect.Array: result = make([]string, vv.Len()) for i := 0; i < vv.Len(); i++ { s, err := cast.ToStringE(vv.Index(i).Interface()) if err != nil { return nil, err } result[i] = s } return result, nil default: return nil, fmt.Errorf("failed to convert %T to a string slice", v) } } // TypeToString converts v to a string if it's a valid string type. // Note that this will not try to convert numeric values etc., // use ToString for that. func TypeToString(v any) (string, bool) { switch s := v.(type) { case string: return s, true case template.HTML: return string(s), true case template.CSS: return string(s), true case template.HTMLAttr: return string(s), true case template.JS: return string(s), true case template.JSStr: return string(s), true case template.URL: return string(s), true case template.Srcset: return string(s), true } return "", false } // ToString converts v to a string. func ToString(v any) string { s, _ := ToStringE(v) return s } // ToStringE converts v to a string. func ToStringE(v any) (string, error) { if s, ok := TypeToString(v); ok { return s, nil } switch s := v.(type) { case json.RawMessage: return string(s), nil default: return cast.ToStringE(v) } } hugo-0.131.0/common/types/convert_test.go000066400000000000000000000031711465312036400203260ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package types import ( "encoding/json" "testing" "time" qt "github.com/frankban/quicktest" ) func TestToStringSlicePreserveString(t *testing.T) { c := qt.New(t) c.Assert(ToStringSlicePreserveString("Hugo"), qt.DeepEquals, []string{"Hugo"}) c.Assert(ToStringSlicePreserveString(qt.Commentf("Hugo")), qt.DeepEquals, []string{"Hugo"}) c.Assert(ToStringSlicePreserveString([]any{"A", "B"}), qt.DeepEquals, []string{"A", "B"}) c.Assert(ToStringSlicePreserveString([]int{1, 3}), qt.DeepEquals, []string{"1", "3"}) c.Assert(ToStringSlicePreserveString(nil), qt.IsNil) } func TestToString(t *testing.T) { c := qt.New(t) c.Assert(ToString([]byte("Hugo")), qt.Equals, "Hugo") c.Assert(ToString(json.RawMessage("Hugo")), qt.Equals, "Hugo") } func TestToDuration(t *testing.T) { c := qt.New(t) c.Assert(ToDuration("200ms"), qt.Equals, 200*time.Millisecond) c.Assert(ToDuration("200"), qt.Equals, 200*time.Millisecond) c.Assert(ToDuration("4m"), qt.Equals, 4*time.Minute) c.Assert(ToDuration("asdfadf"), qt.Equals, time.Duration(0)) } hugo-0.131.0/common/types/css/000077500000000000000000000000001465312036400160465ustar00rootroot00000000000000hugo-0.131.0/common/types/css/csstypes.go000066400000000000000000000014451465312036400202560ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package css // QuotedString is a string that needs to be quoted in CSS. type QuotedString string // UnquotedString is a string that does not need to be quoted in CSS. type UnquotedString string hugo-0.131.0/common/types/evictingqueue.go000066400000000000000000000053361465312036400204710ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // 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. // Package types contains types shared between packages in Hugo. package types import ( "sync" ) // EvictingStringQueue is a queue which automatically evicts elements from the head of // the queue when attempting to add new elements onto the queue and it is full. // This queue orders elements LIFO (last-in-first-out). It throws away duplicates. // Note: This queue currently does not contain any remove (poll etc.) methods. type EvictingStringQueue struct { size int vals []string set map[string]bool mu sync.Mutex } // NewEvictingStringQueue creates a new queue with the given size. func NewEvictingStringQueue(size int) *EvictingStringQueue { return &EvictingStringQueue{size: size, set: make(map[string]bool)} } // Add adds a new string to the tail of the queue if it's not already there. func (q *EvictingStringQueue) Add(v string) *EvictingStringQueue { q.mu.Lock() if q.set[v] { q.mu.Unlock() return q } if len(q.set) == q.size { // Full delete(q.set, q.vals[0]) q.vals = append(q.vals[:0], q.vals[1:]...) } q.set[v] = true q.vals = append(q.vals, v) q.mu.Unlock() return q } func (q *EvictingStringQueue) Len() int { if q == nil { return 0 } q.mu.Lock() defer q.mu.Unlock() return len(q.vals) } // Contains returns whether the queue contains v. func (q *EvictingStringQueue) Contains(v string) bool { q.mu.Lock() defer q.mu.Unlock() return q.set[v] } // Peek looks at the last element added to the queue. func (q *EvictingStringQueue) Peek() string { q.mu.Lock() l := len(q.vals) if l == 0 { q.mu.Unlock() return "" } elem := q.vals[l-1] q.mu.Unlock() return elem } // PeekAll looks at all the elements in the queue, with the newest first. func (q *EvictingStringQueue) PeekAll() []string { q.mu.Lock() vals := make([]string, len(q.vals)) copy(vals, q.vals) q.mu.Unlock() for i, j := 0, len(vals)-1; i < j; i, j = i+1, j-1 { vals[i], vals[j] = vals[j], vals[i] } return vals } // PeekAllSet returns PeekAll as a set. func (q *EvictingStringQueue) PeekAllSet() map[string]bool { all := q.PeekAll() set := make(map[string]bool) for _, v := range all { set[v] = true } return set } hugo-0.131.0/common/types/evictingqueue_test.go000066400000000000000000000035231465312036400215240ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // 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. package types import ( "sync" "testing" qt "github.com/frankban/quicktest" ) func TestEvictingStringQueue(t *testing.T) { c := qt.New(t) queue := NewEvictingStringQueue(3) c.Assert(queue.Peek(), qt.Equals, "") queue.Add("a") queue.Add("b") queue.Add("a") c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("b") c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("a") queue.Add("b") c.Assert(queue.Contains("a"), qt.Equals, true) c.Assert(queue.Contains("foo"), qt.Equals, false) c.Assert(queue.PeekAll(), qt.DeepEquals, []string{"b", "a"}) c.Assert(queue.Peek(), qt.Equals, "b") queue.Add("c") queue.Add("d") // Overflowed, a should now be removed. c.Assert(queue.PeekAll(), qt.DeepEquals, []string{"d", "c", "b"}) c.Assert(len(queue.PeekAllSet()), qt.Equals, 3) c.Assert(queue.PeekAllSet()["c"], qt.Equals, true) } func TestEvictingStringQueueConcurrent(t *testing.T) { var wg sync.WaitGroup val := "someval" queue := NewEvictingStringQueue(3) for j := 0; j < 100; j++ { wg.Add(1) go func() { defer wg.Done() queue.Add(val) v := queue.Peek() if v != val { t.Error("wrong val") } vals := queue.PeekAll() if len(vals) != 1 || vals[0] != val { t.Error("wrong val") } }() } wg.Wait() } hugo-0.131.0/common/types/hstring/000077500000000000000000000000001465312036400167345ustar00rootroot00000000000000hugo-0.131.0/common/types/hstring/stringtypes.go000066400000000000000000000013141465312036400216550ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hstring type RenderedString string func (s RenderedString) String() string { return string(s) } hugo-0.131.0/common/types/hstring/stringtypes_test.go000066400000000000000000000017531465312036400227230ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package hstring import ( "html/template" "testing" qt "github.com/frankban/quicktest" "github.com/spf13/cast" ) func TestRenderedString(t *testing.T) { c := qt.New(t) // Validate that it will behave like a string in Hugo settings. c.Assert(cast.ToString(RenderedString("Hugo")), qt.Equals, "Hugo") c.Assert(template.HTML(RenderedString("Hugo")), qt.Equals, template.HTML("Hugo")) } hugo-0.131.0/common/types/types.go000066400000000000000000000055631465312036400167620ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. // Package types contains types shared between packages in Hugo. package types import ( "fmt" "reflect" "sync/atomic" "github.com/spf13/cast" ) // RLocker represents the read locks in sync.RWMutex. type RLocker interface { RLock() RUnlock() } // KeyValue is a interface{} tuple. type KeyValue struct { Key any Value any } // KeyValueStr is a string tuple. type KeyValueStr struct { Key string Value string } // KeyValues holds an key and a slice of values. type KeyValues struct { Key any Values []any } // KeyString returns the key as a string, an empty string if conversion fails. func (k KeyValues) KeyString() string { return cast.ToString(k.Key) } func (k KeyValues) String() string { return fmt.Sprintf("%v: %v", k.Key, k.Values) } // NewKeyValuesStrings takes a given key and slice of values and returns a new // KeyValues struct. func NewKeyValuesStrings(key string, values ...string) KeyValues { iv := make([]any, len(values)) for i := 0; i < len(values); i++ { iv[i] = values[i] } return KeyValues{Key: key, Values: iv} } // Zeroer, as implemented by time.Time, will be used by the truth template // funcs in Hugo (if, with, not, and, or). type Zeroer interface { IsZero() bool } // IsNil reports whether v is nil. func IsNil(v any) bool { if v == nil { return true } value := reflect.ValueOf(v) switch value.Kind() { case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: return value.IsNil() } return false } // DevMarker is a marker interface for types that should only be used during // development. type DevMarker interface { DevOnly() } // Unwrapper is implemented by types that can unwrap themselves. type Unwrapper interface { // Unwrapv is for internal use only. // It got its slightly odd name to prevent collisions with user types. Unwrapv() any } // Unwrap returns the underlying value of v if it implements Unwrapper, otherwise v is returned. func Unwrapv(v any) any { if u, ok := v.(Unwrapper); ok { return u.Unwrapv() } return v } // LowHigh is typically used to represent a slice boundary. type LowHigh struct { Low int High int } // This is only used for debugging purposes. var InvocationCounter atomic.Int64 // NewTrue returns a pointer to b. func NewBool(b bool) *bool { return &b } hugo-0.131.0/common/types/types_test.go000066400000000000000000000015741465312036400200170ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // 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. package types import ( "testing" qt "github.com/frankban/quicktest" ) func TestKeyValues(t *testing.T) { c := qt.New(t) kv := NewKeyValuesStrings("key", "a1", "a2") c.Assert(kv.KeyString(), qt.Equals, "key") c.Assert(kv.Values, qt.DeepEquals, []any{"a1", "a2"}) } hugo-0.131.0/common/urls/000077500000000000000000000000001465312036400150775ustar00rootroot00000000000000hugo-0.131.0/common/urls/baseURL.go000066400000000000000000000060041465312036400167230ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package urls import ( "fmt" "net/url" "strconv" "strings" ) // A BaseURL in Hugo is normally on the form scheme://path, but the // form scheme: is also valid (mailto:hugo@rules.com). type BaseURL struct { url *url.URL WithPath string WithPathNoTrailingSlash string WithoutPath string BasePath string BasePathNoTrailingSlash string } func (b BaseURL) String() string { return b.WithPath } func (b BaseURL) Path() string { return b.url.Path } func (b BaseURL) Port() int { p, _ := strconv.Atoi(b.url.Port()) return p } // HostURL returns the URL to the host root without any path elements. func (b BaseURL) HostURL() string { return strings.TrimSuffix(b.String(), b.Path()) } // WithProtocol returns the BaseURL prefixed with the given protocol. // The Protocol is normally of the form "scheme://", i.e. "webcal://". func (b BaseURL) WithProtocol(protocol string) (BaseURL, error) { u := b.URL() scheme := protocol isFullProtocol := strings.HasSuffix(scheme, "://") isOpaqueProtocol := strings.HasSuffix(scheme, ":") if isFullProtocol { scheme = strings.TrimSuffix(scheme, "://") } else if isOpaqueProtocol { scheme = strings.TrimSuffix(scheme, ":") } u.Scheme = scheme if isFullProtocol && u.Opaque != "" { u.Opaque = "//" + u.Opaque } else if isOpaqueProtocol && u.Opaque == "" { return BaseURL{}, fmt.Errorf("cannot determine BaseURL for protocol %q", protocol) } return newBaseURLFromURL(u) } func (b BaseURL) WithPort(port int) (BaseURL, error) { u := b.URL() u.Host = u.Hostname() + ":" + strconv.Itoa(port) return newBaseURLFromURL(u) } // URL returns a copy of the internal URL. // The copy can be safely used and modified. func (b BaseURL) URL() *url.URL { c := *b.url return &c } func NewBaseURLFromString(b string) (BaseURL, error) { u, err := url.Parse(b) if err != nil { return BaseURL{}, err } return newBaseURLFromURL(u) } func newBaseURLFromURL(u *url.URL) (BaseURL, error) { // A baseURL should always have a trailing slash, see #11669. if !strings.HasSuffix(u.Path, "/") { u.Path += "/" } baseURL := BaseURL{url: u, WithPath: u.String(), WithPathNoTrailingSlash: strings.TrimSuffix(u.String(), "/")} baseURLNoPath := baseURL.URL() baseURLNoPath.Path = "" baseURL.WithoutPath = baseURLNoPath.String() baseURL.BasePath = u.Path baseURL.BasePathNoTrailingSlash = strings.TrimSuffix(u.Path, "/") return baseURL, nil } hugo-0.131.0/common/urls/baseURL_test.go000066400000000000000000000052011465312036400177600ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package urls import ( "testing" qt "github.com/frankban/quicktest" ) func TestBaseURL(t *testing.T) { c := qt.New(t) b, err := NewBaseURLFromString("http://example.com/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/") b, err = NewBaseURLFromString("http://example.com") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/") c.Assert(b.WithPathNoTrailingSlash, qt.Equals, "http://example.com") c.Assert(b.BasePath, qt.Equals, "/") p, err := b.WithProtocol("webcal://") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://example.com/") p, err = b.WithProtocol("webcal") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://example.com/") _, err = b.WithProtocol("mailto:") c.Assert(err, qt.Not(qt.IsNil)) b, err = NewBaseURLFromString("mailto:hugo@rules.com") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "mailto:hugo@rules.com") // These are pretty constructed p, err = b.WithProtocol("webcal") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal:hugo@rules.com") p, err = b.WithProtocol("webcal://") c.Assert(err, qt.IsNil) c.Assert(p.String(), qt.Equals, "webcal://hugo@rules.com") // Test with "non-URLs". Some people will try to use these as a way to get // relative URLs working etc. b, err = NewBaseURLFromString("/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "/") b, err = NewBaseURLFromString("") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "/") // BaseURL with sub path b, err = NewBaseURLFromString("http://example.com/sub") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/sub/") c.Assert(b.WithPathNoTrailingSlash, qt.Equals, "http://example.com/sub") c.Assert(b.BasePath, qt.Equals, "/sub/") c.Assert(b.BasePathNoTrailingSlash, qt.Equals, "/sub") b, err = NewBaseURLFromString("http://example.com/sub/") c.Assert(err, qt.IsNil) c.Assert(b.String(), qt.Equals, "http://example.com/sub/") c.Assert(b.HostURL(), qt.Equals, "http://example.com") } hugo-0.131.0/common/urls/ref.go000066400000000000000000000016031465312036400162020ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package urls // RefLinker is implemented by those who support reference linking. // args must contain a path, but can also point to the target // language or output format. type RefLinker interface { Ref(args map[string]any) (string, error) RelRef(args map[string]any) (string, error) } hugo-0.131.0/compare/000077500000000000000000000000001465312036400142505ustar00rootroot00000000000000hugo-0.131.0/compare/compare.go000066400000000000000000000036301465312036400162270ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package compare // Eqer can be used to determine if this value is equal to the other. // The semantics of equals is that the two value are interchangeable // in the Hugo templates. type Eqer interface { // Eq returns whether this value is equal to the other. // This is for internal use. Eq(other any) bool } // ProbablyEqer is an equal check that may return false positives, but never // a false negative. type ProbablyEqer interface { // For internal use. ProbablyEq(other any) bool } // Comparer can be used to compare two values. // This will be used when using the le, ge etc. operators in the templates. // Compare returns -1 if the given version is less than, 0 if equal and 1 if greater than // the running version. type Comparer interface { Compare(other any) int } // Eq returns whether v1 is equal to v2. // It will use the Eqer interface if implemented, which // defines equals when two value are interchangeable // in the Hugo templates. func Eq(v1, v2 any) bool { if v1 == nil || v2 == nil { return v1 == v2 } if eqer, ok := v1.(Eqer); ok { return eqer.Eq(v2) } return v1 == v2 } // ProbablyEq returns whether v1 is probably equal to v2. func ProbablyEq(v1, v2 any) bool { if Eq(v1, v2) { return true } if peqer, ok := v1.(ProbablyEqer); ok { return peqer.ProbablyEq(v2) } return false } hugo-0.131.0/compare/compare_strings.go000066400000000000000000000042371465312036400200040ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package compare import ( "strings" "unicode" "unicode/utf8" ) // Strings returns an integer comparing two strings lexicographically. func Strings(s, t string) int { c := compareFold(s, t) if c == 0 { // "B" and "b" would be the same so we need a tiebreaker. return strings.Compare(s, t) } return c } // This function is derived from strings.EqualFold in Go's stdlib. // https://github.com/golang/go/blob/ad4a58e31501bce5de2aad90a620eaecdc1eecb8/src/strings/strings.go#L893 func compareFold(s, t string) int { for s != "" && t != "" { var sr, tr rune if s[0] < utf8.RuneSelf { sr, s = rune(s[0]), s[1:] } else { r, size := utf8.DecodeRuneInString(s) sr, s = r, s[size:] } if t[0] < utf8.RuneSelf { tr, t = rune(t[0]), t[1:] } else { r, size := utf8.DecodeRuneInString(t) tr, t = r, t[size:] } if tr == sr { continue } c := 1 if tr < sr { tr, sr = sr, tr c = -c } // ASCII only. if tr < utf8.RuneSelf { if sr >= 'A' && sr <= 'Z' { if tr <= 'Z' { // Same case. return -c } diff := tr - (sr + 'a' - 'A') if diff == 0 { continue } if diff < 0 { return c } if diff > 0 { return -c } } } // Unicode. r := unicode.SimpleFold(sr) for r != sr && r < tr { r = unicode.SimpleFold(r) } if r == tr { continue } return -c } if s == "" && t == "" { return 0 } if s == "" { return -1 } return 1 } // LessStrings returns whether s is less than t lexicographically. func LessStrings(s, t string) bool { return Strings(s, t) < 0 } hugo-0.131.0/compare/compare_strings_test.go000066400000000000000000000037171465312036400210450ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package compare import ( "sort" "strings" "testing" qt "github.com/frankban/quicktest" ) func TestCompare(t *testing.T) { c := qt.New(t) for _, test := range []struct { a string b string }{ {"a", "a"}, {"A", "a"}, {"Ab", "Ac"}, {"az", "Za"}, {"C", "D"}, {"B", "a"}, {"C", ""}, {"", ""}, {"αβδC", "ΑΒΔD"}, {"αβδC", "ΑΒΔ"}, {"αβδ", "ΑΒΔD"}, {"αβδ", "ΑΒΔ"}, {"β", "δ"}, {"好", strings.ToLower("好")}, } { expect := strings.Compare(strings.ToLower(test.a), strings.ToLower(test.b)) got := compareFold(test.a, test.b) c.Assert(got, qt.Equals, expect) } } func TestLexicographicSort(t *testing.T) { c := qt.New(t) s := []string{"b", "Bz", "ba", "A", "Ba", "ba"} sort.Slice(s, func(i, j int) bool { return LessStrings(s[i], s[j]) }) c.Assert(s, qt.DeepEquals, []string{"A", "b", "Ba", "ba", "ba", "Bz"}) } func BenchmarkStringSort(b *testing.B) { prototype := []string{"b", "Bz", "zz", "ba", "αβδ αβδ αβδ", "A", "Ba", "ba", "nnnnasdfnnn", "AAgæåz", "αβδC"} b.Run("LessStrings", func(b *testing.B) { ss := make([][]string, b.N) for i := 0; i < b.N; i++ { ss[i] = make([]string, len(prototype)) copy(ss[i], prototype) } b.ResetTimer() for i := 0; i < b.N; i++ { sss := ss[i] sort.Slice(sss, func(i, j int) bool { return LessStrings(sss[i], sss[j]) }) } }) } hugo-0.131.0/config/000077500000000000000000000000001465312036400140675ustar00rootroot00000000000000hugo-0.131.0/config/allconfig/000077500000000000000000000000001465312036400160255ustar00rootroot00000000000000hugo-0.131.0/config/allconfig/allconfig.go000066400000000000000000000771111465312036400203210ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package allconfig contains the full configuration for Hugo. // { "name": "Configuration", "description": "This section holds all configuration options in Hugo." } package allconfig import ( "errors" "fmt" "reflect" "regexp" "sort" "strconv" "strings" "sync" "time" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/cache/httpcache" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/privacy" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/config/services" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugolib/segments" "github.com/gohugoio/hugo/langs" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/minifiers" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/navigation" "github.com/gohugoio/hugo/output" "github.com/gohugoio/hugo/related" "github.com/gohugoio/hugo/resources/images" "github.com/gohugoio/hugo/resources/kinds" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/page/pagemeta" "github.com/spf13/afero" xmaps "golang.org/x/exp/maps" ) // InternalConfig is the internal configuration for Hugo, not read from any user provided config file. type InternalConfig struct { // Server mode? Running bool Quiet bool Verbose bool Clock string Watch bool FastRenderMode bool LiveReloadPort int } // All non-params config keys for language. var configLanguageKeys map[string]bool func init() { skip := map[string]bool{ "internal": true, "c": true, "rootconfig": true, } configLanguageKeys = make(map[string]bool) addKeys := func(v reflect.Value) { for i := 0; i < v.NumField(); i++ { name := strings.ToLower(v.Type().Field(i).Name) if skip[name] { continue } configLanguageKeys[name] = true } } addKeys(reflect.ValueOf(Config{})) addKeys(reflect.ValueOf(RootConfig{})) addKeys(reflect.ValueOf(config.CommonDirs{})) addKeys(reflect.ValueOf(langs.LanguageConfig{})) } type Config struct { // For internal use only. Internal InternalConfig `mapstructure:"-" json:"-"` // For internal use only. C *ConfigCompiled `mapstructure:"-" json:"-"` RootConfig // Author information. // Deprecated: Use taxonomies instead. Author map[string]any // Social links. // Deprecated: Use .Site.Params instead. Social map[string]string // The build configuration section contains build-related configuration options. // {"identifiers": ["build"] } Build config.BuildConfig `mapstructure:"-"` // The caches configuration section contains cache-related configuration options. // {"identifiers": ["caches"] } Caches filecache.Configs `mapstructure:"-"` // The httpcache configuration section contains HTTP-cache-related configuration options. // {"identifiers": ["httpcache"] } HTTPCache httpcache.Config `mapstructure:"-"` // The markup configuration section contains markup-related configuration options. // {"identifiers": ["markup"] } Markup markup_config.Config `mapstructure:"-"` // The mediatypes configuration section maps the MIME type (a string) to a configuration object for that type. // {"identifiers": ["mediatypes"], "refs": ["types:media:type"] } MediaTypes *config.ConfigNamespace[map[string]media.MediaTypeConfig, media.Types] `mapstructure:"-"` Imaging *config.ConfigNamespace[images.ImagingConfig, images.ImagingConfigInternal] `mapstructure:"-"` // The outputformats configuration sections maps a format name (a string) to a configuration object for that format. OutputFormats *config.ConfigNamespace[map[string]output.OutputFormatConfig, output.Formats] `mapstructure:"-"` // The outputs configuration section maps a Page Kind (a string) to a slice of output formats. // This can be overridden in the front matter. Outputs map[string][]string `mapstructure:"-"` // The cascade configuration section contains the top level front matter cascade configuration options, // a slice of page matcher and params to apply to those pages. Cascade *config.ConfigNamespace[[]page.PageMatcherParamsConfig, map[page.PageMatcher]maps.Params] `mapstructure:"-"` // The segments defines segments for the site. Used for partial/segmented builds. Segments *config.ConfigNamespace[map[string]segments.SegmentConfig, segments.Segments] `mapstructure:"-"` // Menu configuration. // {"refs": ["config:languages:menus"] } Menus *config.ConfigNamespace[map[string]navigation.MenuConfig, navigation.Menus] `mapstructure:"-"` // The deployment configuration section contains for hugo deployconfig. Deployment deployconfig.DeployConfig `mapstructure:"-"` // Module configuration. Module modules.Config `mapstructure:"-"` // Front matter configuration. Frontmatter pagemeta.FrontmatterConfig `mapstructure:"-"` // Minification configuration. Minify minifiers.MinifyConfig `mapstructure:"-"` // Permalink configuration. Permalinks map[string]map[string]string `mapstructure:"-"` // Taxonomy configuration. Taxonomies map[string]string `mapstructure:"-"` // Sitemap configuration. Sitemap config.SitemapConfig `mapstructure:"-"` // Related content configuration. Related related.Config `mapstructure:"-"` // Server configuration. Server config.Server `mapstructure:"-"` // Pagination configuration. Pagination config.Pagination `mapstructure:"-"` // Privacy configuration. Privacy privacy.Config `mapstructure:"-"` // Security configuration. Security security.Config `mapstructure:"-"` // Services configuration. Services services.Config `mapstructure:"-"` // User provided parameters. // {"refs": ["config:languages:params"] } Params maps.Params `mapstructure:"-"` // The languages configuration sections maps a language code (a string) to a configuration object for that language. Languages map[string]langs.LanguageConfig `mapstructure:"-"` // UglyURLs configuration. Either a boolean or a sections map. UglyURLs any `mapstructure:"-"` } type configCompiler interface { CompileConfig(logger loggers.Logger) error } func (c Config) cloneForLang() *Config { x := c x.C = nil copyStringSlice := func(in []string) []string { if in == nil { return nil } out := make([]string, len(in)) copy(out, in) return out } // Copy all the slices to avoid sharing. x.DisableKinds = copyStringSlice(x.DisableKinds) x.DisableLanguages = copyStringSlice(x.DisableLanguages) x.MainSections = copyStringSlice(x.MainSections) x.IgnoreLogs = copyStringSlice(x.IgnoreLogs) x.IgnoreFiles = copyStringSlice(x.IgnoreFiles) x.Theme = copyStringSlice(x.Theme) // Collapse all static dirs to one. x.StaticDir = x.staticDirs() // These will go away soon ... x.StaticDir0 = nil x.StaticDir1 = nil x.StaticDir2 = nil x.StaticDir3 = nil x.StaticDir4 = nil x.StaticDir5 = nil x.StaticDir6 = nil x.StaticDir7 = nil x.StaticDir8 = nil x.StaticDir9 = nil x.StaticDir10 = nil return &x } func (c *Config) CompileConfig(logger loggers.Logger) error { var transientErr error s := c.Timeout if _, err := strconv.Atoi(s); err == nil { // A number, assume seconds. s = s + "s" } timeout, err := time.ParseDuration(s) if err != nil { return fmt.Errorf("failed to parse timeout: %s", err) } disabledKinds := make(map[string]bool) for _, kind := range c.DisableKinds { kind = strings.ToLower(kind) if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { logger.Deprecatef(false, "Kind %q used in disableKinds is deprecated, use %q instead.", kind, newKind) // Legacy config. kind = newKind } if kinds.GetKindAny(kind) == "" { logger.Warnf("Unknown kind %q in disableKinds configuration.", kind) continue } disabledKinds[kind] = true } kindOutputFormats := make(map[string]output.Formats) isRssDisabled := disabledKinds["rss"] outputFormats := c.OutputFormats.Config for kind, formats := range c.Outputs { if newKind := kinds.IsDeprecatedAndReplacedWith(kind); newKind != "" { logger.Deprecatef(false, "Kind %q used in outputs configuration is deprecated, use %q instead.", kind, newKind) kind = newKind } if disabledKinds[kind] { continue } if kinds.GetKindAny(kind) == "" { logger.Warnf("Unknown kind %q in outputs configuration.", kind) continue } for _, format := range formats { if isRssDisabled && format == "rss" { // Legacy config. continue } f, found := outputFormats.GetByName(format) if !found { transientErr = fmt.Errorf("unknown output format %q for kind %q", format, kind) continue } kindOutputFormats[kind] = append(kindOutputFormats[kind], f) } } disabledLangs := make(map[string]bool) for _, lang := range c.DisableLanguages { disabledLangs[lang] = true } for lang, language := range c.Languages { if !language.Disabled && disabledLangs[lang] { language.Disabled = true c.Languages[lang] = language } if language.Disabled { disabledLangs[lang] = true if lang == c.DefaultContentLanguage { return fmt.Errorf("cannot disable default content language %q", lang) } } } for i, s := range c.IgnoreLogs { c.IgnoreLogs[i] = strings.ToLower(s) } ignoredLogIDs := make(map[string]bool) for _, err := range c.IgnoreLogs { ignoredLogIDs[err] = true } baseURL, err := urls.NewBaseURLFromString(c.BaseURL) if err != nil { return err } isUglyURL := func(section string) bool { switch v := c.UglyURLs.(type) { case bool: return v case map[string]bool: return v[section] default: return false } } ignoreFile := func(s string) bool { return false } if len(c.IgnoreFiles) > 0 { regexps := make([]*regexp.Regexp, len(c.IgnoreFiles)) for i, pattern := range c.IgnoreFiles { var err error regexps[i], err = regexp.Compile(pattern) if err != nil { return fmt.Errorf("failed to compile ignoreFiles pattern %q: %s", pattern, err) } } ignoreFile = func(s string) bool { for _, r := range regexps { if r.MatchString(s) { return true } } return false } } var clock time.Time if c.Internal.Clock != "" { var err error clock, err = time.Parse(time.RFC3339, c.Internal.Clock) if err != nil { return fmt.Errorf("failed to parse clock: %s", err) } } httpCache, err := c.HTTPCache.Compile() if err != nil { return err } // Legacy paginate values. if c.Paginate != 0 { hugo.Deprecate("site config key paginate", "Use paginator.pagerSize instead.", "v0.128.0") c.Pagination.PagerSize = c.Paginate } if c.PaginatePath != "" { hugo.Deprecate("site config key paginatePath", "Use paginator.path instead.", "v0.128.0") c.Pagination.Path = c.PaginatePath } c.C = &ConfigCompiled{ Timeout: timeout, BaseURL: baseURL, BaseURLLiveReload: baseURL, DisabledKinds: disabledKinds, DisabledLanguages: disabledLangs, IgnoredLogs: ignoredLogIDs, KindOutputFormats: kindOutputFormats, ContentTypes: media.DefaultContentTypes.FromTypes(c.MediaTypes.Config), CreateTitle: helpers.GetTitleFunc(c.TitleCaseStyle), IsUglyURLSection: isUglyURL, IgnoreFile: ignoreFile, SegmentFilter: c.Segments.Config.Get(func(s string) { logger.Warnf("Render segment %q not found in configuration", s) }, c.RootConfig.RenderSegments...), MainSections: c.MainSections, Clock: clock, HTTPCache: httpCache, transientErr: transientErr, } for _, s := range allDecoderSetups { if getCompiler := s.getCompiler; getCompiler != nil { if err := getCompiler(c).CompileConfig(logger); err != nil { return err } } } return nil } func (c *Config) IsKindEnabled(kind string) bool { return !c.C.DisabledKinds[kind] } func (c *Config) IsLangDisabled(lang string) bool { return c.C.DisabledLanguages[lang] } // ConfigCompiled holds values and functions that are derived from the config. type ConfigCompiled struct { Timeout time.Duration BaseURL urls.BaseURL BaseURLLiveReload urls.BaseURL ServerInterface string KindOutputFormats map[string]output.Formats ContentTypes media.ContentTypes DisabledKinds map[string]bool DisabledLanguages map[string]bool IgnoredLogs map[string]bool CreateTitle func(s string) string IsUglyURLSection func(section string) bool IgnoreFile func(filename string) bool SegmentFilter segments.SegmentFilter MainSections []string Clock time.Time HTTPCache httpcache.ConfigCompiled // This is set to the last transient error found during config compilation. // With themes/modules we compute the configuration in multiple passes, and // errors with missing output format definitions may resolve itself. transientErr error mu sync.Mutex } // This may be set after the config is compiled. func (c *ConfigCompiled) SetMainSections(sections []string) { c.mu.Lock() defer c.mu.Unlock() c.MainSections = sections } // IsMainSectionsSet returns whether the main sections have been set. func (c *ConfigCompiled) IsMainSectionsSet() bool { c.mu.Lock() defer c.mu.Unlock() return c.MainSections != nil } // This is set after the config is compiled by the server command. func (c *ConfigCompiled) SetServerInfo(baseURL, baseURLLiveReload urls.BaseURL, serverInterface string) { c.BaseURL = baseURL c.BaseURLLiveReload = baseURLLiveReload c.ServerInterface = serverInterface } // RootConfig holds all the top-level configuration options in Hugo type RootConfig struct { // The base URL of the site. // Note that the default value is empty, but Hugo requires a valid URL (e.g. "https://example.com/") to work properly. // {"identifiers": ["URL"] } BaseURL string // Whether to build content marked as draft.X // {"identifiers": ["draft"] } BuildDrafts bool // Whether to build content with expiryDate in the past. // {"identifiers": ["expiryDate"] } BuildExpired bool // Whether to build content with publishDate in the future. // {"identifiers": ["publishDate"] } BuildFuture bool // Copyright information. Copyright string // The language to apply to content without any language indicator. DefaultContentLanguage string // By default, we put the default content language in the root and the others below their language ID, e.g. /no/. // Set this to true to put all languages below their language ID. DefaultContentLanguageInSubdir bool // Disable creation of alias redirect pages. DisableAliases bool // Disable lower casing of path segments. DisablePathToLower bool // Disable page kinds from build. DisableKinds []string // A list of languages to disable. DisableLanguages []string // The named segments to render. // This needs to match the name of the segment in the segments configuration. RenderSegments []string // Disable the injection of the Hugo generator tag on the home page. DisableHugoGeneratorInject bool // Disable live reloading in server mode. DisableLiveReload bool // Enable replacement in Pages' Content of Emoji shortcodes with their equivalent Unicode characters. // {"identifiers": ["Content", "Unicode"] } EnableEmoji bool // THe main section(s) of the site. // If not set, Hugo will try to guess this from the content. MainSections []string // Enable robots.txt generation. EnableRobotsTXT bool // When enabled, Hugo will apply Git version information to each Page if possible, which // can be used to keep lastUpdated in synch and to print version information. // {"identifiers": ["Page"] } EnableGitInfo bool // Enable to track, calculate and print metrics. TemplateMetrics bool // Enable to track, print and calculate metric hints. TemplateMetricsHints bool // Enable to disable the build lock file. NoBuildLock bool // A list of log IDs to ignore. IgnoreLogs []string // A list of regexps that match paths to ignore. // Deprecated: Use the settings on module imports. IgnoreFiles []string // Ignore cache. IgnoreCache bool // Enable to print greppable placeholders (on the form "[i18n] TRANSLATIONID") for missing translation strings. EnableMissingTranslationPlaceholders bool // Enable to panic on warning log entries. This may make it easier to detect the source. PanicOnWarning bool // The configured environment. Default is "development" for server and "production" for build. Environment string // The default language code. LanguageCode string // Enable if the site content has CJK language (Chinese, Japanese, or Korean). This affects how Hugo counts words. HasCJKLanguage bool // The default number of pages per page when paginating. // Deprecated: Use the Pagination struct. Paginate int // The path to use when creating pagination URLs, e.g. "page" in /page/2/. // Deprecated: Use the Pagination struct. PaginatePath string // Whether to pluralize default list titles. // Note that this currently only works for English, but you can provide your own title in the content file's front matter. PluralizeListTitles bool // Whether to capitalize automatic page titles, applicable to section, taxonomy, and term pages. CapitalizeListTitles bool // Make all relative URLs absolute using the baseURL. // {"identifiers": ["baseURL"] } CanonifyURLs bool // Enable this to make all relative URLs relative to content root. Note that this does not affect absolute URLs. RelativeURLs bool // Removes non-spacing marks from composite characters in content paths. RemovePathAccents bool // Whether to track and print unused templates during the build. PrintUnusedTemplates bool // Enable to print warnings for missing translation strings. PrintI18nWarnings bool // ENable to print warnings for multiple files published to the same destination. PrintPathWarnings bool // URL to be used as a placeholder when a page reference cannot be found in ref or relref. Is used as-is. RefLinksNotFoundURL string // When using ref or relref to resolve page links and a link cannot be resolved, it will be logged with this log level. // Valid values are ERROR (default) or WARNING. Any ERROR will fail the build (exit -1). RefLinksErrorLevel string // This will create a menu with all the sections as menu items and all the sections’ pages as “shadow-members”. SectionPagesMenu string // The length of text in words to show in a .Summary. SummaryLength int // The site title. Title string // The theme(s) to use. // See Modules for more a more flexible way to load themes. Theme []string // Timeout for generating page contents, specified as a duration or in seconds. Timeout string // The time zone (or location), e.g. Europe/Oslo, used to parse front matter dates without such information and in the time function. TimeZone string // Set titleCaseStyle to specify the title style used by the title template function and the automatic section titles in Hugo. // It defaults to AP Stylebook for title casing, but you can also set it to Chicago or Go (every word starts with a capital letter). TitleCaseStyle string // The editor used for opening up new content. NewContentEditor string // Don't sync modification time of files for the static mounts. NoTimes bool // Don't sync modification time of files for the static mounts. NoChmod bool // Clean the destination folder before a new build. // This currently only handles static files. CleanDestinationDir bool // A Glob pattern of module paths to ignore in the _vendor folder. IgnoreVendorPaths string config.CommonDirs `mapstructure:",squash"` // The odd constructs below are kept for backwards compatibility. // Deprecated: Use module mount config instead. StaticDir []string // Deprecated: Use module mount config instead. StaticDir0 []string // Deprecated: Use module mount config instead. StaticDir1 []string // Deprecated: Use module mount config instead. StaticDir2 []string // Deprecated: Use module mount config instead. StaticDir3 []string // Deprecated: Use module mount config instead. StaticDir4 []string // Deprecated: Use module mount config instead. StaticDir5 []string // Deprecated: Use module mount config instead. StaticDir6 []string // Deprecated: Use module mount config instead. StaticDir7 []string // Deprecated: Use module mount config instead. StaticDir8 []string // Deprecated: Use module mount config instead. StaticDir9 []string // Deprecated: Use module mount config instead. StaticDir10 []string } func (c RootConfig) staticDirs() []string { var dirs []string dirs = append(dirs, c.StaticDir...) dirs = append(dirs, c.StaticDir0...) dirs = append(dirs, c.StaticDir1...) dirs = append(dirs, c.StaticDir2...) dirs = append(dirs, c.StaticDir3...) dirs = append(dirs, c.StaticDir4...) dirs = append(dirs, c.StaticDir5...) dirs = append(dirs, c.StaticDir6...) dirs = append(dirs, c.StaticDir7...) dirs = append(dirs, c.StaticDir8...) dirs = append(dirs, c.StaticDir9...) dirs = append(dirs, c.StaticDir10...) return helpers.UniqueStringsReuse(dirs) } type Configs struct { Base *Config LoadingInfo config.LoadConfigResult LanguageConfigMap map[string]*Config LanguageConfigSlice []*Config IsMultihost bool Modules modules.Modules ModulesClient *modules.Client // All below is set in Init. Languages langs.Languages LanguagesDefaultFirst langs.Languages ContentPathParser *paths.PathParser configLangs []config.AllProvider } func (c *Configs) Validate(logger loggers.Logger) error { for p := range c.Base.Cascade.Config { page.CheckCascadePattern(logger, p) } return nil } // transientErr returns the last transient error found during config compilation. func (c *Configs) transientErr() error { for _, l := range c.LanguageConfigSlice { if l.C.transientErr != nil { return l.C.transientErr } } return nil } func (c *Configs) IsZero() bool { // A config always has at least one language. return c == nil || len(c.Languages) == 0 } func (c *Configs) Init() error { var languages langs.Languages defaultContentLanguage := c.Base.DefaultContentLanguage for k, v := range c.LanguageConfigMap { c.LanguageConfigSlice = append(c.LanguageConfigSlice, v) languageConf := v.Languages[k] language, err := langs.NewLanguage(k, defaultContentLanguage, v.TimeZone, languageConf) if err != nil { return err } languages = append(languages, language) } // Sort the sites by language weight (if set) or lang. sort.Slice(languages, func(i, j int) bool { li := languages[i] lj := languages[j] if li.Weight != lj.Weight { return li.Weight < lj.Weight } return li.Lang < lj.Lang }) for _, l := range languages { c.LanguageConfigSlice = append(c.LanguageConfigSlice, c.LanguageConfigMap[l.Lang]) } // Filter out disabled languages. var n int for _, l := range languages { if !l.Disabled { languages[n] = l n++ } } languages = languages[:n] var languagesDefaultFirst langs.Languages for _, l := range languages { if l.Lang == defaultContentLanguage { languagesDefaultFirst = append(languagesDefaultFirst, l) } } for _, l := range languages { if l.Lang != defaultContentLanguage { languagesDefaultFirst = append(languagesDefaultFirst, l) } } c.Languages = languages c.LanguagesDefaultFirst = languagesDefaultFirst c.ContentPathParser = &paths.PathParser{LanguageIndex: languagesDefaultFirst.AsIndexSet(), IsLangDisabled: c.Base.IsLangDisabled, IsContentExt: c.Base.C.ContentTypes.IsContentSuffix} c.configLangs = make([]config.AllProvider, len(c.Languages)) for i, l := range c.LanguagesDefaultFirst { c.configLangs[i] = ConfigLanguage{ m: c, config: c.LanguageConfigMap[l.Lang], baseConfig: c.LoadingInfo.BaseConfig, language: l, } } if len(c.Modules) == 0 { return errors.New("no modules loaded (ned at least the main module)") } // Apply default project mounts. if err := modules.ApplyProjectConfigDefaults(c.Modules[0], c.configLangs...); err != nil { return err } // We should consolidate this, but to get a full view of the mounts in e.g. "hugo config" we need to // transfer any default mounts added above to the config used to print the config. for _, m := range c.Modules[0].Mounts() { var found bool for _, cm := range c.Base.Module.Mounts { if cm.Source == m.Source && cm.Target == m.Target && cm.Lang == m.Lang { found = true break } } if !found { c.Base.Module.Mounts = append(c.Base.Module.Mounts, m) } } // Transfer the changed mounts to the language versions (all share the same mount set, but can be displayed in different languages). for _, l := range c.LanguageConfigSlice { l.Module.Mounts = c.Base.Module.Mounts } return nil } func (c Configs) ConfigLangs() []config.AllProvider { return c.configLangs } func (c Configs) GetFirstLanguageConfig() config.AllProvider { return c.configLangs[0] } func (c Configs) GetByLang(lang string) config.AllProvider { for _, l := range c.configLangs { if l.Language().Lang == lang { return l } } return nil } // fromLoadConfigResult creates a new Config from res. func fromLoadConfigResult(fs afero.Fs, logger loggers.Logger, res config.LoadConfigResult) (*Configs, error) { if !res.Cfg.IsSet("languages") { // We need at least one lang := res.Cfg.GetString("defaultContentLanguage") res.Cfg.Set("languages", maps.Params{lang: maps.Params{}}) } bcfg := res.BaseConfig cfg := res.Cfg all := &Config{} err := decodeConfigFromParams(fs, logger, bcfg, cfg, all, nil) if err != nil { return nil, err } langConfigMap := make(map[string]*Config) languagesConfig := cfg.GetStringMap("languages") var isMultihost bool if err := all.CompileConfig(logger); err != nil { return nil, err } for k, v := range languagesConfig { mergedConfig := config.New() var differentRootKeys []string switch x := v.(type) { case maps.Params: var params maps.Params pv, found := x["params"] if found { params = pv.(maps.Params) } else { params = maps.Params{ maps.MergeStrategyKey: maps.ParamsMergeStrategyDeep, } x["params"] = params } for kk, vv := range x { if kk == "_merge" { continue } if kk != maps.MergeStrategyKey && !configLanguageKeys[kk] { // This should have been placed below params. // We accidentally allowed it in the past, so we need to support it a little longer, // But log a warning. if _, found := params[kk]; !found { hugo.Deprecate(fmt.Sprintf("config: languages.%s.%s: custom params on the language top level", k, kk), fmt.Sprintf("Put the value below [languages.%s.params]. See https://gohugo.io/content-management/multilingual/#changes-in-hugo-01120", k), "v0.112.0") params[kk] = vv } } if kk == "baseurl" { // baseURL configure don the language level is a multihost setup. isMultihost = true } mergedConfig.Set(kk, vv) rootv := cfg.Get(kk) if rootv != nil && cfg.IsSet(kk) { // This overrides a root key and potentially needs a merge. if !reflect.DeepEqual(rootv, vv) { switch vvv := vv.(type) { case maps.Params: differentRootKeys = append(differentRootKeys, kk) // Use the language value as base. mergedConfigEntry := xmaps.Clone(vvv) // Merge in the root value. maps.MergeParams(mergedConfigEntry, rootv.(maps.Params)) mergedConfig.Set(kk, mergedConfigEntry) default: // Apply new values to the root. differentRootKeys = append(differentRootKeys, "") } } } else { switch vv.(type) { case maps.Params: differentRootKeys = append(differentRootKeys, kk) default: // Apply new values to the root. differentRootKeys = append(differentRootKeys, "") } } } differentRootKeys = helpers.UniqueStringsSorted(differentRootKeys) if len(differentRootKeys) == 0 { langConfigMap[k] = all continue } // Create a copy of the complete config and replace the root keys with the language specific ones. clone := all.cloneForLang() if err := decodeConfigFromParams(fs, logger, bcfg, mergedConfig, clone, differentRootKeys); err != nil { return nil, fmt.Errorf("failed to decode config for language %q: %w", k, err) } if err := clone.CompileConfig(logger); err != nil { return nil, err } // Adjust Goldmark config defaults for multilingual, single-host sites. if len(languagesConfig) > 1 && !isMultihost && !clone.Markup.Goldmark.DuplicateResourceFiles { if !clone.Markup.Goldmark.DuplicateResourceFiles { if clone.Markup.Goldmark.RenderHooks.Link.EnableDefault == nil { clone.Markup.Goldmark.RenderHooks.Link.EnableDefault = types.NewBool(true) } if clone.Markup.Goldmark.RenderHooks.Image.EnableDefault == nil { clone.Markup.Goldmark.RenderHooks.Image.EnableDefault = types.NewBool(true) } } } langConfigMap[k] = clone case maps.ParamsMergeStrategy: default: panic(fmt.Sprintf("unknown type in languages config: %T", v)) } } bcfg.PublishDir = all.PublishDir res.BaseConfig = bcfg all.CommonDirs.CacheDir = bcfg.CacheDir for _, l := range langConfigMap { l.CommonDirs.CacheDir = bcfg.CacheDir } cm := &Configs{ Base: all, LanguageConfigMap: langConfigMap, LoadingInfo: res, IsMultihost: isMultihost, } return cm, nil } func decodeConfigFromParams(fs afero.Fs, logger loggers.Logger, bcfg config.BaseConfig, p config.Provider, target *Config, keys []string) error { var decoderSetups []decodeWeight if len(keys) == 0 { for _, v := range allDecoderSetups { decoderSetups = append(decoderSetups, v) } } else { for _, key := range keys { if v, found := allDecoderSetups[key]; found { decoderSetups = append(decoderSetups, v) } else { logger.Warnf("Skip unknown config key %q", key) } } } // Sort them to get the dependency order right. sort.Slice(decoderSetups, func(i, j int) bool { ki, kj := decoderSetups[i], decoderSetups[j] if ki.weight == kj.weight { return ki.key < kj.key } return ki.weight < kj.weight }) for _, v := range decoderSetups { p := decodeConfig{p: p, c: target, fs: fs, bcfg: bcfg} if err := v.decode(v, p); err != nil { return fmt.Errorf("failed to decode %q: %w", v.key, err) } } return nil } func createDefaultOutputFormats(allFormats output.Formats) map[string][]string { if len(allFormats) == 0 { panic("no output formats") } rssOut, rssFound := allFormats.GetByName(output.RSSFormat.Name) htmlOut, _ := allFormats.GetByName(output.HTMLFormat.Name) defaultListTypes := []string{htmlOut.Name} if rssFound { defaultListTypes = append(defaultListTypes, rssOut.Name) } m := map[string][]string{ kinds.KindPage: {htmlOut.Name}, kinds.KindHome: defaultListTypes, kinds.KindSection: defaultListTypes, kinds.KindTerm: defaultListTypes, kinds.KindTaxonomy: defaultListTypes, } // May be disabled if rssFound { m["rss"] = []string{rssOut.Name} } return m } hugo-0.131.0/config/allconfig/allconfig_integration_test.go000066400000000000000000000100221465312036400237470ustar00rootroot00000000000000package allconfig_test import ( "path/filepath" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/hugolib" ) func TestDirsMount(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" disableKinds = ["taxonomy", "term"] [languages] [languages.en] weight = 1 [languages.sv] weight = 2 [[module.mounts]] source = 'content/en' target = 'content' lang = 'en' [[module.mounts]] source = 'content/sv' target = 'content' lang = 'sv' -- content/en/p1.md -- --- title: "p1" --- -- content/sv/p1.md -- --- title: "p1" --- -- layouts/_default/single.html -- Title: {{ .Title }} ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files}, ).Build() // b.AssertFileContent("public/p1/index.html", "Title: p1") sites := b.H.Sites b.Assert(len(sites), qt.Equals, 2) configs := b.H.Configs mods := configs.Modules b.Assert(len(mods), qt.Equals, 1) mod := mods[0] b.Assert(mod.Mounts(), qt.HasLen, 8) enConcp := sites[0].Conf enConf := enConcp.GetConfig().(*allconfig.Config) b.Assert(enConcp.BaseURL().String(), qt.Equals, "https://example.com/") modConf := enConf.Module b.Assert(modConf.Mounts, qt.HasLen, 8) b.Assert(modConf.Mounts[0].Source, qt.Equals, filepath.FromSlash("content/en")) b.Assert(modConf.Mounts[0].Target, qt.Equals, "content") b.Assert(modConf.Mounts[0].Lang, qt.Equals, "en") b.Assert(modConf.Mounts[1].Source, qt.Equals, filepath.FromSlash("content/sv")) b.Assert(modConf.Mounts[1].Target, qt.Equals, "content") b.Assert(modConf.Mounts[1].Lang, qt.Equals, "sv") } func TestConfigAliases(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" logI18nWarnings = true logPathWarnings = true ` b := hugolib.NewIntegrationTestBuilder( hugolib.IntegrationTestConfig{T: t, TxtarString: files}, ).Build() conf := b.H.Configs.Base b.Assert(conf.PrintI18nWarnings, qt.Equals, true) b.Assert(conf.PrintPathWarnings, qt.Equals, true) } func TestRedefineContentTypes(t *testing.T) { files := ` -- hugo.toml -- baseURL = "https://example.com" [mediaTypes] [mediaTypes."text/html"] suffixes = ["html", "xhtml"] ` b := hugolib.Test(t, files) conf := b.H.Configs.Base contentTypes := conf.C.ContentTypes b.Assert(contentTypes.HTML.Suffixes(), qt.DeepEquals, []string{"html", "xhtml"}) b.Assert(contentTypes.Markdown.Suffixes(), qt.DeepEquals, []string{"md", "mdown", "markdown"}) } func TestPaginationConfigOld(t *testing.T) { files := ` -- hugo.toml -- [languages.en] weight = 1 paginatePath = "page-en" [languages.de] weight = 2 paginatePath = "page-de" paginate = 20 ` b := hugolib.Test(t, files) confEn := b.H.Sites[0].Conf.Pagination() confDe := b.H.Sites[1].Conf.Pagination() b.Assert(confEn.Path, qt.Equals, "page-en") b.Assert(confEn.PagerSize, qt.Equals, 10) b.Assert(confDe.Path, qt.Equals, "page-de") b.Assert(confDe.PagerSize, qt.Equals, 20) } func TestPaginationConfigNew(t *testing.T) { files := ` -- hugo.toml -- [languages.en] weight = 1 [languages.en.pagination] pagerSize = 20 [languages.de] weight = 2 [languages.de.pagination] path = "page-de" ` b := hugolib.Test(t, files) confEn := b.H.Sites[0].Conf.Pagination() confDe := b.H.Sites[1].Conf.Pagination() b.Assert(confEn.Path, qt.Equals, "page") b.Assert(confEn.PagerSize, qt.Equals, 20) b.Assert(confDe.Path, qt.Equals, "page-de") b.Assert(confDe.PagerSize, qt.Equals, 10) } func TestPaginationConfigDisableAliases(t *testing.T) { files := ` -- hugo.toml -- disableKinds = ["taxonomy", "term"] [pagination] disableAliases = true pagerSize = 2 -- layouts/_default/list.html -- {{ $paginator := .Paginate site.RegularPages }} {{ template "_internal/pagination.html" . }} {{ range $paginator.Pages }} {{ .Title }} {{ end }} -- content/p1.md -- --- title: "p1" --- -- content/p2.md -- --- title: "p2" --- -- content/p3.md -- --- title: "p3" --- ` b := hugolib.Test(t, files) b.AssertFileExists("public/page/1/index.html", false) b.AssertFileContent("public/page/2/index.html", "pagination-default") } hugo-0.131.0/config/allconfig/alldecoders.go000066400000000000000000000260761465312036400206500ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package allconfig import ( "fmt" "strings" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/cache/httpcache" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/privacy" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/config/services" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/hugolib/segments" "github.com/gohugoio/hugo/langs" "github.com/gohugoio/hugo/markup/markup_config" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/minifiers" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/navigation" "github.com/gohugoio/hugo/output" "github.com/gohugoio/hugo/related" "github.com/gohugoio/hugo/resources/images" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/page/pagemeta" "github.com/mitchellh/mapstructure" "github.com/spf13/afero" "github.com/spf13/cast" ) type decodeConfig struct { p config.Provider c *Config fs afero.Fs bcfg config.BaseConfig } type decodeWeight struct { key string decode func(decodeWeight, decodeConfig) error getCompiler func(c *Config) configCompiler weight int internalOrDeprecated bool // Hide it from the docs. } var allDecoderSetups = map[string]decodeWeight{ "": { key: "", weight: -100, // Always first. decode: func(d decodeWeight, p decodeConfig) error { if err := mapstructure.WeakDecode(p.p.Get(""), &p.c.RootConfig); err != nil { return err } // This need to match with Lang which is always lower case. p.c.RootConfig.DefaultContentLanguage = strings.ToLower(p.c.RootConfig.DefaultContentLanguage) return nil }, }, "imaging": { key: "imaging", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Imaging, err = images.DecodeConfig(p.p.GetStringMap(d.key)) return err }, }, "caches": { key: "caches", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Caches, err = filecache.DecodeConfig(p.fs, p.bcfg, p.p.GetStringMap(d.key)) if p.c.IgnoreCache { // Set MaxAge in all caches to 0. for k, cache := range p.c.Caches { cache.MaxAge = 0 p.c.Caches[k] = cache } } return err }, }, "httpcache": { key: "httpcache", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.HTTPCache, err = httpcache.DecodeConfig(p.bcfg, p.p.GetStringMap(d.key)) if p.c.IgnoreCache { p.c.HTTPCache.Cache.For.Excludes = []string{"**"} p.c.HTTPCache.Cache.For.Includes = []string{} } return err }, }, "build": { key: "build", decode: func(d decodeWeight, p decodeConfig) error { p.c.Build = config.DecodeBuildConfig(p.p) return nil }, getCompiler: func(c *Config) configCompiler { return &c.Build }, }, "frontmatter": { key: "frontmatter", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Frontmatter, err = pagemeta.DecodeFrontMatterConfig(p.p) return err }, }, "markup": { key: "markup", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Markup, err = markup_config.Decode(p.p) return err }, }, "segments": { key: "segments", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Segments, err = segments.DecodeSegments(p.p.GetStringMap(d.key)) return err }, }, "server": { key: "server", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Server, err = config.DecodeServer(p.p) return err }, getCompiler: func(c *Config) configCompiler { return &c.Server }, }, "minify": { key: "minify", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Minify, err = minifiers.DecodeConfig(p.p.Get(d.key)) return err }, }, "mediatypes": { key: "mediatypes", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.MediaTypes, err = media.DecodeTypes(p.p.GetStringMap(d.key)) return err }, }, "outputs": { key: "outputs", decode: func(d decodeWeight, p decodeConfig) error { defaults := createDefaultOutputFormats(p.c.OutputFormats.Config) m := maps.CleanConfigStringMap(p.p.GetStringMap("outputs")) p.c.Outputs = make(map[string][]string) for k, v := range m { s := types.ToStringSlicePreserveString(v) for i, v := range s { s[i] = strings.ToLower(v) } p.c.Outputs[k] = s } // Apply defaults. for k, v := range defaults { if _, found := p.c.Outputs[k]; !found { p.c.Outputs[k] = v } } return nil }, }, "outputformats": { key: "outputformats", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.OutputFormats, err = output.DecodeConfig(p.c.MediaTypes.Config, p.p.Get(d.key)) return err }, }, "params": { key: "params", decode: func(d decodeWeight, p decodeConfig) error { p.c.Params = maps.CleanConfigStringMap(p.p.GetStringMap("params")) if p.c.Params == nil { p.c.Params = make(map[string]any) } // Before Hugo 0.112.0 this was configured via site Params. if mainSections, found := p.c.Params["mainsections"]; found { p.c.MainSections = types.ToStringSlicePreserveString(mainSections) if p.c.MainSections == nil { p.c.MainSections = []string{} } } return nil }, }, "module": { key: "module", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Module, err = modules.DecodeConfig(p.p) return err }, }, "permalinks": { key: "permalinks", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Permalinks, err = page.DecodePermalinksConfig(p.p.GetStringMap(d.key)) return err }, }, "sitemap": { key: "sitemap", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Sitemap, err = config.DecodeSitemap(config.SitemapConfig{Priority: -1, Filename: "sitemap.xml"}, p.p.GetStringMap(d.key)) return err }, }, "taxonomies": { key: "taxonomies", decode: func(d decodeWeight, p decodeConfig) error { p.c.Taxonomies = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key)) return nil }, }, "related": { key: "related", weight: 100, // This needs to be decoded after taxonomies. decode: func(d decodeWeight, p decodeConfig) error { if p.p.IsSet(d.key) { var err error p.c.Related, err = related.DecodeConfig(p.p.GetParams(d.key)) if err != nil { return fmt.Errorf("failed to decode related config: %w", err) } } else { p.c.Related = related.DefaultConfig if _, found := p.c.Taxonomies["tag"]; found { p.c.Related.Add(related.IndexConfig{Name: "tags", Weight: 80, Type: related.TypeBasic}) } } return nil }, }, "languages": { key: "languages", decode: func(d decodeWeight, p decodeConfig) error { var err error m := p.p.GetStringMap(d.key) if len(m) == 1 { // In v0.112.4 we moved this to the language config, but it's very commmon for mono language sites to have this at the top level. var first maps.Params var ok bool for _, v := range m { first, ok = v.(maps.Params) if ok { break } } if first != nil { if _, found := first["languagecode"]; !found { first["languagecode"] = p.p.GetString("languagecode") } } } p.c.Languages, err = langs.DecodeConfig(m) if err != nil { return err } // Validate defaultContentLanguage. var found bool for lang := range p.c.Languages { if lang == p.c.DefaultContentLanguage { found = true break } } if !found { return fmt.Errorf("config value %q for defaultContentLanguage does not match any language definition", p.c.DefaultContentLanguage) } return nil }, }, "cascade": { key: "cascade", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Cascade, err = page.DecodeCascadeConfig(nil, p.p.Get(d.key)) return err }, }, "menus": { key: "menus", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Menus, err = navigation.DecodeConfig(p.p.Get(d.key)) return err }, }, "pagination": { key: "pagination", decode: func(d decodeWeight, p decodeConfig) error { p.c.Pagination = config.Pagination{ PagerSize: 10, Path: "page", } if p.p.IsSet(d.key) { if err := mapstructure.WeakDecode(p.p.Get(d.key), &p.c.Pagination); err != nil { return err } } return nil }, }, "privacy": { key: "privacy", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Privacy, err = privacy.DecodeConfig(p.p) return err }, }, "security": { key: "security", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Security, err = security.DecodeConfig(p.p) return err }, }, "services": { key: "services", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Services, err = services.DecodeConfig(p.p) return err }, }, "deployment": { key: "deployment", decode: func(d decodeWeight, p decodeConfig) error { var err error p.c.Deployment, err = deployconfig.DecodeConfig(p.p) return err }, }, "author": { key: "author", decode: func(d decodeWeight, p decodeConfig) error { p.c.Author = maps.CleanConfigStringMap(p.p.GetStringMap(d.key)) return nil }, internalOrDeprecated: true, }, "social": { key: "social", decode: func(d decodeWeight, p decodeConfig) error { p.c.Social = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key)) return nil }, internalOrDeprecated: true, }, "uglyurls": { key: "uglyurls", decode: func(d decodeWeight, p decodeConfig) error { v := p.p.Get(d.key) switch vv := v.(type) { case bool: p.c.UglyURLs = vv case string: p.c.UglyURLs = vv == "true" default: p.c.UglyURLs = cast.ToStringMapBool(v) } return nil }, internalOrDeprecated: true, }, "internal": { key: "internal", decode: func(d decodeWeight, p decodeConfig) error { return mapstructure.WeakDecode(p.p.GetStringMap(d.key), &p.c.Internal) }, internalOrDeprecated: true, }, } func init() { for k, v := range allDecoderSetups { // Verify that k and v.key is all lower case. if k != strings.ToLower(k) { panic(fmt.Sprintf("key %q is not lower case", k)) } if v.key != strings.ToLower(v.key) { panic(fmt.Sprintf("key %q is not lower case", v.key)) } if k != v.key { panic(fmt.Sprintf("key %q is not the same as the map key %q", k, v.key)) } } } hugo-0.131.0/config/allconfig/configlanguage.go000066400000000000000000000137451465312036400213370ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package allconfig import ( "time" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/langs" ) type ConfigLanguage struct { config *Config baseConfig config.BaseConfig m *Configs language *langs.Language } func (c ConfigLanguage) Language() *langs.Language { return c.language } func (c ConfigLanguage) Languages() langs.Languages { return c.m.Languages } func (c ConfigLanguage) LanguagesDefaultFirst() langs.Languages { return c.m.LanguagesDefaultFirst } func (c ConfigLanguage) PathParser() *paths.PathParser { return c.m.ContentPathParser } func (c ConfigLanguage) LanguagePrefix() string { if c.DefaultContentLanguageInSubdir() && c.DefaultContentLanguage() == c.Language().Lang { return c.Language().Lang } if !c.IsMultilingual() || c.DefaultContentLanguage() == c.Language().Lang { return "" } return c.Language().Lang } func (c ConfigLanguage) BaseURL() urls.BaseURL { return c.config.C.BaseURL } func (c ConfigLanguage) BaseURLLiveReload() urls.BaseURL { return c.config.C.BaseURLLiveReload } func (c ConfigLanguage) Environment() string { return c.config.Environment } func (c ConfigLanguage) IsMultihost() bool { if len(c.m.Languages)-len(c.config.C.DisabledLanguages) <= 1 { return false } return c.m.IsMultihost } func (c ConfigLanguage) FastRenderMode() bool { return c.config.Internal.FastRenderMode } func (c ConfigLanguage) IsMultilingual() bool { return len(c.m.Languages) > 1 } func (c ConfigLanguage) TemplateMetrics() bool { return c.config.TemplateMetrics } func (c ConfigLanguage) TemplateMetricsHints() bool { return c.config.TemplateMetricsHints } func (c ConfigLanguage) IsLangDisabled(lang string) bool { return c.config.C.DisabledLanguages[lang] } func (c ConfigLanguage) IgnoredLogs() map[string]bool { return c.config.C.IgnoredLogs } func (c ConfigLanguage) NoBuildLock() bool { return c.config.NoBuildLock } func (c ConfigLanguage) NewContentEditor() string { return c.config.NewContentEditor } func (c ConfigLanguage) Timeout() time.Duration { return c.config.C.Timeout } func (c ConfigLanguage) BaseConfig() config.BaseConfig { return c.baseConfig } func (c ConfigLanguage) Dirs() config.CommonDirs { return c.config.CommonDirs } func (c ConfigLanguage) DirsBase() config.CommonDirs { return c.m.Base.CommonDirs } func (c ConfigLanguage) WorkingDir() string { return c.m.Base.WorkingDir } func (c ConfigLanguage) Quiet() bool { return c.m.Base.Internal.Quiet } func (c ConfigLanguage) Watching() bool { return c.m.Base.Internal.Watch } func (c ConfigLanguage) NewIdentityManager(name string) identity.Manager { if !c.Watching() { return identity.NopManager } return identity.NewManager(name) } func (c ConfigLanguage) ContentTypes() config.ContentTypesProvider { return c.config.C.ContentTypes } // GetConfigSection is mostly used in tests. The switch statement isn't complete, but what's in use. func (c ConfigLanguage) GetConfigSection(s string) any { switch s { case "security": return c.config.Security case "build": return c.config.Build case "frontmatter": return c.config.Frontmatter case "caches": return c.config.Caches case "markup": return c.config.Markup case "mediaTypes": return c.config.MediaTypes.Config case "outputFormats": return c.config.OutputFormats.Config case "permalinks": return c.config.Permalinks case "minify": return c.config.Minify case "allModules": return c.m.Modules case "deployment": return c.config.Deployment case "httpCacheCompiled": return c.config.C.HTTPCache default: panic("not implemented: " + s) } } func (c ConfigLanguage) GetConfig() any { return c.config } func (c ConfigLanguage) CanonifyURLs() bool { return c.config.CanonifyURLs } func (c ConfigLanguage) IsUglyURLs(section string) bool { return c.config.C.IsUglyURLSection(section) } func (c ConfigLanguage) IgnoreFile(s string) bool { return c.config.C.IgnoreFile(s) } func (c ConfigLanguage) DisablePathToLower() bool { return c.config.DisablePathToLower } func (c ConfigLanguage) RemovePathAccents() bool { return c.config.RemovePathAccents } func (c ConfigLanguage) DefaultContentLanguage() string { return c.config.DefaultContentLanguage } func (c ConfigLanguage) DefaultContentLanguageInSubdir() bool { return c.config.DefaultContentLanguageInSubdir } func (c ConfigLanguage) SummaryLength() int { return c.config.SummaryLength } func (c ConfigLanguage) BuildExpired() bool { return c.config.BuildExpired } func (c ConfigLanguage) BuildFuture() bool { return c.config.BuildFuture } func (c ConfigLanguage) BuildDrafts() bool { return c.config.BuildDrafts } func (c ConfigLanguage) Running() bool { return c.config.Internal.Running } func (c ConfigLanguage) PrintUnusedTemplates() bool { return c.config.PrintUnusedTemplates } func (c ConfigLanguage) EnableMissingTranslationPlaceholders() bool { return c.config.EnableMissingTranslationPlaceholders } func (c ConfigLanguage) PrintI18nWarnings() bool { return c.config.PrintI18nWarnings } func (c ConfigLanguage) CreateTitle(s string) string { return c.config.C.CreateTitle(s) } func (c ConfigLanguage) Pagination() config.Pagination { return c.config.Pagination } func (c ConfigLanguage) StaticDirs() []string { return c.config.staticDirs() } func (c ConfigLanguage) EnableEmoji() bool { return c.config.EnableEmoji } hugo-0.131.0/config/allconfig/docshelper.go000066400000000000000000000026211465312036400205050ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package allconfig import ( "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/docshelper" ) // This is is just some helpers used to create some JSON used in the Hugo docs. func init() { docsProvider := func() docshelper.DocProvider { cfg := config.New() for configRoot, v := range allDecoderSetups { if v.internalOrDeprecated { continue } cfg.Set(configRoot, make(maps.Params)) } lang := maps.Params{ "en": maps.Params{ "menus": maps.Params{}, "params": maps.Params{}, }, } cfg.Set("languages", lang) cfg.SetDefaultMergeStrategy() configHelpers := map[string]any{ "mergeStrategy": cfg.Get(""), } return docshelper.DocProvider{"config_helpers": configHelpers} } docshelper.AddDocProviderFunc(docsProvider) } hugo-0.131.0/config/allconfig/load.go000066400000000000000000000411131465312036400172730ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // Package allconfig contains the full configuration for Hugo. package allconfig import ( "errors" "fmt" "os" "path/filepath" "strings" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/hugo" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/helpers" hglob "github.com/gohugoio/hugo/hugofs/glob" "github.com/gohugoio/hugo/modules" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) //lint:ignore ST1005 end user message. var ErrNoConfigFile = errors.New("Unable to locate config file or config directory. Perhaps you need to create a new site.\n Run `hugo help new` for details.\n") func LoadConfig(d ConfigSourceDescriptor) (*Configs, error) { if len(d.Environ) == 0 && !hugo.IsRunningAsTest() { d.Environ = os.Environ() } if d.Logger == nil { d.Logger = loggers.NewDefault() } l := &configLoader{ConfigSourceDescriptor: d, cfg: config.New()} // Make sure we always do this, even in error situations, // as we have commands (e.g. "hugo mod init") that will // use a partial configuration to do its job. defer l.deleteMergeStrategies() res, _, err := l.loadConfigMain(d) if err != nil { return nil, fmt.Errorf("failed to load config: %w", err) } configs, err := fromLoadConfigResult(d.Fs, d.Logger, res) if err != nil { return nil, fmt.Errorf("failed to create config from result: %w", err) } moduleConfig, modulesClient, err := l.loadModules(configs) if err != nil { return nil, fmt.Errorf("failed to load modules: %w", err) } if len(l.ModulesConfigFiles) > 0 { // Config merged in from modules. // Re-read the config. configs, err = fromLoadConfigResult(d.Fs, d.Logger, res) if err != nil { return nil, fmt.Errorf("failed to create config from modules config: %w", err) } if err := configs.transientErr(); err != nil { return nil, fmt.Errorf("failed to create config from modules config: %w", err) } configs.LoadingInfo.ConfigFiles = append(configs.LoadingInfo.ConfigFiles, l.ModulesConfigFiles...) } else if err := configs.transientErr(); err != nil { return nil, fmt.Errorf("failed to create config: %w", err) } configs.Modules = moduleConfig.AllModules configs.ModulesClient = modulesClient if err := configs.Init(); err != nil { return nil, fmt.Errorf("failed to init config: %w", err) } loggers.InitGlobalLogger(d.Logger.Level(), configs.Base.PanicOnWarning) return configs, nil } // ConfigSourceDescriptor describes where to find the config (e.g. config.toml etc.). type ConfigSourceDescriptor struct { Fs afero.Fs Logger loggers.Logger // Config received from the command line. // These will override any config file settings. Flags config.Provider // Path to the config file to use, e.g. /my/project/config.toml Filename string // The (optional) directory for additional configuration files. ConfigDir string // production, development Environment string // Defaults to os.Environ if not set. Environ []string } func (d ConfigSourceDescriptor) configFilenames() []string { if d.Filename == "" { return nil } return strings.Split(d.Filename, ",") } type configLoader struct { cfg config.Provider BaseConfig config.BaseConfig ConfigSourceDescriptor // collected ModulesConfig modules.ModulesConfig ModulesConfigFiles []string } // Handle some legacy values. func (l configLoader) applyConfigAliases() error { aliases := []types.KeyValueStr{ {Key: "indexes", Value: "taxonomies"}, {Key: "logI18nWarnings", Value: "printI18nWarnings"}, {Key: "logPathWarnings", Value: "printPathWarnings"}, {Key: "ignoreErrors", Value: "ignoreLogs"}, } for _, alias := range aliases { if l.cfg.IsSet(alias.Key) { vv := l.cfg.Get(alias.Key) l.cfg.Set(alias.Value, vv) } } return nil } func (l configLoader) applyDefaultConfig() error { defaultSettings := maps.Params{ "baseURL": "", "cleanDestinationDir": false, "watch": false, "contentDir": "content", "resourceDir": "resources", "publishDir": "public", "publishDirOrig": "public", "themesDir": "themes", "assetDir": "assets", "layoutDir": "layouts", "i18nDir": "i18n", "dataDir": "data", "archetypeDir": "archetypes", "configDir": "config", "staticDir": "static", "buildDrafts": false, "buildFuture": false, "buildExpired": false, "params": maps.Params{}, "environment": hugo.EnvironmentProduction, "uglyURLs": false, "verbose": false, "ignoreCache": false, "canonifyURLs": false, "relativeURLs": false, "removePathAccents": false, "titleCaseStyle": "AP", "taxonomies": maps.Params{"tag": "tags", "category": "categories"}, "permalinks": maps.Params{}, "sitemap": maps.Params{"priority": -1, "filename": "sitemap.xml"}, "menus": maps.Params{}, "disableLiveReload": false, "pluralizeListTitles": true, "capitalizeListTitles": true, "forceSyncStatic": false, "footnoteAnchorPrefix": "", "footnoteReturnLinkContents": "", "newContentEditor": "", "paginate": 0, // Moved into the paginator struct in Hugo v0.128.0. "paginatePath": "", // Moved into the paginator struct in Hugo v0.128.0. "summaryLength": 70, "rssLimit": -1, "sectionPagesMenu": "", "disablePathToLower": false, "hasCJKLanguage": false, "enableEmoji": false, "defaultContentLanguage": "en", "defaultContentLanguageInSubdir": false, "enableMissingTranslationPlaceholders": false, "enableGitInfo": false, "ignoreFiles": make([]string, 0), "disableAliases": false, "debug": false, "disableFastRender": false, "timeout": "30s", "timeZone": "", "enableInlineShortcodes": false, } l.cfg.SetDefaults(defaultSettings) return nil } func (l configLoader) normalizeCfg(cfg config.Provider) error { if b, ok := cfg.Get("minifyOutput").(bool); ok && b { cfg.Set("minify.minifyOutput", true) } else if b, ok := cfg.Get("minify").(bool); ok && b { cfg.Set("minify", maps.Params{"minifyOutput": true}) } return nil } func (l configLoader) cleanExternalConfig(cfg config.Provider) error { if cfg.IsSet("internal") { cfg.Set("internal", nil) } return nil } func (l configLoader) applyFlagsOverrides(cfg config.Provider) error { for _, k := range cfg.Keys() { l.cfg.Set(k, cfg.Get(k)) } return nil } func (l configLoader) applyOsEnvOverrides(environ []string) error { if len(environ) == 0 { return nil } const delim = "__env__delim" // Extract all that start with the HUGO prefix. // The delimiter is the following rune, usually "_". const hugoEnvPrefix = "HUGO" var hugoEnv []types.KeyValueStr for _, v := range environ { key, val := config.SplitEnvVar(v) if strings.HasPrefix(key, hugoEnvPrefix) { delimiterAndKey := strings.TrimPrefix(key, hugoEnvPrefix) if len(delimiterAndKey) < 2 { continue } // Allow delimiters to be case sensitive. // It turns out there isn't that many allowed special // chars in environment variables when used in Bash and similar, // so variables on the form HUGOxPARAMSxFOO=bar is one option. key := strings.ReplaceAll(delimiterAndKey[1:], delimiterAndKey[:1], delim) key = strings.ToLower(key) hugoEnv = append(hugoEnv, types.KeyValueStr{ Key: key, Value: val, }) } } for _, env := range hugoEnv { existing, nestedKey, owner, err := maps.GetNestedParamFn(env.Key, delim, l.cfg.Get) if err != nil { return err } if existing != nil { val, err := metadecoders.Default.UnmarshalStringTo(env.Value, existing) if err != nil { continue } if owner != nil { owner[nestedKey] = val } else { l.cfg.Set(env.Key, val) } } else { if nestedKey != "" { owner[nestedKey] = env.Value } else { var val any key := strings.ReplaceAll(env.Key, delim, ".") _, ok := allDecoderSetups[key] if ok { // A map. if v, err := metadecoders.Default.UnmarshalStringTo(env.Value, map[string]interface{}{}); err == nil { val = v } } if val == nil { // A string. val = l.envStringToVal(key, env.Value) } l.cfg.Set(key, val) } } } return nil } func (l *configLoader) envStringToVal(k, v string) any { switch k { case "disablekinds", "disablelanguages": if strings.Contains(v, ",") { return strings.Split(v, ",") } else { return strings.Fields(v) } default: return v } } func (l *configLoader) loadConfigMain(d ConfigSourceDescriptor) (config.LoadConfigResult, modules.ModulesConfig, error) { var res config.LoadConfigResult if d.Flags != nil { if err := l.normalizeCfg(d.Flags); err != nil { return res, l.ModulesConfig, err } } if d.Fs == nil { return res, l.ModulesConfig, errors.New("no filesystem provided") } if d.Flags != nil { if err := l.applyFlagsOverrides(d.Flags); err != nil { return res, l.ModulesConfig, err } workingDir := filepath.Clean(l.cfg.GetString("workingDir")) l.BaseConfig = config.BaseConfig{ WorkingDir: workingDir, ThemesDir: paths.AbsPathify(workingDir, l.cfg.GetString("themesDir")), } } names := d.configFilenames() if names != nil { for _, name := range names { var filename string filename, err := l.loadConfig(name) if err == nil { res.ConfigFiles = append(res.ConfigFiles, filename) } else if err != ErrNoConfigFile { return res, l.ModulesConfig, l.wrapFileError(err, filename) } } } else { for _, name := range config.DefaultConfigNames { var filename string filename, err := l.loadConfig(name) if err == nil { res.ConfigFiles = append(res.ConfigFiles, filename) break } else if err != ErrNoConfigFile { return res, l.ModulesConfig, l.wrapFileError(err, filename) } } } if d.ConfigDir != "" { absConfigDir := paths.AbsPathify(l.BaseConfig.WorkingDir, d.ConfigDir) dcfg, dirnames, err := config.LoadConfigFromDir(l.Fs, absConfigDir, l.Environment) if err == nil { if len(dirnames) > 0 { if err := l.normalizeCfg(dcfg); err != nil { return res, l.ModulesConfig, err } if err := l.cleanExternalConfig(dcfg); err != nil { return res, l.ModulesConfig, err } l.cfg.Set("", dcfg.Get("")) res.ConfigFiles = append(res.ConfigFiles, dirnames...) } } else if err != ErrNoConfigFile { if len(dirnames) > 0 { return res, l.ModulesConfig, l.wrapFileError(err, dirnames[0]) } return res, l.ModulesConfig, err } } res.Cfg = l.cfg if err := l.applyDefaultConfig(); err != nil { return res, l.ModulesConfig, err } // Some settings are used before we're done collecting all settings, // so apply OS environment both before and after. if err := l.applyOsEnvOverrides(d.Environ); err != nil { return res, l.ModulesConfig, err } workingDir := filepath.Clean(l.cfg.GetString("workingDir")) l.BaseConfig = config.BaseConfig{ WorkingDir: workingDir, CacheDir: l.cfg.GetString("cacheDir"), ThemesDir: paths.AbsPathify(workingDir, l.cfg.GetString("themesDir")), } var err error l.BaseConfig.CacheDir, err = helpers.GetCacheDir(l.Fs, l.BaseConfig.CacheDir) if err != nil { return res, l.ModulesConfig, err } res.BaseConfig = l.BaseConfig l.cfg.SetDefaultMergeStrategy() res.ConfigFiles = append(res.ConfigFiles, l.ModulesConfigFiles...) if d.Flags != nil { if err := l.applyFlagsOverrides(d.Flags); err != nil { return res, l.ModulesConfig, err } } if err := l.applyOsEnvOverrides(d.Environ); err != nil { return res, l.ModulesConfig, err } if err = l.applyConfigAliases(); err != nil { return res, l.ModulesConfig, err } return res, l.ModulesConfig, err } func (l *configLoader) loadModules(configs *Configs) (modules.ModulesConfig, *modules.Client, error) { bcfg := configs.LoadingInfo.BaseConfig conf := configs.Base workingDir := bcfg.WorkingDir themesDir := bcfg.ThemesDir publishDir := bcfg.PublishDir cfg := configs.LoadingInfo.Cfg var ignoreVendor glob.Glob if s := conf.IgnoreVendorPaths; s != "" { ignoreVendor, _ = hglob.GetGlob(hglob.NormalizePath(s)) } ex := hexec.New(conf.Security, workingDir) hook := func(m *modules.ModulesConfig) error { for _, tc := range m.AllModules { if len(tc.ConfigFilenames()) > 0 { if tc.Watch() { l.ModulesConfigFiles = append(l.ModulesConfigFiles, tc.ConfigFilenames()...) } // Merge in the theme config using the configured // merge strategy. cfg.Merge("", tc.Cfg().Get("")) } } return nil } modulesClient := modules.NewClient(modules.ClientConfig{ Fs: l.Fs, Logger: l.Logger, Exec: ex, HookBeforeFinalize: hook, WorkingDir: workingDir, ThemesDir: themesDir, PublishDir: publishDir, Environment: l.Environment, CacheDir: conf.Caches.CacheDirModules(), ModuleConfig: conf.Module, IgnoreVendor: ignoreVendor, }) moduleConfig, err := modulesClient.Collect() // We want to watch these for changes and trigger rebuild on version // changes etc. if moduleConfig.GoModulesFilename != "" { l.ModulesConfigFiles = append(l.ModulesConfigFiles, moduleConfig.GoModulesFilename) } if moduleConfig.GoWorkspaceFilename != "" { l.ModulesConfigFiles = append(l.ModulesConfigFiles, moduleConfig.GoWorkspaceFilename) } return moduleConfig, modulesClient, err } func (l configLoader) loadConfig(configName string) (string, error) { baseDir := l.BaseConfig.WorkingDir var baseFilename string if filepath.IsAbs(configName) { baseFilename = configName } else { baseFilename = filepath.Join(baseDir, configName) } var filename string if paths.ExtNoDelimiter(configName) != "" { exists, _ := helpers.Exists(baseFilename, l.Fs) if exists { filename = baseFilename } } else { for _, ext := range config.ValidConfigFileExtensions { filenameToCheck := baseFilename + "." + ext exists, _ := helpers.Exists(filenameToCheck, l.Fs) if exists { filename = filenameToCheck break } } } if filename == "" { return "", ErrNoConfigFile } m, err := config.FromFileToMap(l.Fs, filename) if err != nil { return filename, err } // Set overwrites keys of the same name, recursively. l.cfg.Set("", m) if err := l.normalizeCfg(l.cfg); err != nil { return filename, err } if err := l.cleanExternalConfig(l.cfg); err != nil { return filename, err } return filename, nil } func (l configLoader) deleteMergeStrategies() { l.cfg.WalkParams(func(params ...maps.KeyParams) bool { params[len(params)-1].Params.DeleteMergeStrategy() return false }) } func (l configLoader) wrapFileError(err error, filename string) error { fe := herrors.UnwrapFileError(err) if fe != nil { pos := fe.Position() pos.Filename = filename fe.UpdatePosition(pos) return err } return herrors.NewFileErrorFromFile(err, filename, l.Fs, nil) } hugo-0.131.0/config/allconfig/load_test.go000066400000000000000000000021331465312036400203310ustar00rootroot00000000000000package allconfig import ( "os" "path/filepath" "testing" "github.com/spf13/afero" ) func BenchmarkLoad(b *testing.B) { tempDir := b.TempDir() configFilename := filepath.Join(tempDir, "hugo.toml") config := ` baseURL = "https://example.com" defaultContentLanguage = 'en' [module] [[module.mounts]] source = 'content/en' target = 'content/en' lang = 'en' [[module.mounts]] source = 'content/nn' target = 'content/nn' lang = 'nn' [[module.mounts]] source = 'content/no' target = 'content/no' lang = 'no' [[module.mounts]] source = 'content/sv' target = 'content/sv' lang = 'sv' [[module.mounts]] source = 'layouts' target = 'layouts' [languages] [languages.en] title = "English" weight = 1 [languages.nn] title = "Nynorsk" weight = 2 [languages.no] title = "Norsk" weight = 3 [languages.sv] title = "Svenska" weight = 4 ` if err := os.WriteFile(configFilename, []byte(config), 0o666); err != nil { b.Fatal(err) } d := ConfigSourceDescriptor{ Fs: afero.NewOsFs(), Filename: configFilename, } for i := 0; i < b.N; i++ { _, err := LoadConfig(d) if err != nil { b.Fatal(err) } } } hugo-0.131.0/config/commonConfig.go000066400000000000000000000246001465312036400170360ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package config import ( "fmt" "regexp" "sort" "strings" "github.com/bep/logg" "github.com/gobwas/glob" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/herrors" "github.com/mitchellh/mapstructure" "github.com/spf13/cast" ) type BaseConfig struct { WorkingDir string CacheDir string ThemesDir string PublishDir string } type CommonDirs struct { // The directory where Hugo will look for themes. ThemesDir string // Where to put the generated files. PublishDir string // The directory to put the generated resources files. This directory should in most situations be considered temporary // and not be committed to version control. But there may be cached content in here that you want to keep, // e.g. resources/_gen/images for performance reasons or CSS built from SASS when your CI server doesn't have the full setup. ResourceDir string // The project root directory. WorkingDir string // The root directory for all cache files. CacheDir string // The content source directory. // Deprecated: Use module mounts. ContentDir string // Deprecated: Use module mounts. // The data source directory. DataDir string // Deprecated: Use module mounts. // The layout source directory. LayoutDir string // Deprecated: Use module mounts. // The i18n source directory. I18nDir string // Deprecated: Use module mounts. // The archetypes source directory. ArcheTypeDir string // Deprecated: Use module mounts. // The assets source directory. AssetDir string } type LoadConfigResult struct { Cfg Provider ConfigFiles []string BaseConfig BaseConfig } var defaultBuild = BuildConfig{ UseResourceCacheWhen: "fallback", BuildStats: BuildStats{}, CacheBusters: []CacheBuster{ { Source: `(postcss|tailwind)\.config\.js`, Target: cssTargetCachebusterRe, }, }, } // BuildConfig holds some build related configuration. type BuildConfig struct { // When to use the resource file cache. // One of never, fallback, always. Default is fallback UseResourceCacheWhen string // When enabled, will collect and write a hugo_stats.json with some build // related aggregated data (e.g. CSS class names). // Note that this was a bool <= v0.115.0. BuildStats BuildStats // Can be used to toggle off writing of the IntelliSense /assets/jsconfig.js // file. NoJSConfigInAssets bool // Can used to control how the resource cache gets evicted on rebuilds. CacheBusters []CacheBuster } // BuildStats configures if and what to write to the hugo_stats.json file. type BuildStats struct { Enable bool DisableTags bool DisableClasses bool DisableIDs bool } func (w BuildStats) Enabled() bool { if !w.Enable { return false } return !w.DisableTags || !w.DisableClasses || !w.DisableIDs } func (b BuildConfig) clone() BuildConfig { b.CacheBusters = append([]CacheBuster{}, b.CacheBusters...) return b } func (b BuildConfig) UseResourceCache(err error) bool { if b.UseResourceCacheWhen == "never" { return false } if b.UseResourceCacheWhen == "fallback" { return herrors.IsFeatureNotAvailableError(err) } return true } // MatchCacheBuster returns the cache buster for the given path p, nil if none. func (s BuildConfig) MatchCacheBuster(logger loggers.Logger, p string) (func(string) bool, error) { var matchers []func(string) bool for _, cb := range s.CacheBusters { if matcher := cb.compiledSource(p); matcher != nil { matchers = append(matchers, matcher) } } if len(matchers) > 0 { return (func(cacheKey string) bool { for _, m := range matchers { if m(cacheKey) { return true } } return false }), nil } return nil, nil } func (b *BuildConfig) CompileConfig(logger loggers.Logger) error { for i, cb := range b.CacheBusters { if err := cb.CompileConfig(logger); err != nil { return fmt.Errorf("failed to compile cache buster %q: %w", cb.Source, err) } b.CacheBusters[i] = cb } return nil } func DecodeBuildConfig(cfg Provider) BuildConfig { m := cfg.GetStringMap("build") b := defaultBuild.clone() if m == nil { return b } // writeStats was a bool <= v0.115.0. if writeStats, ok := m["writestats"]; ok { if bb, ok := writeStats.(bool); ok { m["buildstats"] = BuildStats{Enable: bb} } } err := mapstructure.WeakDecode(m, &b) if err != nil { return b } b.UseResourceCacheWhen = strings.ToLower(b.UseResourceCacheWhen) when := b.UseResourceCacheWhen if when != "never" && when != "always" && when != "fallback" { b.UseResourceCacheWhen = "fallback" } return b } // SitemapConfig configures the sitemap to be generated. type SitemapConfig struct { // The page change frequency. ChangeFreq string // The priority of the page. Priority float64 // The sitemap filename. Filename string // Whether to disable page inclusion. Disable bool } func DecodeSitemap(prototype SitemapConfig, input map[string]any) (SitemapConfig, error) { err := mapstructure.WeakDecode(input, &prototype) return prototype, err } // Config for the dev server. type Server struct { Headers []Headers Redirects []Redirect compiledHeaders []glob.Glob compiledRedirects []glob.Glob } func (s *Server) CompileConfig(logger loggers.Logger) error { if s.compiledHeaders != nil { return nil } for _, h := range s.Headers { s.compiledHeaders = append(s.compiledHeaders, glob.MustCompile(h.For)) } for _, r := range s.Redirects { s.compiledRedirects = append(s.compiledRedirects, glob.MustCompile(r.From)) } return nil } func (s *Server) MatchHeaders(pattern string) []types.KeyValueStr { if s.compiledHeaders == nil { return nil } var matches []types.KeyValueStr for i, g := range s.compiledHeaders { if g.Match(pattern) { h := s.Headers[i] for k, v := range h.Values { matches = append(matches, types.KeyValueStr{Key: k, Value: cast.ToString(v)}) } } } sort.Slice(matches, func(i, j int) bool { return matches[i].Key < matches[j].Key }) return matches } func (s *Server) MatchRedirect(pattern string) Redirect { if s.compiledRedirects == nil { return Redirect{} } pattern = strings.TrimSuffix(pattern, "index.html") for i, g := range s.compiledRedirects { redir := s.Redirects[i] // No redirect to self. if redir.To == pattern { return Redirect{} } if g.Match(pattern) { return redir } } return Redirect{} } type Headers struct { For string Values map[string]any } type Redirect struct { From string To string // HTTP status code to use for the redirect. // A status code of 200 will trigger a URL rewrite. Status int // Forcode redirect, even if original request path exists. Force bool } // CacheBuster configures cache busting for assets. type CacheBuster struct { // Trigger for files matching this regexp. Source string // Cache bust targets matching this regexp. // This regexp can contain group matches (e.g. $1) from the source regexp. Target string compiledSource func(string) func(string) bool } func (c *CacheBuster) CompileConfig(logger loggers.Logger) error { if c.compiledSource != nil { return nil } source := c.Source sourceRe, err := regexp.Compile(source) if err != nil { return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err) } target := c.Target var compileErr error debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster") c.compiledSource = func(s string) func(string) bool { m := sourceRe.FindStringSubmatch(s) matchString := "no match" match := m != nil if match { matchString = "match!" } debugl.Logf("Matching %q with source %q: %s", s, source, matchString) if !match { return nil } groups := m[1:] currentTarget := target // Replace $1, $2 etc. in target. for i, g := range groups { currentTarget = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g) } targetRe, err := regexp.Compile(currentTarget) if err != nil { compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", currentTarget, err) return nil } return func(ss string) bool { match = targetRe.MatchString(ss) matchString := "no match" if match { matchString = "match!" } logger.Debugf("Matching %q with target %q: %s", ss, currentTarget, matchString) return match } } return compileErr } func (r Redirect) IsZero() bool { return r.From == "" } const ( // Keep this a little coarse grained, some false positives are OK. cssTargetCachebusterRe = `(css|styles|scss|sass)` ) func DecodeServer(cfg Provider) (Server, error) { s := &Server{} _ = mapstructure.WeakDecode(cfg.GetStringMap("server"), s) for i, redir := range s.Redirects { // Get it in line with the Hugo server for OK responses. // We currently treat the 404 as a special case, they are always "ugly", so keep them as is. if redir.Status != 404 { redir.To = strings.TrimSuffix(redir.To, "index.html") if !strings.HasPrefix(redir.To, "https") && !strings.HasSuffix(redir.To, "/") { // There are some tricky infinite loop situations when dealing // when the target does not have a trailing slash. // This can certainly be handled better, but not time for that now. return Server{}, fmt.Errorf("unsupported redirect to value %q in server config; currently this must be either a remote destination or a local folder, e.g. \"/blog/\" or \"/blog/index.html\"", redir.To) } } s.Redirects[i] = redir } if len(s.Redirects) == 0 { // Set up a default redirect for 404s. s.Redirects = []Redirect{ { From: "**", To: "/404.html", Status: 404, }, } } return *s, nil } // Pagination configures the pagination behavior. type Pagination struct { // Default number of elements per pager in pagination. PagerSize int // The path element used during pagination. Path string // Whether to disable generation of alias for the first pagination page. DisableAliases bool } hugo-0.131.0/config/commonConfig_test.go000066400000000000000000000111121465312036400200670ustar00rootroot00000000000000// Copyright 2020 The Hugo Authors. All rights reserved. // // 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. package config import ( "errors" "testing" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/types" qt "github.com/frankban/quicktest" ) func TestBuild(t *testing.T) { c := qt.New(t) v := New() v.Set("build", map[string]any{ "useResourceCacheWhen": "always", }) b := DecodeBuildConfig(v) c.Assert(b.UseResourceCacheWhen, qt.Equals, "always") v.Set("build", map[string]any{ "useResourceCacheWhen": "foo", }) b = DecodeBuildConfig(v) c.Assert(b.UseResourceCacheWhen, qt.Equals, "fallback") c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, true) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, false) b.UseResourceCacheWhen = "always" c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, true) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, true) c.Assert(b.UseResourceCache(nil), qt.Equals, true) b.UseResourceCacheWhen = "never" c.Assert(b.UseResourceCache(herrors.ErrFeatureNotAvailable), qt.Equals, false) c.Assert(b.UseResourceCache(errors.New("err")), qt.Equals, false) c.Assert(b.UseResourceCache(nil), qt.Equals, false) } func TestServer(t *testing.T) { c := qt.New(t) cfg, err := FromConfigString(`[[server.headers]] for = "/*.jpg" [server.headers.values] X-Frame-Options = "DENY" X-XSS-Protection = "1; mode=block" X-Content-Type-Options = "nosniff" [[server.redirects]] from = "/foo/**" to = "/foo/index.html" status = 200 [[server.redirects]] from = "/google/**" to = "https://google.com/" status = 301 [[server.redirects]] from = "/**" to = "/default/index.html" status = 301 `, "toml") c.Assert(err, qt.IsNil) s, err := DecodeServer(cfg) c.Assert(err, qt.IsNil) c.Assert(s.CompileConfig(loggers.NewDefault()), qt.IsNil) c.Assert(s.MatchHeaders("/foo.jpg"), qt.DeepEquals, []types.KeyValueStr{ {Key: "X-Content-Type-Options", Value: "nosniff"}, {Key: "X-Frame-Options", Value: "DENY"}, {Key: "X-XSS-Protection", Value: "1; mode=block"}, }) c.Assert(s.MatchRedirect("/foo/bar/baz"), qt.DeepEquals, Redirect{ From: "/foo/**", To: "/foo/", Status: 200, }) c.Assert(s.MatchRedirect("/someother"), qt.DeepEquals, Redirect{ From: "/**", To: "/default/", Status: 301, }) c.Assert(s.MatchRedirect("/google/foo"), qt.DeepEquals, Redirect{ From: "/google/**", To: "https://google.com/", Status: 301, }) // No redirect loop, please. c.Assert(s.MatchRedirect("/default/index.html"), qt.DeepEquals, Redirect{}) c.Assert(s.MatchRedirect("/default/"), qt.DeepEquals, Redirect{}) for _, errorCase := range []string{ `[[server.redirects]] from = "/**" to = "/file" status = 301`, `[[server.redirects]] from = "/**" to = "/foo/file.html" status = 301`, } { cfg, err := FromConfigString(errorCase, "toml") c.Assert(err, qt.IsNil) _, err = DecodeServer(cfg) c.Assert(err, qt.Not(qt.IsNil)) } } func TestBuildConfigCacheBusters(t *testing.T) { c := qt.New(t) cfg := New() conf := DecodeBuildConfig(cfg) l := loggers.NewDefault() c.Assert(conf.CompileConfig(l), qt.IsNil) m, _ := conf.MatchCacheBuster(l, "tailwind.config.js") c.Assert(m, qt.IsNotNil) c.Assert(m("css"), qt.IsTrue) c.Assert(m("js"), qt.IsFalse) m, _ = conf.MatchCacheBuster(l, "foo.bar") c.Assert(m, qt.IsNil) } func TestBuildConfigCacheBusterstTailwindSetup(t *testing.T) { c := qt.New(t) cfg := New() cfg.Set("build", map[string]interface{}{ "cacheBusters": []map[string]string{ { "source": "assets/watching/hugo_stats\\.json", "target": "css", }, { "source": "(postcss|tailwind)\\.config\\.js", "target": "css", }, { "source": "assets/.*\\.(js|ts|jsx|tsx)", "target": "js", }, { "source": "assets/.*\\.(.*)$", "target": "$1", }, }, }) conf := DecodeBuildConfig(cfg) l := loggers.NewDefault() c.Assert(conf.CompileConfig(l), qt.IsNil) m, err := conf.MatchCacheBuster(l, "assets/watching/hugo_stats.json") c.Assert(err, qt.IsNil) c.Assert(m("css"), qt.IsTrue) } hugo-0.131.0/config/configLoader.go000066400000000000000000000134271465312036400170210ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package config import ( "fmt" "os" "path/filepath" "strings" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) var ( // See issue #8979 for context. // Hugo has always used config.toml etc. as the default config file name. // But hugo.toml is a more descriptive name, but we need to check for both. DefaultConfigNames = []string{"hugo", "config"} DefaultConfigNamesSet = make(map[string]bool) ValidConfigFileExtensions = []string{"toml", "yaml", "yml", "json"} validConfigFileExtensionsMap map[string]bool = make(map[string]bool) ) func init() { for _, name := range DefaultConfigNames { DefaultConfigNamesSet[name] = true } for _, ext := range ValidConfigFileExtensions { validConfigFileExtensionsMap[ext] = true } } // IsValidConfigFilename returns whether filename is one of the supported // config formats in Hugo. func IsValidConfigFilename(filename string) bool { ext := strings.ToLower(strings.TrimPrefix(filepath.Ext(filename), ".")) return validConfigFileExtensionsMap[ext] } func FromTOMLConfigString(config string) Provider { cfg, err := FromConfigString(config, "toml") if err != nil { panic(err) } return cfg } // FromConfigString creates a config from the given YAML, JSON or TOML config. This is useful in tests. func FromConfigString(config, configType string) (Provider, error) { m, err := readConfig(metadecoders.FormatFromString(configType), []byte(config)) if err != nil { return nil, err } return NewFrom(m), nil } // FromFile loads the configuration from the given filename. func FromFile(fs afero.Fs, filename string) (Provider, error) { m, err := loadConfigFromFile(fs, filename) if err != nil { fe := herrors.UnwrapFileError(err) if fe != nil { pos := fe.Position() pos.Filename = filename fe.UpdatePosition(pos) return nil, err } return nil, herrors.NewFileErrorFromFile(err, filename, fs, nil) } return NewFrom(m), nil } // FromFileToMap is the same as FromFile, but it returns the config values // as a simple map. func FromFileToMap(fs afero.Fs, filename string) (map[string]any, error) { return loadConfigFromFile(fs, filename) } func readConfig(format metadecoders.Format, data []byte) (map[string]any, error) { m, err := metadecoders.Default.UnmarshalToMap(data, format) if err != nil { return nil, err } RenameKeys(m) return m, nil } func loadConfigFromFile(fs afero.Fs, filename string) (map[string]any, error) { m, err := metadecoders.Default.UnmarshalFileToMap(fs, filename) if err != nil { return nil, err } RenameKeys(m) return m, nil } func LoadConfigFromDir(sourceFs afero.Fs, configDir, environment string) (Provider, []string, error) { defaultConfigDir := filepath.Join(configDir, "_default") environmentConfigDir := filepath.Join(configDir, environment) cfg := New() var configDirs []string // Merge from least to most specific. for _, dir := range []string{defaultConfigDir, environmentConfigDir} { if _, err := sourceFs.Stat(dir); err == nil { configDirs = append(configDirs, dir) } } if len(configDirs) == 0 { return nil, nil, nil } // Keep track of these so we can watch them for changes. var dirnames []string for _, configDir := range configDirs { err := afero.Walk(sourceFs, configDir, func(path string, fi os.FileInfo, err error) error { if fi == nil || err != nil { return nil } if fi.IsDir() { dirnames = append(dirnames, path) return nil } if !IsValidConfigFilename(path) { return nil } name := paths.Filename(filepath.Base(path)) item, err := metadecoders.Default.UnmarshalFileToMap(sourceFs, path) if err != nil { // This will be used in error reporting, use the most specific value. dirnames = []string{path} return fmt.Errorf("failed to unmarshal config for path %q: %w", path, err) } var keyPath []string if !DefaultConfigNamesSet[name] { // Can be params.jp, menus.en etc. name, lang := paths.FileAndExtNoDelimiter(name) keyPath = []string{name} if lang != "" { keyPath = []string{"languages", lang} switch name { case "menu", "menus": keyPath = append(keyPath, "menus") case "params": keyPath = append(keyPath, "params") } } } root := item if len(keyPath) > 0 { root = make(map[string]any) m := root for i, key := range keyPath { if i >= len(keyPath)-1 { m[key] = item } else { nm := make(map[string]any) m[key] = nm m = nm } } } // Migrate menu => menus etc. RenameKeys(root) // Set will overwrite keys with the same name, recursively. cfg.Set("", root) return nil }) if err != nil { return nil, dirnames, err } } return cfg, dirnames, nil } var keyAliases maps.KeyRenamer func init() { var err error keyAliases, err = maps.NewKeyRenamer( // Before 0.53 we used singular for "menu". "{menu,languages/*/menu}", "menus", ) if err != nil { panic(err) } } // RenameKeys renames config keys in m recursively according to a global Hugo // alias definition. func RenameKeys(m map[string]any) { keyAliases.Rename(m) } hugo-0.131.0/config/configLoader_test.go000066400000000000000000000021251465312036400200510ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package config import ( "strings" "testing" qt "github.com/frankban/quicktest" ) func TestIsValidConfigFileName(t *testing.T) { c := qt.New(t) for _, ext := range ValidConfigFileExtensions { filename := "config." + ext c.Assert(IsValidConfigFilename(filename), qt.Equals, true) c.Assert(IsValidConfigFilename(strings.ToUpper(filename)), qt.Equals, true) } c.Assert(IsValidConfigFilename(""), qt.Equals, false) c.Assert(IsValidConfigFilename("config.toml.swp"), qt.Equals, false) } hugo-0.131.0/config/configProvider.go000066400000000000000000000066221465312036400174040ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package config import ( "time" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/common/urls" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/langs" ) // AllProvider is a sub set of all config settings. type AllProvider interface { Language() *langs.Language Languages() langs.Languages LanguagesDefaultFirst() langs.Languages LanguagePrefix() string BaseURL() urls.BaseURL BaseURLLiveReload() urls.BaseURL PathParser() *paths.PathParser Environment() string IsMultihost() bool IsMultilingual() bool NoBuildLock() bool BaseConfig() BaseConfig Dirs() CommonDirs Quiet() bool DirsBase() CommonDirs ContentTypes() ContentTypesProvider GetConfigSection(string) any GetConfig() any CanonifyURLs() bool DisablePathToLower() bool RemovePathAccents() bool IsUglyURLs(section string) bool DefaultContentLanguage() string DefaultContentLanguageInSubdir() bool IsLangDisabled(string) bool SummaryLength() int Pagination() Pagination BuildExpired() bool BuildFuture() bool BuildDrafts() bool Running() bool Watching() bool NewIdentityManager(name string) identity.Manager FastRenderMode() bool PrintUnusedTemplates() bool EnableMissingTranslationPlaceholders() bool TemplateMetrics() bool TemplateMetricsHints() bool PrintI18nWarnings() bool CreateTitle(s string) string IgnoreFile(s string) bool NewContentEditor() string Timeout() time.Duration StaticDirs() []string IgnoredLogs() map[string]bool WorkingDir() string EnableEmoji() bool } // We cannot import the media package as that would create a circular dependency. // This interface defineds a sub set of what media.ContentTypes provides. type ContentTypesProvider interface { IsContentSuffix(suffix string) bool IsContentFile(filename string) bool IsIndexContentFile(filename string) bool IsHTMLSuffix(suffix string) bool } // Provider provides the configuration settings for Hugo. type Provider interface { GetString(key string) string GetInt(key string) int GetBool(key string) bool GetParams(key string) maps.Params GetStringMap(key string) map[string]any GetStringMapString(key string) map[string]string GetStringSlice(key string) []string Get(key string) any Set(key string, value any) Keys() []string Merge(key string, value any) SetDefaults(params maps.Params) SetDefaultMergeStrategy() WalkParams(walkFn func(params ...maps.KeyParams) bool) IsSet(key string) bool } // GetStringSlicePreserveString returns a string slice from the given config and key. // It differs from the GetStringSlice method in that if the config value is a string, // we do not attempt to split it into fields. func GetStringSlicePreserveString(cfg Provider, key string) []string { sd := cfg.Get(key) return types.ToStringSlicePreserveString(sd) } hugo-0.131.0/config/configProvider_test.go000066400000000000000000000021161465312036400204350ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package config import ( "testing" qt "github.com/frankban/quicktest" ) func TestGetStringSlicePreserveString(t *testing.T) { c := qt.New(t) cfg := New() s := "This is a string" sSlice := []string{"This", "is", "a", "slice"} cfg.Set("s1", s) cfg.Set("s2", sSlice) c.Assert(GetStringSlicePreserveString(cfg, "s1"), qt.DeepEquals, []string{s}) c.Assert(GetStringSlicePreserveString(cfg, "s2"), qt.DeepEquals, sSlice) c.Assert(GetStringSlicePreserveString(cfg, "s3"), qt.IsNil) } hugo-0.131.0/config/defaultConfigProvider.go000066400000000000000000000216751465312036400207160ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package config import ( "fmt" "sort" "strings" "sync" xmaps "golang.org/x/exp/maps" "github.com/spf13/cast" "github.com/gohugoio/hugo/common/maps" ) var ( // ConfigRootKeysSet contains all of the config map root keys. ConfigRootKeysSet = map[string]bool{ "build": true, "caches": true, "cascade": true, "frontmatter": true, "languages": true, "imaging": true, "markup": true, "mediatypes": true, "menus": true, "minify": true, "module": true, "outputformats": true, "params": true, "permalinks": true, "related": true, "sitemap": true, "privacy": true, "security": true, "taxonomies": true, } // ConfigRootKeys is a sorted version of ConfigRootKeysSet. ConfigRootKeys []string ) func init() { for k := range ConfigRootKeysSet { ConfigRootKeys = append(ConfigRootKeys, k) } sort.Strings(ConfigRootKeys) } // New creates a Provider backed by an empty maps.Params. func New() Provider { return &defaultConfigProvider{ root: make(maps.Params), } } // NewFrom creates a Provider backed by params. func NewFrom(params maps.Params) Provider { maps.PrepareParams(params) return &defaultConfigProvider{ root: params, } } // defaultConfigProvider is a Provider backed by a map where all keys are lower case. // All methods are thread safe. type defaultConfigProvider struct { mu sync.RWMutex root maps.Params keyCache sync.Map } func (c *defaultConfigProvider) Get(k string) any { if k == "" { return c.root } c.mu.RLock() key, m := c.getNestedKeyAndMap(strings.ToLower(k), false) if m == nil { c.mu.RUnlock() return nil } v := m[key] c.mu.RUnlock() return v } func (c *defaultConfigProvider) GetBool(k string) bool { v := c.Get(k) return cast.ToBool(v) } func (c *defaultConfigProvider) GetInt(k string) int { v := c.Get(k) return cast.ToInt(v) } func (c *defaultConfigProvider) IsSet(k string) bool { var found bool c.mu.RLock() key, m := c.getNestedKeyAndMap(strings.ToLower(k), false) if m != nil { _, found = m[key] } c.mu.RUnlock() return found } func (c *defaultConfigProvider) GetString(k string) string { v := c.Get(k) return cast.ToString(v) } func (c *defaultConfigProvider) GetParams(k string) maps.Params { v := c.Get(k) if v == nil { return nil } return v.(maps.Params) } func (c *defaultConfigProvider) GetStringMap(k string) map[string]any { v := c.Get(k) return maps.ToStringMap(v) } func (c *defaultConfigProvider) GetStringMapString(k string) map[string]string { v := c.Get(k) return maps.ToStringMapString(v) } func (c *defaultConfigProvider) GetStringSlice(k string) []string { v := c.Get(k) return cast.ToStringSlice(v) } func (c *defaultConfigProvider) Set(k string, v any) { c.mu.Lock() defer c.mu.Unlock() k = strings.ToLower(k) if k == "" { if p, err := maps.ToParamsAndPrepare(v); err == nil { // Set the values directly in root. maps.SetParams(c.root, p) } else { c.root[k] = v } return } switch vv := v.(type) { case map[string]any, map[any]any, map[string]string: p := maps.MustToParamsAndPrepare(vv) v = p } key, m := c.getNestedKeyAndMap(k, true) if m == nil { return } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { if p2, ok := v.(maps.Params); ok { maps.SetParams(p1, p2) return } } } m[key] = v } // SetDefaults will set values from params if not already set. func (c *defaultConfigProvider) SetDefaults(params maps.Params) { maps.PrepareParams(params) for k, v := range params { if _, found := c.root[k]; !found { c.root[k] = v } } } func (c *defaultConfigProvider) Merge(k string, v any) { c.mu.Lock() defer c.mu.Unlock() k = strings.ToLower(k) if k == "" { rs, f := c.root.GetMergeStrategy() if f && rs == maps.ParamsMergeStrategyNone { // The user has set a "no merge" strategy on this, // nothing more to do. return } if p, err := maps.ToParamsAndPrepare(v); err == nil { // As there may be keys in p not in root, we need to handle // those as a special case. var keysToDelete []string for kk, vv := range p { if pp, ok := vv.(maps.Params); ok { if pppi, ok := c.root[kk]; ok { ppp := pppi.(maps.Params) maps.MergeParamsWithStrategy("", ppp, pp) } else { // We need to use the default merge strategy for // this key. np := make(maps.Params) strategy := c.determineMergeStrategy(maps.KeyParams{Key: "", Params: c.root}, maps.KeyParams{Key: kk, Params: np}) np.SetMergeStrategy(strategy) maps.MergeParamsWithStrategy("", np, pp) c.root[kk] = np if np.IsZero() { // Just keep it until merge is done. keysToDelete = append(keysToDelete, kk) } } } } // Merge the rest. maps.MergeParams(c.root, p) for _, k := range keysToDelete { delete(c.root, k) } } else { panic(fmt.Sprintf("unsupported type %T received in Merge", v)) } return } switch vv := v.(type) { case map[string]any, map[any]any, map[string]string: p := maps.MustToParamsAndPrepare(vv) v = p } key, m := c.getNestedKeyAndMap(k, true) if m == nil { return } if existing, found := m[key]; found { if p1, ok := existing.(maps.Params); ok { if p2, ok := v.(maps.Params); ok { maps.MergeParamsWithStrategy("", p1, p2) } } } else { m[key] = v } } func (c *defaultConfigProvider) Keys() []string { c.mu.RLock() defer c.mu.RUnlock() return xmaps.Keys(c.root) } func (c *defaultConfigProvider) WalkParams(walkFn func(params ...maps.KeyParams) bool) { var walk func(params ...maps.KeyParams) walk = func(params ...maps.KeyParams) { if walkFn(params...) { return } p1 := params[len(params)-1] i := len(params) for k, v := range p1.Params { if p2, ok := v.(maps.Params); ok { paramsplus1 := make([]maps.KeyParams, i+1) copy(paramsplus1, params) paramsplus1[i] = maps.KeyParams{Key: k, Params: p2} walk(paramsplus1...) } } } walk(maps.KeyParams{Key: "", Params: c.root}) } func (c *defaultConfigProvider) determineMergeStrategy(params ...maps.KeyParams) maps.ParamsMergeStrategy { if len(params) == 0 { return maps.ParamsMergeStrategyNone } var ( strategy maps.ParamsMergeStrategy prevIsRoot bool curr = params[len(params)-1] ) if len(params) > 1 { prev := params[len(params)-2] prevIsRoot = prev.Key == "" // Inherit from parent (but not from the root unless it's set by user). s, found := prev.Params.GetMergeStrategy() if !prevIsRoot && !found { panic("invalid state, merge strategy not set on parent") } if found || !prevIsRoot { strategy = s } } switch curr.Key { case "": // Don't set a merge strategy on the root unless set by user. // This will be handled as a special case. case "params": strategy = maps.ParamsMergeStrategyDeep case "outputformats", "mediatypes": if prevIsRoot { strategy = maps.ParamsMergeStrategyShallow } case "menus": isMenuKey := prevIsRoot if !isMenuKey { // Can also be set below languages. // root > languages > en > menus if len(params) == 4 && params[1].Key == "languages" { isMenuKey = true } } if isMenuKey { strategy = maps.ParamsMergeStrategyShallow } default: if strategy == "" { strategy = maps.ParamsMergeStrategyNone } } return strategy } func (c *defaultConfigProvider) SetDefaultMergeStrategy() { c.WalkParams(func(params ...maps.KeyParams) bool { if len(params) == 0 { return false } p := params[len(params)-1].Params var found bool if _, found = p.GetMergeStrategy(); found { // Set by user. return false } strategy := c.determineMergeStrategy(params...) if strategy != "" { p.SetMergeStrategy(strategy) } return false }) } func (c *defaultConfigProvider) getNestedKeyAndMap(key string, create bool) (string, maps.Params) { var parts []string v, ok := c.keyCache.Load(key) if ok { parts = v.([]string) } else { parts = strings.Split(key, ".") c.keyCache.Store(key, parts) } current := c.root for i := 0; i < len(parts)-1; i++ { next, found := current[parts[i]] if !found { if create { next = make(maps.Params) current[parts[i]] = next } else { return "", nil } } var ok bool current, ok = next.(maps.Params) if !ok { // E.g. a string, not a map that we can store values in. return "", nil } } return parts[len(parts)-1], current } hugo-0.131.0/config/defaultConfigProvider_test.go000066400000000000000000000155011465312036400217440ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package config import ( "context" "errors" "fmt" "strconv" "strings" "testing" "github.com/gohugoio/hugo/common/para" "github.com/gohugoio/hugo/common/maps" qt "github.com/frankban/quicktest" ) func TestDefaultConfigProvider(t *testing.T) { c := qt.New(t) c.Run("Set and get", func(c *qt.C) { cfg := New() var k string var v any k, v = "foo", "bar" cfg.Set(k, v) c.Assert(cfg.Get(k), qt.Equals, v) c.Assert(cfg.Get(strings.ToUpper(k)), qt.Equals, v) c.Assert(cfg.GetString(k), qt.Equals, v) k, v = "foo", 42 cfg.Set(k, v) c.Assert(cfg.Get(k), qt.Equals, v) c.Assert(cfg.GetInt(k), qt.Equals, v) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "foo": 42, }) }) c.Run("Set and get map", func(c *qt.C) { cfg := New() cfg.Set("foo", map[string]any{ "bar": "baz", }) c.Assert(cfg.Get("foo"), qt.DeepEquals, maps.Params{ "bar": "baz", }) c.Assert(cfg.GetStringMap("foo"), qt.DeepEquals, map[string]any{"bar": string("baz")}) c.Assert(cfg.GetStringMapString("foo"), qt.DeepEquals, map[string]string{"bar": string("baz")}) }) c.Run("Set and get nested", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) cfg.Set("a.c", "cv") c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "b": "bv", "c": "cv", }) c.Assert(cfg.Get("a.c"), qt.Equals, "cv") cfg.Set("b.a", "av") c.Assert(cfg.Get("b"), qt.DeepEquals, maps.Params{ "a": "av", }) cfg.Set("b", map[string]any{ "b": "bv", }) c.Assert(cfg.Get("b"), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv", }) cfg = New() cfg.Set("a", "av") cfg.Set("", map[string]any{ "a": "av2", "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av2", "b": "bv2", }) cfg = New() cfg.Set("a", "av") cfg.Set("", map[string]any{ "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv2", }) cfg = New() cfg.Set("", map[string]any{ "foo": map[string]any{ "a": "av", }, }) cfg.Set("", map[string]any{ "foo": map[string]any{ "b": "bv2", }, }) c.Assert(cfg.Get("foo"), qt.DeepEquals, maps.Params{ "a": "av", "b": "bv2", }) }) c.Run("Merge default strategy", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) cfg.Merge("a", map[string]any{ "B": "bv2", "c": "cv2", }) c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "b": "bv", "c": "cv2", }) cfg = New() cfg.Set("a", "av") cfg.Merge("", map[string]any{ "a": "av2", "b": "bv2", }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": "av", }) }) c.Run("Merge shallow", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "_merge": "shallow", "B": "bv", "c": map[string]any{ "b": "bv", }, }) cfg.Merge("a", map[string]any{ "c": map[string]any{ "d": "dv2", }, "e": "ev2", }) c.Assert(cfg.Get("a"), qt.DeepEquals, maps.Params{ "e": "ev2", "_merge": maps.ParamsMergeStrategyShallow, "b": "bv", "c": maps.Params{ "b": "bv", }, }) }) // Issue #8679 c.Run("Merge typed maps", func(c *qt.C) { for _, left := range []any{ map[string]string{ "c": "cv1", }, map[string]any{ "c": "cv1", }, map[any]any{ "c": "cv1", }, } { cfg := New() cfg.Set("", map[string]any{ "b": left, }) cfg.Merge("", maps.Params{ "b": maps.Params{ "c": "cv2", "d": "dv2", }, }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "b": maps.Params{ "c": "cv1", "d": "dv2", }, }) } for _, left := range []any{ map[string]string{ "b": "bv1", }, map[string]any{ "b": "bv1", }, map[any]any{ "b": "bv1", }, } { for _, right := range []any{ map[string]string{ "b": "bv2", "c": "cv2", }, map[string]any{ "b": "bv2", "c": "cv2", }, map[any]any{ "b": "bv2", "c": "cv2", }, } { cfg := New() cfg.Set("a", left) cfg.Merge("a", right) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "a": maps.Params{ "b": "bv1", "c": "cv2", }, }) } } }) // Issue #8701 c.Run("Prevent _merge only maps", func(c *qt.C) { cfg := New() cfg.Set("", map[string]any{ "B": "bv", }) cfg.Merge("", map[string]any{ "c": map[string]any{ "_merge": "shallow", "d": "dv2", }, }) c.Assert(cfg.Get(""), qt.DeepEquals, maps.Params{ "b": "bv", }) }) c.Run("IsSet", func(c *qt.C) { cfg := New() cfg.Set("a", map[string]any{ "B": "bv", }) c.Assert(cfg.IsSet("A"), qt.IsTrue) c.Assert(cfg.IsSet("a.b"), qt.IsTrue) c.Assert(cfg.IsSet("z"), qt.IsFalse) }) c.Run("Para", func(c *qt.C) { cfg := New() p := para.New(4) r, _ := p.Start(context.Background()) setAndGet := func(k string, v int) error { vs := strconv.Itoa(v) cfg.Set(k, v) err := errors.New("get failed") if cfg.Get(k) != v { return err } if cfg.GetInt(k) != v { return err } if cfg.GetString(k) != vs { return err } if !cfg.IsSet(k) { return err } return nil } for i := 0; i < 20; i++ { i := i r.Run(func() error { const v = 42 k := fmt.Sprintf("k%d", i) if err := setAndGet(k, v); err != nil { return err } m := maps.Params{ "new": 42, } cfg.Merge("", m) return nil }) } c.Assert(r.Wait(), qt.IsNil) }) } func BenchmarkDefaultConfigProvider(b *testing.B) { type cfger interface { Get(key string) any Set(key string, value any) IsSet(key string) bool } newMap := func() map[string]any { return map[string]any{ "a": map[string]any{ "b": map[string]any{ "c": 32, "d": 43, }, }, "b": 62, } } runMethods := func(b *testing.B, cfg cfger) { m := newMap() cfg.Set("mymap", m) cfg.Set("num", 32) if !(cfg.IsSet("mymap") && cfg.IsSet("mymap.a") && cfg.IsSet("mymap.a.b") && cfg.IsSet("mymap.a.b.c")) { b.Fatal("IsSet failed") } if cfg.Get("num") != 32 { b.Fatal("Get failed") } if cfg.Get("mymap.a.b.c") != 32 { b.Fatal("Get failed") } } b.Run("Custom", func(b *testing.B) { cfg := New() for i := 0; i < b.N; i++ { runMethods(b, cfg) } }) } hugo-0.131.0/config/env.go000066400000000000000000000052611465312036400152120ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package config import ( "os" "runtime" "strconv" "strings" "github.com/pbnjay/memory" ) const ( gigabyte = 1 << 30 ) // GetNumWorkerMultiplier returns the base value used to calculate the number // of workers to use for Hugo's parallel execution. // It returns the value in HUGO_NUMWORKERMULTIPLIER OS env variable if set to a // positive integer, else the number of logical CPUs. func GetNumWorkerMultiplier() int { if gmp := os.Getenv("HUGO_NUMWORKERMULTIPLIER"); gmp != "" { if p, err := strconv.Atoi(gmp); err == nil && p > 0 { return p } } return runtime.NumCPU() } // GetMemoryLimit returns the upper memory limit in bytes for Hugo's in-memory caches. // Note that this does not represent "all of the memory" that Hugo will use, // so it needs to be set to a lower number than the available system memory. // It will read from the HUGO_MEMORYLIMIT (in Gigabytes) environment variable. // If that is not set, it will set aside a quarter of the total system memory. func GetMemoryLimit() uint64 { if mem := os.Getenv("HUGO_MEMORYLIMIT"); mem != "" { if v := stringToGibabyte(mem); v > 0 { return v } } // There is a FreeMemory function, but as the kernel in most situations // will take whatever memory that is left and use for caching etc., // that value is not something that we can use. m := memory.TotalMemory() if m != 0 { return uint64(m / 4) } return 2 * gigabyte } func stringToGibabyte(f string) uint64 { if v, err := strconv.ParseFloat(f, 32); err == nil && v > 0 { return uint64(v * gigabyte) } return 0 } // SetEnvVars sets vars on the form key=value in the oldVars slice. func SetEnvVars(oldVars *[]string, keyValues ...string) { for i := 0; i < len(keyValues); i += 2 { setEnvVar(oldVars, keyValues[i], keyValues[i+1]) } } func SplitEnvVar(v string) (string, string) { name, value, _ := strings.Cut(v, "=") return name, value } func setEnvVar(vars *[]string, key, value string) { for i := range *vars { if strings.HasPrefix((*vars)[i], key+"=") { (*vars)[i] = key + "=" + value return } } // New var. *vars = append(*vars, key+"="+value) } hugo-0.131.0/config/env_test.go000066400000000000000000000020431465312036400162440ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package config import ( "testing" qt "github.com/frankban/quicktest" ) func TestSetEnvVars(t *testing.T) { t.Parallel() c := qt.New(t) vars := []string{"FOO=bar", "HUGO=cool", "BAR=foo"} SetEnvVars(&vars, "HUGO", "rocking!", "NEW", "bar") c.Assert(vars, qt.DeepEquals, []string{"FOO=bar", "HUGO=rocking!", "BAR=foo", "NEW=bar"}) key, val := SplitEnvVar("HUGO=rocks") c.Assert(key, qt.Equals, "HUGO") c.Assert(val, qt.Equals, "rocks") } hugo-0.131.0/config/namespace.go000066400000000000000000000044621465312036400163600ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package config import ( "encoding/json" "github.com/gohugoio/hugo/common/hashing" ) func DecodeNamespace[S, C any](configSource any, buildConfig func(any) (C, any, error)) (*ConfigNamespace[S, C], error) { // Calculate the hash of the input (not including any defaults applied later). // This allows us to introduce new config options without breaking the hash. h := hashing.HashString(configSource) // Build the config c, ext, err := buildConfig(configSource) if err != nil { return nil, err } if ext == nil { ext = configSource } if ext == nil { panic("ext is nil") } ns := &ConfigNamespace[S, C]{ SourceStructure: ext, SourceHash: h, Config: c, } return ns, nil } // ConfigNamespace holds a Hugo configuration namespace. // The construct looks a little odd, but it's built to make the configuration elements // both self-documenting and contained in a common structure. type ConfigNamespace[S, C any] struct { // SourceStructure represents the source configuration with any defaults applied. // This is used for documentation and printing of the configuration setup to the user. SourceStructure any // SourceHash is a hash of the source configuration before any defaults gets applied. SourceHash string // Config is the final configuration as used by Hugo. Config C } // MarshalJSON marshals the source structure. func (ns *ConfigNamespace[S, C]) MarshalJSON() ([]byte, error) { return json.Marshal(ns.SourceStructure) } // Signature returns the signature of the source structure. // Note that this is for documentation purposes only and SourceStructure may not always be cast to S (it's usually just a map). func (ns *ConfigNamespace[S, C]) Signature() S { var s S return s } hugo-0.131.0/config/namespace_test.go000066400000000000000000000032421465312036400174120ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package config import ( "strings" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/common/maps" "github.com/mitchellh/mapstructure" ) func TestNamespace(t *testing.T) { c := qt.New(t) c.Assert(true, qt.Equals, true) // ns, err := config.DecodeNamespace[map[string]DocsMediaTypeConfig](in, defaultMediaTypesConfig, buildConfig) ns, err := DecodeNamespace[[]*tstNsExt]( map[string]interface{}{"foo": "bar"}, func(v any) (*tstNsExt, any, error) { t := &tstNsExt{} m, err := maps.ToStringMapE(v) if err != nil { return nil, nil, err } return t, nil, mapstructure.WeakDecode(m, t) }, ) c.Assert(err, qt.IsNil) c.Assert(ns, qt.Not(qt.IsNil)) c.Assert(ns.SourceStructure, qt.DeepEquals, map[string]interface{}{"foo": "bar"}) c.Assert(ns.SourceHash, qt.Equals, "1450430416588600409") c.Assert(ns.Config, qt.DeepEquals, &tstNsExt{Foo: "bar"}) c.Assert(ns.Signature(), qt.DeepEquals, []*tstNsExt(nil)) } type ( tstNsExt struct { Foo string } ) func (t *tstNsExt) Init() error { t.Foo = strings.ToUpper(t.Foo) return nil } hugo-0.131.0/config/privacy/000077500000000000000000000000001465312036400155445ustar00rootroot00000000000000hugo-0.131.0/config/privacy/privacyConfig.go000066400000000000000000000065151465312036400207050ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package privacy import ( "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) const privacyConfigKey = "privacy" // Service is the common values for a service in a policy definition. type Service struct { Disable bool } // Config is a privacy configuration for all the relevant services in Hugo. type Config struct { Disqus Disqus GoogleAnalytics GoogleAnalytics Instagram Instagram Twitter Twitter Vimeo Vimeo YouTube YouTube } // Disqus holds the privacy configuration settings related to the Disqus template. type Disqus struct { Service `mapstructure:",squash"` } // GoogleAnalytics holds the privacy configuration settings related to the Google Analytics template. type GoogleAnalytics struct { Service `mapstructure:",squash"` // Enabling this will make the GA templates respect the // "Do Not Track" HTTP header. See https://www.paulfurley.com/google-analytics-dnt/. RespectDoNotTrack bool } // Instagram holds the privacy configuration settings related to the Instagram shortcode. type Instagram struct { Service `mapstructure:",squash"` // If simple mode is enabled, a static and no-JS version of the Instagram // image card will be built. Simple bool } // Twitter holds the privacy configuration settingsrelated to the Twitter shortcode. type Twitter struct { Service `mapstructure:",squash"` // When set to true, the Tweet and its embedded page on your site are not used // for purposes that include personalized suggestions and personalized ads. EnableDNT bool // If simple mode is enabled, a static and no-JS version of the Tweet will be built. Simple bool } // Vimeo holds the privacy configuration settingsrelated to the Vimeo shortcode. type Vimeo struct { Service `mapstructure:",squash"` // When set to true, the Vimeo player will be blocked from tracking any session data, // including all cookies and stats. EnableDNT bool // If simple mode is enabled, only a thumbnail is fetched from i.vimeocdn.com and // shown with a play button overlaid. If a user clicks the button, he/she will // be taken to the video page on vimeo.com in a new browser tab. Simple bool } // YouTube holds the privacy configuration settingsrelated to the YouTube shortcode. type YouTube struct { Service `mapstructure:",squash"` // When you turn on privacy-enhanced mode, // YouTube won’t store information about visitors on your website // unless the user plays the embedded video. PrivacyEnhanced bool } // DecodeConfig creates a privacy Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (pc Config, err error) { if !cfg.IsSet(privacyConfigKey) { return } m := cfg.GetStringMap(privacyConfigKey) err = mapstructure.WeakDecode(m, &pc) return } hugo-0.131.0/config/privacy/privacyConfig_test.go000066400000000000000000000044361465312036400217440ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package privacy import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [privacy] [privacy.disqus] disable = true [privacy.googleAnalytics] disable = true respectDoNotTrack = true [privacy.instagram] disable = true simple = true [privacy.twitter] disable = true enableDNT = true simple = true [privacy.vimeo] disable = true enableDNT = true simple = true [privacy.youtube] disable = true privacyEnhanced = true simple = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) got := []bool{ pc.Disqus.Disable, pc.GoogleAnalytics.Disable, pc.GoogleAnalytics.RespectDoNotTrack, pc.Instagram.Disable, pc.Instagram.Simple, pc.Twitter.Disable, pc.Twitter.EnableDNT, pc.Twitter.Simple, pc.Vimeo.Disable, pc.Vimeo.EnableDNT, pc.Vimeo.Simple, pc.YouTube.PrivacyEnhanced, pc.YouTube.Disable, } c.Assert(got, qt.All(qt.Equals), true) } func TestDecodeConfigFromTOMLCaseInsensitive(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [Privacy] [Privacy.YouTube] PrivacyENhanced = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.YouTube.PrivacyEnhanced, qt.Equals, true) } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) pc, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.YouTube.PrivacyEnhanced, qt.Equals, false) } hugo-0.131.0/config/security/000077500000000000000000000000001465312036400157365ustar00rootroot00000000000000hugo-0.131.0/config/security/securityConfig.go000066400000000000000000000135561465312036400212740ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package security import ( "bytes" "encoding/json" "errors" "fmt" "reflect" "strings" "github.com/gohugoio/hugo/common/herrors" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/mitchellh/mapstructure" ) const securityConfigKey = "security" // DefaultConfig holds the default security policy. var DefaultConfig = Config{ Exec: Exec{ Allow: MustNewWhitelist( "^(dart-)?sass(-embedded)?$", // sass, dart-sass, dart-sass-embedded. "^go$", // for Go Modules "^git$", // For Git info "^npx$", // used by all Node tools (Babel, PostCSS). "^postcss$", "^tailwindcss$", ), // These have been tested to work with Hugo's external programs // on Windows, Linux and MacOS. OsEnv: MustNewWhitelist(`(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$`), }, Funcs: Funcs{ Getenv: MustNewWhitelist("^HUGO_", "^CI$"), }, HTTP: HTTP{ URLs: MustNewWhitelist(".*"), Methods: MustNewWhitelist("(?i)GET|POST"), }, } // Config is the top level security config. // {"name": "security", "description": "This section holds the top level security config.", "newIn": "0.91.0" } type Config struct { // Restricts access to os.Exec.... // { "newIn": "0.91.0" } Exec Exec `json:"exec"` // Restricts access to certain template funcs. Funcs Funcs `json:"funcs"` // Restricts access to resources.GetRemote, getJSON, getCSV. HTTP HTTP `json:"http"` // Allow inline shortcodes EnableInlineShortcodes bool `json:"enableInlineShortcodes"` } // Exec holds os/exec policies. type Exec struct { Allow Whitelist `json:"allow"` OsEnv Whitelist `json:"osEnv"` } // Funcs holds template funcs policies. type Funcs struct { // OS env keys allowed to query in os.Getenv. Getenv Whitelist `json:"getenv"` } type HTTP struct { // URLs to allow in remote HTTP (resources.Get, getJSON, getCSV). URLs Whitelist `json:"urls"` // HTTP methods to allow. Methods Whitelist `json:"methods"` // Media types where the Content-Type in the response is used instead of resolving from the file content. MediaTypes Whitelist `json:"mediaTypes"` } // ToTOML converts c to TOML with [security] as the root. func (c Config) ToTOML() string { sec := c.ToSecurityMap() var b bytes.Buffer if err := parser.InterfaceToConfig(sec, metadecoders.TOML, &b); err != nil { panic(err) } return strings.TrimSpace(b.String()) } func (c Config) CheckAllowedExec(name string) error { if !c.Exec.Allow.Accept(name) { return &AccessDeniedError{ name: name, path: "security.exec.allow", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedGetEnv(name string) error { if !c.Funcs.Getenv.Accept(name) { return &AccessDeniedError{ name: name, path: "security.funcs.getenv", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedHTTPURL(url string) error { if !c.HTTP.URLs.Accept(url) { return &AccessDeniedError{ name: url, path: "security.http.urls", policies: c.ToTOML(), } } return nil } func (c Config) CheckAllowedHTTPMethod(method string) error { if !c.HTTP.Methods.Accept(method) { return &AccessDeniedError{ name: method, path: "security.http.method", policies: c.ToTOML(), } } return nil } // ToSecurityMap converts c to a map with 'security' as the root key. func (c Config) ToSecurityMap() map[string]any { // Take it to JSON and back to get proper casing etc. asJson, err := json.Marshal(c) herrors.Must(err) m := make(map[string]any) herrors.Must(json.Unmarshal(asJson, &m)) // Add the root sec := map[string]any{ "security": m, } return sec } // DecodeConfig creates a privacy Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (Config, error) { sc := DefaultConfig if cfg.IsSet(securityConfigKey) { m := cfg.GetStringMap(securityConfigKey) dec, err := mapstructure.NewDecoder( &mapstructure.DecoderConfig{ WeaklyTypedInput: true, Result: &sc, DecodeHook: stringSliceToWhitelistHook(), }, ) if err != nil { return sc, err } if err = dec.Decode(m); err != nil { return sc, err } } if !sc.EnableInlineShortcodes { // Legacy sc.EnableInlineShortcodes = cfg.GetBool("enableInlineShortcodes") } return sc, nil } func stringSliceToWhitelistHook() mapstructure.DecodeHookFuncType { return func( f reflect.Type, t reflect.Type, data any, ) (any, error) { if t != reflect.TypeOf(Whitelist{}) { return data, nil } wl := types.ToStringSlicePreserveString(data) return NewWhitelist(wl...) } } // AccessDeniedError represents a security policy conflict. type AccessDeniedError struct { path string name string policies string } func (e *AccessDeniedError) Error() string { return fmt.Sprintf("access denied: %q is not whitelisted in policy %q; the current security configuration is:\n\n%s\n\n", e.name, e.path, e.policies) } // IsAccessDenied reports whether err is an AccessDeniedError func IsAccessDenied(err error) bool { var notFoundErr *AccessDeniedError return errors.As(err, ¬FoundErr) } hugo-0.131.0/config/security/securityConfig_test.go000066400000000000000000000107141465312036400223240ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package security import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) c.Run("Slice whitelist", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] enableInlineShortcodes=true [security.exec] allow=["a", "b"] osEnv=["a", "b", "c"] [security.funcs] getEnv=["a", "b"] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.EnableInlineShortcodes, qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("d"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) c.Assert(pc.Funcs.Getenv.Accept("a"), qt.IsTrue) c.Assert(pc.Funcs.Getenv.Accept("c"), qt.IsFalse) }) c.Run("String whitelist", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] [security.exec] allow="a" osEnv="b" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("d"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("b"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) }) c.Run("Default exec.osEnv", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" [security] [security.exec] allow="a" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("PATH"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) }) c.Run("Enable inline shortcodes, legacy", func(c *qt.C) { c.Parallel() tomlConfig := ` someOtherValue = "bar" enableInlineShortcodes=true [security] [security.exec] allow="a" osEnv="b" ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) pc, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(pc.EnableInlineShortcodes, qt.IsTrue) }) } func TestToTOML(t *testing.T) { c := qt.New(t) got := DefaultConfig.ToTOML() c.Assert(got, qt.Equals, "[security]\n enableInlineShortcodes = false\n\n [security.exec]\n allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^git$', '^npx$', '^postcss$', '^tailwindcss$']\n osEnv = ['(?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$']\n\n [security.funcs]\n getenv = ['^HUGO_', '^CI$']\n\n [security.http]\n methods = ['(?i)GET|POST']\n urls = ['.*']", ) } func TestDecodeConfigDefault(t *testing.T) { t.Parallel() c := qt.New(t) pc, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(pc, qt.Not(qt.IsNil)) c.Assert(pc.Exec.Allow.Accept("a"), qt.IsFalse) c.Assert(pc.Exec.Allow.Accept("npx"), qt.IsTrue) c.Assert(pc.Exec.Allow.Accept("Npx"), qt.IsFalse) c.Assert(pc.HTTP.URLs.Accept("https://example.org"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("POST"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("GET"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("get"), qt.IsTrue) c.Assert(pc.HTTP.Methods.Accept("DELETE"), qt.IsFalse) c.Assert(pc.HTTP.MediaTypes.Accept("application/msword"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("PATH"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("GOROOT"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("HOME"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("SSH_AUTH_SOCK"), qt.IsTrue) c.Assert(pc.Exec.OsEnv.Accept("a"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("e"), qt.IsFalse) c.Assert(pc.Exec.OsEnv.Accept("MYSECRET"), qt.IsFalse) } hugo-0.131.0/config/security/whitelist.go000066400000000000000000000051771465312036400203130ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package security import ( "encoding/json" "fmt" "regexp" "strings" ) const ( acceptNoneKeyword = "none" ) // Whitelist holds a whitelist. type Whitelist struct { acceptNone bool patterns []*regexp.Regexp // Store this for debugging/error reporting patternsStrings []string } // MarshalJSON is for internal use only. func (w Whitelist) MarshalJSON() ([]byte, error) { if w.acceptNone { return json.Marshal(acceptNoneKeyword) } return json.Marshal(w.patternsStrings) } // NewWhitelist creates a new Whitelist from zero or more patterns. // An empty patterns list or a pattern with the value 'none' will create // a whitelist that will Accept none. func NewWhitelist(patterns ...string) (Whitelist, error) { if len(patterns) == 0 { return Whitelist{acceptNone: true}, nil } var acceptSome bool var patternsStrings []string for _, p := range patterns { if p == acceptNoneKeyword { acceptSome = false break } if ps := strings.TrimSpace(p); ps != "" { acceptSome = true patternsStrings = append(patternsStrings, ps) } } if !acceptSome { return Whitelist{ acceptNone: true, }, nil } var patternsr []*regexp.Regexp for i := 0; i < len(patterns); i++ { p := strings.TrimSpace(patterns[i]) if p == "" { continue } re, err := regexp.Compile(p) if err != nil { return Whitelist{}, fmt.Errorf("failed to compile whitelist pattern %q: %w", p, err) } patternsr = append(patternsr, re) } return Whitelist{patterns: patternsr, patternsStrings: patternsStrings}, nil } // MustNewWhitelist creates a new Whitelist from zero or more patterns and panics on error. func MustNewWhitelist(patterns ...string) Whitelist { w, err := NewWhitelist(patterns...) if err != nil { panic(err) } return w } // Accept reports whether name is whitelisted. func (w Whitelist) Accept(name string) bool { if w.acceptNone { return false } for _, p := range w.patterns { if p.MatchString(name) { return true } } return false } func (w Whitelist) String() string { return fmt.Sprint(w.patternsStrings) } hugo-0.131.0/config/security/whitelist_test.go000066400000000000000000000026441465312036400213460ustar00rootroot00000000000000// Copyright 2021 The Hugo Authors. All rights reserved. // // 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. package security import ( "testing" qt "github.com/frankban/quicktest" ) func TestWhitelist(t *testing.T) { t.Parallel() c := qt.New(t) c.Run("none", func(c *qt.C) { c.Assert(MustNewWhitelist("none", "foo").Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist().Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist("").Accept("foo"), qt.IsFalse) c.Assert(MustNewWhitelist(" ", " ").Accept("foo"), qt.IsFalse) c.Assert(Whitelist{}.Accept("foo"), qt.IsFalse) }) c.Run("One", func(c *qt.C) { w := MustNewWhitelist("^foo.*") c.Assert(w.Accept("foo"), qt.IsTrue) c.Assert(w.Accept("mfoo"), qt.IsFalse) }) c.Run("Multiple", func(c *qt.C) { w := MustNewWhitelist("^foo.*", "^bar.*") c.Assert(w.Accept("foo"), qt.IsTrue) c.Assert(w.Accept("bar"), qt.IsTrue) c.Assert(w.Accept("mbar"), qt.IsFalse) }) } hugo-0.131.0/config/services/000077500000000000000000000000001465312036400157125ustar00rootroot00000000000000hugo-0.131.0/config/services/servicesConfig.go000066400000000000000000000060041465312036400212120ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package services import ( "github.com/gohugoio/hugo/config" "github.com/mitchellh/mapstructure" ) const ( servicesConfigKey = "services" disqusShortnameKey = "disqusshortname" googleAnalyticsKey = "googleanalytics" rssLimitKey = "rssLimit" ) // Config is a privacy configuration for all the relevant services in Hugo. type Config struct { Disqus Disqus GoogleAnalytics GoogleAnalytics Instagram Instagram Twitter Twitter RSS RSS } // Disqus holds the functional configuration settings related to the Disqus template. type Disqus struct { // A Shortname is the unique identifier assigned to a Disqus site. Shortname string } // GoogleAnalytics holds the functional configuration settings related to the Google Analytics template. type GoogleAnalytics struct { // The GA tracking ID. ID string } // Instagram holds the functional configuration settings related to the Instagram shortcodes. type Instagram struct { // The Simple variant of the Instagram is decorated with Bootstrap 4 card classes. // This means that if you use Bootstrap 4 or want to provide your own CSS, you want // to disable the inline CSS provided by Hugo. DisableInlineCSS bool // App or Client Access Token. // If you are using a Client Access Token, remember that you must combine it with your App ID // using a pipe symbol (|) otherwise the request will fail. AccessToken string } // Twitter holds the functional configuration settings related to the Twitter shortcodes. type Twitter struct { // The Simple variant of Twitter is decorated with a basic set of inline styles. // This means that if you want to provide your own CSS, you want // to disable the inline CSS provided by Hugo. DisableInlineCSS bool } // RSS holds the functional configuration settings related to the RSS feeds. type RSS struct { // Limit the number of pages. Limit int } // DecodeConfig creates a services Config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (c Config, err error) { m := cfg.GetStringMap(servicesConfigKey) err = mapstructure.WeakDecode(m, &c) // Keep backwards compatibility. if c.GoogleAnalytics.ID == "" { // Try the global config c.GoogleAnalytics.ID = cfg.GetString(googleAnalyticsKey) } if c.Disqus.Shortname == "" { c.Disqus.Shortname = cfg.GetString(disqusShortnameKey) } if c.RSS.Limit == 0 { c.RSS.Limit = cfg.GetInt(rssLimitKey) } return } hugo-0.131.0/config/services/servicesConfig_test.go000066400000000000000000000033731465312036400222570ustar00rootroot00000000000000// Copyright 2018 The Hugo Authors. All rights reserved. // // 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. package services import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [services] [services.disqus] shortname = "DS" [services.googleAnalytics] id = "ga_id" [services.instagram] disableInlineCSS = true [services.twitter] disableInlineCSS = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) config, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(config, qt.Not(qt.IsNil)) c.Assert(config.Disqus.Shortname, qt.Equals, "DS") c.Assert(config.GoogleAnalytics.ID, qt.Equals, "ga_id") c.Assert(config.Instagram.DisableInlineCSS, qt.Equals, true) } // Support old root-level GA settings etc. func TestUseSettingsFromRootIfSet(t *testing.T) { c := qt.New(t) cfg := config.New() cfg.Set("disqusShortname", "root_short") cfg.Set("googleAnalytics", "ga_root") config, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) c.Assert(config, qt.Not(qt.IsNil)) c.Assert(config.Disqus.Shortname, qt.Equals, "root_short") c.Assert(config.GoogleAnalytics.ID, qt.Equals, "ga_root") } hugo-0.131.0/config/testconfig/000077500000000000000000000000001465312036400162345ustar00rootroot00000000000000hugo-0.131.0/config/testconfig/testconfig.go000066400000000000000000000043451465312036400207360ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. // This package should only be used for testing. package testconfig import ( _ "unsafe" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/hugofs" toml "github.com/pelletier/go-toml/v2" "github.com/spf13/afero" ) func GetTestConfigs(fs afero.Fs, cfg config.Provider) *allconfig.Configs { if fs == nil { fs = afero.NewMemMapFs() } if cfg == nil { cfg = config.New() } // Make sure that the workingDir exists. workingDir := cfg.GetString("workingDir") if workingDir != "" { if err := fs.MkdirAll(workingDir, 0o777); err != nil { panic(err) } } configs, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Fs: fs, Flags: cfg, Environ: []string{"EMPTY_TEST_ENVIRONMENT"}}) if err != nil { panic(err) } return configs } func GetTestConfig(fs afero.Fs, cfg config.Provider) config.AllProvider { return GetTestConfigs(fs, cfg).GetFirstLanguageConfig() } func GetTestDeps(fs afero.Fs, cfg config.Provider, beforeInit ...func(*deps.Deps)) *deps.Deps { if fs == nil { fs = afero.NewMemMapFs() } conf := GetTestConfig(fs, cfg) d := &deps.Deps{ Conf: conf, Fs: hugofs.NewFrom(fs, conf.BaseConfig()), } for _, f := range beforeInit { f(d) } if err := d.Init(); err != nil { panic(err) } return d } func GetTestConfigSectionFromStruct(section string, v any) config.AllProvider { data, err := toml.Marshal(v) if err != nil { panic(err) } p := maps.Params{ section: config.FromTOMLConfigString(string(data)).Get(""), } cfg := config.NewFrom(p) return GetTestConfig(nil, cfg) } hugo-0.131.0/create/000077500000000000000000000000001465312036400140655ustar00rootroot00000000000000hugo-0.131.0/create/content.go000066400000000000000000000234361465312036400160760ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. // Package create provides functions to create new content. package create import ( "bytes" "errors" "fmt" "io" "os" "path/filepath" "strings" "github.com/gohugoio/hugo/hugofs/glob" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/hstrings" "github.com/gohugoio/hugo/common/paths" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugolib" "github.com/spf13/afero" ) const ( // DefaultArchetypeTemplateTemplate is the template used in 'hugo new site' // and the template we use as a fall back. DefaultArchetypeTemplateTemplate = `--- title: "{{ replace .File.ContentBaseName "-" " " | title }}" date: {{ .Date }} draft: true --- ` ) // NewContent creates a new content file in h (or a full bundle if the archetype is a directory) // in targetPath. func NewContent(h *hugolib.HugoSites, kind, targetPath string, force bool) error { if _, err := h.BaseFs.Content.Fs.Stat(""); err != nil { return errors.New("no existing content directory configured for this project") } cf := hugolib.NewContentFactory(h) if kind == "" { var err error kind, err = cf.SectionFromFilename(targetPath) if err != nil { return err } } b := &contentBuilder{ archeTypeFs: h.PathSpec.BaseFs.Archetypes.Fs, sourceFs: h.PathSpec.Fs.Source, ps: h.PathSpec, h: h, cf: cf, kind: kind, targetPath: targetPath, force: force, } ext := paths.Ext(targetPath) b.setArcheTypeFilenameToUse(ext) withBuildLock := func() (string, error) { unlock, err := h.BaseFs.LockBuild() if err != nil { return "", fmt.Errorf("failed to acquire a build lock: %s", err) } defer unlock() if b.isDir { return "", b.buildDir() } if ext == "" { return "", fmt.Errorf("failed to resolve %q to an archetype template", targetPath) } if !h.Conf.ContentTypes().IsContentFile(b.targetPath) { return "", fmt.Errorf("target path %q is not a known content format", b.targetPath) } return b.buildFile() } filename, err := withBuildLock() if err != nil { return err } if filename != "" { return b.openInEditorIfConfigured(filename) } return nil } type contentBuilder struct { archeTypeFs afero.Fs sourceFs afero.Fs ps *helpers.PathSpec h *hugolib.HugoSites cf hugolib.ContentFactory // Builder state archetypeFi hugofs.FileMetaInfo targetPath string kind string isDir bool dirMap archetypeMap force bool } func (b *contentBuilder) buildDir() error { // Split the dir into content files and the rest. if err := b.mapArcheTypeDir(); err != nil { return err } var contentTargetFilenames []string var baseDir string for _, fi := range b.dirMap.contentFiles { targetFilename := filepath.Join(b.targetPath, strings.TrimPrefix(fi.Meta().PathInfo.Path(), b.archetypeFi.Meta().PathInfo.Path())) // ===> post/my-post/pages/bio.md abs, err := b.cf.CreateContentPlaceHolder(targetFilename, b.force) if err != nil { return err } if baseDir == "" { baseDir = strings.TrimSuffix(abs, targetFilename) } contentTargetFilenames = append(contentTargetFilenames, abs) } var contentInclusionFilter *glob.FilenameFilter if !b.dirMap.siteUsed { // We don't need to build everything. contentInclusionFilter = glob.NewFilenameFilterForInclusionFunc(func(filename string) bool { filename = strings.TrimPrefix(filename, string(os.PathSeparator)) for _, cn := range contentTargetFilenames { if strings.Contains(cn, filename) { return true } } return false }) } if err := b.h.Build(hugolib.BuildCfg{NoBuildLock: true, SkipRender: true, ContentInclusionFilter: contentInclusionFilter}); err != nil { return err } for i, filename := range contentTargetFilenames { if err := b.applyArcheType(filename, b.dirMap.contentFiles[i]); err != nil { return err } } // Copy the rest as is. for _, fi := range b.dirMap.otherFiles { meta := fi.Meta() in, err := meta.Open() if err != nil { return fmt.Errorf("failed to open non-content file: %w", err) } targetFilename := filepath.Join(baseDir, b.targetPath, strings.TrimPrefix(fi.Meta().Filename, b.archetypeFi.Meta().Filename)) targetDir := filepath.Dir(targetFilename) if err := b.sourceFs.MkdirAll(targetDir, 0o777); err != nil && !os.IsExist(err) { return fmt.Errorf("failed to create target directory for %q: %w", targetDir, err) } out, err := b.sourceFs.Create(targetFilename) if err != nil { return err } _, err = io.Copy(out, in) if err != nil { return err } in.Close() out.Close() } b.h.Log.Printf("Content dir %q created", filepath.Join(baseDir, b.targetPath)) return nil } func (b *contentBuilder) buildFile() (string, error) { contentPlaceholderAbsFilename, err := b.cf.CreateContentPlaceHolder(b.targetPath, b.force) if err != nil { return "", err } usesSite, err := b.usesSiteVar(b.archetypeFi) if err != nil { return "", err } var contentInclusionFilter *glob.FilenameFilter if !usesSite { // We don't need to build everything. contentInclusionFilter = glob.NewFilenameFilterForInclusionFunc(func(filename string) bool { filename = strings.TrimPrefix(filename, string(os.PathSeparator)) return strings.Contains(contentPlaceholderAbsFilename, filename) }) } if err := b.h.Build(hugolib.BuildCfg{NoBuildLock: true, SkipRender: true, ContentInclusionFilter: contentInclusionFilter}); err != nil { return "", err } if err := b.applyArcheType(contentPlaceholderAbsFilename, b.archetypeFi); err != nil { return "", err } b.h.Log.Printf("Content %q created", contentPlaceholderAbsFilename) return contentPlaceholderAbsFilename, nil } func (b *contentBuilder) setArcheTypeFilenameToUse(ext string) { var pathsToCheck []string if b.kind != "" { pathsToCheck = append(pathsToCheck, b.kind+ext) } pathsToCheck = append(pathsToCheck, "default"+ext) for _, p := range pathsToCheck { fi, err := b.archeTypeFs.Stat(p) if err == nil { b.archetypeFi = fi.(hugofs.FileMetaInfo) b.isDir = fi.IsDir() return } } } func (b *contentBuilder) applyArcheType(contentFilename string, archetypeFi hugofs.FileMetaInfo) error { p := b.h.GetContentPage(contentFilename) if p == nil { panic(fmt.Sprintf("[BUG] no Page found for %q", contentFilename)) } f, err := b.sourceFs.Create(contentFilename) if err != nil { return err } defer f.Close() if archetypeFi == nil { return b.cf.ApplyArchetypeTemplate(f, p, b.kind, DefaultArchetypeTemplateTemplate) } return b.cf.ApplyArchetypeFi(f, p, b.kind, archetypeFi) } func (b *contentBuilder) mapArcheTypeDir() error { var m archetypeMap seen := map[hstrings.Tuple]bool{} walkFn := func(path string, fim hugofs.FileMetaInfo) error { if fim.IsDir() { return nil } pi := fim.Meta().PathInfo if pi.IsContent() { pathLang := hstrings.Tuple{First: pi.PathNoIdentifier(), Second: fim.Meta().Lang} if seen[pathLang] { // Duplicate content file, e.g. page.md and page.html. // In the regular build, we will filter out the duplicates, but // for archetype folders these are ambiguous and we need to // fail. return fmt.Errorf("duplicate content file found in archetype folder: %q; having both e.g. %s.md and %s.html is ambigous", path, pi.BaseNameNoIdentifier(), pi.BaseNameNoIdentifier()) } seen[pathLang] = true m.contentFiles = append(m.contentFiles, fim) if !m.siteUsed { var err error m.siteUsed, err = b.usesSiteVar(fim) if err != nil { return err } } return nil } m.otherFiles = append(m.otherFiles, fim) return nil } walkCfg := hugofs.WalkwayConfig{ WalkFn: walkFn, Fs: b.archeTypeFs, Root: filepath.FromSlash(b.archetypeFi.Meta().PathInfo.Path()), } w := hugofs.NewWalkway(walkCfg) if err := w.Walk(); err != nil { return fmt.Errorf("failed to walk archetype dir %q: %w", b.archetypeFi.Meta().Filename, err) } b.dirMap = m return nil } func (b *contentBuilder) openInEditorIfConfigured(filename string) error { editor := b.h.Conf.NewContentEditor() if editor == "" { return nil } editorExec := strings.Fields(editor)[0] editorFlags := strings.Fields(editor)[1:] var args []any for _, editorFlag := range editorFlags { args = append(args, editorFlag) } args = append( args, filename, hexec.WithStdin(os.Stdin), hexec.WithStderr(os.Stderr), hexec.WithStdout(os.Stdout), ) b.h.Log.Printf("Editing %q with %q ...\n", filename, editorExec) cmd, err := b.h.Deps.ExecHelper.New(editorExec, args...) if err != nil { return err } return cmd.Run() } func (b *contentBuilder) usesSiteVar(fi hugofs.FileMetaInfo) (bool, error) { if fi == nil { return false, nil } f, err := fi.Meta().Open() if err != nil { return false, err } defer f.Close() bb, err := io.ReadAll(f) if err != nil { return false, fmt.Errorf("failed to read archetype file: %w", err) } return bytes.Contains(bb, []byte(".Site")) || bytes.Contains(bb, []byte("site.")), nil } type archetypeMap struct { // These needs to be parsed and executed as Go templates. contentFiles []hugofs.FileMetaInfo // These are just copied to destination. otherFiles []hugofs.FileMetaInfo // If the templates needs a fully built site. This can potentially be // expensive, so only do when needed. siteUsed bool } hugo-0.131.0/create/content_test.go000066400000000000000000000242451465312036400171340ustar00rootroot00000000000000// Copyright 2016 The Hugo Authors. All rights reserved. // // 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. package create_test import ( "fmt" "os" "path/filepath" "strings" "testing" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/config/testconfig" "github.com/gohugoio/hugo/deps" "github.com/gohugoio/hugo/hugolib" "github.com/gohugoio/hugo/hugofs" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/create" "github.com/gohugoio/hugo/helpers" "github.com/spf13/afero" ) // TODO(bep) clean this up. Export the test site builder in Hugolib or something. func TestNewContentFromFile(t *testing.T) { cases := []struct { name string kind string path string expected any }{ {"Post", "post", "post/sample-1.md", []string{`title = "Post Arch title"`, `test = "test1"`, "date = \"2015-01-12T19:20:04-07:00\""}}, {"Post org-mode", "post", "post/org-1.org", []string{`#+title: ORG-1`}}, {"Post, unknown content filetype", "post", "post/sample-1.pdoc", false}, {"Empty date", "emptydate", "post/sample-ed.md", []string{`title = "Empty Date Arch title"`, `test = "test1"`}}, {"Archetype file not found", "stump", "stump/sample-2.md", []string{`title: "Sample 2"`}}, // no archetype file {"No archetype", "", "sample-3.md", []string{`title: "Sample 3"`}}, // no archetype {"Empty archetype", "product", "product/sample-4.md", []string{`title = "SAMPLE-4"`}}, // empty archetype front matter {"Filenames", "filenames", "content/mypage/index.md", []string{"title = \"INDEX\"\n+++\n\n\nContentBaseName: mypage"}}, {"Branch Name", "name", "content/tags/tag-a/_index.md", []string{"+++\ntitle = 'Tag A'\n+++"}}, {"Lang 1", "lang", "post/lang-1.md", []string{`Site Lang: en|Name: Lang 1|i18n: Hugo Rocks!`}}, {"Lang 2", "lang", "post/lang-2.en.md", []string{`Site Lang: en|Name: Lang 2|i18n: Hugo Rocks!`}}, {"Lang nn file", "lang", "content/post/lang-3.nn.md", []string{`Site Lang: nn|Name: Lang 3|i18n: Hugo Rokkar!`}}, {"Lang nn dir", "lang", "content_nn/post/lang-4.md", []string{`Site Lang: nn|Name: Lang 4|i18n: Hugo Rokkar!`}}, {"Lang en in nn dir", "lang", "content_nn/post/lang-5.en.md", []string{`Site Lang: en|Name: Lang 5|i18n: Hugo Rocks!`}}, {"Lang en default", "lang", "post/my-bundle/index.md", []string{`Site Lang: en|Name: My Bundle|i18n: Hugo Rocks!`}}, {"Lang en file", "lang", "post/my-bundle/index.en.md", []string{`Site Lang: en|Name: My Bundle|i18n: Hugo Rocks!`}}, {"Lang nn bundle", "lang", "content/post/my-bundle/index.nn.md", []string{`Site Lang: nn|Name: My Bundle|i18n: Hugo Rokkar!`}}, {"Site", "site", "content/mypage/index.md", []string{"RegularPages .Site: 10", "RegularPages site: 10"}}, {"Shortcodes", "shortcodes", "shortcodes/go.md", []string{ `title = "GO"`, "{{< myshortcode >}}", "{{% myshortcode %}}", "{{}}\n{{%/* comment */%}}", }}, // shortcodes } c := qt.New(t) for i, cas := range cases { cas := cas c.Run(cas.name, func(c *qt.C) { c.Parallel() mm := afero.NewMemMapFs() c.Assert(initFs(mm), qt.IsNil) cfg, fs := newTestCfg(c, mm) conf := testconfig.GetTestConfigs(fs.Source, cfg) h, err := hugolib.NewHugoSites(deps.DepsCfg{Configs: conf, Fs: fs}) c.Assert(err, qt.IsNil) err = create.NewContent(h, cas.kind, cas.path, false) if b, ok := cas.expected.(bool); ok && !b { if !b { c.Assert(err, qt.Not(qt.IsNil)) } return } c.Assert(err, qt.IsNil) fname := filepath.FromSlash(cas.path) if !strings.HasPrefix(fname, "content") { fname = filepath.Join("content", fname) } content := readFileFromFs(c, fs.Source, fname) for _, v := range cas.expected.([]string) { found := strings.Contains(content, v) if !found { c.Fatalf("[%d] %q missing from output:\n%q", i, v, content) } } }) } } func TestNewContentFromDirSiteFunction(t *testing.T) { mm := afero.NewMemMapFs() c := qt.New(t) archetypeDir := filepath.Join("archetypes", "my-bundle") defaultArchetypeDir := filepath.Join("archetypes", "default") c.Assert(mm.MkdirAll(archetypeDir, 0o755), qt.IsNil) c.Assert(mm.MkdirAll(defaultArchetypeDir, 0o755), qt.IsNil) contentFile := ` File: %s site RegularPages: {{ len site.RegularPages }} ` c.Assert(afero.WriteFile(mm, filepath.Join(archetypeDir, "index.md"), []byte(fmt.Sprintf(contentFile, "index.md")), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, filepath.Join(defaultArchetypeDir, "index.md"), []byte("default archetype index.md"), 0o755), qt.IsNil) c.Assert(initFs(mm), qt.IsNil) cfg, fs := newTestCfg(c, mm) conf := testconfig.GetTestConfigs(fs.Source, cfg) h, err := hugolib.NewHugoSites(deps.DepsCfg{Configs: conf, Fs: fs}) c.Assert(err, qt.IsNil) c.Assert(len(h.Sites), qt.Equals, 2) c.Assert(create.NewContent(h, "my-bundle", "post/my-post", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post/index.md")), `site RegularPages: 10`) // Default bundle archetype c.Assert(create.NewContent(h, "", "post/my-post2", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/my-post2/index.md")), `default archetype index.md`) // Regular file with bundle kind. c.Assert(create.NewContent(h, "my-bundle", "post/foo.md", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "post/foo.md")), `draft: true`) // Regular files should fall back to the default archetype (we have no regular file archetype). c.Assert(create.NewContent(h, "my-bundle", "mypage.md", false), qt.IsNil) cContains(c, readFileFromFs(t, fs.Source, filepath.Join("content", "mypage.md")), `draft: true`) } func initFs(fs afero.Fs) error { perm := os.FileMode(0o755) var err error // create directories dirs := []string{ "archetypes", "content", filepath.Join("themes", "sample", "archetypes"), } for _, dir := range dirs { err = fs.Mkdir(dir, perm) if err != nil && !os.IsExist(err) { return err } } // create some dummy content for i := 1; i <= 10; i++ { filename := filepath.Join("content", fmt.Sprintf("page%d.md", i)) afero.WriteFile(fs, filename, []byte(`--- title: Test --- `), 0o666) } // create archetype files for _, v := range []struct { path string content string }{ { path: filepath.Join("archetypes", "post.md"), content: "+++\ndate = \"2015-01-12T19:20:04-07:00\"\ntitle = \"Post Arch title\"\ntest = \"test1\"\n+++\n", }, { path: filepath.Join("archetypes", "post.org"), content: "#+title: {{ .BaseFileName | upper }}", }, { path: filepath.Join("archetypes", "name.md"), content: `+++ title = '{{ replace .Name "-" " " | title }}' +++`, }, { path: filepath.Join("archetypes", "product.md"), content: `+++ title = "{{ .BaseFileName | upper }}" +++`, }, { path: filepath.Join("archetypes", "filenames.md"), content: `... title = "{{ .BaseFileName | upper }}" +++ ContentBaseName: {{ .File.ContentBaseName }} `, }, { path: filepath.Join("archetypes", "site.md"), content: `... title = "{{ .BaseFileName | upper }}" +++ Len RegularPages .Site: {{ len .Site.RegularPages }} Len RegularPages site: {{ len site.RegularPages }} `, }, { path: filepath.Join("archetypes", "emptydate.md"), content: "+++\ndate =\"\"\ntitle = \"Empty Date Arch title\"\ntest = \"test1\"\n+++\n", }, { path: filepath.Join("archetypes", "lang.md"), content: `Site Lang: {{ site.Language.Lang }}|Name: {{ replace .Name "-" " " | title }}|i18n: {{ T "hugo" }}`, }, // #3623x { path: filepath.Join("archetypes", "shortcodes.md"), content: `+++ title = "{{ .BaseFileName | upper }}" +++ {{< myshortcode >}} Some text. {{% myshortcode %}} {{}} {{%/* comment */%}} `, }, } { f, err := fs.Create(v.path) if err != nil { return err } defer f.Close() _, err = f.Write([]byte(v.content)) if err != nil { return err } } return nil } func cContains(c *qt.C, v any, matches ...string) { for _, m := range matches { c.Assert(v, qt.Contains, m) } } // TODO(bep) extract common testing package with this and some others func readFileFromFs(t testing.TB, fs afero.Fs, filename string) string { t.Helper() filename = filepath.FromSlash(filename) b, err := afero.ReadFile(fs, filename) if err != nil { // Print some debug info root := strings.Split(filename, helpers.FilePathSeparator)[0] afero.Walk(fs, root, func(path string, info os.FileInfo, err error) error { if info != nil && !info.IsDir() { fmt.Println(" ", path) } return nil }) t.Fatalf("Failed to read file: %s", err) } return string(b) } func newTestCfg(c *qt.C, mm afero.Fs) (config.Provider, *hugofs.Fs) { cfg := ` theme = "mytheme" [languages] [languages.en] weight = 1 languageName = "English" [languages.nn] weight = 2 languageName = "Nynorsk" [module] [[module.mounts]] source = 'archetypes' target = 'archetypes' [[module.mounts]] source = 'content' target = 'content' lang = 'en' [[module.mounts]] source = 'content_nn' target = 'content' lang = 'nn' ` if mm == nil { mm = afero.NewMemMapFs() } mm.MkdirAll(filepath.FromSlash("content_nn"), 0o777) mm.MkdirAll(filepath.FromSlash("themes/mytheme"), 0o777) c.Assert(afero.WriteFile(mm, filepath.Join("i18n", "en.toml"), []byte(`[hugo] other = "Hugo Rocks!"`), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, filepath.Join("i18n", "nn.toml"), []byte(`[hugo] other = "Hugo Rokkar!"`), 0o755), qt.IsNil) c.Assert(afero.WriteFile(mm, "config.toml", []byte(cfg), 0o755), qt.IsNil) res, err := allconfig.LoadConfig(allconfig.ConfigSourceDescriptor{Fs: mm, Filename: "config.toml"}) c.Assert(err, qt.IsNil) return res.LoadingInfo.Cfg, hugofs.NewFrom(mm, res.LoadingInfo.BaseConfig) } hugo-0.131.0/create/skeletons/000077500000000000000000000000001465312036400160745ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/000077500000000000000000000000001465312036400170405ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/archetypes/000077500000000000000000000000001465312036400212075ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/archetypes/default.md000066400000000000000000000001461465312036400231560ustar00rootroot00000000000000+++ title = '{{ replace .File.ContentBaseName "-" " " | title }}' date = {{ .Date }} draft = true +++ hugo-0.131.0/create/skeletons/site/assets/000077500000000000000000000000001465312036400203425ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/assets/.gitkeep000066400000000000000000000000001465312036400217610ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/content/000077500000000000000000000000001465312036400205125ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/content/.gitkeep000066400000000000000000000000001465312036400221310ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/data/000077500000000000000000000000001465312036400177515ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/data/.gitkeep000066400000000000000000000000001465312036400213700ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/i18n/000077500000000000000000000000001465312036400176175ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/i18n/.gitkeep000066400000000000000000000000001465312036400212360ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/layouts/000077500000000000000000000000001465312036400205405ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/layouts/.gitkeep000066400000000000000000000000001465312036400221570ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/static/000077500000000000000000000000001465312036400203275ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/static/.gitkeep000066400000000000000000000000001465312036400217460ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/themes/000077500000000000000000000000001465312036400203255ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/site/themes/.gitkeep000066400000000000000000000000001465312036400217440ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/skeletons.go000066400000000000000000000063371465312036400204430ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package skeletons import ( "bytes" "embed" "errors" "io/fs" "path/filepath" "strings" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/parser" "github.com/gohugoio/hugo/parser/metadecoders" "github.com/spf13/afero" ) //go:embed all:site/* var siteFs embed.FS //go:embed all:theme/* var themeFs embed.FS // CreateTheme creates a theme skeleton. func CreateTheme(createpath string, sourceFs afero.Fs) error { if exists, _ := helpers.Exists(createpath, sourceFs); exists { return errors.New(createpath + " already exists") } return copyFiles(createpath, sourceFs, themeFs) } // CreateSite creates a site skeleton. func CreateSite(createpath string, sourceFs afero.Fs, force bool, format string) error { format = strings.ToLower(format) if exists, _ := helpers.Exists(createpath, sourceFs); exists { if isDir, _ := helpers.IsDir(createpath, sourceFs); !isDir { return errors.New(createpath + " already exists but not a directory") } isEmpty, _ := helpers.IsEmpty(createpath, sourceFs) switch { case !isEmpty && !force: return errors.New(createpath + " already exists and is not empty. See --force.") case !isEmpty && force: var all []string fs.WalkDir(siteFs, ".", func(path string, d fs.DirEntry, err error) error { if d.IsDir() && path != "." { all = append(all, path) } return nil }) all = append(all, filepath.Join(createpath, "hugo."+format)) for _, path := range all { if exists, _ := helpers.Exists(path, sourceFs); exists { return errors.New(path + " already exists") } } } } err := newSiteCreateConfig(sourceFs, createpath, format) if err != nil { return err } return copyFiles(createpath, sourceFs, siteFs) } func copyFiles(createpath string, sourceFs afero.Fs, skeleton embed.FS) error { return fs.WalkDir(skeleton, ".", func(path string, d fs.DirEntry, err error) error { _, slug, _ := strings.Cut(path, "/") if d.IsDir() { return sourceFs.MkdirAll(filepath.Join(createpath, slug), 0o777) } else { if filepath.Base(path) != ".gitkeep" { data, _ := fs.ReadFile(skeleton, path) return helpers.WriteToDisk(filepath.Join(createpath, slug), bytes.NewReader(data), sourceFs) } return nil } }) } func newSiteCreateConfig(fs afero.Fs, createpath string, format string) (err error) { in := map[string]string{ "baseURL": "https://example.org/", "title": "My New Hugo Site", "languageCode": "en-us", } var buf bytes.Buffer err = parser.InterfaceToConfig(in, metadecoders.FormatFromString(format), &buf) if err != nil { return err } return helpers.WriteToDisk(filepath.Join(createpath, "hugo."+format), &buf, fs) } hugo-0.131.0/create/skeletons/theme/000077500000000000000000000000001465312036400171765ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/LICENSE000066400000000000000000000020551465312036400202050ustar00rootroot00000000000000MIT License Copyright (c) [year] [fullname] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. hugo-0.131.0/create/skeletons/theme/README.md000066400000000000000000000000751465312036400204570ustar00rootroot00000000000000# Theme Name ## Features ## Installation ## Configuration hugo-0.131.0/create/skeletons/theme/archetypes/000077500000000000000000000000001465312036400213455ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/archetypes/default.md000066400000000000000000000001461465312036400233140ustar00rootroot00000000000000+++ title = '{{ replace .File.ContentBaseName "-" " " | title }}' date = {{ .Date }} draft = true +++ hugo-0.131.0/create/skeletons/theme/assets/000077500000000000000000000000001465312036400205005ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/assets/css/000077500000000000000000000000001465312036400212705ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/assets/css/main.css000066400000000000000000000004341465312036400227270ustar00rootroot00000000000000body { color: #222; font-family: sans-serif; line-height: 1.5; margin: 1rem; max-width: 768px; } header { border-bottom: 1px solid #222; margin-bottom: 1rem; } footer { border-top: 1px solid #222; margin-top: 1rem; } a { color: #00e; text-decoration: none; } hugo-0.131.0/create/skeletons/theme/assets/js/000077500000000000000000000000001465312036400211145ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/assets/js/main.js000066400000000000000000000000611465312036400223730ustar00rootroot00000000000000console.log('This site was generated by Hugo.'); hugo-0.131.0/create/skeletons/theme/content/000077500000000000000000000000001465312036400206505ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/content/_index.md000066400000000000000000000004271465312036400224430ustar00rootroot00000000000000+++ title = 'Home' date = 2023-01-01T08:00:00-07:00 draft = false +++ Laborum voluptate pariatur ex culpa magna nostrud est incididunt fugiat pariatur do dolor ipsum enim. Consequat tempor do dolor eu. Non id id anim anim excepteur excepteur pariatur nostrud qui irure ullamco. hugo-0.131.0/create/skeletons/theme/content/posts/000077500000000000000000000000001465312036400220205ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/content/posts/_index.md000066400000000000000000000005571465312036400236170ustar00rootroot00000000000000+++ title = 'Posts' date = 2023-01-01T08:30:00-07:00 draft = false +++ Tempor est exercitation ad qui pariatur quis adipisicing aliquip nisi ea consequat ipsum occaecat. Nostrud consequat ullamco laboris fugiat esse esse adipisicing velit laborum ipsum incididunt ut enim. Dolor pariatur nulla quis fugiat dolore excepteur. Aliquip ad quis aliqua enim do consequat. hugo-0.131.0/create/skeletons/theme/content/posts/post-1.md000066400000000000000000000014541465312036400234710ustar00rootroot00000000000000+++ title = 'Post 1' date = 2023-01-15T09:00:00-07:00 draft = false tags = ['red'] +++ Tempor proident minim aliquip reprehenderit dolor et ad anim Lorem duis sint eiusmod. Labore ut ea duis dolor. Incididunt consectetur proident qui occaecat incididunt do nisi Lorem. Tempor do laborum elit laboris excepteur eiusmod do. Eiusmod nisi excepteur ut amet pariatur adipisicing Lorem. Occaecat nulla excepteur dolore excepteur duis eiusmod ullamco officia anim in voluptate ea occaecat officia. Cillum sint esse velit ea officia minim fugiat. Elit ea esse id aliquip pariatur cupidatat id duis minim incididunt ea ea. Anim ut duis sunt nisi. Culpa cillum sit voluptate voluptate eiusmod dolor. Enim nisi Lorem ipsum irure est excepteur voluptate eu in enim nisi. Nostrud ipsum Lorem anim sint labore consequat do. hugo-0.131.0/create/skeletons/theme/content/posts/post-2.md000066400000000000000000000016541465312036400234740ustar00rootroot00000000000000+++ title = 'Post 2' date = 2023-02-15T10:00:00-07:00 draft = false tags = ['red','green'] +++ Anim eiusmod irure incididunt sint cupidatat. Incididunt irure irure irure nisi ipsum do ut quis fugiat consectetur proident cupidatat incididunt cillum. Dolore voluptate occaecat qui mollit laborum ullamco et. Ipsum laboris officia anim laboris culpa eiusmod ex magna ex cupidatat anim ipsum aute. Mollit aliquip occaecat qui sunt velit ut cupidatat reprehenderit enim sunt laborum. Velit veniam in officia nulla adipisicing ut duis officia. Exercitation voluptate irure in irure tempor mollit Lorem nostrud ad officia. Velit id fugiat occaecat do tempor. Sit officia Lorem aliquip eu deserunt consectetur. Aute proident deserunt in nulla aliquip dolore ipsum Lorem ut cupidatat consectetur sit sint laborum. Esse cupidatat sit sint sunt tempor exercitation deserunt. Labore dolor duis laborum est do nisi ut veniam dolor et nostrud nostrud. hugo-0.131.0/create/skeletons/theme/content/posts/post-3/000077500000000000000000000000001465312036400231455ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/content/posts/post-3/bryce-canyon.jpg000066400000000000000000000454301465312036400262460ustar00rootroot00000000000000JFIFC     #!)!$%'('+.+&.#&'&C   &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,A!1AQa"q2#BRb$CSr34D'!1A"Qa2Rq ?܉] }S@ ր}=\z+Zz;8hPҀ$ϵ 86( !z44@vM'>v=v;cPl43@ m#ހ:)4>Qp8@H 8Pi@ (Q@ Pm}`vzL{cހ/v@|Q@}h@ iP|<@ ohS@ X {QbXEH4Ҁǵ.hp@ 7Ju'f&qh@!cL޴czҠý0jA!i@ =?@ ZP{_($y&vAh;?h8'O?X ٿX؟`„8BcLdzP!?8 az@b}n迭2~P tQpݱE>' (P=~j2O;LЂ{z,(xڿQaGg&>>XQ7 *‡Z(K@/T;bPwTv)&@POPR>s eI6O/Ov#zhTނE@A>FF#vo4@ |23Q`{iQnmAIz,iw~2`.nH@⁊7)BE3.K[fLe21OLpY8 jaӊ+?WMe 6$دnC[Zfn~#-! 8_?Η]VI!,<nߎCM!r 9rn쏸4mGtvlsϿ4X#C`3ԋhc/i"Иh4g8Rj6AеAs瘲F,p'4|#5yrjQ7ҊPh9o)e9#49 d!e%gf@m)Sz֢*ݔyp֫g~`XO/\pq=du9In< F :z45Ωm'Ye<؟+hu@y0}8G3O LŇi4N$~*w.~8f*i<ŠVCƝmfoa4Ri}I[3r#˲[䶵~ƋcI DPl4(["/5k(NŨp'3S/Җ9>M`AY*̹?lmנ9<$sL ~ACLCNߚ,s$Lgl{ r7ff"_ޥʊ3a i-pJ&GQVg?'\l!q՘ GZxr CZMgI`\q%ƥq,%ȈBW$(\jWcIEpNG8FS ++H/q%X?^93Q"x\GbUhyrzp+]h_wLq. vpA##nqeH]˹A3 |ӌ?S%"4F`NI?z6NWJCǷQY4\ea m ؅ۮD|bkpC}RYn%t@iXe(Φ95VT ?੊E*D'ϓdRO5 S;o)kSϛ3VL\z3HޤS[hūD0|__Tk?XO{)'c߽DQh&Z:t{moBnj.}G{1>ava1Q/Vt̩;9qڭ9.JTu.A<M_?Vk<~!Ҭ % rHJVD$RJ$Ĉ_+rz*췏M*pr`e@9=Y#Xn2Yr@f{Դq}`~v=W8^p=q-M-KW.m SmP{qIR\ 5G0>n$jFk9Vw"R$*Z/56 bK*I[k=Sh_γP#Ү۳)R!/Vr'R0w`eIK +tŤRb2Ϡ#ۋVFaowV\rȻvɲغ߷N;V~h?9f;E{'CR,bΊbq\{14kQ.Vmnq[& ໜ"ȿJX5jE~^R'H$-˻t.1.S=~JX:^ZCM1#`BłIv#ޛ+4dzoe}%e.P gGply3 xcGiTۢYyW<u 1DK?FѮe8Si0Ջ;eӌR™$-aqpʑ,2G$u$=}5T7G7x#a:BC*O QF,~{$Zqmh-T3 ^k5).{K4vDOK&bAF@MVY^x}vĶ[R&G[p2S9X&яysG;)x;cႂC/Q;PОit(M,_VbFYI;dpybG3lVFgoټb@ )=_ 7[k!5]pQ(ƋIYUYJ_n<'TgCsjRC.b@G"y?NmZu-mVyU sF A^CTZ`,^/ø d =tdqRC&y 猜Ot|J+{lf8mRibCy;#XQe}.HRci)5ikAW$W` h۹[G;O'+p'. []$QM3y 7ɹUc&y:bk 5ԉ7NzG[c0YcfY|+1 g3JRQf\ibVq'q ƒֺ"TsI);C^+`~c{];0?ڕ%iNA1Eu8h*w7KqWe? Dc W>Om5įtΗ"V ,i2K#tZbuedñ`K#q&&G,yRqrtubzf=˲GQiGb]wFHRr\\a*KG{pMH rT`ye觎^ wV2,{ fU#=W#M-*IwMqv5#-.J!W "@?0ҋI ,Ţ?d^I%RSF>?j}z$Y G(&W*Ӯ{<|\dn5ē`be'X|r: ( ="Tb(w> +O[$֐IWk`-.O ɛ' +[}M?MĖ+jls2O*qլX̋(VX%p3>]!i2QSK!9pb$cs7cד֞1'.[3ZAN#Ç#ѱe]2Nq4.(,!-`iT8:V3QEIi,ȿʞ?W#NsUJ>(^Ƶ*yq+ 0=8䏷_jKum2\Ob<$9 If6 䶲tu:ArES JO!.9e,&ՉQ+.7ryKb RKЫiV0TpqyZB.bė0Wqm0faʫ n=qS%k k;dsֲٚ(ATe2C6n '5&Ytq 托12uIH2NybcN(}$z{ #ˤ;6z^JxZr>Y ?!0sຍ׆gl85NpNQVtDq9(j( ,Oj'fE O''bi7Ps- 1FvFpOA9JI-^Tc2ڮu#,1ԷnÊC! [SiֶX\hǯ/=9єfF Y@8;TEZâ=")9 uݸ}ա@a>42!K!%מ`P݀$w:Ŷc+q'i ny63=Jj(piV h\q,cg,u-u't'uq p) pˍçQO/p93vw6*lѵ+H8.m (s4sK#Ѿݎȉ^L@z|OkGI$( 49.$(=N2zI\ uA躆0yk来 1~lT Ob]fy 0gtv`d-{ޯoD߲imX*8w1ZJ.a5re擭<IAAlװbCJ:啠2U0IYp `0+4WJ^4^-dcrI $Ay#i'F<[-6Bn-R69̏ HP`qңYCR?@.IEĻyIE۝sN8"yTz,h4AnGǴJ$;@^qly >mtX0.-b!)M!vYt9p]\_omh;*zq\:47W;ɼD cm>ϖ_~ qȺk|=v7ydr^D. 8`MR(P sT#X{6E*,0ړb4b;vJ8RElSI@|A9 d#T$ʕ{O 'j[*1KT]n#Qt7 \E]it.=O_OYXbr[9ɩz*@^< &0|D@矩XUʎ8hL`Idh aJ`K ՙ'vH.Uxgi)UIO;ڕVɚxX+yg x$7=il:#iPOu%Å AQ'{ti ckֆ 㩬>ett,\Iwa{)@]ӀAn표8V*\ہZ>;3cL8d%-$ܯ9E%HYOV,)K, tUuj%.!àخB0FQ:<$goE H9Ax+E,Y#l3I9 WCfo_)ck~ 3agҺg7Y3[=1KX u*Oku ~#)鲢DEФ\anRsכ7=lX-@8ZP7[ xd3],ڮO1 ѤX:Mgy;@ms@3ArKK=&Kwg$:tN\IĤlt9jGy18lwVsn .-6GL,>@A^tثI<)_f_K+xa\F]VveM$O+>fC0mbI+ īyFaJ ǥvʌ3ϗ8>x,fKjOqn @'VQcY]L[/,fn{kǞGZކ8&B<%H+%mZS ?jfTg5%4mU;rGQ&-)"4P~h#h.^?'XcJ2! .v67`"gK9XhϹ9ƕF`03ӌRE T$Td5J0MZ\7Y\KkuPb2?b {x%Wc 9H>P*cȐJF r[} !fuŐsۙACL珱3M;eS \”* m $in46v,\\yqPe002?Ns58!T=abKjckfʅq##*䑓p3U3qe}0iA&S(x%\;pX= =$MLj.6*FL ORG LE+eGXe8y;cyS& ۴s!8a@}+ LߕRr.#&S$=+:"YO,hO 2IjF_CjV*m#_͉dYI1d3"s*0xI 4,RH: d0VUCw dR1yF9#3Yf9s^a~ծQe-xIHU'?HlRڲ(UXdq7_yy7:~_ilrK-mۈgSЍXTѿ»?cvgEH[̸ ss+e/+ 7Qw I`tx7ߢ.q&w6쓜zq_>C1P U WF~[SNL^&o1wz>ݏwE[ƃdYrU?jXԝc.D3ړh#E41;zD[#kf+S[ppc<7LAa GGb18(hL@{Md^ٲlKs=(lֱ2p@h =6SQ߽kD`7!úV dNM#Z-6;k7<둁~*;Ś ˽Gza tCa%l5Hgm $r55m;CԚ@2 IT]?dT$Ql?1 6w,xTA-Uh<^D2Gb=sJvf_p ]V0; ~\tֽU<[iZW(f#6FOTKE.nfY! .{ J]ЄHBҸL)ft+4֗:FW摾DVt gҮXKC,$-5? [ZEnԔjf)%CC\Qfp*c8,W?& 6.=aeMNFjK9T=Ma:tk4˽,qYJM$Gon-$l*7NHOgE!M$})%v,2=󚔆%UD` %`~GֵU\)# chrxU yYd;V-Yv=b!w|i#5h@a2@Ԩ=Df@nEgFUid9ȭq.e/$#FFMLxҚHm-f2y:k&uEtwoi kk )/F70Xai%NF~Tn6鳪t8RIhHa$g$dFO\`cY5Bpn7E(wdTq,)*Bwn=2T c+i4M6)XNgK;^8x6ڬwG'Gem1q[!h!m .NsYGT56^ʓm#dxaN8oJ錿w)ދ{F qBsXJfоC>/% Udm;T;W3r]kP ||sEcw 2s~+gBy)R&-i B;mNrG_Z&)iz$elVƿPF(6П|6Q| ZW̎b(8'O3d }B,!}Us\~5D]44RУ'~#}5i18 g)*X[k ͱWp{Y7Sbk7]L hr-F:riJ1Xvf]PɴG92=KH@ c#ziH>5EGr#(1DJŅM sȢ0v9#I%6\/3++]챹gU.PI&)NIY5is +}^/s\#BGz>}#@H}/2JsRkՆ(R<ݲĞID  RGA\^G,uL`AG hdibCyDqڶƤeORzT:ޤ)tԞ۱~j㨻a/*RT_ D 49ekT@YP  z&-б7Lwj̣}nOjshsO @yfi$XmA\\mB0 v)%ȁ㑃s {Q%Aa-…y*M9t)%c :2X$g1|M{S#ivc!J'faqog#r3ǶsMW+*/ccV547wq2hT)8Q<>$:bKrHcKT]:LVv9#hIE.*EI\}8c'nIA]Y+E/ Vbȑ#Z:tR t$YY {saFHH.9_X%c `*՚ xvF7=ʪ9x4iIN#v}nO2 }1^u8`Oqrm*2*"MCGv Y葉r}*|QbG5d]܈$".$s}s*ƕs=ZK.XvsTzdg=.FK4@:vi'>$'*U,>L]s K q6넩Ki*)6ye5B J3 S~QȨT4y I b etbDisj2vZjFP4~P (mI5՛FX2Mo:fnG\wn_DUI=慵KۻrKEцCJ. 7К7a4s8wtݏ_SJ%6"j{59C;Is"5U䕊a@lG~3 {McŦH!._9'̉@՛FX8ƩdҠUB9I0;"jqߥZ\2}6-MCnI*fFzP1$sI#empjt16c. xDefRpAHC|V) e+GJB|L|}xbg9TmZ]ie%;g8WMo5G"w7<I.|?\`niv-ߟ_޺xϣ>xogxmث -B7^Ɇb@q>Z˩[[]ݤw}Oޥ!6aslTnF?/ڢdK+>+9$Er y90oDcf$`xGZ]TÜQb" 0H+~qPTDcge4&ڬt#ȠM׎ D:UQ eg۸9֚}A(1#-LaPZ1q@řLlP1R+zuX{ `ˑJI q>W>\qN1!."$Yq^('<I8c;+&6˓4&W fF1Tg\xK,Y2m?)]N1ש )}2~lFҢ\dRRnofd'z{JcHEh'=;vIE]멺6Ķޘ{ c51*|yj:χ䲳'ϒD*u&Jqi39_\х䷶QCpa3%rLю}ja.RHkDtw BA^vq+)J>!2:dּQc GZ@r)G\+2p׊ҼTyK-ΈzrG; ^.#Flvuc,VFzH"a@3JK}\ٴ-e&eGʞzQtϟ+o/QF~S>ǜc#mO,SV*AƋNoo\B8}3OwT5vcޠZ %[\nFC8<:65'z,. 6,Z\WvxrYD'9'ߊrKx3x n9m.AK˞p>٭bՙKd3gyWtaYK#sCp5P/չ s\"d f'I$g <$hƉ3w- Ll qJDǜȫHM$8Z%2sp\u †ے)$1)z|yC#˞3DHHY7VE`zqfx9O>Ŗ}v\mEiIݔCG5Ncz6i$Q{(Tp>z1̥+VI͍wc8;vRy4Vm s{Oּ[}Yr֤ߋ/EKhRoRX>EyFz'4LPEiuNNIktg>ӌZ.9crkяG33z֭6{(K-S9'͑YZA^%:{Ɠ#&(ROGޣ&^% t>̻6rtf_ L+0$d?CK}M5#Grg8?lfFY_M_)ʤPbyHފվZgDB N=ڝzԖW8,qvW΢hU/GT "ܙ'`搈[敌Qp28>D.!HvWnMޮ&6E Hig( ܢpp8UXO*+7ESN:|DĤɧ`)9Mr"Gе-RHCJ$3Et!义#hLҵ1H6G麤C4jN~PӠ(!GHBm}1Ȫ.iVqy(Q1Ϡ97Hj'uA4:t^Tj/"5sПaּ= ~4!́lg˸:gL!v}sTBYmȋǎ=Yd˲ԨƌuqZF^!8''=L}':Fql.b0@I.ԕ:7ӭVʀO^+\H苴Y*mbP1]'uǥsfn8aӚ&.!-2+y{RLJ>J-TeB)y'PXz L9iMƕl-ϠJTv=sl0IEHYσhjǼdSXgHV/ɰ>\uM8A'QlM!FPqyF-[4zWL$k9r92yc>4kIƣ>/s^/vO.s:6 ʑmǥu8ÕIf+^(շ%Ȁ:OW}x"7J@1޼*So-N3 9sJ6lI{=HO#O HX d3$#¤yrv톐! /,p[AWDYҼY 3t,wR#gbdS{L]L&hZ/%d ՈzlK0{‡u0Wpǖ@=~ Kec8X [D 3R-$ $) s©?5.6ohAwdu8p-6J.GLb07dٵ.eisqkRYEdIos 7 n`A 泜Z|Ax-XV{QͲ@OR;'4F?` R% nl",Ą;G-o,6 =s[(4sTiTِ3q7\̸̎"$l5j^yߠ BLI$GQTF?]Id[/ҝ")g;3ʰ4R w| +ny*Fh\!nh HcڊҪ9 ~aV:0H=)PZ4T1*(%@""$V@<q"Z#8k:fO1]DZl"YGk jCp4-9sVX='XCbhm'܏޹<E;-wڲ$+,? $$~Ij痑bNxEe|u)H# ==Fup{[ Fj {ÔvXn{ ֌-WSԠ6q,BYe d_CGQ_x]KYHr [0Ψ@U'ҥiubG ET(rBy?RI2Y=Hƒ<kG' ,)B A}5R{>#=L֐{X>fPH 03z8ǣy%.Yf(EKs#9=j&<6Sc Q&wwv \[\?#s$z*^KjF#? q5i{1MF.]^hRdNrpZqiIbb/?ouŞL2O,bVb(GQBO9Er`ɛTom|K( ݻrӷ=yg i rhSjq%юWV ke'9c凳EA05HNp˙W8F8J^Jjq,ía_J{9`gc)۱C} ,6kVU#Sp>T Vpz R'umrG<=I[b,LƮE^; q@1K<>9j,9>HS\O_0wd瞟;3mS5>3xOy1PS>ƺI7[9|%=^<)Vo./a{԰T<8ub <_S񖷡]Z\Y%J+5ɖMg˫yW-$rkPwgMW y1C/#kr{ {{ partial "head.html" . }}
{{ partial "header.html" . }}
{{ block "main" . }}{{ end }}
{{ partial "footer.html" . }}
hugo-0.131.0/create/skeletons/theme/layouts/_default/home.html000066400000000000000000000002561465312036400243020ustar00rootroot00000000000000{{ define "main" }} {{ .Content }} {{ range site.RegularPages }}

{{ .LinkTitle }}

{{ .Summary }} {{ end }} {{ end }} hugo-0.131.0/create/skeletons/theme/layouts/_default/list.html000066400000000000000000000002731465312036400243240ustar00rootroot00000000000000{{ define "main" }}

{{ .Title }}

{{ .Content }} {{ range .Pages }}

{{ .LinkTitle }}

{{ .Summary }} {{ end }} {{ end }} hugo-0.131.0/create/skeletons/theme/layouts/_default/single.html000066400000000000000000000005051465312036400246300ustar00rootroot00000000000000{{ define "main" }}

{{ .Title }}

{{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }} {{ $dateHuman := .Date | time.Format ":date_long" }} {{ .Content }} {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} {{ end }} hugo-0.131.0/create/skeletons/theme/layouts/partials/000077500000000000000000000000001465312036400225155ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/layouts/partials/footer.html000066400000000000000000000000661465312036400247030ustar00rootroot00000000000000

Copyright {{ now.Year }}. All rights reserved.

hugo-0.131.0/create/skeletons/theme/layouts/partials/head.html000066400000000000000000000004011465312036400242770ustar00rootroot00000000000000 {{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }} {{ partialCached "head/css.html" . }} {{ partialCached "head/js.html" . }} hugo-0.131.0/create/skeletons/theme/layouts/partials/head/000077500000000000000000000000001465312036400234165ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/layouts/partials/head/css.html000066400000000000000000000005371465312036400251010ustar00rootroot00000000000000{{- with resources.Get "css/main.css" }} {{- if eq hugo.Environment "development" }} {{- else }} {{- with . | minify | fingerprint }} {{- end }} {{- end }} {{- end }} hugo-0.131.0/create/skeletons/theme/layouts/partials/head/js.html000066400000000000000000000006551465312036400247260ustar00rootroot00000000000000{{- with resources.Get "js/main.js" }} {{- if eq hugo.Environment "development" }} {{- with . | js.Build }} {{- end }} {{- else }} {{- $opts := dict "minify" true }} {{- with . | js.Build $opts | fingerprint }} {{- end }} {{- end }} {{- end }} hugo-0.131.0/create/skeletons/theme/layouts/partials/header.html000066400000000000000000000001241465312036400246300ustar00rootroot00000000000000

{{ site.Title }}

{{ partial "menu.html" (dict "menuID" "main" "page" .) }} hugo-0.131.0/create/skeletons/theme/layouts/partials/menu.html000066400000000000000000000024771465312036400243610ustar00rootroot00000000000000{{- /* Renders a menu for the given menu ID. @context {page} page The current page. @context {string} menuID The menu ID. @example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }} */}} {{- $page := .page }} {{- $menuID := .menuID }} {{- with index site.Menus $menuID }} {{- end }} {{- define "partials/inline/menu/walk.html" }} {{- $page := .page }} {{- range .menuEntries }} {{- $attrs := dict "href" .URL }} {{- if $page.IsMenuCurrent .Menu . }} {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} {{- else if $page.HasMenuCurrent .Menu .}} {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} {{- end }} {{- $name := .Name }} {{- with .Identifier }} {{- with T . }} {{- $name = . }} {{- end }} {{- end }}
  • {{ $name }} {{- with .Children }}
      {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
    {{- end }}
  • {{- end }} {{- end }} hugo-0.131.0/create/skeletons/theme/layouts/partials/terms.html000066400000000000000000000010521465312036400245330ustar00rootroot00000000000000{{- /* For a given taxonomy, renders a list of terms assigned to the page. @context {page} page The current page. @context {string} taxonomy The taxonomy. @example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} */}} {{- $page := .page }} {{- $taxonomy := .taxonomy }} {{- with $page.GetTerms $taxonomy }} {{- $label := (index . 0).Parent.LinkTitle }}
    {{ $label }}:
    {{- end }} hugo-0.131.0/create/skeletons/theme/static/000077500000000000000000000000001465312036400204655ustar00rootroot00000000000000hugo-0.131.0/create/skeletons/theme/static/favicon.ico000066400000000000000000000360561465312036400226200ustar00rootroot00000000000000 h6  (00 h&(  QQQ/SSSUUUTTTTTTUUUSSSQQQ/999 SSSUUUUUUUUUUUUUUUUUUUUUUUUSSS@@@@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTT@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPP0SSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSQQQ/UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQQQ/SSSUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSS@@@UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@@999 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@@@QQQ/SSSUUUTTTTTTUUUSSSQQQ/( @ NNN TTTXTTTTTTUUUUUUUUUUUUTTTTTTTTTXNNN UUU$TTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUU$UUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU NNN$TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU0PPP#TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTIIITTTXUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTXTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTXUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTXIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTIIITTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU$TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU PPP#TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTPPP#UUU0UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU0NNN$UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUPPP#UUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUU UUU$TTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUU$IIITTTXTTTTTTUUUTTTTTTUUUTTTTTTTTTXIII(0` UUUSSS%SSSJSSSTTTTTTTTTTTTUUUTTTTTTUUUSSSRRRNQQQ&UUUUUUQQQ/SSSqTTTTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUTTTTTTtRRR2UUUNNNUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRRQQQSSSrUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSxQQQQQQ9TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTQQQ?QQQeTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTSSSl333SSSqTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSq@@@SSSiTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSqRRRdTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUSSSlQQQ?TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQ?DDDTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTQQQTTTmTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQwOOOTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTRRRUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRR2TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTRRR2SSSuUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSuUUU TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUURRRUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUQQQ&QQQ?TTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTSSSMTTT}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTT}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTTTQQQ 0; n-- { sem <- struct{}{} } } if d.cfg.MaxDeletes != -1 && len(deletes) > d.cfg.MaxDeletes { d.logger.Warnf("Skipping %d deletes because it is more than --maxDeletes (%d). If this is expected, set --maxDeletes to a larger number, or -1 to disable this check.\n", len(deletes), d.cfg.MaxDeletes) d.summary.NumDeletes = 0 } else { // Apply deletes in parallel. sort.Slice(deletes, func(i, j int) bool { return deletes[i] < deletes[j] }) sem := make(chan struct{}, nParallel) for _, del := range deletes { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would delete %s\n", del) } continue } sem <- struct{}{} go func(del string) { d.logger.Infof("Deleting %s...\n", del) if err := bucket.Delete(ctx, del); err != nil { if gcerrors.Code(err) == gcerrors.NotFound { d.logger.Warnf("Failed to delete %q because it wasn't found: %v", del, err) } else { errMu.Lock() defer errMu.Unlock() errs = append(errs, err) } } <-sem }(del) } // Wait for all deletes to finish. for n := nParallel; n > 0; n-- { sem <- struct{}{} } } if len(errs) > 0 { if !d.quiet { d.logger.Printf("Encountered %d errors.\n", len(errs)) } return errs[0] } if !d.quiet { d.logger.Println("Success!") } if d.cfg.InvalidateCDN { if d.target.CloudFrontDistributionID != "" { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would invalidate CloudFront CDN with ID %s\n", d.target.CloudFrontDistributionID) } } else { d.logger.Println("Invalidating CloudFront CDN...") if err := InvalidateCloudFront(ctx, d.target); err != nil { d.logger.Printf("Failed to invalidate CloudFront CDN: %v\n", err) return err } } } if d.target.GoogleCloudCDNOrigin != "" { if d.cfg.DryRun { if !d.quiet { d.logger.Printf("[DRY RUN] Would invalidate Google Cloud CDN with origin %s\n", d.target.GoogleCloudCDNOrigin) } } else { d.logger.Println("Invalidating Google Cloud CDN...") if err := InvalidateGoogleCloudCDN(ctx, d.target.GoogleCloudCDNOrigin); err != nil { d.logger.Printf("Failed to invalidate Google Cloud CDN: %v\n", err) return err } } } d.logger.Println("Success!") } return nil } // summarizeChanges creates a text description of the proposed changes. func summarizeChanges(uploads []*fileToUpload, deletes []string) string { uploadSize := int64(0) for _, u := range uploads { uploadSize += u.Local.UploadSize } return fmt.Sprintf("Identified %d file(s) to upload, totaling %s, and %d file(s) to delete.", len(uploads), humanize.Bytes(uint64(uploadSize)), len(deletes)) } // doSingleUpload executes a single file upload. func (d *Deployer) doSingleUpload(ctx context.Context, bucket *blob.Bucket, upload *fileToUpload) error { d.logger.Infof("Uploading %v...\n", upload) opts := &blob.WriterOptions{ CacheControl: upload.Local.CacheControl(), ContentEncoding: upload.Local.ContentEncoding(), ContentType: upload.Local.ContentType(), Metadata: map[string]string{metaMD5Hash: hex.EncodeToString(upload.Local.MD5())}, } w, err := bucket.NewWriter(ctx, upload.Local.SlashPath, opts) if err != nil { return err } r, err := upload.Local.Reader() if err != nil { return err } defer r.Close() _, err = io.Copy(w, r) if err != nil { return err } if err := w.Close(); err != nil { return err } return nil } // localFile represents a local file from the source. Use newLocalFile to // construct one. type localFile struct { // NativePath is the native path to the file (using file.Separator). NativePath string // SlashPath is NativePath converted to use /. SlashPath string // UploadSize is the size of the content to be uploaded. It may not // be the same as the local file size if the content will be // gzipped before upload. UploadSize int64 fs afero.Fs matcher *deployconfig.Matcher md5 []byte // cache gzipped bytes.Buffer // cached of gzipped contents if gzipping mediaTypes media.Types } // newLocalFile initializes a *localFile. func newLocalFile(fs afero.Fs, nativePath, slashpath string, m *deployconfig.Matcher, mt media.Types) (*localFile, error) { f, err := fs.Open(nativePath) if err != nil { return nil, err } defer f.Close() lf := &localFile{ NativePath: nativePath, SlashPath: slashpath, fs: fs, matcher: m, mediaTypes: mt, } if m != nil && m.Gzip { // We're going to gzip the content. Do it once now, and cache the result // in gzipped. The UploadSize is the size of the gzipped content. gz := gzip.NewWriter(&lf.gzipped) if _, err := io.Copy(gz, f); err != nil { return nil, err } if err := gz.Close(); err != nil { return nil, err } lf.UploadSize = int64(lf.gzipped.Len()) } else { // Raw content. Just get the UploadSize. info, err := f.Stat() if err != nil { return nil, err } lf.UploadSize = info.Size() } return lf, nil } // Reader returns an io.ReadCloser for reading the content to be uploaded. // The caller must call Close on the returned ReaderCloser. // The reader content may not be the same as the local file content due to // gzipping. func (lf *localFile) Reader() (io.ReadCloser, error) { if lf.matcher != nil && lf.matcher.Gzip { // We've got the gzipped contents cached in gzipped. // Note: we can't use lf.gzipped directly as a Reader, since we it discards // data after it is read, and we may read it more than once. return io.NopCloser(bytes.NewReader(lf.gzipped.Bytes())), nil } // Not expected to fail since we did it successfully earlier in newLocalFile, // but could happen due to changes in the underlying filesystem. return lf.fs.Open(lf.NativePath) } // CacheControl returns the Cache-Control header to use for lf, based on the // first matching matcher (if any). func (lf *localFile) CacheControl() string { if lf.matcher == nil { return "" } return lf.matcher.CacheControl } // ContentEncoding returns the Content-Encoding header to use for lf, based // on the matcher's Content-Encoding and Gzip fields. func (lf *localFile) ContentEncoding() string { if lf.matcher == nil { return "" } if lf.matcher.Gzip { return "gzip" } return lf.matcher.ContentEncoding } // ContentType returns the Content-Type header to use for lf. // It first checks if there's a Content-Type header configured via a matching // matcher; if not, it tries to generate one based on the filename extension. // If this fails, the Content-Type will be the empty string. In this case, Go // Cloud will automatically try to infer a Content-Type based on the file // content. func (lf *localFile) ContentType() string { if lf.matcher != nil && lf.matcher.ContentType != "" { return lf.matcher.ContentType } ext := filepath.Ext(lf.NativePath) if mimeType, _, found := lf.mediaTypes.GetFirstBySuffix(strings.TrimPrefix(ext, ".")); found { return mimeType.Type } return mime.TypeByExtension(ext) } // Force returns true if the file should be forced to re-upload based on the // matching matcher. func (lf *localFile) Force() bool { return lf.matcher != nil && lf.matcher.Force } // MD5 returns an MD5 hash of the content to be uploaded. func (lf *localFile) MD5() []byte { if len(lf.md5) > 0 { return lf.md5 } h := md5.New() r, err := lf.Reader() if err != nil { return nil } defer r.Close() if _, err := io.Copy(h, r); err != nil { return nil } lf.md5 = h.Sum(nil) return lf.md5 } // knownHiddenDirectory checks if the specified name is a well known // hidden directory. func knownHiddenDirectory(name string) bool { knownDirectories := []string{ ".well-known", } for _, dir := range knownDirectories { if name == dir { return true } } return false } // walkLocal walks the source directory and returns a flat list of files, // using localFile.SlashPath as the map keys. func (d *Deployer) walkLocal(fs afero.Fs, matchers []*deployconfig.Matcher, include, exclude glob.Glob, mediaTypes media.Types, mappath func(string) string) (map[string]*localFile, error) { retval := map[string]*localFile{} err := afero.Walk(fs, "", func(path string, info os.FileInfo, err error) error { if err != nil { return err } if info.IsDir() { // Skip hidden directories. if path != "" && strings.HasPrefix(info.Name(), ".") { // Except for specific hidden directories if !knownHiddenDirectory(info.Name()) { return filepath.SkipDir } } return nil } // .DS_Store is an internal MacOS attribute file; skip it. if info.Name() == ".DS_Store" { return nil } // When a file system is HFS+, its filepath is in NFD form. if runtime.GOOS == "darwin" { path = norm.NFC.String(path) } // Check include/exclude matchers. slashpath := filepath.ToSlash(path) if include != nil && !include.Match(slashpath) { d.logger.Infof(" dropping %q due to include\n", slashpath) return nil } if exclude != nil && exclude.Match(slashpath) { d.logger.Infof(" dropping %q due to exclude\n", slashpath) return nil } // Find the first matching matcher (if any). var m *deployconfig.Matcher for _, cur := range matchers { if cur.Matches(slashpath) { m = cur break } } // Apply any additional modifications to the local path, to map it to // the remote path. if mappath != nil { slashpath = mappath(slashpath) } lf, err := newLocalFile(fs, path, slashpath, m, mediaTypes) if err != nil { return err } retval[lf.SlashPath] = lf return nil }) if err != nil { return nil, err } return retval, nil } // stripIndexHTML remaps keys matching "/index.html" to "/". func stripIndexHTML(slashpath string) string { const suffix = "/index.html" if strings.HasSuffix(slashpath, suffix) { return slashpath[:len(slashpath)-len(suffix)+1] } return slashpath } // walkRemote walks the target bucket and returns a flat list. func (d *Deployer) walkRemote(ctx context.Context, bucket *blob.Bucket, include, exclude glob.Glob) (map[string]*blob.ListObject, error) { retval := map[string]*blob.ListObject{} iter := bucket.List(nil) for { obj, err := iter.Next(ctx) if err == io.EOF { break } if err != nil { return nil, err } // Check include/exclude matchers. if include != nil && !include.Match(obj.Key) { d.logger.Infof(" remote dropping %q due to include\n", obj.Key) continue } if exclude != nil && exclude.Match(obj.Key) { d.logger.Infof(" remote dropping %q due to exclude\n", obj.Key) continue } // If the remote didn't give us an MD5, use remote attributes MD5, if that doesn't exist compute one. // This can happen for some providers (e.g., fileblob, which uses the // local filesystem), but not for the most common Cloud providers // (S3, GCS, Azure). Although, it can happen for S3 if the blob was uploaded // via a multi-part upload. // Although it's unfortunate to have to read the file, it's likely better // than assuming a delta and re-uploading it. if len(obj.MD5) == 0 { var attrMD5 []byte attrs, err := bucket.Attributes(ctx, obj.Key) if err == nil { md5String, exists := attrs.Metadata[metaMD5Hash] if exists { attrMD5, _ = hex.DecodeString(md5String) } } if len(attrMD5) == 0 { r, err := bucket.NewReader(ctx, obj.Key, nil) if err == nil { h := md5.New() if _, err := io.Copy(h, r); err == nil { obj.MD5 = h.Sum(nil) } r.Close() } } else { obj.MD5 = attrMD5 } } retval[obj.Key] = obj } return retval, nil } // uploadReason is an enum of reasons why a file must be uploaded. type uploadReason string const ( reasonUnknown uploadReason = "unknown" reasonNotFound uploadReason = "not found at target" reasonForce uploadReason = "--force" reasonSize uploadReason = "size differs" reasonMD5Differs uploadReason = "md5 differs" reasonMD5Missing uploadReason = "remote md5 missing" ) // fileToUpload represents a single local file that should be uploaded to // the target. type fileToUpload struct { Local *localFile Reason uploadReason } func (u *fileToUpload) String() string { details := []string{humanize.Bytes(uint64(u.Local.UploadSize))} if s := u.Local.CacheControl(); s != "" { details = append(details, fmt.Sprintf("Cache-Control: %q", s)) } if s := u.Local.ContentEncoding(); s != "" { details = append(details, fmt.Sprintf("Content-Encoding: %q", s)) } if s := u.Local.ContentType(); s != "" { details = append(details, fmt.Sprintf("Content-Type: %q", s)) } return fmt.Sprintf("%s (%s): %v", u.Local.SlashPath, strings.Join(details, ", "), u.Reason) } // findDiffs diffs localFiles vs remoteFiles to see what changes should be // applied to the remote target. It returns a slice of *fileToUpload and a // slice of paths for files to delete. func (d *Deployer) findDiffs(localFiles map[string]*localFile, remoteFiles map[string]*blob.ListObject, force bool) ([]*fileToUpload, []string) { var uploads []*fileToUpload var deletes []string found := map[string]bool{} for path, lf := range localFiles { upload := false reason := reasonUnknown if remoteFile, ok := remoteFiles[path]; ok { // The file exists in remote. Let's see if we need to upload it anyway. // TODO: We don't register a diff if the metadata (e.g., Content-Type // header) has changed. This would be difficult/expensive to detect; some // providers return metadata along with their "List" result, but others // (notably AWS S3) do not, so gocloud.dev's blob.Bucket doesn't expose // it in the list result. It would require a separate request per blob // to fetch. At least for now, we work around this by documenting it and // providing a "force" flag (to re-upload everything) and a "force" bool // per matcher (to re-upload all files in a matcher whose headers may have // changed). // Idea: extract a sample set of 1 file per extension + 1 file per matcher // and check those files? if force { upload = true reason = reasonForce } else if lf.Force() { upload = true reason = reasonForce } else if lf.UploadSize != remoteFile.Size { upload = true reason = reasonSize } else if len(remoteFile.MD5) == 0 { // This shouldn't happen unless the remote didn't give us an MD5 hash // from List, AND we failed to compute one by reading the remote file. // Default to considering the files different. upload = true reason = reasonMD5Missing } else if !bytes.Equal(lf.MD5(), remoteFile.MD5) { upload = true reason = reasonMD5Differs } found[path] = true } else { // The file doesn't exist in remote. upload = true reason = reasonNotFound } if upload { d.logger.Debugf("%s needs to be uploaded: %v\n", path, reason) uploads = append(uploads, &fileToUpload{lf, reason}) } else { d.logger.Debugf("%s exists at target and does not need to be uploaded", path) } } // Remote files that weren't found locally should be deleted. for path := range remoteFiles { if !found[path] { deletes = append(deletes, path) } } return uploads, deletes } // applyOrdering returns an ordered slice of slices of uploads. // // The returned slice will have length len(ordering)+1. // // The subslice at index i, for i = 0 ... len(ordering)-1, will have all of the // uploads whose Local.SlashPath matched the regex at ordering[i] (but not any // previous ordering regex). // The subslice at index len(ordering) will have the remaining uploads that // didn't match any ordering regex. // // The subslices are sorted by Local.SlashPath. func applyOrdering(ordering []*regexp.Regexp, uploads []*fileToUpload) [][]*fileToUpload { // Sort the whole slice by Local.SlashPath first. sort.Slice(uploads, func(i, j int) bool { return uploads[i].Local.SlashPath < uploads[j].Local.SlashPath }) retval := make([][]*fileToUpload, len(ordering)+1) for _, u := range uploads { matched := false for i, re := range ordering { if re.MatchString(u.Local.SlashPath) { retval[i] = append(retval[i], u) matched = true break } } if !matched { retval[len(ordering)] = append(retval[len(ordering)], u) } } return retval } hugo-0.131.0/deploy/deploy_azure.go000066400000000000000000000013731465312036400171530ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. //go:build !solaris && !nodeploy // +build !solaris,!nodeploy package deploy import ( _ "gocloud.dev/blob" _ "gocloud.dev/blob/azureblob" // import ) hugo-0.131.0/deploy/deploy_test.go000066400000000000000000000771731465312036400170170ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. //go:build !nodeploy // +build !nodeploy package deploy import ( "bytes" "compress/gzip" "context" "crypto/md5" "fmt" "io" "os" "path" "path/filepath" "regexp" "sort" "testing" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/deploy/deployconfig" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/media" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/spf13/afero" "gocloud.dev/blob" "gocloud.dev/blob/fileblob" "gocloud.dev/blob/memblob" ) func TestFindDiffs(t *testing.T) { hash1 := []byte("hash 1") hash2 := []byte("hash 2") makeLocal := func(path string, size int64, hash []byte) *localFile { return &localFile{NativePath: path, SlashPath: filepath.ToSlash(path), UploadSize: size, md5: hash} } makeRemote := func(path string, size int64, hash []byte) *blob.ListObject { return &blob.ListObject{Key: path, Size: size, MD5: hash} } tests := []struct { Description string Local []*localFile Remote []*blob.ListObject Force bool WantUpdates []*fileToUpload WantDeletes []string }{ { Description: "empty -> no diffs", }, { Description: "local == remote -> no diffs", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), makeRemote("ccc", 3, hash2), }, }, { Description: "local w/ separators == remote -> no diffs", Local: []*localFile{ makeLocal(filepath.Join("aaa", "aaa"), 1, hash1), makeLocal(filepath.Join("bbb", "bbb"), 2, hash1), makeLocal(filepath.Join("ccc", "ccc"), 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa/aaa", 1, hash1), makeRemote("bbb/bbb", 2, hash1), makeRemote("ccc/ccc", 3, hash2), }, }, { Description: "local == remote with force flag true -> diffs", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 3, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), makeRemote("ccc", 3, hash2), }, Force: true, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonForce}, {makeLocal("bbb", 2, nil), reasonForce}, {makeLocal("ccc", 3, nil), reasonForce}, }, }, { Description: "local == remote with route.Force true -> diffs", Local: []*localFile{ {NativePath: "aaa", SlashPath: "aaa", UploadSize: 1, matcher: &deployconfig.Matcher{Force: true}, md5: hash1}, makeLocal("bbb", 2, hash1), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonForce}, }, }, { Description: "extra local file -> upload", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("bbb", 2, nil), reasonNotFound}, }, }, { Description: "extra remote file -> delete", Local: []*localFile{ makeLocal("aaa", 1, hash1), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, hash1), makeRemote("bbb", 2, hash2), }, WantDeletes: []string{"bbb"}, }, { Description: "diffs in size or md5 -> upload", Local: []*localFile{ makeLocal("aaa", 1, hash1), makeLocal("bbb", 2, hash1), makeLocal("ccc", 1, hash2), }, Remote: []*blob.ListObject{ makeRemote("aaa", 1, nil), makeRemote("bbb", 1, hash1), makeRemote("ccc", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("aaa", 1, nil), reasonMD5Missing}, {makeLocal("bbb", 2, nil), reasonSize}, {makeLocal("ccc", 1, nil), reasonMD5Differs}, }, }, { Description: "mix of updates and deletes", Local: []*localFile{ makeLocal("same", 1, hash1), makeLocal("updated", 2, hash1), makeLocal("updated2", 1, hash2), makeLocal("new", 1, hash1), makeLocal("new2", 2, hash2), }, Remote: []*blob.ListObject{ makeRemote("same", 1, hash1), makeRemote("updated", 1, hash1), makeRemote("updated2", 1, hash1), makeRemote("stale", 1, hash1), makeRemote("stale2", 1, hash1), }, WantUpdates: []*fileToUpload{ {makeLocal("new", 1, nil), reasonNotFound}, {makeLocal("new2", 2, nil), reasonNotFound}, {makeLocal("updated", 2, nil), reasonSize}, {makeLocal("updated2", 1, nil), reasonMD5Differs}, }, WantDeletes: []string{"stale", "stale2"}, }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { local := map[string]*localFile{} for _, l := range tc.Local { local[l.SlashPath] = l } remote := map[string]*blob.ListObject{} for _, r := range tc.Remote { remote[r.Key] = r } d := newDeployer() gotUpdates, gotDeletes := d.findDiffs(local, remote, tc.Force) gotUpdates = applyOrdering(nil, gotUpdates)[0] sort.Slice(gotDeletes, func(i, j int) bool { return gotDeletes[i] < gotDeletes[j] }) if diff := cmp.Diff(gotUpdates, tc.WantUpdates, cmpopts.IgnoreUnexported(localFile{})); diff != "" { t.Errorf("updates differ:\n%s", diff) } if diff := cmp.Diff(gotDeletes, tc.WantDeletes); diff != "" { t.Errorf("deletes differ:\n%s", diff) } }) } } func TestWalkLocal(t *testing.T) { tests := map[string]struct { Given []string Expect []string MapPath func(string) string }{ "Empty": { Given: []string{}, Expect: []string{}, }, "Normal": { Given: []string{"file.txt", "normal_dir/file.txt"}, Expect: []string{"file.txt", "normal_dir/file.txt"}, }, "Hidden": { Given: []string{"file.txt", ".hidden_dir/file.txt", "normal_dir/file.txt"}, Expect: []string{"file.txt", "normal_dir/file.txt"}, }, "Well Known": { Given: []string{"file.txt", ".hidden_dir/file.txt", ".well-known/file.txt"}, Expect: []string{"file.txt", ".well-known/file.txt"}, }, "StripIndexHTML": { Given: []string{"index.html", "file.txt", "dir/index.html", "dir/file.txt"}, Expect: []string{"index.html", "file.txt", "dir/", "dir/file.txt"}, MapPath: stripIndexHTML, }, } for desc, tc := range tests { t.Run(desc, func(t *testing.T) { fs := afero.NewMemMapFs() for _, name := range tc.Given { dir, _ := path.Split(name) if dir != "" { if err := fs.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } } if fd, err := fs.Create(name); err != nil { t.Fatal(err) } else { fd.Close() } } d := newDeployer() if got, err := d.walkLocal(fs, nil, nil, nil, media.DefaultTypes, tc.MapPath); err != nil { t.Fatal(err) } else { expect := map[string]any{} for _, path := range tc.Expect { if _, ok := got[path]; !ok { t.Errorf("expected %q in results, but was not found", path) } expect[path] = nil } for path := range got { if _, ok := expect[path]; !ok { t.Errorf("got %q in results unexpectedly", path) } } } }) } } func TestStripIndexHTML(t *testing.T) { tests := map[string]struct { Input string Output string }{ "Unmapped": {Input: "normal_file.txt", Output: "normal_file.txt"}, "Stripped": {Input: "directory/index.html", Output: "directory/"}, "NoSlash": {Input: "prefix_index.html", Output: "prefix_index.html"}, "Root": {Input: "index.html", Output: "index.html"}, } for desc, tc := range tests { t.Run(desc, func(t *testing.T) { got := stripIndexHTML(tc.Input) if got != tc.Output { t.Errorf("got %q, expect %q", got, tc.Output) } }) } } func TestStripIndexHTMLMatcher(t *testing.T) { // StripIndexHTML should not affect matchers. fs := afero.NewMemMapFs() if err := fs.Mkdir("dir", 0o755); err != nil { t.Fatal(err) } for _, name := range []string{"index.html", "dir/index.html", "file.txt"} { if fd, err := fs.Create(name); err != nil { t.Fatal(err) } else { fd.Close() } } d := newDeployer() const pattern = `\.html$` matcher := &deployconfig.Matcher{Pattern: pattern, Gzip: true, Re: regexp.MustCompile(pattern)} if got, err := d.walkLocal(fs, []*deployconfig.Matcher{matcher}, nil, nil, media.DefaultTypes, stripIndexHTML); err != nil { t.Fatal(err) } else { for _, name := range []string{"index.html", "dir/"} { lf := got[name] if lf == nil { t.Errorf("missing file %q", name) } else if lf.matcher == nil { t.Errorf("file %q has nil matcher, expect %q", name, pattern) } } const name = "file.txt" lf := got[name] if lf == nil { t.Errorf("missing file %q", name) } else if lf.matcher != nil { t.Errorf("file %q has matcher %q, expect nil", name, lf.matcher.Pattern) } } } func TestLocalFile(t *testing.T) { const ( content = "hello world!" ) contentBytes := []byte(content) contentLen := int64(len(contentBytes)) contentMD5 := md5.Sum(contentBytes) var buf bytes.Buffer gz := gzip.NewWriter(&buf) if _, err := gz.Write(contentBytes); err != nil { t.Fatal(err) } gz.Close() gzBytes := buf.Bytes() gzLen := int64(len(gzBytes)) gzMD5 := md5.Sum(gzBytes) tests := []struct { Description string Path string Matcher *deployconfig.Matcher MediaTypesConfig map[string]any WantContent []byte WantSize int64 WantMD5 []byte WantContentType string // empty string is always OK, since content type detection is OS-specific WantCacheControl string WantContentEncoding string }{ { Description: "file with no suffix", Path: "foo", WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], }, { Description: "file with .txt suffix", Path: "foo.txt", WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], }, { Description: "CacheControl from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{CacheControl: "max-age=630720000"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantCacheControl: "max-age=630720000", }, { Description: "ContentEncoding from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{ContentEncoding: "foobar"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentEncoding: "foobar", }, { Description: "ContentType from matcher", Path: "foo.txt", Matcher: &deployconfig.Matcher{ContentType: "foo/bar"}, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentType: "foo/bar", }, { Description: "gzipped content", Path: "foo.txt", Matcher: &deployconfig.Matcher{Gzip: true}, WantContent: gzBytes, WantSize: gzLen, WantMD5: gzMD5[:], WantContentEncoding: "gzip", }, { Description: "Custom MediaType", Path: "foo.hugo", MediaTypesConfig: map[string]any{ "hugo/custom": map[string]any{ "suffixes": []string{"hugo"}, }, }, WantContent: contentBytes, WantSize: contentLen, WantMD5: contentMD5[:], WantContentType: "hugo/custom", }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { fs := new(afero.MemMapFs) if err := afero.WriteFile(fs, tc.Path, []byte(content), os.ModePerm); err != nil { t.Fatal(err) } mediaTypes := media.DefaultTypes if len(tc.MediaTypesConfig) > 0 { mt, err := media.DecodeTypes(tc.MediaTypesConfig) if err != nil { t.Fatal(err) } mediaTypes = mt.Config } lf, err := newLocalFile(fs, tc.Path, filepath.ToSlash(tc.Path), tc.Matcher, mediaTypes) if err != nil { t.Fatal(err) } if got := lf.UploadSize; got != tc.WantSize { t.Errorf("got size %d want %d", got, tc.WantSize) } if got := lf.MD5(); !bytes.Equal(got, tc.WantMD5) { t.Errorf("got MD5 %x want %x", got, tc.WantMD5) } if got := lf.CacheControl(); got != tc.WantCacheControl { t.Errorf("got CacheControl %q want %q", got, tc.WantCacheControl) } if got := lf.ContentEncoding(); got != tc.WantContentEncoding { t.Errorf("got ContentEncoding %q want %q", got, tc.WantContentEncoding) } if tc.WantContentType != "" { if got := lf.ContentType(); got != tc.WantContentType { t.Errorf("got ContentType %q want %q", got, tc.WantContentType) } } // Verify the reader last to ensure the previous operations don't // interfere with it. r, err := lf.Reader() if err != nil { t.Fatal(err) } gotContent, err := io.ReadAll(r) if err != nil { t.Fatal(err) } if !bytes.Equal(gotContent, tc.WantContent) { t.Errorf("got content %q want %q", string(gotContent), string(tc.WantContent)) } r.Close() // Verify we can read again. r, err = lf.Reader() if err != nil { t.Fatal(err) } gotContent, err = io.ReadAll(r) if err != nil { t.Fatal(err) } r.Close() if !bytes.Equal(gotContent, tc.WantContent) { t.Errorf("got content %q want %q", string(gotContent), string(tc.WantContent)) } }) } } func TestOrdering(t *testing.T) { tests := []struct { Description string Uploads []string Ordering []*regexp.Regexp Want [][]string }{ { Description: "empty", Want: [][]string{nil}, }, { Description: "no ordering", Uploads: []string{"c", "b", "a", "d"}, Want: [][]string{{"a", "b", "c", "d"}}, }, { Description: "one ordering", Uploads: []string{"db", "c", "b", "a", "da"}, Ordering: []*regexp.Regexp{regexp.MustCompile("^d")}, Want: [][]string{{"da", "db"}, {"a", "b", "c"}}, }, { Description: "two orderings", Uploads: []string{"db", "c", "b", "a", "da"}, Ordering: []*regexp.Regexp{ regexp.MustCompile("^d"), regexp.MustCompile("^b"), }, Want: [][]string{{"da", "db"}, {"b"}, {"a", "c"}}, }, } for _, tc := range tests { t.Run(tc.Description, func(t *testing.T) { uploads := make([]*fileToUpload, len(tc.Uploads)) for i, u := range tc.Uploads { uploads[i] = &fileToUpload{Local: &localFile{SlashPath: u}} } gotUploads := applyOrdering(tc.Ordering, uploads) var got [][]string for _, subslice := range gotUploads { var gotsubslice []string for _, u := range subslice { gotsubslice = append(gotsubslice, u.Local.SlashPath) } got = append(got, gotsubslice) } if diff := cmp.Diff(got, tc.Want); diff != "" { t.Error(diff) } }) } } type fileData struct { Name string // name of the file Contents string // contents of the file } // initLocalFs initializes fs with some test files. func initLocalFs(ctx context.Context, fs afero.Fs) ([]*fileData, error) { // The initial local filesystem. local := []*fileData{ {"aaa", "aaa"}, {"bbb", "bbb"}, {"subdir/aaa", "subdir-aaa"}, {"subdir/nested/aaa", "subdir-nested-aaa"}, {"subdir2/bbb", "subdir2-bbb"}, } if err := writeFiles(fs, local); err != nil { return nil, err } return local, nil } // fsTest represents an (afero.FS, Go CDK blob.Bucket) against which end-to-end // tests can be run. type fsTest struct { name string fs afero.Fs bucket *blob.Bucket } // initFsTests initializes a pair of tests for end-to-end test: // 1. An in-memory afero.Fs paired with an in-memory Go CDK bucket. // 2. A filesystem-based afero.Fs paired with an filesystem-based Go CDK bucket. // It returns the pair of tests and a cleanup function. func initFsTests(t *testing.T) []*fsTest { t.Helper() tmpfsdir := t.TempDir() tmpbucketdir := t.TempDir() memfs := afero.NewMemMapFs() membucket := memblob.OpenBucket(nil) t.Cleanup(func() { membucket.Close() }) filefs := hugofs.NewBasePathFs(afero.NewOsFs(), tmpfsdir) filebucket, err := fileblob.OpenBucket(tmpbucketdir, nil) if err != nil { t.Fatal(err) } t.Cleanup(func() { filebucket.Close() }) tests := []*fsTest{ {"mem", memfs, membucket}, {"file", filefs, filebucket}, } return tests } // TestEndToEndSync verifies that basic adds, updates, and deletes are working // correctly. func TestEndToEndSync(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, mediaTypes: media.DefaultTypes, cfg: deployconfig.DeployConfig{MaxDeletes: -1}, } // Initial deployment should sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } if diff, err := verifyRemote(ctx, deployer.bucket, local); err != nil { t.Errorf("initial deploy: failed to verify remote: %v", err) } else if diff != "" { t.Errorf("initial deploy: remote snapshot doesn't match expected:\n%v", diff) } // A repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } // Make some changes to the local filesystem: // 1. Modify file [0]. // 2. Delete file [1]. // 3. Add a new file (sorted last). updatefd := local[0] updatefd.Contents = "new contents" deletefd := local[1] local = append(local[:1], local[2:]...) // removing deleted [1] newfd := &fileData{"zzz", "zzz"} local = append(local, newfd) if err := writeFiles(test.fs, []*fileData{updatefd, newfd}); err != nil { t.Fatal(err) } if err := test.fs.Remove(deletefd.Name); err != nil { t.Fatal(err) } // A deployment should apply those 3 changes. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy after changes: failed: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 2, NumDeletes: 1} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy after changes: got %v, want %v", deployer.summary, wantSummary) } if diff, err := verifyRemote(ctx, deployer.bucket, local); err != nil { t.Errorf("deploy after changes: failed to verify remote: %v", err) } else if diff != "" { t.Errorf("deploy after changes: remote snapshot doesn't match expected:\n%v", diff) } // Again, a repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestMaxDeletes verifies that the "maxDeletes" flag is working correctly. func TestMaxDeletes(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, mediaTypes: media.DefaultTypes, cfg: deployconfig.DeployConfig{MaxDeletes: -1}, } // Sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // Delete two files, [1] and [2]. if err := test.fs.Remove(local[1].Name); err != nil { t.Fatal(err) } if err := test.fs.Remove(local[2].Name); err != nil { t.Fatal(err) } // A deployment with maxDeletes=0 shouldn't change anything. deployer.cfg.MaxDeletes = 0 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // A deployment with maxDeletes=1 shouldn't change anything either. deployer.cfg.MaxDeletes = 1 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // A deployment with maxDeletes=2 should make the changes. deployer.cfg.MaxDeletes = 2 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 2} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } // Delete two more files, [0] and [3]. if err := test.fs.Remove(local[0].Name); err != nil { t.Fatal(err) } if err := test.fs.Remove(local[3].Name); err != nil { t.Fatal(err) } // A deployment with maxDeletes=-1 should make the changes. deployer.cfg.MaxDeletes = -1 if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy failed: %v", err) } wantSummary = deploySummary{NumLocal: 1, NumRemote: 3, NumUploads: 0, NumDeletes: 2} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestIncludeExclude verifies that the include/exclude options for targets work. func TestIncludeExclude(t *testing.T) { ctx := context.Background() tests := []struct { Include string Exclude string Want deploySummary }{ { Want: deploySummary{NumLocal: 5, NumUploads: 5}, }, { Include: "**aaa", Want: deploySummary{NumLocal: 3, NumUploads: 3}, }, { Include: "**bbb", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, { Include: "aaa", Want: deploySummary{NumLocal: 1, NumUploads: 1}, }, { Exclude: "**aaa", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, { Exclude: "**bbb", Want: deploySummary{NumLocal: 3, NumUploads: 3}, }, { Exclude: "aaa", Want: deploySummary{NumLocal: 4, NumUploads: 4}, }, { Include: "**aaa", Exclude: "**nested**", Want: deploySummary{NumLocal: 2, NumUploads: 2}, }, } for _, test := range tests { t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) { fsTests := initFsTests(t) fsTest := fsTests[1] // just do file-based test _, err := initLocalFs(ctx, fsTest.fs) if err != nil { t.Fatal(err) } tgt := &deployconfig.Target{ Include: test.Include, Exclude: test.Exclude, } if err := tgt.ParseIncludeExclude(); err != nil { t.Error(err) } deployer := &Deployer{ localFs: fsTest.fs, cfg: deployconfig.DeployConfig{MaxDeletes: -1}, bucket: fsTest.bucket, target: tgt, mediaTypes: media.DefaultTypes, } // Sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } if !cmp.Equal(deployer.summary, test.Want) { t.Errorf("deploy: got %v, want %v", deployer.summary, test.Want) } }) } } // TestIncludeExcludeRemoteDelete verifies deleted local files that don't match include/exclude patterns // are not deleted on the remote. func TestIncludeExcludeRemoteDelete(t *testing.T) { ctx := context.Background() tests := []struct { Include string Exclude string Want deploySummary }{ { Want: deploySummary{NumLocal: 3, NumRemote: 5, NumUploads: 0, NumDeletes: 2}, }, { Include: "**aaa", Want: deploySummary{NumLocal: 2, NumRemote: 3, NumUploads: 0, NumDeletes: 1}, }, { Include: "subdir/**", Want: deploySummary{NumLocal: 1, NumRemote: 2, NumUploads: 0, NumDeletes: 1}, }, { Exclude: "**bbb", Want: deploySummary{NumLocal: 2, NumRemote: 3, NumUploads: 0, NumDeletes: 1}, }, { Exclude: "bbb", Want: deploySummary{NumLocal: 3, NumRemote: 4, NumUploads: 0, NumDeletes: 1}, }, } for _, test := range tests { t.Run(fmt.Sprintf("include %q exclude %q", test.Include, test.Exclude), func(t *testing.T) { fsTests := initFsTests(t) fsTest := fsTests[1] // just do file-based test local, err := initLocalFs(ctx, fsTest.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: fsTest.fs, cfg: deployconfig.DeployConfig{MaxDeletes: -1}, bucket: fsTest.bucket, mediaTypes: media.DefaultTypes, } // Initial sync to get the files on the remote if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } // Delete two files, [1] and [2]. if err := fsTest.fs.Remove(local[1].Name); err != nil { t.Fatal(err) } if err := fsTest.fs.Remove(local[2].Name); err != nil { t.Fatal(err) } // Second sync tgt := &deployconfig.Target{ Include: test.Include, Exclude: test.Exclude, } if err := tgt.ParseIncludeExclude(); err != nil { t.Error(err) } deployer.target = tgt if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy: failed: %v", err) } if !cmp.Equal(deployer.summary, test.Want) { t.Errorf("deploy: got %v, want %v", deployer.summary, test.Want) } }) } } // TestCompression verifies that gzip compression works correctly. // In particular, MD5 hashes must be of the compressed content. func TestCompression(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { local, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, cfg: deployconfig.DeployConfig{MaxDeletes: -1, Matchers: []*deployconfig.Matcher{{Pattern: ".*", Gzip: true, Re: regexp.MustCompile(".*")}}}, mediaTypes: media.DefaultTypes, } // Initial deployment should sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // A repeat deployment shouldn't change anything. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 0, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy: got %v, want %v", deployer.summary, wantSummary) } // Make an update to the local filesystem, on [1]. updatefd := local[1] updatefd.Contents = "new contents" if err := writeFiles(test.fs, []*fileData{updatefd}); err != nil { t.Fatal(err) } // A deployment should apply the changes. if err := deployer.Deploy(ctx); err != nil { t.Errorf("deploy after changes: failed: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 1, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("deploy after changes: got %v, want %v", deployer.summary, wantSummary) } }) } } // TestMatching verifies that matchers match correctly, and that the Force // attribute for matcher works. func TestMatching(t *testing.T) { ctx := context.Background() tests := initFsTests(t) for _, test := range tests { t.Run(test.name, func(t *testing.T) { _, err := initLocalFs(ctx, test.fs) if err != nil { t.Fatal(err) } deployer := &Deployer{ localFs: test.fs, bucket: test.bucket, cfg: deployconfig.DeployConfig{MaxDeletes: -1, Matchers: []*deployconfig.Matcher{{Pattern: "^subdir/aaa$", Force: true, Re: regexp.MustCompile("^subdir/aaa$")}}}, mediaTypes: media.DefaultTypes, } // Initial deployment to sync remote with local. if err := deployer.Deploy(ctx); err != nil { t.Errorf("initial deploy: failed: %v", err) } wantSummary := deploySummary{NumLocal: 5, NumRemote: 0, NumUploads: 5, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("initial deploy: got %v, want %v", deployer.summary, wantSummary) } // A repeat deployment should upload a single file, the one that matched the Force matcher. // Note that matching happens based on the ToSlash form, so this matches // even on Windows. if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy with single force matcher: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 1, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy with single force matcher: got %v, want %v", deployer.summary, wantSummary) } // Repeat with a matcher that should now match 3 files. deployer.cfg.Matchers = []*deployconfig.Matcher{{Pattern: "aaa", Force: true, Re: regexp.MustCompile("aaa")}} if err := deployer.Deploy(ctx); err != nil { t.Errorf("no-op deploy with triple force matcher: %v", err) } wantSummary = deploySummary{NumLocal: 5, NumRemote: 5, NumUploads: 3, NumDeletes: 0} if !cmp.Equal(deployer.summary, wantSummary) { t.Errorf("no-op deploy with triple force matcher: got %v, want %v", deployer.summary, wantSummary) } }) } } // writeFiles writes the files in fds to fd. func writeFiles(fs afero.Fs, fds []*fileData) error { for _, fd := range fds { dir := path.Dir(fd.Name) if dir != "." { err := fs.MkdirAll(dir, os.ModePerm) if err != nil { return err } } f, err := fs.Create(fd.Name) if err != nil { return err } defer f.Close() _, err = f.WriteString(fd.Contents) if err != nil { return err } } return nil } // verifyRemote that the current contents of bucket matches local. // It returns an empty string if the contents matched, and a non-empty string // capturing the diff if they didn't. func verifyRemote(ctx context.Context, bucket *blob.Bucket, local []*fileData) (string, error) { var cur []*fileData iter := bucket.List(nil) for { obj, err := iter.Next(ctx) if err == io.EOF { break } if err != nil { return "", err } contents, err := bucket.ReadAll(ctx, obj.Key) if err != nil { return "", err } cur = append(cur, &fileData{obj.Key, string(contents)}) } if cmp.Equal(cur, local) { return "", nil } diff := "got: \n" for _, f := range cur { diff += fmt.Sprintf(" %s: %s\n", f.Name, f.Contents) } diff += "want: \n" for _, f := range local { diff += fmt.Sprintf(" %s: %s\n", f.Name, f.Contents) } return diff, nil } func newDeployer() *Deployer { return &Deployer{ logger: loggers.NewDefault(), } } hugo-0.131.0/deploy/deployconfig/000077500000000000000000000000001465312036400166005ustar00rootroot00000000000000hugo-0.131.0/deploy/deployconfig/deployConfig.go000066400000000000000000000121171465312036400215530ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. package deployconfig import ( "errors" "fmt" "regexp" "github.com/gobwas/glob" "github.com/gohugoio/hugo/config" hglob "github.com/gohugoio/hugo/hugofs/glob" "github.com/mitchellh/mapstructure" ) const DeploymentConfigKey = "deployment" // DeployConfig is the complete configuration for deployment. type DeployConfig struct { Targets []*Target Matchers []*Matcher Order []string // Usually set via flags. // Target deployment Name; defaults to the first one. Target string // Show a confirm prompt before deploying. Confirm bool // DryRun will try the deployment without any remote changes. DryRun bool // Force will re-upload all files. Force bool // Invalidate the CDN cache listed in the deployment target. InvalidateCDN bool // MaxDeletes is the maximum number of files to delete. MaxDeletes int // Number of concurrent workers to use when uploading files. Workers int Ordering []*regexp.Regexp `json:"-"` // compiled Order } type Target struct { Name string URL string CloudFrontDistributionID string // GoogleCloudCDNOrigin specifies the Google Cloud project and CDN origin to // invalidate when deploying this target. It is specified as /. GoogleCloudCDNOrigin string // Optional patterns of files to include/exclude for this target. // Parsed using github.com/gobwas/glob. Include string Exclude string // Parsed versions of Include/Exclude. IncludeGlob glob.Glob `json:"-"` ExcludeGlob glob.Glob `json:"-"` // If true, any local path matching /index.html will be mapped to the // remote path /. This does not affect the top-level index.html file, // since that would result in an empty path. StripIndexHTML bool } func (tgt *Target) ParseIncludeExclude() error { var err error if tgt.Include != "" { tgt.IncludeGlob, err = hglob.GetGlob(tgt.Include) if err != nil { return fmt.Errorf("invalid deployment.target.include %q: %v", tgt.Include, err) } } if tgt.Exclude != "" { tgt.ExcludeGlob, err = hglob.GetGlob(tgt.Exclude) if err != nil { return fmt.Errorf("invalid deployment.target.exclude %q: %v", tgt.Exclude, err) } } return nil } // Matcher represents configuration to be applied to files whose paths match // a specified pattern. type Matcher struct { // Pattern is the string pattern to match against paths. // Matching is done against paths converted to use / as the path separator. Pattern string // CacheControl specifies caching attributes to use when serving the blob. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control CacheControl string // ContentEncoding specifies the encoding used for the blob's content, if any. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding ContentEncoding string // ContentType specifies the MIME type of the blob being written. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type ContentType string // Gzip determines whether the file should be gzipped before upload. // If so, the ContentEncoding field will automatically be set to "gzip". Gzip bool // Force indicates that matching files should be re-uploaded. Useful when // other route-determined metadata (e.g., ContentType) has changed. Force bool // Re is Pattern compiled. Re *regexp.Regexp `json:"-"` } func (m *Matcher) Matches(path string) bool { return m.Re.MatchString(path) } var DefaultConfig = DeployConfig{ Workers: 10, InvalidateCDN: true, MaxDeletes: 256, } // DecodeConfig creates a config from a given Hugo configuration. func DecodeConfig(cfg config.Provider) (DeployConfig, error) { dcfg := DefaultConfig if !cfg.IsSet(DeploymentConfigKey) { return dcfg, nil } if err := mapstructure.WeakDecode(cfg.GetStringMap(DeploymentConfigKey), &dcfg); err != nil { return dcfg, err } if dcfg.Workers <= 0 { dcfg.Workers = 10 } for _, tgt := range dcfg.Targets { if *tgt == (Target{}) { return dcfg, errors.New("empty deployment target") } if err := tgt.ParseIncludeExclude(); err != nil { return dcfg, err } } var err error for _, m := range dcfg.Matchers { if *m == (Matcher{}) { return dcfg, errors.New("empty deployment matcher") } m.Re, err = regexp.Compile(m.Pattern) if err != nil { return dcfg, fmt.Errorf("invalid deployment.matchers.pattern: %v", err) } } for _, o := range dcfg.Order { re, err := regexp.Compile(o) if err != nil { return dcfg, fmt.Errorf("invalid deployment.orderings.pattern: %v", err) } dcfg.Ordering = append(dcfg.Ordering, re) } return dcfg, nil } hugo-0.131.0/deploy/deployconfig/deployConfig_test.go000066400000000000000000000111011465312036400226020ustar00rootroot00000000000000// Copyright 2024 The Hugo Authors. All rights reserved. // // 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. //go:build !nodeploy // +build !nodeploy package deployconfig import ( "fmt" "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/config" ) func TestDecodeConfigFromTOML(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] order = ["o1", "o2"] # All lowercase. [[deployment.targets]] name = "name0" url = "url0" cloudfrontdistributionid = "cdn0" include = "*.html" # All uppercase. [[deployment.targets]] NAME = "name1" URL = "url1" CLOUDFRONTDISTRIBUTIONID = "cdn1" INCLUDE = "*.jpg" # Camelcase. [[deployment.targets]] name = "name2" url = "url2" cloudFrontDistributionID = "cdn2" exclude = "*.png" # All lowercase. [[deployment.matchers]] pattern = "^pattern0$" cachecontrol = "cachecontrol0" contentencoding = "contentencoding0" contenttype = "contenttype0" # All uppercase. [[deployment.matchers]] PATTERN = "^pattern1$" CACHECONTROL = "cachecontrol1" CONTENTENCODING = "contentencoding1" CONTENTTYPE = "contenttype1" GZIP = true FORCE = true # Camelcase. [[deployment.matchers]] pattern = "^pattern2$" cacheControl = "cachecontrol2" contentEncoding = "contentencoding2" contentType = "contenttype2" gzip = true force = true ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) dcfg, err := DecodeConfig(cfg) c.Assert(err, qt.IsNil) // Order. c.Assert(len(dcfg.Order), qt.Equals, 2) c.Assert(dcfg.Order[0], qt.Equals, "o1") c.Assert(dcfg.Order[1], qt.Equals, "o2") c.Assert(len(dcfg.Ordering), qt.Equals, 2) // Targets. c.Assert(len(dcfg.Targets), qt.Equals, 3) wantInclude := []string{"*.html", "*.jpg", ""} wantExclude := []string{"", "", "*.png"} for i := 0; i < 3; i++ { tgt := dcfg.Targets[i] c.Assert(tgt.Name, qt.Equals, fmt.Sprintf("name%d", i)) c.Assert(tgt.URL, qt.Equals, fmt.Sprintf("url%d", i)) c.Assert(tgt.CloudFrontDistributionID, qt.Equals, fmt.Sprintf("cdn%d", i)) c.Assert(tgt.Include, qt.Equals, wantInclude[i]) if wantInclude[i] != "" { c.Assert(tgt.IncludeGlob, qt.Not(qt.IsNil)) } c.Assert(tgt.Exclude, qt.Equals, wantExclude[i]) if wantExclude[i] != "" { c.Assert(tgt.ExcludeGlob, qt.Not(qt.IsNil)) } } // Matchers. c.Assert(len(dcfg.Matchers), qt.Equals, 3) for i := 0; i < 3; i++ { m := dcfg.Matchers[i] c.Assert(m.Pattern, qt.Equals, fmt.Sprintf("^pattern%d$", i)) c.Assert(m.Re, qt.Not(qt.IsNil)) c.Assert(m.CacheControl, qt.Equals, fmt.Sprintf("cachecontrol%d", i)) c.Assert(m.ContentEncoding, qt.Equals, fmt.Sprintf("contentencoding%d", i)) c.Assert(m.ContentType, qt.Equals, fmt.Sprintf("contenttype%d", i)) c.Assert(m.Gzip, qt.Equals, i != 0) c.Assert(m.Force, qt.Equals, i != 0) } } func TestInvalidOrderingPattern(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] order = ["["] # invalid regular expression ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestInvalidMatcherPattern(t *testing.T) { c := qt.New(t) tomlConfig := ` someOtherValue = "foo" [deployment] [[deployment.matchers]] Pattern = "[" # invalid regular expression ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestDecodeConfigDefault(t *testing.T) { c := qt.New(t) dcfg, err := DecodeConfig(config.New()) c.Assert(err, qt.IsNil) c.Assert(len(dcfg.Targets), qt.Equals, 0) c.Assert(len(dcfg.Matchers), qt.Equals, 0) } func TestEmptyTarget(t *testing.T) { c := qt.New(t) tomlConfig := ` [deployment] [[deployment.targets]] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } func TestEmptyMatcher(t *testing.T) { c := qt.New(t) tomlConfig := ` [deployment] [[deployment.matchers]] ` cfg, err := config.FromConfigString(tomlConfig, "toml") c.Assert(err, qt.IsNil) _, err = DecodeConfig(cfg) c.Assert(err, qt.Not(qt.IsNil)) } hugo-0.131.0/deploy/google.go000066400000000000000000000023211465312036400157170ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. //go:build !nodeploy // +build !nodeploy package deploy import ( "context" "fmt" "strings" "google.golang.org/api/compute/v1" ) // Invalidate all of the content in a Google Cloud CDN distribution. func InvalidateGoogleCloudCDN(ctx context.Context, origin string) error { parts := strings.Split(origin, "/") if len(parts) != 2 { return fmt.Errorf("origin must be /") } service, err := compute.NewService(ctx) if err != nil { return err } rule := &compute.CacheInvalidationRule{Path: "/*"} _, err = service.UrlMaps.InvalidateCache(parts[0], parts[1], rule).Context(ctx).Do() return err } hugo-0.131.0/deps/000077500000000000000000000000001465312036400135555ustar00rootroot00000000000000hugo-0.131.0/deps/deps.go000066400000000000000000000254451465312036400150510ustar00rootroot00000000000000package deps import ( "context" "fmt" "io" "path/filepath" "sort" "strings" "sync" "sync/atomic" "github.com/bep/logg" "github.com/gohugoio/hugo/cache/dynacache" "github.com/gohugoio/hugo/cache/filecache" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/common/maps" "github.com/gohugoio/hugo/common/types" "github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config/allconfig" "github.com/gohugoio/hugo/config/security" "github.com/gohugoio/hugo/helpers" "github.com/gohugoio/hugo/hugofs" "github.com/gohugoio/hugo/identity" "github.com/gohugoio/hugo/media" "github.com/gohugoio/hugo/resources/page" "github.com/gohugoio/hugo/resources/postpub" "github.com/gohugoio/hugo/metrics" "github.com/gohugoio/hugo/resources" "github.com/gohugoio/hugo/source" "github.com/gohugoio/hugo/tpl" "github.com/spf13/afero" ) // Deps holds dependencies used by many. // There will be normally only one instance of deps in play // at a given time, i.e. one per Site built. type Deps struct { // The logger to use. Log loggers.Logger `json:"-"` ExecHelper *hexec.Exec // The templates to use. This will usually implement the full tpl.TemplateManager. tmplHandlers *tpl.TemplateHandlers // The file systems to use. Fs *hugofs.Fs `json:"-"` // The PathSpec to use *helpers.PathSpec `json:"-"` // The ContentSpec to use *helpers.ContentSpec `json:"-"` // The SourceSpec to use SourceSpec *source.SourceSpec `json:"-"` // The Resource Spec to use ResourceSpec *resources.Spec // The configuration to use Conf config.AllProvider `json:"-"` // The memory cache to use. MemCache *dynacache.Cache // The translation func to use Translate func(ctx context.Context, translationID string, templateData any) string `json:"-"` // The site building. Site page.Site TemplateProvider ResourceProvider // Used in tests OverloadedTemplateFuncs map[string]any TranslationProvider ResourceProvider Metrics metrics.Provider // BuildStartListeners will be notified before a build starts. BuildStartListeners *Listeners // BuildEndListeners will be notified after a build finishes. BuildEndListeners *Listeners // Resources that gets closed when the build is done or the server shuts down. BuildClosers *types.Closers // This is common/global for all sites. BuildState *BuildState *globalErrHandler } func (d Deps) Clone(s page.Site, conf config.AllProvider) (*Deps, error) { d.Conf = conf d.Site = s d.ExecHelper = nil d.ContentSpec = nil if err := d.Init(); err != nil { return nil, err } return &d, nil } func (d *Deps) SetTempl(t *tpl.TemplateHandlers) { d.tmplHandlers = t } func (d *Deps) Init() error { if d.Conf == nil { panic("conf is nil") } if d.Fs == nil { // For tests. d.Fs = hugofs.NewFrom(afero.NewMemMapFs(), d.Conf.BaseConfig()) } if d.Log == nil { d.Log = loggers.NewDefault() } if d.globalErrHandler == nil { d.globalErrHandler = &globalErrHandler{ logger: d.Log, } } if d.BuildState == nil { d.BuildState = &BuildState{} } if d.BuildState.DeferredExecutions == nil { if d.BuildState.DeferredExecutionsGroupedByRenderingContext == nil { d.BuildState.DeferredExecutionsGroupedByRenderingContext = make(map[tpl.RenderingContext]*DeferredExecutions) } d.BuildState.DeferredExecutions = &DeferredExecutions{ Executions: maps.NewCache[string, *tpl.DeferredExecution](), FilenamesWithPostPrefix: maps.NewCache[string, bool](), } } if d.BuildStartListeners == nil { d.BuildStartListeners = &Listeners{} } if d.BuildEndListeners == nil { d.BuildEndListeners = &Listeners{} } if d.BuildClosers == nil { d.BuildClosers = &types.Closers{} } if d.Metrics == nil && d.Conf.TemplateMetrics() { d.Metrics = metrics.NewProvider(d.Conf.TemplateMetricsHints()) } if d.ExecHelper == nil { d.ExecHelper = hexec.New(d.Conf.GetConfigSection("security").(security.Config), d.Conf.WorkingDir()) } if d.MemCache == nil { d.MemCache = dynacache.New(dynacache.Options{Watching: d.Conf.Watching(), Log: d.Log}) } if d.PathSpec == nil { hashBytesReceiverFunc := func(name string, match []byte) { s := string(match) switch s { case postpub.PostProcessPrefix: d.BuildState.AddFilenameWithPostPrefix(name) case tpl.HugoDeferredTemplatePrefix: d.BuildState.DeferredExecutions.FilenamesWithPostPrefix.Set(name, true) } } // Skip binary files. mediaTypes := d.Conf.GetConfigSection("mediaTypes").(media.Types) hashBytesShouldCheck := func(name string) bool { ext := strings.TrimPrefix(filepath.Ext(name), ".") return mediaTypes.IsTextSuffix(ext) } d.Fs.PublishDir = hugofs.NewHasBytesReceiver( d.Fs.PublishDir, hashBytesShouldCheck, hashBytesReceiverFunc, []byte(tpl.HugoDeferredTemplatePrefix), []byte(postpub.PostProcessPrefix)) pathSpec, err := helpers.NewPathSpec(d.Fs, d.Conf, d.Log) if err != nil { return err } d.PathSpec = pathSpec } else { var err error d.PathSpec, err = helpers.NewPathSpecWithBaseBaseFsProvided(d.Fs, d.Conf, d.Log, d.PathSpec.BaseFs) if err != nil { return err } } if d.ContentSpec == nil { contentSpec, err := helpers.NewContentSpec(d.Conf, d.Log, d.Content.Fs, d.ExecHelper) if err != nil { return err } d.ContentSpec = contentSpec } if d.SourceSpec == nil { d.SourceSpec = source.NewSourceSpec(d.PathSpec, nil, d.Fs.Source) } var common *resources.SpecCommon if d.ResourceSpec != nil { common = d.ResourceSpec.SpecCommon } fileCaches, err := filecache.NewCaches(d.PathSpec) if err != nil { return fmt.Errorf("failed to create file caches from configuration: %w", err) } resourceSpec, err := resources.NewSpec(d.PathSpec, common, fileCaches, d.MemCache, d.BuildState, d.Log, d, d.ExecHelper, d.BuildClosers, d.BuildState) if err != nil { return fmt.Errorf("failed to create resource spec: %w", err) } d.ResourceSpec = resourceSpec return nil } func (d *Deps) Compile(prototype *Deps) error { var err error if prototype == nil { if err = d.TemplateProvider.NewResource(d); err != nil { return err } if err = d.TranslationProvider.NewResource(d); err != nil { return err } return nil } if err = d.TemplateProvider.CloneResource(d, prototype); err != nil { return err } if err = d.TranslationProvider.CloneResource(d, prototype); err != nil { return err } return nil } type globalErrHandler struct { logger loggers.Logger // Channel for some "hard to get to" build errors buildErrors chan error // Used to signal that the build is done. quit chan struct{} } // SendError sends the error on a channel to be handled later. // This can be used in situations where returning and aborting the current // operation isn't practical. func (e *globalErrHandler) SendError(err error) { if e.buildErrors != nil { select { case <-e.quit: case e.buildErrors <- err: default: } return } e.logger.Errorln(err) } func (e *globalErrHandler) StartErrorCollector() chan error { e.quit = make(chan struct{}) e.buildErrors = make(chan error, 10) return e.buildErrors } func (e *globalErrHandler) StopErrorCollector() { if e.buildErrors != nil { close(e.quit) close(e.buildErrors) } } // Listeners represents an event listener. type Listeners struct { sync.Mutex // A list of funcs to be notified about an event. listeners []func() } // Add adds a function to a Listeners instance. func (b *Listeners) Add(f func()) { if b == nil { return } b.Lock() defer b.Unlock() b.listeners = append(b.listeners, f) } // Notify executes all listener functions. func (b *Listeners) Notify() { b.Lock() defer b.Unlock() for _, notify := range b.listeners { notify() } } // ResourceProvider is used to create and refresh, and clone resources needed. type ResourceProvider interface { NewResource(dst *Deps) error CloneResource(dst, src *Deps) error } func (d *Deps) Tmpl() tpl.TemplateHandler { return d.tmplHandlers.Tmpl } func (d *Deps) TextTmpl() tpl.TemplateParseFinder { return d.tmplHandlers.TxtTmpl } func (d *Deps) Close() error { if d.MemCache != nil { d.MemCache.Stop() } return d.BuildClosers.Close() } // DepsCfg contains configuration options that can be used to configure Hugo // on a global level, i.e. logging etc. // Nil values will be given default values. type DepsCfg struct { // The logger to use. Only set in some tests. // TODO(bep) get rid of this. TestLogger loggers.Logger // The logging level to use. LogLevel logg.Level // Where to write the logs. // Currently we typically write everything to stdout. LogOut io.Writer // The file systems to use Fs *hugofs.Fs // The Site in use Site page.Site Configs *allconfig.Configs // Template handling. TemplateProvider ResourceProvider // i18n handling. TranslationProvider ResourceProvider // ChangesFromBuild for changes passed back to the server/watch process. ChangesFromBuild chan []identity.Identity } // BuildState are state used during a build. type BuildState struct { counter uint64 mu sync.Mutex // protects state below. OnSignalRebuild func(ids ...identity.Identity) // A set of filenames in /public that // contains a post-processing prefix. filenamesWithPostPrefix map[string]bool DeferredExecutions *DeferredExecutions // Deferred executions grouped by rendering context. DeferredExecutionsGroupedByRenderingContext map[tpl.RenderingContext]*DeferredExecutions } type DeferredExecutions struct { // A set of filenames in /public that // contains a post-processing prefix. FilenamesWithPostPrefix *maps.Cache[string, bool] // Maps a placeholder to a deferred execution. Executions *maps.Cache[string, *tpl.DeferredExecution] } var _ identity.SignalRebuilder = (*BuildState)(nil) // StartStageRender will be called before a stage is rendered. func (b *BuildState) StartStageRender(stage tpl.RenderingContext) { } // StopStageRender will be called after a stage is rendered. func (b *BuildState) StopStageRender(stage tpl.RenderingContext) { b.DeferredExecutionsGroupedByRenderingContext[stage] = b.DeferredExecutions b.DeferredExecutions = &DeferredExecutions{ Executions: maps.NewCache[string, *tpl.DeferredExecution](), FilenamesWithPostPrefix: maps.NewCache[string, bool](), } } func (b *BuildState) SignalRebuild(ids ...identity.Identity) { b.OnSignalRebuild(ids...) } func (b *BuildState) AddFilenameWithPostPrefix(filename string) { b.mu.Lock() defer b.mu.Unlock() if b.filenamesWithPostPrefix == nil { b.filenamesWithPostPrefix = make(map[string]bool) } b.filenamesWithPostPrefix[filename] = true } func (b *BuildState) GetFilenamesWithPostPrefix() []string { b.mu.Lock() defer b.mu.Unlock() var filenames []string for filename := range b.filenamesWithPostPrefix { filenames = append(filenames, filename) } sort.Strings(filenames) return filenames } func (b *BuildState) Incr() int { return int(atomic.AddUint64(&b.counter, uint64(1))) } hugo-0.131.0/deps/deps_test.go000066400000000000000000000015441465312036400161020ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. package deps_test import ( "testing" qt "github.com/frankban/quicktest" "github.com/gohugoio/hugo/deps" ) func TestBuildFlags(t *testing.T) { c := qt.New(t) var bf deps.BuildState bf.Incr() bf.Incr() bf.Incr() c.Assert(bf.Incr(), qt.Equals, 4) } hugo-0.131.0/docs/000077500000000000000000000000001465312036400135525ustar00rootroot00000000000000hugo-0.131.0/docs/.cspell.json000066400000000000000000000073161465312036400160140ustar00rootroot00000000000000{ "version": "0.2", "allowCompoundWords": true, "files": [ "**/*.md" ], "flagWords": [ "alot", "hte", "langauge", "reccommend", "seperate", "teh" ], "ignorePaths": [ "**/emojis.md", "**/commands/*", "**/showcase/*", "**/tools/*" ], "ignoreRegExpList": [ "# cspell: ignore fenced code blocks", "^(\\s*`{3,}).*[\\s\\S]*?^\\1$", "# cspell: ignore words joined with dot", "\\w+\\.\\w+", "# cspell: ignore strings within backticks", "`.+`", "# cspell: ignore strings within double quotes", "\".+\"", "# cspell: ignore strings within brackets", "\\[.+\\]", "# cspell: ignore strings within parentheses", "\\(.+\\)", "# cspell: ignore words that begin with a slash", "/\\w+", "# cspell: ignore everything within action delimiters", "\\{\\{.+\\}\\}", "# cspell: ignore everything after a right arrow", "\\s+→\\s+.+" ], "language": "en", "words": [ "composability", "configurators", "defang", "deindent", "downscale", "downscaling", "exif", "geolocalized", "grayscale", "marshal", "marshaling", "multihost", "multiplatfom", "performantly", "preconfigured", "prerendering", "redirection", "redirections", "subexpression", "suppressible", "templating", "transpile", "unmarshal", "unmarshaling", "unmarshals", "# ----------------------------------------------------------------------", "# cspell: ignore hugo terminology", "# ----------------------------------------------------------------------", "attrlink", "canonify", "codeowners", "eturl", "getenv", "gohugo", "gohugoio", "keyvals", "leftdelim", "linkify", "numworkermultiplier", "rightdelim", "shortcode", "stringifier", "struct", "toclevels", "zgotmplz", "# ----------------------------------------------------------------------", "# cspell: ignore foreign language words", "# ----------------------------------------------------------------------", "bezpieczeństwo", "buch", "descripción", "dokumentation", "erklärungen", "libros", "mercredi", "miesiąc", "miesiąc", "miesiąca", "miesiące", "miesięcy", "misérables", "mittwoch", "muchos", "novembre", "otro", "pocos", "produkte", "projekt", "prywatność", "referenz", "régime", "# ----------------------------------------------------------------------", "# cspell: ignore names", "# ----------------------------------------------------------------------", "Atishay", "Cosette", "Eliott", "Furet", "Gregor", "Jaco", "Lanczos", "Ninke", "Noll", "Pastorius", "Samsa", "Stucki", "Thénardier", "# ----------------------------------------------------------------------", "# cspell: ignore operating systems and software packages", "# ----------------------------------------------------------------------", "asciidoctor", "brotli", "cifs", "corejs", "disqus", "docutils", "dpkg", "doas", "eopkg", "gitee", "goldmark", "katex", "kubuntu", "lubuntu", "mathjax", "nosql", "pandoc", "pkgin", "rclone", "xubuntu", "# ----------------------------------------------------------------------", "# cspell: ignore miscellaneous", "# ----------------------------------------------------------------------", "achristie", "ddmaurier", "dring", "inor", "jausten", "jdoe", "jsmith", "milli", "rgba", "rsmith", "tdewolff", "tjones", "wcag", "xfeff" ] } hugo-0.131.0/docs/.editorconfig000066400000000000000000000004131465312036400162250ustar00rootroot00000000000000# https://editorconfig.org root = true [*] charset = utf-8 end_of_line = lf indent_size = 2 indent_style = space trim_trailing_whitespace = true [*.go] indent_size = 8 indent_style = tab [*.js] insert_final_newline = true [*.md] trim_trailing_whitespace = false hugo-0.131.0/docs/.github/000077500000000000000000000000001465312036400151125ustar00rootroot00000000000000hugo-0.131.0/docs/.github/SUPPORT.md000066400000000000000000000003121465312036400166040ustar00rootroot00000000000000### Asking support questions We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. Please don't use the GitHub issue tracker to ask questions. hugo-0.131.0/docs/.github/stale.yml000066400000000000000000000015761465312036400167560ustar00rootroot00000000000000# Number of days of inactivity before an issue becomes stale daysUntilStale: 120 # Number of days of inactivity before a stale issue is closed daysUntilClose: 30 # Issues with these labels will never be considered stale exemptLabels: - Keep - Security - UndocumentedFeature # Label to use when marking an issue as stale staleLabel: Stale # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue has been automatically marked as stale because it has not had recent activity. The resources of the Hugo team are limited, and so we are asking for your help. If you still think this is important, please tell us why. This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions. # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false hugo-0.131.0/docs/.github/workflows/000077500000000000000000000000001465312036400171475ustar00rootroot00000000000000hugo-0.131.0/docs/.github/workflows/codeql-analysis.yml000066400000000000000000000007571465312036400227730ustar00rootroot00000000000000name: "CodeQL" on: schedule: - cron: "0 0 1 * *" jobs: analyze: name: Analyze runs-on: ubuntu-latest permissions: actions: read contents: read security-events: write steps: - name: Checkout repository uses: actions/checkout@v4 - name: Initialize CodeQL uses: github/codeql-action/init@v3 with: languages: "javascript" - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 hugo-0.131.0/docs/.github/workflows/spellcheck.yml000066400000000000000000000006671465312036400220200ustar00rootroot00000000000000name: "Check spelling" on: push: pull_request: branches-ignore: - "dependabot/**" permissions: contents: read jobs: spellcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: streetsidesoftware/cspell-action@v5 with: check_dot_files: false files: content/**/*.md incremental_files_only: true inline: warning strict: false hugo-0.131.0/docs/.github/workflows/super-linter.yml000066400000000000000000000021721465312036400223250ustar00rootroot00000000000000name: Super Linter on: workflow_dispatch: permissions: contents: read # to fetch code (actions/checkout) jobs: build: permissions: contents: read # to fetch code (actions/checkout) statuses: write # to mark status of each linter run (github/super-linter/slim) name: Lint Code Base runs-on: ubuntu-latest if: ${{ github.actor != 'dependabot[bot]' }} steps: - name: Checkout Code uses: actions/checkout@v4 - name: Lint Code Base uses: super-linter/super-linter/slim@v6 env: DEFAULT_BRANCH: master GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} IGNORE_GITIGNORED_FILES: true LINTER_RULES_PATH: / LOG_LEVEL: NOTICE MARKDOWN_CONFIG_FILE: .markdownlint.yaml SUPPRESS_POSSUM: true VALIDATE_CSS: false VALIDATE_EDITORCONFIG: false VALIDATE_GITLEAKS: false VALIDATE_HTML: false VALIDATE_JAVASCRIPT_STANDARD: false VALIDATE_JSCPD: false VALIDATE_NATURAL_LANGUAGE: false VALIDATE_SHELL_SHFMT: false VALIDATE_XML: false hugo-0.131.0/docs/.gitignore000066400000000000000000000001601465312036400155370ustar00rootroot00000000000000/.idea /.vscode /public /dist node_modules nohup.out .DS_Store trace.out .hugo_build.lock resources/_gen/images/hugo-0.131.0/docs/.markdownlint.yaml000066400000000000000000000005521465312036400172270ustar00rootroot00000000000000# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md MD001: false MD002: false MD003: false MD004: false MD007: false MD012: maximum: 2 MD013: false MD014: false MD022: false MD024: false MD031: false MD032: false MD033: false MD034: false MD036: false MD037: false MD038: false MD041: false MD046: false MD049: false MD050: false MD053: false hugo-0.131.0/docs/.markdownlintignore000066400000000000000000000001201465312036400174610ustar00rootroot00000000000000**/commands/** **/functions/** **/news/** **/showcase/** **/zh/** **/license.md hugo-0.131.0/docs/.textlintignore000066400000000000000000000000421465312036400166260ustar00rootroot00000000000000**/news/** **/showcase/** **/zh/**hugo-0.131.0/docs/.vscode/000077500000000000000000000000001465312036400151135ustar00rootroot00000000000000hugo-0.131.0/docs/.vscode/extensions.json000066400000000000000000000002221465312036400202010ustar00rootroot00000000000000{ "recommendations": [ "DavidAnson.vscode-markdownlint", "EditorConfig.EditorConfig", "streetsidesoftware.code-spell-checker" ] } hugo-0.131.0/docs/LICENSE.md000066400000000000000000000260741465312036400151670ustar00rootroot00000000000000Apache 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 [yyyy] [name of copyright owner] 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. hugo-0.131.0/docs/README.md000066400000000000000000000017061465312036400150350ustar00rootroot00000000000000Hugo A fast and flexible static site generator built with love by [bep], [spf13], and [friends] in [Go]. --- [![Netlify Status](https://api.netlify.com/api/v1/badges/e0dbbfc7-34f1-4393-a679-c16e80162705/deploy-status)](https://app.netlify.com/sites/gohugoio/deploys) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://gohugo.io/contribute/documentation/) This is the repository for the [Hugo](https://github.com/gohugoio/hugo) documentation site. Please see the [contributing] section for guidelines, examples, and process. [bep]: https://github.com/bep [spf13]: https://github.com/spf13 [friends]: https://github.com/gohugoio/hugo/graphs/contributors [go]: https://go.dev/ [contributing]: https://gohugo.io/contribute/documentation hugo-0.131.0/docs/_vendor/000077500000000000000000000000001465312036400152065ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/000077500000000000000000000000001465312036400172455ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/000077500000000000000000000000001465312036400210655ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/000077500000000000000000000000001465312036400236705ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/000077500000000000000000000000001465312036400251725ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/000077500000000000000000000000001465312036400257625ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_algolia.css000066400000000000000000000454051465312036400302530ustar00rootroot00000000000000.searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;box-sizing:border-box;visibility:visible!important}.searchbox .algolia-autocomplete{display:block;width:100%;height:100%}.searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative}.searchbox__input{display:inline-block;box-sizing:border-box;transition:box-shadow .4s ease,background .4s ease;border:0;border-radius:16px;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none}.searchbox__input:hover{box-shadow:inset 0 0 0 1px #b3b3b3}.searchbox__input:active,.searchbox__input:focus{outline:0;box-shadow:inset 0 0 0 1px #aaa;background:#fff}.searchbox__input::-webkit-input-placeholder{color:#aaa}.searchbox__input:-ms-input-placeholder{color:#aaa}.searchbox__input::-ms-input-placeholder{color:#aaa}.searchbox__input::placeholder{color:#aaa}.searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69,142,225,0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0}.searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""}.searchbox__submit:active,.searchbox__submit:hover{cursor:pointer}.searchbox__submit:focus{outline:0}.searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96}.searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0,0,0,.5)}.searchbox__reset.hide{display:none}.searchbox__reset:focus{outline:0}.searchbox__reset svg{display:block;margin:4px;width:8px;height:8px}.searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s}@-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}@keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important}.algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important}.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px}.algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;box-shadow:0 1px 0 0 rgba(0,0,0,.2),0 2px 3px 0 rgba(0,0,0,.1)}.algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px}.algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer}.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69,142,225,.05)}.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px}.algolia-autocomplete .ds-dropdown-menu *{box-sizing:border-box}.algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden}.algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143,187,237,.1);padding:.1em .05em}.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;box-shadow:inset 0 -2px 0 0 rgba(69,142,225,.8);color:inherit}.algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer}.algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px}.algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d}.algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0}.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none}.algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700}.algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d}.algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em}.algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace}.algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none}.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block}@media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}}@media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}}.algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8}.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;box-shadow:none}.algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0}.algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block} /*# sourceMappingURL=docsearch.min.css.map */ a.algolia-docsearch-suggestion { text-decoration: none !important; } .algolia-docsearch-suggestion--category-header { background: #0594cb; padding-left: .25rem !important; color: white !important; border-radius: 3px; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_animation.css000066400000000000000000000004311465312036400306100ustar00rootroot00000000000000.animated { animation-duration: .5s; animation-fill-mode: forwards; animation-timing-function: ease-in-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fadeIn { animation-name: fadeIn; } .animated-delay-1 { animation-delay: 0.5s; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_carousel.css000066400000000000000000000011651465312036400304530ustar00rootroot00000000000000/* These styles enhance the home page carousel, located here: themes/gohugoioTheme/layouts/partials/home-page-sections/showcase.html */ .overflow-x-scroll{ -webkit-overflow-scrolling: touch; } .row { transition: 450ms transform; font-size: 0; } .tile { transition: 450ms all; } .details { background: -webkit-gradient(linear, left bottom, left top, from(rgba(0,0,0,0.9)), to(rgba(0,0,0,0))); background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0) 100%); transition: 450ms opacity; } .tile:hover .details { opacity: 1; } .row:hover .tile { opacity: 0.3; } .row:hover .tile:hover { opacity: 1; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_chroma.css000066400000000000000000000076221465312036400301130ustar00rootroot00000000000000/* Background */ .chroma { background-color: #ffffff } /* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } /* Keyword */ .chroma .k { font-weight: bold } /* KeywordConstant */ .chroma .kc { font-weight: bold } /* KeywordDeclaration */ .chroma .kd { font-weight: bold } /* KeywordNamespace */ .chroma .kn { font-weight: bold } /* KeywordPseudo */ .chroma .kp { font-weight: bold } /* KeywordReserved */ .chroma .kr { font-weight: bold } /* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } /* NameAttribute */ .chroma .na { color: #008080 } /* NameBuiltin */ .chroma .nb { color: #999999 } /* NameClass */ .chroma .nc { color: #445588; font-weight: bold } /* NameConstant */ .chroma .no { color: #008080 } /* NameEntity */ .chroma .ni { color: #800080 } /* NameException */ .chroma .ne { color: #990000; font-weight: bold } /* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } /* NameNamespace */ .chroma .nn { color: #555555 } /* NameTag */ .chroma .nt { color: #000080 } /* NameVariable */ .chroma .nv { color: #008080 } /* LiteralString */ .chroma .s { color: #bb8844 } /* LiteralStringAffix */ .chroma .sa { color: #bb8844 } /* LiteralStringBacktick */ .chroma .sb { color: #bb8844 } /* LiteralStringChar */ .chroma .sc { color: #bb8844 } /* LiteralStringDelimiter */ .chroma .dl { color: #bb8844 } /* LiteralStringDoc */ .chroma .sd { color: #bb8844 } /* LiteralStringDouble */ .chroma .s2 { color: #bb8844 } /* LiteralStringEscape */ .chroma .se { color: #bb8844 } /* LiteralStringHeredoc */ .chroma .sh { color: #bb8844 } /* LiteralStringInterpol */ .chroma .si { color: #bb8844 } /* LiteralStringOther */ .chroma .sx { color: #bb8844 } /* LiteralStringRegex */ .chroma .sr { color: #808000 } /* LiteralStringSingle */ .chroma .s1 { color: #bb8844 } /* LiteralStringSymbol */ .chroma .ss { color: #bb8844 } /* LiteralNumber */ .chroma .m { color: #009999 } /* LiteralNumberBin */ .chroma .mb { color: #009999 } /* LiteralNumberFloat */ .chroma .mf { color: #009999 } /* LiteralNumberHex */ .chroma .mh { color: #009999 } /* LiteralNumberInteger */ .chroma .mi { color: #009999 } /* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } /* LiteralNumberOct */ .chroma .mo { color: #009999 } /* Operator */ .chroma .o { font-weight: bold } /* OperatorWord */ .chroma .ow { font-weight: bold } /* Comment */ .chroma .c { color: #999988; font-style: italic } /* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } /* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } /* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } /* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } /* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold } /* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold } /* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } /* GenericEmph */ .chroma .ge { font-style: italic } /* GenericError */ .chroma .gr { color: #aa0000 } /* GenericHeading */ .chroma .gh { color: #999999 } /* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } /* GenericOutput */ .chroma .go { color: #888888 } /* GenericPrompt */ .chroma .gp { color: #555555 } /* GenericStrong */ .chroma .gs { font-weight: bold } /* GenericSubheading */ .chroma .gu { color: #aaaaaa } /* GenericTraceback */ .chroma .gt { color: #aa0000 } /* TextWhitespace */ .chroma .w { color: #bbbbbb } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_code.css000066400000000000000000000027221465312036400275500ustar00rootroot00000000000000.chroma .lntable pre { padding: 0; margin: 0; border: 0; } .chroma .lntable pre code { padding: 0; margin: 0; } code { padding: 0.2em; margin: 0; font-size: 85%; background-color: rgba(27,31,35,0.05); border-radius: 3px; } pre code { display: block; padding: 1.5em 1.5em; font-size: .875rem; line-height: 2; overflow-x: auto; } pre { background-color: #fff; color: #333; white-space: pre; hyphens: none; position: relative; border-width: 1px; border-color: #ccc; border-style: solid; } /* The Pygments highlighter comes with its own styles. */ .highlight pre { background-color: inherit; color: inherit; padding: 0.5em; font-size: .875rem; } /*We are adding the copy button content here so we can change it with javascript. See the "Clipboard scripts"*/ .copy:after { content: "Copy" } .copied:after { content: "Copied" } @media (--breakpoint-large) { .full-width { /*width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;*/ /*width: 60vw;*/ /*position: relative; left: 50%; right: 50%;*/ /*margin-left: -30vw;*/ margin-right: -30vw; max-width: 100vw; } } .code-block .line-numbers-rows { background: #2f3a46; border: none; bottom: -50px; color: #98a4b3; left: -178px; padding: 50px 0; top: -50px; width: 138px } .code-block .line-numbers-rows>span:before { color: inherit; padding-right: 30px } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_color-scheme.css000066400000000000000000000035731465312036400312230ustar00rootroot00000000000000.primary-color {color: var(--primary-color)} .bg-primary-color {background-color: var(--primary-color)} .hover-bg-primary-color:hover {background-color: var(--primary-color)} .primary-color-dark {color: var(--primary-color-dark)} .bg-primary-color-dark {background-color: var(--primary-color-dark)} .hover-bg-primary-color-dark:hover {background-color: var(--primary-color-dark)} .primary-color-light {color: var(--primary-color-light)} .bg-primary-color-light {background-color: var(--primary-color-light)} .hover-bg-primary-color-light:hover {background-color: var(--primary-color-light)} .accent-color {color: var(--accent-color)} .bg-accent-color {background-color: var(--accent-color)} .hover-bg-accent-color:hover {background-color: var(--accent-color)} .accent-color-light {color: var(--accent-color-light)} .hover-accent-color-light:hover {color: var(--accent-color-light)} .bg-accent-color-light {background-color: var(--accent-color-light)} .hover-bg-accent-color-light:hover {background-color: var(--accent-color-light)} .accent-color-dark {color: var(--accent-color-dark)} .bg-accent-color-dark {background-color: var(--accent-color-dark)} .hover-bg-accent-color-dark:hover {background-color: var(--accent-color-dark)} .text-color-primary {color: var(--text-color-primary)} .text-on-primary-color {color: var(--text-on-primary-color)} .text-color-secondary {color: var(--text-color-secondary)} .text-color-disabled {color: var(--text-color-disabled)} .divider-color {color: var(--divider-color)} .warn-color {color: var(--warn-color)} .nested-links a { color: var(--primary-color); text-decoration: none; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_columns.css000066400000000000000000000004471465312036400303200ustar00rootroot00000000000000.column-count-2 {column-count: 1} .column-gap-1 {column-gap: 0} .break-inside-avoid {break-inside: auto} @media (--breakpoint-large) { .column-count-3-l {column-count: 3} .column-count-2-l {column-count: 2} .column-gap-1-l {column-gap: 1} .break-inside-avoid-l {break-inside: avoid} } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_content-tables.css000066400000000000000000000011231465312036400315520ustar00rootroot00000000000000.prose table { width: 100%; margin-bottom: 3em; border-collapse: collapse; border-spacing: 0; font-size: 1em; border: 1px solid var(--light-gray); & th { background-color: var(--primary-color); border-bottom: 1px solid var(--primary-color); color: white; font-weight: 400; text-align: left; padding: .375em .5em; } & td, & tc { padding: .75em .5em; text-align: left; border-right: 1px solid var(--light-gray); } } .prose table tr:nth-child(even) { background-color: var(--light-gray); } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_content.css000066400000000000000000000013171465312036400303070ustar00rootroot00000000000000.prose ul, .prose ol { margin-bottom: 2em; } .prose ul li, .prose ol li { margin-bottom: .5em; } .prose li:hover { background-color: var(--light-gray) } .prose ::selection { background: var(--primary-color); /* WebKit/Blink Browsers */ color: white; } .prose-glossary h3 { margin-top: 0; font-size: 1.125rem; } .prose-glossary h3:first-of-type { margin-top: 3em; } .prose-glossary h3 ~ p { margin: 0.5em 0 2em 0; } body { line-height: 1.45; } p {margin-bottom: 1.3em;} h1, h2, h3, h4 { margin: 1.414em 0 0.5em; line-height: 1.2; } h1 { margin-top: 0; font-size: 2.441em; } h2 {font-size: 1.953em;} h3 {font-size: 1.563em;} h4 {font-size: 1.25em;} small, .font_small {font-size: 0.8em;} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_definition-lists.css000066400000000000000000000001441465312036400321160ustar00rootroot00000000000000 dl dt { font-weight: bold; font-size: 1.125rem; } dd { margin: .5em 0 2em 0; padding: 0; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_documentation-styles.css000066400000000000000000000017561465312036400330360ustar00rootroot00000000000000.note, .warning { border-left-width: 4px; border-left-style: solid; position: relative; border-color: var(--primary-color); display: block; } .note #exclamation-icon, .warning #exclamation-icon { fill: var(--primary-color); position: absolute; top: 35%; left: -12px; /*background-color: white;*/ } .admonition-content { display: block; margin: 0px; padding: .125em 1em; /*margin-left: 1em;*/ margin-top: 2em; margin-bottom: 2em; overflow-x: auto; /*font-size: .9375em;*/ background-color: var(--black-05); } .hide-child-menu .child-menu { display: none; } .hide-child-menu:hover .child-menu, .hide-child-menu:focus .child-menu, .hide-child-menu:active .child-menu { display: block; } /*documentation-copy headings exaggerate spacing and size to chunk content */ .documentation-copy h2 { margin-top: 3em; &.minor { font-size: inherit; margin-top: inherit; border-bottom: none; } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_fluid-type.css000066400000000000000000000002551465312036400307170ustar00rootroot00000000000000.f2-fluid { font-size: 2.25rem; } @media (--breakpoint-large) { .f2-fluid { font-size: 1.25rem; font-size: calc(0.875rem + 0.5 * ((100vw - 20rem) / 60)); } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_font-family.css000066400000000000000000000024071465312036400310630ustar00rootroot00000000000000/* From https://www.cssfontstack.com */ code, .code, pre code, .highlight pre { font-family: 'inconsolata',Menlo,Monaco,'Courier New',monospace; } .sans-serif { font-family: 'Muli', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif; } .serif { font-family: Palatino,"Palatino Linotype","Palatino LT STD","Book Antiqua",Georgia,serif; } /* Monospaced Typefaces (for code) */ .courier { font-family: 'Courier Next', courier, monospace; } /* Sans-Serif Typefaces */ .helvetica { font-family: 'helvetica neue', helvetica, sans-serif; } .avenir { font-family: 'avenir next', avenir, sans-serif; } /* Serif Typefaces */ .athelas { font-family: athelas, georgia, serif; } .georgia { font-family: georgia, serif; } .times { font-family: times, serif; } .bodoni { font-family: "Bodoni MT", serif; } .calisto { font-family: "Calisto MT", serif; } .garamond { font-family: garamond, serif; } .baskerville { font-family: baskerville, serif; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_header-link.css000066400000000000000000000005051465312036400310160ustar00rootroot00000000000000.header-link:after { position: relative; left: 0.5em; opacity: 0; font-size: 0.8em; -moz-transition: opacity 0.2s ease-in-out 0.1s; -ms-transition: opacity 0.2s ease-in-out 0.1s; } h2:hover .header-link, h3:hover .header-link, h4:hover .header-link, h5:hover .header-link, h6:hover .header-link { opacity: 1; } _hugo-internal-template-styling.css000066400000000000000000000017051465312036400346330ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/* pagination.html: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */ .pagination { margin: 3rem 0; } .pagination li { display: inline-block; margin-right: .375rem; font-size: .875rem; margin-bottom: 2.5em; } .pagination li a { padding: .5rem .625rem; background-color: white; color: #333; border: 1px solid #ddd; border-radius: 3px; text-decoration: none; } .pagination li.disabled { display: none; } .pagination li.active a:link, .pagination li.active a:active, .pagination li.active a:visited { background-color: #ddd; } /* Hides non-meaningful TOC items*/ #TableOfContents ul li ul li ul li{ display: none; } #TableOfContents ul li { color: black; display: block; margin-bottom: .375em; line-height: 1.375; } #TableOfContents ul li a{ width: 100%; padding: .25em .375em; margin-left: -.375em; } #TableOfContents ul li a:hover { background-color: #999; color: white; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_no-js.css000066400000000000000000000001461465312036400276620ustar00rootroot00000000000000.no-js .needs-js { opacity: 0 } .js .needs-js { opacity: 1; transition: opacity .15s ease-in; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_print.css000066400000000000000000000001301465312036400277610ustar00rootroot00000000000000@media print { #page-footer, body > footer, body > nav { display: none; } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_right-sidebar.css000066400000000000000000000004421465312036400313570ustar00rootroot00000000000000#right-sidebar { scrollbar-width: none; /* hide scrollbar: Firefox */ -ms-overflow-style: none; /* hide scrollbar: Internet Explorer 10+ */ height: calc(100vh - 9rem); overflow-y: auto; } #right-sidebar::-webkit-scrollbar { /* hide scrollbar: WebKit */ width: 0; height: 0; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_shame.css000066400000000000000000000004641465312036400277340ustar00rootroot00000000000000/* Make h6 elements behave like dt elements. Initially implemented to support linkable glossary entries. Yes, it's a hack. That's why it's in the shame file. */ h6 { margin-top: 0; margin-bottom: 0; font-size: 1.125rem; } h6:first-of-type { margin-top: 3em; } h6 ~ p { margin: 0.5em 0 2em 0; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_social-icons.css000066400000000000000000000046011465312036400312170ustar00rootroot00000000000000.facebook, .twitter, .instagram, .youtube { fill: #bababa; } .facebook:hover { fill: #3b5998; } .twitter { fill: #55acee; } .twitter:hover { fill: #bababa; } .instagram:hover { fill: #e95950; } .youtube:hover { fill: #bb0000; } .mstdn { display: inline-block; background-color: #282c37; color: #d9e1e8; text-decoration: none; padding: 4px 10px 4px 30px; border-radius: 4px; font-size: 16px; background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2261.076954mm%22%20height%3D%2265.47831mm%22%20viewBox%3D%220%200%20216.4144%20232.00976%22%3E%3Cpath%20d%3D%22M211.80734%20139.0875c-3.18125%2016.36625-28.4925%2034.2775-57.5625%2037.74875-15.15875%201.80875-30.08375%203.47125-45.99875%202.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125%200%202.53375.15625%204.94625.46875%207.2025%203.38375%2025.68625%2025.47%2027.225%2046.39125%2027.9425%2021.11625.7225%2039.91875-5.20625%2039.91875-5.20625l.8675%2019.09s-14.77%207.93125-41.08125%209.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234%20213.82%201.40609%20165.31125.20859%20116.09125c-.365-14.61375-.14-28.39375-.14-39.91875%200-50.33%2032.97625-65.0825%2032.97625-65.0825C49.67234%203.45375%2078.20359.2425%20107.86484%200h.72875c29.66125.2425%2058.21125%203.45375%2074.8375%2011.09%200%200%2032.975%2014.7525%2032.975%2065.0825%200%200%20.41375%2037.13375-4.59875%2062.915%22%20fill%3D%22%233088d4%22%2F%3E%3Cpath%20d%3D%22M177.50984%2080.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025%200-17.4175%207.5075-17.4175%2022.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375%200-15.74%206.32875-15.74%2018.7975v59.15H38.90484V80.077c0-12.455%203.17125-22.3525%209.54125-29.675%206.56875-7.3225%2015.17125-11.07625%2025.85-11.07625%2012.355%200%2021.71125%204.74875%2027.8975%2014.2475l6.01375%2010.08125%206.015-10.08125c6.185-9.49875%2015.54125-14.2475%2027.8975-14.2475%2010.6775%200%2019.28%203.75375%2025.85%2011.07625%206.36875%207.3225%209.54%2017.22%209.54%2029.675%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E"); background-size: 16px; background-repeat: no-repeat; background-position: top 50% left 8px; transition: all 0.5s; } .mstdn:hover { background-color: #484c56; } .mstdn > span { color: #9baec8; font-size: 12px; padding-left: 3px; } .mstdn > span:before { content: "@"; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_stickyheader.css000066400000000000000000000003221465312036400313070ustar00rootroot00000000000000 @media (min-width: 75em) { [data-scrolldir="down"] .sticky { position: fixed; top:100px; right:0; } [data-scrolldir="up"] .sticky { position: fixed; top:100px; right:0; } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_svg.css000066400000000000000000000000461465312036400274320ustar00rootroot00000000000000.fill-current { fill: currentColor; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_tabs.css000066400000000000000000000011721465312036400275650ustar00rootroot00000000000000.tab-button{ margin-bottom:1px; position: relative; z-index: 1; color:#333; border-color:#ccc; outline: none; background-color:white; } .tab-pane code{ background:#f1f2f2; border-radius:0; } .tab-pane .chroma{ background:none; padding:0; } .tab-button.active{ border-bottom-color:#f1f2f2; background-color: #f1f2f2; } .tab-content .tab-pane{ display: none; } .tab-content .tab-pane.active{ display: block; } /* Treatment of copy buttons inside a tab module */ .tab-content .copy, .tab-content .copied{ display: none; } .tab-content .tab-pane.active + .copy, .tab-content .tab-pane.active + .copied{ display: block; }hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_tachyons.css000066400000000000000000000057341465312036400304740ustar00rootroot00000000000000/*! TACHYONS v4.7.0 | http://tachyons.io */ /* * NOTE: The Tachyons folder is for backup/reference only. This file references the module * ________ ______ * ___ __/_____ _________ /______ ______________________ * __ / _ __ `/ ___/_ __ \_ / / / __ \_ __ \_ ___/ * _ / / /_/ // /__ _ / / / /_/ // /_/ / / / /(__ ) * /_/ \__,_/ \___/ /_/ /_/_\__, / \____//_/ /_//____/ * /____/ * * TABLE OF CONTENTS * * 1. External Library Includes * - Normalize.css | http://normalize.css.github.io * 2. Tachyons Modules * 3. Variables * - Media Queries * - Colors * 4. Debugging * - Debug all * - Debug children * */ /* External Library Includes */ @import 'tachyons/src/_normalize'; /* Modules */ @import 'tachyons/src/_box-sizing'; /*@import 'tachyons/src/_aspect-ratios';*/ @import 'tachyons/src/_images'; @import 'tachyons/src/_background-size'; @import 'tachyons/src/_background-position'; /*@import 'tachyons/src/_outlines';*/ @import 'tachyons/src/_borders'; @import 'tachyons/src/_border-colors'; @import 'tachyons/src/_border-radius'; @import 'tachyons/src/_border-style'; @import 'tachyons/src/_border-widths'; @import 'tachyons/src/_box-shadow'; /*@import 'tachyons/src/_code';*/ @import 'tachyons/src/_coordinates'; @import 'tachyons/src/_clears'; @import 'tachyons/src/_display'; @import 'tachyons/src/_flexbox'; @import 'tachyons/src/_floats'; /*@import 'tachyons/src/_font-family';*/ @import 'tachyons/src/_font-style'; @import 'tachyons/src/_font-weight'; @import 'tachyons/src/_forms'; @import 'tachyons/src/_heights'; @import 'tachyons/src/_letter-spacing'; @import 'tachyons/src/_line-height'; @import 'tachyons/src/_links'; @import 'tachyons/src/_lists'; @import 'tachyons/src/_max-widths'; @import 'tachyons/src/_widths'; @import 'tachyons/src/_overflow'; @import 'tachyons/src/_position'; @import 'tachyons/src/_opacity'; /*@import 'tachyons/src/_rotations';*/ @import 'tachyons/src/_skins'; @import 'tachyons/src/_skins-pseudo'; @import 'tachyons/src/_spacing'; @import 'tachyons/src/_negative-margins'; @import 'tachyons/src/_tables'; @import 'tachyons/src/_text-decoration'; @import 'tachyons/src/_text-align'; @import 'tachyons/src/_text-transform'; @import 'tachyons/src/_type-scale'; @import 'tachyons/src/_typography'; @import 'tachyons/src/_utilities'; @import 'tachyons/src/_visibility'; @import 'tachyons/src/_white-space'; @import 'tachyons/src/_vertical-align'; @import 'tachyons/src/_hovers'; @import 'tachyons/src/_z-index'; @import 'tachyons/src/_nested'; /*@import 'tachyons/src/_styles';*/ /* Variables */ /* Importing here will allow you to override any variables in the modules */ @import 'tachyons/src/_colors'; @import 'tachyons/src/_media-queries'; /* Debugging */ /*@import 'tachyons/src/_debug-children'; @import 'tachyons/src/_debug-grid';*/ /* Uncomment out the line below to help debug layout issues */ /* @import 'tachyons/src/_debug'; */ hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_variables.css000066400000000000000000000006741465312036400306120ustar00rootroot00000000000000:root { --primary-color: #0594CB; --primary-color-dark: #0A1922; --primary-color-light: #f9f9f9; --accent-color: #EBB951; --accent-color-light: #FF4088; --accent-color-dark: #33ba91; --text-color-primary: #373737; --text-on-primary-color: #fff; --text-color-secondary: #ccc; --text-color-disabled: #F7f7f7; --divider-color: #f6f6f6; --warn-color: red; --blue: var(--primary-color); } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/main.css000066400000000000000000000014441465312036400274230ustar00rootroot00000000000000/*Base Styles*/ @import '_tachyons'; /* purgecss start ignore */ @import '_header-link'; @import '_animation'; @import '_documentation-styles'; @import 'docsearch.js/dist/cdn/docsearch.min'; @import '_carousel'; @import '_code'; @import '_tabs'; @import '_color-scheme'; @import '_columns'; @import '_content'; @import '_content-tables'; @import '_definition-lists'; @import '_fluid-type'; @import '_font-family'; @import '_hugo-internal-template-styling'; @import '_no-js'; @import '_social-icons'; @import '_stickyheader'; @import '_right-sidebar'; @import '_svg'; @import '_chroma'; @import '_variables'; @import '_print'; @import '_shame'; .nested-blockquote blockquote { border-left: 4px solid var(--primary-color); padding-left: 1em; } .mw-90 { max-width:90%; } /* purgecss end ignore */ hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/000077500000000000000000000000001465312036400264375ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/000077500000000000000000000000001465312036400303255ustar00rootroot00000000000000bep-consulting.svg000066400000000000000000000224601465312036400337240ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/butter-dark.svg000066400000000000000000000075041465312036400333000ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/butter-light.svg000066400000000000000000000075011465312036400334630ustar00rootroot00000000000000cloudcannon-blue.svg000066400000000000000000000314221465312036400342210ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors cloudcannon-white.svg000066400000000000000000000314141465312036400344130ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/esolia-logo.svg000066400000000000000000000141121465312036400332570ustar00rootroot00000000000000 graitykit-dark.svg000066400000000000000000000110551465312036400337170ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/linode-logo.svg000066400000000000000000000052561465312036400332660ustar00rootroot00000000000000 linode-logo_standard_light_medium.png000066400000000000000000000273041465312036400376010ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsorsPNG  IHDR>jvPLTE)";&%! =$!8&?"BB  HZ   Wf/] D<%!!"HcX}cENI>"B RdX'!!7'MZR#.$ CF'""0%  "4&?!=#!A"3& C!:' !+""-#:' sG{AtRNS@ p`0P=X@0 `pPа[q.iγV΀!38r*̀Uj>`MQfcoXOg&区6r4V5 6&FM0vNg{r5۳g~}{5 șP<3ֵr 4E_%,ȇ̀0 4/|?x͟'Af/m< /4 XA}!E_ t/E_pE_pL| 6몺F;S T_g& TY9O3 0+M?W[FpzדUzJZ߾G^4:i#zz%LKSz:O1 IdzmǵHl̘Tn#XV/& *^u/FZ:ª:g ڙ.:,{-Ovjj埛&qF*0_ &UU5<A&@?W* ),F0 1p+O1?DƌC7qܕ?p*FNkN*0~ - F08c#_G+-X p4 .::{O˿AK*mχ&@H˿F/ uzo tϴ8_eGz',%@v%]k{l D,~hOt/ PG&4UÀ #<3 P?"6$rP7 ?;H΄ 80uU3UzRl S/<_ p4@II~@ 0jRp?4^dg]8@)M2U3* q`h3Gt?FL u8À\ Pq` q~6hkOY yuUq `S,~UUD,hDUq`S,~:ȏϛ7~ߒ-޺]MͥekKV~}Ȳ[H'_w nH,XZUuxP&@~nߏ [_8eFW?wOo.Qܱ q= Asj 8lU)o҂?\A=&ɐ$e{ViѤ a- &n[y *4=.H%  lxL|R  V9kY0 pvp.HhJ`S h@(@MI `ƤH8QHI{ Pi/`@$w4v @ܱi@$WHH˂I{% 0k('$ 0oE h@8P"CH]р=\ k]8 ` HNU|@pSǁ}$Ha/|_J&z;=B, r9y8GB4p^d܀8ߔ m}f*g<&Mn6Iӱ_W/ H&޵KL( 2L(7#jz,m WSAټXIk0cX0~_K|ÅHqP`g \dǁ?QD C} $ ~arZ~Mݨ3njv.7 `. X(qФf Jç_@f҂ piK(Mos&-9ib?'<`Yx0 m,'o'Uٮh;Tiހ^cHj䣩IPAZvldmݩJ*$̐I\4lN @ XPǁ'e}*"-N:"nY֕ ]ٰg:(f3@cDǁݴI4ֱrX$?2q~j$v}J[5A2qZ_ pevr%HN`>Y 5 ſ~V+AP ؼ`xt'5$H^Nw>9<6 ~i1`V$،|8^*m`Gו 5>Tj=>O{6>>~+hR?9$; P]]u/CBEHΠ13,wMhUy2'HI1痧s )@Nwl/|<O~n?ir0}z%P^tlbv܃JҎuF:iFL8N(>2:V^,@CgpG[*6ߡXEspI$Hΰ@f`\0Dc)NdnƤTFP_a ^ ʁ(j ^0Y[2ٔ8 2&7N0gwPaPbD16'|kP}#SP 'F %ST⛨͎PYPxcgP~0Is tijQ($LQET:c@0@0(bOe, x0` N( K88@:Wd g'읾@txp~ki' MP]~ RApe* ˁ+A.@=%8i*è@u3-χ*:Oi`$h V`" @D&cv,K*O{<%8`m Jb#7p͟9$_2?ib֡ 3Aiě@< jO E i=eb0,1 "C eƤ9$@/j;݃XH3(OU8@@9$@@O;AW'nT֕g $GpJ`_T_r QU`!OB ~ y@L̥yu=G85,OJ-5m tG.dٲ=<G@a~}Dv[%Z5׭uru,@LJ]yۓV#202b3TI%?Ю &?8p9 o87nI&")1B qޑF9|hQ%lz^XlhL|{ G -^O|6OxGќ„ 05Ga'!m ''-;@%S}|CY$K^xԀ9ה,@qRC7려 L Y?`53_iG^"G_v!k}& F*Zp66N~7O+%@E=5W4'Y#G.iթH%&}B x0BQ*@yž }'o"/)V*65.)SN'R  ˦8}-+/ݱmn§4PW9 GSC^wGGo*asV|M=Q?u/ʔa3Lls . nĽBai- 1ʎ4p`O7P \#q/[P @`}Lai 핞 -^UhAy#(g J' `(*ʞ YKQ4mpCX1+T\-#Wf @z P\4@IucLof$_JIDk罿~f|IL TP|.U<(fb+/+ͽ_OҀ'7ږShF`h,T $J ?j2;J@ YʸV`ԒӱHqBJK0?7#E`Zxpe_P Bٱ*Q^@ڡOiyzX} /9 t@ O*7[ @ c'~k@5MҀw b F*6Rv*= T54g{b<vRC@ bl,j .Y'@@4@䷀0 ( ^_ L!@>~w`a{&%=*:&@C) V7pFidta!?)L \Diu`hjP?2pi"@!gmv < Ow4pLC@Xc@g4`q.HN<4GK~ 5JqBӀoGmpC`+@2zE$싻 >  @e-.S׋&RS06=h'et~WYMO`[j ;[jz'=jOn!Gjy$ ϡq\eF4vmpClr`+p|EP@T:{ǎ/q7q+w{fKiwey5 `upذIaZ\; @F-@p3)a).D%AKu @s ׈b{4B*A8; [ gd} B+(\ e=|X0nnṋ`ƐR%BtVkRS=˕O_/F`KV~ 1{DQ(7' t^|@@-@Z\rhHxG@C []e@I ۃ8 DLp t]PC#S5gIƅ/ P-aSkk& 580S/&@—6&j8g!L-1) TBaC}#Yͅpɮa5*#V VtO! s$Xhmf#T%@Ko@ 0~|`hj)G1a@|X0nr lh%7z$0R( po1tX# pÉ0>,7`u"$_@zMYTOIdq _ٱm4enB<EHfm_ 4@ & ih }Ay%0\ &@NYA{6h5)d~,ƘxA0٘2;%@TҤ0 7GV2 6s Z9u[#8ZP3j_w +o4 e&Bgz)u$@ʌ# LMZˁi>`rppKb vYO@idmf!cmVr`5k Offz ;"W\oa0li8Td*. X.A^HܪBP x@|0H@$J ټZ9HpR^+rC[E@ǝmpU+guUS2'èKYB|9pgR[k}JXkF{'B1NWA*8sͅ>v6) J Tڦ>Oe- GyY {D|!Q] = R+-kSM\"nb\xO+oY`$R\}XM?crʺ82diWI@ Zfzf0Oad.ӿ/u S tdfX{GaVdb ƀھ@hOZ-@3|Y+ VƀQ@X^aD\SeVogwfoY Wro@9OHg~]_fXke{ [Ӛ.?G]ʲWBoao+҅)ϑ)B/e!]N,w-QN",@im'P4G@FOT&gi3vxFcN/J!e*c+\T4ʁG)<-PнHXIh6 ƫ.kajZ:l'w/kǃ+LJ\_D}@J1v iϹoLT\$g FVp@J=]\h @C? %mNS.k#q}۠ ͫΠQ^dD%`n :W[Oo~Jʁ|hQq`c[ ԍL @ 30Cϊ.ۃkbPy GIU ̍#/uF_?Q@ H,ԅ4zN<NtwX#E*BRQ 20O*h ˁ IxO'D[jwr,=K:9xuhPr@zT] F%+NK`.X\ Heiy4?Nc)csG#`ʁ ii`Z"?udU;LE.?(*nh9nx7!rKv+dIWG~B{#?<<7Kcw$ɆSqo_Ro ~疫#ʁ1 pwomgƇЉ, Crٛ6/Ń:#Δԑ-Kv8N 5EXKd@.}~A,f\L>;5D' qD QfN1>Ԧ㠀XvuZ HxxfDA:Xt7;;<_ QKz[y[ۓ'wOyƘq`'mc˘ pBB {h\Ę' @Q-!xW$  kHZm]@ ?zajhby '[cN)sdI?}>O O 꿟PT `M 1&}`^o)F0`h%sI2I?6 bPտDD _R` x1Y'hOa]<}&@䕱)% ""4}T'b'N^ٺ`[K)PN&3낿'ZiN&ns}_Uu;mD$>1,ʝ,@w/`Yk1%@ujW:ςRUz 0VSIl5FNh/D+TO֎]zR`|'@{"sxpSX Ц J uK x7/$7.@ u# Ϋ* K6],<4$@%WO{ 0 `Ңxfn K>Z(fNC@{4jOT% 0^\)'@;J $hLmhfn 'Ӝ٨pa {Z _,x?4hǁEKǁ{L7<8, @YtۗI<&Lw_0oGL@M\!\08 բ$ X" ` `Ա&Ţ% .\P"&TQ&h @*R\-pP$ /3bT<ʌIENDB`your-company-dark.svg000066400000000000000000000177231465312036400343620ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/images/sponsors/your-company.svg000066400000000000000000000177321465312036400335220ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/index.js000066400000000000000000000004331465312036400266370ustar00rootroot00000000000000require('typeface-muli'); import styles from './css/main.css'; import './js/clipboardjs.js'; import './js/docsearch.js'; import './js/lazysizes.js'; import './js/menutoggle.js'; import './js/scrolldir.js'; import './js/smoothscroll.js'; import './js/tabs.js'; import './js/nojs.js'; hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/000077500000000000000000000000001465312036400256065ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/clipboardjs.js000066400000000000000000000016351465312036400304450ustar00rootroot00000000000000var Clipboard = require('clipboard/dist/clipboard.js'); new Clipboard('.copy', { target: function(trigger) { if(trigger.classList.contains('copy-toggle')){ return trigger.previousElementSibling; } return trigger.nextElementSibling; } }).on('success', function(e) { successMessage(e.trigger, 'Copied!'); e.clearSelection(); }).on('error', function(e) { successMessage(e.trigger, fallbackMessage(e.action)); }); function successMessage(elem, msg) { elem.setAttribute('class', 'copied bg-primary-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2'); elem.setAttribute('aria-label', msg); } function fallbackMessage(elem, action) { var actionMsg = ''; var actionKey = (action === 'cut' ? 'X' : 'C'); if (isMac) { actionMsg = 'Press ⌘-' + actionKey; } else { actionMsg = 'Press Ctrl-' + actionKey; } return actionMsg; } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/docsearch.js000066400000000000000000000004221465312036400300750ustar00rootroot00000000000000var docsearch = require('docsearch.js/dist/cdn/docsearch.js'); docsearch({ appId: 'D1BPLZHGYQ', apiKey: '6df94e1e5d55d258c56f60d974d10314', indexName: 'hugodocs', inputSelector: '#search-input', debug: true, // Set debug to true if you want to inspect the dropdown }); hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/filesaver.js000066400000000000000000000000001465312036400301120ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/lazysizes.js000066400000000000000000000002761465312036400302060ustar00rootroot00000000000000var lazysizes = require('lazysizes'); // var lsnoscript = require('lazysizes/plugins/noscript/ls.noscript.js'); var unveilhooks = require('lazysizes/plugins/unveilhooks/ls.unveilhooks.js'); hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/main.js000066400000000000000000000010561465312036400270720ustar00rootroot00000000000000import styles from './../css/main.css'; import './clipboardjs.js' import './codeblocks.js' import './docsearch.js' import './lazysizes.js' import './menutoggle.js' import './scrolldir.js' import './smoothscroll.js' import './tabs.js' import './nojs.js' // TO use jQuery, just call the modules you want // var $ = require('jquery/src/core'); // require('jquery/src/core/init'); // require('jquery/src/manipulation'); // OR, use all of them // var $ = require('jquery/src/jquery'); // And write your code // $('body').append('

    Jquery is working

    '); // hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/menutoggle.js000066400000000000000000000025741465312036400303220ustar00rootroot00000000000000// Grab any element that has the 'js-toggle' class and add an event listener for the toggleClass function var toggleBtns = document.getElementsByClassName('js-toggle') for (var i = 0; i < toggleBtns.length; i++) { toggleBtns[i].addEventListener('click', toggleClass, false) } function toggleClass() { // Define the data target via the dataset "target" (e.g. data-target=".docsmenu") var content = this.dataset.target.split(' ') // Find any menu items that are open var mobileCurrentlyOpen = document.querySelector('.mobilemenu:not(.dn)') var desktopCurrentlyOpen = document.querySelector('.desktopmenu:not(.dn)') var desktopActive = document.querySelector('.desktopmenu:not(.dn)') // Loop through the targets' divs for (var i = 0; i < content.length; i++) { var matches = document.querySelectorAll(content[i]); //for each, if the div has the 'dn' class (which is "display:none;"), remove it, otherwise, add that class [].forEach.call(matches, function(dom) { dom.classList.contains('dn') ? dom.classList.remove('dn') : dom.classList.add('dn'); return false; }); // close the currently open menu items if (mobileCurrentlyOpen) mobileCurrentlyOpen.classList.add('dn') if (desktopCurrentlyOpen) desktopCurrentlyOpen.classList.add('dn') if (desktopActive) desktopActive.classList.remove('db') } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/nojs.js000066400000000000000000000001441465312036400271140ustar00rootroot00000000000000document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/, 'js'); hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/scrolldir.js000066400000000000000000000001011465312036400301310ustar00rootroot00000000000000var scrollDir = require('scrolldir/dist/scrolldir.auto.min.js'); hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/smoothscroll.js000066400000000000000000000044761465312036400307070ustar00rootroot00000000000000// query selector targets Hugo TOC (function() { 'use strict'; // Feature Test if ('querySelector' in document && 'addEventListener' in window && Array.prototype.forEach) { // Function to animate the scroll var smoothScroll = function(anchor, duration) { // Calculate how far and how fast to scroll var startLocation = window.pageYOffset; var endLocation = anchor.offsetTop; var distance = endLocation - startLocation; var increments = distance / (duration / 16); var stopAnimation; // Scroll the page by an increment, and check if it's time to stop var animateScroll = function() { window.scrollBy(0, increments); stopAnimation(); }; // If scrolling down if (increments >= 0) { // Stop animation when you reach the anchor OR the bottom of the page stopAnimation = function() { var travelled = window.pageYOffset; if ((travelled >= (endLocation - increments)) || ((window.innerHeight + travelled) >= document.body.offsetHeight)) { clearInterval(runAnimation); } }; } // If scrolling up else { // Stop animation when you reach the anchor OR the top of the page stopAnimation = function() { var travelled = window.pageYOffset; if (travelled <= (endLocation || 0)) { clearInterval(runAnimation); } }; } // Loop the animation function var runAnimation = setInterval(animateScroll, 16); }; // Define smooth scroll links var scrollToggle = document.querySelectorAll('#TableOfContents ul li a'); // For each smooth scroll link [].forEach.call(scrollToggle, function(toggle) { // When the smooth scroll link is clicked toggle.addEventListener('click', function(e) { // Prevent the default link behavior e.preventDefault(); // Get anchor link and calculate distance from the top var dataID = toggle.getAttribute('href'); var dataTarget = document.querySelector(dataID); var dataSpeed = toggle.getAttribute('data-speed'); // If the anchor exists if (dataTarget) { // Scroll to the anchor smoothScroll(dataTarget, dataSpeed || 500); } }, false); }); } })(); hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/js/tabs.js000066400000000000000000000024351465312036400271010ustar00rootroot00000000000000/** * Scripts which manages Code Toggle tabs. */ var i; // store tabs variable var allTabs = document.querySelectorAll("[data-toggle-tab]"); var allPanes = document.querySelectorAll("[data-pane]"); function toggleTabs(event) { if(event.target){ event.preventDefault(); var clickedTab = event.currentTarget; var targetKey = clickedTab.getAttribute("data-toggle-tab") }else { var targetKey = event } // We store the config language selected in users' localStorage if(window.localStorage){ window.localStorage.setItem("configLangPref", targetKey) } var selectedTabs = document.querySelectorAll("[data-toggle-tab='" + targetKey + "']"); var selectedPanes = document.querySelectorAll("[data-pane='" + targetKey + "']"); for (var i = 0; i < allTabs.length; i++) { allTabs[i].classList.remove("active"); allPanes[i].classList.remove("active"); } for (var i = 0; i < selectedTabs.length; i++) { selectedTabs[i].classList.add("active"); selectedPanes[i].classList.add("active"); } } for (i = 0; i < allTabs.length; i++) { allTabs[i].addEventListener("click", toggleTabs) } // Upon page load, if user has a preferred language in its localStorage, tabs are set to it. if(window.localStorage.getItem('configLangPref')) { toggleTabs(window.localStorage.getItem('configLangPref')) } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/opengraph/000077500000000000000000000000001465312036400271555ustar00rootroot00000000000000gohugoio-card-base-1.png000066400000000000000000007323321465312036400334130ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/opengraphPNG  IHDR84 pHYs.#.#x?vIDATx[帪ȊOcjC#3Uu-K`@F?ok F_> gp"1WΉNFQ.+1U餪WUu3@s} ^Tu@LȁapfǦ$t>P-Y G#>Sh4)gϝt3CRQ8 /gDh3k}fP 0:Ui%*?aƕT95QCJnY3EjUBF>T4flk~Eu}R>׈74a5/L^ FKCI_cti9h^HFesBx35JU^U7(Dc>B,%uF⚂,Teet<[XRYB >%JZ' hMTM4٢6DXi!t-]SV0-vly#3$^n"s3{WؿdVQ<KO^|~?c9t@[J> e@tA4mdGs[B3<&:Mxnh.=&B %>-Q>8m1ZG#(79!ŽdZE ew'Ч^99eT9TV%G(]쳱1_=R/j3E+hb"#5O?kiC$Pi X2h·:X75)60vW=R۷JӧC10JdX{k l>a;p!0؎ (Øs M *KؠBY҃vKm4ns֖A ][32D"/TcE||xg޴.&ax7)-n}=*BϿx<5<`s5~b5Yα*8wo7?E`e/Mmiu.؁m|`pN!1I_!Z30(BE6('`*kH V^.:l͐fHC:z~tS1ӱBD SP;$o (=zf4>m@/6-krU+F-b W"CXI-݊kt4˱j?`)D8> q.E8TFQ1+\ -ݨbniu QrO$E.KWv,0UKbU] %D:\\Es[܍,].!\@౞@XkzbbKC % 5j |Rj5jH.HN$>skhѲkNr0Zo]Ƿ77J p+%գf(}Z&-m!A+Kĉ fPg,T_$taؤ8!C=/b !(7%= ),xt*J!hM>ħ詛+ D.͠Ϝc# ϸ[0*aJ߽(Y)JFU׍-+JWU}&=/u˹Sx̑+Z8zZʚnʐadr82nqگL%lN$\.$IaVd)y,;%%Q tF -P)*1X{Yłf~;9-($K* _>SUHࠉB8d>! Y$rׁ̟7SVƷGJ7 )qfliÊ^,;&f'?홈f=NɠHbIIe\7pFY-SyuFg*A R]Pr=VmQ G lf6wfXYhLD_QmOwn0TyeΉ$`96EҍHIE)q? X p9MyG9 W6WAKi1:<6$mG9nG 7iJ{P~0r>@ bKsg1H{kpuե䉕Iq~qje')GlVX3LmUx[~9y_&q 9aN=t*=M@IV({PlRӿ{&!H8Y.&R{:"s& 9de-031tvQ˜kB`P^g vwLR+ EsR0Q|aum) W"4 ڻ4L BĈ̹n<3D~6m3| cC$k1f<G1t~KD-(Qw+sb,l$ Fj6K; 4nLKӴnhC () es) /TR$(`]9~(z Y!wYBdLՙ4"cK:LͥH, QV8K'O6|.MoxWQ1W'}[}ÚQF/]-?} S@_@ 'Pv=(zɗ[G@l,2.u #?L]b@^,n9Tb\w >(y9JOA2CC`n*DM T G0f!ʺyU'(FՇ&s\>xEKbl_[XoB$ HA#tR?~ł5!fG@Rx|w՛#X8EUL5ihOWKEc,S?9T7sjOCiw{J{6B!A ]N Jrv7_6aA {J{p$!.>7,KpmZYzg5夹zԢNbx{\vo/B_;?xGoot7@%>F i+``NGqV0V=A=v>:8޸:1ii>`A| 7'sT4΀ծYT;* gIĵωz킹-yNpj&cgw!L|4(ytN:ntz{ps#͟E*65Ҩ+PT<fn>77; R|P;m_"3cTHY2K.0`E ;d0q2k^%cΨdRwyՃc_>g:g_(S>?7#? .IHSa'm@'=3*m$ž 6@kD3wU 7ㅸ( jUȕTCT>AQĘ |'>~pYe}ޒd>%Rt^]m17e˰:LIo<&?'x?S+&[kBŪ|}"Hq'9yZ.\ZƯ"w(J2w ٹ|Udɡ}5-VH_Yd߆DnEx硰 X$S(,-o>^+(8}Bw{q"cr@9R=Xs*@ķP&T=`Rl7ϙ>-̧\8k:R%OUA87cFąv(GS 8=iA%,Lj_Uh[FѰȁEg6Ў!6v|rՅh`İ O;7wӓJi aR>F*廞~1QVpmvKoܾ!@\ؘzI嬰͛<@}hW]!ct|ҰhՆPezA"+R;moj6>1J}'sj~xbWe1~N˰u u pp4! :=.z8 u=e zdvOAr=n.g'˻b<$A LVS*m9@cf\lǨ)yi|DVP6#dΣʱpx7<lrwRh}e4}s пLE56Tq/..# %I*uf ;'d'|i Mt'u?A(_[|U^v λM6|r)\j~JO?s1q+Kc $xÞH,7:Mt6M3xU/Hȷq4&߹|tg[B:.V9m#>&G9&I[ץ*l^Frn ;WV;^[=ǓOʭ?g r]d%E'HXN o\.0+IK( D)jU!=T1WOv܋T|p c8SW E1 NXpԩ ]~P(l,ctc+Ͼ} pYO"RlxD;y%cC9n1wrɬ:hpF ;Q_[i^RQP4;U-Z"1j`9?s(g$灶SQ1з ̣ 1m";!Mp*>< 'ф"pՓeAF+a;j) -ETc@. Y_2Gz-, I2 8<4OOo&#p=ą?ގnT:C(99{{ LF(>_0.!/.EJW8Y=8\-D A:)YF# 3 B6$\'u~˅Wg(- z`[:'%fR"J;.U=HX_|)/*;`qkuz6g3nqYaVj;#a,cdO2jՆQYǥ&cۅ.ƯcMG,5K\'6}P:Exafπ4d\LDRnAYi{ˣLyQNQG+ޡ*kҚ2OpEiqm34:hLJYhACnlU70*G]sI֍ o?7`pprBFB>$uv VKGH_ΆXr<& 1S _﮲Cĥޗ.b5uv)[?rO DzUvmcrګ Ea=?*i4Mw:Z.O7.\. h36a yqV{KJ[w+n"Z%<:#QM\2¼x샎|YѰ896il.#cWYTS3< ۄz}E2FjAҲ2t cb]({t @iC "2#kR\ ݲ ;Hl~u~\"JfYJF3RxH+A?bԤ(n̖(cqSΪ-af2(Z Gh7d}щ $UsZ$t6^ˌWGQn+Ɗuob;8M|KmEs vǝ F9{g#'$ǎ/ξ8TEફbz4QmGD9 ?:i~s!$'T]r~h)⁕WMi[^EF^"Q2XCQ޾5ڞ%S|47 Z>p:N0CNN~g;'d$~j\!$3W"+]sD^)ofK˘F==V?܅A6HG;"]".au<0iEU4:Ld8ڄɾ4xkԛ,t!tgc# g~"M8nyQj۝=GKw8;*+ca2e*璂9r-u(a6ip%ɨLUP:\CgFhrKF{2җ_T ^w`Lc^@ǢÁiĦ:crNv| &#ɚ]-2Q6G#Q!v\ʂ+(媣s'BiQ%;UBP%c?s5NeH/gGԼGA o϶\u v'slcmpv~qILC[\1|Q!-ШhW 7'_iN9 !J^1K[˽iEOaiMe$:׽@/3j->o;N_<nlTrX h9r bФX?͂y0=tq,%f З?͂P.*l9K=S1ι&kWQH<+ ׿#U1<$Y&0lɮI طW nw,8EBx4?<=H:{6'E-UҮgPA"(xئ{>[c Ɉm̙U Dg(Fi+eY|{mhmY.G!Ц8i"ؼ$#g K1Wb^޲l!.pJAb!gƑy)Z4j_ߗYw4KFՇC_P= 1ch⡙jKH%η'~>E)=|h%<`hL>ܦ¢vjnoR92pbA#xMw(J>1԰=T,%nIuJCk 硎jx!懴\:LDeY djyakmL8'לyQNV8vv9O s'q,Tɻ޼w^$6쳛G/SQ$t7v dp6VBv0dw6׎_ (~S_cUT>Xa+5,Ev?9y^?wy=V.V9lQ(Ƙ80 I״%g~-S[0F[5qj<} vl_N EFq$ؑ6#ʹ$'8nϼ&8,9 Fbݡ*+!nMp8v;y9NEf*/j ^[%̬1[VQTF;TdL–Ā+|]!qsgi5UOS-U ;Gi1M9dz5Os&p.12B, BꏫE@jU3j[MZ kOA:,際)% [n W] J1HI{rR:"#oϫRPtAy=njid$Ѣ7bQgu:YJ^|wn>?;%#O\_Md]sy݋\v<&#vׁdv0Kv忻?*.x N J Qh૜vYL'K2 YLѓ)<&$/`p1*6M17* ͟?oZ2߈=" 5.N52Ok׏:Y4^wxbőГ)iۑEƎs$znOFX=]~Ș?'<%0ҷ)y[! sf5[tqj>ՊR]WX_ۥ$u4ᙣfve( >Y2A@:a3C]ty$d|4W%AE3~+ͦ!Rw5I WX]>WLg /ڲ<{ ˑ+\(_4`~^^N:/_Ǔ|w_8piI(Z6N:`Swdl[MFi2xG1x> # ä v{DX :I)ywMvOBN"6IirZӆs3BE/%,:?֟nkr'Os0/ǭpº<0 d$GväP\F2Ftܗ\>1cOvhƧ.E/39=_}5ذ]-I)E) LNU&)b_L*?L`#F7jgDCbRGy8*mF'b}PT!΅>] 9ȃ H*9ׇ.O bi !!#O,v2200횡I`iIFbt̲\3"A[Mxz>Cڷ6bԌQk wp-$1"J 6K{v̂%NVE`*gn؛%lǠjoqEDSp©P:KmYѫ}C2a3Ev. XMFkד 5năTݫY G_꿪>!*9?ľST wjJN-I?֜8{#gչ9i*J$~òsHVenE5{o s46Ɩ*Z w&8=BA!cɢea[{= <8 Ϊo QXKxۑ,qh09W](-̳SvLh :ķJi9a4u"I.IV_;'7UĿ ᑞ9Ep G^2Ey]dyubdr׶;p`F-ss=O(pɓjflNr96y wY-O%uUGnUԮKU˾]Л+\̀I tM+cޘɌF+[e/K\; iڱ F~}Gq"Dq>5LR&'A Z(}RTbIY^AS$e,Kw]Х@*l/lb O4RC*'J_s;-[T:^4TNbsUUmb(:P֔w1Y7OSɎ6ISvP>YqY hiF _\OzrUU956S'3v&4#^E&,؉awgGzlZ,Q f^5ĵX,ѣ?W^[&[X#d~.Y) % +* ޸\&\Td5+u˳dn P ²:m,i@&_2lOLkZzh@qZ42\ Bqϡ5qUŷB_$DR0Uhz2s2a:t8Wn&V, Fq" \9hFj>( h%X `7fDrVs7iocohM77n(0"$l*sಚED;Of0YH؞D@ҐJ܊DN22#T7%|' w|"N9k)cMN;t=+ UpZ;GiRN Dk08k'li`7,ģT,Uk" cgW )Q:@lIj '`qnAyzc(9xʽcQVJ@ZDZTQOvq*;` 1Fz0|0^8jJV!RxsBP<^cEQV ;f\Q\m`ɝB:R ӎp^HQM@ ߀qqo";]GEYûR,~fV9RRGuUTf; ,_m݊:ҡUEO+y☴e$8A^iCMG$I W'D>׮kMU,6'hi^6ny*cJA{Rha4<؞UaD\p +*dӒlzU+w@.VtP8sY-V};oX#.`vde;z_13[fzI{e<ӵt l^^]L |?3u?=:c}!6"f D!`ԺWy4R^×=DG]㎰@#8pԶ]8~W?*:܁|,c(2ER:dp'@n h\.%q`VE+x3B3[kF ڞA[V*#hrힽEџ|C7^^[bGt׹_n9uUX.bXs|gfPE79逩RSaZV!܇-jZFgL ;ҝb4 أ$j, ,0P&-"#]z"P?s+a">6V*q]a~2ٮ:b-pHz4Bccgc8=(΂dߋѣ\mioGt %]NNy(2ɑ_JÈg$KT=y3&,7)vTs+QumI|:֥IAMy[|KShFeZ+ܫ;:9e-`C& H 1&Kx^vzh4 ZeR_[gD0|C#u,֧jE4_o!`;k2\X6>yU4(gX<~ |)|/OIo],좲u[0Y ٜPH*[ 3k, Q0 aiE_t^ϝc.a#"O1՛@V=#_1Iㄦs.gp[`bE(j&UbZG9lI!iAwh՛Xuui$ٻzKZ鞖>/"O*2yͯx>zCruJ?`MDN.x{@bwaGtDFIb `W4p<vmƤƐi+ ɟ_@o}Bzy7bW4ғRrm>K,zfgK\ΘA6v'rG>KD>Έ=gʃ4eHt@yhBzg埛ι~UZ Jwο/HpդߒHQrj3^ dbJ3>I>2~P'r\(O'zk]TƱjh 1Al$bN1cR+xtM2N8 MA `^RОO}`96$'0uBі$%[ NV0 F:%ne^[rBS>5lzJu<5(LÅy{ٽĈO , w<Jvz[Ƿdi?sSꭿz_CZUUS/"@KD g Nά'G׶gxsޠ8RzFVxnxKhѪrwɕ>²"&3\;BD٬ea3u_G9[6+DzX"=̒\iۋ0P:esVA(HэZ~X8$ϘirO0|Y΅dtg'M<ׁem|G "W2gcЛg"=bYndZc2-b5?Cu(Z,1,neٽ(:0ZX QdHic-Ap&̞OanOJ 305WD,aEf],kuĂ7I8U:.`R ^"GL)[& W;}fz_OT?q}uu ݧqm;3^dםİb= rZy=t3+A;I`@9K>ػ 5ífK'iWnEǼxZ%DJ_~ 3JPKظ٨vмZb =c!GY\7ڒbiԞ뤗+EGPj &;\^E} ?B1%wcb w S8]a{6V#XJ]чS8Ly#G3 =Ym_:qAz2zj%𱀩xG='j5J1BRT )Lz^W {cZ^93H:GݒCC5],qNnOx-^ ug qeȣnQ[|[$Cܕ[6$Ů1AI.:y3IOF:yWQ>>g=lI?"I|~]d3!<3mGC+MOM`zi3peW.`f0f"'L+7W3 ǂb)(Q+oM'n29j%9G9s3uq1N9_pY_Qv/ڳf۰H^x1hjnc# ҭt*mS9:Si$(VRFNET+92xw_ ȔՒk#ZK޶Qȡi j. NhsҨ:0yƺIPro,k~Nc@-_UCq=>/Τn g9_z6 ˿Wx*/|-Fq(n(b*uĞn3JH``|GM*;ӯ+#kkwd@9CN20Z~DL]z&0symIrQLC䣒<lbYęt0s[o| BT/06r:\W0^y@> 8\L$Stl=>܇Z{*}噖MRhw4,ĮgACN.'v㝅)urܫũ @a)ưg6~#B%*?$QTX4YsMX-PV>Ih=;ynQG/.qbve<&eC@xh}Fy&B5/'/#:ݲn0Umֆ m5'ጦhW1r=ك2h[5)a3rS5!l9I6iV·]7/Pvw./ zlNRˈ'9)!h*tkzs# uѥr9@q8v%%|qǎR0D͸݋J\WE x-T(ߪ,Z@LzmK_,`9:KvlISjs5gF+eoUpX"3kMɜkVyү_Zʅ҇bkv:EK,뗝aOk1'd/Sʔ¡wdP1v1!dKb$d'bYg!3䑗r>-!C Tioȧ5/2zkys^~. Dv[s3}w7]?Og=f#oF-Y[#A8J̵=µDʹIkm<"ۯ며vݒZr*v͟]fǜ2Bf\O1JX6/(!!}O(@ԝ9&M)*I~Qj6[2ʖ“Tٮ]/=VU|YU˻cfw.ZSr)7rqwd7.dDf=˲͟*@-R\ۣ͸ڣ i97y "jjuRRIb![&!Wz]S Y $qiŒFs*h\P`MA{l [fv'iʹvÕBD8@ Ф.)^ T EyGc+S'׎[!Ja!X<ڑ%9v{i6\Oq՝_X_Hȣ<(><ٹn@RM[;|Zڗo\I ǤZn{C{ekoV`G(}drzDAv8? * :ֆp] a]ҏcN"MA4|NifvS( w˥6?%Pbw^Ҟ`n"ǰoy_v-sw'=JpL,=njVGFDpez}P%ajvzRѱi9wY.2s_X9vהB.Ζt̫rgDSBUk*4Sm>f9ߥƽxx9.FGmX|&3z=Ot=$B&}y[ 尚gM1EIouoW{FGWsg;\}XVG4sTU SM[uAZ%bLC6 t)+nʊHx& qǎI!tzIO_% qqʊ#[LFV΋ %A])&`ͽgLuFJ 'tN5a×G*OKdٰTf0ڽO(a7`ڳ ZCvym 1y1_&B-M~|u/=."W bDe[(DXtAOR~cMJL]-_= `Tcbޭ C({T]fZ$e/.ƶڬmHB437#[R`26dz*PSqo 0"oxJ5'a{'~̦󆞾py!:XvUe(brJ# vG_ q2N>A t<}E -ho@͒>!~T[ۻTAUN3iWңŊ1v a\fPTÒEd f "ΌD#6 o(i؄* C9՜Q{U$Ww޷ϽLI 0;+pRhYBI7G =cp/qiICѧ|I姎"祫O;FL ')˱|8 Z| `;yϠ7IG{ǻdȇPژB!c0Q^ۡHz#<ftC&"p ϒSgQ@m-acrc9/1 1,@g:\sCʚᄁjnns2i͹YكEo*(ij㲮@WFU=yrd۝_1DJ40PUF9 uK%Jp2SdL­3y@q|D8CjbJLX5'|{v $Fw$D8nAY󧣔WWct ;S{ck}{3; yWZe$Xc=qb7&VNGj.,om]hG+kuC;y(jӗVb/^6 39ۖzk>l SUw:d>ҿ~>}~c_/vY+'y\8N5PDg .k.: ],ess[KZFtq;4~/cOJN :2وϙG9[#PBzv*Dn>?Ү +tQL"yI1 0Abrh88>.v$<.dt*^~6('p 5K|9.:;醝G>A2 $˃aB*J.:cO8Rea6\[vK=;ճn_sT@փ}SRjlՃ\)>̿&᧏P)YyĨ5cт} ӟJ!!aCL6U=Ho;"a@Bs%Hb!'rAL Z]S1g:ک_ )ti+rI}xViɐ_*LpEN\Hhɓ5XgKb l$;'>t:$zgk4.7LeVd+#0vÌ_1 ڣLceQ`h@P42OG4큜"р; x1&B[Pa31g"f7VNf'xI:Rlf1kCG=_neLJ  ۟Ј(d's6hD(Wos ^_bXbϸ-)߬˷1j86Si666U ٧-}2 H7yY=+$Tp5k#R)4}9+tQ{L7t]X 5S:#45 eLQ\ Fh n24*݂&ǻ.qM>>v;r3+~'9xzPRJ1gBY 2IwrRPeҿa&izD{J;*DzBq7QpِfkĮA*e@)2adCH^RH0HiBJ![q=H@l b#k)tӜ|v@m p2Wzlαmg2E[,4!W1c-f@V~:uD\Zע^:=nsĪ<W+r3`Z~!]uU8Ў;~BbwnB)^4T/؆PɊE4{t]j38??4? jzẼ< Jb01pz pSؔB) kf~{@)1M˜ _K" []VgE%. SBMmrG,p)~ap@ &չ Ж„[pzTYm[&ӽ.Pu;P,sgK9U;.ւ}R$+HͲp&7Ud.3c]#:d@V~IT}R̷:cnxCE~ao u),Җ>5R완 3 Rc[X&sMՖYè>$b1JhSGcfg_ڙEQpk)3s(P>g7 {pY#IIo8v+1liW#".M6`VSiHkZG 34lL,8踄n[ձ/kXø5L,ԝMZwКH5jSNRɹs6 *)ybpvG)|mbnxhҝ愤hjv>Ij<5Ϣ7uбHCV#8VatEﴋecˆȲR`2xs`3 0\M1qs?LO[ {OխnM)!)Zv\7B=Qof٩=6QV{hUU&Ϻ9|FFP=IE^@U\4|BK(܎=r۠kBd\MR;wm@ 1rCӹ笚ͮ]Ӛ(՛9A0[yc%A|wF.[7 a*uů/3'QLHt&V*춄3دP[ɮ# RkzIrzd@Z6ontˠ}8T~ 7BE]cYqE .EK8YVN2NOm X-ɶh֧@|hK䯵B`p GEd^]3-k]BY0Lu12DJAaȋX>f?l Ù}&vۤ41AWnڡEF'ĦKq+LD#A#<gݿ\%$%<-_g+ Z cSV,>ꕀ..c#%!}K5$;HfwCJLrOw|::_nn]Y:l(\Uuo+(P gp %@"Ey3"kӺp²B.da ½)YaaGN5qT3dU2 Po#j 6("&h_W1̪. FAO'sWvi[)\o(K͡6G>_`RǺcSp|: ?~|RU k@#\̔m^|LӠ:+MփAH9ɫSFT7,w.' ׈kc00K7ĠiBʶFT$6-0UeoDtC+qL7$ᣠIYv.ДPz Fh TWQv3q7L͋-pk϶jOM6BGE j 0h9U|wbx@¶`W1%42$(p }E?VOi-(eͼР[K̛ju\\j[9Le^t38Lpc^ԙRT -)8=cU0X8BmpPώ+ccy/o#gݨVhBN}'Dl< {aOCvA`O.zl =U) @;* ﱺL.vQwx7KXA^uzX=H=ɒ.k} %$;8+ᦃ.ѥUmlւH!Ț(a7UCoSl;0TG+<װ(a(/%2F>L^yݢC] N>3,Xx嚆37oJ\+tB>nK8VdRy&Sk3li_';&YI1py*CKemt?3tL9 UUYuڟ)dNZ~AT!r~48F@bEfQF%LW\:JY5'@CoNUrPMw >V:jHgɩX !XeRYPʫp Cb<|7Fܶn\1 &q\Y^s0=(_T;}%4BҜ~s k ]e,9w?JPA'y]CN^wU4TqLC9 3-`tuYή aVzltfP .)OkMW(e "S$}݀$3LUErqydu]˱~I4Hȸ&0/D(v7o 5bMS/uu|H8l^|0o,cCŇTP 41FJb"zە9"Z\hқWH 5Au-L19ի3 h"ԡƄ#*aj*_խ4,ٕXZpn\<9'ǵ5 /9 GsqoQk[1;m326'I׍YjS~r=$\>i ƃlqwGprӉĜwMCA3ŋO~+ 3x4KYU7n7 /pC;#(1F;};NK_C_nHzjʙFM dA_.HƮfa!|V=مRVJ'3 @\¥EwH?lu*SG]ܮg[aB4]_w=Hj-hxP.~v`$DRňRR6C*|mt:>>d:T?UyZz tl+4#XiSEsmBUS8Ң}. NO4PPy'M1~dL%(ҡ"84Hubܥt9n# {oVt(01Uf9d~C¿jl !!=mpu7I' ^uE3Έȣ]Te6|ʄF'2oP,G1jBH|8:phLrku|~5;-b'_3,"puxlpIJhO$ɬчsd^%#%4N ,cU1 VԊco;_S !(D3&pȓq@:ޜX=f~$#Wu-$|*'? }K:~7no\|M+>3y~mx|o>߷.|ak"RCW\w17lvX6'>}8::Mz:'᮹%DʁMRp:uz{{zn(697(MmPx)Kh]_o= K _R({[լFxmK-^[^I~:߳&T}L: o {yO3o,dBUi-;`Z[mqM/TELJ+K;bvJT2UE{Hs|erjz`> zB9KzvCfL(^@,9`+nZ;,&8>~◬@0ѓ؝qQ!x`)ɥ<f,$:9xynU8CJuf,'W&UGhǘM̌Gd,=9)6^DKd: 0`xyg 5hs!@ #}G9`ԌP0H]+ٱn3$4vlSQԘvQVB``ʠrxXlW$Dӳ-ͽ 3)246 e2E ֖T`.B5!Ix Fҁ7ǎd玿<^XȲ^rDevn8_83RQr=U,r&Qe@ =ɿMİ(arYV v-i$e< giTYwBYw1^f}Kxz:[܍<Ӫ:OEʘs &U\?n{2QSF~ FwO#_8~R;U{^hoGcUԂ۩v$ar:NrGY<·b϶r@sXyifQq -#m*!,E/}| ?$0k'[NmEA RVq):]c놸"0kHLYGke N`ˉ~e;#એҴHRB0yӭ3`o.\p#0PKM@>re9[+yzVo=9̢ʿZ\| JAR) -w' #^^ύMn^G[.'A MˍoPX4 79 [ۖfykږ}h𦆉lU鸒M4L[!(5-0KF핏.CB$T.Ĉ2Cݍ9gpa//\vW K)'EIpʭ }xck`o4%|~I ~4)BKϵ}d~G{WUj-h`keMaCyu|oFCX (1Yd)uCFgS̫}_ad1q4 2{KNpk|'SЙRz[Kvq(|%ż̀ӍǓC_e8:Y)`آSXi,!n /$[N7W~j%/r#F7W#tcV0hu;VAzA39ulqv` )1L1;0R gݵB);Wwz:Qv^sBOOUVeZhUDSЙʼn"$ t熇$L-ɰf d'yVH˯FtZ<]wZڡჃCp 쉌S*]s BP~s`< ?|&uy^~hHOOmA ' +hW4goW&G+ w͞c^(mA{B.L!mZё;g`Q׉NJ( q@N') ؑ#fXCN >@gU^+Uu*ple@XQ{IQGYQzUg=,ctu]*γTߵDH6cS'p(CR@\L2j#t HOΊ!XY"\yP[@53+$v6^ۓDҌZW4sEi6:޳#n &([{-n[>D%$T ?ck |!HE۸u,yiS/|p̛l^`/mɄ>EfWY`-6KL6v֏TꪛkϋMCW;O>A"82=,Qx7d"1ތ=z5㡍}2FYW@'÷.! zI=]RX{nҗ ɌKo15^Cqy]JasX{`6'Or:u<ث~#)kS.Gϵ2jmg 4S7Kmh΅Rog!lF~Xܷ&5R=e`22'knX3 k;nO;4'$\T13tRr #BX-cN}EW?œRO VϚ$ ?g ng1Z-S9:yp6cpa-SsiUUhoZ{8ITáOW͹Yݒ:7]-S1vhu*UBۍƤǹVZNI>I%L:ִ9_.fdYŸ'Jʂ>%vpH~]D̏IMU1]xxJU/:b 12y֌ҥ!U}{i!(y񅁜+;Uդw2#@F K=̿!a8yfy%6, ^?S~v TXn|p{5:ӡU6'\V^MۃĥoB/!ԈڍQ}pΌ>')ێ?H7j[,Wy0ZyMfpKuN58z9bHڹڼ>1>~Fs d'Q76[/@_dhPUʫ8Bзhez!(4F`3)W1ӼCFN!xwX WQDX,IWRz0 c ܅GWwx cŪCQ7,tBxQ>Ƥ '_c;S #籠s7aFF3G`GnˬB\p.o)ؕTMPP۬"l[y 4e=ì绥F-ůs~G!** &C~7( Hbs(Z{  gBs,@jDDZ!=Вt;mQ~ڂ^M5b{/v5rAv?o!d}_[:츀Bӥ~02?q|is"J?w,f iF5:"򰵓꧔Cj4RDLPOIs[eœưpM3R4t@WǷ0^TMbpuި ">ȈwC̡l`AJeEﵛdt VrasU|vDezzች D];Ob/O}%1)p]%2wq~c{.8k"l,F9uF@Mkk9+'ȡCe;#[!~TGxzb_$` ;pKit+\qTFORۢ)+V#'QHuݙжŤ&#&ҳg3f!H dJyM7E Җk9l4=I]>z~5xi/0?m~^:ӪEsnbG:sɞf A2IZrfC }>7nH,jgp$tbnaSOe%&3zSŘ8`!נ9hKƟ"Yg.p1Ognq?1_y$Z.3]?a4xb Bu mhxFePEP@}MLиSƾnjՕ Κ}]:v%`Bk1dUo+TOd9H AXb8}L98`[m]1QIRTk}PSʰs-Wr 9#N+Bfc\\ɇ@ 9c@P\|oML"Q?S#ú!=OHg1GFth2~ɂRb`Lwt("Ʀ|c\S=sm5cFl65P('3-0g@cZFF`wdtl[R#r=ō$£.W4tJ cOMy4h\TLvbdpQڮ m>ƀ$;H_yq[vGͬ+(W¥0&+>>KMo}BuFhM ׎/A!A!rg($)vuInkFϦD*NX}!f#w+\:RƖvR xx[+Oc4P#Z#6RL44K:Ult*`,keϼP'$92N*@+`*u?ayd$3Agdv15yY{̍fdg?$[џUDrݨ)su|:RrQk3}ᤙ,JTwFXXpٵwuߚxsB5%/vܫi*.YZCuu鵷!PGGD+J/<`67.Uk\nl3,Cw`83M#"L\Ll:'X)ܾw{Ț ʿ/L49E; C79 8B:ZgaUoQ[ݸ`W<~ [:g3b <pn{˻v1ӽen\o'9%8gvpFmZTWKnC`khFHekp˜q #5c7b<&T\\yG#QI [/(!PV;(UUz~]}t{}2csO׎(ԖHV_gy4Tn1'RDcϳ:n1;&͚wG3J]P |S76TE]|)pp#/׷6x(J]ޒ} =-j\r 4G]4#a3XOSg4,k{zzv 呍`,IPϤ&pPoRݱoO `4wx%YT舣w`wy=ȭ Ьat rXlfb"msa睩/c+=jN#Ӟ[}D.rh]+OыpiczG?UI 녬j#Dt(6~YzXׇsZv}:>WqWvPKbqygwY틘`IC.O>暖RO2.qztIޞUz`leE~͇mN>UBHvb=t#IӮ UQ< $%dB,TѼaXs]CSKA<Ascn}B8}UǞíl*DN5q4k ܔáЦoD)uH03đ9bIj4E؆@=Fًdjtbbζ)eH7iO~\idzn礨? wͭzv@&gd!aOB (!MW[݁nz2Qi+`6v5czJ:,!.ed "wgU2!& //8% A{Bn Cܥr?k.i J&Z]#'僑A 9>UuuT'Ɂী2){αlΩIe ؀,fw2=@G,AٸPrL#rN}ס$o},q>0Gt&`8Ijn 3QTmjjBdEFǔ8`G?[GKo̬DUxL#϶Zds|V)`x]/3P,+K8`hzdnԫϐLLﺌ*=>DEi^Ǽj016l-3}&)Vpl{#VMf:}ֱI([CL;-ڴ{4c|y!X57Xw$OaW?W/mϩUұ^pY~'?s+)~RG7j$*h}PtGmhY2.4&01S:<U(U kQ3S)A*RiqrΡQ@0Gbxœ'Lq.ĝ"Kz?7\[0 Cù`wxA|w#ulnĢçn`OV5-2B$QA>v%ۉjw30Pv2LIߣ@W*ɫQXǶuICK{$L]IarS }̮1CL씓oyt+zJO&pu&1ev6.*֊W9Bź! ~E oKŽVO?Me=H]>_T־ ڞ2NB<V#a5Mj#M=ٻ z >A9\V; !cM/=MR{QeOhxo>8Ouڟ|/'ָr+;(X5~YI5:mqUXÀǍ*5cJɽavK6g236#'lDێ^3줯L##'mW x/=ڝJ$ fC^cFM2kS5vZ8o"gX{fsb/Fazy aQ83 3޼P fiQ&f?=:/Z/L* )YXg =ku%8c܏HUaqpG*3qfշUoʄN֤ a[ MLkO@T= ۑ $jN<ۚ>T%jMkQ@hLbD]L7DqYJ#$\Z)"a4r8,zegKiprTJ=]yM}owKD\’dhfQw%ZɁ :2FXϑ~şW ^{SSU}sor:RFiRR2}0(Η!xy$.#dǒOwAj}MtW!f~/ioU7Q-@Ѭ]\ڡǻ߾"K$ȣ>;%9v<RtֺZTb1cÊ//CVR@-ƔO3EzEO,h1LgUGhGEx5tiVmBs 坽? #^0'Ҏjt0/E1ޣHŤKpL}L.P`a&Kg]?b^l V걚!xㆧzFlCV50|UŊrlx~L$kbv|뜎9OEFvA#v{!;F;zkq5>.'1wF!6KJ4|rCDc+Uarp<~L-- kiʡv)\8+?l]+^@76Þ ֌:mG@8i_/\8,0N7[眜!q#]v`pͩץ$ZEPU(n5ctJJz` 7g%W!f'gT͑U9U– b6ki]~ g /=gzyMcv5ޖ^a)0* كvTpϾM $gZCQ@j2 $uĽbΔyESYS_\WIX{ M1rWg0 Bnԁ#D0Wo;{Jc%%w5Xt .U'~$=.%1ww7ץG.!Ka`qjoJjts͐Zk`?tL/M9׿u{>zOӕAU>o `dEm=Gcң1rٺ(vn,S6yVrZ Xdn!~"ҏ) nả7$6'ū+0D9a0j4lD6_]ݭ'&Ү D4vГLk_fa=UqXs(5h.-ڷt &-B}5#KrԚm £(fȲ|uF6Zػn^DUtYF2yb_5LJ;qMRZ.J+9 XYc>#uv3d!;To-Ď1]2yCft3 ypmMG x `zfk]UzDE/4`'kapN#qmJpF'L9JE xȁ'<>ێ]ʷvI8B~zh=‡{@T;^?iCqmva30`$!*IdvX2$R ed}qn ;uCyh7lΕgrz@bvXg\իjzS&c\CJ`.KgKƠ厩WP,A(8\*`yރriQ}u8RuЩ0v *saW? mCT52 l{AO36-|xsT}g@P+[3 hXTCW8q.(+ڀr|Ng4<^_VЄoot;yf½m|WMq#pkD Q@2%Ι [$뙧츴Ϝu*/rtqu4ʃWLOMJp0[ɇ 9@3֥v,}p`0ұ|"O!Oj>}U\zgP ; Sߣե+=IoɊpC˨1jC1B<)#iG]l']G+.p$3YsPڎ5L;-g-9)`Ec k0^uvyCBp&rٲo sLA ca`= {XIjQ" a^O5=6!;%b%%a/~&M:yP$Z!J?Q$bD] 9lsI^Pˑ4=9R|󼯩)~іP0=@)6h̷du:E^aI;+̫[VxKdk׿9J[@k 9%Wf(.ۯTcy OTs_{|hԡ0OuT^k:"GPQ\'E~ut%v.[8Y+L) QИ{Zqg*aתs "jDK[6\-P*ey I)<>?#p=i;)4mbB&R&o,y5엢#z0Ek\o,k~d(D0}zM ?bEcaatQU\!ۍFҺ:%>Gq[3bd36!ͣ ?D[7;wbd(.DDuhۨ%x|b#w}@}&W09ej2e\v1%x29r$]`eBo9""9/@PvMYM3 J˵ Yӎo/3A A#L-S/%C\^C҈+=3ky IZ_EMTqO/Z2z0S̒4ap⋝1%92a2&|weʃ8؀3J2)N?qL23;}ecf( at ֶzrwOD H_X %l0!B$Jbb.$[|ͮVD#\n=|}$B-Ow%ݛOcOo ce櫈T\N2y)>bݳ?X6vPU`"9ZE1'ywVw9GUͅiH}ZȱMLOIZ$"C\K΍/y NfOYr?e};FOv7(N9\+{tFwds|nz Ѩ(na P<]/7>Vs3B/vDc3AujOgzYy  ?*ì 3[,e@ oQaڕ,d9@>ItH>jӍ֤Oa)H2.,ʛZUSTĚa<)?@ 96i%W EEMT%Ud&( kRYatR-iQ@A»'<{-6{}^/gI+ K_m4g_O*zs(No;\ҬOTۿ{+ݍlTif1B2qAЀg_OOY^oەCe7dWdrH86 q N->?}IipG6#?.N x57feMVTKO3>.|NnE~% X9͘! ܞjrQ9.,ii K,^rk|1=u3 h .iY9(2'ICב!h1(\8 lzը2c4оBt9 dF,V @=yrM[q|eˠ8.TkMND>]k-f3P~I#A5?_p;g , v*k2ͯyWTŇtWE kR_9=u8.uB{iS*UO4D;P?z\_W9y{͌QiY3/O`~'4lQ5 zۄnEj6qߛnUWHZ5#dVvˈMc8ɢC3f}G\yir)(2A{b35qU#6Zĸ\儇 (#t,< bZ3y (K)ga߂T[K"(̢^uJ |h1ӏ$nls|6|o?^g~X١@t*rPEȝ8έ_fYU!жb!u+[_጗4ҭ-'\  v0Olk< >=pWɶ>AqB4c, Ѝ(οY>ָAi7d r :Ah8'~H3R k6%ȥ鈱(cX,r"U6 a sOdMAry쮥Y;;;*J%"{y"bJ4X _K٣3Ëɧu%]XPj\?ZeB 3Q겻[\>u`C~is~{[Z”Q!EϜ.Tmvuaús_" Na,HI8[!|ǥv,5|gGRҠ{2],2=FvŴ9lٽ(ZV~##wPBb K)S{STߗJZ˟`:5p$(*T|m@Rfh&9:ID>Jg# ] i8&eǓZ.&[ox !8CjR#U = k3ssF6Dz¥e@^[eǨ}.GȬ7>J!ra%]H H^R7ǼρXd$ysK dOQ&uԷ{gD`Dq$a4/43批u^( Lh~ݣ/i;%ϼMa"_bǻcJV*Zi?Zsj} q8Gl!O7/ 8麓ꚐLɰ zh 1A"U]BD0fЇȏ[ QJ[co_tD9Y<w \ZUYnJɓŀQ0DJOY'*-9jL%bzJ78o/\ ,JͥݦuK*dS{^C9{ZrdaZF2lE6"fcߙ-\Pbpgg .M[L6LsR U҇j'sCrՏ]OxydaUJ0=/Ն!;× L^Y}xnbZ 13BQFlxbp10P6$Nd lU'nUᾂWYn):tNZYFZ'}|g%tn7"K`mbe Wu|ܒ]ܛƌt:XC%E VTOLV铻 :_i0**85yX&۸WOB;*Q*Y/җb^*xisc $eJ;>3ƒ7 jqF8bV/tA0Rrqhڲr)}葌D4oo}/k\?rꐦS\c<[T.d3S 2sq"ȼ<1l${|ԝ>@ ԁhや%6'cf6C1c0y-{Oi6R 3f—ԃq.nj^ _zh8Zsv,r:nK7fsuGb6$"ƘaԼ7ɸufw4oG b3" ̈́0l@}y=>_oG~dgy~]_{75JdHBtI/vh$BN',$}ܵyJ:pt-~9~t}šTH8˜ڒz(sը?嬶]y9Eg=tɈR|"<3A=(qP-R13y5&ϘѠbn85}FQv4+9] 7~jY#ҷje=)deInj3~?*>l]u4Aq8rK"Ug<;9MU _ ᝑ3{FK>7z;Z$69FM<3 фي)ljwo}^$UU?.'.ΡS=n F*t͖a9EB&X+d|.uniJ`zџMw_y7{ RB~F^f̒mv;zUu tFDXCUj\^^z,!\W@J3׸َW\%BDȏe0,=y@E&ڿV,CDʽ^y %J}%qd¦%D ^^qRrR3%Qa[';I+ T@At,:NDBHmʩSN %fuNb`ھ;"rއ1g܌+]'Z:zpy=Nqǁl0Sոݢ&'(-iWQ=VɉIw6 0N̩> BYQ񓔨C סA Bp:KED3z]9Wl1#_.EWajwYwoaxSJR@} ?owg_3'/ ؟lhQ,w'RPD&`kqKmWX67FRL(O - ؏hמpƋaDCEE2TG Rd')wH4]VZkfŚEJ3FuEkP;׈3t1ÚBTӖMbR۲eOSU*+ŠB"S7Xl^'֝]$KEHR3HRYck˘rIP bhU1'Wov`*e'r,roPl!j9Ofx{"&tIW`iΦT6Er43b8j ľ"I )g]h[bI'6/&G4iHU|~HU (T g>^EZ?v4wg:ʤM:dzOFͤüzK[8AmJt&[x;WהefjͪK 8 oL\Z7x 6 Ha,br5"e-}{(tnK阤(LAstkc$PΠ5>LYZ<:ayc]}60Mv(Jތ&ͮ9.6{~4dt')5DS wB`!xeﳜ5fU.v XKjPZwġfdkDZHDBp76wTIrc]7&#ê \ݵt&{M`гKLL3"^x!K5#9Ob 5g|riEfÍ9=Je'KbC<{gdqI#9R%zW'uwȿ~|Ƿz2yC=k;‚ @ 4:[!beaܐ2C;eP',[k-(9'm8 :gD3!h>3Js~chn$J;rga2>mfv{ְ.pU//Usc;%6*4gIѳV)Ye>f'(Qؔ @%g^cQ, &.BAzhLq85*K PwQDϤƗS?,7HE`ex(йnX,w3I[C)* @̰W5TPxbs/GUl7tY_ok i.PiNSR\5HoAw\1 KfYNN}r˖W]#>LjŮ-f=:K$&h5bKJYGClbFѽDl»GRR"tv;gHtavsvHavck]}9kYiL;I'ObjK:kvODNDH2aX_c2.tģvfz m@0lm +Y^K%eO,[ǓT'zOU dhѡ1|}u>i& tS [0:n7YČBcjD8cdL4rv+ O(>0FV-AjR~A*d ;M%Hz5[݉͋9߳1%}J\N:STlj`wPXIÂF"U(چv_U;A)eDBp-z#)vM/(XטҢT+?Ole' BP@Z Ϛ!v1qһ{V>NXkT#Y8ѸfR Ed'd'1/S>zU\Zohҷ(4Z[=՜k*CR7V:?|='2 "ouD(Gy9׹W//r㲓D& Oz{.Ƭ6"CVΣ_*3DY=?&I|xQMn=áDrggKB~7vJNԒpJ)շFIp2=46P$oﲟ9MHlrۙTT-U׭4}/[#R0=uha} ooK=G=÷82i$NE;ƈ 5bZM$s2}(YX2v>3)AU_0%5jv#kmrsfSZcb)\T(VB~%(8u\|DvF!J Y߆riw3dC]3l4ڒ6 7@Wj"qZ4a`/Npn%ƵDH]ymH"X&)$6{8և\x){໫R*b#j e*B܋z3 gy+m&}n16_Zh` TNwGRePB,&|'T<`Z OvGBí^cuu`QFOΠA-|>]0hmJǁH"򷔭.1E/'#Y rWR)nRzO$!tAþفZyw G b9Lm>l~8Cpൣp7+539!v WPs CټEB ^.PNJDU+6N{m$CMwUci@_4 }ُrː+8I}aV+yO{DsB g.*^yr2'Ki3> C.\NQn& p_Yt}5]Vd[C}5ENA _uHW?׾r?~|sߋe'`eZf-e'+yyp4J0mùž ٮnцsa]q!@y2hw`]t.gxڤqD?K5^5=L/V%lzg$ٳzj%S”yJ;ӂqc!$ϔ':%UWbO^-Xmrd6rÐHr N<{tMf+KYܫ6Ju&G"RCjz?7ڧoE!@|8Ud|c@M)&1TK[0GMECuL0?DZzoƳ M4&]!l) z'[4gu`15RE{.KyK.I&ɩ1yU 2o[G\Y]OOV-K@a@4R:mF E&? {^a>ߏ33/$ӽIޓkxgńEǟ9_ .XyӻDWªh\ܥ'vš.;e  Nuk?JLg z&; Bnr=Q;LvZcrOI%(ӓ&r3b3T[ ؑ2NK^9Rqx l"rivqX(Oª'Fb甀rsnxkg}3֨fr5y KۣSw9>q`3+R=Xql.Dl:PP Ը]G>W70>(wߡGQ 3M&K~xgv/bO1wYR9ɃQ=*-Hif)f|ON"ZH҈P[RUm?rrgZYg.R qNn7 ^9`-~>޾cPizUsF_;o7Y";x!T#jz8Nxһ @; uƻƍsۻb"g6!1{DҔ{>? 9N$dc2Ue Rgl`%m 6T@3D,SW[q|{E*_8EARYT~og?"M\ģ(>1OYwCߣYڃYʛ+QȊRrf{G" Q8b!l!CDE&SGy! cY01yb khD\L̞͐`#Mb;436sC}0~Kf6Uͭ'DS?=@B,Մ:fSQV505d;N-k$< <,`Apo{Ds+r{ Gdǧq|$jyIg1(N^N~IE!kЛ yxwZh.WM10\.vq.BCw|P;(#6<C`]y>1Zhځ`$Ш CyGg=O8>m!y`E(XeR4/=қ\n:mo}H`K:MSwraLFЅZ-qUKF8ǖT eľF.mA1A s~XE%V]ΜJl+( TֳLy$Ziq^X_Xbro[U' ݲ:+F8k{Nj\ä*ԬUbq! Dh#ZTdX0fOԡ*WPECBTyIx^w3JWD=@2ʈ4[qo*FYh9$Ѭ\4⮚+btD17BsuV#a8XÒ&oL_VΦ3g"zHՂ,dmw1gb|B=%-_3Oq|!?EO_nKeՖ^/67yB3EowVB, ~݇@s2#,EX3,LM0xFJDh-m&Kwܐ fK7buL1t_ JG#ݖfhĨQ dɎ.0ҬM䣡F%R\-Tj3W{(d`=3tӳ|M9ȃ\no!dZG^? t6YsֻwUKm68P#QMp"rZ+@4$ݐirUڬ˯,\L)sh bU`%i!Z@ LcHI hzn`HѰ\_=>{1 znL(zy:0.R08ϑp&Ij>Q:zѿM7d֨Ѯtzz%x ,5j KtX87/- VN;LiL!_D m;|wd1\Ͱp{#Orh{hߌ2=:'4kEZ|ɑz3{ u]Ӎ !2rn_>lїgm6'{͂ j;%sngj#rx#w*PH=sP.E_&1A0.IҥY&h wN|G%;I5)Z{o2@c/ u[Ç>K^*$ь5*Je!3F,hvrh[jHCjYG~YTU>_82JK 7w/e ȑ'Y+RIv]1kJ` (xƆ=35%&=YV:|PSƽ.Th-8 _&x*ř_$$^,z.R<*4 ,cZ=)(} \WZ4MgT*ހ=_dbFBVwofNש/bVK^_;> =}p$fߓ{@ |vkg8#)Aaɤ(e0?x0[>:>c'(a0-R00:}izIJ`:OPXvV?pޅtXJf V=䶃NcK? obBaLIî8C7 i;vi+TD|Mb! k<-[;m[c:U) 1[ kt3;!ڪ:pBJ R`:ЯOlmKy0\-TM%偤Im6+&U'YO"dz:(.$-N$Ӡ3U+MS!ip:/B>2g%p849M{L@1WDpFp!Ys"g'akafi,A w=nƇsյHPC&ͨl U5w>j}-g@]91eS` ZbޔPנ8yweDIIYg>Wm)FǾI_eaE5/ri{xs/qQowLMsH%U!+~0rd\Mj!@kj8,R7tU@6Ѿ 3ݻ,A/՝>D"]rV' 6F%;xdV7y(nX(4Ӛ2X36P"ڮ>O 5.=fJ Q6Jf(p]{jynoJɯ./ee#]FE]ݺ:%x+LnÅJ/-(+9V}_njWo7vrBYsJLNiuCƠu_UIMN1uG4WF0su$.7A>T(\ ΒNVQ_ld\;*WNqs'{.hH)-1W'gLKnor;xF~P?;NGX]+?/1d~{ q<'ALO*A~ _!eW bYA8ݜAV5"cm9"baN@d'8Bm7Y3;z=n vq;We0*h,Cx*d9BL4#E Il-qt"j{D@:h`<^g?Jy52IKk{`l%R-@'Ojܥ" Me CY5r{;w'U2]S2*XZJ158ݢK Z"c VյsHv-9QSäC:O%)^1\M0ڢ,w~+B(&h .:y.$1GKk ADzLDDhKE"C)$^M/| }UCfGO)MP%"bH8Essg:j8]PBkpF쮝%[e`\Pi7pa+g]‘4Tj"*.'Sv pBF2ad[L[]/EhTcsw'4 GurݺelxN"n@yc- Ӥao:C_ػC<bDQ%pJ0'9) |FbgeQXV׹ЮVגGfq5~ZCpȁS=ѩv`k7ϔ9[SD&\zN& =[7i:Dڿ0%,Z"svx`.aO'I;42&WMn%Ii01FP3JjS4aIW7+wM]#Hk -bgv KJK${5ŕ@+ K)\_S\Q8T޽`9[&s¨u[.b~nUznXe]94g֐ zprݑBFu3(eH>9J j̟%!h\fC=ʂVBᶼ$lE-m$+Mޙ]|~ͪF)0Z/P9ڝߴ5T+ǷY=> q v[AO'0Tm9fI@o '5tbV$|.@rzEaDEgawVÍ [*ì9- ѕw:aO`hYs:\q>я2D,6TFC,өkonH Ǧ'8^rHm\n\F4+Ku*:GJ9] z75:Bo+5,M,r}Y*+&K=1۰ Tm+ծ:5J" `gHwv.FpcgKa)uTFgWL7` ZVLː.OΗ(ٛ>wjoR/э0BE+EN L)Uq:Y3T)x=|zd>0Ƿ?T,/34wh`sڧƍJ\A"^uaŸ:S=MR"$B"/\o=&>`(a7-q%MIKtR"< PSU6Y:fg0~Ft1]I~"{m1''od4 s=@߉4SýyN\{JΜi^I ULӦaz[)(jл2{Xrw!*X-Z?'2ڧOt%J=0C\H_[CKJX1nTShI5HaR*\/h"&gSȥp&KfO#˛SHA#)]X S;rvz^vQ8_k)C=SG")4wo[&3! w0+xK(."OwuyjR9TY`_CVx_]PYߗA)I^֯I%vƘ&W;$nFWC?bXMģ<$t߼~6iyxp H2Lh;c)T[Llz<\7JពVLOJ73arF=FsGD3mS1<4afPu-%M`]B!NlD<=DL3oSQ6C3B~Zd>ȒL 8sа xR&TwHÂ"ca~@ ; Cݡ 陔 ʼnI$)UiZ6VF-G:ЕLk{d?yu)T$tXS`[F 'vncQmPd1Uy{V|FLJ3}NKX=Rv~0Db.yM4I1!JQt2uD3MuBAm\OH$abjdd4Kf?5 p3D&FEO64Y|/H=-2#N/\} ?t&K mfFܣ~裡@Oc Fn_=~L!$I틌\l{?ԃ<{1{ǫd71›@ezӲ3VUe_UeGrݵ{XuDkRQ6WT5AFt#D2#UUT0WO:|`n/Ȧ&"#}yC/][6"n_Uo)(yɫ qz("RYEs@yd:]h 82>(\DOgk 薞ju#^]_KZAhNJ .ȊQ9U ɊzPg)๺mGޅL"gJ,W^`b`cdj7O6yq Kv0ٷ^6 }L q<R+cC'|7yɏ_+Pʱؠi{*6O+ciڧ浩LUc1& `PILp APO'1bbzF@)#ءdaeSx|C9*\"TDi^@a kqraVhVzyxӔVlHi{$Z"*c6]/j($X^Q-Տ&8g8E:2ғvGѡG)9 M< 0+|Zt=5׷u([Y紗C^:A:9EÒr8jZ,Q[nu5;dx Kq8gtɜ0VDdS~>0* uYy!ՐwľrIO?nw0%Ng/J|Di7h}@ %L`Ε8 hUk'6|3xgI&ʭ|9{Ma}F-jr22~V9qq"J;7ZF;H$DǓ#&p$At69Kɛ>XrXSW.!i∈"? !O=oMj ߷hkN +5U +eXlպ5B}oP(%B|fQřWEP 9<|%ب΋ԔM4q懎xoo9?K@@! 6BwB4!<*$Iߒn8[[ΥNv Ԗ>c.3:V [˷m1=2f,,"㋼f鉒rGd4lFq<3ǭa &fҙ2ꢸ2)/ާrtr=舞 ~NPIΤtbG5c9bWlgN+diW__H< *%#EIEL)A?NJ˴ߤ$|{0^u܁  1lccQZ"- 5HTf:(c(# ?eu878gbhԑa:?l{fV[gmjwʓ D nXHhBXm.\iyXV*.AmE3z9Ngɯ2ǿ2{ݏOqyt@F`5j;nV6oNu ŨurUShtfT)4(zJ"madˉJrN4[bjemUՈv!`ܕ7?C|~(] 4w-֥!5)J"2y8FV$q{3)!g)}g݊1PKۜjt~Um*bIC]Vΐ1 Ӎ3M5t,?*.H b:=_yV3Z,]w䤻h;v);_Qj[MFZ 58PtӊBAv\C+<yɶ P$Q5cްYW) dtm2tЂWBNʉK{tdj؛NՋlS֞BCow(s TLo\BH^/vVvGϓx F?p|R8;y P"'Ri ex)aUɗY(|!M+Sq餃`GhUB(bV6\p~zdmgZZWkѐܚ^v3]4^JqB!LS`]3dxBJWWV TD]ŝLOָn-|Vщ8bЋwTKR&bMUPzT!]-=EYQ4ql|2u0 c:"jˉJ"G5IU9C7B*̺USє%V]!#ȱQ cNaݲ#b -pA'%Ӓ6eH>t6:NG xjS~ŕ]5Y!Qj:Yٗ !@Fl1P3pYC&>ٿ L?z''xmAEl Lb}n\>+`$A'* Z5Nqx-v ԻE#u"s'SwT"uSf5>Yu*8۫YKnZR%\͟q`AE||'fd=CCjm7N^6w+4{^>J_8=h\/<2h]gu`h 5eUy'O$cGD^<~A ơ󵄶#ٞav'e#6:p9/i~E9V9q[8,d";GuǣXn yu2]ZsZa̙ؓl*+IńNŵDrλb~L[lR -e-UjjTQV5j̯&=2#Dw0WlpAqXB4>l xѠ׎zIj OI.uyM%ЫFfR?4|Sqz9wa֮QlmiÄy'YRUb,rf7A)y#k):l  q*(ۡnWzӀ@}|gpĈ5jEz, +h`fj% 6o|@OG &scz?+Gr'HVEDX#dw y'8r]Tx?n `nWOeҞj\Ρ.>P zG6hӀvd7I#?-LGp.CHaOKg`fTFJcm):S5J#8M>mk/ͥn"-QqB Qsdʷ[R[9>Bmj́ z-v'ax!g?R %/,rDg69V[vz}Tޗ>z5yb麹-jpwX8pY*wbUs_ɖ#05V07EΟҹ 3=ʊjܾ3n<ꪇ0T!-4CL{3ۍI\PAalS蒎w4 ri:ig)rX>BK,<^j=/b;Gޘ8𱣤> As{9 +b̦S: 'c$WF$7 Eԡs6#$j;BK;5Y$0 ohb Ni!ְE6Ty64;hmAMRq%N31ӵ|eogx*6o:  G 1F0qL ֑m3R0хR{-4diiy?^Etu[K`陛!G])9je_v -dnqbMpCwІZ4Оqw&kF}?w*t*vGmEx~⸩ j=< 2iZO$ET,[Y\* GoYQԫMf_~6C,ʞ LQniKTGr̭k[ .w$Ɣѿvyj*Dh a{K*;R})-xMVξbs%c%(iNz▅m|3 !.SuWfo6+ؑa1"i3nƯds O*m~gkuqnKt MeIvvNX&iTfmG;?in3b`DBGx kxqD^3C^rNH=K'ti֚vniAOqQ욵Ÿ~ efn[.!gStߓAp} 2L ?3d4yyMi1OrϨ:"s+s._dVP *ێWi`Ir^k-'gYѬ&0v*-qziLҤĖ|69X'ݶ~,{?(>iJҥ&Te4HRU, T`CScLb1VQrE.fׇ-a SI|>*3MH~3"z<7%]v/ +:!7o>s};S˴ eD]@T`|;[zf/,'7Pe̘tpʴ Ր5zmL; OՒFr6Y@hdwj>Εn0:0T wHqAkbz`C1(}9(a ȈM9]{QN6؝Sp3YK9AxvIq3sx@noh E-1"a ?CcwR!K6GPk=Vϋ\k(OҮrM.׃#vRek:K'Q8lpbRlЫ(8=cE;Jd%b)LPO)"HYlO`v>(q:3|iQ^ћy`5o@8Ύ<&fslϒ^P"s5 a/"dj5P5:XtMtd쬐/\nh/ΒNJÑ_kܱ`u_Ǚ8lC!g Ό"cRR3pnň,L-ʐ[p(ŚEW8 ?-5v 8Lx -"9yz*~d}%V#'0DnDgv hS.j@^2;3FҞʅo8_h%:zGN} 8z\UW{/ϿqC|MLab )'q;/{>ͣSl t-jȢM ;NE@.Œǭp!]_6ʈGNdc*Ak2LŠ.L(hsV#K}qyԍM̫nb'<J"^='1 +{F|6?Ƀ5*N3v%`񣓚/\t kV_=? 9 nz@3“"~׍y з@Anz~ aX<ɘ.(!*V]Uo#/8%5 DOрF!Ȑf#%Yƀ4u70_3t⤒T-g3L lΊ}RpvA4):*(i0yRAY^.Rqf\",VgBr,; 0AVcVG˶Di K􈬦Ô2gH7HNtdW%dNtţ5bL^΃y|_r$ph,d {>4)N~6Z7gQ9a p \H}q<$lw}M8_rOW+#o3ʴ ]c]]$>e\=\R`'?Ubվi-.Y^O.t9^Z\ñ_ F_?u{d%]ᥫ>3y S6v'E}@;Pz'ܔ#O#O es8:!izc,!VmF^{b@'ōj-/;;Ncf{Eekī&G`шz$[$lQpxϱZ(Dѓ[q'Ƞ 70'N]T*v$s!Q= { qi8qk `gX=j<sm.9Fmǃ[Rekr&K'0 ZÄhQ}yk1>R ZqlipÎ%5 3<#F86r31+%*gܮvG TrE)1UQ!Dm%%emV5|~u9[8Q@<:Vgc"J-~UȻ.!qKLУKsBk+6y?}fvgdfXP/G8?8 5iVo%CK@=.Uo.nfх3t<{y+]2T;LN) L;:R򦪪>ept<%Ŗ͞L[V 5[:9M0jkkAbIP8XGA]}u\ ,:B!-dJmtN(BOSɩQM:msePA c*59( BC& Sg 4@98cMd9{w$\$9O Jޕӡ Rf1DL/Rsg@ШYXp,,!rR&G[* 8#{ɆzPX!< Ȓwu4Ut{aMI'goQ?sV̥9":6K{;D bSB0=E9d9⤤%%F#ŷhL~lbP yrj6?u‹`Y1q6bV=26ó`N63py(aba]!׸]yAw+\*Kf?a z Jh ;L;hg,/0ΡN4K( b/@k0Sj6HFX(HgZ2P% ӮdN"㬠 t$ގ* $Z?b # K&4#=rIEr!ۑ4 OB#\32v蜆sqk@ʞjf涀5R8="]w:fbKM\6F@!TJRl^|{$j -v{9S(ɩE4 7\Hn vf}dd߸α-pZ9שosCщL*4V:wu1Qu1m(Hkس A*P#*'M$P}]?u2i,'E2a5~GX 2dg8fmGAAbVl8` ?t]c0yE1ai ZjͶAAu-::BeZmR\:ڧr|zq#"ݫ߈HkB،-[wvbOH+valA u5,Ƅsb Ӌ8@ޒ_LyR-i=JoFOBӋAci}M12&Y,ڭ'QQZ3eIץ&q8d19ְCtU Wa򮓸70ug<%NgA5_/kMbD|dzcգq܏%z=ztnk;yU*BR3V}V}槏b:~Zݸb٭NGTEΌ`%iu~K%vJ 7R޷):RkV@)%)!vGgPg5&c~Nt{[(35KxO~{, Pzx wETXm:00:>,Y+m, }H5K fRNCG= dl9-kLŌaeC8ONx)h:+}9nt]fQ 0( ֒_hkȉ 9Ь90<0VH'h.(} /gar 3xj1h۹!~z`{oLH>t)D}k*gSi]6Ǜ =PUiшpy5 J>"od F-τpgkCE93#7ev wgh)%b?V_^xվu;58wJ$t;q.#zʦО/h2Fw:'N5:w$)7M=-eCOg*iBȝD5D/ހ,6!zvzVVG>@+ rTa'![%13Fl~Y|)1>++5bx W4"݂%0w%myUo̘E,;Aw-%1X,w_9mޞxQrl}M#1tc|*+%坒Ks_w-b^Lһ8;8 aA9)FAe9ph6[XQUd[,^yA#[,3\c i}!̓>Y" tSÆ_Zr-Qp:<5C!\~>RWGa{5HyQ[1Ce' a|!:O}y6!< +Lx*Hδ55d 4-!8]!mhPJ9P'7&=vfRŖvX64#Jo:OEc4(^;5&Jk{-^5ɓdoit)kb^-Yٰ})-0n9og 9,OO"m7``˜қ\l|zo={$`]a^0<L}BKRI`{S^DA8!<;krWrKw[/L{?:Єw%60!9d &sO܃5CwTgrSm0N64^4DJkl)x>5YF{bMs{~ꇕbIR4΂]\4'_s&N)}җhW$;@pEڕoa25;}bЩuY@w)+f$fah0l oK~9O~.O }%a>Ɖ}b;@Tԍ_b9Tc|<6`zgJ#3Tвy&.@u- gcW"0z$78$艓tEg\9zؕw3AӒ $e Ytm-<'Pp,xVbZټYO,t:p):Y$)J?G^E:I)Sμy ] m Rr: PyQOW !,,XNj^;[lݕ&%-1ךDWj]ZeW2qpm~8#x]m-U]dRѽh)z@Zg%/&YLH(Q~r8SU{SX/oyg,1z[Uq\y c2捅uԛ0MezYV0#.1 F!$(GNҐ">=ߗ1HwZ)w5; d*O,gy0~Au2_p2#5+t5"ewg<<Ŕd }[ ',zA)V &-:Ýg9/'d݅*\&>:v,\HZ\L!rc^Puǖ`9f1aŶ$ R+![K6{ǾK/Fށ$%vfoq^DD'G9h_$of }_u_ty)tMcNn{Nܣ@#rSheo5"c frc), hQWb ڌ@5&H?)RXmڗ szP ˡx ,cN@f`fSSmEZjV;q45xLw4{KY-aX uhHr˘4V)I9=-yRp@ M?nB/ӲrT"QB@pxrg*Cw=b)5/ϸa3CƥrOR%W'G/JE2eCploϠPr>D(C>HN^V̪VHrZ+|lM.NXb#j}o-އd^,f\m]3om߃o}¬žWm'ް&%ݩا |~*9~v2 癑,bє "HhfPxo eS|Dw[gw ዕJ(T ȱ|/ >yB UZBP~ڊ;,UG6+}`*UY\HNp6v$0|Ƹ6;Tz{ˋd'Y!1Ѿ)gT0WNSj4#}19EAEn.=#)8һh]+~\?'t2l8vG1,)0h"س١͟Ƿ2-1O;8a>9KBx4,ҪQ(">؃9 |ieK?C.'F /x[Kz:Xj{=!E+;O9 |i*ExUbe^_%C弯K1h$|0_]|2O?AwA@|Y/׈]R`d(M hhRM=i#ST-Q iZDIc X)-)Jł;=Y2UL$ U% .⹞!1643DJBŏI/fpAv%`$L2IWy^v341O\2' q>nG! OX4PaX\ggDh ]%S.z y\=זI!B4y$i)m5n Nz^g@DBhǏsSʁ#q~ Q*]ymSQc"='&3; ;c4c$M$}Nd9hs}QLhe+PdwN]ǗP j) YaP?s.T|]N웗b";*7P;)|!/ Imrs&vsns2f^6p`U TLrHlݝRbR -ғf' `k=QTx9itBRǛ ԥ*Xh@ת,kgńN#&ߤMĽƭSR8ˬP2 =iVƤw[H/M{}bmB:N(=_C\_d3s7Y "Lsfi y@Tv$`&Ϧ1LW񑢣TO.B|pզp8æq͝#LH4KWNԌz1"7 hX5u}>!5P1B9:'O GXLtBuG)".veqCرEf!@@5&Y3}3T,<1wHi?pR*fI Z T[6Q2p I2|qyj_WȽ3{ȍtl }{Qʚ͔_׺7>))LvO QBǿ2WBcw˗w91x.QA8 v>}PZڢt ,۴ܞ΁ʫG&z`Yx,{5#Owчg׺-K2#u?`x^;Un V[#=$@,?AzHX>xm`9e R~FVXPTF=2]sݹJP)+G)ܬ@j͵絪"gQw"qW(jޖFYyn(<' v&RFiԋ0jc+}}hw:]o7$z##7經vY!S׾fIBtk^#uJ.xۙ^j alMTQ7HYFX%ES^o{S=rS}2X/slUWj?<=l/|). *f!'emQ2#A)}|ey-_q jpUFu N T>ײ{9(q|ve'4XF[a-뎮 %_j"5B^D.GesA={˶r(̧;?e̟8 BA0Ā#&OzKOY`N T퐗o+}Q磌.>4$UE FDst$Pa/w""7[Y.ӚAW֭/AgV m_8LuXhj?wbxu؞&sJ% Zlf5W# uNXRb>O[KbC`E.jIlN|P-΍i=ӣ/V"l!1}BvSVto}./N%☡ȉ2篻K{a9}]+бKrtQb'Gaңr`Ul︩8wBc1i"],]܀A-tiBw&cgAKG+SiҲ@}~}U¼3Oz<<֙E $(kGN ,(gAI?%VmzZFnf gѰX9ZV32-& =Y)?o'ZN~~nOK\U*7X >Wrt:/|-OS"JtU[OA *g2 9iKfwL_c%fDFGRQK7Нrm̔ĞS A--(CMPCS9*> PFSMTB3"M3wg]3ϭ-Ԙ=1~S ҌycAֵMTs5+gFg=|LFaA"&+j#JQFMg|x:U" D\haݖIU |R[D'N `HhC[pkCK`La3Xݺ'2cuy%1Zޮ,PC4ٓTE g>1~M tq^;gvڽ䥣Xxn@щ}]~&o6xxoCQg.po8FoJr|T&ekQ.t~PrLZɡN~3pvSG1KCyEi '6 ycKյ9[ȏD_-ij KJ0)ko2K)]_0 3|XZuo5!{:PFBTUT@^A %2=cTQ.8]e0AK^zX򩫢_Ze'x@I[t%(wVS<ۄTnroiƩ$~ ]%̈́nz/R2276TU󃡲fBC̴d.IUxb~MlY%#vd] &2RqTU,-- #wrf]v5~D˾8>BIݟuspnPQMU2\rbz'Z, ǞD.Zݩp\wF}~eK_h0R_<']!gM_Tgv4$I|7G?8Џ)*?/=?3?~KW=7yfI? K-EZ.{0D)a;i 9 ^zB7y_q~-~9q)㴚)m/Pp:YH\,LWlMr#{7*^d3 59t]Դ3SkRf  #ywHs:9 PYfXu*<Ù՚bqwp)h @yN5#Zm'?`hRc{,7p*+2Wˎ |Ek_I*qEP?͏ABVC\ E?#,ܟW?gz) x@yz@,,]^x* XAf(U,5d7mVγȽf}D]$6޻>1:/:Nytݚ(?;Y|L|[?x{[<='=>RFQ$ Oj; 9o.1/f6Ep0A0OI H63/1n>v93W,\Dz,^{{{O4Bѣ(P5nj(xE]A=9XuRjل}LIģ!,c^]Cs>7+Ǒ3{w/I1rvMP)=q-xuiX.?GK2ScᏯ8g&}%>U]p8tM/Fs'mie371p`VZ?eB:Tkkة`ǩ!OJ7y1/LH|]Xc-:3u¥іXnbļ'1֥[b& y (s#΋evZ?F?- TBxdC^&"0k-Z yVԪ42[ NO] E NEe䥾 %!Ϝ0BP+7̩fpm(/xh]oE/##YmMЎR+:u`7n}  Eͅ|i Ibs .}=!f>/m y6/}d=VW;zSI'{Foe=3Mw\U<<4s;PBbZ*@#OxAFMl "*-06]rVW Lk@+3NAdz䈃hh=vn3*.Ȇ*E:5O̞rG`]ՆvD z5|z"ytJ =:ä[c\` Ŝ{)rK}B7̍2̚١PE4혖!v洧 ^F (tJH#jwULN{޲P>r^, xBnՑu cmE0 ry_J`#*>&H75MAZs3D&tgqLbBU^XԚp X;/nA'=Xi_'7՟yOe{MոJ]ba 11.dItD,Qso+T‡џ^y@?1ji`@a&cJA 3v)n PTu3,X ߷n:E䪃6ͽjO,Q &HGʈ< i L+Z81'D۞04%?4Nz;|Rf Zл ^+t{eUӕN5vQ m(/ )54-wSi,W}6hdSM9hd ]?((MBSZRXlyb(_"ydK `(R8ߢeD>+IVW%;g㨴PF8?f ƈ2sOŰ:drZlt$e~>|3:EtI}o??doZJփ2:IJβ2nAXK͇'g{9)3%70={w}n{Z*us& Op'XC1ι`|<aMPF#63twhkӂD5=2 zyTdc(` G L-: > &7*N!&^һA zVTkg Sgta䛖;{r(R8&*J!tzзfV:_GáCsL݀21[l1yD /矑JTѓuܱԂ8AF|0y/ѼHWZUW,wIݯi*فE*#(AM r V~2.GvQd'xjx<-9=Y0S-^&=ufevaQuB@nN@[ʝ3m׈YʏQrcRPљ Zr&Czeiw_DeNXia(SsӡmpjeYh͙/C:R,`a|wPe0DzGSs{ L+ç~U\udHmO ۱2٫xr- o,HשK9Xζԣl!lbwec(weM-z9FTAլI̥H?۱g'Opi`dԢcyW&aQ480O{qhls`~z:<)윘R<0Y {AΫ_`Пe({PUM'HJ3*jo *o7k?k]K[>6H/;U_7mgMz7V ntzLO!xq(2'RULJ>EAo8$!m,bTD=x֣ hG X Qs)O4.{V?̾ia< O#qjSddNZJMBH Ԏ O,yUΐk*(4OMafeub ?aJrRX IhV1vҋfNX/Ud74s\x˿sA8t(X[R4yRWVǔ' T-ED[ ¯^oGQ x~>;6wr+qӾΧ0Ǘv\?.ɥ]' LփZwXwP6׾Nu7_ٔlSo7x \Ot0QAx27%D*bԺL3~"jvKIS"\5100ˌn F4aRBh{qݘz3ݤ>w:.MG:}\;`&<ܚ-:@.HBvMRl9Dgn@M!=.'MOך]sU[@QʿSydDTŗh2[^ޱ4fK#s(Qff% QF czI~1R<iEk2Q/1lj6Ha4Ks]RH 3(j=yGeNs;6mwr J \Rk5=W,xgc2dM/-oW [<~.G)3CT/G_ؕ{H\ CgurG;>OOH+XY-D:-B8=mnڮ3c;ZV{ezus?5cך|Nz4W vOy^T1m}LFU>&*zqc#fvgy,6RMK6T7,%tmϞ;qu5KKbεXYeૣe/AM iJv}^&Dhq9kK4[GBRMTdzTpW5ʿMK2_]]ƲW"b95ѲsF_?Fjڗ0o-,i?ǍGefOg }EzRsY2n : T)VlKV.fO z`Bគ E.<T9ֵʙKE.ڇb,){iX _^Y1Sy1\0*ǣ\!?] "Fj,wVpBas w>=HޒQxRti4^ՈT:5ӊg0.[ h=b]v JcoJqNU囓ӧ65.e@v oƭׇ뒰AFc \LWj~! Y?tty!H#))!zҫqӰL:S82{Uwņ`9/x姎_ϯ"祫O}#E/c j8n0䡔\^Ym\o9]NN|wsQ'uFS_γ0^+]' bl$|NDӡh:]8 z#dcz#`Ti{8=  ŲUb1]%(QJ{aʙ#q! sF\`:'J!gKIh4r`pR Fu~綒NX3D*|hw)R9זV$\3!^Jߨ8  RriJlZxms(#8Fn>lVkjBknN!.K Dm,bm|_I`H=!u)j?17Ep onQzET^f_ZY<씘bУXXWN5SD]\-CN"? Fߤǯ~wswvY~|&F Uܝ5f֝oZXkRQýl2;o/Uo5f) 7 ;˰Օ^_^ʸ\;Ȓ_Dj 䶊K]rz*+f! vΒI*/)pgb6 APYBx8O"G1{nm'{,GsAA7Nuq'PB~cǚ [6iO-F׀ ρ iㇵ0#;?"Jc-{{b#:T̶ux|^ (v\C誵c;z6K9L6ul}̕K"s-37θ{H.IjJyfg-O , ZRZƴ 4ۋ!5De)JbuSQBy r6ehF6q{Y7`408@Lf+PX'g䧏fl[ 3y9j0D0eH .8^4SOpPra۹|Ɗ :n=z'Kc:o]&1̈́6ѤUT_XsP 3&yB0NxHHэUZ}aB4y92U)="FR,V2b= ulBHH'7 ,ڎꚸkD>87̞٥yZ)%aIV5m| ͯK3wxDo%C9y xI!'>?.`ϸI2q.^y<5ŽuFAl?z|-O{Ϙ |!^s4ؙ#a~G[cf<;d\bvTҚ?3HԮLF/0[+qb"ud"IJ*{"K&N c0וg}bڣ3(Pb/ kkncJ SZ*Qsɶo5%8i$*#U inNM4i`f8xIpfV"/RkI䥥kvS#c 04fʎ콱G$U\@HF=hlōޑG%E;łu6ㄜK`)܂lij2J`i6@u) kԻňUV\( "7.P] X7f65<jRh;m<̄7UJt\$爩зDP5nm6}rӮjI8f e9#kP^)Ģ/Y/=&?{ja5AzT*c5+͏Ca9([sm?޸F>5]E5v7.Yy;&N.IK˿=R2pM'g)k1DQUU U;X94ӫ4IΧߞM4XQ raXMłեj^cҘ=/;bI21 #AmH9)&UqĢq5 x%55tӞYey?:hsGyu&<л]&w7&P07@S90$n9͘z?@1ڱ*F9^Q5kOW{_\] BV kBZftrܘ8_[۰aKkH=8;\o]l&/mC`o iۓ/!ǏGJEɢX!`q`V# l7jFK|j>,g蠺`jDKӛMjy?KP#H' z FXtu2~_b$xd(]Ax~%+;_PfSKT_&qzSvoB"G-b# aI7 qpp⁝us<'-eW8vmoA#ρ{|}cRRGIf2[zr.zy2"E-߃ފQ[T gxQ{7Чz_P\1+QXoD)=}^j;4yRqIS) ,ʳֽ)h07\ ͖xTK9_ P)+Ev4dا0&[t'F'U"_ nv*lG쪩VVYCOsw"R#v49 Q,B$XxRCN'IO]ϩJqNܥPllE-}ZR!wz7$rZqF@{]:+lo S4#DSWl]]dz S<Dq ھuKNjx(A2-@7kkni0Vy3qS1*cR ᏦV[84v'G'/fyc?Tjvdr1>oF˗A@F.2󾦨)!:V >펍v1LVW3E*2+%̀=':D18P1[YM™ 4Om#-aJbٿ!j6.e֓=r*kp*`3vhvP:(np4cMŎFs*y2nUC;|eX_ (9 4|z;u>y䙮oz^hO98_Kcivv/@iKOt~ $?(/ DOs"O=S3#&#"Eiׇ]H~B-Ł$CɐԦI,L w.$WX0+I\F4qlK᤽q~9'HP`[ѕD 'l>!(k$a^lvvL|%Ij[7j4TCTbUT}>w ׎o+$0͐u Hz. AjGsE$Nӡ(LPb&M%}v8I)F4W<= :oF^c!qvŤXp go 1QӰ)a'fCS g I>nc )?S0UFrjs[Gɟ{ͷ~<"n0Zh W 8?j99'M+tOu`աv,DbMXrmD6yeoG^ [u"le2EPyz0~s uh\Kq)F$ػBPҖiH_F_LYn<So#NaQH\ϸ: GXj&WU4Z`FUA/ߐZk3xN:1LXSdX+:[8>Kg(*LsU~kqеđϩ1s!S7yܲ+Qz$dd'osяߓKz/,ڣ~խznfk.UsVU1 hˮLJCbuqn۹$=zMe哅psc^Ʃ47 \/do~*_̯Mn~oGvF}#JRfIz=_~[Dv~BwGRxHC'12h.W33D&-<)]UYe, SPȸ Mdtvw< Io#;n4)OO~:ƚT]IJYVsy1,;7:5NaJF~^53HBiӚȢi=`6i/2N"e5?2BYAym.*&ɹS";IltBx>҈)]hiZGiRN;M>e+qً"ٯ]&,I?"q)3jf~ *=YQտ6o7uǫ+G[¾eiU$Rp#'>n }ů9tF17sdheV<+%ErlU-1S+krcW'`Gr6-c;lMTt$2ۡw< ЛB@XUZ9O Yd&9Sa1' B;ڈ݋|6ND*/ČqVNrޥU= > LؑrO'HA%J(-7fVq<=]Z+k]N)Y@"ꏩV`V+F{~c4F85w"‚0%뫷`䲅%[Q;㈼^\G@iT@8bjZ& 55[Qz9voKůKo ^ևϏ3Bgq5+GX/ܳU%A\nÑ\YF#:991 ^BWq <+ !Ɉ-yM0v3$ 7e'jd[vo/!Иyo!7m 3s?~tO ~{/ډT}? u id\ve=j4\4NJ*Q ⌓EXċraj6009g&H3(p?bqv1P (,S_ov lT#݅pv| `A׮̪e%ƄhMefFϊ.v&ú+RGr\&W"ll-Av h)ehY_84 eb&lTŁGC~Zane}%xm<co^KNj]bX((6ڗq"Bbu (8MZ#^&F{$G^vxr:X/ݘ(SwK!u \9'Tr޽}.}2U|\=7,$u:燰fW-ocZ[V_>4J`!?|7uCsb}x1{ˆJէ׋d@tUh;ߓtxtn^PF wՎxqVAys?~$>7s6K&GGbG[vR9dk)EF8)/o^%^UȉpZ1˘n;rnd_bKਈbqy𯚙#a;hHSΆ=᳔xkTN&b[Z*򢔫UcLX4L̵)RN=K0t5UNCh4OERnN6fi R L+a>8qDx\(!}巸txr;]C=O-2+J3w/D/4y 5#rsMчp7TEtgc^=F*(}/מ(^TEWXb;:>3D 0M) &&>}:^cSE:x bS{1X /zs\X;hZ321.A0f j1F'YI^ݜ ;tN!zO_ʡjqGhdC`< V3GK%2%)cv dQ[? v&Ms !Q~KZ+j+MVC&Z@#޿})-ge2剚2   UŔsӷ-ʼ*~Ca!uoS_9gUPw_r d ouUe̶ fOb*yӈA/X`lFgIs2!,(撺;ͷE4^V@+i{o+fu?©Ix%2&zOOޟ߱GB}ޟ;Z0YS1b"xfu\}c,?lBCK3? f=e̮ hrm#N'Z5W\uS%+.Acˍ\S}$W6qx@ ^ E(I>2f s)S:gL*G+ۜE bVxb5IH`yF*f21ڒ[5*ᓦ mL*88]b`4.Vw|n5gלA5"* W]FL$ά)Qd$ܬC%q)#@hlx<=?y77?HIZc!ް<, 9wx20= aZM 'O;m)Rj4;~1#kLuѠ,} ˳=y1uz-Kb 6lܴY[.vw?)4ZMm?(uY@L"W} ͺ/+(^_auUv[xCq񴁯qڻ.S G2A3EBDrZ61p ,\IuNH8 J`w"("=HψKy<ֺ$cGLHVF5+,Nej1 BD!c-u V:@VM|C)c g HΒ ׮Q'QQ嚫J+ףH^{ĚI.ڞ4 {q:Ǐw>! `?pM,P#8WZ٪Bϧ+eڢwH,m"bb)mgtHWI>_N.tR?<@#\G PVU//{1Y2ht(/ȖPL j(/&yLbo _T-$ߝSKIՌnbڻץ>u2h|&Id?ؿW+6kO}\:|pș`@Ɓؑ>ƍn(g<rM!R]ӻ>K꣸pEbJwhpKbtp|C !NP%t ʀu ::ǾKe H[̏FŔh h }6^|N^ΎJYJrZ5'i R|D?P O|4[["kZ2plNEFb: #!ճ, } aDUfjźrº]QQ2;ǹ%UuwXl*A+q]_r,;T!c\GA+(Z H,F,cmqH0"^ȁVB@ZpƶpZړuKWczOkL~m QïEXo_}WBaPjxs9RkěwSO+ݐ2?>+&Ota5:hAm0&q4a -ՒS)=gR+G /5նાD'B >!h+ GO.WSE ,4qr`I /Pgl!alP"QD*o+`DԒ.Pg>aSЗ|Mp&/|S lZ>ꃕġ|rn'%N\b#us92D2v['xG(p$^g5mcFyǡ=zeKe=t#P3H7ur2`VnK $~IQ&DxGY7`1;\ 0R/GOf3 Sd!yaVYOe Ž\ Z*(1"9V | t$Nz+ܧ*og/,lnNAVHK䍚oO5 K_:_ZRsV(7^F5?GM~fc?w,?ӊ%ϐ~Rkل㪵mRStQ}3'5}b'g{jبwf6o.#%t]`UÒ_d't@]GM߭YƎq 8l)<2m)~7G dpSn!y)݊TepyƇEJF1&= !RZZ$)ñlQzQ"s#odA=X?+&#?k`D+,M*jiS S >sw4A^ZIpmD8\:X-Z%;F۴<ݩz2`=ZOf;1B$Y!* úL kY+//0C$N qbRP3hF$aOE$-rIXήn!u2['x6A/ïxr~b:|ͮ>s@`?kO^j(!-5 PQM++QJTFQ! 8~1"n\& 팊w6*+TCӞ Gײb08r $ڢ<_ (zbC?HR )4Uqz(<.EF.[Dl#]8ڈ>*6p Ku|OV*\RRб3`Y3ܛ9_`qq"]kzBA2#"2#_,ҍظj;z&EQvI".ڐ4#eoj F2965@,t`A۠\%)ޒ/GKt5=5}z ^+W.uQzaI/ɠXDT=*&A,-l 5%yuryXϾ.-r8Tդ]ꓛI AGEͳa!\LL4@$7&5zX!XGر_tKçW, _>8*S>"ْAHuG9d0U [ۛRAؙ73JOIfZJ5))I*Vwy]N-9M3.f":?Uzᄋ g8벯]zMK;f@.4FDA=+ EC܃^Pժ\lIDd2+[髐@sSKYLEhpi $@82- 2U >1}XS67\}p_3f^ɣTܛ"zp3K;*>ס >?tY>+MjfOVt/~j=7}ӿ}=(xKw>1T;Saz~H 4=S s)maa;K,IX<7a)uUI<‚ɧ7^n&@QYqH8ͤTM*Ȟa3Q6d"z~(ӟ)QUJTnf2Roc/Ι9Μjrj7,HiGcҶF A\@l3LU>1*ad_[N?-_Eb[R*˶RpROR/[THvnᮨi5g^`gMh7VW0Y{ SQsm9J^Yq &[O_)(}v>S7W q~[ȟMw~ZR {/8>_r ǟ\P3e+brIk=Z6 ğbSBfUUzw mP~1jQaLlSC4]7x9mle>0f*ˌ% 0L{*ekZ1oHi'KrET]1@edi/tL??}CeM$.8Xfҷ+"Df=}7@͝_KU>ŒjP$ @Π熎78y؅|cE,5̒vUY6IZI|qHDE(-IH{ϼrR0 @\10%kԼqQY(5łâ2nX5hzf=sƑ!19}(Pkoؿ &mqO^çS}|j4<(Ӕ 2;yyp ݀-pf8n|z{NTݴlgf𜺞'jȞm}+jEԤa:!\XMÏ|[H27G0"*fgj 3JjPtiΠ [)F&_F8Qޡ06lVڔ[JAS+pӁ\Q 2:֭^Bмr?c6qƾ bV':´`q$YL6_ )gtь? a0@yjdlZ%E[ \r uL~y x990 : .+UsҚ.rְnl9btx*5(;9BִclMM$A5&$0F$pS&(R%%4&]0Qm@h Vr,^hɃEj 7vi,2ʆu,zaL#2l8k'dΖ5{yַfJ^9FxȱH[p$`y/3G6/8%ť.q4ŴkT'##A"}/炁k+Cf7X8+9E=-3$KJmUܢ1]+Дpx$,.*"TK1d)0OT$^Ɋ]#C>osmYRQYu=̯oʅ}fi!OCa(-bSPΠI@f%Qn2.$on %Rsn8E$)ģrTy-LԜE%AH%# #Ln9"B@}m{(9IcMN[4`l15i}aiC Boh74&-$GXZoKtm63wݨ$'|0I V&/6 7nVZUK_fhȧ%l [,|PM%J0xc:Nd""Is+E@W;`}'&5Orh7:qqe㷤/M5OE|/0}/2P4΍ob㹪@au]ƮsS[nn9n`"SC3Tlm yȋ>`άV *Ѥ(x~8#{[x{h-B{!J #x]2a<[*k5Q&Ȯ<=-ji4ru ٜM=q@^o{;0)FL7 b9Y?ﲪAZs=ĂȌlq-p0XdJy^*w$& -WcvَK65_ hZ$?T\=4m=߻!ʓAV^vv7pvYQ%`26B%7ȠJR:65-6Ժ60f(X:uNҵNlf\PL)tzL3xuooxk+I7B q3tc|S6W>Pǟ %A&~o Vi>NŊ΅#_Tgz=/Q'1_)cXTvJ@3'wo:"SOuydvjs"\a5zuЗ1Ib;$l6VQƴ`zGŔ&"/s)5ij#Z!r>$/ `zST)dKR{yXK?qqwwG5ΎXhBS2!r Uc?tY4,D2F+pcK17jcЦN$ae]KWmۤ@aU.RЪ Z"ibCM `"5[ќlr`yn~ N9&ZD8 EnDu ~B$9Ŝ=p{8cuhʚnKoDۺ9Cm];y b󯬽-'Yq L,n$eg!; `v/ɺә|,x(K xvkN4R_n_-6@} :,.i={ X!ƺ2\MgB0%oGXEi ̲t6B\e&26YDl낐6.e<.ؿƳ'l:zS2U=C4y*K#|0ePiдɚ ;?ɤPǗ C-2+UZq[< Jmۓ2;sf)m6hEeyjtʝs#IK菈x~oGB RS;< ) q }DT|[>Pȗ,hRST7*d $K#R6O]q JZ$q̪0unI ;>LbjM{$9 uoYh.0q+ ) ;1N`tc̷=NmM c 6S'2^GخP6 "fG1C@v."}`rɪ3ѳɍh;@Y58O99OP,:W'`LQe;$M2^ r3YڽWػZ`Hˀt4d d\]S͢(ed ,΃2g#: ;mu՞])] $M#x,%@<^ꎩ])ަ'(p0mbrx7TtA=S X 0=JDy<ׇ8>~e;+Y}dZK}urm!)& '=5w۰uT119#,vYXQxNq"_]۶4Mn0q`f4eMX\aR9Uw]͂&Bw7b[Rٍn(sRA !JgRx2/VԮ//&+k4RgD"t ?)$"22ݮRӢ ^sX3ѡ|/H `PjF&dPr=d*X~AזH1XV߅!"'Q4-\b<~Yb?@2T`璡UhCg(z=uoGW?gP.fm㔬/첁44F0AǑ6e[ &z$1/ݎz]&H%8%@ JwvA *}]T$ waʿ1H\݈2F0{i+FgvtzRCM:o\YS(rOsڪjTV`5` J H2B$( ܨ`$w ܥm Ђ3iQ%]GX'w$ћRymP`T[@$>dZ1E}}%"rRJ]Bߢd#P*Q'֚aFasT--eC{CT́Rn!v`즽`:>}DN1t3 8~ǁXIkY45 Dzd. 3=USl'AL ڷf14rp~͇cM9j}%<qY㘐YaѺ2v[4 ÙO 2s& LblDb3"d,2f^ns,>6.713|0/=~X1pl0Pʀp 2pA$"hՎ}@(&hR‘]D0n}%c #ϓR# 5Mx:VՋ$e{s`;$g$kv =B)6l8ӱ3/fʌV6>7NN3Y/A v<: |cLp?c:DpH<2c$~ߦ sGh@(ڔ&1l+]BSa1'KӲ'N3Z3gEs >NLGB%܊u4y`:o(&AS15rUei-.hS%zCͮ L:>WFMVeH.40άVen p##f0az+fv!9md%XHѽYʞ/.X"l|B4ƿ*rD$AtlNHj|KarjmEyդMNX5>Ѵͱ԰H\FB&9M>g[I_fC%z"V{lIٱh0 js'թR3p1eվ~FڈW;`+!12h?Rt1l-P.l [D0Sb􆣙ylS EsmQۋǣ"~oӿc{Ԇo4A-,?(~рXGZkCRM&S*hvk ~4w*4_t8og`j=)qKtKybie3vmb AyX߄Smzg_ Ts5Vvk&ZN0Kt=,&㩩tQ `b;<6`G%J p#@6͠7%66Tխ$FBvfpqgS\!f,Y|]"j[Glǒj?+vF!m$Xb'\E.BT ,ziC!&WDv4HR,eR>v8"+u Qz:wu6E 5 Nm,,){eʩmJtL끏_(AEٙsR׼%`k0ٺ4q6J ];N(=ͺNE.>>bԢ{M] {rhLbgj`J"ĵ`#kBIhzc*m"j_+saVw?;6. MNB7'چr A? | B^[8I"s~ LQE:B-X:+v {٣|ҘRˌle%E˭V*V/2V2SQ5ysiva2 _4ctDw}44ģ1vz cf%`F#Huq}$'#2Oӻx3Rm#GO}uxm%9t!A}ESN e6D1@ C<߲ˏqLt'kF+ED^*ͦ\Ez:Zu =u SL`'DQ.l:; nD聡ANGqij:_7  A2w<xemӸdoQ"譈D.LMx}1Z?G;aCJj"35iU3sqG `n)pz4{4p#IF+ [Ky5/7vMF\ pe-%D*AuYmXiF i&nV"|f?#]LBF8Ylj,a(IyƘ7r^-mȦd /ELT=;JsniT5/^qܟ' ?iӍ^yml. hNhj #}OGLkNcD%k[BmfAj1`ٷ3c1Hp1V[/NZ=CKĜ'%$h:Go"'t{R#"]Zm7sv̓s<`;oUkocK^|< /zv/`E8~;^7*Ӡ8,^R͢D>PWj2Bb$&fr46)s3\brt=ơGU/FeYvV"kDݻ5sdv7F5X`Z; MI¸۔8Ph=sU̪I*A&?ɜS4=lg'*eB‘K%t kF X0F0Nh,xW @( +d"J Uv"ˏ>^_H@ +ȗ-I6RuRc/p'MLoϰ:vӢ_lqggK}+W$cKnLZɝ^`ɮhϰU/ 3k,a;,"aNf<hI@9~ =AԦ.adF<0,&vi(:BAy: a6Et+q$C<<Ʉrq@Q2vť8**XYabܟg! .#sEg% *x:AgРw<2b[l1[ MkA@ǯ؋pD͊egUˆ{u*<7'F?2-Wq iM#.:HQ.@w"B] l\ p)W<:A/dɪbpd" e"$Mkja3]0T9"xb/cbQN%P&Y[㈹4Bf=EH&M\S?ҩ }͟q .),jWZA,gx29m`a, AT/)Tv |j\vk&7  jH>Nr 1I((Ly15a7~=xl5#RϧuL?L:>ZYT^(9%z/pg?-pc!9+f\ .Rv pYR\jIV!wǸqB3k+"VJ7?Rx4ԫ±#0GGhҢ=6ƛifIֱnPٳږh6ebBЅb0Ԟ;'DƉ)— meZ [kcbzolN1M< WУ 64~/DRP^MQp81h<>+(9ďԖS&D~ɴ)L.fyv u'\D'?- `q!-`GX-4w*j(kF$ƫQ,l9͔32 i+;>$ywHrG2ܜ S PR* P}WSL+I˛I" B P(9XR\S;z#b;ݜ#K} d0o}@X;a߇%s1Fy w6x=~ߋNHsv:BnyEh;%*fE!wi%J -Ab trbѦp~u*@+߆.YOll"J_k &Z!O.s'lz*֮ i{s.qer/C5F[ݦblf@ ^ VYfӳ&:Ф[?]L+aM(\bx 4T.ޥMZ$dL=@ԬJ:[ت*^l!uC h0zy2bq[chɔ9M (t3;O6~7>tpn56l K|3:G!l" E VV"FӦk(R{Im|I aça+Cܥu`qӮg<@ܞ{7f<ÁvA>A=}T|leF6`7lLo߯_- pK(Ah)1he*s \xH}ZdztJ7X*H(N6}Ǔ:FFi7pK%減_J4,XW iDeA1ͲnC(~]WmPbSJ~4F^X 0?v&䪮mvtIV%n+iW6-͇H%cftcDX\u8*dl%D[Np tx_m'z3+ ТZ`wBD?^>YȦuS4tZq Z?[Q4vcTJ !d[{[wј8E֐a,OoM2+ C0iT>C'Sq&C0T9P8ic+; y|;F?_N*oeXI 16bzڱ"׫>5^j”8|*,rWi~u=!&:[*ziz`O{J~bnR=Dɠ9y´|tמG PO1xJpZY ;i*)q{dzBpP*] ,%e:Fn:~X|Ҽ3tHXCFmBfw Sގ,\,Y/? I[+HrȺ1"a0 .z}MoMX jm\c[d3$d317p/-ڶ\˦DU7zZ!ZPn ثR2h7$ǁقP1RׄyZ+24jofqb*zWf{h&LXDֺi_$$Ycr[D2E m&gNtP~|m-$r9Xlvjɳ8D==*sC 37@ou=>?O'. oGj4+_ݗq;*5]aq;>qyPs'v!e!# {oV31D}K4r&jyY{6Ĩ "EpUG򋅝1ob 9+KcSjJ!l}찱1H4f*f"/!\2wwtb;nIJS2u]7ai2)D `/Xrխ9DY uړrL`v]jǕ1UL *܎iK3"OUx5`U-|VgGԱwQ?t A3Ɣt$H趶:}/EnR0 e<([Cc>Y٤<͆)YA5S9HE#̛B0\e׷eZcsԏpOud[]vO䓬/0x8ݻ+&
      c;,vZI&Yw0hKwOvkxj2{{ Ӫ&fڦ7:$gx"9ۖDސ\LƊM<9tNQw"Tsl x*^;ёʢ$w%Bt%HppiFa \zwlK84²* הLnR2έelJEB%m2 @B7!aZh _6, 8̼2&mR^hKH aΓ~I`f}1f롘+|{|΂H 5R\' wVWyKcrKwz9V1lw (oQfVl])-nfRA˜"τ}$M@Bp)-x ;L!a BԷ[+xp`B cgITz5-ˮ;@usl?7.pXĻ'McMiJSc_k -2L '9PK;7Ïmpt ᆪ=oW9o`km<>=vK\U_thhٕ$IՇ[Ƹ4w9 ܩٸ-q"d8N)< ͺex.C|LU%ټEqja"e1`c28[Tw7d2Cf: H_DT@.RJ(0j5:"Mf-LfBgEUAS^>c|$clpKo#VСc'N#[g-ө8oQy$X.BJH$3:L` 9)8ްϧ*Ftn KBIjo!oᮆVC[x-7դW3F,NNk C>]n225_q9aLJ&&$19i<%9eX2|+qN+DJ ƂEt&H=CfB&N00 uB!ʤ6N47O'筭`l+l6TyG[?nh*h#)r؆ms>V؟tr ̀nd1-9vJ# !ݵM26cǩi7thD0\{4s;D :.1gH s5ȑO]"{=MWp̛QܞV,ofw}%XˈрG(+\D`21I"0(<8! "gt*U&]r[iO*Loǔw[P[+]:\~( BձIB|f͐pH]3bcsD&0_)DԮ̵w g z*TkB%'w-I(@;f 21p+^rx>{ځ<i::,+iT=H5qy! N\Ur˜`)f; 76qu ]Hj]X̏i?@`TL$(ڊHP,G[ѣkN|x6EiMVb؆]DZ(UW_aكv;I.n 7dd`dgs"o71&05ho joΙ5/doO O|qbC;TS7.u͝m6dϩD`ct_"Կ>ܮC-:oنP77uf[[%= JtMb4J ZH%z^u.wΥ`!G dn@qRXVb3B.-"bx҉^1TR7V̜ !.N+q"Nvf ~9JE ,cL:e/ $f=VQHօ0` W餸 n\3T ncjŴgS8w~0T 2QձZ G!-/L*sV !jUz3薤˸;(u'9F~*ʐ4"-Cs(Xd!_7۰ƘQq#`umx( 0Hz4IHǯ?!89L}I7M,KAƁPF9pPs ߍ_` lȶeɉA-=c/sUk74{܍+RUTsMLt} /"{6Ѐ" sL!KͿtϏ⊄HpζoT ˓>*EQ5p ;>8fY$69&6c!+z#n ]F:׊̀zV`˫]gEw@mM~,.bN!MvP`dI'OݒqChu E=`J & x?ZAAsx {cOQ(dW \[@ÖKr<37G@hA`-#}MeLi o., !(nzN[fIw*RWoC16f6Y# *Pi"Z5 V{3zB Ȣzd@W0g|@%n$N,椺b*T67j2%S3}}bF|ρ>2/%/āR#50T#%VSA'Ob{QtuUS2Iu\I)|#uIJ]=3ۣ #Y]7 < QEڣ4%wFq?5e-<+F@/ ŚjPƑy?OalfF M9E}= #bL*y 8n7%'i,|RŐ gTsVjₔ]^S 8!+#X̀SM !n8`OLR'%ϰ_uM`ny9u:me<݅#(H/̇;F_TCF2U 2'mI2@f FIqfo )+]rW[ k$#{=.L< }d8Sx%}CDKkl=˃lfgŅP\+C KvLC_u.s iQ 37n4(6dhA{ jcpQy~8fP'7L 5`t!+{14}#h5RB4#Dd[Jd-~U Zx)X091M;;7jb :axU؎[`Cawz N"ʤk)-'vX-}*I:]6s1bVjfc1 ysx BJ~+AU v~0;^l!<666G?D`$`&i /`}b4P1:{PF0IoX1p`!a|4prUlt:/Y6RĄqq4RrN{Fi{<*cf,( rɅl]4=b-We20( Qt=)`IT`Yw7LdvCHt#4X2+a޿%zE~RQ=GD!V&KehQ>H߮(c~C(#[AsbpMkr&iQ6 ¨>$QʟYDpW+,cQ-bFr~ 7U$^U&b3 |CQJτ,E%F[p26č^A4 Mzl +CX_Gx{zIښX,LdH [32y3eL  y,n%=U5XLNt`[gMdӂ 5U5Aqtqcf"O9Ye3֞xu 1+/PֳcsvS-S~1EH$G? -ax^i%2B>[ "vQmz$2b@ZP(g~2)@x1P"eX0Qd7RGKqbi-UF/}ײs:̿ȯ^p.ssG4yM[쒪9˳ ښ_#GRݸU[xF,ZRZ6%@lāvU.fHҍ4E@RJT: e`sdFͣù99)ݵџi1 5!ɼ{nP DFS'AМǒC PZ%#Ҝ6si  al5Vx^~_j*.PY]^-w@o Bv#Fk\;*IC) 71&:Bу O(!spB%ӯ UDDmD9y֚9/eǁH@d8bw ~ q4&(o_=#ІqໃxA]C߿;_ƫ+׼R|L -U ,1FW}WGpsiiDwe)Fܒ@:F2+C->],߰LGɈ 544ã v ۭ#knXU#'%`{YońRw?Múf70ץ,&#ǢKֆASmw`v(&d-V\QI".91(P9Y3ɣ1XU'K&10^[!ZBej=] ci4\xt(I5sa:X, .c C $D˭ ]F(n˶r~ҦhAjd j?m Vc ]"?^V4IKBy$=\ȧs<~k0ie#:/K7y9sl;y-vx@?]CqqBO>zzli:P-gR2Hfj2 D5U]@p+͉w.ɘ`q{Qʚ1F8f{0=8 (w!ƭ5Sms0Bk(BLظzֈ$iB맦\!rH# p tZ!Hx>[cQ=F@`$ЙB@EZMVv!. aR**[L24)b3HǷش`2((| T)XwG o ɳ K+32ۛI}SZ4M\bGB[Ei,m"-6# Kʺo]l ֲ7|P4; XqG6ρ8vu%j= ZVsMs:`MN)0f1X-+"+@0xG]85r)Q;aby5gU3X9<"uE __ͩ.a1CEtӠ/7BMZtzCv]hٳ|\BC>k7Xa|hzUk$ +A|0^ 6,͔J2-ҋ021s<$K9DZ AӢZK~TW!)j.9MrKiy(d7F/mhJ*ˠl*)Y.*PMCI0od: [r7 Xgy9.uLM#vf$U4hnm;F[/onPJrNGC ŜEஏm;7#^.ӟRݎh ^ӌŵrPw;o6ID @|OYE7jmn8\/ F!puӔgTSM ]60RWoN(z;֬ŔL5HN>BXiǂih{W79{GݹLK=NSow~` ]$$<)bR,E ^6>[n;x+](9g +A@$ZPrZ0 RQ?A%~t7 P}De/)D"΅mJ>S6Ad/$\J34v$ g0TQmԕc`x0EtbQ $AHZ`5(e4"䠆669H-թDaS?_6ЄfwM$d# PԜˮ;ĂJLu6 j٥aBqڻ IGs<߷ܢFVp +͈'-XfRb5ʿ-hrk.؛7Q}T]:Ί;/\uaREUPffstb#QNN,wfî-ƭKissWKH70KO)]lt6nH'uY:mfX4 kH+ѼS\SZr{:3!B @PŒM C(MyJ߹M'dзk>Gͯ^f^lm k.);B#`IqZL }|i yl[d+H9+VZq%M o;%a< U,BmATu=,A1RT4iA;eĒA%Ip_;Ucg8ssGs} n5>Hl!`~8{0ְ:lx1Gl =rc>^<'<󖋙$^M? w߶KG;r5$ dкk4{v@hEyk<,.ȌCӺLj{ڃ&DtXYG;WkY+FK`Hy%nЛz],s" y9P_R᧏cN=0] q',ƒf7 ^aieJWx' xgh6+h.gZ7su@e`Gt2,-F)+-+eSXv\4vp jS(*5hF4ODD2׎FD%zV+zԛ@4睦9.\;fEkl, bl \xLreo/%@,!.QTiwdXǘKWfYtכ\Lw3s #y׹>\[,f H-)p#&5PΤ69>Ҝw{AXE%}6{A`%}Za7QʤNCr)|k63M/ w-!Akb,tC0!.소#)̔FxHҟKН;U%ëFJ`\[t1d:X)#@QᇍKoC:J@Jᶃ g߼0W걻3bd&_ʉ>Ƀ_unȑ,7C`W)؏IpLDe:L;@N$4-6tgvlv. yv:sZ$C!`ԝgzU +ui <Ԙgl&k\b -p ctKNc!` t8{IN3"Zp569I<&eh'APq|Y?!cJ3MQirӀsƗQF(M]Vo}Xo穰xQ4^:6άEmlՌGYmSZ(5ATalO%I"L1T)é`-VœG Cv(Mii߰$`RM mɹυA&96EVЅ 6gl&zWּuv}jI=Xk4 X(٧JM-dR眚'^nm:Br3-;%юHz=dƝxG~c_qC;/#:YhRwO x,>T_"|b*$p\3*P͈u9$ ``8Sr (&_ު]0VHeܴYp͖);3Fʵh7+W_@ R@$HD%2 U3aKi!OpC"Ll d hj 92V y|MBm0/"٦d U6̨sdomma>Ei<'I+.7SqOCNcF:Ѭ\N<8j]URZ`lOɶ³f٠dluXCV2Np$ݜH4 !H!F\OݮZ>[a!_rohhD"Wa(([uӣ&h+jU@A+;" ludr3H QD>)쁈dqe,xZjpϘP91Qu_ZyR",3; 8u D. 7YډCŀGjaӻJ{x{k2.]c1 =,)豾}t)ჽ XND?NXW HsɑWAfX.rQ\c{a+v#Is'ME7h LHGHz)Ry"/TM,蔢 "le0ݣv#{+~n`%?^zBTun]N$kg8IxϡXs *DލBYShi8jo.H#Aˉ}A"E$2C2&&5TU޶~,c0e 4TVIL&֝7틬5CaO0hqdt*xap3eU]?&]ӡx3M(B*_X'>-Sm >`ZaDL[O+~dh[HCUT o\;F;hHɘvq0Ώ-= 9 K6"{ 644Alj"?H;c[xX#$$xjg")/'L)R+=95>lEOz|jo{lW~e4FW72MjU0U%Q؃>#XT'}NԗjM8+p 蘰nMWqF^JpE{6lvj̺zq=ΥcJ$_gUh2-$Ef~$J-E|A|So Sn=." ދPXIb] L> / R݀l* $ndm"k:0EluL mb8n$#! D04BI8 Ra2v{ )Kb klGLf?+솩 m*Tu09Ȕ& MKxD`P1dryz\&oQ*2){m aT3J3!P0u`E fW•%d9d=dnFHLBEʘ]uy 8fFĕ(J6I +٤p&iUKaQEvxߓsAI67Ήp`^r.[Ĭa޲f9.(br 3c9hc2 S"T$15T֕]UvluWMDo)d { JI{(4Mf0OH_qW\ ]BJD&}kl+ƚ#̺# hW\a"In[ܼXn1V Ýg m>4e;P#ʵoa,`75$# ŕ.*#Bh5 U Z)(thbi5t <9o+9Љza&v_4IG[eEkT 3\g|0OZXmy P2FEӬX|Ghd7I&3;j>&0 L5= sWɯg]HLみ]Y6S{YїϰhߩĠixa(s[SH [ #V]k;f;#vhaNьO+lqGvU7HQz?_]gWHv1K8;Vۡk& d+K"O`M(y6.l_HvFjWG#S!,a#8h0@-^q(uH5{0y%qV%~zhDdƔ3U"׊y( iҒf#5LDI ۠ljL-X>5&(u!]MA#?DnF`F&Z)@՟Q?HPgn%?qFѯWݫAD\6X>O 6=VrA> ͽUŢ=z(vhCf/a˚{ٽo-ݖ, _:\\z焧fiI+#Nb:Or6.J5̐M>T%xb"uA;;e&+_rKS:!kR)ȎnT2i;mF&1UÿFEPIkiLu)\Bq܎y^sLl [AmزƼGA@9@Os/Zx=aE|n1~e|ow| L{k$øK 92"([،zSI :6|%FxD_tBR@\hvVSk8U#T6jP ׊R"¢`E6*CM x#$'z9Z4*X(!b3f,*";/0 Wo*k6jkYPt$KqOVf/] &3eVD1GxQ4e抁ALU꼋 )["SXMIe2.Gd6td0u7&f+TyHi |4k qMhcí0=l ( gF[,d z ٓ^3/Dtc9lXbw`_\ŌFB,`e&9oo?$y4v,8fڭ1`? L[c8 'cZQ'gs ]8"5I7!yL6sm>O$8d;-9P4..vOmNRs~g"n#ǛKq:P0ՌPUKFڑf_&M4i6 $}OLŘzu^Q S**ЈYa޶&g.^I mF"eYV@ysmfu4ڍ d%E䒺Yc,Xhӧ%":+$_WE .]`&νHY AZu]{(0͎f \B6x[":C eS|lȃ/9 )ݍma0hAPX0s};i tP-JoGg4 XdMl!Rb1/Mȅ魀3M,.A(0ȁݬު &Zځ4nIICVіz6@ۓu&`qXxW$RfЉr9 ۈO83bΥaxi99q91zg.}%Agqy 界Bʼn1w͵Ɣyuʒ\vwgXߘy]q]ah&HTR:ݘUid*0{oZFpmv.@AgIVgH8+ ˈt(\QVa\;L|Pƌ]ஊ`f%lf@'-:Ȫr$Qw DΰsHdZ%tM5$̸¶ApݖYy˩í$Vn<]`+d.[*&F \◢7n$L < VTu3qM.] YrGĝyA(;Ԙ&"3dBZb:kHrs!U{|6'dué( ;e০`zE^)El^q/q7"JsA(d-YasHѦgo[A8ga:xkR 6-[grt-tH͠%6pcG]8 2c!h8phaƘ>vd `ꅾX$Ѐ2\Opu9 IzM'S<ϗm`l޶( g/W`1bO.Ϳ{5Rr66/: ;Zbck2gtݓiw΢Q$-cb| X 7WpgBnp^4A=jBvMAf{l?/& $zWӡ4 LX/vL> Yӆ OdYFxO7miL wȸ+#M? u]$^ Cwʀ1oVglu ɫ!8(lDsx"ś:z؜ﶩh@ZtJzeZ/2X좙0V!/ ,D Uwl.h"NkFґ  .!s +DxeP"!ZOPWA?׉ Ţ6Ss&հIl:q.4[T7i{0ovmF'O%Gs<]$? 4E`n0[maS`J;T%qeNVQjEdjmz8yؐ|I2*aؑ4k"-rfNyawEo歷Kst3P1' 96 og#]`z`0T/9d(<K~{ BⅩqG1ucD+fa@a o9zU'6fQQK+ù' :sesjݣ06_{ ǁB44g`nO0RAm;Щ d^c)@3 -z(^2+WI3:0I+-B %x$ lZ1 |V'`ch/M:@(qzA({(CQΰϯ A&U 0+Ҋ7\խ} eAT>3B5曹 ;?8P~0W)0&yW6:;xD% t¼MNCQ'|H}O~F> ҰQDt<$(G)$6~Zl#T1n3Tu#cB?U7tD=]l+*N>r.Cص$ /">&Vn xǚ{2q CрH魭acܚ}.QOKmM4A`C.llS9:NV5Bky3͂Mf-~].go1 L4x#IY͙7A29R#cu+¯uxzfD =h[95*Zp3Sexg|ejpY Ne;1/82EӨkGf$|vgb\VctQO"K)e 吖ȸBy5 /ݕ>ԋ9a.rnfyAf\ZDȰ:0CSxі;-dp2voxl26l(H$fE=`9Ne_BgYFREo=,7{Iw6FD#v?DTdUF]]} Xݹt)1U&-",](`ŸڤZe=T`27Bnh}cCvJTaǐtQl u0cfCIMofJgweS(af1RqAMo(:"Q?Ӥ) 5a%")!DO??Jޜ|Ę&z|p" +^6Ԧ`QgT]bc-"͚cƜ17RF{Xhurxza#)-x~\|j}ֳ|SM[},ؙDxqLs}} 6| ^RӲJ90de3c(?l5D `(Y;. nuaڃ>+?sڃHUKp"RwCxKд.<~^e !nbA;x\b+CcQu+:5HJo[BIIw²$1KR=2#F ԕʵ3ѷ-5kUeޫ|IPm${ '~ƣJ'RSeQ1ʑzD`6a+R FnhʻE*Px^4yyUYQ S< O@Q:m8Ο2onr:&[dd]W=fr/( LS2O2j'@a~oJ#TN궘YU0:=7@iuadC)jvګc^Ο NާDx8彺F d74Ś =!ǻa}<\>tS$oF ÷?6}3#BjWlhd]mV[2}5o{8j&Xv$Cq4 :nYB>0ThK^% @YjW'ˢې҈(#p+Q/_eɰnDNudnmy;|zݢ -f}d`Wk[s=Bu}K+n`?R6y#e2ݝ73^J< YwF,pGl?c(vLPSr9lXLg6%)_$_׼Q%jԸABTZ0RD&SIb[ZPvX>7yU֫R^3#f"* e|:! *s ĶZ!6'?hKrAl$qwRÊN>Fɩ}k4 s3H9ё9ً)cӉ\sA[,MyJ  FN0A :Q sȩv/̇.~gosG>Z# } ]2.eͷAo4\V CoBf @GKtZ&ia="cyg$Hw.y=5y&jg CEuv"cqZϬ@2N8GC@H^M!rK3W#_5o05gB"1MHEs8n]E`L pZX_G*WŊ;QOb@?d%ɮ65.K- c^K^ n[X*EoD< Z.TIyMfA92KqzS Ӧ _ǥi],}'圉 O}#fSmhtbb?.Tt! 2A&*^%') `$`14*d,!=X,y*ŗ f8jgmJp@k4AEfaWzrkMjlOaa5cLXv щzlLw)$FID~@B=L)+N8ں/Mw\Ak#MȢxgxhUZ3ni [234F8 ]s#Xܯmq `հwĦK͵C+D5iw %""n7Jm`FŸ5.20Н0q+$7m`pz#HV\.vLEd/o3ɷ[- a_$^lS'iR-)Fdݡ|c>GqRHK[3N:eX~N"ت6e.Z )cu:ŚD0b} e]ћY)dM;&M$!ej ;sM%*2dRY0#6N+d㡏լt ŒdSQhwhik'` _f;\{e}^ka[Ͷ06/)-o @ݟl `lMlsQ^5 j? nf6ߑz!C;&gCߜd:`#n%ELIfnAS?EN0LDtF6}lHvP<*;V/ByU@!t0Г Jۀ+ؖ3[ |W21(rXJ7o Q~@J9>b :~?Q ]0 o#*3#a]_ʉ Df 9:FS^w/ȓ$x r\)?Ԝ`6jHțm7\pzmeAE^,`IOBȅd˱Z# nrϿ+z@SzW'¹JӘCj[{ݹdyK`q&Q#7Lfj GPa(Kr캨[gyU&GRx&%A:AYE!*!K %lè-?LJy ` #7\5,s #`yn 2g,8~RI:i8,9~nbHq (v~1[F|֐:i o#|OFycLA72F~`AR `sCqe4A"ݽjk: vUd1uIQqG&ܰE}T"VAvCt]\o7Lˤ.BbI&o]eTѸK{]]ȧҗu*nmoZ<07FC"Rͥ\2Q%XSSbBPh^cq@ŀ'5:]S1p)`ҬeyiKڪHT%f=`7KT6!> i!*ˬ)x|:VW;aAX]j6E(?/lڍuq% FG"_`sS`d4g uoV:)p^&I/ʍ8 /M gWc l0# STƬ5d`)Qi7ܑ$6~*fzA;:i3ue5(`ڧe2h,5ь>,ݥ|P$Лo}ƒGK"v;kY7J"@0_B%B fDobQ+L1Đ+y(`xQOmϑk2%kn(]fn9ݲZ$onQ }#X,.:{Ւ9( e'tx׊W/tODS&^A j8lmfLQ->[kLZZq)ox {3`La{zfPEc!? teFTU3+"n&PWAe3:bIÀSI ]Vh,p@)N0̩D`A4AʋQW |-םuF4-W]Ę4̭}}.g_ Hmf{p`LK'a9Dc #o =mӄA=ϑcR/uc)>2m&B٘TVi6wC}5y{n<1ES sQv$0^h5A[qG0m˘$6KJZ[Xt§zFԽv d)|d݃ mOQYvgSڵ7O1+cELBAHMs6g:3&D̕/1x)kX4:`(JBI7[0z <=]f}ܬ(HjL SM{}>Z7\pMiY֭ҼN: 170]ڣ*k$ϩ =vWo/}X \w{ؖZ+)$/0- 8QjgL:7N[spoDô2SMvg6wAb"Ҫˏ_1[;h |ŝdސ{*@E&Q4D  +߀YHl"Ti847]ӚJRᄁUue/kd2ДT̤L'5iV,k@y^:,W[`@aaH,"s>B*5Omٶ+V^:Ns]U+4wSnȒGˮr al{ T6kV 2A)wq/㺔!T8lT\f.3G@9n]` حد4TKAUN{Q'| ؞:`1a C+>oa%sxiҋh=~@'~W07|۪/;7%ߏAKֆ,.WG=7Pb}Ns)mݎ0M&0%E7OedGEkuéىW0DGx&PU̪;,&i V2jͥnpSS7}3[ 'EEoPJܞ6S~Z2ܓiR"EVpt[>'64wv|.B4}w螗G"Pڗ9+ ~ =4Hhճ9SpO 7%rg'"` qkXܾ7_'wG#ғµx9ٲSmD=i#&<(eR6 0+ $JQwF+JI6:.zu*tX 3ט\ud:!x-HYq\ 'LYT6pw9Al8n}q|OY)Z0'QLYG<Ӥ+ O]*li0aTL U*QO 26غEn9/IQj5^e\K@],>*4Bׂw<3daB6fx4 ErtW+jgqfVqGK cYʩ Q{9J+yVfXl?[IfaOOǴ·{:n9@GW>lLWGz$V^eW%1]$huV}uUԣS &JmQ sUP9I&!il*Iݰ~E'Hbde/Ux(8fI675|!65PCY-'.A%3Z$m CѦYg'GKL%fT|F$as&SIXJǡ cmD#ĹBSKɳ'"1B |2x;ECгŽ6fJ3<lAi%2;^ u̠ 48nUsU?3('A`Q¨xD_-u}l_Us+Lm;y;먗i-;p=7a-; cswK2b?98rqVpjXf(Vv&(GiV涺@Ҍ|!ʧjښF[`^)9 53 7IҜXPOeRGGc5>,9aKDW1Zlrw ;F[ҙ-6s]X|2{utUEGϴg|wD~l@Y\K˛WM07>[KQ4B!X9U9 г7asbnúrEm,6r,X*Py2HA GƠ /FHsEiVyА tHIKZ O' ÜiY@)+pOal}'iTۆģ?޷yN`p5s=4Q*hU"qȎ1 5/<>(#Ҿ\90C749)Px ]Ύ=t/'$kgC8UB1,hh[7JlӒ,E?0D6FLȅ&0 ˴L$AT]jkA:ގh3ƪUӷeӋ0C>v7Ya5]_N ƅ{"{%i #T|_/ 4ܬqI4E ^륲ˡMβZ7Ḟ@sS+z{-b:r0<@OҎ*q"6;+W2 C]UD}aN}NnHfyOţ%PD(KWMuM &fm؃8]ȿGIZЫ=+WrCCawt)iw+(E.6xZhrp ޡ_iO%O6_`fe݄5&j.KK7b%xS1^dr+jE~ B/ex8cH+E$9lhaUh- 3yB%,چ[G72k$ 7y0 r,^m,7fnq*zj: ѦtyZJM0zJÆ f9+cBacX?Cu~c{c6yZ Ygɯb}>ffAyG]K2ߴ%۔P_+ Z=uTΥa10W `_Q UXj*ѴL/ȯH(CᗋՐ1cdRoIv/.Lh!Xŧ<*| c`r;]%(zNϊ+4I- ^F+wT"ŚBwսBm\kȓ#!kS@؎Jq!* 4k$b},CbT JrYE#iAPÕLuٰFja锭'JAK|hU@x@^]!C@} vt]4>ܜ̽'')Ǎ)>T]ᒪ= \h{ |Eb|h*7a r$bx$8^.6L1Ps2Wwf;pz>Y L?[F&RۘDONuJ73- t|7c [6[׷ Fo?^>_sv t=KEMi;@S C׵9)[XN-f*v`"D-4ȯYk3XpdD/^ŜlUF(-A^gǻK>\#l֟ B/Ҿn) V.fyΓXY/daKD2m@TB[a^2Mx̛Ti^'k.QD$ Lw C*ӎ  ,jP0B(* {U#+ "Yބ% eAJ,, !l^̣[W8a.^6SY6 2LVGn]R?GU}Maū@+Z-Xq={BE* nFEK t&l`hKhT9ua2`{0:W%s>o&o;k-.+,2G86wa)Ca 7\&T35{ )вE~BtXz8;U ? 0l`҄VttK]!VdOQfլ'%/6 U@\@ ֘0/HJQmך珔W+-hf}p0?oSV5y N⡙| l)ݩxq(=]"J4r-q%;Z#3"l۬[ ]Hu ÔEj@!*Vd^lKI"1z;K)ђ1-q-S"EжhJ)fLd4xTwv]Z%R+u}{/^믾vYS@+liަ {%8,"ʈ 9Qk3|A*Yy1 mTy\v:kG:/cٛ1jÞ#na+bJ}h+b9vSD[K'I7ԦwC|+(\Fyd'\\m0nOXlmgCsgŷ(ӟV> ڏlS \|[u15GF}D72ru,{a~=HҾvCD(po2P[ 'C h >ؠ?Ji%B=aECpq«]tP mE F[Ri giBWUzV<5y:3Z&/|Gܴ DN's󼳵7 #+%#'4ג Bu[:.;UDw\] DIx޻k  'EX )^|+ZqK3BIDyV.CMJ a`ol X+U"R(Jn[2cS(BtNu&(<(WފUi1B_oa8NMH΀xCaסx vˉIV Y+pO}u}脪nM=]qoXhO6B63|w%Ա2ċ,2ԭ w4MFFG|AO,׈O.qh4&xH=;tG$jN)75N&ح3 ;^H#Ee;A:Z'@/NWNWH"QF-(KSv sz;ņ̷nFS $l0-+>Jvn\ftD2"⾷$L2= D젏1C}u"HB ^-"eoDEg4#0NS**2G,uWhե蛤P;zôxҟ߲Ե5)\LFZqYg,eKlKg]4V@yFMG_E@LwA# Ax^fR\etM _{Xg0lLf夹ʾ he(s2h@M,/3hjq 6_=rGIN鼣Ov3Z[ B&22'K3Ly`d$˻ےiO5Ӽ tG##m6^=q3G鼶LL $LptB8pL)Ya5_=IN$PMf4T,H<(xg4 UuʮcόZӌ4y…6.W;aunx lLͶ#R%" (:W~dVSaZM|gm9q%l;f?5\iE^@Sb~VD+"`r4x&]D% ѻbdqս[|WVnʴRC-(=rQXgSCL[#5DU-Ne%-ت\;z):,YFK030Q_qpйhc)`PvRxyl,bЂn i*gh,U>#в% NdlrWxD욻(]7N . jM7߲/A*F9G3s=b^S>+$c8h/4:?G8)`L[0p57 ՌZP:8=j݊ɛ4YYsr{'מ~\L"'n`D&^EF5Rٯ"Pupb 2=Ur;5T%0(͗YUo+kyH~䳲-_O 3yd.ı"{E/편>~Y ǝ"U+B2n2ʕPgCXZ rj҈C@׬ nEYZ+'vk92QI=K²a#%r"󠽕tfbMZ(M`dۮ -hTX7 -KFci,̰t$l,'K 1cS+g"t %GغXĘikHj;1DHwɌZ0}C=;Nǀ$}lPOdıpyЪԝy19 φډ5١ dccɬsIyR>EE}iQv9rw-HݽZ2*i F9΂4Yo#\[F F~vEN8:]OnJfMc@)bEؠ!S NM{TyQAi]-c5bM]#Y]٘g\s[M)j][xתI_>N/t1y>h֊m.s\ocm/}Z9^P?w`P)۞4{ uVgFW $PUcFEK܍^T v[B[~Og./TrsQcJ`b*M"Dф.({ɰ? jHJ]PpBAbs_dNRbASrڤx>:u&gP5!R璙~};/85_7q0e0}:-50}㯛 GdsJkov ]O]^l39OA8qZ = ;9s.Q{y/ih.+-j3I/G AAьmzYcl "AAƱ!Lчqlq8Шcv>'p2z9F_#.h=zkx":P1scO~ 8,!ߪgfA!9c^ћʪn-gt-I>ĖyRY.,X舝k%%CB&JfafiFUb#XDFE2ZqQ4p *0նۃ{8SEg!U|'u, &߉JsX=ǹ#+1L)F'A{,rL[m?aǣ &8m@v̾ x1 va˘('6jI? r\05I2)&?#w|X_xK'k&}#$vwϷ1\,yG$zx]" 2Z)Xl?=^0^=h*Ze89-܂q4lMXnnڤ'DEc A*ycd Gͺm3*-!K kx)j>bnl`䚣voсu0RQѦrs{\(-Z|WDfF\m`Fq[m`ԥ?חS׵x6 ,kE!u}J""!:VAL6ݑXj& "4/ɿkT\"Z:7V=m,eL2WfY.NqmL,PRus,lUiS +va*"ri zKf9Kb841_TB(C-<4STdudBV\\2Q3k$Ot{=yOyX햺/^e'~q8aէۈaqt'ʚ`InGHA99^u~6oc y}Py>l(סZy'i=|G8/poR/Ee.Y1Tb*N!'nž5/:!PnJIo6Aa: Ap3\~JGBjeʚɨ}T3$ k~h"mˑ~|S;͘evU7L 8l!e@wի"@/f?kJE\>7`XKL1aX{~-C& E*V6ti~IYSI4Pr%da$YrH%S%]o4m8ȧCMӭni #m\FIewJ!9( cլZi %Phr7M_ka"DO.R;\zq^((N򅾓O󮍸`lܷݞdy&.I[-[\ GRM&f :ηMjD:%YinɎJ@7 mpo w"y}Ya[s#!ucɤ͟~:oݟ~0`(ZYWnaܖOԔΚߥvȸUd9]iPƕGw_Go+~gY_~v BbOP}$$)%?/u S8-FFC-dwO>?"^e}7 |2 z0f󳅮&`>K=tZ;3U`l2XB9st[8]tBI8;xlN?4ȱZT]uiFXTI*IxۺʵMkY{Dwh:Ni+GKŔe_+Pղ9* __w'kOo~~qro?gW7o`\#e?3>.`4tƫD`cJp) &3ׯ~'/㛼|SuGWhmzd,TִUZ_CUP' t<+tHYѯ^?_|⫪7qgI|7?ﲾR t4Tg`.K*=,`鉴t).zVD\?{_o:YTo~O~?ƛ7M $3Vr ̸e62Vr}|,_*+?T Bh+W 714TD.G('Imyԃ nJ*++|d4)vЧu"FAy'+Ճ!Õ?""t~A_{ bUƁjBTuRReεjҚy' 6,'`C8-Ls ^:\hD zJlTC!ZVX`q\WX?k_G?zSuE]Q ȼ?\$vWFb3 ~1|3%Ń҈P!|Fxl݂JFKWΠ1hoqgGw{?>Oܟzv})^u|U~u~>o`Ӥ%4 V S2zMh;Q1x}g?}[WqwbG_3*;?~7_o޼5y"|f8m xZZWz7v}qU.Ymz{'}' _EVNoc?O"‹Cg'oW?}}?z+x{z{_͛?O2vsTW m_zdT^lhFRcQS_N^7N2Ⲡ3"Xr$v0WMmP!` ^@qkEE⪀_reՐn@)j-cc,"- .}a(y=R_%MXS@LJ + {U9Y J\>-FFZ_p"NEX6]#'.w A{bw! L=z9v+^&K|@G775 } L7't<`@gpf>e_]_}_|teֿ~>jGc퇛'qlp2⒠[!:F#TD~G>w̷w* oFE֝yWu՛?㟧ƧwA .)-fpQ]LgՕ?W?_}*߾ 9|qU^wz7o??_~^^~՝9NDN`& +>!:K~oF^Wo_}W~ѫ7^}s]뾯o~_˯>{g?WNXM3;[;#9BnLTQV+_FPqOLX4FaSAi;i8 T9AnXI`)Y< 'O옃F[@HALc}.jyL3ZMd?#}:`+b BtR/X(gPgGͩ_V3lm;m:f:=b(q ; #1+Lpb"OQˋ<|W =ޕ[{h:A17J?ysX _H) HjA_j~`E ҭ=D[DM#!+GOٛoO?y[z8UoU~G^"k-G>mƵ_H!ÊIٺo7~eq_W]WE>}W6#̺ʪ~{E֧W_|kX&T뵣%e=UB0t 핂&JxO?x޾뺯XT]pyWV^u!Wo՛>yX]GZښ{-nXT{J˪?O쓏/>yѫ7^}u}sE ^u7o^yWo>O|{E9Wþ;`60Eue"9pq58Fi˸jRza͓3zZ@:3:(vs;#`k_n(hR`ORڤM,ЮhKEss ]hkQq:NN%:ΟAY^g szx9c:^'N!0<\ t8'}"AߝyXw# [K1}#zJߝ/?l0Z/BwҚbad bċ6o'?y?Oܟ޼o7z}߯*a7|*7ͫ/>~eӏ) IDs kDX/Wf0i?䫸WWEV^w3#tnr wܕW}}Ro~/zYAm}Xź.Xd'5ڵ {Zbz/.B?}_}z^u_weݯ"/7o_ggG_~W7uz^=ޯ޾}曏~W_ן~է_~ٿ(wSI lWxqg"dٵFь+#Tqpע ]b8^= ɻ.{)Q9]<TYJ+-MJ5Aq%o^2e>AXJ, I0ɠ±I8W{3@aik<$;*ZG]hfal0-ҦgexPs)G1Z{4nS1H~o7oiΩE(W r"'q-)t-˯_|W~ŧ}_~ǯ~DYq{Zy.I#[ʬ+k뮪h0#q4fF:Rw s #=8@03F Z*kˬʗ|{%"w37WUHQnfnn ssU3uv=]gVN{//_|[@|'#؅+A?8M^A(Θ1ے:E@ y!T*s23D𡅄$gTG@Xe*.l7chv} FQ@Y˜ b֑$}{G[oyOzn:_1Sӭzkw:٩i'h}r֞k+jܢqZTSg~翰^{-.I ɜ#0B[gz}u]-[qr_**BX yt^ ~X<|}3~u8`CfCKNjm1n7S7 7/_S_"Q&0<55jǕe1y0e~=}|uJ̜$%tcY#V`P)3*xlObڬۦi++癹[m*]մk!jMr=||բ&A'';4|ܶ a<;lD vrq|8$4[$S84$\5_iMSZK6HńK. >+UT?3gϭ3`(:PM6HMA|, d.hFb:ioFN[9'$X0tZ.%fâZ4lZEU1PwagS%?Lpr\;O0TiQ@6,C\^`["PtJ2,CXVP q|0inL%X()JC@:%<0ېQ-zАڱ#i= aY ~GK&6[:|7򭭞wzl|\\:nUgۻgk:?&y׏W%5+Z6t25m{z묮:HZ 7"fOz9%6y p*TծAR I`0üAS9 lٍ~{GL q:ɿmzw6M=Ajh+[( rLo[T>c&fɭ0g )ÃVo[ Ͻ% CջCn{\0k|(N֐YIL iΛYB\j+S{=ڙݞMVr6YNUӴMWU_UGWGO.\K!avuiޓ﫞ì]7lZ#_W^f{р0NN) m! *!XL:HTH4y$8P PWnZ),tږPLJUZbI r4D AX눀)(9%FFjT[-I狱+ NLE! t#q.\pY QBJ+ 8f]J]kJ26P>ډ-k65m5Z,S Y7P#Rer-pjX9<ؠL4('[q zĤ>+;~ck~{vtMnˁtpgUM-&nѸs>||`&^ b2 %VΗgb>B"[d힩⪊Q!fYY 璄#lX™{"γ պ 4UGHba=qoX!.)1[gK QGؿك0TlW{5/*Px։htur7m;Yz\roʋ|Y`ШNÖN%G.S<a+Q8d R J5nw**N % V'MY!*րèKz++ Df$K"DrvYrBD`Q  52Đ lE|i8)(CFtJrE$PS=9ɬ}sOb[ԁiPYWd#BxM H[CarFk+ؒaE+ZM# yDQ&1 "P(w2t g3-qL!U)} *{9g˩ ȕ"U@@`A {M~:ȵ3~ooznz<}avc[gE=o_]\{e_Q飼ܪuMN&q>3a{cbŔ*' ]c*bٚa y&+&v+Lx"&¤lڙ*NW=kx-^rYL'ITmUw5UcedC7jW`WC}k$گg˳/_z-Ƿ̡SbR} h7TftH (l=[M#G8nOqDx())phKOtL/PPXڙHX):)܀| ہAA)hǻԉ{Rjc a(*̀`JX .FC,}\:f ,fI^XblU4SB ԦiYaFf WFPحvhm)mNtzFk(Jfp7JpOE=SRh(C[yW2ѥPHJ& e^w1&!:GϦ̦Oo or8֪~iuk1y<~fœ %7\ϱL␣o^:Iǵ:GkºeS-ZLbR]zOk*֊h:1-b=WK^몙oh\U)Pn+Lj{1⢧ UeKދuY{va'+l}xވZY7䳙:Z)u~vf}kȼ|H>hV_WSfNsc\'}Eh[Y_om+=wb,%PzPIy2Š=|~g1=t9,z=mMչ\*W-o?>`:W`st=y:_j&l/Wv=y/]]3@..L%a`V5填(MJOp^˃¤S1zb`^Љ( J#H)"F:b`&˒i" b!%tBƨ6 Wbp /e2; YлB댭&y̲]ecv0F3(CR860lct5pn0_]Pr  K ]1QSoXERJ,Z9+ԋSn͈&5`S9!dXlSfa!N Crç J\ qXA3.nEQFeG*<]țhȤ*1mWo  8+EÕƔP|Rig[>s{z^aIgL{pT}UnbS`Ή g!DiٸEEN7||R~14B93<*h@0` GXF]"t5=[ɳ׵v^aJ|^$vw'{ͭ|m>9ĦfwVUK,&je(Q0OxŸN:x&v2:Oʣn}ݹ'nm߾Hf@2D *6/Sg>h:YmUJդY7UWU]|Uy-Wԋ24TEtޛUw}G뮫nҶu;[.l_=x/Ÿ2L@Cx" M.NKa^@cwI|R(6Q2GK27 Yb~^*qLE++%&"#$/%S~>>8w@q Q FBN0p!u g Ei(aIױ df :%]OrQ݀Vk)Op3m8 ^h8YzGEqnA<6CNģۋ!ZSMmʸCcbƑɅ$!#І%aІ:G9PSxgj(7rdN7i%#k>iz:ב0:MJ;E!)Ќ&MUaj>'M]SoZZzɍ5zG}e )Դpu~o;tE׋(RiH#ݭY!{G m]H0k0kgGf bS,ؑǢDR{1(kzyx ^}U,3!N'ǵ хH\#|(+'8ٻYКj[HQ+ XFYw.X?ۋXQ26KiXl- j+Q0rJUbXlx.;0vFyp9zSafW)&2zsοvŴ٪??3KVT : )Qdv"+'_9\W[;Î LcKGW|q67LE۞MJv%sM=ebP+F\k܃OUpȾS>ni1^ hJtub#*G;L;R }dۦX¹ܴj|m CH] :mѷ{ QhT|DGv׼Lsٯqmefu~>x> j6]nMI|[]Cs[-Y?~Fsǒ4B2Q|2WK1캮InlWz=;<?W[7@8"Y^Ĩ@oP+M 3"\'2ȏ,/.$b/>J+*-,jKMHLgsK2 %vhX"A&'Fb)B08%QK¨gz1^-;P$E  V@NJi<0;p^,tSBoy(k֎H M¹&ü!p QIF2(9< S2u:#ԃ1O-s C: rXbV=WH 7uBV@ ܦ;]ӲEǮ |?܇?}nH]7!=l9}UE )⊑tA~$we ʵk^ݮ5:GmEV -dB'[+8/w-^Kc%šsvU}] O.| O@]c>23j2+2sQN 41B.hH35l$KyV#J 0\ˇO:;t#QCDŽ[>xWH9L<]O% QvQ(1lY2ePٿbMm'#$eT^9nǛ!~A*v>4uZ5uX.gޭjn(zUF`3D+rQRQM?X!6F<*OUsuG'{z?ʓrurxۯqf`kܚ̧d5}Czh{<|[@1<~Q3{/Wp,YgRľrbt{훮k֫ٺVrk}G.a~T%QnB"$$+)~ (~QƘDɨN+-O҈f"J((nk1"jړA4)eyRK2رIf LXBI6`U辧(&ktoŠ j>re2QW7jF!?ˠewN՛ sObas;1\VnK.2m4vqhzq>t}G(0";7kͣL!pX>YthCJb,s!g9zsk ۾p_밿wW7o~\Jp#:^^:;>$޾vr僓kv+ mvw3C5^:~ =Yv~k;;:vpѱ{hwOfڞً}:+3u ER=qaj; Wi̻緶8h]UU읧sf{G/~`XW;X:njyWl21kTI pюre!Wz' iªE p{*TD}݃YqD@L[7pWWl5vԥ y>{;?rb+}OzW_}7qzf;ᴺڕ;v ]CqZ 폜_ٞmޙlMf5;繣͇VD{k·79j1rQfKgk.=iiN]>zsۈ_|׻v?.G#F lH5)I5Gc0d{l8GE!NQ."q鴲EX4 M30u$"uaDR!*3,XjD$mߎFN-n(+,䏫bH0PoY4DB MbS( J+.Zpf&! mw7p+n!O{w8+\>BjS pF_QECz>A\\_nw~sճkW;sN];߇{j*YL˙搣8'ΡLF^_{#n@h؃:ཿq뵏\G:Ȥ}eA\Wa˰vB-*yyƬqmO|.Pf E-Zɨ+zpwR=[ѕp%'AM͋5d*8`\Z?wZ/QAۓ7]ÝsakZݻU+0C%i[f|G{kf#SW?3G?7Ϋ񳗿|دUc= $=;;39frLA+{ B1q;d{v2CL*)nj55?Z? -9jv'>s~~Eנyוk޿Qd餹67B0[S83>m>]3~?Q w۞:7sOݳW0҃LvgX|&xyr=1Upw7zqZoWWqZm.L^rww}="y7GMg#//]eꊜxQyv^ǫcvrwZwmo`x+[d>]̚դ^Wu_w?rpmO֓n,jv&@s/ɋꙚd5H:;?[o8cv}_w]ÿt]G0b#`x_erq|JeDq9^79 yJ1(*ŧ$VgZ\<հqԦ{}[ԁhшEM=ugS3M@wciIj& N ,44mULdPBD…̉uɜP" Ԅ$URB}@"ш(39ȡ.2QʛKnƜsF5۴UqB!alD)X\Ou沌`'JQF5r˫]K)A$j^s~3_Mx$ј膰(t|ˇ[05MzB3CbD49ڮhٙ @yώD:$mgw~yƽWen֣[5=v[[ĵ& ݞY}b*w>J nJMNیRCܬW+=$>Or{z1 dR_||ž[IIZBt{ۿxG3Ol}7qeە{hnc]Z<:# =vI˕ͺ۪k']pL ~I;O?%WOY]Yr,I/Ȍ\+ھ'[G\w5AI=VjoxuYP xp1$i.MG1h=mMh^ ":`If+HՎ+v\\Hd nlS)4!nsӐgGqYFuN xC0UơTB\(,7!dώ3ϓpO8_OLue5SOrWĪ∄},bOzLZ2v.j0ÃYK4p%UP-4\ t2oeI0hݏ?гUOd[ ظܹj2!qX춰WDžLUm"܁O<=֑h8&>̗>*oxу; աSC؎|b3}ٺ4^7U[r}EɭE}j[/oo1܉tQ/G\Q_ۺZ5jR/ϟ}% R3@)@RÆa\CSp1Ɣ=a?/e4i,dq=Q0CIJbALŢfAVr񞡸Mt,MJ Ŕ4Dasp@) ,;/] x۷DhHgCl(RY@2: j*6[M~QZ Ҵ %8aȅve5lk\V.=&# gT,pDj:t4݌¼˭z1Y(t1YHi%+|#j #]hnY/ۧ@saƧ$jОpԘ4Gr0MZ?\1v'{$W |#uED# i$GsWMaģ~GQ1W'O=&f !r]]\.~;ڬmЦ;[S;.|e}6X L45Qc;ǎpzpHkI%xkn`]:jH;G S{>Siz0/N/j̏{NEU>W=y;;s"}I6UWW}#vJ0$;ޱfOw'f7\Q׷˛W\_m]{Fxt34Y@E%Xƒլcč8Bp#,#HBS3VEO-t_QXIMDŷ8(g%!fO,DVAlQ#JB@l¤og^eooi35AХxf=51{@f[7YS [XT<ٖ9o+ O䷌zd0M GmyeRfixP,-؁inNdN5WX8#4PF<}̎TEBB)0x,20kx- yP&'4k3=2}h8֐CV'TV`s aMUU51|r$k+oShXu&Ό:NiC20sngޭGaMQ{c̒!X{D5~ *R"voR:RI(.&`NvEqXů}ܼI1UtaV9gf73?[}cN@sSW7|`h;0~xk"@#Cz*nE࠹:֘tyUƓ87q $Ovh ŋi;yyUH P&0$e+YGC/dvB֌d^#˪uIL^!Ĩ)`6Nħ,nzʱj ñE"_wC $ՕineZc U$lbLf5; I%L(kYmd ^:34Z̆X̀4M ]uƵTeY% &VYIyhwFrFn"y dMKShw[ lț*s?PSpS[.+w?_كEm#sb8 2s|++vs٨d%Yt@+M)kc2O4?;9JN!BRx +XS%R@@re)b q: Cp7P1T:S-%ʊyIǁ+LU":.o#}|//~7^;S"q;?r;>{J%:_zgǥ+CBkw@P^nbث{')]["LMfw=?^ vϯ7_% Uj{?2{irJf[Wi 4w]## $ea0x"pk27)'$MPi̞ūQ@<"xf~U"HU,(5nK-("Ed"`IwbI)LՁlQв L"2 Iw0ihQ&d!Jr{3;J|x#HuETL{ȅ"uPgU^ZqQ5Q1d 9c|a㗰HAaN vTp qVI>Z dRktr"-%"5-kLTG;B%@EgAVʇSY7i5} zxkCf jR5ڂڔZw3X*cTZHT)1ۓ-a,^0fBԊ|3U6m關X8zlaUq840gS+DxuR9{1R2\~9KzyJav=ڭ+g#h"ԸjqB8̕#8BYѩI;ř|fD"\3Sz߯|)啓-r_Wi}壋?~h1 TMҰ O]Նo[33)Nw O2ͫH* -G,Ec&{Xs lP 0Xj(Ц[>أ)3A]L) ]>65SLd)M$!A;MʩL\eK: Fe/]he34JW :X'h^E#B݌Ý| fIXf9*"mr6QA ޺ty\ `hi7<$΍k@$%FY=bjZn!Y8v*?h̸C4g+@^a4u@f7ʡIMxJJASM`L'=Ъ턤.JJjs.ӭ0FЏ'T<'3SfrQ!o{u??IUMQ@;U/| GGkǗݪ!G͙q:P>D\% ߟ'8zC_6>2{wlbGo}-_/]׀*O*To׏n?gj_4~ƹF,++L>eF6J/ Eqptv#dӹƨ0GMH/Ї*$abjL,)+zB#پNoE7vFXHݤfx,OOK[fNyGB8Q4;D{ ֲKэj 7?؏-i"3i%وJE{..gQيdଭt+Gl1 6 Ȃ<Yml^P~v6R[!Ka sKsQy1["L$̆YK$zDjI(4.V %+%Ӵ$F*mRS0dfam̌JSb(/V⇫ŻP6BhToi\2I6܈5nȵ uc'Z!,=.ըuE߶=^xbS?^}v⪭qƽQ ƹz/^)jo>E7TjH7 %J&(@`OK''S|g [M,b$\7u/~OG/o#ͽ~5UzDB2(XPܮ,8 THԃEI.`TKȐEi\ eB$Iz$V1K2 IJT"62W J2d6.\kM}EHvY.,h#.I@iG(Xg#j mElD\ԀЇc WSRH75 E-vzsdKB#I3%G Ɉ1x!4srQh`CN$H d]l+=E4>z^P2a9C7wVpn*) ^Қ3!tlJ$0&@D([mzn鰌/`|=>&Xgo?+_ݯgn=۩'/Nx?[)KP!m њɗד֜}fY&B=z&fR>>憺iI<1uK=%#MX !~j%w JDEDzaޖնGf=l|F8A6y(UלHYDc+84XufTԌ>P ZLxӢ HVp^ð6`/}obpV-MLMȄLHQ{&fz8%iQ Csa]}Ǧu##ף]tc3+*d2V] n$όm.R-R}}G" ;Rh[pvZU܎gV0w" SBn!Vy#gD_ʯ_ٮ g"]CVռp|?K Qh\WJF֣ҰrPVA>Ût_{"3SM$TSɗ|Ы+(V-04-aFOhY[c,!)[)7iPg)_)rbQs#SHd,Z9u>w8}hT63@ XFXD, A(Bg=s{p2&Dl%b$*e)cC;ME:@)MMH1H3hFAQC3TȎ6y2*d{1Sgm{Q}W_x~*єcHNFn=jrph.R[G( 9 ۣƳN oiN\@q1{rwQ313>WվnDވ>& (Q(&U)s%E(1qDyueJ:Q>2 QT8azuņ2fPZMGpZ|(f^H Ix]TuL_R6ݕՋBD#X]}-_Z E̿[,9N^tD"i{fT(޲`csV KgTCÔG`uEKK7٨ZA-o֎2eAG\_= ض4Ž7[jU!C=2:R d$ tWeBV_9΋޴B%;i ېǜoNo:Coܽ6> ) Nqhp,fC#Z2P;L7VpDzgFܜZ;HF&GIÃ\˾cu;n'"1~t1;?8yr(5o\#ZN"H@M-EB&a F 3/ krܒ.G e._L$sEEh/IwǦaC7߯e8E1&?u'Ꙋm]QaY"U4cXI20uSLIFX[GܸMMD3fE ,ic`)B/]]EdFS }PQdV& dF|P!1S1R>}{ *N\ izҐ4ñ6pz$rv"x3|TdC?huM%HL[شuvHLLݩ-͉5 e瀋zN <ey7}d(X1_Ξp!'Kad@8b-؁o),ާG-hІK[cuO3aȄxT/2>\jqSɯ 0;F -USq Rת֒IR䓔Н}MۋЉxhU|򐰄 JHaZ߳t']TɝO 43B+h%H'fBʼnr*ՒidJ$R`Y$'G^Ln#I K<~}k#]O}ycs2&AY *<ȗa[ DO~!|>}eiDM7H6 v Z%S⌀۬#7$fi6CpQ fFdˊHoXqH%sIUO+QkQ$i%7/ePK8Ѿ@f=b"=j+sBkGˆU4ãBOeܤ{FV^֒6%F˨I&MHN:O#3P{]r&Zۖ 3<ʚKÐo1`&RUhPX!aYT-EF{}XhL1R')$:#&%N?3Kl 7c& Q}:)Գ81Dh{)ufe@ܸ;W,wHT]gQ:?}ҬaD{}%S w@EJSic8c@cvɫ(H6@1R?v(1kb>Rd;,K˼>2Sy0I 2LK3^5Rc0Uf6/mVND4<+V7b A7qB:LJU$\y #if fEK)&Ƕ[S'.!:EI.U*!]ظ`QuOk!IA0t([h"*(D'R 1TgL6Y"lsYD$40c^Ƃ. pyVų;lMW,y%D\tj9X`gFJkt $֭u<A!y47Ԓl VM3%3詢]{q]2h50Juޱo֚6$G4oW8!dD t4uV3ͣRهvk=;&K>PՕd3PKHg>?Rsm}ҩ61Lz"uhI0V:q6/+&I#x5Rhྚ*۰I*o0h]2@ 0_ٯnc`m[N[ETS2#%WCyK3#@ʻ 턹vLҒSh7F:{,CQbD㌠b@t |f<QÕ)jCI]cvF3)2tZ$j"Hʚ #M+MݩF7I1Lkg p\aj')a 9ՠ򴭨IIH*$&eY<0|s{21)nvDX0lR3AK;mhfʟeidf*9PExEFhQII`heNOi@/X7Gdi3דUg ayS:}2h7ВJɻIW2`&Ĕ9)L1遚eJIy 0{WFQt 00] OfBe5tyu>A}Ep1?{#tg2w^{xgUX e]()Nobg*fS5GgSFhgjK!Ъ T%2u2'jNJ@S5Q[G)>FD¯F"؈ȃ2ڊ%A9tۑ5eF!m`(QR0{<[a؊n࠰(>PK*1̩XӏSD*Ci @Mdf;Ny8XHSJ2ff",I>)uj*}n ,uI&A-b1n)2FfiNʯhBJ?#-y`v('Z+؆,g}& #!r[*=4N-n|~eA/Ʉ(fL;o88&-# t ,q-iX ۵$钃SpRGb0aX(;a;Nd\>Vlbma<)eI9ژ#%-S^36H8..u.`՟~2Rf 0fZ]d2-E2MP1ռ+pJpȲG2ebdbZTˏY ӑԏj%u0vW)85ة{3{V gc8:bpr& <΃vE3n峪SQua$GTȊmg1o~n hH#YWb@ Qox[)Y'XڿeS ьnaFws_HSub3HzĹvLFc Ղ 1LZ6dԺ*UR9ޝ3W {bMG1. fԳ 'ƍyj g2 L':[gbXz]JkÑL/𛪖W,8M~u?[:z$bIJ%,; LJLC*d&}؆Qd}|84.Ś`Fgiw[bHn'嗑&Х\kI2hzGvDÏ,A΅M9Hfre*Fhp`WRVf\XIf*q؉,`=HmR8`QHΈ D.dgEobL"Cf-;N$6*KD16.*pVF\2@\-/[y'1tD&)?bT,_8Y5JX$kYOv3S ,nmRMJ"2I- ivQuTTي"y$ZKsB/h?7jL|3ū>no@%m58V>R#q2gY,qT>mt[AмD^(opMxS>~*N*qR-_YqyVyx/6}oVk3Lίn_FT>>̢csU;xd/ibEl JɷIM&LlxdJ7dR *u"ҩܟCai>zڎ*J&X:vԨ3"OKl;g9&" %WL3ӃdUMDeIb#dWؑ {KM'[7)yHH/*n_z}EKZLrϹN':*Lj k| gd$Dsfꃉ'ƪnIV%/X))#C[`DSkVtܚ_db[bFɔ BS0B12#jc 87GIq#k߉J⳯aN厁MǕձLBQc~D`./.RR=]`24^[2H*Z'>nǷ."iV+vhKafT2%iʧZTP煉EVLJ #pkfq%-a-<)͹TlGXQ8(vÕב=EgH8g nn-3.FFLA t#H281>iP: Ml' ({]Ki0t%>WT9߅i xW2&LHyG N#l34:8JʼnTY3^_fyssk63؜iޑna2+ P Åd ਮܛn_gɿwNYߝzgſ¯(f|gȷ;]^_T^:l@Kڈ2)Ho`oo 9DZ >:.M0TVWkE:) sQS _x].56 ?sb0ʙt0Izf󌳴Y%Ml*45g.lH.9bEq14Um51C#]Ѽ 7sq%MWSO i̗p.s6CsG9}ol=,q(dC)`!v3'k Ւ̯bGTaŤc0Ü_<3DUQ`0([j fV͘ڜ1 ?qg'QJ fNCUy.# `( 6]ġHuyz};DΛ !Ir̪|-X`Z&";bMl< 3K w ɜyC,b*`Mpe'Gl),~d'2t*us:~htA"ԃur|wk-F]m?avk/ g+AHgP91UDo^8o|Wo|ʖ7}qŭ P#Ů $:a(fy[ʂ@V`ą]|ۃQz>c[X}tYTRAo1;jox_Uܴec9B ibLjv'׾d 3)/eH~&A!Is i"DOfzꉫ&U5>U+ݲ"gm#S1X},gFm>6/Tl{v?PkWo3r52>ΚBri&XxS5\4fizXE,xCYSsDi jSQ\" H ?hh_yGY~"g *COrdrX2%R1Q1HU$nXzN E$ d=mORLZJGh1yJl*eԈ$ ¥vKj( ntebXʒAǪ`##7b2>XR:x:xJf쇆ZS/CC,qF"iNbX0† yuN*!40J гq;Il3E$c(XcX&5; %w>Pxp1D'7~8;CEYҘdTΕ%/8ioO&BJ>wx.n=l}yls ݭW?[zSͿxņ*1uVʲ iZ07HW#fo~*srv)/g٣hW?~Ԑ F !DSl#"IDJ; d!$&y4.x4 _4&X͂dXl"+YNQC2(%:Ŏ"nlUQ3ޱHxlAnf1/*e+7#{b[,|њ<IrNhY^R;JkQh( ]VdCݔ 4k x`2<&cWy΁&{lfyx\FT̢M GMy27 o`~fMG:~Dxj94] )h\1.powܷ%$7N:P%10o%QqZSC蚢Z˟xSmwĹb rg߿n_Ka_};XsQ_PdɁ\ef7(7io<^&ªw?S;L FcE~ _on/}qfD$.؅ٓ=[Mfj"yKEhJ(sL d^RU1A<}`q%jX9b&DҖ2ca(LHa S)7Blуyo|V-e" 59mSU6H)26& 0ʌ Ј ,ˋ Gj?"3Ⱥ\aIN33.EWX*$}+!NӖ9\ Ë%S+hnix(˂mn"bEzq\jM1#6Nayn!oVNc_A\*Uẓ:ٳ2Q s?w$Ɏp%4iT&im :e F<cSk}Jw^~zog̏Y#Vr}};ކ@p@dpSa1OxQ"{}{n1dO?x?2'|F(vfdw\`rY໓/PYc ߐf| ^+H*R. @*)͞z蘤\~wT\Tݸȱ[57SZj=Y<'v?gs</;k_Q={w=oR_\:Kph8UG>Nz39nIb!Łt(.!33JD sS16Y )#36_T!ۙCMҡq,Kf.jx+@Ҍ"XS/}U'HҞ"a1'_DeM@7TL6\UP/͋Qd %0NI9Mn!G ҚkA$9YF=F(u @s]$!.+9;>6j3˃@3Fmt>uh^ˉA_A͘^R#|t5dXBGhЖ ?5ʩ! E9n)+bMNbxZ ըNo8E5)7| Ww% 2\&>zny{=ۙ"NEt{|:0tvzNu ƻҐOn-4@qz+d(X-{4UED5K{F }:ɫ'DE?j̪h63y4!ZR"v}6چ[$A ЍhN!urwNH{S^/ٷToQ[m=Ty·W;R WG_~u9Dŭ3sS57|_cM xk.LdܢpIEЃ"PҗlC-dFY3G!,R떖wB$@$}2N@WrJ&X,uGd؄ra% vgfxZf,>`i1E8xfKej}'hi_LE Ι-Ecr Oz,ىylS Rkd Eac !9(b/GVABйVHFG%"CMS:$\2y%n`%y6!+^h5ͦGl8D95S%fp6"7 0%2ulsdR}Ğ+{>ػ'`bbLdLt >Kt$bAY:I"e]8zJ̬ :TJror4I_iүyN"95x`禎Z^"VkldxF1}\Ŏ/i;auSAWʯ߳oNw~~].}YU\׌_oUM˘@%mE<ԑĺi$ De` jm*@R"6pe%2EΨպl['#sfafSJ$dd` Y$a1gq/iFY=!UE>Դތ#ԫ°v`$}(ѤqFذtNemN(L<26#*:'穢[˭3s}@dTX#0$" ے@zґ<1*OU'zfv붫>Q䉦{W}{d7GRzOg~rΠoD7&`=|G]׽P\R)& IhRDY:f҃\nx]Lj3JR .%L e_f2W 1(YQbfpZ4nh2mo$b\g cG'J"٘ݐQVHVZGxB& MV'VEcU5ftQ$$ OZ4yQӄUM,Tʐ l KsE.׶^0Ń2@ F➂A;\!:PG|*QS+5WF\waAӋNQNs ʎ CR!Q,h oZ< X¥߼ol6<MOe57M+][QȓݾRU( ~+ƭ!qPk6 OtZP*QR+/ rVq3mp8}ʝKۡ]_=\L?K_~aR0ucSr/w-G l+I}hED˿gM߬g~ ?9$lsX_>8PzT*O'.QKL7nUN6mt}{Ǟ*CJƮ_>qƿ2 /~?]VSM/G;U];iIշ/t4.d;#dP0 1$|RHsyf{n,k`! :htX:?d.D6cƆʪ~VUDe;=`^8T-}MKY#"/.dDe&<94Pw귕N)N5%) Jbj.Hh]Lx$Yڄ:h#pi±sükf?JQ歷]jd $]3k.<}c\u`jGS'_+~} `}'Vo4(j;;UMvҮ}79Y~v zc[; Er-d<BX@ b)0>7(rk}cA1"!YC2A&e"ߒ 8H[b`bq?nuz$N_|O|5o:FMi{!}})룶bK:OtO=2={u|YD#B 2j 5_=?|w;v+?.yT\9,zq>"SGmF^ ?K\Й6K8e-0d=~ng~aʳ<۟\x|ng=M,bsWUb :m~S4d Q/Sr}o~t墣u H N&?ͮSFWN9jSʻ:q1T7RyMs ?]η߅6㗏.CԔ)xM|mr}؉7+3 Rznjzw_ǯQULU\1Klyv}߄jk]$TQ& X4aиED!&(KĔ9'b a5> N,JbB+zȏiR&l/aRSTU8J Ln%-+}xqȦ(d Ǫ89_w9-khxkwTKO۶CZ2pG1U1 arTOP#bM΃܏>y揼=ݜX3>qo~7; 2ZwX Cc_+﫾fVqp9PhggraߠoW+x0yUSWg'T%}طo}n2??k5zvv2{mq虏vyeuܳo\U @0k'bՇ`1\*ɚW8wr%!`=HD O=rK۳t1.'ͺꪪs;,Y=N:c35nv`_s 7!+Wf_ich]_wdV[rut#^s`HhD.M"G!l)Mgϑ -h4T*"|D H"$w> Q I HERDAkdn= kPZkr)@~LJMOJxQ.8L@ p c%3CRͮs26!4aJ/Rr+D5IaGu4"2,&D! bM~zq󧡐 ScoB]&6lP& ]bCy\4=~771{J;'JY|z0*Eo9ҼAgNQQ#~z[Ų#`Zhyzͭ` Y602⚃|󕣧=~Gg깪ݙw=3u}R[bqfըpE̔Chb9ZrptcBM CW[6tĝ&_{~mo8b?'_Y;&cW1(/63;Yi#D!S.ftݿm¼TDD^Z\>7 ITx5}]X;}k5ڞu66ރ7v7WCN܅jvaՇ3$ŞgO"8r59=n]hsD.efb8&br*f͓=}xaN0[·t5&iNuUU_<~yzd?&s/$# ""GT rTn=}qkjlܾ|=/sxgĚ+ )&8jgxcLS,'rQXHCDUdxLC1%Vë.&AwL> dJF}3&՞ ~Wk|V۽^O[_0\hl:ޙw\*1KrZ"$&ӭ`B|f9׮޾Qv}ιºrO%Ѽ~}?vzʻN2uwhvsG}ofL*19޴Xt {aQW{,[Ww{}ɩ/ńV^h}fr|R}ocՇ=;ڟ jVϐHAډl-+:} DL.̇s懺n+-|)IEL x{d:YmrҬ'u[Wm]fx^߻:xoϓǩxW \֓g{/ yOs05?[|:x+W%hM<{X|C đՏQ151@CJ."6U$)@Ϥ4hl@Tv(]; %;,"! ꠈ;6Oy&*;&5֤Jtbt2;fx>].y) $!| wٙp6N JI*Lzb`TF0(ûfJNKv&h˂4[nflY%eEBЩi.:wC T90!.L3㴴Q<Fu iyBԓ2|vTsp(@6ч|o=m<_u[-OZ?\u\{޻?snFb$Y\A9Hܙn|<"v*jkZVlh1q'ċ W;LF-` uD`vg+j+1'1EP¤ƬA*LO1#ӲjM}Vx+fu}ۯVGI<+mGa"l3|;5;ᕅ@W% dQ|O06;JUtwWfcr8i?}O~glMjڬk9_hySgzF ~+c1ۿXϏ]߻V&mtr=_gjz+~K["F>AO2bqF> K)&Pօxu j GL6s4@y1J(HGSc''!V |+TInL~<+BCU%AHdUA6A2wBH( ]B$j!%Sb jOdrm#914 3)?YM,gJT1z)qIuwTC /Hsvry E`؄`8G:8xp}CS?ډq jtZ(0Gy/Qb O@a")=@k#P2U8 =VOwbl~ygQ1S+?7ߛ>}"%Gs嵗oW+&j+kТv'[o>5q =1ąּX:0wvL,ô?:TBǔ4\S׋XyO`p+gs ?^oa-B]&;U/ܤoŅ:qbQ7–;8M•+# +, n;>,qq=;y{z=--oOv\vm mKZ<&!A(I󛳆'\NVr,'մY׮z#WړHT o:;檚\y}#Njۦ'm;]f[Nί Y-OAL*wu @׿8v`6@'S勴LF#(D<#]_N%4zT2T` /H4pDڪ*!LNZG/|$uiY`$o:&$ &)!G $ȤI ̰Жe<1;"(LQ9 љZ Ph)EBM_>?i=ٺvh]fRyd܃Y;fK!Pk.yW;*[Whhٸ-G{͋Ϝӫ6ØHY56]<v+~zmv.,laaS 7*LVh ;Śֽ ʲdw޻OjѦ2j5=T@x*ΪiPoU{+[j++乊449[n+OJ$n4; ^t+PrT;ԝ;n:DwJnx˗PA*'Ԗ cӾonN't1.ͺMV"M$}G@ĐI5sdt=u]}uu7m;[flV7կ~w !&9ι$d%\'r&4:GY B=qN4a&w rr`f~{#|vkNr2YMUS뺯\gWn/$H`qWg{_&{2궝t>՗~. L6bz#YZ*B_@*E ĥ#<"V&Pq(#AE$Bk3EZh3t=HO_k~Y2/OUd@8PV†~DhoM,P$S栥."%ђ Pa:d$"H%Fiff/d, o m ώ DQ(-̓ʆS))ȶAk1 hco1B"`!f0?^q`/Y?QIL%10V퐀= hG{a[w/GY=S&})Y%, 2/mrqc^;VWqv-h(VMh踦KgØM~o^|틇w/׺ݯZH7?Ͽiaw/~~8qwOw^{׏o_}_|}?~J~t|xqY̫oxg2?}K/.[%y{^o UO@E$,MBʐu₏h2S"IPJTn2U9AO75=ThK6[1,LJ85.ˀr#HJ;(4iX,f4صc)8(" Sßoffrv.-6~FGt3I5v/XX+W"$ux[ewpgw {ٻ'L@8V8w_g~;1G=93gҲeY2$ O;hg55yw"+fn˗K*8"~z'{:2@YU_}|۸D$)n~Vc%5xu5m闿|7O_x/_}uw[vwwӧ_|KǻoOzm/^~rw]ᷧ#n/_{|wo^{|RҊk@uBSVW(!;] ۲-J~V.3lm.НNI9EY[p$DK4O>-> GQ2KHvd*(ҁ9:AN<5r6lu.$M-5z7 BmiA{-ڋ~?.ntw䉤2s,^0;̢z :}cowOo}e#ejƴ\j#2M3n2Kr`9ey E,Y06Cl͑VaRxeHdң3I%NiL &u-GS733c_Unm8`YJ ֣>0lCx6;o'W~tVl^1-6 q{gg簻$A\s`{}lz4qg8a_ByQ*?`qI%aWCOjZߴ#zE,ZD0*G|2w;'1W{o}};^?7;.8'vۇJ~vo~">Ҙ*F2cEcz,}^ʻ8Tш$htPq<&J ؐ {;~w?~ˇ>ܿx_Oip?YdȺQ?{o޼~go_oЬ6(YV!׫J7];*&>*q_yEzTa+Eͽ0{- fyC rvpXA;X< Y`µZŐIHz&t#D׸Ζނ뗡C{uLq' h"m-S9]cΟ#sx=eq!L{~Tà[y#n͞ƙ[c K߉Π=/4g4n3oyT1.c({2NkgT sx)3#`*[7;޿^}x/n;lV{܏{{>/֧s?~ŗ|Њ`[6 Y k~ r`eǗ_?0zh0+Y,Vu}v駷p]2:ql@I'O@Kl0o|u;PveG<_p9p[wpo& FƆ/(kjeh7{/?>?.|%B$L~:˷:Wo߾ˏo}/XWGOJwd.B*ڽT{AA*W\$ъ6r}r7ouҸյڄ6c!-Z$ #HeUqł%j`l֭Zً#doa\i Uk)D=@x1VYHxXDa`x3cQFok#Lu~ef[5ΗN}j(=Id}. :>[*~`^d6ހ<`[{pk0WL; ctI'L/ѡ fFme~?91Lsre[-Z_Îk .MC:mnr2l<ꥉnfxw?}O~/n/vb ;?=woV|ǯwsg@RE&`2eh?qл^|G#~koȄCw8/ݗ|ApkqގrvonIb@֐%C6+ \0s53{;w?|?nwg<τh1qGEfg<儧kc4#f8VGEm#jjyϛ}/߾|܏u`Ӌwo^}O/Gկ$WwY 1cr:rT-EjAOwPe a#|Ubne8[aamuI˸1v8d," ī 6+#SfdN;e >$6'Tc׻"52aD@ܩr#f{ݑE#0Ѵ%krup)SF&h :e,/L{Emynyvzd9D(Ddi _!e A=S  Lg  ;`S=5;W$:s8/ffs.I?޻r4kQ/˃;#8$!5K(Y(8 M0qO??WfGx͋ۛeo}6+h' ^WBe0$t$#Գ^{XuxZ G,eǺŊ/+w>Cc = *!/w +ƌeSi}PEECk+2_/}۽vwr;ۺS|x?|wJ,@%F|\D߈|# j#|Uwڗo^xûtW۱nǧǗ_>}?'g|A*)1!Ėg99XRwyp{՚WG-ry'%j. ٚ"wUG O|oIhu;&_$h!Ϥk9WQBbBm`-XTs shtP/* nKF~bk+Dg?糟 ښi4fop^+{ۿ7!D19n'^\Bmϐ^r,{yvsl/~nW_6dgM3f?ײѾ V)L3z>{EY@VE;vՌWg}fOo/򃟼{i7?j+m㽿]'˗9-%/ES/fT +fR;(0tٛwYO^~f*\ӧߎuįߺ?~OoѷsflnQ#SqB{|nHUwUЊVS<`ul>wZd9EEO0M% ?_(< p&Ivy?$ |>saNM6CޤbhkuN%!A8KCR EUmQ #jt0&FLF66izޞ9st3C {s'E绗Clisڿn#tnGȦN. Ad@ʥv$ Xůw{sq̏/߸O<>>RXdetnD}@wNAL#mWϚu?MfT֕ےWzɏX2,n {[O_|oj9I0bA%ĩ6W:%d{D!)6 jdf}{_7n* wݻ7;ŗX"YŽ>ƾ×{\N8uʗ>!<93#Y 3*CmN'.9uf + ۳ ع8|9]NgFBgѲ>0Y.Ӥ8ewCzriz}1{{|Ow/bstlwVʳs*!YG'I*BDn>z;#^=XxԸ@=KIh/qCTBeDe|/>{w>w??q (X(Wq[eb喭]rYQ@O0ی)%'I< :vkđ`@Q͊>TZ k-y6C|ٔ7;%0C"u@9U dN'JZzLĴHjax@Isy 2wDʹ4gذ0ڴ9Lps%+ FW!vQ-A{h-`Sk jmsq9si>0eNy a'>0Ljkf;{AmyzY8huͨ1m}gϗ_|0j;y} 34UG接qIS2u<<ײ=bN5<0ᗇT_|g3Oě~>Jjt f,Aj Ͻ&H]i@AmSOO nƬkϧ9st.:NdV)(:> K%0s] πeq7xv UДQҪeWR4RO 3Ae5T}hq>ir&7ZOyJ fʆ[Dzձ)\;3 ^iTmLGQ[.Y%xs|& u͊&+m44}n͆P(m(u|K-o}݊,Unܪ|mMTMB${ey/d'I&VݸIYZUI3&-ΟtŅRbm-ݻRPBչvEBis~|,~\=0zzl4?=rfk"o#'fk֧%u.3'{6^(%7*`vEyv ?TP臙""[^;"4-3LnW3mur6/2:,; YZ Ȝ(kra[y&C".!+%Ĭp:i=MY2EuH=Q;"K<{󎮸n!apHpfQI),kBRD<1(=sd])D!ܨ!2[MG*Z֨[Xh4Dq) s;#!Q'5㺋 ^!zU2"0iKwRPh&rH&|򊎁<8huױag?0wxa[G/A{Llr@D8<‰d!DL88Bd [3)obdti@6 ̖P ,7= ?AYDHU]{jBTY8Ga!+ :JF8j\|Jz*CN&}%}5PxfeP&==eK2Z@㲽^g4eh[ɾ35~@<@dHS]jT=Ezǔ!V 5 Oy:>01 t ڬzD \je)@ ]G! ]y;7JS b׿c 8 u&kv鄎@Vje }g8}GMipŒ8VǀM:6s @@Ja M_05UsmrYb8z)~=lj:V44Z*d~O=Ҟ˷Aϋ!Hqj ;=lXϥ`` HG-=^J.pc}ag6)/|8m#h `2|`X8Xk_Z[H{ĐTqSͼT*Zgˤtu)†1,]J)?5*Σ@Yhɼ 6ҷi ȒDk;4py(h{#lrE ߇ +_i' .L$5=\џVl]HbaC{ӏv#j(Q6.ZD.oxeYݗ6: ڷrkch)o4M.(pj q~_g)F/sA)Pp5ǀI,-ZW3h9"A#HCI ZcGQL0XA͟*㋉Wt'yEzmƣmBЛITi7Yp~|ָ;fPf,3y'7i``򢫝+, EchtB2uVr$[@ërE/68e/n+|KP\QyE[ WPLCk\wǚQ]0=IBۙU[WGAqwtDmzT}fWСB?f<6$44!-ʝQY0ttbOT/wz1#Z}&PVŶc> A=*a a.0u<ׁcY'DnW`.LftC 0~ fw;U;ط(|F S o]bنHaϭV"lsljI,dU1| *ʯ|R^∐z-%I 0]8oa#]#o-`۠*!OtAl%%7 Rļpv /vj\`ʉ½& nsX}UYnG r绔;>03ʐZi4;g8;;^/)<<>Gt?AEי!38Mn[/,UaXsHKԹF,$r>mT `z%B(SC 4 0,4.U` `lgt"`G%i %H2mM5T5(p$<&j A3L|$`_XV7JG؝DƦ/,%lh/1+Q(&~Ry=Ls`=[NH3l 'W$0JQ稁ynֶ4pE'&3}̌Qm2evQE_ivY1ꍢHӔ`L֝@RR}.l=lgKaYP,elovh$DAߵ+Զ[l5.qmd`t) _H.-zƹ>_6o\P4$]xZ? _p!E# ,3չ܎VfW4̵ő.&C>]endtڣ` Z|ȻA&y |Tʱb b3YVPD# @~/oZ܁ȬV_:"#wjf" g`c5u|`b×ُ2"B ՝tM$u o+všwJ9𴆐mis<p&<֊ uyץ$'`2.zL*yFXB(5*if,E7q%k8RPJO 5ތ<%N|YOdn@|ji'&@l6ԑ)6$i/uv: Jh^n9=x?fqȱ\Xe&Up-]Oz7,u0&J\JI1ۄJ1V]9c>6I%K(prm2whU/ }^ܸ|n=? Hcl7[ ߇q;,lvqgS%oܵE^Hj*UlyWUv$ ⨌rZmOuq8〣 I-X[( FdngVp"(7pf9"NKV G G<9@G̘sEVIqJ0.LS8BNtjŝ":A0ҿ R4tpěByEFcQ~o$3 ,[ V;EVsLB|2%B,(L+Rt3 L.pE}d"+H؎YD,."T->LflN[`FMVyv֛$dMES ׿Ǡl0 /uHXeƽa$]h2@b9IoPtB(:޵im:A?h]d4>Tpoծ@%|x d<0z-r|PtJ)."h&UfZ8Hg^5;)h> !T#Uك3>}N/@=iA뜙U[,T\4KjIP 7k%TGbqOB$;.fOns(N<-hͱ%pF=qÑ1d :ge;E0Zf0(Fz861tl*kaw8fnBrš;rV+gQ#][|g#Y+0@H:.UF7b$<X4 ỏVxK Y.K)TNܼJ.Yn0 lB4(P;3G$)ѶqE8!2>6<k):C{ M0PӠؘ_`{ mL^j=\t])(?rfGtΰ_Ȝ#shWD ~-;}׋['|ViϺ4p(:DCxG&Ë bAkKD)#~J#Ol"(^DtMU:+x _f 0l '΍(ll@bD^B{?f+Rp`5tƻ}K3=w|~䨢 'QAIMQh\MsU8.hӚ(WL(qվ[yM; *lP&kqILFVr>X^p#c]Ƴ@NX8B;i\Ae %X. ^rT5L.5%?]y& 1QI܊~@哰h"%%pDx?'uJ- 9z#;*Zn=(^Sh9:83ETWi}nA2dX˕IzQB$zŖXt.^kpy*~p&ф@"0`'2%]Q3m/mNaLĉ0Q!Ɇ(Ј&ӭ"xhn Z05͉AhӰqS PEQa."XxM!r`W(Dil=l' _yn&, ]>}`]B{$ң/&5q'my_Ri;k9Yn5jUw 9y`K>ک = "ZYUw=EU Kc -/3I0 9bBZ)VN;jv \AnB!cV-Q /+0L n\e`xb s/WVʢ-t QzyuƭhhY +&7+J|;%R kf;Ҙ\DDZ(?kSȜ!qn0;=(@8׸"61LXb!FţN7#I"ԸxY[fL7Yc-d>+ 2L},r3~-e.5_Wqb/f#*Bv3#j Rm R%LvJ$][u5C*wJPvCB7ʔy_(**IZSMY 5“-[Y «k- n9QgsX>Ȉ;ANbP4#1XC3tcq* ?wÀQLy4΍NiNt{|"rf^ 7_A0jWPplS>X(s-c|3Ne&1U ?jH`fØ+u괗}2H\h: ~)j5!_pVmӝI/lhEF|wM³r&IA5*b "P?Ŭ'߮8R$Ijr.sW=Sa ,9YɮsúpNUǍe Hdg s۪'_iځ%f0TUV&8%ƎJ0óh``3z=BMَ w(wŝсA)P0L?G09MF$jq1lZkt)aLփTy>d 5`"I3z}u0gQ" @b2Řdh#KU|?d,0sؙ5[ϡI2мTY_XfTHu%om;VnqRmi:H .s53^gĄ׿^--zQJ[P E[4*ԦȠ0AJ36@ de+錜fc ^y\S[QHaxo9Gr7V'hʂ,BLJJz`'9"7qpo:8%`_3_V_q]yat"P#%ǝn !D-R͋8<@B'_B#߅ [@majn j%Œ ?٪ iK7[A+/aBD2 kC -M#Kk"XbYǎ ]CIDvV,BUƲFZQ l.2G 9mtx~jw{Wᯂ[N;\[ qgηOy3K3,U ߛcf r![6Qt @:PG!, a,3n:Èbd H|>\0'- a6̍6#.LrV _΢wl3)!6-z9pR!֌MZ *|5CSƚŰW,IT@>qǙEgg%l(Jڼ&e_)8DǔLMmO3gI>۠j[I>UQg@?{pVɥdSW|<~ ad#v,vK)WϹ@ySyU6(i[1j͏'Z ĠuoyD,+rEakk+wf0 āfZm/[GnF E\ ?mB?0(DЁʘь ^NgK<g(iVj!MƊr9ԑk!1enV}Ni,+ <š҅>VaR5HH o GiIeQ2R)b[ꁔ!uc^ h,/ir`4 $n*01Aχw4ӨE/6RG3J%Œoಁ(J +" $BiJi)sdeXٕ׊-"FQ2Eh|pyd)Bmel$:;;݊RIgc05U&@@_o;[k:aFH4fBVEؤeXixo aKMPwo 0+<N䄅ֶiGIDȭԧ~F~E."! ԫ4!KzOs1mݢ/4~V"Ūs=dv5eڊ"eFbu8d\z"s.a%6ͺveHjJƄ v.I5LW$I ¹UPנwm/3]kQ :#ޢ}8C Φaʌ$>HGQȼi ̺B:㹻A'YRM&Ơzx:?=?g; 40l̑XI kT%AO^WiH"28"y` _cO,fkC􅳨֞%YLGآ\鎊ײwJXl01du45w(Hx0[vu@dy(T{A;0/"\Lb7c hLb's事**ҷzy'oS>I+fT۶Á]e] MF;x*2D0\v$ʷ%S%{0>UM 8%\D']Ūjk9)KnaDU$"l UWR>cC3!P9hzQiV-3:FFŔMkm6F | )mG| i[GljR; ݴ IC04Y*.&L ^f^; }VuvQ شn(َQ?O9O2د?7:Zs'Y㺈ОCrEy]Z^|7/|"\ۅ e3-?:e4;afhli[ 23#"忄5fd Cw :^hҞJbڤ*Yð#c53Ihmb<_ jbhi,,omjt@ 0[=D4-DK/6rgL1\`|wwj5=̛07`b)¥]dLeH 1Y)W9a*ZiERd]3:a IH W͌o*cG@qO"Bb ~7Wrs$yc%8yZ]iX} hO&pX{daꅄýE&EtW"eD@1ijd"gj+NVDBL+Ҭ| WyXa@-4k;*Mk[к@  "@((`~4Z;f*U8]aS֦' Fp7ްF>:CMBGHH.e#]ػF4D?m%`,@*:%) { ׁ]Q@$^>1:)ۤqYeϷ78oVmɑ#VJ)IeY@fwX$A5ɿ0YS2z÷ h1PG:LNsאUNQ +@\E݉yx Y4n㠶#݂d8ݡfsxp'F,"[Z07)~$VD%~:Dt%i"j!SC%YY),t8`]S&ynRⱬ,+(K>6[K"ѦqG9iEҸ]PShTk-WH!* =rLC"H0SiS߂1܋*>(<b  `WF{[$D|{VTi4 b(šR hLJi'vg ieBظ3>6 ,T㳙^тǫx1 5P6N෮`EOQ@ CI1m;Ζ08l:`h°KtަT~\쿱Aa)-9{elvL9⾞a"Fl]O7m"%zo`:Ert޷]eq$̺Uu/$ _ N͖)MDE'|cB2#O4k2ǝ]2kcG` #hꅿ#S/]aQ ҎotE"?? j.þ$=o]{I-iBbJuaAh-}ox6O`QJ*& ^"aL k1HLv{B=k0zaW<ƣЅb{^u"MfF"G\,D ~@7ATUF)P!@zX6GC]|^ "<͌oú"3ҫÊ=M䢃" PUrE#+H_Z̑$@˺V[XS$ "w~ç9(.> 5B(#cjj0f S\Isk!u0e؝QP㜻H+ (To$1 *_\}^ l['q{gXkLu3eErUkgD?"T۠(m\`ҷ9bشEz!Oxd8Xʚ5  tʎѲ:B& SN|BWj]~=gߙʘc5PHX)I"W1z| ~+0xSe6!qyDTpk6H-ON5@^QdHYzDkp նy_x1Z(עqaDnT:76];-n-3G>uŤ_У]1cd<egz\IGs{Is!ggWql/{,f^WJUs*W{skQh@*$Z|:ʱ: uؚՀ5 3FLWr"iμ=#8n{h ,0""-F yIjEbzs({G}XQ#+RH] BZܽ[sKC\d&K8XҷDx3s9ڱ ~0A e(c{~&!1Q^Sܢ2NfX)f0`DH[BO KqQgN 25jڍ65E>+3tv&(gTm9ރ\yOh%d|6%HARKˆlԨ vz`#"E鄲%(l-0(.ȻySzOQ>i3XN '.W~(pܘ<"hm="F qCTZ99"(|AN%b6吩i5NཧHV;a䌱s/qiW@ B;PWC!Z1ag!ĔI]O)lѺEC'vهQ/K*qZVb(]K,Pz9 WxE^">!5Fo8]D"1㡣J'O/M7,oh 4q5rq# 2閂!qO(>}v1P]qggĔj(ƕIɸK7 5_z0zҐo}!mk깄4LR>f^Gr=Ο:-_U, IUHlTƨx3bk~M(îTq6If^|0/aY44W[ Du:7L_i&ҶS!T^9JHldXMXlCfH7F9st ,`Cݓq'(Z].fh ecMpgp~q ` `zGj=:Bϐ5cfV?v}OLѱ $> I@|؋|Դ;:dݘFUA"lj 6d C^ey\a%iiVm323K6@!9[Z1G8=iЙDلE@h8_.͢a丧dd :A/<*P t~o(+/7oW/#[D$>:> qBm$F-6{s2ۉRv{=g)t`t !wz8o+ `;SѻoP657f3[>1GbB(Enǯ 33^iݬAtP7$ym g]Bd$3ၬ+=z`5Ɓr!(^A\;ͺяeh&8 iv}DZ\[x%dMG֓Gn *k2nж-8xMPł j@W"9Nr .4ePM4YYŐ.?H+݋^\0p'gX&D{Suu1;b!1\X,`(iu7Y)J2&y6 .hxNM`X9tI(ob֓\4ϝE裮zvޏPD6H[.v%d@eF6)*Egl* Ufai>yN٩_nՃs+cc[Zq<}C D.P]5vmdRӠ*sFG)Gi0|g;b0`Ta\Ϩ*6e s4=קEEXP ˫QrƋK+S9Y_zY7 Pn6N'|Ja`AOO@KVznf#e|*ivTN65>4 ipu}2xB+}DbuW%RR&bCW W(S8To &`bu2Ѱ#d[ NafF ,+m#Ik̡-ޚV2}sguGj%^ihŤt %$~;Lwc*WUYCp).X$VʛPPaLvYPɘS- KV4`:5LH2}1OY(P\5  7m$indxʳ"7)[A)@Ҩtn; @b]BI:VFF1i,8҅N:LiZTT.LncI0`b cوω*GIav`֗Q{N"dۀI]cD$fn_~z$%"~}pJ!h &M ( sJ3Mfv#lS*gmlMD+ZF Bsy׭'JfGcg50 h7erQ7U^=o|top_܎B6g 5 /EzG.nDAPԹ@ f' &Y!^_۪ThUQa ,nX>2PBTI5Sk,Lp?D qG8-501BJɐwsHPbj7OAHHU=:g܍S캗ĠN/KVhYmeĹlytLVBfySMskb*Z㴸6 8khآ&0hhɿzUWs2 id͆Ú,}0:êل]θHQ݁͢pФDK+2]IaŮA0Isxպu,-jĕbή>wzq 4g yP~6I! jPA x! <41Fˡ ٭bf4޵֒~`4w7a}+m29im>WF]RJF1~^Sf=z6 ,lZ++&8D㼙Q7Ɂ *V t4E=$~;p]iN+4 [PS 5 #ŷZG8O*゘UOg̪]UWy'u FVۣ*.D1_rߧ'0-rNL. 9+PSi((w: Y<2yNQ&ln!V¸9e{V^c,h!Ew2n)I1aNWyM  ,@5O}H1)XhXKcE'lUv a%-`ǍECi=00193B&UDGl lf4˭Mml+3#"@գL ge[JIZ! M1[f1r [fGv `1g"6"chW@"~⋊ho&îW?‹~nj6y70.`%5b~Tr-:V/-7:%ǥ y0!ԎڋG΍:!g-VWrQQf!0 ȕ˺5Ù`08M!IU qD'$ P%H9Nf p"FcūoV+0췀2f^gq½ߢ,g> Y G L¨EyBv[y+δ8-ڷgrRyr%i$M, 2AP IRp+ahӶ{_;9oA-q?)E(8A,tHwr7G36Z# OQrm ub^QfHdYN4)3%Gul wsj9%6g~zdGs(`4@ ׷CsO8iW1/*.tw~3(FK8]93:;t @JXiNIaiR_ #v WՌ-DĤf \ȒۜY2 SAn9cQ@@OH ]VUh G-'rn2$\d> #{fX Y]&JQ=RH,QyN ڨUr2@)(bWd\Qz\F'NY %L ׎,VhhZk CKM[lA#’v`(|ZN$)C+v%=lz]&ud*pزR_NN'7񙦟'5OÒ݃A !O=4WKS? ^\:,yØ7/+pIS㆟s yf}:@(Rjq>]Ytqw׶"Y''~M;{aG NFK5*R6ampb'0nKg26e}Nt1 [}T*6Jjش۸>@S״h ̅ _ld [ĆpRk^Iyʷ$?ᮌU="+渕_60g'RZa?*: }`j2RfKRw:u0av i:|2vHl-&J(+m_}.u!J7TӏDhiʯj(8i7p"Ђ(ՆtapnY0Tb0C+*8c|FRN)̦̾k^ʂC@`LS< a*McteQe3Zm9wpV}gnG22Μ;#eH`}. vhFgk"gjmp9\"|}h+U:[ftm$_29d;Ǚ7:p^]X+*Ϯ!hPq[ fpA(Z$wrXC?ϰg۪dZ:TLJ;3!rDM:)ث svi JmEC1O_11~_Nr 6CrPe1*{0A `V=IZZd[*.qYҚ)yyMM"s=s5+-=סi儂Fa]AU1;-0;ɆxX ƤqxEYy*b PioBg4g7:-) e''`b"ha@ uHFnV#P+\DS[126)oWat>^M՚6wfCUuC^mUhX 5hU!e܏NBn(QFo6ǻu+CAY^TWݞˑlqy 瀉ji:BtDQv3ŷ2qU+0JEJ046s9eTh+8W6Q*o [M`xtX%Z\+\a hhtFG0[6)YMHBK(c8Yr0*#%3j4 5/Nю#=D)(91-}(H#vX9ْε ʋn8 SnyN |kT$Mm@ MK{-gjH&}psiʦK/n"ѷ-.w!{>{q%6K?Z)t,ڕjË́fg$ǐ%vT I+~@3#}P;7j0Ϣ_N0* JQ BRof9Sh&%36l1:3JG L=Fe4zÆ,g'ǵ)NaL c$S5/gV &s|$aAh?Z G_Ƭ9j@GdzKbDb,gUtMaHq"W~"gBOü ͽ&ϑF-e :M٦U()IH#@|j})k Z2< Wʖ$v-[dDFI_7+?4%*9^ Pa9e\"bP om D4lKYa.iRƞcܖ$A"˛"`[;e8 u 2'\B95rkZ}^1OhE%: #2n6g/ɍpNfޚLSރ f$uqJ3]c61_jpV`x)$f$) 8KPg4yw KQ/yyKn3!.CEy։ƃ0THc}3Z4tP6mkZÕtoG8ʀ1|5Vp}\(+hjW0CZ nkF)H,~Y06Zn+p2Q$; PPjy4ҍ d;6]rܼ a1!=-tFffufG>:GµJ wk@p͡4S7/86Vhڴs9.PW KLTIaUk1':͐x 囶$nN D1S2Db:VQ$U$v6w]j>SVe&V]C,oG-N)&hmGi$ZA΄1uLrZ'3aKN px4"1jm䊝z}m77c (9#5}V?".[g$  (v&[󉄣7EP >G+vM0Ri,31/{ӳo`:^2z#n$H[.';NB2|'_>3diX;/߇HW`Kmԛ?'&PZE4ƫ1nXL։y,$푾"-3wc:? JarF36dwwJLdlpU'hYI]^[?Spi.{ۙTbh0%Ğ0jG^_^[t7[+lbIR@ 9ĘV 7FVq0+âxJMT@6dOJЖيu,GQ$@(BA7;rȰNsW_"95EEڽ MLoxs (śtMնL?k E`䢮6h5tT ndOgT$zh<Ė'"k @ŋkq(~Nm"H>w^W\yn7"R,LU=߲g+>hcϕ-NkPnv?c3,2pt>.tp 76 ,+ KV!*!g/>]Cϡ7G!G}Xc5Իߕ~> !KЛk 8(_&ii\u1O)XQ1+dt2dp`iA U϶"@Pu9U x+vYeu.)iho] Tg& g ~I`A3 t遐̍5.IG2.in/}7C*m H]8,^e.m]j !>pS!"z޾*(&:x.~d|Y*;l7(I.V5S{9s^ rHJ`eTfO&SZq~1tP1!XX_@!1*@JiZ+N04T5gBp\MFoLsk}Q | NR֑tаg0Њ =IbTu)s`w48>Ju?BφEm0na԰n?:W,?HYt$`Y1G٭U CLÔWB'hxb= w 3Rk\׍UtИ+;65^Us Gk,Ssð_gDQ ȮrF3M3LgȨ'+6.)w~ hxn(MG @d6}AcC}ű ' 2W!~W;\D]Dl2hqd%MQ,7:Aۓ++^M¥9A)= ,,<% VQplT]lg{[&LLCL0@vdP-Ɔ ^XlHQxc3r Tt֌D>[)Oˆ(EkIsxlHS&Ɏ֥EϤu(*[v0HnO"z$2e@\蟭=*%n+) < X`3?Ca5E;}K (TT}*vJVпڹ1քf -$+tٿI)3M۟X3:bm@NJ^ ZXTl`|U= eލw=XIT)^$5wGк;͢Kv''` dSDa:rRr .R !ZCȞh~:UMIìߠV99FMf{*+fլ|k[:6* B7 ~i-4ۤXW|gf˹09P*ii AִqX4PD2cR<,Bک8瀇[T /TQ/}(;2+ 4FFnbvfZU)$X `B(!Ƿ/1~ƀA[*G,[+6ҕM7 ۽͔&͓'6HF秄66މ#D} Ż['(7[t*zė͛\m+<+*g{^*_tEօha!,dWTB1j^ax2-Xe^Ej(W׊$${X%Ft1W_gP -K';7^xa yՂfYz@hTGt3xwdU9;iZf:Kfn`$Ÿ[X YG]k&()$$%%#Z"+s#"#5463!25#'32654&##532654&##,(vwetH?KQv51154114D',49dgbT>X ZF]k'''&$%%#.E"&&546632&&#"3267s[[sIx)7.M1ZaaZ1M.7)x ZnnZ'$!ibci!$'.& .& .:& .:& '.& .& A s!2#'32654&##A}YY}cWmiimWUnmVdghcAP&''?&'A&'&'A &'s#"#5463!2#'32654&##,(uu,ɹcXmiimXD',49dgdghcAQ&'A&'' "A; s!!!!!A1IA?&0SA;&0SA;&0SA:;&0SA:;&0'SSA;&0SA&0SA ;&0'SSAV&0SAd&0SA;&0 S4;&0SA;&0SA;&0SA ;&0SA;&0SA;&0SA;&0SA;}&0SA;&0SA;&0SA:O&0AD&0SA0 s!!!!A.!E"&&546632.#"32675#5!{W_}Mw+979%hg^fI&!)9 ZlpZ$" kgfh B.&I.&I.&I.&I.&I.}&IA s3!3#!A?Bs#5353!533##!!5!ePPPPKKKK WA)&PA&PA &PAs3A?AE&Ue;A&Ud&Ud&U~$&UO&UO&UA&UA &U&U'&Ud&UU}&U/:&U&UEPW"&'532653f6& -#/f28~Tp6E&eA s3335##Ai.Ii>A&gfA(s3!A.ؙAE&iejA(&iA(&i[A(&i?A(&i82(A (&i?A.&iVBAQ(&i?(&iD1s3#3#3#3D!桧+h.?PPD 1&sA s3#3#3AeE?EAEM&ueA&uA&uA&uA&uA &uA?E'766553#3#3 6! #e+eX}@CEE\J\/A&uVAQ&uA&u.S46632#"&&732654&#".VmnWWnmWPRRRRRRPanZZnm[[mcooccnm.&.&.&.&. &'.&.&.& .&.&.&.&. &.&.&.=&.&'. =&'.&'.&'.&'.&.&.}&.&.&.:&. 'S46632#"&&732654&#"'7777.VmnWWnmWPRRRRRRPJItJ;JsJ;anZZnm[[mcooccnmoDJJDI.&.&.&.&.&. (a!!!!!"&&546632&&#"3267'>iRQj'TE1RPPR1F4: [mnZ!#mdco  A s!2##32654&##AZz||z/../wfex)&&*A s332##32654&##Axx-00-lwfex(*&&).?$E.'746632#"&&732654&#"M#E:[2fVmnWWnmWPRRRRRRP9J'A3UnZZnm[[mcooccnmAs!2#732#'&&##32654&##AMzE"&5332653z@DD@ jMOOMk>&z>&z>&z>&z>&z> &z>&z>&z>/=&C>/&'C> /=&'C>/&'C>/&'C>/&'C>&z>&z>}&z>&z>:&>&z>&z>&za3#3,7?]a3#3#3#3 .,?5]&6]&6]&6]&6c3#35#3,׶;.ؽ;SySs s3#37%ճ$%Qf*f&H&H&H&H &I&Hs3#76632&&#"7%ճ$o%eH0 -%he75ze&H}&H&H/S s5!5!5!/eu3)3/S&A/S&A/S&A/ S&AAE&U''e;1 T#W"&&546632#73#'352654&#"Bd99dB;_  _-88--87 ?xRSw?8-Z"F"V,5?FF??FF? T&= T&= T(&= T&'9= T(&= T:&= T:&= T&= T&= (&= T&'9= T(&= T,&= T:&= T&= T&= T&= T&9 T&= T&= T&= T&= :r&* T&&= T3&= T&=>GW"&&546633#"3266554&#"'6632#6632!534&#"3267#"&'3=X.4zh14*6#!*),*M,.(v=Ec'&V8j{,%,0=@'J .&h8Wuf /M+7CT *z$v(,+)z%T87@D JCt?<:A>& 7d E"&'3#3#6632'2654&#":_ ]9Be99ez,99,-88 8.[,5@xRSv?>FF@?FF?7d ,E"&'3#4632&&#"#6632'2654&#";_ vu,  %& ]:Ae99ez,99,-88 8.[ew,*f,5?wSRx??FF??FF? E"&&546632&&#"32678T~FF~T4d2=7==7>2 c @wSSv?yB@@Cy &, &, :&, :&',, &, &, L E"&&546632#3#53'2654&#"Af:9gA:^ _,99,-99 ?xRSw?5,: [.8?FF??FF? R'3E"&&546632#4&''7&&'7'77'2654&#"0QzE@rJBX"=7"F&Q1}#d3@EW/320.45 ;iDCf:5=>s,]IIm0$9H..rw8\I6,.44..4 &m (W"&&546632#5#53533##53'2654&#"Ae99dB9\ VV ]+88+,99 >zX-6;>?9:>>; L&C !-E"&&546632#546632&&#"#53'2654&#"Af99fA:] 5hN.  , ^,88,-88 ?xRSw?5,n@a6%1[.8?FF??FF? QL&C z&'   E"&546632!534&#"3267C@tNMg4+'-/B>(G .&d |MxCCuM&T97CCC>t  &"  &"  &" : &'+"  &" z(&"  &'+" %(&" 3,&"  :&"  &"  &"  &"  &+  &"  &"  &"  &"  0&"  0&" : &  &"  E"&55!#7326554&#"'6632nzU,'-.BF"C!&&f>T|C@t r2T88?7J?y@wRNwDs#5354632&&#"'3#b_2no8$%zy.Eih  - U$0E"&'7326553#"&&546632'732654&#"0Ls.@E@> ^9De99eD;Z .66./66~ ;6Y,5=rNNr=4+R"F"q>;<==<;> U&8F U&8F U&8F U&8F U&8F U&8F !3?E"&'7327#5366553#"&&54663273'3#72654&#"/Ls/ BF` ^9Ce99eC8^ EOl.66./55> F  *28jHHj82*T"F"  F]a523553347;s3#6632#4&#"7\;YX!!+313jl).(6,;s#53533##6632#4&#"7VV\;ZW!!+3(z>>z03im.'4+7);&@:7;&@;7;&@;7 ;&@:3s3537D7s377d&GD&GJ&G&GB&GB0&G7&G3 &F&G&GD&G9&G!:&G' c&GW"&'532653530'cT !+il%W"&'5326531(c !+ilJ&W7p s33735#'#7׮O=7p&Y,7p&Y)7p s33735#'#7׮=7s37 7|&]7w&] 7&]7&]87 &]7 &]V Q9&]a&]/h's4&'3#6632#6632#4&#"#4&#"7 V:8O_;WV'+'+r"F"X.5594:io)/'81)/'81/ h&f/;s4&'3#6632#4&#"7 \:YY" *4r"F"X03io'1'7-/;&h9$&hR/;&h9/;&h9/;&h9/ ;&h9/;#s4&'3#6632#"&'532654&#"7 \:YYeo/)"+4r"F"X03ioim "+,1'7-/[&hVo/Q;&h9/;&h9 IE"&&546632'2654&#"5U|DD|UT|DD|T,44,-44 @wRSv@@wRQx@?FF??FF? I&s5 I&s5 I&s5 (&s5 I&s'55 I(&s5 I,&s5 I:&s5 I&s5 I&s5 I&&s5 I&&s5 I&s5 I&s5 I&s5 ]x&sq ]&s'q$ ]x&s'q4 ]&s'q$ ]&s'q$ ]&s'q $ I&s5 I&s5 I&s5 I0&s5 I0&s5 :I&sn I:E"&&546632'2654&#"'5U|DD|UT|DD|U:88:988JNVO @wRSv@@wRQx@E@@EDA@E/H/ I&6 I&s5 I0&s5 I'&s5 I&&s5 /;E"&&546632#6632!534&#"3267#"&'3'2654&#"2S|CC|SHc!""]Ai|+%..CA&C /A>Vu##"dE-45,-45 AxRRv?1102y&T87BDL?t 7346@FE??EF@/(d#W4&'3#6632#"&'32654&#"7 `;Bd99dB:^ c.77.-88J"F"Z-8?wSRx?5,Q?FF??FF?7(d W3#6632#"&'32654&#"7 _;Be99cC:^ c.77.-88-8?wSRx?5,Q?FF??FF? (T#E3#"&&546632#732654&#" _9Bd99dB;_ -88--87.,5?xRSw?8-Z"F"Q?FF??FF?/s4&'3#>32&&#"7 ,B- )4q#F"9J$ 54&#"7Mr@F[Mp<9gE.E7(&F*"#&]Q.70(>A“.X?8b% 5Q=8T- t-* '$+EJ$E"&55#53573#3267;lm__||(+ gix*, && >:&&]& &Q&42W"&5332653#53a]!"&1R km/('7-[1542&442&442&442&442&442&44 2&442&442&44x&4&'44 x&'44&'44&'44&' 442&442&442&442'&44:J&42&&442&4421&4@s3#3ݻ$Rs3#3#3#3ӵ~|q}|ѕDNNY&&&&Vc3#735#'3#~@ҋ@,MPҳ@W'>773#39*0A* ޼!=GS $:CQ=N.@&@&@&@&@&@&W'>773#76632&&#"9*0A* ޼!U]V1  ,=GS $:C=I%=N.@&@&@&. s5!5!5!. /s/)s-.&.&.&. &A+E"&'732654&##532654&#"#46325,R+2/)/;@M=1454Ms!!AA>&!A>gs!53!A_ Q7W36655!3#5!!# I-+$ga%;6ů;C|A;0A;&0VA;&0VI%c6673'3333'#'&&####""_IHȻCDII_"]8000/9^EK 0R-0 KE)##)Z*E"&'732654&##532654&#"'66325.Z55(nAGD36538=8k(50TI?JQB )$ ()#" # (#)lU?W ZG>_5A s3#3#3AcA?AA&{A&AR, E7#5!%3#3#3"&&'73267&;PmcAZ3S>45>QnĮA?A(D*/(,*EQAs333'#'&&##A\IJ_"\9/H-0 KE)#A&h W'>55!##f\+=&$!=X@WxP?-t[rRD1sAP.As!#!A?-A. q s73#3"3c?&\.'3E5#"&&5463353'32##7'#"33'326654&##7+nU++Un+#%BW)F*%$&*E)VB&$oEciicEoPZ;K$$K;ZP/a5#"&55332673K&GI= TI 1?AQ2 E5!3!33g-A s33333A߳--?AQE5!333333]߳g--AQ E5#3!3#7-?A s332#'32654&##Avv7117oghp'('% : s#5!32#'32654&##vv7007-ohgp''(&A s332#'32654&##3Avvx7117x߷ohgp''(&? w!W'>55!32#!#%32654&##f\+=& vv!=X-7117@WxPoghp-t[rR'('&Axs3!332#!!%32654&##Avvӗ7007ohgp''(&(v. E"&&546632&&#"'!!73267v[[vI)7-[1Vg,S.hV1[-7) ZnnZ+$"YU.-_[!$+  E"&'73267!5!&&#"'6632I)6.Z2Wh.S,dR2[46.Hs[[ +$![_-.UY#$+ZnnZAUO&UEPe Ss#5!#6632#54&#"eJ%LE:, TI A*"E"&&'##33>32'2654&#"^]no^]lYYkOYYONXX HYXEZnnZpddooddps76633"&5463!##"35#"rC+,|{[6& ~|q*)vfht?VW Ac$E"&'7326554&#"##5!#6632_&D*/5WL9eI&Bt <5OTI , MSu=s#53533#32#'32654&##uu7007GGMohgp''(&I%c>33!'32#'&&####"37!5Kd>F>dL^44..44_a2F$'D'$F2&&&&&&.N:a3#>3"$7:G`A5>,M=R1?8Yq s#53!!3#t__,AA"E"&'5326554&#"#!!6632 :*.6WL;K&Ar<6NTI  LSv=Rw+E5#53%6673'3333'#'&&####"="_IHȻCDII_"]8000/9^ĮEK 0R-0 KE)##)RZ.W3'"&'732654&##532654&#"'66325XZ55(nAGD36538=8k(50TI?JQB)$ ()#" # (#)lU?W ZG>_5ARE5#53%333'#'&&##j=9\IJ_"\9/HĮ-0 KE)#A-s335333'#'&&##7#5#A1cII`"^90c1堠0 KE)& 's#53533#33'#'&&##rr{(/*Q#]90GwHHw\%@5 @E)# sS5!333'#'&&## \HI_#]:/H--0 KE)#ARBE5#5!%3!3#!t䮮Į?A s3!!##!AAR0 E5#5!%!#!u㮮Į?-.;E"&&546632&&#"326654&#"3267#".546632qXYr   Z_adN_,"#+_N$I&)#`:Nh;8gDEe9=l WmuXrlsu(TD/440DU&z3[wDEe88eEDxZ3.RE3'"&&546632&&#"3267VHs[[sIx)7.M1ZaaZ1M.7)xZnnZ'$!ibci!$' Qq E5##5!#3bee,c& JRE5#53%3#35#3[=,׶;.ؽ;ĮSySs QE5!#5!#!33*,g-g-/RE5#5!%5#"&55332673fuK&GI=Į TI 1?/a57#5&&55353'26737d6;d"> EP 1?As36632#54&#"AK%HI< TI ARE5#5!%36632#54&#"yt*K%HI<Į TI &0E"&'#"&55333>32!732667"'!4&&p">nl Z`yJ)ap)D?"<%WfUHX)-E +mc42(!,iS_p8Cfi#Ebd2FJ`0:&8AUI&AA!E"&'5326554&###333' :*.6XNmr&uAr<555!##7;Pm\+=&$!=Xě@WxP?-t[rRAEE"&'532655!#3!36% -#乹/f27~Tp6ARJE7#5!%3!3#!D W5#5!%!!tĮA&DqW'7665##53!!3#3Y ?0/w__fnwt",jhkCE'6654&''3#3#35)&y;,׶;ٮ)!)SyS6S%M_& ['e+E"&&5467&&546632&&#"33#"3267JeBQK@IA~ZU/5'k8=82563CGBn(55 5_>GZ W?9W1)#( # "#)( $) EE"&'53265#'>55!6% -%!=X8\+=&$.g18t[rR@WxP~Tp6.?]s#53533#32#'32654&##uu7337GGMohgp''(&A!s!27'##3267'7'654##A[z{EA2MD -/JB2p{zmMlG4d E0];ZEW"&'532653!3#!6& -$.g27?Tp6 R4E5#5!%'>55!##u2\+=&$!=Xě@WxP?-t[rRA&UA0HRZ%.R.:Z&<.:& )] )S'E"&554677#>32'2654&#"E./? 2Q7=a9DyW/45//55 U#( 2F+D,G):lKOs?;<;<<:<<<?!s!25#'32654&##532654&##<.hZ?3E@ic|"##"|p pG=/@ C5CMgg<s!#<<&k<js!53#<n~W36655!3#5!35#?VDx*nU64h) )& +)& +'c7>73353373'#'.###5#" m$.!))~ -%mN &' O)99)̓)E"&'732654&##532654&#"'66325 H~-+%k642 # +84V%**Mlx=5AD oujKE-A A9HS<B s3#3#3<#$HH<B&t;<B&t?<~ E7#5!%3#3#3"&&'73267-GY#$q55!##@2* °r0a/E.v;bR<s33#3#'3<P4<F s3353#5#<)Rs <Cs!##<v8(m )  s#5!#sI I& )(h%1=E3#"&&546632#3#6632#"&'32654&#"!2654&#"p K29Y22Y93L K3:Y22Y:2K "*+"#*+f#*+"#)))-/AxPRw@0+4+0@wRPxA/-NAHH@AGHAAHGA@HHA_ (%a5#"&553326753y3uu*3 qo}5/<~ E5!3333EVv<: s33333<vv<~E5!333333BUvv<~C W5#333#v</ s332#'32654&##55!32#!#%32654&##@2* nil4`Ar0aQ')((Q/E.WU6R-v;bRu"!"<s335332#!5#%32654&##$K/"n @wSSv?l3'r >;l !W"&'73267#53.#"'6632K%;*%I/%n9XGH l;> r'3l?vSSx?<F K&G V DA <Q E"&'##336632'2654&#"554&#"##53533##6632i8(*!!+2WW\:ZX'_ /&.'4+(z>>z.4in=aH s#53533#32#'32654&##y^kl]yV%''%VppIQPPRd !'c7>33'!'32#'.###5#"37!5 l2E34 !54D3lM () N׹,5335+~ ~ 00)Rhs3#7>3&ݺ$R:]I199@"+ s5#535!#3#[WW싋x[x554&#"#!##6632n9(+*-6_@[Z'^ /&*/)6,ax28jn173353373'#'.###5#" )Qm$.!))~ -%mN &' O)99)̓~-W53'"&'732654&##532654&#"'66325ՉQH~-+%k642 # +84V%**Mlx=5ADwoujKE-A A9HS<~E5#53%3373'#'.##*4~ -& nN 29)̓<s3353373'#'.##7#5#<.d ~!.%mO  d.mm9)̓yqs#53533#373'#'.##AWW7u'!mN 0(z>>z8( s#5!373'#'.##=4~ -%mN 1s9)̓<~E5#53%3353#5#e<  s335!##5#<vư<~ E5#53%!##ev)6E"&546632&&#"32654&#"3267#".54632eG~U) 8DUQ\R"L?'MCZ@sX4gSTf3[w ~Ru?vIBJO6=##*3w%BV0M\\M1VA%)~W53'"&&546632&&#"32679T~FF~T4d2=7==7>2 cw@wSSv?yB@@Cy ~ E5#53%#5!#fs(F W53#3й#T&/FW5#533#353#ćѹ#҇ѓy!T%y~E5#53%3#735#'3*P~@~ҋ@,MPҳ ~ E5!#5!#333xrVsv(~|E5#53%5#"&553326753e3uu*3 qo}5/([a57#5"&55353'26753*d0."d( ttql4+@D@ @~E5#53%3#6632#4&#"e\;YX!!+313jl).(6,$.E"&7#"&55333>32!73267"'34&ۊ XHBqKMg4:F(F!.&dX)+ |$II!!!Ho>CuM&(K@t:,!97:&.@] &r554&###3373'2j8(*62?4~Qs~'^ /&71Jvj=`H~E7#5!%'>55!##,FY2* °r0aq/E.v;bR)RE"&&546632'2654&#"'5!>U|DD|UT|DD|U9999988hD @wRSv@@wRQx@E@@EDA@EOmm)R&> &H&H&H&(%&(<~ W5#53%!#e삂<&DW'7665#5#535!#3#3P G hWW싋TeYu$qوQqT:hlCNE'6654&''3#3#735O/&`;~<~ /hy"|,MN!1+-E,_&  ")E"&5467&&54632&&#"33#"3267 {E@4=pC{++#W37-" 146l$++ SH9@ @.EKluo??E'7665#'>55!* 3!r0aL2* +eW} s;bR /E. I\/)(]  8(l/W4&'3#66327'#"&'3"367'7654&@ `;Bd8704=<!,:^ b,88,E55!##e2* °r0aq/E.v;bR@G < s!#3#<\y~)~:&s&:&1  s535! le\e]++0LGW55!!55!0RT4S%[%'$s53&&54663253!56654&#"'vg[mMc8gvE;`NWW7#5!#'.55##agV)( 4DW0MN}r<$#5U\\w?w*.>"E"&&'732654&#"#!!#6632'/^P8,`1396.":r)N/Df9D} ",((.9fDHm;$@.E"&546632&&#"#>32'26654&&#"HOf:q+9$R)KM 0I,;\7?nR(((( uX$$]]4+= ;hBHn?,++,'2s!5!6O `8?%1E"&5467&&546325'2654&#"2654&#",ZE>NvwL=EV67765885+//++// l`Lc _DZggZE`  cJ`l)'((((')+)##))##)4.W"&'7326553#"&&54663226654&&#";p,9$R)LL 1H-9^6>oGM:'''' &#]]4*> ;iAHn?tX,,,,AE"&&546632'26654&&#",R}EE}RS}EE}R++ ++ CxNOwCCwONxC ;*+: :+*; ?+ s53535733?FϸfX,&s5>54&#"'66325!Ci}8-&*_)00Fp}It3L>}#UOUy-A1,E"&&'732654&##532654&#"'663251`S6.f/4786wi253.*]'0/FKp=F;EQD{"~"!)&'(*%#&}#,U<;V \E>[1LB E5!533#535DIVVo7.A7"E"&&'732654&#"#!!#6632'/^Q5-c*395-9n#N*>d:Cz"~"!1,./2bIGh9!A.E"&546632&&#"#>32'26654&&#"CNf;r-8%U(NO 2I+>_6>qP**)) uX$$ca0&8:c@Gn?.--.+L-W!5!6RʴP*B%1E"&5467&&546325'2654&#"2654&#",YE>MxxK=EV8<<88<<8.22.-33 l`Kb _C[fgZC`  bJ`l*)*))*)*,,$%**%$,A7.W"&'7326553#"&&54663226654&&#":r-8%V'NO 2I+>_6>qKN=))**%#`U.&89e?Go>mVx.--. p$i!e k w n p h r o p W"&54632'2654&#"S__ST^^Tolllllloe7??55??7$i s53535733$e7dTqF@q!es576654#"'663253's.5L/KV!&Ken $ iD:!>"D qk)W"&'732654&##532654&#"'663253S B%[M>R2LW9+4;ae b e=5(9719C w s5#533#'535Ļt55y j?\ d?n W"&'732654&#"#!##66324IB# ' >-(&>&cg  eH ;+GM p&W"&54632&&#"#6632'2654&#"[azc";8,3 ;";J[Nl`mxb -2E8CQZhs#5! UY#qi r%1W"&5467&&546325'2654&#"72654&#"Qb5-&1]KM[0%,6bS""""D:'8 5%5??5%5 8':D[ o'W"&'7326553#"&54632'2654&#"(>8+3 ;";J[L[a6`$b -2E8CPmfEc6 p$i!e k  w n  p h r o p$i!e k  w n  p h r oLG#3  $''% `$''% ,' '% ,+s53++e W'665#53C'!&-5&D'+s?g+S5353+F+e W'665#5353C'!(-5&D'+s?g+')') )w353R78-LW3537k8ʹ><!w54676654&#"5663253&$#'P#%e.?d:+1#6*E%'!J=">4#3 <!W"&&54667667733267#5?d:*$1!i&%"'P$$fD%M; 73$2)*E%',pw53,RYe"&&546632 1T2/S51R31SY/R2.R3/P41R0KS'7'7'37'_V&} x }%WaHKGg!r32riGr.*s7#537#53733733#3##7#37#D5I&Xms^r4J%Yn s ]3]$\jjjj {W#3r ?4{W3 ?4;S53;bMW.5466736@@65115HQRHwllwL/W#6654&'352256@@wllwHRQ#L'E"&554&''5766554633#"#5233 EJ"33"JE9//9MD'"!(EL :#"8!L'W5326554663"&&554&##532#:00:EJ!33!JE!9#"9!LE'""(DMaL{W!#3akkuL.W53#5!kko=Yw5!=Gϊ=Y?Gu5!eeGu5!ee=Gw5!=eeGu5!ee=Y?W5!eee,e W'665#53B%#'.5%D(+s?h,e&GG+y&KK,p&LL+y S5467'3+.7D'"'yr?h85'C(,,p S'665#53B&"'-p5&D'+s?gT&OOT&PPT+w'73TT.w#7'3T &RR S3K+*3a3DwwGuua`s3vvGwwa`$<4'E5.5466753'&&#"32677"TzBBzT"#G<:!E%JJJJ%E!:fE '"yA13Dx$#$<46W&&5466773'673'&&#"3267#"'7#7&&'7(@ %(6eE&n!9"n*):"F%IIPB%F":#r=+ n% 0+s*.}LX^ f]e_ $( >#3W'7&&5467'766327'#"&'726654&&'&VZ/.Z?0OBB O#,,$#-- BvMLq@,3gRRgU2.gg:CD;;DC:H5E"&&'#53&47#53>32&&#"'3#7'3#73267JyQf`an QyJ8i 6 > )??) > 6 i 54&#"'6632'3#7'3!732671iw W/OA0 "#L$13Bad P!O 0**)S93~ RG2b Ob  |!$HE5bR b"~'"]s#5333353#5##N88-g-$g &'K,s56655#535#53546632&&#"'3#3#5!'!"CCCX9uZ@p):)C#3-Lx  b8f..Fj;#-+!a=b$6Fs5575575377326553#v@@@@5kn#k$?$l$TkU?TkT";Gea@!s54>753'#54&&'7#6X@@W6# j "HjD  DjHLf: ) :fLCs5#535#5353#33#3##3aKKKKLLLLb>bDb>bDB s#53532'3#7##326654&&##aKKAd; ]];c@  g9fE"g#Ch9M6338C*s#535#53532'3#7'3#7##326654&&##aKKKKFm$xM  Nw!kG  Kc=btE?b )c>FM6338P!s5#535#5332##3#32654&##aKKKKPm88lOD.0550.b>b47^b)0/)W+a'.##53267!5!&&##5!#7'3#7#532y47I 670 libb>bus5#535#533#7353#3#Бtė%uc=b<b=chw53и0* W#35353əa -YW#3 -7(! w5#53533#|(vv7!Zw5!7vvB4 w'7'77'TTSS4TUUT7!! w5!53537}}}vv~~~~7!S5!5!7Hvvvv7!>W'7#537#5373#3#m#m#6n#x".SvRv-SvRv8!!w5%%58CW7!!e%5%5!BW7!! w5%%55!7.||U{{ww7!! e%5%55!!/ꈊ{{U|ww7! w5#53533#5!|Ꙃxxww8c!/A"&'&&#"'6632327"&'&&#"'66323272%!),VM05#!( -XO02%!),VM05#!( -XO+::2?9;1> ::2?9;1>7!xe"&'&&#"'66323272%!),WM05#!( -XO ::2?9;1>7!e5!5!w*.tw3#3*VDT&1W'7&&54>327#"&''&&#"26654&'P8P-7-Pl@)M"Q7Q(0.Qk=%G!3:\7!7]8,%f&m@8fP.g*g&g=:fN,j9 4X8*IQ2Y9&C d?#/w"&546326632#"&''267&&#"32654&#"GUSI@@ISUG@@( (( (d`XVb,,bVX`,,e)++'0##00##0'++)iAW"&'532654632&&#"2 (dg1 *c 'at'atD%s53&&54663253#56654&&#"TK?yWXx?JU%++%#+b^ON_b+#*GDR$%QDG*H s535!؉tMt|++7L!W!##7꣣u0LGLU W#53#3΁U_ٴ>V.E$W332653#5##"&'1. %/6" $$4+Z149*E"&&546632#.##56632'2654&&#"Ls@:fB;K9lM + S]1D~P'0'&00 =lGDj<,0Hj9?r[hP?5 .:13='3a#3"&54632'2654&#""&54632'2654&#"_ZdeYYddY*YdeXZccZ\wbcsv`bwl1<<.,>>/lwbcsv`bwl1<<.-=>/F '3?KE"&54632'2654&#"3"&54632'2654&#""&54632'2654&#"ZcdYYddYZdZdeYYddY*YdeXZccZ wbcsv`bwl1<<.-=>/a?wbcsv`bwl1<<.,>>/lwbcsv`bwl1<<.-=>/+8. W3'꿿B!!GGS w7'373''3537'35#3'#GJMGA"#-.?W@@WVV.YCQE".54>32#"&'7#"&546632#73326654&&#"326726654&#"bw@B{j{d2Z<>K -\;T[6`>5B}'(F`kUQdEs//.o/ # /%>r_hx@\tU~EA=NMiYIqA35] -S5[{?VmeO""X&+K%F/&)$@+--,:HE&&'#"&&54677&&5466327#6673'%267'"6654&.[)$1yCSzBPA$')8dDYkB1$2,B&[&=J#9@" '51! 1!)03[=D_#""R,6R.[M(F: )b5Q:%! & !'&," ."L^E"&&54663!##Eh:;iF[{i9gEFf8AG:OE"&'732654&''.5467&&546632&&#"7654&''&&'7I|).AI *. /=67 >sOFq$,%a*). /=58>s#& &$& % t@4?%6T.9$&6T.<";V.*9 *9,-AE".54>32'"&54632&&#"32672>54.#"Nc77cNMb77b6h{{h(R(0+33+0(R?@lP++Pl@AlP++Pl 7cMMb77bMMc7tddsf7016gT-Rm@@mQ--Qm@@mR-,'=FE".54>32'2>54.#"'32#72#'&&##7'32654&##Nc77cNMb77bM@lP++Pl@AlP++PlgIPMD"#* *00 7cMMb77bMMc7@-Rm@@mQ--Qm@@mR-YJ6:> #5dw S#5!#33#73#53#'3}lxm|{]@\%[喖iS"&&546632'2654&#"0K,,L/0L++L0&&&&+J./H+*I//J*[**** S3K+*3 &RR?KW3?w?KS33?sOO` w#53533#ycceeDpppp8*E"&55'754663232676676654#"TR`K5j0T6FI=K!"-Z:! ]Q8=:[8U0GF=rLc")f" E$.bw5#535#53533#3#yggggffffpoiqmmqiop2L 2E".54>32!"32673!2554'.#"_f56g]s['}(|NU{3G'Yu "XX#:5 8b~FFg=BoD01:1/>o ))*5 Ad +s3#3#3%5!'"&&546632'2654&#"Ae081M--M11M,,M2E?Eii'F/0E%%E0/F'T$$$$#%$$j1 S'665#53<$v1)&L-I0N S5467'3%<$v0L.H)( &RRR]S5!RQ]aa'-3S'3e- % S"&5463"30@@0%@/.AC%k S5265440AA%BCA./@-S73e-/S53jQ/S53jQ S"&5463"30@@0@//?Ak S5265440AABA?//@NFS53!53FN-0 C735335349r:yyiiiiN3& C5!53353R:aaiiiiGPC53PGW3&C5!53Raaii--9C'39e--C739e-k-SC73'539nΕ-ͽiiy-S73!73',^,^-jQ53jG-C73#'ookNN-qqG-C'373JokNNko-qqG-S C'373'53JokNNko-EEiiL)Q"&&'732675Q-_,%&+_.Q)1Y; 3663 ;Y1y!&Q"&&546632'2654&#"&=$$=&'<$$<' !!!"<$%;##;%%;"I   3Q"&&54663273'2654&#"#:"":#:} "9$ !! 7##7 5n#7 @!!-AC'6632327#"&'&&#"RK8(1 RL7(APU ;OV C)'!C'66323267#"&'&&#"'53353sJC2% JC2) D:)9: :: iiiiC)0C'66323267#"&'&&#"773sJC2% JC2) :9r)9: :: }yyC)&C5!'66323267#"&'&&#"RJC2% JC2) aa9: :: W]C5!R]aaN3& C5!%53353R:3aaiiiiW10C5!''3Rr91aayyW10C5!'73R9r1aayy-~C54>54&#"'66323@&8>- D '$ -S'3!'3,^,^,-L)C'>32&&#"U_-Q55Q._+&%,)553kk%!9A *)0(C, PG53PN3W53!53͕T S'665#53=$v('}K.J:}G"&'732654#"'73'6632!>'$  U )  /4G F VM($*1b:H0G"&54673267?F=10 ,<3.H0 P L) U"&'73267Pc_,%&+_cVG $$ GVWQG5!Raa"C5!yy/g'%B`Buvz2G'8NVOE/H/HFGJ'-3-s-A-A-F)s!&'AQ]:w\:B0C'66323267#"&'&&#"QL9(QL9) OV PU p=S'3266553#% %%@(pU*)0(H-NS53!53N C735335349r:yyjjjjN C5!53353R:aaiiii PC53P WC5!53Raaii=C'3=vC73=vkC5373=viiyC73373UHeQ539C73#'~~wPPVV9C'373I~wPPw~VVG$ C'373'53JokNNkoFFii9 Q"&'73267Vl_5--8_k]O '..' O]yQ"&&546632'2654&#"&=$$=&'<$$<' !!"<%%;"";&$<"I! ! Q"&&54663273'2654&#"#:"":#:} "9$ !! 8"#7 5o"8 A!  C'66323267#"&'&&#"QS?1 $  QT?1"!OV PU C!S"&'&&#"'66323267%53353D( JC2$ JCؕ: 9: 9:iiiiCC73"&'&&#"'6632326749r( JC2$ JCyy 9: 9:CC5!"&'&&#"'66323267Re( JC2$ JCaa 9: 9:H}C5!paaN C5!%53353R:aaiiiiWC'35!4r9RyyaaWC5!'73R9raayy~C54>54&#"'63232O6=  C# S'3!'3$Ue9 C'6632&&#"h_lVWk_8--5 O]]O (--T C5467'3U$=$vK.J((~p= S'5266553kk%!9pB*)0(C,#C5!#:g'ABvv g'7777bJsJ;JsJ;4DJJDIvC5!bbA^C53^A/AC'6632327#"&'&&#"QC2! - QD2! ,APU  ;OV jQ53jR2g5![ff;'S"&&'7326745>Qn(D*/(,*EQD)0 Q"&'73267'73PeO 3//3 Of9r)UH #''# HUyyD)0 Q"&'73267''3PeO 3//3 Of~r9)UH #''# HUyyD)B %Q"&'73267'4>54&#"'6632PeO 3//3 Of}   3'/3)UH #''# HU : C)B 'Q"&'73267''66323267#"&'&&#"HfO 4--4 OeJC2% JD2)  )?66?:: 9: G-X0 C73#'773ookNNR|-MMmG-0 C73#'7'3ookNN|Q-MMmG-4C73#'74>54&#"'6632ookNN    3'/4-MMm: C-B C73#'''66323267#"&'&&#"oohQQ"JC2% JD2)  -88:: 9: D Q"&'73267'73PeO 3//3 Of9rVH#''#HVzzD Q"&'73267''3PeO 3//3 Of~r9VH#''#HVzzD %Q"&'73267'4>54&#"'6632PeO 3//3 Of}   3'/3VH#''#HV ; C 'Q"&'73267''66323267#"&'&&#"HfO 4--4 OeJC2% JD2)  @66@9; 9: GX C73#'773ookNNR|NNnG C73#'7'3ookNN|QNNnGC73#'74>54&#"'6632ookNN    3'/4NNn; C C73#'''66323267#"&'&&#"oohQQ"JC2% JD2)  999; 9: "RN".:FVbnz&2>JVb<HT`p|.DP\ht $0<HT`t+7CO[gs,8Uap|)5AMYe )5AMYeq}  ! - 9 y  3 n 2 > J V b n z ! 2 > J V b n z   $ 4 D T ` l x  :T`lx %1Ez*6BNZfr~'YD%1Ar~ ".:FR^jv".:FR^j'3?Q]iu +GSlx BNs>JVbn~"2BR^jv ]!-9EQ]iu 0t %1=IUamy)5Hgs    R ^ j v !!@!L!X!d!!!!!"""$"I"Q"]"i"""###N#s##########$$K$S$s$$$$$%%=%o%%%& &&&'&K&&&' 'G'O'o''((F(t((())4)P))))**+*G*p***+-+9+A+M++++,,C,O,[,c,o,w,,,,,,,--*-6-B-N-Z-f-----.-.\.d.l...//#/+/3/;/G/S/[/////00 0,080s000011:1F1c1~11111111292A2`2w222233+3]333344 444M4{4455565L5y556+6X666667E7v777788.8Z8b8888899C9e9999999::::):W:c:o:{:::::::; ;;=;m;y;;;;;#>@>u>>??X???@@#@X@@@ADTDfDDDDDE"E.EJEhEEEEEEF.FeFvFFFFFFFFFFGG GG0GGGSG_GoG~GGGGGGGGGGGGGH0HHI!I`IIIJ;JJJKKJKpKKL LJL{LLLM MM1M>MRM^MwMMMMMNNN7NNNNOO`OOOOOP P0PnPQ)QCQmQRLRiRS:SSSSTTT)T>TTTU(U?UVUbUoU|UUUUUUUV VV3VKVWViVvVVVVVVVW W7WhWWWX(X5XMX`XsXXXXXYYY/Y\YYYYYYYYYYYZZ ZZZ(Z1Z:ZCZnZZZZZZZ[[[*[6[G[X[o[[[\\G\y\\\\\]]/]J]a]y]]]]]]]^^$^A^b^^^__,_\___` `L`d`|```^ E_<H\I{ Aw....... AlA  A  A A#A[A[A[A[A[A[A[A[A[A[A[A[A[4[A[A[A[A[A[A[A[A[A[A[AGA.......AWAAA;AA;A;;;~;;;A;A;;';;;/;AABAABABABABABAbABABtDtDAAAAAAAAAAA$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$.$..AA$.AAAAAAAA(((((((((((A.~ ~ ~ ~ ~ ~ ~ >>>>>>>>>>>>>>>>>>>>>>>kkkkko/o/o/o/o/A                           ]]77        r       ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (        o7oo7o7o7o7 3 7 7      7 3     !    T7T7T7T7 7 7 7 7 7 7?7  //o/o/$o/o/o/o/o//o/o/i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i  /7 ////"//7j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4j4/6.......c........A@7A@3fvAAPAPAPAM [A[A[ADxAAA"AAA tDA$. AA.~ ./IA\AA AAU A A(. ;A; XA E$.7A_x A)A)o EAABA..~  //AA;ADA5 A5A/D[A..DxxAA$.$.$. /PAAx $.kAF ;AGAx.x.)|)\<<<<:):):),~<~<~<<a<a<{<<{)<8) @@)Gb(<v<<<G< K<< !4)12<22z<S~ {)h h<,<<d <<< )) == b((@@2@h<<<(<))n%:):(:(,)~<~<{){){)1<<<b(<K< GG,{) 8|2@<,),& q0@'j4XX[X"XXX.X$X'XXXX?X,XXX.X!X+XX| |$|!|| || || | | |$|!|| || || | | |$|!|| || || | | |$|!|| || || | L$$++++0+<,RX.``/;b#a==X==,,+,+,11CC  XXXe!!!X$XGX$XXX XXX XX&XX'X6XXXXXXX&XXXXXX0XYX7X7XBX7X7X7X8X7X7X7X7X8X7X7X*XXXiXXX7q0XQ.XbX+.[/,/,  0?0?u^8u~2A~j R' NNNW-kyGGGLy-CCCWNWW LNbLW"/zH'sAAFs'Q\NNNWky99G9yCCCHNWW9/R;-DDDCGGGCDDDCGGGC,EXKX^,,P KNONE))    /9~2~(-37SWY $(.158#:C_cku)/ !%+/7;IS[io{     " & 0 3 : D R p y !!!"!&!.""""""""+"H"`"e%' 0:4&*07SWY#&.157$;Dbjr$.  $*.6:BLZ^lx      & 0 2 9 D R p t !!!"!&!.""""""""+"H"`"d%'!O+$ PB=+(?5cl%}zew~ck_<k PRTVhlp*`bdjNTZdfhntvxz|~~~X.Q5aR9:4y*?)6+,}0 '0HIPUegisu=7>F78@FVY]fhs;<Y/^q`uM@2N'&(1 #@16=_WY[){   . $+PHJLrtv}|!%&"*+C12!>,F43"L;J9N=M<SDQAdUbSXIcT]GVfXh[\k^m`l_narewiylxkj|ou(/jpcv}p ?K:Z  <*B0ZKaR|4~     hijknorstuxpqlyv !w^_m"#$%&'()*+-./012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\],7`a$,.E3D25#O>TERB\Mobqdtgzm{n~q  ?-A/G57%9':(;)8&`Q^Owyz{xUWZV[CABDKLGIJH3eibchsnfg]rpjkozv    .    ( ( 2@ 2@  r 4              Copyright 2016 The Mulish Project Authors (https://github.com/googlefonts/mulish)Mulish BlackRegular3.603;NONE;Mulish-BlackVersion 3.603Mulish-BlackVernon Adamshttp://www.sansoxygen.comThis Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFLhttp://scripts.sil.org/OFLMulishBlackMulishRomanWeightItalicRoman,"$     bc%&d' !(e"#$%&'()*+,-./01234)*56789+:;<=,>?@ABCDEFG-H.I/JKLMNOPQ0R1STUVWXYZ[f2\]^_`abgcdefghijklmnopqrstuv345wxyz{|}6~78h9:;<=DikljnmEFoGHprsqIJKLtvwuMNOPQ   xRy { |z !"#}$%&STU'()*+,-V./012345W6789:;<X~=>?@ABCDEFGHIJKLMNOYZPQRS[\TUVWXYZ[]\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" ? ^`>@B  !aA# _C      !"#$%&'()*+Abreveuni1EAEuni1EB6uni1EB0uni1EB2uni1EB4uni01CDuni1EA4uni1EACuni1EA6uni1EA8uni1EAAuni0200uni0226uni1EA0uni1EA2uni0202AmacronAogonek AringacuteAEacuteuni0181uni1E08 Ccircumflex Cdotaccentuni01C4DcaronDcroatuni1E0Cuni018Auni1E0Euni01C5EbreveEcaronuni0228uni1E1Cuni1EBEuni1EC6uni1EC0uni1EC2uni1EC4uni0204 Edotaccentuni1EB8uni1EBAuni0206Emacronuni1E16uni1E14Eogonekuni1EBCGcaron Gcircumflexuni0122 Gdotaccentuni1E20Hbaruni1E2A Hcircumflexuni1E24IJIbreveuni0208uni1E2Euni1ECAuni1EC8uni020AImacronIogonekItilde Jcircumflexuni0136uni01C7LacuteLcaronuni013BLdotuni1E36uni01C8uni1E3Auni1E42uni01CANacuteNcaronuni0145uni1E44uni1E46Enguni01CBuni1E48Obreveuni1ED0uni1ED8uni1ED2uni1ED4uni1ED6uni020Cuni022Auni0230uni1ECCuni1ECEOhornuni1EDAuni1EE2uni1EDCuni1EDEuni1EE0 Ohungarumlautuni020EOmacronuni1E52uni1E50uni01EA Oslashacuteuni1E4Cuni1E4Euni022CRacuteRcaronuni0156uni0210uni1E5Auni0212uni1E5ESacuteuni1E64uni1E66 Scircumflexuni0218uni1E60uni1E62uni1E68uni1E9Euni018FTbarTcaronuni0162uni021Auni1E6Cuni1E6EUbreveuni0214uni1EE4uni1EE6Uhornuni1EE8uni1EF0uni1EEAuni1EECuni1EEE Uhungarumlautuni0216Umacronuni1E7AUogonekUringUtildeuni1E78Wacute Wcircumflex WdieresisWgrave Ycircumflexuni1E8Euni1EF4Ygraveuni01B3uni1EF6uni0232uni1EF8Zacute Zdotaccentuni1E92Iacute_J.loclNLDabreveuni1EAFuni1EB7uni1EB1uni1EB3uni1EB5uni01CEuni1EA5uni1EADuni1EA7uni1EA9uni1EABuni0201uni0227uni1EA1uni1EA3uni0203amacronaogonek aringacuteaeacuteuni0253uni1E09 ccircumflex cdotaccentdcaronuni1E0Duni0257uni1E0Funi01C6ebreveecaronuni1E1Duni1EBFuni1EC7uni1EC1uni1EC3uni1EC5uni0205 edotaccentuni1EB9uni1EBBuni0207emacronuni1E17uni1E15eogonekuni1EBDuni0259gcaron gcircumflexuni0123 gdotaccentuni1E21uni01E5hbaruni1E2Buni021F hcircumflexuni1E25ibreveuni0209uni1E2F i.loclTRKuni1ECBuni1EC9uni020Bimacroniogonekitildeuni0237 jcircumflexuni01E9uni0137 kgreenlandiclacutelcaronuni013Cldotuni1E37uni01C9uni1E3Buni1E43nacute napostrophencaronuni0146uni1E45uni1E47enguni01CCuni1E49obreveuni1ED1uni1ED9uni1ED3uni1ED5uni1ED7uni020Duni022Buni0231uni1ECDuni1ECFohornuni1EDBuni1EE3uni1EDDuni1EDFuni1EE1 ohungarumlautuni020Fomacronuni1E53uni1E51uni01EB oslashacuteuni1E4Duni1E4Funi022Dracutercaronuni0157uni0211uni1E5Buni0213uni1E5Fsacuteuni1E65uni1E67 scircumflexuni0219uni1E61uni1E63uni1E69tbartcaronuni0163uni021Buni1E97uni1E6Duni1E6Fubreveuni01D4uni0215uni1EE5uni1EE7uhornuni1EE9uni1EF1uni1EEBuni1EEDuni1EEF uhungarumlautuni0217umacronuni1E7Buogonekuringutildeuni1E79wacute wcircumflex wdieresiswgrave ycircumflexuni1E8Funi1EF5ygraveuni01B4uni1EF7uni0233uni1EF9zacute zdotaccentuni1E93germandbls.caltiacute_j.loclNLD I_J.loclNLD i_j.loclNLDuni0410uni0411uni0412uni0413uni0403uni0490uni0414uni0415uni0400uni0401uni0416uni0417uni0418uni0419uni040Duni048Auni041Auni040Cuni041Buni041Cuni041Duni041Euni041Funi0420uni0421uni0422uni0423uni040Euni0424uni0425uni0427uni0426uni0428uni0429uni040Funi042Cuni042Auni042Buni0409uni040Auni0405uni0404uni042Duni0406uni0407uni0408uni040Buni042Euni042Funi0402uni0462uni046Auni0472uni0474uni0492uni0494uni0496uni0498uni049Auni049Cuni049Euni04A0uni04A2uni04A4uni0524uni04A8uni04AAuni04ACuni04AEuni04B0uni04B2uni04B4uni04B6uni04B8uni04BAuni0526uni04BCuni04BEuni04C0uni04C1uni04C3uni04C5uni04C7uni04C9uni04CBuni04CDuni04D0uni04D2uni04D4uni04D6uni04D8uni04DAuni04DCuni04DEuni04E0uni04E2uni04E4uni04E6uni04E8uni04EAuni04ECuni04EEuni04F0uni04F2uni04F4uni04F6uni04F8uni04FAuni04FCuni04FEuni0510uni0512uni051Auni051Cuni048Cuni048Euni0528uni052Euni0406.loclBSHuni0492.loclBSHuni0498.loclBSHuni04AA.loclBSHuni0498.loclCHUuni04AA.loclCHUuni0430uni0431uni0432uni0433uni0453uni0491uni0434uni0435uni0450uni0451uni0436uni0437uni0438uni0439uni045Duni048Buni043Auni045Cuni043Buni043Cuni043Duni043Euni043Funi0440uni0441uni0442uni0443uni045Euni0444uni0445uni0447uni0446uni0448uni0449uni045Funi044Cuni044Auni044Buni0459uni045Auni0455uni0454uni044Duni0456uni0457uni0458uni045Buni044Euni044Funi0452uni0463uni046Buni0473uni0475uni0493uni0495uni0497uni0499uni049Buni049Duni049Funi04A1uni04A3uni04A5uni0525uni04A9uni04ABuni04ADuni04AFuni04B1uni04B3uni04B5uni04B7uni04B9uni04BBuni0527uni04BDuni04BFuni04CFuni04C2uni04C4uni04C6uni04C8uni04CAuni04CCuni04CEuni04D1uni04D3uni04D5uni04D7uni04D9uni04DBuni04DDuni04DFuni04E1uni04E3uni04E5uni04E7uni04E9uni04EBuni04EDuni04EFuni04F1uni04F3uni04F5uni04F7uni04F9uni04FBuni04FDuni04FFuni0511uni0513uni051Buni051Duni048Duni048Funi0529uni052Funi0456.loclBSHuni0493.loclBSHuni0499.loclBSHuni04AB.loclBSHuni0499.loclCHUuni04AB.loclCHUuni0394Sigmauni03A9uni03BC zero.tosfone.tosftwo.tosf three.tosf four.tosf five.tosfsix.tosf seven.tosf eight.tosf nine.tosfuni2080uni2081uni2082uni2083uni2084uni2085uni2086uni2087uni2088uni2089 zero.dnomone.dnomtwo.dnom three.dnom four.dnom five.dnomsix.dnom seven.dnom eight.dnom nine.dnom zero.numrone.numrtwo.numr three.numr four.numr five.numrsix.numr seven.numr eight.numr nine.numruni2070uni00B9uni00B2uni00B3uni2074uni2075uni2076uni2077uni2078uni2079periodcentered.loclCATuni00AD figuredashuni2015uni2010uni27E8uni27E9uni2007uni200Auni2008uni00A0uni2009uni200BCRuni20B5 colonmonetarydongEurouni20B2uni20B4uni20ADlirauni20BAuni20BCuni20A6pesetauni20B1uni20BDuni20B9uni20B8uni20AEuni20A9uni2219uni2052uni2215emptysetuni2126uni2206uni00B5uniF8FFminuteseconduni2113 estimateduni2116uni02BCuni02BBuni02BAuni02C9uni02CBuni02B9uni02BFuni02BEuni02CAuni02CCuni02C8 uni02BF.case uni02BE.caseuni0308 uni03080301 uni03080304uni0307 uni03070304 gravecomb acutecomb uni03010307uni030B uni030C.altuni0302uni030C uni030C0307uni0306uni030A uni030A0301 tildecomb uni03030308tildecomb_acutecomb uni03030304uni0304 uni03040308 uni03040300 uni03040301 hookabovecombuni030Funi0311uni0312uni031B dotbelowcombuni0324uni0326uni0327uni0328uni032Euni0331uni0335uni0337uni0338tildecomb.case.Ouni031B.O.case uni0308.caseuni03080301.caseuni03080304.case uni0307.caseuni03070304.casegravecomb.caseacutecomb.caseuni03010307.case uni030B.caseuni030C.alt.case uni0302.case uni030C.caseuni030C0307.case uni0306.case uni030A.caseuni030A0301.casetildecomb.caseuni03030308.casetildecomb_acutecomb.caseuni03030304.case uni0304.caseuni03040308.caseuni03040300.caseuni03040301.casehookabovecomb.case uni030F.case uni0311.case uni0312.case uni031B.case uni0335.case uni0337.case uni0338.case uni0335.cy uni0307.i tildecomb.o uni030C.alt.t uni0335.t brevecombcybrevecombcy.case uni03060301 uni03060300 uni03060309 uni03060303 uni03020301 uni03020300 uni03020309 uni03020303uni03060301.caseuni03060300.caseuni03060309.caseuni03060303.caseuni03020301.caseuni03020300.caseuni03020309.caseuni03020303.caseuni0000D ,.PR57>@@Bnp    $&)*,,..02446;==?IKVYY\]ahklo  o  $ 6 .XDFLTcyrllatnkernmarkmkmk" S{}~ _&&&&&&&&&& 0 0 0 0,,2 0<^ B 0 L 0  0 0 0 0 0 0 0 0 0  " " " " " " " " " " " " " " " " " 0 0 : : : : : : : @ F z z z T Z d d d z z z_Ql%'7FHIJKLMNOPQRSTUVWX]^`abcdep"+UW%)*-019;=FGH(-(VWQ37777777>>>>>>0Q30'A@-+!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!0:><>>>,!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!04:4<4>40!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!042:$<$>$IJKL0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde0!4: < > IJKL0  @ A B C D E F H I J K L M N O P Q R S T U X Y Z [ ] ^ _ ` a b c d e    04+:8<8>8I0J0K0L00@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04::7<7>7I2J2K2L2'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde*@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde:<>0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04<:.<.>.I J K L 0@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04*:4<4>4I2J2K2L20@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde04<:H<H>HI2J2K2L20!!@!A!B!C!D!E!F!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!X!Y!Z![!]!^!_!`!a!b!c!d!e!!!!0:42:#<#>#IJKLNQ:<> 7,NQ44444444,,0404: < > 04:<>:<>'@ABCDEFHIJKLMNOPQRSTUXYZ[]^_`abcde7.%(...................%(NQ% VdW]TVCW)d73V!W!9;2ABaL !   )   1 &,B,2   {(k) $'  P2 z  (2   ~   (&$  $<  ( 2   & > &* .EHXf@(        &(& (1 & $(0  # !4BB&D   ,* *(    &2 ( & 2  *   $  (      826F82< (&(U<( (((  (( 22?UT?SnO[     *7A UWoSq|l~x EGG#Y\$__(fo)q3      #%%',.13469;=??AJMSUUWZ\_aacqswz ./2367?FQp$q)46799;=?R 9 &(((// 0GHHFIOPUWdef%gh:iijj%koqrsuvv%w|~GH_ & 'I(%  <V 56677P8?@EGGY\1__<foqrsRQ* `  %?6["! ." ZAB/  7    ++XY44+  !!D""!##4%%"')** ++!,, ..//B01E34 66477 89;<== ?? AA BC6DE.FGHHIJ"MPQS/UU!WW!XY7ZZ\\]]D^^+__Aaa cc]dd"eeff"gghh0ii jj#kmnnoq$ss#tvwwz|}} ~~ ,C8--\, 0 - # ,C0$0$ # 8,^- #,#,W$ )*)+,;--)..N//O00S11T2344K66U77L995;;5<<==5?EFH)IL3MM=NN>OO=PP>QR2J@M2@ 1 &',--1.HIOPUWdef+gqs  6""  "677*8?@FGGHUVW/X[\\]efikrs K !*0%E    &  C 2DF  !!4%%))-. //01522&3345==@@BD%FG IJMO PP2QSTTXY&[[\\ ]]4aaddee ffgg hh'iiGjmnnHoq sstyzz{|}} ~ ( J 3I  (  '  3 (   B%%=)*+,,--..;//<00>11?2344866@779::);;<<)>>)?EFHIL$MM-NN.OO-PP.QR#7A:# .8 & / EB ,.P+RuNw|r~x57>*@@2Bn3q`    $&)*..02448;?IKV YY\]bhkl"oy$}}/024678<=@ABCDJKS_`bcghjmU****************************(X(X(X(X(X(X(XV\b****************************hnt****************UgLfao2!!<!!<!!2!!<6!2!!2!!2!!<!!<!!2!!<6!2!!2!!2!!<!!<!!<!!26!<!!<!!<!!<!!2!!<!!2!!<!!"" B" !2!8"@H@H@"@H@H@H@ZTffZTfNTfZTfZ`fZ`ff!\""r""r""r""!\""r""r""!\""rl"!\""!\""!\""r""r""r""!\l"r""r""r""r""!\""!\"""""r""""xx~!!!!!!!&V&\"""&\""&\""&\""&\""&\"&V&\""&\"&V""&\""&\""&\""&\"&V&\""&\"!!!&V">""">&V">&V"D&V">&V"D"&V"D&V">!!P\\P\PPP\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""L""""R""""L""""R""""R""""R"""""""""""""""""""""""""""""""""""""""""""""""""""""""""!\!b"""""  & & &"!z!D!z"!z!D!z"!z"!z!D!z",!D!z",!D,2".!h>!n!h>!n8>!n!h>!n!hD!n!hD!n!hD!nntzhtzhtzhtzhtzhtzntJhtzhtzPtb\tbPtV\tb\tb\tbhtzhtzhtzntzntzhtzhtzntz"""""""!!!!!!!!!!!####"                        X"^"^  $>:@4:@4:@4:@4:@4:@$>:@4"@$>:@$>:@$>:@4:@4:@4:@$>"@4:@4:@(:@4:@$>:@$>:@.:@4:@&4&:FLLLLLL^dXpv^djpvRdXpvRdXpv^djpv&x&~!,&x x!, x!, x!, x!, x!, x!,&x x!, x!,&x|!, x!, x!, x!, x!, x!, x!,&x x x x x x  x   x     $t 0$z 6 < * 0$z 6 < * 0$z 6 < * 0$z 6 <$t 0$z 6 < * 0  6 <$t 0$z 6 <$t 0$z 6 <$t 0$z 6 < * 0$z 6 < * 0$z 6 <$t 0$z 6 <$t 0$z 6 <$t 0  6 < * 0$z 6 < * 0$z 6 < 0# 6 <  0# 6 < 0 6 <  0# 6 <  0# 6 <  0# 6 < * 0$z 6 <  0$z 6 < * 0$z 6 <$t 0$z 6 <$t 0$z 6 < 0$z 6 <  < $ < * 0$z 6 <$t 0$z 6 <$t 0$z 6 <$t 0$z 6 < B H N T Z# ` f ~ x l x l x ~ l x ~ r x ~ #$ #$ #$ #$ #$ # # # # # # # # # # # # # # # # # # # # # # $ $ !!!!!!!!! !!!!!!!!!! !!!!!!!! !&!,!!!!2!8"p"v!>"v"""!D""!D""!""!J!J"@!J!!!P!!!!!V""""!\!b""!h!n!!""!"j!t"!z!!!"^&V&\""&\"!!"L""""!""!!!!!!""!!!!!!""!"j!!&V&\"!!!!"j!!!!!!!"" """"""."("."4":""@"@"F"""""L"""""R"""""X"^"d"d"d"d"j"p"v"|""""""""""&\"""""""""""$J###$,$2"$2###"##"###$$""#"#H#N"#N####$##$t$z# ## #$>$D#$&###$#*$b#0$n#6$h$n#<#B#$#$$#H#N$t$z#T$>$D#$&#Z#`#f#l#Z#`#f#l#r#r#x#~$h###$&$J################$##$###$#$$$$$$$$$$$ $&$,$2$8$>$D$J$P$V$\$b$h$n$$$t$z$$$$$$$$$$$$Va aaaVfSVSaVaaVVafffVVVVVann^_lamlmVPV?a??VzVVazazCz||6a[IVHaAaAAV===*5K,,,CCVml;+V"*"+FF;{:;:VY:V,{,)V)){ wV99V995V$$5665qn588B<DVV&>V4V444VVee!aVahaST??fPBhva aHIJ,":aa  VSa"a4aaaaBaCaa;'!fa[[ka66a<74<+?LAA L)C YC.w(EB3>+4?z>w>>>((""EM5522a :Dv !* <L*L $$ 11   *J V  .n $ 6F                          ,,,,,,,,,,,,,,,,,,,,,,,,,,,&&&&&&&&,,,,,,,,>>>>>>>>>>>>>>>DDDDDDDDDDDDDDDa xDFLTcyrllatnlBSH CHU 2 : AZE CAT ZCRT KAZ MOL |NLD ROM TAT TRK      aaltzcaltcaseccmpccmpdnomfracligaloclloclloclloclloclloclnumronumordnsinfsubssups"   !    %LhB**&P, ,:xx* < <CNbc     8%  FFss  ""   2266%8;"(.4:FR^jvdfeg      !"#$%. n&>,FV gj\+GW  FFVV  #22N  "4>HR\v  0Rt     F6",eeVVUWFH<]]ii2bcde"%.fg%.*26( "B%* $lsss)u X)   ! F]7n: g#$8$wghtitalhugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/000077500000000000000000000000001465312036400265325ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/000077500000000000000000000000001465312036400273225ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/css/app.css000066400000000000000000005053441465312036400306270ustar00rootroot00000000000000/* muli-200normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 200; src: local('Muli Extra Light '), local('Muli-Extra Light'), url(/fonts/muli-latin-200.woff2) format('woff2'), url(/fonts/muli-latin-200.woff) format('woff'); /* Modern Browsers */ } /* muli-200italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 200; src: local('Muli Extra Light italic'), local('Muli-Extra Lightitalic'), url(/fonts/muli-latin-200italic.woff2) format('woff2'), url(/fonts/muli-latin-200italic.woff) format('woff'); /* Modern Browsers */ } /* muli-300normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 300; src: local('Muli Light '), local('Muli-Light'), url(/fonts/muli-latin-300.woff2) format('woff2'), url(/fonts/muli-latin-300.woff) format('woff'); /* Modern Browsers */ } /* muli-300italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 300; src: local('Muli Light italic'), local('Muli-Lightitalic'), url(/fonts/muli-latin-300italic.woff2) format('woff2'), url(/fonts/muli-latin-300italic.woff) format('woff'); /* Modern Browsers */ } /* muli-400normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 400; src: local('Muli Regular '), local('Muli-Regular'), url(/fonts/muli-latin-400.woff2) format('woff2'), url(/fonts/muli-latin-400.woff) format('woff'); /* Modern Browsers */ } /* muli-400italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 400; src: local('Muli Regular italic'), local('Muli-Regularitalic'), url(/fonts/muli-latin-400italic.woff2) format('woff2'), url(/fonts/muli-latin-400italic.woff) format('woff'); /* Modern Browsers */ } /* muli-600normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 600; src: local('Muli SemiBold '), local('Muli-SemiBold'), url(/fonts/muli-latin-600.woff2) format('woff2'), url(/fonts/muli-latin-600.woff) format('woff'); /* Modern Browsers */ } /* muli-600italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 600; src: local('Muli SemiBold italic'), local('Muli-SemiBolditalic'), url(/fonts/muli-latin-600italic.woff2) format('woff2'), url(/fonts/muli-latin-600italic.woff) format('woff'); /* Modern Browsers */ } /* muli-700normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 700; src: local('Muli Bold '), local('Muli-Bold'), url(/fonts/muli-latin-700.woff2) format('woff2'), url(/fonts/muli-latin-700.woff) format('woff'); /* Modern Browsers */ } /* muli-700italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 700; src: local('Muli Bold italic'), local('Muli-Bolditalic'), url(/fonts/muli-latin-700italic.woff2) format('woff2'), url(/fonts/muli-latin-700italic.woff) format('woff'); /* Modern Browsers */ } /* muli-800normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 800; src: local('Muli ExtraBold '), local('Muli-ExtraBold'), url(/fonts/muli-latin-800.woff2) format('woff2'), url(/fonts/muli-latin-800.woff) format('woff'); /* Modern Browsers */ } /* muli-800italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 800; src: local('Muli ExtraBold italic'), local('Muli-ExtraBolditalic'), url(/fonts/muli-latin-800italic.woff2) format('woff2'), url(/fonts/muli-latin-800italic.woff) format('woff'); /* Modern Browsers */ } /* muli-900normal - latin */ @font-face { font-family: 'Muli'; font-style: normal; font-display: swap; font-weight: 900; src: local('Muli Black '), local('Muli-Black'), url(/fonts/muli-latin-900.woff2) format('woff2'), url(/fonts/muli-latin-900.woff) format('woff'); /* Modern Browsers */ } /* muli-900italic - latin */ @font-face { font-family: 'Muli'; font-style: italic; font-display: swap; font-weight: 900; src: local('Muli Black italic'), local('Muli-Blackitalic'), url(/fonts/muli-latin-900italic.woff2) format('woff2'), url(/fonts/muli-latin-900italic.woff) format('woff'); /* Modern Browsers */ } /*Base Styles*/ /*! TACHYONS v4.7.0 | http://tachyons.io */ /* * NOTE: The Tachyons folder is for backup/reference only. This file references the module * ________ ______ * ___ __/_____ _________ /______ ______________________ * __ / _ __ `/ ___/_ __ \_ / / / __ \_ __ \_ ___/ * _ / / /_/ // /__ _ / / / /_/ // /_/ / / / /(__ ) * /_/ \__,_/ \___/ /_/ /_/_\__, / \____//_/ /_//____/ * /____/ * * TABLE OF CONTENTS * * 1. External Library Includes * - Normalize.css | http://normalize.css.github.io * 2. Tachyons Modules * 3. Variables * - Media Queries * - Colors * 4. Debugging * - Debug all * - Debug children * */ /* External Library Includes */ /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ /* Document ========================================================================== */ /** * 1. Correct the line height in all browsers. * 2. Prevent adjustments of font size after orientation changes in iOS. */ html { line-height: 1.15; /* 1 */ -webkit-text-size-adjust: 100%; /* 2 */ } /* Sections ========================================================================== */ /** * Remove the margin in all browsers. */ body { margin: 0; } /** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Firefox, and Safari. */ h1 { font-size: 2em; margin: 0.67em 0; } /* Grouping content ========================================================================== */ /** * 1. Add the correct box sizing in Firefox. * 2. Show the overflow in Edge and IE. */ hr { -webkit-box-sizing: content-box; box-sizing: content-box; /* 1 */ height: 0; /* 1 */ overflow: visible; /* 2 */ } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ pre { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } /* Text-level semantics ========================================================================== */ /** * Remove the gray background on active links in IE 10. */ a { background-color: transparent; } /** * 1. Remove the bottom border in Chrome 57- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. */ abbr[title] { border-bottom: none; /* 1 */ text-decoration: underline; /* 2 */ -webkit-text-decoration: underline dotted; text-decoration: underline dotted; /* 2 */ } /** * Add the correct font weight in Chrome, Edge, and Safari. */ b, strong { font-weight: bolder; } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ code, kbd, samp { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } /** * Add the correct font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` elements from affecting the line height in * all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } /* Embedded content ========================================================================== */ /** * Remove the border on images inside links in IE 10. */ img { border-style: none; } /* Forms ========================================================================== */ /** * 1. Change the font styles in all browsers. * 2. Remove the margin in Firefox and Safari. */ button, input, optgroup, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 1 */ line-height: 1.15; /* 1 */ margin: 0; /* 2 */ } /** * Show the overflow in IE. * 1. Show the overflow in Edge. */ button, input { /* 1 */ overflow: visible; } /** * Remove the inheritance of text transform in Edge, Firefox, and IE. * 1. Remove the inheritance of text transform in Firefox. */ button, select { /* 1 */ text-transform: none; } /** * Correct the inability to style clickable types in iOS and Safari. */ button, [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } /** * Remove the inner border and padding in Firefox. */ button::-moz-focus-inner, [type="button"]::-moz-focus-inner, [type="reset"]::-moz-focus-inner, [type="submit"]::-moz-focus-inner { border-style: none; padding: 0; } /** * Restore the focus styles unset by the previous rule. */ button:-moz-focusring, [type="button"]:-moz-focusring, [type="reset"]:-moz-focusring, [type="submit"]:-moz-focusring { outline: 1px dotted ButtonText; } /** * Correct the padding in Firefox. */ fieldset { padding: 0.35em 0.75em 0.625em; } /** * 1. Correct the text wrapping in Edge and IE. * 2. Correct the color inheritance from `fieldset` elements in IE. * 3. Remove the padding so developers are not caught out when they zero out * `fieldset` elements in all browsers. */ legend { -webkit-box-sizing: border-box; box-sizing: border-box; /* 1 */ color: inherit; /* 2 */ display: table; /* 1 */ max-width: 100%; /* 1 */ padding: 0; /* 3 */ white-space: normal; /* 1 */ } /** * Add the correct vertical alignment in Chrome, Firefox, and Opera. */ progress { vertical-align: baseline; } /** * Remove the default vertical scrollbar in IE 10+. */ textarea { overflow: auto; } /** * 1. Add the correct box sizing in IE 10. * 2. Remove the padding in IE 10. */ [type="checkbox"], [type="radio"] { -webkit-box-sizing: border-box; box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** * Correct the cursor style of increment and decrement buttons in Chrome. */ [type="number"]::-webkit-inner-spin-button, [type="number"]::-webkit-outer-spin-button { height: auto; } /** * 1. Correct the odd appearance in Chrome and Safari. * 2. Correct the outline style in Safari. */ [type="search"] { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } /** * Remove the inner padding in Chrome and Safari on macOS. */ [type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * 1. Correct the inability to style clickable types in iOS and Safari. * 2. Change font properties to `inherit` in Safari. */ ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } /* Interactive ========================================================================== */ /* * Add the correct display in Edge, IE 10+, and Firefox. */ details { display: block; } /* * Add the correct display in all browsers. */ summary { display: list-item; } /* Misc ========================================================================== */ /** * Add the correct display in IE 10+. */ template { display: none; } /** * Add the correct display in IE 10. */ [hidden] { display: none; } /* Modules */ /* BOX SIZING */ html, body, div, article, aside, section, main, nav, footer, header, form, fieldset, legend, pre, code, a, h1,h2,h3,h4,h5,h6, p, ul, ol, li, dl, dt, dd, blockquote, figcaption, figure, textarea, table, td, th, tr, input[type="email"], input[type="number"], input[type="password"], input[type="tel"], input[type="text"], input[type="url"], .border-box { -webkit-box-sizing: border-box; box-sizing: border-box; } /*@import 'tachyons/src/_aspect-ratios';*/ /* IMAGES Docs: http://tachyons.io/docs/elements/images/ */ /* Responsive images! */ img { max-width: 100%; } /* BACKGROUND SIZE Docs: http://tachyons.io/docs/themes/background-size/ Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Often used in combination with background image set as an inline style on an html element. */ .cover { background-size: cover!important; } .contain { background-size: contain!important; } @media screen and (min-width: 30em) { .cover-ns { background-size: cover!important; } .contain-ns { background-size: contain!important; } } @media screen and (min-width: 30em) and (max-width: 60em) { .cover-m { background-size: cover!important; } .contain-m { background-size: contain!important; } } @media screen and (min-width: 60em) { .cover-l { background-size: cover!important; } .contain-l { background-size: contain!important; } } /* BACKGROUND POSITION Base: bg = background Modifiers: -center = center center -top = top center -right = center right -bottom = bottom center -left = center left Media Query Extensions: -ns = not-small -m = medium -l = large */ .bg-center { background-repeat: no-repeat; background-position: center center; } .bg-top { background-repeat: no-repeat; background-position: top center; } .bg-right { background-repeat: no-repeat; background-position: center right; } .bg-bottom { background-repeat: no-repeat; background-position: bottom center; } .bg-left { background-repeat: no-repeat; background-position: center left; } @media screen and (min-width: 30em) { .bg-center-ns { background-repeat: no-repeat; background-position: center center; } .bg-top-ns { background-repeat: no-repeat; background-position: top center; } .bg-right-ns { background-repeat: no-repeat; background-position: center right; } .bg-bottom-ns { background-repeat: no-repeat; background-position: bottom center; } .bg-left-ns { background-repeat: no-repeat; background-position: center left; } } @media screen and (min-width: 30em) and (max-width: 60em) { .bg-center-m { background-repeat: no-repeat; background-position: center center; } .bg-top-m { background-repeat: no-repeat; background-position: top center; } .bg-right-m { background-repeat: no-repeat; background-position: center right; } .bg-bottom-m { background-repeat: no-repeat; background-position: bottom center; } .bg-left-m { background-repeat: no-repeat; background-position: center left; } } @media screen and (min-width: 60em) { .bg-center-l { background-repeat: no-repeat; background-position: center center; } .bg-top-l { background-repeat: no-repeat; background-position: top center; } .bg-right-l { background-repeat: no-repeat; background-position: center right; } .bg-bottom-l { background-repeat: no-repeat; background-position: bottom center; } .bg-left-l { background-repeat: no-repeat; background-position: center left; } } /*@import 'tachyons/src/_outlines';*/ /* BORDERS Docs: http://tachyons.io/docs/themes/borders/ Base: b = border Modifiers: a = all t = top r = right b = bottom l = left n = none Media Query Extensions: -ns = not-small -m = medium -l = large */ .ba { border-style: solid; border-width: 1px; } .bt { border-top-style: solid; border-top-width: 1px; } .br { border-right-style: solid; border-right-width: 1px; } .bb { border-bottom-style: solid; border-bottom-width: 1px; } .bl { border-left-style: solid; border-left-width: 1px; } .bn { border-style: none; border-width: 0; } @media screen and (min-width: 30em) { .ba-ns { border-style: solid; border-width: 1px; } .bt-ns { border-top-style: solid; border-top-width: 1px; } .br-ns { border-right-style: solid; border-right-width: 1px; } .bb-ns { border-bottom-style: solid; border-bottom-width: 1px; } .bl-ns { border-left-style: solid; border-left-width: 1px; } .bn-ns { border-style: none; border-width: 0; } } @media screen and (min-width: 30em) and (max-width: 60em) { .ba-m { border-style: solid; border-width: 1px; } .bt-m { border-top-style: solid; border-top-width: 1px; } .br-m { border-right-style: solid; border-right-width: 1px; } .bb-m { border-bottom-style: solid; border-bottom-width: 1px; } .bl-m { border-left-style: solid; border-left-width: 1px; } .bn-m { border-style: none; border-width: 0; } } @media screen and (min-width: 60em) { .ba-l { border-style: solid; border-width: 1px; } .bt-l { border-top-style: solid; border-top-width: 1px; } .br-l { border-right-style: solid; border-right-width: 1px; } .bb-l { border-bottom-style: solid; border-bottom-width: 1px; } .bl-l { border-left-style: solid; border-left-width: 1px; } .bn-l { border-style: none; border-width: 0; } } /* BORDER COLORS Docs: http://tachyons.io/docs/themes/borders/ Border colors can be used to extend the base border classes ba,bt,bb,br,bl found in the _borders.css file. The base border class by default will set the color of the border to that of the current text color. These classes are for the cases where you desire for the text and border colors to be different. Base: b = border Modifiers: --color-name = each color variable name is also a border color name */ .b--black { border-color: #000; } .b--near-black { border-color: #111; } .b--dark-gray { border-color: #333; } .b--mid-gray { border-color: #555; } .b--gray { border-color: #777; } .b--silver { border-color: #999; } .b--light-silver { border-color: #aaa; } .b--moon-gray { border-color: #ccc; } .b--light-gray { border-color: #eee; } .b--near-white { border-color: #f4f4f4; } .b--white { border-color: #fff; } .b--white-90 { border-color: rgba(255, 255, 255, .9); } .b--white-80 { border-color: rgba(255, 255, 255, .8); } .b--white-70 { border-color: rgba(255, 255, 255, .7); } .b--white-60 { border-color: rgba(255, 255, 255, .6); } .b--white-50 { border-color: rgba(255, 255, 255, .5); } .b--white-40 { border-color: rgba(255, 255, 255, .4); } .b--white-30 { border-color: rgba(255, 255, 255, .3); } .b--white-20 { border-color: rgba(255, 255, 255, .2); } .b--white-10 { border-color: rgba(255, 255, 255, .1); } .b--white-05 { border-color: rgba(255, 255, 255, .05); } .b--white-025 { border-color: rgba(255, 255, 255, .025); } .b--white-0125 { border-color: rgba(255, 255, 255, .0125); } .b--black-90 { border-color: rgba(0, 0, 0, .9); } .b--black-80 { border-color: rgba(0, 0, 0, .8); } .b--black-70 { border-color: rgba(0, 0, 0, .7); } .b--black-60 { border-color: rgba(0, 0, 0, .6); } .b--black-50 { border-color: rgba(0, 0, 0, .5); } .b--black-40 { border-color: rgba(0, 0, 0, .4); } .b--black-30 { border-color: rgba(0, 0, 0, .3); } .b--black-20 { border-color: rgba(0, 0, 0, .2); } .b--black-10 { border-color: rgba(0, 0, 0, .1); } .b--black-05 { border-color: rgba(0, 0, 0, .05); } .b--black-025 { border-color: rgba(0, 0, 0, .025); } .b--black-0125 { border-color: rgba(0, 0, 0, .0125); } .b--dark-red { border-color: #e7040f; } .b--red { border-color: #ff4136; } .b--light-red { border-color: #ff725c; } .b--orange { border-color: #ff6300; } .b--gold { border-color: #ffb700; } .b--yellow { border-color: #ffd700; } .b--light-yellow { border-color: #fbf1a9; } .b--purple { border-color: #5e2ca5; } .b--light-purple { border-color: #a463f2; } .b--dark-pink { border-color: #d5008f; } .b--hot-pink { border-color: #ff41b4; } .b--pink { border-color: #ff80cc; } .b--light-pink { border-color: #ffa3d7; } .b--dark-green { border-color: #137752; } .b--green { border-color: #19a974; } .b--light-green { border-color: #9eebcf; } .b--navy { border-color: #001b44; } .b--dark-blue { border-color: #00449e; } .b--blue { border-color: #0594CB; } .b--light-blue { border-color: #96ccff; } .b--lightest-blue { border-color: #cdecff; } .b--washed-blue { border-color: #f6fffe; } .b--washed-green { border-color: #e8fdf5; } .b--washed-yellow { border-color: #fffceb; } .b--washed-red { border-color: #ffdfdf; } .b--transparent { border-color: transparent; } .b--inherit { border-color: inherit; } /* BORDER RADIUS Docs: http://tachyons.io/docs/themes/border-radius/ Base: br = border-radius Modifiers: 0 = 0/none 1 = 1st step in scale 2 = 2nd step in scale 3 = 3rd step in scale 4 = 4th step in scale Literal values: -100 = 100% -pill = 9999px Media Query Extensions: -ns = not-small -m = medium -l = large */ .br0 { border-radius: 0; } .br1 { border-radius: .125rem; } .br2 { border-radius: .25rem; } .br3 { border-radius: .5rem; } .br4 { border-radius: 1rem; } .br-100 { border-radius: 100%; } .br-pill { border-radius: 9999px; } .br--bottom { border-top-left-radius: 0; border-top-right-radius: 0; } .br--top { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .br--right { border-top-left-radius: 0; border-bottom-left-radius: 0; } .br--left { border-top-right-radius: 0; border-bottom-right-radius: 0; } @media screen and (min-width: 30em) { .br0-ns { border-radius: 0; } .br1-ns { border-radius: .125rem; } .br2-ns { border-radius: .25rem; } .br3-ns { border-radius: .5rem; } .br4-ns { border-radius: 1rem; } .br-100-ns { border-radius: 100%; } .br-pill-ns { border-radius: 9999px; } .br--bottom-ns { border-top-left-radius: 0; border-top-right-radius: 0; } .br--top-ns { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .br--right-ns { border-top-left-radius: 0; border-bottom-left-radius: 0; } .br--left-ns { border-top-right-radius: 0; border-bottom-right-radius: 0; } } @media screen and (min-width: 30em) and (max-width: 60em) { .br0-m { border-radius: 0; } .br1-m { border-radius: .125rem; } .br2-m { border-radius: .25rem; } .br3-m { border-radius: .5rem; } .br4-m { border-radius: 1rem; } .br-100-m { border-radius: 100%; } .br-pill-m { border-radius: 9999px; } .br--bottom-m { border-top-left-radius: 0; border-top-right-radius: 0; } .br--top-m { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .br--right-m { border-top-left-radius: 0; border-bottom-left-radius: 0; } .br--left-m { border-top-right-radius: 0; border-bottom-right-radius: 0; } } @media screen and (min-width: 60em) { .br0-l { border-radius: 0; } .br1-l { border-radius: .125rem; } .br2-l { border-radius: .25rem; } .br3-l { border-radius: .5rem; } .br4-l { border-radius: 1rem; } .br-100-l { border-radius: 100%; } .br-pill-l { border-radius: 9999px; } .br--bottom-l { border-top-left-radius: 0; border-top-right-radius: 0; } .br--top-l { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .br--right-l { border-top-left-radius: 0; border-bottom-left-radius: 0; } .br--left-l { border-top-right-radius: 0; border-bottom-right-radius: 0; } } /* BORDER STYLES Docs: http://tachyons.io/docs/themes/borders/ Depends on base border module in _borders.css Base: b = border-style Modifiers: --none = none --dotted = dotted --dashed = dashed --solid = solid Media Query Extensions: -ns = not-small -m = medium -l = large */ .b--dotted { border-style: dotted; } .b--dashed { border-style: dashed; } .b--solid { border-style: solid; } .b--none { border-style: none; } @media screen and (min-width: 30em) { .b--dotted-ns { border-style: dotted; } .b--dashed-ns { border-style: dashed; } .b--solid-ns { border-style: solid; } .b--none-ns { border-style: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .b--dotted-m { border-style: dotted; } .b--dashed-m { border-style: dashed; } .b--solid-m { border-style: solid; } .b--none-m { border-style: none; } } @media screen and (min-width: 60em) { .b--dotted-l { border-style: dotted; } .b--dashed-l { border-style: dashed; } .b--solid-l { border-style: solid; } .b--none-l { border-style: none; } } /* BORDER WIDTHS Docs: http://tachyons.io/docs/themes/borders/ Base: bw = border-width Modifiers: 0 = 0 width border 1 = 1st step in border-width scale 2 = 2nd step in border-width scale 3 = 3rd step in border-width scale 4 = 4th step in border-width scale 5 = 5th step in border-width scale Media Query Extensions: -ns = not-small -m = medium -l = large */ .bw0 { border-width: 0; } .bw1 { border-width: .125rem; } .bw2 { border-width: .25rem; } .bw3 { border-width: .5rem; } .bw4 { border-width: 1rem; } .bw5 { border-width: 2rem; } /* Resets */ .bt-0 { border-top-width: 0; } .br-0 { border-right-width: 0; } .bb-0 { border-bottom-width: 0; } .bl-0 { border-left-width: 0; } @media screen and (min-width: 30em) { .bw0-ns { border-width: 0; } .bw1-ns { border-width: .125rem; } .bw2-ns { border-width: .25rem; } .bw3-ns { border-width: .5rem; } .bw4-ns { border-width: 1rem; } .bw5-ns { border-width: 2rem; } .bt-0-ns { border-top-width: 0; } .br-0-ns { border-right-width: 0; } .bb-0-ns { border-bottom-width: 0; } .bl-0-ns { border-left-width: 0; } } @media screen and (min-width: 30em) and (max-width: 60em) { .bw0-m { border-width: 0; } .bw1-m { border-width: .125rem; } .bw2-m { border-width: .25rem; } .bw3-m { border-width: .5rem; } .bw4-m { border-width: 1rem; } .bw5-m { border-width: 2rem; } .bt-0-m { border-top-width: 0; } .br-0-m { border-right-width: 0; } .bb-0-m { border-bottom-width: 0; } .bl-0-m { border-left-width: 0; } } @media screen and (min-width: 60em) { .bw0-l { border-width: 0; } .bw1-l { border-width: .125rem; } .bw2-l { border-width: .25rem; } .bw3-l { border-width: .5rem; } .bw4-l { border-width: 1rem; } .bw5-l { border-width: 2rem; } .bt-0-l { border-top-width: 0; } .br-0-l { border-right-width: 0; } .bb-0-l { border-bottom-width: 0; } .bl-0-l { border-left-width: 0; } } /* BOX-SHADOW Docs: http://tachyons.io/docs/themes/box-shadow/ Media Query Extensions: -ns = not-small -m = medium -l = large */ .shadow-1 { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } .shadow-2 { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } .shadow-3 { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } .shadow-4 { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } .shadow-5 { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } @media screen and (min-width: 30em) { .shadow-1-ns { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } .shadow-2-ns { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } .shadow-3-ns { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } .shadow-4-ns { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } .shadow-5-ns { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } } @media screen and (min-width: 30em) and (max-width: 60em) { .shadow-1-m { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } .shadow-2-m { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } .shadow-3-m { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } .shadow-4-m { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } .shadow-5-m { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } } @media screen and (min-width: 60em) { .shadow-1-l { -webkit-box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 4px 2px rgba(0, 0, 0, .2); } .shadow-2-l { -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, .2); } .shadow-3-l { -webkit-box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); box-shadow: 2px 2px 4px 2px rgba(0, 0, 0, .2); } .shadow-4-l { -webkit-box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); box-shadow: 2px 2px 8px 0px rgba(0, 0, 0, .2); } .shadow-5-l { -webkit-box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); box-shadow: 4px 4px 8px 0px rgba(0, 0, 0, .2); } } /*@import 'tachyons/src/_code';*/ /* COORDINATES Docs: http://tachyons.io/docs/layout/position/ Use in combination with the position module. Base: top bottom right left Modifiers: -0 = literal value 0 -1 = literal value 1 -2 = literal value 2 --1 = literal value -1 --2 = literal value -2 Media Query Extensions: -ns = not-small -m = medium -l = large */ .top-0 { top: 0; } .right-0 { right: 0; } .bottom-0 { bottom: 0; } .left-0 { left: 0; } .top-1 { top: 1rem; } .right-1 { right: 1rem; } .bottom-1 { bottom: 1rem; } .left-1 { left: 1rem; } .top-2 { top: 2rem; } .right-2 { right: 2rem; } .bottom-2 { bottom: 2rem; } .left-2 { left: 2rem; } .top--1 { top: -1rem; } .right--1 { right: -1rem; } .bottom--1 { bottom: -1rem; } .left--1 { left: -1rem; } .top--2 { top: -2rem; } .right--2 { right: -2rem; } .bottom--2 { bottom: -2rem; } .left--2 { left: -2rem; } .absolute--fill { top: 0; right: 0; bottom: 0; left: 0; } @media screen and (min-width: 30em) { .top-0-ns { top: 0; } .left-0-ns { left: 0; } .right-0-ns { right: 0; } .bottom-0-ns { bottom: 0; } .top-1-ns { top: 1rem; } .left-1-ns { left: 1rem; } .right-1-ns { right: 1rem; } .bottom-1-ns { bottom: 1rem; } .top-2-ns { top: 2rem; } .left-2-ns { left: 2rem; } .right-2-ns { right: 2rem; } .bottom-2-ns { bottom: 2rem; } .top--1-ns { top: -1rem; } .right--1-ns { right: -1rem; } .bottom--1-ns { bottom: -1rem; } .left--1-ns { left: -1rem; } .top--2-ns { top: -2rem; } .right--2-ns { right: -2rem; } .bottom--2-ns { bottom: -2rem; } .left--2-ns { left: -2rem; } .absolute--fill-ns { top: 0; right: 0; bottom: 0; left: 0; } } @media screen and (min-width: 30em) and (max-width: 60em) { .top-0-m { top: 0; } .left-0-m { left: 0; } .right-0-m { right: 0; } .bottom-0-m { bottom: 0; } .top-1-m { top: 1rem; } .left-1-m { left: 1rem; } .right-1-m { right: 1rem; } .bottom-1-m { bottom: 1rem; } .top-2-m { top: 2rem; } .left-2-m { left: 2rem; } .right-2-m { right: 2rem; } .bottom-2-m { bottom: 2rem; } .top--1-m { top: -1rem; } .right--1-m { right: -1rem; } .bottom--1-m { bottom: -1rem; } .left--1-m { left: -1rem; } .top--2-m { top: -2rem; } .right--2-m { right: -2rem; } .bottom--2-m { bottom: -2rem; } .left--2-m { left: -2rem; } .absolute--fill-m { top: 0; right: 0; bottom: 0; left: 0; } } @media screen and (min-width: 60em) { .top-0-l { top: 0; } .left-0-l { left: 0; } .right-0-l { right: 0; } .bottom-0-l { bottom: 0; } .top-1-l { top: 1rem; } .left-1-l { left: 1rem; } .right-1-l { right: 1rem; } .bottom-1-l { bottom: 1rem; } .top-2-l { top: 2rem; } .left-2-l { left: 2rem; } .right-2-l { right: 2rem; } .bottom-2-l { bottom: 2rem; } .top--1-l { top: -1rem; } .right--1-l { right: -1rem; } .bottom--1-l { bottom: -1rem; } .left--1-l { left: -1rem; } .top--2-l { top: -2rem; } .right--2-l { right: -2rem; } .bottom--2-l { bottom: -2rem; } .left--2-l { left: -2rem; } .absolute--fill-l { top: 0; right: 0; bottom: 0; left: 0; } } /* CLEARFIX http://tachyons.io/docs/layout/clearfix/ */ /* Nicolas Gallaghers Clearfix solution Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */ .cf:before, .cf:after { content: " "; display: table; } .cf:after { clear: both; } .cf { *zoom: 1; } .cl { clear: left; } .cr { clear: right; } .cb { clear: both; } .cn { clear: none; } @media screen and (min-width: 30em) { .cl-ns { clear: left; } .cr-ns { clear: right; } .cb-ns { clear: both; } .cn-ns { clear: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .cl-m { clear: left; } .cr-m { clear: right; } .cb-m { clear: both; } .cn-m { clear: none; } } @media screen and (min-width: 60em) { .cl-l { clear: left; } .cr-l { clear: right; } .cb-l { clear: both; } .cn-l { clear: none; } } /* DISPLAY Docs: http://tachyons.io/docs/layout/display Base: d = display Modifiers: n = none b = block ib = inline-block it = inline-table t = table tc = table-cell t-row = table-row t-columm = table-column t-column-group = table-column-group Media Query Extensions: -ns = not-small -m = medium -l = large */ .dn { display: none; } .di { display: inline; } .db { display: block; } .dib { display: inline-block; } .dit { display: inline-table; } .dt { display: table; } .dtc { display: table-cell; } .dt-row { display: table-row; } .dt-row-group { display: table-row-group; } .dt-column { display: table-column; } .dt-column-group { display: table-column-group; } /* This will set table to full width and then all cells will be equal width */ .dt--fixed { table-layout: fixed; width: 100%; } @media screen and (min-width: 30em) { .dn-ns { display: none; } .di-ns { display: inline; } .db-ns { display: block; } .dib-ns { display: inline-block; } .dit-ns { display: inline-table; } .dt-ns { display: table; } .dtc-ns { display: table-cell; } .dt-row-ns { display: table-row; } .dt-row-group-ns { display: table-row-group; } .dt-column-ns { display: table-column; } .dt-column-group-ns { display: table-column-group; } .dt--fixed-ns { table-layout: fixed; width: 100%; } } @media screen and (min-width: 30em) and (max-width: 60em) { .dn-m { display: none; } .di-m { display: inline; } .db-m { display: block; } .dib-m { display: inline-block; } .dit-m { display: inline-table; } .dt-m { display: table; } .dtc-m { display: table-cell; } .dt-row-m { display: table-row; } .dt-row-group-m { display: table-row-group; } .dt-column-m { display: table-column; } .dt-column-group-m { display: table-column-group; } .dt--fixed-m { table-layout: fixed; width: 100%; } } @media screen and (min-width: 60em) { .dn-l { display: none; } .di-l { display: inline; } .db-l { display: block; } .dib-l { display: inline-block; } .dit-l { display: inline-table; } .dt-l { display: table; } .dtc-l { display: table-cell; } .dt-row-l { display: table-row; } .dt-row-group-l { display: table-row-group; } .dt-column-l { display: table-column; } .dt-column-group-l { display: table-column-group; } .dt--fixed-l { table-layout: fixed; width: 100%; } } /* FLEXBOX Media Query Extensions: -ns = not-small -m = medium -l = large */ .flex { display: -webkit-box; display: -ms-flexbox; display: flex; } .inline-flex { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } /* 1. Fix for Chrome 44 bug. * https://code.google.com/p/chromium/issues/detail?id=506893 */ .flex-auto { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; min-width: 0; /* 1 */ min-height: 0; /* 1 */ } .flex-none { -webkit-box-flex: 0; -ms-flex: none; flex: none; } .flex-column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .flex-row { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .flex-wrap { -ms-flex-wrap: wrap; flex-wrap: wrap; } .flex-nowrap { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .flex-wrap-reverse { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } .flex-column-reverse { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .flex-row-reverse { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .items-start { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .items-end { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .items-center { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .items-baseline { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } .items-stretch { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .self-start { -ms-flex-item-align: start; align-self: flex-start; } .self-end { -ms-flex-item-align: end; align-self: flex-end; } .self-center { -ms-flex-item-align: center; align-self: center; } .self-baseline { -ms-flex-item-align: baseline; align-self: baseline; } .self-stretch { -ms-flex-item-align: stretch; align-self: stretch; } .justify-start { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .justify-end { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .justify-center { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .justify-between { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .justify-around { -ms-flex-pack: distribute; justify-content: space-around; } .content-start { -ms-flex-line-pack: start; align-content: flex-start; } .content-end { -ms-flex-line-pack: end; align-content: flex-end; } .content-center { -ms-flex-line-pack: center; align-content: center; } .content-between { -ms-flex-line-pack: justify; align-content: space-between; } .content-around { -ms-flex-line-pack: distribute; align-content: space-around; } .content-stretch { -ms-flex-line-pack: stretch; align-content: stretch; } .order-0 { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } .order-1 { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .order-2 { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } .order-3 { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .order-4 { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } .order-5 { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } .order-6 { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } .order-7 { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } .order-8 { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } .order-last { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } .flex-grow-0 { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } .flex-grow-1 { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } .flex-shrink-0 { -ms-flex-negative: 0; flex-shrink: 0; } .flex-shrink-1 { -ms-flex-negative: 1; flex-shrink: 1; } @media screen and (min-width: 30em) { .flex-ns { display: -webkit-box; display: -ms-flexbox; display: flex; } .inline-flex-ns { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } .flex-auto-ns { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; min-width: 0; /* 1 */ min-height: 0; /* 1 */ } .flex-none-ns { -webkit-box-flex: 0; -ms-flex: none; flex: none; } .flex-column-ns { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .flex-row-ns { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .flex-wrap-ns { -ms-flex-wrap: wrap; flex-wrap: wrap; } .flex-nowrap-ns { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .flex-wrap-reverse-ns { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } .flex-column-reverse-ns { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .flex-row-reverse-ns { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .items-start-ns { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .items-end-ns { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .items-center-ns { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .items-baseline-ns { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } .items-stretch-ns { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .self-start-ns { -ms-flex-item-align: start; align-self: flex-start; } .self-end-ns { -ms-flex-item-align: end; align-self: flex-end; } .self-center-ns { -ms-flex-item-align: center; align-self: center; } .self-baseline-ns { -ms-flex-item-align: baseline; align-self: baseline; } .self-stretch-ns { -ms-flex-item-align: stretch; align-self: stretch; } .justify-start-ns { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .justify-end-ns { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .justify-center-ns { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .justify-between-ns { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .justify-around-ns { -ms-flex-pack: distribute; justify-content: space-around; } .content-start-ns { -ms-flex-line-pack: start; align-content: flex-start; } .content-end-ns { -ms-flex-line-pack: end; align-content: flex-end; } .content-center-ns { -ms-flex-line-pack: center; align-content: center; } .content-between-ns { -ms-flex-line-pack: justify; align-content: space-between; } .content-around-ns { -ms-flex-line-pack: distribute; align-content: space-around; } .content-stretch-ns { -ms-flex-line-pack: stretch; align-content: stretch; } .order-0-ns { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } .order-1-ns { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .order-2-ns { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } .order-3-ns { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .order-4-ns { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } .order-5-ns { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } .order-6-ns { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } .order-7-ns { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } .order-8-ns { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } .order-last-ns { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } .flex-grow-0-ns { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } .flex-grow-1-ns { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } .flex-shrink-0-ns { -ms-flex-negative: 0; flex-shrink: 0; } .flex-shrink-1-ns { -ms-flex-negative: 1; flex-shrink: 1; } } @media screen and (min-width: 30em) and (max-width: 60em) { .flex-m { display: -webkit-box; display: -ms-flexbox; display: flex; } .inline-flex-m { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } .flex-auto-m { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; min-width: 0; /* 1 */ min-height: 0; /* 1 */ } .flex-none-m { -webkit-box-flex: 0; -ms-flex: none; flex: none; } .flex-column-m { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .flex-row-m { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .flex-wrap-m { -ms-flex-wrap: wrap; flex-wrap: wrap; } .flex-nowrap-m { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .flex-wrap-reverse-m { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } .flex-column-reverse-m { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .flex-row-reverse-m { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .items-start-m { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .items-end-m { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .items-center-m { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .items-baseline-m { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } .items-stretch-m { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .self-start-m { -ms-flex-item-align: start; align-self: flex-start; } .self-end-m { -ms-flex-item-align: end; align-self: flex-end; } .self-center-m { -ms-flex-item-align: center; align-self: center; } .self-baseline-m { -ms-flex-item-align: baseline; align-self: baseline; } .self-stretch-m { -ms-flex-item-align: stretch; align-self: stretch; } .justify-start-m { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .justify-end-m { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .justify-center-m { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .justify-between-m { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .justify-around-m { -ms-flex-pack: distribute; justify-content: space-around; } .content-start-m { -ms-flex-line-pack: start; align-content: flex-start; } .content-end-m { -ms-flex-line-pack: end; align-content: flex-end; } .content-center-m { -ms-flex-line-pack: center; align-content: center; } .content-between-m { -ms-flex-line-pack: justify; align-content: space-between; } .content-around-m { -ms-flex-line-pack: distribute; align-content: space-around; } .content-stretch-m { -ms-flex-line-pack: stretch; align-content: stretch; } .order-0-m { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } .order-1-m { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .order-2-m { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } .order-3-m { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .order-4-m { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } .order-5-m { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } .order-6-m { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } .order-7-m { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } .order-8-m { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } .order-last-m { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } .flex-grow-0-m { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } .flex-grow-1-m { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } .flex-shrink-0-m { -ms-flex-negative: 0; flex-shrink: 0; } .flex-shrink-1-m { -ms-flex-negative: 1; flex-shrink: 1; } } @media screen and (min-width: 60em) { .flex-l { display: -webkit-box; display: -ms-flexbox; display: flex; } .inline-flex-l { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } .flex-auto-l { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; min-width: 0; /* 1 */ min-height: 0; /* 1 */ } .flex-none-l { -webkit-box-flex: 0; -ms-flex: none; flex: none; } .flex-column-l { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } .flex-row-l { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; } .flex-wrap-l { -ms-flex-wrap: wrap; flex-wrap: wrap; } .flex-nowrap-l { -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .flex-wrap-reverse-l { -ms-flex-wrap: wrap-reverse; flex-wrap: wrap-reverse; } .flex-column-reverse-l { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } .flex-row-reverse-l { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .items-start-l { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } .items-end-l { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .items-center-l { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .items-baseline-l { -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } .items-stretch-l { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } .self-start-l { -ms-flex-item-align: start; align-self: flex-start; } .self-end-l { -ms-flex-item-align: end; align-self: flex-end; } .self-center-l { -ms-flex-item-align: center; align-self: center; } .self-baseline-l { -ms-flex-item-align: baseline; align-self: baseline; } .self-stretch-l { -ms-flex-item-align: stretch; align-self: stretch; } .justify-start-l { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } .justify-end-l { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } .justify-center-l { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } .justify-between-l { -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } .justify-around-l { -ms-flex-pack: distribute; justify-content: space-around; } .content-start-l { -ms-flex-line-pack: start; align-content: flex-start; } .content-end-l { -ms-flex-line-pack: end; align-content: flex-end; } .content-center-l { -ms-flex-line-pack: center; align-content: center; } .content-between-l { -ms-flex-line-pack: justify; align-content: space-between; } .content-around-l { -ms-flex-line-pack: distribute; align-content: space-around; } .content-stretch-l { -ms-flex-line-pack: stretch; align-content: stretch; } .order-0-l { -webkit-box-ordinal-group: 1; -ms-flex-order: 0; order: 0; } .order-1-l { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; } .order-2-l { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } .order-3-l { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; order: 3; } .order-4-l { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } .order-5-l { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; order: 5; } .order-6-l { -webkit-box-ordinal-group: 7; -ms-flex-order: 6; order: 6; } .order-7-l { -webkit-box-ordinal-group: 8; -ms-flex-order: 7; order: 7; } .order-8-l { -webkit-box-ordinal-group: 9; -ms-flex-order: 8; order: 8; } .order-last-l { -webkit-box-ordinal-group: 100000; -ms-flex-order: 99999; order: 99999; } .flex-grow-0-l { -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } .flex-grow-1-l { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } .flex-shrink-0-l { -ms-flex-negative: 0; flex-shrink: 0; } .flex-shrink-1-l { -ms-flex-negative: 1; flex-shrink: 1; } } /* FLOATS http://tachyons.io/docs/layout/floats/ 1. Floated elements are automatically rendered as block level elements. Setting floats to display inline will fix the double margin bug in ie6. You know... just in case. 2. Don't forget to clearfix your floats with .cf Base: f = float Modifiers: l = left r = right n = none Media Query Extensions: -ns = not-small -m = medium -l = large */ .fl { float: left; _display: inline; } .fr { float: right; _display: inline; } .fn { float: none; } @media screen and (min-width: 30em) { .fl-ns { float: left; _display: inline; } .fr-ns { float: right; _display: inline; } .fn-ns { float: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .fl-m { float: left; _display: inline; } .fr-m { float: right; _display: inline; } .fn-m { float: none; } } @media screen and (min-width: 60em) { .fl-l { float: left; _display: inline; } .fr-l { float: right; _display: inline; } .fn-l { float: none; } } /*@import 'tachyons/src/_font-family';*/ /* FONT STYLE Docs: http://tachyons.io/docs/typography/font-style/ Media Query Extensions: -ns = not-small -m = medium -l = large */ .i { font-style: italic; } .fs-normal { font-style: normal; } @media screen and (min-width: 30em) { .i-ns { font-style: italic; } .fs-normal-ns { font-style: normal; } } @media screen and (min-width: 30em) and (max-width: 60em) { .i-m { font-style: italic; } .fs-normal-m { font-style: normal; } } @media screen and (min-width: 60em) { .i-l { font-style: italic; } .fs-normal-l { font-style: normal; } } /* FONT WEIGHT Docs: http://tachyons.io/docs/typography/font-weight/ Base fw = font-weight Modifiers: 1 = literal value 100 2 = literal value 200 3 = literal value 300 4 = literal value 400 5 = literal value 500 6 = literal value 600 7 = literal value 700 8 = literal value 800 9 = literal value 900 Media Query Extensions: -ns = not-small -m = medium -l = large */ .normal { font-weight: normal; } .b { font-weight: bold; } .fw1 { font-weight: 100; } .fw2 { font-weight: 200; } .fw3 { font-weight: 300; } .fw4 { font-weight: 400; } .fw5 { font-weight: 500; } .fw6 { font-weight: 600; } .fw7 { font-weight: 700; } .fw8 { font-weight: 800; } .fw9 { font-weight: 900; } @media screen and (min-width: 30em) { .normal-ns { font-weight: normal; } .b-ns { font-weight: bold; } .fw1-ns { font-weight: 100; } .fw2-ns { font-weight: 200; } .fw3-ns { font-weight: 300; } .fw4-ns { font-weight: 400; } .fw5-ns { font-weight: 500; } .fw6-ns { font-weight: 600; } .fw7-ns { font-weight: 700; } .fw8-ns { font-weight: 800; } .fw9-ns { font-weight: 900; } } @media screen and (min-width: 30em) and (max-width: 60em) { .normal-m { font-weight: normal; } .b-m { font-weight: bold; } .fw1-m { font-weight: 100; } .fw2-m { font-weight: 200; } .fw3-m { font-weight: 300; } .fw4-m { font-weight: 400; } .fw5-m { font-weight: 500; } .fw6-m { font-weight: 600; } .fw7-m { font-weight: 700; } .fw8-m { font-weight: 800; } .fw9-m { font-weight: 900; } } @media screen and (min-width: 60em) { .normal-l { font-weight: normal; } .b-l { font-weight: bold; } .fw1-l { font-weight: 100; } .fw2-l { font-weight: 200; } .fw3-l { font-weight: 300; } .fw4-l { font-weight: 400; } .fw5-l { font-weight: 500; } .fw6-l { font-weight: 600; } .fw7-l { font-weight: 700; } .fw8-l { font-weight: 800; } .fw9-l { font-weight: 900; } } /* FORMS */ .input-reset { -webkit-appearance: none; -moz-appearance: none; } .button-reset::-moz-focus-inner, .input-reset::-moz-focus-inner { border: 0; padding: 0; } /* HEIGHTS Docs: http://tachyons.io/docs/layout/heights/ Base: h = height min-h = min-height min-vh = min-height vertical screen height vh = vertical screen height Modifiers 1 = 1st step in height scale 2 = 2nd step in height scale 3 = 3rd step in height scale 4 = 4th step in height scale 5 = 5th step in height scale -25 = literal value 25% -50 = literal value 50% -75 = literal value 75% -100 = literal value 100% -auto = string value of auto -inherit = string value of inherit Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Height Scale */ .h1 { height: 1rem; } .h2 { height: 2rem; } .h3 { height: 4rem; } .h4 { height: 8rem; } .h5 { height: 16rem; } /* Height Percentages - Based off of height of parent */ .h-25 { height: 25%; } .h-50 { height: 50%; } .h-75 { height: 75%; } .h-100 { height: 100%; } .min-h-100 { min-height: 100%; } /* Screen Height Percentage */ .vh-25 { height: 25vh; } .vh-50 { height: 50vh; } .vh-75 { height: 75vh; } .vh-100 { height: 100vh; } .min-vh-100 { min-height: 100vh; } /* String Properties */ .h-auto { height: auto; } .h-inherit { height: inherit; } @media screen and (min-width: 30em) { .h1-ns { height: 1rem; } .h2-ns { height: 2rem; } .h3-ns { height: 4rem; } .h4-ns { height: 8rem; } .h5-ns { height: 16rem; } .h-25-ns { height: 25%; } .h-50-ns { height: 50%; } .h-75-ns { height: 75%; } .h-100-ns { height: 100%; } .min-h-100-ns { min-height: 100%; } .vh-25-ns { height: 25vh; } .vh-50-ns { height: 50vh; } .vh-75-ns { height: 75vh; } .vh-100-ns { height: 100vh; } .min-vh-100-ns { min-height: 100vh; } .h-auto-ns { height: auto; } .h-inherit-ns { height: inherit; } } @media screen and (min-width: 30em) and (max-width: 60em) { .h1-m { height: 1rem; } .h2-m { height: 2rem; } .h3-m { height: 4rem; } .h4-m { height: 8rem; } .h5-m { height: 16rem; } .h-25-m { height: 25%; } .h-50-m { height: 50%; } .h-75-m { height: 75%; } .h-100-m { height: 100%; } .min-h-100-m { min-height: 100%; } .vh-25-m { height: 25vh; } .vh-50-m { height: 50vh; } .vh-75-m { height: 75vh; } .vh-100-m { height: 100vh; } .min-vh-100-m { min-height: 100vh; } .h-auto-m { height: auto; } .h-inherit-m { height: inherit; } } @media screen and (min-width: 60em) { .h1-l { height: 1rem; } .h2-l { height: 2rem; } .h3-l { height: 4rem; } .h4-l { height: 8rem; } .h5-l { height: 16rem; } .h-25-l { height: 25%; } .h-50-l { height: 50%; } .h-75-l { height: 75%; } .h-100-l { height: 100%; } .min-h-100-l { min-height: 100%; } .vh-25-l { height: 25vh; } .vh-50-l { height: 50vh; } .vh-75-l { height: 75vh; } .vh-100-l { height: 100vh; } .min-vh-100-l { min-height: 100vh; } .h-auto-l { height: auto; } .h-inherit-l { height: inherit; } } /* LETTER SPACING Docs: http://tachyons.io/docs/typography/tracking/ Media Query Extensions: -ns = not-small -m = medium -l = large */ .tracked { letter-spacing: .1em; } .tracked-tight { letter-spacing: -.05em; } .tracked-mega { letter-spacing: .25em; } @media screen and (min-width: 30em) { .tracked-ns { letter-spacing: .1em; } .tracked-tight-ns { letter-spacing: -.05em; } .tracked-mega-ns { letter-spacing: .25em; } } @media screen and (min-width: 30em) and (max-width: 60em) { .tracked-m { letter-spacing: .1em; } .tracked-tight-m { letter-spacing: -.05em; } .tracked-mega-m { letter-spacing: .25em; } } @media screen and (min-width: 60em) { .tracked-l { letter-spacing: .1em; } .tracked-tight-l { letter-spacing: -.05em; } .tracked-mega-l { letter-spacing: .25em; } } /* LINE HEIGHT / LEADING Docs: http://tachyons.io/docs/typography/line-height Media Query Extensions: -ns = not-small -m = medium -l = large */ .lh-solid { line-height: 1; } .lh-title { line-height: 1.25; } .lh-copy { line-height: 1.5; } @media screen and (min-width: 30em) { .lh-solid-ns { line-height: 1; } .lh-title-ns { line-height: 1.25; } .lh-copy-ns { line-height: 1.5; } } @media screen and (min-width: 30em) and (max-width: 60em) { .lh-solid-m { line-height: 1; } .lh-title-m { line-height: 1.25; } .lh-copy-m { line-height: 1.5; } } @media screen and (min-width: 60em) { .lh-solid-l { line-height: 1; } .lh-title-l { line-height: 1.25; } .lh-copy-l { line-height: 1.5; } } /* LINKS Docs: http://tachyons.io/docs/elements/links/ */ .link { text-decoration: none; -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } .link:link, .link:visited { -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } .link:hover { -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } .link:active { -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } .link:focus { -webkit-transition: color .15s ease-in; transition: color .15s ease-in; outline: 1px dotted currentColor; } /* LISTS http://tachyons.io/docs/elements/lists/ */ .list { list-style-type: none; } /* MAX WIDTHS Docs: http://tachyons.io/docs/layout/max-widths/ Base: mw = max-width Modifiers 1 = 1st step in width scale 2 = 2nd step in width scale 3 = 3rd step in width scale 4 = 4th step in width scale 5 = 5th step in width scale 6 = 6st step in width scale 7 = 7nd step in width scale 8 = 8rd step in width scale 9 = 9th step in width scale -100 = literal value 100% -none = string value none Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Max Width Percentages */ .mw-100 { max-width: 100%; } /* Max Width Scale */ .mw1 { max-width: 1rem; } .mw2 { max-width: 2rem; } .mw3 { max-width: 4rem; } .mw4 { max-width: 8rem; } .mw5 { max-width: 16rem; } .mw6 { max-width: 32rem; } .mw7 { max-width: 48rem; } .mw8 { max-width: 64rem; } .mw9 { max-width: 96rem; } /* Max Width String Properties */ .mw-none { max-width: none; } @media screen and (min-width: 30em) { .mw-100-ns { max-width: 100%; } .mw1-ns { max-width: 1rem; } .mw2-ns { max-width: 2rem; } .mw3-ns { max-width: 4rem; } .mw4-ns { max-width: 8rem; } .mw5-ns { max-width: 16rem; } .mw6-ns { max-width: 32rem; } .mw7-ns { max-width: 48rem; } .mw8-ns { max-width: 64rem; } .mw9-ns { max-width: 96rem; } .mw-none-ns { max-width: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .mw-100-m { max-width: 100%; } .mw1-m { max-width: 1rem; } .mw2-m { max-width: 2rem; } .mw3-m { max-width: 4rem; } .mw4-m { max-width: 8rem; } .mw5-m { max-width: 16rem; } .mw6-m { max-width: 32rem; } .mw7-m { max-width: 48rem; } .mw8-m { max-width: 64rem; } .mw9-m { max-width: 96rem; } .mw-none-m { max-width: none; } } @media screen and (min-width: 60em) { .mw-100-l { max-width: 100%; } .mw1-l { max-width: 1rem; } .mw2-l { max-width: 2rem; } .mw3-l { max-width: 4rem; } .mw4-l { max-width: 8rem; } .mw5-l { max-width: 16rem; } .mw6-l { max-width: 32rem; } .mw7-l { max-width: 48rem; } .mw8-l { max-width: 64rem; } .mw9-l { max-width: 96rem; } .mw-none-l { max-width: none; } } /* WIDTHS Docs: http://tachyons.io/docs/layout/widths/ Base: w = width Modifiers 1 = 1st step in width scale 2 = 2nd step in width scale 3 = 3rd step in width scale 4 = 4th step in width scale 5 = 5th step in width scale -10 = literal value 10% -20 = literal value 20% -25 = literal value 25% -30 = literal value 30% -33 = literal value 33% -34 = literal value 34% -40 = literal value 40% -50 = literal value 50% -60 = literal value 60% -70 = literal value 70% -75 = literal value 75% -80 = literal value 80% -90 = literal value 90% -100 = literal value 100% -third = 100% / 3 (Not supported in opera mini or IE8) -two-thirds = 100% / 1.5 (Not supported in opera mini or IE8) -auto = string value auto Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Width Scale */ .w1 { width: 1rem; } .w2 { width: 2rem; } .w3 { width: 4rem; } .w4 { width: 8rem; } .w5 { width: 16rem; } .w-10 { width: 10%; } .w-20 { width: 20%; } .w-25 { width: 25%; } .w-30 { width: 30%; } .w-33 { width: 33%; } .w-34 { width: 34%; } .w-40 { width: 40%; } .w-50 { width: 50%; } .w-60 { width: 60%; } .w-70 { width: 70%; } .w-75 { width: 75%; } .w-80 { width: 80%; } .w-90 { width: 90%; } .w-100 { width: 100%; } .w-third { width: 33.33333%; } .w-two-thirds { width: 66.66667%; } .w-auto { width: auto; } @media screen and (min-width: 30em) { .w1-ns { width: 1rem; } .w2-ns { width: 2rem; } .w3-ns { width: 4rem; } .w4-ns { width: 8rem; } .w5-ns { width: 16rem; } .w-10-ns { width: 10%; } .w-20-ns { width: 20%; } .w-25-ns { width: 25%; } .w-30-ns { width: 30%; } .w-33-ns { width: 33%; } .w-34-ns { width: 34%; } .w-40-ns { width: 40%; } .w-50-ns { width: 50%; } .w-60-ns { width: 60%; } .w-70-ns { width: 70%; } .w-75-ns { width: 75%; } .w-80-ns { width: 80%; } .w-90-ns { width: 90%; } .w-100-ns { width: 100%; } .w-third-ns { width: 33.33333%; } .w-two-thirds-ns { width: 66.66667%; } .w-auto-ns { width: auto; } } @media screen and (min-width: 30em) and (max-width: 60em) { .w1-m { width: 1rem; } .w2-m { width: 2rem; } .w3-m { width: 4rem; } .w4-m { width: 8rem; } .w5-m { width: 16rem; } .w-10-m { width: 10%; } .w-20-m { width: 20%; } .w-25-m { width: 25%; } .w-30-m { width: 30%; } .w-33-m { width: 33%; } .w-34-m { width: 34%; } .w-40-m { width: 40%; } .w-50-m { width: 50%; } .w-60-m { width: 60%; } .w-70-m { width: 70%; } .w-75-m { width: 75%; } .w-80-m { width: 80%; } .w-90-m { width: 90%; } .w-100-m { width: 100%; } .w-third-m { width: 33.33333%; } .w-two-thirds-m { width: 66.66667%; } .w-auto-m { width: auto; } } @media screen and (min-width: 60em) { .w1-l { width: 1rem; } .w2-l { width: 2rem; } .w3-l { width: 4rem; } .w4-l { width: 8rem; } .w5-l { width: 16rem; } .w-10-l { width: 10%; } .w-20-l { width: 20%; } .w-25-l { width: 25%; } .w-30-l { width: 30%; } .w-33-l { width: 33%; } .w-34-l { width: 34%; } .w-40-l { width: 40%; } .w-50-l { width: 50%; } .w-60-l { width: 60%; } .w-70-l { width: 70%; } .w-75-l { width: 75%; } .w-80-l { width: 80%; } .w-90-l { width: 90%; } .w-100-l { width: 100%; } .w-third-l { width: 33.33333%; } .w-two-thirds-l { width: 66.66667%; } .w-auto-l { width: auto; } } /* OVERFLOW Media Query Extensions: -ns = not-small -m = medium -l = large */ .overflow-visible { overflow: visible; } .overflow-hidden { overflow: hidden; } .overflow-scroll { overflow: scroll; } .overflow-auto { overflow: auto; } .overflow-x-visible { overflow-x: visible; } .overflow-x-hidden { overflow-x: hidden; } .overflow-x-scroll { overflow-x: scroll; } .overflow-x-auto { overflow-x: auto; } .overflow-y-visible { overflow-y: visible; } .overflow-y-hidden { overflow-y: hidden; } .overflow-y-scroll { overflow-y: scroll; } .overflow-y-auto { overflow-y: auto; } @media screen and (min-width: 30em) { .overflow-visible-ns { overflow: visible; } .overflow-hidden-ns { overflow: hidden; } .overflow-scroll-ns { overflow: scroll; } .overflow-auto-ns { overflow: auto; } .overflow-x-visible-ns { overflow-x: visible; } .overflow-x-hidden-ns { overflow-x: hidden; } .overflow-x-scroll-ns { overflow-x: scroll; } .overflow-x-auto-ns { overflow-x: auto; } .overflow-y-visible-ns { overflow-y: visible; } .overflow-y-hidden-ns { overflow-y: hidden; } .overflow-y-scroll-ns { overflow-y: scroll; } .overflow-y-auto-ns { overflow-y: auto; } } @media screen and (min-width: 30em) and (max-width: 60em) { .overflow-visible-m { overflow: visible; } .overflow-hidden-m { overflow: hidden; } .overflow-scroll-m { overflow: scroll; } .overflow-auto-m { overflow: auto; } .overflow-x-visible-m { overflow-x: visible; } .overflow-x-hidden-m { overflow-x: hidden; } .overflow-x-scroll-m { overflow-x: scroll; } .overflow-x-auto-m { overflow-x: auto; } .overflow-y-visible-m { overflow-y: visible; } .overflow-y-hidden-m { overflow-y: hidden; } .overflow-y-scroll-m { overflow-y: scroll; } .overflow-y-auto-m { overflow-y: auto; } } @media screen and (min-width: 60em) { .overflow-visible-l { overflow: visible; } .overflow-hidden-l { overflow: hidden; } .overflow-scroll-l { overflow: scroll; } .overflow-auto-l { overflow: auto; } .overflow-x-visible-l { overflow-x: visible; } .overflow-x-hidden-l { overflow-x: hidden; } .overflow-x-scroll-l { overflow-x: scroll; } .overflow-x-auto-l { overflow-x: auto; } .overflow-y-visible-l { overflow-y: visible; } .overflow-y-hidden-l { overflow-y: hidden; } .overflow-y-scroll-l { overflow-y: scroll; } .overflow-y-auto-l { overflow-y: auto; } } /* POSITIONING Docs: http://tachyons.io/docs/layout/position/ Media Query Extensions: -ns = not-small -m = medium -l = large */ .static { position: static; } .relative { position: relative; } .absolute { position: absolute; } .fixed { position: fixed; } @media screen and (min-width: 30em) { .static-ns { position: static; } .relative-ns { position: relative; } .absolute-ns { position: absolute; } .fixed-ns { position: fixed; } } @media screen and (min-width: 30em) and (max-width: 60em) { .static-m { position: static; } .relative-m { position: relative; } .absolute-m { position: absolute; } .fixed-m { position: fixed; } } @media screen and (min-width: 60em) { .static-l { position: static; } .relative-l { position: relative; } .absolute-l { position: absolute; } .fixed-l { position: fixed; } } /* OPACITY Docs: http://tachyons.io/docs/themes/opacity/ */ .o-100 { opacity: 1; } .o-90 { opacity: .9; } .o-80 { opacity: .8; } .o-70 { opacity: .7; } .o-60 { opacity: .6; } .o-50 { opacity: .5; } .o-40 { opacity: .4; } .o-30 { opacity: .3; } .o-20 { opacity: .2; } .o-10 { opacity: .1; } .o-05 { opacity: .05; } .o-025 { opacity: .025; } .o-0 { opacity: 0; } /*@import 'tachyons/src/_rotations';*/ /* SKINS Docs: http://tachyons.io/docs/themes/skins/ Classes for setting foreground and background colors on elements. If you haven't declared a border color, but set border on an element, it will be set to the current text color. */ /* Text colors */ .black-90 { color: rgba(0, 0, 0, .9); } .black-80 { color: rgba(0, 0, 0, .8); } .black-70 { color: rgba(0, 0, 0, .7); } .black-60 { color: rgba(0, 0, 0, .6); } .black-50 { color: rgba(0, 0, 0, .5); } .black-40 { color: rgba(0, 0, 0, .4); } .black-30 { color: rgba(0, 0, 0, .3); } .black-20 { color: rgba(0, 0, 0, .2); } .black-10 { color: rgba(0, 0, 0, .1); } .black-05 { color: rgba(0, 0, 0, .05); } .white-90 { color: rgba(255, 255, 255, .9); } .white-80 { color: rgba(255, 255, 255, .8); } .white-70 { color: rgba(255, 255, 255, .7); } .white-60 { color: rgba(255, 255, 255, .6); } .white-50 { color: rgba(255, 255, 255, .5); } .white-40 { color: rgba(255, 255, 255, .4); } .white-30 { color: rgba(255, 255, 255, .3); } .white-20 { color: rgba(255, 255, 255, .2); } .white-10 { color: rgba(255, 255, 255, .1); } .black { color: #000; } .near-black { color: #111; } .dark-gray { color: #333; } .mid-gray { color: #555; } .gray { color: #777; } .silver { color: #999; } .light-silver { color: #aaa; } .moon-gray { color: #ccc; } .light-gray { color: #eee; } .near-white { color: #f4f4f4; } .white { color: #fff; } .dark-red { color: #e7040f; } .red { color: #ff4136; } .light-red { color: #ff725c; } .orange { color: #ff6300; } .gold { color: #ffb700; } .yellow { color: #ffd700; } .light-yellow { color: #fbf1a9; } .purple { color: #5e2ca5; } .light-purple { color: #a463f2; } .dark-pink { color: #d5008f; } .hot-pink { color: #ff41b4; } .pink { color: #ff80cc; } .light-pink { color: #ffa3d7; } .dark-green { color: #137752; } .green { color: #19a974; } .light-green { color: #9eebcf; } .navy { color: #001b44; } .dark-blue { color: #00449e; } .blue { color: #0594CB; } .light-blue { color: #96ccff; } .lightest-blue { color: #cdecff; } .washed-blue { color: #f6fffe; } .washed-green { color: #e8fdf5; } .washed-yellow { color: #fffceb; } .washed-red { color: #ffdfdf; } .color-inherit { color: inherit; } .bg-black-90 { background-color: rgba(0, 0, 0, .9); } .bg-black-80 { background-color: rgba(0, 0, 0, .8); } .bg-black-70 { background-color: rgba(0, 0, 0, .7); } .bg-black-60 { background-color: rgba(0, 0, 0, .6); } .bg-black-50 { background-color: rgba(0, 0, 0, .5); } .bg-black-40 { background-color: rgba(0, 0, 0, .4); } .bg-black-30 { background-color: rgba(0, 0, 0, .3); } .bg-black-20 { background-color: rgba(0, 0, 0, .2); } .bg-black-10 { background-color: rgba(0, 0, 0, .1); } .bg-black-05 { background-color: rgba(0, 0, 0, .05); } .bg-white-90 { background-color: rgba(255, 255, 255, .9); } .bg-white-80 { background-color: rgba(255, 255, 255, .8); } .bg-white-70 { background-color: rgba(255, 255, 255, .7); } .bg-white-60 { background-color: rgba(255, 255, 255, .6); } .bg-white-50 { background-color: rgba(255, 255, 255, .5); } .bg-white-40 { background-color: rgba(255, 255, 255, .4); } .bg-white-30 { background-color: rgba(255, 255, 255, .3); } .bg-white-20 { background-color: rgba(255, 255, 255, .2); } .bg-white-10 { background-color: rgba(255, 255, 255, .1); } /* Background colors */ .bg-black { background-color: #000; } .bg-near-black { background-color: #111; } .bg-dark-gray { background-color: #333; } .bg-mid-gray { background-color: #555; } .bg-gray { background-color: #777; } .bg-silver { background-color: #999; } .bg-light-silver { background-color: #aaa; } .bg-moon-gray { background-color: #ccc; } .bg-light-gray { background-color: #eee; } .bg-near-white { background-color: #f4f4f4; } .bg-white { background-color: #fff; } .bg-transparent { background-color: transparent; } .bg-dark-red { background-color: #e7040f; } .bg-red { background-color: #ff4136; } .bg-light-red { background-color: #ff725c; } .bg-orange { background-color: #ff6300; } .bg-gold { background-color: #ffb700; } .bg-yellow { background-color: #ffd700; } .bg-light-yellow { background-color: #fbf1a9; } .bg-purple { background-color: #5e2ca5; } .bg-light-purple { background-color: #a463f2; } .bg-dark-pink { background-color: #d5008f; } .bg-hot-pink { background-color: #ff41b4; } .bg-pink { background-color: #ff80cc; } .bg-light-pink { background-color: #ffa3d7; } .bg-dark-green { background-color: #137752; } .bg-green { background-color: #19a974; } .bg-light-green { background-color: #9eebcf; } .bg-navy { background-color: #001b44; } .bg-dark-blue { background-color: #00449e; } .bg-blue { background-color: #0594CB; } .bg-light-blue { background-color: #96ccff; } .bg-lightest-blue { background-color: #cdecff; } .bg-washed-blue { background-color: #f6fffe; } .bg-washed-green { background-color: #e8fdf5; } .bg-washed-yellow { background-color: #fffceb; } .bg-washed-red { background-color: #ffdfdf; } .bg-inherit { background-color: inherit; } /* SKINS:PSEUDO Customize the color of an element when it is focused or hovered over. */ .hover-black:hover, .hover-black:focus { color: #000; } .hover-near-black:hover, .hover-near-black:focus { color: #111; } .hover-dark-gray:hover, .hover-dark-gray:focus { color: #333; } .hover-mid-gray:hover, .hover-mid-gray:focus { color: #555; } .hover-gray:hover, .hover-gray:focus { color: #777; } .hover-silver:hover, .hover-silver:focus { color: #999; } .hover-light-silver:hover, .hover-light-silver:focus { color: #aaa; } .hover-moon-gray:hover, .hover-moon-gray:focus { color: #ccc; } .hover-light-gray:hover, .hover-light-gray:focus { color: #eee; } .hover-near-white:hover, .hover-near-white:focus { color: #f4f4f4; } .hover-white:hover, .hover-white:focus { color: #fff; } .hover-black-90:hover, .hover-black-90:focus { color: rgba(0, 0, 0, .9); } .hover-black-80:hover, .hover-black-80:focus { color: rgba(0, 0, 0, .8); } .hover-black-70:hover, .hover-black-70:focus { color: rgba(0, 0, 0, .7); } .hover-black-60:hover, .hover-black-60:focus { color: rgba(0, 0, 0, .6); } .hover-black-50:hover, .hover-black-50:focus { color: rgba(0, 0, 0, .5); } .hover-black-40:hover, .hover-black-40:focus { color: rgba(0, 0, 0, .4); } .hover-black-30:hover, .hover-black-30:focus { color: rgba(0, 0, 0, .3); } .hover-black-20:hover, .hover-black-20:focus { color: rgba(0, 0, 0, .2); } .hover-black-10:hover, .hover-black-10:focus { color: rgba(0, 0, 0, .1); } .hover-white-90:hover, .hover-white-90:focus { color: rgba(255, 255, 255, .9); } .hover-white-80:hover, .hover-white-80:focus { color: rgba(255, 255, 255, .8); } .hover-white-70:hover, .hover-white-70:focus { color: rgba(255, 255, 255, .7); } .hover-white-60:hover, .hover-white-60:focus { color: rgba(255, 255, 255, .6); } .hover-white-50:hover, .hover-white-50:focus { color: rgba(255, 255, 255, .5); } .hover-white-40:hover, .hover-white-40:focus { color: rgba(255, 255, 255, .4); } .hover-white-30:hover, .hover-white-30:focus { color: rgba(255, 255, 255, .3); } .hover-white-20:hover, .hover-white-20:focus { color: rgba(255, 255, 255, .2); } .hover-white-10:hover, .hover-white-10:focus { color: rgba(255, 255, 255, .1); } .hover-inherit:hover, .hover-inherit:focus { color: inherit; } .hover-bg-black:hover, .hover-bg-black:focus { background-color: #000; } .hover-bg-near-black:hover, .hover-bg-near-black:focus { background-color: #111; } .hover-bg-dark-gray:hover, .hover-bg-dark-gray:focus { background-color: #333; } .hover-bg-mid-gray:hover, .hover-bg-mid-gray:focus { background-color: #555; } .hover-bg-gray:hover, .hover-bg-gray:focus { background-color: #777; } .hover-bg-silver:hover, .hover-bg-silver:focus { background-color: #999; } .hover-bg-light-silver:hover, .hover-bg-light-silver:focus { background-color: #aaa; } .hover-bg-moon-gray:hover, .hover-bg-moon-gray:focus { background-color: #ccc; } .hover-bg-light-gray:hover, .hover-bg-light-gray:focus { background-color: #eee; } .hover-bg-near-white:hover, .hover-bg-near-white:focus { background-color: #f4f4f4; } .hover-bg-white:hover, .hover-bg-white:focus { background-color: #fff; } .hover-bg-transparent:hover, .hover-bg-transparent:focus { background-color: transparent; } .hover-bg-black-90:hover, .hover-bg-black-90:focus { background-color: rgba(0, 0, 0, .9); } .hover-bg-black-80:hover, .hover-bg-black-80:focus { background-color: rgba(0, 0, 0, .8); } .hover-bg-black-70:hover, .hover-bg-black-70:focus { background-color: rgba(0, 0, 0, .7); } .hover-bg-black-60:hover, .hover-bg-black-60:focus { background-color: rgba(0, 0, 0, .6); } .hover-bg-black-50:hover, .hover-bg-black-50:focus { background-color: rgba(0, 0, 0, .5); } .hover-bg-black-40:hover, .hover-bg-black-40:focus { background-color: rgba(0, 0, 0, .4); } .hover-bg-black-30:hover, .hover-bg-black-30:focus { background-color: rgba(0, 0, 0, .3); } .hover-bg-black-20:hover, .hover-bg-black-20:focus { background-color: rgba(0, 0, 0, .2); } .hover-bg-black-10:hover, .hover-bg-black-10:focus { background-color: rgba(0, 0, 0, .1); } .hover-bg-white-90:hover, .hover-bg-white-90:focus { background-color: rgba(255, 255, 255, .9); } .hover-bg-white-80:hover, .hover-bg-white-80:focus { background-color: rgba(255, 255, 255, .8); } .hover-bg-white-70:hover, .hover-bg-white-70:focus { background-color: rgba(255, 255, 255, .7); } .hover-bg-white-60:hover, .hover-bg-white-60:focus { background-color: rgba(255, 255, 255, .6); } .hover-bg-white-50:hover, .hover-bg-white-50:focus { background-color: rgba(255, 255, 255, .5); } .hover-bg-white-40:hover, .hover-bg-white-40:focus { background-color: rgba(255, 255, 255, .4); } .hover-bg-white-30:hover, .hover-bg-white-30:focus { background-color: rgba(255, 255, 255, .3); } .hover-bg-white-20:hover, .hover-bg-white-20:focus { background-color: rgba(255, 255, 255, .2); } .hover-bg-white-10:hover, .hover-bg-white-10:focus { background-color: rgba(255, 255, 255, .1); } .hover-dark-red:hover, .hover-dark-red:focus { color: #e7040f; } .hover-red:hover, .hover-red:focus { color: #ff4136; } .hover-light-red:hover, .hover-light-red:focus { color: #ff725c; } .hover-orange:hover, .hover-orange:focus { color: #ff6300; } .hover-gold:hover, .hover-gold:focus { color: #ffb700; } .hover-yellow:hover, .hover-yellow:focus { color: #ffd700; } .hover-light-yellow:hover, .hover-light-yellow:focus { color: #fbf1a9; } .hover-purple:hover, .hover-purple:focus { color: #5e2ca5; } .hover-light-purple:hover, .hover-light-purple:focus { color: #a463f2; } .hover-dark-pink:hover, .hover-dark-pink:focus { color: #d5008f; } .hover-hot-pink:hover, .hover-hot-pink:focus { color: #ff41b4; } .hover-pink:hover, .hover-pink:focus { color: #ff80cc; } .hover-light-pink:hover, .hover-light-pink:focus { color: #ffa3d7; } .hover-dark-green:hover, .hover-dark-green:focus { color: #137752; } .hover-green:hover, .hover-green:focus { color: #19a974; } .hover-light-green:hover, .hover-light-green:focus { color: #9eebcf; } .hover-navy:hover, .hover-navy:focus { color: #001b44; } .hover-dark-blue:hover, .hover-dark-blue:focus { color: #00449e; } .hover-blue:hover, .hover-blue:focus { color: #0594CB; } .hover-light-blue:hover, .hover-light-blue:focus { color: #96ccff; } .hover-lightest-blue:hover, .hover-lightest-blue:focus { color: #cdecff; } .hover-washed-blue:hover, .hover-washed-blue:focus { color: #f6fffe; } .hover-washed-green:hover, .hover-washed-green:focus { color: #e8fdf5; } .hover-washed-yellow:hover, .hover-washed-yellow:focus { color: #fffceb; } .hover-washed-red:hover, .hover-washed-red:focus { color: #ffdfdf; } .hover-bg-dark-red:hover, .hover-bg-dark-red:focus { background-color: #e7040f; } .hover-bg-red:hover, .hover-bg-red:focus { background-color: #ff4136; } .hover-bg-light-red:hover, .hover-bg-light-red:focus { background-color: #ff725c; } .hover-bg-orange:hover, .hover-bg-orange:focus { background-color: #ff6300; } .hover-bg-gold:hover, .hover-bg-gold:focus { background-color: #ffb700; } .hover-bg-yellow:hover, .hover-bg-yellow:focus { background-color: #ffd700; } .hover-bg-light-yellow:hover, .hover-bg-light-yellow:focus { background-color: #fbf1a9; } .hover-bg-purple:hover, .hover-bg-purple:focus { background-color: #5e2ca5; } .hover-bg-light-purple:hover, .hover-bg-light-purple:focus { background-color: #a463f2; } .hover-bg-dark-pink:hover, .hover-bg-dark-pink:focus { background-color: #d5008f; } .hover-bg-hot-pink:hover, .hover-bg-hot-pink:focus { background-color: #ff41b4; } .hover-bg-pink:hover, .hover-bg-pink:focus { background-color: #ff80cc; } .hover-bg-light-pink:hover, .hover-bg-light-pink:focus { background-color: #ffa3d7; } .hover-bg-dark-green:hover, .hover-bg-dark-green:focus { background-color: #137752; } .hover-bg-green:hover, .hover-bg-green:focus { background-color: #19a974; } .hover-bg-light-green:hover, .hover-bg-light-green:focus { background-color: #9eebcf; } .hover-bg-navy:hover, .hover-bg-navy:focus { background-color: #001b44; } .hover-bg-dark-blue:hover, .hover-bg-dark-blue:focus { background-color: #00449e; } .hover-bg-blue:hover, .hover-bg-blue:focus { background-color: #0594CB; } .hover-bg-light-blue:hover, .hover-bg-light-blue:focus { background-color: #96ccff; } .hover-bg-lightest-blue:hover, .hover-bg-lightest-blue:focus { background-color: #cdecff; } .hover-bg-washed-blue:hover, .hover-bg-washed-blue:focus { background-color: #f6fffe; } .hover-bg-washed-green:hover, .hover-bg-washed-green:focus { background-color: #e8fdf5; } .hover-bg-washed-yellow:hover, .hover-bg-washed-yellow:focus { background-color: #fffceb; } .hover-bg-washed-red:hover, .hover-bg-washed-red:focus { background-color: #ffdfdf; } .hover-bg-inherit:hover, .hover-bg-inherit:focus { background-color: inherit; } /* Variables */ /* SPACING Docs: http://tachyons.io/docs/layout/spacing/ An eight step powers of two scale ranging from 0 to 16rem. Base: p = padding m = margin Modifiers: a = all h = horizontal v = vertical t = top r = right b = bottom l = left 0 = none 1 = 1st step in spacing scale 2 = 2nd step in spacing scale 3 = 3rd step in spacing scale 4 = 4th step in spacing scale 5 = 5th step in spacing scale 6 = 6th step in spacing scale 7 = 7th step in spacing scale Media Query Extensions: -ns = not-small -m = medium -l = large */ .pa0 { padding: 0; } .pa1 { padding: .25rem; } .pa2 { padding: .5rem; } .pa3 { padding: 1rem; } .pa4 { padding: 2rem; } .pa5 { padding: 4rem; } .pa6 { padding: 8rem; } .pa7 { padding: 16rem; } .pl0 { padding-left: 0; } .pl1 { padding-left: .25rem; } .pl2 { padding-left: .5rem; } .pl3 { padding-left: 1rem; } .pl4 { padding-left: 2rem; } .pl5 { padding-left: 4rem; } .pl6 { padding-left: 8rem; } .pl7 { padding-left: 16rem; } .pr0 { padding-right: 0; } .pr1 { padding-right: .25rem; } .pr2 { padding-right: .5rem; } .pr3 { padding-right: 1rem; } .pr4 { padding-right: 2rem; } .pr5 { padding-right: 4rem; } .pr6 { padding-right: 8rem; } .pr7 { padding-right: 16rem; } .pb0 { padding-bottom: 0; } .pb1 { padding-bottom: .25rem; } .pb2 { padding-bottom: .5rem; } .pb3 { padding-bottom: 1rem; } .pb4 { padding-bottom: 2rem; } .pb5 { padding-bottom: 4rem; } .pb6 { padding-bottom: 8rem; } .pb7 { padding-bottom: 16rem; } .pt0 { padding-top: 0; } .pt1 { padding-top: .25rem; } .pt2 { padding-top: .5rem; } .pt3 { padding-top: 1rem; } .pt4 { padding-top: 2rem; } .pt5 { padding-top: 4rem; } .pt6 { padding-top: 8rem; } .pt7 { padding-top: 16rem; } .pv0 { padding-top: 0; padding-bottom: 0; } .pv1 { padding-top: .25rem; padding-bottom: .25rem; } .pv2 { padding-top: .5rem; padding-bottom: .5rem; } .pv3 { padding-top: 1rem; padding-bottom: 1rem; } .pv4 { padding-top: 2rem; padding-bottom: 2rem; } .pv5 { padding-top: 4rem; padding-bottom: 4rem; } .pv6 { padding-top: 8rem; padding-bottom: 8rem; } .pv7 { padding-top: 16rem; padding-bottom: 16rem; } .ph0 { padding-left: 0; padding-right: 0; } .ph1 { padding-left: .25rem; padding-right: .25rem; } .ph2 { padding-left: .5rem; padding-right: .5rem; } .ph3 { padding-left: 1rem; padding-right: 1rem; } .ph4 { padding-left: 2rem; padding-right: 2rem; } .ph5 { padding-left: 4rem; padding-right: 4rem; } .ph6 { padding-left: 8rem; padding-right: 8rem; } .ph7 { padding-left: 16rem; padding-right: 16rem; } .ma0 { margin: 0; } .ma1 { margin: .25rem; } .ma2 { margin: .5rem; } .ma3 { margin: 1rem; } .ma4 { margin: 2rem; } .ma5 { margin: 4rem; } .ma6 { margin: 8rem; } .ma7 { margin: 16rem; } .ml0 { margin-left: 0; } .ml1 { margin-left: .25rem; } .ml2 { margin-left: .5rem; } .ml3 { margin-left: 1rem; } .ml4 { margin-left: 2rem; } .ml5 { margin-left: 4rem; } .ml6 { margin-left: 8rem; } .ml7 { margin-left: 16rem; } .mr0 { margin-right: 0; } .mr1 { margin-right: .25rem; } .mr2 { margin-right: .5rem; } .mr3 { margin-right: 1rem; } .mr4 { margin-right: 2rem; } .mr5 { margin-right: 4rem; } .mr6 { margin-right: 8rem; } .mr7 { margin-right: 16rem; } .mb0 { margin-bottom: 0; } .mb1 { margin-bottom: .25rem; } .mb2 { margin-bottom: .5rem; } .mb3 { margin-bottom: 1rem; } .mb4 { margin-bottom: 2rem; } .mb5 { margin-bottom: 4rem; } .mb6 { margin-bottom: 8rem; } .mb7 { margin-bottom: 16rem; } .mt0 { margin-top: 0; } .mt1 { margin-top: .25rem; } .mt2 { margin-top: .5rem; } .mt3 { margin-top: 1rem; } .mt4 { margin-top: 2rem; } .mt5 { margin-top: 4rem; } .mt6 { margin-top: 8rem; } .mt7 { margin-top: 16rem; } .mv0 { margin-top: 0; margin-bottom: 0; } .mv1 { margin-top: .25rem; margin-bottom: .25rem; } .mv2 { margin-top: .5rem; margin-bottom: .5rem; } .mv3 { margin-top: 1rem; margin-bottom: 1rem; } .mv4 { margin-top: 2rem; margin-bottom: 2rem; } .mv5 { margin-top: 4rem; margin-bottom: 4rem; } .mv6 { margin-top: 8rem; margin-bottom: 8rem; } .mv7 { margin-top: 16rem; margin-bottom: 16rem; } .mh0 { margin-left: 0; margin-right: 0; } .mh1 { margin-left: .25rem; margin-right: .25rem; } .mh2 { margin-left: .5rem; margin-right: .5rem; } .mh3 { margin-left: 1rem; margin-right: 1rem; } .mh4 { margin-left: 2rem; margin-right: 2rem; } .mh5 { margin-left: 4rem; margin-right: 4rem; } .mh6 { margin-left: 8rem; margin-right: 8rem; } .mh7 { margin-left: 16rem; margin-right: 16rem; } @media screen and (min-width: 30em) { .pa0-ns { padding: 0; } .pa1-ns { padding: .25rem; } .pa2-ns { padding: .5rem; } .pa3-ns { padding: 1rem; } .pa4-ns { padding: 2rem; } .pa5-ns { padding: 4rem; } .pa6-ns { padding: 8rem; } .pa7-ns { padding: 16rem; } .pl0-ns { padding-left: 0; } .pl1-ns { padding-left: .25rem; } .pl2-ns { padding-left: .5rem; } .pl3-ns { padding-left: 1rem; } .pl4-ns { padding-left: 2rem; } .pl5-ns { padding-left: 4rem; } .pl6-ns { padding-left: 8rem; } .pl7-ns { padding-left: 16rem; } .pr0-ns { padding-right: 0; } .pr1-ns { padding-right: .25rem; } .pr2-ns { padding-right: .5rem; } .pr3-ns { padding-right: 1rem; } .pr4-ns { padding-right: 2rem; } .pr5-ns { padding-right: 4rem; } .pr6-ns { padding-right: 8rem; } .pr7-ns { padding-right: 16rem; } .pb0-ns { padding-bottom: 0; } .pb1-ns { padding-bottom: .25rem; } .pb2-ns { padding-bottom: .5rem; } .pb3-ns { padding-bottom: 1rem; } .pb4-ns { padding-bottom: 2rem; } .pb5-ns { padding-bottom: 4rem; } .pb6-ns { padding-bottom: 8rem; } .pb7-ns { padding-bottom: 16rem; } .pt0-ns { padding-top: 0; } .pt1-ns { padding-top: .25rem; } .pt2-ns { padding-top: .5rem; } .pt3-ns { padding-top: 1rem; } .pt4-ns { padding-top: 2rem; } .pt5-ns { padding-top: 4rem; } .pt6-ns { padding-top: 8rem; } .pt7-ns { padding-top: 16rem; } .pv0-ns { padding-top: 0; padding-bottom: 0; } .pv1-ns { padding-top: .25rem; padding-bottom: .25rem; } .pv2-ns { padding-top: .5rem; padding-bottom: .5rem; } .pv3-ns { padding-top: 1rem; padding-bottom: 1rem; } .pv4-ns { padding-top: 2rem; padding-bottom: 2rem; } .pv5-ns { padding-top: 4rem; padding-bottom: 4rem; } .pv6-ns { padding-top: 8rem; padding-bottom: 8rem; } .pv7-ns { padding-top: 16rem; padding-bottom: 16rem; } .ph0-ns { padding-left: 0; padding-right: 0; } .ph1-ns { padding-left: .25rem; padding-right: .25rem; } .ph2-ns { padding-left: .5rem; padding-right: .5rem; } .ph3-ns { padding-left: 1rem; padding-right: 1rem; } .ph4-ns { padding-left: 2rem; padding-right: 2rem; } .ph5-ns { padding-left: 4rem; padding-right: 4rem; } .ph6-ns { padding-left: 8rem; padding-right: 8rem; } .ph7-ns { padding-left: 16rem; padding-right: 16rem; } .ma0-ns { margin: 0; } .ma1-ns { margin: .25rem; } .ma2-ns { margin: .5rem; } .ma3-ns { margin: 1rem; } .ma4-ns { margin: 2rem; } .ma5-ns { margin: 4rem; } .ma6-ns { margin: 8rem; } .ma7-ns { margin: 16rem; } .ml0-ns { margin-left: 0; } .ml1-ns { margin-left: .25rem; } .ml2-ns { margin-left: .5rem; } .ml3-ns { margin-left: 1rem; } .ml4-ns { margin-left: 2rem; } .ml5-ns { margin-left: 4rem; } .ml6-ns { margin-left: 8rem; } .ml7-ns { margin-left: 16rem; } .mr0-ns { margin-right: 0; } .mr1-ns { margin-right: .25rem; } .mr2-ns { margin-right: .5rem; } .mr3-ns { margin-right: 1rem; } .mr4-ns { margin-right: 2rem; } .mr5-ns { margin-right: 4rem; } .mr6-ns { margin-right: 8rem; } .mr7-ns { margin-right: 16rem; } .mb0-ns { margin-bottom: 0; } .mb1-ns { margin-bottom: .25rem; } .mb2-ns { margin-bottom: .5rem; } .mb3-ns { margin-bottom: 1rem; } .mb4-ns { margin-bottom: 2rem; } .mb5-ns { margin-bottom: 4rem; } .mb6-ns { margin-bottom: 8rem; } .mb7-ns { margin-bottom: 16rem; } .mt0-ns { margin-top: 0; } .mt1-ns { margin-top: .25rem; } .mt2-ns { margin-top: .5rem; } .mt3-ns { margin-top: 1rem; } .mt4-ns { margin-top: 2rem; } .mt5-ns { margin-top: 4rem; } .mt6-ns { margin-top: 8rem; } .mt7-ns { margin-top: 16rem; } .mv0-ns { margin-top: 0; margin-bottom: 0; } .mv1-ns { margin-top: .25rem; margin-bottom: .25rem; } .mv2-ns { margin-top: .5rem; margin-bottom: .5rem; } .mv3-ns { margin-top: 1rem; margin-bottom: 1rem; } .mv4-ns { margin-top: 2rem; margin-bottom: 2rem; } .mv5-ns { margin-top: 4rem; margin-bottom: 4rem; } .mv6-ns { margin-top: 8rem; margin-bottom: 8rem; } .mv7-ns { margin-top: 16rem; margin-bottom: 16rem; } .mh0-ns { margin-left: 0; margin-right: 0; } .mh1-ns { margin-left: .25rem; margin-right: .25rem; } .mh2-ns { margin-left: .5rem; margin-right: .5rem; } .mh3-ns { margin-left: 1rem; margin-right: 1rem; } .mh4-ns { margin-left: 2rem; margin-right: 2rem; } .mh5-ns { margin-left: 4rem; margin-right: 4rem; } .mh6-ns { margin-left: 8rem; margin-right: 8rem; } .mh7-ns { margin-left: 16rem; margin-right: 16rem; } } @media screen and (min-width: 30em) and (max-width: 60em) { .pa0-m { padding: 0; } .pa1-m { padding: .25rem; } .pa2-m { padding: .5rem; } .pa3-m { padding: 1rem; } .pa4-m { padding: 2rem; } .pa5-m { padding: 4rem; } .pa6-m { padding: 8rem; } .pa7-m { padding: 16rem; } .pl0-m { padding-left: 0; } .pl1-m { padding-left: .25rem; } .pl2-m { padding-left: .5rem; } .pl3-m { padding-left: 1rem; } .pl4-m { padding-left: 2rem; } .pl5-m { padding-left: 4rem; } .pl6-m { padding-left: 8rem; } .pl7-m { padding-left: 16rem; } .pr0-m { padding-right: 0; } .pr1-m { padding-right: .25rem; } .pr2-m { padding-right: .5rem; } .pr3-m { padding-right: 1rem; } .pr4-m { padding-right: 2rem; } .pr5-m { padding-right: 4rem; } .pr6-m { padding-right: 8rem; } .pr7-m { padding-right: 16rem; } .pb0-m { padding-bottom: 0; } .pb1-m { padding-bottom: .25rem; } .pb2-m { padding-bottom: .5rem; } .pb3-m { padding-bottom: 1rem; } .pb4-m { padding-bottom: 2rem; } .pb5-m { padding-bottom: 4rem; } .pb6-m { padding-bottom: 8rem; } .pb7-m { padding-bottom: 16rem; } .pt0-m { padding-top: 0; } .pt1-m { padding-top: .25rem; } .pt2-m { padding-top: .5rem; } .pt3-m { padding-top: 1rem; } .pt4-m { padding-top: 2rem; } .pt5-m { padding-top: 4rem; } .pt6-m { padding-top: 8rem; } .pt7-m { padding-top: 16rem; } .pv0-m { padding-top: 0; padding-bottom: 0; } .pv1-m { padding-top: .25rem; padding-bottom: .25rem; } .pv2-m { padding-top: .5rem; padding-bottom: .5rem; } .pv3-m { padding-top: 1rem; padding-bottom: 1rem; } .pv4-m { padding-top: 2rem; padding-bottom: 2rem; } .pv5-m { padding-top: 4rem; padding-bottom: 4rem; } .pv6-m { padding-top: 8rem; padding-bottom: 8rem; } .pv7-m { padding-top: 16rem; padding-bottom: 16rem; } .ph0-m { padding-left: 0; padding-right: 0; } .ph1-m { padding-left: .25rem; padding-right: .25rem; } .ph2-m { padding-left: .5rem; padding-right: .5rem; } .ph3-m { padding-left: 1rem; padding-right: 1rem; } .ph4-m { padding-left: 2rem; padding-right: 2rem; } .ph5-m { padding-left: 4rem; padding-right: 4rem; } .ph6-m { padding-left: 8rem; padding-right: 8rem; } .ph7-m { padding-left: 16rem; padding-right: 16rem; } .ma0-m { margin: 0; } .ma1-m { margin: .25rem; } .ma2-m { margin: .5rem; } .ma3-m { margin: 1rem; } .ma4-m { margin: 2rem; } .ma5-m { margin: 4rem; } .ma6-m { margin: 8rem; } .ma7-m { margin: 16rem; } .ml0-m { margin-left: 0; } .ml1-m { margin-left: .25rem; } .ml2-m { margin-left: .5rem; } .ml3-m { margin-left: 1rem; } .ml4-m { margin-left: 2rem; } .ml5-m { margin-left: 4rem; } .ml6-m { margin-left: 8rem; } .ml7-m { margin-left: 16rem; } .mr0-m { margin-right: 0; } .mr1-m { margin-right: .25rem; } .mr2-m { margin-right: .5rem; } .mr3-m { margin-right: 1rem; } .mr4-m { margin-right: 2rem; } .mr5-m { margin-right: 4rem; } .mr6-m { margin-right: 8rem; } .mr7-m { margin-right: 16rem; } .mb0-m { margin-bottom: 0; } .mb1-m { margin-bottom: .25rem; } .mb2-m { margin-bottom: .5rem; } .mb3-m { margin-bottom: 1rem; } .mb4-m { margin-bottom: 2rem; } .mb5-m { margin-bottom: 4rem; } .mb6-m { margin-bottom: 8rem; } .mb7-m { margin-bottom: 16rem; } .mt0-m { margin-top: 0; } .mt1-m { margin-top: .25rem; } .mt2-m { margin-top: .5rem; } .mt3-m { margin-top: 1rem; } .mt4-m { margin-top: 2rem; } .mt5-m { margin-top: 4rem; } .mt6-m { margin-top: 8rem; } .mt7-m { margin-top: 16rem; } .mv0-m { margin-top: 0; margin-bottom: 0; } .mv1-m { margin-top: .25rem; margin-bottom: .25rem; } .mv2-m { margin-top: .5rem; margin-bottom: .5rem; } .mv3-m { margin-top: 1rem; margin-bottom: 1rem; } .mv4-m { margin-top: 2rem; margin-bottom: 2rem; } .mv5-m { margin-top: 4rem; margin-bottom: 4rem; } .mv6-m { margin-top: 8rem; margin-bottom: 8rem; } .mv7-m { margin-top: 16rem; margin-bottom: 16rem; } .mh0-m { margin-left: 0; margin-right: 0; } .mh1-m { margin-left: .25rem; margin-right: .25rem; } .mh2-m { margin-left: .5rem; margin-right: .5rem; } .mh3-m { margin-left: 1rem; margin-right: 1rem; } .mh4-m { margin-left: 2rem; margin-right: 2rem; } .mh5-m { margin-left: 4rem; margin-right: 4rem; } .mh6-m { margin-left: 8rem; margin-right: 8rem; } .mh7-m { margin-left: 16rem; margin-right: 16rem; } } @media screen and (min-width: 60em) { .pa0-l { padding: 0; } .pa1-l { padding: .25rem; } .pa2-l { padding: .5rem; } .pa3-l { padding: 1rem; } .pa4-l { padding: 2rem; } .pa5-l { padding: 4rem; } .pa6-l { padding: 8rem; } .pa7-l { padding: 16rem; } .pl0-l { padding-left: 0; } .pl1-l { padding-left: .25rem; } .pl2-l { padding-left: .5rem; } .pl3-l { padding-left: 1rem; } .pl4-l { padding-left: 2rem; } .pl5-l { padding-left: 4rem; } .pl6-l { padding-left: 8rem; } .pl7-l { padding-left: 16rem; } .pr0-l { padding-right: 0; } .pr1-l { padding-right: .25rem; } .pr2-l { padding-right: .5rem; } .pr3-l { padding-right: 1rem; } .pr4-l { padding-right: 2rem; } .pr5-l { padding-right: 4rem; } .pr6-l { padding-right: 8rem; } .pr7-l { padding-right: 16rem; } .pb0-l { padding-bottom: 0; } .pb1-l { padding-bottom: .25rem; } .pb2-l { padding-bottom: .5rem; } .pb3-l { padding-bottom: 1rem; } .pb4-l { padding-bottom: 2rem; } .pb5-l { padding-bottom: 4rem; } .pb6-l { padding-bottom: 8rem; } .pb7-l { padding-bottom: 16rem; } .pt0-l { padding-top: 0; } .pt1-l { padding-top: .25rem; } .pt2-l { padding-top: .5rem; } .pt3-l { padding-top: 1rem; } .pt4-l { padding-top: 2rem; } .pt5-l { padding-top: 4rem; } .pt6-l { padding-top: 8rem; } .pt7-l { padding-top: 16rem; } .pv0-l { padding-top: 0; padding-bottom: 0; } .pv1-l { padding-top: .25rem; padding-bottom: .25rem; } .pv2-l { padding-top: .5rem; padding-bottom: .5rem; } .pv3-l { padding-top: 1rem; padding-bottom: 1rem; } .pv4-l { padding-top: 2rem; padding-bottom: 2rem; } .pv5-l { padding-top: 4rem; padding-bottom: 4rem; } .pv6-l { padding-top: 8rem; padding-bottom: 8rem; } .pv7-l { padding-top: 16rem; padding-bottom: 16rem; } .ph0-l { padding-left: 0; padding-right: 0; } .ph1-l { padding-left: .25rem; padding-right: .25rem; } .ph2-l { padding-left: .5rem; padding-right: .5rem; } .ph3-l { padding-left: 1rem; padding-right: 1rem; } .ph4-l { padding-left: 2rem; padding-right: 2rem; } .ph5-l { padding-left: 4rem; padding-right: 4rem; } .ph6-l { padding-left: 8rem; padding-right: 8rem; } .ph7-l { padding-left: 16rem; padding-right: 16rem; } .ma0-l { margin: 0; } .ma1-l { margin: .25rem; } .ma2-l { margin: .5rem; } .ma3-l { margin: 1rem; } .ma4-l { margin: 2rem; } .ma5-l { margin: 4rem; } .ma6-l { margin: 8rem; } .ma7-l { margin: 16rem; } .ml0-l { margin-left: 0; } .ml1-l { margin-left: .25rem; } .ml2-l { margin-left: .5rem; } .ml3-l { margin-left: 1rem; } .ml4-l { margin-left: 2rem; } .ml5-l { margin-left: 4rem; } .ml6-l { margin-left: 8rem; } .ml7-l { margin-left: 16rem; } .mr0-l { margin-right: 0; } .mr1-l { margin-right: .25rem; } .mr2-l { margin-right: .5rem; } .mr3-l { margin-right: 1rem; } .mr4-l { margin-right: 2rem; } .mr5-l { margin-right: 4rem; } .mr6-l { margin-right: 8rem; } .mr7-l { margin-right: 16rem; } .mb0-l { margin-bottom: 0; } .mb1-l { margin-bottom: .25rem; } .mb2-l { margin-bottom: .5rem; } .mb3-l { margin-bottom: 1rem; } .mb4-l { margin-bottom: 2rem; } .mb5-l { margin-bottom: 4rem; } .mb6-l { margin-bottom: 8rem; } .mb7-l { margin-bottom: 16rem; } .mt0-l { margin-top: 0; } .mt1-l { margin-top: .25rem; } .mt2-l { margin-top: .5rem; } .mt3-l { margin-top: 1rem; } .mt4-l { margin-top: 2rem; } .mt5-l { margin-top: 4rem; } .mt6-l { margin-top: 8rem; } .mt7-l { margin-top: 16rem; } .mv0-l { margin-top: 0; margin-bottom: 0; } .mv1-l { margin-top: .25rem; margin-bottom: .25rem; } .mv2-l { margin-top: .5rem; margin-bottom: .5rem; } .mv3-l { margin-top: 1rem; margin-bottom: 1rem; } .mv4-l { margin-top: 2rem; margin-bottom: 2rem; } .mv5-l { margin-top: 4rem; margin-bottom: 4rem; } .mv6-l { margin-top: 8rem; margin-bottom: 8rem; } .mv7-l { margin-top: 16rem; margin-bottom: 16rem; } .mh0-l { margin-left: 0; margin-right: 0; } .mh1-l { margin-left: .25rem; margin-right: .25rem; } .mh2-l { margin-left: .5rem; margin-right: .5rem; } .mh3-l { margin-left: 1rem; margin-right: 1rem; } .mh4-l { margin-left: 2rem; margin-right: 2rem; } .mh5-l { margin-left: 4rem; margin-right: 4rem; } .mh6-l { margin-left: 8rem; margin-right: 8rem; } .mh7-l { margin-left: 16rem; margin-right: 16rem; } } /* NEGATIVE MARGINS Base: n = negative Modifiers: a = all t = top r = right b = bottom l = left 1 = 1st step in spacing scale 2 = 2nd step in spacing scale 3 = 3rd step in spacing scale 4 = 4th step in spacing scale 5 = 5th step in spacing scale 6 = 6th step in spacing scale 7 = 7th step in spacing scale Media Query Extensions: -ns = not-small -m = medium -l = large */ .na1 { margin: -0.25rem; } .na2 { margin: -0.5rem; } .na3 { margin: -1rem; } .na4 { margin: -2rem; } .na5 { margin: -4rem; } .na6 { margin: -8rem; } .na7 { margin: -16rem; } .nl1 { margin-left: -0.25rem; } .nl2 { margin-left: -0.5rem; } .nl3 { margin-left: -1rem; } .nl4 { margin-left: -2rem; } .nl5 { margin-left: -4rem; } .nl6 { margin-left: -8rem; } .nl7 { margin-left: -16rem; } .nr1 { margin-right: -0.25rem; } .nr2 { margin-right: -0.5rem; } .nr3 { margin-right: -1rem; } .nr4 { margin-right: -2rem; } .nr5 { margin-right: -4rem; } .nr6 { margin-right: -8rem; } .nr7 { margin-right: -16rem; } .nb1 { margin-bottom: -0.25rem; } .nb2 { margin-bottom: -0.5rem; } .nb3 { margin-bottom: -1rem; } .nb4 { margin-bottom: -2rem; } .nb5 { margin-bottom: -4rem; } .nb6 { margin-bottom: -8rem; } .nb7 { margin-bottom: -16rem; } .nt1 { margin-top: -0.25rem; } .nt2 { margin-top: -0.5rem; } .nt3 { margin-top: -1rem; } .nt4 { margin-top: -2rem; } .nt5 { margin-top: -4rem; } .nt6 { margin-top: -8rem; } .nt7 { margin-top: -16rem; } @media screen and (min-width: 30em) { .na1-ns { margin: -0.25rem; } .na2-ns { margin: -0.5rem; } .na3-ns { margin: -1rem; } .na4-ns { margin: -2rem; } .na5-ns { margin: -4rem; } .na6-ns { margin: -8rem; } .na7-ns { margin: -16rem; } .nl1-ns { margin-left: -0.25rem; } .nl2-ns { margin-left: -0.5rem; } .nl3-ns { margin-left: -1rem; } .nl4-ns { margin-left: -2rem; } .nl5-ns { margin-left: -4rem; } .nl6-ns { margin-left: -8rem; } .nl7-ns { margin-left: -16rem; } .nr1-ns { margin-right: -0.25rem; } .nr2-ns { margin-right: -0.5rem; } .nr3-ns { margin-right: -1rem; } .nr4-ns { margin-right: -2rem; } .nr5-ns { margin-right: -4rem; } .nr6-ns { margin-right: -8rem; } .nr7-ns { margin-right: -16rem; } .nb1-ns { margin-bottom: -0.25rem; } .nb2-ns { margin-bottom: -0.5rem; } .nb3-ns { margin-bottom: -1rem; } .nb4-ns { margin-bottom: -2rem; } .nb5-ns { margin-bottom: -4rem; } .nb6-ns { margin-bottom: -8rem; } .nb7-ns { margin-bottom: -16rem; } .nt1-ns { margin-top: -0.25rem; } .nt2-ns { margin-top: -0.5rem; } .nt3-ns { margin-top: -1rem; } .nt4-ns { margin-top: -2rem; } .nt5-ns { margin-top: -4rem; } .nt6-ns { margin-top: -8rem; } .nt7-ns { margin-top: -16rem; } } @media screen and (min-width: 30em) and (max-width: 60em) { .na1-m { margin: -0.25rem; } .na2-m { margin: -0.5rem; } .na3-m { margin: -1rem; } .na4-m { margin: -2rem; } .na5-m { margin: -4rem; } .na6-m { margin: -8rem; } .na7-m { margin: -16rem; } .nl1-m { margin-left: -0.25rem; } .nl2-m { margin-left: -0.5rem; } .nl3-m { margin-left: -1rem; } .nl4-m { margin-left: -2rem; } .nl5-m { margin-left: -4rem; } .nl6-m { margin-left: -8rem; } .nl7-m { margin-left: -16rem; } .nr1-m { margin-right: -0.25rem; } .nr2-m { margin-right: -0.5rem; } .nr3-m { margin-right: -1rem; } .nr4-m { margin-right: -2rem; } .nr5-m { margin-right: -4rem; } .nr6-m { margin-right: -8rem; } .nr7-m { margin-right: -16rem; } .nb1-m { margin-bottom: -0.25rem; } .nb2-m { margin-bottom: -0.5rem; } .nb3-m { margin-bottom: -1rem; } .nb4-m { margin-bottom: -2rem; } .nb5-m { margin-bottom: -4rem; } .nb6-m { margin-bottom: -8rem; } .nb7-m { margin-bottom: -16rem; } .nt1-m { margin-top: -0.25rem; } .nt2-m { margin-top: -0.5rem; } .nt3-m { margin-top: -1rem; } .nt4-m { margin-top: -2rem; } .nt5-m { margin-top: -4rem; } .nt6-m { margin-top: -8rem; } .nt7-m { margin-top: -16rem; } } @media screen and (min-width: 60em) { .na1-l { margin: -0.25rem; } .na2-l { margin: -0.5rem; } .na3-l { margin: -1rem; } .na4-l { margin: -2rem; } .na5-l { margin: -4rem; } .na6-l { margin: -8rem; } .na7-l { margin: -16rem; } .nl1-l { margin-left: -0.25rem; } .nl2-l { margin-left: -0.5rem; } .nl3-l { margin-left: -1rem; } .nl4-l { margin-left: -2rem; } .nl5-l { margin-left: -4rem; } .nl6-l { margin-left: -8rem; } .nl7-l { margin-left: -16rem; } .nr1-l { margin-right: -0.25rem; } .nr2-l { margin-right: -0.5rem; } .nr3-l { margin-right: -1rem; } .nr4-l { margin-right: -2rem; } .nr5-l { margin-right: -4rem; } .nr6-l { margin-right: -8rem; } .nr7-l { margin-right: -16rem; } .nb1-l { margin-bottom: -0.25rem; } .nb2-l { margin-bottom: -0.5rem; } .nb3-l { margin-bottom: -1rem; } .nb4-l { margin-bottom: -2rem; } .nb5-l { margin-bottom: -4rem; } .nb6-l { margin-bottom: -8rem; } .nb7-l { margin-bottom: -16rem; } .nt1-l { margin-top: -0.25rem; } .nt2-l { margin-top: -0.5rem; } .nt3-l { margin-top: -1rem; } .nt4-l { margin-top: -2rem; } .nt5-l { margin-top: -4rem; } .nt6-l { margin-top: -8rem; } .nt7-l { margin-top: -16rem; } } /* TABLES Docs: http://tachyons.io/docs/elements/tables/ */ .collapse { border-collapse: collapse; border-spacing: 0; } .striped--light-silver:nth-child(odd) { background-color: #aaa; } .striped--moon-gray:nth-child(odd) { background-color: #ccc; } .striped--light-gray:nth-child(odd) { background-color: #eee; } .striped--near-white:nth-child(odd) { background-color: #f4f4f4; } .stripe-light:nth-child(odd) { background-color: rgba(255, 255, 255, .1); } .stripe-dark:nth-child(odd) { background-color: rgba(0, 0, 0, .1); } /* TEXT DECORATION Docs: http://tachyons.io/docs/typography/text-decoration/ Media Query Extensions: -ns = not-small -m = medium -l = large */ .strike { text-decoration: line-through; } .underline { text-decoration: underline; } .no-underline { text-decoration: none; } @media screen and (min-width: 30em) { .strike-ns { text-decoration: line-through; } .underline-ns { text-decoration: underline; } .no-underline-ns { text-decoration: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .strike-m { text-decoration: line-through; } .underline-m { text-decoration: underline; } .no-underline-m { text-decoration: none; } } @media screen and (min-width: 60em) { .strike-l { text-decoration: line-through; } .underline-l { text-decoration: underline; } .no-underline-l { text-decoration: none; } } /* TEXT ALIGN Docs: http://tachyons.io/docs/typography/text-align/ Base t = text-align Modifiers l = left r = right c = center j = justify Media Query Extensions: -ns = not-small -m = medium -l = large */ .tl { text-align: left; } .tr { text-align: right; } .tc { text-align: center; } .tj { text-align: justify; } @media screen and (min-width: 30em) { .tl-ns { text-align: left; } .tr-ns { text-align: right; } .tc-ns { text-align: center; } .tj-ns { text-align: justify; } } @media screen and (min-width: 30em) and (max-width: 60em) { .tl-m { text-align: left; } .tr-m { text-align: right; } .tc-m { text-align: center; } .tj-m { text-align: justify; } } @media screen and (min-width: 60em) { .tl-l { text-align: left; } .tr-l { text-align: right; } .tc-l { text-align: center; } .tj-l { text-align: justify; } } /* TEXT TRANSFORM Docs: http://tachyons.io/docs/typography/text-transform/ Base: tt = text-transform Modifiers c = capitalize l = lowercase u = uppercase n = none Media Query Extensions: -ns = not-small -m = medium -l = large */ .ttc { text-transform: capitalize; } .ttl { text-transform: lowercase; } .ttu { text-transform: uppercase; } .ttn { text-transform: none; } @media screen and (min-width: 30em) { .ttc-ns { text-transform: capitalize; } .ttl-ns { text-transform: lowercase; } .ttu-ns { text-transform: uppercase; } .ttn-ns { text-transform: none; } } @media screen and (min-width: 30em) and (max-width: 60em) { .ttc-m { text-transform: capitalize; } .ttl-m { text-transform: lowercase; } .ttu-m { text-transform: uppercase; } .ttn-m { text-transform: none; } } @media screen and (min-width: 60em) { .ttc-l { text-transform: capitalize; } .ttl-l { text-transform: lowercase; } .ttu-l { text-transform: uppercase; } .ttn-l { text-transform: none; } } /* TYPE SCALE Docs: http://tachyons.io/docs/typography/scale/ Base: f = font-size Modifiers 1 = 1st step in size scale 2 = 2nd step in size scale 3 = 3rd step in size scale 4 = 4th step in size scale 5 = 5th step in size scale 6 = 6th step in size scale 7 = 7th step in size scale Media Query Extensions: -ns = not-small -m = medium -l = large */ /* * For Hero/Marketing Titles * * These generally are too large for mobile * so be careful using them on smaller screens. * */ .f-6, .f-headline { font-size: 6rem; } .f-5, .f-subheadline { font-size: 5rem; } /* Type Scale */ .f1 { font-size: 3rem; } .f2 { font-size: 2.25rem; } .f3 { font-size: 1.5rem; } .f4 { font-size: 1.25rem; } .f5 { font-size: 1rem; } .f6 { font-size: .875rem; } .f7 { font-size: .75rem; } /* Small and hard to read for many people so use with extreme caution */ @media screen and (min-width: 30em){ .f-6-ns, .f-headline-ns { font-size: 6rem; } .f-5-ns, .f-subheadline-ns { font-size: 5rem; } .f1-ns { font-size: 3rem; } .f2-ns { font-size: 2.25rem; } .f3-ns { font-size: 1.5rem; } .f4-ns { font-size: 1.25rem; } .f5-ns { font-size: 1rem; } .f6-ns { font-size: .875rem; } .f7-ns { font-size: .75rem; } } @media screen and (min-width: 30em) and (max-width: 60em) { .f-6-m, .f-headline-m { font-size: 6rem; } .f-5-m, .f-subheadline-m { font-size: 5rem; } .f1-m { font-size: 3rem; } .f2-m { font-size: 2.25rem; } .f3-m { font-size: 1.5rem; } .f4-m { font-size: 1.25rem; } .f5-m { font-size: 1rem; } .f6-m { font-size: .875rem; } .f7-m { font-size: .75rem; } } @media screen and (min-width: 60em) { .f-6-l, .f-headline-l { font-size: 6rem; } .f-5-l, .f-subheadline-l { font-size: 5rem; } .f1-l { font-size: 3rem; } .f2-l { font-size: 2.25rem; } .f3-l { font-size: 1.5rem; } .f4-l { font-size: 1.25rem; } .f5-l { font-size: 1rem; } .f6-l { font-size: .875rem; } .f7-l { font-size: .75rem; } } /* TYPOGRAPHY http://tachyons.io/docs/typography/measure/ Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Measure is limited to ~66 characters */ .measure { max-width: 30em; } /* Measure is limited to ~80 characters */ .measure-wide { max-width: 34em; } /* Measure is limited to ~45 characters */ .measure-narrow { max-width: 20em; } /* Book paragraph style - paragraphs are indented with no vertical spacing. */ .indent { text-indent: 1em; margin-top: 0; margin-bottom: 0; } .small-caps { -webkit-font-feature-settings: "c2sc"; font-feature-settings: "c2sc"; font-variant: small-caps; } /* Combine this class with a width to truncate text (or just leave as is to truncate at width of containing element. */ .truncate { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } @media screen and (min-width: 30em) { .measure-ns { max-width: 30em; } .measure-wide-ns { max-width: 34em; } .measure-narrow-ns { max-width: 20em; } .indent-ns { text-indent: 1em; margin-top: 0; margin-bottom: 0; } .small-caps-ns { -webkit-font-feature-settings: "c2sc"; font-feature-settings: "c2sc"; font-variant: small-caps; } .truncate-ns { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } @media screen and (min-width: 30em) and (max-width: 60em) { .measure-m { max-width: 30em; } .measure-wide-m { max-width: 34em; } .measure-narrow-m { max-width: 20em; } .indent-m { text-indent: 1em; margin-top: 0; margin-bottom: 0; } .small-caps-m { -webkit-font-feature-settings: "c2sc"; font-feature-settings: "c2sc"; font-variant: small-caps; } .truncate-m { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } @media screen and (min-width: 60em) { .measure-l { max-width: 30em; } .measure-wide-l { max-width: 34em; } .measure-narrow-l { max-width: 20em; } .indent-l { text-indent: 1em; margin-top: 0; margin-bottom: 0; } .small-caps-l { -webkit-font-feature-settings: "c2sc"; font-feature-settings: "c2sc"; font-variant: small-caps; } .truncate-l { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } /* UTILITIES Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Equivalent to .overflow-y-scroll */ .overflow-container { overflow-y: scroll; } .center { margin-right: auto; margin-left: auto; } .mr-auto { margin-right: auto; } .ml-auto { margin-left: auto; } @media screen and (min-width: 30em){ .center-ns { margin-right: auto; margin-left: auto; } .mr-auto-ns { margin-right: auto; } .ml-auto-ns { margin-left: auto; } } @media screen and (min-width: 30em) and (max-width: 60em){ .center-m { margin-right: auto; margin-left: auto; } .mr-auto-m { margin-right: auto; } .ml-auto-m { margin-left: auto; } } @media screen and (min-width: 60em){ .center-l { margin-right: auto; margin-left: auto; } .mr-auto-l { margin-right: auto; } .ml-auto-l { margin-left: auto; } } /* VISIBILITY Media Query Extensions: -ns = not-small -m = medium -l = large */ /* Text that is hidden but accessible Ref: http://snook.ca/archives/html_and_css/hiding-content-for-accessibility */ .clip { position: fixed !important; _position: absolute !important; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); } @media screen and (min-width: 30em) { .clip-ns { position: fixed !important; _position: absolute !important; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); } } @media screen and (min-width: 30em) and (max-width: 60em) { .clip-m { position: fixed !important; _position: absolute !important; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); } } @media screen and (min-width: 60em) { .clip-l { position: fixed !important; _position: absolute !important; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); } } /* WHITE SPACE Media Query Extensions: -ns = not-small -m = medium -l = large */ .ws-normal { white-space: normal; } .nowrap { white-space: nowrap; } .pre { white-space: pre; } @media screen and (min-width: 30em) { .ws-normal-ns { white-space: normal; } .nowrap-ns { white-space: nowrap; } .pre-ns { white-space: pre; } } @media screen and (min-width: 30em) and (max-width: 60em) { .ws-normal-m { white-space: normal; } .nowrap-m { white-space: nowrap; } .pre-m { white-space: pre; } } @media screen and (min-width: 60em) { .ws-normal-l { white-space: normal; } .nowrap-l { white-space: nowrap; } .pre-l { white-space: pre; } } /* VERTICAL ALIGN Media Query Extensions: -ns = not-small -m = medium -l = large */ .v-base { vertical-align: baseline; } .v-mid { vertical-align: middle; } .v-top { vertical-align: top; } .v-btm { vertical-align: bottom; } @media screen and (min-width: 30em) { .v-base-ns { vertical-align: baseline; } .v-mid-ns { vertical-align: middle; } .v-top-ns { vertical-align: top; } .v-btm-ns { vertical-align: bottom; } } @media screen and (min-width: 30em) and (max-width: 60em) { .v-base-m { vertical-align: baseline; } .v-mid-m { vertical-align: middle; } .v-top-m { vertical-align: top; } .v-btm-m { vertical-align: bottom; } } @media screen and (min-width: 60em) { .v-base-l { vertical-align: baseline; } .v-mid-l { vertical-align: middle; } .v-top-l { vertical-align: top; } .v-btm-l { vertical-align: bottom; } } /* HOVER EFFECTS Docs: http://tachyons.io/docs/themes/hovers/ - Dim - Glow - Hide Child - Underline text - Grow - Pointer - Shadow */ /* Dim element on hover by adding the dim class. */ .dim { opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .dim:hover, .dim:focus { opacity: .5; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .dim:active { opacity: .8; -webkit-transition: opacity .15s ease-out; transition: opacity .15s ease-out; } /* Animate opacity to 100% on hover by adding the glow class. */ .glow { -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .glow:hover, .glow:focus { opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } /* Hide child & reveal on hover: Put the hide-child class on a parent element and any nested element with the child class will be hidden and displayed on hover or focus.
      Hidden until hover or focus
      Hidden until hover or focus
      Hidden until hover or focus
      Hidden until hover or focus
      */ .hide-child .child { opacity: 0; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .hide-child:hover .child, .hide-child:focus .child, .hide-child:active .child { opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .underline-hover:hover, .underline-hover:focus { text-decoration: underline; } /* Can combine this with overflow-hidden to make background images grow on hover * even if you are using background-size: cover */ .grow { -moz-osx-font-smoothing: grayscale; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); -webkit-transition: -webkit-transform 0.25s ease-out; transition: -webkit-transform 0.25s ease-out; transition: transform 0.25s ease-out; transition: transform 0.25s ease-out, -webkit-transform 0.25s ease-out; } .grow:hover, .grow:focus { -webkit-transform: scale(1.05); transform: scale(1.05); } .grow:active { -webkit-transform: scale(.90); transform: scale(.90); } .grow-large { -moz-osx-font-smoothing: grayscale; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transform: translateZ(0); transform: translateZ(0); -webkit-transition: -webkit-transform .25s ease-in-out; transition: -webkit-transform .25s ease-in-out; transition: transform .25s ease-in-out; transition: transform .25s ease-in-out, -webkit-transform .25s ease-in-out; } .grow-large:hover, .grow-large:focus { -webkit-transform: scale(1.2); transform: scale(1.2); } .grow-large:active { -webkit-transform: scale(.95); transform: scale(.95); } /* Add pointer on hover */ .pointer:hover { cursor: pointer; } /* Add shadow on hover. Performant box-shadow animation pattern from http://tobiasahlin.com/blog/how-to-animate-box-shadow/ */ .shadow-hover { cursor: pointer; position: relative; -webkit-transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } .shadow-hover::after { content: ''; -webkit-box-shadow: 0px 0px 16px 2px rgba(0, 0, 0, .2); box-shadow: 0px 0px 16px 2px rgba(0, 0, 0, .2); border-radius: inherit; opacity: 0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; -webkit-transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); transition: opacity 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } .shadow-hover:hover::after, .shadow-hover:focus::after { opacity: 1; } /* Combine with classes in skins and skins-pseudo for * many different transition possibilities. */ .bg-animate, .bg-animate:hover, .bg-animate:focus { -webkit-transition: background-color .15s ease-in-out; transition: background-color .15s ease-in-out; } /* Z-INDEX Base z = z-index Modifiers -0 = literal value 0 -1 = literal value 1 -2 = literal value 2 -3 = literal value 3 -4 = literal value 4 -5 = literal value 5 -999 = literal value 999 -9999 = literal value 9999 -max = largest accepted z-index value as integer -inherit = string value inherit -initial = string value initial -unset = string value unset MDN: https://developer.mozilla.org/en/docs/Web/CSS/z-index Spec: http://www.w3.org/TR/CSS2/zindex.html Articles: https://philipwalton.com/articles/what-no-one-told-you-about-z-index/ Tips on extending: There might be a time worth using negative z-index values. Or if you are using tachyons with another project, you might need to adjust these values to suit your needs. */ .z-0 { z-index: 0; } .z-1 { z-index: 1; } .z-2 { z-index: 2; } .z-3 { z-index: 3; } .z-4 { z-index: 4; } .z-5 { z-index: 5; } .z-999 { z-index: 999; } .z-9999 { z-index: 9999; } .z-max { z-index: 2147483647; } .z-inherit { z-index: inherit; } .z-initial { z-index: auto; z-index: initial; } .z-unset { z-index: unset; } /* NESTED Tachyons module for styling nested elements that are generated by a cms. */ .nested-copy-line-height p, .nested-copy-line-height ul, .nested-copy-line-height ol { line-height: 1.5; } .nested-headline-line-height h1, .nested-headline-line-height h2, .nested-headline-line-height h3, .nested-headline-line-height h4, .nested-headline-line-height h5, .nested-headline-line-height h6 { line-height: 1.25; } .nested-list-reset ul, .nested-list-reset ol { padding-left: 0; margin-left: 0; list-style-type: none; } .nested-copy-indent p+p { text-indent: 1em; margin-top: 0; margin-bottom: 0; } .nested-copy-separator p+p { margin-top: 1.5em; } .nested-img img { width: 100%; max-width: 100%; display: block; } .nested-links a { color: #0594CB; -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } .nested-links a:hover, .nested-links a:focus { color: #96ccff; -webkit-transition: color .15s ease-in; transition: color .15s ease-in; } /*@import 'tachyons/src/_styles';*/ /* Variables */ /* Importing here will allow you to override any variables in the modules */ /* Tachyons COLOR VARIABLES Grayscale - Solids - Transparencies Colors */ /* CUSTOM MEDIA QUERIES Media query values can be changed to fit your own content. There are no magic bullets when it comes to media query width values. They should be declared in em units - and they should be set to meet the needs of your content. You can also add additional media queries, or remove some of the existing ones. These media queries can be referenced like so: @media (--breakpoint-not-small) { .medium-and-larger-specific-style { background-color: red; } } @media (--breakpoint-medium) { .medium-screen-specific-style { background-color: red; } } @media (--breakpoint-large) { .large-and-larger-screen-specific-style { background-color: red; } } */ /* Media Queries */ /* Debugging */ /*@import 'tachyons/src/_debug-children'; @import 'tachyons/src/_debug-grid';*/ /* Uncomment out the line below to help debug layout issues */ /* @import 'tachyons/src/_debug'; */ /* purgecss start ignore */ .header-link:after { position: relative; left: 0.5em; opacity: 0; font-size: 0.8em; -moz-transition: opacity 0.2s ease-in-out 0.1s; -ms-transition: opacity 0.2s ease-in-out 0.1s; } h2:hover .header-link, h3:hover .header-link, h4:hover .header-link, h5:hover .header-link, h6:hover .header-link { opacity: 1; } .animated { -webkit-animation-duration: .5s; animation-duration: .5s; -webkit-animation-fill-mode: forwards; animation-fill-mode: forwards; -webkit-animation-timing-function: ease-in-out; animation-timing-function: ease-in-out; } @-webkit-keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fadeIn { -webkit-animation-name: fadeIn; animation-name: fadeIn; } .animated-delay-1 { -webkit-animation-delay: 0.5s; animation-delay: 0.5s; } .note, .warning { border-left-width: 4px; border-left-style: solid; position: relative; border-color: #0594CB; display: block; } .note #exclamation-icon, .warning #exclamation-icon { fill: #0594CB; position: absolute; top: 35%; left: -12px; /*background-color: white;*/ } .admonition-content { display: block; margin: 0px; padding: .125em 1em; /*margin-left: 1em;*/ margin-top: 2em; margin-bottom: 2em; overflow-x: auto; /*font-size: .9375em;*/ background-color: rgba(0, 0, 0, .05); } .hide-child-menu .child-menu { display: none; } .hide-child-menu:hover .child-menu, .hide-child-menu:focus .child-menu, .hide-child-menu:active .child-menu { display: block; } /*documentation-copy headings exaggerate spacing and size to chunk content */ .documentation-copy h2 { margin-top: 3em } .documentation-copy h2.minor { font-size: inherit; margin-top: inherit; border-bottom: none; } .searchbox{display:inline-block;position:relative;width:200px;height:32px!important;white-space:nowrap;-webkit-box-sizing:border-box;box-sizing:border-box;visibility:visible!important} .searchbox .algolia-autocomplete{display:block;width:100%;height:100%} .searchbox__wrapper{width:100%;height:100%;z-index:999;position:relative} .searchbox__input{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .4s ease,-webkit-box-shadow .4s ease;transition:background .4s ease,-webkit-box-shadow .4s ease;transition:box-shadow .4s ease,background .4s ease;transition:box-shadow .4s ease,background .4s ease,-webkit-box-shadow .4s ease;border:0;border-radius:16px;-webkit-box-shadow:inset 0 0 0 1px #ccc;box-shadow:inset 0 0 0 1px #ccc;background:#fff!important;padding:0 26px 0 32px;width:100%;height:100%;vertical-align:middle;white-space:normal;font-size:12px;-webkit-appearance:none;-moz-appearance:none;appearance:none} .searchbox__input::-webkit-search-cancel-button,.searchbox__input::-webkit-search-decoration,.searchbox__input::-webkit-search-results-button,.searchbox__input::-webkit-search-results-decoration{display:none} .searchbox__input:hover{-webkit-box-shadow:inset 0 0 0 1px #b3b3b3;box-shadow:inset 0 0 0 1px #b3b3b3} .searchbox__input:active,.searchbox__input:focus{outline:0;-webkit-box-shadow:inset 0 0 0 1px #aaa;box-shadow:inset 0 0 0 1px #aaa;background:#fff} .searchbox__input::-webkit-input-placeholder{color:#aaa} .searchbox__input:-ms-input-placeholder{color:#aaa} .searchbox__input::-ms-input-placeholder{color:#aaa} .searchbox__input::placeholder{color:#aaa} .searchbox__submit{position:absolute;top:0;margin:0;border:0;border-radius:16px 0 0 16px;background-color:rgba(69, 142, 225, 0);padding:0;width:32px;height:100%;vertical-align:middle;text-align:center;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;right:inherit;left:0} .searchbox__submit:before{display:inline-block;margin-right:-4px;height:100%;vertical-align:middle;content:""} .searchbox__submit:active,.searchbox__submit:hover{cursor:pointer} .searchbox__submit:focus{outline:0} .searchbox__submit svg{width:14px;height:14px;vertical-align:middle;fill:#6d7e96} .searchbox__reset{display:block;position:absolute;top:8px;right:8px;margin:0;border:0;background:none;cursor:pointer;padding:0;font-size:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;fill:rgba(0, 0, 0, .5)} .searchbox__reset.hide{display:none} .searchbox__reset:focus{outline:0} .searchbox__reset svg{display:block;margin:4px;width:8px;height:8px} .searchbox__input:valid~.searchbox__reset{display:block;-webkit-animation-name:sbx-reset-in;animation-name:sbx-reset-in;-webkit-animation-duration:.15s;animation-duration:.15s} @-webkit-keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}} @keyframes sbx-reset-in{0%{-webkit-transform:translate3d(-20%,0,0);transform:translate3d(-20%,0,0);opacity:0}to{-webkit-transform:none;transform:none;opacity:1}} .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu{right:0!important;left:inherit!important} .algolia-autocomplete.algolia-autocomplete-right .ds-dropdown-menu:before{right:48px} .algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu{left:0!important;right:inherit!important} .algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu:before{left:48px} .algolia-autocomplete .ds-dropdown-menu{top:-6px;border-radius:4px;margin:6px 0 0;padding:0;text-align:left;height:auto;position:relative;background:transparent;border:none;z-index:999;max-width:600px;min-width:500px;-webkit-box-shadow:0 1px 0 0 rgba(0, 0, 0, .2),0 2px 3px 0 rgba(0, 0, 0, .1);box-shadow:0 1px 0 0 rgba(0, 0, 0, .2),0 2px 3px 0 rgba(0, 0, 0, .1)} .algolia-autocomplete .ds-dropdown-menu:before{display:block;position:absolute;content:"";width:14px;height:14px;background:#fff;z-index:1000;top:-7px;border-top:1px solid #d9d9d9;border-right:1px solid #d9d9d9;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);border-radius:2px} .algolia-autocomplete .ds-dropdown-menu .ds-suggestions{position:relative;z-index:1000;margin-top:8px} .algolia-autocomplete .ds-dropdown-menu .ds-suggestions a:hover{text-decoration:none} .algolia-autocomplete .ds-dropdown-menu .ds-suggestion{cursor:pointer} .algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion.suggestion-layout-simple,.algolia-autocomplete .ds-dropdown-menu .ds-suggestion.ds-cursor .algolia-docsearch-suggestion:not(.suggestion-layout-simple) .algolia-docsearch-suggestion--content{background-color:rgba(69, 142, 225, .05)} .algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-]{position:relative;border:1px solid #d9d9d9;background:#fff;border-radius:4px;overflow:auto;padding:0 8px 8px} .algolia-autocomplete .ds-dropdown-menu *{-webkit-box-sizing:border-box;box-sizing:border-box} .algolia-autocomplete .algolia-docsearch-suggestion{display:block;position:relative;padding:0 8px;background:#fff;color:#02060c;overflow:hidden} .algolia-autocomplete .algolia-docsearch-suggestion--highlight{color:#174d8c;background:rgba(143, 187, 237, .1);padding:.1em .05em} .algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl0 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--category-header-lvl1 .algolia-docsearch-suggestion--highlight,.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{padding:0 0 1px;background:inherit;-webkit-box-shadow:inset 0 -2px 0 0 rgba(69, 142, 225, .8);box-shadow:inset 0 -2px 0 0 rgba(69, 142, 225, .8);color:inherit} .algolia-autocomplete .algolia-docsearch-suggestion--content{display:block;float:right;width:70%;position:relative;padding:5.33333px 0 5.33333px 10.66667px;cursor:pointer} .algolia-autocomplete .algolia-docsearch-suggestion--content:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;left:-1px} .algolia-autocomplete .algolia-docsearch-suggestion--category-header{position:relative;border-bottom:1px solid #ddd;display:none;margin-top:8px;padding:4px 0;font-size:1em;color:#33363d} .algolia-autocomplete .algolia-docsearch-suggestion--wrapper{width:100%;float:left;padding:8px 0 0} .algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column{float:left;width:30%;text-align:right;position:relative;padding:5.33333px 10.66667px;color:#a4a7ae;font-size:.9em;word-wrap:break-word} .algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column:before{content:"";position:absolute;display:block;top:0;height:100%;width:1px;background:#ddd;right:0} .algolia-autocomplete .algolia-docsearch-suggestion--subcategory-inline{display:none} .algolia-autocomplete .algolia-docsearch-suggestion--title{margin-bottom:4px;color:#02060c;font-size:.9em;font-weight:700} .algolia-autocomplete .algolia-docsearch-suggestion--text{display:block;line-height:1.2em;font-size:.85em;color:#63676d} .algolia-autocomplete .algolia-docsearch-suggestion--no-results{width:100%;padding:8px 0;text-align:center;font-size:1.2em} .algolia-autocomplete .algolia-docsearch-suggestion--no-results:before{display:none} .algolia-autocomplete .algolia-docsearch-suggestion code{padding:1px 5px;font-size:90%;border:none;color:#222;background-color:#ebebeb;border-radius:3px;font-family:Menlo,Monaco,Consolas,Courier New,monospace} .algolia-autocomplete .algolia-docsearch-suggestion code .algolia-docsearch-suggestion--highlight{background:none} .algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__main .algolia-docsearch-suggestion--category-header,.algolia-autocomplete .algolia-docsearch-suggestion.algolia-docsearch-suggestion__secondary{display:block} @media (min-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:block}} @media (max-width:768px){.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column{display:inline-block;width:auto;float:left;padding:0;color:#02060c;font-size:.9em;font-weight:700;text-align:left;opacity:.5}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:before{display:none}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--subcategory-column:after{content:"|"}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content{display:inline-block;width:auto;text-align:left;float:left;padding:0}.algolia-autocomplete .algolia-docsearch-suggestion .algolia-docsearch-suggestion--content:before{display:none}} .algolia-autocomplete .suggestion-layout-simple.algolia-docsearch-suggestion{border-bottom:1px solid #eee;padding:8px;margin:0} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content{width:100%;padding:0} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--content:before{display:none} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header{margin:0;padding:0;display:block;width:100%;border:none} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl0,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1{opacity:.6;font-size:.85em} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--category-header-lvl1:before{background-image:url('data:image/svg+xml;utf8,');content:"";width:10px;height:10px;display:inline-block} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--wrapper{width:100%;float:left;margin:0;padding:0} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--duplicate-content,.algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--subcategory-inline{display:none!important} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title{margin:0;color:#458ee1;font-size:.9em;font-weight:400} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--title:before{content:"#";font-weight:700;color:#458ee1;display:inline-block} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text{margin:4px 0 0;display:block;line-height:1.4em;padding:5.33333px 8px;background:#f8f8f8;font-size:.85em;opacity:.8} .algolia-autocomplete .suggestion-layout-simple .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight{color:#3f4145;font-weight:700;-webkit-box-shadow:none;box-shadow:none} .algolia-autocomplete .algolia-docsearch-footer{width:134px;height:20px;z-index:2000;margin-top:10.66667px;float:right;font-size:0;line-height:0} .algolia-autocomplete .algolia-docsearch-footer--logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='168' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938zm41.937 17.866c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17z' fill='%235468FF'/%3E%3Cpath d='M6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z' fill='%235D6494'/%3E%3Cpath d='M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36' fill='%23FFF'/%3E%3C/g%3E%3C/svg%3E");background-repeat:no-repeat;background-position:50%;background-size:100%;overflow:hidden;text-indent:-9000px;padding:0!important;width:100%;height:100%;display:block} /* These styles enhance the home page carousel, located here: themes/gohugoioTheme/layouts/partials/home-page-sections/showcase.html */ .overflow-x-scroll{ -webkit-overflow-scrolling: touch; } .row { -webkit-transition: 450ms -webkit-transform; transition: 450ms -webkit-transform; transition: 450ms transform; transition: 450ms transform, 450ms -webkit-transform; font-size: 0; } .tile { -webkit-transition: 450ms all; transition: 450ms all; } .details { background: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, .9)), to(rgba(0, 0, 0, 0))); background: linear-gradient(to top, rgba(0, 0, 0, .9) 0%, rgba(0, 0, 0, 0) 100%); -webkit-transition: 450ms opacity; transition: 450ms opacity; } .tile:hover .details { opacity: 1; } .row:hover .tile { opacity: 0.3; } .row:hover .tile:hover { opacity: 1; } .chroma .lntable pre { padding: 0; margin: 0; border: 0; } .chroma .lntable pre code { padding: 0; margin: 0; } code { padding: 0.2em; margin: 0; font-size: 85%; background-color: rgba(27, 31, 35, .05); border-radius: 3px; } pre code { display: block; padding: 1.5em 1.5em; font-size: .875rem; line-height: 2; overflow-x: auto; } pre { background-color: #fff; color: #333; white-space: pre; -webkit-hyphens: none; -ms-hyphens: none; hyphens: none; position: relative; border-width: 1px; border-color: #ccc; border-style: solid; } /* The Pygments highlighter comes with its own styles. */ .highlight pre { background-color: inherit; color: inherit; padding: 0.5em; font-size: .875rem; } /*We are adding the copy button content here so we can change it with javascript. See the "Clipboard scripts"*/ .copy:after { content: "Copy" } .copied:after { content: "Copied" } @media screen and (min-width: 60em) { .full-width { /*width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw;*/ /*width: 60vw;*/ /*position: relative; left: 50%; right: 50%;*/ /*margin-left: -30vw;*/ margin-right: -30vw; max-width: 100vw; } } .code-block .line-numbers-rows { background: #2f3a46; border: none; bottom: -50px; color: #98a4b3; left: -178px; padding: 50px 0; top: -50px; width: 138px } .code-block .line-numbers-rows>span:before { color: inherit; padding-right: 30px } .tab-button{ margin-bottom:1px; position: relative; z-index: 1; color:#333; border-color:#ccc; outline: none; background-color:white; } .tab-pane code{ background:#f1f2f2; border-radius:0; } .tab-pane .chroma{ background:none; padding:0; } .tab-button.active{ border-bottom-color:#f1f2f2; background-color: #f1f2f2; } .tab-content .tab-pane{ display: none; } .tab-content .tab-pane.active{ display: block; } /* Treatment of copy buttons inside a tab module */ .tab-content .copy, .tab-content .copied{ display: none; } .tab-content .tab-pane.active + .copy, .tab-content .tab-pane.active + .copied{ display: block; } .primary-color {color: #0594CB} .bg-primary-color {background-color: #0594CB} .hover-bg-primary-color:hover {background-color: #0594CB} .primary-color-dark {color: #0A1922} .bg-primary-color-dark {background-color: #0A1922} .hover-bg-primary-color-dark:hover {background-color: #0A1922} .primary-color-light {color: #f9f9f9} .bg-primary-color-light {background-color: #f9f9f9} .hover-bg-primary-color-light:hover {background-color: #f9f9f9} .accent-color {color: #EBB951} .bg-accent-color {background-color: #EBB951} .hover-bg-accent-color:hover {background-color: #EBB951} .accent-color-light {color: #FF4088} .hover-accent-color-light:hover {color: #FF4088} .bg-accent-color-light {background-color: #FF4088} .hover-bg-accent-color-light:hover {background-color: #FF4088} .accent-color-dark {color: #33ba91} .bg-accent-color-dark {background-color: #33ba91} .hover-bg-accent-color-dark:hover {background-color: #33ba91} .text-color-primary {color: #373737} .text-on-primary-color {color: #fff} .text-color-secondary {color: #ccc} .text-color-disabled {color: #F7f7f7} .divider-color {color: #f6f6f6} .warn-color {color: red} .nested-links a { color: #0594CB; text-decoration: none; } .column-count-2 {-webkit-column-count: 1;column-count: 1} .column-gap-1 {-webkit-column-gap: 0;column-gap: 0} .break-inside-avoid {-webkit-column-break-inside: auto;break-inside: auto} @media screen and (min-width: 60em) { .column-count-3-l {-webkit-column-count: 3;column-count: 3} .column-count-2-l {-webkit-column-count: 2;column-count: 2} .column-gap-1-l {-webkit-column-gap: 1;column-gap: 1} .break-inside-avoid-l {-webkit-column-break-inside: avoid;break-inside: avoid} } .prose ul, .prose ol { margin-bottom: 2em; } .prose ul li, .prose ol li { margin-bottom: .5em; } .prose li:hover { background-color: #eee } .prose ::selection { background: #0594CB; /* WebKit/Blink Browsers */ color: white; } .prose-glossary h3 { margin-top: 0; font-size: 1.125rem; } .prose-glossary h3:first-of-type { margin-top: 3em; } .prose-glossary h3 ~ p { margin: 0.5em 0 2em 0; } body { line-height: 1.45; } p {margin-bottom: 1.3em;} h1, h2, h3, h4 { margin: 1.414em 0 0.5em; line-height: 1.2; } h1 { margin-top: 0; font-size: 2.441em; } h2 {font-size: 1.953em;} h3 {font-size: 1.563em;} h4 {font-size: 1.25em;} small, .font_small {font-size: 0.8em;} .prose table { width: 100%; margin-bottom: 3em; border-collapse: collapse; border-spacing: 0; font-size: 1em; border: 1px solid #eee } .prose table th { background-color: #0594CB; border-bottom: 1px solid #0594CB; color: white; font-weight: 400; text-align: left; padding: .375em .5em; } .prose table td, .prose table tc { padding: .75em .5em; text-align: left; border-right: 1px solid #eee; } .prose table tr:nth-child(even) { background-color: #eee; } dl dt { font-weight: bold; font-size: 1.125rem; } dd { margin: .5em 0 2em 0; padding: 0; } .f2-fluid { font-size: 2.25rem; } @media screen and (min-width: 60em) { .f2-fluid { font-size: 1.25rem; font-size: calc(0.70833rem + 0.83333vw); } } /* From https://www.cssfontstack.com */ code, .code, pre code, .highlight pre { font-family: 'inconsolata',Menlo,Monaco,'Courier New',monospace; } .sans-serif { font-family: 'Muli', avenir, 'helvetica neue', helvetica, ubuntu, roboto, noto, 'segoe ui', arial, sans-serif; } .serif { font-family: Palatino,"Palatino Linotype","Palatino LT STD","Book Antiqua",Georgia,serif; } /* Monospaced Typefaces (for code) */ .courier { font-family: 'Courier Next', courier, monospace; } /* Sans-Serif Typefaces */ .helvetica { font-family: 'helvetica neue', helvetica, sans-serif; } .avenir { font-family: 'avenir next', avenir, sans-serif; } /* Serif Typefaces */ .athelas { font-family: athelas, georgia, serif; } .georgia { font-family: georgia, serif; } .times { font-family: times, serif; } .bodoni { font-family: "Bodoni MT", serif; } .calisto { font-family: "Calisto MT", serif; } .garamond { font-family: garamond, serif; } .baskerville { font-family: baskerville, serif; } /* pagination.html: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */ .pagination { margin: 3rem 0; } .pagination li { display: inline-block; margin-right: .375rem; font-size: .875rem; margin-bottom: 2.5em; } .pagination li a { padding: .5rem .625rem; background-color: white; color: #333; border: 1px solid #ddd; border-radius: 3px; text-decoration: none; } .pagination li.disabled { display: none; } .pagination li.active a:link, .pagination li.active a:active, .pagination li.active a:visited { background-color: #ddd; } /* Hides non-meaningful TOC items*/ #TableOfContents ul li ul li ul li{ display: none; } #TableOfContents ul li { color: black; display: block; margin-bottom: .375em; line-height: 1.375; } #TableOfContents ul li a{ width: 100%; padding: .25em .375em; margin-left: -.375em; } #TableOfContents ul li a:hover { background-color: #999; color: white; } .no-js .needs-js { opacity: 0 } .js .needs-js { opacity: 1; -webkit-transition: opacity .15s ease-in; transition: opacity .15s ease-in; } .facebook, .twitter, .instagram, .youtube { fill: #bababa; } .facebook:hover { fill: #3b5998; } .twitter { fill: #55acee; } .twitter:hover { fill: #bababa; } .instagram:hover { fill: #e95950; } .youtube:hover { fill: #bb0000; } .mstdn { display: inline-block; background-color: #282c37; color: #d9e1e8; text-decoration: none; padding: 4px 10px 4px 30px; border-radius: 4px; font-size: 16px; background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2261.076954mm%22%20height%3D%2265.47831mm%22%20viewBox%3D%220%200%20216.4144%20232.00976%22%3E%3Cpath%20d%3D%22M211.80734%20139.0875c-3.18125%2016.36625-28.4925%2034.2775-57.5625%2037.74875-15.15875%201.80875-30.08375%203.47125-45.99875%202.74125-26.0275-1.1925-46.565-6.2125-46.565-6.2125%200%202.53375.15625%204.94625.46875%207.2025%203.38375%2025.68625%2025.47%2027.225%2046.39125%2027.9425%2021.11625.7225%2039.91875-5.20625%2039.91875-5.20625l.8675%2019.09s-14.77%207.93125-41.08125%209.39c-14.50875.7975-32.52375-.365-53.50625-5.91875C9.23234%20213.82%201.40609%20165.31125.20859%20116.09125c-.365-14.61375-.14-28.39375-.14-39.91875%200-50.33%2032.97625-65.0825%2032.97625-65.0825C49.67234%203.45375%2078.20359.2425%20107.86484%200h.72875c29.66125.2425%2058.21125%203.45375%2074.8375%2011.09%200%200%2032.975%2014.7525%2032.975%2065.0825%200%200%20.41375%2037.13375-4.59875%2062.915%22%20fill%3D%22%233088d4%22%2F%3E%3Cpath%20d%3D%22M177.50984%2080.077v60.94125h-24.14375v-59.15c0-12.46875-5.24625-18.7975-15.74-18.7975-11.6025%200-17.4175%207.5075-17.4175%2022.3525v32.37625H96.20734V85.42325c0-14.845-5.81625-22.3525-17.41875-22.3525-10.49375%200-15.74%206.32875-15.74%2018.7975v59.15H38.90484V80.077c0-12.455%203.17125-22.3525%209.54125-29.675%206.56875-7.3225%2015.17125-11.07625%2025.85-11.07625%2012.355%200%2021.71125%204.74875%2027.8975%2014.2475l6.01375%2010.08125%206.015-10.08125c6.185-9.49875%2015.54125-14.2475%2027.8975-14.2475%2010.6775%200%2019.28%203.75375%2025.85%2011.07625%206.36875%207.3225%209.54%2017.22%209.54%2029.675%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E"); background-size: 16px; background-repeat: no-repeat; background-position: top 50% left 8px; -webkit-transition: all 0.5s; transition: all 0.5s; } .mstdn:hover { background-color: #484c56; } .mstdn > span { color: #9baec8; font-size: 12px; padding-left: 3px; } .mstdn > span:before { content: "@"; } @media (min-width: 75em) { [data-scrolldir="down"] .sticky { position: fixed; top:100px; right:0; } [data-scrolldir="up"] .sticky { position: fixed; top:100px; right:0; } } #right-sidebar { scrollbar-width: none; /* hide scrollbar: Firefox */ -ms-overflow-style: none; /* hide scrollbar: Internet Explorer 10+ */ height: calc(100vh - 9rem); overflow-y: auto; } #right-sidebar::-webkit-scrollbar { /* hide scrollbar: WebKit */ width: 0; height: 0; } .fill-current { fill: currentColor; } /* Background */ .chroma { background-color: #ffffff } /* Error */ .chroma .err { color: #a61717; background-color: #e3d2d2 } /* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; } /* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; } /* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc } /* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } /* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } /* Keyword */ .chroma .k { font-weight: bold } /* KeywordConstant */ .chroma .kc { font-weight: bold } /* KeywordDeclaration */ .chroma .kd { font-weight: bold } /* KeywordNamespace */ .chroma .kn { font-weight: bold } /* KeywordPseudo */ .chroma .kp { font-weight: bold } /* KeywordReserved */ .chroma .kr { font-weight: bold } /* KeywordType */ .chroma .kt { color: #445588; font-weight: bold } /* NameAttribute */ .chroma .na { color: #008080 } /* NameBuiltin */ .chroma .nb { color: #999999 } /* NameClass */ .chroma .nc { color: #445588; font-weight: bold } /* NameConstant */ .chroma .no { color: #008080 } /* NameEntity */ .chroma .ni { color: #800080 } /* NameException */ .chroma .ne { color: #990000; font-weight: bold } /* NameFunction */ .chroma .nf { color: #990000; font-weight: bold } /* NameNamespace */ .chroma .nn { color: #555555 } /* NameTag */ .chroma .nt { color: #000080 } /* NameVariable */ .chroma .nv { color: #008080 } /* LiteralString */ .chroma .s { color: #bb8844 } /* LiteralStringAffix */ .chroma .sa { color: #bb8844 } /* LiteralStringBacktick */ .chroma .sb { color: #bb8844 } /* LiteralStringChar */ .chroma .sc { color: #bb8844 } /* LiteralStringDelimiter */ .chroma .dl { color: #bb8844 } /* LiteralStringDoc */ .chroma .sd { color: #bb8844 } /* LiteralStringDouble */ .chroma .s2 { color: #bb8844 } /* LiteralStringEscape */ .chroma .se { color: #bb8844 } /* LiteralStringHeredoc */ .chroma .sh { color: #bb8844 } /* LiteralStringInterpol */ .chroma .si { color: #bb8844 } /* LiteralStringOther */ .chroma .sx { color: #bb8844 } /* LiteralStringRegex */ .chroma .sr { color: #808000 } /* LiteralStringSingle */ .chroma .s1 { color: #bb8844 } /* LiteralStringSymbol */ .chroma .ss { color: #bb8844 } /* LiteralNumber */ .chroma .m { color: #009999 } /* LiteralNumberBin */ .chroma .mb { color: #009999 } /* LiteralNumberFloat */ .chroma .mf { color: #009999 } /* LiteralNumberHex */ .chroma .mh { color: #009999 } /* LiteralNumberInteger */ .chroma .mi { color: #009999 } /* LiteralNumberIntegerLong */ .chroma .il { color: #009999 } /* LiteralNumberOct */ .chroma .mo { color: #009999 } /* Operator */ .chroma .o { font-weight: bold } /* OperatorWord */ .chroma .ow { font-weight: bold } /* Comment */ .chroma .c { color: #999988; font-style: italic } /* CommentHashbang */ .chroma .ch { color: #999988; font-style: italic } /* CommentMultiline */ .chroma .cm { color: #999988; font-style: italic } /* CommentSingle */ .chroma .c1 { color: #999988; font-style: italic } /* CommentSpecial */ .chroma .cs { color: #999999; font-weight: bold; font-style: italic } /* CommentPreproc */ .chroma .cp { color: #999999; font-weight: bold } /* CommentPreprocFile */ .chroma .cpf { color: #999999; font-weight: bold } /* GenericDeleted */ .chroma .gd { color: #000000; background-color: #ffdddd } /* GenericEmph */ .chroma .ge { font-style: italic } /* GenericError */ .chroma .gr { color: #aa0000 } /* GenericHeading */ .chroma .gh { color: #999999 } /* GenericInserted */ .chroma .gi { color: #000000; background-color: #ddffdd } /* GenericOutput */ .chroma .go { color: #888888 } /* GenericPrompt */ .chroma .gp { color: #555555 } /* GenericStrong */ .chroma .gs { font-weight: bold } /* GenericSubheading */ .chroma .gu { color: #aaaaaa } /* GenericTraceback */ .chroma .gt { color: #aa0000 } /* TextWhitespace */ .chroma .w { color: #bbbbbb } @media print { #page-footer, body > footer, body > nav { display: none; } } /* Make h6 elements behave like dt elements. Initially implemented to support linkable glossary entries. Yes, it's a hack. That's why it's in the shame file. */ h6 { margin-top: 0; margin-bottom: 0; font-size: 1.125rem; } h6:first-of-type { margin-top: 3em; } h6 ~ p { margin: 0.5em 0 2em 0; } .nested-blockquote blockquote { border-left: 4px solid #0594CB; padding-left: 1em; } .mw-90 { max-width:90%; } /* purgecss end ignore */ hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/000077500000000000000000000000001465312036400271465ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/output/js/app.js000066400000000000000000004217111465312036400302720ustar00rootroot00000000000000!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){!function(e,n){var r=function(t,e,n){"use strict";var r,i;if(function(){var e,n={lazyClass:"lazyload",loadedClass:"lazyloaded",loadingClass:"lazyloading",preloadClass:"lazypreload",errorClass:"lazyerror",autosizesClass:"lazyautosizes",fastLoadedClass:"ls-is-cached",iframeLoadMode:0,srcAttr:"data-src",srcsetAttr:"data-srcset",sizesAttr:"data-sizes",minSize:40,customMedia:{},init:!0,expFactor:1.5,hFac:.8,loadMode:2,loadHidden:!0,ricTimeout:0,throttleDelay:125};for(e in i=t.lazySizesConfig||t.lazysizesConfig||{},n)e in i||(i[e]=n[e])}(),!e||!e.getElementsByClassName)return{init:function(){},cfg:i,noSupport:!0};var o=e.documentElement,s=t.HTMLPictureElement,a=t.addEventListener.bind(t),u=t.setTimeout,c=t.requestAnimationFrame||u,l=t.requestIdleCallback,h=/^picture$/i,f=["load","error","lazyincluded","_lazyloaded"],d={},p=Array.prototype.forEach,g=function(t,e){return d[e]||(d[e]=new RegExp("(\\s|^)"+e+"(\\s|$)")),d[e].test(t.getAttribute("class")||"")&&d[e]},m=function(t,e){g(t,e)||t.setAttribute("class",(t.getAttribute("class")||"").trim()+" "+e)},y=function(t,e){var n;(n=g(t,e))&&t.setAttribute("class",(t.getAttribute("class")||"").replace(n," "))},v=function(t,e,n){var r=n?"addEventListener":"removeEventListener";n&&v(t,e),f.forEach((function(n){t[r](n,e)}))},b=function(t,n,i,o,s){var a=e.createEvent("Event");return i||(i={}),i.instance=r,a.initEvent(n,!o,!s),a.detail=i,t.dispatchEvent(a),a},w=function(e,n){var r;!s&&(r=t.picturefill||i.pf)?(n&&n.src&&!e.getAttribute("srcset")&&e.setAttribute("srcset",n.src),r({reevaluate:!0,elements:[e]})):n&&n.src&&(e.src=n.src)},_=function(t,e){return(getComputedStyle(t,null)||{})[e]},x=function(t,e,n){for(n=n||t.offsetWidth;n0)&&"visible"!=_(i,"overflow")&&(r=i.getBoundingClientRect(),s=z>r.left&&Fr.top-1&&H500&&o.clientWidth>500?500:370:i.expand,r._defEx=d,p=d*i.expFactor,g=i.hFac,U=null,W2&&D>2&&!e.hidden?(W=p,X=0):W=D>1&&X>1&&Q<6?d:0),f!==c&&($=innerWidth+c*g,M=innerHeight+c,l=-1*c,f=c),s=m[n].getBoundingClientRect(),(B=s.bottom)>=l&&(H=s.top)<=M&&(z=s.right)>=l*g&&(F=s.left)<=$&&(B||z||F||H)&&(i.loadHidden||Z(m[n]))&&(R&&Q<3&&!h&&(D<3||X<4)||Y(m[n],c))){if(at(m[n]),u=!0,Q>9)break}else!u&&R&&!a&&Q<4&&X<4&&D>2&&(L[0]||i.preloadAfterLoad)&&(L[0]||!h&&(B||z||F||H||"auto"!=m[n].getAttribute(i.sizesAttr)))&&(a=L[0]||m[n]);a&&!u&&at(a)}},et=function(t){var e,r=0,o=i.throttleDelay,s=i.ricTimeout,a=function(){e=!1,r=n.now(),t()},c=l&&s>49?function(){l(a,{timeout:s}),s!==i.ricTimeout&&(s=i.ricTimeout)}:C((function(){u(a)}),!0);return function(t){var i;(t=!0===t)&&(s=33),e||(e=!0,(i=o-(n.now()-r))<0&&(i=0),t||i<9?c():u(c,i))}}(tt),nt=function(t){var e=t.target;e._lazyCache?delete e._lazyCache:(G(t),m(e,i.loadedClass),y(e,i.loadingClass),v(e,it),b(e,"lazyloaded"))},rt=C(nt),it=function(t){rt({target:t.target})},ot=function(t){var e,n=t.getAttribute(i.srcsetAttr);(e=i.customMedia[t.getAttribute("data-media")||t.getAttribute("media")])&&t.setAttribute("media",e),n&&t.setAttribute("srcset",n)},st=C((function(t,e,n,r,o){var s,a,c,l,f,d;(f=b(t,"lazybeforeunveil",e)).defaultPrevented||(r&&(n?m(t,i.autosizesClass):t.setAttribute("sizes",r)),a=t.getAttribute(i.srcsetAttr),s=t.getAttribute(i.srcAttr),o&&(l=(c=t.parentNode)&&h.test(c.nodeName||"")),d=e.firesLoad||"src"in t&&(a||s||l),f={target:t},m(t,i.loadingClass),d&&(clearTimeout(P),P=u(G,2500),v(t,it,!0)),l&&p.call(c.getElementsByTagName("source"),ot),a?t.setAttribute("srcset",a):s&&!l&&(K.test(t.nodeName)?function(t,e){var n=t.getAttribute("data-load-mode")||i.iframeLoadMode;0==n?t.contentWindow.location.replace(e):1==n&&(t.src=e)}(t,s):t.src=s),o&&(a||l)&&w(t,{src:s})),t._lazyRace&&delete t._lazyRace,y(t,i.lazyClass),S((function(){var e=t.complete&&t.naturalWidth>1;d&&!e||(e&&m(t,i.fastLoadedClass),nt(f),t._lazyCache=!0,u((function(){"_lazyCache"in t&&delete t._lazyCache}),9)),"lazy"==t.loading&&Q--}),!0)})),at=function(t){if(!t._lazyRace){var e,n=V.test(t.nodeName),r=n&&(t.getAttribute(i.sizesAttr)||t.getAttribute("sizes")),o="auto"==r;(!o&&R||!n||!t.getAttribute("src")&&!t.srcset||t.complete||g(t,i.errorClass)||!g(t,i.lazyClass))&&(e=b(t,"lazyunveilread").detail,o&&T.updateElem(t,!0,t.offsetWidth),t._lazyRace=!0,Q++,st(t,e,o,r,n))}},ut=A((function(){i.loadMode=3,et()})),ct=function(){3==i.loadMode&&(i.loadMode=2),ut()},lt=function(){R||(n.now()-q<999?u(lt,999):(R=!0,i.loadMode=3,et(),a("scroll",ct,!0)))},{_:function(){q=n.now(),r.elements=e.getElementsByClassName(i.lazyClass),L=e.getElementsByClassName(i.lazyClass+" "+i.preloadClass),a("scroll",et,!0),a("resize",et,!0),a("pageshow",(function(t){if(t.persisted){var n=e.querySelectorAll("."+i.loadingClass);n.length&&n.forEach&&c((function(){n.forEach((function(t){t.complete&&at(t)}))}))}})),t.MutationObserver?new MutationObserver(et).observe(o,{childList:!0,subtree:!0,attributes:!0}):(o.addEventListener("DOMNodeInserted",et,!0),o.addEventListener("DOMAttrModified",et,!0),setInterval(et,999)),a("hashchange",et,!0),["focus","mouseover","click","load","transitionend","animationend"].forEach((function(t){e.addEventListener(t,et,!0)})),/d$|^c/.test(e.readyState)?lt():(a("load",lt),e.addEventListener("DOMContentLoaded",et),u(lt,2e4)),r.elements.length?(tt(),S._lsFlush()):et()},checkElems:et,unveil:at,_aLSL:ct}),T=(N=C((function(t,e,n,r){var i,o,s;if(t._lazysizesWidth=r,r+="px",t.setAttribute("sizes",r),h.test(e.nodeName||""))for(o=0,s=(i=e.getElementsByTagName("source")).length;o0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===r(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,a.default)(t,"click",(function(t){return e.onClick(t)}))}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new o.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return l("action",t)}},{key:"defaultTarget",value:function(t){var e=l("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return l("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach((function(t){n=n&&!!document.queryCommandSupported(t)})),n}}]),e}(s.default);function l(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}t.exports=c},function(t,e,n){"use strict";var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,a.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,a.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=u},function(t,e){t.exports=function(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(t),r.removeAllRanges(),r.addRange(i),e=r.toString()}return e}},function(t,e){function n(){}n.prototype={on:function(t,e,n){var r=this.e||(this.e={});return(r[t]||(r[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var r=this;function i(){r.off(t,i),e.apply(n,arguments)}return i._=e,this.on(t,i,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),r=0,i=n.length;r";var r=document.createElement("div");r.appendChild(document.createTextNode(e)),n=n||"";var i=document.createElement("div");i.appendChild(document.createTextNode(n));var s=document.createElement("div");return s.appendChild(document.createTextNode(t)),s.innerHTML.replace(RegExp(o(r.innerHTML),"g"),e).replace(RegExp(o(i.innerHTML),"g"),n)}}},function(t,e,n){"use strict";t.exports={element:null}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,i){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s was loaded but did not call our provided callback"),JSONPScriptError:o("JSONPScriptError"," {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/head-additions.html000066400000000000000000000000161465312036400327470ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hero.html000066400000000000000000000012521465312036400310320ustar00rootroot00000000000000
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections/000077500000000000000000000000001465312036400326765ustar00rootroot00000000000000features-icons.html000066400000000000000000000026051465312036400364370ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections
      {{ if .Params.features }}
      {{ $features := .Params.features }} {{ range $i, $e := $features }} {{ $features_count := $e | len }}
      {{ with .image_path }} icon depicting {{ $e.heading }} {{ end }}

      {{ .heading }}

      {{.tagline}}

      {{ .copy }}
      {{ end }}
      {{ end }}
      features-single.html000066400000000000000000000021061465312036400366010ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections{{ if .Params.sections }} {{ range .Params.sections }} {{ $.Scratch.Add "i" 1 }}{{ $i := $.Scratch.Get "i" }}
      {{ end }} {{ end }} installation.html000066400000000000000000000033741465312036400362150ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections

      Install in seconds, build in milliseconds.

      Hugo works on macOS, Windows, Linux, FreeBSD, and others.

      Host on any server or your favorite CDN.

      Hugo Gopher

      macOS

      $ brew install hugo

      Windows

      $ choco install hugo-extended

      Linux

      $ sudo snap install hugo
      open-source-involvement.html000066400000000000000000000033211465312036400403070ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections
      Github Logo
      showcase.html000066400000000000000000000034241465312036400353240ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections

      Showcase

      {{/* NOTE: transitions for this section are in themes/gohugoioTheme/src/css/_carousel.css */}}
      {{ $showcasePages := where .Site.RegularPages "Section" "showcase" }} {{ if $showcasePages }} {{ template "home_showcase_item" (index $showcasePages 0) }} {{ range $p := first 10 ($showcasePages | after 1 | shuffle) }} {{template "home_showcase_item" $p }} {{end}} {{end}}
      {{/* END */}}
      {{/* using Flex to make the button show up on the right side */}} See All
      {{ define "home_showcase_item" }} {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }} {{ with $img }} {{ $big := .Fill "1024x512 top" }} {{ $small := $big.Resize "512x" }} {{with $.Title}}
      {{.}} →
      {{end}}
      {{ end }} {{ end }}sponsors.html000066400000000000000000000045761465312036400354070ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections{{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }} {{ $gtag := .gtag | default "unknown" }} {{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }} {{ $gtag := .gtag | default "unknown" }} {{ $isFooter := (eq $gtag "footer") }} {{ $utmSource := cond $isFooter "hugofooter" "hugohome" }} {{ with .cx.Site.Data.sponsors }}

      Hugo Sponsors

      {{ range .banners }}
      {{ $query_params := .query_params | default "" }} {{ $url := printf "%s?%s%s" .link $query_params (querify "utm_source" (.utm_source | default $utmSource ) "utm_medium" "banner" "utm_campaign" (.utm_campaign | default "hugosponsor") "utm_content" (.utm_content | default "gohugoio")) | safeURL }} {{ $logo := resources.Get .logo }} {{ $gtagID := printf "Sponsor %s %s" .name $gtag | title }} {{ $classes := "" }} {{ if .show_on_hover }} {{ $classes = printf "%s show-on-hover" $classes }} {{ end }} {{ if $isFooter }} {{ $classes = printf "%s f3" $classes }} {{ else }} {{ $classes = printf "%s f1" $classes }} {{ end }} {{ with $logo }} {{ .Content | safeHTML }} {{ else }} {{ .name }} {{ end }}
      {{ end }}
      {{ end }} tweets.html000066400000000000000000000017011465312036400350170ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/home-page-sections
      {{ $interior_classes := $.Site.Params.flex_box_interior_classes }}

      See what others are saying about Hugo…

      {{ if $.Site.Data.homepagetweets }} {{ range first 4 (sort $.Site.Data.homepagetweets.tweet "date" "desc" ) }} {{ end }} {{ end }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/000077500000000000000000000000001465312036400303325ustar00rootroot00000000000000after-body-start.html000066400000000000000000000000351465312036400343260ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks{{/* Deliberately empty */}} before-body-end.html000066400000000000000000000003261465312036400341030ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks{{ if .Page.Store.Get "hasMermaid" }} {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/icon-link.html000066400000000000000000000006441465312036400317640ustar00rootroot00000000000000 maintenance-pages-table.html000066400000000000000000000012501465312036400344600ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials {{ range . }} {{ end }}
      LastMod Link GitHub
      {{ .Lastmod.Format "2006-01-02" }} {{ .Title }} {{ with .GitInfo }}{{ .Subject }}{{ else }}Source{{ end }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/math.html000066400000000000000000000007141465312036400310300ustar00rootroot00000000000000 nav-links-docs-mobile.html000066400000000000000000000007771465312036400341260ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials{{ $currentPage := . }} {{ $menu := .Site.Menus.docs.ByWeight }}
        {{ range $menu }}{{ $post := printf "%s" .Post }}
      • {{ .Name }}
      • {{end}}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links-docs.html000066400000000000000000000022411465312036400327240ustar00rootroot00000000000000{{ $currentPage := . }} nav-links-global-mobile.html000066400000000000000000000006561465312036400344320ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials{{ $currentPage := . }} {{ $menu := .Site.Menus.global }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-links.html000066400000000000000000000030151465312036400317760ustar00rootroot00000000000000{{ $currentPage := . }} {{ $.Scratch.Add "listlinkClasses" "f6 link primary-color-dark hover-white db brand-font ma0 w-100 pv3 ph4" }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-mobile.html000066400000000000000000000011541465312036400321270ustar00rootroot00000000000000
      {{ partial "nav-links-docs-mobile.html" . }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/nav-top.html000066400000000000000000000011021465312036400314530ustar00rootroot00000000000000{{ $currentPage := . }}
      {{ partial "nav-links.html" .}}
      {{ partial "nav-button-open.html" .}}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/opengraph/000077500000000000000000000000001465312036400311725ustar00rootroot00000000000000get-featured-image.html000066400000000000000000000014561465312036400354430ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/opengraph{{ $images := $.Resources.ByType "image" }} {{ $featured := $images.GetMatch "*feature*" }} {{ if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end }} {{ if not $featured }} {{ $featured = resources.Get "/opengraph/gohugoio-card-base-1.png" }} {{ $size := 80 }} {{ $title := $.LinkTitle }} {{ if gt (len $title) 20 }} {{ $size = 70 }} {{ end }} {{ $text := $title }} {{ $textOptions := dict "color" "#FFF" "size" $size "lineSpacing" 10 "x" 65 "y" 80 "font" (resources.Get "/opengraph/mulish-black.ttf") }} {{ $featured = $featured | images.Filter (images.Text $text $textOptions) }} {{ end }} {{ return $featured }}opengraph.html000066400000000000000000000042141465312036400337650ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/opengraph {{- with $.Params.images -}} {{- range first 6 . }}{{ end -}} {{- else -}} {{- $featured := partial "opengraph/get-featured-image.html" . }} {{- with $featured -}} {{- else -}} {{- with $.Site.Params.images }}{{ end -}} {{- end -}} {{- end -}} {{- if .IsPage }} {{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} {{ with .PublishDate }}{{ end }} {{ with .Lastmod }}{{ end }} {{- end -}} {{- with .Params.audio }}{{ end }} {{- with .Params.locale }}{{ end }} {{- with .Site.Params.title }}{{ end }} {{- with .Params.videos }}{{- range . }} {{ end }}{{ end }} {{- /* If it is part of a series, link to related articles */}} {{- $permalink := .Permalink }} {{- $siteSeries := .Site.Taxonomies.series }} {{ with .Params.series }}{{- range $name := . }} {{- $series := index $siteSeries ($name | urlize) }} {{- range $page := first 6 $series.Pages }} {{- if ne $page.Permalink $permalink }}{{ end }} {{- end }} {{ end }}{{ end }} {{- /* Facebook Page Admin ID for Domain Insights */}} {{- with site.Params.social.facebook_admin }}{{ end }} twitter_cards.html000066400000000000000000000017241465312036400346630ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/opengraph{{- with $.Params.images -}} {{ else -}} {{- $featured := partial "opengraph/get-featured-image.html" . }} {{- with $featured -}} {{- else -}} {{- with $.Site.Params.images -}} {{ else -}} {{- end -}} {{- end -}} {{- end }} {{ with site.Params.social.twitter -}} {{ end -}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/page-edit.html000066400000000000000000000003061465312036400317330ustar00rootroot00000000000000Improve this page hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/page-header.html000066400000000000000000000014471465312036400322450ustar00rootroot00000000000000{{ $currentPage := . }} {{ $currentURL := .RelPermalink }}
      • News:
      • {{ range $name, $taxonomy := .Site.Taxonomies.categories }} {{ $link := $name | printf "%s%s" "/categories/" | printf "%s/" }}
      • {{ $name | humanize }}
      • {{ end }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/pagelayout.html000066400000000000000000000023011465312036400322430ustar00rootroot00000000000000{{ $section_to_display := .section_to_display }}
      {{ partial "nav-links-docs.html" .context }}
      {{ $interior_classes := .context.Site.Params.flex_box_interior_classes }}
      {{ $pages := $section_to_display }} {{ if in (slice "functions" "methods") $.context.Type }} {{ $pages = $.context.Pages }} {{ end }} {{ range $pages }} {{ partial "boxes-section-summaries.html" (dict "context" . "classes" $interior_classes "fullcontent" true) }} {{ end }}
      previous-next-links-in-section-with-title.html000066400000000000000000000013261465312036400401240ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials{{ if or .PrevInSection .NextInSection }} {{/* this div holds these a tags as a unit for flex-box display */}} {{ end }} previous-next-links-in-section.html000066400000000000000000000012351465312036400360330ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials{{ if or .PrevInSection .NextInSection }} {{/* this div holds these a tags as a unit for flex-box display */}} {{ end }} previous-next-links.html000066400000000000000000000015251465312036400337670ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials{{if .Prev }} {{ partial "svg/ic_chevron_left_black_24px.svg" (dict "size" "30px") }} {{ .Prev.Title }} {{end}} {{if .Next }} {{ .Next.Title }} {{ partial "svg/ic_chevron_right_black_24px.svg" (dict "size" "30px") }} {{end}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/related.html000066400000000000000000000011051465312036400315120ustar00rootroot00000000000000{{- $heading := "See also" }} {{- $related := site.RegularPages.Related . | first 5 }} {{- if in (slice "functions" "methods") .Type }} {{- $related = slice }} {{- range .Params.action.related }} {{- with site.GetPage (lower .) }} {{- $related = $related | append . }} {{- else }} {{- errorf "The 'related' partial was unable to get page %s" . }} {{- end }} {{- end }} {{- end }} {{- with $related }}

      {{ $heading }}

      {{- end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/right-sidebar.html000066400000000000000000000020441465312036400326210ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-footer.html000066400000000000000000000045301465312036400323370ustar00rootroot00000000000000
      Hugo Logo
      {{ with getenv "REPOSITORY_URL" -}}

      Netlify badge

      {{- end }}
        {{ partial "home-page-sections/sponsors.html" (dict "cx" . "gtag" "footer" "classes_section" "pb3 w-100" "classes_copy" "f7 w-90-ns") }}
       

      The Hugo logos are copyright © Steve Francia 2013–{{ now.Year }}.

      The Hugo Gopher is based on an original work by Renée French.

      {{- partial "nav-mobile.html" . -}}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-manifest.html000066400000000000000000000005771465312036400326560ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html000066400000000000000000000025231465312036400316250ustar00rootroot00000000000000{{ $currentPage := . }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-scripts.html000066400000000000000000000012461465312036400325310ustar00rootroot00000000000000 {{ $scripts := resources.Get "output/js/app.js" }} {{ $isDev := eq hugo.Environment "development" }} {{ if not $isDev }} {{ $scripts = $scripts | fingerprint }} {{ end }} {{ with $scripts }} {{ if $isDev }} {{ else }} {{ end }} {{ $.Scratch.Set "scripts" . }} {{end}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-search.html000066400000000000000000000007241465312036400323070ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/social-follow.html000066400000000000000000000010301465312036400326410ustar00rootroot00000000000000 gohugoio Star hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/summary.html000066400000000000000000000006361465312036400315770ustar00rootroot00000000000000
      {{ humanize .Section }}

      {{ .Title }}

      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/000077500000000000000000000000001465312036400300065ustar00rootroot00000000000000Twitter_Logo_Blue.svg000066400000000000000000000014271465312036400340450ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svgTwitter_Logo_Blue hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/apple.svg000066400000000000000000000010661465312036400316330ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/clipboard.svg000066400000000000000000000010071465312036400324640ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/clippy.svg000066400000000000000000000010071465312036400320250ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/cloud.svg000066400000000000000000000036771465312036400316520ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/content.svg000066400000000000000000000050401465312036400322000ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/design.svg000066400000000000000000000013031465312036400317750ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/exclamation.svg000066400000000000000000000000001465312036400330210ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/facebook.svg000066400000000000000000000007651465312036400323100ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/focus.svg000066400000000000000000000026231465312036400316510ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/freebsd.svg000066400000000000000000000015521465312036400321440ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/functions.svg000066400000000000000000000046061465312036400325450ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/github-corner.svg000066400000000000000000000030011465312036400332710ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/github-squared.svg000066400000000000000000000036241465312036400334600ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gitter.svg000066400000000000000000000106411465312036400320270ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gme.svg000066400000000000000000005270721465312036400313140ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/godoc-icon.html000066400000000000000000000076531465312036400327300ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gopher-2.svg000066400000000000000000000042251465312036400321550ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gopher-front.svg000066400000000000000000000045751465312036400331540ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gopher-homepage.svg000066400000000000000000000157711465312036400336110ustar00rootroot00000000000000 gopher-side_path.svg000066400000000000000000000071261465312036400337000ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gopher-small.svg000066400000000000000000000127171465312036400331310ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/gopher.svg000066400000000000000000000127241465312036400320210ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/hugo-h-only.svg000066400000000000000000002015721465312036400327040ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/hugo.svg000066400000000000000000000021521465312036400314710ustar00rootroot00000000000000 ic_arrow_drop_down.svg000066400000000000000000000002711465312036400343300ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg ic_arrow_drop_up.svg000066400000000000000000000002711465312036400340050ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg ic_chevron_left_black_24px.svg000066400000000000000000000003521465312036400356120ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg ic_chevron_right_black_24px.svg000066400000000000000000000003531465312036400357760ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/idea.svg000066400000000000000000000374061465312036400314430ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/instagram.svg000066400000000000000000000033301465312036400325130ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/javascript.svg000066400000000000000000000044561465312036400327060ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/json.svg000066400000000000000000000074651465312036400315140ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/link-ext.svg000066400000000000000000000016161465312036400322660ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/link-permalink.svg000066400000000000000000000006211465312036400334430ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/md.svg000066400000000000000000000004701465312036400311300ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/mdsolid.svg000066400000000000000000000014771465312036400321730ustar00rootroot00000000000000 Svg Vector Icons : http://www.onlinewebfonts.com/icon hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/newlogo.svg000066400000000000000000000415141465312036400322060ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/sass.svg000066400000000000000000000054261465312036400315070ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/search.svg000066400000000000000000000022011465312036400317670ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/twitter.svg000066400000000000000000000026221465312036400322330ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/website.svg000066400000000000000000000120241465312036400321700ustar00rootroot00000000000000 hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/windows.svg000066400000000000000000000003121465312036400322150ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/svg/yaml.svg000066400000000000000000000022741465312036400314760ustar00rootroot00000000000000iconhugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/tags.html000066400000000000000000000020001465312036400310230ustar00rootroot00000000000000{{ $currentPageUrl := .RelPermalink }} {{ if and .Params.tags .Site.Taxonomies.tags }} {{ $name := index .Params.tags 0 }} {{ $name := $name | urlize }} {{ $tags := index .Site.Taxonomies.tags $name }}
      {{end}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/utilities/000077500000000000000000000000001465312036400312225ustar00rootroot00000000000000get-remote-data.html000066400000000000000000000011011465312036400350010ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/utilities{{/* Parses the serialized data from the given URL and returns a map or an array. Supports CSV, JSON, TOML, YAML, and XML. @param {string} . The URL from which to retrieve the serialized data. @returns {any} @example {{ partial "get-remote-data.html" "https://example.org/foo.json" }} */}} {{ $url := . }} {{ $data := dict }} {{ with resources.GetRemote $url }} {{ with .Err }} {{ errorf "%s" . }} {{ else }} {{ $data = .Content | transform.Unmarshal }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $url }} {{ end }} {{ return $data }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/robots.txt000066400000000000000000000003161465312036400274410ustar00rootroot00000000000000User-agent: * # robotstxt.org - if ENV production variable is false robots will be disallowed. {{ if eq (getenv "HUGO_ENV") "production" }} Disallow: admin/ Disallow: {{ else }} Disallow: / {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/000077500000000000000000000000001465312036400275455ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/articlelist.html000066400000000000000000000006471465312036400327610ustar00rootroot00000000000000 {{ range $ind, $art := $.Site.Data.articles.article }} {{ end }}
      Title Author Date
      {{$art.title | markdownify }} {{ $art.author | markdownify }} {{ $art.date }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/chroma-lexers.html000066400000000000000000000002321465312036400332010ustar00rootroot00000000000000
      {{ range .Site.Data.docs.chroma.lexers }}
      {{ .Name }}
      {{ with .Aliases }}{{ delimit . ", " }}{{ end }}
      {{ end }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/code-toggle.html000066400000000000000000000070271465312036400326320ustar00rootroot00000000000000{{- /* Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats. @param {string} [config] The section of site.Data.docs.config to render. @param {bool} [copy=false] If true, display a copy to clipboard button. @param {string} [file] The file name to display above the rendered code. @param {bool} [fm=false] If true, render the code as front matter. @param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config. @returns {template.HTML} */}} {{- /* Initialize. */}} {{- $config := "" }} {{- $dataKey := "" }} {{- $copy := false }} {{- $file := "" }} {{- $fm := false }} {{- $skipHeader := false }} {{- /* Get parameters. */}} {{- $config = .Get "config" }} {{- $dataKey = .Get "dataKey" }} {{- $file = .Get "file" }} {{- if in (slice "false" false 0) (.Get "copy") }} {{- $copy = false }} {{- else if in (slice "true" true 1) (.Get "copy") }} {{- $copy = true }} {{- end }} {{- if in (slice "false" false 0) (.Get "fm") }} {{- $fm = false }} {{- else if in (slice "true" true 1) (.Get "fm") }} {{- $fm = true }} {{- end }} {{- if in (slice "false" false 0) (.Get "skipHeader") }} {{- $skipHeader = false }} {{- else if in (slice "true" true 1) (.Get "skipHeader") }} {{- $skipHeader = true }} {{- end }} {{- /* Define constants. */}} {{- $delimiters := dict "toml" "+++" "yaml" "---" }} {{- $langs := slice "yaml" "toml" "json" }} {{- $placeHolder := "#-hugo-placeholder-#" }} {{- /* Render. */}} {{- $code := "" }} {{- if $config }} {{- $file = $file | default "hugo" }} {{- $sections := (split $config ".") }} {{- $configSection := index $.Site.Data.docs.config $sections }} {{- $code = dict $sections $configSection }} {{- if $skipHeader }} {{- $code = $configSection }} {{- end }} {{- else if $dataKey }} {{- $file = $file | default $dataKey }} {{- $sections := (split $dataKey ".") }} {{- $code = index $.Site.Data.docs $sections }} {{- else }} {{- $code = $.Inner }} {{- end }}
      {{- with $file }}
      {{ . }}{{ if not $fm }}.{{ end }}
      {{- end }} {{- range $langs }}   {{- end }}
      {{- range $langs }}
      {{- $hCode := $code | transform.Remarshal . }} {{- if and $fm (in (slice "toml" "yaml") .) }} {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }} {{- end }} {{- $hCode = $hCode | replaceRE `\n+` "\n" }} {{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
      {{- if $copy }} {{- /* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}} {{- end }} {{- end }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/code.html000066400000000000000000000023661465312036400313540ustar00rootroot00000000000000{{- /* Renders syntax highlighted code. @param {bool} [copy=false] If true, display a copy to clipboard button. @param {string} [file] The file name to display above the rendered code. @param {string} [lang] The code language of the inner content. @returns {template.HTML} */}} {{- /* Get parameters. */}} {{- $copy := false }} {{- if in (slice "false" false 0) (.Get "copy") }} {{- $copy = false }} {{- else if in (slice "true" true 1) (.Get "copy")}} {{- $copy = true }} {{- end }} {{- $file := or (.Get "file") " " }} {{- $lang := or (.Get "lang") (path.Ext $file | strings.TrimPrefix ".") "text" }} {{- /* Use the go-html-template Chroma lexer for HTML. */}} {{- if eq $lang "html" }} {{- $lang = "go-html-template" }} {{- end }} {{- /* Render. */}}
      {{ $file | htmlUnescape }}
      {{- if $copy }} {{- end }}
      {{- highlight (trim .Inner "\n\r") $lang }}
      datatable-filtered.html000066400000000000000000000016701465312036400340750ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes{{ $package := (index .Params 0) }} {{ $listname := (index .Params 1) }} {{ $filter := split (index .Params 2) " " }} {{ $filter1 := index $filter 0 }} {{ $filter2 := index $filter 1 }} {{ $filter3 := index $filter 2 }} {{ $list := (index (index .Site.Data.docs $package) $listname) }} {{ $fields := after 3 .Params }} {{ $list := where $list $filter1 $filter2 $filter3 }} {{ range $fields }} {{ end }} {{ range $list }} {{ range $k, $v := . }} {{ $.Scratch.Set $k $v }} {{ end }} {{ range $k, $v := $fields }} {{ end }} {{ end }}
      {{ . }}
      {{ $tdContent := $.Scratch.Get . }} {{ if eq $k 3 }} {{ printf "%v" $tdContent | strings.ReplaceRE `\[` "
      1. " | strings.ReplaceRE `\s` "
      2. " | strings.ReplaceRE `\]` "
      " | safeHTML }} {{ else }} {{ $tdContent }} {{ end}}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/datatable.html000066400000000000000000000013611465312036400323550ustar00rootroot00000000000000{{ $package := (index .Params 0) }} {{ $listname := (index .Params 1) }} {{ $list := (index (index .Site.Data.docs $package) $listname) }} {{ $fields := after 2 .Params }} {{ range $fields }} {{ $s := . }} {{ if eq $s "_key" }} {{ $s = "Type" }} {{ end }} {{ end }} {{ range $k1, $v1 := $list }} {{ range $k2, $v2 := . }} {{ $.Scratch.Set $k2 $v2 }} {{ end }} {{ range $fields }} {{ $s := "" }} {{ if eq . "_key" }} {{ $s = $k1 }} {{ else }} {{ $s = $.Scratch.Get . }} {{ end }} {{ end }} {{ end }}
      {{ $s }}
      {{ $s }}
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/deprecated-in.html000066400000000000000000000010071465312036400331350ustar00rootroot00000000000000{{ $_hugo_config := `{ "version": 1 }` }} {{ with .Get 0 }} {{ $version := printf "v%v" (strings.TrimLeft "vV" .) }} {{ $href := printf "https://github.com/gohugoio/hugo/releases/tag/%s" $version }} {{ else }} {{ errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }} {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/eturl.html000066400000000000000000000024241465312036400315700ustar00rootroot00000000000000{{- /* Renders an absolute URL to the source code for an embedded template. Accepts either positional or named parameters, and depends on the embedded_templates.toml file in the data directory. @param {string} filename The embedded template's file name, excluding extension. @returns template.HTML @example {{% et robots.txt %}} @example {{% et filename=robots.txt %}} */}} {{- /* Get parameters. */}} {{- $filename := "" -}} {{- if .IsNamedParams -}} {{- $filename = .Get "filename" -}} {{- else -}} {{- $filename = .Get 0 -}} {{- end -}} {{- /* Render. */}} {{- with $filename -}} {{- with site.Data.embedded_template_urls -}} {{- with index . $filename -}} {{- urls.JoinPath site.Data.embedded_template_urls.base_url . -}} {{- else -}} {{- errorf "The %q shortcode was unable to find a URL for the embedded template named %q. Check the name. See %s" $.Name $filename $.Position -}} {{- end -}} {{- else -}} {{- errorf "The %q shortcode was unable to find the embedded_template_urls data file in the site's data directory. See %s" $.Name $.Position -}} {{- end -}} {{- else -}} {{- errorf "The %q shortcodes requires a named or positional parameter, the file name of the embedded template, excluding its extension. See %s" .Name .Position -}} {{- end -}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/funcsig.html000066400000000000000000000002631465312036400320720ustar00rootroot00000000000000

      Syntax

        {{- .Inner -}}
      
      hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/gomodules-info.html000066400000000000000000000012401465312036400333570ustar00rootroot00000000000000{{ $text := ` Most of the commands for **Hugo Modules** require a newer version of Go installed (see https://golang.org/dl/) and the relevant VCS client (e.g. Git, see https://git-scm.com/downloads/ ). If you have an "older" site running on Netlify, you may have to set GO_VERSION to 1.12 in your Environment settings. For more information about Go Modules, see: * https://github.com/golang/go/wiki/Modules * https://blog.golang.org/using-go-modules ` }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/img.html000066400000000000000000000347461465312036400312250ustar00rootroot00000000000000{{- /* Renders the given image using the given filter, if any. @param {string} src The path to the image which must be a remote, page, or global resource. @param {string} [filter] The filter to apply to the image (case-insensitive). @param {string} [filterArgs] A comma-delimited list of arguments to pass to the filter. @param {bool} [example=false] If true, renders a before/after example. @param {int} [exampleWidth=384] Image width, in pixels, when rendering a before/after example. @returns {template.HTML} @examples {{< img src="zion-national-park.jpg" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="process" filterArgs="resize 400x webp" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="colorize" filterArgs="180,50,20" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true exampleWidth=400 >}} When using the text filter, provide the arguments in this order: 0. The text 1. The horizontal offset, in pixels, relative to the left of the image (default 20) 2. The vertical offset, in pixels, relative to the top of the image (default 20) 3. The font size in pixels (default 64) 4. The line height (default 1.2) 5. The font color (default #ffffff) {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Text" filterArgs="Zion National Park,25,250,56" example=true >}} When using the padding filter, provide all arguments in this order: 0. Padding top 1. Padding right 2. Padding bottom 3. Padding right 4. Canvas color {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Padding" filterArgs="20,50,20,50,#0705" example=true >}} */}} {{- /* Initialize. */}} {{- $alt := "" }} {{- $src := "" }} {{- $filter := "" }} {{- $filterArgs := slice }} {{- $example := false }} {{- $exampleWidth := 384 }} {{- /* Default values to use with the text filter. */}} {{ $textFilterOpts := dict "xOffset" 20 "yOffset" 20 "fontSize" 64 "lineHeight" 1.2 "fontColor" "#ffffff" "fontPath" "https://github.com/google/fonts/raw/main/ofl/lato/Lato-Regular.ttf" }} {{- /* Get and validate parameters. */}} {{- with .Get "alt" }} {{- $alt = .}} {{- end }} {{- with .Get "src" }} {{- $src = . }} {{- else }} {{- errorf "The %q shortcode requires a file parameter. See %s" .Name .Position }} {{- end }} {{- with .Get "filter" }} {{- $filter = . | lower }} {{- end }} {{- $validFilters := slice "autoorient" "brightness" "colorbalance" "colorize" "contrast" "dither" "gamma" "gaussianblur" "grayscale" "hue" "invert" "none" "opacity" "overlay" "padding" "pixelate" "process" "saturation" "sepia" "sigmoid" "text" "unsharpmask" }} {{- with $filter }} {{- if not (in $validFilters .) }} {{- errorf "The filter passed to the %q shortcode is invalid. The filter must be one of %s. See %s" $.Name (delimit $validFilters ", " ", or ") $.Position }} {{- end }} {{- end }} {{- with .Get "filterArgs" }} {{- $filterArgs = split . "," }} {{- $filterArgs = apply $filterArgs "trim" "." " " }} {{- end }} {{- if in (slice "false" false 0) (.Get "example") }} {{- $example = false }} {{- else if in (slice "true" true 1) (.Get "example")}} {{- $example = true }} {{- end }} {{- with .Get "exampleWidth" }} {{- $exampleWidth = . | int }} {{- end }} {{- /* Get image. */}} {{- $ctx := dict "page" .Page "src" $src "name" .Name "position" .Position }} {{- $i := partial "inline/get-resource.html" $ctx }} {{- /* Resize if rendering before/after examples. */}} {{- if $example }} {{- $i = $i.Resize (printf "%dx" $exampleWidth) }} {{- end }} {{- /* Create filter. */}} {{- $f := "" }} {{- $ctx := dict "filter" $filter "args" $filterArgs "name" .Name "position" .Position }} {{- if eq $filter "autoorient" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.AutoOrient }} {{- else if eq $filter "brightness" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Brightness (index $filterArgs 0) }} {{- else if eq $filter "colorbalance" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage red" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage green" "argValue" (index $filterArgs 1) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage blue" "argValue" (index $filterArgs 2) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.ColorBalance (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "colorize" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "hue" "argValue" (index $filterArgs 0) "min" 0 "max" 360) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "saturation" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 2) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Colorize (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "contrast" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Contrast (index $filterArgs 0) }} {{- else if eq $filter "dither" }} {{- $f = images.Dither }} {{- else if eq $filter "gamma" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "gamma" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Gamma (index $filterArgs 0) }} {{- else if eq $filter "gaussianblur" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.GaussianBlur (index $filterArgs 0) }} {{- else if eq $filter "grayscale" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Grayscale }} {{- else if eq $filter "hue" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "shift" "argValue" (index $filterArgs 0) "min" -180 "max" 180) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Hue (index $filterArgs 0) }} {{- else if eq $filter "invert" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Invert }} {{- else if eq $filter "opacity" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "opacity" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Opacity (index $filterArgs 0) }} {{- else if eq $filter "overlay" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" (index $filterArgs 0) "name" .Name "position" .Position }} {{- $overlayImg := partial "inline/get-resource.html" $ctx }} {{- $f = images.Overlay $overlayImg (index $filterArgs 1 | float ) (index $filterArgs 2 | float) }} {{- else if eq $filter "padding" }} {{- $ctx = merge $ctx (dict "argsRequired" 5) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Padding (index $filterArgs 0 | int) (index $filterArgs 1 | int) (index $filterArgs 2 | int) (index $filterArgs 3 | int) (index $filterArgs 4) }} {{- else if eq $filter "pixelate" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "size" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Pixelate (index $filterArgs 0) }} {{- else if eq $filter "process" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Process (index $filterArgs 0) }} {{- else if eq $filter "saturation" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Saturation (index $filterArgs 0) }} {{- else if eq $filter "sepia" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sepia (index $filterArgs 0) }} {{- else if eq $filter "sigmoid" }} {{- $ctx = merge $ctx (dict "argsRequired" 2) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "midpoint" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "factor" "argValue" (index $filterArgs 1) "min" -10 "max" 10) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sigmoid (index $filterArgs 0) (index $filterArgs 1) }} {{- else if eq $filter "text" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" $textFilterOpts.fontPath "name" .Name "position" .Position }} {{- $font := or (partial "inline/get-resource.html" $ctx) }} {{- $fontSize := or (index $filterArgs 3 | int) $textFilterOpts.fontSize }} {{- $lineHeight := math.Max (or (index $filterArgs 4 | float) $textFilterOpts.lineHeight) 1 }} {{- $opts := dict "x" (or (index $filterArgs 1 | int) $textFilterOpts.xOffset) "y" (or (index $filterArgs 2 | int) $textFilterOpts.yOffset) "size" $fontSize "linespacing" (mul (sub $lineHeight 1) $fontSize) "color" (or (index $filterArgs 5) $textFilterOpts.fontColor) "font" $font }} {{- $f = images.Text (index $filterArgs 0) $opts }} {{- else if eq $filter "unsharpmask" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "amount" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "threshold" "argValue" (index $filterArgs 2) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.UnsharpMask (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- end }} {{- /* Apply filter. */}} {{- $fi := $i }} {{- with $f }} {{- $fi = $i.Filter . }} {{- end }} {{- /* Render. */}} {{- if $example }}

      Original

      {{ $alt }}

      Processed

      {{ $alt }} {{- else -}} {{ $alt }} {{- end }} {{- define "validate-arg-count" }} {{- $msg := "When using the %q filter, the %q shortcode requires an args parameter with %d %s. See %s" }} {{- if lt (len .args) .argsRequired }} {{- $text := "values" }} {{- if eq 1 .argsRequired }} {{- $text = "value" }} {{- end }} {{- errorf $msg .filter .name .argsRequired $text .position }} {{- end }} {{- end }} {{- define "validate-arg-value" }} {{- $msg := "The %q argument passed to the %q shortcode is invalid. Expected a value in the range [%v,%v], but received %v. See %s" }} {{- if or (lt .argValue .min) (gt .argValue .max) }} {{- errorf $msg .argName .name .min .max .argValue .position }} {{- end }} {{- end }} {{- define "partials/inline/get-resource.html" }} {{- $r := "" }} {{- $u := urls.Parse .src }} {{- $msg := "The %q shortcode was unable to resolve %s. See %s" }} {{- if $u.IsAbs }} {{- with resources.GetRemote $u.String }} {{- with .Err }} {{- errorf "%s" . }} {{- else }} {{- /* This is a remote resource. */}} {{- $r = . }} {{- end }} {{- else }} {{- errorf $msg $.name $u.String $.position }} {{- end }} {{- else }} {{- with .page.Resources.Get (strings.TrimPrefix "./" $u.Path) }} {{- /* This is a page resource. */}} {{- $r = . }} {{- else }} {{- with resources.Get $u.Path }} {{- /* This is a global resource. */}} {{- $r = . }} {{- else }} {{- errorf $msg $.name $u.Path $.position }} {{- end }} {{- end }} {{- end }} {{- return $r}} {{- end -}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/imgproc.html000066400000000000000000000026451465312036400321020ustar00rootroot00000000000000{{- /* Renders the given image using the given process specification. @param {string} (positional parameter 0) The path to the image, relative to the current page. The image must be a page resource. @param {string}} (positional parameter 1) The image processing specification. @returns template.HTML @example {{< imgproc "sunset.jpg" "resize 300x" />}} */}} {{- with $.Get 0 }} {{- with $i := $.Page.Resources.Get . }} {{- with $spec := $.Get 1 }} {{- with $i.Process . }}
      {{- with $.Inner }} {{ . }} {{- else }} {{ $spec }} {{- end }}
      {{- end }} {{- else }} {{- errorf "The %q shortcode requires a positional parameter (1) containing the image processing specification. See %s" $.Name $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a positional parameter (0) indicating the image path, relative to the current page. See %s" $.Name $.Position }} {{- end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/include.html000066400000000000000000000012371465312036400320610ustar00rootroot00000000000000{{- /* Renders the page using the RenderShortcode method on the Page object. You must call this shortcode using the {{% %}} notation. @param {string} (positional parameter 0) The path to the page, relative to the content directory. @returns template.HTML @example {{% include "functions/_common/glob-patterns" %}} */}} {{- with .Get 0 }} {{- with site.GetPage . }} {{- .RenderShortcodes }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a positional parameter indicating the path of the file to include. See %s" .Name .Position }} {{- end }} list-pages-in-section.html000066400000000000000000000100221465312036400344650ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes{{- /* Renders a description list of the pages in the given section. Render a subset of the pages in the section by specifying a predefined filter, and whether to include those pages. Filters are defined in the data directory, in the file named page_filters. Each filter is an array of paths to a file, relative to the root of the content directory. Hugo will throw an error if the specified filter does not exist, or if any of the pages in the filter do not exist. The definition term elements (dt) have an id attribute derived from the title of the page. This is probably unique, because pages of the same title in the same section is unlikely. If you render a complete list on a page, then call the shortcode again to render a subset, you will generate duplicate element ids. In this case, set omitElementIDs to true for the subset. @param {string} path The path to the section. @param {string} [filter=""] The name of filter list. @param {string} [filterType=""] The type of filter, either include or exclude. @param {string} [omitElementIDs=false] Whether to omit dt element ids. @param {string} [titlePrefix=""] The string to prepend to the link title. @returns template.HTML @example {{< list-pages-in-section path=/methods/resources >}} @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}} @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}} @example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo omitElementIDs=true >}} */}} {{- /* Initialize. */}} {{- $filter := or "" (.Get "filter" | lower)}} {{- $filterType := or (.Get "filterType") "none" | lower }} {{- $filteredPages := slice }} {{- $titlePrefix := or (.Get "titlePrefix") "" }} {{- $omitElementIDs := false }} {{- /* Get boolean parameters. */}} {{- if in (slice "false" false 0) (.Get "omitElementIDs") }} {{- $omitElementIDs = false }} {{- else if in (slice "true" true 1) (.Get "omitElementIDs")}} {{- $omitElementIDs = true }} {{- end }} {{- /* Build slice of filtered pages. */}} {{- with $filter }} {{- with index site.Data.page_filters . }} {{- range . }} {{- with site.GetPage . }} {{- $filteredPages = $filteredPages | append . }} {{- else }} {{- errorf "The %q shortcode was unable to find %q as specified in the page_filters data file. See %s" $.Name . $.Position }} {{- end }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find the %q filter in the page_filters data file. See %s" $.Name . $.Position }} {{- end }} {{- end }} {{- /* Render */}} {{- with $sectionPath := .Get "path" }} {{- with site.GetPage . }} {{- with .RegularPages }}
      {{- range $page := .ByTitle }} {{- if or (and (eq $filterType "include") (in $filteredPages $page)) (and (eq $filterType "exclude") (not (in $filteredPages $page))) (eq $filterType "none") }} {{- $linkTitle := .LinkTitle }} {{- with $titlePrefix }} {{- $linkTitle = printf "%s%s" . $linkTitle }} {{- end }} {{- $idAttribute := "" }} {{- if not $omitElementIDs }} {{- $id := path.Join .File.Dir .File.ContentBaseName | replaceRE `[\|/]` ":" | lower }} {{- $idAttribute = printf " id=%q" $id }} {{- end }}
      {{ $linkTitle }}
      {{- $page.Description | $page.RenderString }}
      {{- end }} {{- end }}
      {{- else }} {{- warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }} {{- end }} module-mounts-note.html000066400000000000000000000002371465312036400341310ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodesAlso see [Module Mounts Config](/hugo-modules/configuration/#module-configuration-mounts) for an alternative way to configure this directory (from Hugo 0.56). hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html000066400000000000000000000031451465312036400316330ustar00rootroot00000000000000{{- /* Renders a "new in" button indicating the version in which a feature was added. When comparing the current version to the specified version, the "new in" button will be hidden if any of the following conditions is true: - The major version difference exceeds the majorVersionDiffThreshold - The minor version difference exceeds the minorVersionDiffThreshold @param {string} version The semantic version string, with or without a leading v. @returns {template.HTML} @example {{< new-in 0.100.0 >}} */}} {{- /* Set defaults. */}} {{- $majorVersionDiffThreshold := 0 }} {{- $minorVersionDiffThreshold := 30 }} {{- $displayExpirationWarning := true }} {{- /* Render. */}} {{- with $version := .Get 0 | strings.TrimPrefix "v" }} {{- $majorVersionDiff := sub (index (split hugo.Version ".") 0 | int) (index (split $version ".") 0 | int) }} {{- $minorVersionDiff := sub (index (split hugo.Version ".") 1 | int) (index (split $version ".") 1 | int) }} {{- if or (gt $majorVersionDiff $majorVersionDiffThreshold) (gt $minorVersionDiff $minorVersionDiffThreshold) }} {{- if $displayExpirationWarning }} {{- warnf "This call to the %q shortcode should be removed: %s. The button is now hidden because the specified version (%s) is older than the display threshold." $.Name $.Position $version }} {{- end }} {{- else }} New in v{{ $version }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a positional parameter (version). See %s" .Name .Position }} {{- end -}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/note.html000066400000000000000000000002111465312036400313720ustar00rootroot00000000000000{{ $_hugo_config := `{ "version": 1 }` }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/quick-reference.html000066400000000000000000000020521465312036400335020ustar00rootroot00000000000000{{/* Renders the child sections of the given top-level section, listing each child's immediate descendants. @param {string} section The top-level section to render. @returns template.HTML @example {{% quick-reference section="functions" %}} */}} {{ $section := "" }} {{ with .Get "section" }} {{ $section = . }} {{ else }} {{ errorf "The %q shortcodes requires a 'section' parameter. See %s" .Name .Position }} {{ end }} {{/* Do not change the markdown indentation, and do not remove blank lines. */}} {{ with site.GetPage $section }} {{ range .Sections }} ## {{ .LinkTitle }} {{ .RawContent }} {{ range .Pages }} {{ $aliases := "" }} {{ if eq .Section "functions" }} {{ with .Params.action.aliases }} {{ $aliases = delimit . " or " }} {{ end }} {{ end }} [{{ .LinkTitle }}]({{ .RelPermalink }}) {{ with $aliases }}({{ . }}){{ end }} : {{ .Description }} {{ end }} {{ end }} {{ else }} {{ errorf "The %q shortcodes was unable to find the %q section. See %s" .Name $section .Position }} {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/readfile.html000066400000000000000000000016411465312036400322100ustar00rootroot00000000000000{{- $highlight := or (.Get "highlight") "" }} {{- $markdown := false }} {{- if in (slice "false" false 0) (.Get "markdown") }} {{- $markdown = false }} {{- else if in (slice "true" true 1) (.Get "markdown") }} {{- $markdown = true }} {{- end }} {{- with .Get "file" }} {{- if os.FileExists . }} {{- with os.ReadFile . }} {{- $content := trim . "\n\r" }} {{- if $markdown }} {{- $content | markdownify }} {{- else if $highlight }} {{- highlight $content $highlight }} {{- else }} {{- $content | safeHTML }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to read %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }} {{- end }} {{- else }} {{- errorf "The %q shortcode requires a 'file' parameter. See %s" $.Name $.Position }} {{- end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/todo.html000066400000000000000000000000301465312036400313710ustar00rootroot00000000000000{{ if .Inner }}{{ end }}hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/000077500000000000000000000000001465312036400272045ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/list.html000066400000000000000000000043231465312036400310470ustar00rootroot00000000000000{{ define "main" }}

      {{ .Title }}

      {{ .Content }}
      {{ range (.Paginate (.Pages | shuffle ) 20).Pages }} {{template "showcase_items" .}} {{ end }}
      The Showcase articles are copyrighted by their respective content authors. Any open source license will be attached.
      {{ end }} {{define "showcase_items"}}
      {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }} {{ with $img }} {{ $big := .Fill "1024x512 top" }} {{ $small := $big.Resize "512x" }} {{end}}
      {{/* the margin aligns to the bottom */}}

      {{- .Title -}}

      {{end}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/showcase/single.html000066400000000000000000000064451465312036400313640ustar00rootroot00000000000000{{ define "title" }} Showcase: {{ .Title }} {{ end }} {{ define "main" }}
      {{template "sc-details" .}}
      {{template "sc-main-column" .}}
      {{/* bottom row */}} Last Update: {{ .Lastmod.Format "January 2, 2006" }}
      {{ partial "page-edit.html" . }}
      The Showcase articles are copyright the content authors. Any open source license will be attached.
      {{ end }} {{define "sc-main-column"}} {{ $img := (.Resources.ByType "image").GetMatch "*featured*" }} {{ with $img }} {{ $big := .Fill "1024x512 top" }} {{ $small := $big.Resize "512x" }} {{ $img.Title }} {{ end }} {{end}} {{define "sc-details"}} {{end}} {{define "sc-navigation"}} {{$section := where .Site.RegularPages "Section" .Section}} {{$number_of_entries := $section | len}} {{end}} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/template-func/000077500000000000000000000000001465312036400301345ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/template-func/page.html000066400000000000000000000033611465312036400317410ustar00rootroot00000000000000{{ $pkg := .Params.package}} {{ $funcs := index site.Data.docs.tpl.funcs $pkg }} {{ range $k, $v := $funcs }} {{ if $v.Description }} {{ $func := printf "%s.%s" $pkg $k }} {{ $id := $func | anchorize | safeURL }}

      {{ $func }}

      {{ with $v.Description }}

      {{ . | $.RenderString | safeHTML }}

      {{ end }}

      Syntax

      {{ $pkg }}.{{ $k }} {{ with $v.Args }} {{ delimit $v.Args ", "}} {{ end }}
      {{ if $v.Examples }}

      Examples

      {{ end }} {{ range $v.Examples }} {{ $input := index . 0 }} {{ $result := index . 1 }} {{ $example := printf "%s ---> %s" $input $result }} {{ highlight $example "go-html-template" "" }} {{ end }} {{ with $v.Aliases }}

      Aliases

      {{ delimit . ", "}}

      {{ end }} {{ end }} {{ end }} hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/package.json000066400000000000000000000016531465312036400261630ustar00rootroot00000000000000{ "name": "gohugo-default-styles", "version": "1.1.0", "description": "Default Theme for Hugo Sites", "main": "index.js", "repository": "", "author": "budparr", "license": "MIT", "scripts": { "build": "NODE_ENV=production webpack", "build-dev": "NODE_ENV=development webpack --progress --watch", "start": "npm run build-dev" }, "devDependencies": { "clean-webpack-plugin": "^1.0.0", "clipboard": "^2.0.4", "css-loader": "^1.0.1", "docsearch.js": "^2.6.1", "file-loader": "^2.0.0", "glob-all": "^3.1.0", "lazysizes": "^5.3.2", "mini-css-extract-plugin": "^0.4.4", "postcss": "^7.0.5", "postcss-cssnext": "^3.1.0", "postcss-import": "^12.0.1", "postcss-loader": "^3.0.0", "purgecss-webpack-plugin": "^1.3.1", "scrolldir": "^1.4.0", "tachyons": "^4.7.0", "typeface-muli": "0.0.54", "webpack": "^4.25.1", "webpack-command": "^0.4.2" } } hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/000077500000000000000000000000001465312036400251575ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/android-chrome-144x144.png000066400000000000000000000166741465312036400315250ustar00rootroot00000000000000PNG  IHDRFgAMA a cHRMz&u0`:pQ<bKGDtIME]]IDATxYpyHWM[^3=3In%g*˭8=x_Sc[y/qblj]S+\ۙxZJWHq  ($@wXjO?lٲW"{=l<b'>## Pp75` 7G#v`:mF-DGaXtH47i=@m`C{Ɇ.q)(OS'h@ftЀ#ҡh c8:8N.gQ צV< 5}PmR\ϟ>5W)2 G$C 6'Ý=ZQNh,dHcQCN vS kt s ?8z8DVO#F4њ?:ush+OF ^$Sd.R"K.ޫڧ_̕frHk:Hh9, "~z#o-F^wR. />]x[H m5cpA:stpt>u8"GJ3_w_ԖԱA:iz{%v5rIT>_MtjKa;7/~(~pU){?wm# P/mD?};saCEYXC(܂H,`d=8E2r5 ԫUXr,~GJ}|QyBiȮka9][Ț/2sʊ Ӊ£pt :2%Ӑ$ɪi?;a7gz&"Cb z:86tLsW(Nc`YP<>>+Gb xlZ5*nWK? 3yj @͂pm^|Qmkմ!:C òփhB6T;^\qiE,6 יǩs?_f CAyc#E#p8]@$dSidIk5P8-?x8]ޓY9ZWwm2z-?Dސ;Lf$U@(Fxl 4GK%ZL|t,[Vrw.W==Aw* $gk]k7=^טw@ˊi90 @HAPMCXB*@1,lkgoݼV#Z1u]6ҕJ[3<.;h$`DW@UU2YqT-,PּO|઼КRk佶YL>f&>i$N!֕F1<,?WpE$YYMA׭+pM:(뭙ҿ,OkpHϣ"t*? :|+)7\"3C90"c1^O ]MTmE5(E*+Q_])8JhoR4&<ƍEʪ<7* U>;,? z+?W5"|x|2R =(}z{e@{Qy=Gw_*q$d~ZNB{凡08;ഋ(\z DJylާ?>$?&,NG=A趀ggdBYϝ2s2{;QP8].F"嶰_Ez$4$ѲMrh/3!o~?Mh1D;ygWNn޾]+˱B  @mvu WT;,YD6"Rxlb,ҜUrweD֗WJ?+F;vڝ 궧y0>qx+D~Xo7|?6}.wSv 9$"B@o qH o# <~{<(rH(Fhc^ZG߼}_tHRx* PUr^ UFc^Fw0*r dm#( T/ofZi[z\>+PJ~OAAX0N Jw;.JxL<  XJ0V??"fmm:5;C҉!mÆaaY?ֲH}O]s"ĻJb=ﷆP7)l7aHϫ.ލB#Q86 E)XA(w(l2jba5"ve^]ר`zZ!,p$x n12N#H$MA-jt~C6D!J)҃y&@tl 㓇LkǃɩS$߬t%T{ѷ-miYl׾ހщ1A6щ1xuc#OW  `3ݽ"ulY+JhveuE X\5^XwiU=JQ a@mj/8=›l -SeJ6@LȖ)2% [dd˔ll -SeJG gL@I'Z ky::,i +.9`'@.^hy [Ȗ)2% [dd˔ll -SeJ6@LȖ)RFLyZb0jM@eRqpoi8.g{}FT Xl:]Sq*YH5&}&D2% [dd˔ll -SeJ6@LȖ)2% [dd˔ll -SeJ6@LȖ)2Dkn?Qo8@B?["TuH42kд>NcEy{H@O5m V ^C>ÿ{S=C) V^F5#a,kgETUE.Akh>t 5^D =G!Et{ !6HfE(( H(f󠚆^i-{;(\ JdQ.F~Ej*2$4YnR~_t"5ZEe>J@ R+q9cE#p86H݊Ȓl*LbZ T-VZY;wJmţ-AVʋȯ!:?vjb.Jb Ҿih+BQh0;KҚPfOdw%~ @rZp<>sobΏZ7}NXB:@a- UUMEơ ^كd4e{8]s{-TIPhl*rP4\{3D@U~!@MJ`!R(0ZzA:2IdS)Hd~iţ.߹PNfѸ(It(6T̊wAv+cΫN̔-Hs "Q#`MaP 7Z3.B2r5U+ ! Ζcu\}=o-߄4??9~ψqc0e??;QQȫ:Lfe |rv0m?m7˸(Z"!(E1ʋWȬ&!KU 1UJ7* tG K9BMw'sg:/.* PˣZ*c((+B+ SOIw%k)ȣPHR  = 5Y -I'Kz- U&d6j| FtlH2$h 8 ZlbKulT~ۗ1X7zRE7ש%2q\,/0 \n7P~XyLZ ;Sѣ Ҽ( F7? ؀@FM@:DOLH @)h y|="`$IVs:tAe!B@)P*+ HCPr2,/ݼ\/JA<6S< %[)CR1CѠ:P{2#U^_,}&\+Qa-J`$H,m55j*҉r :S*G_<8/ޮ{h4~$]E=uB-℘WoF_傜¸M]&HR|p`}GB K҉U_D1̭"@rӓ_׻8#/(NdMQ8ңN;<뾧8~㏍z}ӧ\sspp< cf%]g9ͶRPB!0O"MSX!OR2_~>h|`P7c=NOc}HƵ!A $VOO9qht蠠`YPѱ<~޴xln`j(CLP~hv[Sq#8Fs^+՗")\刔Q/&j(PW!0Cиqj\,v5VwKQ(N.A2*`*2^ɢjte,OziMHUZFĥEEx m#ֲj 2UjUKҊ|7 Q NWfvHk,6Қ71uhevSP0𯷍0 cHQ .rH,9AL姷ϕ?_>%/Qѥ}vXe2@{'c c譇΋OEnh!˱nEǜ?jjtGc+XqP}oiyz@VE#`8[+}tvI>Tbf"((8`8plQMCZC&\f`}JTGw^|zaɴs؍?ңt:4]Zsr}3C~P\nx>܍JXR(A떀À/&\ l?-Zԋ:iJE<Шo"Xu!= .젵pavcKVjO{ ogf r&Oh QAt3Ӛwuo _X\9FA hɫ&y|vG2 Ni9۟>e$Ư]?dUYmĻ.ȏ`>GUz܇ڦ,NGCTxM]y{/9.$@ᨘ(oϔn9vpӕc4)?X}R&" C O= $,(tCB@Yw|ɴIX!߳ڷ,bLki&y,W_zTa+"ZhkOT\<_ :^U;龎:~@d, 7g&/-z=w_pHy_vIGԡ9Hk} .hs}voDG%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/android-chrome-192x192.png000066400000000000000000000240301465312036400315140ustar00rootroot00000000000000PNG  IHDRRlgAMA a cHRMz&u0`:pQ<bKGDtIME]&IDATxwם翷ADQ,JԾyi;I'$ӝg潏Ϝ3O/:O4/st$vH.JBR\@RC"RR HOB۲{{0 ` d/0;E?n?}] %0X_fhK0t&o=<h;?3=&.LlFfb(gB&ioiM+o @w˿{$ȏ8PP.0] Mv |A/A{wYE;A(l0& Z>>es]aA.Zd<ߜj}_NƝ?rKEP)*er{9R|B0fVtC9vPWTӼM޿{v"6`FZ6a{mlDc+O۾)PP% & ~yDK*2t!`A0 |zc;vww?FD-ljag򿉝>0ah yß YWQ^ӝꍹ{/g4 l+ͳy1 L&(p5IqRz~T~op$H3كkW]0"C洈Py9ݱO#/a('~!shO%B˿99 X}/=Fc`,`_O'?rӔRQ'!J٦>\{xF0>( anX{lkn;BI^Ʃ-W{ uW7BTvj=+O7gn&+@QlP3_`5γgo_* uT&޿srOtAj! J{7sGgw1ځx^<8ZPO~喰-2 Z/8|Z]g f_W IH+㘭bs:Ĵ4_q3ǁ:9hP̺O'>ly0[ERZ/PYsϟt7~\@6e>! qkͩu=Uiecnw(&RB& I7aݯ~P):[K|r)j؞^pu~?ˎ7ynkRP0Bp8S MKH#JAKElM3 WߗJ?s|G  @ E#rW>|臑;B&)(G o(CMӐd#͂jr!,Մ_3ɟϋOEVq GϷGaIێ7 t.FG ΁!eDʥ2@Bm*Wmj҇Xl`^?84@[J |Q+*U';aG0FhtvG-~r==*U$cH'U% e'|%}0Vɗ  YR[Ł@+L=wK C?)ٿNT [֤y cp{= J)J"kQRiڋRG̿#s"#-:𶊾@kO&sG5 F Z~K!^;6- `_O?PΑL?}tpn1CaB( kQEDŕʿZQ}7Z_*UIe 7fzU=Ϸ]Vvl{~#VǑ!U=irʍHმWJ!*ElE9w~yv%/&Q8ݮ56JH#JC*8+& ݻ$ݬyH̾U\TUu_:ywz`_x^qxۥ^yP堩Z/ڦPm}Wϟ<_A*z&VOY /[M/P?}:((!p]"n;Я&#J!]GT[M!lo^*:1I,@mM߸ډ-OExRjvD Á`$6 aVZ#O@V{6%H%œbcqGmSK.5ךN ?tK9jBo v!4:p] F8YI$\_GTַkZ=#N)ٕ{aw9`VivMv/HwHn[u@*ѨmM݆pB*UŐI$Pjp )f'*u l:V 8gof=?/ Z~ʚ;y~b>:L$-nX=^嶊nQ[?#T;wl27E{׋(| a(|:* EۦrJMԖC}:UBxn/2;Aw;Z廾ŷ}xRXnS&.'B##m Ro֤2r@owb/mA[w$zqumI Cfy~'Jz DJlC.V>=yozCpm8m41mJMv_:=px X<?c#P5tE|iUڝ.muQ?v"jv;(wyܺ}axMR+3~7n +oooL{Q.vQPwB u%Op$jVj(al: tԧ1os)%hHxoY.F~__fMv6} ndHH␤*)ڶ&{GsoV"h)jg6fc8'X Fhl.O[<NN k:WvG !LAQ;NQp럖T5#py<T&7Goz!@Ec7!ip JkGD,(np$.'`tByG ő![`!L| 0~t D][y~aǎnET!Dx}`[}V`N6,nB<^"c 7OYcp0N u VAQpqhMK@@C-οUt <6`$ fR،h &vՅ__F|cm&vyV_ AN)7@0 !z ul^mX dh ca` 4L 100&@h ca` 4L 100&@h ca` 4L 100>@1;wh J|MF!RhWIjRm/cjR 5I_$ ln9$ dx@4b1T+ Z AӴq%C@P.Y3@e/\,uk(xtt2 #GtGCSB@TJ%ĖWI=1:T HǓ(`(ag"8*!H ToЉ.-Rsy&!PUt(ʅ4vocn3ۤ]?Rr_ PQ) <6 BiJ<(,TEKc#~w9rBIVsh$RX|4稖"V(K\s,>G&h]h\PB=$wm33>\ӹuc%n}* Bcal/Zl2dtr’B8-WsbZNPTV>Jy_jv;, @Jg ȥR7`~R,(fPgx>LЬ7>'ŏfjc< -`#Tr^vj㏀@UTbqr9#a tԯp%($ $3}_. AZ"!OV]6MCZ}˥S;PV$j Ry3K(Ԫb˫gA(A@?u> T=jJgA4f"+$HP)@iۚ;~,QKm}~%/YPslhyRoxp4 cxtuY*4Kqwhv2Z\?t(NzԐhB.ZlN#<8ZqjمgKFq((C zQCW!_qƁfƠ[(~$>tD>pZQ"ΠT,"0<(\/AvƻT4{_b :ܓtGQY WNWt|@zy0ꀖi)=q^z7hH)YYt7ml2z |<_Gn9prW R>?ѿhq6f'X"0$";Q~>Q[YKKDwXtS-!"D !(E1k Ӛ>ɡTo~r_J7c3BЃݟVGT蹿QЋc;g^,{!kɧ̵GW#)%N۫ȍPP6!FGpv]WKe$c$k5 \)\?l23<ڗu7X;14Y$}7'r>DSKե(g Bۥfbacpy\ư\: Ԕ_^jo_^+)5N#Y}lA#3^C D賁1#:5f7ы=׎-/JBXm3x|^۵aSNeFQA<8JbqRulzaF?hY/a3W|;J{^W4 uo oRsxIQLHjs*lVB_$I(dUl"D]M2b ' 6l|˹?_.oG M=?~}]a60@ਿOI nFolq,~z-l`6lNPx1L\~vly QxڍFTUC!Erm\o 7gG eoiyA1ձ$7OEEv4O< ɳ]L]x.k"] Fhl.GwGE$1d)(ba RcpMHw]#i,p- k&S}`8-ReS>yK/T).f2Z>xA} `k6xR=5gr犷,)8@8ǫfm[@nS .%hxifqy4{+^PBh\?0f !h.sH~^#^E "4:Y۴,HǐKd1SkGg7Y*7~_@365ZZ`}Ҽ`bbvm*.gtRlzaS& P*gώKbfA냂:;xfP^ըj}}v!46PM|rMO_R*t#_ޟ-V|{kk}6lF%- Ņه+/-.;|*xivmGM6OY-߇ y~šNoΝ~(dt4V؃œXPU󆟓/_O5EZ  a8._@U5TKed)di=/6ZZH>O l,p{j_s8`tV+cǙ󏽯,UlDM_I( d3x逺td9e^yTg_4E1,ښ~~ɁA-m`L^28om^ꝯf_ ښ}m_&^@Wl i2M,/{~u2<)pT!p PDTÕN>[=>}Ey~ɡ.mfy[斴‰g}hҶi7!(Gx@Zzz\q|g<߼v=γ:t>0ҢڦnJǓΫg%m U7M<,ܼr8!YۚF7pҝa`ǴU:u(oEd;-,U}uEv,};ٮCb6ofǶ(M^2OsN9n[NߕU[H/֕! ez&#w!̴i03Dg8/.shzpDҍ57Ic{<>nmS7/3Nx/ܐfi8ZviGśf+7;)B0c 7^!.y_=sjv́fCie:wL]ݫ}aٚvXl9ґrKV*v5xG}=[9:WJLmy~fƵwc`g3-ڦ+G||~B/)c4+n: &mfg>z>/x+BӮyp(8t֙(Vs)k&&y]l&5?\8~mO_h 濚Tk0`,Y,Ϸ&.b0Pl߫eXw"='[%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/android-chrome-256x256.png000066400000000000000000000353601465312036400315260ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGDtIME]9IDATxYwcǕ8#rdLKJ dU\.U]]^ G}ݫv.]nٖ풥T*I )> D$H?#)y8;v@0{I߀`|L&7y? l.c 1Bp00la.Bo /f `0 i"}_ A3l^C273|UA8=Nߟm"0"gxH[z9y7|Ik$ s(M)k'C҆k66Ġ_D5^\8ʑIݰ< 7־H8C<0N`srIo\GO`7;+ݩ%Q {bY0e(CTwKwOK X)l57XG?X9c?bA@ !cw֗j[|_[ Hw-awGAO%[?T(ʊ܆+^ 5x!au WZ;wY7ɦ˲C6؞?`@-b}!~rgA/6x!݈+}'?WߜnI cO 2ڊh=FZ^!.@0A61|`OhS1#C2| @jo|©L;}Gs F#2Crr-|ǿz'Q( !A>uK<VR]hBBA@ yh'r\]0fvk 5tXXd4нbPpjϿiWB Ҋ'1]}ވ._վ uƜ oQpJzM3in70>ҁ / Vc1u6~n=Ҋ!cC $6YoM}~ /?[4r?`ɧ_ :&l- Owz\|y <2ݍݶ/7\>=ͤUφpPk-`e]mcp!_vS޵޸w'ѯ~/ơKC(bp93rAK)ky&ʙDr+Ϟ~zD㾝R+x9ېDlzF.t_F_~ ٱ< KZ-;*X0${IuG[z׾ho1 :c`zz>@8D.!P91~W/0mT %Q9Smh2{v)󓵷(2LĶ&̬LE4Y.ſCM>/H̥K%|=1B)Ga= 7 Axx3V/fu j[.0s] s%L|m:e$< 2iC!H3sogta j Lbm{"HtJKgWϗǗ*DZx/vKJ6}f.c /$9 Mz>pycQPYpBgYlR *8*IRKk%rӑ/;iů ]fv;=^ }[qq|XاC,1~:B`&J˲@SuZyyJ:Vrq<󩍒=:\gه奧cA!B(R Fà!1U2Upl3*HRZ_ ?X9owN4o6$]}LO1{[4BWBKs+-۞~>?(|s/)2&aH)vh5`tY\ g\_ uO;J#b/XmSnXbaS]6`{bl>MK&KCONABq=R>L4ȼ7k?*Ly79knpF[ʻwv}(p{p,|pA)hV(gQ-`&ܷ2G@!QY*{'Okӌ&=4WwsɌT]␸>|ɲ`$x:p<I? pl&PT`6^lM [/Ư/"f4 M݁n>z^^]ҍؿ?O.<<` Ra>|H? R _0`8 UU02 +kY5JkNI^WUUܻ<0݊'s=z^뱲WC9DWC,@4?p0oEgYoˣT(jyjY@iW4F)j<{9hu͌]}\!pKyGbڞwQDTp-ӝvR8fb.rF1Ƞp(Ud韯f\PKx@f4߆!z3>ف WK[[_|Em=JǢSF#PT[Q-LrlRsz{Iߕܗώ,? {{!}΂CYIA[MM8u_8yQvt n1|1Gkiε?<^C}uzu @eӤ'^gߝk wA1$A۟(gJuTeX 3f2G/']qr-iFw_r۹Z˷פ>ш%nˆS$S{nqPD1CVcyX.@Ͽ?_ Uӌ!#Mfͺl:s*߈UoDM{ Jt]^,0msry4u0A‘HFd ؇l}*gĚڻ! 3O;~( EP^{&j2j sAP&[v8` !f}-~f鷑vݫww`OZ{g~=/^VXUG;>/vBRsbPwp^OI '8ӧeHS6"* QS45dbh|$!#/!O8#0UxYeAHwo'lv@jv5@u$iRv\{# Q:Sp'?xC][p=NڝYQRF(Pfa/;స[ȵb{g}w{jѮ0nїG[ٹNCR$X:wsGCusonj EPsNsGc$ҐTogyvtlT'M-%*iȤ2`R(4}lE"H̥FE޾`t& _0C'#ERcB9 (mSa ]{A^@O?W((ӕeBaR 1BP.Q\uVvL\[ ^^KU ( lkēIDSIh>0|Č$YBb.`8r.b>f/e[ ׌H_:sH=ޝuh4@0B0|x!}ʹ<ʅV/\?U ^c<;mDb1$ݮgX̽_6 /C4+nÁ,'}'!ecHSV)+CI'R# J0zDP a3` 0BF@0f! #@ a3` 0BF@0f! #@ a3`=Ntr22.Zl6v-uRhw#!^X?{;zNϧLB%LFi \jB5*0οt`$ tZ i3` 0BF@0f! #@ a3` 0BF@0f! #@ a3` 0BF@0f! #@ a3` 0BF@0f! #@ aF8瓾`(Yma!`09 mONfjL[-!Bڭ,˜ iWg`0^4ILUTBm,!QMTK%0`:<թFzvR@sh듾16y8C!C1S_`ͣ?ΩNCٞ 062Osx:IK /c(fsXߜ:;۫w!0Z-=yVx:(J)DPP *ʅ,z6 `PXZjDTZ" FR.R!9ͶF%}74zFZx:h2YQIJ@0::mY( (fshj`7:Wlj$(=M^ctk ZMw&N#JbY #WB6Z۴` jKmwctQWtY!#1?(й; v@gYYGTi?wl۶0&ؑ?,8s RQP t! zCsnvP 0yCn=mlRZ0 gݔQc9V`x' 08bm}r{9̿N PTl4ŐZw  !`Y"ATc 벹jvШVϬZ,ɭ_=>BckS^HvFU U$չY@+~ye۷/+G%:(W'SЃH"@ׁ[^Ep jZ<6r':{'09팥<,Mߝn#v1j=|ǧk\uml@n8w?}'J(4: 0H5Xuȓ|Ʉ Z62)z;Kö\CrB/ (rh5KA{ؾqBz*=u lxNt=K!8~G ]:clvf rN6i$,IwOBNظ;?ZB6z 8+=PJYSw*OҭW֮G\co%@`WO˗[ou=!~gjyY)Lט0>5nѨTNB!k*0頓c;j2ϟ#A<7~HX33g=r^/b&UBHkpgyЋ{{zwLK,Uf=o6/>>D=8+63wUh6 bb$|(;22V֩+h;:5|7XOl3R^ƌ7tp/`+st^_tVSLM0 AwYZہ*5uCP-ֱ칛cYu _!+DՏ^vi ^{g5W^2h;uEF՟y%OsƂd~?=9y~i*RhS(FVH! o`P ۲P)QPv'PՕ'[+[O%U5fk5A9{&u_{glW.*QesL-4B23Ao}c16&$I ل `V.#)uMp;dg}B W.6JϩLxu3ߞf` qg ,TɨYy=iVYm:p&$t:h7W BV5QlN(ڍVڋf#|DeOO+zBaTyofk^vFbKͼ[=Ww)ZƝ]^_>ܷ-? ^66nqfF4B<8tLMYϡjvzO>w@z.]9Vqdv9׹LzgVmwmwG٨uzow{IpG4P<]~>ιO5I(!gnk[ LlmAWL \tˎ)˂AcnjzMAay{z9ji*B}off^Q&"Z/f/ycuKr6WMIő\G eǻpѨՑ_͠R*±L) 3_>W䘹 J6~6=BП+ ^o`3!R\u'ooD_ 5g&,MՐO#>x'tv, , l큀P8STsM;,}ioݔ~4.cIo *Y 8vt..̍dyy%ɇlFVCR!תp龛+`u18ZJJ{`K$P 3aTM*^5׽ ˬ6Sp!{jeteUv7$H᠓4FF9dE(np 6֞ H,jok?=8m~]ߓf˂m;|yUi_[ ziY 2B0‰vsnPB1CZuȬ@B[g{VYϨ${L iŀO xgY@@8Eb~Hx:u4*U2먖˰,0| Y꣇'Gǭ0:R:+&l. ^2>G4h6wWPU'{leM3Y m3mPDTdޫYR?oߪLs' C, =A˂Aل/ydtQM-ŅGCm9lA$ ߏb7@)lD1Ga=V ,>mYիG72gp37s\ݮ<[U ozV貋]KmNe7n^_Nf~n9kNL?CY vVL8|j#~;KJChpȲh"<O;ۮ7[ˠ\xcxBD{k=|i8Vʜ9}wPGީqդo` $a(e;~;q=Rv >$ӈSP5me2]@i=zv #j= 7nk]rmgA ßuc6Ō)eG8ƍәIMfԥ( CH.#A AFμ# 0CW/6h4pK=p;8xf9oމ^C{eY);Htˎ=t3^2452Eϔ麷H]/^yxx@e/o70JƔV/:wWBc5%%PPv p0phx-;~Y%h7(es(f0̶ GU YK6nҐZĶǴR{_$#&kGe-'tuN7VPp*e]_"~~+]vVmTٶՆN ys%-It&{ȩK@UU1c1$Eqp]}DznP-P-`'~[eRy~x3m ж^oATI?l9>^{>sv~1Ǒ(|E{ћqXeMѐ@@%^5ndrdz3ߊ6˂ۖo[5Ň 39i]\y^(S^ CK;9Wlw wGɤlj`jC@xtĊvZϐ&!pOmiNB%v0lWsb?$3,0xmiU;H=yabQ?BlxX3 Z:ѸmaQ2eiŃN3ұQ_0# Krr!98W8~_D3_zBuY@@ IԮExקVOKw[>^!;MW6؂]n?r}UėnH{qb%ESvwe S|x2 "ȰL?B`i/x0/܈^:Ob~&{^ BO>P< WHncO{VUZ+0Cr;7%bSsӎ=Mr[fz|gk'Ch0"}w Fcf^pIx_)ɡ); ĬfܼܸBn:ۀ` ϸFa; QHa%>[iǃ Tr*AH*|5Zp l~!<=_ٶ{D^t^=kӠnݖ٤ӥ?gdY.o3x:"xW܃铏EaڤҊeP8 1Vgo^;YO{#w!#f/}_ .=*s:͈@mgwi:_ӟ'!ӊSkMJ| E3SE:fP_jPP ׮\|{ٸnIßۿŷY&pfno'|dz!GݖL4[+Nnm?&*Bf}ZqǗKG* #ԁW@`$ϞkBAX{, 쭶 VBl['F>i2I#RZw@#2/ܧgZcG^7w7] 3Cvܿ[!:%-#,/_x>Ih nzxڼYǪ[o}o_oCFcVi/Ds {B]~pwَ8!,OG-~V:JBkY;.QqL1w/0I88)DPr-KE=j̝"[^%I;Hߝbxu+$ݯ{=6mս3|}w !F\v{u\V 6 @2~!迺?#cCL r{ _lM!B<KKޓ>_[: q6H+3$e@'os?v-4}~@`'5?2 :Do7? q+W_"` `{!5zsițu1aӈ)f~A^#plnb?!Š%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/android-chrome-36x36.png000066400000000000000000000030701465312036400313470ustar00rootroot00000000000000PNG  IHDR$$hgAMA a cHRMz&u0`:pQ<4PLTEfffffffff+q x{Gkwz{ffffffuz{z"s y{{5o wz{~Mjvz{)qy{fffz{fff z{fff#y#yfff#w{Dlx{ffffffm_g+r y{ffffffySj tzffffffDmvzDlffffffhdf5px{ffffffo\h(r y{(rfffffffffLkvzufffffffffzz| { $95>=}-:<{)ZyvOVxR("8;:~,;w49}BE~DG9~-%:+aS\X~//7 ':|AWtRNSj D,vW=R cgh`-+h $;(HH,Z!3oo %@0PbKGDjtIME];IDAT8c`fV66VfF|-<> &:3:<4}1B|KMXBJw2!H% $s|?T3&{B`Z& i{懍WwfU̍ a~\T۾nģ%bD _lXLj@7mHfA6H.jm>_;] mhuI=~/ UUߗ"0B OFpV&K;Ӡv^J()%rŕU'\FRP? nG3V& `ȳ%£8½)@0<+y2irmT> N.K; UGx֞)q4s?AJ:H,P$B.aine:^uЁF%Tl5߷$&yJh$&<ߙk}mz7ȁe{t0=9\'{?X߀D(Es䬕(B A V{zhP^qJJen7 @2>Ƙw0ȧ'^e6c48@at=@=48jM3;CHv=ep2uw{\%TddKP6dCH7I 8!LC{zhPmU94% ŷ<<P|) A\Xdm9P­;H)LaؖE!B]~I˶ Ys +% ǻ% KdWHbH˲- 2{u3Ry2kzm,bDX2%RoK>H:,z+KFrkߺ)%_@F:e4]ˁ_}yid)%G4 n/ΠnB3W = +,E.i f)l]=Qtʜ.U@- iqLC/ʾ_Q1M a;{B&IP 3@TBJ隫X 76ߘY׀|7a?(_ҁ0i'.JN:s[CۓݺVJ;50BGӵo-%OE`(uu~8"@TH~eע9 u36 :@m!?z]F%Z#Zld̏fO_p󂭒@޹.oMVFSǮ.GDuk ۗd$:_}0iXOS\_;x}vN+pFLgVUiFD$zbwu%K( E"'R ht#mrDfnrq㚍^uyڛ&;AJV}w=5cWЮE~VV#۰rzݙ`@'qӥU?TkާN\ 4M)K=jxDW7h-e.n\7f+r׮=|3-Wlg9jOqMO}?6TQҽ0 9% "4J5Εn]Lz@2ۉ:˪xqĺ^l۟>g1l6LggNxF.jN9ٶmߊwS"?xK)|^3kٔӱ]35Y]ߛv1`gJ8>;]Ի?a {' ^)[(D̫Wv{)L'~ޭpC)TVNMߏjʄ?I] s75}qՐ}gV*XnX`5,c@"Ă):e+sӵ3 ZLg^}î\O~;!?OI܈9;3Y?@Muv|ɺm NT5pQ{>oy^m 0U3;P(gDi㌘]y˞#g%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/android-chrome-96x96.png000066400000000000000000000112131465312036400313610ustar00rootroot00000000000000PNG  IHDR``w8gAMA a cHRMz&u0`:pQ<bKGDtIME],IDATx]koWz~p83)Ȳ_e;786n l|跢c 4@"@AM4ms٤ĖDJH:3pp$eDQ"`9y3 裏>H'`o5WR3 更s'*Lelj0I0'g 30pTjQI"z:g` !=}o\ E㛻_yRD($º2z"|kp';_^ ?$R5Zh4޽t@~>.@&:V =A@[r@% Lh륑5g/cFa ">E.av%މKo_7m燎@n 4Nu=3&TTp=``0Z BX^J"Aƅ#[gTcRGhP>(±=w=yRPN'a  nE%E$(eA!xԯ4汚4lAYc(HW]~L;-!gY ‘Hn[|Pģ1u6:G~?.߾q@mkmЪ|2.^I8"$m\>XxB>/F# 0Lo}rQ3YPjoDCuP->1؂Ɔ h<*g]O=2'\Twd A c 4h?u(kKHDʲS"g>{FkeiSaC4+@Co^x텝C ) |"DlxZ@YqD12:Tְu:rSo8vN]qup{HV, o`<B.U$PJQ!Z@KMߙ9XI>LYؐ,Bp8 Y) \`3 hܡ}H.ıh$4, (_F} (.'G\I涒00D(2%,y#; ưޢ(.EQrX}.QJyЦ[LǍ];2:.ܳ bC~ 0۔FuڄrcǞ s3 PN `Ǟ JW(c dU v}3n. `MV̪_"^V^'o"1SC@ؽ]fT־Y"6o촱vjS7}9 2t}>]F.ðݞ|k6SG^bon`s@'e 2t}ކRm:̗zMK=4yq,'`S +>]F.O@'e 2t}nnfs;HmGlҢIQToǏ4AQQI[|^,^M~Cdݾ JejAn [8I& FpG| :Dr1J ~ui\TѻI&t SXE!娢圦iծ) шju]Ks~EӌN&3( n#mJ&#jS(E<E&)|RK9떿\Si%A:̟ګ秕Orh[yn`9D>E }.6؜AC ƴ#O+†M \rID͞U w}? % sȤF \˗mY}iH!_B"f C=3YΎγT3g˟:\$,WvgYfo܊9/"p| Ej%!4_񗞏mƑ7O_;- Hb_@M!/Tᶈ𦙑#3;/̰] KarFq\}uPY2bwvxqJ߬߈U>_ 6Cm"̫c12ힺ$=?|`ĕ8 TDIg-ȲiHnǀҟg˧ccXۮuqJ*"|L{o8&\3:)Pge BKH.vcEU݈ b19Ptiޭe[Wyc`"BIe;n?i*@ud)cg&N(TT% %7v00_bFHs2a;3eqz5U>]$ހC.LyZ5ttj+]TJ;S Nk^֨&s8*ea^? [@*ؐjفB3vn4uZڊ& {aue5^w=b 8@ jF?VdH.7j;+f-^HaoKhS+Kk'Kɉ;sC"3?0J C߈wn?4:_-7G:$XX'5apydFzvGHl(N|)~rqJhiH:&[V'¿cUc-[MZA稼8t@~ބvQ_緽v2uM7+ϲ{/y(rګ~Wy~Dfo} Sr[_ch-f~TϓaFψOOuɌӂdDoR?4|rQ]ݕHl5Vp?2#=7tٱ5å/L.Dw^7]>$"`햼 k $wTj"XpyeʬyKnzvOIբ&?8e]ps[xER1E}nvǔϊbK=A`a?aJ<`3=Ƽ=C:DpXII;* Uջ #BjpX}cQ56U&.,T `5xHoJcL,o%tEXtdate:create2017-02-21T08:06:30+01:00pn%tEXtdate:modify2017-02-21T08:06:30+01:0038WzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/apple-touch-icon.png000066400000000000000000000141361465312036400310410ustar00rootroot00000000000000PNG  IHDRegAMA a cHRMz&u0`:pQ<bKGDtIME7 IDATxٓ}cf0\K\xKRv,(ǎ*ʖd;D< )W^ R$ZۡeGdr;M9x-IAܹ0`ptNQA<0gE70@ j /D+D+D+D+D+D+D+D+D+D+D+̠0x얥N^,4$wFӷѾ}B~*nQʡ[תv-C#tK•V~t L;'EQܺTC)a QaT낼ǰ03gJ _ZA,,9U;qMRZVJOo mYD-Bdȁqx)cMEG614)(DRg9۴\fnCZع9@,41Ԍ\T%Gku/,*|a|e[9imYX^oƯPƉ)>S.t)sej([?1 ؠeM~v~lcy1whNwo߷ t1m%e/.V[!_++c w/Xz9_:g:Xv ;=Vz|[.DF[~t湢0DMC}>a9zS3b-/€)D,Cєc;i9h >DܳU*6ꄑ1mekYi"шEQ^KUEmۋ"_]9%n[:rȈɁ1/i+U/( !?TضS-zOs Y*F!c3RYfhOT7NcwHrR:K&Xnz2[r(gM]ASSoIVèbc^5<؈$%2![] h6b6Weeze gÿ`p,[=yx9?d)0EQB,ȄD!s;BZ-feq<ժC_CܹEܴbj9eӭe* Bt$fZ|V!۲*rq6{+D[>Y eC)W5N-r) x*;FjF)_( f-woIEwm޿} S=|I{T%8 aH,rhWЙ ƻ0BIG8òFLSKr674E"m^\aعaV+;UǴ<#>/JJ 117\\(YbwmRǴo].=Ӵ%'2pkAc٬Z*{Y!ݷ"{pײA;\yazmcFS!!MFmTz" RQxx}UR ȡKoמ;{Ç1 JT4`{]^LT E95 xYޅ}p=ajFgt%&R&qAwkr6]ݹ{J{ }q )wشk'^}oGn~)4M H"3 1b6[-W"8[["C\.:  Mf)W( u;Zٳ5v4M,VEpfKd2U 12(ư:ߞ?=fX8WI3ڹ{QVJe &o?Eѝȯ}U:BPe'< )ÛE˳!⃻՛7cCHc/ W+eKv &)-3<C4ς=)Hq^,gsMM︔znR^vAMg;[`K&L*qce!rh:kYH1,b3jI/os+&}!$ O`^ѿhzx 4M>Or @} afcwApApApApApApApApApApApApApApApel1XNOD:0rP&.@ߘ.*ViI}WWWWWWWWWWW4mhy̠ `x2/Ʒ0 0*w90Yr0h@!`.tH )H 99999999999999999999sӃE qsM]wȇ=`VUTCq鵊ڟ_߷f:C)fF9n߲Gbڬmďymۅ|?f@C:7DB@? BFVVJ%lw%,6.uO%?Af˗Ŗa @}3#<[ #w媪(R: ?>Bi*rIzc<ijE]tq|V_mhjȄ#"EQDgMg84_3C~ duNo2aeQE$)Is!ezQ*lVZNUQj%*yx=tx)6m9x̕a,е B-\x9MU PW%< #EQ'Zyg7e%1b4C|-Z8s`z4c M0Vٖ])YV祿{b#ܥ1\T.k?:*5`M Hb"/w1*|\r Nf1@+s}P'E05ZVcw>Z&3^vMJi4u1`F ) P`ۙ~4+0k>]dG@chj+Ţ2iLgi|v+蠯+]mZwG=%'rR:K&Y-w2[fPsyCk?E Sm $lfƅBtg|?q)B!AHd2B,Bh+mղR*vK#vlW&QȞ6+#/ZiZF8woZq6ʶvn m_B=I{(GaT^H󍫶iz,D|~_,)?DM9/ -屼Y6pm⽷3[VhӼVQ)0mS% B2g?wG4͊\9^ w&boZXy#`ǩϫOδru;W(DFF4wGqR)fx+/|:͡)9ØӏM6aV޸T{Lϋfq&*4 QNkb6%۲<#,b2{k崟_?,G+?=_\?z6-/€@<~~ dF9W( ޷l,m[9j6+MsF)txeB.D"Y./(d4w6z}a(`۩>7YSܥ(ꏹ>.wq<.SY)ZM=E\>sVr) aXB2z ސrdSpD>s˄=[_t)= GCW^>W}vZ;5k[^rwA.Jœ FT({,/f7OMEXB=i|7⽷ȤPqMUtI]y^G";6ž7! fh8NlNεr:wG|p5'5q-/n&G۰]P~yr9x>kK+i87eѦU*W׎g vyJGwm}u5 aAF@.<|PutX6Q|`Mlf~4D+ """""""""""- ۝?v%tEXtdate:create2017-02-21T08:06:29+01:00)\%tEXtdate:modify2017-02-21T08:06:29+01:00XXuWzTXtRaw profile type iptcx qV((OIR# .c #K D4d#T ˀHJ.tB5IENDB`hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/browserconfig.xml000066400000000000000000000005171465312036400305550ustar00rootroot00000000000000 #2d89ef hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/dist/000077500000000000000000000000001465312036400261225ustar00rootroot00000000000000hugo-0.131.0/docs/_vendor/github.com/gohugoio/gohugoioTheme/static/dist/app.bundle.js000066400000000000000000004125641465312036400305240ustar00rootroot00000000000000!function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=11)}([function(t,e,n){"use strict";var r=function(t){var e=document.createElement("a");return e.className="header-link",e.href="#"+t,e.innerHTML=' ',e},i=function(t,e){for(var n=e.getElementsByTagName("h"+t),i=0;i0&&p.parentNode.classList.add("expand")}}catch(t){a=!0,u=t}finally{try{!s&&l.return&&l.return()}finally{if(a)throw u}}}},function(t,e,n){"use strict";n(13)({apiKey:"167e7998590aebda7f9fedcf86bc4a55",indexName:"hugodocs",inputSelector:"#search-input",debug:!0})},function(t,e,n){"use strict";n(14),n(15)},function(t,e,n){"use strict";function r(){for(var t=this.dataset.target.split(" "),e=document.querySelector(".mobilemenu:not(.dn)"),n=document.querySelector(".desktopmenu:not(.dn)"),r=document.querySelector(".desktopmenu:not(.dn)"),i=0;i=0?function(){var t=window.pageYOffset;(t>=i-s||window.innerHeight+t>=document.body.offsetHeight)&&clearInterval(u)}:function(){window.pageYOffset<=(i||0)&&clearInterval(u)};var u=setInterval(a,16)},e=document.querySelectorAll("#TableOfContents ul li a");[].forEach.call(e,function(e){e.addEventListener("click",function(n){n.preventDefault();var r=e.getAttribute("href"),i=document.querySelector(r),o=e.getAttribute("data-speed");i&&t(i,o||500)},!1)})}}()},function(t,e,n){"use strict";function r(t){if(t.target){t.preventDefault();var e=t.currentTarget,n=e.getAttribute("data-toggle-tab")}else var n=t;window.localStorage&&window.localStorage.setItem("configLangPref",n);for(var r=document.querySelectorAll("[data-toggle-tab='"+n+"']"),i=document.querySelectorAll("[data-pane='"+n+"']"),a=0;a0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,r.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,r.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=s})},{select:5}],8:[function(e,n,r){!function(i,o){if("function"==typeof t&&t.amd)t(["module","./clipboard-action","tiny-emitter","good-listener"],o);else if(void 0!==r)o(n,e("./clipboard-action"),e("tiny-emitter"),e("good-listener"));else{var s={exports:{}};o(s,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=s.exports}}(this,function(t,e,n,r){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var c=i(e),l=i(n),h=i(r),f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},p=function(){function t(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===f(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,h.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new c.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(l.default);t.exports=d})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)})},function(t,e,n){/*! docsearch 2.4.1 | © Algolia | github.com/algolia/docsearch */ !function(e,n){t.exports=n()}(0,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=46)}([function(t,e,n){"use strict";function r(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var i=n(1);t.exports={isArray:null,isFunction:null,isObject:null,bind:null,each:null,map:null,mixin:null,isMsie:function(){return!!/(msie|trident)/i.test(navigator.userAgent)&&navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2]},escapeRegExChars:function(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")},isNumber:function(t){return"number"==typeof t},toStr:function(t){return void 0===t||null===t?"":t+""},cloneDeep:function(t){var e=this.mixin({},t),n=this;return this.each(e,function(t,r){t&&(n.isArray(t)?e[r]=[].concat(t):n.isObject(t)&&(e[r]=n.cloneDeep(t)))}),e},error:function(t){throw new Error(t)},every:function(t,e){var n=!0;return t?(this.each(t,function(r,i){if(!(n=e.call(null,r,i,t)))return!1}),!!n):n},any:function(t,e){var n=!1;return t?(this.each(t,function(r,i){if(e.call(null,r,i,t))return n=!0,!1}),n):n},getUniqueId:function(){var t=0;return function(){return t++}}(),templatify:function(t){if(this.isFunction(t))return t;var e=i.element(t);return"SCRIPT"===e.prop("tagName")?function(){return e.text()}:function(){return String(t)}},defer:function(t){setTimeout(t,0)},noop:function(){},formatPrefix:function(t,e){return e?"":t+"-"},className:function(t,e,n){return(n?"":".")+t+e},escapeHighlightedString:function(t,e,n){e=e||"";var i=document.createElement("div");i.appendChild(document.createTextNode(e)),n=n||"";var o=document.createElement("div");o.appendChild(document.createTextNode(n));var s=document.createElement("div");return s.appendChild(document.createTextNode(t)),s.innerHTML.replace(RegExp(r(i.innerHTML),"g"),e).replace(RegExp(r(o.innerHTML),"g"),n)}}},function(t,e,n){"use strict";t.exports={element:null}},function(t,e){var n=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,e,i){if("[object Function]"!==r.call(e))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s was loaded but did not call our provided callback"),JSONPScriptError:i("JSONPScriptError"," {{ end }} ``` With that you can use the `mermaid` language in Markdown code blocks: ````text ```mermaid sequenceDiagram participant Alice participant Bob Alice->>John: Hello John, how are you? loop Healthcheck John->>John: Fight against hypochondria end Note right of John: Rational thoughts
      prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good! ``` ```` ## Goat ASCII diagram examples ### Graphics ```goat . 0 3 P * Eye / ^ / *-------* +y \ +) \ / Reflection 1 /| 2 /| ^ \ \ \ v *-------* | | v0 \ v3 --------*-------- | |4 | |7 | *----\-----* | *-----|-* +-----> +x / v X \ .-.<-------- o |/ |/ / / o \ | / | Refraction / \ *-------* v / \ +-' / \ 5 6 +z v1 *------------------* v2 | o-----o v ``` ### Complex ```goat +-------------------+ ^ .---. | A Box |__.--.__ __.--> | .-. | | | | '--' v | * |<--- | | +-------------------+ '-' | | Round *---(-. | .-----------------. .-------. .----------. .-------. | | | | Mixed Rounded | | | / Diagonals \ | | | | | | | & Square Corners | '--. .--' / \ |---+---| '-)-' .--------. '--+------------+-' .--. | '-------+--------' | | | | / Search / | | | | '---. | '-------' | '-+------' |<---------->| | | | v Interior | ^ ' <---' '----' .-----------. ---. .--- v | .------------------. Diag line | .-------. +---. \ / . | | if (a > b) +---. .--->| | | | | Curved line \ / / \ | | obj->fcn() | \ / | '-------' |<--' + / \ | '------------------' '--' '--+--------' .--. .--. | .-. +Done?+-' .---+-----. | ^ |\ | | /| .--+ | | \ / | | | Join \|/ | | Curved | \| |/ | | \ | \ / | | +----> o --o-- '-' Vertical '--' '--' '-- '--' + .---. <--+---+-----' | /|\ | | 3 | v not:line 'quotes' .-' '---' .-. .---+--------. / A || B *bold* | ^ | | | Not a dot | <---+---<-- A dash--is not a line v | '-' '---------+--' / Nor/is this. --- ``` ### Process ```goat . .---------. / \ | START | / \ .-+-------+-. ___________ '----+----' .-------. A / \ B | |COMPLEX| | / \ .-. | | END |<-----+CHOICE +----->| | | +--->+ PREPARATION +--->| X | v '-------' \ / | |PROCESS| | \___________/ '-' .---------. \ / '-+---+---+-' / INPUT / \ / '-----+---' ' | ^ v | .-----------. .-----+-----. .-. | PROCESS +---------------->| PROCESS |<------+ X | '-----------' '-----------' '-' ``` ### File tree Created from ```goat { width=300 color="orange" } ───Linux─┬─Android ├─Debian─┬─Ubuntu─┬─Lubuntu │ │ ├─Kubuntu │ │ ├─Xubuntu │ │ └─Xubuntu │ └─Mint ├─Centos └─Fedora ``` ### Sequence diagram ```goat { class="w-40" } ┌─────┐ ┌───┐ │Alice│ │Bob│ └──┬──┘ └─┬─┘ │ │ │ Hello Bob! │ │───────────>│ │ │ │Hello Alice!│ │<───────────│ ┌──┴──┐ ┌─┴─┐ │Alice│ │Bob│ └─────┘ └───┘ ``` ### Flowchart ```goat _________________ ╱ ╲ ┌─────┐ ╱ DO YOU UNDERSTAND ╲____________________________________________________│GOOD!│ ╲ FLOW CHARTS? ╱yes └──┬──┘ ╲_________________╱ │ │no │ _________▽_________ ______________________ │ ╱ ╲ ╱ ╲ ┌────┐ │ ╱ OKAY, YOU SEE THE ╲________________╱ ... AND YOU CAN SEE ╲___│GOOD│ │ ╲ LINE LABELED 'YES'? ╱yes ╲ THE ONES LABELED 'NO'? ╱yes└──┬─┘ │ ╲___________________╱ ╲______________________╱ │ │ │no │no │ │ ________▽_________ _________▽__________ │ │ ╱ ╲ ┌───────────┐ ╱ ╲ │ │ ╱ BUT YOU SEE THE ╲___│WAIT, WHAT?│ ╱ BUT YOU JUST ╲___ │ │ ╲ ONES LABELED 'NO'? ╱yes└───────────┘ ╲ FOLLOWED THEM TWICE? ╱yes│ │ │ ╲__________________╱ ╲____________________╱ │ │ │ │no │no │ │ │ ┌───▽───┐ │ │ │ │ │LISTEN.│ └───────┬───────┘ │ │ └───┬───┘ ┌──────▽─────┐ │ │ ┌─────▽────┐ │(THAT WASN'T│ │ │ │I HATE YOU│ │A QUESTION) │ │ │ └──────────┘ └──────┬─────┘ │ │ ┌────▽───┐ │ │ │SCREW IT│ │ │ └────┬───┘ │ │ └─────┬─────┘ │ │ │ └─────┬─────┘ ┌───────▽──────┐ │LET'S GO DRING│ └───────┬──────┘ ┌─────────▽─────────┐ │HEY, I SHOULD TRY │ │INSTALLING FREEBSD!│ └───────────────────┘ ``` ### Table ```goat { class="w-80 dark-blue" } ┌────────────────────────────────────────────────┐ │ │ ├────────────────────────────────────────────────┤ │SYNTAX = { PRODUCTION } . │ ├────────────────────────────────────────────────┤ │PRODUCTION = IDENTIFIER "=" EXPRESSION "." . │ ├────────────────────────────────────────────────┤ │EXPRESSION = TERM { "|" TERM } . │ ├────────────────────────────────────────────────┤ │TERM = FACTOR { FACTOR } . │ ├────────────────────────────────────────────────┤ │FACTOR = IDENTIFIER │ ├────────────────────────────────────────────────┤ │ | LITERAL │ ├────────────────────────────────────────────────┤ │ | "[" EXPRESSION "]" │ ├────────────────────────────────────────────────┤ │ | "(" EXPRESSION ")" │ ├────────────────────────────────────────────────┤ │ | "{" EXPRESSION "}" . │ ├────────────────────────────────────────────────┤ │IDENTIFIER = letter { letter } . │ ├────────────────────────────────────────────────┤ │LITERAL = """" character { character } """" .│ └────────────────────────────────────────────────┘ ``` hugo-0.131.0/docs/content/en/content-management/formats.md000066400000000000000000000124341465312036400234130ustar00rootroot00000000000000--- title: Content formats description: Create your content using Markdown, HTML, Emacs Org Mode, AsciiDoc, Pandoc, or reStructuredText. categories: [content management] keywords: [markdown,asciidoc,pandoc,content format] menu: docs: parent: content-management weight: 40 weight: 40 toc: true aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/] --- ## Introduction You may mix content formats throughout your site. For example: ```text content/ └── posts/ ├── post-1.md ├── post-2.adoc ├── post-3.org ├── post-4.pandoc ├── post-5.rst └── post-6.html ``` Regardless of content format, all content must have [front matter], preferably including both `title` and `date`. Hugo selects the content renderer based on the `markup` identifier in front matter, falling back to the file extension. See the [classification](#classification) table below for a list of markup identifiers and recognized file extensions. ## Formats ### Markdown Create your content in [Markdown] preceded by front matter. Markdown is Hugo's default content format. Hugo natively renders Markdown to HTML using [Goldmark]. Goldmark is fast and conforms to the [CommonMark] and [GitHub Flavored Markdown] specifications. You can [configure Goldmark] in your site configuration. Hugo provides custom Markdown features including: [Attributes] : Apply HTML attributes such as `class` and `id` to Markdown images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. [Extensions] : Leverage the embedded Markdown extensions to create tables, definition lists, footnotes, task lists, inserted text, mark text, subscripts, superscripts, and more. [Mathematics] : Include mathematical equations and expressions in Markdown using LaTeX or TeX typesetting syntax. [Render hooks] : Override the conversion of Markdown to HTML when rendering fenced code blocks, headings, images, and links. For example, render every standalone image as an HTML `figure` element. ### HTML Create your content in [HTML] preceded by front matter. The content is typically what you would place within an HTML document's `body` or `main` element. ### Emacs Org Mode Create your content in the [Emacs Org Mode] format preceded by front matter. You can use Org Mode keywords for front matter. See [details](/content-management/front-matter/#emacs-org-mode)). ### AsciiDoc Create your content in the [AsciiDoc] format preceded by front matter. Hugo renders AsciiDoc content to HTML using the Asciidoctor executable. You must install Asciidoctor and its dependencies (Ruby) to use the AsciiDoc content format. You can [configure the AsciiDoc renderer] in your site configuration. In its default configuration, Hugo passes these CLI flags when calling the Asciidoctor executable: ```text --no-header-footer ``` The CLI flags passed to the Asciidoctor executable depend on configuration. You may inspect the flags when building your site: ```text hugo --logLevel info ``` ### Pandoc Create your content in the [Pandoc] format preceded by front matter. Hugo renders Pandoc content to HTML using the Pandoc executable. You must install Pandoc to use the Pandoc content format. Hugo passes these CLI flags when calling the Pandoc executable: ```text --mathjax ``` ### reStructuredText Create your content in the [reStructuredText] format preceded by front matter. Hugo renders reStructuredText content to HTML using [Docutils], specifically rst2html. You must install Docutils and its dependencies (Python) to use the reStructuredText content format. Hugo passes these CLI flags when calling the rst2html executable: ```text --leave-comments --initial-header-level=2 ``` ## Classification Content format|Media type|Identifier|File extensions :--|:--|:--|:-- Markdown|`text/markdown`|`markdown`|`markdown`,`md`, `mdown` HTML|`text/html`|`html`|`htm`, `html` Emacs Org Mode|`text/org`|`org`|`org` AsciiDoc|`text/asciidoc`|`asciidoc`|`ad`, `adoc`, `asciidoc` Pandoc|`text/pandoc`|`pandoc`|`pandoc`, `pdc` reStructuredText|`text/rst`|`rst`|`rst` When converting content to HTML, Hugo uses: - Native renderers for Markdown, HTML, and Emacs Org mode - External renderers for AsciiDoc, Pandoc, and reStructuredText Native renderers are faster than external renderers. [AsciiDoc]: https://asciidoc.org/ [Asciidoctor]: https://asciidoctor.org/ [Attributes]: /content-management/markdown-attributes/ [CommonMark]: https://spec.commonmark.org/current/ [Docutils]: https://docutils.sourceforge.io/ [Emacs Org Mode]: https://orgmode.org/ [Extensions]: /getting-started/configuration-markup/#goldmark-extensions [GitHub Flavored Markdown]: https://github.github.com/gfm/ [Goldmark]: https://github.com/yuin/goldmark [HTML]: https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics [Markdown]: https://daringfireball.net/projects/markdown/ [Mathematics]: /content-management/mathematics/ [Pandoc]: https://pandoc.org/ [Render hooks]: https://gohugo.io/render-hooks/introduction/ [configure Goldmark]: /getting-started/configuration-markup/#goldmark [configure the AsciiDoc renderer]: /getting-started/configuration-markup/#asciidoc [front matter]: /content-management/front-matter/ [reStructuredText]: https://docutils.sourceforge.io/rst.html hugo-0.131.0/docs/content/en/content-management/front-matter.md000066400000000000000000000352631465312036400243670ustar00rootroot00000000000000--- title: Front matter description: Use front matter to add metadata to your content. categories: [content management] keywords: [front matter,yaml,toml,json,metadata,archetypes] menu: docs: parent: content-management weight: 60 weight: 60 toc: true aliases: [/content/front-matter/] --- ## Overview The front matter at the top of each content file is metadata that: - Describes the content - Augments the content - Establishes relationships with other content - Controls the published structure of your site - Determines template selection Provide front matter using a serialization format, one of [JSON], [TOML], or [YAML]. Hugo determines the front matter format by examining the delimiters that separate the front matter from the page content. [json]: https://www.json.org/ [toml]: https://toml.io/ [yaml]: https://yaml.org/ See examples of front matter delimiters by toggling between the serialization formats below. {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 [params] author = 'John Smith' {{< /code-toggle >}} Front matter fields may be [scalar], [arrays], or [maps] containing [boolean], [integer], [float], or [string] values. Note that the TOML format also supports date/time values using unquoted strings. [scalar]: /getting-started/glossary/#scalar [arrays]: /getting-started/glossary/#array [maps]: /getting-started/glossary/#map [boolean]: /getting-started/glossary/#boolean [integer]: /getting-started/glossary/#integer [float]: /getting-started/glossary/#float [string]: /getting-started/glossary/#string ## Fields The most common front matter fields are `date`, `draft`, `title`, and `weight`, but you can specify metadata using any of fields below. {{% note %}} The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details. [parameters]: #parameters {{% /note %}} ###### aliases (`string array`) An array of one or more aliases, where each alias is a relative URL that will redirect the browser to the current location. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details. [`aliases`]: /methods/page/aliases/ [aliases]: /content-management/urls/#aliases ###### build (`map`) A map of [build options]. [build options]: /content-management/build-options/ ###### cascade {#cascade-field} (`map`) A map of front matter keys whose values are passed down to the page’s descendants unless overwritten by self or a closer ancestor’s cascade. See the [cascade] section for details. [cascade]: #cascade ###### date (`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`Date`] method on a `Page` object. [`date`]: /methods/page/date/ ###### description (`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object. [`description`]: /methods/page/description/ ###### draft (`bool`) If `true`, the page will not be rendered unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object. [`draft`]: /methods/page/draft/ ###### expiryDate (`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`ExpiryDate`] method on a `Page` object. [`expirydate`]: /methods/page/expirydate/ ###### headless (`bool`) Applicable to [leaf bundles], if `true` this value sets the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources]. [leaf bundles]: /content-management/page-bundles/#leaf-bundles [page resources]: /content-management/page-resources/ ###### isCJKLanguage (`bool`) Set to `true` if the content language is in the [CJK] family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object. [`fuzzywordcount`]: /methods/page/wordcount/ [`readingtime`]: /methods/page/readingtime/ [`summary`]: /methods/page/summary/ [`wordcount`]: /methods/page/wordcount/ [cjk]: /getting-started/glossary/#cjk ###### keywords (`string array`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy] to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object. [`keywords`]: /methods/page/keywords/ [taxonomy]: /getting-started/glossary/#taxonomy ###### lastmod (`string`) The date that the page was last modified. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`Lastmod`] method on a `Page` object. [`lastmod`]: /methods/page/date/ ###### layout (`string`) Provide a template name to [target a specific template], overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object. [`layout`]: /methods/page/layout/ [template lookup order]: /templates/lookup-order/ [target a specific template]: templates/lookup-order/#target-a-template ###### linkTitle (`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object. [`linktitle`]: /methods/page/linktitle/ ###### markup (`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension. [content formats]: /content-management/formats/#classification ###### menus (`string`,`string array`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details. [menus]: /content-management/menus/#define-in-front-matter ###### outputs (`string array`) The [output formats] to render. [output formats]: /templates/output-formats/ ###### params {{< new-in 0.123.0 >}} (`map`) A map of custom [page parameters]. [page parameters]: #parameters ###### publishDate (`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`PublishDate`] method on a `Page` object. [`publishdate`]: /methods/page/publishdate/ ###### resources (`map array`) An array of maps to provide metadata for [page resources]. [page-resources]: /content-management/page-resources/#page-resources-metadata ###### sitemap (`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object. [sitemap templates]: /templates/sitemap-template/ [`sitemap`]: /methods/page/sitemap/ ###### slug (`string`) Overrides the last segment of the URL path. Not applicable to section pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object. [`slug`]: /methods/page/slug/ [URL management]: /content-management/urls/#slug ###### summary (`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object. [`Summary`]: /methods/page/summary/ ###### title (`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object. [`title`]: /methods/page/title/ ###### translationKey (`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object. [`translationkey`]: /methods/page/translationkey/ ###### type (`string`) The [content type], overriding the value derived from the top level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object. [content type]: /getting-started/glossary/#content-type [`type`]: /methods/page/type/ ###### url (`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details. ###### weight (`int`) The page [weight], used to order the page within a [page collection]. Access this value from a template using the [`Weight`] method on a `Page` object. [page collection]: /getting-started/glossary/#page-collection [weight]: /getting-started/glossary/#weight [`weight`]: /methods/page/weight/ ## Parameters {{< new-in 0.123.0 >}} Specify custom page parameters under the `params` key in front matter: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 [params] author = 'John Smith' {{< /code-toggle >}} Access these values from a template using the [`Params`] or [`Param`] method on a `Page` object. [`param`]: /methods/page/param/ [`params`]: /methods/page/params/ Hugo provides [embedded templates] to optionally insert meta data within the `head` element of your rendered pages. These embedded templates expect the following front matter parameters: Parameter|Data type|Used by these embedded templates :--|:--|:-- `audio`|`[]string`|[`opengraph.html`] `images`|`[]string`|[`opengraph.html`], [`schema.html`], [`twitter_cards.html`] `videos`|`[]string`|[`opengraph.html`] The embedded templates will skip a parameter if not provided in front matter, but will throw an error if the data type is unexpected. [`opengraph.html`]: {{% eturl opengraph %}} [`schema.html`]: {{% eturl schema %}} [`twitter_cards.html`]: {{% eturl twitter_cards %}} [embedded templates]: /templates/embedded/ ## Taxonomies Classify content by adding taxonomy terms to front matter. For example, with this site configuration: {{< code-toggle file=hugo >}} [taxonomies] tag = 'tags' genre = 'genres' {{< /code-toggle >}} Add taxonomy terms as shown below: {{< code-toggle file=content/example.md fm=true >}} title = 'Example' date = 2024-02-02T04:14:54-08:00 draft = false weight = 10 tags = ['red','blue'] genres = ['mystery','romance'] [params] author = 'John Smith' {{< /code-toggle >}} You can add taxonomy terms to the front matter of any these [page kinds]: - `home` - `page` - `section` - `taxonomy` - `term` [page kinds]: /getting-started/glossary/#page-kind Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] method on a `Page` object. For example: {{< code file=layouts/_default/single.html >}} {{ with .GetTerms "tags" }}

      Tags

      {{ end }} {{< /code >}} [`Params`]: /methods/page/params/ [`GetTerms`]: /methods/page/getterms/ ## Cascade Any [node] can pass down to its descendants a set of front matter values. [node]: /getting-started/glossary/#node ### Target specific pages The `cascade` block can be an array with an optional `_target` keyword, allowing you to target different page sets while cascading values. {{< code-toggle file=content/_index.md fm=true >}} title ="Home" [[cascade]] [cascade.params] background = "yosemite.jpg" [cascade._target] path="/articles/**" lang="en" kind="page" [[cascade]] [cascade.params] background = "goldenbridge.jpg" [cascade._target] kind="section" {{}} Use any combination of these keywords to target a set of pages: ###### path {#cascade-path} (`string`) A [Glob](https://github.com/gobwas/glob) pattern matching the content path below /content. Expects Unix-styled slashes. Note that this is the virtual path, so it starts at the mount root. The matching supports double-asterisks so you can match for patterns like `/blog/*/**` to match anything from the third level and down. ###### kind {#cascade-kind} (`string`) A Glob pattern matching the Page's Kind(s), e.g. "{home,section}". ###### lang {#cascade-lang} (`string`) A Glob pattern matching the Page's language, e.g. "{en,sv}". ###### environment {#cascade-environment} (`string`) A Glob pattern matching the build environment, e.g. "{production,development}" Any of the above can be omitted. {{% note %}} With a multilingual site it may be more efficient to define the `cascade` values in your site configuration to avoid duplicating the `cascade` values on the section, taxonomy, or term page for each language. With a multilingual site, if you choose to define the `cascade` values in front matter, you must create a section, taxonomy, or term page for each language; the `lang` keyword is ignored. {{% /note %}} ### Example {{< code-toggle file=content/posts/_index.md fm=true >}} date = 2024-02-01T21:25:36-08:00 title = 'Posts' [cascade] [cascade.params] banner = 'images/typewriter.jpg' {{}} With the above example the posts section page and its descendants will return `images/typewriter.jpg` when `.Params.banner` is invoked unless: - Said descendant has its own `banner` value set - Or a closer ancestor node has its own `cascade.banner` value set. ## Emacs Org Mode If your [content format] is [Emacs Org Mode], you may provide front matter using Org Mode keywords. For example: {{< code file=content/example.org lang=text >}} #+TITLE: Example #+DATE: 2024-02-02T04:14:54-08:00 #+DRAFT: false #+AUTHOR: John Smith #+GENRES: mystery #+GENRES: romance #+TAGS: red #+TAGS: blue #+WEIGHT: 10 {{< /code >}} Note that you can also specify array elements on a single line: {{< code file=content/example.org lang=text >}} #+TAGS[]: red blue {{< /code >}} [content format]: /content-management/formats/ [emacs org mode]: https://orgmode.org/ hugo-0.131.0/docs/content/en/content-management/image-processing/000077500000000000000000000000001465312036400246465ustar00rootroot00000000000000hugo-0.131.0/docs/content/en/content-management/image-processing/index.md000066400000000000000000000424271465312036400263100ustar00rootroot00000000000000--- title: Image processing description: Resize, crop, rotate, filter, and convert images. categories: [content management,fundamentals] keywords: [resources,images] menu: docs: parent: content-management weight: 90 toc: true weight: 90 --- ## Image resources To process an image you must access the file as a page resource, global resource, or remote resource. ### Page resource A page resource is a file within a [page bundle]. A page bundle is a directory with an `index.md` or `_index.md` file at its root. ```text content/ └── posts/ └── post-1/ <-- page bundle ├── index.md └── sunset.jpg <-- page resource ``` To access an image as a page resource: ```go-html-template {{ $image := .Resources.Get "sunset.jpg" }} ``` ### Global resource A global resource is a file within the `assets` directory, or within any directory [mounted] to the `assets` directory. ```text assets/ └── images/ └── sunset.jpg <-- global resource ``` To access an image as a global resource: ```go-html-template {{ $image := resources.Get "images/sunset.jpg" }} ``` ### Remote resource A remote resource is a file on a remote server, accessible via HTTP or HTTPS. To access an image as a remote resource: ```go-html-template {{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }} ``` ## Image rendering Once you have accessed an image as either a page resource or a global resource, render it in your templates using the `Permalink`, `RelPermalink`, `Width`, and `Height` properties. Example 1: Throws an error if the resource is not found. ```go-html-template {{ $image := .Resources.GetMatch "sunset.jpg" }} ``` Example 2: Skips image rendering if the resource is not found. ```go-html-template {{ $image := .Resources.GetMatch "sunset.jpg" }} {{ with $image }} {{ end }} ``` Example 3: A more concise way to skip image rendering if the resource is not found. ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ end }} ``` Example 4: Skips rendering if there's problem accessing a remote resource. ```go-html-template {{ $u := "https://gohugo.io/img/hugo-logo.png" }} {{ with resources.GetRemote $u }} {{ with .Err }} {{ errorf "%s" . }} {{ else }} {{ end }} {{ else }} {{ errorf "Unable to get remote resource %q" $u }} {{ end }} ``` ## Image processing methods The `image` resource implements the [`Process`], [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods. {{% note %}} Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG or TIFF images. {{% /note %}} ### Process {{< new-in 0.119.0 >}} {{% note %}} The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process). {{% /note %}} Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`]. See [Options](#image-processing-options) for available options. You can also use this method apply image processing that does not need any scaling, e.g. format conversions: ```go-html-template {{/* Convert the image from JPG to PNG. */}} {{ $png := $jpg.Process "png" }} ``` Some more examples: ```go-html-template {{/* Rotate the image 90 degrees counter-clockwise. */}} {{ $image := $image.Process "r90" }} {{/* Scaling actions. */}} {{ $image := $image.Process "resize 600x" }} {{ $image := $image.Process "crop 600x400" }} {{ $image := $image.Process "fit 600x400" }} {{ $image := $image.Process "fill 600x400" }} ``` ### Resize Resize an image to the given width and/or height. If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio. ```go-html-template {{/* Resize to a width of 600px and preserve aspect ratio */}} {{ $image := $image.Resize "600x" }} {{/* Resize to a height of 400px and preserve aspect ratio */}} {{ $image := $image.Resize "x400" }} {{/* Resize to a width of 600px and a height of 400px */}} {{ $image := $image.Resize "600x400" }} ``` ### Fit Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height. ```go-html-template {{ $image := $image.Fit "600x400" }} ``` ### Fill Crop and resize an image to match the given dimensions. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point. ```go-html-template {{ $image := $image.Fill "600x400" }} ``` ### Crop Crop an image to match the given dimensions without resizing. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point. ```go-html-template {{ $image := $image.Crop "600x400" }} ``` ### Filter Apply one or more [filters] to an image. ```go-html-template {{ $image := $image.Filter (images.GaussianBlur 6) (images.Pixelate 8) }} ``` Write this in a more functional style using pipes. Hugo applies the filters in the order given. ```go-html-template {{ $image := $image | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }} ``` Sometimes it can be useful to create the filter chain once and then reuse it. ```go-html-template {{ $filters := slice (images.GaussianBlur 6) (images.Pixelate 8) }} {{ $image1 := $image1.Filter $filters }} {{ $image2 := $image2.Filter $filters }} ``` ### Colors {{< new-in 0.104.0 >}} `.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method. ```go-html-template {{ $colors := $image.Colors }} ``` This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image. ### EXIF Provides an [EXIF] object containing image metadata. You may access EXIF data in JPEG and TIFF images. To prevent errors when processing images without EXIF data, wrap the access in a [`with`] statement. ```go-html-template {{ with $image.Exif }} Date: {{ .Date }} Lat/Long: {{ .Lat }}/{{ .Long }} Tags: {{ range $k, $v := .Tags }} TAG: {{ $k }}: {{ $v }} {{ end }} {{ end }} ``` You may also access EXIF fields individually, using the [`lang.FormatNumber`] function to format the fields as needed. ```go-html-template {{ with $image.Exif }}
        {{ with .Date }}
      • Date: {{ .Format "January 02, 2006" }}
      • {{ end }} {{ with .Tags.ApertureValue }}
      • Aperture: {{ lang.FormatNumber 2 . }}
      • {{ end }} {{ with .Tags.BrightnessValue }}
      • Brightness: {{ lang.FormatNumber 2 . }}
      • {{ end }} {{ with .Tags.ExposureTime }}
      • Exposure Time: {{ . }}
      • {{ end }} {{ with .Tags.FNumber }}
      • F Number: {{ . }}
      • {{ end }} {{ with .Tags.FocalLength }}
      • Focal Length: {{ . }}
      • {{ end }} {{ with .Tags.ISOSpeedRatings }}
      • ISO Speed Ratings: {{ . }}
      • {{ end }} {{ with .Tags.LensModel }}
      • Lens Model: {{ . }}
      • {{ end }}
      {{ end }} ``` #### EXIF methods Date : (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`]function. [time.Format]: /functions/time/format/ Lat : (`float64`) Returns the GPS latitude in degrees. Long : (`float64`) Returns the GPS longitude in degrees. Tags : (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration]. ## Image processing options The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-delimited, case-insensitive list of options. The order of the options within the list is irrelevant. ### Dimensions With the [`Resize`] method you must specify width, height, or both. The [`Fit`], [`Fill`], and [`Crop`] methods require both width and height. All dimensions are in pixels. ```go-html-template {{ $image := $image.Resize "600x" }} {{ $image := $image.Resize "x400" }} {{ $image := $image.Resize "600x400" }} {{ $image := $image.Fit "600x400" }} {{ $image := $image.Fill "600x400" }} {{ $image := $image.Crop "600x400" }} ``` ### Rotation Rotates an image counter-clockwise by the given angle. Hugo performs rotation _before_ scaling. For example, if the original image is 600x400 and you wish to rotate the image 90 degrees counter-clockwise while scaling it by 50%: ```go-html-template {{ $image = $image.Resize "200x r90" }} ``` In the example above, the width represents the desired width _after_ rotation. To rotate an image without scaling, use the dimensions of the original image: ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ with .Resize (printf "%dx%d r90" .Height .Width) }} {{ end }} {{ end }} ``` In the example above, on the second line, we have reversed width and height to reflect the desired dimensions _after_ rotation. ### Anchor When using the [`Crop`] or [`Fill`] method, the _anchor_ determines the placement of the crop box. You may specify `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`. The default value is `Smart`, which uses [Smartcrop] image analysis to determine the optimal placement of the crop box. You may override the default value in the [site configuration]. For example, if you have a 400x200 image with a bird in the upper left quadrant, you can create a 200x100 thumbnail containing the bird: ```go-html-template {{ $image.Crop "200x100 TopLeft" }} ``` If you apply [rotation](#rotation) when using the [`Crop`] or [`Fill`] method, specify the anchor relative to the rotated image. ### Target format By default, Hugo encodes the image in the source format. You may convert the image to another format by specifying `bmp`, `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, or `webp`. ```go-html-template {{ $image.Resize "600x webp" }} ``` To convert an image without scaling, use the dimensions of the original image: ```go-html-template {{ with .Resources.GetMatch "sunset.jpg" }} {{ with .Resize (printf "%dx%d webp" .Width .Height) }} {{ end }} {{ end }} ``` ### Quality Applicable to JPEG and WebP images, the `q` value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between 1 and 100, inclusive. The default value is 75. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x webp q50" }} ``` ### Hint Applicable to WebP images, this option corresponds to a set of predefined encoding parameters, and is equivalent to the `-preset` flag for the [`cwebp`] encoder. [`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp Value|Example :--|:-- `drawing`|Hand or line drawing with high-contrast details `icon`|Small colorful image `photo`|Outdoor photograph with natural lighting `picture`|Indoor photograph such as a portrait `text`|Image that is primarily text The default value is `photo`. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x webp picture" }} ``` ### Background color When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image. Use either a 3-digit or 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`). The default value is `#ffffff` (white). You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x jpg #b31280" }} ``` ### Resampling filter You may specify the resampling filter used when resizing an image. Commonly used resampling filters include: Filter|Description :--|:-- `Box`|Simple and fast averaging filter appropriate for downscaling `Lanczos`|High-quality resampling filter for photographic images yielding sharp results `CatmullRom`|Sharp cubic filter that is faster than the Lanczos filter while providing similar results `MitchellNetravali`|Cubic filter that produces smoother results with less ringing artifacts than CatmullRom `Linear`|Bilinear resampling filter, produces smooth output, faster than cubic filters `NearestNeighbor`|Fastest resampling filter, no antialiasing The default value is `Box`. You may override the default value in the [site configuration]. ```go-html-template {{ $image.Resize "600x400 Lanczos" }} ``` See [github.com/disintegration/imaging] for the complete list of resampling filters. If you wish to improve image quality at the expense of performance, you may wish to experiment with the alternative filters. ## Image processing examples _The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_ {{< imgproc "sunset.jpg" "resize 300x" />}} {{< imgproc "sunset.jpg" "fill 90x120 left" />}} {{< imgproc "sunset.jpg" "fill 90x120 right" />}} {{< imgproc "sunset.jpg" "fit 90x90" />}} {{< imgproc "sunset.jpg" "crop 250x250 center" />}} {{< imgproc "sunset.jpg" "resize 300x q10" />}} This is the shortcode used to generate the examples above: {{< readfile file=layouts/shortcodes/imgproc.html highlight=go-html-template >}} Call the shortcode from your Markdown like this: ```go-html-template {{}} ``` {{% note %}} Note the self-closing shortcode syntax above. You may call the `imgproc` shortcode with or without **inner content**. {{% /note %}} ## Imaging configuration ### Processing options Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options). {{< code-toggle config=imaging />}} anchor : See image processing options: [anchor](#anchor). bgColor : See image processing options: [background color](#background-color). hint : See image processing options: [hint](#hint). quality : See image processing options: [quality](#quality). resampleFilter : See image processing options: [resampling filter](#resampling-filter). ### EXIF data Define an `imaging.exif` section in your site configuration to control the availability of EXIF data. {{< code-toggle file=hugo >}} [imaging.exif] includeFields = "" excludeFields = "" disableDate = false disableLatLong = false {{< /code-toggle >}} disableDate : Hugo extracts the image creation date/time into `.Date`. Set this to `true` to disable. Default is `false`. disableLatLong : Hugo extracts the GPS latitude and longitude into `.Lat` and `.Long`. Set this to `true` to disable. Default is `false`. excludeFields : Regular expression matching the EXIF tags to exclude from the `.Tags` collection. Default is `""`. includeFields : Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is `""`. To include all available tags, set this value to `".*"`. {{% note %}} To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`. To control tag availability, change the `excludeFields` or `includeFields` settings as described above. {{% /note %}} ## Smart cropping of images By default, Hugo uses the [Smartcrop] library when cropping images with the `Crop` or`Fill` methods. You can set the anchor point manually, but in most cases the `Smart` option will make a good choice. Examples using the sunset image from above: {{< imgproc "sunset.jpg" "fill 200x200 smart" />}} {{< imgproc "sunset.jpg" "crop 200x200 smart" />}} ## Image processing performance consideration Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a CI/CD workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds. If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with: ```sh hugo --gc ``` [`anchor`]: /content-management/image-processing#anchor [mounted]: /hugo-modules/configuration#module-configuration-mounts [page bundle]: /content-management/page-bundles/ [`lang.FormatNumber`]: /functions/lang/formatnumber/ [filters]: /functions/images/filter/#image-filters [github.com/disintegration/imaging]: [Smartcrop]: [Exif]: [`Process`]: #process [`Colors`]: #colors [`Crop`]: #crop [`Exif`]: #exif [`Fill`]: #fill [`Filter`]: #filter [`Fit`]: #fit [`Resize`]: #resize [site configuration]: #processing-options [`with`]: /functions/go-template/with/ hugo-0.131.0/docs/content/en/content-management/image-processing/sunset.jpg000066400000000000000000001034301465312036400266720ustar00rootroot00000000000000C   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((2"D!1aAQ"q2BR#b3r$c4DsCS-!1AQa"2bсB ?gh4u AѨAhh5 ACPh2FhH *F HdDCP! Zt5 hDCY(QK"A&INHz 5 j(mNE(4iEmj!Wi=Hv-;Jm@%;h[MJ==خm%Km6%J6'Km%Km6#;J6% m6%Km6#Kmhq6M6M- Zy6Mm-IEKm6BA8_hBKm6!K8hgAM@J hWimvhQ]р4 ( h4R AHF5(5!Ah)HR  R T  2AH:FHR  =MHt R#P AHt@M )FHH4:AH R)FQ(4>P *%5: DZe2';JQPm)AB{CFB{LUDE M(Oii]Q'mD6h-WiE m6һMvhضm#J6M6M@6im\A8[i@q6&vi}q ] AKm(GhK8R;@[h6q3m-Y Kh(Pq5q:ҴQ4hH4@ #$H2FHP#$P  ‚Z h $ C$(*C$B2C$d ! @-H4R AHdH2AJAR h C(RdH4j'A됤$j)F'4=z #m)* NC :5N';J$) Ohv[CF'FQD@ob}@Oi[Mm[Mm;LYDZ-V6A mһM3m(Gim(Gh6qob 8ij6"+^E* OhKPM+viFD&h һ@T6ҍ`R "4ZRA()"AH) R AHR C$ AH) z R( !! AHR KdZ C$Z C$h*A)HHHj(H)AY6Q N#$ FH!R2E(ɴ4>Ш=j{ME(@D}HQ5t``hh h'v mқM iMmQW(hmvhmvm[M]%Km6P#JP%Km3mvhT6Ķ8m-Ahľm[ig8qE@Am,"6h E4Y@J8PhWh('F)F?/CQ Dh  P  @H)!R  ! @R"R KR ! 2AHdT"T @% C$D JR! C$2@dH)*FHz % CP  :FѨD \ :5ђ &{LJ @&(Hm v5m(m6)@m+FQ@Oij[M[hlm{MhKm6#Km5`q-@m[h6-q,#<q#%8Ļ@%ǀ8ij@q!hȮ@viV@I%Z@I8Zn(Z*( ч~Q ђ FZj5 *2AI hHdR$2AHdTH)"R C$2C$  2@*C$2AHR RʐR H) h! jTCjRH) Ld]D C$ DCDDCHmR E5@*A &EA'Ao`'AQoR()iHShvpmP[C*'Jm6'WhvWi-B Xh} m6Ҫ&vim60 Sm-@8@~ػXq5p[g`m>@q/ A+yDW""$TZgm.>gqWx EQg\y[LR _@@R C$VKC$H H) RR! E! H1AHd ! Yhd2C$THdP!dR C$2A2C$$! DaH!TBJ CJ CE=DH*>C(% @%(DQJ2@"R)Fm(K)F$dPv %LFKvQ2mOiJD 5Q6KiۓmJ!Wi{-Q+ma]iZ2 lһ{hKm6#KlmCiڼmlAmqã`6'Chw\N8N+&q/i++qw8 _h{AWCB}@]ǰ{bL ~! H($p R @dR C$H$HdTHd!) $ R IR! H*#! htRP#$2^a)RR CJDdH !dCP ASQ AH!jH;@M Ht5=jH*%CQ2D (*%2@MDeBP&mD EJ(;J 2UP[MJ!UD>Oi+;@l-maQl KhvQ6Јf#vQ6а6CaK69awm Ha`p`Nv@q9@Ν϶qt8;'CDw\Ki\Eq:@;'C@qq{\0Hdd"!$2FHd 2@H) @Hd C$2C$2@*WdHdTH) AHdHe 2E*AQ z AQ 5 D)*AHj (! B*Ae+ ]P DZ.F D#(b؞MXEeh!l THB(Du CR D2lN aFQ&dvhQқCm2QTJhmA$Wi5DTC3mGiKm6#Kmg!KԲAI8Km@8/ Gmľ:h C6EwƎqA+`Co%@36v:EqϷK+V{h%AR; [iC$H$2AHdC$dH!$4PbH!$2\(t! C$HdH)FH) dQDH) 2C$2@*R:AQR2C( ]E!ADH*#$2@*^FQH;@MHuPR 4=zMHteC@M!GH4m CT}}H* &(MGG% (BQGeMD*?BBFQGe%eB{E-ض2eŔB@IGe!im;@[iy*Gi-;l-|6sl:6hꁳѰ@`m/@A. W9@t8W¸:p;=\~D3\Ew\N@qq&t864bHL! ($ AHdz R$4PR C$HHdH)} P!!! "#$2@-!*<Dt R$ ah)p:AH6DxTRA ,*FHdڂ2C$,MDe BmT|Ņe!HXEm(`XTJ(X^%D)}GH)=(AQ!KE5(Q EF4,Oj  (GX%CX`Qbj#(2=**>I Q2mq%Dm@"Q fq-E DXET| m6vo`8Dq]GiKm6Ј8Ļcm Hm @ Aߑy sB@>\N;:6KjqYzcQqǰ+.;N\@`>Vz! 2AH)! AHd$:FHx`$2At! :@*C1C$pH2AHdT/1Hd rH) RR!r2^$THd.LnFIt  = .FHdR$5 Oh }@Z CPh R/!#PFQa CaFKu ہ{ BFHuа!H GѶ6bq#GaTM"l*<DX5 Q E,KhvQ5 ڂWj6&(Omi]h=خm[zDm[Mm[Amm-@6 q\E< js҅K8+\qw\EŔq(q|%Eq\y:>>zDZw\Em1]bH) QH 2BHtA! C%@Hd*C$2C$!H(%#$2^ HX }_Q /Q C$,H) ! AK-AHdHT@R!!HdT C$2AJCE2AH;{ AHdQQRzp2TGKTEDHmQ C,(2bQ&5Q"IDex )4ETz`)-QE#*?(.AI )52FQ'JDYImvDYI((h!QR;CmA,6 YH6l3b!-P M8a}qR.":6Xq6e9\{e#zYNiC'KEq+Wt6t8\hYNw\N\Ie9Eq:DqRWmae>>F(գ$:FHhdHC@ dH 2FHd R \Rhc%)!X !h !Hd$ B2C$2_QjT!!aR! ]hdR  !!cP2"AKP"%dQH*=Z!*?r< ,GT{ Ȳh)H*=e/`,FQ:y leYIQ!)5!GHdeD*=(Ezr[(!QD)MDenHj,"vaZJ^FHZ&e -fM(QEQoab*!UD*"ĔCUBĶF6iZ2)-m6mvi EKmm) YHR. _h!Qq3mqvhX6qhqĻ"A\K8YHJ"qYH4+EEq,Eq.+ Ci`S1CE(t&Hd@Ht:]  S$:^HdMDDE!4P ) KcEh,dK) !dHXK(X KX.$%R ^c,AhS$e,dH)ֈk+(z ,*C%.QQToR M-.B62URi ,$;xQ6Q B"=KQR!}Q("y!e.(6"CF#(K(=QDd&FRQGԴacF?Bh*.Q*2%JvCє}Q,2bh*#(Z122e$4IDeU D2TJ4e%Jv 6MDe=Q&)(U&)(j*eðIThm6j#(QDhj7!Q&)c$QFQ64Q)tD)vY"AHuI)6DєR2TJm DٔDtْ(DAHlFQ 6dFQDdH)AHlR2E2Dقhz5 -! -ل4:AHl(RCfQJ5kRDلRCȸNE(O"6CjCƛ@h@hCƛ@hxuy$P M.SP ̪IG4e%hhB:C$MO`TkȪAQ\: .H t&$]&IE(ْ ?Q"2UFH)fJHdC. !!&H;Pj& R C%& ْ2AH) *CPR D !%HdfKAHd R f 5!Phd6`()6- A0 5 byh!ѨcQ| Fȸ-1< F5Ѩj5ʾ2PD򯌴+EyWF 'Q_SGI 網 &8AH)#$M.ZC$j&̂C#$,,5(2#!$Mț\2 mpaP.dO"¦'p!C 5ȸcȾ6[5Ⱦ3,fR3DB~AM1ԉe/RI֗鐌I+/dJ24Ut I ѕA4R&*ɦ2cFT~R\rM.TCpM1hʉ]ûeC_>ԍ)DDԐHhS &RK(").MdG0ۆ&crD,-&92O &i'~hM{Z\EkpXQOgPgʣϿស'̾de7-0JTd})?ǯhI~&>VޣI)>OH{_ 2iӕL)irfLE D)=ڻ?ۆ*XSDq4eDb&܉'L)5K,T̙4eDdų&M.NL)kL)mdk43ɬ),6MN[2dٓl[5k %ɶd,6bz `YF!wp_s>E%X=ŰZ'Y]ۑ!CfYϐ"y@5B01yTjhI1j!rbIj \&䇑<$ )!\L!FONLIH'&s161+'/VUHG!tfR3^#dQd3 D4gG rwd2SVYȟY;Kn^!юEG!+9Iz1ܤrY欽YrJ-,u0ܔx<՚YIJTVR's͎nG7%+Y: YƎSYw%Id^,5g2ߐ=% e)^'sYgO΀|Un,ʔD2ȽO=f2ȴVEn,kOCc,=g^,ԖSzp>7rZӷsE8[?щ<%g=KڹҜ1YcLG126ٚj{CSypw~Wc\Kc՜n=R&e:\hɨ6NRq~r},~=Z/ T<&ﴏjrJLw(?f!Ц2w9෶aS8VnY.>Sq,²RZӻze^WЖSq;.Ց >/pkr³we32v5Uܲd^/rZܦ2+/qTf8üY"[Yvn6A̺ qx+/rZڦk1%|S3+ü{㩙pu7M☞Mx~'po9|Cxguo7rчV_+!4aӼ}*fttn Υu#;fxɑRftˆt%"Nr k(QH("$$MQ#4% "R͢ӊrd6!9PӴA$NRD4JYqVR#r2ܛj%⼦D'rrܰqtSsK/q%zs1cw,3Q8CcȘ5%K95J?_?:*["Ǒz5_&BtO^N_#*|i?{t'Fg/UM,oאZOyy߫+MӸnky N**k| ϟk~8Z9RxkLΗ-|SN9${8K~}?:y(?H߰q{oAq5X>|9Kz|iy~NCɨC7]~vQ>g˫m_BLtV\pUǙ'fPYתfM>~i%6h3j'ô꾇8~e{?% ($#&)J||>V)6)692E5KY쿴}V9-9+\4&ϐ&H ]Sxi(jE.x6>dٟc?Q}11E>5/G4Ye|s|)Q^\MJI{}OƠ=~?W_:1{cKf'} gxïoc<ZZV~"?J]i>~童Λ̎W)tLx{/5{/?<ǎHiN)wtI C 3P\1S"TRDj4&WM:i6yznŨxy ongR4w`|pښ^=fZEzP?y?J80grׯ-7;8qw2&n)UUt?[+[^Ğ9)3kTgJ柫z}ISqRi~_#t2Xs|N?S~k1Ɏ9!O(IZjk.e>}{~m/0ey+%ߤYMI{-jAgr7'KMs0c'Q|q~kWK ֯Smn쥯}^-j<'&ßFh JukW[SZmCI7VPc-G:󤛞4R3=_SZMOV3grLJ)[m_p~kW/[K~w)fM`Ou} -S3%:oykc2VRJ-Z-M+J#{[2 joƫ1o.4r_zoukcZد_SÎ,ٟlgBOvX*iOa+Ml=PV?̾=˜13%Cn~KUЛ]J52ʭc_O֭t?}FZ2 iN/Q#6XV҃tcMG/_Q?̾9j1z,nV?Kq}'V?̆Z2?=Y4?27KSw&zOG]_Q㮇JSwnq*1Po'H^qCu~i貮%'O/U1>=_Luu:oR_]ZN롞?Ύy}OZWƭ_0\}Ǝ:~r:O,ƾn_Sq挚ZmL.䠌Ouaz\GÖ{wbr[S ZJm~r G~ԯ9pOapmrKJY'_K=- Tfg]x>GwN|KWaxqj&gNQNVt86{_\o;ӹtv(}}f3;$75|.5v?+ƲV֩%$꽫O>;K*&ge~?Syک'ck5)ԵyW8zoR]bz]?~QMvmV?G3ڌ_C,r#o~>qv?o.<5pꬱTu|:Fr8F*Y>/,m)%يI& Z)"I:͓UpmujT]N_(JAFSJiEZNըE)K # 񍨵մi71JIzoBU'ʛ])]EI8K$osbND%$u,rH8ש8㎛@G< PQn*iZz$NrI؉EJҿxq$"Ez3qJ|ytת%);\/V6גZǎo$o~}VjKrwJyy61nX/r_2u6@cdI흾-#U|&jA%^~g;_ !^GKro¥ '~TabFrKUR7WҴܞEEc%Nrh MmFU~R.4,1X6>ǂ\ybhoqݓ^a]ł:|z,]u:(b5͞LaOXTRJԽ'zwRC+rnMۻ#$۵d}ڙ[i cDx:|SlUŻ*1d-˯ b'H0.1eY˾KEQܿVRJ_<1qF=N#ʚiRFq]?YZOscUB&3%-^\ȣ$&'k1My?kk~#[U(s}8dsrW>8N2qkDqRO&',k.YCimȷExڌkL7r?V&"~ˮy>\Y'''RgM^a{ɕj'c%$<"MX sg*'qO'yrOyj&wgI[Y}S[IQMW3VKd,QnO^mFDFKRq_,TrQ&kd2a^c1Rv-"Q5?$ -VU.O'i}od䒆=NF߄7CeO짪 =?_jMOSĺQ=&9,xeT Jn۳pkuM& .<⊨_C#b'"]|(r1~2MS*'8v~WΨ5>}^i,>-FY\W Gk7qח10$q)WRkc_'^'eǬ.n|69\d]W<2|,5I|{5ߍ=W瓽UΏMӼ'IS|Q% Rm7v=ú)A\m4~G^$́5JM_ƨJ}|Nje k<]^όS}ߍaWJW2>cQgypiT|W^r916yc[t\ODZ9⟽k&ϙ85:BwKw?1/C7%8ڷҿIͼkaY#*9c*_T|=''}WPJQXoqpW,Zš95v翏MjTtyqF<{(^ ^g8XI},<51={}{SE(8icrQ{R9)S˧Oe&WGTj1j΍66NZy)*oڳ~c/KWPsɁ\5$G,Xg*_9',rduܓ^k,tXȖ^8JQUG:i{1/gXi?yfP}R_m\8q|jIK]ېN <5YrRŖ\O$SiEm.(\KI>8㔿Se?$"Fr9=jfKXK$]~=4OkE&%9 ry9,K2mk~&fϷEx4;J.kpW<(sfÝJ.$~K]N$'+jmtD6mk)os6<%@ eMds\z/H\tnI"PommnlTI(}Ưoj\RW}嚔Z@Kuv{x9tθIqΎidm?fqtVt(kk8:otAnKNܣJC"CF.-JK/ñ\]9ӓulE,9-rF,j>Ϡ|q^OPg£ԗ=znL $iw[z2-ŁM˩:#XwV LlSkq_eվI'ڊu\nX/zS_S ši%S-bJxPOIǙ()lj;y1YG&W\}OKAsԔ[t$wcŏ>Pr鮜u:k_WBb}fpQ\./Z8f8uve,pT,\Xb};ّ$FחbƷ85]BK k_0eģI>e%N,rӔq%;4#+W6#:y^IIfr%aҥQO?P&O^{ ع=ȯ7:ڔ_JcRa2ӂt,EFEFyW6ؾ,e*jҗ)WO>kÊciyG& 6}J FԲeښ]>\GlmH\]kM.|vǬWnٜ-;rI~e.>wW[0nr}/(l&Ҋ3։9]'&Ԛl]m>q5i.hGxMʢ=KpgE[qv"7֟cY5m.yӻ +SEsjӋMŞS[_QcvGr}x۬uj;Rn-;'q]: [eˤ⚎ۧ*5R\ۑ|v䔩33 p,eX[b97m"۩܊m ߨ@'&K I./ ס}4RIARra7bا5jMyw$$O->_ I?ҫeŤz[OźZur zKpَiW(i=>\2bX6RX?}ؼSmROug*+o(dاW{zwb i%wӡlŕIM/v+yGouqR\y$dX䶯uY7gAB9xm&YہyҖsE2җJ\q lQm'wNUO'UọNI0#~EcT9+dTd9(^g.9J)dw5k ]yYR]DӨmEtI)B?4,2q ӡK2xZk>]M*yydM|At)A6&>Sj*T.[Z9.)6m[חZ[qvy 3'qY15M>65O my=&$Q\P!Uڕ)mOXAE\OAKȋYAS~qM_6 dm>Eh,NQ'& ǣKnKNU*_X:obkS1oZqLh㮪bdwu͓nNrVd#ǣsdwЦ\| 3?({wdjsm_ՋJ"ĝwYi|JEwá%R9K^Q?OS.5.Rp% (E E Zٍf*?IZPȗOv\'Mᨓ{ hKUKOsPE6K4uO6\qQzRUlյ׮ٮ~jUu$GbP딧&W9.7yQo=?a,j8㑷?I9VX}Jx8-LK&;C#|5//8+iOǗ4[6GR%mYmL3qJfxڝNmLg<3ɎɒR?Joi jV1JA6SW 5Ӡ+sb):\?VjLqE/y:ؗJSj :NjߠUОj*Y8IW?4qMWbyq$[z\ ,ͮ/qAҮS"w7|0Gĝ6ү!,})I9UG (e7Ep_K"ݜs˯ \ly.KS]?<&覫@̗Ifݍ}HI֔]N>i݉,m#NrʞM;GDE"w}Spin]J;Kq%_m; ;9J JniliNbrJ|IeR~9*WqptQJ;Swv([ItSnR<ާn=U%$+yˑ"kpRZ# oޣ7.8>ZѓzrSJJ:KW'.<#pMq+~Ay0RMһ&; }]^RMn-ۻ| smE#I%Ȱ1JXi*&o4^>xR"dܐSjO,KлW)Ep`WI$K9q|svߡ9EB.B,M+$nݙӓx6ixǖzm|Zy[VH(BcOjgDcw$&g^u:>bNmء A[k!ג}5oo:՛I j 9$4dtȸLZ|r(4g$idBS^A^>%ǧ/՜;GޚKG'K"J"9*Fgf$K:c(%~Er=on2DבէȤِ;۴K,VHȼ]v8'EOkʊ^#ܝ+-V9m+b3rJ<˧\_ŕb_"Zm~9M_Iqj%q]=F)G rqKx"%}@vMMΕ`OEŒ)SmWmU>Nq>Gn.)-[uśm_k۵<-gtM7hOAt鱴Ԥy/Qpb_$Ԣ .W*bnN=WЬJG'4@jtlTK/u/;-(ܛΉ"m'%9w)Rtti^5q|ha$u% k9ovxeQƓv1r[& i[RɽCizh4"SJ׫:7m4\!^)][b>XHj#9j#Oޒnǂs|/ӏH|y O]B[W'dbA]yK _ZӦ{sJ̏nrJկ kATWQ'7Rŕ7RYɂyRK [V>hnUlZ,#s꛿IGsiI7ҕX<suԶ^kEM;t~ǿݑ[s괮ZitzNP KM.GN/1,Ity/& ~V11adP|0qE& j\Ԣ3DL0EAY@tc7$GT[qn2M:cHy%r]qw $x|NzuatdmHiNmݠi-7\ڶ5+"ODenߡW\n)>Uf7)Fm&n3%ZyJ+̾)cɒiף PإGj/PGq{ãH+x R_n8'U(Te *qQZQoSQSK2Uʟ /wg,=$f~Ac$/? \6M>G{]&<ɟ^hԫ$ю2i+m7(KRk*u5/&D,QƛwN)&5QVXG>U*yW)ͺ8b)?TM7ӅQOO\>ⶓNSKݵW,s ~[unB/)&|.x U2):մO,Uy\KVcT4ZJQIpbnW2~aG3^[Wu۩$I6 r$}l㩱Vy&cRr$gKKZK&p[n\d*qTTvAT+i@| lM\t3U0$;ߡ`=x pIW4+k_/&=(: FM}B5bX15ق.68_ǠiqR]n]J˙E(7pyW'QEq,ԥF69s+V JY-=L`N3v,JM+%brsqj^kru9'Y/`Ól饋1βoX= 3c&,Ro\x '?X$ƞ4vy&sIRs"^>G؆YMQ[$[6],,tMC+5)eKJ.2b\nYeĚ~6G.%Cc576-.Y7 / <V8kRIU_|#x*A^Jg_ˊ.wEEsZ^+L+@ONIGM]EMq݃}NzXΣ8 xX3k^jcd,X⼜[_QrK2R(4Dl'9'8#LPǏ#ƔIZm8Eɮ8Jm6U)[Ҽr#y-?x,ؗ?s 2k$9i)&PISF[NcS?GO%s5ߟ`[⸗?A9/t͹pܲ')(%nD.; &\S};: I| A%,M񦼜XAxJe6jq W|-J;*M8^)-,5tQ(J^|(ƷcM[c*?ʲ)NPUZkJ/7&6EU'XKuV4pFQ⊥vEcj9W(hg7rU84焒WTz%Ž$FO 8IHdMk8%rqT0zn\QAtDE7\}*u>&gEqr}efR_pohdRx҂JqI} rR|=1)UOxo2)FPtǻ#JK9|,clӓy3V:eQy84w3IRs܎/&T~bΞ}UI_85W`Ǫ\2Bq^IŚ4|ے8gK-62Gl~r,_4[ڒٹMiSk"%-ŋo6ֽRSߨ%RxbGд1pY3oMtrřh/438rʣrIGE>h'㌛Ms'QKd|ŦJ=iMNy:8 dq=j\QNcNKrk"-,mя-<#(J 4MDvK\8I{z8r:5}/#8NVSS/'RWUF[[_n J߭` r*0\u%&ʝՖbR3OI996v,f눱a-WygD\yF-ӵ(&|J9ܛIF8Ȝ_ PIuI.|F(5|_`U(4c[d. ߫LG%d%ձ:>:7eb[d1(-1OZ:rS{(MZ+q)JfΓ^uxRī#+R͏ =߳Z=$5ORJXW2?_y3ͩ)qT.rFmb?-bS_ez8A]jM%I5>y$O׏شTܸ.Nx86WǛ<"e0<'EYvſ݉c^m/œ;rlI]ԛ J+IJB~ݦp}KInI+☣~6Gܒ];V}T@凉^(NO!(㗃k4pŖq2ڎ\}9SY{QէǍI4щ9#NprKÂR9Te۫XvI%AR9b^'qd tlӌqJir;EBR*O<Tw5v5O%JG5C{6[JXtߚ ٥Q'˫Q&Lm:{kάY1AE#iR qOnj>WCs˭ic 9!:ɧ+]!,{2}#m 8Ț%2̧7JQwռOŠɏI}ۧϓ'BX8=%r{_0>7krY²"d6_`)R(Xi}@dR7QM}[MRj\m||pihܾE 'q㤉dˏ*rN1|nI%,Z\Yd'~RKYf疛.7ơmx-Ij8\EZ􄿱רmiEO7µ*#q6d^\Y0ǑϏ 乼J5[%%{rPQC[\Z+ea4LqW_r+d3VEwj Cx9y$yWq͋bIb_09cr9),ST8ԓsZHNTeK|$'?!7<-C\*r<-i<-Za̵1\n_6Trfrw*LnYdIW3pN-+|9!'pd#:dLϙ'I6םNqR}8⾦qRڥvM:j&:'oUn X$pFkk]/Z;TPƪi?NE*;CXvۤ oȃ$rfHU[o("}[t&꺏)T%26BꄶJ9渽M*Q6ɡ>)-nk.˶-bߙ Ǡ5 3XLa@aL`c c)8F1w䨛81Ww)?9s%} c2h͓#U1غKc)7'm.0 `=eㄺ/a#җw˖riܤf1ϋ\\Ҕݤ:1 c?$ܜq:2smɌQh?ڪ jÃȎ~KJ9=ԗ5).HGČe]7+9% PJ*N b,5y&{\嶟~0]Xn {x*'ۙ-sf0bE.= m)ʾ&1f3j4Z$1 MڈCݶ;s\1d/y1Cޜ#yr)q9/1 ^rc{'1hSlx"tc .Gcy'ᤪ7/ٰϚ1uRPOcH.*1I_=Ǐpz~F1 64.;&XfCC& I-S= yrdvc l#6.FNQ~Qסo&\#rƷswRLJƔS;xqi{Eͨq1IWrK˓'\rNrUNbTT9J*ErԤ?umWBgX^ c-=<<s9~qt1D~77,bǓ:|!Mry"F)F1ւ4Oq>F1R񚔔Jܟ?MhI7&1 R;WϙLOU4i]La *朷U&_Sri$8c>')(m~,iHX#Oj^G&_sR=od6YKǒY1.[O̫ $Z#Hl__1!Lb+|c 21c1Q`11hugo-0.131.0/docs/content/en/content-management/markdown-attributes.md000066400000000000000000000061671465312036400257540ustar00rootroot00000000000000--- title: Markdown attributes description: Use Markdown attributes to add HTML attributes when rendering Markdown to HTML. categories: [content management] keywords: [goldmark,markdown] menu: docs: parent: content-management weight: 240 weight: 240 toc: true --- ## Overview Hugo supports Markdown attributes on images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. For example: ```text This is a paragraph. {class="foo bar" id="baz"} ``` With `class` and `id` you can use shorthand notation: ```text This is a paragraph. {.foo .bar #baz} ``` Hugo renders both of these to: ```html

      This is a paragraph.

      ``` ## Block elements Update your site configuration to enable Markdown attributes for block-level elements. {{< code-toggle file=hugo >}} [markup.goldmark.parser.attribute] title = true # default is true block = true # default is false {{< /code-toggle >}} ## Standalone images By default, when the [Goldmark] Markdown renderer encounters a standalone image element (no other elements or text on the same line), it wraps the image element within a paragraph element per the [CommonMark specification]. [CommonMark specification]: https://spec.commonmark.org/current/ [Goldmark]: https://github.com/yuin/goldmark If you were to place an attribute list beneath an image element, Hugo would apply the attributes to the surrounding paragraph, not the image. To apply attributes to a standalone image element, you must disable the default wrapping behavior: {{< code-toggle file=hugo >}} [markup.goldmark.parser] wrapStandAloneImageWithinParagraph = false # default is true {{< /code-toggle >}} ## Usage You may add [global HTML attributes], or HTML attributes specific to the current element type. Consistent with its content security model, Hugo removes HTML event attributes such as `onclick` and `onmouseover`. [global HTML attributes]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes The attribute list consists of one or more key-value pairs, separated by spaces or commas, wrapped by braces. You must quote string values that contain spaces. Unlike HTML, boolean attributes must have both key and value. For example: ```text > This is a blockquote. {class="foo bar" hidden=hidden} ``` Hugo renders this to: ```html ``` In most cases, place the attribute list beneath the markup element. For headings and fenced code blocks, place the attribute list on the right. Element|Position of attribute list :--|:-- blockquote | bottom fenced code block | right heading | right horizontal rule | bottom image | bottom list | bottom paragraph | bottom table | bottom For example: ````text ## Section 1 {class=foo} ```bash {class=foo linenos=inline} declare a=1 echo "${a}" ``` This is a paragraph. {class=foo} ```` As shown above, the attribute list for fenced code blocks is not limited to HTML attributes. You can also configure syntax highlighting by passing one or more of [these options](/functions/transform/highlight/#options). hugo-0.131.0/docs/content/en/content-management/mathematics.md000066400000000000000000000216761465312036400242470ustar00rootroot00000000000000--- title: Mathematics in Markdown linkTitle: Mathematics description: Include mathematical equations and expressions in your Markdown using LaTeX or TeX typesetting syntax. categories: [content management] keywords: [chemical,chemistry,latex,math,mathjax,tex,typesetting] menu: docs: parent: content-management weight: 270 weight: 270 toc: true math: true --- {{< new-in 0.122.0 >}} \[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \] ## Overview Mathematical equations and expressions authored in [LaTeX] or [TeX] are common in academic and scientific publications. Your browser typically renders this mathematical markup using an open-source JavaScript display engine such as [MathJax] or [KaTeX]. For example, this is the mathematical markup for the equations displayed at the top of this page: ```text \[ \begin{aligned} KL(\hat{y} || y) &= \sum_{c=1}^{M}\hat{y}_c \log{\frac{\hat{y}_c}{y_c}} \\ JS(\hat{y} || y) &= \frac{1}{2}(KL(y||\frac{y+\hat{y}}{2}) + KL(\hat{y}||\frac{y+\hat{y}}{2})) \end{aligned} \] ``` Equations and expressions can be displayed inline with other text, or as standalone blocks. Block presentation is also known as "display" mode. Whether an equation or expression appears inline, or as a block, depends on the delimiters that surround the mathematical markup. Delimiters are defined in pairs, where each pair consists of an opening and closing delimiter. The opening and closing delimiters may be the same, or different. Common delimiter pairs are shown in [Step 1]. The approach described below avoids reliance on platform-specific features like shortcodes or code block render hooks. Instead, it utilizes a standardized markup format for mathematical equations and expressions, compatible with the rendering engines used by GitHub, GitLab, [Microsoft VS Code], [Obsidian], [Typora], and others. ## Setup Follow these instructions to include mathematical equations and expressions in your Markdown using LaTeX or TeX typesetting syntax. ###### Step 1 Enable and configure the Goldmark [passthrough extension] in your site configuration. The passthrough extension preserves raw Markdown within delimited snippets of text, including the delimiters themselves. {{< code-toggle file=hugo copy=true >}} [markup.goldmark.extensions.passthrough] enable = true [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] inline = [['\(', '\)']] [params] math = true {{< /code-toggle >}} The configuration above enables mathematical rendering on every page unless you set the `math` parameter to `false` in front matter. To enable mathematical rendering as needed, set the `math` parameter to `false` in your site configuration, and set the `math` parameter to `true` in front matter. Use this parameter in your base template as shown in [Step 3]. {{% note %}} The configuration above precludes the use of the `$...$` delimiter pair for inline equations. Although you can add this delimiter pair to the configuration and JavaScript, you will need to double-escape the `$` symbol when used outside of math contexts to avoid unintended formatting. See the [inline delimiters](#inline-delimiters) section for details. {{% /note %}} To disable passthrough of inline snippets, omit the `inline` key from the configuration: {{< code-toggle file=hugo >}} [markup.goldmark.extensions.passthrough.delimiters] block = [['\[', '\]'], ['$$', '$$']] {{< /code-toggle >}} You can define your own opening and closing delimiters, provided they match the delimiters that you set in [Step 2]. {{< code-toggle file=hugo >}} [markup.goldmark.extensions.passthrough.delimiters] block = [['@@', '@@']] inline = [['@', '@']] {{< /code-toggle >}} ###### Step 2 Create a partial template to load MathJax or KaTeX. The example below loads MathJax, or you can use KaTeX as described in the [engines](#engines) section. {{< code file=layouts/partials/math.html copy=true >}} {{< /code >}} The delimiters above must match the delimiters in your site configuration. ###### Step 3 Conditionally call the partial template from the base template. {{< code file=layouts/_default/baseof.html >}} ... {{ if .Param "math" }} {{ partialCached "math.html" . }} {{ end }} ... {{< /code >}} The example above loads the partial template if you have set the `math` parameter in front matter to `true`. If you have not set the `math` parameter in front matter, the conditional statement falls back to the `math` parameter in your site configuration. ###### Step 4 Include mathematical equations and expressions in your Markdown using LaTeX or TeX typesetting syntax. {{< code file=content/math-examples.md copy=true >}} This is an inline \(a^*=x-b^*\) equation. These are block equations: \[a^*=x-b^*\] \[ a^*=x-b^* \] \[ a^*=x-b^* \] These are block equations using alternate delimiters: $$a^*=x-b^*$$ $$ a^*=x-b^* $$ $$ a^*=x-b^* $$ {{< /code >}} If you set the `math` parameter to `false` in your site configuration, you must set the `math` parameter to `true` in front matter. For example: {{< code-toggle file=content/math-examples.md fm=true >}} title = 'Math examples' date = 2024-01-24T18:09:49-08:00 [params] math = true {{< /code-toggle >}} ## Inline delimiters The configuration, JavaScript, and examples above use the `\(...\)` delimiter pair for inline equations. The `$...$` delimiter pair is a common alternative, but using it may result in unintended formatting if you use the `$` symbol outside of math contexts. If you add the `$...$` delimiter pair to your configuration and JavaScript, you must double-escape the `$` when outside of math contexts, regardless of whether mathematical rendering is enabled on the page. For example: ```text A \\$5 bill _saved_ is a \\$5 bill _earned_. ``` {{% note %}} If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437). {{% /note %}} ## Engines MathJax and KaTeX are open-source JavaScript display engines. Both engines are fast, but at the time of this writing MathJax v3.2.2 is slightly faster than KaTeX v0.16.9. {{% note %}} If you use the `$...$` delimiter pair for inline equations, and occasionally use the `$` symbol outside of math contexts, you must use MathJax instead of KaTeX to avoid unintended formatting caused by [this KaTeX limitation](https://github.com/KaTeX/KaTeX/issues/437). See the [inline delimiters](#inline-delimiters) section for details. {{% /note %}} To use KaTeX instead of MathJax, replace the partial template from [Step 2] with this: {{< code file=layouts/partials/math.html copy=true >}} {{< /code >}} The delimiters above must match the delimiters in your site configuration. ## Chemistry Both MathJax and KaTeX provide support for chemical equations. For example: ```text $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ ``` $$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$$ As shown in [Step 2] above, MathJax supports chemical equations without additional configuration. To add chemistry support to KaTeX, enable the mhchem extension as described in the KaTeX [documentation](https://katex.org/docs/libs). [KaTeX]: https://katex.org/ [LaTeX]: https://www.latex-project.org/ [MathJax]: https://www.mathjax.org/ [Microsoft VS Code]: https://code.visualstudio.com/ [Obsidian]: https://obsidian.md/ [Step 1]: #step-1 [Step 2]: #step-2 [Step 3]: #step-3 [TeX]: https://en.wikipedia.org/wiki/TeX [Typora]: https://typora.io/ [passthrough extension]: https://github.com/gohugoio/hugo-goldmark-extensions hugo-0.131.0/docs/content/en/content-management/menus.md000066400000000000000000000141761465312036400230740ustar00rootroot00000000000000--- title: Menus description: Create menus by defining entries, localizing each entry, and rendering the resulting data structure. categories: [content management] keywords: [menus] menu: docs: parent: content-management weight: 190 weight: 190 toc: true aliases: [/extras/menus/] --- ## Overview To create a menu for your site: 1. Define the menu entries 2. [Localize] each entry 3. Render the menu with a [template] Create multiple menus, either flat or nested. For example, create a main menu for the header, and a separate menu for the footer. There are three ways to define menu entries: 1. Automatically 1. In front matter 1. In site configuration {{% note %}} Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site. {{% /note %}} ## Define automatically To automatically define a menu entry for each top-level [section] of your site, enable the section pages menu in your site configuration. {{< code-toggle file=hugo >}} sectionPagesMenu = "main" {{< /code-toggle >}} This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details. ## Define in front matter To add a page to the "main" menu: {{< code-toggle file=content/about.md fm=true >}} title = 'About' menus = 'main' {{< /code-toggle >}} Access the entry with `site.Menus.main` in your templates. See [menu templates] for details. To add a page to the "main" and "footer" menus: {{< code-toggle file=content/contact.md fm=true >}} title = 'Contact' menus = ['main','footer'] {{< /code-toggle >}} Access the entry with `site.Menus.main` and `site.Menus.footer` in your templates. See [menu templates] for details. {{% note %}} The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`. {{% /note %}} ### Properties {#properties-front-matter} Use these properties when defining menu entries in front matter: identifier : (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores. name : (`string`) The text to display when rendering the menu entry. params : (`map`) User-defined properties for the menu entry. parent : (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu. post : (`string`) The HTML to append when rendering the menu entry. pre : (`string`) The HTML to prepend when rendering the menu entry. title : (`string`) The HTML `title` attribute of the rendered menu entry. weight : (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom. ### Example {#example-front-matter} This front matter menu entry demonstrates some of the available properties: {{< code-toggle file=content/products/software.md fm=true >}} title = 'Software' [[menus.main]] parent = 'Products' weight = 20 pre = '' [menus.main.params] class = 'center' {{< /code-toggle >}} Access the entry with `site.Menus.main` in your templates. See [menu templates] for details. ## Define in site configuration To define entries for the "main" menu: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Home' pageRef = '/' weight = 10 [[menus.main]] name = 'Products' pageRef = '/products' weight = 20 [[menus.main]] name = 'Services' pageRef = '/services' weight = 30 {{< /code-toggle >}} This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details. To define entries for the "footer" menu: {{< code-toggle file=hugo >}} [[menus.footer]] name = 'Terms' pageRef = '/terms' weight = 10 [[menus.footer]] name = 'Privacy' pageRef = '/privacy' weight = 20 {{< /code-toggle >}} This creates a menu structure that you can access with `site.Menus.footer` in your templates. See [menu templates] for details. {{% note %}} The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`. {{% /note %}} ### Properties {#properties-site-configuration} {{% note %}} The [properties available to entries defined in front matter] are also available to entries defined in site configuration. [properties available to entries defined in front matter]: /content-management/menus/#properties-front-matter {{% /note %}} Each menu entry defined in site configuration requires two or more properties: - Specify `name` and `pageRef` for internal links - Specify `name` and `url` for external links pageRef : (`string`) The logical path of the target page, relative to the `content` directory. Omit language code and file extension. Required for *internal* links. Kind|pageRef :--|:-- home|`/` page|`/books/book-1` section|`/books` taxonomy|`/tags` term|`/tags/foo` url : (`string`) Required for *external* links. ### Example {#example-site-configuration} This nested menu demonstrates some of the available properties: {{< code-toggle file=hugo >}} [[menus.main]] name = 'Products' pageRef = '/products' weight = 10 [[menus.main]] name = 'Hardware' pageRef = '/products/hardware' parent = 'Products' weight = 1 [[menus.main]] name = 'Software' pageRef = '/products/software' parent = 'Products' weight = 2 [[menus.main]] name = 'Services' pageRef = '/services' weight = 20 [[menus.main]] name = 'Hugo' pre = '' url = 'https://gohugo.io/' weight = 30 [menus.main.params] rel = 'external' {{< /code-toggle >}} This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details. ## Localize Hugo provides two methods to localize your menu entries. See [multilingual]. ## Render See [menu templates]. [localize]: /content-management/multilingual/#menus [menu templates]: /templates/menu-templates/ [multilingual]: /content-management/multilingual/#menus [section]: /getting-started/glossary/#section [template]: /templates/menu-templates/ hugo-0.131.0/docs/content/en/content-management/multilingual.md000066400000000000000000000467221465312036400244550ustar00rootroot00000000000000--- title: Multilingual mode linkTitle: Multilingual description: Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations. categories: [content management] keywords: [multilingual,i18n,internationalization] menu: docs: parent: content-management weight: 230 weight: 230 toc: true aliases: [/content/multilingual/,/tutorials/create-a-multilingual-site/] --- ## Configure languages This is the default language configuration: {{< code-toggle config=languages />}} In the above, `en` is the language key. {{% note %}} Each language key must conform to the syntax described in [RFC 5646]. You must use hyphens to separate subtags. For example: - `en` - `en-GB` - `pt-BR` [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 {{% /note %}} This is an example of a site configuration for a multilingual project. Any key not defined in a `languages` object will fall back to the global value in the root of your site configuration. {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true [languages.de] contentDir = 'content/de' disabled = false languageCode = 'de-DE' languageDirection = 'ltr' languageName = 'Deutsch' title = 'Projekt Dokumentation' weight = 1 [languages.de.params] subtitle = 'Referenz, Tutorials und Erklärungen' [languages.en] contentDir = 'content/en' disabled = false languageCode = 'en-US' languageDirection = 'ltr' languageName = 'English' title = 'Project Documentation' weight = 2 [languages.en.params] subtitle = 'Reference, Tutorials, and Explanations' {{< /code-toggle >}} defaultContentLanguage : (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined language keys. Examples: - `en` - `en-GB` - `pt-BR` defaultContentLanguageInSubdir : (`bool`) If `true`, Hugo renders the default language site in a subdirectory matching the `defaultContentLanguage`. Default is `false`. contentDir : (`string`) The content directory for this language. Omit if [translating by file name]. disabled : (`bool`) If `true`, Hugo will not render content for this language. Default is `false`. languageCode : (`string`) The language tag as described in [RFC 5646]. This value does not affect localization or URLs. Hugo uses this value to populate the `language` element in the [built-in RSS template], and the `lang` attribute of the `html` element in the [built-in alias template]. Examples: - `en` - `en-GB` - `pt-BR` languageDirection : (`string`) The language direction, either left-to-right (`ltr`) or right-to-left (`rtl`). Use this value in your templates with the global [`dir`] HTML attribute. languageName : (`string`) The language name, typically used when rendering a language switcher. title : (`string`) The site title for this langauge (optional). weight : (`int`) The language weight. When set to a non-zero value, this is the primary sort criteria for this language. [`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir [built-in RSS template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml [built-in alias template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/alias.html [RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1 [translating by file name]: #translation-by-file-name ### Changes in Hugo 0.112.0 {{< new-in 0.112.0 >}} In Hugo `v0.112.0` we consolidated all configuration options, and improved how the languages and their parameters are merged with the main configuration. But while testing this on Hugo sites out there, we received some error reports and reverted some of the changes in favor of deprecation warnings: 1. `site.Language.Params` is deprecated. Use `site.Params` directly. 1. Adding custom parameters to the top level language configuration is deprecated. Define custom parameters within `languages.xx.params`. See `color` in the example below. {{< code-toggle file=hugo >}} title = "My blog" languageCode = "en-us" [languages] [languages.sv] title = "Min blogg" languageCode = "sv" [languages.en.params] color = "blue" {{< /code-toggle >}} In the example above, all settings except `color` below `params` map to predefined configuration options in Hugo for the site and its language, and should be accessed via the documented accessors: ```go-html-template {{ site.Title }} {{ site.LanguageCode }} {{ site.Params.color }} ``` ### Disable a language To disable a language within a `languages` object in your site configuration: {{< code-toggle file=hugo >}} [languages.es] disabled = true {{< /code-toggle >}} To disable one or more languages in the root of your site configuration: {{< code-toggle file=hugo >}} disableLanguages = ["es", "fr"] {{< /code-toggle >}} To disable one or more languages using an environment variable: ```sh HUGO_DISABLELANGUAGES="es fr" hugo ``` Note that you cannot disable the default content language. ### Configure multilingual multihost Hugo supports multiple languages in a multihost configuration. This means you can configure a `baseURL` per `language`. {{% note %}} If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different. {{% /note %}} Example: {{< code-toggle file=hugo >}} [languages] [languages.en] baseURL = 'https://en.example.org/' languageName = 'English' title = 'In English' weight = 2 [languages.fr] baseURL = 'https://fr.example.org' languageName = 'Français' title = 'En Français' weight = 1 {{}} With the above, the two sites will be generated into `public` with their own root: ```text public ├── en └── fr ``` **All URLs (i.e `.Permalink` etc.) will be generated from that root. So the English home page above will have its `.Permalink` set to `https://example.org/`.** When you run `hugo server` we will start multiple HTTP servers. You will typically see something like this in the console: ```text Web Server is available at 127.0.0.1:1313 (bind address 127.0.0.1) fr Web Server is available at 127.0.0.1:1314 (bind address 127.0.0.1) en Press Ctrl+C to stop ``` Live reload and `--navigateToChanged` between the servers work as expected. ## Translate your content There are two ways to manage your content translations. Both ensure each page is assigned a language and is linked to its counterpart translations. ### Translation by file name Considering the following example: 1. `/content/about.en.md` 2. `/content/about.fr.md` The first file is assigned the English language and is linked to the second. The second file is assigned the French language and is linked to the first. Their language is __assigned__ according to the language code added as a __suffix to the file name__. By having the same **path and base file name**, the content pieces are __linked__ together as translated pages. {{% note %}} If a file has no language code, it will be assigned the default language. {{% /note %}} ### Translation by content directory This system uses different content directories for each of the languages. Each language's content directory is set using the `contentDir` parameter. {{< code-toggle file=hugo >}} languages: en: weight: 10 languageName: "English" contentDir: "content/english" fr: weight: 20 languageName: "Français" contentDir: "content/french" {{< /code-toggle >}} The value of `contentDir` can be any valid path -- even absolute path references. The only restriction is that the content directories cannot overlap. Considering the following example in conjunction with the configuration above: 1. `/content/english/about.md` 2. `/content/french/about.md` The first file is assigned the English language and is linked to the second. The second file is assigned the French language and is linked to the first. Their language is __assigned__ according to the content directory they are __placed__ in. By having the same **path and basename** (relative to their language content directory), the content pieces are __linked__ together as translated pages. ### Bypassing default linking Any pages sharing the same `translationKey` set in front matter will be linked as translated pages regardless of basename or location. Considering the following example: 1. `/content/about-us.en.md` 2. `/content/om.nn.md` 3. `/content/presentation/a-propos.fr.md` {{< code-toggle >}} translationKey: "about" {{< /code-toggle >}} By setting the `translationKey` front matter parameter to `about` in all three pages, they will be __linked__ as translated pages. ### Localizing permalinks Because paths and file names are used to handle linking, all translated pages will share the same URL (apart from the language subdirectory). To localize URLs: - For a regular page, set either [`slug`] or [`url`] in front matter - For a section page, set [`url`] in front matter [`slug`]: /content-management/urls/#slug [`url`]: /content-management/urls/#url For example, a French translation can have its own localized slug. {{< code-toggle file=content/about.fr.md fm=true >}} title: A Propos slug: "a-propos" {{< /code-toggle >}} At render, Hugo will build both `/about/` and `/fr/a-propos/` without affecting the translation link. ### Page bundles To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (Markdown files, HTML files etc...). Therefore, from within a template, the page will have access to the files from all linked pages' bundles. If, across the linked bundles, two or more files share the same basename, only one will be included and chosen as follows: * File from current language bundle, if present. * First file found across bundles by order of language `Weight`. {{% note %}} Page Bundle resources follow the same language assignment logic as content files, both by file name (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`). {{%/ note %}} ## Reference translated content To create a list of links to translated content, use a template similar to the following: {{< code file=layouts/partials/i18nlist.html >}} {{ if .IsTranslated }}

      {{ i18n "translations" }}

      {{ end }} {{< /code >}} The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template, whether a [single content page][contenttemplate] or the [homepage]. It will not print anything if there are no translations for a given page. The above also uses the [`i18n` function][i18func] described in the next section. ### List all available languages `.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator: {{< code file=layouts/partials/allLanguages.html >}} {{< /code >}} ## Translation of strings See the [`lang.Translate`] template function. [`lang.Translate`]: /functions/lang/translate ## Localization The following localization examples assume your site's primary language is English, with translations to French and German. {{< code-toggle file=hugo >}} defaultContentLanguage = 'en' [languages] [languages.en] contentDir = 'content/en' languageName = 'English' weight = 1 [languages.fr] contentDir = 'content/fr' languageName = 'Français' weight = 2 [languages.de] contentDir = 'content/de' languageName = 'Deutsch' weight = 3 {{< /code-toggle >}} ### Dates With this front matter: {{< code-toggle >}} date = 2021-11-03T12:34:56+01:00 {{< /code-toggle >}} And this template code: ```go-html-template {{ .Date | time.Format ":date_full" }} ``` The rendered page displays: Language|Value :--|:-- English|Wednesday, November 3, 2021 Français|mercredi 3 novembre 2021 Deutsch|Mittwoch, 3. November 2021 See [`time.Format`] for details. ### Currency With this template code: ```go-html-template {{ 512.5032 | lang.FormatCurrency 2 "USD" }} ``` The rendered page displays: Language|Value :--|:-- English|$512.50 Français|512,50 $US Deutsch|512,50 $ See [lang.FormatCurrency] and [lang.FormatAccounting] for details. ### Numbers With this template code: ```go-html-template {{ 512.5032 | lang.FormatNumber 2 }} ``` The rendered page displays: Language|Value :--|:-- English|512.50 Français|512,50 Deutsch|512,50 See [lang.FormatNumber] and [lang.FormatNumberCustom] for details. ### Percentages With this template code: ```go-html-template {{ 512.5032 | lang.FormatPercent 2 }} ``` The rendered page displays: Language|Value :--|:-- English|512.50% Français|512,50 % Deutsch|512,50 % See [lang.FormatPercent] for details. ## Menus Localization of menu entries depends on how you define them: - When you define menu entries [automatically] using the section pages menu, you must use translation tables to localize each entry. - When you define menu entries [in front matter], they are already localized based on the front matter itself. If the front matter values are insufficient, use translation tables to localize each entry. - When you define menu entries [in site configuration], you must create language-specific menu entries under each language key. If the names of the menu entries are insufficient, use translation tables to localize each entry. ### Create language-specific menu entries #### Method 1 -- Use a single configuration file For a simple menu with a small number of entries, use a single configuration file. For example: {{< code-toggle file=hugo >}} [languages.de] languageCode = 'de-DE' languageName = 'Deutsch' weight = 1 [[languages.de.menus.main]] name = 'Produkte' pageRef = '/products' weight = 10 [[languages.de.menus.main]] name = 'Leistungen' pageRef = '/services' weight = 20 [languages.en] languageCode = 'en-US' languageName = 'English' weight = 2 [[languages.en.menus.main]] name = 'Products' pageRef = '/products' weight = 10 [[languages.en.menus.main]] name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}} #### Method 2 -- Use a configuration directory With a more complex menu structure, create a [configuration directory] and split the menu entries into multiple files, one file per language. For example: ```text config/ └── _default/ ├── menus.de.toml ├── menus.en.toml └── hugo.toml ``` {{< code-toggle file=config/_default/menus.de >}} [[main]] name = 'Produkte' pageRef = '/products' weight = 10 [[main]] name = 'Leistungen' pageRef = '/services' weight = 20 {{< /code-toggle >}} {{< code-toggle file=config/_default/menus.en >}} [[main]] name = 'Products' pageRef = '/products' weight = 10 [[main]] name = 'Services' pageRef = '/services' weight = 20 {{< /code-toggle >}} [configuration directory]: /getting-started/configuration/#configuration-directory ### Use translation tables When rendering the text that appears in menu each entry, the [example menu template] does this: ```go-html-template {{ or (T .Identifier) .Name | safeHTML }} ``` It queries the translation table for the current language using the menu entry's `identifier` and returns the translated string. If the translation table does not exist, or if the `identifier` key is not present in the translation table, it falls back to `name`. The `identifier` depends on how you define menu entries: - If you define the menu entry [automatically] using the section pages menu, the `identifier` is the page's `.Section`. - If you define the menu entry [in site configuration] or [in front matter], set the `identifier` property to the desired value. For example, if you define menu entries in site configuration: {{< code-toggle file=hugo >}} [[menus.main]] identifier = 'products' name = 'Products' pageRef = '/products' weight = 10 [[menus.main]] identifier = 'services' name = 'Services' pageRef = '/services' weight = 20 {{< / code-toggle >}} Create corresponding entries in the translation tables: {{< code-toggle file=i18n/de >}} products = 'Produkte' services = 'Leistungen' {{< / code-toggle >}} [example menu template]: /templates/menu-templates/#example [automatically]: /content-management/menus/#define-automatically [in front matter]: /content-management/menus/#define-in-front-matter [in site configuration]: /content-management/menus/#define-in-site-configuration ## Missing translations If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown. While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation. {{% note %}} Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments. {{% /note %}} For merging of content from other languages (i.e. missing content translations), see [lang.Merge]. To track down missing translation strings, run Hugo with the `--printI18nWarnings` flag: ```sh hugo --printI18nWarnings | grep i18n i18n|MISSING_TRANSLATION|en|wordCount ``` ## Multilingual themes support To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria: * Come from the built-in `.Permalink` or `.RelPermalink` * Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}` If there is more than one language defined, the `LanguagePrefix` method will return `/en` (or whatever the current language is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites). ## Generate multilingual content with `hugo new content` If you organize content with translations in the same directory: ```sh hugo new content post/test.en.md hugo new content post/test.de.md ``` If you organize content with translations in different directories: ```sh hugo new content content/en/post/test.md hugo new content content/de/post/test.md ``` [`abslangurl`]: /functions/urls/abslangurl/ [config]: /getting-started/configuration/ [contenttemplate]: /templates/single-page-templates/ [go-i18n-source]: https://github.com/nicksnyder/go-i18n [go-i18n]: https://github.com/nicksnyder/go-i18n [homepage]: /templates/homepage/ [Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/ [i18func]: /functions/lang/translate/ [lang.FormatAccounting]: /functions/lang/formataccounting/ [lang.FormatCurrency]: /functions/lang/formatcurrency/ [lang.FormatNumber]: /functions/lang/formatnumber/ [lang.FormatNumberCustom]: /functions/lang/formatnumbercustom/ [lang.FormatPercent]: /functions/lang/formatpercent/ [lang.Merge]: /functions/lang/merge/ [menus]: /content-management/menus/ [OS environment]: /getting-started/configuration/#configure-with-environment-variables [`rellangurl`]: /functions/urls/rellangurl/ [single page templates]: /templates/single-page-templates/ [`time.Format`]: /functions/time/format/ hugo-0.131.0/docs/content/en/content-management/organization/000077500000000000000000000000001465312036400241165ustar00rootroot00000000000000hugo-0.131.0/docs/content/en/content-management/organization/1-featured-content-bundles.png000066400000000000000000001031321465312036400316630ustar00rootroot00000000000000PNG  IHDRPSFj pHYs%%IR$ IDATxw׹-ۤmI^,;/`V  r* $(/H 6P) aQ8ykWo$f$͌$˲Z)왽] eժUP @( Z4%_ TUY棞@U'&y' P,IjKl/i_lk*9"uiʰ4=UnbY[oϺc)|#MOϧ(~K+>i^ӶH KCl=Ұ1}vQle~ִa[kSҲ^ipn_.iؔ4o访 /D꩜0'!MJKWHHSa *"k vqT1"-nihmd* J)MV/) K+ez^KK\_X"P=ڋqI`ƭɇAJjAL^MдwU$dZ-G6)dϑ[{RM-!v'E{V֣oOhntQi~2/F^/*t`fDLA-/HZWa+w4EWT@-\=` >T${(&7[*/&-*ó ee>$P.YЬ^9kZLB ʍ\=[G1Q%'K4-7m9R`%$PM>JUM T!X4@$aj Ki@:+PE#POFL KeWeϴjRjbS}[>hŤO#PPUxjuvKʬ+QWer)ujllĤ`*|j|jC iyd*Sl/ dG >o%cMPU^1^Wu̧g {& uSվ'[OXJYr#bۨqmɍ2įiz-~;/cId efji`vC35f:ƈ ou@e| ըF꓆MSoeb2w &rL5as|o)48 ,-;E=`) Tt] GiG~wTSónZ4pSS ?sfRϢOX&e)cSָ( KK(@( @LH@ P@ P Pu(N>p} (@ m8muGÏKK*Iȣr"P@-}_J\m7=V59)*R{AmcCZ۲$oK<@^P$V)@AUR(@(HS04t@Cmo@v tU_-.[n8_mshWa/}x1,St_ PAK@ZtqV ~Pr;6iR6ǔIrY|>G.(.$ ˵#W6T~A(j= x=a=}27Ӳ;^ץ H((CCA #OM0έh+!SQ33I9(($KǪwe4e,> 9g}@%#P>a"-3r4DR3c0ͩX2'JԷeN2#BO*9*t6EM %Ws~@(P Po:J2*-y/H)-C˴o}-rm4l#y T\~A(j-lq\ P۵Q;e{KuT(OsB킳|{:xug~o6?ʑ@=UE}\S PSxsF+ {eW'P]r;㿶n>%5]2m1BǛ{ߵ/]rDʌPm@ PԜj˾J0Xd{F^hʊ;Zu~,@z9y6,4@ݞ/@-rR0"tG9ÊU#P<|ۧu]zj@%$P1Is^ѧ> #- 1PĘŢPJ;o75ic8;]s0X@/@e}NH2xUK;)Ӻ]l@8rA]v~M?V) yk^@rZ͡_()6Axyӻ\#}0\9hC :+;Y&8Nqt.P_/\"i'MvKaO ZB#VGk{2} ȧ\_( 2a۞2ɹ+Z( BB'ZD[S΃;*=[\n.qvn? Q.$A::iOeSmZ}-<~ARJ/i\2mnn^;r5:iHOh܎Ã#u~[d H{J._58(2] D r2[n?r~@P/mp,&hTcQսD&KǪwe4T<*ŧ4q94[]tR" %H-;Ck [XvILbe,C2$L`{žO'@ϛu oJt VZj) T^t(Q77t@IJ"zٲNzӌ:t̓@MDE+J~AZuʀT\ԷGh*!ACJS@T#P Ԋ(u%a1Ҳ;R'逸mȽTnUK%oէG|_Uc P@-z4Cn>0֡Kn /k >;6eHcJGkT@x·"PHҌLNꓻYIHIhxT8|]y{%S_V5)iNdu "Lx<%LȕG F܉Dc ^6Ny#mD\ $`Hxiӵ#Xϝz:=ӌA"Ps  Pߴv2jw@8r rߔD,VJbs1"fvt>tM?yO&Χu ټWǓȳyP<^+]^W<~q9w7.HpX@U@D2JP̈ @1 @!P\@ (^P@ B>e+PN@ P@!P P P@ P熥}F_lʭS:m3@@=R*4'#CK Bb}@( B(@Oum_Nj5)r/4>\b{F?b{ZHzO6' rg}g^ilM'{צeeXjF_*!M4nHTRZI#~kzړҴ9( "hO3@-@5QEe5Z櫃@JR\([40jPҦ^Yh^@ejz}(@y^/\Mڨ0_2mA β^Ksiآ^f.ti>/o jYG4JJ˳ sNis7Su;Fʎ!PԓLc`'4i PesIC[vr_ "P"?8\O*,޿S1 @@qK[ vOS-F R0 PԂ i a=UlVɍf52j=.*ZSL941C';RXɴ]~?LeUmxc$\0*-Z*9}KnumSx 1me'lU2m,l6,KArΦעҴޟ^X$ثSߛڔnI`4(32rӼU~'La)3MSoeֻ7=gNg4tH3=甦g ϺWlkz_Iiza;@ PPmNC4Rf:qJi Y!7dkKHӦ+)?K^i\wET3hxFM qi~ y@Hs4p$i] Ln{~@(j9333@%(P XB @( ( B  ( @B.P#X)vm֏$Pmp(l{}?~]ZRNzFp];ޒҬr؍ܽ+= Pԓ|@oL#,PiX#.`olݗ>2{ދI9ށ@@=v964-Kts? M PPH0  Z!5IUiJ?`P-  (HS04t@Un,vt%N._%Ems/~Q2~ѝ;[9^6yo+}O|X>Ggku۵_<>R/>Wխ8_-{s]şi'[:`FyT}Wr E(X@䨄cMF7&r/>f~*ycJ^07z8O?]ue:O˾wE_sĒ9^nϗ~%rqKs%Z.-\csm_@*j1r[n'Uѹi R+c93Nd?LE*pngٍAwWuvE;ѷRʊ#mQpLӔ? WyG(:N:ŝ -kw]jӡZjWbc&/_<) G*G[ɋ,ģ~)g~oZ mHGdJtΕ4VkjVyG(:)jDZʒgS@姡ƿݾxK@>~nቢ~H%QYzG#;w<\/9ky~t IʩΒL0{"! qI1B`5#P@U!P[pP2\;=דqu ӞsfY]֧js|숶8|]k7{stAٶ@ PJ.::!D\**O(یZ.@e=kO$ ZDI=Sz]eVR8;6/I4(ZIBŝ_h/T2.а\ ;>@<!vOya$?mXX[c YcڹW$ѫfѻr1ߠCz'*W4o_M@'PG%u*/Y#6U]ZS\8?9Pd2u@~rAhm^K]Iސ#b9_22~)N4YL:\xo$Ee_ 7N9Uy(@[Jvsׂo`xױwt+oyggkw?{lOeTg/1B=ڤ)O dϴѣR*]Y_f>gTZguM? @!P,r|qŔ IDATUq.O?[O BZB9gHھCwzzkZ ۑO B`e TذA|Ѐӄ^ /mu,2WBCgvlܟ P7 zݴy0W1ao>43oq@ʤ]r}uW6'lb>5gz ܟ@!P<(@( Ph~@( @!Pp@' Ph (4,6v\F?p@%28p$"cѨEBr1pLz:8+c7&Ϡ Py巿f/_ ~/5}:d@zޓryFB{ٯ?iu٩\r{Iڇ\#2]> Oe|'rG$ۜ (jm_HBmwPn mrS Zr5B --qWܿ^}$OqtSr۔<(^_9Ѫ䫯Q@3LYO:,*)m>ZzKW-nKG"P@!PK#uEֽzsAb)m7ʰnKn3U(;OHR-}#WTzrxpDR&e&BveۦL_xOnJ?rwu՞Mʔ?.d;Rۚ WW﷾"~x<r1hb ;/mSz"5y]:V+q2 X|Jk9멥PY86< L9HWE"s#J٫Tv/hTc,N;έh ˜3kޖtR" %H<^vS+L62u{ܨ?Gb,^ܩ[ TrT±H^1^ޟs=3)\;Kv$ I($Ӻ`$$S 6)%6UYR?J,k7m|-:*]E ;r0X PHޭ{8<,MLUe,P|V242Vr=fw'#?·OuYʏڕ bLU DsBZ P'i/…-lpLR$VU9ܺ y{q=/ZOL6ownE ZжQtR )/c%=r6eݾO#,im*וDB_ rt`ahC;Ώ\/C/Wx͓@USU{Ϋ!ޥ-PF"/rt$,F R" P@!PW-ZEѦHR2͇ԑ>0e]œNVAjxc_o2zod ߻3֤  Z_#7/yc ސ>Պ?]UVymDgq*='d4X,Y?X׵8k7{@oJHe9RS9v Yg<@4NI]}r7+O) #P@!PK]קPFLD F޻(P3ѫѻr1ޠCz',co]TM^i$X;?9O $g+ 3柪9;6mN$KDtD@!PqrıXv_nbxwr*(PEC=#2 (cqR ťd4[%ި:f1i\\-{"%S䂚ɜ4@!P9b]Gg5i]l{sJC^MOe/@@?;OHJB*r̶za?#?Yur;f,JaoE#)~djsˤw2*h6oUP P@!P W bF%:x*]Kz IdotzWFӹLţ2 X|JsN%u)H'% PPBēu8P˥elx@od.#/c_FMe3,<ɉ?jkN&o/{O;x<x=KR~[~ ( >?@%G MR"\MFv&o>z9Nt{[uAʝsm,/rQqU2WN=^(}zT#H٠ Trĕz\[۩:GӚ|(@@-,J+2T2S[0LYKr=*2hM߷{6 e|N׽VJL}D-?flc PԒWbj sR+wӼgsf3N=3._ TRNuP m_)%(PQ?eĤnY~*Ƭ\^2$ IKBw[txBH\O' `m_ Z=6e1J 3:6]h.Py^4#i] Pw>5dъҾ_ ZuʀT\ԷGh*!ACJS@T#P P@!P+BԑHO$nH_t#RU/uT~T P.H3jc䆚cS4zNqTqvϋ@/@@->4#nVR77_⠮y4=d(^ԗUnM2=eڻS9v Yg{j. P"Lx<%LȕG F܉Dc ^6Ny#mD\ $`Hxiӵ#Xϝz:=ӌA"Ps@B@~%ȅ7+qSi|Z)EέƸ'ѥs4_PP[i>1›;֭_ (+xu,Qm΃z\\%t*˹9LwwACgeb@Bh2Y&7R ʶߗ ( ?Bx@ P@!P<(@('p@' P(4  ܟ P ܟ@!P<5mp(l[Ry(O 6~"s/%^g3H:?;~ȧ@X,<'a=˱q˒-]z.|X/$Ҫ4H0T@@Ft=zNm:| BBھkx|~ y풮ev?P=,eg7{qx~JO| vq_'[I=WFʶM;GrsJ9o`VgrNe(nqVg6yo( $P:8dL26>%#$Rp7'褡HOuÃ#2iߊIsJmT^239r2[n?rӸ=ؤ@!P,}B_~鄄ēz$HG ߊ$2.ޕQ5'p0(c)M9F 5wL L}( 5'P7ߗ=F G29oHB( Lj1Pށ}'}mՕyU9ۼTSwTLTi+pSMwѣGs2Q +P i“(T:0grSa$@`eTVBs~eN[_P)90^8+UlQa:+`_zBTRNu[xdhZ^p @;SGhx~=k9SEE>wJ/وI^rA%h9Pcv2#eݥ@|SxURɒ.ceL( /P;0JN._F>3Tṳ-*ORzO$d0'PɢwmԦ GJxB(XWm]$rU0u'c&!+@Ff/PZuD( e<].LӥK*s^)Yh1QVp@#P hAF( u-:߽2o3+Zl_ɥTשو>h >o5\?Mqvϋ@wG}ar#D+%T6%:}wq{ FO7Fd-gL &og!v5Ayt{O,)et{ra3,PތLNwݬ<$&RE( @e^{ʋ0$ȘDcK$=_깒)/Cm?n~X쨒6ґpp mCw$f1=ѫ'jѻr1ݾA ُO OeeTn$8xZz.qtv*e^x:/Q;( (,(4$^гg8] I݈wvx@!P@!Pmߵ_<>~vIW[2G(e2۳כ8^yP~}G+KMLg~~tlY,aK\5si[>usJ9o`VgrNe(nqVg6yo( $P:29l/)Ӻ焌%MO&SQ'${te\NʏTw19<8")v= Ht=M5=um*[vNi9c 9iO랏vlzA( @>!/tBCx pXIׄ$'G=20Xұ]US 23_Kn$WXV 5&S\Tɬdε7x3'IjQ*-@X\ٚɛ;Ox }O'T}oKt]oK:)PP Gk%@!PM^ӱF\Lp#5T0Q*I%r5R͋IrT±l3q} I&Pȿ3/[d*!Js%N˥B9y4csA??\7@%J<o}@RiM(w|>j\"ΰ- @Zx@AwV][Qo{]})/&F2*?AwI6zHbNFrP77 ԂlTP_yp]m+gIm*3S~)0N}D@ P2KnNEQ劰;e^o}~x/櫸*d0/=ki2_{ kmKʩNc}  )R NV!Pbޑ{ϯg-]#]q('.3rU<1KN6d-G\jNfT26>_7yNt۸7/[S@_% K/O*y74@IJ"zY׳Hhx?u"/= Th]iiѺ@( @U(;d5UN Fuۊ#&eTjqxz JkS(@ Pe5it)51P^{Ϋ26 -&Jjw,n?h+!u3'RG#P[?b( e@ ,wơʽWer)ujlx6bO7Zϛ@ͦ#zwA޻RϰnxL"M [d>׻øKzЂϧF#23&u7*!v5Ayt{OZ,ղ\Nu(}DoF&B'nVRR"P\2/@}WD" I$2&X",DeϗzwK0Pϣ}d';t$%~dLpD\~oP!=sOz{eʥs9d.pvLK:^?{tD+EL=2^a(e"biʌ<܎Mlks+c]a4 IDAT?3y9)iX|Y/QLOWMX TѶ]2(W\~AB%~x=swŠm΃^7A;{_Ggѧfh7[LҶEYZiC :+;MsrV@( O@( Ph (4 @ܟ@-[ P B@( a@(@B( ( @B( ( j.Y 摆inF4+:Tb{--6rݵz@BMK:>(qi~>@e2CK ( Z4+!iy P@!P Pt @ P@!Pgb[뗦W<Ɵvgm^nS!f'i|-M/#[R5GĶ. MyKjPQmi|O\=mk}gwJ?~\VwYy@ ZV蒆MI-W ..&J KK2V/ɧ=Ұx<~ִa[kSJԯoLb^FeeG6-v8Xk< P@@- 4rgSd^lM4-Sڋq  Tr/5A۞AmPQ#m^HZ~ v}Oi{Ll[Ju2ůէm\^ɌlR]PK}<,ß (PkW)z֯GK~|؞wԧy@j b^PfjUќ悡܋эǭ RnZq!7$|)_FQUk< P@@-*a2w@O m8uYSOb{]5}*5(MwTw.j䳥Zs (jMQx`-g8. wV' Dوe`T4"& jKVqkUy@ ZQy)PVkHK /4m fh-~ó^iܔ00Z,+ej69@@U!PXrS1>gU4QOᅟ԰.IE}jhsY@"jMjk/bRG^yLޔ{>P?g@7WmvסnJ@ej: (@)P?RF\Hژb,&͆rmҬBLN/ Mˮ|^]Z^ (jE :RdH}Pmό>(/&SxDnX@<՗-ۆqk,b4ֵ 1g5Bf4ه鹎968T?LlN.ZN@B@sHTӖpQt%bթil2Rar?ѧ^zK~"ɚnkgilSdem$4+mRdj} W!.z&lѧ>s#bۨZVڟ8fiOJ#?e6zL24e>,k™oوQ9`џLbnir2J2y*>)k{+^izU:Ni|Ol)\3mf//qTZs) (jԊ`lN7x@-z}H_)3ųv\zk (@(njYA ]v}l[k Bm+.bQyQWc% I0PXbL,?q.ö!P@!PU7> FuX Crwǂo,X@@!PP&xaV9n  BH"{%x* (@(j)`ߵ_<>~vIWq?qv%'>@c@>x!mՖO:WzTz*Mm=!jjxKwE}.<mZ}Jrб¾s׋r}9;۟@!P@!P#_GV|IFa32HYx!"Poy.H,5cyzyBRhKaV뵾#WTy@RZPIddIRvNGNϱ[Xn&-!@@!PK'A%NHxh@x}K_.CUn/mp,&hTcQսܷMM^Uh:_ߨ 2Ӥ\ER[]t~n&bN&o/{O;x<x=kߖ*%HH^ Gk,@!P@!PRr7?-9\΢EA.G'$HHB!ͼHoy\M Fi8<0@%GΦ cqzD'_P%CRTi$IˏHR\L+q]Wgs;{$%rLKYS~7÷( (j%bnKgEn&MܩmN;M}ML x/IR$W}U-zgJ&/iŞ9 Td-^2PM1N?D@@!PKHt~6Ź|Qt6MuT#Cbqn~,uWbXQyB1P۵ѬɵϔqC Cp*< (` oSx9=f}v9(T; -lDZ"j5'*3"TQ D*<]~ڪOj+(4i*mHY1@@!PK_rG*.q E' 0mw\P,x쇂g-P۵,JKYܽCJyNZFm//~~BB%C_wgւ˽/z TaC#HTς@-@ݮF F%4(Ļ( ( ZljXz } ܑt~$**W=sQ}^ :@@!PK m%LZ.7T)ZLKɨhrbď)<|xq Ta`wrBZ&7UWw@wG}Ɉci"P@SdV՝a%nm 0~I_mu).OdoXtъ'd,zC[+沺'PR.,@eڝ_05v0I\+H`a}L.: Tf,I>ğ@-v}g"Ϥ S^h!D$K^~E+ϼģղR,#fm}$%? H4/p*HhX.2l>@C2ͼ@e~,dB$\xZ%[|JfV%ŧK0P;?*|FTs(c_҉X;#H B"};swFlhtbTNr}ơK *4x𳂑.9v1#VKDoyM*}nf6u@ %"/C|{+?2?_j&h.c\~ ( Z"%~x=sw%]}m]5#cضK^|8;[9*BW<ʞ7C Gz+$/ ( @S(  B(@(  B(@(  (  B(@(  B(@(  B(@ @BҔYlguZ3*)+u\_̺_/)} Z[L"r-v_n燵l'~ueG6'g_nmtVJ hUԑl*"A~>l^au$,)-/ڋ:'{2xX]ZE (jv[,ԵW/P6PZgC%9\S-v,ꐙ*TG/ X\֖#{5NǕ]mOK{ B#Pئ|B)z\ӳj:7%_(g&P4\iVՑ`quu,֠4= @@1772̬OTj9ꐗC֟15!=۞0`kkSͯK;DQxS[T6x; ( IJ2U:*U*5,NF* [&Ltvt zqS°yK@!P@!PT92 (PO=*&_/{(UQ•G.iXbG( ( @9,G~:+(uu(<zS4O   BK E(d2rW4ST1}CXS+D}nq@@!P"Pl҅!|-:qIԑ*ay/+Ouۆqs{&A^簈I&4=gG  BrYm,m iYYʌQ--SMi{u`5\&{؝ [I1e[o5F=yHR(Sm"S3KyW}*V%^rS7ǥhϯXL)$@{LZ^vX+ qhPצy<)Z%oeF1@-gZ@듦iZ9pϺs^(34ڤ>앦m3-3W&9Rv{;{S_r@/>W.骢qvolEϋ6INHCK`/ ^ ?d & " i4 rbe|K^K^Uh6wL~~g3xm*9VOF3;.~)Oj\lqBBg]:YB6&5I7P%~o|5~SwϭvQՄ<MSi+ke}sZ@qҨ/ 7t 5mg6VOBu4,GVEǪBBgǵiRF6lm6}ҹbLRFBx$ ,FeE:8,PHBDG>$V$9vSC4y1Qo %WS3.GqV1Esu82KDN7:чzd_ (6ƙ^X)_j}6t$uCYbʙ:/i,~ {ryў*E׎r%fTV *U9limEˀ#(Eqvʍ|61eZNZSW|M1g863#!2(QPH,~]rl+~/Wuh >ޗ Ztu:,v]J,ob!vX-riHGF? e\?eSl{rlly1A񌟕@ h>X,ݼamx_2  B('B9e H_wO Bu`|B.ٷ}} PEX2Փ#-/;..gb!q F2bT}GB  «'ۏ/4kU B~`sz; 5s:WN^;@@!Ptzjǘ>x<%dn jT:vPͯy 5}=֟@@!Pp_仺8OEuo|zL~?(@(_&20uO|WfSXlpyߟ P#Q}SX7S0@:.j6I}[̷imMmbЮò[.ddjvJc;>-v%NCFlV)#麟O6جVmlgkc TKg2Ө/ 5xFJԴݼ =ijzXn;VЗZO (oɣN0o< zt=}ҹbLRFBx$і/FeES/t6emeDrkz񏏊n-^D{31>#AQ>g3{5[i}uzf1Uy{+?P($`H"XyW@-@CB*QEΠp@EoU'Pt\~eJJ fϴGL.EOMˎ;2MB+Zr]_{@{g rhV5eFɿ~QEYHe\ $p[%娰/?(@x#P |m]&IpܔJ+C,lc F[ b^5MnNoЂ6QQLnDB( TqU2DXUuiE(wk~_jp ?X{ "ts_cv0=%i$t<SXF傥QwDB(x PIj"eji jQ|wσti-c)w {T̩IԶߕK&Pܟ PϦ@I>/*PKڻbr hJpcz 1ܕt]$m˭*1_BB(zJ?lB;ᅜh]dO VR-_O:/&J?F<-Z BB(ʴ@m,R!*!LK9vq\VM 'f@m^G \zYIy"P PU$zSD3E=(\+th31 iAT+]@yk\^~G| "i7%BB@%" AIe:ZM &P+d$b9GՓ)IsC i鑡ѧDKUOʽXj?`Z%q,6iRׁZآ?7/:Xe;|ӰL&)*>LUI (@` TV=D~ fkeM{NQz$y=Qy%|'.>  +) Yדu^FBWk31Ɋ喋6|^^OhLS}۲vV(D("WD [~,L* {ryQ*E xTyǑޥ Ȩ{=bl|^DhlSu=Wj_17Mb߇29b!2h`6wra䭊TJO ( F:,v]J4me$%}7j"#֡GFf-x,>fK ďg/1f2 񳲣WtXv^'Rc ( XbgMm`ƧJ"~︸56.H&k* P@AC=_A"~Ʀڷ_h݀QeZ mf(@( +aq26}PzZz';].qr P@!P@ P@!P@ P@ŵ@B( ( @B( ( j,b"Z@Br9\t]nI,~n~q ( jtzXC~Jx9M}q ( j|:'6" @! @! @=Z;r۵NZv t{~lbY![> Q crruuvӟ6u~wO1(mY4[vsm@@!PKOqjfC:NMlLk)WCsrk歇vM3Q806ex|JGߣr;#Z#5]r"棷G9]q@B'E% I(H4VC(q.+t,5&HH#󺸜-ɿ*G=$Q߬.&A8vqL\B^D /hm,<HW׾jO }wF"vb~2U'\q@B~leNl!)47)pUIEvf3^%8/y^{9$ ^sr{*u>d͋45/eҖӺGMDqexMrnG'9Yo'Ӆ}r\(@e%PB=C_I˕?PS[ƒ/ ̓wQGBqB&,LLϴi@sVi#9]>V;. P,;j=KT.X*Xm3ݙnv[Φ#_NmK=1+~ *' 4[ X P@!P|> TlZvT^-WKXUQD) "#Hl7il&Q󆑞Z
        7|(3%8|q@BR?̊6rC+}Px=rC+xYM|ALM)UY{D (/uK"PHҢNd>4,II;c( \2<]'eܽ7oˬS.e";UU˸[ ŗA*Q;$QTEYʊ%Šgޖ#]}o&-nx|Jݏg=]; ϳ+Sa㒩X CuZ@(ԍ Psz*H@q[%ڥ)J̨&VTr^dR|3]:.=Wmse\&AUx5qZ@(?:,P"Sbw>"VKo}k:oyAkM7ce]u@!P9R?xdjԄ%$^ eI*Ͽ?^mUd>oqyiD$(B+Gݲš@!PeTS[$IKYo.]^hufJR\jW$WdyLj?+[5kStZy@-@5 (}-ۼ L>oSQ7fliqyßͫ)՝+^KnBW-EYFDgr֦ԗ6u)f4siWz< sD\šn}tdr;%'o5$M[Wqy@X| yRosyI 9X|%V!*Iϭs\ e > o6^m2*'eZhedDB*BpgE%gR*+_dmI P`&P_34%HKnCH3_-eU3_5[6`^j7:eGӟά͏ ȊJ¶/z2m_ɚ{!M-^iJ}ztUKX3S P`1YկeڀjT7,@Ud!iZJ?okaW493+"cf;nOJ n} 11=شv,~tDr< ʈ=xĻ /j,?$e-^y/]iw5^wd _@qT>Y+4GeB6YCV쐦ZyZoݲò:^x+?/,5tP~m1UK@Aye   'Ƌ>*q PP睲$S P b     (@(@~ڴn8꼻ݒX{t! P@Aet퐡!V!@?veI@q?+hA.z[z( f+A5Qb4ǣT@@/w7[{@U m[r,rq,-86:,N.n@m%;: Ed)%1e?Aiڦ2+[Wb_bfC|- P 8ɔLl\F[KPY>ATwRYiVY$u\~&y?sS'R>z+g\uak/ (@bZhqknH_ITpr/oEۮEaz3sO 3]42-]Nt'JBP E>S<jO }wcD"v^žd1%"uJ\%Jq1 (@J%D[m~&Uo{d:-2lʓGGʙ!g G.fEUQ⨱`(giԨ"F|'"+k~;89Ȃ?O'Ӆ2EXHn!P@F.MV~r;MbeɾӢ)CZyW›Fi@)l&Píf )Tƒ/ Œ$r@j@{mms= ޤiUdŠGnk9ISTrJ0/iH`T'CekdR "kR= mKG P&PErĦew^Rw23Od;&lADXitʏʥJYq/C4_k` P@5Z\&֦ܔ=+UL"PE"U-vLp-"c TH^W:   rCwztmUaדdN '$D]OHb*1@T Ѵfu~L"=mZ|D%=5oJvڻ$J}@T@G>vػymߑ;ڔ||ADAt$iž5}u\2g>.*0.;J4(.EρL,Ph]ze2)OQiJ(@jZ KOVkUča]VE5%NK<zGd:BTH畋cnqۍOHD}m"'+"3obdEzdΈD")o1Q"ϕ6rxT,}L#qI f^S +9%&RH(@L ťc[}$ߝ7o^kmsbBtUB7`ŏۼGn/.*3#Y—Ix/y{_n2Ձ*\7k.P Jޗ Zex6 PO5j`Etba-vCN؇55#ېHtЈ]Y-毆6t^Yѹ$5v*o@e (@(@*< (@߅@[@@@@ P P P P P@!Pˍq B t.>t%}\O@!CCCb(c6@fț >> (#/=^r'q;-C6uwǿݲqI"D(;( g}DX:%v=A(@lc $uYv^Aq⎓hZ{tiN쒾''P!z^$Ʋ53'1(mY4[c}J_6lVtwȖOE!GSQdJ6 \^raha%,$fGejlq7/H8j=[dY=C#wd:.j|_jмޟ~3Ǻ5X P 1-8tGc!nUmOq;22bQLa?E#r.NK.z| Y$ qtʝKHjGIDAT@'Nw$jǸ/')Q'wN3}yd|#>@"j  C )Q4VfI9t:Zd Ir5' {=W9S[9LЬ"J|$C>KFVFI׳g<5Rqɕ5s}PdA惟B"X?okB/PB]JĜV~}떞wL}E)1=8S 5=U~67QeAʻwoJ1fK7n5KOLB|a($T 3on^]67QaOEsҢ/ U9hirzӔ_{} ]T9]x7P\cu*<@dQdŠGnk9ISTrJ0/iH`T'CeޫZ?f^Y7Yeh[:ChtRo|p'v%uO)1Mc D>7j܉>ݥty^T.%PjΊ|ҧ"_GhycimM=ܳ"P*+5Q$Rղi%%RIܪGFRھ2 ާ"y]3 ( rCI3=|y-'7'Ȝ6tOH,{_JeyETV  ((iZD{ڴjŹeU3_6oTzӵ5W؊W{af^uEhǮSCw66<_6Q2IgMu` {G&\%UnmY3uJF4޶\dVgJDȴ4,IyO+P@(5ߟz֪^ ú"jbK.x_(DՈ|^8WD׻ܗݭ9M*~h[.'>Gr\XIL-@9̼%%VrJL& P &PRtɱ>Λ7h56C9z1!:Q*rSs{29 _*GUl3]pެ@M侲f4*1z_.h PO5j`Etba-vCN؇#ېHtЈ]Y-毆6t^Yѹ$5v*o@4v  >(@߅@%G( @@( @ @( ( @( @( @@( @(XIENDB`hugo-0.131.0/docs/content/en/content-management/organization/index.md000066400000000000000000000151271465312036400255550ustar00rootroot00000000000000--- title: Content organization linkTitle: Organization description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site. categories: [content management,fundamentals] keywords: [sections,content,organization,bundle,resources] menu: docs: parent: content-management weight: 20 weight: 20 toc: true aliases: [/content/sections/] --- ## Page bundles Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`. These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture. ```text content/ ├── blog/ │ ├── hugo-is-cool/ │ │ ├── images/ │ │ │ ├── funnier-cat.jpg │ │ │ └── funny-cat.jpg │ │ ├── cats-info.md │ │ └── index.md │ ├── posts/ │ │ ├── post1.md │ │ └── post2.md │ ├── 1-landscape.jpg │ ├── 2-sunset.jpg │ ├── _index.md │ ├── content-1.md │ └── content-2.md ├── 1-logo.png └── _index.md ``` The file tree above shows three bundles. Note that the home page bundle cannot contain other content pages, although other files (images etc.) are allowed. ## Organization of content source In Hugo, your content should be organized in a manner that reflects the rendered website. While Hugo supports content nested at any level, the top levels (i.e. `content/`) are special in Hugo and are considered the content type used to determine layouts etc. To read more about sections, including how to nest them, see [sections]. Without any additional configuration, the following will automatically work: ```txt . └── content └── about | └── index.md // <- https://example.org/about/ ├── posts | ├── firstpost.md // <- https://example.org/posts/firstpost/ | ├── happy | | └── ness.md // <- https://example.org/posts/happy/ness/ | └── secondpost.md // <- https://example.org/posts/secondpost/ └── quote ├── first.md // <- https://example.org/quote/first/ └── second.md // <- https://example.org/quote/second/ ``` ## Path breakdown in Hugo The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseURL = "https://example.org/"` in your [site's configuration file][config]. ### Index pages: `_index.md` `_index.md` has a special role in Hugo. It allows you to add front matter and content to your [list templates][lists]. These templates include those for [section templates], [taxonomy templates], [taxonomy terms templates], and your [homepage template]. {{% note %}} **Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/methods/page/getpage). {{% /note %}} You can create one `_index.md` for your homepage and one in each of your content sections, taxonomies, and taxonomy terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website: ```txt . url . ⊢--^-⊣ . path slug . ⊢--^-⊣⊢---^---⊣ . file path . ⊢------^------⊣ content/posts/_index.md ``` At build, this will output to the following destination with the associated values: ```txt url ("/posts/") ⊢-^-⊣ baseurl section ("posts") ⊢--------^---------⊣⊢-^-⊣ permalink ⊢----------^-------------⊣ https://example.org/posts/index.html ``` The [sections] can be nested as deeply as you want. The important thing to understand is that to make the section tree fully navigational, at least the lower-most section must include a content file. (i.e. `_index.md`). ### Single pages in sections Single content files in each of your sections will be rendered as [single page templates][singles]. Here is an example of a single `post` within `posts`: ```txt path ("posts/my-first-hugo-post.md") . ⊢-----------^------------⊣ . section slug . ⊢-^-⊣⊢--------^----------⊣ content/posts/my-first-hugo-post.md ``` When Hugo builds your site, the content will be output to the following destination: ```txt url ("/posts/my-first-hugo-post/") ⊢------------^----------⊣ baseurl section slug ⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣ permalink ⊢--------------------^---------------------⊣ https://example.org/posts/my-first-hugo-post/index.html ``` ## Paths explained The following concepts provide more insight into the relationship between your project's organization and the default Hugo behavior when building output for the website. ### `section` A default content type is determined by the section in which a content item is stored. `section` is determined by the location within the project's `content` directory. `section` *cannot* be specified or overridden in front matter. ### `slug` The `slug` is the last segment of the URL path, defined by the file name and optionally overridden by a `slug` value in front matter. See [URL Management](/content-management/urls/#slug) for details. ### `path` A content's `path` is determined by the section's path to the file. The file `path` * is based on the path to the content's location AND * does not include the slug ### `url` The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details. [config]: /getting-started/configuration/ [formats]: /content-management/formats/ [front matter]: /content-management/front-matter/ [getpage]: /methods/page/getpage/ [homepage template]: /templates/homepage/ [homepage]: /templates/homepage/ [lists]: /templates/lists/ [pretty]: /content-management/urls/#appearance [section templates]: /templates/section-templates/ [sections]: /content-management/sections/ [singles]: /templates/single-page-templates/ [taxonomy templates]: /templates/taxonomy-templates/ [taxonomy terms templates]: /templates/taxonomy-templates/ [types]: /content-management/types/ [urls]: /content-management/urls/ hugo-0.131.0/docs/content/en/content-management/page-bundles.md000066400000000000000000000150521465312036400243050ustar00rootroot00000000000000--- title: Page bundles description: Use page bundles to logically associate one or more resources with content. categories: [content management] keywords: [page,bundle,leaf,branch] menu : docs: parent: content-management weight: 30 weight: 30 toc: true --- ## Introduction A page bundle is a directory that encapsulates both content and associated resources. By way of example, this site has an "about" page and a "privacy" page: ```text content/ ├── about/ │ ├── index.md │ └── welcome.jpg └── privacy.md ``` The "about" page is a page bundle. It logically associates a resource with content by bundling them together. Resources within a page bundle are [page resources], accessible with the [`Resources`] method on the `Page` object. Page bundles are either _leaf bundles_ or _branch bundles_. leaf bundle : A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants. branch bundle : A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page. {{% note %}} In the definitions above and the examples below, the extension of the index file depends on the [content format]. For example, use index.md for Markdown content, index.html for HTML content, index.adoc for AsciiDoc content, etc. [content format]: /getting-started/glossary/#content-format {{% /note %}} ## Comparison Page bundle characteristics vary by bundle type. | | Leaf bundle | Branch bundle | |---------------------|---------------------------------------------------------|---------------------------------------------------------| | Index file | index.md | _index.md | | Example | content/about/index.md | content/posts/_index.md | | [Page kinds] | `page` | `home`, `section`, `taxonomy`, or `term` | | Layout type | [single] | [list] | | Descendant pages | None | Zero or more | | Resource location | Adjacent to the index file or in a nested subdirectory | Same as a leaf bundles, but excludes descendant bundles | | [Resource types] | `page`, `image`, `video`, etc. | all but `page` | Files with [resource type] `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages. ## Leaf bundles A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants. ```text content/ ├── about │ └── index.md ├── posts │ ├── my-post │ │ ├── content-1.md │ │ ├── content-2.md │ │ ├── image-1.jpg │ │ ├── image-2.png │ │ └── index.md │ └── my-other-post │ └── index.md └── another-section ├── foo.md └── not-a-leaf-bundle ├── bar.md └── another-leaf-bundle └── index.md ``` There are four leaf bundles in the example above: about : This leaf bundle does not contain any page resources. my-post : This leaf bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`. - content-1, content-2 These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages. - image-1, image-2 These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object my-other-post : This leaf bundle does not contain any page resources. another-leaf-bundle : This leaf bundle does not contain any page resources. {{% note %}} Create leaf bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants. {{% /note %}} ## Branch bundles A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page. ```text content/ ├── branch-bundle-1/ │ ├── _index.md │ ├── content-1.md │ ├── content-2.md │ ├── image-1.jpg │ └── image-2.png ├── branch-bundle-2/ │ ├── a-leaf-bundle/ │ │ └── index.md │ └── _index.md └── _index.md ``` There are three branch bundles in the example above: home page : This branch bundle contains an index file, two descendant branch bundles, and no resources. branch-bundle-1 : This branch bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`. branch-bundle-2 : This branch bundle contains an index file and a leaf bundle. {{% note %}} Create branch bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants. {{% /note %}} ## Headless bundles Use [build options] in front matter to create an unpublished leaf or branch bundle whose content and resources you can include in other pages. [`Resources`]: /methods/page/resources/ [build options]: content-management/build-options/ [list]: /templates/lists/ [page kinds]: /getting-started/glossary/#page-kind [page resources]: /content-management/page-resources/ [resource type]: /getting-started/glossary/#resource-type [resource types]: /getting-started/glossary/#resource-type [single]: /templates/single-page-templates/ hugo-0.131.0/docs/content/en/content-management/page-resources.md000066400000000000000000000240021465312036400246560ustar00rootroot00000000000000--- title: Page resources description: Page resources -- images, other pages, documents, etc. -- have page-relative URLs and their own metadata. categories: [content management] keywords: [bundle,content,resources] menu: docs: parent: content-management weight: 80 weight: 80 toc: true --- Page resources are only accessible from [page bundles](/content-management/page-bundles), those directories with `index.md` or `_index.md` files at their root. Page resources are only available to the page with which they are bundled. In this example, `first-post` is a page bundle with access to 10 page resources including audio, data, documents, images, and video. Although `second-post` is also a page bundle, it has no page resources and is unable to directly access the page resources associated with `first-post`. ```text content └── post ├── first-post │ ├── images │ │ ├── a.jpg │ │ ├── b.jpg │ │ └── c.jpg │ ├── index.md (root of page bundle) │ ├── latest.html │ ├── manual.json │ ├── notice.md │ ├── office.mp3 │ ├── pocket.mp4 │ ├── rating.pdf │ └── safety.txt └── second-post └── index.md (root of page bundle) ``` ## Properties ResourceType : The main type of the resource's [Media Type](/templates/output-formats/#media-types). For example, a file of MIME type `image/jpeg` has the ResourceType `image`. A `Page` will have `ResourceType` with value `page`. Name : Default value is the file name (relative to the owning page). Can be set in front matter. Title : Default value is the same as `.Name`. Can be set in front matter. Permalink : The absolute URL to the resource. Resources of type `page` will have no value. RelPermalink : The relative URL to the resource. Resources of type `page` will have no value. Content : The content of the resource itself. For most resources, this returns a string with the contents of the file. Use this to create inline resources. ```go-html-template {{ with .Resources.GetMatch "script.js" }} {{ end }} {{ with .Resources.GetMatch "style.css" }} {{ end }} {{ with .Resources.GetMatch "img.png" }} {{ end }} ``` MediaType.Type : The media type (formerly known as a MIME type) of the resource (e.g., `image/jpeg`). MediaType.MainType : The main type of the resource's media type (e.g., `image`). MediaType.SubType : The subtype of the resource's type (e.g., `jpeg`). This may or may not correspond to the file suffix. MediaType.Suffixes : A slice of possible file suffixes for the resource's media type (e.g., `[jpg jpeg jpe jif jfif]`). ## Methods ByType : Returns the page resources of the given type. ```go-html-template {{ .Resources.ByType "image" }} ``` Match : Returns all the page resources (as a slice) whose `Name` matches the given Glob pattern ([examples](https://github.com/gobwas/glob/blob/master/readme.md)). The matching is case-insensitive. ```go-html-template {{ .Resources.Match "images/*" }} ``` GetMatch : Same as `Match` but will return the first match. ### Pattern matching ```go // Using Match/GetMatch to find this images/sunset.jpg ? .Resources.Match "images/sun*" ✅ .Resources.Match "**/sunset.jpg" ✅ .Resources.Match "images/*.jpg" ✅ .Resources.Match "**.jpg" ✅ .Resources.Match "*" 🚫 .Resources.Match "sunset.jpg" 🚫 .Resources.Match "*sunset.jpg" 🚫 ``` ## Metadata The page resources' metadata is managed from the corresponding page's front matter with an array/table parameter named `resources`. You can batch assign values using [wildcards](https://tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm). {{% note %}} Resources of type `page` get `Title` etc. from their own front matter. {{% /note %}} name : Sets the value returned in `Name`. {{% note %}} The methods `Match`, `Get` and `GetMatch` use `Name` to match the resources. {{% /note %}} title : Sets the value returned in `Title` params : A map of custom key-value pairs. ### Resources metadata example {{< code-toggle >}} title: Application date : 2018-01-25 resources : - src : "images/sunset.jpg" name : "header" - src : "documents/photo_specs.pdf" title : "Photo Specifications" params: icon : "photo" - src : "documents/guide.pdf" title : "Instruction Guide" - src : "documents/checklist.pdf" title : "Document Checklist" - src : "documents/payment.docx" title : "Proof of Payment" - src : "**.pdf" name : "pdf-file-:counter" params : icon : "pdf" - src : "**.docx" params : icon : "word" {{}} From the example above: - `sunset.jpg` will receive a new `Name` and can now be found with `.GetMatch "header"`. - `documents/photo_specs.pdf` will get the `photo` icon. - `documents/checklist.pdf`, `documents/guide.pdf` and `documents/payment.docx` will get `Title` as set by `title`. - Every `PDF` in the bundle except `documents/photo_specs.pdf` will get the `pdf` icon. - All `PDF` files will get a new `Name`. The `name` parameter contains a special placeholder [`:counter`](#the-counter-placeholder-in-name-and-title), so the `Name` will be `pdf-file-1`, `pdf-file-2`, `pdf-file-3`. - Every docx in the bundle will receive the `word` icon. {{% note %}} The __order matters__ --- Only the **first set** values of the `title`, `name` and `params`-**keys** will be used. Consecutive parameters will be set only for the ones not already set. In the above example, `.Params.icon` is first set to `"photo"` in `src = "documents/photo_specs.pdf"`. So that would not get overridden to `"pdf"` by the later set `src = "**.pdf"` rule. {{% /note %}} ### The `:counter` placeholder in `name` and `title` The `:counter` is a special placeholder recognized in `name` and `title` parameters `resources`. The counter starts at 1 the first time they are used in either `name` or `title`. For example, if a bundle has the resources `photo_specs.pdf`, `other_specs.pdf`, `guide.pdf` and `checklist.pdf`, and the front matter has specified the `resources` as: {{< code-toggle file=content/inspections/engine/index.md fm=true >}} title = 'Engine inspections' [[resources]] src = "*specs.pdf" title = "Specification #:counter" [[resources]] src = "**.pdf" name = "pdf-file-:counter" {{}} the `Name` and `Title` will be assigned to the resource files as follows: | Resource file | `Name` | `Title` | |-------------------|-------------------|-----------------------| | checklist.pdf | `"pdf-file-1.pdf` | `"checklist.pdf"` | | guide.pdf | `"pdf-file-2.pdf` | `"guide.pdf"` | | other\_specs.pdf | `"pdf-file-3.pdf` | `"Specification #1"` | | photo\_specs.pdf | `"pdf-file-4.pdf` | `"Specification #2"` | ## Multilingual {{< new-in 0.123.0 >}} By default, with a multilingual single-host site, Hugo does not duplicate shared page resources when building the site. {{% note %}} This behavior is limited to Markdown content. Shared page resources for other [content formats] are copied into each language bundle. [content formats]: /content-management/formats/ {{% /note %}} Consider this site configuration: {{< code-toggle file=hugo >}} defaultContentLanguage = 'de' defaultContentLanguageInSubdir = true [languages.de] languageCode = 'de-DE' languageName = 'Deutsch' weight = 1 [languages.en] languageCode = 'en-US' languageName = 'English' weight = 2 {{< /code-toggle >}} And this content: ```text content/ └── my-bundle/ ├── a.jpg <-- shared page resource ├── b.jpg <-- shared page resource ├── c.de.jpg ├── c.en.jpg ├── index.de.md └── index.en.md ``` With v0.122.0 and earlier, Hugo duplicated the shared page resources, creating copies for each language: ```text public/ ├── de/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource │ │ ├── b.jpg <-- shared page resource │ │ ├── c.de.jpg │ │ └── index.html │ └── index.html ├── en/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource (duplicate) │ │ ├── b.jpg <-- shared page resource (duplicate) │ │ ├── c.en.jpg │ │ └── index.html │ └── index.html └── index.html ``` With v0.123.0 and later, Hugo places the shared resources in the page bundle for the default content language: ```text public/ ├── de/ │ ├── my-bundle/ │ │ ├── a.jpg <-- shared page resource │ │ ├── b.jpg <-- shared page resource │ │ ├── c.de.jpg │ │ └── index.html │ └── index.html ├── en/ │ ├── my-bundle/ │ │ ├── c.en.jpg │ │ └── index.html │ └── index.html └── index.html ``` This approach reduces build times, storage requirements, bandwidth consumption, and deployment times, ultimately reducing cost. {{% note %}} To resolve Markdown link and image destinations to the correct location, you must use link and image render hooks that capture the page resource with the [`Resources.Get`] method, and then invoke its [`RelPermalink`] method. By default, with multilingual single-host sites, Hugo enables its [embedded link render hook] and [embedded image render hook] to resolve Markdown link and image destinations. You may override the embedded render hooks as needed, provided they capture the resource as described above. [embedded link render hook]: /render-hooks/links/#default [embedded image render hook]: /render-hooks/images/#default [`Resources.Get`]: /methods/page/resources/#get [`RelPermalink`]: /methods/resource/relpermalink/ {{% /note %}} Although duplicating shared page resources is inefficient, you can enable this feature in your site configuration if desired: {{< code-toggle file=hugo >}} [markup.goldmark] duplicateResourceFiles = true {{< /code-toggle >}} hugo-0.131.0/docs/content/en/content-management/related.md000066400000000000000000000173761465312036400233720ustar00rootroot00000000000000--- title: Related content description: List related content in "See Also" sections. categories: [content management] keywords: [content] menu: docs: parent: content-management weight: 110 weight: 110 toc: true aliases: [/content/related/,/related/] --- Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [Related Content configuration](#configure-related-content). ## List related content To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your single page template: {{< code file=layouts/partials/related.html >}} {{ $related := .Site.RegularPages.Related . | first 5 }} {{ with $related }}

        See Also

        {{ end }} {{< /code >}} The `Related` method takes one argument which may be a `Page` or a options map. The options map have these options: indices : (`slice`) The indices to search within. document : (`page`) The page for which to find related content. Required when specifying an options map. namedSlices : (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function. fragments : (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment] identifiers of the documents. [fragment]: /getting-started/glossary/#fragment [`keyVals`]: /functions/collections/keyvals/ A fictional example using all of the above options: ```go-html-template {{ $page := . }} {{ $opts := dict "indices" (slice "tags" "keywords") "document" $page "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date)) "fragments" (slice "heading-1" "heading-2") }} ``` {{% note %}} We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature. {{% /note %}} ## Index content headings in related content {{< new-in 0.111.0 >}} Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration: {{< code-toggle file=hugo >}} [related] threshold = 20 includeNewer = true toLower = false [[related.indices]] name = "fragmentrefs" type = "fragments" applyFilter = true weight = 80 {{< /code-toggle >}} * The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level. * If `applyFilter`is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing: ```go-html-template {{ $related := .Site.RegularPages.Related . | first 5 }} {{ with $related }}

        See Also

          {{ range $i, $p := . }}
        • {{ .LinkTitle }} {{ with .HeadingsFiltered }}
            {{ range . }} {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
          • {{ .Title }}
          • {{ end }}
          {{ end }}
        • {{ end }}
        {{ end }} ``` ## Configure related content Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed. ### Default configuration Without any `related` configuration set on the project, Hugo's Related Content methods will use the following. {{< code-toggle config=related />}} Custom configuration should be set using the same syntax. {{% note %}} If you add a `related` configuration section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest from the Hugo defaults. {{% /note %}} ### Top level configuration options threshold : (`int`) A value between 0-100. Lower value will give more, but maybe not so relevant, matches. includeNewer : (`bool`) Set to `true` to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added. toLower : (`bool`) Set to `true` to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index. ### Configuration options per index name : (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects. type {{< new-in 0.111.0 >}} : (`string`) One of `basic`(default) or `fragments`. applyFilter {{< new-in 0.111.0 >}} : (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type. weight : (`int`) An integer weight that indicates _how important_ this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best. cardinalityThreshold {{< new-in 0.111.0 >}} : (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`. pattern : (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default. toLower : (`bool`) See above. ## Performance considerations **Fast is Hugo's middle name** and we would not have released this feature had it not been blistering fast. This feature has been in the back log and requested by many for a long time. The development got this recent kick start from this Twitter thread: {{< tweet user="scott_lowe" id="898398437527363585" >}} Scott S. Lowe removed the "Related Content" section built using the `intersect` template function on tags, and the build time dropped from 30 seconds to less than 2 seconds on his 1700 content page sized blog. He should now be able to add an improved version of that "Related Content" section without giving up the fast live-reloads. But it's worth noting that: * If you don't use any of the `Related` methods, you will not use the Relate Content feature, and performance will be the same as before. * Calling `.RegularPages.Related` etc. will create one inverted index, also sometimes named posting list, that will be reused for any lookups in that same page collection. Doing that in addition to, as an example, calling `.Pages.Related` will work as expected, but will create one additional inverted index. This should still be very fast, but worth having in mind, especially for bigger sites. {{% note %}} We currently do not index **Page content**. We thought we would release something that will make most people happy before we start solving [Sherlock's last case](https://github.com/joearms/sherlock). {{% /note %}} hugo-0.131.0/docs/content/en/content-management/sections.md000066400000000000000000000135511465312036400235700ustar00rootroot00000000000000--- title: Sections description: Organize content into sections. categories: [content management] keywords: [lists,sections,content types,organization] menu: docs: parent: content-management weight: 120 weight: 120 toc: true aliases: [/content/sections/] --- ## Overview A section is a top-level content directory, or any content directory with an _index.md file. A content directory with an _index.md file is also known as a [branch bundle](/getting-started/glossary/#branch-bundle). Section templates receive one or more page [collections](/getting-started/glossary/#collection) in [context](/getting-started/glossary/#context). {{% note %}} Although top-level directories without _index.md files are sections, we recommend creating _index.md files in _all_ sections. {{% /note %}} A typical site consists of one or more sections. For example: ```text content/ ├── articles/ <-- section (top-level directory) │ ├── 2022/ │ │ ├── article-1/ │ │ │ ├── cover.jpg │ │ │ └── index.md │ │ └── article-2.md │ └── 2023/ │ ├── article-3.md │ └── article-4.md ├── products/ <-- section (top-level directory) │ ├── product-1/ <-- section (has _index.md file) │ │ ├── benefits/ <-- section (has _index.md file) │ │ │ ├── _index.md │ │ │ ├── benefit-1.md │ │ │ └── benefit-2.md │ │ ├── features/ <-- section (has _index.md file) │ │ │ ├── _index.md │ │ │ ├── feature-1.md │ │ │ └── feature-2.md │ │ └── _index.md │ └── product-2/ <-- section (has _index.md file) │ ├── benefits/ <-- section (has _index.md file) │ │ ├── _index.md │ │ ├── benefit-1.md │ │ └── benefit-2.md │ ├── features/ <-- section (has _index.md file) │ │ ├── _index.md │ │ ├── feature-1.md │ │ └── feature-2.md │ └── _index.md ├── _index.md └── about.md ``` The example above has two top-level sections: articles and products. None of the directories under articles are sections, while all of the directories under products are sections. A section within a section is a known as a nested section or subsection. ## Explanation Sections and non-sections behave differently. ||Sections|Non-sections :--|:-:|:-: Directory names become URL segments|:heavy_check_mark:|:heavy_check_mark: Have logical ancestors and descendants|:heavy_check_mark:|:x: Have list pages|:heavy_check_mark:|:x: With the file structure from the [example above](#overview): 1. The list page for the articles section includes all articles, regardless of directory structure; none of the subdirectories are sections. 1. The articles/2022 and articles/2023 directories do not have list pages; they are not sections. 1. The list page for the products section, by default, includes product-1 and product-2, but not their descendant pages. To include descendant pages, use the `RegularPagesRecursive` method instead of the `Pages` method in the list template. [`Pages`]: /methods/page/pages/ [`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/ 1. All directories in the products section have list pages; each directory is a section. ## Template selection Hugo has a defined [lookup order] to determine which template to use when rendering a page. The [lookup rules] consider the top-level section name; subsection names are not considered when selecting a template. With the file structure from the [example above](#overview): Content directory|List page template :--|:-- content/products|layouts/products/list.html content/products/product-1|layouts/products/list.html content/products/product-1/benefits|layouts/products/list.html Content directory|Single page template :--|:-- content/products|layouts/products/single.html content/products/product-1|layouts/products/single.html content/products/product-1/benefits|layouts/products/single.html If you need to use a different template for a subsection, specify `type` and/or `layout` in front matter. [lookup rules]: /templates/lookup-order/#lookup-rules [lookup order]: /templates/lookup-order/ ## Ancestors and descendants A section has one or more ancestors (including the home page), and zero or more descendants. With the file structure from the [example above](#overview): ```text content/products/product-1/benefits/benefit-1.md ``` The content file (benefit-1.md) has four ancestors: benefits, product-1, products, and the home page. This logical relationship allows us to use the `.Parent` and `.Ancestors` methods to traverse the site structure. For example, use the `.Ancestors` method to render breadcrumb navigation. {{< code file=layouts/partials/breadcrumb.html >}} {{< /code >}} With this CSS: ```css .breadcrumb ol { padding-left: 0; } .breadcrumb li { display: inline; } .breadcrumb li:not(:last-child)::after { content: "»"; } ``` Hugo renders this, where each breadcrumb is a link to the corresponding page: ```text Home » Products » Product 1 » Benefits » Benefit 1 ``` [archetype]: /content-management/archetypes/ [content type]: /content-management/types/ [directory structure]: /getting-started/directory-structure/ [section templates]: /templates/section-templates/ [leaf bundles]: /content-management/page-bundles/#leaf-bundles [branch bundles]: /content-management/page-bundles/#branch-bundles hugo-0.131.0/docs/content/en/content-management/shortcodes.md000066400000000000000000000324441465312036400241200ustar00rootroot00000000000000--- title: Shortcodes description: Shortcodes are simple snippets inside your content files calling built-in or custom templates. categories: [content management] keywords: [markdown,content,shortcodes] menu: docs: parent: content-management weight: 100 weight: 100 toc: true aliases: [/extras/shortcodes/] testparam: "Hugo Rocks!" --- ## What a shortcode is Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video ` {{< /code >}} {{< code file=youtube-embed.html >}}
        {{< /code >}} ### Single named example: `image` Let's say you want to create your own `img` shortcode rather than use Hugo's built-in [`figure` shortcode][figure]. Your goal is to be able to call the shortcode as follows in your content files: {{< code file=content-image.md >}} {{}} {{< /code >}} You have created the shortcode at `/layouts/shortcodes/img.html`, which loads the following shortcode template: {{< code file=layouts/shortcodes/img.html >}}
        {{ with .Get "link" }}{{ end }} {{ if .Get "link" }}{{ end }} {{ if or (or (.Get "title") (.Get "caption")) (.Get "attr") }}
        {{ if isset .Params "title" }}

        {{ .Get "title" }}

        {{ end }} {{ if or (.Get "caption") (.Get "attr") }}

        {{ .Get "caption" }} {{ with .Get "attrlink" }} {{ end }} {{ .Get "attr" }} {{ if .Get "attrlink" }} {{ end }}

        {{ end }}
        {{ end }}
        {{< /code >}} Would be rendered as: {{< code file=img-output.html >}}

        Steve Francia

        {{< /code >}} ### Single flexible example: `vimeo` ```go-html-template {{}} {{}} ``` Would load the template found at `/layouts/shortcodes/vimeo.html`: {{< code file=layouts/shortcodes/vimeo.html >}} {{ if .IsNamedParams }}
        {{ else }}
        {{ end }} {{< /code >}} Would be rendered as: {{< code file=vimeo-iframes.html >}}
        {{< /code >}} ### Paired example: `highlight` The following is taken from `highlight`, which is a [built-in shortcode] that ships with Hugo. {{< code file=highlight-example.md >}} {{}} This HTML {{}} {{< /code >}} The template for the `highlight` shortcode uses the following code, which is already included in Hugo: ```go-html-template {{ .Get 0 | highlight .Inner }} ``` The rendered output of the HTML example code block will be as follows: {{< code file=syntax-highlighted.html >}}
        <html>
            <body> This HTML </body>
        </html>
        
        {{< /code >}} ### Nested shortcode: image gallery Hugo's [`.Parent`] shortcode method provides access to the parent shortcode context when the shortcode in question is called within the context of a parent shortcode. This provides an inheritance model. The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` argument: {{< code file=layouts/shortcodes/gallery.html >}}
        {{ .Inner }}
        {{< /code >}} You also have an `img` shortcode with a single named `src` argument that you want to call inside of `gallery` and other shortcodes, so that the parent defines the context of each `img`: {{< code file=layouts/shortcodes/img.html >}} {{- $src := .Get "src" -}} {{- with .Parent -}} {{- else -}} {{- end -}} {{< /code >}} You can then call your shortcode in your content as follows: ```go-html-template {{}} {{}} {{}} {{}} {{}} ``` This will output the following HTML. Note how the first two `img` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `img` only uses `src`: ```html ``` ## Error handling in shortcodes Use the [`errorf`] template function with the [`Name`] and [`Position`] shortcode methods to generate useful error messages: {{< code file=layouts/shortcodes/greeting.html >}} {{ with .Get "name" }}

        Hello, my name is {{ . }}.

        {{ else }} {{ errorf "The %q shortcode requires a 'name' argument. See %s" .Name .Position }} {{ end }} {{< /code >}} When the above fails, you will see an `ERROR` message such as: ```sh ERROR The "greeting" shortcode requires a 'name' argument. See "/home/user/project/content/_index.md:12:1" ``` ## Inline shortcodes You can also implement your shortcodes inline -- e.g. where you use them in the content file. This can be useful for scripting that you only need in one place. This feature is disabled by default, but can be enabled in your site configuration: {{< code-toggle file=hugo >}} [security] enableInlineShortcodes = true {{< /code-toggle >}} It is disabled by default for security reasons. The security model used by Hugo's template handling assumes that template authors are trusted, but that the content files are not, so the templates are injection-safe from malformed input data. But in most situations you have full control over the content, too, and then `enableInlineShortcodes = true` would be considered safe. But it's something to be aware of: It allows ad-hoc [Go Text templates](https://golang.org/pkg/text/template/) to be executed from the content files. And once enabled, you can do this in your content files: ```go-html-template {{}}{{ now }}{{}} ``` The above will print the current date and time. Note that an inline shortcode's inner content is parsed and executed as a Go text template with the same context as a regular shortcode template. This means that the current page can be accessed via `.Page.Title` etc. This also means that there are no concept of "nested inline shortcodes". The same inline shortcode can be reused later in the same content file, with different arguments if needed, using the self-closing syntax: ```go-html-template {{}} ``` [`.Parent`]: /methods/shortcode/parent/ [`errorf`]: /functions/fmt/errorf/ [`Name`]: /methods/shortcode/name/ [`Position`]: /methods/shortcode/position/ [built-in shortcode]: /content-management/shortcodes/ [figure]: /content-management/shortcodes/#figure [lookup order]: /templates/lookup-order/ [source organization]: /getting-started/directory-structure/ [vimeoexample]: #single-flexible-example-vimeo [youtubeshortcode]: /content-management/shortcodes/#youtube hugo-0.131.0/docs/content/en/templates/single-page-templates.md000066400000000000000000000044361465312036400243440ustar00rootroot00000000000000--- title: Single page templates description: The primary view of content in Hugo is the single view. Hugo will render every Markdown file provided with a corresponding single template. categories: [templates] keywords: [page, templates] menu: docs: parent: templates weight: 50 weight: 50 toc: true aliases: [/layout/content/] --- ## Single page template lookup order See [Template Lookup](/templates/lookup-order/). ## Example single page templates {{< code file=layouts/posts/single.html >}} {{ define "main" }}

        {{ .Title }}

        {{ .Content }}
        {{ end }} {{< /code >}} To easily generate new instances of a content type (e.g., new `.md` files in a section like `project/`) with preconfigured front matter, use [content archetypes][archetypes]. [archetypes]: /content-management/archetypes/ [base templates]: /templates/base/ [content type]: /content-management/types/ [directory structure]: /getting-started/directory-structure/ [dry]: https://en.wikipedia.org/wiki/Don%27t_repeat_yourself [`.format` function]: /methods/time/format/ [front matter]: /content-management/front-matter/ [pagetaxonomy]: /templates/taxonomy-templates/#list-terms-assigned-to-a-page [partials]: /templates/partials/ [section]: /content-management/sections/ [spf13]: https://spf13.com/ [`with`]: /functions/go-template/with/ hugo-0.131.0/docs/content/en/templates/sitemap-template.md000066400000000000000000000054271465312036400234310ustar00rootroot00000000000000--- title: Sitemap templates description: Hugo provides built-in sitemap templates. categories: [templates] keywords: [sitemap,xml,templates] menu: docs: parent: templates weight: 170 weight: 170 toc: true aliases: [/layout/sitemap/,/templates/sitemap/] --- ## Overview Hugo's embedded sitemap templates conform to v0.9 of the [sitemap protocol]. With a monolingual project, Hugo generates a sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemap template]. With a multilingual project, Hugo generates: - A sitemap.xml file in the root of each site (language) using the [embedded sitemap template] - A sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemapindex template] [embedded sitemap template]: {{% eturl sitemap %}} [embedded sitemapindex template]: {{% eturl sitemapindex %}} ## Configuration These are the default sitemap configuration values. They apply to all pages unless overridden in front matter. {{< code-toggle config=sitemap />}} changefreq : (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#changefreqdef). disable {{< new-in 0.125.0 >}} : (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page. filename : (`string`) The name of the generated file. Default is `sitemap.xml`. priority : (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#priority). ## Override default values Override the default values for a given page in front matter. {{< code-toggle file=news.md fm=true >}} title = 'News' [sitemap] changefreq = 'weekly' disable = true priority = 0.8 {{}} ## Override built-in templates To override the built-in sitemap.xml template, create a new file in either of these locations: - layouts/sitemap.xml - layouts/_default/sitemap.xml When ranging through the page collection, access the _change frequency_ and _priority_ with `.Sitemap.ChangeFreq` and `.Sitemap.Priority` respectively. To override the built-in sitemapindex.xml template, create a new file in either of these locations: - layouts/sitemapindex.xml - layouts/_default/sitemapindex.xml ## Disable sitemap generation You may disable sitemap generation in your site configuration: {{< code-toggle file=hugo >}} disableKinds = ['sitemap'] {{}} [`publishDir`]: /getting-started/configuration#publishdir [sitemap protocol]: hugo-0.131.0/docs/content/en/templates/taxonomy-templates.md000066400000000000000000000222001465312036400240140ustar00rootroot00000000000000--- title: Taxonomy templates description: Taxonomy templating includes taxonomy list pages, taxonomy terms pages, and using taxonomies in your single page templates. categories: [templates] keywords: [taxonomies,metadata,front matter,terms,templates] menu: docs: parent: templates weight: 90 weight: 90 toc: true aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy/] --- Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications that demonstrate logical relationships between content. See [Taxonomies under Content Management](/content-management/taxonomies) if you are unfamiliar with how Hugo leverages this powerful feature. Hugo provides multiple ways to use taxonomies throughout your project templates: * Order the way content associated with a taxonomy term is displayed in a [taxonomy template](#taxonomy-templates) * Order the way the terms for a taxonomy are displayed in a [term template](#term-templates) * List a single content's taxonomy terms within a [single page template] ## Taxonomy templates Taxonomy list page templates are lists and therefore have all the methods available to [list pages][lists]. ### Taxonomy template lookup order See [Template Lookup](/templates/lookup-order/). ## Term templates ### Term template lookup order See [Template Lookup](/templates/lookup-order/). ### Taxonomy methods {{< list-pages-in-section path=/methods/taxonomy/ >}} ### OrderedTaxonomy Since Maps are unordered, an OrderedTaxonomy is a special structure that has a defined order. ```go []struct { Name string WeightedPages WeightedPages } ``` Each element of the slice has: .Term : The Term used. .WeightedPages : A slice of Weighted Pages. .Count : The number of pieces of content assigned to this term. .Page : Returns a page reference for this term. .Pages : All Pages assigned to this term. All [list methods][renderlists] are available to this. ## WeightedPages WeightedPages is simply a slice of WeightedPage. ```go type WeightedPages []WeightedPage ``` .Count : The number of pieces of content assigned to this term. .Page : Returns a page reference for this term. .Pages : Returns a slice of pages, which then can be ordered using any of the [list methods][renderlists]. ## Displaying custom metadata in taxonomy terms templates If you need to display custom metadata for each taxonomy term, you will need to create a page for that term at `/content///_index.md` and add your metadata in its front matter, [as explained in the taxonomies documentation](/content-management/taxonomies/#add-custom-metadata-to-a-taxonomy-or-term). Based on the Actors taxonomy example shown there, within your taxonomy terms template, you may access your custom fields by ranging over the page collection returned by the [`Pages`] method: ```go-html-template ``` ## Order taxonomies Taxonomies can be ordered by either alphabetical key or by the number of content pieces assigned to that key. ### Order alphabetically example ```go-html-template ``` ## Order content within taxonomies Hugo uses both `date` and `weight` to order content within taxonomies. Each piece of content in Hugo can optionally be assigned a date. It can also be assigned a weight for each taxonomy it is assigned to. When iterating over content within taxonomies, the default sort is the same as that used for section and list pages: first by weight, then by date. This means that if the weights for two pieces of content are the same, then the more recent content will be displayed first. The default weight for any piece of content is 0. Zero means "does not have a weight", not "has a weight of numerical value zero". Weights of zero are thus treated specially: if two pages have unequal weights, and one of them is zero, then the zero-weighted page will always appear after the other one, regardless of the other's weight. Zero weights should thus be used with care: for example, if both positive and negative weights are used to extend a sequence in both directions, a zero-weighted page will appear not in the middle of the list, but at the end. ### Assign weight Content can be assigned weight for each taxonomy that it's assigned to. {{< code-toggle file=content/example.md fm=true >}} tags = [ "a", "b", "c" ] tags_weight = 22 categories = ["d"] title = "Example" categories_weight = 44 {{< /code-toggle >}} The convention is `taxonomyname_weight`. In the above example, this piece of content has a weight of 22 which applies to the sorting when rendering the pages assigned to the "a", "b" and "c" values of the 'tag' taxonomy. It has also been assigned the weight of 44 when rendering the 'd' category. With this the same piece of content can appear in different positions in different taxonomies. Currently taxonomies only support the default ordering of content which is weight -> date. There are two different templates that the use of taxonomies will require you to provide. Both templates are covered in detail in the templates section. A [list template](/templates/lists/) is any template that will be used to render multiple pieces of content in a single html page. This template will be used to generate all the automatically created taxonomy pages. A [taxonomy template](/templates/taxonomy-templates/) is a template used to generate the list of terms for a given template. There are four common ways you can display the data in your taxonomies in addition to the automatic taxonomy pages created by hugo using the [list templates](/templates/lists/): 1. For a given piece of content, you can list the terms attached 2. For a given piece of content, you can list other content with the same term 3. You can list all terms for a taxonomy 4. You can list all taxonomies (with their terms) ## List terms assigned to a page List the terms assigned to a page using the `.Page.GetTerms` method. To render an unordered list: ```go-html-template {{ $taxonomy := "tags" }} {{ with .GetTerms $taxonomy }}

        {{ (site.GetPage $taxonomy).LinkTitle }}:

        {{ end }} ``` To render a comma-delimited list: ```go-html-template {{ $taxonomy := "tags" }} {{ with .GetTerms $taxonomy }}

        {{ (site.GetPage $taxonomy).LinkTitle }}: {{ range $k, $_ := . -}} {{ if $k }}, {{ end }} {{ .LinkTitle }} {{- end }}

        {{ end }} ``` ## List content with the same taxonomy term If you are using a taxonomy for something like a series of posts, you can list individual pages associated with the same term. For example: ```go-html-template ``` ## List all content in a given taxonomy This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content. ```go-html-template ``` ## Render a site's taxonomies The following example displays all terms in a site's tags taxonomy: ```go-html-template ``` This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms. {{< code file=layouts/partials/all-taxonomies.html >}} {{ with .Site.Taxonomies }} {{ $numberOfTerms := 0 }} {{ range $taxonomy, $terms := . }} {{ $numberOfTerms = len . | add $numberOfTerms }} {{ end }} {{ if gt $numberOfTerms 0 }} {{ end }} {{ end }} {{< /code >}} [`Pages`]: /methods/page/pages/ [getpage]: /methods/page/getpage/ [lists]: /templates/lists/ [renderlists]: /templates/lists/ [single page template]: /templates/single-page-templates/ hugo-0.131.0/docs/content/en/templates/views.md000066400000000000000000000073421465312036400213110ustar00rootroot00000000000000--- title: Content view templates description: Hugo can render alternative views of your content, useful in list and summary views. categories: [templates] keywords: [views] menu: docs: parent: templates weight: 110 weight: 110 toc: true --- These alternative **content views** are especially useful in [list templates][lists]. The following are common use cases for content views: * You want content of every type to be shown on the homepage but only with limited [summary views][summaries]. * You only want a bulleted list of your content on a [taxonomy list page][taxonomylists]. Views make this very straightforward by delegating the rendering of each different type of content to the content itself. ## Create a content view To create a new view, create a template in each of your different content type directories with the view name. The following example contains an "li" view and a "summary" view for the `posts` and `project` content types. As you can see, these sit next to the [single content view][single] template, `single.html`. You can even provide a specific view for a given type and continue to use the `_default/single.html` for the primary view. ```txt ▾ layouts/ ▾ posts/ li.html single.html summary.html ▾ project/ li.html single.html summary.html ``` Hugo also has support for a default content view template to be used in the event that a specific content view template has not been provided for that type. Content views can also be defined in the `_default` directory and will work the same as list and single templates who eventually trickle down to the `_default` directory as a matter of the lookup order. ```txt ▾ layouts/ ▾ _default/ li.html single.html summary.html ``` ## Which template will be rendered? The following is the [lookup order] for content views: 1. `/layouts//.html` 2. `/layouts/_default/.html` 3. `/themes//layouts//.html` 4. `/themes//layouts/_default/.html` ## Example: content view inside a list The following example demonstrates how to use content views inside your [list templates][lists]. ### `list.html` In this example, `.Render` is passed into the template to call the [render function][render]. `.Render` is a special function that instructs content to render itself with the view template provided as the first argument. In this case, the template is going to render the `summary.html` view that follows: {{< code file=layouts/_default/list.html >}}

        {{ .Title }}

        {{ range .Pages }} {{ .Render "summary" }} {{ end }}
        {{< /code >}} ### `summary.html` Hugo passes the page object to the following `summary.html` view template. {{< code file=layouts/_default/summary.html >}} {{< /code >}} ### `li.html` Continuing on the previous example, we can change our render function to use a smaller `li.html` view by changing the argument in the call to the `.Render` function (i.e., `{{ .Render "li" }}`). {{< code file=layouts/_default/li.html >}}
      1. {{ .LinkTitle }}
        {{ .Date.Format "Mon, Jan 2, 2006" }}
      2. {{< /code >}} [lists]: /templates/lists/ [render]: /methods/page/render/ [single]: /templates/single-page-templates/ [summaries]: /content-management/summaries/ [taxonomylists]: /templates/taxonomy-templates/ hugo-0.131.0/docs/content/en/tools/000077500000000000000000000000001465312036400167665ustar00rootroot00000000000000hugo-0.131.0/docs/content/en/tools/_index.md000066400000000000000000000015561465312036400205650ustar00rootroot00000000000000--- title: Developer tools linkTitle: In this section description: In addition to Hugo's powerful CLI, there is a large number of community-developed tool chains for Hugo developers. categories: [] keywords: [] menu: docs: identifier: developer-tools-in-this-section parent: developer-tools weight: 10 weight: 10 --- One of Hugo's greatest strengths is its passionate---and always evolving---developer community. With the exception of the `highlight` shortcode mentioned in [Syntax Highlighting][syntax], the tools and other projects featured in this section are offerings from both commercial services and open-source projects, many of which are developed by Hugo developers just like you. [See the popularity of Hugo compared with other static site generators.][staticgen] [staticgen]: https://staticgen.com [syntax]: /content-management/syntax-highlighting/ hugo-0.131.0/docs/content/en/tools/editors.md000066400000000000000000000067531465312036400207740ustar00rootroot00000000000000--- title: Editor plugins linkTitle: Editor plugins description: The Hugo community uses a wide range of tools and has developed plugins for some of the most popular text editors to help automate parts of your workflow. categories: [developer tools] keywords: [editor,plugin] menu: docs: parent: developer-tools weight: 20 weight: 20 toc: true --- ## Visual Studio Code [Front Matter](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-front-matter) : Once you go for a static site, you need to think about how you are going to manage your articles. Front matter is a tool that helps you maintain the metadata/front matter of your articles like: creation date, modified date, slug, tile, SEO check, and more. [Hugo Helper](https://marketplace.visualstudio.com/items?itemName=rusnasonov.vscode-hugo) : Hugo Helper is a plugin for Visual Studio Code that has some useful commands for Hugo. The source code can be found [here](https://github.com/rusnasonov/vscode-hugo). [Hugo Language and Syntax Support](https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode) : Hugo Language and Syntax Support is a Visual Studio Code plugin for Hugo syntax highlighting and snippets. The source code can be found [here](https://github.com/budparr/language-hugo-vscode). [Hugo Themer](https://marketplace.visualstudio.com/items?itemName=eliostruyf.vscode-hugo-themer) : Hugo Themer is an extension to help you while developing themes. It allows you to easily navigate through your theme files. [Hugofy](https://marketplace.visualstudio.com/items?itemName=akmittal.hugofy) : Hugofy is a plugin for Visual Studio Code to "make life easier" when developing with Hugo. The source code can be found [here](https://github.com/akmittal/hugofy-vscode). [Prettier Plugin for Go Templates](https://github.com/NiklasPor/prettier-plugin-go-template) : Format Hugo templates using this [Prettier](https://prettier.io/) plugin. See [installation instructions](https://discourse.gohugo.io/t/38403). [Syntax Highlighting for Hugo Shortcodes](https://marketplace.visualstudio.com/items?itemName=kaellarkin.hugo-shortcode-syntax) : This extension adds some syntax highlighting for Shortcodes, making visual identification of individual pieces easier. ## Emacs [emacs-easy-hugo](https://github.com/masasam/emacs-easy-hugo) : Emacs major mode for managing hugo blogs. Note that Hugo also supports [Org-mode][formats]. [ox-hugo.el](https://ox-hugo.scripter.co) : Native Org-mode exporter that exports to Blackfriday Markdown with Hugo front-matter. `ox-hugo` supports two common Org blogging flows --- exporting multiple Org subtrees in a single file to multiple Hugo posts, and exporting a single Org file to a single Hugo post. It also leverages the Org tag and property inheritance features. See [*Why ox-hugo?*](https://ox-hugo.scripter.co/doc/why-ox-hugo/) for more. ## Sublime Text [Hugofy](https://github.com/akmittal/Hugofy) : Hugofy is a plugin for Sublime Text 3 to make life easier to use Hugo static site generator. [Hugo Snippets](https://packagecontrol.io/packages/Hugo%20Snippets) : Hugo Snippets is a useful plugin for adding automatic snippets to Sublime Text 3. ## Vim [Vim Hugo Helper]: https://github.com/robertbasic/vim-hugo-helper [Vim Hugo Helper] : A small Vim plugin that facilitates authoring pages and blog posts with Hugo. [vim-hugo](https://github.com/phelipetls/vim-hugo) : A Vim plugin with syntax highlighting for templates and a few other features. [formats]: /content-management/formats/ hugo-0.131.0/docs/content/en/tools/front-ends.md000066400000000000000000000041671465312036400213770ustar00rootroot00000000000000--- title: Front-end interfaces linkTitle: Front-ends description: Do you prefer a graphical user interface over a text editor? Give these front-ends a try. categories: [developer tools] keywords: [frontend, gui] menu: docs: parent: developer-tools weight: 30 weight: 30 toc: true aliases: [/tools/frontends/] --- ## Commercial [CloudCannon](https://cloudcannon.com/hugo-cms/) : The intuitive Git-based CMS for your Hugo website. CloudCannon syncs changes from your Git repository and pushes content changes back, so your development and content teams are always in sync. Edit all of your content on the page with visual editing, build entire pages with reusable custom components and then publish confidently. [DatoCMS](https://www.datocms.com) : DatoCMS is a fully customizable administrative area for your static websites. Use your favorite website generator, let your clients publish new content independently, and the host the site anywhere you like. [PubCrank](https://www.pubcrank.com/) : PubCrank is a static site editor which lets you define templates for different front matter layouts in your site. This gives writers an easy-to-use visual interface to create and edit content while maintaining the guardrails that the developer has created. PubCrank is free for local editing. ## Open-source [Decap CMS](https://decapcms.org/) : Decap CMS is an open-source, serverless solution for managing Git based content in static sites, and it works on any platform that can host static sites. A [Hugo/Decap CMS starter](https://github.com/decaporg/one-click-hugo-cms) is available to get new projects running quickly. [Quiqr Desktop](https://quiqr.org/) : Quiqr Desktop is a open-source, cross-platform, offline desktop CMS for Hugo with built-in Git functionality for deploying static sites to any hosting server. [Sveltia CMS](https://github.com/sveltia/sveltia-cms/) : Sveltia CMS is a drop-in replacement for Decap CMS which is built from the ground up with powerful and performant modern UI library Svelte. Sveltia CMS incorporates i18n into every corner of the product, while striving to radically improve UX, performance and productivity. hugo-0.131.0/docs/content/en/tools/migrations.md000066400000000000000000000130061465312036400214640ustar00rootroot00000000000000--- title: Migrate to Hugo linkTitle: Migrations description: A list of community-developed tools for migrating from your existing static site generator or content management system to Hugo. categories: [developer tools] keywords: [migrations,jekyll,wordpress,drupal,ghost,contentful] menu: docs: parent: developer-tools weight: 50 weight: 50 toc: true aliases: [/developer-tools/migrations/, /developer-tools/migrated/] --- This section highlights some projects around Hugo that are independently developed. These tools try to extend the functionality of our static site generator or help you to get started. Take a look at this list of migration tools if you currently use other blogging tools like Jekyll or WordPress but intend to switch to Hugo instead. They'll take care to export your content into Hugo-friendly formats. ## Jekyll Alternatively, you can use the [Jekyll import command](/commands/hugo_import_jekyll/). [JekyllToHugo](https://github.com/fredrikloch/JekyllToHugo) : A Small script for converting Jekyll blog posts to a Hugo site. [ConvertToHugo](https://github.com/coderzh/ConvertToHugo) : Convert your blog from Jekyll to Hugo. ## Octopress [octohug](https://github.com/codebrane/octohug) : Octopress to Hugo migrator. ## DokuWiki [dokuwiki-to-hugo](https://github.com/wgroeneveld/dokuwiki-to-hugo) : Migrates your DokuWiki source pages from [DokuWiki syntax](https://www.dokuwiki.org/wiki:syntax) to Hugo Markdown syntax. Includes extra's like the TODO plugin. Written with extensibility in mind using python 3. Also generates a TOML header for each page. Designed to copypaste the wiki directory into your /content directory. ## WordPress [wordpress-to-hugo-exporter](https://github.com/SchumacherFM/wordpress-to-hugo-exporter) : A one-click WordPress plugin that converts all posts, pages, taxonomies, metadata, and settings to Markdown and YAML which can be dropped into Hugo. (Note: If you have trouble using this plugin, you can [export your site for Jekyll](https://wordpress.org/plugins/jekyll-exporter/) and use Hugo's built in Jekyll converter listed above.) [blog2md](https://github.com/palaniraja/blog2md) : Works with [exported xml](https://en.support.wordpress.com/export/) file of your free YOUR-TLD.wordpress.com website. It also saves approved comments to `YOUR-POST-NAME-comments.md` file along with posts. [wordhugopress](https://github.com/nantipov/wordhugopress) : A small utility written in Java, exports the entire WordPress site from the database and resource (e.g. images) files stored locally or remotely. Therefore, migration from the backup files is possible. Supports merging of the multiple WordPress sites into a single Hugo one. [wp2hugo](https://github.com/ashishb/wp2hugo) : A Go-based CLI tool to migrate WordPress website to Hugo while preserving original URLs, GUIDs (for feeds), image URLs, code highlights, table of contents, YouTube embeds, Google Maps embeds, and original WordPress navigation categories. ## Medium [medium2md](https://github.com/gautamdhameja/medium-2-md) : A simple Medium to Hugo exporter able to import stories in one command, including front matter. [medium-to-hugo](https://github.com/bgadrian/medium-to-hugo) : CLI tool written in Go to export medium posts into a Hugo compatible Markdown format. Tags and images are included. All images will be downloaded locally and linked appropriately. ## Tumblr [tumblr-importr](https://github.com/carlmjohnson/tumblr-importr) : An importer that uses the Tumblr API to create a Hugo static site. [tumblr2hugomarkdown](https://github.com/Wysie/tumblr2hugomarkdown) : Export all your Tumblr content to Hugo Markdown files with preserved original formatting. [Tumblr to Hugo](https://github.com/jipiboily/tumblr-to-hugo) : A migration tool that converts each of your Tumblr posts to a content file with a proper title and path. Furthermore, "Tumblr to Hugo" creates a CSV file with the original URL and the new path on Hugo, to help you setup the redirections. ## Drupal [drupal2hugo](https://github.com/danapsimer/drupal2hugo) : Convert a Drupal site to Hugo. ## Joomla [hugojoomla](https://github.com/davetcc/hugojoomla) : This utility written in Java takes a Joomla database and converts all the content into Markdown files. It changes any URLs that are in Joomla's internal format and converts them to a suitable form. ## Blogger [blogimport](https://github.com/natefinch/blogimport) : A tool to import from Blogger posts to Hugo. [blogger-to-hugo](https://pypi.org/project/blogger-to-hugo/) : Another tool to import Blogger posts to Hugo. It also downloads embedded images so they will be stored locally. [blog2md](https://github.com/palaniraja/blog2md) : Works with [exported xml](https://support.google.com/blogger/answer/41387?hl=en) file of your YOUR-TLD.blogspot.com website. It also saves comments to `YOUR-POST-NAME-comments.md` file along with posts. [BloggerToHugo](https://github.com/huanlin/blogger-to-hugo) : Yet another tool to import Blogger posts to Hugo. For Windows platform only, and .NET Framework 4.5 is required. See README.md before using this tool. ## Contentful [contentful-hugo](https://github.com/ModiiMedia/contentful-hugo) : A tool to create content-files for Hugo from content on [Contentful](https://www.contentful.com/). ## BlogML [BlogML2Hugo](https://github.com/jijiechen/BlogML2Hugo) : A tool that helps you convert BlogML xml file to Hugo Markdown files. Users need to take care of links to attachments and images by themselves. This helps the blogs that export BlogML files (e.g. BlogEngine.NET) transform to hugo sites easily. hugo-0.131.0/docs/content/en/tools/other.md000066400000000000000000000035601465312036400204350ustar00rootroot00000000000000--- title: Other community projects linkTitle: Other projects description: Some interesting projects developed by the Hugo community that don't quite fit into our other developer tool categories. categories: [developer tools] keywords: [frontend,gui] menu: docs: parent: developer-tools weight: 60 weight: 60 --- And for all the other community projects around Hugo: - [diego](https://github.com/ttybitnik/diego) - A CLI tool that integrates with Hugo to assist in importing and utilizing exported social media data from popular services on Hugo websites. - [Emacs Easy Hugo](https://github.com/masasam/emacs-easy-hugo) - Emacs package for writing blog posts in Markdown or org-mode and building your site with Hugo. - [Hugo SFTP Upload](https://github.com/thomasmey/HugoSftpUpload) - Sync the local build of your Hugo website with your remote web server via SFTP. - [HugoPhotoSwipe](https://github.com/GjjvdBurg/HugoPhotoSwipe) - Make it easy to create image galleries using PhotoSwipe. - [JAMStack Themes](https://jamstackthemes.dev/ssg/hugo/) - A collection of site themes filterable by static site generator and supported CMS to help build CMS-connected sites using Hugo (linking to Hugo-specific themes). - [flickr-hugo-embed](https://github.com/nikhilm/flickr-hugo-embed) - Print shortcodes to embed a set of images from an album on Flickr into Hugo. - [hugo-gallery](https://github.com/icecreammatt/hugo-gallery) - Create an image gallery for Hugo sites. - [hugo-openapispec-shortcode](https://github.com/tenfourty/hugo-openapispec-shortcode) - A shortcode that allows you to include [Open API Spec](https://openapis.org) (formerly known as Swagger Spec) in a page. - [plausible-hugo](https://github.com/divinerites/plausible-hugo) - Easy Hugo integration for Plausible Analytics, a simple, open-source, lightweight and privacy-friendly web analytics alternative to Google Analytics. hugo-0.131.0/docs/content/en/tools/search.md000066400000000000000000000067311465312036400205640ustar00rootroot00000000000000--- title: Search tools linkTitle: Search description: See some of the open-source and commercial search options for your newly created Hugo website. categories: [developer tools] keywords: [search] menu: docs: parent: developer-tools weight: 40 weight: 40 toc: true --- A static website with a dynamic search function? Yes, Hugo provides an alternative to embeddable scripts from Google or other search engines for static websites. Hugo allows you to provide your visitors with a custom search function by indexing your content files directly. ## Open-source [Pagefind](https://github.com/cloudcannon/pagefind) : A fully static search library that aims to perform well on large sites, while using as little of your users' bandwidth as possible. [GitHub Gist for Hugo Workflow](https://gist.github.com/sebz/efddfc8fdcb6b480f567) : This gist contains a simple workflow to create a search index for your static website. It uses a simple Grunt script to index all your content files and [lunr.js](https://lunrjs.com/) to serve the search results. [hugo-lunr](https://www.npmjs.com/package/hugo-lunr) : A simple way to add site search to your static Hugo site using [lunr.js](https://lunrjs.com/). Hugo-lunr will create an index file of any HTML and Markdown documents in your Hugo project. [hugo-lunr-zh](https://www.npmjs.com/package/hugo-lunr-zh) : A bit like Hugo-lunr, but Hugo-lunr-zh can help you separate the Chinese keywords. [GitHub Gist for Fuse.js integration](https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae) : This gist demonstrates how to leverage Hugo's existing build time processing to generate a searchable JSON index used by [Fuse.js](https://fusejs.io/) on the client-side. Although this gist uses Fuse.js for fuzzy matching, any client-side search tool capable of reading JSON indexes will work. Does not require npm, grunt, or other build-time tools except Hugo! [hugo-search-index](https://www.npmjs.com/package/hugo-search-index) : A library containing Gulp tasks and a prebuilt browser script that implements search. Gulp generates a search index from project Markdown files. [hugofastsearch](https://gist.github.com/cmod/5410eae147e4318164258742dd053993) : A usability and speed update to "GitHub Gist for Fuse.js integration" — global, keyboard-optimized search. [JS & Fuse.js tutorial](https://makewithhugo.com/add-search-to-a-hugo-site/) : A simple client-side search solution, using FuseJS (does not require jQuery). [Hugo Lyra](https://github.com/paolomainardi/hugo-lyra) : Hugo-Lyra is a JavaScript module to integrate [Lyra](https://github.com/LyraSearch/lyra) into a Hugo website. It contains the server-side part to generate the index and the client-side library (optional) to bootstrap the search engine easily. ## Commercial [Algolia](https://www.algolia.com/) : Algolia's Search API makes it easy to deliver a great search experience in your apps and websites. Algolia Search provides hosted full-text, numerical, faceted, and geolocalized search. [Bonsai](https://www.bonsai.io) : Bonsai is a fully-managed hosted Elasticsearch service that is fast, reliable, and simple to set up. Easily ingest your docs from Hugo into Elasticsearch following [this guide from the docs](https://bonsai.io/docs/hugo). [ExpertRec](https://www.expertrec.com/) : ExpertRec is a hosted search-as-a-service solution that is fast and scalable. Set-up and integration is extremely easy and takes only a few minutes. The search settings can be modified without coding using a dashboard. hugo-0.131.0/docs/content/en/troubleshooting/000077500000000000000000000000001465312036400210555ustar00rootroot00000000000000hugo-0.131.0/docs/content/en/troubleshooting/_index.md000066400000000000000000000005541465312036400226510ustar00rootroot00000000000000--- title: Troubleshooting linkTitle: In this section description: Use these techniques when troubleshooting your site. categories: [] keywords: [] menu: docs: identifier: troubleshooting-in-this-section parent: troubleshooting weight: 10 weight: 10 aliases: [/templates/template-debugging/] --- Use these techniques when troubleshooting your site. hugo-0.131.0/docs/content/en/troubleshooting/audit/000077500000000000000000000000001465312036400221635ustar00rootroot00000000000000hugo-0.131.0/docs/content/en/troubleshooting/audit/index.md000066400000000000000000000056621465312036400236250ustar00rootroot00000000000000--- title: Site audit linkTitle: Audit description: Run this audit before deploying your production site. categories: [troubleshooting] keywords: [] menu: docs: parent: troubleshooting weight: 20 weight: 20 --- There are several conditions that can produce errors in your published site which are not detected during the build. Run this audit before your final build. {{< code copy=true >}} HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true hugo && grep -inorE "<\!-- raw HTML omitted -->|ZgotmplZ|\[i18n\]|\(\)|(<nil>)|hahahugo" public/ {{< /code >}} _Tested with GNU Bash 5.1 and GNU grep 3.7._ ## Example output ![site audit terminal output](screen-capture.png) ## Explanation ### Environment variables `HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true` : Retain HTML comments even if minification is enabled. This takes precedence over `minify.tdewolff.html.keepComments` in the site configuration. If you minify without keeping HTML comments when performing this audit, you will not be able to detect when raw HTML has been omitted. `HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true` : Show a placeholder instead of the default value or an empty string if a translation is missing. This takes precedence over `enableMissingTranslationPlaceholders` in the site configuration. ### Grep options `-i, --ignore-case` : Ignore case distinctions in patterns and input data, so that characters that differ only in case match each other. `-n, --line-number` : Prefix each line of output with the 1-based line number within its input file. `-o, --only-matching` : Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. `-r, --recursive` : Read all files under each directory, recursively, following symbolic links only if they are on the command line. `-E, --extended-regexp` : Interpret PATTERNS as extended regular expressions. ### Patterns `` : By default, Hugo strips raw HTML from your Markdown prior to rendering, and leaves this HTML comment in its place. `ZgotmplZ` : ZgotmplZ is a special value that indicates that unsafe content reached a CSS or URL context at runtime. See [details]. [details]: https://pkg.go.dev/html/template `[i18n]` : This is the placeholder produced instead of the default value or an empty string if a translation is missing. `()` : This string will appear in the rendered HTML when passing a nil value to the `printf` function. `(<nil>)` : Same as above when the value returned from the `printf` function has not been passed through `safeHTML`. `HAHAHUGO` : Under certain conditions a rendered shortcode may include all or a portion of the string HAHAHUGOSHORTCODE in either uppercase or lowercase. This is difficult to detect in all circumstances, but a case-insensitive search of the output for `HAHAHUGO` is likely to catch the majority of cases without producing false positives. hugo-0.131.0/docs/content/en/troubleshooting/audit/screen-capture.png000066400000000000000000001311411465312036400256120ustar00rootroot00000000000000PNG  IHDR"g6u(IDATx콉y>tXFBܳss{߻\ -!`-.$HIX:Nĉ/'v8q(>w陝vԇSoUuT11 `0 FY  `0  `0 2`0 ``0 `0  `0 e`0 ``0 `0,3 `0  `0 2`0 `0Xf0 `0  `0 e`0 ``0 `0,3 `0  `0 2`0 `0Xf0 `0 Fokf-*W䔴' Y|V_53~kl{`1Yff[~T30b͕vf)^tH~=PAopnv/eVfQ4o6}Ez7.ri}xNS%%U ӧ񋃡}'BBTyh/B:|v,` (^tH]3 f@QGucw($̭2J2#)Ƴ I=يſ}]xXD]evar|5"b 3*nsEmt U1)K:frW20NgS]vi5}^hڂC!q`ِet$*~"hʧ]W߮MN8MN?E YXf̘2Ck`{.RZ$%\_:fMp }n7/7^>>yn&},i 8PO*q ~CP ̘:onDm_c6= IK&5Y oRm3&V#.h{C1v \cy*}J8+3|߅ ȸлpU$`ׁ̘m< eƴL+o<,TSfp<.|,3ɣbw.#w7; OȲ)I}jk&N!yMJZ.L~ OҗCfr͢_ӽ{ ٥`_O}R-[X򘚯]Q1P3 [}087kwFwF:9#Cg!vb9\)j,f/㞃Rt󓩓zkr4vkJkPx|lg{ֆ~&aHagm={J 0Pyzj5+p|-ȷX$%x@`hwC\4^AZ5eOEnjsf/_ =?ex'-. OC!o'VT,?Am[_vy:G|!,z'VK yjh,?5;c^ꐴhQYքB0ˆ]6'̠eoL~wȺf2cEp>i܂HN|vHրZf,,g?3Wl_ 'Y<߿pQ##t3mOp&M&v4rAR}L\y$yd ar8&H?</.Rו rn; |@+NBuAuv}yYpY:Rx)P',WeRUTvV5:W֣R 5A:gH.vyb0j}+Nu8;}];|FJbwRukb{(Af4;)V}wt;;E@Yƃp'nlg 8:"2mGǡ|&֎Z.xdLvuo /G_{$I>E-~TAC(|1PՒg:R ZN^ePB2c~z"ѬFZr&I,ѼSrv2˞qwt7Q IͦEWN\ a]]s2&U 9}@.\wŜGS)XAnFf3 15+I0f7ףT!3,F J ٹn6/ .55GkYqdSppY:5;,2C=:7) (H;@ QvetGCk )c!0<ݪ1?'8<㫂Ѧ^I겅!1l}|fdY*@p@XH=x^?׃ϋ@RDEVT~@kL63vQBacF^m%D.vObdmD]&lw}(a.zO}}hl\P\qEfijtwCtB_\K~{?J# :mk?t56J#V3% U {2xVR"3?vCuy,.;F2cP 9fX~(9 otſuvkjl6q ĉi8t/ygԍVssxrE%)e&9"_}KzH$ߌ~LHSx^F]Ib @F#ž?]0)yy`9ew /O} >3oԘ&M fΪWQRẓH4I= @%q9XVxbaiggR|(g^FlWؿ&4+9Αtϻȏ{\ &` NJ*MTgs A]lOv1iL)>+$;56>^^26h{2@\X+yl{d{Y?QPD:5}u5KIg9)dZ!OMLю~xPum/Yf5B-#q?(!dP> l,84}/ʮ!S^@0snȱgȌ, mvMdl==Bf[z!ܫH6S0E,NNKfG_iÄ7Kl,3 zy"},2`Քq[.X]TB钛5i~6sVn vEl(ONhffoV6n{2b_BoX`U}w`hPZc )&ARĎeE[׵d>9>V(dOh6aʂw Bum/Yf%Ԉ=L@XfȳҲ:*֛y#PX _}uZ]in)eƏA r4 Ewoz{epT'-=<#üM7/ي* B;vDf8?hoWL,BflՆX4sXK29fe,K)CΑOzZ^^;ܟ 2C㣮Н|A"3ᨚ_M!YfPt)_!fT.wl/Yf8,3tp"ocT}xH>7\ec)V^&Sxӌ8$'Yfy^3aZ;67eXLfPcɋ &2cUcF !3\ ʌ-^f"Ϻ觟69YsrC: KWU%<%?ߪV| ק )KAAKT;eO] g͕ADOԱ]fI!0eym6(6&u\s]f|+m2튴52C*vs%d`Yk@z lƧO1uBK2㺐暚ә̗ ֶE4\jˌW '_4+\lq:mFdL..`(D+r2{ qiKޖmhTTՑW,ܪVz4ȗ͔JNcG? XꫦpG8@`J 0lt״64vlqPҢ|SI%Pl/VfL̷FcAgϗMD%dXĬ^6mʳ6Zs p O=ENa1dLY Fy?Y#!fspafvꤳv2@3KBU2%Md{>'rYfܟQ(φ 2(]՗b%=̀ BÿF,3J،h_Jm hr3SefEw%:x6>^fh1Q`Jx.WNvh MHk" үJDPM<ޡ"l _lXKafuQ-4Nc ‹&H;.be3eQF۫#367\ 2C\_r4ij{mDžm+ nl~?(T>qC%aי̐=tsL4> ~Cc  ʌ ci,EQd1lȡ?«,3I}b<\imb\"-}+IG)I/gW׫X}eHg 6h##$') _e3fOl֫em*Q!/ɝod<{Kr2 ZćeA[1\h%V,>x?:$PdS(z0{rXRGRsFZvv''xH̺ bp_毨g4bڣ &`A'Rc{ud-Bo4ՔL>pVP'Z| 8 +Rﳙۭ&r?HR'_J!' UKKY;bX1!dN 66&]in^% p}s9ɫ_tw׆cZ<\}=deBpwEp5m oה؀5gvv˞ )z2!!7odF$Bwf] ~/T! ! -m_|G{u~5LhCx*d;F]군v"0d$m*sKoً Q#`%W+q,u4aLx(NsY俧6  hH"9+:lPB%6g nZL$Pᴗ"MT9pst:J#!K+W dF:5BUiTTf'Q}*}j[[1LN:k|1eD ˉ4 W6,q"+R\5磲Lk WHfI%355+C--!8SeiX,eQ].!mmKOJkr `?QNMgy %a@>A1U[P& DŽ/"IeYC]㻄TfoC1#|f#+He YCb#yXD񽱽KXr>XMUU J^ S^&;I[rgt)D:_+c-ΖbeJmg =&'wRhҠY&BH \M.$3u rm_Ƴp$yD1[L,PKeP|Ac(v 8EIHhg2uUTfh.-OKf@iG@o۞Ũ8D~ly+2r=ҝ yd᝿dNS$rKr#($*x\>&̠i7t;;_FU$KeuOϥ2kheEwdRb!!К򶆯KpMe`){3cǧT|Jc(r9یar@;6:*fzk{۝-S"l7Ti5CNAd\OJ4%6T $lӌ4ZʲY (l4 Ilf; t,,KYZ3cƑ-#1e$WL̨-ZTgr)iO(Kjf& bWm$*bp@ #faĚ+8dS?w{ ޅ>"p0I-3h'OԻH w,-W8>_ N;mzzgCK>̿~*h#(` (^tH]3uO1C~5`0Xf-3==a< \d?q[iZ^[QׅoeA\fWy&LJQ++a 2ۏ6WF/]]ՑSi㎞e5fԙ7̽eg-ݶuwS3MuuSfV}f~6d}X40R Qf AQ2#` uE*S4^dKK'VӬ A_9&''?ۍWQ%x4 JzcI%3 ct!vUS7͍Hm/+tQ3fWWb15iVy)rSi6>2[--Fj2eFq2XZNlijي ơa1t<>%a>Bd\]8*p XGo@fL޶i :2zMKn}4Oa@ߍS蹾ejCo︒22`LHQcXr/éyBMMS3]3q ch |hWWray2З2ck[./=8H#z(l߂ǒ|슊Z\EA]۽30: Pe MQc1[L} eLT[i^íPr\Uug < EK6Vg5E ;k;qSȅ2Vߨ_98kEE )(ǓxpeF :){J-rvvT7k8{0~P'ʖFN:p[d=\x_\B&3NjY6-~ۃx9T 7P8.NG+3Ų:CI ƅnjtwБ5v ]n)K:nӲyuה[Tw[ibig O5}hNk+VS퇒Ib~[۾dRan.Q qgJWW<>߿wvMڇk;b_ szد~Nf2/ߔ~" \4[c@E/{z:kk1,3*s NO Q:!IVpG۫!e Xj<2|TbʂFFdF_E9,8g~bEGʹ=Z4 b&  4K7m o p!+:`AԚ^4"42S\ȻH]Wr$0,]IP?.Toqخ<5= :KGJ/E^$U BJR6Fg@ztPj2c04HIԁ.xP\ FaũgkҞϞ퐣 ߻JJ=]Ȇ{-^JX]UۅG?Di{ndFߣskg1'=1B^e.:7R;ΐPLtȸ}Q*GH550U_=UN&3tsO }O(e9!1W[Wf \7]L %IJޮ4J~' ŀ1Rq0l"X֚k"3@Ay`=g062𑦔' x8M,r"`1#B9 9bɾ!J&PdY_*UgGtW:w@AvIVM ddԸ_AK0EP1;wpL:R5X 3͔Eg >O;:ɝѝ pAS8mFWA^jPbmvkF-i2&i7/ Hf|$ ?*VLڠ!]EO(Yj3xiD^}h)TA'PC_fushbDrɌg׎5sH?ho?Nx8"f,?]jj:JEs|nivBfJ 3%k~9랞|+:͊ZFځ!H_JBX*Uv>nh``̨,x$h+ҩea<|I]f($DAʵĿ9ԤZ/[;48򾯅 )c!0<݊[YM#NJq$yWW)M_ Ze YC:c0b; :TZ`{,5:2cb?!.c!*zvԷl4fMu8!$1-J\j.= "L4P,ߧÉWf|Fޤ_ 2V9w[#l9ʎlr&y)'3p>g!ՉҢoIRDgmfIݢ~<,$AWn H: '4J%Q-~`0طX'Kcf>T;%/,,וOv0GtvQIaYO1J*SyytPF#Ǔi/jXti֜OA)W LnWClS>䳴&F}7 !|v!%E9O1Z`2繏|4=3h{2Cwmrs(G+̨qyuͥT91u߾no{Su?6*]I#?X~$A'4؟U92c4f?j~,bj_K~MFdO;G:x73;v2YϤSCrɌnwC2C1I8?S"3@Y\}:r2ar;&2A.G]sL&S!{k{A{& vy!5EL ^889WCUQʶWAfYg5E @SWW49t[BfI${t1|]geX!ԋ#VO`EfdMD [,\1F/MS\jj !$i4%dƫR* *VhS̸[z!vFBPsNz2AߨK# "z1Zu ˌt8E<>QAAW0jʌ-N,.*t͚F^ v_?9y7TM"p'' \7t+jXA/7I,W0>;04Hjgˌޅ `)m)_גZ| ?و) o$$< ed!XS#20-X2Mny4n}qt\ YWW}mz<˩ Bf˲i7ت!.Rf|[ $hPDZ//Af\Scb0,3)34o4(~Yd4U{)3gyiٴJ\byq>IF5mEw[,>kZ.҅ 8X?Fabe?-3oձ}gt0h #RMe( ' U0+.U% JL'+,w7[Wp ʾ!+ !3d6ȧ5zx\qo$8eDfG/xPѫ$F x󮮈m!`0R ,34vʞ&",B_ћ+4!V'3 =ct).B a ۜmPt+l(MlU T(ۋ4ڧ?˶G+ 8uϕw旅͎fuTuٌO7b>(;0><eƵi >0 |eQk6_rvRs}l7b[Ȍ%T5kٌkm̈K~q ʌ7{51 ՗dFEGfG4T,BsUSf#` 0Pl I |Jk:k YMVoF e)i8+-7T.be|iJ>>||iDTBfEeӦx?:$PdS(z0{rXRGRsFZ17:hAru}$H̺ bp_毨g4bڣ &`A'Rc{ud-Bo4"2#bcN DdE }6sVsꞣkjRd*(ES(UYEf+RTHU-;IKܶW+ͧV:m ʌ7$w&ݶ6 8ÿtt==6wyW׋P`2)6 Z _]]oF%eoz{޾nc]ݿJag/i!l6v*u4Z%&2r2״1_SbTc}.{R2>2!!7odF$Bwf] ~/T! ! -m_|G{u~5LhCx*d;F]군v"0d$S A~ ~Rr 7@EaquK] Вx8hU:0X&i>E--NO:k|1eDTHBpe|pҫ7}Λ~|Kn>cޔ h_}] PdixŸ%׌45@:C0j:4Pv5$69E|+|-^$%d]\0 2nI9%wFw B+I+Vl8[++C)xsIIFf| "?x\s54=#dȵ~m|Jnx(qHRAJ ,i*m{  Ydp V i>_Ƴp$yD1[L,PKeP|Ac(v 8EIHhg2uUTfh.-OKf@iG@o۞Ũ8R쯧{{OwX j]oFd0~7ֿhn>H t|im{{gnK_\.3"6Pg‘ҦZ+0=SWmo/>b`0ƛ@l>eOuvf왂⃊Obl E6gQ8Lh'FGc>_Lomo;+ ! T2'Hu %]ۍrTiF-ve,n[n6CP BWvՋT~|Uj bkZ%{uE-@1֮Uウ-rgW|Zcc|R޴;gAjszjk]f2z)2u@[Q[;I;&.eٚ`0X|p]]q˵,3b_```0qOg2BNC52``2`0Japv,ݥN'? 22`0x&[ހB6 2cw[ɷ *Éè^uV`ŲJswvOw::76s'LCw(x 㺕 `0 e`0 ``0 `0,3 `0  `0 d2753jف\rJړ,>Ro {U5 {d ,3\3Pakx-BhuJ;`3/:$?ywtg|0w=τ:djZ7`Qh'OԻH w,-W8>_ N;mzzgCK>̿~*h#(` (^tH]'O~?`utL8!'4uO ˌˌCOolDw2('OjVg+VuunbnztE$&LJQ++a 2ۏ6WF/]]ՑSi㎞x+kls>{ϭݶuwՕyꠚ2>wS]% +`8|4BctzK$Zhe`11d2%3\\b=J5H6JԿtb5͚~n_n|2}xM%XG@p47OT2@2JmW1u~Ӎ܈tۖZ&tO"pyBfo/R{!Nj,7G\ojq:+}wmm+td^K:X̷>|@NyU(r4vpsa6|+jP c2ˌ|MePny=K]nf+l oR隉SHGSfC2 ȓ'\tނDvA*$S_G&`Kd<<+`WT ֪*2l ѝDfYHݟ.{_hnbT(3dꤢޚMcx-nT'{>?[YG-^꽵:F-nYydH'G.,}wFll%7ʡ!-_,-:8IF9<>/3ڝWt+WoMSj;\Yك:Q7 pҁ"o_|_O[\B&3NjY6-~ۃx9T 7P8.NG+3Ų:CI ƅnjt\tdƴeK~cZ*0ees5kB~EɌlnNk"}РyqfuO;;/55ˌZZSb1q E)%q=/5Os ?XW2`LF"4|n $J'd>j~S{c{w;k@-3C] BYȈ/P_lH(QK^DQd;X Aހf)Ԙ67HLs qjMT/~y)_]+9AvҁG'u+ $h'OͳuςґdK:I`<(;.@B|ҧ7Y"PZ) )ڲ z|kgf`sucDf.|)%ɂw?:N \1k`4PpNC6Į@`anoo YbկAգ`6D+Px]*e庢UH Ģ(b*h;(5nEWDhQi~1T N?9tMl/%Ȍfg3eљ*2urgth(+"x=tۭUlGWZf8ԲsQEIڮr[P8r7ɌO]TaGŊI4 %P-{O:-ë-U:Uj78.}U酺1%U9!f~uOżV/Ly#+MO ^]=#{%3j\i]s)QftZzCM"A§E@O˴QON8 R4O}}ꀶig|U9v,3 $!LA:8TaՕ5 pQ8c0 [+R|+W47Ihwk ,Z\m|dmbeƁ͹E9>V(dOh6aʂw Bum/Yf%Ԉ=L@ƹ̘ȌŔ޾p;cN|b_\jj:]]`+F{Fqũ 1Ief@w/P;ܛjR~o5e,/m0Vi˞S,/'34ɨ]n~?ߢzMEp(3^̠z:T[^uDiupuQ}Ҹ̸x \#\dAѱ |t""SܥJd!O\qWĭPYnPM?t~ fhnݶl~O+;.ˌQl6 2I3,1A,YfhR=uMf3DX7Wi BOf<zRvR\&[Ô#@.9۠WPq٪vQ+3h6 O' \iۗmlW"pV+!3vM[>f|TYG)1p,3*/3;7\0ijP{+>:$Bv/dNJ15Zũtv`0,3 M 2#3#Oflя!)3N0(D>%55mD&Z-ඃᠮ:TR T(ۋQ,*aX`Pf,mQ !1M̀\BcD/5\A|QSXfKf ]prh[~|eXfܲfa;Yf0 e T}thФ& D)Z`դyvep';Tው zy)l׬.EԜ٩1~LAx4]]c^̠p5|8h{udƦ&r+WBfY&5"MqQmHm壁GIS+#o㝃Soץ̨XB+3n}u'W֨X7_;4ױsyG 樝X2\#- y-y s.- 2x)Tڋ+)Bev zM:ju"\ ZFE_jf~tu*r8CkBf_4yi2Mvi^q&FgbwmS̘瞧FyeF6 jHWn{;"#1mU.#Kg 4q!mͲl"EvK&g`0Xfaf88BrB U6koZfjFv(ı!箚P5H|]?Å _2ZaUrߌ)JR KV =E"W'%utQ>*18[hX `hwrY~Fe%N }2E= m4yؾȷP=R۫#3h)z^%D11{'a}">9suQ5a5Y)2" B l "3) *$_ ݋ąd9qG_O&:=VVBf9n!BDUny7ҿwvbS&_Wm',2ie`Qӻ"67kJl@޿V` ce}C ZFG]\Q#$dY^F  9ވXN r+僊!==5! Ez.rٟomo@}l9ڨKn` ZL#}_62o_Z@aޑ( 5:n ZrO͢jQG$GP4E{jC`{D/i!"C,f %4QB/jxxf{ඨ%D@N{)D% 9GG>xE@fX#XEFEe}ߧҧ吻e'w5r2bho)t W6,tJ=ފ@Vx2R@E/%͠ޒ4^oћc`0,3>b >+ @AB֐@6q|olz)<VuUp>R.ȔW'Ŏ@Җ)h W$JbRX\ L NMDX[(v 㚫Ʌy!Dn森VrCC RJfMPiKO" [ȷRH%Ҩ6##bbZ*?{CQE-JBBS?˕2.@ӈ_tiy\2J=>:'d~+,Fezi28em7[+O 6ev8ӿiWțe`El>eOuvf왂⃊Obl E6gQ8Lh'FGc>_Lomo;+ ! T2'Hu %]ۍrTiF-ve,n[n6CP BWvՋT~|Uj bkZ%{ur}cƑ-#]YeBwvlO[~fT暚&n^5W`0׿`:[2 cʌje```0,3Xf0 ,3Xf0 DHimH:z-Ew7 22`0*"3t0^jZ2`\?2cw[ɷ *Éè^uV`mkSױճnMNd`0 ``0 `0,3 `0  `0 2`0 `0&st͌ڢEpv v }eU/VIž/vvMb/j&@FҎ3L6ŋoO~n7}i=Zt,p[Kܼlw#`1w'n]C;MYT+N/'[̶W Q%O__F4p/:ٮٓ#HnQR|=__ `y ˌeӡGS;gA'n{5MՋ+j:m7l7z[="*60!jxEp8Af{U<E+:2c= St׿lcV w߲W޶iԙɚʌg4Nxn먭e`0Xf"3d|("U@AQ¥iנ{vrןƫh(<1~1d Uh*ȌnF۶uiMǗӕrʑGTHY=H{qJKOd~?LEeFnzҸc e$UZtdXM7wTV\0em/syk) SY|. BVDf:z]2czM`Бw{odp貋n_wI=7\^7b}}Df%'d>SW细=m)3x6G"1,xWR2=.`0&̨1y,sY2n;EWUGf8L [/'vSqK[iӱPm#/-)Yf]^\5u'ɜO|їK6!׻w+G0%t #,cPƢdTQV`=WHfLq[^[D"+GJ}qK.1'sÕ 8u@_Kx4yN񋿭&G 4̿`bH삂2c ĩ?kl\6jkON3b0Tf<{h.xR/5\Gr7ov8;Y@eSxLLB=2ڕ\@ =9/̘E.{=$KK&R!:J0A[ 15_bf@VW!d`pPGotv$*t6svGtB-ssBpSXS_<=B'S'hkp+נz?|t?jtR Y|Ml7hp{ 3@:a>re7*gkd+9W%nZdoѱ1HJ4}l_i~kʞRݱ(͚ԉeQFxzj{Yৡ̷o+Z ~G6{B%5F T2 6ʌimPҹo<=2q۟=i'tdtm޺m>NᚚLYJuǽHfDQT8?WDپJiA\&UO.ㆆCt\r~(鿻L$6b0Sf' [p| O߀;^)cPˌ1Ǡ5|FP52"3-aD<+.?|dniפ)Dcwt7Fn0H7Y<5t<<2r\09}ZՋFFyyyJN9cFt q@: Jmt4ٺgAgHi2KC$~\}JWQWhSSBZ,^^ZJ-ԔZf ##:0!è=8>6uTrTa;{nE]E6kWWj@蚮.Ҕd;OYY5fpD0Z@(8SbW g]0`777P ,KKE_cQg0"(<.iѲr]Ѫ $bQuL1b+~"h c~_*Y'ɜQGj&dFLayG?:3S4njhv?=tdXy6Wf˦MJ25t-E*E}`0,3J"),_GeBB\KKȝCMz(uZC!5vKӱĐ|Hnŭ&'8<㫂Ѧ^I5wC֐>Nxyk3,g 8V,$ ipp8wvFf35"tWEf|1v <qGx:=;r,c_ݳrW{t8% >X*Kƿwv rDͅFfQ c\ˌž?]0ڕwy`9ew /O} >3hؤlz%<<:DH4x\TN^x:4 ik' ͊ǫm{UdX& ʌIhs)yl{YZ\wh>;xϐǢ'Y|^s\} יq F֭-^cvj c18 ;ٌ4̝L&ɽ;7sg2ejOtUTRK}Ԣԩ-rcyd!3ܜ#mi`){xdS;{2ʌ>׈xJ#\YH$d탡P6[H2m}($ay 3roG}t9Wd@ `QmI8=Uc"3@> I 5G]4L̸\)?" Ny!5Ekk//jX?_s@`"ʶWAfY3~dz~ l Ӫ5WYZ-:䖦 a6n2u7}YgeoӒ ̱Ȍ/3^M 9uN8j$sd~?2"3>J:L23>ookDDTMf\s 3`g ( ĉ JvVSfDQ`w~ Kn嵠,Hm'ɳiW䄶1qg~AҨqۋ{zCDW99uv̘G9 @%de[7d>9BQ1 Ap͋x(vvB{:㶗,3?X5"3| (dˌ{ZBlO5ިoJ}f©UYx<'e.Fd'ԣ2CrKXېE5ey=J}}7uP`2C3;FEfY5i~o5e,/c6EiKSdTݑ䏮k~?_Јu.4_BEeqۋ`SϼU]]-̀:"մ&1i\f\N_6HikF>YfPv-I,.\R^yka&稡 ෝ\5%ߓWf~&I UkΖvُW#&È~R*_72#jD*䌮8N-V c ͔dIMd6C+2Hbu|2㩺tl.eRH;-D,/=ꀢG^a\7M4gJE^̠ 0>/qm__#CѶWfY=WBf/6_02^9\J蕐b.GfTm9bTri`)pJreDQ~v܃Y}<ޑs OrBYL(djֹȑk"36׋]Vke](Nh~('d,`k~bxG*bKrPsx,[)3Wg}MPZFE/5_R3s$0]:ŏiF LP.6Xjhs b7B{%66~Y<_/顮bm'<[,E+̣yՖC*JtW* PL2B#34I>CkBf/2#etNFU41r>uitM2cvlaH+5#Bu3Zbǣ~k{+21y^Vf|Up?63r(ʌy>~Qs ;:6U[N(Gy2$bEp8v"=ɲU6mh||2 @T!ssT(Ѭs<+h w8b|AKRK_Xճh(=vmTPttQx0{rXRgᣳR36W}!Vh܋ʊNN>U\#uu Dp_g\T &W0}!)ձ:2B0*Ɍ\1ŴOP'@p@Vgg5˭lB GlTP ASqkVyJU?e :$_ Rz5m8+Mvkd;33inxW==c45Ys\h\^PmiZrED]랞x]=8Qc`̸62ޕ״) oSbrZm*ւ1is.uTS -hEOagBϼ}6($C7A,d'xhіBE|H&$wbV93D66>K}FR:C''i h(Tm:ņq8KoًAΨ[-Zk:Eݢ& Ipz;;h.ԆTb Q$7B4tEÀZu Jh1_qb6Ϣ::j)D%..-u$d}%}E. 32xla VҨ̀9bLd)m9nYdp"qB~A]C-cPf@TrFy^s'&Hk Fe%3JND/cK}N3 3NYksbFuuM5ȭkXWl1Glo\t3 ƵxP0`y+L @D!Ȕ{ _ p|mtAM\)*q{|Wd)D:_w('EvX* l[a;B A 9G5iao,!2hr!iV /vyw顃 RJfMUZ%@x7 f [)|iTah70 T584o{~;S']EemK#n^1剣r (m@8V,FeF~d8[wu w@oEɌ!t/k%3RS/e&񗾾1L_(p:gr c 4M]#Y^P*U|,GWÈf'Xoڙ竀ɸ3΢~YQ3DnLY t2'H} %y/ U* 43fܬ?[n61Ilz|Uz bgZ?%0z1mEC`xt&aLk;LvF="SCS] {Js_e2\ r~Y?a0ׇ`:  aΆ׉o[C1 Ta0 ,3 bYO\l.?,&줾uOO-O0 ,3+ #I_ X+ls<`2e`Ȱ!>'jV1Ӧ9yڇ`g1;h| *CC^uV`xbm{$zYy w0 x `0 e`0 ``0 `0,3 `0  `0 dF>}{qCa/q>ڥ^1G Gvw߄#f =![h=LG4> rg;`7:4^sy>=x\x-9joH ˌjG(j>=zxO. } N'N㈃u7my{ϧCK1Ŀ4p yk8h?66RK1v2ȌuwwP_2(k5ѥiw{oEm`]_DCc$ zxep87cX*rkcHʌ)Ф'|t7߱ɫ$t7YwOO8M3/>2yawOldzhpb2j7;Rh68+-3>=\CCwez`[8Ȕ`q '?.JflY5Њ* 8ץY\~0;./Ll7EGG>4PgT2ct?vU$q*$3:mw{w6WZ MN8T-6L^)׉mjmUPvt49}gjs68C(55TϿvu)zL*U .Tߵ1c0Xf2XWw:qn__fotvA]`ʌ^>}3L2g]hy獷Id'u-3&>DT_|λg&/2ZxnZ5YQqe/͹ғVzv-2yqWYNb:Mif?fs12Vf{_twӖ}XVkՔxѮ pay웾2cg]n>T./>;@' FA8+ :xEx4~TW43 [}087z=" M}%N v_l߹9l)zѮ);f& L?~餢Z-cf7S8slU񳹵s1`(o:nN5Evy ι,cw\aո-p|WdoQHJ\cc82 qE%}~[ö&GZi܃zmXtl(Ino Ow{ջ š)Z ~Kh|~ : ݅qKj[d,ڠ#lSS}f#R6ٕWjJ282;pӞf-&&/]t:&zHg7=HgS)Z8P%#Tx2.QKDT_s:;zvF"\l}$6s<۱|l2 ** iB/}}10PG/?S&--j_ Q⣡!Ö́#^4 C  hyShm-g^4〝f'D"ҡي{Jn9cF?_ t + $vlj]\s`ᠳ433;H5Aٱz}w*qJH|s;/5Dk@R<:(PSj1X7Hp4q]>2Ūii4Ng{>uC*ly@ˎ"zWWj<@hnw7na40ڬYeΉDMg315>RLqȌW-|$}=wD5~-77rOG8'xEtN"nYsv* XcW*_\s29m"vG9$T/M'.6poDñ DOZR:&H-6^ "3xM9wmqEf];3>nb07xw 2c403dG s:A vrEٱ1@bbWDZk_B_l˕+p Uĕ&@EQ32TvPj6Ak0Eŧb33LMbQhu.:SXŎy1O6%.nh pbmmQjGGZfre1_Wc!֎Z.Șx_:K@2lUѱbB1Tqu薤#; ÕBWPye 8G=lpɫhSNWOO ȁY.> #2XLlz4O}G<[)TyeK--W#뾾^eWI KQ,3\fq .KxEf?M d2C!! RΡ&=B~:x-B3Z8y(٣)v"qbIi4cjr\_I84lu:߰avH9St>b!dkn{udƾ>lB\1/ JMhY: R]loGV`q]p2o4AIbns{x;y4>]F "L\ޑߧ bƏ̘ ۾2nz~T>beA"A,W9񗾾=ѨK0"3K X"A%ǿI)d% &-vb]Ы"f_#nKzlk8{\U?VaEf`0n .yr]f|D피KkkտFc@!3D{P*<`6?\0\izʍYgewψrs(&OYJKi^vk駆6LIOtFnE s$eI %3p2juy&d]]GHؓ;r2#jS gRxd> udL.Mfm6ѽ9q 'L:;Xޥӧê+'3f'k'# 4#q<{:,3DP/~ȗ ̱Ȍ΅FOmcHc,wYfPv-I,.\R^yǧ̘qL=4Ƥ&i'_G(&Xr!X(Z@ʌRc3|ndFfa皛#v.;{=f/VPCf`0nR ,34vf<|EWi BNOfu2"Y6mEBcD/5_A|Q),3 h3ᓵp-CM:\ K[[U&# c ʌ7n8od^&+e4#CkBf/2#etDNFU41r>uitM2cvlaH+5#`݌넣K5Fɒ|&>Hu3fH՗$Ǐ:;Ū㉄>OLXo97且o7_k"3mߖKL&զR=.4l1~&xWS#T @WO۰ZH8gqR3[f_l(ؠPd48Y6fooZfPa5P 9$ww*x<;u*hrmACR /(|@j zC ގ-JCV{.fOK |tVjj/ H;u''xHf](+@1hC `||BDJul̠P(F##J2#WD1Sk=;$>+(*+>)Yr+[P5a3(3~FEeTڰU-ROYd"ɗ1it(þ}ߢ.=5E}"ܢ@._Dzs٥Dɴi& ͣȟs6z l^ͣmjz\ |u$n# GS=ߊ-o;iWPawp`Ec \^R} TuB`.8=HDeU*$78sAƔx $MMxoSaOss'?bhA(Hh| <z[18DA'r ?b!;C3ȍ*Czݽ5! }KԵ g_l&1Y3pP:av@?8IK@Gjԙ/6_ u ǰ|D^ ]\uFlhՊ~X1,u6aLxAsY俧6  hH"+إժSPB%6{ ~DL $TK&*q9p h t#!K++rc S~FEec'O%NQo)w"3j9߇#2d:_&[.vقf&31ǃ/}}WZ[ 8&GYAś>kֈn `Ekqi4K 柋(Vf$O-Flv`2Kd:{PAmRbMK;(sDQaf07 ՒnƟJt晦!_5;Jfh9FЛL;:43z=|v\2hs9f\niQQ,!3a`0n&|ݕt$ Ջ*^o(puՁvM;|3wU\i*EaN3e> Q-@i$6T $l4ZsplQh~BPlv6' pX^U%jŘ3cҙ-312Y=ڧKNA-tB6DvGRo^=rl!r;^.%p@C&U[\.1r`2Qv&d0 Ƹs{Yl%<-sLk}($ `c0Xf0Xf0 MܷK--7#9Y=wY,r.eTiA xc0Xf0Xf0 Mgr!x|Ojiy?I.-ڬe9D1r~   yp:oo>\Cß4_r$r6 ݋`c0nX1;h| *CC^uV`0!Z\7cooYW/ko1s  `0 2`0 ``0 `0,3 `0  `0 `}4PgT2ct?vU$q*$3:mw{w6WZw=X4O'Ӧ*¬Z:l6fvW==W (vthnnSz#2<.im据ZO&*}ɦ~Y}}qC3 ,3#խNץ;F]vW;62cdsߩ) SY}/`yyo v]ˌ߹٩K&lD3V.l\0ipfk(3 < ]fSqf v`X"8U&|:ͅ Յ\k=pX.k Y![h(=d:^,3n/Bؾзd*6j ={L _Z\{}aPbCE6k x6n8i`Y5&3ROlF&qWEZ+3ol}1D~tP ycܡd%HN:|wO2cvoҷv̘Uaz~Me-x:2ㅜ'җ \Hߵ ((gSȌik  nWiC!TI22 ?]$)yy`9x] A,;ULwQ+1L##&ggџ+L=gΦH5M%X}<.N^X_>ik'Ί)W L4.ܮ+3Url{YZ1|潃 y(Z>nlps)7gAK{=#9ܖǛKf9BQ1 Ap͋x(vvB{:㶗,3?X5"3| ( 2cWc|3yb3$iXNfȅZR'Q`Xئֵ"k/f22C3,1A,YfhR&G5iy. @X$*x)eKyN d .47\pu@#lcU%Pl/VflhN˗Ҷ//ޡh+3Db+!3y:5wf|B"泎vGG5= LxyVc|kXxO8ZP.a0Ӕ 3R@s vnm4C ~'NG{4}O 8L[ϐ%(qYeF^4`;3 c0XfTVfhgPE^A/|2csFE?JX髦̨p@6$%`$)ٮdi;l$2d3kMjs.RPuvQ+3䫧Q,*aX`Pf󥕉Ais (j# B勊NaQ@cD}YM5->26LƝ(AfUhT̐SiGe|z2㈜J4Nw`0XfYfhD`̔Rvwn+C;4e&}Ȃ(Is ![h(=TKafwQ=4.ǔM&H;.be|Q?8h{udfr+WBfKKԻkdY3S "Qʥ$)ɕEARf:j4F"1>X l߹s5wToƎo<ޑs%3Db!8HDnRzܒeHLч@ao}}"-+-bqi;bNP)3K?]^f22ckV*TTŖX<·^SfZf:T 4 _jf~IH`:9uӌf'3@G]0mY.`n8{ GbSh5O˚(g,Z-Efͫ<:VQjWAfbb]a6(|ugrmR QE3ZƝޙ}pi^&FΧբ:)Yf̮SU2#lyf1aptiVc7.DGJȨN^Ck_@Dn%uJ&KcU11 P̐a,Zlߖ&Ό.g!먟vuzq9-ȉ?QK}K#)=9`0XfTZf_l(ؠPd48Y6fooZfPa5P 9$ww*x<;u2hrmACR /(|@j zC ގ-JCV{.fOK |tVjj/ H;u''x.:̺ "P/W3.bcцN+ꉔ^APVLf䊙(}j-bgE>q">" :Fƒlnn-xi&tQ鄏]ftJ1.iy0~s7mosX+36I*⥰F_jF 2n3(B]N?{ܣ@M|=:La 4 _'3`QQWJkڄ)~6k49:qc)vMpͧOѰ3gފECt! H<4hK{y">K\Bh{x;wlD]pa"@Ci>#i ucaf̡ DO}AbË8Pr 7@ɠUg-v\g5͢nQg$GAA84E{jC`{(i!a@JU&J%Pm_/,F/n,z*Hé"MTrA(QGBWW2#` #$NJޖSEf''g5r1FdjuhĞM8\ޘO֌bK3έ%[>52HD'p\?\R"Ox 2X ~'z` (tSQy)CѠ1zf22/xp" 1c{)Ahw:[(r 6|o^k3S6mup5^xR.ȔW7EE'"{|Wd)D:_w(o6W[2cUpضv3orMk < v0.2.0 is a minor release. hugo-0.131.0/docs/content/en/troubleshooting/faq.md000066400000000000000000000151601465312036400221510ustar00rootroot00000000000000--- title: Frequently asked questions linkTitle: FAQs description: These questions are frequently asked by new users. categories: [troubleshooting] keywords: [faq] menu: docs: parent: troubleshooting weight: 70 weight: 70 # Use level 6 headings for each question. --- Hugo’s [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. These are just a few of the questions most frequently asked by new users. ###### An error message indicates that a feature is not available. Why? Hugo is available in two editions: standard and extended. With the extended edition you can (a) encode to the WebP format when processing images, and (b) transpile Sass to CSS using the embedded LibSass transpiler. The extended edition is not required to use the Dart Sass transpiler. When you attempt to perform either of the operations above with the standard edition, Hugo throws this error: ```go-html-template Error: this feature is not available in your current Hugo version ``` To resolve, uninstall the standard edition, then install the extended edition. See the [installation] section for details. ###### Why do I see "Page Not Found" when visiting the home page? In the content/_index.md file: - Is `draft` set to `true`? - Is the `date` in the future? - Is the `publishDate` in the future? - Is the `expiryDate` in the past? If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`. ###### Why is a given page not published? In the content/section/page.md file, or in the content/section/page/index.md file: - Is `draft` set to `true`? - Is the `date` in the future? - Is the `publishDate` in the future? - Is the `expiryDate` in the past? If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`. ###### Why can't I see any of a page's descendants? You may have an index.md file instead of an _index.md file. See [details](/content-management/page-bundles/). ###### What is the difference between an index.md file and an _index.md file? A directory with an index.md file is a [leaf bundle]. A directory with an _index.md file is a [branch bundle]. See [details](/content-management/page-bundles/). [branch bundle]: /getting-started/glossary/#branch-bundle [leaf bundle]: /getting-started/glossary/#leaf-bundle ###### Why is my partial template not rendered as expected? {#foo} You may have neglected to pass the required [context] when calling the partial. For example: ```go-html-template {{/* incorrect */}} {{ partial "_internal/pagination.html" }} {{/* correct */}} {{ partial "_internal/pagination.html" . }} ``` ###### In a template, what's the difference between `:=` and `=` when assigning values to variables? Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. See [details](https://pkg.go.dev/text/template#hdr-Variables). ###### When I paginate a list page, why is the page collection not filtered as specified? You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See [details](/templates/pagination/#list-paginator-pages). ###### Why are there two ways to call a shortcode? Use the `{{%/* shortcode */%}}` notation if the shortcode template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the\ `{{}}` notation. See [details](/content-management/shortcodes/). ###### Can I use environment variables to control configuration? Yes. See [details](/getting-started/configuration/#configure-with-environment-variables). ###### Why am I seeing inconsistent output from one build to the next? The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the `--printPathWarnings` command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems. ###### Why isn't Hugo's development server detecting file changes? In its default configuration, Hugo's file watcher may not be able detect file changes when: - Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition - Running Hugo locally with project files on a removable drive - Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols In these cases, instead of monitoring native file system events, use the `--poll` command line flag. For example, to poll the project files every 700 milliseconds, use `--poll 700ms`. ###### Why is my page Scratch or Store missing a value? The [`Scratch`] and [`Store`] methods on a `Page` object allow you to create a [scratch pad] on the given page to store and manipulate data. Values are often set within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are not determinate until Hugo renders the page content. [scratch pad]: /getting-started/glossary/#scratch-pad If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop] variable: [noop]: /getting-started/glossary/#noop ```go-html-template {{ $noop := .Content }} {{ .Store.Get "mykey" }} ``` You can trigger content rendering with other methods as well. See next FAQ. [`Scratch`]: /methods/page/scratch [`Store`]: /methods/page/store ###### Which page methods trigger content rendering? The following methods on a `Page` object trigger content rendering: `Content`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount`. {{% note %}} For other questions please visit the [forum]. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question. [forum]: https://discourse.gohugo.io [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 {{% /note %}} [`Paginate`]: /methods/page/paginate/ [`Paginator`]: /methods/page/paginator/ [context]: /getting-started/glossary/#context [forum]: https://discourse.gohugo.io [installation]: /installation/ [requesting help]: https://discourse.gohugo.io/t/requesting-help/9132 hugo-0.131.0/docs/content/en/troubleshooting/inspection.md000066400000000000000000000017331465312036400235560ustar00rootroot00000000000000--- title: Data inspection linkTitle: Inspection description: Use template functions to inspect values and data structures. categories: [troubleshooting] keywords: [] menu: docs: parent: troubleshooting weight: 40 weight: 40 --- Use the [`debug.Dump`] function to inspect a data structure: ```go-html-template
        {{ debug.Dump .Params }}
        ``` ```text { "date": "2023-11-10T15:10:42-08:00", "draft": false, "iscjklanguage": false, "lastmod": "2023-11-10T15:10:42-08:00", "publishdate": "2023-11-10T15:10:42-08:00", "tags": [ "foo", "bar" ], "title": "My first post" } ``` Use the [`printf`] function (render) or [`warnf`] function (log to console) to inspect simple data structures. The layout string below displays both value and data type. ```go-html-template {{ $value := 42 }} {{ printf "%[1]v (%[1]T)" $value }} → 42 (int) ``` [`debug.Dump`]: /functions/debug/dump/ [`printf`]: /functions/fmt/printf/ [`warnf`]: /functions/fmt/warnf/ hugo-0.131.0/docs/content/en/troubleshooting/logging.md000066400000000000000000000026631465312036400230340ustar00rootroot00000000000000--- title: Logging description: Enable logging to inspect events while building your site. categories: [troubleshooting] keywords: [] menu: docs: parent: troubleshooting weight: 30 weight: 30 toc: true --- ## Command line Enable console logging with the `--logLevel` command line flag. Hugo has four logging levels: error : Display error messages only. ```sh hugo --logLevel error ``` warn : Display warning and error messages. ```sh hugo --logLevel warn ``` info : Display information, warning, and error messages. ```sh hugo --logLevel info ``` debug : Display debug, information, warning, and error messages. ```sh hugo --logLevel debug ``` {{% note %}} If you do not specify a logging level with the `--logLevel` flag, warnings and errors are always displayed. {{% /note %}} ## Template functions You can also use template functions to print warnings or errors to the console. These functions are typically used to report data validation errors, missing files, etc. {{< list-pages-in-section path=/functions/fmt filter=functions_fmt_logging filterType=include >}} ## LiveReload To log Hugo's LiveReload requests in your browser, add this query string to the URL when running Hugo's development server: ```text debug=LR-verbose ``` For example: ```text http://localhost:1313/?debug=LR-verbose ``` Then monitor the reload requests in your browser's dev tools console. Make sure the dev tools "preserve log" option is enabled. hugo-0.131.0/docs/content/en/troubleshooting/performance.md000066400000000000000000000136661465312036400237140ustar00rootroot00000000000000--- title: Performance description: Tools and suggestions for evaluating and improving performance. categories: [troubleshooting] keywords: [] menu: docs: parent: troubleshooting weight: 60 weight: 60 toc: true aliases: [/troubleshooting/build-performance/] --- ## Virus scanning Virus scanners are an essential component of system protection, but the performance impact can be severe for applications like Hugo that frequently read and write to disk. For example, with Microsoft Defender Antivirus, build times for some sites may increase by 400% or more. Before building a site, your virus scanner has already evaluated the files in your project directory. Scanning them again while building the site is superfluous. To improve performance, add Hugo's executable to your virus scanner's process exclusion list. For example, with Microsoft Defender Antivirus: **Start** > **Settings** > **Privacy & security** > **Windows Security** > **Open Windows Security** > **Virus & threat protection** > **Manage settings** > **Add or remove exclusions** > **Add an exclusion** > **Process** Then type `hugo.exe` add press the **Add** button. {{% note %}} Virus scanning exclusions are common, but use caution when changing these settings. See the [Microsoft Defender Antivirus documentation](https://support.microsoft.com/en-us/topic/how-to-add-a-file-type-or-process-exclusion-to-windows-security-e524cbc2-3975-63c2-f9d1-7c2eb5331e53) for details. {{% /note %}} Other virus scanners have similar exclusion mechanisms. See their respective documentation. ## Template metrics Hugo is fast, but inefficient templates impede performance. Enable template metrics to determine which templates take the most time, and to identify caching opportunities: ```sh hugo --templateMetrics --templateMetricsHints ``` The result will look something like this: ```text Template Metrics: cumulative average maximum cache percent cached total duration duration duration potential cached count count template ---------- -------- -------- --------- ------- ------ ----- -------- 36.037476822s 135.990478ms 225.765245ms 11 0 0 265 partials/head.html 35.920040902s 164.018451ms 233.475072ms 0 0 0 219 articles/single.html 34.163268129s 128.917992ms 224.816751ms 23 0 0 265 partials/head/meta/opengraph.html 1.041227437s 3.92916ms 186.303376ms 47 0 0 265 partials/head/meta/schema.html 805.628827ms 27.780304ms 114.678523ms 0 0 0 29 _default/list.html 624.08354ms 15.221549ms 108.420729ms 8 0 0 41 partials/utilities/render-page-collection.html 545.968801ms 775.523µs 105.045775ms 0 0 0 704 _default/summary.html 334.680981ms 1.262947ms 127.412027ms 100 0 0 265 partials/head/js.html 272.763205ms 2.050851ms 24.371757ms 0 0 0 133 _default/_markup/render-codeblock.html 230.490038ms 8.865001ms 177.4615ms 0 0 0 26 shortcodes/template.html 176.921913ms 176.921913ms 176.921913ms 0 0 0 1 examples.tmpl 163.951469ms 14.904679ms 70.267953ms 0 0 0 11 articles/list.html 153.07021ms 577.623µs 73.593597ms 100 0 0 265 partials/head/init.html 150.910984ms 150.910984ms 150.910984ms 0 0 0 1 _default/single.html 146.785804ms 146.785804ms 146.785804ms 0 0 0 1 _default/contact.html 115.364617ms 115.364617ms 115.364617ms 0 0 0 1 authors/term.html 87.392071ms 329.781µs 10.687132ms 100 0 0 265 partials/head/css.html 86.803122ms 86.803122ms 86.803122ms 0 0 0 1 _default/home.html ``` From left to right, the columns represent: cumulative duration : The cumulative time spent executing the template. average duration : The average time spent executing the template. maximum duration : The maximum time spent executing the template. cache potential : Displayed as a percentage, any partial template with a 100% cache potential should be called with the [`partialCached`] function instead of the [`partial`] function. See the [caching](#caching) section below. percent cached : The number of times the rendered templated was cached divided by the number of times the template was executed. cached count : The number of times the rendered templated was cached. total count : The number of times the template was executed. template : The path to the template, relative to the layouts directory. [`partial`]: /functions/partials/include/ [`partialCached`]: /functions/partials/includecached/ {{% note %}} Hugo builds pages in parallel where multiple pages are generated simultaneously. Because of this parallelism, the sum of "cumulative duration" values is usually greater than the actual time it takes to build a site. {{% /note %}} ## Caching Some partial templates such as sidebars or menus are executed many times during a site build. Depending on the content within the partial template and the desired output, the template may benefit from caching to reduce the number of executions. The [`partialCached`] template function provides caching capabilities for partial templates. {{% note %}} Note that you can create cached variants of each partial by passing additional arguments to `partialCached` beyond the initial context. See the `partialCached` documentation for more details. {{% /note %}} ## Timers Use the `debug.Timer` function to determine execution time for a block of code, useful for finding performance bottle necks in templates. See [details](/functions/debug/timer/). hugo-0.131.0/docs/data/000077500000000000000000000000001465312036400144635ustar00rootroot00000000000000hugo-0.131.0/docs/data/articles.toml000066400000000000000000000545551465312036400172040ustar00rootroot00000000000000[[article]] title = "A visit to the Workshop: Hugo/Unix/Vim integration" url = "https://blog.afoolishmanifesto.com/posts/hugo-unix-vim-integration/" author = "fREW Schmidt" date = "2017-07-22" [[article]] title = "Hugo Easy Gallery - Automagical PhotoSwipe image gallery with a one-line shortcode" url = "https://www.liwen.id.au/heg/" author = "Li-Wen Yip" date = "2017-03-25" [[article]] title = "Automagical Image Gallery in Hugo with PhotoSwipe and jQuery" url = "https://www.liwen.id.au/photoswipe/" author = "Li-Wen Yip" date = "2017-03-04" [[article]] title = "Adding Isso Comments to Hugo" url = "https://stiobhart.net/2017-02-24-isso-comments/" author = "Stíobhart Matulevicz" date = "2017-02-24" [[article]] title = "Hugo Tutorial: How to Build & Host a (Very Fast) Static E-Commerce Site" url = "https://snipcart.com/blog/hugo-tutorial-static-site-ecommerce" author = "Snipcart" date = "2017-02-23" [[article]] title = "How to Password Protect a Hugo Site" url = "https://www.aerobatic.com/blog/password-protect-a-hugo-site/" author = "Aerobatic" date = "2017-02-19" [[article]] title = "Switching from WordPress to Hugo" url = "http://schnuddelhuddel.de/switching-from-wordpress-to-hugo/" author = "Mario Martelli" date = "2017-02-19" [[article]] title = "Zero to HTTP/2 with AWS and Hugo" url = "https://habd.as/zero-to-http-2-aws-hugo/" author = "Josh Habdas" date = "2017-02-16" [[article]] title = "Deploy a Hugo site to Aerobatic with CircleCI" url = "https://www.aerobatic.com/blog/hugo-github-circleci/" author = "Aerobatic" date = "2017-02-14" [[article]] title = "NPM scripts for building and deploying Hugo site" url = "https://www.aerobatic.com/blog/hugo-npm-buildtool-setup/" author = "Aerobatic" date = "2017-02-12" [[article]] title = "Getting started with Hugo and the plain-blog theme, on NearlyFreeSpeech.Net" url = "https://www.penwatch.net/cms/get_started_plain_blog/" author = "Li-aung “Lewis” Yip" date = "2017-02-12" [[article]] title = "Choose Hugo over Jekyll" url = "https://habd.as/choose-hugo-over-jekyll/" author = "Josh Habdas" date = "2017-02-10" [[article]] title = "Build a Hugo site using Cloud9 IDE and host on App Engine" url = "https://loyall.ch/lab/2017/01/build-a-static-website-with-cloud9-hugo-and-app-engine/" author = "Pascal Aubort" date = "2017-02-05" [[article]] title = "Hugo Continuous Deployment with Bitbucket Pipelines and Aerobatic" url = "https://www.aerobatic.com/blog/hugo-bitbucket-pipelines/" author = "Aerobatic" date = "2017-02-04" [[article]] title = "How to use Firebase to host a Hugo site" url = "https://code.selfmadefighter.com/post/static-site-firebase/" author = "Andrew Cuga" date= "2017-02-04" [[article]] title = "A publishing workflow for teams using static site generators" url = "https://www.keybits.net/post/publishing-workflow-for-teams-using-static-site-generators/" author = "Tom Atkins" date = "2017-01-02" [[article]] title = "How To Dynamically Use Google Fonts In A Hugo Website" url = "https://stoned.io/web-development/hugo/How-To-Dynamically-Use-Google-Fonts-In-A-Hugo-Website/" author = "Hash Borgir" date = "2016-10-27" [[article]] title = "Embedding Facebook In A Hugo Template" url = "https://stoned.io/web-development/hugo/Embedding-Facebook-In-A-Hugo-Template/" author = "Hash Borgir" date = "2016-10-22" [[article]] title = "通过 Gitlab-cl 将 Hugo blog 自动部署至 GitHub (Chinese, Continuous integration)" url = "https://zetaoyang.github.io/post/2016/10/17/gitlab-cl.html" author = "Zetao Yang" date = "2016-10-17" [[article]] title = "A Step-by-Step Guide: Hugo on Netlify" url = "https://www.netlify.com/blog/2016/09/21/a-step-by-step-guide-hugo-on-netlify/" author = "Eli Williamson" date = "2016-09-21" [[article]] title = "Building our site: From Django & WordPress to a static generator (Part I)" url = "https://tryolabs.com/blog/2016/09/20/building-our-site-django-wordpress-to-static-part-i/" author = "Alan Descoins" date = "2016-09-20" [[article]] title = "Webseitenmaschine - Statische Websites mit Hugo erzeugen (German, $)" url = "http://www.heise.de/ct/ausgabe/2016-12-Statische-Websites-mit-Hugo-erzeugen-3211704.html" author = "Christian Helmbold" date = "2016-05-27" [[article]] title = "Cómo hacer sitios web estáticos con Hugo y Go - Platzi (Video tutorial)" url = "https://www.youtube.com/watch?v=qaXXpdiCHXE" author = "Verónica López" date = "2016-04-06" [[article]] title = "CDNOverview: A CDN comparison site made with Hugo" url = "https://www.cloakfusion.com/cdnoverview-cdn-comparison-site-made-hugo/" author = "Thijs de Zoete" date = "2016-02-23" [[article]] title = "Hugo: A Modern Website Engine That Just Works" url = "https://github.com/shekhargulati/52-technologies-in-2016/blob/master/07-hugo/README.md" author = "Shekhar Gulati" date = "2016-02-14" [[article]] title = "Minify Hugo Generated HTML" url = "http://ratson.name/blog/minify-hugo-generated-html/" author = "Ratson" date = "2016-02-02" [[article]] title = "HugoのデプロイをWerckerからCircle CIに変更した - log" url = "http://log.deprode.net/logs/2016-01-17/" author = "Deprode" date = "2016-01-17" [[article]] title = "Static site generators: el futuro de las webs estáticas
        (Hugo, Jekyll, Flask y otros)" url = "http://sitelabs.es/static-site-generators-futuro-las-webs-estaticas/" author = "Eneko Sarasola" date = "2016-01-09" [[article]] title = "Writing a Lambda Function for Hugo" url = "https://blog.jolexa.net/post/writing-a-lambda-function-for-hugo/" author = "Jeremy Olexa" date = "2016-01-01" [[article]] title = "Ein Blog mit Hugo erstellen - Tutorial (Deutsch/German)" url = "http://privat.albicker.org/tags/hugo.html" author = "Bernhard Albicker" date = "2015-12-30" [[article]] title = "How to host Hugo static website generator on AWS Lambda" url = "http://bezdelev.com/post/hugo-aws-lambda-static-website/" author = "Ilya Bezdelev" date = "2015-12-15" [[article]] title = "Migrating from Pelican to Hugo" url = "http://www.softinio.com/post/migrating-from-pelican-to-hugo/" author = "Salar Rahmanian" date = "2015-11-29" [[article]] title = "Static Website Generators Reviewed: Jekyll, Middleman, Roots, Hugo" url = "http://www.smashingmagazine.com/2015/11/static-website-generators-jekyll-middleman-roots-hugo-review/" author = "Mathias Biilmann Christensen" date = "2015-11-16" [[article]] title = "How To Deploy a Hugo Site to Production with Git Hooks on Ubuntu 14.04" url = "https://www.digitalocean.com/community/tutorials/how-to-deploy-a-hugo-site-to-production-with-git-hooks-on-ubuntu-14-04" author = "Justin Ellingwood" date = "2015-11-12" [[article]] title = "How To Install and Use Hugo, a Static Site Generator, on Ubuntu 14.04" url = "https://www.digitalocean.com/community/tutorials/how-to-install-and-use-hugo-a-static-site-generator-on-ubuntu-14-04" author = "Justin Ellingwood" date = "2015-11-09" [[article]] title = "Switching from Wordpress to Hugo" url = "http://justinfx.com/2015/11/08/switching-from-wordpress-to-hugo/" author = "Justin Israel" date = "2015-11-08" [[article]] title = "Hands-on Experience with Hugo as a Static Site Generator" url = "http://usersnap.com/blog/hands-on-experience-with-hugo-static-site-generator/" author = "Thomas Peham" date = "2015-10-15" [[article]] title = "Statische Webseites mit Hugo erstellen/Vortrag mit Foliensatz (deutsch)" url = "http://sfd.koelnerlinuxtreffen.de/2015/HaraldWeidner/" author = "Harald Weidner" date = "2015-09-19" [[article]] title = "Moving from WordPress to Hugo" url = "http://abhipandey.com/2015/09/moving-to-hugo/" author = "Abhishek Pandey" date = "2015-09-15" [[article]] title = "通过webhook将Hugo自动部署至GitHub Pages和GitCafe Pages (Automated deployment)" url = "http://blog.coderzh.com/2015/09/13/use-webhook-automated-deploy-hugo/" author = "CoderZh" date = "2015-09-13" [[article]] title = "使用hugo搭建个人博客站点 (Using Hugo to build a personal blog site)" url = "http://blog.coderzh.com/2015/08/29/hugo/" author = "CoderZh" date = "2015-08-29" [[article]] title = "Good-Bye Wordpress, Hello Hugo! (German)" url = "http://blog.arminhanisch.de/2015/08/blog-migration-zu-hugo/" author = "Armin Hanisch" date = "2015-08-18" [[article]] title = "Générer votre site web statique avec Hugo (Generate your static site with Hugo)" url = "http://www.linux-pratique.com/?p=191" author = "Benoît Benedetti" date = "2015-06-26" [[article]] title = "Hugo向けの新しいテーマを作った (I created a new theme for Hugo)" url = "https://yet.unresolved.xyz/blog/2016/10/03/how-to-make-of-hugo-theme/" author = "Daisuke Tsuji" date = "2015-06-20" [[article]] title = "Hugo - Gerando um site com conteúdo estático. (Portuguese Brazil)" url = "http://blog.ffrizzo.com/posts/hugo/" author = "Fabiano Frizzo" date = "2015-06-02" [[article]] title = "An Introduction to Static Site Generators" url = "http://davidwalsh.name/introduction-static-site-generators" author = "Eduardo Bouças" date = "2015-05-20" [[article]] title = "Hugo Still Rules" url = "http://cheekycoder.com/2015/05/hugo-still-rules/" author = "Cheeky Coder" date = "2015-05-18" [[article]] title = "hugo - Static Site Generator" url = "http://gscacco.github.io/post/hugo/" author = "G Scaccoio" date = "2015-05-04" [[article]] title = "WindowsでHugoを使う" url = "http://ureta.net/2015/05/hugo-on-windows/" author = "うれ太郎" date = "2015-05-01" [[article]] title = "Hugoのshortcodesを用いてサイトにスライドなどを埋め込む" url = "http://blog.yucchiy.com/2015/04/29/hugo-shortcode/" author = "Yucchiy" date = "2015-04-29" [[article]] title = "HugoとCircleCIでGitHub PagesにBlogを公開してみたら超簡単だった" url = "http://hori-ryota.github.io/blog/create-blog-with-hugo-and-circleci/" author = "Hori Ryota" date = "2015-04-17" [[article]] title = "10 Best Static Site Generators" url = "http://beebom.com/2015/04/best-static-site-generators" author = "Aniruddha Mysore" date = "2015-04-06" [[article]] title = "Goodbye WordPress; Hello Hugo" url = "http://willwarren.com/2015/04/05/goodbye-wordpress-hello-hugo/" author = "Will Warren" date = "2015-04-05" [[article]] title = "Static Websites with Hugo on Google Cloud Storage" url = "http://www.moxie.io/post/static-websites-with-hugo-on-google-cloud-storage/" author = "Moxie Input/Output" date = "2015-04-02" [[article]] title = "De nuevo iniciando un blog" url = "https://alvarolizama.net/" author = "Alvaro Lizama" date = "2015-03-29" [[article]] title = "We moved our blog from Posthaven to Hugo after only three posts. Why?" url = "http://blog.hypriot.com/post/moved-from-posthaven-to-hugo/" author = "Hypriot" date = "2015-03-27" [[article]] title = "Top Static Site Generators in 2015" url = "http://superdevresources.com/static-site-generators-2015/" author = "Kanishk Kunal" date = "2015-03-12" [[article]] title = "Moving to Hugo" url = "http://abiosoft.com/moving-to-hugo/" author = "Abiola Ibrahim" date = "2015-03-08" [[article]] title = "Migrating a blog (yes, this one!) from Wordpress to Hugo" url = "http://justindunham.net/migrating-from-wordpress-to-hugo/" author = "Justin Dunham" date = "2015-02-13" [[article]] title = "blogをoctopressからHugoに乗り換えたメモ" url = "http://blog.jigyakkuma.org/2015/02/11/hugo/" author = "jigyakkuma" date = "2015-02-11" [[article]] title = "Hugoでブログをつくった" url = "http://porgy13.github.io/post/new-hugo-blog/" author = "porgy13" date = "2015-02-07" [[article]] title = "Hugoにブログを移行した" url = "http://keichi.net/post/first/" author = "Keichi Takahashi" date = "2015-02-04" [[article]] title = "Hugo静态网站生成器中文教程" url = "http://nanshu.wang/post/2015-01-31/" author = "Nanshu Wang" date = "2015-01-31" [[article]] title = "Hugo + Github Pages + Wercker CI = ¥0(無料)
        でコマンド 1 発(自動化)でサイト
        ・ブログを公開・運営・分析・収益化
        " url = "http://qiita.com/yoheimuta/items/8a619cac356bed89a4c9" author = "Yohei Yoshimuta" date = "2015-01-31" [[article]] title = "Running Hugo websites on anynines" url = "http://blog.anynines.com/running-hugo-websites-on-anynines/" author = "Julian Weber" date = "2015-01-30" [[article]] title = "MiddlemanからHugoへ移行した" url = "http://re-dzine.net/2015/01/hugo/" author = "Haruki Konishi" date = "2015-01-21" [[article]] title = "WordPress から Hugo に乗り換えました" url = "http://rakuishi.com/archives/wordpress-to-hugo/" author = "rakuishi" date = "2015-01-20" [[article]] title = "HUGOを使ってサイトを立ち上げる方法" url = "http://qiita.com/syui/items/869538099551f24acbbf" author = "Syui" date = "2015-01-17" [[article]] title = "Jekyllが許されるのは小学生までだよね" url = "http://t32k.me/mol/log/hugo/" author = "Ishimoto Koji" date = "2015-01-16" [[article]] title = "Getting started with Hugo" url = "http://anthonyfok.org/post/getting-started-with-hugo/" author = "Anthony Fok" date = "2015-01-12" [[article]] title = "把这个博客静态化了 (Migrate to Hugo)" url = "http://lich-eng.com/2015/01/03/migrate-to-hugo/" author = "Li Cheng" date = "2015-01-03" [[article]] title = "Porting my blog with Hugo" url = "http://blog.srackham.com/posts/porting-my-blog-with-hugo/" author = "Stuart Rackham" date = "2014-12-30" [[article]] title = "Hugoを使ってみたときのメモ" url = "http://machortz.github.io/posts/usinghugo/" author = "Machortz" date = "2014-12-29" [[article]] title = "OctopressからHugoへ移行した" url = "http://deeeet.com/writing/2014/12/25/hugo/" author = "Taichi Nakashima" date = "2014-12-25" [[article]] title = "Migrating to Hugo From Octopress" url = "http://nathanleclaire.com/blog/2014/12/22/migrating-to-hugo-from-octopress/" author = "Nathan LeClaire" date = "2014-12-22" [[article]] title = "Dynamic Pages with GoHugo.io" url = "http://cyrillschumacher.com/2014/12/21/dynamic-pages-with-gohugo.io/" author = "Cyrill Schumacher" date = "2014-12-21" [[article]] title = "6 Static Blog Generators That Aren’t Jekyll" url = "http://www.sitepoint.com/6-static-blog-generators-arent-jekyll/" author = "David Turnbull" date = "2014-12-08" [[article]] title = "Travel Blogging Setup" url = "http://www.stou.dk/2014/11/travel-blogging-setup/" author = "Rasmus Stougaard" date = "2014-11-23" [[article]] title = "Hosting A Hugo Website Behind Nginx" url = "http://www.bigbeeconsultants.co.uk/blog/hosting-hugo-website-behind-nginx" author = "Rick Beton" date = "2014-11-20" [[article]] title = "使用Hugo搭建免费个人Blog (How to use Hugo)" url = "http://ulricqin.com/post/how-to-use-hugo/" author = "Ulric Qin 秦晓辉" date = "2014-11-11" [[article]] title = "Built in Speed and Built for Speed by Hugo" url = "http://cheekycoder.com/2014/10/built-for-speed-by-hugo/" author = "Cheeky Coder" date = "2014-10-30" [[article]] title = "Hugo para crear sitios web estáticos" url = "http://www.webbizarro.com/noticias/1076/hugo-para-crear-sitios-web-estaticos/" author = "Web Bizarro" date = "2014-08-19" [[article]] title = "Going with Hugo" url = "http://www.markuseliasson.se/article/going-with-hugo/" author = "Markus Eliasson" date = "2014-08-18" [[article]] title = "Benchmarking Jekyll, Hugo and Wintersmith" url = "http://fredrikloch.me/post/2014-08-12-Jekyll-and-its-alternatives-from-a-site-generation-point-of-view/" author = "Fredrik Loch" date = "2014-08-12" [[article]] title = "Goodbye Octopress, Hello Hugo!" url = "http://andreimihu.com/blog/2014/08/11/goodbye-octopress-hello-hugo/" author = "Andrei Mihu" date = "2014-08-11" [[article]] title = "Beautiful sites for Open Source Projects" url = "http://beautifulopen.com/2014/08/09/hugo/" author = "Beautiful Open" date = "2014-08-09" [[article]] title = "Hugo: Beyond the Defaults" url = "http://npf.io/2014/08/hugo-beyond-the-defaults/" author = "Nate Finch" date = "2014-08-08" [[article]] title = "First Impressions of Hugo" url = "https://peteraba.com/blog/first-impressions-of-hugo/" author = "Peter Aba" date = "2014-06-06" [[article]] title = "New Site Workflow" url = "http://vurt.co.uk/post/new_website/" author = "Giles Paterson" date = "2014-08-05" [[article]] title = "How I Learned to Stop Worrying and Love the (Static) Web" url = "http://cognition.ca/post/about-hugo/" author = "Joshua McKenty" date = "2014-08-04" [[article]] title = "Hugo - Static Site Generator" url = "http://kenwoo.io/blog/hugo---static-site-generator/" author = "Kenny Woo" date = "2014-08-03" [[article]] title = "Hugo Is Freakin' Awesome" url = "http://npf.io/2014/08/hugo-is-awesome/" author = "Nate Finch" date = "2014-08-01" [[article]] title = "再次搬家 (Move from WordPress to Hugo)" url = "http://www.chingli.com/misc/move-from-wordpress-to-hugo/" author = "青砾 (chingli)" date = "2014-07-12" [[article]] title = "Embedding Gists in Hugo" url = "http://danmux.com/posts/embedded_gists/" author = "Dan Mull" date = "2014-07-05" [[article]] title = "An Introduction To Hugo" url = "http://www.cirrushosting.com/web-hosting-blog/an-introduction-to-hugo/" author = "Dan Silber" date = "2014-07-01" [[article]] title = "Moving to Hugo" url = "http://danmux.com/posts/hugo_based_blog/" author = "Dan Mull" date = "2014-05-29" [[article]] title = "开源之静态站点生成器排行榜
        (Leaderboard of open-source static website generators)" url = "http://code.csdn.net/news/2819909" author = "CSDN.net" date = "2014-05-23" [[article]] title = "Finally, a satisfying and effective blog setup" url = "http://michaelwhatcott.com/now-powered-by-hugo/" author = "Michael Whatcott" date = "2014-05-20" [[article]] title = "Hugo from scratch" url = "http://zackofalltrades.com/notes/2014/05/hugo-from-scratch/" author = "Zack Williams" date = "2014-05-18" [[article]] title = "Why I switched away from Jekyll" url = "http://www.jakejanuzelli.com/why-I-switched-away-from-jekyll/" author = "Jake Januzelli" date = "2014-05-10" [[article]] title = "Welcome our new blog" url = "http://blog.ninya.io/posts/welcome-our-new-blog/" author = "Ninya.io" date = "2014-04-11" [[article]] title = "Mission Not Accomplished" url = "http://johnsto.co.uk/blog/mission-not-accomplished/" author = "Dave Johnston" date = "2014-04-03" [[article]] title = "Hugo - A Static Site Builder in Go" url = "http://deepfriedcode.com/post/hugo/" author = "Deep Fried Code" date = "2014-03-30" [[article]] title = "Adventures in Angular Podcast" url = "http://devchat.tv/adventures-in-angular/003-aia-gdes" author = "Matias Niemela" date = "2014-03-28" [[article]] title = "Hugo" url = "http://bra.am/post/hugo/" author = "bra.am" date = "2014-03-23" [[article]] title = "Converting Blogger To Markdown" url = "http://trishagee.github.io/project/atom-to-hugo/" author = "Trisha Gee" date = "2014-03-20" [[article]] title = "Moving to Hugo Static Web Pages" url = "http://tepid.org/tech/hugo-web/" author = "Tobias Weingartner" date = "2014-03-16" [[article]] title = "New Blog Engine: Hugo" url = "https://blog.afoolishmanifesto.com/posts/hugo/" author = "fREW Schmidt" date = "2014-03-15" [[article]] title = "Hugo + gulp.js = Huggle" url = "http://ktmud.github.io/huggle/en/intro/)" author = "Jesse Yang 杨建超" date = "2014-03-08" [[article]] title = "Powered by Hugo" url = "http://kieranhealy.org/blog/archives/2014/02/24/powered-by-hugo/" author = "Kieran Healy" date = "2014-02-24" [[article]] title = "静的サイトを素早く構築するために
        GoLangで作られたジェネレータHugo
        " url = "http://hamasyou.com/blog/2014/02/21/hugo/" author = "
        Shogo Hamada
        濱田章吾
        " date = "2014-02-21" [[article]] title = "Latest Roundup of Useful Tools For Developers" url = "http://codegeekz.com/latest-roundup-of-useful-tools-for-developers/" author = "CodeGeekz" date = "2014-02-13" [[article]] title = "Hugo: Static Site Generator written in Go" url = "http://www.braveterry.com/2014/02/06/hugo-static-site-generator-written-in-go/" author = "Brave Terry" date = "2014-02-06" [[article]] title = "10 Useful HTML5 Tools for Web Designers and Developers" url = "http://designdizzy.com/10-useful-html5-tools-for-web-designers-and-developers/" author = "Design Dizzy" date = "2014-02-04" [[article]] title = "Hugo – Fast, Flexible Static Site Generator" url = "http://cube3x.com/hugo-fast-flexible-static-site-generator/" author = "Joby Joseph" date = "2014-01-18" [[article]] title = "Hugo: A new way to build static website" url = "http://www.w3update.com/opensource/hugo-a-new-way-to-build-static-website.html" author = "w3update" date = "2014-01-17" [[article]] title = "Xaprb now uses Hugo" url = "http://xaprb.com/blog/2014/01/15/using-hugo/" author = "Baron Schwartz" date = "2014-01-15" [[article]] title = "New jQuery Plugins And Resources That Web Designers Need" url = "http://www.designyourway.net/blog/resources/new-jquery-plugins-and-resources-that-web-designers-need/" author = "Design Your Way" date = "2014-01-01" [[article]] title = "On Blog Construction" url = "http://alexla.sh/post/on-blog-construction/" author = "Alexander Lash" date = "2013-12-27" [[article]] title = "Hugo" url = "http://onethingwell.org/post/69070926608/hugo" author = "One Thing Well" date = "2013-12-05" [[article]] title = "In Praise Of Hugo" url = "http://sound-guru.com/blog/post/hello-world/" author = "sound-guru.com" date = "2013-10-19" [[article]] title = "Hosting a blog on S3 and Cloudfront" url = "http://www.danesparza.net/2013/07/hosting-a-blog-on-s3-and-cloudfront/" author = "Dan Esparza" date = "2013-07-24" hugo-0.131.0/docs/data/docs.yaml000066400000000000000000003437451465312036400163170ustar00rootroot00000000000000chroma: lexers: - Aliases: - abap Name: ABAP - Aliases: - abnf Name: ABNF - Aliases: - as - actionscript Name: ActionScript - Aliases: - as3 - actionscript3 Name: ActionScript 3 - Aliases: - ada - ada95 - ada2005 Name: Ada - Aliases: - agda Name: Agda - Aliases: - al Name: AL - Aliases: - alloy Name: Alloy - Aliases: - ng2 Name: Angular2 - Aliases: - antlr Name: ANTLR - Aliases: - apacheconf - aconf - apache Name: ApacheConf - Aliases: - apl Name: APL - Aliases: - applescript Name: AppleScript - Aliases: - aql Name: ArangoDB AQL - Aliases: - arduino Name: Arduino - Aliases: - armasm Name: ArmAsm - Aliases: - autohotkey - ahk Name: AutoHotkey - Aliases: - autoit Name: AutoIt - Aliases: - awk - gawk - mawk - nawk Name: Awk - Aliases: - ballerina Name: Ballerina - Aliases: - bash - sh - ksh - zsh - shell Name: Bash - Aliases: - bash-session - console - shell-session Name: Bash Session - Aliases: - bat - batch - dosbatch - winbatch Name: Batchfile - Aliases: - bib - bibtex Name: BibTeX - Aliases: - bicep Name: Bicep - Aliases: - blitzbasic - b3d - bplus Name: BlitzBasic - Aliases: - bnf Name: BNF - Aliases: - bqn Name: BQN - Aliases: - brainfuck - bf Name: Brainfuck - Aliases: - c Name: C - Aliases: - csharp - c# Name: C# - Aliases: - cpp - c++ Name: C++ - Aliases: - caddyfile - caddy Name: Caddyfile - Aliases: - caddyfile-directives - caddyfile-d - caddy-d Name: Caddyfile Directives - Aliases: - capnp Name: Cap'n Proto - Aliases: - cassandra - cql Name: Cassandra CQL - Aliases: - ceylon Name: Ceylon - Aliases: - cfengine3 - cf3 Name: CFEngine3 - Aliases: - cfs Name: cfstatement - Aliases: - chai - chaiscript Name: ChaiScript - Aliases: - chapel - chpl Name: Chapel - Aliases: - cheetah - spitfire Name: Cheetah - Aliases: - clojure - clj - edn Name: Clojure - Aliases: - cmake Name: CMake - Aliases: - cobol Name: COBOL - Aliases: - coffee-script - coffeescript - coffee Name: CoffeeScript - Aliases: - common-lisp - cl - lisp Name: Common Lisp - Aliases: - coq Name: Coq - Aliases: - cr - crystal Name: Crystal - Aliases: - css Name: CSS - Aliases: - cue Name: CUE - Aliases: - cython - pyx - pyrex Name: Cython - Aliases: - d Name: D - Aliases: - dart Name: Dart - Aliases: - dax Name: Dax - Aliases: - desktop - desktop_entry Name: Desktop file - Aliases: - diff - udiff Name: Diff - Aliases: - django - jinja Name: Django/Jinja - Aliases: - zone - bind Name: dns - Aliases: - docker - dockerfile Name: Docker - Aliases: - dtd Name: DTD - Aliases: - dylan Name: Dylan - Aliases: - ebnf Name: EBNF - Aliases: - elixir - ex - exs Name: Elixir - Aliases: - elm Name: Elm - Aliases: - emacs - elisp - emacs-lisp Name: EmacsLisp - Aliases: - erlang Name: Erlang - Aliases: - factor Name: Factor - Aliases: - fennel - fnl Name: Fennel - Aliases: - fish - fishshell Name: Fish - Aliases: - forth Name: Forth - Aliases: - fortran - f90 Name: Fortran - Aliases: - fortranfixed Name: FortranFixed - Aliases: - fsharp Name: FSharp - Aliases: - gas - asm Name: GAS - Aliases: - gdscript - gd Name: GDScript - Aliases: - gdscript3 - gd3 Name: GDScript3 - Aliases: - genshi - kid - xml+genshi - xml+kid Name: Genshi - Aliases: - html+genshi - html+kid Name: Genshi HTML - Aliases: - genshitext Name: Genshi Text - Aliases: - cucumber - Cucumber - gherkin - Gherkin Name: Gherkin - Aliases: - gleam> Name: Gleam - Aliases: - glsl Name: GLSL - Aliases: - gnuplot Name: Gnuplot - Aliases: - go - golang Name: Go - Aliases: - go-html-template Name: Go HTML Template - Aliases: - go-template Name: Go Template - Aliases: - go-text-template Name: Go Text Template - Aliases: - graphql - graphqls - gql Name: GraphQL - Aliases: - groff - nroff - man Name: Groff - Aliases: - groovy Name: Groovy - Aliases: - handlebars - hbs Name: Handlebars - Aliases: - hare Name: Hare - Aliases: - haskell - hs Name: Haskell - Aliases: - hx - haxe - hxsl Name: Haxe - Aliases: - hcl Name: HCL - Aliases: - hexdump Name: Hexdump - Aliases: - hlb Name: HLB - Aliases: - hlsl Name: HLSL - Aliases: - holyc Name: HolyC - Aliases: - html Name: HTML - Aliases: - http Name: HTTP - Aliases: - hylang Name: Hy - Aliases: - idris - idr Name: Idris - Aliases: - igor - igorpro Name: Igor - Aliases: - ini - cfg - dosini Name: INI - Aliases: - io Name: Io - Aliases: - iscdhcpd Name: ISCdhcpd - Aliases: - j Name: J - Aliases: - java Name: Java - Aliases: - js - javascript Name: JavaScript - Aliases: - json Name: JSON - Aliases: - julia - jl Name: Julia - Aliases: - jungle Name: Jungle - Aliases: - kotlin Name: Kotlin - Aliases: - lighty - lighttpd Name: Lighttpd configuration file - Aliases: - llvm Name: LLVM - Aliases: - lua Name: Lua - Aliases: - make - makefile - mf - bsdmake Name: Makefile - Aliases: - mako Name: Mako - Aliases: - md - mkd Name: markdown - Aliases: - mason Name: Mason - Aliases: - materialize - mzsql Name: Materialize SQL dialect - Aliases: - mathematica - mma - nb Name: Mathematica - Aliases: - matlab Name: Matlab - Aliases: - mcfunction Name: mcfunction - Aliases: - meson - meson.build Name: Meson - Aliases: - metal Name: Metal - Aliases: - minizinc - MZN - mzn Name: MiniZinc - Aliases: - mlir Name: MLIR - Aliases: - modula2 - m2 Name: Modula-2 - Aliases: - monkeyc Name: MonkeyC - Aliases: - morrowind - mwscript Name: MorrowindScript - Aliases: - myghty Name: Myghty - Aliases: - mysql - mariadb Name: MySQL - Aliases: - nasm Name: NASM - Aliases: - natural Name: Natural - Aliases: - ndisasm Name: NDISASM - Aliases: - newspeak Name: Newspeak - Aliases: - nginx Name: Nginx configuration file - Aliases: - nim - nimrod Name: Nim - Aliases: - nixos - nix Name: Nix - Aliases: - objective-c - objectivec - obj-c - objc Name: Objective-C - Aliases: - objectpascal Name: ObjectPascal - Aliases: - ocaml Name: OCaml - Aliases: - octave Name: Octave - Aliases: - odin Name: Odin - Aliases: - ones - onesenterprise - 1S - 1S:Enterprise Name: OnesEnterprise - Aliases: - openedge - abl - progress - openedgeabl Name: OpenEdge ABL - Aliases: - openscad Name: OpenSCAD - Aliases: - org - orgmode Name: Org Mode - Aliases: - pacmanconf Name: PacmanConf - Aliases: - perl - pl Name: Perl - Aliases: - php - php3 - php4 - php5 Name: PHP - Aliases: - phtml Name: PHTML - Aliases: - pig Name: Pig - Aliases: - pkgconfig Name: PkgConfig - Aliases: - plpgsql Name: PL/pgSQL - Aliases: - text - plain - no-highlight Name: plaintext - Aliases: - plutus-core - plc Name: Plutus Core - Aliases: - pony Name: Pony - Aliases: - postgresql - postgres Name: PostgreSQL SQL dialect - Aliases: - postscript - postscr Name: PostScript - Aliases: - pov Name: POVRay - Aliases: - powerquery - pq Name: PowerQuery - Aliases: - powershell - posh - ps1 - psm1 - psd1 - pwsh Name: PowerShell - Aliases: - prolog Name: Prolog - Aliases: - promela Name: Promela - Aliases: - promql Name: PromQL - Aliases: - java-properties Name: properties - Aliases: - protobuf - proto Name: Protocol Buffer - Aliases: - prql Name: PRQL - Aliases: - psl Name: PSL - Aliases: - puppet Name: Puppet - Aliases: - python - py - sage - python3 - py3 Name: Python - Aliases: - python2 - py2 Name: Python 2 - Aliases: - qbasic - basic Name: QBasic - Aliases: - qml - qbs Name: QML - Aliases: - splus - s - r Name: R - Aliases: - racket - rkt Name: Racket - Aliases: - ragel Name: Ragel - Aliases: - perl6 - pl6 - raku Name: Raku - Aliases: - jsx - react Name: react - Aliases: - reason - reasonml Name: ReasonML - Aliases: - registry Name: reg - Aliases: - rego Name: Rego - Aliases: - rst - rest - restructuredtext Name: reStructuredText - Aliases: - rexx - arexx Name: Rexx - Aliases: - spec Name: RPMSpec - Aliases: - rb - ruby - duby Name: Ruby - Aliases: - rust - rs Name: Rust - Aliases: - sas Name: SAS - Aliases: - sass Name: Sass - Aliases: - scala Name: Scala - Aliases: - scheme - scm Name: Scheme - Aliases: - scilab Name: Scilab - Aliases: - scss Name: SCSS - Aliases: - sed - gsed - ssed Name: Sed - Aliases: - sieve Name: Sieve - Aliases: - smali Name: Smali - Aliases: - smalltalk - squeak - st Name: Smalltalk - Aliases: - smarty Name: Smarty - Aliases: - snobol Name: Snobol - Aliases: - sol - solidity Name: Solidity - Aliases: - sp Name: SourcePawn - Aliases: - sparql Name: SPARQL - Aliases: - sql Name: SQL - Aliases: - squidconf - squid.conf - squid Name: SquidConf - Aliases: - sml Name: Standard ML - Aliases: null Name: stas - Aliases: - stylus Name: Stylus - Aliases: - svelte Name: Svelte - Aliases: - swift Name: Swift - Aliases: - systemd Name: SYSTEMD - Aliases: - systemverilog - sv Name: systemverilog - Aliases: - tablegen Name: TableGen - Aliases: - tal - uxntal Name: Tal - Aliases: - tasm Name: TASM - Aliases: - tcl Name: Tcl - Aliases: - tcsh - csh Name: Tcsh - Aliases: - termcap Name: Termcap - Aliases: - terminfo Name: Terminfo - Aliases: - terraform - tf Name: Terraform - Aliases: - tex - latex Name: TeX - Aliases: - thrift Name: Thrift - Aliases: - toml Name: TOML - Aliases: - tradingview - tv Name: TradingView - Aliases: - tsql - t-sql Name: Transact-SQL - Aliases: - turing Name: Turing - Aliases: - turtle Name: Turtle - Aliases: - twig Name: Twig - Aliases: - ts - tsx - typescript Name: TypeScript - Aliases: - typoscript Name: TypoScript - Aliases: - typoscriptcssdata Name: TypoScriptCssData - Aliases: - typoscripthtmldata Name: TypoScriptHtmlData - Aliases: null Name: ucode - Aliases: - v - vlang Name: V - Aliases: - vsh - vshell Name: V shell - Aliases: - vala - vapi Name: Vala - Aliases: - vb.net - vbnet Name: VB.net - Aliases: - verilog - v Name: verilog - Aliases: - vhdl Name: VHDL - Aliases: - vhs - tape - cassette Name: VHS - Aliases: - vim Name: VimL - Aliases: - vue - vuejs Name: vue - Aliases: null Name: WDTE - Aliases: - wgsl Name: WebGPU Shading Language - Aliases: - whiley Name: Whiley - Aliases: - xml Name: XML - Aliases: - xorg.conf Name: Xorg - Aliases: - yaml Name: YAML - Aliases: - yang Name: YANG - Aliases: - z80 Name: Z80 Assembly - Aliases: - zed Name: Zed - Aliases: - zig Name: Zig config: HTTPCache: cache: for: excludes: - '**' includes: null polls: - disable: true for: excludes: null includes: - '**' high: 0s low: 0s archeTypeDir: archetypes assetDir: assets author: {} baseURL: "" build: buildStats: disableClasses: false disableIDs: false disableTags: false enable: false cacheBusters: - source: (postcss|tailwind)\.config\.js target: (css|styles|scss|sass) noJSConfigInAssets: false useResourceCacheWhen: fallback buildDrafts: false buildExpired: false buildFuture: false cacheDir: "" caches: assets: dir: :resourceDir/_gen maxAge: -1 getcsv: dir: :cacheDir/:project maxAge: -1 getjson: dir: :cacheDir/:project maxAge: -1 getresource: dir: :cacheDir/:project maxAge: -1 images: dir: :resourceDir/_gen maxAge: -1 modules: dir: :cacheDir/modules maxAge: -1 canonifyURLs: false capitalizeListTitles: true cascade: [] cleanDestinationDir: false contentDir: content copyright: "" dataDir: data defaultContentLanguage: en defaultContentLanguageInSubdir: false deployment: confirm: false dryRun: false force: false invalidateCDN: true matchers: null maxDeletes: 256 order: null target: "" targets: null workers: 10 disableAliases: false disableHugoGeneratorInject: false disableKinds: null disableLanguages: null disableLiveReload: false disablePathToLower: false enableEmoji: false enableGitInfo: false enableMissingTranslationPlaceholders: false enableRobotsTXT: false environment: production frontmatter: date: - date - publishdate - pubdate - published - lastmod - modified expiryDate: - expirydate - unpublishdate lastmod: - :git - lastmod - modified - date - publishdate - pubdate - published publishDate: - publishdate - pubdate - published - date hasCJKLanguage: false i18nDir: i18n ignoreCache: false ignoreFiles: [] ignoreLogs: null ignoreVendorPaths: "" imaging: bgColor: '#ffffff' hint: photo quality: 75 resampleFilter: box languageCode: "" languages: en: disabled: false languageCode: "" languageDirection: "" languageName: "" title: "" weight: 0 layoutDir: layouts mainSections: null markup: asciidocExt: attributes: {} backend: html5 extensions: [] failureLevel: fatal noHeaderOrFooter: true preserveTOC: false safeMode: unsafe sectionNumbers: false trace: false verbose: false workingFolderCurrent: false defaultMarkdownHandler: goldmark goldmark: duplicateResourceFiles: false extensions: cjk: eastAsianLineBreaks: false eastAsianLineBreaksStyle: simple enable: false escapedSpace: false definitionList: true extras: delete: enable: false insert: enable: false mark: enable: false subscript: enable: false superscript: enable: false footnote: true linkify: true linkifyProtocol: https passthrough: delimiters: block: [] inline: [] enable: false strikethrough: true table: true taskList: true typographer: apostrophe: '’' disable: false ellipsis: '…' emDash: '—' enDash: '–' leftAngleQuote: '«' leftDoubleQuote: '“' leftSingleQuote: '‘' rightAngleQuote: '»' rightDoubleQuote: '”' rightSingleQuote: '’' parser: attribute: block: false title: true autoHeadingID: true autoHeadingIDType: github wrapStandAloneImageWithinParagraph: true renderHooks: image: enableDefault: false link: enableDefault: false renderer: hardWraps: false unsafe: false xhtml: false highlight: anchorLineNos: false codeFences: true guessSyntax: false hl_Lines: "" hl_inline: false lineAnchors: "" lineNoStart: 1 lineNos: false lineNumbersInTable: true noClasses: true noHl: false style: monokai tabWidth: 4 tableOfContents: endLevel: 3 ordered: false startLevel: 2 mediaTypes: application/json: delimiter: . suffixes: - json application/manifest+json: delimiter: . suffixes: - webmanifest application/octet-stream: delimiter: . application/pdf: delimiter: . suffixes: - pdf application/rss+xml: delimiter: . suffixes: - xml - rss application/toml: delimiter: . suffixes: - toml application/wasm: delimiter: . suffixes: - wasm application/xml: delimiter: . suffixes: - xml application/yaml: delimiter: . suffixes: - yaml - yml font/otf: delimiter: . suffixes: - otf font/ttf: delimiter: . suffixes: - ttf image/bmp: delimiter: . suffixes: - bmp image/gif: delimiter: . suffixes: - gif image/jpeg: delimiter: . suffixes: - jpg - jpeg - jpe - jif - jfif image/png: delimiter: . suffixes: - png image/svg+xml: delimiter: . suffixes: - svg image/tiff: delimiter: . suffixes: - tif - tiff image/webp: delimiter: . suffixes: - webp text/asciidoc: delimiter: . suffixes: - adoc - asciidoc - ad text/calendar: delimiter: . suffixes: - ics text/css: delimiter: . suffixes: - css text/csv: delimiter: . suffixes: - csv text/html: delimiter: . suffixes: - html - htm text/javascript: delimiter: . suffixes: - js - jsm - mjs text/jsx: delimiter: . suffixes: - jsx text/markdown: delimiter: . suffixes: - md - mdown - markdown text/org: delimiter: . suffixes: - org text/pandoc: delimiter: . suffixes: - pandoc - pdc text/plain: delimiter: . suffixes: - txt text/rst: delimiter: . suffixes: - rst text/tsx: delimiter: . suffixes: - tsx text/typescript: delimiter: . suffixes: - ts text/x-sass: delimiter: . suffixes: - sass text/x-scss: delimiter: . suffixes: - scss video/3gpp: delimiter: . suffixes: - 3gpp - 3gp video/mp4: delimiter: . suffixes: - mp4 video/mpeg: delimiter: . suffixes: - mpg - mpeg video/ogg: delimiter: . suffixes: - ogv video/webm: delimiter: . suffixes: - webm video/x-msvideo: delimiter: . suffixes: - avi menus: {} minify: disableCSS: false disableHTML: false disableJS: false disableJSON: false disableSVG: false disableXML: false minifyOutput: false tdewolff: css: inline: false keepCSS2: true precision: 0 html: keepComments: false keepConditionalComments: false keepDefaultAttrVals: true keepDocumentTags: true keepEndTags: true keepQuotes: false keepSpecialComments: true keepWhitespace: false templateDelims: - "" - "" js: keepVarNames: false precision: 0 version: 2022 json: keepNumbers: false precision: 0 svg: inline: false keepComments: false precision: 0 xml: keepWhitespace: false module: hugoVersion: extended: false max: "" min: "" imports: null mounts: - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: content target: content - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: data target: data - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: layouts target: layouts - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: i18n target: i18n - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: archetypes target: archetypes - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: assets target: assets - disableWatch: false excludeFiles: null includeFiles: null lang: "" source: static target: static noProxy: none noVendor: "" params: null private: '*.*' proxy: direct replacements: null vendorClosest: false workspace: "off" newContentEditor: "" noBuildLock: false noChmod: false noTimes: false outputFormats: amp: baseName: index isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: false path: amp permalinkable: true protocol: "" rel: amphtml root: false ugly: false weight: 0 calendar: baseName: index isHTML: false isPlainText: true mediaType: text/calendar noUgly: false notAlternative: false path: "" permalinkable: false protocol: webcal:// rel: alternate root: false ugly: false weight: 0 css: baseName: styles isHTML: false isPlainText: true mediaType: text/css noUgly: false notAlternative: true path: "" permalinkable: false protocol: "" rel: stylesheet root: false ugly: false weight: 0 csv: baseName: index isHTML: false isPlainText: true mediaType: text/csv noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 html: baseName: index isHTML: true isPlainText: false mediaType: text/html noUgly: false notAlternative: false path: "" permalinkable: true protocol: "" rel: canonical root: false ugly: false weight: 10 json: baseName: index isHTML: false isPlainText: true mediaType: application/json noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 markdown: baseName: index isHTML: false isPlainText: true mediaType: text/markdown noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 robots: baseName: robots isHTML: false isPlainText: true mediaType: text/plain noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: true ugly: false weight: 0 rss: baseName: index isHTML: false isPlainText: false mediaType: application/rss+xml noUgly: true notAlternative: false path: "" permalinkable: false protocol: "" rel: alternate root: false ugly: false weight: 0 sitemap: baseName: sitemap isHTML: false isPlainText: false mediaType: application/xml noUgly: false notAlternative: false path: "" permalinkable: false protocol: "" rel: sitemap root: false ugly: true weight: 0 webappmanifest: baseName: manifest isHTML: false isPlainText: true mediaType: application/manifest+json noUgly: false notAlternative: true path: "" permalinkable: false protocol: "" rel: manifest root: false ugly: false weight: 0 outputs: home: - html - rss page: - html rss: - rss section: - html - rss taxonomy: - html - rss term: - html - rss paginate: 0 paginatePath: "" pagination: disableAliases: false pagerSize: 10 path: page panicOnWarning: false params: {} permalinks: page: {} section: {} taxonomy: {} term: {} pluralizeListTitles: true printI18nWarnings: false printPathWarnings: false printUnusedTemplates: false privacy: disqus: disable: false googleAnalytics: disable: false respectDoNotTrack: false instagram: disable: false simple: false twitter: disable: false enableDNT: false simple: false vimeo: disable: false enableDNT: false simple: false youTube: disable: false privacyEnhanced: false publishDir: public refLinksErrorLevel: "" refLinksNotFoundURL: "" related: includeNewer: false indices: - applyFilter: false cardinalityThreshold: 0 name: keywords pattern: "" toLower: false type: basic weight: 100 - applyFilter: false cardinalityThreshold: 0 name: date pattern: "" toLower: false type: basic weight: 10 - applyFilter: false cardinalityThreshold: 0 name: tags pattern: "" toLower: false type: basic weight: 80 threshold: 80 toLower: false relativeURLs: false removePathAccents: false renderSegments: null resourceDir: resources sectionPagesMenu: "" security: enableInlineShortcodes: false exec: allow: - ^(dart-)?sass(-embedded)?$ - ^go$ - ^git$ - ^npx$ - ^postcss$ - ^tailwindcss$ osEnv: - (?i)^((HTTPS?|NO)_PROXY|PATH(EXT)?|APPDATA|TE?MP|TERM|GO\w+|(XDG_CONFIG_)?HOME|USERPROFILE|SSH_AUTH_SOCK|DISPLAY|LANG|SYSTEMDRIVE)$ funcs: getenv: - ^HUGO_ - ^CI$ http: mediaTypes: null methods: - (?i)GET|POST urls: - .* segments: {} server: headers: null redirects: - force: false from: '**' status: 404 to: /404.html services: disqus: shortname: "" googleAnalytics: id: "" instagram: accessToken: "" disableInlineCSS: false rss: limit: -1 twitter: disableInlineCSS: false sitemap: changeFreq: "" disable: false filename: sitemap.xml priority: -1 social: null staticDir: - static staticDir0: null staticDir1: null staticDir2: null staticDir3: null staticDir4: null staticDir5: null staticDir6: null staticDir7: null staticDir8: null staticDir9: null staticDir10: null summaryLength: 70 taxonomies: category: categories tag: tags templateMetrics: false templateMetricsHints: false theme: null themesDir: themes timeZone: "" timeout: 30s title: "" titleCaseStyle: AP uglyURLs: false workingDir: "" config_helpers: mergeStrategy: build: _merge: none caches: _merge: none cascade: _merge: none deployment: _merge: none frontmatter: _merge: none httpcache: _merge: none imaging: _merge: none languages: _merge: none en: _merge: none menus: _merge: shallow params: _merge: deep markup: _merge: none mediatypes: _merge: shallow menus: _merge: shallow minify: _merge: none module: _merge: none outputformats: _merge: shallow outputs: _merge: none pagination: _merge: none params: _merge: deep permalinks: _merge: none privacy: _merge: none related: _merge: none security: _merge: none segments: _merge: none server: _merge: none services: _merge: none sitemap: _merge: none taxonomies: _merge: none output: layouts: - Example: Single page in "posts" section Kind: page OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/single.html.html - layouts/posts/single.html - layouts/_default/single.html.html - layouts/_default/single.html - Example: Base template for single page in "posts" section Kind: page OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/single-baseof.html.html - layouts/posts/baseof.html.html - layouts/posts/single-baseof.html - layouts/posts/baseof.html - layouts/_default/single-baseof.html.html - layouts/_default/baseof.html.html - layouts/_default/single-baseof.html - layouts/_default/baseof.html - Example: Single page in "posts" section with layout set to "demolayout" Kind: page OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/demolayout.html.html - layouts/posts/single.html.html - layouts/posts/demolayout.html - layouts/posts/single.html - layouts/_default/demolayout.html.html - layouts/_default/single.html.html - layouts/_default/demolayout.html - layouts/_default/single.html - Example: Base template for single page in "posts" section with layout set to "demolayout" Kind: page OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/demolayout-baseof.html.html - layouts/posts/single-baseof.html.html - layouts/posts/baseof.html.html - layouts/posts/demolayout-baseof.html - layouts/posts/single-baseof.html - layouts/posts/baseof.html - layouts/_default/demolayout-baseof.html.html - layouts/_default/single-baseof.html.html - layouts/_default/baseof.html.html - layouts/_default/demolayout-baseof.html - layouts/_default/single-baseof.html - layouts/_default/baseof.html - Example: AMP single page Kind: page OutputFormat: amp Suffix: html Template Lookup Order: - layouts/posts/single.amp.html - layouts/posts/single.html - layouts/_default/single.amp.html - layouts/_default/single.html - Example: AMP single page, French language Kind: page OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/single.fr.html.html - layouts/posts/single.html.html - layouts/posts/single.fr.html - layouts/posts/single.html - layouts/_default/single.fr.html.html - layouts/_default/single.html.html - layouts/_default/single.fr.html - layouts/_default/single.html - Example: Home page Kind: home OutputFormat: html Suffix: html Template Lookup Order: - layouts/index.html.html - layouts/home.html.html - layouts/list.html.html - layouts/index.html - layouts/home.html - layouts/list.html - layouts/_default/index.html.html - layouts/_default/home.html.html - layouts/_default/list.html.html - layouts/_default/index.html - layouts/_default/home.html - layouts/_default/list.html - Example: Base template for home page Kind: home OutputFormat: html Suffix: html Template Lookup Order: - layouts/index-baseof.html.html - layouts/home-baseof.html.html - layouts/list-baseof.html.html - layouts/baseof.html.html - layouts/index-baseof.html - layouts/home-baseof.html - layouts/list-baseof.html - layouts/baseof.html - layouts/_default/index-baseof.html.html - layouts/_default/home-baseof.html.html - layouts/_default/list-baseof.html.html - layouts/_default/baseof.html.html - layouts/_default/index-baseof.html - layouts/_default/home-baseof.html - layouts/_default/list-baseof.html - layouts/_default/baseof.html - Example: Home page with type set to "demotype" Kind: home OutputFormat: html Suffix: html Template Lookup Order: - layouts/demotype/index.html.html - layouts/demotype/home.html.html - layouts/demotype/list.html.html - layouts/demotype/index.html - layouts/demotype/home.html - layouts/demotype/list.html - layouts/index.html.html - layouts/home.html.html - layouts/list.html.html - layouts/index.html - layouts/home.html - layouts/list.html - layouts/_default/index.html.html - layouts/_default/home.html.html - layouts/_default/list.html.html - layouts/_default/index.html - layouts/_default/home.html - layouts/_default/list.html - Example: Base template for home page with type set to "demotype" Kind: home OutputFormat: html Suffix: html Template Lookup Order: - layouts/demotype/index-baseof.html.html - layouts/demotype/home-baseof.html.html - layouts/demotype/list-baseof.html.html - layouts/demotype/baseof.html.html - layouts/demotype/index-baseof.html - layouts/demotype/home-baseof.html - layouts/demotype/list-baseof.html - layouts/demotype/baseof.html - layouts/index-baseof.html.html - layouts/home-baseof.html.html - layouts/list-baseof.html.html - layouts/baseof.html.html - layouts/index-baseof.html - layouts/home-baseof.html - layouts/list-baseof.html - layouts/baseof.html - layouts/_default/index-baseof.html.html - layouts/_default/home-baseof.html.html - layouts/_default/list-baseof.html.html - layouts/_default/baseof.html.html - layouts/_default/index-baseof.html - layouts/_default/home-baseof.html - layouts/_default/list-baseof.html - layouts/_default/baseof.html - Example: Home page with layout set to "demolayout" Kind: home OutputFormat: html Suffix: html Template Lookup Order: - layouts/demolayout.html.html - layouts/index.html.html - layouts/home.html.html - layouts/list.html.html - layouts/demolayout.html - layouts/index.html - layouts/home.html - layouts/list.html - layouts/_default/demolayout.html.html - layouts/_default/index.html.html - layouts/_default/home.html.html - layouts/_default/list.html.html - layouts/_default/demolayout.html - layouts/_default/index.html - layouts/_default/home.html - layouts/_default/list.html - Example: AMP home, French language Kind: home OutputFormat: amp Suffix: html Template Lookup Order: - layouts/index.fr.amp.html - layouts/home.fr.amp.html - layouts/list.fr.amp.html - layouts/index.amp.html - layouts/home.amp.html - layouts/list.amp.html - layouts/index.fr.html - layouts/home.fr.html - layouts/list.fr.html - layouts/index.html - layouts/home.html - layouts/list.html - layouts/_default/index.fr.amp.html - layouts/_default/home.fr.amp.html - layouts/_default/list.fr.amp.html - layouts/_default/index.amp.html - layouts/_default/home.amp.html - layouts/_default/list.amp.html - layouts/_default/index.fr.html - layouts/_default/home.fr.html - layouts/_default/list.fr.html - layouts/_default/index.html - layouts/_default/home.html - layouts/_default/list.html - Example: JSON home Kind: home OutputFormat: json Suffix: json Template Lookup Order: - layouts/index.json.json - layouts/home.json.json - layouts/list.json.json - layouts/index.json - layouts/home.json - layouts/list.json - layouts/_default/index.json.json - layouts/_default/home.json.json - layouts/_default/list.json.json - layouts/_default/index.json - layouts/_default/home.json - layouts/_default/list.json - Example: RSS home Kind: home OutputFormat: rss Suffix: xml Template Lookup Order: - layouts/index.rss.xml - layouts/home.rss.xml - layouts/rss.xml - layouts/list.rss.xml - layouts/index.xml - layouts/home.xml - layouts/list.xml - layouts/_default/index.rss.xml - layouts/_default/home.rss.xml - layouts/_default/rss.xml - layouts/_default/list.rss.xml - layouts/_default/index.xml - layouts/_default/home.xml - layouts/_default/list.xml - layouts/_internal/_default/rss.xml - Example: Section list for "posts" Kind: section OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/posts.html.html - layouts/posts/section.html.html - layouts/posts/list.html.html - layouts/posts/posts.html - layouts/posts/section.html - layouts/posts/list.html - layouts/section/posts.html.html - layouts/section/section.html.html - layouts/section/list.html.html - layouts/section/posts.html - layouts/section/section.html - layouts/section/list.html - layouts/_default/posts.html.html - layouts/_default/section.html.html - layouts/_default/list.html.html - layouts/_default/posts.html - layouts/_default/section.html - layouts/_default/list.html - Example: Section list for "posts" with type set to "blog" Kind: section OutputFormat: html Suffix: html Template Lookup Order: - layouts/blog/posts.html.html - layouts/blog/section.html.html - layouts/blog/list.html.html - layouts/blog/posts.html - layouts/blog/section.html - layouts/blog/list.html - layouts/posts/posts.html.html - layouts/posts/section.html.html - layouts/posts/list.html.html - layouts/posts/posts.html - layouts/posts/section.html - layouts/posts/list.html - layouts/section/posts.html.html - layouts/section/section.html.html - layouts/section/list.html.html - layouts/section/posts.html - layouts/section/section.html - layouts/section/list.html - layouts/_default/posts.html.html - layouts/_default/section.html.html - layouts/_default/list.html.html - layouts/_default/posts.html - layouts/_default/section.html - layouts/_default/list.html - Example: Section list for "posts" with layout set to "demolayout" Kind: section OutputFormat: html Suffix: html Template Lookup Order: - layouts/posts/demolayout.html.html - layouts/posts/posts.html.html - layouts/posts/section.html.html - layouts/posts/list.html.html - layouts/posts/demolayout.html - layouts/posts/posts.html - layouts/posts/section.html - layouts/posts/list.html - layouts/section/demolayout.html.html - layouts/section/posts.html.html - layouts/section/section.html.html - layouts/section/list.html.html - layouts/section/demolayout.html - layouts/section/posts.html - layouts/section/section.html - layouts/section/list.html - layouts/_default/demolayout.html.html - layouts/_default/posts.html.html - layouts/_default/section.html.html - layouts/_default/list.html.html - layouts/_default/demolayout.html - layouts/_default/posts.html - layouts/_default/section.html - layouts/_default/list.html - Example: Section list for "posts" Kind: section OutputFormat: rss Suffix: xml Template Lookup Order: - layouts/posts/section.rss.xml - layouts/posts/rss.xml - layouts/posts/list.rss.xml - layouts/posts/section.xml - layouts/posts/list.xml - layouts/section/section.rss.xml - layouts/section/rss.xml - layouts/section/list.rss.xml - layouts/section/section.xml - layouts/section/list.xml - layouts/_default/section.rss.xml - layouts/_default/rss.xml - layouts/_default/list.rss.xml - layouts/_default/section.xml - layouts/_default/list.xml - layouts/_internal/_default/rss.xml - Example: Taxonomy list for "categories" Kind: taxonomy OutputFormat: html Suffix: html Template Lookup Order: - layouts/categories/category.terms.html.html - layouts/categories/terms.html.html - layouts/categories/taxonomy.html.html - layouts/categories/list.html.html - layouts/categories/category.terms.html - layouts/categories/terms.html - layouts/categories/taxonomy.html - layouts/categories/list.html - layouts/category/category.terms.html.html - layouts/category/terms.html.html - layouts/category/taxonomy.html.html - layouts/category/list.html.html - layouts/category/category.terms.html - layouts/category/terms.html - layouts/category/taxonomy.html - layouts/category/list.html - layouts/taxonomy/category.terms.html.html - layouts/taxonomy/terms.html.html - layouts/taxonomy/taxonomy.html.html - layouts/taxonomy/list.html.html - layouts/taxonomy/category.terms.html - layouts/taxonomy/terms.html - layouts/taxonomy/taxonomy.html - layouts/taxonomy/list.html - layouts/_default/category.terms.html.html - layouts/_default/terms.html.html - layouts/_default/taxonomy.html.html - layouts/_default/list.html.html - layouts/_default/category.terms.html - layouts/_default/terms.html - layouts/_default/taxonomy.html - layouts/_default/list.html - Example: Taxonomy list for "categories" Kind: taxonomy OutputFormat: rss Suffix: xml Template Lookup Order: - layouts/categories/category.terms.rss.xml - layouts/categories/terms.rss.xml - layouts/categories/taxonomy.rss.xml - layouts/categories/rss.xml - layouts/categories/list.rss.xml - layouts/categories/category.terms.xml - layouts/categories/terms.xml - layouts/categories/taxonomy.xml - layouts/categories/list.xml - layouts/category/category.terms.rss.xml - layouts/category/terms.rss.xml - layouts/category/taxonomy.rss.xml - layouts/category/rss.xml - layouts/category/list.rss.xml - layouts/category/category.terms.xml - layouts/category/terms.xml - layouts/category/taxonomy.xml - layouts/category/list.xml - layouts/taxonomy/category.terms.rss.xml - layouts/taxonomy/terms.rss.xml - layouts/taxonomy/taxonomy.rss.xml - layouts/taxonomy/rss.xml - layouts/taxonomy/list.rss.xml - layouts/taxonomy/category.terms.xml - layouts/taxonomy/terms.xml - layouts/taxonomy/taxonomy.xml - layouts/taxonomy/list.xml - layouts/_default/category.terms.rss.xml - layouts/_default/terms.rss.xml - layouts/_default/taxonomy.rss.xml - layouts/_default/rss.xml - layouts/_default/list.rss.xml - layouts/_default/category.terms.xml - layouts/_default/terms.xml - layouts/_default/taxonomy.xml - layouts/_default/list.xml - layouts/_internal/_default/rss.xml - Example: Term list for "categories" Kind: term OutputFormat: html Suffix: html Template Lookup Order: - layouts/categories/term.html.html - layouts/categories/category.html.html - layouts/categories/taxonomy.html.html - layouts/categories/list.html.html - layouts/categories/term.html - layouts/categories/category.html - layouts/categories/taxonomy.html - layouts/categories/list.html - layouts/term/term.html.html - layouts/term/category.html.html - layouts/term/taxonomy.html.html - layouts/term/list.html.html - layouts/term/term.html - layouts/term/category.html - layouts/term/taxonomy.html - layouts/term/list.html - layouts/taxonomy/term.html.html - layouts/taxonomy/category.html.html - layouts/taxonomy/taxonomy.html.html - layouts/taxonomy/list.html.html - layouts/taxonomy/term.html - layouts/taxonomy/category.html - layouts/taxonomy/taxonomy.html - layouts/taxonomy/list.html - layouts/category/term.html.html - layouts/category/category.html.html - layouts/category/taxonomy.html.html - layouts/category/list.html.html - layouts/category/term.html - layouts/category/category.html - layouts/category/taxonomy.html - layouts/category/list.html - layouts/_default/term.html.html - layouts/_default/category.html.html - layouts/_default/taxonomy.html.html - layouts/_default/list.html.html - layouts/_default/term.html - layouts/_default/category.html - layouts/_default/taxonomy.html - layouts/_default/list.html - Example: Term list for "categories" Kind: term OutputFormat: rss Suffix: xml Template Lookup Order: - layouts/categories/term.rss.xml - layouts/categories/category.rss.xml - layouts/categories/taxonomy.rss.xml - layouts/categories/rss.xml - layouts/categories/list.rss.xml - layouts/categories/term.xml - layouts/categories/category.xml - layouts/categories/taxonomy.xml - layouts/categories/list.xml - layouts/term/term.rss.xml - layouts/term/category.rss.xml - layouts/term/taxonomy.rss.xml - layouts/term/rss.xml - layouts/term/list.rss.xml - layouts/term/term.xml - layouts/term/category.xml - layouts/term/taxonomy.xml - layouts/term/list.xml - layouts/taxonomy/term.rss.xml - layouts/taxonomy/category.rss.xml - layouts/taxonomy/taxonomy.rss.xml - layouts/taxonomy/rss.xml - layouts/taxonomy/list.rss.xml - layouts/taxonomy/term.xml - layouts/taxonomy/category.xml - layouts/taxonomy/taxonomy.xml - layouts/taxonomy/list.xml - layouts/category/term.rss.xml - layouts/category/category.rss.xml - layouts/category/taxonomy.rss.xml - layouts/category/rss.xml - layouts/category/list.rss.xml - layouts/category/term.xml - layouts/category/category.xml - layouts/category/taxonomy.xml - layouts/category/list.xml - layouts/_default/term.rss.xml - layouts/_default/category.rss.xml - layouts/_default/taxonomy.rss.xml - layouts/_default/rss.xml - layouts/_default/list.rss.xml - layouts/_default/term.xml - layouts/_default/category.xml - layouts/_default/taxonomy.xml - layouts/_default/list.xml - layouts/_internal/_default/rss.xml tpl: funcs: cast: ToFloat: Aliases: - float Args: - v Description: ToFloat converts v to a float. Examples: - - '{{ "1234" | float | printf "%T" }}' - float64 ToInt: Aliases: - int Args: - v Description: ToInt converts v to an int. Examples: - - '{{ "1234" | int | printf "%T" }}' - int ToString: Aliases: - string Args: - v Description: ToString converts v to a string. Examples: - - '{{ 1234 | string | printf "%T" }}' - string collections: After: Aliases: - after Args: - "n" - l Description: After returns all the items after the first n items in list l. Examples: [] Append: Aliases: - append Args: - args Description: "Append appends args up to the last one to the slice in the last argument.\nThis construct allows template constructs like this:\n\n\t{{ $pages = $pages | append $p2 $p1 }}\n\nNote that with 2 arguments where both are slices of the same type,\nthe first slice will be appended to the second:\n\n\t{{ $pages = $pages | append .Site.RegularPages }}" Examples: [] Apply: Aliases: - apply Args: - ctx - c - fname - args Description: Apply takes an array or slice c and returns a new slice with the function fname applied over it. Examples: [] Complement: Aliases: - complement Args: - ls Description: "Complement gives the elements in the last element of ls that are not in\nany of the others.\n\nAll elements of ls must be slices or arrays of comparable types.\n\nThe reasoning behind this rather clumsy API is so we can do this in the templates:\n\n\t{{ $c := .Pages | complement $last4 }}" Examples: - - '{{ slice "a" "b" "c" "d" "e" "f" | complement (slice "b" "c") (slice "d" "e") }}' - '[a f]' Delimit: Aliases: - delimit Args: - ctx - l - sep - last Description: |- Delimit takes a given list l and returns a string delimited by sep. If last is passed to the function, it will be used as the final delimiter. Examples: - - '{{ delimit (slice "A" "B" "C") ", " " and " }}' - A, B and C Dictionary: Aliases: - dict Args: - values Description: |- Dictionary creates a new map from the given parameters by treating values as key-value pairs. The number of values must be even. The keys can be string slices, which will create the needed nested structure. Examples: [] EchoParam: Aliases: - echoParam Args: - c - k Description: |- EchoParam returns the value in the collection c with key k if is set; otherwise, it returns an empty string. Deprecated: Use the index function instead. Examples: - - '{{ echoParam .Params "langCode" }}' - en First: Aliases: - first Args: - limit - l Description: First returns the first limit items in list l. Examples: [] Group: Aliases: - group Args: - key - items Description: |- Group groups a set of items by the given key. This is currently only supported for Pages. Examples: [] In: Aliases: - in Args: - l - v Description: In returns whether v is in the list l. l may be an array or slice. Examples: - - '{{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}' - Substring found! Index: Aliases: - index Args: - item - args Description: |- Index returns the result of indexing its first argument by the following arguments. Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each indexed item must be a map, slice, or array. Adapted from Go stdlib src/text/template/funcs.go. We deviate from the stdlib mostly because of https://github.com/golang/go/issues/14751. Examples: [] Intersect: Aliases: - intersect Args: - l1 - l2 Description: |- Intersect returns the common elements in the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices. Examples: [] IsSet: Aliases: - isSet - isset Args: - c - key Description: |- IsSet returns whether a given array, channel, slice, or map in c has the given key defined. Examples: [] KeyVals: Aliases: - keyVals Args: - key - values Description: KeyVals creates a key and values wrapper. Examples: - - '{{ keyVals "key" "a" "b" }}' - 'key: [a b]' Last: Aliases: - last Args: - limit - l Description: Last returns the last limit items in the list l. Examples: [] Merge: Aliases: - merge Args: - params Description: |- Merge creates a copy of the final parameter in params and merges the preceding parameters into it in reverse order. Currently only maps are supported. Key handling is case insensitive. Examples: - - '{{ dict "title" "Hugo Rocks!" | collections.Merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") | sort }}' - '[Yes, Hugo Rocks! Hugo Rocks!]' - - '{{ merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") (dict "title" "Hugo Rocks!") | sort }}' - '[Yes, Hugo Rocks! Hugo Rocks!]' - - '{{ merge (dict "title" "Default Title" "description" "Yes, Hugo Rocks!") (dict "title" "Hugo Rocks!") (dict "extra" "For reals!") | sort }}' - '[Yes, Hugo Rocks! For reals! Hugo Rocks!]' NewScratch: Aliases: - newScratch Args: null Description: |- NewScratch creates a new Scratch which can be used to store values in a thread safe way. Examples: - - '{{ $scratch := newScratch }}{{ $scratch.Add "b" 2 }}{{ $scratch.Add "b" 2 }}{{ $scratch.Get "b" }}' - "4" Querify: Aliases: - querify Args: - params Description: Querify encodes the given params in URL-encoded form ("bar=baz&foo=quux") sorted by key. Examples: - - '{{ (querify "foo" 1 "bar" 2 "baz" "with spaces" "qux" "this&that=those") | safeHTML }}' - bar=2&baz=with+spaces&foo=1&qux=this%26that%3Dthose - - Search - Search - - '{{ slice "foo" 1 "bar" 2 | querify | safeHTML }}' - bar=2&foo=1 Reverse: Aliases: null Args: null Description: "" Examples: null Seq: Aliases: - seq Args: - args Description: "Seq creates a sequence of integers from args. It's named and used as GNU's seq.\n\nExamples:\n\n\t3 => 1, 2, 3\n\t1 2 4 => 1, 3\n\t-3 => -1, -2, -3\n\t1 4 => 1, 2, 3, 4\n\t1 -2 => 1, 0, -1, -2" Examples: - - '{{ seq 3 }}' - '[1 2 3]' Shuffle: Aliases: - shuffle Args: - l Description: Shuffle returns list l in a randomized order. Examples: [] Slice: Aliases: - slice Args: - args Description: Slice returns a slice of all passed arguments. Examples: - - '{{ slice "B" "C" "A" | sort }}' - '[A B C]' Sort: Aliases: - sort Args: - ctx - l - args Description: Sort returns a sorted copy of the list l. Examples: [] SymDiff: Aliases: - symdiff Args: - s2 - s1 Description: |- SymDiff returns the symmetric difference of s1 and s2. Arguments must be either a slice or an array of comparable types. Examples: - - '{{ slice 1 2 3 | symdiff (slice 3 4) }}' - '[1 2 4]' Union: Aliases: - union Args: - l1 - l2 Description: |- Union returns the union of the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices. If l1 and l2 aren't of the same type then l1 will be returned. If either l1 or l2 is nil then the non-nil list will be returned. Examples: - - '{{ union (slice 1 2 3) (slice 3 4 5) }}' - '[1 2 3 4 5]' Uniq: Aliases: - uniq Args: - l Description: Uniq returns a new list with duplicate elements in the list l removed. Examples: - - '{{ slice 1 2 3 2 | uniq }}' - '[1 2 3]' Where: Aliases: - where Args: - ctx - c - key - args Description: Where returns a filtered subset of collection c. Examples: [] compare: Conditional: Aliases: - cond Args: - cond - v1 - v2 Description: |- Conditional can be used as a ternary operator. It returns v1 if cond is true, else v2. Examples: - - '{{ cond (eq (add 2 2) 4) "2+2 is 4" "what?" | safeHTML }}' - 2+2 is 4 Default: Aliases: - default Args: - defaultv - givenv Description: |- Default checks whether a givenv is set and returns the default value defaultv if it is not. "Set" in this context means non-zero for numeric types and times; non-zero length for strings, arrays, slices, and maps; any boolean or struct value; or non-nil for any other types. Examples: - - '{{ "Hugo Rocks!" | default "Hugo Rules!" }}' - Hugo Rocks! - - '{{ "" | default "Hugo Rules!" }}' - Hugo Rules! Eq: Aliases: - eq Args: - first - others Description: Eq returns the boolean truth of arg1 == arg2 || arg1 == arg3 || arg1 == arg4. Examples: - - '{{ if eq .Section "blog" }}current-section{{ end }}' - current-section Ge: Aliases: - ge Args: - first - others Description: Ge returns the boolean truth of arg1 >= arg2 && arg1 >= arg3 && arg1 >= arg4. Examples: - - '{{ if ge hugo.Version "0.80" }}Reasonable new Hugo version!{{ end }}' - Reasonable new Hugo version! Gt: Aliases: - gt Args: - first - others Description: Gt returns the boolean truth of arg1 > arg2 && arg1 > arg3 && arg1 > arg4. Examples: [] Le: Aliases: - le Args: - first - others Description: Le returns the boolean truth of arg1 <= arg2 && arg1 <= arg3 && arg1 <= arg4. Examples: [] Lt: Aliases: - lt Args: - first - others Description: Lt returns the boolean truth of arg1 < arg2 && arg1 < arg3 && arg1 < arg4. Examples: [] LtCollate: Aliases: null Args: null Description: "" Examples: null Ne: Aliases: - ne Args: - first - others Description: Ne returns the boolean truth of arg1 != arg2 && arg1 != arg3 && arg1 != arg4. Examples: [] crypto: FNV32a: Aliases: null Args: null Description: "" Examples: null HMAC: Aliases: - hmac Args: - h - k - m - e Description: HMAC returns a cryptographic hash that uses a key to sign a message. Examples: - - '{{ hmac "sha256" "Secret key" "Hello world, gophers!" }}' - b6d11b6c53830b9d87036272ca9fe9d19306b8f9d8aa07b15da27d89e6e34f40 MD5: Aliases: - md5 Args: - v Description: MD5 hashes the v and returns its MD5 checksum. Examples: - - '{{ md5 "Hello world, gophers!" }}' - b3029f756f98f79e7f1b7f1d1f0dd53b - - '{{ crypto.MD5 "Hello world, gophers!" }}' - b3029f756f98f79e7f1b7f1d1f0dd53b SHA1: Aliases: - sha1 Args: - v Description: SHA1 hashes v and returns its SHA1 checksum. Examples: - - '{{ sha1 "Hello world, gophers!" }}' - c8b5b0e33d408246e30f53e32b8f7627a7a649d4 SHA256: Aliases: - sha256 Args: - v Description: SHA256 hashes v and returns its SHA256 checksum. Examples: - - '{{ sha256 "Hello world, gophers!" }}' - 6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46 css: PostCSS: Aliases: - postCSS Args: - args Description: PostCSS processes the given Resource with PostCSS. Examples: [] Quoted: Aliases: null Args: null Description: "" Examples: null Sass: Aliases: - toCSS Args: - args Description: Sass processes the given Resource with SASS. Examples: [] TailwindCSS: Aliases: null Args: null Description: "" Examples: null Unquoted: Aliases: null Args: null Description: "" Examples: null data: GetCSV: Aliases: - getCSV Args: - sep - args Description: |- GetCSV expects the separator sep and one or n-parts of a URL to a resource which can either be a local or a remote one. The data separator can be a comma, semi-colon, pipe, etc, but only one character. If you provide multiple parts for the URL they will be joined together to the final URL. GetCSV returns nil or a slice slice to use in a short code. Examples: [] GetJSON: Aliases: - getJSON Args: - args Description: |- GetJSON expects one or n-parts of a URL in args to a resource which can either be a local or a remote one. If you provide multiple parts they will be joined together to the final URL. GetJSON returns nil or parsed JSON to use in a short code. Examples: [] debug: Dump: Aliases: null Args: - val Description: |- Dump returns a object dump of val as a string. Note that not every value passed to Dump will print so nicely, but we'll improve on that. We recommend using the "go" Chroma lexer to format the output nicely. Also note that the output from Dump may change from Hugo version to the next, so don't depend on a specific output. Examples: - - |- {{ $m := newScratch }} {{ $m.Set "Hugo" "Rocks!" }} {{ $m.Values | debug.Dump | safeHTML }} - |- { "Hugo": "Rocks!" } TestDeprecationErr: Aliases: null Args: null Description: "" Examples: null TestDeprecationInfo: Aliases: null Args: null Description: "" Examples: null TestDeprecationWarn: Aliases: null Args: null Description: "" Examples: null Timer: Aliases: null Args: null Description: "" Examples: null VisualizeSpaces: Aliases: null Args: null Description: "" Examples: null diagrams: Goat: Aliases: null Args: null Description: "" Examples: null encoding: Base64Decode: Aliases: - base64Decode Args: - content Description: Base64Decode returns the base64 decoding of the given content. Examples: - - '{{ "SGVsbG8gd29ybGQ=" | base64Decode }}' - Hello world - - '{{ 42 | base64Encode | base64Decode }}' - "42" Base64Encode: Aliases: - base64Encode Args: - content Description: Base64Encode returns the base64 encoding of the given content. Examples: - - '{{ "Hello world" | base64Encode }}' - SGVsbG8gd29ybGQ= Jsonify: Aliases: - jsonify Args: - args Description: |- Jsonify encodes a given object to JSON. To pretty print the JSON, pass a map or dictionary of options as the first value in args. Supported options are "prefix" and "indent". Each JSON element in the output will begin on a new line beginning with prefix followed by one or more copies of indent according to the indentation nesting. Examples: - - '{{ (slice "A" "B" "C") | jsonify }}' - '["A","B","C"]' - - '{{ (slice "A" "B" "C") | jsonify (dict "indent" " ") }}' - |- [ "A", "B", "C" ] fmt: Errorf: Aliases: - errorf Args: - format - args Description: |- Errorf formats args according to a format specifier and logs an ERROR. It returns an empty string. Examples: - - '{{ errorf "%s." "failed" }}' - "" Erroridf: Aliases: - erroridf Args: - id - format - args Description: |- Erroridf formats args according to a format specifier and logs an ERROR and an information text that the error with the given id can be suppressed in config. It returns an empty string. Examples: - - '{{ erroridf "my-err-id" "%s." "failed" }}' - "" Errormf: Aliases: null Args: null Description: "" Examples: null Print: Aliases: - print Args: - args Description: Print returns a string representation of args. Examples: - - '{{ print "works!" }}' - works! Printf: Aliases: - printf Args: - format - args Description: Printf returns string representation of args formatted with the layout in format. Examples: - - '{{ printf "%s!" "works" }}' - works! Println: Aliases: - println Args: - args Description: Println returns string representation of args ending with a newline. Examples: - - '{{ println "works!" }}' - | works! Warnf: Aliases: - warnf Args: - format - args Description: |- Warnf formats args according to a format specifier and logs a WARNING. It returns an empty string. Examples: - - '{{ warnf "%s." "warning" }}' - "" Warnidf: Aliases: - warnidf Args: - id - format - args Description: |- Warnidf formats args according to a format specifier and logs an WARNING and an information text that the warning with the given id can be suppressed in config. It returns an empty string. Examples: - - '{{ warnidf "my-warn-id" "%s." "warning" }}' - "" Warnmf: Aliases: null Args: null Description: "" Examples: null hash: FNV32a: Aliases: null Args: - v Description: FNV32a hashes v using fnv32a algorithm. Examples: - - '{{ hash.FNV32a "Hugo Rocks!!" }}' - "1515779328" XxHash: Aliases: - xxhash Args: - v Description: XxHash returns the xxHash of the input string. Examples: - - '{{ hash.XxHash "The quick brown fox jumps over the lazy dog" }}' - 0b242d361fda71bc hugo: Deps: Aliases: null Args: null Description: "" Examples: null Generator: Aliases: null Args: null Description: "" Examples: null IsDevelopment: Aliases: null Args: null Description: "" Examples: null IsExtended: Aliases: null Args: null Description: "" Examples: null IsMultiHost: Aliases: null Args: null Description: "" Examples: null IsMultihost: Aliases: null Args: null Description: "" Examples: null IsMultilingual: Aliases: null Args: null Description: "" Examples: null IsProduction: Aliases: null Args: null Description: "" Examples: null IsServer: Aliases: null Args: null Description: "" Examples: null Version: Aliases: null Args: null Description: "" Examples: null WorkingDir: Aliases: null Args: null Description: "" Examples: null images: AutoOrient: Aliases: null Args: null Description: "" Examples: null Brightness: Aliases: null Args: null Description: "" Examples: null ColorBalance: Aliases: null Args: null Description: "" Examples: null Colorize: Aliases: null Args: null Description: "" Examples: null Config: Aliases: - imageConfig Args: - path Description: |- Config returns the image.Config for the specified path relative to the working directory. Examples: [] Contrast: Aliases: null Args: null Description: "" Examples: null Dither: Aliases: null Args: null Description: "" Examples: null Filter: Aliases: null Args: null Description: "" Examples: null Gamma: Aliases: null Args: null Description: "" Examples: null GaussianBlur: Aliases: null Args: null Description: "" Examples: null Grayscale: Aliases: null Args: null Description: "" Examples: null Hue: Aliases: null Args: null Description: "" Examples: null Invert: Aliases: null Args: null Description: "" Examples: null Opacity: Aliases: null Args: null Description: "" Examples: null Overlay: Aliases: null Args: null Description: "" Examples: null Padding: Aliases: null Args: null Description: "" Examples: null Pixelate: Aliases: null Args: null Description: "" Examples: null Process: Aliases: null Args: null Description: "" Examples: null Saturation: Aliases: null Args: null Description: "" Examples: null Sepia: Aliases: null Args: null Description: "" Examples: null Sigmoid: Aliases: null Args: null Description: "" Examples: null Text: Aliases: null Args: null Description: "" Examples: null UnsharpMask: Aliases: null Args: null Description: "" Examples: null inflect: Humanize: Aliases: - humanize Args: - v Description: |- Humanize returns the humanized form of v. If v is either an integer or a string containing an integer value, the behavior is to add the appropriate ordinal. Examples: - - '{{ humanize "my-first-post" }}' - My first post - - '{{ humanize "myCamelPost" }}' - My camel post - - '{{ humanize "52" }}' - 52nd - - '{{ humanize 103 }}' - 103rd Pluralize: Aliases: - pluralize Args: - v Description: Pluralize returns the plural form of the single word in v. Examples: - - '{{ "cat" | pluralize }}' - cats Singularize: Aliases: - singularize Args: - v Description: Singularize returns the singular form of a single word in v. Examples: - - '{{ "cats" | singularize }}' - cat js: Babel: Aliases: - babel Args: - args Description: Babel processes the given Resource with Babel. Examples: [] Build: Aliases: null Args: null Description: "" Examples: null lang: FormatAccounting: Aliases: null Args: - precision - currency - number Description: |- FormatAccounting returns the currency representation of number for the given currency and precision for the current language in accounting notation. The return value is formatted with at least two decimal places. Examples: - - '{{ 512.5032 | lang.FormatAccounting 2 "NOK" }}' - NOK512.50 FormatCurrency: Aliases: null Args: - precision - currency - number Description: |- FormatCurrency returns the currency representation of number for the given currency and precision for the current language. The return value is formatted with at least two decimal places. Examples: - - '{{ 512.5032 | lang.FormatCurrency 2 "USD" }}' - $512.50 FormatNumber: Aliases: null Args: - precision - number Description: FormatNumber formats number with the given precision for the current language. Examples: - - '{{ 512.5032 | lang.FormatNumber 2 }}' - "512.50" FormatNumberCustom: Aliases: null Args: - precision - number - options Description: |- FormatNumberCustom formats a number with the given precision. The first options parameter is a space-delimited string of characters to represent negativity, the decimal point, and grouping. The default value is `- . ,`. The second options parameter defines an alternate delimiting character. Note that numbers are rounded up at 5 or greater. So, with precision set to 0, 1.5 becomes `2`, and 1.4 becomes `1`. For a simpler function that adapts to the current language, see FormatNumber. Examples: - - '{{ lang.FormatNumberCustom 2 12345.6789 }}' - 12,345.68 - - '{{ lang.FormatNumberCustom 2 12345.6789 "- , ." }}' - 12.345,68 - - '{{ lang.FormatNumberCustom 6 -12345.6789 "- ." }}' - "-12345.678900" - - '{{ lang.FormatNumberCustom 0 -12345.6789 "- . ," }}' - -12,346 - - '{{ lang.FormatNumberCustom 0 -12345.6789 "-|.| " "|" }}' - -12 346 - - '{{ -98765.4321 | lang.FormatNumberCustom 2 }}' - -98,765.43 FormatPercent: Aliases: null Args: - precision - number Description: |- FormatPercent formats number with the given precision for the current language. Note that the number is assumed to be a percentage. Examples: - - '{{ 512.5032 | lang.FormatPercent 2 }}' - 512.50% Merge: Aliases: null Args: null Description: "" Examples: null NumFmt: Aliases: null Args: null Description: "" Examples: null Translate: Aliases: - i18n - T Args: - ctx - id - args Description: Translate returns a translated string for id. Examples: [] math: Abs: Aliases: null Args: - "n" Description: Abs returns the absolute value of n. Examples: - - '{{ math.Abs -2.1 }}' - "2.1" Acos: Aliases: null Args: - "n" Description: Acos returns the arccosine, in radians, of n. Examples: - - '{{ math.Acos 1 }}' - "0" Add: Aliases: - add Args: - inputs Description: Add adds the multivalued addends n1 and n2 or more values. Examples: - - '{{ add 1 2 }}' - "3" Asin: Aliases: null Args: - "n" Description: Asin returns the arcsine, in radians, of n. Examples: - - '{{ math.Asin 1 }}' - "1.5707963267948966" Atan: Aliases: null Args: - "n" Description: Atan returns the arctangent, in radians, of n. Examples: - - '{{ math.Atan 1 }}' - "0.7853981633974483" Atan2: Aliases: null Args: - "n" - m Description: Atan2 returns the arc tangent of n/m, using the signs of the two to determine the quadrant of the return value. Examples: - - '{{ math.Atan2 1 2 }}' - "0.4636476090008061" Ceil: Aliases: null Args: - "n" Description: Ceil returns the least integer value greater than or equal to n. Examples: - - '{{ math.Ceil 2.1 }}' - "3" Cos: Aliases: null Args: - "n" Description: Cos returns the cosine of the radian argument n. Examples: - - '{{ math.Cos 1 }}' - "0.5403023058681398" Counter: Aliases: null Args: null Description: "" Examples: null Div: Aliases: - div Args: - inputs Description: Div divides n1 by n2. Examples: - - '{{ div 6 3 }}' - "2" Floor: Aliases: null Args: - "n" Description: Floor returns the greatest integer value less than or equal to n. Examples: - - '{{ math.Floor 1.9 }}' - "1" Log: Aliases: null Args: - "n" Description: Log returns the natural logarithm of the number n. Examples: - - '{{ math.Log 1 }}' - "0" Max: Aliases: null Args: - inputs Description: Max returns the greater of all numbers in inputs. Any slices in inputs are flattened. Examples: - - '{{ math.Max 1 2 }}' - "2" Min: Aliases: null Args: - inputs Description: Min returns the smaller of all numbers in inputs. Any slices in inputs are flattened. Examples: - - '{{ math.Min 1 2 }}' - "1" Mod: Aliases: - mod Args: - n1 - n2 Description: Mod returns n1 % n2. Examples: - - '{{ mod 15 3 }}' - "0" ModBool: Aliases: - modBool Args: - n1 - n2 Description: ModBool returns the boolean of n1 % n2. If n1 % n2 == 0, return true. Examples: - - '{{ modBool 15 3 }}' - "true" Mul: Aliases: - mul Args: - inputs Description: Mul multiplies the multivalued numbers n1 and n2 or more values. Examples: - - '{{ mul 2 3 }}' - "6" Pi: Aliases: null Args: null Description: Pi returns the mathematical constant pi. Examples: - - '{{ math.Pi }}' - "3.141592653589793" Pow: Aliases: - pow Args: - n1 - n2 Description: Pow returns n1 raised to the power of n2. Examples: - - '{{ math.Pow 2 3 }}' - "8" Product: Aliases: null Args: null Description: "" Examples: null Rand: Aliases: null Args: null Description: Rand returns, as a float64, a pseudo-random number in the half-open interval [0.0,1.0). Examples: - - '{{ math.Rand }}' - "0.6312770459590062" Round: Aliases: null Args: - "n" Description: Round returns the integer nearest to n, rounding half away from zero. Examples: - - '{{ math.Round 1.5 }}' - "2" Sin: Aliases: null Args: - "n" Description: Sin returns the sine of the radian argument n. Examples: - - '{{ math.Sin 1 }}' - "0.8414709848078965" Sqrt: Aliases: null Args: - "n" Description: Sqrt returns the square root of the number n. Examples: - - '{{ math.Sqrt 81 }}' - "9" Sub: Aliases: - sub Args: - inputs Description: Sub subtracts multivalued. Examples: - - '{{ sub 3 2 }}' - "1" Sum: Aliases: null Args: null Description: "" Examples: null Tan: Aliases: null Args: - "n" Description: Tan returns the tangent of the radian argument n. Examples: - - '{{ math.Tan 1 }}' - "1.557407724654902" ToDegrees: Aliases: null Args: - "n" Description: ToDegrees converts radians into degrees. Examples: - - '{{ math.ToDegrees 1.5707963267948966 }}' - "90" ToRadians: Aliases: null Args: - "n" Description: ToRadians converts degrees into radians. Examples: - - '{{ math.ToRadians 90 }}' - "1.5707963267948966" openapi3: Unmarshal: Aliases: null Args: null Description: "" Examples: [] os: FileExists: Aliases: - fileExists Args: - i Description: FileExists checks whether a file exists under the given path. Examples: - - '{{ fileExists "foo.txt" }}' - "false" Getenv: Aliases: - getenv Args: - key Description: |- Getenv retrieves the value of the environment variable named by the key. It returns the value, which will be empty if the variable is not present. Examples: [] ReadDir: Aliases: - readDir Args: - i Description: ReadDir lists the directory contents relative to the configured WorkingDir. Examples: - - '{{ range (readDir "files") }}{{ .Name }}{{ end }}' - README.txt ReadFile: Aliases: - readFile Args: - i Description: |- ReadFile reads the file named by filename relative to the configured WorkingDir. It returns the contents as a string. There is an upper size limit set at 1 megabytes. Examples: - - '{{ readFile "files/README.txt" }}' - Hugo Rocks! Stat: Aliases: null Args: null Description: "" Examples: null partials: Include: Aliases: - partial Args: - ctx - name - contextList Description: |- Include executes the named partial. If the partial contains a return statement, that value will be returned. Else, the rendered output will be returned: A string if the partial is a text/template, or template.HTML when html/template. Note that ctx is provided by Hugo, not the end user. Examples: - - '{{ partial "header.html" . }}' - Hugo Rocks! IncludeCached: Aliases: - partialCached Args: - ctx - name - context - variants Description: |- IncludeCached executes and caches partial templates. The cache is created with name+variants as the key. Note that ctx is provided by Hugo, not the end user. Examples: [] path: Base: Aliases: null Args: null Description: "" Examples: null BaseName: Aliases: null Args: null Description: "" Examples: null Clean: Aliases: null Args: null Description: "" Examples: null Dir: Aliases: null Args: null Description: "" Examples: null Ext: Aliases: null Args: null Description: "" Examples: null Join: Aliases: null Args: - elements Description: |- Join joins any number of path elements into a single path, adding a separating slash if necessary. All the input path elements are passed into filepath.ToSlash converting any Windows slashes to forward slashes. The result is Cleaned; in particular, all empty strings are ignored. Examples: - - '{{ slice "my/path" "filename.txt" | path.Join }}' - my/path/filename.txt - - '{{ path.Join "my" "path" "filename.txt" }}' - my/path/filename.txt - - '{{ "my/path/filename.txt" | path.Ext }}' - .txt - - '{{ "my/path/filename.txt" | path.Base }}' - filename.txt - - '{{ "my/path/filename.txt" | path.Dir }}' - my/path Split: Aliases: null Args: - path Description: |- Split splits path immediately following the final slash, separating it into a directory and file name component. If there is no slash in path, Split returns an empty dir and file set to path. The input path is passed into filepath.ToSlash converting any Windows slashes to forward slashes. The returned values have the property that path = dir+file. Examples: - - '{{ "/my/path/filename.txt" | path.Split }}' - /my/path/|filename.txt - - '{{ "/my/path/filename.txt" | path.Split }}' - /my/path/|filename.txt reflect: IsMap: Aliases: null Args: - v Description: IsMap reports whether v is a map. Examples: - - '{{ if reflect.IsMap (dict "a" 1) }}Map{{ end }}' - Map IsSlice: Aliases: null Args: - v Description: IsSlice reports whether v is a slice. Examples: - - '{{ if reflect.IsSlice (slice 1 2 3) }}Slice{{ end }}' - Slice resources: Babel: Aliases: null Args: null Description: "" Examples: null ByType: Aliases: null Args: null Description: "" Examples: null Concat: Aliases: null Args: null Description: "" Examples: null Copy: Aliases: null Args: null Description: "" Examples: null ExecuteAsTemplate: Aliases: null Args: null Description: "" Examples: null Fingerprint: Aliases: - fingerprint Args: - args Description: |- Fingerprint transforms the given Resource with a MD5 hash of the content in the RelPermalink and Permalink. Examples: [] FromString: Aliases: null Args: null Description: "" Examples: null Get: Aliases: null Args: - filename Description: |- Get locates the filename given in Hugo's assets filesystem and creates a Resource object that can be used for further transformations. Examples: [] GetMatch: Aliases: null Args: null Description: "" Examples: null GetRemote: Aliases: null Args: - args Description: |- GetRemote gets the URL (via HTTP(s)) in the first argument in args and creates Resource object that can be used for further transformations. A second argument may be provided with an option map. Note: This method does not return any error as a second return value, for any error situations the error can be checked in .Err. Examples: [] Match: Aliases: null Args: null Description: "" Examples: null Minify: Aliases: - minify Args: - r Description: |- Minify minifies the given Resource using the MediaType to pick the correct minifier. Examples: [] PostCSS: Aliases: null Args: null Description: "" Examples: null PostProcess: Aliases: null Args: null Description: "" Examples: null ToCSS: Aliases: null Args: null Description: "" Examples: null safe: CSS: Aliases: - safeCSS Args: - s Description: CSS returns the string s as html/template CSS content. Examples: - - '{{ "Bat&Man" | safeCSS | safeCSS }}' - Bat&Man HTML: Aliases: - safeHTML Args: - s Description: HTML returns the string s as html/template HTML content. Examples: - - '{{ "Bat&Man" | safeHTML | safeHTML }}' - Bat&Man - - '{{ "Bat&Man" | safeHTML }}' - Bat&Man HTMLAttr: Aliases: - safeHTMLAttr Args: - s Description: HTMLAttr returns the string s as html/template HTMLAttr content. Examples: [] JS: Aliases: - safeJS Args: - s Description: JS returns the given string as a html/template JS content. Examples: - - '{{ "(1*2)" | safeJS | safeJS }}' - (1*2) JSStr: Aliases: - safeJSStr Args: - s Description: JSStr returns the given string as a html/template JSStr content. Examples: [] URL: Aliases: - safeURL Args: - s Description: URL returns the string s as html/template URL content. Examples: - - '{{ "http://gohugo.io" | safeURL | safeURL }}' - http://gohugo.io site: AllPages: Aliases: null Args: null Description: "" Examples: null Author: Aliases: null Args: null Description: "" Examples: null Authors: Aliases: null Args: null Description: "" Examples: null BaseURL: Aliases: null Args: null Description: "" Examples: null BuildDrafts: Aliases: null Args: null Description: "" Examples: null CheckReady: Aliases: null Args: null Description: "" Examples: null Config: Aliases: null Args: null Description: "" Examples: null Copyright: Aliases: null Args: null Description: "" Examples: null Current: Aliases: null Args: null Description: "" Examples: null Data: Aliases: null Args: null Description: "" Examples: null DisqusShortname: Aliases: null Args: null Description: "" Examples: null ForEeachIdentityByName: Aliases: null Args: null Description: "" Examples: null GetPage: Aliases: null Args: null Description: "" Examples: null GoogleAnalytics: Aliases: null Args: null Description: "" Examples: null Home: Aliases: null Args: null Description: "" Examples: null Hugo: Aliases: null Args: null Description: "" Examples: null IsMultiLingual: Aliases: null Args: null Description: "" Examples: null IsServer: Aliases: null Args: null Description: "" Examples: null Key: Aliases: null Args: null Description: "" Examples: null Language: Aliases: null Args: null Description: "" Examples: null LanguageCode: Aliases: null Args: null Description: "" Examples: null LanguagePrefix: Aliases: null Args: null Description: "" Examples: null Languages: Aliases: null Args: null Description: "" Examples: null LastChange: Aliases: null Args: null Description: "" Examples: null Lastmod: Aliases: null Args: null Description: "" Examples: null MainSections: Aliases: null Args: null Description: "" Examples: null Menus: Aliases: null Args: null Description: "" Examples: null Pages: Aliases: null Args: null Description: "" Examples: null Param: Aliases: null Args: null Description: "" Examples: null Params: Aliases: null Args: null Description: "" Examples: null RSSLink: Aliases: null Args: null Description: "" Examples: null RegularPages: Aliases: null Args: null Description: "" Examples: null Sections: Aliases: null Args: null Description: "" Examples: null ServerPort: Aliases: null Args: null Description: "" Examples: null Sites: Aliases: null Args: null Description: "" Examples: null Social: Aliases: null Args: null Description: "" Examples: null Taxonomies: Aliases: null Args: null Description: "" Examples: null Title: Aliases: null Args: null Description: "" Examples: null strings: Chomp: Aliases: - chomp Args: - s Description: Chomp returns a copy of s with all trailing newline characters removed. Examples: - - '{{ chomp "

        Blockhead

        \n" | safeHTML }}' -

        Blockhead

        Contains: Aliases: null Args: - s - substr Description: Contains reports whether substr is in s. Examples: - - '{{ strings.Contains "abc" "b" }}' - "true" - - '{{ strings.Contains "abc" "d" }}' - "false" ContainsAny: Aliases: null Args: - s - chars Description: ContainsAny reports whether any Unicode code points in chars are within s. Examples: - - '{{ strings.ContainsAny "abc" "bcd" }}' - "true" - - '{{ strings.ContainsAny "abc" "def" }}' - "false" ContainsNonSpace: Aliases: null Args: null Description: "" Examples: null Count: Aliases: null Args: - substr - s Description: |- Count counts the number of non-overlapping instances of substr in s. If substr is an empty string, Count returns 1 + the number of Unicode code points in s. Examples: - - '{{ "aabab" | strings.Count "a" }}' - "3" CountRunes: Aliases: - countrunes Args: - s Description: CountRunes returns the number of runes in s, excluding whitespace. Examples: [] CountWords: Aliases: - countwords Args: - s Description: CountWords returns the approximate word count in s. Examples: [] Diff: Aliases: null Args: null Description: "" Examples: null FindRE: Aliases: - findRE Args: - expr - content - limit Description: |- FindRE returns a list of strings that match the regular expression. By default all matches will be included. The number of matches can be limited with an optional third parameter. Examples: - - '{{ findRE "[G|g]o" "Hugo is a static side generator written in Go." 1 }}' - '[go]' FindRESubmatch: Aliases: - findRESubmatch Args: - expr - content - limit Description: |- FindRESubmatch returns a slice of all successive matches of the regular expression in content. Each element is a slice of strings holding the text of the leftmost match of the regular expression and the matches, if any, of its subexpressions. By default all matches will be included. The number of matches can be limited with the optional limit parameter. A return value of nil indicates no match. Examples: - - '{{ findRESubmatch `(.+?)` `
      3. Foo
      4. Bar
      5. ` | print | safeHTML }}' - '[[Foo #foo Foo] [Bar #bar Bar]]' FirstUpper: Aliases: null Args: - s Description: FirstUpper converts s making the first character upper case. Examples: - - '{{ "hugo rocks!" | strings.FirstUpper }}' - Hugo rocks! HasPrefix: Aliases: - hasPrefix Args: - s - prefix Description: HasPrefix tests whether the input s begins with prefix. Examples: - - '{{ hasPrefix "Hugo" "Hu" }}' - "true" - - '{{ hasPrefix "Hugo" "Fu" }}' - "false" HasSuffix: Aliases: - hasSuffix Args: - s - suffix Description: HasSuffix tests whether the input s begins with suffix. Examples: - - '{{ hasSuffix "Hugo" "go" }}' - "true" - - '{{ hasSuffix "Hugo" "du" }}' - "false" Repeat: Aliases: null Args: - "n" - s Description: Repeat returns a new string consisting of n copies of the string s. Examples: - - '{{ "yo" | strings.Repeat 4 }}' - yoyoyoyo Replace: Aliases: - replace Args: - s - old - new - limit Description: |- Replace returns a copy of the string s with all occurrences of old replaced with new. The number of replacements can be limited with an optional fourth parameter. Examples: - - '{{ replace "Batman and Robin" "Robin" "Catwoman" }}' - Batman and Catwoman - - '{{ replace "aabbaabb" "a" "z" 2 }}' - zzbbaabb ReplaceRE: Aliases: - replaceRE Args: - pattern - repl - s - "n" Description: |- ReplaceRE returns a copy of s, replacing all matches of the regular expression pattern with the replacement text repl. The number of replacements can be limited with an optional fourth parameter. Examples: - - '{{ replaceRE "a+b" "X" "aabbaabbab" }}' - XbXbX - - '{{ replaceRE "a+b" "X" "aabbaabbab" 1 }}' - Xbaabbab RuneCount: Aliases: null Args: - s Description: RuneCount returns the number of runes in s. Examples: [] SliceString: Aliases: - slicestr Args: - a - startEnd Description: |- SliceString slices a string by specifying a half-open range with two indices, start and end. 1 and 4 creates a slice including elements 1 through 3. The end index can be omitted, it defaults to the string's length. Examples: - - '{{ slicestr "BatMan" 0 3 }}' - Bat - - '{{ slicestr "BatMan" 3 }}' - Man Split: Aliases: - split Args: - a - delimiter Description: Split slices an input string into all substrings separated by delimiter. Examples: [] Substr: Aliases: - substr Args: - a - nums Description: |- Substr extracts parts of a string, beginning at the character at the specified position, and returns the specified number of characters. It normally takes two parameters: start and length. It can also take one parameter: start, i.e. length is omitted, in which case the substring starting from start until the end of the string will be returned. To extract characters from the end of the string, use a negative start number. In addition, borrowing from the extended behavior described at http://php.net/substr, if length is given and is negative, then that many characters will be omitted from the end of string. Examples: - - '{{ substr "BatMan" 0 -3 }}' - Bat - - '{{ substr "BatMan" 3 3 }}' - Man Title: Aliases: - title Args: - s Description: |- Title returns a copy of the input s with all Unicode letters that begin words mapped to their title case. Examples: - - '{{ title "Bat man" }}' - Bat Man - - '{{ title "somewhere over the rainbow" }}' - Somewhere Over the Rainbow ToLower: Aliases: - lower Args: - s Description: |- ToLower returns a copy of the input s with all Unicode letters mapped to their lower case. Examples: - - '{{ lower "BatMan" }}' - batman ToUpper: Aliases: - upper Args: - s Description: |- ToUpper returns a copy of the input s with all Unicode letters mapped to their upper case. Examples: - - '{{ upper "BatMan" }}' - BATMAN Trim: Aliases: - trim Args: - s - cutset Description: |- Trim returns converts the strings s removing all leading and trailing characters defined contained. Examples: - - '{{ trim "++Batman--" "+-" }}' - Batman TrimLeft: Aliases: null Args: - cutset - s Description: |- TrimLeft returns a slice of the string s with all leading characters contained in cutset removed. Examples: - - '{{ "aabbaa" | strings.TrimLeft "a" }}' - bbaa TrimPrefix: Aliases: null Args: - prefix - s Description: |- TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged. Examples: - - '{{ "aabbaa" | strings.TrimPrefix "a" }}' - abbaa - - '{{ "aabbaa" | strings.TrimPrefix "aa" }}' - bbaa TrimRight: Aliases: null Args: - cutset - s Description: |- TrimRight returns a slice of the string s with all trailing characters contained in cutset removed. Examples: - - '{{ "aabbaa" | strings.TrimRight "a" }}' - aabb TrimSuffix: Aliases: null Args: - suffix - s Description: |- TrimSuffix returns s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged. Examples: - - '{{ "aabbaa" | strings.TrimSuffix "a" }}' - aabba - - '{{ "aabbaa" | strings.TrimSuffix "aa" }}' - aabb Truncate: Aliases: - truncate Args: - s - options Description: Truncate truncates the string in s to the specified length. Examples: - - '{{ "this is a very long text" | truncate 10 " ..." }}' - this is a ... - - '{{ "With [Markdown](/markdown) inside." | markdownify | truncate 14 }}' - With Markdown … templates: Defer: Aliases: null Args: - args Description: Defer defers the execution of a template block. Examples: [] DoDefer: Aliases: - doDefer Args: - ctx - id - optsv Description: |- DoDefer defers the execution of a template block. For internal use only. Examples: [] Exists: Aliases: null Args: - name Description: |- Exists returns whether the template with the given name exists. Note that this is the Unix-styled relative path including filename suffix, e.g. partials/header.html Examples: - - '{{ if (templates.Exists "partials/header.html") }}Yes!{{ end }}' - Yes! - - '{{ if not (templates.Exists "partials/doesnotexist.html") }}No!{{ end }}' - No! time: AsTime: Aliases: null Args: - v - args Description: |- AsTime converts the textual representation of the datetime string into a time.Time interface. Examples: - - '{{ (time "2015-01-21").Year }}' - "2015" Duration: Aliases: - duration Args: - unit - number Description: |- Duration converts the given number to a time.Duration. Unit is one of nanosecond/ns, microsecond/us/µs, millisecond/ms, second/s, minute/m or hour/h. Examples: - - '{{ mul 60 60 | duration "second" }}' - 1h0m0s Format: Aliases: - dateFormat Args: - layout - v Description: |- Format converts the textual representation of the datetime string in v into time.Time if needed and formats it with the given layout. Examples: - - 'dateFormat: {{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }}' - 'dateFormat: Wednesday, Jan 21, 2015' Now: Aliases: - now Args: null Description: Now returns the current local time or `clock` time Examples: [] ParseDuration: Aliases: null Args: - s Description: |- ParseDuration parses the duration string s. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". See https://golang.org/pkg/time/#ParseDuration Examples: - - '{{ "1h12m10s" | time.ParseDuration }}' - 1h12m10s transform: CanHighlight: Aliases: null Args: null Description: "" Examples: null Emojify: Aliases: - emojify Args: - s Description: |- Emojify returns a copy of s with all emoji codes replaced with actual emojis. See http://www.emoji-cheat-sheet.com/ Examples: - - '{{ "I :heart: Hugo" | emojify }}' - I ❤️ Hugo HTMLEscape: Aliases: - htmlEscape Args: - s Description: HTMLEscape returns a copy of s with reserved HTML characters escaped. Examples: - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " | safeHTML }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " }}' - Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt; - - '{{ htmlEscape "Cathal Garvey & The Sunshine Band " | htmlUnescape | safeHTML }}' - Cathal Garvey & The Sunshine Band HTMLUnescape: Aliases: - htmlUnescape Args: - s Description: |- HTMLUnescape returns a copy of s with HTML escape requences converted to plain text. Examples: - - '{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | safeHTML }}' - Cathal Garvey & The Sunshine Band - - '{{ "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape | safeHTML }}' - Cathal Garvey & The Sunshine Band - - '{{ "Cathal Garvey &amp; The Sunshine Band &lt;cathal@foo.bar&gt;" | htmlUnescape | htmlUnescape }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> - - '{{ htmlUnescape "Cathal Garvey & The Sunshine Band <cathal@foo.bar>" | htmlEscape | safeHTML }}' - Cathal Garvey & The Sunshine Band <cathal@foo.bar> Highlight: Aliases: - highlight Args: - s - lang - opts Description: |- Highlight returns a copy of s as an HTML string with syntax highlighting applied. Examples: [] HighlightCodeBlock: Aliases: null Args: null Description: "" Examples: null Markdownify: Aliases: - markdownify Args: - ctx - s Description: Markdownify renders s from Markdown to HTML. Examples: - - '{{ .Title | markdownify }}' - BatMan Plainify: Aliases: - plainify Args: - s Description: Plainify returns a copy of s with all HTML tags removed. Examples: - - '{{ plainify "Hello world, gophers!" }}' - Hello world, gophers! Remarshal: Aliases: null Args: - format - data Description: |- Remarshal is used in the Hugo documentation to convert configuration examples from YAML to JSON, TOML (and possibly the other way around). The is primarily a helper for the Hugo docs site. It is not a general purpose YAML to TOML converter etc., and may change without notice if it serves a purpose in the docs. Format is one of json, yaml or toml. Examples: - - '{{ "title = \"Hello World\"" | transform.Remarshal "json" | safeHTML }}' - | { "title": "Hello World" } Unmarshal: Aliases: - unmarshal Args: - args Description: |- Unmarshal unmarshals the data given, which can be either a string, json.RawMessage or a Resource. Supported formats are JSON, TOML, YAML, and CSV. You can optionally provide an options map as the first argument. Examples: - - '{{ "hello = \"Hello World\"" | transform.Unmarshal }}' - map[hello:Hello World] - - '{{ "hello = \"Hello World\"" | resources.FromString "data/greetings.toml" | transform.Unmarshal }}' - map[hello:Hello World] XMLEscape: Aliases: null Args: - s Description: |- XMLEscape returns the given string, removing disallowed characters then escaping the result to its XML equivalent. Examples: - - '{{ transform.XMLEscape "

        abc

        " }}' - '<p>abc</p>' urls: AbsLangURL: Aliases: - absLangURL Args: - s Description: |- AbsLangURL the string s and converts it to an absolute URL according to a page's position in the project directory structure and the current language. Examples: [] AbsURL: Aliases: - absURL Args: - s Description: AbsURL takes the string s and converts it to an absolute URL. Examples: [] Anchorize: Aliases: - anchorize Args: - s Description: |- Anchorize creates sanitized anchor name version of the string s that is compatible with how your configured markdown renderer does it. Examples: - - '{{ "This is a title" | anchorize }}' - this-is-a-title JoinPath: Aliases: null Args: - elements Description: |- JoinPath joins the provided elements into a URL string and cleans the result of any ./ or ../ elements. If the argument list is empty, JoinPath returns an empty string. Examples: - - '{{ urls.JoinPath "https://example.org" "foo" }}' - https://example.org/foo - - '{{ urls.JoinPath (slice "a" "b") }}' - a/b Parse: Aliases: null Args: null Description: "" Examples: null Ref: Aliases: - ref Args: - p - args Description: Ref returns the absolute URL path to a given content item from Page p. Examples: [] RelLangURL: Aliases: - relLangURL Args: - s Description: |- RelLangURL takes the string s and prepends the relative path according to a page's position in the project directory structure and the current language. Examples: [] RelRef: Aliases: - relref Args: - p - args Description: RelRef returns the relative URL path to a given content item from Page p. Examples: [] RelURL: Aliases: - relURL Args: - s Description: |- RelURL takes the string s and prepends the relative path according to a page's position in the project directory structure. Examples: [] URLize: Aliases: - urlize Args: - s Description: URLize returns the strings s formatted as an URL. Examples: [] hugo-0.131.0/docs/data/embedded_template_urls.toml000066400000000000000000000022151465312036400220510ustar00rootroot00000000000000# Used by the embedded template URL (eturl.html) shortcode. # Quoted all keys because some are not valid identifiers. # BaseURL 'base_url' = 'https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates' # Templates 'alias' = 'alias.html' 'disqus' = 'disqus.html' 'google_analytics' = 'google_analytics.html' 'opengraph' = 'opengraph.html' 'pagination' = 'pagination.html' 'schema' = 'schema.html' 'twitter_cards' = 'twitter_cards.html' 'robots' = '_default/robots.txt' 'rss' = '_default/rss.xml' 'sitemap' = '_default/sitemap.xml' 'sitemapindex' = '_default/sitemapindex.xml' # Render hooks 'render-image' = '_default/_markup/render-image.html' 'render-link' = '_default/_markup/render-link.html' 'render-codeblock-goat' = '_default/_markup/render-codeblock-goat.html' # Shortcodes 'figure' = 'shortcodes/figure.html' 'gist' = 'shortcodes/gist.html' 'highlight' = 'shortcodes/highlight.html' 'instagram' = 'shortcodes/instagram.html' 'param' = 'shortcodes/param.html' 'ref' = 'shortcodes/ref.html' 'relref' = 'shortcodes/relref.html' 'twitter' = 'shortcodes/twitter.html' 'vimeo' = 'shortcodes/vimeo.html' 'youtube' = 'shortcodes/youtube.html' hugo-0.131.0/docs/data/homepagetweets.toml000066400000000000000000000272751465312036400204160ustar00rootroot00000000000000[[tweet]] name = "Heinrich Hartmann" twitter_handle = "@heinrichhartman" quote = "Working with @GoHugoIO is such a joy. Having worked with #Jekyll in the past, the near instant preview is a big win! Did not expect this to make such a huge difference." link = "https://x.com/heinrichhartman/status/1199736512264462341" date = 2019-11-12T00:00:00Z [[tweet]] name = "Joshua Steven‏‏" twitter_handle = "@jscarto" quote = "Can't overstate how much I enjoy @GoHugoIO. My site is relatively small, but *18 ms* to build the whole thing made template development and proofing a breeze." link = "https://x.com/jscarto/status/1039648827815485440" date = 2018-09-12T00:00:00Z [[tweet]] name = "Christophe Diericx" twitter_handle = "@spcrngr_" quote = "The more I use gohugo.io, the more I really like it. Super intuitive/powerful static site generator...great job @GoHugoIO" link = "https://x.com/spcrngr_/status/870863020905435136" date = 2017-06-03T00:00:00Z [[tweet]] name = "marcoscan" twitter_handle = "@marcoscan" quote = "Blog migrated from @WordPress to @GoHugoIO, with a little refresh of my theme, Vim shortcuts and a full featured deploy script #gohugo" link = "https://x.com/marcoscan/status/869661175960752129" date = 2017-05-30T00:00:00Z [[tweet]] name = "Sandra Kuipers" twitter_handle = "@SKuipersDesign" quote = "Who knew static site building could be fun 🤔 Learning #gohugo today" link = "https://x.com/SKuipersDesign/status/868796256902029312" date = 2017-05-28T00:00:00Z [[tweet]] name = "Netlify" twitter_handle = "@Netlify" quote = "Top Ten Static Site Generators of 2017. Congrats to the top 3: 1. @Jekyllrb 2. @GoHugoIO 3. @hexojs" link = "https://x.com/Netlify/status/868122279221362688" date = 2017-05-26T00:00:00Z [[tweet]] name = "Phil Hawksworth" twitter_handle = "@philhawksworth" quote = "I've been keen on #JAMStack for some time, but @GoHugoIO is wooing me all over again. Great fun to build with. And speeeeedy." link = "https://x.com/philhawksworth/status/866684170512326657" date = 2017-05-22T00:00:00Z [[tweet]] name = "Aras Pranckevicius" twitter_handle = "@aras_p" quote = "I've probably said it before...but having Hugo rebuild the whole website in 300ms is amazing. gohugo.io, #gohugo" link = "https://x.com/aras_p/status/861157286823288832" date = 2017-05-07T00:00:00Z [[tweet]] name = "Hans Beck" twitter_handle = "@EnrichedGamesHB" quote = "Diving deeper into @GoHugoIO. A lot of docs there, top work! But I've the impressed that #gohugo is far easier than its feels from the docs!" link = "https://x.com/EnrichedGamesHB/status/836854762440130560" date = 2017-03-01T00:00:00Z [[tweet]] name = "Alan Richardson" twitter_handle = "@eviltester" quote = "I migrated the @BlackOpsTesting .com website from docpad to Hugo last weekend. http://gohugo.io/ Super Fast HTML Generation @spf13 " link = "https://x.com/eviltester/status/553520335115808768" date = 2015-01-09T00:00:00Z [[tweet]] name = "Janez Čadež‏" twitter_handle = "@jamziSLO" quote = "Building @garazaFRI website in #hugo. This static site generator is soooo damn fast! #gohugo #golang" link = "https://x.com/jamziSLO/status/817720283977183234" date = 2017-01-07T00:00:00Z [[tweet]] name = "Execute‏‏" twitter_handle = "@executerun" quote = "Hah, #gohugo. I was working with #gohugo on #linux but now I realised how easy is to set-up it on #windows. Just need to add binary to #path!" link = "https://x.com/executerun/status/809753145270272005" date = 2016-12-16T00:00:00Z [[tweet]] name = "Baron Schwartz" twitter_handle = "@xaprb" quote = "Hugo is impressively capable. It's a static site generator by @spf13 written in #golang . Just upgraded to latest release; very powerful. " link = "https://x.com/xaprb/status/556894866488455169" date = 2015-01-18T00:00:00Z [[tweet]] name = "Dave Cottlehuber" twitter_handle = "@dch__" quote = "I just fell in love with #hugo, a static site/blog engine written by @spf13 in #golang + stellar docs" link = "https://x.com/dch__/status/460158115498176512" date = 2014-04-26T00:00:00Z [[tweet]] name = "David Caunt" twitter_handle = "@dcaunt" quote = "I had a play with Hugo and it was good, uses Markdown files for content" link = "https://x.com/dcaunt/statuses/406466996277374976" date = 2013-11-29T00:00:00Z [[tweet]] name = "David Gay" twitter_handle = "@oddshocks" quote = "Hugo is super-rad." link = "https://x.com/oddshocks/statuses/405083217893421056" date = 2013-11-25T00:00:00Z [[tweet]] name = "Diti" twitter_handle = "@DitiPengi" quote = "The dev version of Hugo is AWESOME! <3 I promise, I will try to learn go ASAP and help contribute to the project! Just too great!" link = "https://x.com/DitiPengi/status/472470974051676160" date = 2014-05-30T00:00:00Z [[tweet]] name = "Douglas Stephen " twitter_handle = "@DougStephenJr" quote = "Even as a long-time Octopress fan, I’ve gotta admit that this project Hugo looks very very cool" link = "https://x.com/DougStephenJr/statuses/364512471660249088" date = 2013-08-05T00:00:00Z [[tweet]] name = "Hugo Rodger-Brown" twitter_handle = "@hugorodgerbrown" quote = "Finally someone builds me my own static site generator" link = "https://x.com/hugorodgerbrown/statuses/364417910153818112" date = 2013-05-08T00:00:00Z [[tweet]] name = "Hugo Roy" twitter_handle = "@hugoroyd" quote = "Finally the answer to the question my parents have been asking: What does Hugo do?" link = "https://x.com/hugoroyd/status/501704796727173120" date = 2014-08-19T00:00:00Z [[tweet]] name = "Daniel Miessler" twitter_handle = "@DanielMiessler" quote = "Websites for named vulnerabilities should run on static site generator platforms like Hugo. Read-only + burst traffic = static." link = "https://x.com/DanielMiessler/status/704703841673957376" date = 2016-03-01T00:00:00Z [[tweet]] name = "Javier Segura" twitter_handle = "@jsegura" quote = "Another site generated with Hugo here! I'm getting in love with it." link = "https://x.com/jsegura/status/465978434154659841" date = 2014-05-12T00:00:00Z [[tweet]] name = "Jim Biancolo" twitter_handle = "@jimbiancolo" quote = "I’m loving the static site generator renaissance we are currently enjoying. Hugo is new, looks great, written in Go" link = "https://x.com/jimbiancolo/statuses/408678420348813314" date = 2013-05-12T00:00:00Z [[tweet]] name = "Jip J. Dekker" twitter_handle = "@jipjdekker" quote = "Building a personal website in Hugo. Works like a charm. And written in @golang!" link = "https://x.com/jipjdekker/status/413783548735152131" date = 2013-12-19T00:00:00Z [[tweet]] name = "Jose Gonzalvo" twitter_handle = "@jgonzalvo" quote = "Checking out Hugo; Loving it so far. Like Jekyll but not so blog-oriented and written in go" link = "https://x.com/jgonzalvo/statuses/408177855819173888" date = 2013-12-04T00:00:00Z [[tweet]] name = "Josh Matz" twitter_handle = "@joshmatz" quote = "A static site generator without the long build times? Yes, please!" link = "https://x.com/joshmatz/statuses/364437436870696960" date = 2013-08-05T00:00:00Z [[tweet]] name = "Kieran Healy" twitter_handle = "@kjhealy" quote = "OK, so in today's speed battle of static site generators, @spf13's hugo is kicking everyone's ass, by miles." link = "https://x.com/kjhealy/status/437349384809115648" date = 2014-02-22T00:00:00Z [[tweet]] name = "Ludovic Chabant" twitter_handle = "@ludovicchabant" quote = "Good work on Hugo, I’m impressed with the speed!" link = "https://x.com/ludovicchabant/statuses/408806199602053120" date = 2013-12-06T00:00:00Z [[tweet]] name = "Luke Holder" twitter_handle = "@lukeholder" quote = "this is AWESOME. a single little executable and so fast." link = "https://x.com/lukeholder/status/430352287936946176" date = 2014-02-03T00:00:00Z [[tweet]] name = "Markus Eliasson" twitter_handle = "@markuseliasson" quote = "Hugo is fast, dead simple to setup and well documented" link = "https://x.com/markuseliasson/status/501594865877008384" date = 2014-08-19T00:00:00Z [[tweet]] name = "mercime" twitter_handle = "@mercime_one" quote = "Hugo: Makes the Web Fun Again" link = "https://x.com/mercime_one/status/500547145087205377" date = 2014-08-16T00:00:00Z [[tweet]] name = "Michael Whatcott" twitter_handle = "@mdwhatcott" quote = "One more satisfied #Hugo blogger. Thanks @spf13 and friends!" link = "https://x.com/mdwhatcott/status/469980686531571712" date = 2014-05-23T00:00:00Z [[tweet]] name = "Nathan Toups" twitter_handle = "@rojoroboto" quote = "I love Hugo! My site is generated with it now http://rjrbt.io" link = "https://x.com/rojoroboto/status/423439915620106242" date = 2014-01-15T00:00:00Z [[tweet]] name = "Ruben Solvang" twitter_handle = "@messo85" quote = "#Hugo is the new @jekyllrb / @middlemanapp! Faster, easier and runs everywhere." link = "https://x.com/messo85/status/472825062027182081" date = 2014-05-31T00:00:00Z [[tweet]] name = "Ryan Martinsen" twitter_handle = "@popthestack" quote = "Also, I re-launched my blog (it looks the same as before) using Hugo, a *fast* static engine. Very happy with it. gohugo.io" link = "https://x.com/popthestack/status/549972754125307904" date = 2014-12-30T00:00:00Z [[tweet]] name = "The Lone Cuber" twitter_handle = "@TheLoneCuber" quote = "Jekyll is dead to me these days though... long live Hugo! Hugo is *by far* the best in its field. Thanks for making it happen." link = "https://x.com/TheLoneCuber/status/495716684456398848" date = 2014-08-02T00:00:00Z [[tweet]] name = "The Lone Cuber" twitter_handle = "@TheLoneCuber" quote = "Finally, a publishing platform that's a joy to use. #NoMoreBarriers" link = "https://x.com/TheLoneCuber/status/495731334711488512" date = 2014-08-02T00:00:00Z [[tweet]] name = "WorkHTML" twitter_handle = "@workhtml" quote = " #Hugo A very good alternative for #wordpress !!! A fast and modern static website engine gohugo.io " link = "https://x.com/workhtml/status/563064361301053440" date = 2015-02-04T00:00:00Z hugo-0.131.0/docs/data/page_filters.yaml000066400000000000000000000053601465312036400200170ustar00rootroot00000000000000# Do not delete. Required for layouts/shortcodes/list-pages-in-section.html. # # When calling the list-pages-in-section shortcode, you can specify a page # filter, and whether the pages in the filter should be included or excluded # from the list. # # For example: # # {{< list-pages-in-section path=/functions/images filter=functions_images_no_filters filterType=exclude >}} functions_fmt_logging: - /functions/fmt/errorf - /functions/fmt/erroridf - /functions/fmt/warnf - /functions/fmt/warnidf functions_images_no_filters: - /functions/images/filter - /functions/images/config methods_site_multilingual: - /methods/site/ismultilingual - /methods/site/language - /methods/site/languageprefix - /methods/site/languages methods_site_page_collections: - /methods/site/allpages - /methods/site/pages - /methods/site/regularpages - /methods/site/sections methods_page_dates: - /methods/page/date - /methods/page/expirydate - /methods/page/lastmod - /methods/page/publishdate methods_page_menu: - /methods/page/hasmenucurrent - /methods/page/ismenucurrent methods_page_multilingual: - /methods/page/alltranslations - /methods/page/istranslated - /methods/page/language - /methods/page/translationkey - /methods/page/translations methods_page_page_collections: - /methods/page/pages - /methods/page/regularpages - /methods/page/regularpagesrecursive - /methods/page/sections methods_page_parameters: - /methods/page/param - /methods/page/params methods_page_sections: - /methods/page/ancestors - /methods/page/currentsection - /methods/page/firstsection - /methods/page/insection - /methods/page/isancestor - /methods/page/isdescendant - /methods/page/parent - /methods/page/sections - /methods/page/section methods_pages_sort: - /methods/pages/bydate - /methods/pages/byexpirydate - /methods/pages/bylanguage - /methods/pages/bylastmod - /methods/pages/bylength - /methods/pages/bylinktitle - /methods/pages/byparam - /methods/pages/bypublishdate - /methods/pages/bytitle - /methods/pages/byweight - /methods/pages/reverse methods_pages_group: - /methods/pages/groupby - /methods/pages/groupbydate - /methods/pages/groupbyexpirydate - /methods/pages/groupbylastmod - /methods/pages/groupbyparam - /methods/pages/groupbyparamdate - /methods/pages/groupbypublishdate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/groupbydate - /methods/pages/reverse methods_pages_navigation: - /methods/pages/next - /methods/pages/prev methods_page_navigation: - /methods/page/next - /methods/page/nextinsection - /methods/page/prev - /methods/page/previnsection hugo-0.131.0/docs/go.mod000066400000000000000000000002071465312036400146570ustar00rootroot00000000000000module github.com/gohugoio/hugoDocs go 1.16 require github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52 // indirect hugo-0.131.0/docs/go.sum000066400000000000000000000013231465312036400147040ustar00rootroot00000000000000github.com/gohugoio/gohugoioTheme v0.0.0-20240426212330-f38e99e0d88d h1:EaFz80Aqh3Ej20VmUSNe3K+F0NbT8UueXLP/VqkK9Dw= github.com/gohugoio/gohugoioTheme v0.0.0-20240426212330-f38e99e0d88d/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM= github.com/gohugoio/gohugoioTheme v0.0.0-20240508091825-b23e8e2d2419 h1:cQ/44eDHK0tVImTtSx/9sWWZv+RynH/oB4R7ASbQNAE= github.com/gohugoio/gohugoioTheme v0.0.0-20240508091825-b23e8e2d2419/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM= github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52 h1:dPJxUU4SevIZ7OS1DIVOrJ7p8I/QM00pXGRfAtKgQmU= github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM= hugo-0.131.0/docs/hugo.toml000066400000000000000000000053441465312036400154170ustar00rootroot00000000000000# This his the main configuration file. There are also environment specific configuration stored in the /config directory. baseURL = "https://gohugo.io/" defaultContentLanguage = "en" enableEmoji = true ignoreErrors = ["error-remote-getjson", "error-missing-instagram-accesstoken"] languageCode = "en-us" paginate = 100 pluralizeListTitles = false timeZone = "Europe/Oslo" title = "Hugo" # We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below). disableAliases = true [services.googleAnalytics] ID = 'G-MBZGKNMDWC' [minify] [minify.tdewolff] [minify.tdewolff.html] keepWhitespace = true [module] [module.hugoVersion] min = "0.56.0" [[module.imports]] path = "github.com/gohugoio/gohugoioTheme" [outputs] home = ["HTML", "RSS", "REDIR", "HEADERS"] section = ["HTML"] [mediaTypes] [mediaTypes."text/netlify"] delimiter = "" [outputFormats] [outputFormats.REDIR] mediatype = "text/netlify" baseName = "_redirects" isPlainText = true notAlternative = true [outputFormats.HEADERS] mediatype = "text/netlify" baseName = "_headers" isPlainText = true notAlternative = true [caches] [caches.getjson] dir = ":cacheDir/:project" maxAge = -1 [caches.getcsv] dir = ":cacheDir/:project" maxAge = -1 [caches.images] dir = ":cacheDir/images" maxAge = "1440h" [caches.assets] dir = ":resourceDir/_gen" maxAge = -1 [caches.getresource] dir = ":cacheDir/:project" maxage = '1h' [related] threshold = 80 includeNewer = true toLower = false [[related.indices]] name = "keywords" weight = 60 [[related.indices]] # Can be used as a front matter slice to link to other page fragments (headings) using their ID. # This isn't particular useful in the current docs, but we're planning on getting a auto generated # reference section with a better ID setup. # For now, we just use it to give pages with same headings some similarity score. name = "fragmentrefs" type = "fragments" applyFilter = false weight = 60 cardinalityThreshold = 50 [imaging] # See https://github.com/disintegration/imaging # CatmullRom is a sharp bicubic filter which should fit the docs site well with its many screenshots. # Note that you can also set this per image processing. resampleFilter = "CatmullRom" # Default JPEG quality setting. Default is 75. quality = 75 anchor = "smart" [taxonomies] category = "categories" [[cascade]] categories = ['commands'] [cascade._target] path = '/commands/**' hugo-0.131.0/docs/hugo.work000066400000000000000000000000441465312036400154160ustar00rootroot00000000000000go 1.19 use . use ../gohugoioTheme hugo-0.131.0/docs/hugo_stats.json000066400000000000000000000437261465312036400166410ustar00rootroot00000000000000{ "htmlElements": { "tags": [ "", "a", "article", "aside", "blockquote", "body", "br", "button", "circle", "code", "date", "dd", "div", "dl", "dt", "em", "figcaption", "figure", "footer", "form", "g", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hr", "html", "i", "iframe", "img", "li", "link", "main", "meta", "nav", "noscript", "ol", "p", "path", "pre", "script", "section", "small", "span", "strong", "style", "sup", "svg", "table", "tbody", "td", "thead", "time", "title", "tr", "ul" ], "classes": [ "!('about'", "!('content-management'", "!('contribute'", "!('functions'", "!('getting-started'", "!('hosting-and-deployment'", "!('modules'", "!('pipes'", "!('templates'", "!('tools'", "!('troubleshooting'", "!('variables'", "\u0026\u0026", "(false", "(true", "-ml-px", "-mr-12", "-mr-3", "-translate-x-3", "-translate-y-2", "absolute", "absolute-l", "active", "admonition", "admonition-content", "admonition-icon", "anchor", "b--moon-gray", "benchstat", "better", "bg-accent-color-dark", "bg-animate", "bg-black", "bg-carrot-500", "bg-cover", "bg-gradient-to-b", "bg-gray-100", "bg-gray-200", "bg-gray-300", "bg-gray-50", "bg-gray-600", "bg-gray-900", "bg-green-100", "bg-mango-300", "bg-mango-50", "bg-near-white", "bg-opacity-20", "bg-opacity-75", "bg-orange-500", "bg-steel-200", "bg-steel-500", "bg-steel-600", "bg-steel-800", "bg-steel-900", "bg-white", "blTK", "black", "block", "bmt1", "border", "border-0", "border-2", "border-b", "border-gray-100", "border-gray-200", "border-gray-300", "border-l", "border-none", "border-r", "border-solid", "border-t", "border-transparent", "bottom-0", "break-inside-avoid-l", "btn-primary", "c", "c1", "chroma", "clearfix", "cm", "code-copy-content", "code-toggle", "column-count-3-l", "column-gap-1-l", "configs", "copy", "cp", "cursor-pointer", "dark:bg-red-800", "dark:border-gray-800", "delta", "details", "dim", "disabled", "divide-gray-200", "divide-x", "err", "f2-fluid", "f6", "filename", "fill-current", "fixed", "fixed-lTK", "flex", "flex-1", "flex-auto", "flex-auto-ns", "flex-col", "flex-column", "flex-none", "flex-shrink-0", "flex-wrap", "fn", "focus:border-steel-500", "focus:outline-none", "focus:ring-1", "focus:ring-2", "focus:ring-inset", "focus:ring-offset-2", "focus:ring-steel-500", "focus:ring-white", "focus:z-10", "font-black", "font-bold", "font-extrabold", "font-extralight", "font-medium", "font-mono", "font-normal", "font-sans", "font-semibold", "footnote-backref", "footnote-ref", "footnotes", "from-primarydark", "gap-4", "ge", "grid", "grid-cols-1", "group", "grow", "gs", "gu", "h-0", "h-0.5", "h-10", "h-12", "h-16", "h-2", "h-32", "h-5", "h-6", "h-64", "h-8", "h-full", "h-screen", "h6", "hidden", "highlight", "hl", "hover", "hover-bg-green", "hover-bg-near-white", "hover-bg-primary-color", "hover-bg-primary-color-dark", "hover-blue", "hover:bg-gray-300", "hover:bg-gray-50", "hover:bg-steel-500", "hover:bg-steel-700", "hover:border", "hover:text-gray-200", "hover:text-gray-900", "hover:text-hotpink-400", "hover:text-hotpink-600", "hover:text-limegreen-900", "hover:text-royalblue-700", "hover:text-steel-500", "hover:text-white", "img", "in", "inline-block", "inline-flex", "inset-0", "inset-x-0", "instagram-media", "items-center", "items-start", "justify-between", "justify-center", "justify-end", "k", "kc", "kd", "kr", "kt", "l", "language-asciidoc", "language-bash", "language-go", "language-go-html-template", "language-go-text-template", "language-html", "language-js", "language-json", "language-markdown", "language-md", "language-ps1", "language-sh", "language-svg", "language-text", "language-toml", "language-txt", "language-xml", "language-yaml", "language-yml", "lazyload", "ld", "lead", "leading-none", "leading-normal", "leading-relaxed", "leading-snug", "leading-tight", "left-0", "lg:bg-steel-700", "lg:block", "lg:flex", "lg:flex-grow", "lg:flex-shrink-0", "lg:hidden", "lg:inline-block", "lg:items-center", "lg:max-w-lg", "lg:mb-0", "lg:mr-auto", "lg:mt-0", "lg:p-4", "lg:pb-5", "lg:prose-lg", "lg:pt-0", "lg:px-4", "lg:px-5", "lg:px-8", "lg:py-5", "lg:py-8", "lg:rounded-md", "lg:shadow-lg", "lg:space-x-4", "lg:text-5xl", "lg:w-1/2", "lg:w-1/4", "lg:w-1/5", "lg:w-11/12", "lg:w-3/5", "lg:w-4/5", "lg:w-auto", "light-gray", "link", "list-reset", "lnt", "lntable", "lntd", "m", "m-0", "m-1", "max-w-6xl", "max-w-lg", "max-w-xs", "mb-0", "mb-1", "mb-2", "mb-3", "mb-4", "mb-8", "mb5", "mb7", "md:flex", "md:flex-col", "md:flex-grow", "md:grid-cols-2", "md:mt-8", "md:pb-12", "menu))", "menu['about']", "menu['content-management']", "menu['contribute']", "menu['functions']", "menu['getting-started']", "menu['hosting-and-deployment']", "menu['modules']", "menu['pipes']", "menu['templates']", "menu['tools']", "menu['troubleshooting']", "menu['variables']", "mf", "mi", "min-h-screen", "min-w-0", "minor", "ml-1", "ml-10", "ml-4", "ml-6", "ml1", "mr-1.5", "mr-10", "mr-3", "mr-4", "mt-0", "mt-1", "mt-2", "mt-4", "mt-5", "mt-6", "mt-8", "mt3", "mt4", "mv2", "mv3", "mv4", "mv6", "mw-100", "mw5-l", "mx-auto", "my-0", "n", "na", "navbar-menu", "nb", "needs-js", "nested-blockquote", "nested-copy-seperator", "nested-img", "nested-links", "nested-linksTK", "nested-list-reset", "nf", "ni", "nightwind", "nightwind-prevent", "nightwind-prevent-block", "nn", "no-js", "no-underline", "nodelta", "note", "note-icon", "nt", "nt3", "nv", "nx", "o", "o-0", "o-80", "oldnew", "opacity-60", "open", "order-0", "order-0-l", "order-1", "order-1-l", "order-2", "output-content", "overflow-hidden", "overflow-x-scroll", "overflow-y-auto", "p", "p-0", "p-2", "p-3", "p-4", "p-5", "p-8", "pa4-m", "page-item", "page-link", "pagination", "pb-1", "pb-2", "pb-3", "pb-4", "pb-5", "pb-7", "pb-8", "pb2", "ph1", "ph2", "ph4", "pl-0", "pl-1", "pl-2", "pl-3", "pl-6", "pl5-l", "pr-2", "pr1", "primary-color", "prose", "pt-0", "pt-1", "pt-2", "pt-3", "pt-4", "pt-5", "pv1", "px-0", "px-2", "px-3", "px-4", "py-0", "py-0.5", "py-1.5", "py-2", "py-3", "py-4", "py-6", "relative", "right-0", "rounded", "rounded-full", "rounded-l-lg", "rounded-l-md", "rounded-lg", "rounded-md", "rounded-r-md", "row", "s", "s1", "s2", "san-serif", "se", "shadow", "shadow-lg", "shadow-md", "shadow-sm", "show", "sm:flex", "sm:grid-cols-2", "sm:mb-0", "sm:mt-0", "sm:mt-8", "sm:p-4", "sm:pb-0", "sm:pb-6", "sm:pt-3", "sm:pt-5", "sm:px-4", "sm:px-5", "sm:px-6", "sm:py-0", "sm:py-4", "sm:py-5", "sm:py-6", "sm:text-2xl", "sm:text-4xl", "sm:text-base", "sm:text-center", "sm:text-left", "sm:w-1/2", "sm:w-1/5", "sm:w-11/12", "sm:w-4/5", "space-x-4", "space-x-8", "space-y-1", "sr-only", "table", "table-bordered", "tc", "text-2xl", "text-3xl", "text-4xl", "text-5xl", "text-base", "text-black", "text-center", "text-gray-200", "text-gray-300", "text-gray-400", "text-gray-500", "text-gray-600", "text-gray-900", "text-lg", "text-limegreen-600", "text-limegreen-700", "text-mango-100", "text-mango-300", "text-md", "text-royalblue-500", "text-royalblue-600", "text-sm", "text-steel-100", "text-steel-500", "text-steel-900", "text-white", "text-xl", "text-xs", "tile", "tip", "tip-icon", "to-steel-800", "top-0", "top-2", "tracked", "tracking-normal", "tracking-tight", "transform", "twitter-tweet", "unchanged", "uppercase", "v-base", "v-mid", "v-top", "w", "w-1/5", "w-10", "w-11/12", "w-12", "w-14", "w-2", "w-2/3", "w-30-l", "w-32", "w-5", "w-50-m", "w-6", "w-64", "w-8", "w-80-nsTK", "w-96", "w-auto", "w-full", "w-two-third-l", "warning", "whitespace-no-wrap", "worse", "x", "xl:flex", "xl:flex-col", "z-0", "z-40", "z-999", "||" ], "ids": [ ".gitlab-ci.yml", "/blog/greatest-city/index.html", "/content/actors/bruce-willis/_index.md", "/layouts/shortcodes/img.html", "/layouts/shortcodes/vimeo.html", "/layouts/shortcodes/year.html", "/layouts/shortcodes/youtube.html", "/themes/yourtheme/layouts/review/single.html", "404.html", "TableOfContents", "addrobotstxt.sh", "all-taxonomies-keys-and-pages.html", "all-taxonomies.html", "archetype-example.sh", "archetypes/functions.md", "archetypes/newsletter.md", "articles.html", "asciicast-3mf1JGaN0AX0Z7j5kLGl3hSh8", "asciicast-7naKerRYUGVPj8kiDmdh5k5h9", "asciicast-BvJBsF6egk9c163bMsObhuNXj", "asciicast-ItACREbFgvJ0HjnSNeTknxWy9", "asciicast-Lc5iwTVny2kuUC8lqvNnL6oDU", "asciicast-eUojYCfRTZvkEiqc52fUsJRBR", "bad-url-sidebar-menu-output.html", "base-64-output.html", "base64-input.html", "baseof.html", "bf-config.toml", "bf-config.yml", "boxfile.yml", "breadcrumb.html", "check-title-length.html", "clone-herring-cove-theme.sh", "config.toml", "content-header.html", "content-image.md", "content/blog/greatest-city.md", "content/posts/_index.md", "content/posts/default-function-example.md", "content/posts/my-awesome-post.md", "content/posts/my-post.md", "content/posts/old-post.md", "content/posts/old-url.md", "content/tutorials/learn-html.md", "correct-url-sidebar-menu-output.html", "delimit-example-front-matter.toml", "delimit-page-tags-final-and-input.html", "delimit-page-tags-final-and-output.html", "delimit-page-tags-input.html", "delimit-page-tags-output.html", "disqus.html", "dot-notation-default-return-value.html", "dot-notation-default-value.html", "example-tweet-input.md", "example-tweet-output.html", "example-vimeo-input.md", "example-vimeo-output.html", "example-youtube-input-with-autoplay.md", "example-youtube-input-with-title.md", "example-youtube-input.md", "example-youtube-output.html", "example.com/posts/index.html", "example.com/quote/index.html", "external-links.svg", "figure-input-example.md", "figure-output-example.html", "first-and-where-together.html", "fn:1", "fn:2", "fnref:1", "fnref:2", "footer.html", "from-gh.sh", "gist-input.md", "gist-output.html", "gitignore.sh", "gohugoio", "grab-top-two-tags.html", "header.html", "highlight-example.md", "how-many-posts.html", "hugo-new-site.sh", "if-instead-of-default.html", "img-output.html", "index.html", "instagram-hide-caption-output.html", "instagram-input-hide-caption.md", "instagram-input.md", "install-brew.sh", "install-extended-with-chocolatey.ps1", "install-go.sh", "install-openssh.sh", "install-with-chocolatey.ps1", "install-with-homebrew.sh", "install-with-linuxbrew.sh", "install-with-macports.sh", "install.sh", "layout/_default/section.html", "layout/_default/single.html", "layouts/404.html", "layouts/_default/_markup/render-heading.html", "layouts/_default/_markup/render-image.html", "layouts/_default/_markup/render-link.html", "layouts/_default/baseof.html", "layouts/_default/li.html", "layouts/_default/list.html", "layouts/_default/section.html", "layouts/_default/single.html", "layouts/_default/summary.html", "layouts/_default/taxonomy.html", "layouts/index.html", "layouts/partials/all-taxonomies.html", "layouts/partials/alllanguages.html", "layouts/partials/bad-url-sidebar-menu.html", "layouts/partials/breadcrumb.html", "layouts/partials/by-date-reverse.html", "layouts/partials/by-date.html", "layouts/partials/by-expiry-date.html", "layouts/partials/by-group-by-page.html", "layouts/partials/by-last-mod.html", "layouts/partials/by-length.html", "layouts/partials/by-link-title.html", "layouts/partials/by-nested-param.html", "layouts/partials/by-page-date.html", "layouts/partials/by-page-expiry-date.html", "layouts/partials/by-page-field.html", "layouts/partials/by-page-lastmod.html", "layouts/partials/by-page-param-as-date.html", "layouts/partials/by-page-param.html", "layouts/partials/by-page-publish-date.html", "layouts/partials/by-publish-date.html", "layouts/partials/by-rating.html", "layouts/partials/by-title.html", "layouts/partials/by-weight.html", "layouts/partials/content-header.html", "layouts/partials/correct-url-sidebar-menu.html", "layouts/partials/default-order.html", "layouts/partials/disqus.html", "layouts/partials/footer.html", "layouts/partials/get-csv.html", "layouts/partials/groups.html", "layouts/partials/head.html", "layouts/partials/header.html", "layouts/partials/i18nlist.html", "layouts/partials/post-tag-link.html", "layouts/partials/post-tag-list.html", "layouts/partials/related.html", "layouts/partials/schemaorg-metadata.html", "layouts/partials/sidebar.html", "layouts/partials/svgs/external-links.svg", "layouts/partials/toc.html", "layouts/partials/twitter.html", "layouts/partials/upcoming-events.html", "layouts/posts/single.html", "layouts/robots.txt", "layouts/section/articles.html", "layouts/section/posts.html", "layouts/shortcodes/gallery.html", "layouts/shortcodes/img.html", "layouts/shortcodes/imgproc.html", "li.html", "links-to-all-tags.html", "list.html", "netlify.toml", "note-with-heading.html", "note-with-heading.md", "page-list-with-summaries.html", "partial-cached-example.html", "partials/templates/random-tweets.html", "post-tag-list.html", "prose", "push-wecker-to-gh.sh", "range-through-tags-w-global.html", "remove-herring-cove-git.sh", "robots.txt", "schemaorg-metadata.html", "section.html", "setup-gh-repo.sh", "shuffle-input.html", "shuffle-output.html", "sidebar.html", "single.html", "slice.html", "summary.html", "syntax-highlighted.html", "tags-range-with-page-variable.html", "taxonomy.html", "time-passed.html", "tip-output.html", "toc.html", "tutorials/learn-html/index.html", "tweets.html", "unix-to-month-integer.html", "upcoming-events.html", "using-tip.md", "variable-as-default-value.html", "vimeo-iframes.html", "warning-admonition-input.md", "warning-admonition-output.html", "wercker-build-step.yml", "wercker.yml", "where-intersect-variables.html", "with-instead-of-default.html", "yourbaseurl/review/book01/index.html", "youtube-embed.html" ] } }hugo-0.131.0/docs/hugoreleaser.toml000066400000000000000000000016361465312036400171420ustar00rootroot00000000000000project = "hugoDocs" [release_settings] name = "${HUGORELEASER_TAG}" type = "github" repository = "hugoDocs" repository_owner = "gohugoio" draft = true prerelease = false [release_settings.release_notes_settings] generate = true generate_on_host = false short_threshold = 10 short_title = "What's Changed" groups = [ { regexp = "snapcraft:|Merge commit|Merge branch|netlify:|release:|Squashed", ignore = true }, { title = "Typo fixes", regexp = "typo", ordinal = 20 }, { title = "Dependency Updates", regexp = "deps", ordinal = 30 }, { title = "Improvements", regexp = ".*", ordinal = 10 }, ] [[releases]] paths = ["archives/**"] # In this file we have only one release, but path can be used to partition the release step, e.g.: # hugoreleaser release -paths "releases/myrelease" path = "myrelease" hugo-0.131.0/docs/layouts/000077500000000000000000000000001465312036400152525ustar00rootroot00000000000000hugo-0.131.0/docs/layouts/shortcodes/000077500000000000000000000000001465312036400174275ustar00rootroot00000000000000hugo-0.131.0/docs/layouts/shortcodes/img.html000066400000000000000000000347441465312036400211050ustar00rootroot00000000000000{{- /* Renders the given image using the given filter, if any. @param {string} src The path to the image which must be a remote, page, or global resource. @param {string} [filter] The filter to apply to the image (case-insensitive). @param {string} [filterArgs] A comma-delimited list of arguments to pass to the filter. @param {bool} [example=false] If true, renders a before/after example. @param {int} [exampleWidth=384] Image width, in pixels, when rendering a before/after example. @returns {template.HTML} @examples {{< img src="zion-national-park.jpg" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="process" filterArgs="resize 400x webp" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="colorize" filterArgs="180,50,20" >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true >}} {{< img src="zion-national-park.jpg" alt="Zion National Park" filter="grayscale" example=true exampleWidth=400 >}} When using the text filter, provide the arguments in this order: 0. The text 1. The horizontal offset, in pixels, relative to the left of the image (default 20) 2. The vertical offset, in pixels, relative to the top of the image (default 20) 3. The font size in pixels (default 64) 4. The line height (default 1.2) 5. The font color (default #ffffff) {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Text" filterArgs="Zion National Park,25,250,56" example=true >}} When using the padding filter, provide all arguments in this order: 0. Padding top 1. Padding right 2. Padding bottom 3. Padding right 4. Canvas color {{< img src="images/examples/zion-national-park.jpg" alt="Zion National Park" filter="Padding" filterArgs="20,50,20,50,#0705" example=true >}} */}} {{- /* Initialize. */}} {{- $alt := "" }} {{- $src := "" }} {{- $filter := "" }} {{- $filterArgs := slice }} {{- $example := false }} {{- $exampleWidth := 384 }} {{- /* Default values to use with the text filter. */}} {{ $textFilterOpts := dict "xOffset" 20 "yOffset" 20 "fontSize" 64 "lineHeight" 1.2 "fontColor" "#ffffff" "fontPath" "https://github.com/google/fonts/raw/main/ofl/lato/Lato-Regular.ttf" }} {{- /* Get and validate parameters. */}} {{- with .Get "alt" }} {{- $alt = .}} {{- end }} {{- with .Get "src" }} {{- $src = . }} {{- else }} {{- errorf "The %q shortcode requires a file parameter. See %s" .Name .Position }} {{- end }} {{- with .Get "filter" }} {{- $filter = . | lower }} {{- end }} {{- $validFilters := slice "autoorient" "brightness" "colorbalance" "colorize" "contrast" "dither" "gamma" "gaussianblur" "grayscale" "hue" "invert" "none" "opacity" "overlay" "padding" "pixelate" "process" "saturation" "sepia" "sigmoid" "text" "unsharpmask" }} {{- with $filter }} {{- if not (in $validFilters .) }} {{- errorf "The filter passed to the %q shortcode is invalid. The filter must be one of %s. See %s" $.Name (delimit $validFilters ", " ", or ") $.Position }} {{- end }} {{- end }} {{- with .Get "filterArgs" }} {{- $filterArgs = split . "," }} {{- $filterArgs = apply $filterArgs "trim" "." " " }} {{- end }} {{- if in (slice "false" false 0) (.Get "example") }} {{- $example = false }} {{- else if in (slice "true" true 1) (.Get "example")}} {{- $example = true }} {{- end }} {{- with .Get "exampleWidth" }} {{- $exampleWidth = . | int }} {{- end }} {{- /* Get image. */}} {{- $ctx := dict "page" .Page "src" $src "name" .Name "position" .Position }} {{- $i := partial "inline/get-resource.html" $ctx }} {{- /* Resize if rendering before/after examples. */}} {{- if $example }} {{- $i = $i.Resize (printf "%dx" $exampleWidth) }} {{- end }} {{- /* Create filter. */}} {{- $f := "" }} {{- $ctx := dict "filter" $filter "args" $filterArgs "name" .Name "position" .Position }} {{- if eq $filter "autoorient" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.AutoOrient }} {{- else if eq $filter "brightness" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Brightness (index $filterArgs 0) }} {{- else if eq $filter "colorbalance" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage red" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage green" "argValue" (index $filterArgs 1) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage blue" "argValue" (index $filterArgs 2) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.ColorBalance (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "colorize" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "hue" "argValue" (index $filterArgs 0) "min" 0 "max" 360) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "saturation" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 2) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Colorize (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- else if eq $filter "contrast" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Contrast (index $filterArgs 0) }} {{- else if eq $filter "dither" }} {{- $f = images.Dither }} {{- else if eq $filter "gamma" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "gamma" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Gamma (index $filterArgs 0) }} {{- else if eq $filter "gaussianblur" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.GaussianBlur (index $filterArgs 0) }} {{- else if eq $filter "grayscale" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Grayscale }} {{- else if eq $filter "hue" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "shift" "argValue" (index $filterArgs 0) "min" -180 "max" 180) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Hue (index $filterArgs 0) }} {{- else if eq $filter "invert" }} {{- $ctx = merge $ctx (dict "argsRequired" 0) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Invert }} {{- else if eq $filter "opacity" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "opacity" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Opacity (index $filterArgs 0) }} {{- else if eq $filter "overlay" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" (index $filterArgs 0) "name" .Name "position" .Position }} {{- $overlayImg := partial "inline/get-resource.html" $ctx }} {{- $f = images.Overlay $overlayImg (index $filterArgs 1 | float ) (index $filterArgs 2 | float) }} {{- else if eq $filter "padding" }} {{- $ctx = merge $ctx (dict "argsRequired" 5) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Padding (index $filterArgs 0 | int) (index $filterArgs 1 | int) (index $filterArgs 2 | int) (index $filterArgs 3 | int) (index $filterArgs 4) }} {{- else if eq $filter "pixelate" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "size" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Pixelate (index $filterArgs 0) }} {{- else if eq $filter "process" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $f = images.Process (index $filterArgs 0) }} {{- else if eq $filter "saturation" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Saturation (index $filterArgs 0) }} {{- else if eq $filter "sepia" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sepia (index $filterArgs 0) }} {{- else if eq $filter "sigmoid" }} {{- $ctx = merge $ctx (dict "argsRequired" 2) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "midpoint" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "factor" "argValue" (index $filterArgs 1) "min" -10 "max" 10) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.Sigmoid (index $filterArgs 0) (index $filterArgs 1) }} {{- else if eq $filter "text" }} {{- $ctx = merge $ctx (dict "argsRequired" 1) }} {{- template "validate-arg-count" $ctx }} {{- $ctx := dict "src" $textFilterOpts.fontPath "name" .Name "position" .Position }} {{- $font := or (partial "inline/get-resource.html" $ctx) }} {{- $fontSize := or (index $filterArgs 3 | int) $textFilterOpts.fontSize }} {{- $lineHeight := math.Max (or (index $filterArgs 4 | float) $textFilterOpts.lineHeight) 1 }} {{- $opts := dict "x" (or (index $filterArgs 1 | int) $textFilterOpts.xOffset) "y" (or (index $filterArgs 2 | int) $textFilterOpts.yOffset) "size" $fontSize "linespacing" (mul (sub $lineHeight 1) $fontSize) "color" (or (index $filterArgs 5) $textFilterOpts.fontColor) "font" $font }} {{- $f = images.Text (index $filterArgs 0) $opts }} {{- else if eq $filter "unsharpmask" }} {{- $ctx = merge $ctx (dict "argsRequired" 3) }} {{- template "validate-arg-count" $ctx }} {{- $filterArgs = apply $filterArgs "float" "." }} {{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 500) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "amount" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }} {{- template "validate-arg-value" $ctx }} {{- $ctx = merge $ctx (dict "argName" "threshold" "argValue" (index $filterArgs 2) "min" 0 "max" 1) }} {{- template "validate-arg-value" $ctx }} {{- $f = images.UnsharpMask (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }} {{- end }} {{- /* Apply filter. */}} {{- $fi := $i }} {{- with $f }} {{- $fi = $i.Filter . }} {{- end }} {{- /* Render. */}} {{- if $example }}

        Original

        {{ $alt }}

        Processed

        {{ $alt }} {{- else -}} {{ $alt }} {{- end }} {{- define "validate-arg-count" }} {{- $msg := "When using the %q filter, the %q shortcode requires an args parameter with %d %s. See %s" }} {{- if lt (len .args) .argsRequired }} {{- $text := "values" }} {{- if eq 1 .argsRequired }} {{- $text = "value" }} {{- end }} {{- errorf $msg .filter .name .argsRequired $text .position }} {{- end }} {{- end }} {{- define "validate-arg-value" }} {{- $msg := "The %q argument passed to the %q shortcode is invalid. Expected a value in the range [%v,%v], but received %v. See %s" }} {{- if or (lt .argValue .min) (gt .argValue .max) }} {{- errorf $msg .argName .name .min .max .argValue .position }} {{- end }} {{- end }} {{- define "partials/inline/get-resource.html" }} {{- $r := "" }} {{- $u := urls.Parse .src }} {{- $msg := "The %q shortcode was unable to resolve %s. See %s" }} {{- if $u.IsAbs }} {{- with resources.GetRemote $u.String }} {{- with .Err }} {{- errorf "%s" }} {{- else }} {{- /* This is a remote resource. */}} {{- $r = . }} {{- end }} {{- else }} {{- errorf $msg $.name $u.String $.position }} {{- end }} {{- else }} {{- with .page.Resources.Get (strings.TrimPrefix "./" $u.Path) }} {{- /* This is a page resource. */}} {{- $r = . }} {{- else }} {{- with resources.Get $u.Path }} {{- /* This is a global resource. */}} {{- $r = . }} {{- else }} {{- errorf $msg $.name $u.Path $.position }} {{- end }} {{- end }} {{- end }} {{- return $r}} {{- end -}} hugo-0.131.0/docs/netlify.toml000066400000000000000000000012051465312036400161170ustar00rootroot00000000000000[build] publish = "public" command = "hugo --gc --minify" [build.environment] HUGO_VERSION = "0.127.0" [context.production.environment] HUGO_ENV = "production" HUGO_ENABLEGITINFO = "true" [context.split1] command = "hugo --gc --minify --enableGitInfo" [context.split1.environment] HUGO_ENV = "production" [context.deploy-preview] command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL" [context.branch-deploy] command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" [context.next.environment] HUGO_ENABLEGITINFO = "true" [[redirects]] from = "/npmjs/*" to = "/npmjs/" status = 200 hugo-0.131.0/docs/pull-theme.sh000077500000000000000000000001701465312036400161630ustar00rootroot00000000000000#!/bin/bash git subtree pull --prefix=themes/gohugoioTheme/ git@github.com:gohugoio/gohugoioTheme.git master --squash hugo-0.131.0/docs/src/000077500000000000000000000000001465312036400143415ustar00rootroot00000000000000hugo-0.131.0/docs/src/css/000077500000000000000000000000001465312036400151315ustar00rootroot00000000000000hugo-0.131.0/docs/src/css/_chroma.css000066400000000000000000000051501465312036400172540ustar00rootroot00000000000000/* Background */ .chroma { background-color: #f0f0f0 } /* Error */ .chroma .ss4 { } /* LineHighlight */ .chroma .hl { background-color: #ffffcc; display: block; width: 100% } /* LineNumbers */ .chroma .ln { ; margin-right: 0.4em; padding: 0 0.4em 0 0.4em; } /* Keyword */ .chroma .s3e8 { color: #007020; font-weight: bold } /* KeywordPseudo */ .chroma .s3ec { color: #007020 } /* KeywordType */ .chroma .s3ee { color: #902000 } /* NameAttribute */ .chroma .s7d1 { color: #4070a0 } /* NameBuiltin */ .chroma .s7d2 { color: #007020 } /* NameClass */ .chroma .s7d4 { color: #0e84b5; font-weight: bold } /* NameConstant */ .chroma .s7d5 { color: #60add5 } /* NameDecorator */ .chroma .s7d6 { color: #555555; font-weight: bold } /* NameEntity */ .chroma .s7d7 { color: #d55537; font-weight: bold } /* NameException */ .chroma .s7d8 { color: #007020 } /* NameFunction */ .chroma .s7d9 { color: #06287e } /* NameLabel */ .chroma .s7dc { color: #002070; font-weight: bold } /* NameNamespace */ .chroma .s7dd { color: #0e84b5; font-weight: bold } /* NameTag */ .chroma .s7e2 { color: #062873; font-weight: bold } /* NameVariable */ .chroma .s7e3 { color: #bb60d5 } /* LiteralString */ .chroma .sc1c { color: #4070a0 } /* LiteralStringDoc */ .chroma .sc23 { color: #4070a0; font-style: italic } /* LiteralStringEscape */ .chroma .sc25 { color: #4070a0; font-weight: bold } /* LiteralStringInterpol */ .chroma .sc27 { color: #70a0d0; font-style: italic } /* LiteralStringOther */ .chroma .sc29 { color: #c65d09 } /* LiteralStringRegex */ .chroma .sc2a { color: #235388 } /* LiteralStringSymbol */ .chroma .sc2c { color: #517918 } /* LiteralNumber */ .chroma .sc80 { color: #40a070 } /* Operator */ .chroma .sfa0 { color: #666666 } /* OperatorWord */ .chroma .sfa1 { color: #007020; font-weight: bold } /* Comment */ .chroma .s1770 { color: #60a0b0; font-style: italic } /* CommentSpecial */ .chroma .s1774 { color: #60a0b0; background-color: #fff0f0 } /* CommentPreproc */ .chroma .s17d4 { color: #007020 } /* GenericDeleted */ .chroma .s1b59 { color: #a00000 } /* GenericEmph */ .chroma .s1b5a { font-style: italic } /* GenericError */ .chroma .s1b5b { color: #ff0000 } /* GenericHeading */ .chroma .s1b5c { color: #000080; font-weight: bold } /* GenericInserted */ .chroma .s1b5d { color: #00a000 } /* GenericOutput */ .chroma .s1b5e { color: #888888 } /* GenericPrompt */ .chroma .s1b5f { color: #c65d09; font-weight: bold } /* GenericStrong */ .chroma .s1b60 { font-weight: bold } /* GenericSubheading */ .chroma .s1b61 { color: #800080; font-weight: bold } /* GenericTraceback */ .chroma .s1b62 { color: #0044dd } /* TextWhitespace */ .chroma .s1f41 { color: #bbbbbb } hugo-0.131.0/docs/src/package-lock.json000066400000000000000000000000331465312036400175510ustar00rootroot00000000000000{ "lockfileVersion": 1 } hugo-0.131.0/docs/static/000077500000000000000000000000001465312036400150415ustar00rootroot00000000000000hugo-0.131.0/docs/static/apple-touch-icon.png000066400000000000000000000174711465312036400207300ustar00rootroot00000000000000PNG  IHDR\rfIDATx xUՆPET!(aZP*NV+$T(hQQHRo&! !yFd2Isz${z:[7^VB+)ʀMڊm#NCOh1fir5 "ߙ&7bR$2xECof Y;u ٕ+]I-["VΠGi(zrZ{Iڪ\?VggϦi46HA;A]?zD<|=M>ҥ:d?S~i>ߡ~M!=OEкHZ˟]BG7|~6$S4Zx{VI]'k(kU{F .W\u_\^lv!-v\ZoRRp_֖5Zc4Zԯ.w<޼?Zk^=HҥdBr >O[kƵ=JawIb§o&pz/ZgiOj0n녺^pO7#{F+fY'#[/#G< V/g<-[ ;}j ={hqi7%M2h8c5;|hLE®gt|̲4O7Q!sv;68'Xi |*R1)K?*y|_gT-^pȾ[`)B"lnD*,|W+[~~|/O,yZ+ht-Y[}-kfG4O}۝ Kk} 'j= '?3ok*ft몮>\ﱚUv;s.u:;Ŵb>WߟM"b R+T_t\ йg;ݥ5GzaX}^~I ik7ݮW/P>Swqաn[!}NO 532S/!Ah_|}ҕʤʹ}=9<Sq݁vJ>4>>Ѿy}D҂j3.}j|黁U??/C:@'o} {`18ߗV}>ri&R1ՕVt%5FM?3G7|~6VcwwdZmtRM~ICܖ_~).|*Cӂdiڇh_^AEJdݥuk%D/* p~q@O{}k>>D_j}ӌhǶnr)SǖmV_[Q)m ׂk2>>վݪ}('[tΘ+ӵWPm- >}'zׄk5Z]@ˎT~z)NY{ɖ*r~h?#RN 5~׊kV>GC8[m=M"y^>V Ak#/Gi[C铤I/wޏmp[.;f4t; 2#`[nӔeR]{oN!*Ӎ>3. ʎ T2"dDZo]Ty)Ӎi|—ӊTkن<@,M'2ED;l을qf2ȢhZ?heQpb#SB NPOoqWeKb1s%t!er.N+LߍٴW>\vA f>g(A 7NazZ1}nu} +;NݏA E]kd yDaSvz}=YZ1|OFiF[Kru0<'|}aw/NmBԼŽՖ&?JeL+,f(;FL!L"4| +~N!\ν¹חm箙\Y @ϝb?](o+Nf[iٷҊ!LGP2ޛf7}w@pNiָD33:p>_* ~(r租f41X3_|e$=ev¶0~U^G9^Xz?}wй?ys. 4x5]#s&VM/(R6ݪCݶF7}]V @Cو t7 4M (6-6O3TvCE4m-J);L ].8*,fC F m%o6[#;i&@|(;F!# z/Sv~䔝P O_PAs^${HU$VݺešK7:#1-U$NeVSv"TKG@dˎHy5}O &4iA\Dͫ63"_G'*;VBlG18=kL ~ds=B@L[R=UZz '@pڅCOxw 콁 JhZŚ@I{ N%404HX 0#hjZ= I` ecm> h:/ݿ" beh#:Z#P-C63Ojn(Cn4 ms@@@@@@@@@@@@@@@@@@@@@@@@@@@@@϶+~w.hkLrnT>@eV>ҹO6G_^o@#F @4 h@@#F @4          z.@ls.s{/&L0Ϲ<'Z΍.$c_ u}-A<$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'*VgMu3@:4 m%h{[ORe@ t$&%I p  6ZmgZwj?S#h&Jr* p{>Prf@t@5 -CӜX RAYA~4k[[ Rah9[8(e6mu @ ,_@+$M^r?Ap!jZtKvCqHՆ%KPMB([Oil dk[ *[i@diڄFOCSq[h)@>4@T3V 1 oyFFG@z/F] 1- b~@3ЎodJۈ5ĜXNҨN ,̓XמfR @ Q׎C!Ē?Y+i[s B 𞁼ʃܗuˑV L\za9\(ӡ"~>4m@#VG7b &mR/rblҁӊ/Դ⎳K>^nse:?igU:F4~箞[6?iCB }<|ĘXҨO-a\%۠3k=m^.n :D F[?%OaV{h +黥C !4FlIXS闾B1:-:]5yk;F![w{+ b1Xh5Nkd%2\e.2}#iA>} C^Y bGbޖ{n-KeiA`}`ITߦ“V])<1@ V$7Ҵr`]:OR̮xi=>6"R⅜j2{@H@dG8^JUVLqbL}2ݒ>1PX@LH@] C ӊO6 AZ1[hw>Cgk W!-!au}O5ܮfS&s oGY8CBrI)r( }kvзrg'q>}1-4Z?{RnjΚUVo+$N@=}a5ahY5=Y/=%7_%26|-:Lm\<{yo Cˌ2Xk_ck%|c?.;ִSp\<>xelL߅[-j"ߗڅ崻s!ڳ>Z7|hVYFnҩ*IJmC/w5χK~[ڄF!/;]\YbxIT[{qZP#3>^Z,&akYx-SW6wJ4χle}hT-ʈ=(W^<.[AN 2/㝲s  !hNw#Ј%5WO}ۆӊ q[0 v mAc#ΠS*#֎ZUh68Qy[v|SvlVAKДj.hfܮ~ܛޕkmDӟg&h);w|h)FV2S&`f8;hzM?e{tA;(Q D&lr oҊ;XZ|/}eЕrnrqro l쾭w7<(Nٱԇ&YR#&Ffi2{ۆ`fw/3F h7ӂ-YYM$ faOٙ~LeC4-0"Ԟ=Tk4@cs}M_7SvN}ʎ3hY.i?$GU] !!8f].ӝ] )pAtt \uj1h{aA-);CoL}} ʦ^W睺Xzqaӌ2B[v|őSvQPBJT4ۆ!ˎ|Mf4'| wd/վ/L6L \ӊDӌ6EMViA }inwNyBhgCi_5bi!deU^/iFsg/@wT(-ۆ'+2ˎYO?HeSvi_܇>2ia5=r3Z2]dM}WvH$03~i|~A*QKnmiV ,Eߵ]}Gßw~j/HbʺJI+eEFӊ# D}3H}TJŴ)COC|9xK}Ҙʠŕ%R8ZLsJŭU县vFF2A[g7-8 y =c~w,poG+{F;. c , 4J`vI[XmEi ,,p-zMU`haթzZb|~6$\ {F( WWɈ ~|~g~wCft!I+ta?Oh"[9C/=ce0ˎY8eG?|=M?H3>SWKcS?k~,Evo)IzEeX/D~O١Ѣҥg78}RR!7th;tD0KVh){wNO.=%hK2IENDB`hugo-0.131.0/docs/static/css/000077500000000000000000000000001465312036400156315ustar00rootroot00000000000000hugo-0.131.0/docs/static/css/hugofont.css000066400000000000000000000054141465312036400202000ustar00rootroot00000000000000@font-face { font-family: 'hugo'; src:url('../fonts/hugo.eot'); src:url('../fonts/hugo.eot?#iefix') format('embedded-opentype'), url('../fonts/hugo.woff') format('woff'), url('../fonts/hugo.ttf') format('truetype'), url('../fonts/hugo.svg#hugo') format('svg'); font-weight: normal; font-style: normal; } [class^="icon-"], [class*=" icon-"] { font-family: 'hugo'; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-home:before { content: "\21"; } .icon-html5:before { content: "\23"; } .icon-css3:before { content: "\24"; } .icon-console:before { content: "\25"; } .icon-link:before { content: "\26"; } .icon-fire:before { content: "\28"; } .icon-check-alt:before { content: "\29"; } .icon-hugo_serif:before { content: "\e600"; } .icon-x-altx-alt:before { content: "\2a"; } .icon-circlestar:before { content: "\2b"; } .icon-file-css:before { content: "\2c"; } .icon-radio-checked:before { content: "\2e"; } .icon-quote:before { content: "\44"; } .icon-airplane2:before { content: "\45"; } .icon-heart:before { content: "\46"; } .icon-rocket:before { content: "\47"; } .icon-house:before { content: "\48"; } .icon-arrow-right:before { content: "\e001"; } .icon-arrow-left:before { content: "\e002"; } .icon-flow-branch:before { content: "\e004"; } .icon-pen:before { content: "\e005"; } .icon-idea:before { content: "\3b"; } .icon-gears:before { content: "\3c"; } .icon-talking:before { content: "\3d"; } .icon-tag:before { content: "\3e"; } .icon-rocket2:before { content: "\3f"; } .icon-octocat:before { content: "\41"; } .icon-announce:before { content: "\42"; } .icon-edit:before { content: "\43"; } .icon-power-cord:before { content: "\50"; } .icon-apple:before { content: "\51"; } .icon-windows8:before { content: "\52"; } .icon-tux:before { content: "\53"; } .icon-file-xml:before { content: "\54"; } .icon-fork:before { content: "\55"; } .icon-arrow-down:before { content: "\56"; } .icon-pacman:before { content: "\e000"; } .icon-embed:before { content: "\2f"; } .icon-code:before { content: "\30"; } .icon-cc:before { content: "\31"; } .icon-cc-by:before { content: "\32"; } .icon-cc-nc:before { content: "\33"; } .icon-beaker-alt:before { content: "\39"; } .icon-w3c:before { content: "\3a"; } .icon-bolt:before { content: "\49"; } .icon-flow-tree:before { content: "\4a"; } .icon-twitter:before { content: "\4b"; } .icon-beaker:before { content: "\4c"; } .icon-images:before { content: "\4d"; } .icon-bubbles:before { content: "\4e"; } .icon-meter2:before { content: "\4f"; } .icon-hugo_sans:before { content: "\68"; } .icon-spf13:before { content: "\27"; } hugo-0.131.0/docs/static/css/style.css000066400000000000000000000331111465312036400175020ustar00rootroot00000000000000/* Import fonts */ @import url(//fonts.googleapis.com/css?family=Lato:300,400,700,900,300italic,400italic,700italic,900italic); /* ****************************** For the github btn ****************************** */ .github-btn { font-size: 11px; } .github-btn, .github-btn .btn { font-weight: bold; } .github-btn .btn-default { text-shadow: 0 1px 0 #fff; background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#e0e0e0)); background-image: -webkit-linear-gradient(top, #ffffff, 0%, #e0e0e0, 100%); background-image: -moz-linear-gradient(top, #ffffff 0%, #e0e0e0 100%); background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%); background-repeat: repeat-x; border-color: #dbdbdb; border-color: #ccc; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); } .github-btn .btn-default:hover, .github-btn .btn-default:focus { background-color: #e0e0e0; background-position: 0 -15px; color: #333; border-color: #adadad; } .nav-github { width: 325px; } .nav-github > span { padding-right: 0.5em; } .icon-github { display: inline-block; font-family: FontAwesome; font-style: normal; font-weight: normal; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .github-watchers .icon-github:before{ content: "\f005"; } .github-forks .icon-github:before{ content: "\f126"; } .gh-count{ padding: 2px 5px 3px 4px; color: #555; text-decoration: none; text-shadow:0 1px 0 #fff; white-space:nowrap; cursor:pointer; border-radius:3px; position:relative; display:none; margin-left:4px; background-color:#fafafa; border:1px solid #d4d4d4; } .gh-count:hover,.gh-count:focus{color:#4183c4;text-decoration: none;} .gh-count:before,.gh-count:after{content:' ';position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid} .gh-count:before{top:50%;left:-3px;margin-top:-4px;border-width:4px 4px 4px 0;border-right-color:#fafafa} .gh-count:after{top:50%;left:-4px;z-index:-1;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#d4d4d4} thead { font-weight: bold; } table { width: 100%; } h1, h2, h3 { margin-top: .8em; margin-bottom: .7em; } pre code { font-size: 15px !important; font-family: Menlo, Consolas, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', Monaco, 'Droid Sans Mono', monospace; } body { color: #353b44; background: #edece4; font-family: 'Lato', sans-serif; padding: 0px !important; margin: 0px !important; font-size: 16px !important; font-weight: 400; } h2,h3,h4,h5{ font-weight: 700; } h1[id]:before, h2[id]:before, h3[id]:before, h4[id]:before, h5[id]:before { display: block; content: " "; margin-top: -75px; height: 75px; visibility: hidden; } label{ font-weight: 400; } .sidebar-menu .fa { width: 30px; text-align: center; } a, a:hover, a:focus { text-decoration: none; outline: none; outline: 0; } img { max-width: 100%; height: auto; } .panel-body a { line-height: 1.1; display: inline-block; } .panel-body a:after { display: block; content: ""; height: 1px; width: 0%; background-color: #ff4088; -webkit-transition: width 0.5s ease; -moz-transition: width 0.5s ease; -ms-transition: width 0.5s ease; transition: width 0.5s ease; } .panel-body a:hover:after, .panel-body a:focus:after { width: 100%; } input:focus, textarea:focus { outline: none; } *:focus {outline: none;} ::selection { background: #ff4088; color: #fff; } ::-moz-selection { background: #ff4088; color: #fff; } #container { width: 100%; height: 100%; } /*sidebar navigation*/ #sidebar { width: 214px; height: 100%; position: fixed; background: #ffffff; overflow-y: auto; } ul.sidebar-menu , ul.sidebar-menu li ul.sub{ margin: -2px 0 0; padding: 0; } ul.sidebar-menu { margin-top: 60px; } #sidebar > ul > li > ul.sub { display: none; } #sidebar > ul > li.active > ul.sub, #sidebar > ul > li > ul.sub > li > a { display: block; } ul.sidebar-menu li ul.sub li{ background: #eeeeee; margin-bottom: 0; margin-left: 0; margin-right: 0; } ul.sidebar-menu li ul.sub li:last-child{ border-radius: 0 0 4px 4px; -webkit-border-radius: 0 0 4px 4px; } ul.sidebar-menu li ul.sub li a { font-size: 12px; padding: 0 0 0 32px; line-height: 35px; height: 35px; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; color: #656C73; font-size: 14px; } ul.sidebar-menu li ul.sub li a:hover, ul.sidebar-menu li ul.sub li.active a { color: #ff4088; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; display: block; } ul.sidebar-menu li{ line-height: 20px !important; } ul.sidebar-menu li.sub-menu{ line-height: 15px; font-size: 16px; } ul.sidebar-menu li a span{ display: inline-block; } ul.sidebar-menu li a{ color: #72767D; text-decoration: none; display: block; padding: 10px 0 10px 10px; font-size: 16px; font-weight: 400; outline: none; -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; border-right: 1px solid #D7D7D7; border-bottom: 1px solid #D7D7D7; white-space: nowrap; } ul.sidebar-menu li.active a, ul.sidebar-menu li a:hover, ul.sidebar-menu li a:focus { background: #eeeeee; color: #ff4088; display: block; /*border-radius: 4px; -webkit-border-radius: 4px;*/ -webkit-transition: all 0.3s ease; -moz-transition: all 0.3s ease; -o-transition: all 0.3s ease; -ms-transition: all 0.3s ease; transition: all 0.3s ease; } ul.sidebar-menu li a:hover, ul.sidebar-menu li a:focus { border-bottom: 1px solid #ff4088; } /*ul.sidebar-menu li.active a,*/ ul.sidebar-menu .sub-menu li.active a{ border-bottom: 1px solid #ff4088; } ul.sidebar-menu li a i { font-size: 18px; padding-right: 6px; /*color: #ff4088;*/ } ul.sidebar-menu li a:hover i, ul.sidebar-menu li a:focus i { color: #ff4088; } ul.sidebar-menu li.active a i { color: #ff4088; } #sidebar ul > li > a .menu-arrow { float: right; margin-right: 8px; margin-top: 6px; } @-moz-document url-prefix() { #sidebar ul > li > a .menu-arrow { float: right; margin-right: 8px; margin-top: -16px; } } #main-content { margin-left: 200px; line-height: 1.8; font-size: 18px; } .header { min-height: 60px; padding: 0 10px; } .header { position: fixed; left: 0; right: 0; z-index: 1002; text-align:center; } .black-bg { background: rgba(20,20,20,0.9); border-bottom: 1px solid #f1f2f7; } .wrapper { display: inline-block; margin-top: 60px; padding: 0px 15px 15px 0px; width: 100%; } a.logo { font-size: 22px; font-weight: 400; color: #8E8E93; float: left; margin-top: 10px; text-transform: uppercase; } a.logo:hover, a.logo:focus { text-decoration: none; outline: none; } h1.top-menu { margin-top: -5px; } .title-row { margin-top: 15px; margin-left: 16px; color: #EEE; } .notification-row { float: right; margin-top: 15px; margin-left: 65px; } .top-nav { margin-top: 15px; } /*--sidebar toggle---*/ .toggle-nav { float: left; padding-right: 5px; margin-top: 20px; cursor: pointer; color: gray; } .toggle-nav .icon-reorder { cursor: pointer; display: inline-block; font-size: 20px; } @-webkit-keyframes square { 0% { background-position: 0 0; } 25% { background-position: 100% 0; } 50% { background-position: 100% 100%; } 75% { background-position: 0 100%; } 100% { background-position: 0 0; } } @-ms-keyframes square { 0% { background-position: 0 0; } 25% { background-position: 100% 0; } 50% { background-position: 100% 100%; } 75% { background-position: 0 100%; } 100% { background-position: 0 0; } } @keyframes square { 0% { background-position: 0 0; } 25% { background-position: 100% 0; } 50% { background-position: 100% 100%; } 75% { background-position: 0 100%; } 100% { background-position: 0 0; } } .navigation { position: absolute; top: 0; bottom: 0; margin: 0; max-width: 150px; min-width: 90px; width:100%; min-height:1200px; cursor:pointer; display: flex; justify-content: center; align-content: center; flex-direction: column; font-size: 6em; color: rgba(0,0,0,0.5); text-align: center; -webkit-transition: all 350ms ease; transition: all 350ms ease; } .navigation.next { right:0; } .navigation:hover { background-color: rgba(0,0,0,0.1); } /* Google Custom Search box */ input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus, .gsc-search-button, .gsc-inline-block { box-sizing: content-box; line-height: normal; } .gsc-control-cse { padding: 0.1em 0 0.5em 1em !important; width: 16em !important; float: right; } input.gsc-search-button-v2 { padding: 6px 12px !important; } .gsc-search-box-tools .gsc-search-box .gsc-input { padding-right: 1px !important; } /* Styled keypress from Wikipedia */ kbd { border: 1px solid #aaa; -moz-border-radius: 0.2em; -webkit-border-radius: 0.2em; border-radius: 0.2em; -moz-box-shadow: 0.1em 0.2em 0.2em #ddd; -webkit-box-shadow: 0.1em 0.2em 0.2em #ddd; box-shadow: 0.1em 0.2em 0.2em #ddd; background-color: #f9f9f9; background-image: -moz-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: -o-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: -webkit-linear-gradient(top, #eee, #f9f9f9, #eee); background-image: linear-gradient(to bottom, #eee, #f9f9f9, #eee); padding: 0.1em 0.3em; font-family: inherit; font-size: 0.85em; } /* For definitions of variables */ dl { margin: 1em; border-bottom: 1px solid #ccc; } dt { float: left; clear: left; width: 9.5em; margin: 0.125em; padding: 2px 4px; } dd { padding: 0.2em 0 0.2em 10em; border-top: 1px solid #ccc; } /* Prevent linebreak right after an icon */ #main-content .fa { display: inline; } /* Logo for FreeBSD until Font Awesome adds it, see https://github.com/FortAwesome/Font-Awesome/issues/1116 */ i.freebsd-19px:before { content: url(/img/freebsd-19px.svg); vertical-align: -7%; } /* Responsive videos */ .video-container { position: relative; padding-bottom: 56.25%; /* 16:9 */ padding-top: 30px; height: 0; overflow: hidden; margin: 20px 0; } .video-container iframe, .video-container object, .video-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } /* Google custom search */ .cse { margin-top: 20px; padding-right: 20px; } /* Table of contents */ .toc ul { list-style: none; margin: 0; padding: 0 5px; } .toc ul li { display: inline; } #TableOfContents > ul > li > ul > li > ul li { margin-right: 8px; } #TableOfContents > ul > li > ul > li > a, #TableOfContents > ul > li > a { font-weight: bold; background-color: #eeeeee; padding: 0 10px; margin: 0 2px; } #TableOfContents > ul > li > ul > li > a { font-style: italic; } .toc.compact ul > li > ul > li > ul { display: none; } #toc { position:fixed; background-color: rgba(0, 0, 0, 0.1); padding: 10px 50px 10px 20px; } .showcase-container { display: inline-block; position: relative; width: 100%; } .showcase-container img { border: 1px solid #555; } .showcase-container h4 { margin-top: 0; margin-bottom: 0; } .dummy { padding-top: 90%; /* Making rows line up even if img proportions off */ } .thumbnail { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } @media(max-width:1200px) { .toc { display: none; } } /* Footer panel */ .footer-panel { width: 100%; border-top:1px #efefef solid; line-height: 30px; padding: 25px 0px 15px; margin-top: 15px; background: #f9f9f9; display: inline-block; float: left; } .footer-panel p { padding-left: 20px; padding-right: 20px; font-size: medium; font-style: italic; } /* Search form */ #search-input { width: 100%; border: 1px solid #B3B3B3; border-radius: 3px; padding: 5px; } #search-input:focus { border-color: #F04A9C; } /* Search result wrapper */ .algolia-autocomplete { width: 100%; } /* List of search results */ .aa-dropdown-menu { box-sizing: border-box; width: 100%; background-color: #FFFFFF; border: 1px solid #B3B3B3; padding: 0; font-size: 16px; margin: 4 0 4 0; } /* Highlight terms in search result headers */ .algolia-docsearch-suggestion--category-header .algolia-docsearch-suggestion--highlight { background-color: #F04A9C; } /* Highlight terms in search result body */ .algolia-docsearch-suggestion--highlight { color: #F04A9C; font-weight: 900; } /* Currently selected search result */ .aa-cursor .algolia-docsearch-suggestion--content { color: inherit; } .aa-cursor .algolia-docsearch-suggestion { background: #EFEFEF; color: #353B44; } .algolia-docsearch-suggestion { font-size: 16px; color: #9AA2AB; } .algolia-docsearch-suggestion--category-header, .algolia-docsearch-suggestion--subcategory-column { display: none !important; } hugo-0.131.0/docs/static/favicon.ico000066400000000000000000000353561465312036400171760ustar00rootroot0000000000000000 %6  % h6(0` $!|䥁 }! Ϥ삉zzzzϣy Y;{{{{{{{{;Y3`|z{{z{{z{{z|a3痂zzzzz}}zzzzzˆԯw${{{{{{5==4{{{{{{$հwEE{{{z{z -<=====- z{z{{{EE+lzzzzz$;<<=<<<<<;$zzzzz~l+ǖ鉄{{{{{|8============8|{{{{{ǖڹi,{{z{{{3==<==<==========3{{{z{{,ڹi8S{zzzzz +<<=<<=<<=<<<<<<<<<<<+ zzzzz{S8ʛꌀ {{{{{~!;=r`========U=;!~{{{{{ ʛ z{{z{7=<=֗x=<======ެe===7{z{{z /zzzz 0<<=<=֗x<<=<<<<<ެe<<<<<0 zzzz//z{{{4==<===֗x========ެe======4{{{z//zz{;==<=<=֗x=<======ެe======;{zz//zzz;=<<=<=֗x<<=<<<<<ެe<<<<<<;zzz//z{{;==<===֗x========ެe======;{{z//zz{;==<=<=֗x=<======ެe======;{zz//zzz;=<<=<=֗x<<=<<<<<ެe<<<<<<;zzz//z{{;==<===֗x========ެe======;{{z//zz{;==<=<=֗x=<======ެe======;{zz//zzz;=<<=<=֗ՔՔՔՔՔՔՔՔe<<<<<<;zzz//z{{;==<===֗e======;{{z//zz{;======֗e==<==<;{zz//zzz;======֗e======;zzz//z{{;====<<֗e=<<=<<;{{z//zz{;======֗щSSSSSSSSe==<==<;{zz//zzz;======֗x========ެe======;zzz//z{{;====<<֗x<<<<<=<<ެe=<<=<<;{{z//zz{;======֗x====<==<ެe==<==<;{zz//zzz;======֗x========ެe======;zzz//z{{;====<<֗x<<<<<=<<ެe=<<=<<;{{z//zz{{2======֗x====<==<ެe==<==<2{{zz//zzzz*<====֗x========ެe====<*zzzz/{{{{{3=<<֗x<<<<<=<<ެe=<<3{{{{{կg{{z{{|9=fחחחחX========qחחחחP=9|{{z{{կg$k~zzzzz$;=========<<<<<<<<<;$zzzzz~k$MC{{{{{z .=========<==<==<. {{{{{{CMԯn%{{{z{{4============4{{z{{{%ԯn旂zzzzz}:====<<<<:}zzzzz2_|{{{{z'<===<<'z{{{{|_2Y:{z{{zz0<<0zz{{z{:Y ϣ|zzzzz{{zzzzzϣ| }{{{{{{{{{{}>T|{z{{z{|T>۽g1{{{{1ܾ^ɘꇇɘ????( @ ˜{˜{S3{{{{3S+Xݿ{{{zz{{{Yݿ+嗀 {{{33{{{ ѧk{{{ -====- {{{ѧkC>{{{#<======<#{{{>C#d|{{{8==========8{{{|d#˛{{{z3Tщщ̀<====@щщщG3z{{˛{}{{*==y<====FX==*{{}z{ ;===y<====FX===; {zz{====y<====FX===={zz{====y<====FX===={zz{====y<====FX===={zz{====y<====FX===={zz{====y<====FX===={zz{====yX===={zz{====yX===={zz{====yX===={zz{====yKKKKKUX===={zz{====y<====FX===={zz{====y<====FX===={zz{====y<====FX===={zz{ 9===y<====FX===9 {z{{&<=y<====FX=<&{{ӫg{{z /Oyyq<====@yyyE/ z{{ӫgw{{{6==========6{{{w2O{{{}:======:}{{{O2ۺZ,{{{(<==<({{{,ۺZ Ɠ胄{{z//z{{Ɠ k|{{zz{{|k?C{{{{C?ծg$%ծg??(  ܼM-ے-ܼM*Qܹ{{Qܹ*y~ ,==, ~yϤd~(bM==Qb%~Ϥd {8[ԑ==ۢJ8{ z)=[ԑ==ۢJ=)zz)=[ԑ==ۢJ=)zz)=[ؚؚJ=)zz)=[J=)zz)=[֕DDܦJ=)zz)=[ԑ==ۢJ=)z {7[ԑ==ۢJ7{ ӬZ}%YJ==LY"}ӬZ 刀 *<<* #Zޯ{{Zޯ#E4ԕ4Dhugo-0.131.0/docs/static/fonts/000077500000000000000000000000001465312036400161725ustar00rootroot00000000000000hugo-0.131.0/docs/static/fonts/hugo.eot000066400000000000000000000377741465312036400176670ustar00rootroot00000000000000?d?LPehugoRegularVersion 1.0hugo 0OS/2*`cmap|gaspglyfI:headN<\6hheaCu<$hmtxӶ<locaѝ,=pmaxpB> nameuȎ>$post?D 3 @ @ h!,3?Vh #.9Ah 1 0679`'#'3!53!3@@` @=%!!!/33?!!=RprRzO r}~ x6 ffgt@@Z""Vq%%%'7%"D"')Қq]]VΛ #(!!!!!!###53535#5#5333#53@@@@@@@@@@@@@@@@@@@@@@@@Gy6m'."7./.46?>27>4&'.'"&/.46?.526?>4&/#Y]Z##$$#P021c $##$P021c $##$#Y]Z##$$#u$##$#Y]Z#P021120c!!"#Z]Y#P021120c!!"#Z]Y#$##$#Y]Z# )>".7&>32#72>'6.#"3'".7&>32#2>7>7&4.'.'>7>&7.'.#"364>7>32+72#".'.7#3%3737#7"6&6'6&6&7"64656&643&6465246070262#2'."#"#33#32>7>'6.'.'4.'".#0.5.'0&4&7&6465>327.#"2322"#".'337132>7>'6.'.#"'#".'.4'64>7>32#hPPhiNNi`KK`cIIcZuFFuZ[xCCx[3      2   8  3)+  8Z%3        ]3       3Y    7PihOOhiP KbbJJbbK#Ew[ZwEEwZ[wE.         '  +:/   5+/    [r          O<.>7>10>'6.'.1.'A  %C^, ']B a[C 9N( (& 8jQ@5VG= 54.#'7jPPjjPPjO[3[rPjjPPjjP[3Zr!"32>54.#''7'77jPPjjPPjZZZZPjjPPjjP]ZZZZ"32>54.#'7'7jPPjjPPjQKT VPjjPPjjP@;w54>7>35"+3235".'.=4.#2>5#2>=4>;5#".=4.#23"'.#!"3!2>54.'#5#!".54>3!:23 /#   #/    /#   #/    !%&    -& ]r 9*V : V*9 r  :r 9*V : V*9 r  ֎   _&%! .E`)>"32>54.#".54>32#32>54.#"jPPjjPPjPi<'..5&>76".'.7&>327.#"32>7>7'#!".'.7&>327.#"32>7>7'#fJOgdLQe Oj@:iR|  @  %       9    @ !$      :  PfeKPfeK;hQPk?;hQPk?1     !             !        1F[2>54.#"3#"335354.'.#"32>54.#".54>32# e99efNNffNNfSm??mSSm??mSt   RNffNNffN?mSSm??mSSm?P"32>54.##".'335>7>7#".54>7/.54>7>327.'5#'>32'fNNffNNfN:0  D$%'9   JZi9Sm?Oj   @!9   HVb5Sm?NffNNffNp"   DLL  R.M6?mS"! }#/  B  KK   T)D/?mS  o,AVf32>54.#"!"32>54.#".54>32#".54>32##4.#"#!      (F]55]F(           @@   @      @5]F((F]5              R64./&"#".'.54>7>322?>4'.#"32>72>54.'>7.#">7>32&#"7:#".'."36.+"'.+"'.+";2>?;2>7%'    '    (  &       t4%2A22        !!   L$  #    *   .}}}}vvS >&My%Oy%:1#".7'6&6474>23702"+*.'.7'>33"#'".'.4&74>7>2'37>*'.5.467>7'37>76:.'.'6&>762#*.'.5&6467>77*&/.'.647>7>7&'./.6'>7>:#".'.4'7&>7>32#.5.'.'.67>7>7>;2lZZ TT21ZdT1             %%k&&U%&NN&hN2]  ###$""  :;<    ;::r@Z '#77>77'>737'.'7'.'7'0:1'.7>3'737>77'>?'.'7'./#2#".7&>3'#77>77'>737'4.'7'.'5'20203'.5>3  19'E F2-< G 37%GD4/: I       KF<a_>HI  e  JH?`b=FL  c1  ##   $'3/$!(3  ")02"*2      rE3.; H 28&FE2.; I 29'G    `=FK  d KF=aa=FK d  KF=`"!!"{2$!+5 %)42%!,5 %)4{      3%!!3#'#353#zmnODvvNY3!"267>54.#".54>32#--(AY#%$ ##### A$%#(--!##### #0> 1%5Ccp,@@ bH2taA@@@):"32>54.#2#".54>3.'.'".#*6732>7>=<>7>332>7>=3232>45.'.=232>764.'.'.'&<'.'>7>5.'>4'.'.".'jPPjjPPj^|GG|^^|GG|^                 '     555 PjjPPjjP8G|^^|GG|^^|G  751         `~  ||  ~`   $,4$      5k<I!"3>7.672>75>74.'5.#.'5>7k1xF o   :=5* %>|tm/     .emr;:pmg/k1N8" }%LLL%QTI&8J* n##'.267>&' %#'$ #'$  LdF $'# $'#: KkFf&>7'%&>7'DW!;P*'EX!* QC1>* 3!0>54.1!##'#373f0:00:0ftfRRft: fggfZp.'. >4&'p QTQ :: QTQ $$$$pp$$$$44"RXR#P#RXR"N3H0>'4.'.#&1&7>107>'.467>2"&'tp`mǖYRX7+% %#  Ym7 3   =Zpcr 9o[  #' ',8ZU.   ?$L$ .";;332>532>&'ee V V e   = <  3&>'.'&>'\2<4=F=qw2<4=G>qw tx vw %54.+".=>54.#"+"32>54.'54>;2>732>54.'5;232>54.'#".54>324>32#".5#".54>32".54>32#*C1f  "--"  f1C* !--!  f  "--"  f  !--! J         v=5$ "-!!-" $5=v"-!!-"v"-!!-"v"-!!-"p    4  G   )A?i>7.#".'.'01#*.'#"&"&'32>5<5>7   $'(F554.#"!3!@o@####@@y+5####`@*c12#".'5>5<.5.54>3.'#".'2>7>7>5<&5cKKc  &SWX-* )B.Kc "'JHE!$D@;7hbY'#  +(9#=iPQj='/  !'-CMV.Pi='! )! !0 "%'..04;@"'JB9Gb"32>54.#>54.'>7>32#".'7+".=4>73jPPjjPPj2F)%>EK&&KE>%)F2257752  @   PjjPPjjP  /UF5=94**49=5FU/   @  @ ? ''7''7'>7''[f[sWWs>2D*P'>S[f[sWWs>'P*2>-<Q4>7.#&#".#7>323>7>7".'>'>7!)#65- 93+&,/!>6." 6!$(,$$*)#&,&!*3+ *($ +'#1H0!' !/;//%   #-3)1O:|&*, %),  %%!%%!@@84vJ@@@Hx5;-vb%&'.'.2:32>7>4'."%6.3>7:32>7>7>7>7!.7%81&>76810404181.81.'##*#.'.'#.'4>7>7>74>7>6'.'.#>5444.'44500.'404#4454>36448;5/("  #*. /37 CP+    (+&    0& "%     ( "       ' !        #02%       +_ۍ?"JNR*#""       -..&MQV07*'5                 e  "!"A/-?#  @ *8X'7'7''.#!"3!2>54.'#5#!".54>3!:23@@@@ǎ !%&    -& @@@@   _&%! .E`/#7#>7>=#./#7# !  j# ~ !G[H |%#16:! h59> |:61FZG !)X4.#"32>5!4>32#".5 >4&'."4.#"'."267PjjPPjjP`AqVVqAAqVVqA       jPPjjPPjVqAAqVVqAAqV  e      !#35<6454>71>74>71>7>7>3>323<'4.'4.'.'.'.'#.'.#"      S      H   V*+@U%"&'.467>2"32>7'%.#"32>54.#%2#".54>3jKĽKKKKKKĽKKKKKBuW22WuB&H@7;O_4@         VKKKKKĽKKKKKKĽK2WuBBuW2 ..P9         UG8401>45<.'841./."!"3!32>?>7Q  hp h     h   h  UG081801267>4&/!2>54.#!7>4&'.#"  h ph     h   h  HnRg|4.&5>54.'>54.'>7>7>54>7'.5.54>7'.54>6H!-," ,:"$%$ ",-!  !-," ,:"$NE1   G    -!!-" $1   #+##+#{#+##+$&/! 4T?"      T    e    .'7"1'32>54.#"'0>5%@ lҋ5 ###5dxd`@dxd5### 5l %""#"5.#.'>7>6%5.'.#4.'.'.'."'"&   U  )    )        `+ Y*,7    $),*       ?G_< !!7=GO@ >N?3)B@ *Z~`2b$Hpd * V~@x<xHP`,X4\^7 2@& (H  2  @  * (HhugoVersion 1.0hugohugohugoRegularhugoGenerated by IcoMoonhugo-0.131.0/docs/static/fonts/hugo.svg000066400000000000000000001260161465312036400176630ustar00rootroot00000000000000 Generated by IcoMoon hugo-0.131.0/docs/static/fonts/hugo.ttf000066400000000000000000000375441465312036400176700ustar00rootroot00000000000000 0OS/2*`cmap|gaspglyfI:headN<\6hheaCu<$hmtxӶ<locaѝ,=pmaxpB> nameuȎ>$post?D 3 @ @ h!,3?Vh #.9Ah 1 0679`'#'3!53!3@@` @=%!!!/33?!!=RprRzO r}~ x6 ffgt@@Z""Vq%%%'7%"D"')Қq]]VΛ #(!!!!!!###53535#5#5333#53@@@@@@@@@@@@@@@@@@@@@@@@Gy6m'."7./.46?>27>4&'.'"&/.46?.526?>4&/#Y]Z##$$#P021c $##$P021c $##$#Y]Z##$$#u$##$#Y]Z#P021120c!!"#Z]Y#P021120c!!"#Z]Y#$##$#Y]Z# )>".7&>32#72>'6.#"3'".7&>32#2>7>7&4.'.'>7>&7.'.#"364>7>32+72#".'.7#3%3737#7"6&6'6&6&7"64656&643&6465246070262#2'."#"#33#32>7>'6.'.'4.'".#0.5.'0&4&7&6465>327.#"2322"#".'337132>7>'6.'.#"'#".'.4'64>7>32#hPPhiNNi`KK`cIIcZuFFuZ[xCCx[3      2   8  3)+  8Z%3        ]3       3Y    7PihOOhiP KbbJJbbK#Ew[ZwEEwZ[wE.         '  +:/   5+/    [r          O<.>7>10>'6.'.1.'A  %C^, ']B a[C 9N( (& 8jQ@5VG= 54.#'7jPPjjPPjO[3[rPjjPPjjP[3Zr!"32>54.#''7'77jPPjjPPjZZZZPjjPPjjP]ZZZZ"32>54.#'7'7jPPjjPPjQKT VPjjPPjjP@;w54>7>35"+3235".'.=4.#2>5#2>=4>;5#".=4.#23"'.#!"3!2>54.'#5#!".54>3!:23 /#   #/    /#   #/    !%&    -& ]r 9*V : V*9 r  :r 9*V : V*9 r  ֎   _&%! .E`)>"32>54.#".54>32#32>54.#"jPPjjPPjPi<'..5&>76".'.7&>327.#"32>7>7'#!".'.7&>327.#"32>7>7'#fJOgdLQe Oj@:iR|  @  %       9    @ !$      :  PfeKPfeK;hQPk?;hQPk?1     !             !        1F[2>54.#"3#"335354.'.#"32>54.#".54>32# e99efNNffNNfSm??mSSm??mSt   RNffNNffN?mSSm??mSSm?P"32>54.##".'335>7>7#".54>7/.54>7>327.'5#'>32'fNNffNNfN:0  D$%'9   JZi9Sm?Oj   @!9   HVb5Sm?NffNNffNp"   DLL  R.M6?mS"! }#/  B  KK   T)D/?mS  o,AVf32>54.#"!"32>54.#".54>32#".54>32##4.#"#!      (F]55]F(           @@   @      @5]F((F]5              R64./&"#".'.54>7>322?>4'.#"32>72>54.'>7.#">7>32&#"7:#".'."36.+"'.+"'.+";2>?;2>7%'    '    (  &       t4%2A22        !!   L$  #    *   .}}}}vvS >&My%Oy%:1#".7'6&6474>23702"+*.'.7'>33"#'".'.4&74>7>2'37>*'.5.467>7'37>76:.'.'6&>762#*.'.5&6467>77*&/.'.647>7>7&'./.6'>7>:#".'.4'7&>7>32#.5.'.'.67>7>7>;2lZZ TT21ZdT1             %%k&&U%&NN&hN2]  ###$""  :;<    ;::r@Z '#77>77'>737'.'7'.'7'0:1'.7>3'737>77'>?'.'7'./#2#".7&>3'#77>77'>737'4.'7'.'5'20203'.5>3  19'E F2-< G 37%GD4/: I       KF<a_>HI  e  JH?`b=FL  c1  ##   $'3/$!(3  ")02"*2      rE3.; H 28&FE2.; I 29'G    `=FK  d KF=aa=FK d  KF=`"!!"{2$!+5 %)42%!,5 %)4{      3%!!3#'#353#zmnODvvNY3!"267>54.#".54>32#--(AY#%$ ##### A$%#(--!##### #0> 1%5Ccp,@@ bH2taA@@@):"32>54.#2#".54>3.'.'".#*6732>7>=<>7>332>7>=3232>45.'.=232>764.'.'.'&<'.'>7>5.'>4'.'.".'jPPjjPPj^|GG|^^|GG|^                 '     555 PjjPPjjP8G|^^|GG|^^|G  751         `~  ||  ~`   $,4$      5k<I!"3>7.672>75>74.'5.#.'5>7k1xF o   :=5* %>|tm/     .emr;:pmg/k1N8" }%LLL%QTI&8J* n##'.267>&' %#'$ #'$  LdF $'# $'#: KkFf&>7'%&>7'DW!;P*'EX!* QC1>* 3!0>54.1!##'#373f0:00:0ftfRRft: fggfZp.'. >4&'p QTQ :: QTQ $$$$pp$$$$44"RXR#P#RXR"N3H0>'4.'.#&1&7>107>'.467>2"&'tp`mǖYRX7+% %#  Ym7 3   =Zpcr 9o[  #' ',8ZU.   ?$L$ .";;332>532>&'ee V V e   = <  3&>'.'&>'\2<4=F=qw2<4=G>qw tx vw %54.+".=>54.#"+"32>54.'54>;2>732>54.'5;232>54.'#".54>324>32#".5#".54>32".54>32#*C1f  "--"  f1C* !--!  f  "--"  f  !--! J         v=5$ "-!!-" $5=v"-!!-"v"-!!-"v"-!!-"p    4  G   )A?i>7.#".'.'01#*.'#"&"&'32>5<5>7   $'(F554.#"!3!@o@####@@y+5####`@*c12#".'5>5<.5.54>3.'#".'2>7>7>5<&5cKKc  &SWX-* )B.Kc "'JHE!$D@;7hbY'#  +(9#=iPQj='/  !'-CMV.Pi='! )! !0 "%'..04;@"'JB9Gb"32>54.#>54.'>7>32#".'7+".=4>73jPPjjPPj2F)%>EK&&KE>%)F2257752  @   PjjPPjjP  /UF5=94**49=5FU/   @  @ ? ''7''7'>7''[f[sWWs>2D*P'>S[f[sWWs>'P*2>-<Q4>7.#&#".#7>323>7>7".'>'>7!)#65- 93+&,/!>6." 6!$(,$$*)#&,&!*3+ *($ +'#1H0!' !/;//%   #-3)1O:|&*, %),  %%!%%!@@84vJ@@@Hx5;-vb%&'.'.2:32>7>4'."%6.3>7:32>7>7>7>7!.7%81&>76810404181.81.'##*#.'.'#.'4>7>7>74>7>6'.'.#>5444.'44500.'404#4454>36448;5/("  #*. /37 CP+    (+&    0& "%     ( "       ' !        #02%       +_ۍ?"JNR*#""       -..&MQV07*'5                 e  "!"A/-?#  @ *8X'7'7''.#!"3!2>54.'#5#!".54>3!:23@@@@ǎ !%&    -& @@@@   _&%! .E`/#7#>7>=#./#7# !  j# ~ !G[H |%#16:! h59> |:61FZG !)X4.#"32>5!4>32#".5 >4&'."4.#"'."267PjjPPjjP`AqVVqAAqVVqA       jPPjjPPjVqAAqVVqAAqV  e      !#35<6454>71>74>71>7>7>3>323<'4.'4.'.'.'.'#.'.#"      S      H   V*+@U%"&'.467>2"32>7'%.#"32>54.#%2#".54>3jKĽKKKKKKĽKKKKKBuW22WuB&H@7;O_4@         VKKKKKĽKKKKKKĽK2WuBBuW2 ..P9         UG8401>45<.'841./."!"3!32>?>7Q  hp h     h   h  UG081801267>4&/!2>54.#!7>4&'.#"  h ph     h   h  HnRg|4.&5>54.'>54.'>7>7>54>7'.5.54>7'.54>6H!-," ,:"$%$ ",-!  !-," ,:"$NE1   G    -!!-" $1   #+##+#{#+##+$&/! 4T?"      T    e    .'7"1'32>54.#"'0>5%@ lҋ5 ###5dxd`@dxd5### 5l %""#"5.#.'>7>6%5.'.#4.'.'.'."'"&   U  )    )        `+ Y*,7    $),*       ?G_< !!7=GO@ >N?3)B@ *Z~`2b$Hpd * V~@x<xHP`,X4\^7 2@& (H  2  @  * (HhugoVersion 1.0hugohugohugoRegularhugoGenerated by IcoMoonhugo-0.131.0/docs/static/fonts/hugo.woff000066400000000000000000000267201465312036400200260ustar00rootroot00000000000000wOFFOTTO- -CFF )x)x[OS/2*l``*cmap*||gasp+Hhead+P66Nhhea+$$Cuhmtx+Ӷmaxp,7Pname,uȎpost- hugo@ vV% vV% JGL )o8 !$'*-0369~h~hk{qvlllXllllYlUE//vivu//vuytx[eev~?Jł6>NOnn3+^ \%C#TGGTTGX`x#~c?%\!D _xl`XGTϋϋ‹l_ ׋f_xl`XGTϋϋ‹l_fӋNy _xl`XGTϋϋ‹l_Jdkkddkkdmakddkkddk"adkkddkkdDdkkddkkdkxh|fdfub{_hYS 44 ||}5", znjhHPhkmq-=y{zy>SIW8l0{||TkVAin~s~spc&cp~~Yxffx2d/+/BTi% MiTV``VV``VˋԋtTkBkkkBrrs$$ y ˪ċFkkBSZpu$,2vuu,3E%ƛʋO91#O.-NTyyyyyyyye<cBN<6cE##EE##E9_ hnnhhnnhTnhhnnhhnQiircrrrrbr#$hnnhhn$##rrbr~iiCiirr#$nh$r{{{{~~iiTGGTTGY`x'Kw.n^}W{_kfTGGTTGX`x_xl`XGTϋϋ‹m`˟?kddkkddkAdkkddkkd.dkkddkkdT4ttttk4ԋV`VV``V~V4ttW.*e|zxxxxxxyy}_<qrt_|mm\Kw~_~~~~{{wsspmvwxxz{{}~~|~|{z 3 @ @ h!,3?Vh #.9Ah 1 06e_< !!7=GO@ >N?3)B@P72@& (H  2  @  * (HhugoVersion 1.0hugohugohugoRegularhugoGenerated by IcoMoonhugo-0.131.0/docs/static/images/000077500000000000000000000000001465312036400163065ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/blog/000077500000000000000000000000001465312036400172315ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/blog/hugo-26-poster.png000066400000000000000000002071271465312036400224510ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTEd/E00efDѐ'aTbii//m_oԔ(.khJG\rDzvmsw~|ܩ,߭,--XeTBݟ*΍&,aSԎ-v~iXpU,^@ڜ).Z^׎3sLݐ;zs`ړ3[QՇJ*Oc`\{5eט(^dgCbMˉ%գ+AEwy[t٦++}l_ޗ8ً;:܄T؆OJ߉C}FyIDLhZ,lTN?ҁ8c҉E~Sg[zROݢ4ށIIۙ.;IГ9Ȇ%gЊ,tW@~?|w-\_\mӟ)GpSb\ԗ(rP?Ԉ4wTYڢcx<{O彅́D㮐Y6ګwI6>kH۶Ea࢔qjʪ^ߕ秦ߔ܍is*7J k d^a0⵻uz|I?Bf IDATx_HVi1iC10;~ĘE7#hh c= 7D@lvFwԠ-y ߠ!i9bquu.Xr}iB}N.߽|YRl탛^_~f}mpxc[K3hølw#=C^wN mG˯O> '~ P<;ԾSN)ܥi =S^ޗU$ӧ+׉D?r  vԱ{!Bwrw ^6Xl OVqG."P[5qzk*. -4:1|W+*d]6N X7$p߯ꊘYKPI?+\0ϤZ$|W\R *.EpZfc$ '}[qnxÝB83y6|A>-oW,#@LȀ1<(KF q"ɪ#M!­V_?u!ϜM)QNzeK%}1JG 2IFP7R ?![?y,D@H聠  L?CvZ K+޵ZE/k:$I30TO_ 1DixBx/ __[(~bwJjѾk9JD7fgȬPÏC[$Q n?A)?+m< E:ľ4=t!h%xFrC-ٺiBG։@04(}MjܧGp$'|*Bpе?'9)R49O oI$ۿ?9tx=ɝPA VL0& p]`hP{o|}BK|ө<"{y uHOc7e0{>&%CchCs-P|""aي^}'~ϭPP2(0uu8t(Py0((T  c lbd Eb$tyVqFt +)w?>0It- 4@T<iV>fDܧa0WB~r;C#YtƜGMSF1䋹dEVweR ]=~ûZ>T(@3^"{FEJ/k m0P5%R U#X1!,++W:[ alg!,2N$Ɵgxl$zpeOTKM۩%B_ yx;O=玡Ie? ;1(SRhhA ! “ jhfh:Is?dC-/ Ŭ;nzDV@ A9]SwB?ݝM< j8<,V2PANE{e|D IRl:) r%ds 3KO=j"N.?LV8vP9Hf3Dhjʹg1<>dp*NQvda8!CZWí$jIfC7w!';}_-,Hܵxb/T(fo9^&@hgg/${9c5nX֚i gϞS[j8{ Phq(bH+G*4^Di !$E$鿨R3";DzLks3=Gsd=3skOc5. leokUE{ U֌)Y|P$+$"xkz c:GpmSיZj)p('JsF'd{g`qmHWr[eɿ;߅ɹgniL>L~yY χ|6p&h5l;>*Pbt͛卍L5! [tpߥs8f#i4_Z gz5 B{τks3Atu :`q8O-I:u@c(<P \@'O/(w$- aOg]!zkq׶]0&m/4ʹ#}'\C♆7FJQ}1U <?A( jN1<- men:,&'kgbN w:F5y%ɥ?үglKsa- ^z6sxLִ7#,O$L;cfQsGCWGYP31k?5OI{FiVx3sРi1,3 Μ%}ryΔBH73YJNKa_!LX/bkLsͣY)sD],BDP)! gЂ651 H>@(Le‹IkBۺD.M~慐]f);ۓ2Y|bg4#DŕDʙ~oNU222#Ll LK  PhJ=TW'JBq@x)1OR:捪i'ͦ!L3eNoOW}A8Yڿ3-~Cqy82ThUsAgq .=O߹s'F^Gc"S"90c>Oc)ŃM.sbo /?tu+ aƒ~G:L1|l?e>Rwi"COAUQp08"TLjj0d&JKa\-PQh3H)~{IsF7ݞ+z藷z!oۑփ3_i+rW*MCtHQdF&>Q%:P\ L=\좈7@[3(L rL_$Lk4W`hogMdqvR^(V6v OpkKJ<a^|5ŝ+12s'D)F2@(te6CO[8Q/<,b|"n({Ԍ3(,3=C Rj얉m'EvJ(iDWt)mE@_ 9a5qOKC08wxY\+[e%0YnkjtGP0;LQgbbF$h<(t% T0eT(!*e^n Ľ3!6H_GTW#m XC(}Q7nu%Ё!}8LuyşYaHH o4)tq%y=fU*m MI6f L,RsFJWܓ1.=ڡ,va VBkDImS>˅Ahr:vJ9\ܙx1( l+B5*LhY *\Q&v$$iD(NJX!Drgb/G7.}oܹem3PI1!w)C&2cv;YZN0fN`A qfn!%+krF98J89xoƽ޾LgEOMQhz&޾xIUy&,g'x`V% A;(LwG#$Qb8((,DQT2xr6OB/N)ܟ`: nҰl+4ޢzV* M e槄JsK2 :/u{DgW~EݸqS2$!lJy3S9Db,&@>O:m];BLHi®g+!`G4 6N K~jfiNQgm/ BdnL /r/ž Bǘ„$Ko#*e!U A~bВcI*_g[g-%RBWu}#o(1i,:>L]{:! m{+H!w*$aL Ѵ"x{;uc|Sx$sn=Ur !iVsv(((TivN&ờjBXRl\uL0BlrCv-2cTX -Y3_Ȥ{<($P/L_vbAgb wƧQH_0*K<4LFs,nC D%d(R(z!Utce#4g4]r[K!Cϻ4QptCGjVu IDATF@egRi*˧˧LHP]|aQJB;jwG}6{=i0<ys1%|Ghn)O}&0c-`2)%ZLW^NmB~R +'1i2&q%l䇲~(T Ja|5mTodvm"r9W*%$t\S9F 1#Z.BZ* hX19ƑBQ|0BY:Y\gⓠmgb !h!o X0(T*c!T]O‡4 H |G߱ly/C@m)<\E28_ȄAkZ'f#Pbx+u$bv@ď+aN2H -9^"%YEMF s&5S“ (|;/sP+PB(L|&͜7,9bm8!dw Đ\4(>xKɤ r(qLx:Dˆ:!< Qc0-=P~':Ѓ|}}6 ԧC4F{YVK؂ѵբ!,`z9,L你+=4%-f'GNj%}%c)aBAq`),B^) œ4'k; Bp:O3ioG6,x1OCyUq's;2g*aKK GjqF2/% m:"/b@X^PZt_0‡ )ᝰau#(*K[ x] `QxdFه<1J C;hbBX@_1 "k Bё0),\fd-d˜Ah (.& ʎFQYefvrC|S=oEܻsR9$!)2(]>s`յ4<|1a*Bk׺4=޶f,i3Feih^e]] Qœΰ{wB&{tGQC  DL wIϘ >cPnIƯC @zur"4YB^gKM߉(Bc:k;z*1<<F9y=l\  QاKa{<,֌WV)ae֖BpFbδjme[zpaUBg0m(W#bMƗ@Lx 0#ŝr}+3{`H ´ckXԎ#酭yGjRZC(2>mgCp6fޠP'OhvZ֊H(UM N PwBZF (Lsoo B>q+n9CK6?r7R wgHL}8;9+ 1JoMn-N" tMAœwR cd5B 1'M9cjpSB? T]-5-04|zkooJ~Lh:xzTBgcH}(eB^48q<|E(/س"%|[ŞAA +//tF gbJ6,aNQ01hYܝLzBQ bx+aosMoXbQB xYdf~,iVZo+=&d-..N 75b|g I //߼g":Wej;!1a+Q`Gs)-TYQS4Q=yaUI!/󾷗JX%gu zM,ŰUB.RlctJ8A36gz)ڬWv'f(C/o-Z3pkp'502'R"#}/{K$4 (*2 ߃;aQ(!rXLK:LjV7 ob-p%``Q K 9~!Ix;35oY93Z`+,JZ!T€Ef)[LXP =ijM Kqu% :mn J"U ńZ/v$&r/ʛ\*TB,3+(cPƄaRhG $|g6Kj+9xQvJmfW666LmLoot?% 2wB%4&N^. .%zt2WA1]J}D]6K f֮n(&% u)bӕU-%8c&6Y9\V9KpxU> qMJAf3! ۖ~dER鎬!\!_Ց-UuÀDgZL W#0ń^%VuǾL!(L2xIޅtB 9 =N#J9g52$?zCBv m%+Z!^ó jm K-kY[ω1sxyδPٗP-_+akQD/Fe詉伤LQiīWPT~`2x!!(!8 p ac_cWRaP&CP[Qa,EP[5 U3BB摖Lٳ 1֕U;$H|QRfpwbF^gMV ̰ߊ3Xk:;:;z)mLBvRJoJZ8KЌ/t%w)!!bRXrQ7K*' 0%|a-ђKᏚh%UJlUV^kdOW* }Q(L GA YHȬ@%lll!pJV`}^iЩgX4ۙ^RHҝJ(ڼ\YhGvE#dT~.* ?pt=v!l&"-P .[N+QpqQ4ٳV3-ң/h_3\4 $!t ibȞAUAe%B ߃?Z6]Iދra) UqTB>?a﹵EB~E!4g7IbVe2aJ| k:(";=^ D%Y񒭄(!ǰ%$+Js•0Na| rG6 9K`{7Dp<ҕJp&|a)BW4z#c=(H(!K7ShM6%ܹ2!hq1!ݕ4˭2G4_ S*wEm)5~\5K%[VQR |93dâ  gnJY0qHEN#Px)8H4T KB?t@vttT(a1!^o@P0:J+jC K6J 97[UPRrHegCB)sĜj ՆPDJ |`$~ 5 7AJ8_~'3`ep ԣh۶M,Z?ӳb"aibB3$m-rdhقȂfID~/>H ;/QźBXh300<}Yn*I]3A[ O̕nA/~ggbc+!Wwܣ S/YJFe\ EOAd-ߕx~ +\{)+{z=oʝB(]g6 ?{ʀTJhOJQ(bg OJ⎶1Wt_1DPW|23"]\6Ӝ) [qAQh0z&!(MNE)bz(J\"^4W <djnrcT(hɔгs=BZL8؞^Xq( :YBp._`b0n|3" Bᾐ3}{PY$+ބQYpwXϳm!m>%MMxB&"*! Fb 9) AJί<>=BC W2۝F>qim9SK =gzv7tK).- =]${cVmZv h8֜BBjv3 N$ATy! ltT * -5>wt>?&7qG`񹣕J{88ZY[3ksnqsEĀ{Dݫ gW6Ր?³>~h("r#L7…O_ *>=z(^%l]P6ppGg@{n0",#@;&즸idj|SYP=>_|#nܘtuC"_3/7fJ.yH^|Z`Ximgn鍜91_ N>[mm~csxln SdXҸqȵQ_b/>jA CL2_M:/_ Do\qW8? oyiiYx^A !)ak8d 69H/2B=:4S%9w79mA `=t˳ F...H34|¾vAn "v2b9pX'ݗ4PpHVfisu33\X&On60+xd҇9бp0ØR֊>4;HZr\k:$pvpRh^[LeB@]E$J s5/UKBb OJ 2D PkEXo͵`[ U0z@,J!TQ<,5m !6TcC= Al DzVFԘ_DEQBCT!n8l3ؖE yJ/iƮkju~]`zW|3J~)ȶA {|}rrY=W:@4 +d 7P 5"?=?o>|H^!|j-[HCCCGAUPRĔ*ƇmA>ې@PB SC)蟢<6] ] $g B*alrXi>jzEAmXr%Ē:/@#`z宛CL81n ]qahdgf@X]H 6;)4@Ig]2Dha^1E{Af5x{5Ob%J O{wx@komW0wj[ 54Iby 9OZHtJQ"67H8f.ػ * #X`l&D&"fAk(-*=r*+VrrZ@6ɐ-V$QPvmKlj'j,}-쵴O ,z85=J /V.$oxyßq!4QYH\g;YwY`9 mx &vJ؁]fvssH9|5"hIU2VpСC#HyZO>P|JUJ_!vM RjBbSȐz [⠉/@(?%xxhZLv0 :8njCFEJ %.`QCA>1>XtYyACHn-4(oJI֒( 0IxhDhL^z Gx0~ܑgS)aN (?x,Ǎ8: Z8 vP7 G-J̓6(P,K5!4Q-/:`G=(b *1R1&6:4CwB 0 IDAT ÐBØ)n#v"iCQ<.wyLl[mc]k<ѯ j!~QPr!EkZd4+WRqt]b̑$#p'3 s*BcbCAzY#}>:鲕=p[ #/"r>[u%Z&X<=n˛HhR(PGIqĐo 8 ~qؠq*&@fMn(i3PeQX}ocIѡaUa!PLLyN!nC"OyʦoxBlmSSPQBY 7\UD6+ViŊAh+x(:pM1gw&y02~"K~H&*C͹ؠ݋sfL3hXA>-";j,)BOC hH刻š:X'7W++9} Q怂c,t$݁kqhth8rc a$|OG,3rd#HJzLCtFUP%OAyˏO媫`iÈ:[G!y"KۜbÝPꂻ ~KE_H&ynl&ovfusGOʠm- A-ubXo?@H cNζI`A΢c:k=ۍ;Hȷ{B 埽sӧA&;jzϺ5Pn@HvBib2i;!8/?)䏷 Y8 w]eKB(rͨ葮lFY"nX\!rBZ*qIR73B!@F5p8 GH#C0,Eퟑ?6e6'H!lDhN Ayȋ>1ikj] (c0SZ(Gq!O))rKUjWW? :؍Z}~w+Uq.DOh#dvIj* X}ժh#}А0WS F:sAέ+سBBo|gƠTD&=; Oц4Bn1Q {\\u'R'_QO-CCWBCZGGr[m[ױz"1;USq2ArCǹvkVi?iG(A)UDj@@iIkqX/F)Y Ee\[GIy] ^廖 !䇎p`9BJBAFF);w9OLARB`xsw+3ZtǕPo~,k5B[}FQjژx"9Jl3+Z- DY!R  hz"><hΞ$ᄐ4zJ6]OK!2t4TVBńީ*+%BCM L O}dxzi=I[+ BpcB zȶXjJLAx@*aw\ uotյδ42 s .UDDQV8"mWP c\91⃐C\rx_WQ?mT= JqRZ5f&t@XNj_eCN :M0A%C8)"‘a؇C4)% >2s}M!O+'=a"ݑ*!CͰ!ԔPw)ER_TF2t Cc(+eT.x  EN ¸i՝%R7s,2 Kd~%KPPX 4* d ""hiDP={Ph<S ޺M%|ۺ<0úTZ+|F(T~+P ƤQxaWA'%D)d n1MިȨ!Æ%ƃ^H PLPg[~t]5ފu.ò%(kB8I` !C*O ~{P?qu|!

        aJ"RJ q%ep/B 2!$RuYA woSЈOT+:EơiB 'eQjcCP=={~c45Qbկ02X%eP:(lPrWw@Pikjn9OϒrTBv1a e \ᦦT*&D'dibI* Q; U^C U F( M!b:Qx!WC=4dkCuGbZ|H~J@jϭrc;ZSSBprDT&HO64+ubpbbʀY(bgۂE)z*Ӹ?bLT0x{wF->1ҟoc5?$$r5 [QBʈD S.5Ԋ&MY`>PhS)b-L -"gfvG $68ԫ''T_a{&*K*270Jy(cxA7㜿|ؾ> |z)m&Xec%PB5b>yrF%Q PHPC :~( t̔^ !' *DO~J%\ uݻ7hV%| # BŦdTxpBz1hGLya[NcΟ3>iz5'R*n[Od@nØkBVBoD'q73Ϙu!J( cuQ]4ӏ_Kٔq%ٳh"`TJ |GAWPB 4z[*7nU Av /E(9tvy#'"Za6y 3B84v X|q)W͔+%)aKL h%lΨNjғ4ӖK!@C=X>PZl}X3Еto(!1%+fL2c&b~fPG "+$ a2r(t\h_C HM|\Vw18F -%Q\,7rr>5:{xh\QJ 0 dt5&%}DS xByZj;'&%JezD͎l;P6=MM C`8! !MC' RB]}R-9m b۷!9UHg7dpcǀG2`Mq.K+ t!(BCAkPCh:J N\' ;Ɩ>PBFi KBô0[APL|x*p90Nq'WB H]J]q&|R1h>↬3T01ćѼ\\y)xG%bV`%31!F :$ A]Z(0 o EPx!9 Av[[BL;yJ*AJ"顯XwM+LB +0.$EBj\[a} 1I(.;MEY7ojY2kbx|aMQ[U3nLO_]C Ύ.(VwJ׉(ԃiCO !$ %TTB/ "ܞ Xba݆@Q*7Fѣ#0hP~b MjJE`?|pc8z䢊tTk̪? "Á+jSk)o|"`.fUk @@p=)>&: Շb~WCا'fO,dxVӶS\u5J(3YZHxu[1C&6לiB W)rIS x}!㠉<_:@ >xE9ěVC>6Do AHAaJ$9|umʢ#gh.}55E.S  t=<aŔ)`Y5B,`8>#Maq՞ W}1xSYJbC 3yzX4VuXX!8dM0Mrxu R 7W4R8 *;Ԝ"QSGkQPiGj1 E s+/ǠKJ؇ZWӧsPG)$uI44;!JH-Jx=() j0 i6IBH7I&E_Q!H#FX x5KGcgj!M](GImp\ȀFp9 a)!r8cR:9O+ =ޒ\6[{CC G51gNrGrxCN +NAgoy0nAq )bˢ쿑ZV7dxkP*)iBH,VXQ4L +Ce*'V{$}mru6W͑A rg"k7tKo<>c|+fqg# tޘ_,}u˘;q[Pzu*i.itXAQ7{/Yx&TPc"V;LY\v ?j.fQmzd@(@4f )u .A#j!JSqbu:p7ΟR#6W"VpkVzl'c"0Dt[qƔl\r@ٞ \3 o4D [C*Q)%$'}`;hZZR4Ik8W9Sa@ۄ\ |C. 4̳qIakB$q!{1^27EV4VaŊ8D*&F }PBA Wk:jQbnڴQB6!3FE zFFšfn Q>"d : SLrPhU*'pXƄ>YJCc$ p]Ntzww`clA9d)NDžH2׷}u(C|N`RUXj5+,m A'LTεf?Nֈ ?5!+P"8Uq(@ AD6Â6\ }ק JAXe¹plw{]PC&2dJS6pGIJx@㳏m;Z1>Ɩ|JwC_y8{b4Na%LV;:x/BQ y WxQWMIa"DM<8։B !b~J 8xcO (w4Οp浹|AJ Qzց?\p.!)ԫ!!X%8+Ýbir ܰ7掊/PU"v)#R|d6;}E !SԔpMdʔMࠢZQ- M$pO) _Sh󼵵0QGAŊ"unn8;4׳¡k*0䯇ĄcI :y RRj1 ! I NhHhf! [z P'bL"b1x ];v:KUC)T3: Iot dT8<,bER '[zbOUu6'"5IJ8͌933p%ي%=ñk|1a 1,DZ(3CPS ^)g qC(*Ӡ<["Pb,=@c6SC@WS{lS6K6U(IdRH*+@%-mSmy WHBH\;z󁙐M"#8&=RY`;7o0QvZ}5Ұ(-}VTH~$bj`:;&DŽR 5> tٺI#x!Pk@O}%>{hЊ#VhV ju6k1E|y Ga5H`MH1UrpıLs5>YbFA`/H5 Ua *5[{-,JhhaZQy&Hg, a7jAx{)TMh9"EC9u4 k$Uj:jĒ C[^hbH-CLG xRBŒp=?B C!d J zkF-$l,L ypA[ %U?F p;q@(N½$OMAIHAZ~`=M 7FeJE*0$*_7yyJz}szX$ IDAT_!jP6NS2LD^CJH)v: ³߮ cgg?0LKc^S@ 'JQAXkuX:t(!%fCI fu)xo\wXa"(<s_}iv$+sz(9O 9bIoW1*Gk(zW@&ʥ`F~\p<@,dC,cigyn&KX^Tb}6jiE!l,qjңU!' PB᏾&+B&Fegr 4 g뢣42ײs_1 7J<&}fb/gPmQMdC8ѷ0ʡ&[P*{X\0%d 2 Ľ n@k%?S5h!D oDBӈR92ƖʢQU !appb"b]H^6IjtV}3l}|5OE% 9bvxE0ݾO̾SjN\DV}“9s14([Ŏngqkh p~,`9Z14&dbgą:`JȶհfHuSu̘6&-rQ{D/@ujDKj. R*(J!})RCz*?M}(ਦXasplvirxM\Eݿ9.bB$lGQ~ óv,ymQpJbBv3X Ը6҂JXSCRȬY}C ы[e.(#6tV#T=W F._l,}I.('v\Cj\+'N(2%U>4 akDl$!C>Bumk IJKY3QM;)D3Jβg>/N4gNyiߣߤVG(N]#qB,D|`RX&-1dO@_ûHaJAy`J^VUi ?adK^w#7VQB{i'p+]0n 4JM(Zm|$2㰕Xmf/}BkCp©_Bq q()!glAĐG M8G'"~A OJH]eVJw 2 Nm0 {Rh$r\zˊ8j31Y y oPB_"0xӴɇ  ǥ Yp~-$dhopAx|)#]8ϸ Ɣz<əPh^Ik s CGTpӥ``+9O(I {*0_GZZʜXl.JTRJ ɳ#F,ph_#bĉ}UQ"%OaϜ. tp{jR 7.\-|8?K_ *%÷n7(+s}m^[RCA"Z(;(bA,N[3׆J3S3+_'oXg%mRά?#Jy_)z[O}U9O=^ M@ KN p 3%<~߅f~F"G>O r C|&8<˃Boڢ5J8>@1H \ɈH&+!E>*T^ wGB A ; ܫIXted^YEef-Cs4#V#YF9?9CM"0->El{i-WŀN'&)P)tFo8R/3qSB ]t W1)5'o~}LT2TK y)F GZ0)d6>VYzOiNA-%dc2%2]ŪrМ@Qz)#J-a*hpSՊDaJS SJ0{אk^%<{8<=Z摎. !H!o GϪ qJh)/< )zنf!/vIPBߢ(A<(ϭM:`twTCk$~w0w{B)4}ޤ ͡QvN \~0Jxp83i!= U 4ɆB9A.F}%̣ )̓(D aee#mc´½U2=ڻ@ՂB}S0!*lX?iD 8h{MMcB+K؆_ eNCdiȬRL)uطZTE e m[ {hmB"1!0 BC6ƼtIJNaQJ8Bs'{&fӚb!ώ6U!$LQӮȩإv0K΂Edu$'wGE2_K=Wj0~9*p6~j;u(& )!$`:Q~L8?_CUg%<;2x^ʠ4!dR1zdP6ҨFmDXGUCN0ׯJ)lS'$Pqr_#"_ijI?㐷;ML+hC qZ(ossfAϒ?bЯwBBACYB1F^#XFqEPC1?Ts-a㺺^ D}:1!͸JRX1'F!&q2Hu߷zT2R4+&~2j?oS'8,nbPT\i4@ ( !2ȴq&tbT{AJxц4m?:vZቨT}<+4/?: x+Yi (lCs Q(bA{1)!Rg=,G_H]iCR6A7 XUX֖8(Q@rӣ>u1ˤw{{"(@ Q Mg%6OQB*x@"SD'&m)g>hcR%&\>g;)ۭ=?.<$GRx>B0-: T„q= 6>ƔqS}3{8DQ$c !(aS )/# ȶ?B{ڪjH ГOGY/H%iZ-k,D$81o!#e E" !lh2(wF!`x)1E 7*@)! ´NQ7=A i wAgPfC>oJR•䍞Q1T""œ2L ;AbDijUM<ٻH_~:2ӼS+f|!oo- =\pwܫ8 ~I )Ys\FLo(pz?4")oUiꅝ* x+|A!sG1!6UT T'Yӟ@ } ^q{ڢ%b> Qc1$i8됑Yokc#Mק?*[dzfVۿ[3)!Bbp>Nv#H`wt 'ET!) !J88ȥg¡B ++icl& TWaȍ~(:EVmL(<=5jM,7FF)"JϩZ봁Q_D}&4QMBk{40wQhB(ofH/;Ji CH6 Jxl|X|k0B#+P#bΌ^^!<5*3ȡA= B@ 94rHmQ84#";'[j__&Oҳ3@aOxڌ` t{';ۦP \a6]d bRRjv1T6z@@i=:7:1Z)q̯߭:ln*c bP(l*T"7JQ+MЊ?E4E-Ji- lUgzRB4C &tFQ_ =d czL %0˱q@8&cs dHrw[{o$mufm]VvѨďu0"Q;MtzU7\=$>kMZu`] h**B&m8-LDŽUPTaLa԰$<l?$^_y:Q%B0fc[Ʌaي)qwCNgmفe#)f}9L`H'NwϥjqCl.z h~LZ*lh4c{qOX PbnVNJ+sXs"Sm,xFȄ8#ʌg n,& 81;Q1FaL!sqf7R8 9a/@u51NigWYiúb?TXzɄ[,l-6&l_C)҂ļcr2k0 }^=ce @3xWEagtUn5t칀١Uњq&$*jct]1N'ޒ31y]N2"u"RXF4t]&c?F(#ƚU5CeCURHD!kU(?2"GJ UZh<("L2xP= &ԋQc@qv5ۅ2dY5ˊ!*iy5fM11|&>KLgPvX$ 3ڵ:h([4'd A嶥zqxyD8G]MF%\iRF'f^pt!&W) [oC;1XhBn$u 8D1L!=~1RVgsH$-F8(Q7Mpݞ,l{cux{Rܰ5{#bxs6XM #<$1aQ!UbBeWY,64f>dψ!p%֫ϴBRa'Ue:;qF?u&T2N2MpRiJO)ѳ #WjT"m!ďw瞛_h1ɬg EsgR`ĐYKu mPL!|DLuM;Q.GMN$]cf( rj Ļg !pVfÿ_ieƅ}NE2ԉ9'DAbx7O}݉}O1Pv'֧T)!@;H#zI|.8e8FJutN" Nj pX ]CF!0΄jكV T9UAFfG (W1a CH AGaYf]ީLX&D= <!hKC%Nj/ w~:90{1ɪ7qv@]SҘU'j\) 72yn oc S%&JkKQJh5eCP&&1!Ofy ^3b7 G!$M9W#$XH\+ ]U`.3Jɔ]W.lKv,^raגǗ;\Xbdy\rʅ UK̲Y93a=Ơ#A>ڏ񹐎Ul <++RJV'u66R,bU 7bps)"3?[ʙ13!BfkAJS"lOÄ A9D*B@pÆE W޹r+@eB!L4(FţLA ~-O\raS.N?cJ)<7n(³KJKp%Sv< dW<IVoXdɮ]U%ꞣvUUe\&۔E$gzz/,zY'z?\`6F*AHfF,")!EB ,!uZЄGі)o)׊17L`B GqJ>A5=\_)$ q8Lb2\S(v &lx ]#=8)CZ5E}p |ɼ /\)0KBՔ*̮i,re?SbpZQ@pdW<WUO6@Md#n88D-)bʂAV ?x,* Y$C0\yki[oBpV:iNS~c2=8p Fv"ŸJ4 K'1!,Ro/|fҤI~KvMp]BׅTJJn׮?/$.U*E2p 8\lAޅ.AJHeIɅbL{aI ."{3SXpt54!(Q "9@ |,bX qL Vd[L[M*JvTE4d= QQ?R7~&6Ҝp$+ ?KqaL poHqz%+S+@`]U ]heF/I%H֒{&Mq0 2 K֒=e\OYW 0E0c@(pt .z 1!7Ƿ9v~Xx:9O3'{'c z/dPJJ(B(CՉ1ʼn&I1STNhzZiaS{%DVc(=69Dݡ`z"yPU-. g S]!Y6!btyiw覛$ *IN vvjUX+v EhU/̼+MD$l.\i<$nx7wV'0C ct3qtA8j plcJ6N%5Nu3r&{ONLb؟36Pb vnuYHJCyix4=ݪG L ~LRQ8{J`-wHL;rn#J8M)TX<4"~vJ<O) ư)K!I,}NekgFhD]1bt NsLv[;.?ݿbH3]?nz֎h # ģAhi愳?CiW) M( [|[*U2%UM \;"tP\U)#4aӋx(`pι`'~ƗWv <:$nۆh]8x6R3MLbiwt' ӨoY_*lzpTlDBՑҘ\&'I`x|хҙȗ) T5|3z;{oq(;˯BY"YNJqXա0Tn )k2[>e#1aH {c akWDď:;نX F$dX6Ia*8O['fm) b8ՊJ%cNc;kgءi,ʎ'@%Rw]MY~d9CYUC 2dBu.}_U%".BL "HwOфaz_!ٟr4Jz5"sW*T"0t UѯNƃ! Rn iBJ6OE6!b(4:L&Jͅoਫ਼'.eGQMQ{oSC8UWJ1mx`JXz*o>p>S)̸i&e2YXZ5R공93r6Nn~ lN>Y"R†m1 #?y", уji;q[K"lىQєrk!PJڄ[y)JsV;fx6 Mkµ6`/׊G7RWbܦL# NX?ܥQ@z yDD1B3r~e0NJ7,u1DqR:5l}{)UvpjLx:S#Ǝ8EO5PhH#8]l _8px,D7nP$B&n~ oa;t )6 A`=^Ej $n;E`QUXI!BHd i%JeBsmn̡wew6l.m7( i.{لxsy*v4b趕,A m>~|J0<Jba$J~L;uTBF#iNsۡhVq 8q6 H {])pSƄ@!2\LZ),LֲVieCz|Fʏt@D +6BA+JEX)\H ת]4H(V2\0 x DBтQ''r6""|D{\ H¹+Ǭ\-VrJnȷqKwdLhPҷ)dVYu~QlTa"8&| _vyd u4hlA1O$ic4+Y 7pZ3C>$h+\4X0dvj0e-evkXFw PP#LHR6 K9YMV` pYƬqjjRk\>vn# E)5tMMj2pn{ՍhkgAe伵S3 mfΌ-m83CшanGa=-# [`cܸi Mb(F`ZGn>I6bE|6"yj˷E`従iol g}KːD^.& 2qT'E'~qhۻa0aJ'sS]:"-2-+a(դ@TˉL{ܩgx`fc<*p;M>' 8<;ݩ6n[}/2a{>ٍ +>흐d57'zܲt:AZU<$ O/=zr"6QHZ"~h y&Cm[JD0Hab^.Oɚ6C`HJOF313Ctpb7Dq;pvD1gv8 { GL" >6o(5ܬ R:Օt|ʅҵnjZg+b-bCNy0j9Fd5T ?Ok0}N ?+Q:*if_yVlf>pƴHM|".48s=c?‰ybNo!|'ow={8 "e-zoV@ۂOq)W Yo2YAZ6z$S뤐 zV`!Qy{g/:^@(j36 ct鼨amBbpF4S-Al6Su*+69n3-pL!["lۿvB )NG!WAs/@hE\{1{e7o` Uk؇qwj;n8$aCS":"à4*1 Z1/Yp7 A8ڴ31MJ5ƻ]3^4톘|h\2 2AhL/AauX'*&PC#p:cv]B#dޔW?{tacٷͯ oosBDI(7Ԙ9))OO:X'2{I_L3djb̴GEc2W8$ʆY9HvT˸ $ Uے 9+nnO@X*2 Q("])#Vos>PN-c p AB8c Cߖ#G eu])JF14xBŠtuܨ)9:ۙeelB-A9iªp ώԄ vp;1*d mʥ:)skv½c)zWG-251b*JI-H7: o8#Q|*a,)ehKV  :hL]-IbBԿ_n]"=.\7Ly.1)1@41oK2 u¢.rKC 13#GBu&dm㍨>H"̜9ӻ੝"n9sjT0* C A￟174[2_]mucuƈsB5-Bsog*!+,|cAT lqB `THRb5ӈK'Pp4Hb!Z(nӦ&u*@ KEfW96`tj/3A0#5O!<6 M#]LbWAPXjzl0a*bFbS gUMgn]E@nApP8B @h#?+1Z+VgGIn!koN"W0`Ĩq bҖBP*4BQ!ާ9"pF8q^&QFk e1Vd Z!j4Q6SlGOTF KZ"ن\xJG0Dboi1 M^Y@BPC8~ƌD0NXL7%cjAO #2!0XPR0brb"% y^FH!]PsɌ#Ean~.UJ)4[c{;!.N %mvD@lI~ļu/ OĢկ?/ðӼCO!F'9%b58rfe-\32m[@hF!TFomyLQ4 ($0I`jf956Rts]8᤼ xx04N-!zi+6zvbA6nd ,+}RrP#P,R0rn šB:%1p{լOB uk1L0+ՒA(cܔ %r8Z):5ߵ[ٜ 8"&6ԏ q*aN&әQ+Kiiߎ;EOF lh`>qDĄj)ԝے@2W05* LfB֒A9k{mpr4oNOyiaJ1ޣ1n+Nu O3Sy\z{Lх,/D{A`mf=ۢFU) % ML0gY6 `K&ĄBbghšRC04/ejTx.ڂ*K Ea1V7ͻxFpA~Ŭi SxԄdA\8*>1آT(; ,m TIa=sWt/~hAHř~!D,=O0 `Û8C8aH,Ĉ3l+j j!9U#6S Ngt!|d c@8{H;> ƧD&x9Vܒ~\F A {'9Oa A /vCS}+-^ {!X$2qbͯ~54Q"Q9/( ;0Q60Nifa " ?`~0ބB`h ,Ą[Ȃa=I@o39LdB HQg0kv1Bsi0kgA ʅ!-}neCf(- !6 -SP56ȆA N?'Nazdžƈ1JM6`8<8|DBpt -ZTSS7E>̢Q3&JyT,[䱬,^{}~}6ڒPuF¬Ϙ\9ҁ0k M"{5һn^舑LӆF)Ϝƿ"? Pd8^ŧr͸b䉚cܳ[apz Y^b; xL",f\9bLxpdIl}g Y^ApK[=11{z{JHsY63 ( ^poS@|p*mUYH"Sb_emzqOȝ[:meLad_NKC@Q]fd&\!QD@X`80[ f0 ɃrV'zpX/dhBK3nůO 2NoA5' U8:@iQa14ajR\e C`ZFWde;1"HoXTqRIxO4M1ڊ _|w,P"ބ,&ҙa3rx3u2?# ej֜BnF8Jmy[g6`aLd)lʉrTrM1) P_QP S$Czw، 72fM16VZDwC'څILX#Mh@(!(D @m ;.3ߛv<:)C<[9b U0<:G) RR =$Z c3Ý(<>GqZHT8]x]XzS`Ldf<Ů0LIM"U:h al{gRp?o;wv<~&|O$6IpOڄ*54F)b:F h,D048N;1s[?au{tt)DKB4!R0`3' H1 ҈p VӴM1q{gZ,T4v G? 2(w ^N&T ~D޽IaR s4i B>%(&:C4.YQES;dA)3IѽyKB!ݟ|J3 |=$6AL?32 &5!EeI lBգHV@3A\ܙo$EC O51i9d0,A={c_nK5FCӨʩPÿѧv'F}Ig/Y/KM1M\S NQlDt?jNh,KZpۡؤ깫߀ .#;8pąN?p`i1Ĥdpg\ R{*Bv:^FE~.q,$ш)|sBa1؄Aا8y nI6 n0%G0I8ڜ U> 1k1VL X$E8aB H@`9Y&!CF"8l ~hGB"@)/\Dq|z;鑧0Ý0fA#u{8|P.wUF 7.ZԐf8gd0zX8~NT؜̄[Lbrߢ4fw#z0wj2y&TV> )5,WJljbdHx߸qaX1$zHLR:3Ԙq)&cLBSp #RU8'64,j`MXkfj-@- 3ILa&ѿEo+ת9TBT(ʄxt/{ J˅rL &М ODK0&ه. [ vyUc*Ic!q꩛+ΰ;-$}ClЇV8"'o{?<7ާ kaS6 {7lp~!/-AU^c'Ԩa٬042 7 v' S 823|yܟ/xyFo* 3il2aHN5fV>EG[_&DL6"-e Y&V:Z0E<+ } 2QXի,|omLHi! CiBq@P:/*4=pI")%.&)ܛbpDQHdühp39<1.u5)k)g0%R" H6|WGDńflBAXֲ 9. \ 6 7دhR Ƿ } _kk"K!^:Ĩ56Ṡ m %(.%5|ĉ:$OZW!* D`@p"271ŧl{2Ю* BPH!P(\:"j&< ix臣PXB`%33؍t{[[5LngĄ UEa90ȠaS)o2'4'Ȟw?XYn  N rh0<$Qzrbj&q!!-wdp7B"?N2ȡB ȃMի!O]f !ߒyѠ`L7h nCă2C )47|<)09BFa/û1߽~bBO(,Nt*5c]:ba3T3ăhB8ptoJ8:khӌ_Hs[oH5á 0z;}uU_'2Zv5|[Y)p9$j_Gc !"rCƧ p$?DApoJQ6@*)N>5֛#yp53ƥ$3Ƨ I-!e>xS\ kBX[W;^YC~uEư& E$qK 1mN~aꪑ 9 1lm~CA^^%L!90Df0\iРhmR{jP:D"C8T1l8J3NhOŘ"y 7io=-UY Мb6z@XCc0#(mXHhSE*DjC%7 02{A,-DO' U'd>8(½nWb~XjfCJ(`޽=֡8& u( ljMLf\\8̐,6㸠A<6Bê 2MFt !P 77j58O  rB;14.̄8SlnFXee; {LnkU 71!3 Cj*5mjP QahxYId<6ufp/kBj V|3ƝX+-EKϏ-L 7G35aeaө0ÍH\+!g0# l)( `BaYsslO_~Q/ Jq$yr!h0?_t($eyTc%&pR2=adxbtJ?TY, YMLTfN'NLN%ҍфoYo)S¥Co{%?ς6jCBl?| LĄ͡ɄD"^ng[MPB@UU-B Gل| 5*!bm@L?#df,kPlR)!ÖB%VQQ,S?< O o1Ty:(,x43jIeB[[7 js$~4D??ʝ))JDz`y Wᾭ] @c~ybXp ֲ<;qkT AA7'm&D#C|Ͽ)!77v$a”_!^_1nQ S{BTLeV6a‡>NCZ@hdVJ OP~"iAS&"Ø`3Vw+$y}H!"1!헔pm\$1: Csw6z8=< `AϷ6u C#^K; ʨ.D`L8l[A3PV[ofs4yŤ$Q. (*A9E,m؆چN=%CٰIrAAQ6aƉX TOC8VJc؄qV AiV__+{@@zphm~ф$ >A=rB>a 0i?GI{gq=FF:!-+&~%+/0[gt$TAΔ a:)VqHtۀաoƚ \a'&(TdVCl&`;4zk^S+ (B hV\0a->B3+VW@XpNK +Of 6ġOAhݰMX#-ۣrW=aOB<*wp |s9{HR]1AA -FjøWMx풍̟-C䘘ځ۸1J 2L+oYѨ).ŗ3vt= A酛šP <>Z5 xx~wf!&0xF wX2, M1hw+4vViƅl Nh뢄Ջ'OZ? 77I/n i~ܤq[$(WUpS:!qh7`~ʜ}Z= %X ᣎMXa6_؄(פ,S`W^"TC+|-%'B蔜~}z+ൢMu&kz`m*LHcO6mgyJN fR5ACMN,hoY:aljb>"ѹ|܄N'c{,qgXӉ7Lf%F!?eb%`Bi ڐhLLI~7i4Mj!`@JN0fAxܹOM6d&!xt/pvKNXXʢ ̍Ë\Qxʉ«~Q!4BPNV7XFw]4?_ٰvۛB6I$QjJ`BzREMTW4/( V 8Ti^$ж Em~YcBC6iք5d󖍾m !?gT1xr0'ӛVP 7g ??@ DIWGw#MAEH`r |4fbcOXo A?E 9 . D03.<*QQ~H2K*õʄơo P ġToFpQ M"\CdIxxҞBJ8)-'] OF@@paۛˬ2!N 5>U&k)8)3=Eᨙ0.rX҉QCǺ%px)D5CqxFgP1h=CYTm)oֆ&;|aE P@0$+֜}BϿXgo!F};` iCH)MX.a8v;M9P*ze IDATMT geNs->؋cMb hA+D+v 75ύG*PӼ4pQe0U1r߱C[=5ݤ0_n;$ Ǽ( =!"{W5g0,f+SA4 N5\ЈH ˗Ǧ|L>--ՄDѺIkES" *>chc&[.򲛬m\x8 G7FM-P!h=@hMFJZ'(G@."1tОLmޟAxr'~zlB X!<}U\C;,2MbB,ԴOgl„0&kdž N3k ßJcE*{-8m#MmMmCIɄ;Ȅ;H| GZDCjD!Mʄ5` oa $5ivUa!-L 1*,(/Xȣ&E~qh^C[y\& خNS1JR 0|K|ᏸ*!!{X01b4I{Gp aDOCn(*Tjh򿵰 C5mQqᐏ@LDÔG{OTHEVд.'RA/>HPW@0 v͢',]M:#:Wt[yhr|_~Cϛ~ Ahl:OaPo l 8zxhO&-(k &LujC Υ h%!E_ȷ%ֈ ScBpFeX67/È*i.hhk/^Rȼ@WG DXQ\Ql5H I2:2HIN_>⧎&G>FFIfdh)2| ^s2ڄ?| */rh@/BWIyHü3{/K{oX 6P4JP" v ծɷ$& ztȧAEլPla o/' X 1^֬fAYA +bVX&,b<'j\kNWq0FP_eMdPDx;灀‹v n+rNV ΫՖ b我6ZI ߄HMbAM`C85_{(| K_1_=O>@== chcia$zϽ1vkw!aHF y &]m5(6?t;xT"ҘOZ!ƯAw|!c+{5&lY}ݞpBHdnRхB| ޹7pTQZ%.6B%$~FHvOt9s"ѰԩDɱ+/B`1&<\oAi]4PvQؽpB5u(8 hàe/u!1A-!8W4z`5a5l 킍K4bܩю{3դB0ز Y=3=QʤObJ$cp)5w}aLh!p^Wsݨpsx 9&Ux;c¾$W{C˅+Ldp x_x{Pe`=`AdX{(58C1lbT~;[>'  BoG#e W!p4:s4(GB8b;AЂN8BN zW 6oqHMHd.O3 paw?"XQ+].`@ϏfЩD"Oou Hf((1#O>2 L%Bs>y 5 EӁ &*۵ܿG!C+BY·c0BgŝM6lFm/u 8?ۯ}o>ikk?"j,Vw#y@ H-HR"GPգ(B$շńql؉c'> PYgk "H'B0hpߥX5m}{ܘ;F!wƦ QM*thcx2K\…wKfhu}5dݜ"6 E6b(vd8boT5}1 JI'_{{O_ ik"!HPZR7k2h£]vwA\CriaOhyZ+σ_"!% O5k_O3qbbDX]]Q]QQ]\]ZQ* j(UcX;5튿ڄxQ GG8UB,R@J"XPL( B󅣉 T׆wh/vbsäb?Ͽ}/2/qBwTn_vvD BZ37 r{pC˯B{7WAbe f⣋a4pSXud|[;bؾPl+ nأB<a䓏$B? ԄBIAC2-,<_}} O#GeX4 Ӿ:4"wPf@|wGKΥ;夐 iE5 Q!|ac W YN&D U `1l.)V:0S"_q,w;(P࣪iGk#}R I?!>TNCB۷o;_#_:-8 s߽%_: ,j C) Zzҍ& Y馉ͥT `e5pI QeJ(B p #Nf C{qGq~qaǷ5}EJJH T2[!4}p~Gw. +! kSs6=*)ܱCAh8\2< 7ùBIT su!/%!)DvW3!py)˃T.(k<` *,FAC;9) }sB6DJ ~5}ޏKl{wm0[o")_r3xtEtŊ7}ixp,] }"Al5OݞMc?f$6v`65f_L (x= < oVЄc.y}\}P"R@9vJ^Ib.ט4RZj#ҁFo=U8 @~H~u}ڣ,@3fdz jܓ$fņR AwfIYxGt['JNč<؍uQ F9' ((v)R)>AӨ*٫ho ë21<ڠ !Pv.pT2nO띶/8'c‚t hq >ipsks emB`u*,8~\,hsL] !xe -R_A[Ҹ5vbvj:Qkrw'p!btQ~ue%˃GEۗzb;IRhH)%:z=:)t^8/x:o&SlBGw. l)c A-ƄaaBpndZ.VmtB+'@Yߝ݄̓ߒh~ bQ!Q/tL۱CsB҆ȴ6rɋ,' ,+! j-d9am"ĺzKw l&%.60Ԉ:DE&n3FmY߭hj7_da9!WG=,ۋ$UYsMxhO ѵ>n)ׅa'SFe.8"kn$q[H`o: M iI-Ha˖---Hj_!4puXj,( wʄvJ0 |5nYehHPPvxt)p?3jFezpb~deE`.b9cN o{!b"4mq 1X &hԡH.W഻jle஭6v 9"w ~ Tѝ}~萶SMapay;7 c"(^ 1  cx }it`0e[@`Aڍiv!XXIKMjMj7lpE`)`VjG;SC8v۹seAP?a 1W1i6a[/X;k#]\ HI̠Ra4HsqfUpNx01d  z5z2f[XD"mwM_[ `&~[ ܷ㡆-ЎFkcV9)\TH*q:q.^J 64L!B&6#h_}.*A:')-H"۷rRJ0) M(;gFa[v8=@t%O!OAZO@zy)Q>~L[7R}}}ĠZfG y7 xe {RBF2whՍ˷S{'-ݸ!7A5uf9bt'ðb#~?݁{pbQa4Eo8!eݓ0BE"J"2}yFjBxLh8<.7ǨaySBJz`nܾts'[Py9d7 #2$Jۿ/1*Іp?e ~jŷR.dWFSZԿG)RmfW4ȭIڄAq,@ 퀞 ѱD]NV1$'B1(AFG#!%=-Nsd#vFBx'1f `pҥi2B)nǏӘ8 ? YqQ^k1)ʠ[neu8C,79cmMw$H`w@أ ow ThWQdhdՒ)ܯhT&Cxn xBx<b,sG3Dl4qr \V(eʄ"lcdk3@-??6{ _Z8Sd8p4K@ E }=]rƒ' 22e[a0"f5):!= up;%$ϻ/Q%G`bz ߂ Æ'6 !\OLQcQtT*SX^\Y/0\( 37AbwŞ`30##$G N^Pb@8F4&#QtL8&4'џ.X.}K&] qxkJ a?㸎B UA7a$v Pv o,C CjF?^XR P;B$)Gw}ܗȄ@xR00sySM Foǘ,(܏\X5ONȻτf >hUL&B7O Y E%e„n=ͪ6xymG݄;=Ƅ;0UnU$BxOE\dJ-aMcE3tf PDuQp'G_}J@:)&G`4z-eB F)#\\H0jމRc"Mh&c U E}^$x;AR#s83("Ls2Ehz0##xCpNazôi~sJ=(3#.e 2}t@\`EQcGepm&]z|)C*>A2\_JǢߏVX7H8<ˏ8BQ3a)eܗ$ #O?h)=|ptvŔNN4}2 ~U$]PzDj#>ՒKI; pTVՈ5zVO=5}QCK8~nn/"|?(+&ZH,DFu/SMJ}_~*P('_(A9&M> -] h0o(DcY~cZKmapGQ]+Z2 ;ee*ʼn\t&}B;R(T*,bU0У<|3:)d IDAT\^`Ӿ@a2$ GNQ#= r-R4JCUz^Z /uL$qM7 ?nʩѰ:&8rc᏾a` @8|XW=/a"i߻|Ԩ}vTi-H&57";6< \($bDZГJ&j8C}ee֦|ٗ }V7cT O#BA >/˾E aϟ ac^H>l"[/C#cۿTGTD2WzFm6. :/uY昄@dR||Y/ ..SQȁr0Czw֏}ޣѝcXĘdbh{b_ Q#iSFމ *,_jS( 1 zEQ:G|8rⳘ 嗃.\,ES8 :J$]!tY8CxX6{<\qađ=z#~1Φ58IAPA/rz0#EС\`Og"t, 8wp < YBzZwӞ>U=bﮟV.o4V 'ߞ2;OJ!Vi?9Y=xK pJ 9$ڇQƌ\MB=:7J|RˣÏ";*$~7ݼ;^n Ǹ/0t>^.EA ]LKlULV E`A8`35y>fkk8FEd$> \!ɇ]ɏmn~~1xL@/9ia]RYg-Ax_@Q>Hla|Sիe1";*vM5;L?[;zsf@_v FPq?vOsf%vtv8ӂ-k>֞h 0"COZ6,P>(SsQ>G(`yYD?bUD} _֟-9~‚z >{@Y%D3QlZ_Bd+K Uޫg l |!\*o{=Ap j>*N+܁GӴ_ ዤf^qCslO'FyR8@%Pݱ!A$Q)BRP({<.-4w׭c"/H䖒2`pZ}*BxbhB‚Bӧ?lrJ)hd\Gjꛎ?_%Nqk녊O 2 +!rX W A0'sJ{NklpuONɠ)c )ڿ)LX` ?MsOM!_M:xl/FblI5~tq 9 I˵l˜?z(aD~ uP,Txd1iKM( 2c73PdrC{ `"G0@,ә ):5/e_,?G߈?$O!Ebo;@njl^+F`{m@p0%4`2JXsu`^f{7*?& #EZl7h]‘!a@ !\R[&Nrjjι&گ ߶{1H\ѐ-z쟿KN1BVp'6/\ޔ)|;daAW$(!lF'Z ".`!z"x-GHO !6^a*ٚ§ó]7W蘫nJ?CFE; Tt|ݢ2kToZXZA{/aff$2ƌWq8b ΣHhl5. XƃW_DI Y%\|\tjIyIEVDQ\bk@ :}vu˃@->Eۏ"?'ˇ"P?~$A11Q [a˩aeU5U/SBN" `Xg72ϵxL|2E(S:ޥkdz3"XS0}P04%ʂ\G[~SFqy=By@p" ='O.B+oc{1wj{hoXm,>:m!{PFBEmC<;~{h%.a?Pt8ϏФӯ<Ʒ+'$R‹MvN hQ_xݜqni\42(f378_Nbw&(/}G`>mK?æîXM7c~3r8P8̩ %KRܭahvjKHv#>%"<wT|y(jEQS"L$~ Mmti:WOG ,\13MH[HAqPa")͏4a2jsqQRytRnoi!YDn$-K|niVju9$guXjf͠O>!gNo?swI\o9AW~HN6mn%o˄eÝ}[8L/:\Q :;V࢓$zSGy)ٛ#p$I4QtN2#:W9l@' 9ϡUb`)c D ao%UB=0e&Aĉ<,&Pߖ81 %" ig}C CABCh/.͑ȹo^sK"Ѹp8[: %%0t*=Skeѩepc4hJ%Pp&jh~{ E9dz DqdQ/5z7D:(ކҎc"ErS7H,6s \"9[鐍w2*l pL$uӡv90-6_pp+qw{v縙ʟRA:CQBvLPTG)f s^M@p GP"$qsaSJ^y8gA £H=0M C. @[^Ÿn dFu.U }C~4ZnKbL6ƅ=B'(!4>U偘P+"18IAzzOy"f2xCM&P&>tN!,sCqb!LJa;b>d"x~mR e(YS@m=O* kl]M zԕjB֘aO˟=>|1y&g4ELjcWp DuGao8 r8tQwM[J(L$=`a% :la}knx,&u^`1gU{08ncojQOJ}>~2! O:d/O:&(^hI%᜗GLCB^Hz)7Y1}i}:ɕ@HWJ;m;݈ZA76Û)20%jz,~pO插O-*pJ xh8&ETOg2hPa):D%E̩!` A&r?f5p(r8 Zt0] = =\&+W:/TyB({y%Pԩ /&09VHaа7ch9`lAVB&53Kc:P &G$|0~gԕS9GWrDn~CC"ejC/R?ƍFEu 9%-'sЧkR3/#K:a o|vz{LV JBk^zm@(m8LJe 4qÉtSc{bөW+KDp )g0ZGFן+WG\r8((5- a C>-ۡW_LtZ2MՒ)0ӿ C #ç sBoF1Iy{'xw5Q_tj4IiYõG=!:au&n⊨cqP u(\~/ UJ oץ ؂&߇~żC@RLa! ̙cCj*7TnM15܄|]w{_69^CpGGfmpͥ5CIpCpp^P:k:?{O yMaTCn WsR<"Z*ή6Ke+c**\Rw;[N?zj')lhr1c.LqEPZi@?\DaPdQ]|RƌM@RD%,fPg&),8̵Z.RaNϽoF8*eVm,jɰ3R 1Xp3kc+U=ƊAŧ@:&5ɠ.eeq("nja .Yh|'gQۅ0¤5 ^2 pX ;6kQ maÂh0Ù`(G\R<$3o᰻ ؁8*}&GĆ1~# ˽0rX4j1Zjp-~9ICGKi`]-9* ? WHq ^Dx4ʛMR| BZ*bs: A"ִxY$(t4Z)bvI)깧^E~LNށoJRF,۪.َ~2$+0,bD%MS5NSr*E1ߪ;hY}MMhXYiz٘a |,k'kkM1qĵ'~%4j!XCҳat>)Ƃ %,aoi<Vc[lZ%<$ $mZ gldbbқu 7kqZc&PoͰLYw#S)`ԅۭ06F$P#u/D/{p"vQ)oY ) apEVγVzrLL Yin7#16!mL@]v""{`ՕQy3n~†iw.~~2f'ZxR8,\[ykշsplQ&ZїÄqu-k`qE B(u,a@ 3蝚2t#(-ty~x),iғoњ~LXNiYGP,lk+plb<Ew^G 329\ۜbuH O";+a1 'ֈjz[F[Ԗ&jI@w!yw aN!8i3 &hfXF{}D(rf :2*:pMqL YŤ1@aH+a£{ɪ(v ˝Y|Vf&ȜE5! Е-~3QZ_: `d1#HRV,i ] O&FdwCHPȭo/eTVd֦ /XU c# ~FOf`(FQ9" cȅwk^l G?DNĢ+b}]יubg2SS+ OG祿i(,|G)m߶$>Gyw3t;ĈqTVˈ.F!{ #+%!k5pVGWjvUSUBQnaAdM\N0< fB$&ot ]Kmx?&S?Gn/M9NGd&#OJ5$&-ڌPGZ!/RӨ"XH 1,=%ON6G[~|IvY??C >IDAT=|+,WWzeB+x_4J-yD1Qiok_6Uj6uZuᐶ'v9WS0ssT8잒P)6y9@I{7T| (OawDzT kȭٚ38, !u ^)z%oCqz1ETg_T7qf_gpۿ޼j+m`~շ~ZN"bY d5x]aV`E1ZUiSJ`j ]*rWИ3 iwxj.o{*VY}EβīR$JAgyVnA:,VGJ 4*i=SOas6_aڐ]>CpS.+JBwe'%uK/,%G khAR5GUb=BR.!DN09Lx=xxJ\\<+.q!<޶8`+5ҫh~W?+~٩4f/ UDI%*!feZ)^%ƒ]i z6XK.=]%YI3Kx.w4¬v#mogG_yǚe t$K扜U JT+XЅ҆UZ x@F8R(k{#ۥQOQ#Xx&(q# A<vږcl~ ?~2jZ\{A0u@Үb/T,},@(FDcUz.m#0:EdN$yUC-4?VxI?W7 yH`7x"BQ$5 qm⨒(v婨;wOK_Zxv/²E-u/i)G;bS@\"JA^TIDPЂG'&ZǴA4bM 9Kĺ7ֆw.v`9پ@X?:_pį8o1:3p**Y"#%!t¢C7؛ذ)ap~$}Q=ѕlj "RQ QWPx;ZHT,6-MU0A! "nKDsMe8$*m8AlBQʪ=(je ,"䋲+ {Ýoi)~ x"|(x"䬚Xi(&PFC"r@YQ}"#`]GHDRzFg{'f6!ƈ%FFJY=xiD蔲oڨcl"#X Mgq_!<`[ᖊ "#ƎMs8S ERA#B,roHDvCWyxa؍#L qo@-pGqBo6M6E+V"JNoQGMDUl#!@%{rG>bRa8M$5XW8aMi$5s?Wp3-e/y 6BIT5$`lxMJO#A=bt3@X =_?vOod{M5ͣf"lnaCljQ*Q(ר+EA! N)Z"+6kHjUbC^ƣEȡBQbs[Il8U v8(VJx_~礊su&jc)7 <د!16%niņ&QMӤj]H!h{g3ͣOvȩlSqcފ aCΨs5c#Ql.i Jlٵlj!AL!ʼnf=@xCCbpO1c#iK]'`~zQ F *x U4=692 ei#qB}Bz*eI$=cؔbb\Nvs`zFjbxl%%mAJV7ƒX1n܋AˆRrxWa0;X:85 FKMgm*[>hD3'[rIENDB`hugo-0.131.0/docs/static/images/blog/hugo-27-poster.png000066400000000000000000002340251465312036400224470ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTEՖ( M$z"!vҒ'p6oך)-N#l?rtWiȚ&Џ&-,0-oڝ)%o6qĘ&ʧQ#")~gP~:%OOݡ*Ѡ(ڨ*/#߫++{9+wդ)ZP,0-Ta7ƢQJwF}/|$˕1Sha>*tHu}ÝP]ֹVʲR"2sLaXXp.͞'ޱQa>$|8D΃;Ж-x$ˉ%7fea΍%܊=l]n)5{6Jzj?w)xTFe6"nQxԇ<̚'V|xRorwq}p~:}xuN|HCŰTAX~asA}{>ѴLѳU 4tZطGETƃ$J~ΫT@ay3h9*6zNf|n٨>gxJك:{2<',:|ќH3>CM88l06pxqtK_R/ڎ/|?Ìwap\i1g1לmԡ.x? ?c왟cpB3(,TUzTVUc8QP;)16G* Efӯun c= BP< L`A$2~ M`(EP9͖ARmcףo w/?Q&`"AM! N0 N=ARX5H[ Jw`*; ,26OE օ6< vF>*T|I"x T Bw< La&T\** M6|t 0msmBc&jQA h: z GH ⬕8ᷳ3Eؾr!g(tdfCCO) RDeQ5FCK|b9<")EF*d Ix4D9m$,#G!~44$:( ]H:] >.$aY!>13:@0BC ź4*BP0GϤh!EQFHD`9g(Ua PHZD' ue>A ÒA8D 9~pI, =N?B]2Ͷ9q[Hsm0أqsO04".ԭG5<VYFp4pSvM8$ gq4m+ mF4hҚB( n豁^ aDŽAF(Ó?@2ix PP v%!*٥.M$ kZ$şj{vF!3AZhTEжH`mح2Lz ߐ"bHQ|h's Dg"܅ulBn8~"P&|Ih]xR3p C]J? I#ݬ`$,LHtP$ vgBYeRK.][pAve^{fpa4]0)5y!EYa^]E̋ryYc!*CP^Z*K'i}p4 " 7c*d{FkАTTU9aT7gp Y. GMtl܅sŷmQpW2z@Mf\ V%umx6L BmE".ы^]4@nm᧺:aCQ.%.ݰR')0f( ?`rd %/o  .|;$KaMR WGKcs<́&˄X?HRR^=oθ%†#U)#!@HcSf!_KmdW(6sث XpxCxZ | \Ә%BfdD4g Vjvh a&>-z'=GRyf,a(Z ?"|GP Ѫঙ%{Puᢠ _bTZ82L|BCLUd]Ӑh:Mjhn 7 ?O :ҠbHQ1!x2h“" [3paHfPlcs26J lb{OQ[¶=C aXנPlqhCPaNC7{>i"qtkpȐ"9E4N6Euv9aK MA(m"n J&֡['XQb ZOEAX](.]l![@<–FRv6,j C$1*[+fB7* tG ƙ ^E# CM4>4횸-nk?d TqX'X3isX H G54O.=IIO:1 / C #7cfY34T}=݈3M~9 %w?Jo4*h?:YUH]:>u: eb #2HDӢ-t7IQWCeu:2apap (.KOteh=l4z{I@:}JetN C)$.c(B8.a1[9IHAKɣc(twʝi1|* ޭ /De\K5%)j\Ap*O]Z*׵--$Cb0!2DI\ .u9$ 쒆&R u̇f16Y2÷Up!3xlHJ캷4k3 -v9T6e & \0t0& ^]׆b"JB:I &]ckf[E(-n2q:JCxՁ !9.TkY"<   A']"ube(c 1ӽЕapeEICңgdaH eZ*t 2z.Fa0"LC4s8 kn2]"l-@=m2&c A|3:̢-(Cp!0cRp)wg tX |0.t1Pq!v cXap+÷8tlB-3˄^ ~ u, Ylb1DyMmN'MÔOp&!C 1ڦEErfHQ6%q>M똾: ʅ--`KKLmB( K,d :EdM BǀDe1 bMVH`*؄8"?gn/J?JNg&\?!B7#1 phpB`ԏ!ÔKEiB.}Escf0 fbL\#2ja"ũYdP-u, RH $a(~pd8,.3df? $XJ&>}eɡ 1z녡j 5Q 1Jpal ϏՁԹSc:FhB!bׅ~&}29(Da:5iØm>46u"x(jfTlCVؠA@ B\H. + pol u(=oIqH:_Ɔb~lτ,

        V03봩 OxQD \ce C4M/!xݝg qdQmƆpAÙ C_," hЄTbLW: L;ْazz͚ݭna*l6B,h Ʉ{FPW꫺umʅm!]R 1!fpidex`(XVC$/L1(CkCT`̣θ6SZ(B~s)PRgA0*AҠIr:@ytW{H[pZaiJ4I0 ~(hp[3"}IT  4n#C:p*uN&u@l6\y@"AQ.V>Vw>?PxZ40y PyyD&RBcx A2dl[d4PzkZ(b谴2dfp /jgbTl 0`EST$hP,TLsр,C @@ni҆:lgRIC;%X,ۣ W` b&Px)61 ؕ{tWpBxDaBBKbuN. ǯЙ0 cᅣRfiaU)!Xu(,8NͫFD. *,NSn(FBG\őD"Y"o6O!،h˹ A mچPC. m&hPq!"IC-g>džB- F. OHzZ!(9Te+ Byoh]z1! »!dQtczaHYA:*%_ii)T4:Np˜1W'TL(P6ZֵVn:Cd>6sd]hL8xH,Tnpk*,jO fmGɺ6 Ap:J;4$5|o 'RLjќ($b,ݹ8Te1\?19$Cg[b.kBp 0G!p*M!\nJ@?%0ugh◥d@'2ia 'TLG׏nbgbJ+ ugjfkB`l+y(ڝ50Y,"Kc3C P` W N{uI(Q$UmuJ%N{fpgBѠY!1B׆3jن e*ݼys&6n.^7 W!~P!N]1tB^..syoirPdzvfh NEKmJ&0Z6LX`4XЪT6naIF]&I)A/|Z$jH@Hd&TةL ms|H*@$*@kAgN.- Ix?i6XC1;1;O ;+c,<:B0^_jYPB> L7W2^hK~/E⊏Wp&]Μ9dRp'LI 8:so_7 ¨RdRáaaaVfaBv! ]&'g4!A U۸q(Z X(oEbV?n&/5\H&<4{51H(6_tj DIğU^mJрml66[J3*\X8o _/"AXP& TiИf3\/nqgnȢo-pDD[- m.,?ȯ W˥o1`i%ơAE8NOPEX(zp<0aGA'ՅaPn.0`i!.Z6f?SOmF-Kݫ ?|*6#-- -j"j g,! 4I-P4'0\1aByЀ$ةرVqBY^ߥpxj5UAV< ֑%(4uqD%zp1!ȰBUQT1, /tNlf6vPJj2A6>Pl(5TܷA H.4U d C8ve($5ߨA +g wzG!Щ rMwb ZׯD*`B\붥BAP8d\U)oC&&+J͢}seQp`ia[NxjW m }xE( фH`r8yͤA掽PaЅC 7=y;1ìoi@ڀi4l𶽤BϮPp&p&ba=a(%C9n7B}׫@Cge"#]e2jv횷HXq2pN!CcUR47ؕP׽ RX4Dc(v˟>I={__z7hffDwFN'N~b\D WCxKMυCn4CH"8_}X**3{_¨0{T{{gG]2f)ِq4h#7v  e_HK}67UNi tr| zݨ?3*4Ij4wr gC_bs= w~׶6! @ CL_q! xI1#~]1*%SݷծPh+G! ܡ Y5tI 0}a˄noFo1L;tmDRBpK C/BŮB\-2\ JߥK/ BP`~`plH@zJ١W= YvR m:Ea{n 5F-wv vgƍYp4PC0Bk}n&$wYvHh2j|~uBV RSa@I@baDʫ ϩ8D&d1FuJe /&akI«*ԐyRė1[F=D&BYRP=#Bq6-DofppHi 9q.pb8cA0!g+bCCE" ]-sȣH _VVaFy' aN8U!g4oEZ  ݩ Dҡ3uI+ S8dOlcwKVմcJ <'Ҝ%,S82\L @ ׆YA>iZ  yfa*t{ HĄ>( 't bP >8,]?B8$yQ ҋAl' N! AfPiX#*ܙ}`tA._q<lj!.ٞ ˤ$k#C(UޚY-'!#1 Bee9~˞S'֡7e l(tM(R\?NujHD0|; T&ܿw~MbH,Dz.bdCK(˗/_@+Bxc taŮkIBv)9-?D!mN24`2Q=EPeU֡fso`߹_wr+Eѳw OwX*4: 5ARSeH49Ą L]2\/24 AP AxPnX1vuLG*+i8oK&̽ ,YV^^iqxr*؟ɵIC7Kw {?8:y?EP|SBTqnŐexNы d\mҠ 3,'Bx}T =9† (2kfJqTȟ²D ,߭lB2"妲/P4.=!rta&=9p`n|)b B|ؽۤ1ra [.՗V*r5z~G.Dž YT ]pEp?)P ^0qJRIAw IDAT%ai+e˒P_zج,pn+.Lemӈzq:p)`H&Tc?npt޽W)tNw,VLNB%( @AόIĄ"`;B0}}LŶ]׶]S^c]ʡkbl?zb(JN$!,+Ko(C- ?7L&;q1L&ܱwhkBoVn!t}7!S=F Ha&d >T3!uSͫ !r5x q~_RJ!,K I`AAAR>{n4Ng 0D?!5HFď8 jBu0uVߔݻOnt9z }}a0_ Ї! sTywU 5cBk٩U~  T#b {!~&f* P%.$8xw?/)[woE AsNN΄TɄ|'6<Æ(#H#;nk&^S'!z_W^0s Am,Kž[}C  GVVFCe@>ğʢAEnp9(C^L6_f[ñ!gT`p AA;Cj)&k< c^Xpʕ0ǹVHB9rPqWV %-= /.u~mOaV.$ӫ<+wRH,*܏p w3H"{Q8eJ&L.h.nX W$ |ae\>* iUC!(Tҵ?WP.W81~ (\rX6bQpaXaI΄*ώCð4"p4voOĠ BAߋm~|SC&\8!|DL8P @>ZH4z )Di/]7 z ۢio?a\0Y+)v._T0\ph°0݂aB#Ac8,كFA8vX 0{[ CC!ȭKablȽ&C:a'@HwFQ(u=)ÚrCj Z^0|xD_!:ua&L^Ҳ4#A8 =sp7DU+C57^&rkFdxEXS0/O@X-0a00\ , Ph E* XnY*Ts?QíHVmZ"P(MԗY9sBM8Adcbu!kC q:!W $PzBoBG&-i X/ .G/UraJ~6 {]Q(ˁD@p6r  %?|1w/pL70c ·!PRׄJ;Çb mFޫd^{7,R zu 󓁐H߳ ;ބ(^ψMlYЅӆ)Ši̢6KW(BmAh*B#Y"G-p걻vqmbu=ndžS CBY>=|+®pDH mw`x/#.l~({XbToGI|5s&f^pt=[v4F2@i& QR.gp?Ms D`!G& *wa^f  W хF519dA^;{#> ((D`^~~-#~!mBzh$oǡ\6Aaf| O0PD,S¡8Kj No?#-V 1>Wpk@L(D= 2q!L8A|j}4օX ^[oLnwTp 1,0cn0 lg Qk!=#8ʅ6D)׀!}r٬o <Ig0Jyt,#¹(&fP*>/8#i+f0y4Ϭq%Y+ĘqQT!nj Mwf^Ef*@_uT} ڰJY7|Va~7@]&T*@ ^d& χMҴ. PpcDcUCgT5 @=16-4siOH" !rU"hX3Cu1~^dBA/x6LYPRx.RΘFCEwhOȣG A:;JBBv&գ pIBX18#peYQ ι T5phe8$tMR[ ͠bAXTΞ}(G]6& <:f pG>|ztQ Aİ _b dȣ`Y63)emJ؋ = ET 2D Qb( LC is)Ѹ g?kLQalLڞ! IC |t36yw&èobK̡Gadc’sm!qBGk}h#Bo4P(a&kkcV&A܏fbo HJ5TRQxYozpe D \B1jC]][2?Fa7`Qxz6 Qpw?wb ,/0z`r& a{\Vj5 `t7NƆH=ÅR7"B u,EI NE`bVW+)*.cRvƄ2A`8N2lMx"TRpk*> nBz? S=#=A aL {\km2Nh(3in.L(niPtBɄ^ j0d4ql_T.C  H9twm6&,*Bs0eY^҄Fc _^AoFpG=P#X:[s0M%/ހ z2&CSh3Utajo@LH,A5M55e43B}^m͙ŐGpvQ\o4BxQ4gt(3Ӳ7s3(.pכAYRY۔W0hE`YA..5bQ Bct #شl˴A!BUG.7@z - ’$jcOS^h ^I8F~&vS1T jL? !0:k@De4'I@Z fUvͣ_1 ϓPqxN$g" fx1m)*UN?ߝ؄Kp |,ӽ<. դb<& 8;FD 7@̇Y~pz0\#\MXC&D9E($ϣ;Ge&j vmD^a&#;OD!vW O8R|qeW _秚K&K&82Mo)i B~%Ⰼ{2cN 'b c1!FPA/*m7@$IyaB1D. 2uk?_lK4?ć\8jB gw2!1S*"ĩ'fDﴖF )LXV * V0xc ч.d0%AW!~HII0׸"ٴA6d\G,W|Ҙο}'6IdµcMBa|^8z T\i~Wai,̃zc29rKA-aG o@E8@׃1W1!ʅˆ0sZ3[?m~h~CuzaZe nǶ` Q@Pc< օRamS,{ggZO>D(Lȣ,)<D Ʉ_]*qCjbhI`B84u › ee Q1c&нNExYa!V P8с}a A ۹- M5&#Э a݂ &nYhZ4 t&< &I[Z i`gUa%!^ٙ^nLh1@x3.FUs̘ 14L84U^VrdqCTc"p;S.TveA('M]%BE zU|}eFUaXGl ~É>L2Rg&^@\hV)N wj#X\z_f:ew<'e> @t7vqw g#,%!k`av!hp;(`BUN:?S<}aUaSn*~ޖ3}g„: gf*$=~dWwpӨG볺|LO¨k5zz QUDJ~ N@T<P.ӫwdR18PpM5k>iPwTUT ?3@GR٣!qFpȣ0!o-&H 0 +*Hx<ν-KRy6f aFФ!|:;opcȍ H:TDRoл)pTY* L(6o p F5"11(e :OS'Qg@Ci;Lxg-6!oGBBEj)= >O7b4BM2¼0 t)d>XCI ](TxDsFůqLܘGrgF{ϚG]NRϟܙ7* jW(qQؔtc6`T G/(.R lƇiW+s_$K…y@ga ۻ `4qm- tG+** ǡ+ tBЅ%ePքܡb=| ԭ>P7"T M-)„- C0&+ل+T 3P!p'i^d~+:]:Ɔ0/ F4Yڝ, |u D^J=J1hY p:j X!Urg PPׇAFp0*AmC. USU0̗  h* >}z^@}Lin4veG}c0MBhn0'! 8TLX9&di§B)5fK"QBCi?E:Dr_2@8|(IL!RB(L[H&ތ1+WUi0v*|Aa=;b\}FBݼTN?33,cU ]k+$+݅{3[gš3h#LXqL?tɄ>} HnˠS|EOH:^\`B&8:0|<*QcӴגTR*KPN 3 R؅8^OuYVa +ukfɣ-Ӕ# ɭqT_?f NOytu8] 7e ؞YFBБHM/¸U!ԅ3Y3u$Ar:`it~Erw< IDAT cPz0Ha{W $5 25YxC`qWU: V!2H[eWR(}Dr;~p1@u jP<)d jKQHw֮יY .om=B!>ʂH"Ӽ¬j€s-LD d8"yӤQ5+Se_U:V33[!eajH0Fz@)[3Lc/zpoo_* nSڶFT& D,y~NNԄ()$|ǞlB[Z! 7pڅ`Y(x+RCL8r>|CT Y" d5} 7ztF0:U&Dy`|84N1L(ޞl~{&֓z]pc65!bxat!tg-h W1hBTa(U ew&n I}TQ^aa{3z@L zp;Pyp AAc‡MM(7-iZB~&ZIs ++bYwr#',;QofђiAh!Pʌe8@ui g("6Z3RH?80!~LM8Кp MVPSFNN}TN€pJC7{cM S_ ƺi1!D W._M7"Iws bp^!g ӌ 3a1X=hUc1"Lf228F4&,WZPaal(|ʇH74~x5^Q"M߾QE!zbԄ666r5&|Xy k$ IEa׷ClEwfc|ݭ<2ȉ#I%>n G3{RFTW'Carɣi\(LhG.@[R]B FGuE(l CӍ>Wx$Hքΐ2;,9z;tcncBw[$:'i-;q C!ŸU%]GLw?KB ,,TrH [!!1 aAڏ{}-3&e d(EɅLP!]OwOo#K]cь8|}х;EOa}dبK@`AqB&mk_B \ U $1;_<o0ѡUH IcCXM(0, 3avR$!l7ao(ƙ4jԧ(1,nMH8*l 54+}!B]H1be xք.OB B[" ҆, FNN1hIt;.O:F>OАR2}SQ˄#R[fTİq*/{YUCQ=O&{)Ka2~7&G'"{vSk,X=Ҹ&b]´:[KgBV9J [jAF-ه0hBPro#`BR!ڣքmmj2hB0j f42|8#6gJ &&T KTqZuB V1 ̴:aIЄ=z𯨧MUV@ψu{}}0V{*15N]د_@aZ'mÏ2T lLm qFo/}5"1L$f3 {Ԥ:>GYJMC h0L(I al!4as@];ej"smmTqf(!q_  %zH@JV n󤛣P3ބa#_I&<?!ܭ)ƄچIe# P_ *gNO1%aVHg`.o3 (BgBBXg7b8!!](”DEql(3*E_RvZ)4yw`kFhUpcF90 2J''gB Q$Ԙ'^Eawe5#Fv5'Bٙ 0}„bj 4, ]baq$x?xEkOVj(*d $ Nm>ܘB4)ݛ9?~kJHm,M–Cr @83qpv+z a j| &ft,Z( IREp'  oESօT]xjBSEw4{WVLl̔L؂*4I@x0q{20~0+*|Bف } #L&_l ` R5Wʄ@`O\P&p;GPׄ76t L@l ߛ2VuL*B #i2B}OG@cr­ B @kB$,ao.,F"^3aYa VAZ:R-3(BV0чcQ* u{) ෾f)7gr()L$^HNswwC8J3eBQ9QTa{F{^Bޣs\#X"\/Vt* ޒ8B;4H-#13ըք ~n] 2e[d @ :lx8 Li4;#pRC&*l`Є7A`У19l0H7”fMBVT.ĪWs!ߗ[0McL1LB!Rpa2vᅉ;F>}͸oЬׯ !]+LXfMX4az=Z1y8pTG>=aXVAF% =C gfX+L"ddґD{¾TM}opȚи0SUب!T߄o݉#~Z8 - 0JeBvwbz~004!1 㚢=F5a^&Q Ж29eXkNRi6T()pgf5GZq1cgUׄbCXUo&V9LԄGЎ8}t(/ !5#uffPa_+$ 15aTa{^ʷ $mv˸.LFNKAx~MM5  Co/lj UY8lQ°Q`3ƮPa7S&5pvᅉ1ȑ/(|&T 2tZcM{P3hLh;3҈GP87a~v߬7 ռ8&t{3!i ܎ <۵W^Ȥ\RΣEUh:3Sc3b;u*Ƅo}0PP!SlH‰Zq2>rDI=_ Lt|_<g g33Ƅee$t !'MJաsERt}SUȅn \Lv]øK'~] ʿv  6eHBuMvHrQQăp"P~oRݚ ÊL&X$=hDiHg>qNQ3e5]0gFӊ1g79 XvyPP@BBq1Ek)C\>x_o[rk]xtLiQߟ-K}k.rY@&ܚ`0Ҁy4)q荎R"<8y,_ _|$F3^0aY$= ("A`OPLi`>2O-d6Hݕ+EoiۛftQNHƈB0᭞1ܹssnfA.Q8Ūf;9^+uQ8q;#G 2#+C$q3d^{ȴBX;3~6!Մ1 1 jMI3>=;;n|*!Bik3rی{gkF*$ ![}<,kԚB'MJ!fAWs?tܘ?U lȍBdprt8لG(ZApd^*ȳSʠY4€qW8zGwvvvܼ5A ܴV*ofh/u?n_]nU8\(ltL%üR( yԚ1[6w"wo5ݙso&|sO>9C- -BX^TƯx̓ 'R$]a{cns=GCQxտrǿOϞ=;S:1" i\JL{鐧Dhz&ZAнՅ5(\9@oSC**Ƹf@>Q8LQO|Qc<-:?Ds+̭['Bq}h[fG]ۖ:[ZhUHaԔlz=p_4VXiʢE c^#^<”eS{iO?T!R)B#TX,Ux"k@ khBVaB!p°Fa8$%o`UH|p4)æZE"I-L(ʻOG5uBC, CF ApE(4 O2(4fB0͈zTm5 ' n!aN1F**?9$s卦&I}TKֈ(ܝTxw,tT&IAdaC b&PxPM8#C@v #8Q"q(PO Y _ {{ ҔODX`GYATs"`^%5y6C{A*[煕1cWӯM܁FT D mtp*^#k{5f"pnF @] ltXE"&ė6]p8\;WaT!aX5b Teذ4H9nI4&,8Ǎ фI;.tUxF=u T dBʣ!8T2$ C0OO_{5Ò!+a z8=8- ]. W"應@k : RwcSI kF1~ hBN/p.jYd{9[E$M&zOaPb8E -{e(,ҩ a j8@2|}K؄$BYUׄ„e1L7vH  F0iF~Y >^8ʄ^ !O }fh7@0vof\$t5I6 i֌S I#26O IDATCG:%HmHQA[o/3؅apzF_V+ D\HHH _.<:Y6Y4!Y&ƌ>B.;1LKP~PQFIL``Lh\hnСPOMCy4IU$m ^Xhhr[37ރ=ب$BE RX#lWmSu:W; V-l[u|=ЅD(WgJa RBIBAl8y/ G_^B^KhP1$YBmB?z8d,ʻ4_Iy;y(څYцNsT>)M?Z)$\$T(wL K263ζ50#BZ+4T8ZMšj^S-M8j%u^S!VׅI B> 3 XnXu,MB0x)~Yqw%a0 _~ˆCG1P[3ЛQGa\Špnu QdZp . ~^Z4 |TIP\КpA\ؠB)$R 42͙+OLFs]4J.c[Fy!Qx3D: kB %Z*"`YRhF҂2}CAfB2RZFROpXOEa°&|#Ћu& |0;jjBG2y(!USbp 튽h p/1&T=n3:&pY؀=RADAZG ^ܛ9Ađ=w'K@ADR_1.&0 ;yΌ2q2H BI4C˅zo< *. US3ֵ ǤuwvRυvhF&4iɣ {IǏ(S 'j\ /F9<@*[vpBV0O$gP$P%R%@ndX„Z6{&aڊC:g/ Bww^RCb/)4"t0U]@m_Az@ A<܄e~o_(,M`i&Rvw׭ii>lNh(]ƩZ#NQ[U, kt=XSS @2EЊP!P8y%O0 . d Ap%=Ss= z3B^폞C:2|TPU!3<1JTQxkKb%1k!f{0u( DŽ:<]~YH)IafQwhc{BX->"&p (OKn фGktC`-ɢP&ΣsJ ϭU9KC3D h\( ф* ubaT q p!z*u!x3A F}{0mAJ.҇s"5DkbBMXn%5ytwf xpҠr9BD)062:r$nǶAG+W)TAM{6fCOu]b|)W5k³\3RjB=K2h&KЙ*%"m{DQ8nԡ00[=>{Aa@0<! QyPpTahBC!}?|s֭Po|CxaUE!qX7I3B{/ͭ;wԷs7ߤ օsk;&|Reƅ*(<dB]ND2fNpY۸*<6"iT20|2)P$A^.$8ԅQBZ7ٮe0?،Е=.EH#@x]EѷP0!< (e,X_] _7"k\. Bq7w\/>DZ,4̣OhèhΘU B5 7^ޫK v2>Jl\bEQGm3HuĻf ݲ #v0˝ڼa~kÐH*z43~sT"XNF3k[9[F@]8.wyoJ D"rabt|}g_kϝ;e!V|*|Қ{8y TS|N`#C9}Xxc̤2_+8o] YP#7; ^O}%ҴšcJ}Ia!l  ;S =iH"jo}ƾC`m1!?|^lAz{Bf)-R'f̘.aB^NTWw@̡.?ў]ȅ<V;UO[GusFM.%AΣq 4f & suo{<%=BL(2քR~^pMT1W_7>,n ߻7|W8!?|]W5$C.>,B0oηΰuCS!^[ b³hkB ze@@VΊ&пΐ(4w- fƌ U- »z.,4uSAz)XF{?.axP8|.?1g$RQ)M8c ]PÄr &d&l³nݔ&Ɓwnq , 'ÌaVlr"WmH"Ȑ8b0>쇋n0^* I?k ߤLH邊\6YW#Y)c0Cg`% CVbBXRb/cx^zkgP{.Ň$aOsJ#ل`OĴSqq(ƅ i"g",3Q, il/L]vOZ4fn3 4hwT0:5ad4.B ! P0~㸊48 t#'_+ |E!_2yac 0.t(!#奡|C8FaVZD:.k,_A>ZlR+ٿo$ͫISDј]3 ܖhkx?wZJ&%} a tBOځHs]8hпYo eGq![wTȝjn/T ^cAבA-[ :~muP 2Z[j"Ch3wxA((dBGW2>5 n&@[|97* B:=Ψ !#2X BL+j_NϲѱIlz=d~M*BpuP~J., lBAu_˄r o y%hBG|jBO4 :V =.[}L:`g2.2nlkjZ.kOHPnA{@4~USAM5,٫>t0AONtz/?3nHnԸ"$i&ԧ> 7 BќAD"HvDqM]wԾ%tWO atk!R`eB5!Bj7'rlt;4Lh MhB(16 iWj Äe_ߺZDBp׮Rr ǰ i| uqo.!! Pf'` XpRW/>0nM88 $ ]'Y=meWo YT8]4C4$zaI{DKṬ,s}VV{ΈvI&jZ]IGiL5a U*vuG!Z! ْ¹iIa1y!:V RA~; C-3NQQch7%4ffkto 8rfboS22!<"n {` # T\i}nw77 rvX?:uESBY(\ !湴4  u׹1jHnV*G |7fȄTAjBmCޡx%eϝ( [^3HS!"Q^1D%;Cw(2چ~vʏ^SqKg9̈́ 2a;!&aj /Yq_R>rXY42mFa8D8 ׎ޔ ,N EHb74 WkIaZF wTDߘss"?m޽j3]@>`dȞ iL[BPܰ^P/M{Du( ߮64xP+C/ hBwhjRh?%86kBɨՄ'f(7!1B8LhGn]2 Ljl|"^(CQ$&gKCaKeh- ╢A ag7J \tN5^OAU%= rj>P5/2FqAЄ C(o%>DB̈́2\7dCg۴0#U2ݟ2Ha+L(E'vedoF1HnbO9E.i¢"(t7„C>f[=>7"!iBeiiMuӄ2Ers;6!˝S5-G4dhII#9N^:vh5L$n>s &\I5aF!# aWd40I֣{=B kBI!@Gn?;i4Ch͐ hnf晐"t<)M#2t a׫?\; /.dϹN; 0٠&{ ^qzƐ.GA І P@p!H u(?3kBV{* 9o*%~CQKa 9yp_!t~|P!dL?KN~VVָM-B{S1t"'V5@_qfggWWUd4EgMj>$3NzSMH$1T)iZ =\PY;~ T flpӦl۸ y_Dg8fV+®~Ew-Z`ׄ^}O? !̮_d$ۘ|7Q(L1q>v0L΅|<SO`LOz :g Ti !{3  R'wPE')cOW'XlGE:>$ Mg7BXC:_qbqG kyHQU[p\OG60؄և@2(Bx+Cb>ZToB4R@E~&AvP'.D`/ gg!G˄p4]b z-|`m{[Um-i. [Ȅ܃QНֶڨ&l YfԄ*@zB!P !Ũp 7\PCPPCaD ҜA!Tf aFFFNcnAɭAKBo:B@,X̢ PKjRvj1jdT|Ѵe.ٯbhUXg??R2 !G qrф>jnjb: .j@eB ałј"XWg7+!oѶ17a(t ;@# [BɡPvI5 r?|ҋ[u%d2Im1-vFk3a_ jfC{M w`Y(}+B&$9@fMi $FJGK3!C0#EcvGs+ͅ0;s~&TZ& d ⫢]ȰQ՗.=p  Y*6!"L3#ShBGi.NM3: !b h{Ä [YvIhtcm* 9WZ & vwia - g0@\YSMM&݌ed²&4?g_69(J@п4@r`wꑎf\ r{OekzzpmB3ǘuxaO A o߾ΌT. BD dt P :{=Z[a#d kBhzT0JBgH `K LrZpۄ~BP#f! e IDATh&$˷ocvT'tвr4F $޹pBtuI Z 5r  m^ QY. n3_丅C,Q5VGiB(0GEkX2COwOa%'A W:zm&,bp"u8jWM0<}f׏BɃO*<m}J @^WB1@o`rV20 K65៍y=jd YQHa]kFKjPXkX #5!f($L!Rl{aѣ9ANzU>p!~pɓ:jf`U.4M   \[.`0@ÒMn?/2R5+IJQuG YMl7 ZI1 5MUz,&LGo\Ӝ(,&Nپ&s?>ݘẄ́ii&LQv/59) x F ?$][?/C>#['%:Q֎~7B2 k.;LT/sمs-uA;e4ޘ0 67Z:gZ@BGFְdTw' /ʹdAS+/ :ک3%፨ ygƁ`LX夲+S\^L  yPq-Qg6*L0! 97ƀgR1!?8iji(T&LD@\d~U溆+>=Εd«LEh{h<aXVTVz j¹uF aO騫7aBCGWFdΊP1!s`:`}dDkԄt*Mm\Gk"HZ[["LmGS` фEeeeȰ_ՄF{Mv] T= )*.)@CZ=J`(2 {!?P"wp֛{1 A"Ж*,* W+%7KÒ4K\zwgQ ݻw|cE~&4 E^F}t`?27j G}21СI*<dɨ1&3B&LyirUq( 8 d&upapMUVTG&C3MQx 5aễ Mji}w{A5ro\;i^(v FZJBoN:iޗ1D--a\ Ǿ A 5GSy4~\MtZFf .P(v̄ݍ hN "ׄ^YX(zXa3L"m96nTC:f*ͣрXQhtg܅aekk 7Ȅ 7+0r & x+MLNSsS {DoBӃSUhB|3όqSbb 0]* l>h]>7EeBJGELIIQՄ}ElMa, )PpNhFC灣ߒ"5 cV ե(CўmҠ[_:@WSAyL(p3n(3B0&D.|էD0&Lqm0\i!m'D6z{&[]\F:tӶP3aB*Q$ bO\Vd7(G;=3ԗ),[ z0> _R!BCRaT&t/* &à=<[ 5{ C n݄* vEW sUWzؚhf1KHI~JIBܽ4®=:2IODa&LqhuNN! HE t [0|;AC0!M/mZhɌ*\jf=#әv 9lhL({ %a`ZEh1}DM#:~( ?22) srń+BZOWm.[ÄtZM A;،L(ˁGZfG|ބ./d]ZVHI=vPD@aBBӂua@FG:)ʇRQ6fL ; é{}:.z{iޗڌ"GsbT`jKH [ߢ5!fo 1FgB#vuŚ &m>2CPC#y Rѧ~ɨ13p*Q=\+6{B3ñxQa!"쮭ތZ߶lBPwg o`.,c.>=^m:A;O f a4H;b NE-Zh[„Ӏq[! uAZ-X}/`BmAE[۶tQؙ&|77ЄjhP707,/tuexg& =﬷qPOF-M :5kEQtG-h$p*{c֤cP($RuECU\n&]^ݮt>~b`ڗZL%Z.|鍅op,Lp9*,rׄ]& /&t\{` 18) Q R(E(0ʳ]B"/ ~IhVggfkpuSkBR|zf1!e̶ v^=E6{_Uh7@#FeB CN"0aړѕ6 *:=& /<_8[7!Az̈h;?s*.mh aN !Ga ( B `VںU`TA 0jnGrQnB.B?40L" g'=!F^SZ1.1kֶZvo%atN~h~ϵ^}sF6*( k 9 ѧ `a)Et2a3^Ct^jWh,l&MϡԔ: )؀4ƙ J.ys/xs܄P0ߦE>z-q93sEfx-! f–tԄ@&ĔBa0_*eBUj*^~BɨC=M>1Z5@38t$ 7ΞJ:z:,A^پҘ"JBx*% TZ:ǵRC& Ԅ; ?qfH&HE?jCxo&\gb qv8 V2܂ۅ”:#Ւ?2Sc&4&-Ds7si ? &d(Ο{3!lLX5'!4F>g1׳&4}`@XtN<& R!,; XIGCg&Rӄ Ҏ"'tGךh:DHh0A܄CD J_6Ą{/!\ZmBR lΉrHh3:?hL(E@ DJcc]"X ˜0_p/ 0@:څ!~t ϡPa0?| 5o ԙ2&lTP/ tƻJ E}HKet gg{v`X?%zSh9PXqƉk1ƌɫbQ;V 4QlM(ћT8E8^0* BxQU˪̄4 :bu|hR&( 'ńDF(,@ lrD!D^>j†@&*0UMfpIk0TFkBR¢PKH-FaB„Fg"/\zm& j& P viEQCP@8fм1Yj*tP0$tBx.ȧn@UD?sH B?7"1<h[% dB78`$6_5h8;3- ,8u"STB:pИ}&3&vG&tCaVPN ;{V2E7!00Q)L|T).* ҈&7g¹e3/b/GDi#G>͆(TTٖbƍ)"NB 3PhvJLX^߉ ƿ5~[sCQ09EїPdQ *V4 %=".ϩHZc)!|>x>Nݾ}~}_E47QoJr0a* \Cc¸3zÄ>viK׈Nm 2G&nNA&|t>ƄB@brS5uyAw*z I3@[{fJCY~;/bdyBhޘkc̄Y{ZL%"Q)29ڤQ@ݜBՄOsCz8ū`rZ2SeMGAL 3-L?-*>G6 3tV>\Ej@EG}qmѨsTč)a?4LP&(kG@إ=A3!jg%W~ǣ !'CQB͜L/ pGo*( !)(ބIjB-LhR'a A}&6 kth(EsB!*Bi¡?!̔(}hMإUTaXAi )KFɄH# %Qh2ք2LU6SB BDpysnҫg?_p ]qRlC"M1p2N# K/`@x¯=Li]Ήh"):CھDo0JSte%B Jj&(_]K0{3 *{MZ2Ay-!RAJF:O׮iV-[VTB[cРtp15JQ.!`}$Y$Bإf5r A. њ09xT|ՙ&|u JRiMCa rD'9i]҆]vpJCD) ὖ&~,ܔRue6j1$Cc(=/ۦMQ#VJ +]w٢0$4 |L2F&f# &)$Vik<&Lp>0Q6hN2 eax3Elia63eRd}6u! TmS Qaa T/\ Nr a6m7tM-vmڄ-*T&|4 {%a^r ph3m͚(PESZPvAd0)G18iEEjUbjڴO%atp}pMQb 5L*y UH1ӶVFQH'L0u-[&+`̄o(?A|p~pZp.BYR mk"aW=>~PP/IHkiN9 LHxgM,ȽviH!"^k N 8Dc<%%~̑#.- jKEbbk`V"p2q"CPhMxN!M!|TUљey8Qo& }J¤{Dae/oV@*|LH\"L:) dhsJih)`+P .0 Cs`0 xZU({5Y}*Up]:y2o22A  j5h9G/<ڣ>GC 2`BxXV1RsDĄIE ukn'KBx(4#9}I!te9LӘy>Jo}FM/XuegeW ^!!C:>_ү(e-%: R^>ګK' >vM޵j&?lbϣdW)3l= p J! 똜7%tCT&'N !5} ʄ fMMahyˬqbXD@tCWH;.0e& oze:ݮj)*2sNcՖUv+ (`5!2Mob'kލQXFL.5!:fC >f`z8"rw6zn^#q}zؽ}2zP"U UVq@ dN5k!ȞaX y`Ä0 5>>(7Gsƺ5:ͷ'7EӚ5]f&OaKbX0qmʘ"x&C:=>cDj nBE| `:?[uֺp*]~ߋp+yn !=0 ˇ ÚD&tvIӄwu3ڠQz4|T/ @|B$c9"CX E.ckUW,7-T6cݨaDkPf\50ؾjҥNN^ \".dF^ I?x90j$ IDATЄCF4|Q-% BHFg?X ()evuGz OߥC~c0iPpzӦ_tB$0 CbF kpH9u.7{]]ֶ&2JLOo qY2]&<hytӣj|w(tO:XR!"XWZ -z9nv.mEyQn Y יEAӄ2VzrHN]5֨`Qc#' >$cbF=2vkKh "YmI@0m2 8n){&3 ɳVbDb ((b|Wb&|ׄσŚ =iM7 [3\2Z!0„wGAWCTSK&TQJH5kuN[rJcN(lH!\ /٨HFg?-BF಑7&l  o}[OF– >;EqVȋ FO#TxQT4ٱd Q4I5Aa~#{IF5Ψ0 09p$1|Ӈ[\e3!^nH\[E !LYj!VڶYAkGҰ-2_o l뮞HBoEc0gQeG :@Qz,j[%hHw HKv? A] Y„ CBҷ1S̈́ dBW,p&A݄]21+Bd0eK&dU D+>1sq O=9a^)?n| WiA%SV<L-V5&sE|Mir!UO &}!3=bn#ЌC3f(T2c &q&B+,Y^?_s/:EUݙ"Tm P8Qg7vp^bϢ?fܚl46Gqh.l@|2fތy}S>?76MirFd*k 9fҊ1G=)XNW>5 ",xN4eb61Q Ih_p E1'κΣ*.E&p"$"CoϾq,xLH"Є„C<4#=%fl nf"̞ի酱`K9&k*Dz5Eçs $|)wN!DE",f/xʞ3gWmFv CE+ QH+H4є\Ӥ<- UW7dB" )WM>8$F*1-( 6c? dP*,ObqD[hZP QCI eRj\$0+=+]h0k b" K13Ȅ7#Wk 2TD_ʒUxe1{W,PpZ.2đĔ0)TV^HMI|>D82wBH(a9&\I( xb: 3ƅY KZ$“?Yd=Q-FT!8&> ,%  3tZ:L ) Envc" $%>-Mh"S @xÉA p d2U V %2G36wX9KrXm (PfZyoX n* sQiz00m#ANYI({^`k"?OF{#cⴵK* 1 -vK" vTC0U6h,Q2 BQM {8JЛja5b ZdE(m.4!1aنe,nV-GuGTKF]13NL@\ԗ!.;|ވ@Ր2ek T0 BŚ.5ITPi`z!.ȂYF2:M8d8O837H`Jrb]ay"*.DϺBwT+ ]ALFwdt(_yUcA7SLH b*Z:.0ށm.Mo`U Œ5܁CWj.*d` •$ #w'k$ 2҄B̓ArL&޽cƄ|ИK 4P`p@ Rj}1'Ub b)7^yqΓaC4-% !R r%D( O< >mV̄!=!!(\X=J6AX]ScdLƒ ~ ~2FR*܄QR6cJA]"x"q%ɼP50'=ӄ7:thH7s c !D`_g!hĎD"D^ B:XLKiEjzj:t,Cc`0//Hb t8Cp7!"8 %O,yL|BQ(dkZ \I* cZa(B'H\tp 6Na {8S@˗ 8p=٣i>tS`2ꕢ%”mۦl k62CÉ1d¸ NFh101q mWBM g4!d YbH$B ЌU2ܥCŤK6؃8C?Ƞf·oʄGyUHu@pa"dspb::d T7ɡ_z] BƛeP h7<fFJ-%%ˉJQJ k)Mklsj(B1(c_t}_@.mHء%;<;1HE R"L`*(0586ΓsSqhpK'mF8#'(#1$(ЖA 0{ MsНvLt0jiV hu C߲9~s9 9ףShJ&Oy[(\*kڧ?ο}[W*ՠ!mmk"Djn%+[c¸PLHd@ܚ#ZmirŧT VuP cC`Cq8ѱ<A*$ Āo?o(D2C*~XN2 QBjޝ 2VmԃusnN:| ӤSO0 ~: kK ujZin \&M EBAaN /^֏ TtJ"gZjAK )Emd0YӪW VۥɃ,w.{Z@ 2ƒ(D, M^x^JtʳRp!&TИDY%^ |Tg AfA%&=> 5K7#](9QޙYB6 (3N_ә;_ Z&("Vcf3 9uuhA  <C>CuLQr;JɞAW}lGh2ɰdܠMђQnR]Þ(x^1cЮׄCnuV`oQo?􎰂 %{Y Byc+ݚSa{)[ A!6ULL(|YG͕kGa(6g@\*Ma w Q*ӃU* B(ǜ̄~wѤ 2" mS> 0Ë܂BCӦp 0̣b5ra3Sa@xaB)J[E/tǎ !v';"tg(Rm9)!bz*(+DcM>M!!(p7 0a;܃̄K c")-1fc'M)0Śf ٧>ޙYE{'\RSU3&,>*V̄S4`Dh@&B qC@>@ B!@( a h~Bh.cCcRƒfQ6:OeU*0xUS!ppe!8Iq MQŐ±Qd~d‡|ej-L)C B!Wa8ax1nosO,)>G:* OQ i6vG£ex@Cy P 19kA:ƕK+ C CrGûGjCF ;G^CdD5oaWk2rj~R5}7א^N'9TgfeB-]3"ܺc+PH,4 JJ̈́~P)UZd +EUH!CDB Xf AA3Niq-%m>[V8P>zA8pvʐ !!}]P8fL5͖1ܾ V WЈ寤Kr{J~8b61Bіi&NS1b*J&!QnJC TRR:YhBX4[DRtt!e5P80T&) d R:jr|eB>CfG&EPÃZZ}4a;M"&dq 8q>N81ۆƔ(Nc T,Ø9 [)tPjR)&b8ͼ3:-Lb,Y2[IT *' rQb .iTY( ygfQ|CV>|T08^C }(f޶쥀PJjg=L*tVZ\Մb \rь$p4ü-#)|}P̼γQ\VUV Z'c6z_m&ۙQJб[cQrd9Tn/~Rw#n6{@ݼR+< "f# BMZ:(̤ڣ[bs4WCЄLJ.` ( 6a`j=.4}v):JB0s +jF!w0ϟg*j¯ >^;} 7stQQ.PbLGC:Gq\&MS?ً7h( Hqn:/=ٳ].r Q/Cn/LE|.*2)1kպƼ8^<8lZ&d1yz( 1*z2;T;0,$Do}=KZ5CF2qŞ·zZ#Woikt1)4Fy ]y_pkZ!T"iD0g/YMQeB ;'F݅YξLP2 ?04 ܌ az+ ˛w[]w'h,0.z9zjpz*'B'd?mLCq_t z~{o/s3>:^>]Ϝ~qWޠS.oGUgDhQp-sN1 𸖎 Ef$EFgSƌ >cJʥIĎRm\w&C-#50twӓ-S);!nh IDAT%)*dwltp%%}0􁐖 P[@aV qS/=L䟘\ $I`[1ԆBG@<%|T QnBO!IaS>z6ڨѿF))B׭dwrm`/vzOtxpd5l&{ VšHGwTj" _/ ! yB a*_8PCP3BB -tWƤg{uB!0p6rV82R=Qj)iAˍm( oD1!fw 4vRP\ZYpZl0*%?ޔ3 =!MLĄYMȏ^5K+> S^: ^vR,0VE](]FP\Jz*w>O<BF=F* )'12ӑ{u EkՠaD\7+_f؃0.GŜPԒJ^Ä4dBDŽx+,ohⴣ,||tTB% ?B= !h sNkpe4Es&Haa4mٖٛԔ[>) R;PL,`uZ$ۢ1kBPY1tՄ ^ յm&5Aqɫ|3dBsC1<=Q}ь\3\.*Mq*r |@PGp!C01.ƻ3dz'M CJ ``vDp3Az *\?ЩBDp6"X) L3BߔzBgN{{3]uh(i;jVg= ]fM.K Td j bPV `v7SNNtm9}Ǥ k燲",S}̞5*@~VrFζi1m¸ЙBc\_iPՃvF0DŽt2 !}82cɌB32{o Ɲq:EQ*|BЪ;u*~=ѴeJS{<磊ÿdH`9oFSSRR_!r56}+@h%3F{T҂ao:Ҿ6>&IG!w҇~}&Ia3p%;{=miE3҄cv/0bAF{35x7(rU[9Nt#!FԍD7AAM.h7GOq\M:Kb>L>)k)?zB6g;:6)$ Ϟ F#³rPo::UvFL@aDx1qp{H m.Vy zӄQ<Q/oN,a:kBɓ|DѴdGqoWMZrm*TCR 7lEB Ax6''9F_!dBB0EjUkB8bzC '&3a"p!\B¥ ïOF3gl.hաk𴾌!vњB0 , Aa(ۣјAX8,-!vm]K0nCS9X 6=&{[: c¸U^_-n쟎=!LLD{Cҥ o+7_zP7wyްv/8Ea9$ؖ0oDɨȂ~AcڄRӅ|NlpWr *8^19EkӸ>*) e^}TNy >Aq?>[AE!2^SzT$)eOU(P&d|y:׍vE2 lhŃ\QxXP6HL{Ws/:t501=90^>&T*ɨ:B~y6_zɒ ==a;sP$S˖ΓO{\ Qr\LY{woiPX1,y.R]NF|AwBp*!{p~ f P 7RT-pB!!MRBxu̝w~kv=\5:޿r:@mBg%oEK|a !GnۗTWA5 Fs2Q'lJ{#8SdJg!xٲK^JH(+p_l=< P){"DnT2JF2ԖQ& NSz#KT0ey­c.8a1{&E/Vd(ɜJ gl޴y2† Co /kҌa g6Z1@`10|w! {vi.`ޛ)W|*C@Pim[i e2optcDg4!Uzsy̅ +vwb(?MOs!E YQZQ*A %fB|rg8×z[fga'Ӈc:?@ c_;;Qm DB2|e-LdWo(w* mQ[=e;21ޘ*ܺ~ 5W^"V\ aOAMϞLfFdd ffC݄%ag(UuKOS62R~w6o Oe=!t7gF u!@m*4?J5aB҃ZJk&<]"& ݩ7HveBMX(? !ҥ.\.sgf~-Ke~(# $sTqu)p:!<{m&SRBY"=CpS”xM S&rU} F6a2F ioB5KT_g\m;;&d g^CÁ͏)<+BbP`(TzQ(RGY::}t yA.0l^d+C%KPzoJ #ez@bNeOyJTPqѓ'j<^[Wp]!dLt?{-ݿ߫9zE? ~+ B 7,(QQ;O> A'1 ̮F K$}gZ53Vr#r^)ZVɤl/54ك$]ˠƝmBHI]bI8cpM5tt^_LBpE7!K.pzO>W*dsq}|l@|AOĈ#A!- e20-k\vȾ(,v @P7drкTmh$lv}(% N|Ԇ`Bi/#ń/`B/W5M1 3~ E> N*d )^~>f6Ƀ#t1яvAzeJ8CĔ)N_ٍQAQ]K!/KBNCoto^{pV ;lB/0Z_NexC[\qgI7xAxgT>ꕩf!?<~aE7UBy11((i˜*,,-4ޫe‘g SCF!W}y^A219@rfcСyü)\\1ZE&dr 77Z+D'R #ȡ*\z3~&<:35 d?>z0ղ7Vx#;"X& Br T*95 Bpj Hn4V穭å0D<Y8Ƞ6%]W _[o93 +'& &, V + eב!zG#4GQzF7B!gPN':;M!C]T:s`Ỿkp pNp{ 7nDBd$)9p(4e&?Y l 4h"y~[PdThp(蛰#!!ׄPzք+VGV8LO>oBUhY^`BQN"(з;BPa]»](~F\2|׸0 f#!꾩dD)>O\]MQ1Iw 7l ;6/ okSDY0A ||IžQF=!jiB?/(֌'9sN.k֐ c5yEHqxoyMU!`6H 29"|% s?'I ` i2: CW&"Lz}TxgfGOuwfzÂB?jԄ{Ԅ B9aMMM!w!ð3Ȼ2, JM /fy@!eek) A~a9:UE1pU O9{{7E:z D7,62QI"d􆤣#4fxI aOBp?M WDPs&Ф3ՄK a5ofc:$ (a?Zû-.C4Մѵ C>]!p9ݶmB o @QOT3bBlVB7LFw_|p?ʿ+lBBГ? *T5!E&\kWEaS@U‰gWG!s#B[\$03&N6Oj>׬ MKc Ռ0vwdBbbEkZP0Y)C!` &G ``zo` }R& Eu KI1}l=a 0# gA5zXCO0c E{mx]Byo9a/~k3G=AL7 G2~x lBqn݅PkfKcDŽ~A~c_3M&ez^DJD!+ӄjF0a_E*.' Gh"+V +`6_cfBQ(;3޻ {&]ؽ;fjbBs-a(tfZSQ?۷x߄}}M%փ?&}>e_0BgFs!Aw@&ՌA 2*<= ȇd9!xp9n× 5T2„B`pa}]97'د\rnP.eB!|cBqK~Mگz/U @8(P>LxOkBߢ~%k3AjGN[ ;{}<\(L^|C^f^"=E&V sL d/F] kȢcµjr:V;Ŧ58\;3vc y gΟ?s摯~+ԛ:.y[4EBOh_P"m"w j<{h9|JB`X:ڣbQWa6 )ф̇0sM(DHm.b{%9UBHJSHoj B{IC6ů0Uޱ!bQτ@?žaB(%>ՠ hWD:CB#%Ez {^9!9B 2 QՑE~m`)y1kqSRF8<{MП{ J0]=W^"!OQ9~-)|S6NF$5ှ騌>okrQFaW&*wQ5[E5!C^/z3س *d f d3"LX}Dxѣ"|_ˑp aĺ  #jйyRx}A:OӯL _s6giC pVA_2 DJGytxʕ&P}oe| !e2|Lz/qfK qNCg`䶌XGY}嫲Αv)[ffBATNUlޫ" IDATѠ9h *Q1JL_n dՄ*:C?"t}Qa! { _MC/dºm`b|VyЯ-|9e JϹE:9uhhV:5Omcaׄ$IУ7Vս]LW&(1 B1H4*l0NfKė6X{fcbBk,'v$3HĄI$I FI3 hGhq۵ngfYgֻq4 [ Nl|PF {[+gL]z̳VB?nLȯ\^^Xr eᆗ<:?-/Iy`|5!ԅN" 0Nٖ 0xբ ѥ^C2Tc^훊0 ʮytA8.0ԛBn$ӬB, DꍼK4Ԅ{GehԮĠʐDFܧ#Wf A( 3ꣽ/Ǚ Lf2 CANI#DI&_;k/&G`-~ȁG1¡`ߌ"Cmhi튂09+" 0`CE=ucLiB&Pcׯ_ ;A<0+A@ x}W\=CGjTl=/|f3 Bȣk_UF~qU!4{).qO>DLE(Å"=>2.+B`P0 )$ G@9\"wpz61 ~9]^# }t2̾,|^Bӧ)CΣcFڣ SqTt_j86 N&DүbVS,fQa03 (a&vrjrW*3TӪ0i\OA> 6,:M~~9D׮g1 OQ'BTa+7aIa<ڴ?/`-uBH_z/vr߰ծm` 0c3ԋVA(y q]A\j0Sßh?M'gNY<&&kfAXr(te2}iwH:a(LaB0m&y>9\$~I&֎|J$`µބSs HNr!A\ _(⠂SAohgeTj3)3gfߕ1/RP060] FR) 7a"9gL,%zۼV-Rrij0'ᛕaԜB6a|+Bac¼A Cg!D 26~Z>7ӕt !gtIe^Q/nFLDϞT&\cM)2ZjSKgL{&O6%X‡s "?E> 7>Lz#ί:?zyGy\۵k {gfkNssAЃ0\'fpL埿46zak³XX% S@a#OOc_ l!%DճRk0mN #BeoBZȷNo&_ yCduq4,!p BHHsT FˀA44x\*=)^f{fgRc^ud<(&$zi)LÄ,(61QKpS"oF4CM8Rl_, "~y`+```5:0 c07j ,3٣q+6J?FN"#)(csF 4#J2T wL x]\GÿǣP\?ѠP_cFF ?uMGj1nFÖp(}B9om֥k0:TvHo ekCd? qoP^ ~ל;CqUqHDM(G0>8TaHB }Zx&4qԘ!Z3߅QQ "x@RRlS0:񸱦:uMuM5G7ʝ1:ՆG?_<&ꙟok0‚! ɄH׼3*Ap`Ƃh<ʺDXGL?8<܎Y;:j?AХ? xCP@<Óyhv!0a#7لH"]IsgN`mbf0ī ATWHt&ЄaF)$&∜Jg?_Pj")SXl~*zZ.} -; l(, ɟ"}!;F@@܁?EX[PbHarW-x3a_;lkEADdIA` u`ul| :O3 _+ ?T c Q'0 Y2 ! DOM "O 7辐A6V+ "DW .rah"ԟ$ɀ:# sI5 j1L&lIAR(I K@r!pXbȄH!BH=4ID O K!RxMHqEx7CKm̸ yC߃ᚰ!;rX/'T@W٫)!/BVF#_Ԏ1tߌ/a+<"H5,!7 kH [RsƂyZ09*l6_;\;lW(PR^%!ƍ(A5Rx& Un(“NM*DREx]DчO%OG0&L U*CW\2 fѶZð(l&Mu&ɡ}Mx (3Y旊8aa!0$c03͊A+ڟ>!Rf ADE Ilr[".%q8,/!e(W oݸu ("BD0|0 F)b%GmQQzGbǤ:B{\qY_*, kԄy)xBזEcbBn#߯CB_6Ec5H$<'c؋W]XyT! lmdgGHω ɆCF#`鳚掲ՀޖB.vp%EPl"ݏn=G,}f0W=pԡ `քńrIЫ 3cO9c(&R> E` D A!cX  ǿBhԢ3g9nc&!Zwc cA?Ϟ%ڰ1, a~oqį.̡ߗA5X%5!1x-r={/_=bxbx;zE >uY묯AG rMWl ȿ¨aKB }qVL(<!~ a36TtDdJڧoGE ss-٭G[sms%M\C%vHe<, f2.L1<Lh ^5[yL{(p"B%0! Rw[>@>'bQs PH4IM$úD҄&L߂ js0f/g(9z3޴] d#җ-30ƆGJ)$Ŕk.BRɕ b~oϘT Yt`؇vs.#$fӾQ)ӡ`@e;@pǖ-"]8-0x/PDiPIxyLHEu!30 4w ć|˕upYh:3R2R!3*rP3vmU!܏qh0<]BxW(R@pk69mpX(uU!sAc<Ƶ` U}b(ބJ0 IDATTRX?Go/i>+[SPAi]2ibrW dvܢ4ꕄlcnJ0ʄEa"B. cB¿l<%itQ;ƕNUr (:pVB,Ms2Ҏ,:oÏŠ[-Aoe™b5!"2 TJFu H:4 0f p)k m8g!TU0U5 g2ȍ2PlBHw\wCaH8frs0**avJELvM)0D^a~hUU)4~B=!ua~4 ?\f+J·CСp[,( (6~*  ć&>7bK>MѮ RSpKM*܂j_F0 AȢh]E.0hۣ!{.p>Dk,.< By1Dnz]h(*2z 6gzV pG0$ c.9P<(? ^IHY,# ۵+ ) L vmB!gzdEРy[蠒l!:%wIGSLx,Zi8x:3^M\p%τTK^Q(U!`$ B]IڣM@ZHB2~bAU" phZ4n+ tG;(bhGBf@Vᮠ k߄h=z7GMg氓F̡^{)0ф9z- $%kWغY_! @U$Bp{mMK$ ? QZ!Ԓ0@hcVFߙLD{b Di06˶6l320&*.g8XP U߄V)-3 B;z[HUS\>&{5RU&k ,Ҿ Qq\jsP,5˔LXX[+CJ¾% ӷveA4 ZVz@6&! ?^$54vu(;0ww]atfq]"+ V {PrC[!NRvf >ЦL>*$ ] Ʌu1f*u+@epQJ:n_&RcJE 4X .t2>o3`f ydà]0&3\xذچRT:scz4bivPg/R5P@B<'P"uT.Ɛ(~ ]3 ?ql<|`NJpT;3zUB&1!_I9ߠ­t $1}#^IXk6JP4B͒ |LL̙ \ABYf ć+dZ`.d0d9uF!X~=R2i9o-b="Q/Q-T($q +DHvm 3ERfB m[m$,ꦵ%aeܧ ͥ FP6-pIM8|ES9ߞ1c EwԄ:tt쓺I;i ]+b00*ĵ]is&t(~ktLǡnq_t]3<`G!Q 9Ƅ3hE%1!/N{5ahј>K/Sd07- ڕc XH͘p0 YZoB4*SJeTE5]ЄUH:HS)ƌݶFK+lQU3U!)̄o.9 a"B{I~ĭ`q}@+E yg }%0,cΰ߽ uggdĻжI6X 17]oQ߼U!萸K.y)@Zc[3Ǚ"V)az+0}>Qx8q6!^8>?0  3]eZXQ.^v:Y0%=ZJ җ{)`4OJ=1%{˼YA&̘.&#\x9B~Mm`XVSQ+D .nm(m,Džz pCz3`Ewn. eTP)ҥP=iǟ )\~Q(dd8`C|a"3y`l 9bm[I[!2Pn30&RyL"|vw9}J¥A6- T&,.06…IB-ш6[P {*:M,-K]z$lš)bTӘXd믇^8? AG&t+ 0؞)Mrwf~mnu­X-PQ%a)m¢ a)d(mKo2k]qEj|ۘ1O) j F髶J[h},ܛWs m^484"/]39FՓ&4zK5A[$§!LʣTx9nӨ'Nj-7ʇP'DphQAMUԚ0ԗ~/}a%;M9}{Ԃ8`4IņpɴgTMvYքG;#=*{1:|JOC`"uĽU=τqD<@:M pB%3㉄a!υac[["tí@BHK[52,L)oǘjЌZ| ̛a"$dw2E}~\DoWGo;6pATX(fTvˢ=uIۥ2,ý3pwh5>,q ?\Fc&{zR\wGQǏG( -(6gLӜa {it /oHl"yֱq$mӘ!DRSnC a@oXzT(,Mi=˷&4ʭbmμz09t7*r*I@VHe7auu0f [I۩Cھ)lʰ>h]aKt2c[ZZοi2pq"@ >E v|`B LbDa p(a48Dg4 Ri=6b~Q6 ҨdX֐6y^ۡW 4G2׮$Nk[2f?ќlNeC# !a~˜MN&k/[^sQHO.nkŲccB9aw!!wH[ሧ4&4^D؜^@ L0}@8fq އC!|> Ւ0LaV7Jm+BA#õa^~j416Aas^(ow4ֵR93M!`8.!ҼC"(Z0K:_ >C)&f@yGRiG S6*0&Bfy;z˼}µ#f_&{^L:"۱?VeHѳ QT dq?h_f6eÄ7.% mrkcMR1FP.՟'zKvi;憉 ҎFy0p29Phz̸߃_^s 'S(p(ũ0 4:(Iq{. G i|VxD a*-}}|h6p"d.pH裳CE*=U5aH*tm(C3k#ž}kD=+%A]g'BaT:.(U5,2T&}\DžXav0l D^+ ~QiEN{ XGKs1pɄ4^PWᛝk'BQ罇~(dQX8"  }(t3p D/DO_A)Gs͊pX + v|H;3I*ʡV·iUT`TU=z$=?2 Mt2yd$w .X35A pq`Ti6M^D uWb8qmHF>awl}IMJު! p49PPC=4 _(]$G {U Hc Dp)%&h{ }C@[tg÷EmäaȂpE$ xq3b1Ci۰ p-C2ۄ|$h pn&ʅsBۢAd:(动]lf;:0$nڐ]~0 r- [j^=GdƒqF΀p9 &C&26>T m3H1Eo73,PD,ѧ1'e5.J9x/a%3lYB_&-!7&4K GB14t Cq6-OUnU؎͙v\ |<*ovaC Β0ᎃ0G8%&d2؄g4zo mY~'N(8 ܉q9!8? CB އȅa#pHQt?CY;\ԶokzQTZưh1,  ./xEB8[/Q{ DR~Te( 9:00s;hB=-LȄD Z"$;JĆ4AaM !^F>bޗy 2x(\@aD?&'pq 8'v@S;&"B°o(4&d!6!cC)rpM #v<A 4ٖ) 3š(WDP8BPK7ZR* 2i{ssnH-5a ؓ!ސ`MЄAKࣃwbIxMxBr!0xF=xd 2h0 фX$I;?2?n(pD.B'؅ "H4Bbq8$y5mk7err<Dée8lV}oh.wͿ<iDg& p#P ) ЗaslZ ?˰@Hځ:JhILB܈΃HA U@ fΐ  GA-ƆPG/'N?Atp8$DQF1N9)CȄnl0}hElS*ØL:yжax 7<#2Λ6ܨpmT&>n{ flR{6t jJD,džaC9QK`ϭr(|t+ GࣃB>T>)<KI"=xۖK#׿̋"\/Ar`—GO R5 zT ,:$ е$I&Ҵ+HiI)C^+Ǚ9K#0- 44?ƄtstzNSHsC2o fҪa3\  &l.)+iA7oQw㭓P{'"xF;d =8Og0twg[@_\ /QA"/wd5a(CǑAC@ Їk4NkC$H!0@ӟYh5B3J`?ӑ/ᏻ3-,NUՁHfRHAlv4w@8ot SWys9XӠ&uw&"nN2!Q3A! ! xOىB}*Dt3ɣBn!PU?a!O=A z4%(g)Fm ̉ +`GQ4dz!a(ݗɘ07D 0KLH@!OCO3Ƿ|V[!'rW܇"PUOm͐ ǃ1!GnSiUw$ZU]݈ɪD8ΑoASgIDAT?>2 e&4922. ?F`g_L$BaHas%,K0D{ qëƄ@Aк(8ʳwE- ^A=HP\@>4Cnt $BAĞ0?L pMo&nY  Π)D8!Ҩ=>>:(%I/.x!y9^.Bn4V!XvO G= iTB((1'.8!yQy)!_~h@SX"% +t¸0`^HPTpcS4at"^|Mx1<?>gFGZ.d q2/z A/ADE`(y)*rje8*$|_b"gi|?_{Ѽ+ƄNkMr$_|e8M)D$+RXQalLKB$n ;qUx^T&wأ3IBM"!$R!Hy[ 2i eZDG? *D߂O:}mi"B0g؍r09S>F_HޡPcZZ揦J1p ԛ TT'/O@`+NzOa|TQ"<媰T ^2p2a Є#8ċF#? CD5|)ք@_f0 =!>w 7heTQw'I"b %L&Hಆ@ Ë@\kMd"D CFEwrQ(*IHp>R2yk8vCp\B|_OS.]AC&CDz3A2!| ZQlzN ;Ar@xWd>g\xQ@$% Ci8&ie8a0I0&5KF Lr&0J#!wVޣ,&b\g201~! H+wb"X.RĞf'2%r Sl\2Cd/૰ b=)#x s$xʊ2f}B,x$}tC^|"y(0*aDҨCHO()pb :vGМbxO,:*}4B_j|%~4XR{g^BgeQ*C5B`4$Ǜ!!yѠpx!Q G@ zR!}P&0tˠsv!ܐRMh ʰ;FՀƄa$f\&Sk)Xq đ/?>ͨcw) بW$Ff~jivvɤ0K+yd {ny7v A`^>$yw?p "/ȣD`Gń/ `g1I>@6TY #LuW2˚P  3;JvEB̘_EH$ p(|Z4l@arz^R:6 6dIG 4?=և7]w[v1`H.$1yFT\8B8^|6r"xqD-zZ*sjύIʰpH2 B }%a037{=,:?d2cjZ諈CAEvj|_z=P8M& Q1Z ̤ysAņ:ԁ75$ e(.T O / "E/ =$21Qz∺0£0"#/F‘9t|┆.p' "HJ(FAR *HtMEuLv%Fl_3I0yٯw6o=3K#(j>j4.Jq>n}FJ4[6)lyA {&+Cv!{}\AP .$A4RLxe o$PU$X>g (T>7>0քUQ!ABϺߟ٤ecB<c**z̄E)h<.(-o`K{B_RL/nD"j0x.`A!MD.OGOUvVb*y =F)ܙqD:wfqT[3^YR€M4?\ȭRHDk >9-7m/_4J"D *AƨICؖB\`h .ݨV/4`XaUf!mp 47AH؛0F"[Ƈ;ntua'0„Y"EHKU VTl'+|{".@]\RJ&4 IJ\ $pTI\5hڣ6fo1m ?1ys 2X_,KR5F%*"Żpj.@G&T_1~!1'*@^  _AL-0{_GO&FK8 7& 2?ȣ M›@&J71tQMHY^La9s>;5{F5/f7jB/~^a7J9|/2tH|4VSN.)C_֛e=Pz[3IM:J8]`aHm\Mҟq@ `O &lM9B=XYހx$:}Tf/QG>F]Eb❾Viw4(X,H$%)y|* (OܗqHd2OPrᦰ ;Rl0wl) -{xm KJ`ZGń4@Ra%~pˆp6=BáQDŽOCpuj`ЂhvZwC۝z_Nc1}18bd$\OhPgIENDB`hugo-0.131.0/docs/static/images/blog/hugo-28-poster.png000066400000000000000000003440301465312036400224460ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE`RE[WEJfbOLkgT)5o I|T{Z|u-?~r#]wȁ;Vh[3IH'}?q_z._0J]:Twzc<oıJe: | NxQnP}*|ߝLgϫtdQhxXvi/^o` %9^o4iD ݬ`?mAM{]uhŸn۶f>g X|=LcS\zuguh%_ܿpy`Ý HWWWd28MgÇiB`YN9k=~ ?uFϕ?UVG5A?Ik L|=Vlh3j3lx!;kelTv v4dK3 E&1f+W[A8ǀ[ (@Pk7EwWh|.aZd|2ZL]v,X]>sGx~3['&y~A0eZ^H?T3;!>e4jg' г@0|~>柇%rj!F(Y8[Ys"P)A>!LIJ BĨJσ×F<5B#N }'V.+d"z>#_\҄-K'@Tjq@`X|@[ͦ? ?P-!i3[ 9Xeb8b{\Ks j5C0jCGa%<BLiY.дs1\tuq`A7JV.FY^WUGq?ÏZyf YBR M/vj 4`#~7.PSPPH d(d˳qO+MZZ¶b=D̆ <8u?d@8MIKlصV?txFghLJϿŮ!lrV%!>| zt7_i@Cg) H s%An]OQe $KhE3>i'7qU7d(0H)UMX0tU7%0NQži b e) kD* I&ti0k7 _M+=^~l'ApEtг?TEwGK&K[\~Q4PEg '3M 6a noٙZm.W#ڦ?ÂhqKFO d 9iN#XJWxf=.ķ`#ޡD8^}Ũ;_[bO{_a \uEa]yxIB"lbn|%*"qO^fqO11 KD [V&X˳k G X:0,F ggm[A2pWbBvcnJz*)2$<5ԠR,af pB@'M\f]~S|Qj  lbkx B

        7/܉|o!+ក=ZF5G!(x@Pj ,) -a%*§[<2|LA a-> >~<7&Pro3FKNb* 4,RI=Lr-; EgJk5ߒR2GG[QeakJ\f ,un Tdd!Ą!y|gk[) hF`+9o$f˯Nlܹpm /&U'pAiy@`qgTw{//,\ A.M!\a+HAL<M yfY>턺g*5M϶@pֻF/S'Io1Cj(6 r|? %t#K및qr3N[| `Zk[! "JD_@\)sJZθ6٫1~^"'aFSB!~Sggҵˆ?Xd ϟa%4 rU9?ʕ hEZNCw9\ϳ#[fe9zQ.%֢"y _B; $|nM^BR^PlqrWN!Цhm`x]ܓz2K=*mg\vj f.ѭB<:cc6;>P +Շ^o9)0%4N Btq;i} h dsM+\VHYd"A$K ^W%0_"K+Ʊ6S[!`+1 h%KWld6b}L\ I7l 00ELG ,sggΏh|-1J`Vǀ~ 9pYj+e4Jgi nAQ"α_xWH:.""RU%5r(:1yNUј% |[Ie3wt|YKf%&O A wyh1Z\TK/c4 wQo:zk~ p )dWā9,!nHޖ.\`ia' L2xNhݗMN󬤜ɒEh5ֱcIK3J\#:9=C2N`=#ݔ(4t}*0P+]9`5R'+?1nCvn k67,8 dBVnx^6'Pa % 97vG2 *dJmf^:IEWMa7Y < umGlpAvYFx 1ne=;-xgì|'&DJv Bb˫Eg嚶nԛ%T(`?$$tƣ1!KF=d@ (c(cr$b~PٳxYKs1kku Wɢ--jcQϋ%hx"'NpCi!VG2BL;~dAtG#*_qMN'AhLD6ˎy@E|n.\ы Y:bXs^fsJ 'Kz1=jҝ,; 2h+ܯ4{#B"(D+p˭,+9BVm₽r!5xBN_\g.(^nΖT"7Pרt/CD NԽBnS ( &14{\.Wǟ!fB,EZ~ޏ^L2 , mj`=tr% (̶m}|W(v`Wé0Jpp5ev!}M)Q9Oq 8%*%+R ~)(wE@ ˲w "LҒT^,90>k#nlah:ukh/h l-`oX'rjۣ3^]\B;bs$z );)BҸVǰ>Pa\, %QtHncǻ aMiYC]nqC lI$J+1d??OUl21b֫Ttz8|M<թ+Eb'ZhfMD,sS'l 4& Ki򭦨㿸CYHKmam+G es-A +]%IPB!&b'B|`tIigkL5WjVˏFJTHYN16g V63KMfFeN4F-1a OzQiQic&;V^W2fx0wPte1Ԓlb5tT+RM)f _@a5J ykaa} ^,uqVM㌔j'id09dW*0m|ЌÎ\:|@2Y- 5"bI@L(?> Tk*p+v3?ENU+ڸqxSH̉Qfǭ< m[5t܂QdNS‘ C8'K !gW#V BYeoTšV ݃Br;~nxU=+Ck*Fu2OL~۬lE!{uv5'Ef' !@l\iel1޵Zڭtp1Gҕko qb OܔgZ^_Y i,jqȞf\*lo]Y],kh z~^Lop*&]#@I ^}'ȓO@d=7@.U3r+Y!n-BSX@W9oHVzm:NT<6Ϊꭘ d]ԖZ&J%l K'>,T~N.cXTeYB_UQOG`lqHHjh"Wz#ڰ< ۞g[NvŜZ=4Ȝ{2SFY]˞i l^RW" %rKAƘ˹lRv+ !f0LjL< Ku%BiZJe:W/Ց M=% 5Qy/fW$-b]JrU C*u%ApGluH_R,磲R`;y+O(TɜʬN.2YgV2l}ܲ^uᇳ,}w!StSFFYBW󒋋: B)ġ*ôRB1DAy*$ПWFdF(Y ;33RP{h풆9!~+ aw4KSi +15P@QjJ /?\O'=&`:[gGGîXٕJx[É1*;RȉJ 'X_&y-­zx<,+u e6s'*43, :I'QhWDzO7p KHXsшy̛Di9"`p{wڷr]O8 he}w3eU r?Ӎ,d l\/!1!Z)bo1ܵhu %}ޝ9M r] oJ]:r"Ur^>ߌWғ NMm!YĄ,bJCZr6D0oq2%q^/׺.3ǕUW|5-k<æuU +0Bn@=Wԏi*y'q6 Y; +czLDY266P΅XpGn0SDAUW۱!<KZi BlF]҅ p?^1YΕ(^wB+ IDATfm7p0[?Tޔz~=ȺbqAivPخye fd8sUo 7<A ޹߰+%Ul#dU@RiD9IZg75)sf_uLory A\|lԬ3WVS]CZ֫ ùt4KBIڙvyrs8ꯠ<(*&{Zv}GH.9%4RL?W@2EU07H_eW+[0 lInB @p b :Z0LcZwT$O!-VbX}'̵ҕ n^󊸵,);ǭ@GZn[/URƚm4Ǩ(_2E2qS/s\H` Aist5dV; P Sߌ yÍ gBCwV ļ 1!`fP<O FՍyAa i}D3?MSIL/ fWg'1w7NBpQ Ii Eٹ^ ^ű>nﶄ* /Y\eǤ1,+3FfLa,l*tjfJUlnl ̔ͭPҳVm:^]=h!^oTybEUjRbZTryz_j+"A rԝǶHft#>>Bb{n)* &L;:-$D!ńW Ҵ@zF!:,a!QM@тYDl{b{ݹJJ(繻t{[9ʁЦ crS@XK .J]]+B2T0;*Ah|%*z8LyO||_c/r=J绎4BE$ *DN|uwo8tMUm6eu\|cfkU9<\ݎ:1]>Gl!Wӹ/nѴ4Vl5q1;H @RR3z@}  lo#x3ZZ&Taj$Tp+ J(F%5IC(ᑒ=Tw癜׏a;zb"|orGw^TU<6}_`:'\jL]#"4@d*woja3&}=V-;>8t7 coևæ|;:ʻ-ͦ37P3I#0*yc%Q +Y8DJKvIHq|̡z)z /ouQ>GOf媽:x(EOP(EA+w?8lﱂxH$ jWVAC^fnRMTh";i"(~o歈VahmU("[̹ٹ%}b w-K}2LX#vΏwm)Y{ywL4%љR5[w[+daJFI`NOm-B+~0Rr^5|09sc;*'."R;3! ꦐz%Bٸ bwPRJj%X{N}Q ԩ8,;uƌ۫[+>A Û nsG{PM8JYҝȰ1'!UJdڛΣ*g"5N-Y)uq5fAgÉFoz j?68p; 6lLwNAlK@xk*x~ "YMa,Lש&<늻|+ K[p=z>kAt*OrYv\6θ4_nGLj<$yZۧzuBK)+`Q3L3\kUw밾m7IDY1ɡr/b*[ q#E-^3͌qdMݛMg;o |7G۲LLF4Z%s zزeGNh:=ʍF;Lf k`bɟﯺ6h#}:뺻N#ZkGG |hMSsb[ur N}yNEi.:a"(sG +t˻s_ѣfsK vqeʲ9#,YN]`O~eOV1OyxHUO ؝"VĄ5\ן9em8(*kjb  AuA]vUcN81N6WXo0X:Z0J%__0\Xc|p~dzx;5o;[ gWG@6&fA$XPUnNV2X[m1 nȹH8gÚ|ꮩ9gT<~5jz:G n8PZ4yk4ן%ֻm?t.!(uC9% L~]T/xNNOwcSyMl^:\\;)?i'hXܟɉi9 '2!d4°eִ~6f4L UlVTb).$Ud9/-~^qux,aov5Fk3GIaZ}?:z[}+QL9nn~ɏ}\JP Zt9Rle-ݷ Y9ti*2j"-^j; d]9̛BGmgD5]/NO4dZQ8.o/~ƐP$ )UK8K{#ˡ5ѫ#upeh2B)CiNkEWpGS/2W= 3ive!4;trq";f(;!x>ylJ m& e4T޸OjxlN0tuC_ztR‡oTb w,*rU7آV) L=Gg%$9͂F6Xj4VAQ/&RQožEdEumTi?qe8.VY `}UQ'}Ck H0PdAl QiCX%|VSз|Ff?G &?̋l-Nʵ`Nd;l:Oi S!AȧA@5fVhe af(R9ٽ'L\drvS![yYLWAXkBP ډ $&f $oq9A(F&[LF#p)a7c ͜QG*۫.Q[N&riȶwQ.-r=?KⶴJYRɯlm:cJ$!rp*sN=Q+J&(iv-E nZB>?_̧C0(;&HBvAHʖzՕr^aSV #G:{6TCp,5ULr^? G}FݓR>#|NwQDJl BgXBE0Sw{4Jd F$rRG!- h+aAVg`iUMJJV5va='7̃ k}V7JZU*IT/ rrrq(889.5 ~,Te? q)PyngQZNB̩:|Mr^? 18~[('GBxV EXNYr~72.SltfjLNq MD2m9e-^prhwjRis+z|7*RxʄZ kz12I` 0ߥlKU/Ah^7Yd=XAEB ;7tS5aVƊo_aӖ0%*2:!6$Kʁp(4+Įr@KW^jG67ыEwS) ;\ZˏJjƢ PY2t0k ި*bY2_g  /a!)dN W!xAx¬8""Y)D/ $z)l 2V]k75a[î IDATZRP`*^A΋~Ԃ L%F8/JovQ҈^zvP*]kjaaQrT(췤e{y,>97JUAKd%S37 ŋ;WۜQX4Kvr"Qa 7"%!P@b:8:w*kNr>yH/LPr^fFzWfGԺE*;m;Zui'L~f1ΝAQ6_/.mx]3Wi Mf~.nwYJg'-+NJް(D6#c=#C;r/M >_Q`wӔsqIcu+ 4uBF9, tDB Bp0IMt0#=焇UPfsH¼4scn!l)Di-{KF % EBX5e.?_]}-O,B#hL$Tz2b tN"-V'K5;-G1{'i5?1HL'bv}h<08H& 4~v? (!X) qd8@b{AhTaDe q azMϽȇl$#BzLv;@xn72A+{^n\fs $5/_'wBxlƌPhRl|C2Cr:Rh3ݚ#1&hQD:XЦ)P+GU<jz NS,T2$__W/Pa00Ę)9l#~,&^M*UI6Qѳd!ߧ] 6Q&9¼CKsN,]W)5w܆߬RgXDF @i'IGƞeYZe++Zxv9Ʈ.$Y6m @uDtT{nAu*K| ZB6aR%r*x]PY0 hn# $aixYO8˟_&te/u9KxýEV(coSnKm=[ dI 4wM   WçoZ}ܒ0HxZGkGC묬MPyZ\VcY"wB}D<y=e @biԪ dUr^H{1~omM*a쬬Mg>c5Zvs_H8qGy'U>"PWM<3ema [UBHsRfm ughW g}io\5rNOB?*tmYN ԷiCEFΪ " 9>31^MW/>_n1i\gzK,q91qgE 1 :cBESR'1DVEBi',1۲B](XƌIqYDŽ% Tf-#8ޢf)3=F4W p.Zro+7%R譚8z0En;RZH|pJr AMy]wk noc0PHʆHZKXn!VtlUGUx^n֔TqG7QG0ͱv+  nq ?\Xڝ e <ԃ>39ϻ>%o>3P>Z.ﷹɩBVys͛jqbη4N*jyROnQ*Cy9(I*aGX0,($A^CW*=GY^ St%B)__m i);ʄ2QLᆳYBG)?EbSFп䝉Ng8D?1TaTD&p^faPb(\LzOgۼ}2wuUIA7\ôT.qGIURS+a)!Ҹ%0?z\2ylf88rIQnN@VRJyIc<o E~efT0A@ݝ/?c8/Yɿ0 #+iIm+DJn.\}瀿{3ow뻿M9WsC+A?0) 6vo H4hM~ٺi]ߩebDtRp(*̂Yz}#s Q9FpzF= P^='FYb< ]GPxTaJe@UB.ȩ'q-~"쫫eH )uouӺ7gy rQRiل?Q=7 W&sfϷ1Zo$w+ƖJ땷KYI"HtTWK(g9 !0ij TVeBHp]>Oa23;w:̮QcCZ~]tf]c~ҳv+}ub{!5(,|)4\E&2o Og5ɣ:c0Tl̃+ D|ERr01a^`_6 :M4TIs}eR9FkH%8p)QH9YJH ~o 8 ` ѩt(Ҽ5꫸jLX䯃ll9B&t3^:k?XX SxꎞH2o+zGYf(]Ը%<`*x~΃$*WJ#l LߡuP0ܡupi+xE@qE Tm0*^)3*LsШy/!22eO'1n瀞fN$|Ŏ~wY/&08Ijvm@u$ 'm{O(F~8n  6 uQ(ġrENu{8UB>haݜX; cKyə+ Ds41? ;J-قVze>Тo;oLIk3(;RJݹ1xb6p]pGDt`]4;QJ^2[w1yKrd2[(BE!'7XYmE "w6jp6Cķ͝M'BSt*S椌:#u֫1.,[ B>{m z6b4 [~},SHFzGM֛j rm"Χ9&F[n?=>F8ȹkm-7ltpg r2Jdb5m2/6'Yo5ZBmxb&KN;g(ĥ#E酔Ǥc'$2IS2H hPWaPz3!tKIJl%/V"#Kë~r{Cg@ |s_ByzA1b2CL < zlhq'l(5 &}6Fw1@`d#kک$s)xӯ_ٴ NdiA=ttʎ 1&O=~ªl2aia..@t"UQ{plM{;z|+1_<ٹ2&@V){C$U_!Ci\FTCaH1w+{BpC2,w6XNc(]ݟ D㔒kZEuUB1X~tbAH P:)7f HUn̜pxPK(M!lH,E ͡"e)O'  tB';@>p !?@Km~Oi4<>xLSЌgɱS()u!oX!J1l_'Q" C;z)ru5 Z-g_A1sYټp@Lx \:b5k?êmA|{NAPC갛-G!{Y}ߊB L͟ oxZۯnRU|XIOIl|Iu*U7 *)6QrkY8\ "FIA(t4DL'Oﴦ1a$:{TMi[ ߩ3>;|. Bk5W#sz1Oy7XfGi~|!UU=fduo'uXJSInׄda/>Os0fQ$Vm,m 8%n /:I1o;7ۿfhFmE'I{dE2;Jqߟ9(ռP7n3jrEm <ޑ95vw[vœ%jB+/j_@X{|5 Vqs|wOp: hoM| {Cکm߿o|ۺ[y44j,$?ȣ C؀~i=/Gj^i&s6Drf;zv}ɳc,"O#pʘ[18Η1-߀(.lқ8 Kxrr(̍8ʧ/Ԍ(G~R%=n@.?j/aѿzUB~vٝ7`ޭW?cH9 U0֝xs{+l R]Wx(8-6eķx||ۊb"Z٠7[6N%{5ֶ n^< L$w2K{j>3CE颛YU~/l`޵ux~-凟صz&csOzUs0yO$2 IU ډLuX*r9jB\ %dOH6,lNEJ qLa<0tZd ( Q| dڮfl08"11(2u/_ 4Ƀ|%Wfu (l.Fzi8 5=ʗ/Wfm}jie]}--8Cp6_q+ pGo[)%&#W+%sRKRƉWUNSL~HfA Q)O6x99ʖiLf EQPU0XٗWl8^c(!-d]:MNd:M+Z/OOM/pt~ O?)&Pc|}6ٓG%; r8щۄwW*=fWrn& vzB ;8L[M4Y[@Qxji|z1Ʋ "", sdM-!(bP/L0NHLQ'?v +(.?o>ׯXxG.z Wox`}rojϘ;4.$_1E /A: ` ~oԛ-5oқ&̓?)qTGGt:%fo܌a)afZ9DLhZLlى\Jζ62ቜuX0:bEvaN^ʅ ģ_߽k|dz~;~ '{1u;0|T(Yo0&*ww۞A(ՉX0C]gK2.,nF{ɬ4kb IDAT5\^˺~ ☯k4*\$G)WaڿPk~037]։%JG 4*풔V:Ue,w&y\wI ؛ Ew3'liR0 (4;#[셼(~ [糴M (|қ1]|^LKp1q{K#x|Ybvo5)1t;/Z>~gN$wr]nm4x}N eqoÇ}%#:<6 ~0IT2V"8i*[4+_~[L:3_]a] dő+ qP:NJLUHYŁćBS{b]hПXtKu}f 2!SoG{z\-83׿(ZJ n4V35qvy Hw9]}MƄO:~ETC/oq<643xC.Al))yTTI1 hU8`7G;iN.'\[A fGc@-2̏Tf eC6yy'e_Fw|5wsKȆ0~;,lԀ h|&@xy}q~="o+᷃p@[fZz]_~:5pv49P6Z,qr9Xz;%~wqpVY:dҘorwi'iCG`(Q&?Xr9 Y BjIQ,#klĄŮbaŰMTt= ,d}gQʘd2+{;a]уow-.+iu&-h"/i !Z'/ ?oh(9Q $8@H ՙ@(!E=jҴPPIJF8S^Q ȍ(dpA7\!NtZϳTUWW|Z{zGZWScB)ڣOhY{ߐI,A_:M2w ,%2KSz!Ket-^CU~0 ($?a94D05SX /r|ez}vLС!$HUz1= 5azxU%Wx~q?O?H~?Oqͅ…\.HOI<σ" cCU'PT*ё-P.e.׊Nor-At5gpSB}ϤÇf&\ꎣ30,yTɣty)g?!?eڠ%}ǖ3Md gcٖ:Ԥ~Z ~ "ݭf*=xh؊CF\6Ys k Қ[c5[K_å87G@OO_O)G;ɥG\!f=WHj@a\l<׿/W,$*<}"PƯ1% -maNpRG M[^6B+VN֏ pO> (YY%n݈߫zM^`Gv'b+x1r]r]k[s+js.VgoI.S `m흲#B>}PpZz{C(Q 4`B"SJ_U"-^`mEE;#u[QГĘMWI"z֪v^PU ԇ'L+ !yl]U7 hU Dmyyo4&"QCf* EL-!QZMp-f/'q+J#X>],'pٻa(#,J7Q];..Fj ܁ʹ=AbP/:#b=*5§Írr`"$Iq'J)B{ b;rx8298|qtQ vk<- m˕?JeA#PȯtV#F11EGvk1]bB?î;]~o;ҝZ˝aF}ȷ;ؗI|aa~{3/a=ʣ,JNk6 !URŬ2κtb5ƉRNa-k:0DC@pSL Y 3by"t0zb+pû@H]Z])TkF{$dE_b~Yx@t~Ǐ|$|Fpv~S(Gp:1U(79W"HnB4`sK)RlF|w'9וTr0v2; ?3pL@pv,^QG|/ܚdvycɳu=d5\|wd ~dH!!CH1&9"ī3(CzKcy99SM.Ѵ6AB(kITB(إBG002D,1l`++UO4o).*.%ŭ#^ڥR$ ¿b㷳yMKQDG:]u4$h<^Ю MMN%sBI E`ւaBuOo)4)Гሪ 7SBv^g B@t,zL=zGmr ߣP%f7Z&n+ Db'fYvٝ;|Q8#RMHs^vői4nP7Yу +\MłrM.rA'$ȇb!2 ts^N~{QXZsJGp<&J$Sy3D |<2猭Wr)@ 8G%!>v"݋.6 TY,ht`@@k1]dI-dBp-)N%3LNfwo}`U(bk{QRuc֨:2dB'HnP ]ֶ:؏< DӁ .OD f\m WbnZZZ: Ll gffq9|MqEvx81~Ͷ`\Hҡa׌ L76Bl%85ȥP 3BffffJ~',^Mbsf I. h2Bԓ+t3Sm#';S>C= ;of|@ɮc6׮~ q;YYYlp#K.=| C!4cBpvg4?VN1̳d8JQ7* XٺN(p!G!+a B1 Piy??}Z/g7Ėx& J]Mb]vo#D~x}}Võ( geB4ѥF.ޠns6\ s-l:ť L}f 3 \H !x\b'%, 4+/jkC;(_ߞsȈ0wڜ6vR0b_` P?0f3+Hcς)7*|F.]p~@e7%%J")H' KL&-ǶX{҈Fj‘*GBV2OB B#BHOBb9PGG "0.;%Fٰ>'|Eom dZcAXU։`wESPy{lRc`>~\m4)|:*@ƛ>ŏ:^B#*)5,>aJ;MmQ씟m@P8zpRC,-g 3BGhj\W*Ud5o+SFPNn7mBrZK/*8և6yGҩf+~΢cB]c[>A; Fp~ի(d%9z||:M'+BTp'Oj8SuSPtC}B#Kvi=uqvvDyyyz2BIO5=ha۳`2A7ky&EpM3 {]a:ԙ<:iCigcF6u3De[mA`=oؼ9M->'vK (6/woLJD,8E(,^TGPGpT(SV=8ĘF|onI.w``)!tɷ9ϧ+JQ;Ϻv/Oƻ38cMER~RlfV7|񤟵ieK0$;QBB 1rgFxsf\]|q7:-}D3m_VKxxE zb&ڃ t(^򘈯f[BР2?8O'/!> BV(` ɘݫVwDVz%; $bnCFnU7!UL ('p!4%leNl~Gf_ѓ dNCiB%dBcᛧVnOJa^6-bU@:cj< hX}nީM6!9ȤC.xD_d#@`1#*#/BУ76GM4@1| Ш%g} ?\;28:z[1XF=Bj/hځB!tFvH(2϶mG nk׷efw, |o~oz]EK;¶H,efT<{~^=(a +qv\Y(e'&@8Bk1D"\9&O(nmeC ,t l(Лk6\ZTAFsɓJR ޼E Bp"< SD-v@!V0m~UIb?3Z7o4A*ּyVs&7D8BsL.b)6u=8T&'D`t\(hPDU֤8-tcpDF>}K6PԒ s½o NV#mRYzYob)!u 斦(}^D$K8>n' Z5_ҧTB3UBY asRA.O f+bvG'Ic1 B!' ۑ-G&^xF@ +Tb=;G&Y# !@h ZۅZĕ [|*|<J>Hxh(\E _"9}^FO6O1p8WՁ@ t.0A ɣdF)k `>v˴ 0 IDATBH]j`}~3څl8݈ħB0Mvh;!4ўWn~B%Z e)ٲ@:I#Jpڷ $(8Q08.!A +‡33*F#Q0Gx(أ46UBlqT(-6o"Ʈco)ӱnv |Jh 2zr9r {K6Y[ fV.˚(y@Cts gloRU,Ҽyeu%7:JSf(OT.'L|6sV3^څ2 ,m"L|:^/|N!*JȻ-jIC7-Vuy/ޔB(~K'll $jxm,~_> "eҋz1oĦ5 qΞfnE)+RG6%3-^?- 'V͛u&G^w~Br"ŧQVa`GrydhV ux1~A~}sFBxSnTn[7 A@V~AFÏb&|4QAȭQ0G'P%e/R:= ZٿOh@AނdQ:ia{gQ]f^TK!m/BhvCJ` J$оK5d=a^VՎ~>?B eII5ǠIvRzkPx< t>kœZ0 ӥ yO@h\Fأd8\e',A 9e$Bf XvBr@9 ᪃הn f Ll |28 %{ h&WklHt0J@vBUw z6=F68^bJ#FݘoxboVH{xޚAJuĄ{ QIvϡ9X(\L\ 7* nt7ꮠ*@hrp7s=9Q£,B_b)s@7z*tc9pΚ&?;ޤp H};TVb{c@JϤ8pE׉,Oi7;bPz[ddL2c4Dp<epk5 U7\ԫ[s5!>( 1 M>w0Ψo1)äjxr[pumΨ|B2_mUuiW/D[T/(rAk|Y,e-h88P٣c{B0f э( M Rf[J(d7OC̢y{h69&W|'y_!4B~ BoL|TP-͝iQ:C4uuF^Юn][0 O*pM@hJ>EmBV/BHr鶒xY!?^d]/p N|qo{عCSR$B7TUSCxJ-λ-v6P79Q<ė zh\J&R:l]a-I4%aƍHɫBɲm8K'\;vo~ SmRd{Xlr + '{/8}Ž##.4 )FEZ C>턿ˋzeɅ!*)#C(l4 8L!9(W@b>ܒ,.H2h7U>@>6 RUueב;]bذȅAq}&Z!!Q(; z`-cEqj 1tO\Tr>LNr]vźiEp (no03)%aĤ``P&,t >QÃJ#Qgp)s$Zih ^0SXZPZ_׋>Xa%I  C6wdʕ3NuN8t7&0L&e4ڈJ ۦ+(L#L AbD‰:D <@#|dzJa#2*z= Ӈq%݅ҡXh~[@Ԁ!lpRx){;zzTr&V\Cܣ Qh"79,RL#D)ؤqFߨ!A $p[LAdŇDŽR\qs%9WR?ktr&Cnm=d^er! )r䱎CoZ-> b ᇶ3Yˇ !1GK׷UI D8[77׭9J1Yk=& 3BTȔQXXfXAdph>F+hkFG , ӰB䞦Qom34̴٣rpB}82ڧ}JHLKk0}QjJ8X5SJeJ 8rM a%ukݥ@ |u"BY2 L*"PN0R,պ΃!}8z'ycBzI"e+TUe13g6>!kA^F2NHM6$g ~ו`19V|!s2.iI aACh}̀M&D ~h a #JfDϫd *sA ' B=cZ7L^v1G)D ;(VUcDCN@X .:+cەHJ`5 ڮ ?ǁi?xvĪA(Z&:<(V BGyD?S]j=k[ttpRx B 9:9 Zd֨ዎY:c2|(eP@8I0mBIiB8\ u7q(v+ UC<>3ǶW)bP <ܓŢ$*@0|V4$Pv݊ JY3}н\HUB%@xRuZzHKxnbơfx^!t5މ3/6T 78t2HQNQB=s(ae.43I S(w 4y;XټU­#-%kgH3FisQHqhgbN Mܲ@4qC T=a{Lr;ԦU(J=/c#u:pZVh2ګV[O%A`C;(!N'31 YŻQ0ȿA8dծ:8@xW(̜x<~ߌ_+<hN"AqW7_CrcʹOv,$ BqTh(?stCЍhƽu=fH Q v `!@uێb3r( 4AhuH^;eBB tzʦJRj9m%T) _tV5ʼ¶Yz<2NvkZ3 W 6麏1Pm$t:IBF> bxD3[D[WVDϾB2JH[psBVBł8m~>(x~rC1.S<peX(w[<1GoY(amrDSm{`a'm{M$Uns ʜU>A 1vXejY& I YzcG}8GGrvOq5QS(j$}X2%ܿ*…B[쑂0ZOHmOX>Ƚ4OZt627UB|%Rh(W*Abr%\:iZɴ& 7Gv3 v5185ރ$1B4%5)!~8m)" fmVzΪbvPa'ٜA1!I%y%H0G9Z+'jG|4;0ɴ Hay0*0tFDŽ:2H($/ϐ^Z!D5E 4y7kkW`ؗM6͌@ZϮ ʎ;7`wx*{G85G }9 H4fgK:؞GBY -Ҹn/Nԡs󲻍 .5nJҚBvBO8?Q~>+%$Fei!͛]yo׿]BT=ms`/32)rZ8;c_F+g "`l!jbV#nA/7! BK?.i:q5uak'4+^D"Bri,屸ZJ]^@2= jjϠIXmhFWupX0$Bj˿!w8Q=>UL$T^$@`#`?&Z!-'Z'A8KnTP !J=8@sREEtЯ0HZ2/.r#˫2ͥF'h. {h"p]^;YFQǴBʍF*%rH1E`A!pNy"_D?xٻG2樰Fy5IP-u}~zQ(F!,/L C|\ĦJB bu} !\?5Sr!|V[̇ ?ڧ~+JLV no۷+e"Kޞ];\q"> BH0,Cc4eh~0wt*4{\|ubfFy,|\ EɧS0a|cCc|2b:n&Mm> =B=@7dm(O>W8QIP>mQ(: |9 _(w"쒢`J( q7 !w`8bo%-J⠑EaVJ$W[+ݚ 0 ~ܶ3qر<΅&%C\&WheM4G &߼ IH||ISvB%< (wQOo//GDPǹZhn%9OPH|Bp'8`|(@_TU N_Y=ڤ*_?POU(@Upf5~ek&yx t T*5Ⱦyw<+y탕h|l6^p]HISȁHD!64F*Y{5(OQP~+1(oA \1.{Kj<ډY Q#?(a mT2_@8ܜ!&#c:r;-v?uzЀr9oϠ(R. +t}NɭCxtZswO5fv@kA .s}>pV0X :llJg][ wk84E(wbo&fzR!}B"Q av7/6˿c6T`H})_ܝ8aұ*sT|{#қ\HXio$-+K _Y^^xpH$Yל 1=64iet`(ߘ _ur&sBvxBHstRĊww hZiBI '.kT O@'t B[a bv3׷%lSF>!D'e\пvyyhde,lp*B !MG!;Gy=7n<,2mF1>g_E 8䘉<@ߦZL1ɵC 9nGBV4OoF؈׀:<|})=)ᛣ]8Ε3Oqw>1<%Kooo+]E Bo @7}W+'yr%!+mdkNLF!h5`s a?~`ߜv J y4UJ~۠6LӥVJy>60w~P}bYS IDAT2+B3X r4)f̬%LݝsJyb8ǫ~ҖT0h; Rݼ.unnͬ" ^!pAh?!1?H!1!pRUr`.@s"e&SC51F;vGf^JvĆ֯"B!|SI!O6DztP ֐-l֧> e*BG [uTyp8A)3opOSfO~)~UzmQ' KCY60jD{2!y^ ꌴ6zsB eP #O9Lw ?#y کu}VN>FNoKnJi d\mp z >;Ћ$Xc&&u<@h"DQanisfXX)䡌bA9:6G©x(aV<oxkL&$!,4Ȥ>E%49L ~fR6y])Wr7SNއC(TJ"#4C}38QFs YZK]8Nmџ*6~)γ2̦d wwbLPHه`}!U\qG~B80{Yxl v=6B NЉ&'+ H!p|ft=I tiK[J~qzr[Yq[wvA._ߞny[SFyfN[͆VCvZo}XttRɈǃ HVX5B%. |(b%2C_ᦈP vlbbÇnq{E 1&٣]z5GB -ݜb}iq R(7;I ) cFJy0Y!AN씕<65=:HSCH\A6yJ+Zpxt5q"k.Q +M){/[~Jw;I@t,8|B^ !(epNQڤ<~3'O MӀ*b@ƑAٗY (LѼyIP\&?B%AsPYRHtPOG!>jAON NLOo9,^ i~"'lpÑM%JqsZaW-E ǕJ5A.5Pˤ5.#*z}BB0GohPr: NbA j/-B b"@ -ѧ*ܧ{5s "pT&BRќiV+"3E\Gs h2@v2G>d,^B T**@ cȫ!F+tG>& 5@p*XXQ΋9 V1ڪ(9>-BH!~|N؇~C#$I ?ʅC#?@ ](:_psBp*ı=i3G_ACH; h)76Rxb a(a>q6Hr!4[6f;Νy0)FU' etޠzjpԮcaX4px1!9O;ߟ{=w{ &ZP}\W9]j;8F!YџF35J%gP2 'B ɕBAsqΣFe*3xjeьe;O$~5-9 A;WBUB0G&@3X.ět"BChm7!0x1Jjd{+C@A G KE# Bh Ӱ;pzaOHìj;A??pA;>o$%Ai2xZ{FGQs-PBo\>Kxje+N!MI_p|++=0aRЎB ƒ  `b p_^,v{TU૴%>W{J!_29IJݫV9aH Npd BB }; AP0%*_Q:Op0vFw;Bh& BcD]BBZLT*.$d>tC٣@< p!l4R|lQŲh8(?VE)LRLnuS(^tTB*BH|BpXnf͇Y^ZC3ґ I/ e;@8ܮjYp!O/Q&o}- =6=8jfV1GAg9#٭*`pȡLѪ~oq:?M2 *&9ZryA()'ij=ќ f -Z!4DfC D)/!&:0W>].F>5KF^.$i' 4yұfom.W)9 P$ $nڗm a䝄JF]` VP{;-6r_5hL g 7d*K_`Ij%"cy[N}'A;=^bQ-U=( iy[t:XYRb8#q)0cRFD!`Bٿ~!*H[`RȻUё*'x*b0a!@8"\E$1Gw@^xlQJW\.=Cg# 9Z8C/]SMH9?'{bQ:=j&I ai /L7pl=P7lIh +τU Q ەy&?vG䰇( o!w|]C2)L\w5aT RŠTh+7[a) l !$a a4WyQTBhUL{nru{[(J;'o`( D\C9 Zjc+BE]p!Sp+CA3,UcK˸"SZ sE[hfS,RI(qae!S4ͤ-gڭVnBnB5WDB3|#1|*<<?!L Ji@kK;(mODz bu>ip{[.4]?=5A?gfvCBBx@Qb)S9 !ڣa'l.Y@B  d^ -30ĩНVˤa]cq93P ͨPBPomv T|B./s-z1Gh:-dhӏ%L@ێVFuoB;BӺ""PBP;"ڢ E!Ҁ1}B"ܝF%KC6)BHPV͡z0w}8f3$hs k 4T ZD:bN/z_:JV(Wq8Qb8HBf6LZܹuR$BsCqsZSmw 5!?Gq'曟*E }Ɏ / G*&֤BrB8.B xhVBb})PB74( g6X`ƟUr !:.I6(!iK[;ᣩ45|DhN{Oǵ-1`p37&T ic6!$x/T~&tuo(蝕hg-)ݧA֬^\$ 3Ju3@t# a*Fr]NH(m&x+.)QlhzX4. ˓Ahadjb:." N x-wTa}oUG8+wQ J  ı IJh4:O0^!o8 %ao yg3QH$^Ѵy+R`a8 L J}al42sTAQ}P!U`BȠ %9s*КRP ‘G!|?KZ4to]eYF"ghy>'h` T(ڬҩWVYm(d|84IJTn+Ơx^dpK3`꧷C fHJR8zBqe;tpbZk˻hAx BAL IDAT0m z=#!w e,JبUdCB01'0U,c{5ܑ<$1' [R G}>c_PRPO4ځ)6`",)arcJh.Jϧ'ñP>nтB;*?"b!Z(B>hH2OJ(Bcw@px] )c|'NQ)>4<.#A8 đ/&@8f+Y Q K77bxN/=f οP{T-/cB~b2ku١S8:ςaI w űL#J 'OO!E%]b }* \bjJ C*D 'p%26l*mLPF?qL( $DZH!,U䝂!mtMPGzuAB%DfmrJBh ³J93531%:AC0%To770y:]P cx:bk${tio ݹF!Mda`p0a0Odym=/)T)!M`{1"ωhK/kK}'xtT90&MS2<_V‘N'lfWbK@"ml%^D 7bHf3F'Ƿ9ʂ|oMh!lւ6sjh]߿0}!g7P!F U\ Oc0mo9)O(,%J(w&x?Bp2sss7 '!2/sT#Qe>ȯfqQ@qL(C5"S| !XC)~UJJ|> BCi?.±})T/| *šҮaH9!_xiQ G\ B/JM5j=(NAFL񞇯̠!0Yq%\Ta@ދ[{!䮅it  ?  r!E%'(jQyTYrh۰&B'hXZ=?!gߩ}Biu0B0^[Ƥ,Ye<ЖiD)TBGGL ]#kT)^i}NAH©U6'tQ?B.;Zp-ӳ"Bp9 gt*1T*HG%|`F!I>kGPȪH! :#B5Hҩ&DG$j++p0/ (4`=V]~AxπgC@k~W@[IkЊUm%QcT*v(IG3zz/O,SB!9>(~(1;MusB@X_WVugُߛpH ᯟ ߿kaJ8ws-xJG&U,EWBzљo3;'i׺rDrq 1//#U~xZ,B1:=BA!;*aN"/> ʹG;$H(ˠjyuWuV8A'iՕCBa kD dZ0d4G ?aQQ [` ʰfs4XR(nP(!d4[_s#ᵾABK}ׯA@M(s7L.=@h\"~126w+X0.=P |/^b{T!G k: {HՐ-S.6= ݅K!:|(>VQ cT3&JRzgyy 2o w#;lT\Y*G~A(PD"^xpxj@ZIf#;/P0c+bBm*YJ(3H+4g}α >9ޟ]kytlR 0^`=ڔ_`DGB3:1;jQ J.i(L"D[x~%BԶxOKsK?O1>2 ߾{7k _e%2l\o9N%$ )I2vNZαWh~Ms'on]  Ze#RB*-Sz/3)<^%\v%/ _LV*QB06Lҩ$n艷6;>?ZX Տ `AK O [~na/χ>InMz}'jܹ@|oh/! @1w} Q?L{{l̉!Rvf)[+lqx^P`G#طb?b=VJخ65 ̄(p2+qR {%O:bx"dVic@#.vGQ42¨\64@>+mMyGW:}ݷ?~  ?~N RBeifW<|'B W|1>r 9L@nNH?]JHRx\η01(?+BӅpW0 4ºc!l;NNzyuKRXw3n|`~J b@\+Q*2%_ gg_R+tDZQ!]gfbBi`1O8Q?-ؿnb7&X۟`_ɡ!KWFO? WG^#qy]Im($b84oH%lJxBXov=EQ 3AB *!\ ԩs~8mo䋹cP(libV\𒖷vL)+ $mXx?P^t,a:cvDCh^2@X0/黇_|8ͰݠB~ boU$ BRd4 S4> bC>KO OüP(#3b0 >VE B  Bo ~0>=PۙBZH1H'qffKHPȱKǯ{tXqާ "(])!n$%lK 7kR^:~ds! gF2B(j)E@_f'>1|T+Q?sWN}1T׋f0( z`C\JXd=VV"訦zJ12CRx}͌A S21A]8n\ Pl+[`%<־C !A=aH ^=}BkhN#B;CjK 2RhBJ1NO7pNsD}#C(~# !R~WD?H(www/~΍.L;;W`AR(m*B[~qǻšïof[lۿ>A@-SUwJxwnibA\“drnI%ho=qÞ'P.RC,N %l:M%t͠Ɔl&BkjqB`,ulJp\BB߿*j樰F/\8 ~ds{T*Ib\ji)rA*!v2Ȫ16]2|B#g(%/$h  PB' ]}cK<> Ç)'RËOf}O I>K^yB` :&<1!s3# aG<^k'O8Ni`!E_wG/)<*;-MM {s00ãGbUCҳ82)F@ z(WuB\k;*Iр;d'Fŋ^٣BH;0eZO-P G7GS0^|¹'z%j0@55qD%oo=Q?=T(ݍ`~ן 'mh. (йsuҸGUr̜3v0ޢh+s8< J'tZKax}d ݹb,sd%/B0H ;F03vHEL.ćvCڢH;Miփ\My#=`s*ZjrpV^ (.`d2% pv!;45f@x&=+!|RPHWUEX(FpQDOU|})D o824$·zz=}!ԢR ?,PvP? >8^, )O?=B5Fquʕ.fӍBUZcN mIDYh髌`aHEO[_]\441mNr- ACEf*RFps9Q~y;rYp`$JҵRpU#A8 )n MMOI EZ ]!D ݙ~c "l qOL |Jkߋa% zj`)QN0ZF4:H q0fBt Mn_WuJJѦ HAR/it8ĸ^ kj9Փl]H-O K AJBh1s( WA@:r3 חGTBL~P=XNс0J2Nמ\][R9nfBwO\[ b'ڕNl'[qcPOl7_Sv{ j 6)uR Yۜ0x!~6 a- 6v:D )) ˩|wo5oRɨhMFt_!b9aNO*^Ip{~ELnݸqXsKbHa?R^d[I ?**( |$w+)( $ޠ z@31 xGJqBR6*~E"Mآ)X)ܛ9A Ҟ+`e}iСLvFdS[VBU]F+0]{QN%Ή<ppة.{-Иi]QH-).&5n}UE|6_f"{hQvb e0ɗ xK3%(D!]#> a_βߜESB2Htg$V莄B|~ jksP3_*S6@_)axַTPGH58KQ$ZSڐjA 5 qk!K [)Kv&`[ !ǒ(RJ#"΢o)(Q1eܔ† óM,+)6Ŏu Ip^n SfE-R'|"6gO7>(%Q.[c g1V ?eA I1~'K&㣌FV.aJx'azp=Zq!넍wJ  :~F G\ !A͋P,"\͌#6eG؜ز' F/OUE J sn~& O8< >21F'0Z~<7Rt4&SeX5%EA,s !@`;TBG+PxR%َBX[\ٽP $4–`2YrthKv(cTk03⍬%$ aB6ove'[Nb%41]iRȁV eׄ -$wt!T=-N]j% S^Op+ J`6'nrJ=.$fפ:tաF`jN.za F ZҚJ%$\0~@XK9Ju !ZSmٚI-(>aRje_>o#s36|nb1,̇+%_?øi,`7'O%4Q<[B.>`GT{]"XtfWuJIעd-@Bj``[)%QhtɎ, 4 |B`*%'=bNRMBLb,s1rb;e@i8<}|au4K^]h.!8y` 9H'6-<Tj᧋^`U#`F7&QPguӬJ(.=Bǂb0Q*U-ʄ; Kl9zq%N땰"3t !]L=ҁKiq,F˙^/UIJ ˵ iq'S KA}Yo^u*oJ2|:6)YñBv ;"h}0_Lt BQK IDATSdآ"0Mn?C)t|AAhohեv°UdV w̠HuA ( ݸ  a1kN[C2^|92)q=:Vbd]~LZ3=s%b1Ma +x6&*|#^wϓ}:a40S{y IRN ?a йsοpK%th[cnGƠOGOW JذDQTB_RX qy5S9 M+` ܕnom /_6zWo$+QSP:dn7"~Fd7b"7\"(4oj(k`_E2tMiSVxK&%i2狏Ne2s%NE#\ , $ &tw|9pd4捍c3FkT8˾ z>12VB3E'x!!RWnx 2Rɜ>8ŋPKK%gGq! f6%~.dpg" + nJp)N͙,fSJw%#xWKhNKAI!4 O zãѨ\^wP:߽M1Se FdpD ?ԤQ;c]e+i] "啴 CfthƠfbQ/.I<ڂ3F):DpAs.@oԫV,s NXXxx >s:$O:áT4l.I.BT !}pAo :%I|&18Ѯ *)S *!Ds'MJ B#<_֡taPz hKXboA(ZQ_ҷ2}Gl6vi}RQ`}ޥ_&sTbt;f`o-,8ȍi>=" h& /4L$mZߕzeU.F DBf,m]¦zm/phJH#jĕcb+Az#rfL ǟ2G;np<,o/"|:! S/Vmݑx7aPnu44όD"T"N5f?OhAQR_+Hx1#/*B\Tw&.9m S0'dF՝cN(3#%\Y(Y|9Y\srFz5\MXCw[uSWA11qtzC@%cSYѝ!"B f-E-sg+ءعs{;|ܹ>Ћxưd6 hs]'x9K!Pxenyㅩ)aJj[ӔyEP0JH6?=O{%(RhBx./Lt+YG[܀pچM~c(l5s :ɨAhIWf\0QGpocF/ O$i?ܰh ! h_Ndn/ {op ezT#ja<^ZqÉJ0 ̰ACBX:-4 aϕp6Y8V[Up"l"ĨGe!Z s܊J\3¼^ZPZ ZtyF%DQ'0uvK.<$^7>G!m5 ۙL4bRNNRXfsRG'F [P܈7 [*5x,Sа2]0.A9>3/7W#ͫ 7H(-Lr@pd {b7zL?;$_ϯ J87"Q(ԥO_HH:rW>cM$L1%wAWB(|zhs4 K6(.kɝ +Ji ES_/cs KK1M h+dRޣ[E/Q{S̰/c]X cklNLkDi^H1UT1gR)329VU:5܌DTv{.oKŬpDR{2ZRm^PYeuO,/OLxjuDq^WL+J {uACNi+X~8z(_`)os 42Ύ-D0 vܰvPO ̄6}O~R*ǴNᓍcvuD)ԍG:UC1<.L|ajեh=146)-FPBo!ؓ]^ޝsWA\8Y"Xu+×ӸN44A8 Hr~_"ĘҼWޅA 1*<V [n^aB^WЛtu = DBZfMJ.5W''X p$"&v!G&qT2XMY/kHMө_ -VTbyI9BN]B=fJ;T?ˡ A{Ȋ!>0>L 4aQBxKW`MFQd/NYݥV'8>曯=Ds@Fi]X|~!~SS#1brz=x]]npF77" a ) "g2EJw @!\^v^Cf2˽F&$A*qKpse6%HQ U \  %]R# %1e&9X{(J%'j$SWSǶ^[ u}r>;5$%lnm5T4TZنKѡA!FC/VjˌÆ3]ΝDPˆ_rƋ|Z15>={:¥ŻC#$=j3^G@X e['VwfF_142W_WܘKG(Zen${2rxyK\p'9C heBztk $ {Mb(uJb 녊? 9& DXcfWQl˜]ц,+^Fɣ!Wui *R{y0:lʥ;ftnzaPǕ _fs14B]F9"ib]ĩ<~.OLd-ZGB9t9mdZBX.``8NsAPXwatiA 8sJ&YO=* |b*P=won*/G) TBJ<`gÃ$Xo ivp]D!ߺLuGrEAJ! 6qSn:%v8]0#l!tb., sOtJ8LA)ب34muxWj4QGcGL8hz+ʴbx"ia('tDt7t{Tz:|` VhI`m#1~}QecgSh f~Du>Rc0'٧sڻY uj[-Jz{TZD!-\PγV 4@ '[`?9[27(Er`fIM̍Lli|ɓD$j<s~Ʈ =V9v]x k58~RĐ 10E:7w [&#`B^i/fzZ*8PJ_>a,I1^&t#bWJt .ࡺ䑎h$'%EX a* h#ԯCD].yy>_ -Mkb(t'\m0f=pS)TBI;uJvFO&fzUPJ?5Mg٣ҍWM@xAW*EIp~ -.Mr*1;" A KׁTGgq ™O>e-::p~S~?RHc(*9c@doP`W ĩ.x׈0k956RکfHZ]w۫^ING<Kt(gfќ z{r$6E.T*Df.,R#GV<BcU DcLj '4yiZ~[Än4IbI, 4vy3VnNGMPK&*R³% њE _3gtRDYPkiu2&QF!bi\(! ![EHZbx}Dx2ܹ\<9\P #|9<'@~߅рK^!"oAgUULt*-׷E&%*g6VbW@澺VC hߟN$!Dsl6k!QlT ;lf6,@z~aqB !?=||ϑ!=Bo ۗ`W$Ԏ)4kl.o%,} ߬b}1}⮫葢HbÏo#8ɜ6 ւ. )gEL1X!LmH1BMuyy11j׹,ΜCHJ~AxJ gV"3>B6Yq ?I%z7+hjy880p?M/$AN7#:q9JHfi/˰1T\u}W{/t})DR)ebhlX2{R֫nUVW :en5$U9v>mg >?uM#&$^\t* E79\"6223bD)ao;r1"=XvӶT9\ᐩOfbAޑ!~Y;d@/B~fL6UW! 'S4m!詳J%׭Jȍ)NgPB(!FsƓϹMcGn[k .*RgG3 auT)?0lQ܌2ֶ\'[mɕu$1}͛oy9)v:bs Z.PBGpaQ:N\MPzT amf93sL ( 1Z# oǴP VB,MBiuROh,ҞZ=h?j"RK5fBp~a(0m=g=}{savCv;J+2쎪/Laj1L)an][:!>[ 3J5R(yI wᅠrBb fϔc)f)lB_p:9̗6FzR#{»{uE`+vΗ7s5nUaE#zLZFGR |rp7BǨۛѰU]EqZ:\UY ƩS: g K~F[[hE8! {&{hRWתi)1UJ ELޠ\Ϸilm>.׵Iο/J(LH ^ EB(z$pQp"٤jWKaV V A1c9]g&֨゗ ЦT3J R=ڎ:icZ0=~Qh^ mV{4||JyubC,BZU,Bl Ʃ7f3 (afyV"v X`^@ 6IaG t ꅐ #Tjou@܎/G::9/`9`M:e]ʕ!Զ.{E,Rҟ!(&p1!x6Xx֑JI(9s'Ro2L!79!f&+drE" 쯄`8H ~E~LȢw%2=1}P0-Gr2w IDAT]KGɏ:JZU1f(?~'|yq#;@ʵcvy;gǛ!䪎tn2nV=*#_O!o\+G™0G V9w,ϡ[hZq銠9{q2ɠ 6- v˶5an{6; !3䶋ac6=̢M+9fvA5s cBoJO,ЗiT)$M}D{4N]{^L(Xm~@akPk  f?UÞxC94=WrG7i#:OIlcB^=F0%[Y':% Hвڌu+=oA RD`$< .9_2D5Gggpq`-d`XO]~PQc(5D%Ú "4HA0W:QBeΈvG3lj/[ N[Y\6:q$68L6#zUGRBu˒ޮތI+؋P%.o^C [ ]Უ؃f0#SS8rn3jmlW%fAB a>ZKF)X&(VC˛{:|D̙}p)B6(HЉز&t#+8B 24^碣[w)o-GѶ`-HT\.gܫs8U΃`>5>[! 5ʮHJO5UW3ԊFu,X82uB e_':)%$ N,+p|:ZsǢl&ܞmVbCSzVkjB z $6m c:Ҥ hb!tTW5FgZܤ[CbࢽB̜ ,gRLE"ݵ!<0x l;Cő^RTM!wsIcL·mX7ʲXu$%4$3JAX^ k!ohZHI } aO)2Z-tOՐD "94B+l lޮ"jY8-֟5GnL*!bhÚ˾0I%^aVY 5s4r9k{m 7S%\#13xSb: &7J]E .?yf][#O^p kdʦgK U]U!T>$ׇCb?Z7:zp 0DA(*AB#BhTBi M_خEf.]܊J[dP(BBVBBwhM%EB h^Y ۪*‚GHҮ\*7W+e\r]@`5Yh>Y`_s,\fV\)%~!1v**#AXcPB zM|H$ZAϟ>U%TR eI af35qF80du.dP}e,2BX/Ք=>[2ӌ{YRQ!tQKPK뺌ܡ ٨QOM] iaQMOhy(\p:D)q* W?Ll%Q|y0GI $)ABpQ (:18,RZH6iqrMAt[z^\ -ԅ{4LV-4Ţad$ptVAT_w8s l˦Q ڣ.H.Q KTd3*6CXۼ@!C.JG씯 YbK.ci,6XWxB{(Axzj +ŃIs(AQG_6>&+r<"%KS(0QP 'Dϟbk:pMRVøZcD̓bnSepUN)# :A Va!061Sm1W ksTLez I[¼ %! B3dk4\vEe9X$1t bd(3hPfhZ9JZH *G$$k`^Hl Rb|[ H̗CCPv x[91cA7©/QLE-uXȠVEg0x)xًbE)'!\U=rd"I1(aUvƜO(Qrm{/Il*mK1nK&d`ttԽh}mDCShX½LxLBBH: *d0|.8Xؐ&Z*PgF,)t, V5o6kK M'sS,*+p9C zJTmӗ;=Wk 9LzZi490>0Ą/$ߣiWU>Cș%yA@# Iy^GG I I Y qˎΠA$ vVaK9u@ )Z,{I'3HjAoR^Y˗ҥa'`^\Lno/k؊k pW#3z0G(PP'$P,ԟoPN`\3?ƌs Ѯ\Y%D #boP!6}qZWgġ/IgpK!d)4 kUG$/&xO?64LAXPr=Ki2l:>1İLof~}^kܴ^{7SQ=([r .\)aTž2 1T¾)LCC]h%KE CwA7 ^{RJnH!3%\-`FWh;#jyuVK-yʨ]*dR -DI [X ڏ2~SKpn6GDGF}PTG+ Mo=@`Ps S}Fz!9&!ocSۺ>L\mm}0Ȫ.%@RCϗ;DW^Y%^U >5gJXsF+ !Tbتd`fUg]xG Ơ5gó55=Z#:}Xr|w3`!WJ5 wwW"QX}[[¦AU\jx1JZ\ U aޏYluQfv:n}5B_."N i2GaS!HEg[pPN[~樺YPzICcôZ~&JpW<2gYmWa2P =_%$1|7K[@S rYz{zu ( ۦ*{fP8cShQna;hsODȌ`atZB9f{9J ms:'U9b!+5GA3R oezݶBlA;CFoGXXgʕ+UtpT=^bHny" ʔgǡH4 ۚ D%;41bj73_d Bthcc2( H\H1)a?\#qd^GZ% B.M˺ͮl1=B `x, )ڒػ|nOh!W4SI =z̳Hd KRa[KfLTj=jU,Q4F:p A H3c6{rٸo W1 J3Gt*/"5.~'fI8A:_EB̀eJ( pm)"+]SpG2:N5Y,EbWzs;N)?1c pWoF: PB1j]HDA1-RO묅C!Er$GX7Cx<" =&?<7OPtpF{5F!l*P)t( c3(rB蠟P@80-xCǖu 106"/h?!L1K03Q!% PGh7]@ǂֳ}fjsH7F%G-, A\>_т?X;`v6r^d?!3YQ u}5}2kPFCP9%QJ' "$j2>QAP;wP?80_ML,=E 'ɼ9%D%D ]! Io+!1ꊖ %\O؇4#tikB$Fn e|~IbGxU±Wk٘J_(OkZy*RxZR +aέ^ !+!c;{,>K?=w0bhž2J蕩+]=B ᚯ+d!*JJxeՌNGLht=Gh@fyhH)*!1̜ Um1,ѵCm;11z|W`(n[.;w]0 ad\F uiOO"᭮!DGUa|)8s8%BduCȗHvLL3}aBvE,/1cT>A!~i5OM?LPQCak5Ms 'b%|,Ǐf^X}x i%lw8B4W//2@ᯜ66G8փ{VU s >(!!і}T%0Zɾx'J(.4(Җhf ~( ?8RhB@קB";EwR y0[-;1t Ni%  )kPlC {PB)˄F3kcĶ1+F7Y-<ȏ0J4SUD iS;ɣCؤ.! :| !|REXK!ɤ?bě@.~plrڈp)<\ZI釪3+4zƫSB}%)b{旅DO|92cدڧcg3!"B !wiJB13Y!%qj<0m-]ʔ0lj.І%ځ֣;X=u`QU@ a>/b p m@)[ۇ[a'ApPZ WX84W+[ӊoB &$q/}Lb|r++! a[JXBhH˫UB4ASnv{{s{3 ŬlAggd$% <F@؄JJw>aooocGTޭD 0Y>A:R[pi$P z &f o zq %!(T 7@}-Q"Da~ʎ^E"-)$xWǧ ;ӕ$HY%Db ?K?l JC0Mq<ķINB(;ߊ|I*Qk{ehG$Z”YF]'l׉AΗξAH!{TYFhZ/!==:!|6En1=գRhѵ6Ht&u L86`/Laď!L,%5_?m- C"yAP 65%0bv7_'m ٗ ^.laoSkϲ^F>1pQ9 IDATt[ُlmȣT+,: Q B2H|$JF ۄ7pU` \lsEI!@ G b%L4#6}włD$ψb6d !IKE_RBV}B 5jB B7f%;>RbX= =B6ɫa%J"( &CJaBd9j!/&ET$9%%oh2H%Ѣhr늛ـbJ]i'ޔ>fwz{{|֐2oTknPm (dfу:qh؃RQL5S 4R_(FT'!ډOB>Q3v &fp219)3`ml [p$"*Xw%Q{jcZ4%X%#\CS~y&[6O}BoW@XI!](nP[HRUs[7'BmϕDA'kn|JHό{ $7*S^;%d_y4MCIv'v^A ; :HcҢ,tk;e4 %$)<@ o %${ B$9zO41bgnD!(8B8}@!!HG[7f]DS*pd X'6A~%'fqGPgByʅ-MF]T ĭq|I]%#As׏[VU!: `7uvv= WS· İd?BZX ܋)# x*pF 8ۆdg@ YBJ9$dMv;NB3xJO[[[[㚜7(!+!RKAagKADE&yj"An+)(ɮGX )(u2 (4`!8٢kBCbCRޭd2>j•UiJg:OX줃a0?鉟41aN"p&82H'73-TBv cfWdw3%sOCSXc|Q2zM @TBɡ 3[F%4k9x-Qj5A!=0^L/ J + '{@#P8?)(dMq^=s*y f9`tNb(LD'|F<? a)Z.i }ТNʁX&G_SG!q`(Vv2p !JaBBp&H2o=*!t#3:׀5)9BLM/|9[mqף qLNn~ T ?I\8w|ECE!I?p]#INHnf>f%|?jMa޿Ba917S0B(=&~yrٔOI(\[;K@ !Ԕp4~b2irrѐ'A N'+3G}ObU~VBpr'7S6΂Iy;զI`$?Aq$B8L%ĆPIJo_c2kEƋQ+t z DXF/j;<;=I)߯] 9} sNR xѝ ݹAO9oboL&b{B=$_ƭ}Tœ@o[a8N:lJ)( o@|֎1 Aw R _<-D5zGi{x)g yP=pԚ|PNQW(o$p~J8O"c)v{DGZ"‹loO_{~.[k:)A0' i辉訠 Bb(,꫹}d_k[z}` GG[B J^6|U Gp\asTAH vL$;p2;uCp0j<ˎ|W*?_3.H 7gR 6Udqhƽgy x@RB"+!G^f'<n~8"Ҭ~!EOUjd2\ W-a?#H0jƌث5(gQN1XIs!AoB<[ /_Bh'9G%'9 jB!f`0}y)T6bF`iOJ%/H-;n=%B3cR*OZS=KR_I%|y;nn "|љ_g[~6 ;\NWBc~›p/R -3^=!C٧f'qH%D})wak }(BX5O*C0 eWyi ܟ+p?6y6cfg);vg)؜M7(RyDnd6!<a@9uլRL[Ow@`!(hEMᗄaI%<(<ä!BxKb⋛|x/Qa -bF ?++pa9'˼/oGsďG_hR /g­ݽ`x/%K$:%]1Kh1).(s !}SI7%8a.^/$Wn1B(Ng+$n{>ᑾ,iJW %W.EPkn1F$ex d6L~sJl+!>ޘB|ԏ?3N1AvFpc=)$+fq j/6f_/Bdk Z}2_~vƾ٩oK{b|&ҮG*c*FY vϔr5?Km֚z )h?|ts_ ࣟĤ9Ysҳye |BL'U Zq $_ &! E CA!+@/AM yپE  ~e s)%$쿄_=BR^ riI%?/&!exPQH&IS{JDc7q!8n%KPS{xJ397x P!B PaX<׷S/ C E/t&sH 2(`gBY/᭣KB{ 1xD׾^}o?A/H7 Aυ(Qh.R#4ZN 1SFzw="Ϊ2R];W1?<;D/yc1K.Ɯ5s1>c"U9=B.UݓO? ,'AÅ/>}_ǃa-tH$򦞱FW.N»R%D 99U ;z:hGniIP| ܚQ% QH]PX7<*+Z9/BuAvFq} %0!'uBX/hKJgb !;_Y0?sc'iP-k(b,1l8QG^n#L =ߎ^Vet~3C`B:!o쪐"?= s]%9^~KVN?;b*n%Sׅ1?CzI[J( H.~ c/߿ƬS }#7 "+̙223ϵW 4 _3A#BUk@8;>GצQG3ANR5(JU[Rha DO#G( הPvrVU ՈuO\<}J(zU}\re`o.|Z%Ugy׿_?F C =G1wVN_y;s򿯡0bЫϼ!a4x<~ G1x.fC[.Б~VѲW!uQ8RXrU! Vԩ i| ޵Q>} BT׼1u B'+aO>BHG`JGF (!_UBϸSףAAPdY41]:nP1cyڧrQh^w ^>~-;'S}r?:ZJSM]k1k׊={^%+Jx ~M$L\*1D '0;9J0tf >޵PHh28Ǖ0$L֯_G.6@L:F#zoAqGR&JϬ.+!1b~x8o)Cs'pɅwZ??EprGɷwaG널el?쌢٫z ,+~BwT:)|WwhD y.(o]ܽ+@3?^S ޒ˔~:%z ܌%T}JH X!B8ѣe3cGPS͋FtՎݧewTᠨ;zwUg5ޡRx&cqzK: kk(ׅP{| r ?\B5!2H>a ! K`XwE ' `pll) >REf<uA8?c4!$N}I1(L_cYZ'-Ì}Na\_z_6n%\ᆪn 3w ĐCV?f^֩ﻧ#E@8ykϞFsOj?_ aDBH`S].M̫c$(BCÏ5P p~B_>{F!I c@U і/T' *F yRA8n%{2J*Ï;O;Ky^ՙ_J:e ffD B ۥo}J$1`H&O3n3iyB% ~v Ւp˔  `,cCT96w\6l~ zJ8Й}J2ZnwT.-`=R':ggLᣮ'¡D#r5ӌD"+!x$u*|eV\\PK>E?(Wo?VFlPX/bWY|^/J?Dy(!W侩y9ziNG=6(|ppw*w׊ )wJ(!##g~Тa֔O3bVBj72h\G BB@3v%3οG> ^pɫWT,-a|>%+@̪D?QZW>[xV7>xW :א+VBf^)v; L%Lo9_9;ÚA'5SY']…a15xl~%$&nKeL[w5#0D:9ȧ ~'֤Y9'$/Kݤ0-ͯȄ!<ؽ9=fXF gfX,]BzOlVdb=G_!7kw QN%!#H^^gb]{Bư'P1$ f7; "ny# ]hOEp8c:!\Sgfgl6E[`8㿫>rrrm|筜<,"\{'ߢQl@8: X]: TP.|:O GE:{ ϵt%^==i+fAT{g] 蒋D!pFhɯW -$>3bHAp)ZHoJB! D"]TN+@%Y:R. ~oUz!U;Wॗ[-,]I θi >2iJ8@(Bg4MTDOx QY:!d)-SG\WBbmTYAbvdNz '*euuM7UE_@ B<**Kku+S80Җ>: !txW'c4?]yJuϚWtD `K-3x?J.9Ӡ(>Æ٩@ D43Qದe4|MHqi.Y`LzJ潥k_^AgxM"E e RB <9]4d!pX_LQY!ъa1ἂxYU@bY|8%݅kg !%3oJ飉PL5u%:%:Hq(!P>n@xW9!iifO;Y/ f{b ppqL]]231.$K!hǠQ.aU=gĨLV 'D QBn3mkeR ,J IDATu`ϟ^:pM%|-a _ 2]ܧKlڡ@,@r5uIfU]sFݛs*H]ʠ.}Ok8Dѿlwz "eB=XN#4 ׶/dt4u'ugHsM?%\[ 8'h=cC{"PP|UOuQa;0DºJWLw?1*aè +ۧۓT0Tkk0D?@/ zX %ntB(ϔGQ0:/Fiax!b®3 ͡uf!0sfR10n+ Ή2.) ےŹjNbu͛u篖t8\ Ya=u3+/ؤLJ+tpm^g,BJGµv~B.3|<qiqZtrrP媑nĻW8"`ZX]ǿJ![%5cJL!!HˆթOoi|nc; 鮐~.[?Zk\SM(n@8{7ñivC*^}<\3[8 8jM\xSu1Uk'y^I\{FgKj? |u N?\q;7%E J04 %nrW3 ?xp9$Zxs;T4UONO_o;; xg'OوͯIm+2cݻǟAhC 3+䊞?Ng O^ۨgCƑ`X 'N!&t1Dh&)މTX<3~+Ah$dlR{EuT n=(DT4T9>j;*3Qt[gښ2xJxiݫǗIw5fm"Apqn9nI'>@!vx]$q֮LKWlmyIe`#vy)0-Mx+F!S~,Bk=؊2GYo\r䎾>n+(v`N܉hmkTzՊ 0޽|jy  QrgOU/&@ \A3AO ϴhX L>G?Lsr-$޳QrG(NNvcu_P f]2T"u :h)(K=NNpW^|E/62y #8;I[=%H4H1 h'Y]y~qm,zXd0?a/Բ?%YYel7scؤ[ x Mr|Vet `DZZ&綫ۧ*DT%[s!8wn;t嘩`Ȕ+>۔p_JGCVA2Pyp53}g4X/ #tZ E 5gyqŒEyhN#..h21 W[5bc 1kkZ+˓A2T UW# #aOl  1h .JW[n HEj*E5 @)O%+;ka&!٥hVytI r>D|#ڂP0YLR)Le&.Vi.Y_HdO NNtzmt0,mD |5ci =@^h΢8`" | ,.:+勋2vՁ*ys@E(.' ԣ8궽hXS.K3*k,ˮ+1(9,3XIxmIQ+ d#%jo襉`~%PB!R8,_(K VF#嘥˖"`Uu.Ӛ˳.G 䟫S9OPE׃ XY \9).?Fc}IB\Hv, yK,d<r8cšAk0\`Z(TgR#$칊?S$+aϙY٭3_B.6F!" ǐH ;g!$RfExe2A$[@8i!5@8٥ήh RCDbW + A72R\fDPs s'Պ4 ncx8n S$QOb,~IJX00-v)HN@rC y93-$j5[q5{ G 4NJX-ҁ+U2T޻ڊ(3b i^Zfae(Pi [AJzAl"qU "`G6?05$%z)'TID}M7gsd gXu31U );i! #s,~e?A9Ul&"W)KD4ccRT FS:Y_{af η=2J'JSL )AEGSDMO*AgfXqP5%zf*bﴜvQoD#gzYfqbkL\izY.E8R e<[>0k"( |0I29/5}NL((NOEP1?0)Xhx&Y)H$-!(03gg/_mĔ(fzo1'"N@i&Cr:]^p vm9Soj[26s/_.N|d)U3!;5Wm>:Juqc`Ռ-;bq&VI ׹i):.#PGFMpphr:([ۍd$p38C4H3EA8!rnԇiL;=<,_V.[ nc_%϶] bR6S^U"gS (@!BmaJ)L|_(OSkn]k%…BLģkQqCo@|8/sa!@q mYv Ne F0'=hK[4wg;'X5ML]ڻ3?d r'+UL9.j;3A};#|dAJj$2UrBnm&=-?N 9آVI_&Oۀ鞮q¡rd `GG.;~, UbYÐȘPa>B,rO^ Ε/XD28#:^qEo3JI&!^/~:h әjTT3H3gUTtި!! zC3ǣI \VQj5'|:f$kOd8ɡH"1V^EHϺ_٪RHoЕ rsC3wnҔ?(d\HkWғ7evgxjK?͵7tQC$ J) ꛂ.bXE *9jjR$H2SfT&kD 0rh5_D_^!glVN_V׍RiwTdV'WCcGjJyuz\-fQMb&_mIreE/ $U gD.دY\LLjAYDDB9"ڲHfT;>ԝiODS[M@`%aV=$`O^EX OE-Un\ &y?+l[(r>@PD,p2dr&Y%O8`&%o!:;%T V3@c -] z@e&W kvEB0M'bO`P1d#uVK&Eqj^Hҩk(U~sB(ž(5^wE4Bg= ǣp/\7,gse4$p)ԢpIGrX =u$53?>H}B)tL  Tۈ*yIѼXR |&BBYj~B7@8)O#"$`'ީNUbGܞ=e-}F-{Ǻ*fWkU*=6P*9OS3 Jj&BEqyH6, pծY&&9C9JdANd=^ѐ4)?w/% a%[Oݻ\ }F%iǀE"G$$%\HrTIE-0о!YfAm%[]DB58o橗UmbO6W姴WзX=~G1Oiuaa@LDFd2JaJWZ]uM7۬"4aK4"Z(Sۙꔫ Ve35auD "T  ]%t0bUtєe`fի31֗&UG!_6}=S=]5HAc;'m`. N2'jh6B.y%u1ph1^ȩ% yT)b CvH@}1)_C`.T lF+L19=칂>cՁn;Em!X5eE,2}u…EbX¹JIE,<ڙl46Y~S(uJf0z4([[;6l%$NmIS=at@oO/D\9nFR c*^ɮH)&\Guom󌕻K HC!^LEkaf z܎  o8{3"/?}/S @HP/..!Ѿ04̡Iǖs,,`δ!շ_Rx|B&ׇ=͘zsc9yf-dD8mx*RT˱/4˚h#lgU2cWnWl`c y.R|TWE-'spO¤R'yXnP(b$5~r#8A- r C5}H.p֭@*nUqlf^p;ǿ?FiNukٻZ!8!L})FDCvS"^ j=fYeH G69 YqO,8WVfU5PCN ܼ1(8ܨ]\.blѭS_#HOHSui7' ě'\^L!IRA4" Frk bkew-_4#Z獚ۗۯD# W=S"iGzM IDATC.K\.Dpk_IB||* HB%\'CBxdr~DI !"}WM_w"p/įFsd SgBZDTJXT2_KSoAILy1R{oUxZUnU֍ # pw):w(or5j6 _C4&R>l2@f*)q16OcAwvܽjyedĬe GM` @8CuL=0l"0B&xBG;}K&Gy>f0pjJ=< s˽EFs!88DChĉ67ĚD`Jkmm f;odr oC*<쏦zne")hB@Ri g&#qz+޸ rc%%DZ= gai FrZ|O)L Ä0^,vI ٜ_?3po`iSr]`zRk#S^|!?k  ٯF3"ؠ3od5ϐpf8|=9(a >ߠ-l4 5BArѱq@=y@0BbBҡ^ z`Jv7[%g2,Y+a|R! f׌s_PR!L(+!Qg<;T 1xpD$#+qhJ޸Z-̠VCOeLim+٠4b&2ÔtYr6 +*!;9'簶~|T@ U1'z 8=iD|2x9zSrP)6~a)$VBߞ&9^ᐝbA)JD UT b\W BwlmrYu)VVgH4::r+@6[DHJǿǿy u=ntC)e a!򮨽;J DŽv璫-*A,pT+C؂r¨[b%ܤҴD?lGr$* 2`{acO 1i]~b>RICJVsl:EH-c%#Nu&T"&DD\32~(áAh-ĸ b2 #б"gnVPJ;FHh&U,?mJV@wޫa?[ U~vԐpSB.tG_0kGf*yAPLEad%$Y 3Bb,^!?BB#yEBj4PW!R}[STGGc|e#Sa]UHePtϹ깂6G!5*:-6Ԑn:̍pn`a+RUBQf~XlqS뇢&ƽ#6YKvZڿ>+d]A7*HF?~O/| -ǡFkAAG$5$DҢ wQp I}M H(&!JHGb $nRT #:HH#*@oY-39 XZy {=Dy/r8]e{ꥒM 7Ŭ() &we/r. ى{E{q*Y\H<`n挫7-ƻu>IksB9.hu߳Uro`!+NZ'-WouylðF) ?A҈>ij3.w;”ujZe@& %1@뇤%[ȩ04) h >gqLH@+v$^)ha*oIj@hU3'o[sstYU!d/D|LzA8}"q|*ώيa1!$Yی))qJlJ% #zn69GccPyd!+=!&G!2 &RcI=zT`2CF]θ\zd_FchȖ`d4{5n?LRJZ\&,)w,CvWm?QC&S sE{nH%`(j'lW3Qī~6+3ExAQ׺/vG,jQh!Ts}|os+)I T7U U¸a0<SU8X8|e哋JKVZ!/eSyqG' q0㱕kk)m3<8%L$J$ #PP$"7&QYbD`դx íù-nQD_ZԵ}b8<:<r 4Ś307Y rb ܪh *^"YM PPZiF#&bBwBJN3x;߳3ăoGz㧢((Unf\+ bdH/` }U*]&Zk)dj'!XݵwAt'RRTn )6xb6t}mDWwG Rl'p+"7%Ng%V% )i!3@G"7w~@h˹a0BX_`:%z@%A<,nhW%.ZZ55r[[-(-?Md$ æzGyjwyQ?`J2FkrBLJ&_7`$ Y@ǂR! 7>E-4k=,(qbn3VMڲ/o! 9 ~lq0 ])3t %u8lJ|cVT K4#6 Ľ]޾'p%Ә7/!Wwu=!mLA>8pbbޕl -fQɕL-TXӜPGbάĜ=Jm>>$qEsq6B k(v^B!<ޏ v50ɝ䀿Xī(EH"adJMʇfL7ʉo'd!PL8 " Jab+kxnX@(-n''N juJ& sMR\\Pԙ] !NLS[ U r"z1o T7J^rx~Dw9{G0ou0쯵4$#[Uw% .YMش?l--!jͭ(Jȁi#_Tx-Q_Xy>={SKw~E7 ni ,#AY"c<_2%dS)Fw?R%L@ [eځ   ޔ!?nsw, Ąѝ?x.f]*]mZ).ELKyN{*a[-+ӜmۮprMQRu0*8&,ZŊzL[~QvM_zӚs*uT\WuHVU H]#Xv?xhFvs5P %ﯳ3lA釗tx֑jiJ}{ۏ/D;:!܋򷁦Qv?"qz^<:r\H)[8=be\ޠ~̰ 6.%:)l=Ԯ `:*7pq`'{/&.$2~&!/FXKx| iU|hƭBNOnX8VA&tU)S(O{ )K2@sD&7`=vij~J nF ISB!PIN =@- la0-t`¶G/ ﹷ?mC+@pգ)j(lO65B-u`uˑӡVVj3Rro\Z/`"ꓴᴶuE(2rLfH]^77q "w58Dڤ(77O^n7PP0a)t0r l;imZE Z' `w2mΠ@03uP*xJ[I'Bæ;=HĨv !L&A:^t7u4;IYT̥ڕY4 An=nBB=SڮJ]Ic{Ra77iQ(` LUH8L9*X:tVΠ)RL 2ulUIK!Chwz&\ί6r˓e/eyϞ玆>NY[^|HEAY󻑍4­2?juw-Ṳ1 FWӟ١@b&Rp'*%m<;43>R !bB(!+ds A*25aP`0& ĄBv0?:L 9[wְlq]^H"ԝw{g&I81LD]S4judAP} v.Xpp0{X(D!na7r *8[)v$;X;lwBLCK)g68bSa_Ɍ@b;g–or3G6RwW ;!qؿ "S!Rn6 _騛)htpx0-S BĕFW*n?<( B S1@^kYiG7ϛL)V)aD J+pWAF 5N2ܞ#O;K 5"^c*{Yv]iyyݳXwS{ x R;kŲH W+h/:Ҵe4-$%hvb8V;'Dnc[X$0!-HF`7w㞂ϼ5J:  qa9 Q{o2Z7h3c\]Sp `iDx8LTcGI(ot_gWxc28#r]ObpJ%oab%*ӃQ! \ɺc 8;1inoK>d e 1z 0 ,v+`p|Mω5cr $QFfB;WlS+byjesswz/ϭLޛ.3)=VLX;%viIUYi0S@M,BvP· C*{ms}pҢu[* jHHCfф`.8jW;jR&AAuXDҾC)JMx v(Q!>O>LiM8tӃT ƒ]BҘ,ƈ471s(a x Kވ^ vAL Q*5 vu\TL1);Zl:misga+Ty[qqG;/$8f%6`}f'?E071xlb9hxP'XyPot:(!i1VQ,; ($!d\7uZnv؋8Q1xJd+ŷ%uWorA 8`8(-F ђ)ժ62J0ZS z+i|jv's??Jip)W&1>@ah rhÇp@Mn2kΨy ()S~EgwD*DRiEƝ&B !.@9^8b3C+N'v;@)hh.n nl|r~Rxf*ɍ?hw!v:BH XA)AES0PZDb ٚ75J:1uCԹ0tI԰CUA~c+f1 >~\setLk|-YDw/fv`{1uh583h&El=7=g i_/z 5ӽGT%T3fT(>hWBS?v&NQ4%Qę4!ӽA;|urXTjRby~Bv@9"-$cu3g0X__)<;/eoT`E:[2 _yp$MXp2wE?"H L=̒I^EEIIX%6::6Nx]ڪڀ Uv(}<pŻ~Ҕv# B"y>q]Li+}L!=0 M) acwp) ,7ve^S=6/qIXG"^=wCS5GAG4A յe02Gd3{=lm ti0$5< px5*BV` qG7uG%-TOـAApaon}#Z1Mp*M(!r]WBiQJw]!&QKiJO'3PN*]o&ӱ>cQFJ R>8( qi3 cX,httyl^;_j x)U(7FN>s8r:Ag/;W㏮HR5I rt$N0>F\:G$D1RL8 %nS2e;1lw%İ;jm?";Abi>^ o_.ɝ?rc (a;1UWcgx_׻K@lƄS͕M\K&+ašd8iq{(w2 zt(&Q=DzD)kr*b}}h Jr++2I$#<F4ƌ>B)zE&ƕ>7~(uϝ.j&:AAeD0B=[4ѕ礄/49s i0H^!uX[D!h~9mF*81_FD5%$ׅBF6^,225rVk W֤rOZ@8~sPp%Asᥴ6ӃjS[c*xHP]=03;B%3Mf* 4;IoӹbQc1VRL(CgSrMǍ`aaݧ*~"{r}h-MVpl&\"bM107A*v:<ƨPf#DN3CM.h `FJ~Vi½ Ą6nhevD *!;?Ϟ/Dc”`ވUhdgTPa!$;:imp4Rߤ>2=7j&Đ6{0@Y񉢟lņFNI,C5vU|g2WXp2Vb@S0F]3cϵϔ0ۗۤv*}2K'u@_ TCԕi GfL Kn%PH1}sSo>Gc3&tJQtHTWKxKGYlJKtNT( eφ ê*w))>ϭ2$|c1n;%Ty|q|9A%ƜݤC)Wt.$J܈ỡ wA*6Y4 `,,676FlV9܄FRҫ>69gmDF@TX8I|_Z u &acBm68{p[D k J_nT]BR&JHZ6b_+g ~+3%h!yt8"x*^Eu w4$F0/^KK|co%\Wn!o@z @ne4C%@x9!/aϟS%#o27M {M( BxC1d%lC9CPP1GعBx6QVX;o!` an- AY yW~R|m_Z1&:e%怕):y[~[:\^aA/O&Tw~) Vb7J@̯g"jsyQ -zmR#1a,j,mHB?>H:Bf7r@H wuO@ ! !dCzVD 㢄uHahAsC "ѢAGJ i B9 \%m? Ԧ7!?"KS§)kZ2k3%\a!V( c*yiJvjKm 8.@lQܬf4ݡW%#i(6)/w o^qo߾}sQy[ZI ?QHѯY+6S=֨ SϏYK9/Xq;>psam,J?a%$g3% !߀E{aD"PG۬BZfnZJ7x-g`ORrSћ ¯DPg$GHDJM\oaMԏ"}ʡHzJE>=<ЫR3OD>e$ ~ط!;NwB8e҉J;mm3VxRy,uMmjÛ"g%B^xs I wY!3Kn1{ۍ7.;df :;N`~PAv U| 3ӷC8fԲzz 7Y uap]s7\^!tJxd$3JBȷAmw(g8oc 6ï@1C@6ZZn_{S}pCTcӢg͉ wFsm괓LFA0PA0lpX'wM|RڂV=ϋ[ӟ|U]hw;BH6F?0~}vh:J" ʡ/z>d¹A ^G=^* vkAh'^Ng;Q+_~a9t>YYFD4Ag_~?b+n<6P%6 ץŚF7gƄpc]ph mQ/{{z bL_!1}_A ͛Y)maHCe(JxspCjNoN&͔k59af8mk[ȎyNNĬ*]XC! ]UO=bm1<ba:98`)T-Ȳ5R&f9P=VPF7gUfG$l$d*As@ ags6= &WԻ}: 5a&YI/d|JX' ~(ַy!JG׹%qLFF mu?Ч@%+vr]c_\ps9\//C@PB1?t48>73CQ[Ft"'G|# f_| a8|‘F]6@84PF.F[n|ol t /OJ!F>r&{ Lx;p_nڮaaK{n!l'F bC!B >?-o; )sw%l3VBB7}qS(*'?PF8!6OO‡b U(4f-` wq&nqs⸶zPx Px:(@NǢS+k zOd*}`c zAST1fSbu})՗YG|)Y1/R @9G<ap;5sX,  G?`-D ]VVO1*NfzZ ѫ+Eۑo GFP*?rM#]KfƜwPxP dG_dPjo^5jJ(ē+>A훯+B[nRq:2ciMd<)! 鹅J*אg椨hJ9;($ r`F AQC̨t-+!^dTj l73EhBθ+s`j*)^?7"D̚ ]s-tv H XPC-}."tb[jvAw;|oj!DpDWT$L J] ؛ǟs7F.y)o Bv9VD6WB}@# ٖ()!nXKO(->ÀճPI҆ChQ>_z!"}£RA E up46ZnlJ. @]"aa6%;DXUIq?Zj{ɤ"` #`4i>HE}4*ohUr\uoYx1]SgA`KnU9SW ۑۘh= UЄP7z*~`jv|!|oA#q^?lo˯ħ a_ ǒ 1=DŽ":ViG#;:-Չif뚣H C|fCVHvOXȮd%s_+bB B|DAY#zx%/kAiz)6)^U ᐽD!C)Ðoˑs᭼=4)\ rj8XM SGN6۪(ţmkPe<}#Ђ\S5yqǥS]K_D_͆x/뿽d~kBqcyGYeyr氷xn\Y) oC<7'c԰"]젦2(!B Mt?P0D)1B:͆tG 1)}Ga]r@(T(P Pܘ5aB.x th'-YNh*^="Z(?eB{/@w'm|k {ZУxÛ7";)&U@EZ)r5&!~!CG:ɔr7" rx0AnKglXD;'x42yϗaB{^=lҐ@&#cRfd6VTU%{U tnq?v{;w-Gy/ )7yɸ +?CЦBNjѯB ^ IDATXxNDr]kF~TWZ7cHД:isNvi4' F/|KbB)oя*1!Rtk].vZ VonE-&Kį;\,=DŽuB* Vp 'gi"V1ELU.`U9ECNFË<0g%wdžv7wZ>lufmɎgp<b Iy[HO`BpCtŲA64/x8qM I̸ӝw( CLkIk>Qayl O7STAd,ԥή@3k;qÝ9'PG~Q0t@%D~|=^Y>;pyFF÷2; zC{sV%,̨jA(Ac/x nt9%Ō̄b- W]~9)!;d$RA3|J02F 5,)>!v`C[Z(Eݨ\0Cʦ9tP(x- nˤK:ab N lJ W\s#GGtelL .>E8Xcy<WYDG1Z/lmz!@ѩFZA >6 ANW|L9)|x~u3|%D% C|N Ɛ~ B(R[CBn+g;_>וaM&|ppW);ص1Bn K|^h/-1VJj@ Nպ aTcDU AI3fRWNn¡[*#D 3 :R=O:;J (dS:bm7h_`a|22?q}7yeV$#ĝh2DIGA.z>BY7%bP{iCX!HJ+p:` h.WP^O(Aq)%&eb&7 ĎaZ7r}\s3s}3)&vvEJhvɌ6 4g\X)OJ:塑ѐGtXS~*a0p0HW/l[DJBUfոmmf3MЌbۿ{_IZ W\uz-JXU$fHệ>m%d%|u&3Ή&-'XޔsA,9I!HԴ$08("&e"aVR.j(eR]BAy#L)VB{];m^FNnQ.9hj:SmqѪxJV 2Mzi/Q8(+EvIT5a{_"Y h4(~z__:ʂj;0~aYtA X[ꆆm.EYIJ`*Zq68 Jy%ŏ̏VAr_^?>+t|%@v)gy'3!DHѕc:wF"]U]`=BplN$(!CJ GPḱE O7"^b9cRO)lAG]\PjO|r@5I,Éك@H#]n*)ЗQxڻU fP#W/Vof}%tUȜfud=!P[vh[`qCHv_6࣫{ jROA(\ad 9)_O`g!!-YÒPS4!Ս A %x\Z3YY@İ2Ǣ$TOeyQ*|2D)DA[Av/3HZxna;[^4*VL'M Ш D.58SM]Z;anvŸm}T2#UJk0{<[YDw)#s9#%S!)a*;u[hQBg pens|ބe6H`KBLHͳ=M v Bָ B` œQUB^y7{vz=s*/G#Bs4%S4A mQƙR%" :[< NN2Vdf$;Qc'Rhn&+hP_ `ExB(8oѠTZoAHdqv5F% NQ|bj HglmQΡ*! Q G/P ~fE7# x-ą8$ ,|Ac0bJĤ;=WiS6&gFye0,6(*L5aQJ`XE(Z .ozB+ !a((sRyv4ªqR4 Qj\cQB U~"y۩QZB! teBf00yvKvO/"(W<ʑaA;тֲ>p"&gSy C^ZlR!M(TwA ٝқH SZNhja |4;q$ޘ-$o€ (q_ a }'W BJ8\K\q2%eBT@XD0Gn~Os=6(T:05d$hG7 гG EՅv !TRjfۑh] 3> 2%ŒަJSJ䥒} :ATA514Z&V_D6W0lX>1"Q,bSmwd뀻).!3){vmٝrR`9asq*A劤P~ %:0nv$F JnYq$4[S*%u\-HW 7djFx/Ki ,!hPBI4U'C/2S!Oǁ"VBҽ\0L3yaDV$TJ`T\Ot Kqk4%SeF='Cҿ$O|l%^ 60 5tF#96uPnR]]{ `(ftSBgI+l Aa;@=fG%&"A q?BB!_R I Q$pUѢ>qVBB˅3YE{`([3 QbD|;T\4'u30t!;K1+r:bAVIZKPy0P?B: 3È$kDv TYV΃qz@ΪtLfTPB?m>nCc=$ztuO CvmRT~aWp:)9z0Q'f),Z >$ GX~u&I1LTrr[/"sx_JxP3ʘ!mk  /W= ~}$m $00'Zh-xӚ\<\bMD/i ҅-h@sTtXTG&bBc ?e! *V Za?xk*efTJOY굳n}%lݿ6B(L"kPΦ,D _#-$\Rhjx^ -Db,U镐)ʡ?D^)7Zŭ NA]J*%B[8C*B("&!ה"4TS%ϲ,8y* & D9gE@5a:ٴEhh5Y-x܋ 12ȗM- 2_XF|`2ճ';)h|Ryg!D1D!pbqJ0e ,cJfyYK!e]\-G;* >1~+K?k]5cSY 0a*4P-2SHHH-PBцS]r=NM锐TJW2*w|;!l >, , jݴ{ %=o%;n55R -;J%A@" #KjMBτĨ1}1yÐEU<;i}mWjpm€VpL]4t1eͰ,SroyTBl.X[!\^# "k9yu?"kbHKQqZ4 XQpjJ$gʷrOPk><ɥ%uvZҝssl,ZE/ FFYI sa=L휮p4*J!(e 5X$A!2?oCTlSDЯ! p"u!I`n( ̹ YRwߣC$,Y͐ PBk1_SLv.!{&)ay%aj7z\?\3`oeME^D>;p^tPÊnE};,ϤS;7X<}A8ܢI}0FR˰J! l,t(.8FmH4ÓVgdkӎʀGSS!T+/¾+=fÔTea L7P=a~Q ~JeJOPWκ9j%>Sy`g=f,55/"otVEGo+!xBؓ[ aSۏ4ǧПg5‰.5Y()I)T-f-fy$߷h+J9mDž۵;yN$!g5yR76˞s O=(! !7CМUĠCʕ$1SJ75SOqjnk8Bb݅B.p݆2`.pV g"t0¤ EBI`k~yy1 '0?A *!%ˈaƝ2Q=%In&AAIH ;ʟVӼ1(/nQ fZ5 1(?Bf^YFOMqg X$gFԇ'&4I,i5 h]OU!L-#V3tCԒ3ӀΣh Y1,9qح_eOwK)lcQ`A)71J)wkޫZͣFmz9j=IyHruiR-^W/٣’gr(+C[&;L?E = ϙBp~N#!44eaOPZ ^vYW(18/:=/}S;;!b(G5Ϳ/+jzr^!1^̐NWC9J1&nK1DiAStXsBh=)c}=Bx7}|6 C>R@jao)2GazjD@UJ2V.`.L~"_P-hmq۫_I [0FPOv@sEk Qo^2јB $Sh=D`Du1?zH;{? GbB ]3J-YLA9X9 >Ivš)I!ߤRCvw80LY sUKOuD hCř@ͬ2ڔ03^K W<_&/SQe8E@d ̖jQ|뗰%픰T'i Q JTUd/+BBJ5:S+UsF!LZj͏IgJ8o0MkTHХր1bpN[Krm*X47'!91x\JH31$nONRgpL-gm-n"U#Cp/-79oߥi1sϠ+1hN Dfx~}*nj/¥ <\e ]lVin>acR v;$EېXS!J55](};H$}M 9L b(Zȶ)UJ Vxm V;AZ#+Hm۱dwJ1a-WkO3 Hx3خ3l촵?j﹥uMԘB@Q nYU*)Θq{sHi*tLiPMj v9(੶5IENDB`hugo-0.131.0/docs/static/images/blog/hugo-29-poster.png000066400000000000000000003602321465312036400224510ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE3v6Bt3@~~}|n/>l,?Ƀǀ}̅yyh+4̀nqp1Ay9Dؼhi*=q1={~MKvrzKhPyxϠEƁk06ӥGqpäT҅ejy5Fimj_JLVzdvQCHLVnIWTS[IK|kӱhdZ?=x٘ZTЫgd·ܿkךf$T]cyDag}R̟kVb$Y]rYPOUңpaNp9/Xr25ʘnnH&iCz[t@l(g8BADSP`o}OgL[ɎN?4k+d`˦dʛDo:_X`Ak0.эشnƗdŕ@g^AݹsY-YbvRy^!efՒ~SSN9b'1Ȑt_Ed;z7/їRn1FB~TB7ligRB}ĐjKwqўuy9_*(עߪT6Э]H0洈xp&52DkLЂfsۡ]Ԑcޛj6Ӡ5cޫEH2RT< NFn棞Ԅ|d6$L1 IDATxԽOhYﭿFbIXGiy`V)SIX%KMlFh+!Kcz ) \/Y uSTu$,Pl*4tP䦆/=CD<ydy!,M'H-3O3O>c9,; Օ,?-?CZs%^[C:R3w \L\U;, p3 v:kkk XJ f!xBqEVC'u  k|pᴡ<:T% wY%Sr`9k^R3_R:C2<)S!~(0$YzrfJN܀SRHa:ZZX#`*oMbP+5U0'f0f)b!e~7}Sfw85<H^Cry,?bVCp%H` fLY)RK. 岢ŅX5@cdPc C5fPp<ܛm8KVYig$rBz-'!Peܚ,(qC9齶@ FQA<5cPR5L A!4xF s.ZnLRup E QQsa?Q$$Y6v-xRR i\CCafD\"z]5E Hak!RN"q qiCb 1XBx%RКeǔeSO300D!)0 _Z1 /Iʷ9 /XE"{ d<[&`0O,[Vi @S_bQp B!Zd6Trk8i(x:I@bR9I߯ Ϥ*ȘCÏD ݬ"!02XΈZQ/X؟Ήr RpFH]J*lm lΓ \lާOE?PCK!amR ʃtj18yAH7HAawX#[rG‚SA'JŨ,oNAP)Lat \F:{ "I"rǸ hȖZH3wecN> !{6RU2 l*)<Ȓ0[X"I= i 3HJXȌϠ,-5C }]D-9C8Hl&J}9* >1LOi * =Eb|#4s+/0'Zwlt (3Ƞ  {6.ZP* A]Ei, j(A^ >Ejyp6gEֽjּ|Qsx81hysB.X{Vd'bp e%.axMNfT݇1#R-) msu !͠:Z FWpH 4ክt"@Ol(Twf9 7n @fЧ0dp%"UR cl #2{=X02wƨ zXiT>A lZ$ĨSvl`!!#x lȑ:!X!PTI}>xO) !C*ɱK<06zGxf+AIOdQ`FQ;T;O y6[RG!pePqRR0\,S cZLTT ?"!J!`)0h|*"- AФaU?c6;Yz 6j{5fwАqӳC]V!ôv&tRb:#֨+ 9AgZBMt#A(6- IS;;T"8+g5pr! \Ss[s|YDe/х甩R1k2 D*/:RRpf/\ nHiB.}&5 ̂M 7!qQ!} 3㔫e4C>p̚x)FBC ٧wE[~`-޿\,)Zsm@Jv) C!-qLKX#:! wX]Q6E#,u6S["NTWʆl,=67xG ,2)27V̥t U~+<(dOlH¤ RO!Bު*A )̯HrœP8+JK-H^mwK\]: QHpNǷF%*amPo@st lҲT^tQ7@XS JfU(JP[ JU~ep ژH ^DAa:!0jZĝ>{bRfe^0R)&r'FYRLeKR`=${VQ?ڶ >L*k:_BX5Ԕmi"MEܖT] g]iH[C9#PlYDn#ρK+( .8L*Z4n#*Y  [LbQ/?]hW a;@km=L.-Af7O և@JO0Kf8A[$4eM$QDXi2VxFP($Ib|:~R1h(6IHTo&3nN. [l 9{PJ¥%}RB5᠉yNj@Uxj!Ffe8\^^n5'6_RdI& lQڠEDA| CHJ3hT ˡКB5,c(b0sLPRBJO-zWfLXAz%<%P]t.UlDyPdX֖0?1wf-$v(JzI7ˢ pClbĦI2ŘS- ԐZ4FTnIԚ>~~) w'UQ 8 |e1}6i!T\N - Q&tEKVH\!QR6G2=ؚi`9aNU /E IcA\^Qk:%G+Q2 >G!I94HHPpײַ:rjīRs}f-dZ CNqAs@XզumA6t AE|ʒ~6(JF9ķ5js_V}30cc56qa 3!sC>cKq × d ?@ÚM7RZͭkdׂh,wARׅjN驘i|?AB ƀg$611z\ѓ*')\%[rqbr,9p{ VG\xC`~&bp E[Z 2Y&| RXqN@qjW%y AU&洧tt 6O׵򺰌e)jqM. ItOi WkS6]96W툅1iv`00PL\mbzhƏ8 3b [ yfg$ z86kZ\t?UZh^h  1L"{6Xpz,J ~aP`-9ωyYd2J{x@E,@d&TIc8f˓<*jYf23G Av`'I(~&Y $E0YZY;碵OptbnXN.(].fmQx"4 C>s|BBpjo0XES5ڙ+v0(!I}蔰!1ؑZQub~^!fS^zńUD aAwNċVG,5dQH" @sPfidUTْҤt7%s$u2LA9w,1PC%}  QhG8AUBPgN T1Uj}]1ȶ[)Eۑ}´ LռhY:B -#d^`SRsqu0a5Rǹ.;AEd'7()70`rnML X91Nm)g&z-(8K气&b ;ڣW/OkY sΠ:"=tz3!NNy5 n| ޙH4×RŶF`ѹOMK8MTK0,B(- i ,Ah@%=,=qHK6B#La҂BEQD[#oCI͊l h.kA9G&QK A ="1T%3AkfilGyet\'\ !d{xX=#H2Gw!) =\~&*PӘ%CauEiGgj`hP ")NQOt`Y2'T]OO~aO=MHE7Q 708GJh:w\t^P@hL6 z^JN*=Ti~^sU IDAT򜆲=JNp.PagIfܬkd0aHm2OtJrϢ|Afh0Cr E tY61j ~ 2G-0=9DsXhgy:xEg郎!bۨ(;p .곖т ~MRzń?eFOuV֤uH)`SBڻfܫK\rEVi"`"6N oj(7?hQM)<%Q;ɸRo)ɂ&NZ2̔cTe]fg aW䅧ss k M*øT +Ԩ{<50mnѠR@j9\*s1h^1> e$Ii09OZᔢprF1tqFdK$SW\[Gi2 YZlONO=B4.o>Z%4@2*g̟r $ K9kP ɸfkq92zイKS)=gގ&`Q Eu4"1R Y%6UX!YMKq.aٌms%<#){4m?Ul~x&—,/7{D\C <> h *{<ž0dۨS>P(ܽiC8ߘUvr$g&;+ɠ9сnWn 3ޅ/B5Bj2^ddV ]e I++gcؘ_Q- h +te^ROL|˗&DgQ׌q#.R[]db 1E,Iǽ&QһV([Q g'm4g Oz Ќ8--W6-ڻ`\@6ET%d`P@A1(sp< e"ȔIl ;7@n{2z73FU3ǁd iIƥry`qy5X  J+21 4b4Opr4{lrŋsD&*(dct*3b{ŖPRI|a 0V #X%}=l:qi";-t %:JBI>N9xĄ *sܫ]8 Mw¶}cI 2Zmڥ~qZpZeoᗲ=;ч#ԟ֭: s8|MN 983CX \qcZF}&RM`6Ya)9|K=5|CB֍Chn13[e.fK]W<L8o0c]AJjvd>ũ#|*&<$LK.GRNA*Q/[8JeX}RW\:vv#1nPVg $f*[|JL|}ϰpEFHyIa{ lá_^hG78{\@gdZmo@G0wiI/j(MFS7gj(S;AAV"we7@yͻ̚nt G@ ]F"n]Mƒ(|+H5Z)"-Fhe_E\{W/ uے??vTO gn?w!Pۣ|QծDGjf[h@O^ڗ=JBOɭF(޹"<_L`ƃ}d0B҅ |D eNCVxRBxEk!9n;3^5MJc.1asB!T*ʣ j Qq'lr,jrMOث\%% WN _ũ3kjx‚ KL$46W~!TӼ(ʦ4l[C%^C8E9' mNL*% GI0X-!] 9@Z$˗)\׹B/k ׷D75hnݨ'?v#Z>2b0Fj^` "-cQm~rSvep*3QE w6`b<0ˉ!,D[<'ҁwOB5NLx^13P;pAȈ|ы ::lQ!tvmNj^^LIrEJ2Ġ1tM)yPLWN26Q-:}fT5WL"8¤ñ Hyڌ g!\԰"4盕z@QN+ղ? hki@ M 0k?>QrB5ZC\oFT0|EdepZ\ Eh_6#~$,}N8wB҄գ(A)$Y3Бi3ӆK2-NɋwXͺOzLY5K<'"(ID5>bn1dD=qvUa 94(7MQB5s l@|ehI^X#ETAGAD1lRi4K =gF!2~Tf| nE[1%4GCGt0- jt@M%e! z !-g>{եN]%1F=t!)D\ "i*bzy߶d'FAx駒H+LY"ռ6ȩ4SH"mcNDmDCy -Bà'î{ ~C.ӆ< "fep`+ET9tj^^B$Ψ(#}"6cAC8z5>4CZ4Z I4 b HtF4 Ӏ# 輢BWB[ rHw:>ʿnb܋OF)!aNwcv^ZpS)7n);#p2"MmH}p=~dR TR/MEM[m_gs(C' )D-y@ H|G_GjHX 3?ڗ-`eC۪-b R_Avǖ K** Q-Qv7 ),ͽ!pN<1t v:9$˥'ࣅ/(z(\6*Sd0nC)jBS6+푔~tE,eFiH˽XM/4Iz):D7Bf5#p7@z !XCNr*yC 1MFpnaW24DQJƕGhB9 f23%v0Q.eqﮫ.znX87m=P)(OP9 T!kbv.] Bȁ%V({ М^ ;2*((9C3*h0|[8v7c֛Rʝ(a0^p^|X>JRpN[ԒLG1<^vZ^¬CWX"/y7rhv`RѬwm̔H=йsb\٬,#  i2I|%V[*G;db#%Gfl#[mAR 3MRw$̥.k~Stan!j8"uzIԫ:LI-0zha| [μ}BpF[nG2u}P֮6k{ ¹XhbC 8KՓz(Y(D!\#g!l`Ŗd| 2QGѲj$z:^4r>"BKHR)x;%#>Mp ʨbEB/ vNʎ0(_4O,Z T a1M lc y5JS9ޘ[wsBJ=*E+2;U IU,m_$F0CiKfg;qNN1976M$4 ^VE]o~dA:ڣKe޶D s0<8`05T*Rؐ،bp̌KH\T3f0+L1y&;TyL{frS 엨'-.;b14i0TEG7 L:!]rXL*vf͚7B3Ee'P\FBE<{T+aѶ~av8mSDt Q r#4a 4Xt`72L5(x~-7C= L(ڤ*O倲R܈$\C-LAhNY* CDL[/8£tBXI`iQyV  C_<7"UuwǔR-R)+1_Mɨ4ɔFf0Uj !=p0!)AhAKAjgpϮ`pt>>@4RCd6a(l!H 4"3VAJ1@sp oX Ck45z:Xf%k;su/LF|B4RTg=qʦ)V!",vjܫI޻أҷo,Z߰UkXF#1lj b"DvXPd2RohI`nޟm11eq6\g;N 9K5ѥ%݃S +t6o_6J7OxUH ULRԬkU'a0;PRH:Rq馮Mj̺,EFSpP ?c+( YV(K! .&gjbbB} mzT' QDm2vB"YKm6IͿW)SĈ ouCQ+-4Lx1C"vq-{\5#kO( CsPhبaAA!v%} (~:&* '`@ah{^ D01\ |+H Rܽ-V< , 02^pf`L@(7 BXF ^ 6I 9,Q(2T]H5&ƫ̎A_mڲP>FO,hwhPbĎzޏըO1 hI13],Y`{=\uRDЈ-ڻR*d; Q O !SXsBy~ϏVfaj f7n <=ڥ {'&''uj@vGfr*Qz1 ܵjؤ¶θ) X?A+9+o lD7<G*&): [rB؜{{D]իv2<]Fcp$ g;;(J] BJd7~ľ2ȡ.*mHo 8'$s/I:D c!h §sq\+A,% u]O"!4n) @;:)\_WN!g^zPh_F0(*!Mأ<==BQ^Zdkv=ؠ n=KԮhymKbm͸\!(aٕ U`,䌅iPw3LD5RW*KN :lqla0n(/$:@޼5/Q(PbTfOz z|_)  z`ލ5dhgAR$&y_M9j d9Ja&LROa ]gn p ;=@=f_vI@]``y`^>b҂rF`* )=@Nf P1 IDATued6Uķ3oC;S@L۾pK Z%)՚RA:xKJJ6-M}L=9@1b0S#oM c6XԶ(肿C=f Rvް+yuZu#QZ(ENhJ-EO 7\.`ryRbЧ|$~73d!x u}\!rn#e-YMYWeතf̀S8a2s?ԭTc8&ҳS(ENP[:@ a{q0ߘF2Hj= 3}06.B6weS'ܲ]g87NIkjSH {Ci,/w?hΨXzFb}%'dD\ Jo:4]zrG[M;s2m&aJюyge$I<&fI 1|zl;w k7FG""޾ bl8̹B28,@ y{ghQ 5G]#3({,Qc ?AObNuiн[5=*2!jh{2^XWn6$B0f`mRbX 9Pfg,r|uL AUK>]:5RA ˬںU)]mC\_oeU4pvV m$=;k[)fs)R 3 * 4"h=߅uP4_"-jM(+i[QO(.9ők'%5d˔QijگJ\?E% T1|Bx I6lg< 5cFP> uS >jdp*)v>e̍ęR\]&=/ɀ̳Sx;EkK./~߱Cpvgvz]dP`7Fe&lf¯If) ͈5Gm:p,2[F7fe[z/9ͲCgDg'oX($0F!Kab$/1(c 7뫶r9:<7\n궥ի`Pu&NFWqFjm.*T !a 'yWkURF^` *lvNJ '+SSV 1L#RTBЂ%cv}0;iQ I C#@0h7 YEAďjU%7pQm A {] d'Pil gksT`KZBYx =ӸF_f]._ RxٍjLKdnf5 }7oe>xd#t;wA2XwPo"YqBn0lCīw傚]*]^#7-JH~!/w~߯SB6WtV|~矵A4EMV»4BW%_ioqmg"y E[uZp8!) \v!콱I(@[ᶽr1E7DϚu; F׿_ !'~Q*}&/]7$ҿ{IU7 -dd6-!+ Ezl'0&Us]/MUD1X' a{ J8҆6B ) M00s !!,<$t <c#X >o.]B ^YLSQPBu)ޒ' xG2Ie0l1»`-C Y fugnԼj͵=O4aIN*܁.V_tɋ~JٌkoP0H!;SZ m؂Iv1ا\8V!k\G /a#2q"qc2]$^tCTEئ?O\c2' ΎMXmBfC!^޾M)2.;%oc]C/_=+[ P6pb7@xn6c%EJk;_ZP)I!AKA_۠Y^!ܳBخ\P Åbɽi6CE j.Ɏ|b#Cp<7!l "36o r ;H!Ͼ=Vlv*eP u֊k͖p vRiRKSphE\s6imS b d/3zotT2.fh[r՜W IB\DF04@ !Qam9=L$ca%/~>'3h~o>uh4wSqv,B0ÛÁpBjUq2N%H_8mmP~·9 SRYJw,ä%W mѶ>^93cWa8%H%vq̔=śjhj;πGv re 1_AP RbG1oZ.&JxpBr -X!B{[GBƈ* "% ) P\pc4‘{O@ ǽxY; lIJô[8h0 2o3q@DFp\e:xj>;kzj`nrM0M&XI /Mi(@{% 3J.,O횷62(Fz8B:{wX BTZou/5zkA [e 8!^Cw'W&I!9*B@!"RN! gqEGq*og1>ҡ! A`jl(̑BXA8 UG0gXHTT GBBIs-C @`gppoL aGd/.]zӗ47m%^ o}3HAң@x!^ زn Rp HpEH/+}8 ܚ$T*Cx !޼ʶ7! (l 1DqbJW4aQ_zfpՆ{ ѕ0+K :QG6M=cS67`lה{XEHaPhH_@ [:b@Z8h69Z:V%ȉz{ss"v6Wr[YH&M)&)bԪdG2xC5UL"1P..k} D "??9?D~)(! qE1#?@ +!y}52Gk8}.J}fdrBT/TYC`?iK@ǯGy8_#|BAP a 6Lpʚn1z#|yQB`OXߣ\_ᆬh[ &E0[O" RiJid(O_DC8̓/^Һ {q!OAjrgnǂ t[qTپJzX9\߹sPbSB5ž1 tQ.8!D[\4 Go\N (vͅ 4JzIv/F~vR=Dfh^M? ֙{EN1g J!C|G_= "Q'!#o߸mׅ!t$a\>I!N~;|?#0-#Gcכ) P6nxks4ܪ{txfi EpJXW)4S^:k^q~T8 &!L:c>DƼM&8ͤáX2l3lBFo_@v!t|b2.+f2FY q!hЎoq8Gw;a☛j\˛>x !hoº| \kohTe1Ϝ2t$"*VA_uW%\5F Az3źWGWQW8B&r8a!V8߱V)"sx!cz;fOsH61aujq:J 2EOPx!gk< =qZ;d75vn 'ǘ!*c_Zx(YR=GA~Maq ֆqZG)lzFZnrFVGti{}Z+S  M[;t P ‡{ﱝYoƩOn0^??1/]>v ;OW TŅ!|e(`LrxG%gO 9y?j;w0&CBxa< p3RBD gD}g9p< =gnޕ7G[9#1B l:uu_ }HMpY!4RWChl Mͽ\K6Gƒ^Gț:*‹; ]܇MŔa 7߆ݷaI-Ulo#! 6:\ n>rwn{zmu e~h"Q⿹IU / cBE_m3 ⫥WK.@B %43+fr`fukN?[;\WN%. _wӟ~?ܺ|e\ 4mEl w7w 76Օ]!z)2w*/nKbd}\N/wR~8"7?;?:"Nфc`JNګvS[!A!YDPNP:ڪԿ>k8Cΰ_N?ҹ5my( BpaF9!6BxCӃ »`tXժq묡0o)]C K]/Cᘍ!Y?@jC`~jEn?@!M? yCs%Ꮯ(00j99>@ף6G{tho HUT~PO\^V%!Eۛ5 cmG^7uFc1++sp0y[OyɊHln FՈn Z2 ( Dn\)s?ʁ|_O?p3:!\%^]`pdQ !,y&𮃐(ԡQ A|`M*Փ=Zi!EaA>+и׮_R^oo~x\yi×v=|)CX3/'(;/^>|駟ɊabBn'X7#/5&2Hف r)tH[[\Fa/s\L\4'(>Z`)_kB EfzM#m )3-Ǹ^%(@scmk*!:~"QİC.|ps>s`6 tVBnT ul157c0?Wviyk@y W Cހ̾gw<Ϟ99:6nuGt}tQ᷂\(ɝ! _D !Zfda ƿ$R:g`nkkfkg%c_cd(W*W4QR.J?;=m{0ׯ,>% $Eh K))P7,"+6yg؁i=p]@gX /J?{޿FZ X`Pdl JTAI!'A MPAkA'D]1'Eg۷g Pӣ59gOQ(J$Χ n:%=`͕@87G91O ;foz!t` *ao %4:xe12vL[vB؎58` 1q4mS⮄c36*~+oV }-Fp7n)5p>ݣz1A!~}d5okX]wP 9`h}}9Q nuNOݻyz B&~^0 GPHdlB6lb\y 0rPd]V *,~K:(t *!TF/;߃{wֹ]@[>bMBCa<ݶT!46A|îNGuwhFNˉxO1(ᑅӸ-1SO JCA9`x1WTDI1-ZAZAZQA+ni! <#ChWfh]»Tҿ%G*=yS|J(F,8(\ – As [?Ay~0VAc߽ރ|BPCW\P W 10c@a٢C:7ͶVS1d17ǠHHZ3U@tYABBմ>ɤxy!骶z1hH,, cx9n!!bptU(6B˭.vT~-HTԠu~G6o} 0XJ(OQNŋf . R9X]MWy1ƊA>ܬF1+x4lnF{`m0ȷM q2/Oy ~{?xiNPl4N)!\QpW06t4-¾ VkŎA̓G dh(V[;2EUl C(B贎a6f)lCʐG(i M@jIwc6=D cP$Z62*v(2#{!IJ >~B|3F G1$%d-FQ mb]y__<3aSom{_n?.Ls7 l_Jrnb|ѡGCܢZ5Ė`no1^c[WbϢUAAa}DiKvgj@+`7QBİ42WPBm0xeZo. ҂TМ:G3&,6khcAtY#ԉaB:_qJb; "QM䋈H |%8D,#!W`M}ĜT (X=(-$UcrS+ C唙 YO>#bJɋdUt3P^Ng0I6 od@7 AK|y&d +UssNEK!TީBЈҙ&N.̯m$*n&n@|LI5*s-QXڽea1"K\+hѺ%k]lHI1a81 ST~>y\ruP&;~{fVVl\c~61hCVh`2Cu!$:9t:s2.yhOm5SEyL\L6;R ڵSHh} ,֝D ^DdX!<9(E8JPA91)qw(D!$ 7Bp,/(!<+a?B30Df MG"ا)`]a蔸IekGN$:԰O'bZBC9IK L0b!첔$H8q^H1*-JX+jJ RcDa8‘!']<Q Ch[׈+{r Fbck 5[d` 6* 25IJ5?>G0,J60Ñӆ)ЩPl:X3M`/6VpRqk5!*xt]AX+;B"N #+ayRp|D$%DD'M$`ٟ77\zEfE\TLц!z˰A7r WC3@#gu1׃\ek쵝VLN~Q J?BovA5nb *,ZBHV8t(B$\8:+ yI !et`x.fR w!7Or"! Kz8b/ 54J D%*j PzN/ 2J_R_A!ȓN~8sT719U[/$ kZDoV'~.__ CvBUr  acdvwပk0B!@iBFw=:S v lMe2*9ԟ/c=]6 !g|.vT j +L6N-w AaPe*s*BX tus(btz?{Wi 2U6He]8W XPBnlO"!' ZyIXB$ 9Ia1:No] –:Lr>Q[?śE '8$'  ©hT| ahn3U$4 !բ~DD3d C`6k '^@ۄ@\C^dN;V0xq,6OWLaS5@ N~3łjZa d#=aW[P5jaQ@8`%Z?X⾉\C4j?a:W光} a:]Ml^ a!F-e^PB,scb;3aMOQ:b >6{d ⋌ rh*ƛnGAldn#\d2\ IDAT7œɨ&j{Ԅ OkDt4A4`:nB4p3,gɳjN;6Z "W 6Azi[ylvHߕ /`3_'e0{P0{?_,A@X5̌d}HEz=W%+!a}c TI% N˾_nLBaPyIw Bsn6A0;?(VMj'=lkc+@h"IH i} |K4IJ= 48tF) VӊӍiS 70\28d V[ FBN4ߕ61-a.=SgQ8nC5D&Ζ,)a?DFSo_7;Dž%ʒ}*b&.DFnO6:hAB6 K'; $$Y [ Z1:iY el9izr>Ϟ֞=DyiRυ,#}c aD!cx6FĻm:~2LEXX b 4i=I~h-e a$=:wwe'1Z(ç08k¥jSɛАL5LQ4{% 8"Z|d9:  ~p6EZ g, x;vxt7?61KBayS S xIB_*3EBEP*l6A!ML|9 cbPBzGFBadB_boTYO\3(!IE%:MvKK%%UsO\j?֟Yq CMQ7ng/Y۷osx6h}oE.  &nC;EtoHf*d H! -MOr~淿o f%Q[`1&^d4%&odyVw *WBdhL !x21xw}Ёm&'c݀јEtX 1$Zڳv|T^5s׳p"jGΠHW˜X ͆I+|bޫ2~8+LcawZ\\YYOwfPlU wT}ZC&g9F5+K$b>+`)፨?b{ԡjqm!1eSipf R#%lbƘ+hU)Ezp[SB0J(|DYuJ5ᚣ~mi ){tr'2aRxă#c*Y^ tWTݟ9%2G_6SA4*h2#^4v}D)((hd)B59+") d/zG&o!;*o\T홶bSX$DaSEwዦ$dM ǝ$Pi^:Pߋ_hZJz=~Al~sL!3bxw} ^HdX 3G:ݳl~XO2C+k3Heupbgi3Q̤ nJϮ+E_ Rcn}|D!1BaEnh >ASjBd&‹ưjT8’-Bhw ;yh i! LoZ-BiU ߬ٷG.C(d+Ott5a7 {ί+(5^'#"3deeP j̀$(_pss5ի }{'11 ː!&8GtexZ3q@H^hۋlC @!AEO :!ntw>^SnNS}JX |eV!LpOYBa~`D6viDyQ mwo߰Ox.0-ykR0! ,2rc'⬇@9O$.e; .tH,@ :!}b!${&ަ˦uJw/BpGQHZ2$--Ptf '&^XGP;t ޝ!BILrrg򇇡 W CP&j8BÞ!ݗbG[- ;Vۿ;_ 2?*A\\?:*Gqh%xă׮ B`Hҹf UBH!]B={2^8E] A0s)Jså2Wٯ˴Dx70d^oiyx˅͓h"BVl)H %$x^X ) px( SYM۲9M2,AY P"gq,R^ o>_k2걵RwLߔZSSSөC)@wI!BsB5̇၌fd yA/Q{\V0=f(aAHȼ+ [,pQ/()!o]lkɅD!mjvdGm`jϐNР;&w01YZi,G/g ;D orXTٹέc i~1NL D5^}=OW͵Vkھbh,c7P' ֕)R P8W:r8rAV&S`qF)?x_>{nuH"a{wP;ҙ η0Jϐ!fZjmixB=jɏ3M~U#[hQB)Sf:iE$8uRe% H {LppJbfg&2puNvK-3tQwxH!BC ']];^$ bF;WMnEԎ>~9sjbJEDԩ\f*iie-dP{PoEǖnkɗfK}4C}[ sVEZݜaE[ ,,\?,9 ٴґfCx<Ļ{B ZQ7H&h Rfl.U]#C]^vє=>>t4e&\¨[j^PJ AF }4ϒe 'B l'`{6B2ٯCxK($CGf(! e ZoxEB!WF3EK5 ukJ bc#(]SN!$Ne\f!Kڙ :mC[{ \[asD5lR›{Aǿ0fi )չU]7c BC [l_ Nfݞ eT\Mj? fT,}cO@/:ME} n _+}i%M"vd`r aԏ6 BާQCa[bXnvqؒ:Mj9$v ҿf϶_ާ";db?QP[li}KNs8X?:0㦩>a -nтKn-Ŗ qE ؙvhAT3))NrLm O(zj{zZkFQJmRԬl /g3X G=. Ѓ7H( ainPT[5¹s@HGraOg:2?ܹ&A $O j;א@}j&I@9Om:Gx(ğ)ZJZ $e&˺?دps ,s,L:(R1Aޅs Sd yɿ0#Q~;@BU?'ȻC 7&s_P,|fjkhZ(|S`|)(K?Z K_W݇LӝV(_oly[Zj[뱬f̤D!3)!vy IDATț[kk % cJwv ]!, 樉—,# mP>/'&IsË r^J4!<&)(9Պq-gIX ۘbzs"L^48/L_VE,&a  jZ,߹sӧtۮ}.^3'X%Sٳ_Ȩ/!.bMJ;X-$Ǎ>x ?0t۷~^̙i`e4Br~lEkz!7xP,ΐ5 %[4%NA{LG:OELX۠:rB"QgF:25ܭIS0٠>-ZNBs}>ӟʡ$vW!p7)!7>P6 ]B Jh8E%elv.vw4ϣ{vFpM}h6GBˋw5j>^uuQ!1 $|){eUN~ոgy>|:Š6Σ︢0wl Eו`>cܰ7ЈKMԊi@1RD)2ZW  ",9J;#;~M0vQ;i5AaĐN@F0,#m{r=}/z[۳o=.Yɼ@Q]<3|P%S1-eR߹C@P.~B0(U3&2l5A*qK l= jQ9Z}308vԹs ؟*j6PL֊Ь([ V||ɤO t Ce^y_m١y INr'ol*tkEG~T zv >::vnhbnx` m'N1k/{BO_\hoN du+FeQtBxckk@DI~'+}llj 1pAawKk{Fe&Y22ynɤ1<ƈ]* 90DkB!C h`PhPnle# aHbxqt !^~c4C97Pqӟg?$ 0EƄ@,:>eyr5BA 2!FN'r3r}>mkc㭺Z=ɮ'N:N3AaK@ )|{!mkrPc^BuY''P 5wk?(b啭;zqe-TNaJ\LD<@4vP < UO;stE0T:pH&՞j81蘢0)x= ! !Tjw݁ %T&],Ih]B񸆐OqzE4b^0D'94CQ:/La\˓\ԇ?&7|{2MSxj?) lr, ^tt6ZmRqSw`Ak0F91s`z4fE }r[t F$mh!,a}Bm~[zJuE37&P= = D ™tQAڋ(6,RO=2E4GfLjH!a0*El w e#4"]~F B,2I_Ӡ ۢ+`Tx`5 Ƌ|޳g Dk}B M>)rĒ8$ $ JL+әgD LPA5.Jod|Lp(U 7@Gdp:4KZ d+J'b)?m6P .1J/xczST mUڦ|G!66E ]n&Mr1!\"e_BSr97NǓeCmO!9q7v?Ia&[JpQ-b,:<(<3m6H 5NVG{(745ԎaJ5`KP n1:y1󸹵(5*ACc΁ؖAODZSLĦdQ{`1SU@ڞPnC0T-g.q-OHə=M&XtCg˛$v4&3pɠί  N"FGfD0Lvn)˺d29y|!C;9kCݞ[\l*#X&!>Q~?E -ҍ!dO8kc#)OhCϞ=EwPQq3'Tp N  c{a Ak܄M {x~x sXTu1/4f3LᝊnffWw74 $ŞbkZ8f4U af]Vvߒg Έ[ԯ\${a^a|M Xmu4 A@/̨RN.7%v B[;Nؗb'ݝ\  B~G<@wφRk\,X }ez˒@ ;6AI 3R!DzRNX`HC;)#I0FDb6E^']f› 4-N 4Pz*tFrTAԌt߻Q%$ qc˶tPR>'rXEh$0(¤2[0frcP"k-h2̸FQr+f !})ՆC1IHtOdR-8N'^Js-pɴ("{B+"Ed _zQn~G! מCH`^c!%qCY fY>CAX  ԑܣGNS'kQ*K ź^Dۘv.Y%띹BrTJwv#q*~dq2((Oª+C?9k:/z^D4ȣ{txy.f珆p v0%L=,sm_P #4ߏ(AxDdh^{kkW}QaPM.]{0vv=Rf?Ik6B'!mg϶7d);S^> lo6AklQx@.72aA mr7b07beDaS{YspcaD- G$l<N -!ka#QaH!Ѵj U0ԔT)AZBo,B&o)b}T' v5SRBtG,`<> C̔¹* gA +H* 7qwQg]A"(J o뷗yE:W/,#.]sVS`e$!hnD3aw0sG |$CU# d1^Rϒp*_X^&%$\#vZJ AJep}j]|NT|oL^cSl*[Aa0/7B?LT$OԅQ -:i(k/N}*)?73 AU|Jv"7G8A̮1,ll6(Ty IB1Ha\N+1lsr9GY $ [}-}a:j̫X%dksam3S|$} DBu% '&>ȡx$~Fw=Z')%3 ;Y EcN-xil(QV vg5rAa$3r#2JlQ5}HSx2QWGHoo0LrF(8Ub0Wb0 TryjcZA3H,'%x*u[2 eT`T;*WBe"~mHw"݀ܒRhS $ʻNZC̺K'٣0jGJ,dQ:?BE! {pL2عSSlGB<S݆JHp(j,w2Du_ic4بR3 Vf5 Zǣ#\Ć%IRT3UB W"JNS]?(Wp 3?ܨ -xKlh3;Y\rnYX n0gpi$v'NUA4!O6>bOxK^dWC5 mk,/"_#m~i}q% )jJ؉bt) mj rV hpa6W*]r A J-Rl<t\̎ GRTpGaEz*AА;dsԭX ''KV\QR_ :5$8qBۣTƫ0A( 4C[$S:NzcUQ h8t5›<$L `~!khf : x aʻBՐB(,uBU* HQpo??/)I!Z'n̡JRN!DfL HKHRf'j4[1y1_Ѩ)תhH#* c4Pz9 Ceǫ9GW+?أ=j*YE{,JFYyh1\qIIr4Gy.N&Q S(~)~B$gw|A2GG6RU t>R.!)Έo)lQ3X>[ar;E\ԖsR..]_",r|t2p(CWW/Vg˳%:`8<QXbpv9.,T*Qvw:,d:$Kl)i3ɼA o^jM$] uhДe|Q Yao蠛e[zr$Hv}~6A?1D%QEa7za3SЦ@Bp;ȓv,!) @(X3Xc2t|g ܹ= BGtIh4h`+,Ҵd>08ö17dѨHa*hybjʰ@u"DaP̲GFEIC;0ƪ3 `ǠpT*b (Z;͐)pxXdR\$u!lS!Ró1i@t13uv"% }rאJ61DJmSP-W.Q:F:6CՙRo~̗wY"Ve^z:]o=1L`KKkZ,r;wO> ,2IQM5۸ IDATGe=HV*Tjsgcq'[]^ؒeY仠ɝ7WY{]f{ ^4Fa~$֛D\|zS2 WSPL#,]Eh Jdd} ?ޙ3ӄ!#Ư ~K#`A,iO?wϰ*ZMP(^;wdÇ i?tEՇ>tI>Btﭚ='z'{*b˔Nse2dBm ɬ3uQuμBqeMI(cTJwW\{8zFp9vih>B:x_=j)a]^8QOqsT sj&pGwWN];#$+cC|y:mW/׳p+a G뵽^Ã)B~xSqx!\;fp(D7VaU[?2nڀ W同LD ǽeۮ[6FJ%ڿ[߹o~s -^臱lfK(<` ` exR?䮕gn2\= [4 @%)Lbiڻ;1TCD^ ~tus3tf2i\P|O?~pRKi/wBm[)W h/Dfcx Kq9 =ھo8prݪnm"@߿z*=ZߎDPN*Mcg6ğ=/3:$wX;Ù m2L_Y{ BfA2He4|!޽E \GS[jz;`@B{ꋹ8~gz6Wh%Ad%V5ِՈ|/OVRc-ٕ8;ˏӼ@![ pp1t1hr _`v,e Ozi4G7ڡx'6k3m<#Hb1bcL3GU0S,m;jʿ$_8 q޻&N(~%kwK .k/)j2A +t e2O{|K$gv!G:X[{ꝝ[NYP'KU!.M u4_Ya-2;ۋi>3?D >^q4=]^)WNFQeEph x?DE<\n?DIUޢm`#tx 3j>NADcԈ"p"Ls73u;#3#$qp{!mn C | GF_6w4 c:_(t'9$\I6.J\)X!$<[H~𔘀S.^J/?}@.=\TT]ƹ^!tMAS^2<›VCGW\6[;v?Fƈ<0£2,SCW} q<U -" UD%̱C{* Ҧ f =n`cB>9?d;n  4k-+w'M2xHxtOTB7Ab`=d\py w%A+¢%g'O˕  )c 6 OKJ(@]#B+7+14ۣ8#4.JCh{fG@B0 jLؿhS9z׆!|N!4 MPM괾h»kg#9b|qe::RV#ٝ?Pi# (W^~F׌H1Ll3<(=谩jp{a&>$dZJ8,LC+ԫIk*Y)T^!9ZzS(Tun~?yj>jjQ ib;Lm$'4Ϛvq:F} r*a(5{CV :QyTJR&JOf.m7nq"eȧ-pՂ9 ]ӓ9sznښ8yd T7F}j[H_ \-aQgN&@B!A,{jny'M; EiCH෼Y2sW+qze3ה ޻N2ZI., >yRDCerw cu{B9vd 79EJ 8~' +t9[ Ujx0)CJ.LԘT0o^o%E?n?kA!dTCeO%F\Y;J*vƛGMdYuٟbccM g!:w7VQ tr\I"u-[)knwס'sreI^# qm6.l.FW*uTyT/)|ND^]d$ Wp,BQ>FTf~M@SBt!iZtTSo(q5%_#KbS%ĝfi&; e7:ϸRf3d2.`>Y+I3'0!,,dlvJL&bvn$1 NO' j5-kvO/ ,onvl1K.(*%$/s°FE ?pT)ڟ4',>+mmWQHU%8c{g$D!q! $yjuR9*zyZ̏y zFo Jы4PDfŻmZo&wq<1hL;R"xfVjw'.F@nS CXJDvkYV;O-WQ_''0΢{R²tM\k']WհMU`K 6 F#ax i'wv7@; 7s?n].Muΐ-08rH聑΁P\!8J>Sh/nB5'7n4_.L3joCKՌ4bkw}gYc; ͞<,vLK^n-IU*xhpܘD 5[[0cr]NwQ8w3SA ^Ph6{H-3ʖ*o5 fŊA r`\2xr/%C`{S%Lrs,dw\||܏PL $5}ƿ\}B]wC$A*gUџs>7;iw Je6pza& mW Cv]fڈ0?KW<~+tɌCl\q$'@ ӣn 3 xM]hˍ=0=xd~ rBUd3Q5!#&WF-C% پƜ|fii Ko9 ]fܹFεJ el*gB{WՀg~# xܳ?Y%w3~8V骂<~Ixa8]VV2B'1ۂMU~TK!3>l&W_ ;DָC+_}s>I5=Ł||ax6Gq;: @[ԲX%$5 H\}yK۹bH.8[Pg 84]xQ̧:1tt g0Ql} 6)ߋΞ )QG >x"glV ˈYu k}sjk5{|~@AÆCRT}(a=6FFɓ{VQ<2#CH̩zZfB>a@)tN30.:1p pFvK|2^],Ty }VWDIy~"ݟPl`e!o4MkK=* oARjoxER–Feyƞ@x=sѻ_~˼DyObybp#H[_=u@@}}-Ž 1PG{ȣGWI1֏XI-˳cODM%dFƲ(SGxC8>4? ^1E [ jQ0|`@e,l`_7۷-k4BzکTSq 𯸍Bpk 8(LM:J߬UaJh57HawI'1D׵bZNO+ ʬ.rYY<!};mPBF?,?$9udPϣ%633=NqnT@x !jm}@X~@ g]5J('7?=~|;=۲ρkeÇ\GkxxxvΝg^@n7h0ˠf%n3!kM IDAT0/|a/x '0OK։v]ni[H)wEd@[>(4aʰNVmYP$DXz]=;ׯɁڢ֡I6Bt"0IO4DEA͛ؽ5kUFon `,Ba[;)a8Á![@Lbq/nڙfH?ą-ژB!]$:qP}w FŚ,셳:\sP_ 38yIbg\OU}dC(eRW_[%3AC ܹ-kmo/-=yX7.ePHg+fBm!ʹ$]IJl]lSt'X>-Ks]{{.J{!F)_|zjϼ #v$IPbJE[@Ed3HPC%<;9) ;ܹ)r8cM]lGYΚ UȚqU0m A r[r,Ff)aOZc7{x HaNWZ$kwﯡuHJ<: yW )Mӟ6yϤ |tC]zfHTw,=MUYt/~'׶謖Ba"_ܽ[LN}A􃐼wG`'5p&, r,vFW1n>H.!Nb ٗϱ'nu2~֯ N9{ִ4zj2OX05 -:Y9ⴳ# pnΏŽ7Vy} $p!P󣛮n yA R V=~qSФ'|ʮL!:B#C'2cN$|؆<+rb퐝|jj՞n>P_|>>,!.Nxw.| ?߮RY*->/E0P&@p.J TP1h#nbmIf-bgN592|v̬F+5a΀ZY?RH9LG2u 0|%G__Pm&}A rܩ+ ]< " 3zp$ B{nFR)i6{u,uODG6=_{hIg_. 5RB5 7|k|m_R|oEӐHO=uʩبbX.M[)Z`A -/mgb$hqA>K`Q=J(>Z*@pՖ\v )t-4#a9|'O"BŤ2g&e-p:I߷%qP^r% |/2 V8.}#d>&V,d 1r@[[ I|3X<:yKt-;-ۧ.b' 04JhpK~C;,DHbBA dlnT;X;[tN9V1̯/:pΠ`DkYu*k}~朣1PZ C/ z h ",x:JZG~BrP-c9T_ZR"k- AzoocNiO aK6ۈ?>p!I҇P3wF.QU IXJxQfEc.=drxBEAÓ KXR14BBQЯ\dE?C(kpv MlfV:! b C: 2p ݢ9ct9j7j(H}jW[uz1MO M`–m4g wW 0/S-8q&]2@?‚ LQk*\]GTSM!PξC;H:sv윛epN؞Z;:jh7C7akKu`dM3lCM4!YG`F( Ҭ%b߰|2q OYs ‰ |͗ĉD2C00Y?kPi(یɍ>9ZA!6!*ӱiwQM +6&{4L-HjL]KͨhY7G[} ~Fw4*:g' Jr0,i^o6GakGK.~!p鞟I~M'v)  1.RXgUpŧ0sB О$%~E*0]7RRpL{A$Uf\63Xz.Ʈ &ZV9{ //(v2hQAN¿;ckmY-Q+*jKIC ?:MR|Ym9jЀr`(Cт˻S%TÙzRe&m… h=|(眞W/H/s{׷ a6cI!ѥcCZu֭%6HW 0cA \G IrpJwqj`H)1˛/%BH9]Bi;Qh1s/6ԎR;Ĉ$Ё3)& taVBc|Z3)%l[Յݻx( `|:{ C>} Z` 㿤Sj8A(,3,P=$5(HS5An%q7dYW+!!ȟR;.NJncT(dB>'ÀXleA;0Sy{ @R/CCRitAw-na{XeFE! \PEpO(opnڸx+a t9v?\Paqg=5u׎U9g' 91H apUK)f)tƴ54&g ̡ _+S)J-a@\Cn{zO$} mrɍtHKOt82`P)7 :XWG.GgJ#H/,§;Ow$y;b1ѹxÜa-CiA}Ǚa g6&:z.pomYB%pduA8J-f#$6q"b%d C؝K[6pe0%DFZȔ[f䔁0n1smDT%ɞ.A8t%hM>xţ86r;R w7b0O%]B[F w8FTs ѸP<nuBG JWԗܜP˜Ô!$):CbXG̞HYGl %wQդ(k%ܒtj˽^]-lI*2ٵy$ Y u_Sɞ)}6C)7> ILtNpqq1|A RWSjnfX<~-OuAx,At%bD }t7BxvsH\fztpM"3oQ"h+-kH7(tM'BIR %r8UvUC &Q4lkhZ"xP(6Yk-CP%>Aةb ŌShAGط3Lj'/6=B 5Nh83g;;\)ch:H!٢A|XR kE~ _qrpzM!fsKk51q\+aML]'!TDhdE"z eAPsn k݆d$ P~!9Czb1\+`-q+&i>Sm򅡃d6 1FIESxH fDpgJ*>P)\a\HHm%U1G5 pU¯[6[N䃻>sݡdoԢ:9`P~\f # v6U!̦ P?_b蒏>)Ԇ!ob*"B< nVY6I:S2;5KiN/: QFjyMM2h]EAKC 9FJ?@B_&̩[96%k=oZܓR Y W"ɒ7Z |;hu+ݶ2E6^A54Hajv樢(3"QEax(.0;\t`%m8ē<yWClIrh4Fmخg'rPt:N!wfT !9B bjP湱Em3yqQEJfHfQLs*QÀQa yxVU›Džpc\]Ce+[ p0 }d9tYS|hB;@3CTӃd!Qd,0^1\-캩-Tݓd^ R$)PW6OJ >VL:pyB(z!5HGtfgGfpae@P@kPR\{a ak߻9/TRcC8B>![lRWF 54S! =EF tQ C[{sWKI E#F9P +`si|%9"UpZX1 ;aa>&|-I`GTGKV6 N!G dȂP qArnۤ;l>KY  fqM&$Մ`EDo@ V4F;YLJ wWmumH90 ( m( #GzPmіWqǤijd2")!Q }#B0[O-qK b-@oB$,`јP,Ivv06F9g3xNR0J!Jljy E᢭}\F 4aSD682uv#|H _L(Dl"aEXDžpc Oke`& &)=}~7Li0c^ngznil.!)F4dFX 2 $䠆G|E4jF̂,oYQc{$E,a0` 5JwmAd1!;PP0Da5vۦ-tGyj>*Yk|>MC)bp}f]u0nJ!KW{Hٹ4<ׂBQ)!Lh?8YO>aָ&jV 0{W!lyd2Mb{T!|(P84TsטfY2ȴȓnbוDr"%?6HG52J3]Bݚ]R^\]$B,`1?1RߖRK7[HaT 5+n",plN:N|Vt!u&O/i +[O6z >@H&+MADH!ys`x.YSOO`0B ECb2% !SPN:GOd%{p3SK/Rxw >,ڣC(IlnA/"2y0P>B!Ϸ|7-ޭoI^AIEat1$%Ik0ӓe)9ɣZ&)#|"2qeRMZ٥|PXBaf,NEԜY4%=:HaG@EhfP&ɐ3!؊fslF薅>o !Pf(0c:!tg+ F¨G65JjKԫA,oi-"k`R:R'oJ"uiO>ޱNI".^!,ӥ20Ŭ8'0G IpgY1O0ͳhlq7HFA:A#2H%Y\QUCmV>#}! a"J.> ڶ藇)j/" ĚH__^M7JTu1BZsp>@ 0,KaЌ5 ¦qwg{uES,70 Sѷ7xVmS@Cy{f0$kOyf0ɱ*iXBt#2e t:lo⚲^WJh >5: Hv:,Cw#h(Qfi!3nr؁Da<؛pij ]:pQ*SB2 |uH \ ; QBv 6X rE3(Qc4=р^XH'[Zt{ p';vq2Q|!zx; #d׏ܱ*7g ` C_O/Ge0NT s|COw%||oRB( A3F#7Bht@L @v_ۄIQ° Xp5{Ljɬޖvf)Uc!,r aBofDBP5,Eyp OagA}B>D8& ""ޠnh ?!-y.`蓙M0 0*y aX\@\Ezp!C# ǟNNMMML 6-Jr鴾x|V 9]5(r <,`ޯq:BW{.[DeZ+ߙ؜mO yqLaE5$S*WQأ)$Wh\W'+ u<#-' a2Q#mJPB\)+~fpjj0$B sE)}ni(!ycbo[}Ba\@ E:tHXF 8B/ŋ}WN =J \W8vqw;r}&/ae +r2J(w,%_?ffg"U$S?'Ls ;6\KU¸2tP7^UKm'JXfA ",S!ϧvA݊@S'y#<m¦^F0h!r9 )xCB*C$':np;h2E>2 ݕJV|EȓKQfר!a( nxѨ?o,0̭K|PB3`I9BS3JZ$ez*q 埙F^ő+3 Kqoǔm9dk_k4;KF | ՞/o5F-n3*R{҆(@$ء 䮻5i׋zZ^?p*.ot a"hVs>M5|>AM ɍ jaLAPB\[SD<iS&CDb즭)E#tQ`I'Š*TŒB4KxEZTbp{J S lEiByk+Ϟ*Y~ѷ췹u*aAJX 8lC!@6jݐnvkX.%CRQO` Opa (XQ'rټt &׿2V.&CLJpdu%+1A' -Gb =hmPci?"1`ICwfqOf +wh0&t~4^?=51Nc_y(`x'5{SH+_ Jf ""LN+7Ll"*$sS-`~'<hD!DU+n ZG߾z!!бݭgK#K ?b9tc*oh5*kSutB}g1D,.S’BMZ(2Vtpjjp0Tl-1h8ZDLa]>խx|qa1!!RE5DW%Rѭb(RhSXrdB$B^ N (y5GI [[*6Ic$ 3v&8i_h£%3N&⸼JC}!]tP=LWDvbA&>\EGy<l|%@LJX֎XQd?آY"He0uAD6>J$ ^;Q#Q0j-m)ECPXVF tؤ;t`ٔ Z2E'L-D]v2Mq{ukV)|7Fve!qQ@$#bx2HzQ#CB[*UjP\Xf]Ax#p<7Mt$)Cu JްZ6zB,~ppڵkS8G=Eh`[LcC*_}ps.O>$a0wF kLR(a6m \v* Ah2%2 a'gҶdC: )˯:ARƾ̠ep!Q~?Üaa HCc1+*F T:B0'CQOZԚ5kŶJږP}+gLb`4MO$YK;S~098aٙ#=5*S([lC(kJSД Q DKu2a&\CR x@ IDATn a{ ވ7Ƞ(S迵vD<fHG:w@81%(F$c瑢f(~ ?ؤ&DjR0E'|1e[-PZ?tQB+>S%K(-m;uO%IHZO@p/_GIF;—R]Z^ gf"uDwj2HZZVB3?zUyu aۥ+oɄU(e 82M+BQz&RB(\EQD=RbVZd`dda.)kµIPhr[ yhn ɳlEVt Ѩ ",4Y ,=cݖ d%d ZӃQhjY f^c'$Ds|Â3H4/fyA R|:/}o{vFQh]˕\<@TԂP&![xim^nX`&^NM2}cmڻ/ buOt" f&dڽvDm$1xw {BԯDs+MBcyYj!0u;9CqכF"fpp41)Jr޽;"D:J :xwR5ϽL b@tn%,x'hB rLwBM A^|m$߽ bmVmQ}UQƻ߅ dhf Iݽ74`T3l끡w`#=,=H fЌJ׸O4zA dfhxbLwwWw.42JV )Yc%&Av%4B>>:3wB޽y.M NoC@0j^~i,d0@UıLkk\b@k e@lw*![wf¾>|1~ׄlgkX1ޠT*Qcԟr|r'YgX/m&"ˢt-Yՠ lektrptk0x璘A Mh N1Q:CHX!5{oO|JN^rqLa*c59ZYt( eZs|҅>R ~A&UtI$B5\?C%:2]]B&h^MӣkiD:"'Q+AJ^a˳<-0o7WAaY1ܲ,utZ'o*$^^Iխ}i;n8W_}ufƑh߮{E^~)Go8Aup7tRA Hj掁\逮utxV,vPjCػͅjS ZA?QvYPK۠Zss'`4g1HńzQa6)YmIy%l{d\aI 7ohxI@]:!>!:y3CAȢ^fmlAXd ]++b9;cJVC(VLjeRA[!@,GG6B-J{J!A3 X E!p[N DCޙ-X>ن$D=Vɀ7hj4u"WZ[xXGH_߰$PO&Hӫy{rsTztj 騁+hwea)Epv 19dpVG薸Z {>H/?iBH: vve^6P;> b(QT!3\UOJ5 Rmn~k|Qq'YtǑ`a>&q UGYڣʿӈhJ i R+u$S\t\V39T!>X!/ά&饊hn=VI#=!}\`+0L]] Bv- uktҲ/so{xà+`^qHҥW\gRVhFcA+HYO z?c!.wvZ ̽'w3==ɣ!ǐ9oMt0ޙj5}0HTdUB,V-LO(a=;Q[I0cB0gNt@wbaVGql+ ߴJ Bdʭ"-TM^䂪`67O%,u@{Qa?@ѺAP[YQފ$ɛk!fy NBj22$rt0@Tf((]cCAQ !:ckSP ]m+c Q\:1 J$k'iMt3pjP30I7%7$ktp+>NC!ݏ $.g݁KH*!4-DĮ*^zd #lR 4=.QQg0zU-i1f>̬4v:$y#JPt}&p8u0gj%9bz'GB\^1{o=BVd>&%"֨ jf.0FنЖ®oQA$5T@;l]SjOqߎΙ >9f"†FA@RQŢ͞+f 6w\G}5X({-*aKST!B&F0r_"`. T-2.RdrޱKNܻsCBK R&Cƨ).h4}|.1K$ԕ{byLj%$_N5@|Q2A0yDMpNA.o6\' mA)9bcWozpP, ኑ6<Ѥv<pMށ Iu I]GQe- CΖԚ072뽮.Qg lf@Zyl:,rcg0I UΈ^ۘH Gweq~_ CoK}Z[-RxQ=C+9;x]!Dw:^ C!d,Y Z軱.rIMX2αV2G'yKrٵAVB„)DԫtrT,Sՠd萄;Y _2wc'b`AؕQPr]x=|lW663+\6qX 5&3.jf6Eumb-GjD{0 !p'C:/z|~˵9 7AQ듃2q@p\JH~MƝ$LM')aB[Rg,oJ&ۄ8(LDۣdH/4OÕ 7ԢZɁ֨7W~(p)X\|z5 awv;2i- bB(OdV ü&zAAl؉zx^(5O1vup͒w6PvOf|xoIHm&h`+XRX!}4Xh5 hxj(#T(T%XWB8 G䞦ҙ0`^;!r_7!6~(بDjQ\#34*zS!L]% = @;ܐ5*VVFVս(f:^ ]Rhg)d{$&l-n,6i!Wz51zv=ntp2oC( zy'e_kiB᝷aXRWt}Kyf4bKy D3/K𢅡uj[zv6!mk  dQ!prCf5 ƔQvP 6HHZ'Xx}_9-[>uksG1F]o)[:ȢFSY m2 IDATB<;ŷnFE 5M^l!ļ`RWWVg(njwk/QfE9EE6ԍb#~dZ(I?aN?8;TZB&V9B:͓¦p $Cp )=IMUX U5q(n4Z7M>'O+}" I yU 6c/֪ ĨLx#k}ԬWhs_*rʡ><|u}P.RzB+~qb{S1!B$cidA%i7dg03뼦BarcuIn%O jH[U S4+Gm01A"X\Kr0#Vw~|p2e$@mQe [O`o SΛQ۟5S̻|M WU 5}ؗeJ>>" U+$w)VR)oPiPMЍ/ Z[1A;9e0ݖ2}cmD9+mZ)<# C<3ǔ0`rn9XR @14sc˿bg;'Ԩ/fݳi*쭙Bİ(j% ! 'g{ԗSL:Aw$oݻ&%;jD,PQB0 b7fœ2a_߰ ѷJ 1sg6OM%&֎ ª 3g¿铟M(k"`g9{MJ%j!\KN"wB2I'8KWE)0}":ǏhjiDǏq x*.k\ %75V)T+4)iT~#vf)QfhNsCE;E 5XwT~Cڎbb#),Ť{'WsT_,R7حm)bs〟?'ch&{o}M5:ڴy3~h~t$AbgR+-J!Bۘ@؉ہU"OV9X2}-8B*W4X9zvc8Lm^A<~YQN{S0 Ʊ5.;pۏ" E lE%CG_Hϼ=|VE@(O(G;(a d`[+T1g^q)h_=vPd3`)sq!%n> >"f<>WOY3xqkEZ0le95!3z~^w_ mD_\BGhb djyq⩆b<{Y WON9[_♌¶|{0;;%4 aS+! ꠘI+C1̈́b+ Cȣ-(*s_6qE!|By}@nAe4 \QJxTIFg3Z yD#'~+><'Ik\FbĠJ*0+R .Vp FP-R| A: ۿK$!ݖ(fGi&N\U ɤ RK(VSޫ'Bu0q#Z06D1LJGdBPWWGr>R9xp%B&"cU?Y~^u0HO62'b;H _5"'?Zhbp*H į&fcy5]mt~;.T+!5ZE7|+᷂H "c,Ooo4}p\"'g/Mi<;sk,RNJNFUE5럌DK$STβ?_\jUQd'*FvBEu5:aqi6 \BSGx3|4DO>~~X n g aSG zCaA( ˅I m2lApݜu|\Z\Cة :8iPPH p7 cF5(IJи-A.8@)S?0YLaWkTb! Pn@lQBLG)8Ő (x\ dS8,X O=ux\NrOI92%}}/rwDS'$0C}vXI?N;gx Rn!^kg*(SQp>i.<6-V M׮z/.™FRn2b١F \.q3390_D 3΄?[<2KLtnP~jf¸l2T8B6*@~U-&3Baa5+%PH%#aM Wݽ`^b%%*bJ Ǒp. Bt3MOFT L Y ;\1#Mc^P5d El 'T̺iJDecG^u(Ax OߚgPM)a7`Fn8)%y UQO0?81.:[  1+!ϽDZ7 ᄥh< m,ˬvSne2ZNG=f@-(ăR9| 8|{U[$np$0 !.iBiZ ff=j㝝&3ULڸ_0ԑ V9JL' 9V$LT q5 n 탃Z&0 S) [dpp)@b!f'6a(Y '!JAp~,Pz硿}@]i a$lUzT[zd)w♣(q5j,T'X)Gi!dg~-:GABs+TtTfn14=1Zi u }>{y%g@o΃Eg"C89YF>KTLJsz$JӃ )?^#`/N^~SieJAjBME$}1 hJD W@=!<kǤnq-ʡ au6Uab{y(w-\1 6Ax1#^fD4J3q3_.@`t},o>q 4]mbp ]*,iKM^uIzsS.U>}x~nW oJNLxt ŴίϟEeL!Qxzuy>)Rl"!E…t&'?;(xһ T9>BJUeR_Hb(4fAAp b,!r%+휈" @8A\ NbDTe(pǯI"Xt,33$Y-AO:BFܘPGRE[++&Q0 S?L8@H 9A8>&ى&)Vfb7sLp9r5 >_|gkPTohlLW T?>eĻMK@ŔM:xPYJL^{ pkM!kt@T_d l(z@on)E2G9ėYz+c2HA 3?I`3r8We: J:-w# bLΚU=@BR f)&0t1Z@/̖^aQ?~_"?Ho&1>q83004ĭsM=r["m!ߙ) 94Fԯ㶀Sqgiҕi̻"5*g+F7~Y2xX̨;)*N!+@Y !M(HpಘtA1u+?dFDAh8 evu`^'ĔC@=8s"rOL L}> oB_opoBTB J r 8Gf{(,w0BYC? ~[FOS9!1'W Y ;DiS=%0ޗzJ<m!rp%k8)!2& 撵o./td_Jcs(-Za^!74QYdFp $Ű g*X B/t`86_D q f Ox.:x`8lxD!D !~N|PBc BWC;SR=5%E z&XCOWk4ʹ E D4c$`D4nAb9,AdřDJ`f q5jUJm!ׇ ;|8E ‹DJȃ!Ths^ϴxz[hX Ux; D,/l %~!hmyƍ ڣ۝;E r!NHg`p& RH.LR$qUо 8Ni) *%s k{۠V$&@嵘Z/ χdn&FA~tbf%$5K v` C G'ghueB0(N( )JfgWVxRtC#Yd).%9Ձ-fS+ᅭstvpbOQ-Oǩ'8/qy3z.RCR!p z_ӘAB(iG\|sO_0> }۟(燀(ɱi]ׂ| R H y%eRdT|k&J53Z0U"Վ3c W=D5iC!lF1= C %*A(7+n[t?A[a/($3ED '0i&j]}p'[ <?;)߾f]*.J2-ab~J2Onx^xnP#op^3dQsRC)/tl>4Ķa(@:1<!pچ#ױx₤a,QGTu0#͹V;1 9,3Nc,ԱBGC6JͤxFP;>x'qQQҤZ\Bp|BCq0vnӪ$2e$ #QRd; dF-mC3h2UIQ0YߪG ɳo( >uk ]DP0F 9H.eRžA8TCHa%4wPmΑ'\x!D0Ŧ:v't~) &3~u$pBHZ bt"@p8ɾ`0؏pE(~ڹ9y_]0D9 00Iv ө u(Mz}˃-#wH!.35B!, 18:1Y2٣ŠB!cU-RXƐ*XLWΛ͎W#*hD)_2IO=y EA[`lN{kbb?cf)Oȣm! K!avQ׿82)!CfWUIqTnsqiG!p=O281ƶ);X3dc&]`|߿4"}M/S 7Np\0D €^zbKԁB{*7ifSH}'QGEAVdj{C`/X}#Vaٔ@6wg& Z|&Mb7o}V}4a"/W7oC+GG"E9SHoq!bQpDdPեa5T*!? 7Gg%EA&i;9m[pD;=yՒP3t>ӈN>.XѮTY sĶ*>=;;{&l>ѥ!W~"c0h%w@{\5H3*W+d@\څf\ͥ- AXyO+^G{fNP ? (TK{W y5p{k4|C.>E Npb$E7o*b Kh\*53Λٝt#*i$$pk]~{~REJ ;]R ŧ`BwXJޠ `` ^XrZ:5\cEZjsVWBFR-Nb_D I B<w{:G CC[6Kl&\׭Yk2wh<^c0Q^/I t~K!0, [%(e4ԄA=tGƧY gD6-EUx4*E#щѱx7֤c~ IDATr>}%F3V\Ǘe'Q,p%mTֶGR]-:%UQ8]dbS: Jظ & ;Nf0B5˒ULEW{u] Ha}QY4BnT- ٙT.- B"KM:Y0iP&Eqy=nA<{|W-w|=Lbu:ڀ)><@!:t;*`KqLdȶ87Hp!d񨥨 uO*7Z/asv! >M@C0J!bib3>'OvS%St0$EB(rq0N٦(Sb1 *sљkG v%c)L_.;CizٷEC7 eJB<FD}sHJHhKH9B2wz:L/wKB!4( fJ _J3ikT5_X@YnAK¯Ԑ_&_|1B܎Nc1d|&tJez.t HԏRw/cT($st3N )cR[V:]d+iŠsmhqR,@՞6›3nl玎GU5*N(_2GwB="}۩1Ww>+k΂dpĄTuwбp@{.>-esqX&4-wD c!L_[8"nlS\ Pl>_A{UJXTP$)4d0J5|&wۃb2~R}f Rx޻ UT3B:=N$օR )cGG+4ںb5:j,V̜M]4D!D!ob.aװ8OSJ l~yϬI=EFaڣ8DѓsAPPq9 RE,Y%B.~oWq-%>Va529n$]~ɄX3L{̃l!هuxA!{:-1kx2h0lF,C8r(Y b8[[4"fj$JykߐAgO-De H ǩO:t 'm~< ;f6>&S%:;hrǚXݝqŒgϾQڀ@pS Wlϩ eEaiPk;^"IbЍ_|X1`gЯU/'1VWlPy װZJRq^;f" Qp\Ukdh$BE3@2e/2fJRԿgFA ߌBGB J a 4!(zH*Rer+==4=GfI ¹! ž8 !PVOBx!|S`8FѦj8[Q;~@}.#C.p04O ߭!YAМ sZФh.Kҥ1 7JhpЏ1ۈp)[7k̪ڿQ )E0u_ =ebS(}ӹb` E GQ $nW,X8})-%P5?-BxѨch!NQ I Ë;+ OS_17oNRȡ('|#.Aq' #,Ż*KЇRNh(a3xOnDb8~EkPhT_OA!J;d?:pO145Bx~M CqJ+_͌E1G9[Jp I0Z`!zjLT{L (M\SEKPze .ὅBMY  si'=M\F@e`P+FI#a!d|MNNBQGm6%RBWcQ;HJ)22iBZgDf HTgtd᳍πC`f7GGa(!j!|zo,?U{]d|'yTB 3wv.''n0fв-+[_J)+' I*Qtg藛 ?U3ڝnٖ)!@2 ;}:׹B.6Y";@!f-v)oD [W0mf)_0*kQBW+ACP)޼ [HBqD)=m!?2=0zZtpg9@l#=lN6==d>u!c+m&Pmo#@8jCvD0n9l6ش؋5WF׸v pV1D{=2FO AM`&@qTj2 D/º'o8)%3 YHCi7 Ûﺆ!X]1?dȔ'4Ƿ;L"mX5Rb Rt i`SR2٣8v6 >^D^Sz yAEοN\|?zmC1x:ٯ:|8n_e'ZH٘bs)4? '^<9 h؋]: {2n,NRx f tK~g8;]CwR5~Iqd^ %51O.ӛck{b,ls?4ePaC 5fQpob܃Tb˭ZhP(S! @)FI%A$#Mw1⊖gעj7픰 rl~QRZ 7t;H=#7]<:s ?mפXr̝?mdN!ؼ>ᜂ5C`V“82ɻ:D"k@@0yUƍ[e ʠ rњb" M !0p=)^B4q$LQ=KtBCg&Q5x gCC  Ұ"ܬ:d}Y% -5sF"),kx,e *!G;lFA |>tZ^^jwuijjj3e%azooOjf=#E VSO«`;Q y<&a!Dơt SX,Srdpa a"|“iR?ua]?@Qy|6 Y.^1/K*2u;2j_A qԲ [⫂ԥߢAņ#aap(!#RcXxYZx=^ߊ nM28c<~fqw [prO!%~ Bf$yɃ4/~gh'$I<9>9 ᳏4ٳQ\[.VE`XewF= A C_ /KnV~5a@ roJy,   C~٠"J ׬^=[* Z1%GeLf Bxe3)l{}G Vy/Kpۈ|xJSRQh~t?ͭ!45Rw3gBDI JLQOf !cx޲>ECCx]PJ9Ӗ + zXx 6s•EJ|&]SO+!iihRVOVE%䡄dRksʞһ AUl؈b  9?=C?0h^`C(h;Βxj5ebz3HUd6Cx \H*qpb2PD}hRXG7i$kRȲ/0DPQ0G#TXTAb17X&"#JK=FLgKL(i?ܴ@ko^?~z+ :\È~ƟvJh!tBp1 <9Q +R`l򶠉b|lg;Ǒo b6MA6!!tPJHVX^^B!,s.ם–:>3jP/p|!\&Ëׯ_,>W81SX 4jpH,{!d)s4"hD7$|AW=HT_*S '<— z /}*2}__o5u?j@wP5;B8h˖^8NNnP>a͂!Ny!-yq ԉBܠK c 8@H^WEf>VAEdp>Lpv qV]UztRKo/؅Я|k ob!Q:M" L fdk#&.Z!$ ,Ve'N_Txi*>& :B7 *,>+8i#b޽ȩzL\A(%D { B?ď_3U-ĻHF" Y&SC'0J8bO!LRddzmM TF,IZK_jgf!KdɖN%To=Yl//n !:BQE. 1GƜKiK7p ښVP >OHQ̹w\p=u9t[6bF!y!>Orv!la߿! BV&3N9g Z1,,".q}](?[BRa?*apH4R,U5!$J Q Svrե*B,p C|2`e;8 ?x9 b)}:!8u2ccve{RxFPm# *YDJbvv>`OrEjesEU3O]WLɅ i&B0T(`YSq^mոhDZ\ pHFD^AM"Y-$hR5)yMAz(DWÄծgwC| 4^'K%QiZhE!sbF67?'d_>t3Wܑ#'M|PBGA{ S)q7BxIQ/G1ľv >0m+Ma{z@y*NF I "!uJv2KhBMgo7QCL|N&_MC/u(04(dQ8OB1 d_a8lk蚌V)kh|ΊLT0 hY-Fv{z"T۫BYMaDOZ~Y#!yrF6j^W9+/*yB VJ˶ʻ 0~{t \d{l(2i= 5c;V !mWwhgpA^2dzT^C1+C'a5eu mb3jRio|DP %$@B0Orw CĐ9m@"2gpF@ר.5\rr4d.l x/_!dfvL (pJO IDATbfy{{Ad>co?ἓOGPz$R¢CLJ>@5/2HimvQtt4b.͚G"41 p&X gKm&q& X ͘ R {##4aqEUQg To}QPqLw,O,7NvWonSE<<~pmӎT];VJ`˴ ^rh-CjcJXgYumomuڶ}woq,AD%Np@ TN^L=xٴ!b&5ŵ^EK!%,[jw>,7] MVΔ4l|FJ:>X併FѨa9! Q wW{<9-|vBw5YMu턦4 RW8WiƉx*N3.+қx:y KV76Opo.y=c!JI pC/%>4Dad FL2=rAR/ܫa0DU !e \fmg H|fEm 3əmD|?s#4>\^e+&/CfsLnx6I+Q6 &i#NC=M!R{+!<7t ?ͭLE'4][ZU,Agi{ sj[f.H L*g"Z 0]fcytTH,\C A2EKxPB~+R%8dH#\FkpUAq9-4q&Em\7*h|ɞE*߶?hR .4D pcgpȚVzqhdfpKCxet*1[A!C M!euhATB'!LYO4*TB(9,M9ŻzKI|jŠ*!Gnnt (mCĐ)d1 "};7#YDju랁ݚe41,3OQpX"EDz=$t!T $|>`)F-)kK (l(^5Dy V=|J_{Q]t> :*'Bk87j&c!w5T,2HtA5,RA{UF)#9A56\H1QQ(qF[$CbFfa&&(4v|ϝ7(!0do~D?!WLWsAnpF1xlB/dk(ihrXUɍ\0Uqr}H!Wd?p_֖dAS:zu!& |{~Ő1 t}}]B!1j8AH.*]CI ,R``=q(N/A T%cKL QF j(T7 b'?dm}}t޽rԘ2pq폘 )VRbeu4%qj[&6 $mV0Rpݹ<Ζ,0t:gU? ZғK#F%?PQDy,*a¨$@*B>_gU5($2JP!#lrpivG wPk$)D3!O(F{ ˔ gHwK5"3$Mx-?rItFciSϏc"66Nx/,B ]i`~rr:a\BG$Cc#L@3_Er,zd_d.aBPj|NTw&oN!"F)z#ӛ# \wij-\o ԑ{DKN|5^o.2HKH;U==HR! &0&p$$EݠRFQR>O z7ע*028?ogD8/>c[s1xLVv ʟhɤ?6A^tB9-bAa%e m!ԁ oNs>C/-N텗q%J$MiPEIp -&ju e {r5*Q /Q KQB4Fެz`$vuz2E6i8TpL.Xkh)/EOys6Ə`b~H;ALQ J΢lH < !sd|͋?l @A - Վ|hHn)RL Nb,1/*?o 8-QQB(|BZ 1CۥQiЋH B|}B4=y%'F׸3" FN )1Xć<Q6{5O5P@eYu25;ƊSVAPͺT>6Hqp R{!a~f,m$XA+=+4'El|3\U)$`_`j<8@AASEqP ވ9J+QicƼ md)ĉ,bS"fsT7l.0j8mn(ᙬ B3X]*:ۋl#]%dP٢@ Rh$ګß#*p; _roY ߬ !FyD& ^ƼOm!M5=>{VFrS ļn]^|<:R0?]L%拓 5Cgta |d+@n9Qmp8A|YH(a?^x(ըyΨ1f,$=2AMC(r77Jp aWPW.ј@]Gh \)C OxT/Tgpgmb/Wɞ5jrFFyAyx͡iw Dm2cZا8苴%RB%f*5E5Y .p Wy*4(TRhВ,2$[T1 FOK~RRPQ+wR <0<k zݗuy<=\~%/BRd~eQ(N#9 |BNxs nI^9/𒫫6U*KK9fЮIhQe{HB aUu>klX+ &Ӹ .А3Hq-ku,D-sW#jf~$MJf7;GFM= B<6tâ̻ ̀wd`x$XnDp!X+:p?xT-ž jon0%@ vHSPFѹn769 2oܽZXC 7jm̖T:kdO (_W yR_is67H`TP$ABPkI<9yFB<^VSQ}Rf^.dz6LH }nhJ&)R!ۢ$-T/:xȜd0i FxBjGfusBeb~bp|—*'A!C`2]m*a̓j0@9 _P%OaQ==JԟbGjTf0`0kIk aHչ[ ;Y^.-kƶݡry~n ^q!"րțvF*H𺽈_ⰫtTUSiϨr0A({mR18|۷8;L íZw# G8˃ T'eB555q+hr H)DpQbE("+bHa0X./%Oa񉤇%L*)NMhv1,:@R}ylAݓݽjbkR4yD L ` mCA%_1*a VhpuJ \| ;g'd !uNIɚd[!춖PZ. L!BQn! ~RCچ\})2*i:,vfg%u"V1$5te k|@ap7 9#{a(B5k3 BU%sw K\A B0HrZ'W Sh̴]#&s'H]# D5zxf)n]lpS BHCNTqC (꤮Vּϖ$'LBzk[1F?QH"R65Ɛ'-=~jIt6ih |9* BTaأE@VHaW۫_'`Fu!\&OiC܌\AJOp|&uNQL}ɵ$d6; o;MBBv7a=k !&0cna<@X`);$ /S>}';09CH'<7!B1(ۈ=3Z'8&cI0Dny&r Sd iN+')S1uo!']SQR^Wgi͑}īaC*a!+ی}@0B؃)|ZQ=\6b*!ΐ9A|!!d>8Z睝px8V+B.$j0iCٮ%l!u ^tD'Ss*tq;Aq9BqZ/̙z@pQtb*.jQ:88( J\Tl#|JpP[Qզ#.  5Mp&-4\Kzjt"<%*sBSt(?hC9#"(c0M%h()ND@R ,3`bH!:ѠLU(5쥞B0h&R8a!e(E>JyM]su䒔h2?̭+V=XLMBt\Ʀ+&s4Gx%71(zP-; _BaR֥q;* =MZ4GOw{~0Qɚ-5 Xte"o R'=( E4r`QCwG_SAy"%f"*d_ 05^!ڣY0Z.:NJ(qLnYDzY-I dDZol ]EFxTţ6P7N\q>:Le4wy%J(Bp a(ś^Ŷ 4T/M 0υ;ZWi}33,xخk3pӐ/`Q x\R(JxLQug)9yR3!ZܕJX!SZb3Ajԏ5 ]8>GMJ _k%Jpb͢Lă+H aaS.a-?ItOvD/0:I. jJ"gM;)Ώ6GQ34 #xρ“A>sR AD71H\8 XFSHAV(3Q(pV*^ .yd^=ě焢[H1mW}U I8T o} !*[+(uUobmQ E52J5f- jQB!g5J y6U Xbj(ֵHn;K=4E|@D5M~z34cO4RBsc3qHO{v+]Mx} lf=QA.}ёlҥ9/6hlx!٤sCaë8kZx.lq y(*ǂYqr~VG?OjP|ttdƥd$IL퐕ICI3V@Ͽ\]T|5;NNիvg C}jgzfUY!BO(#Ӽ9tKhP 'Llyt\ 0IRKT|J6ʼnPPND(3H>n$}3abT+sţ  Z!'llaeA J>8ԵX{G¡^s^ Q:AyoT9|%*ܵa aҗ"ULpzmzujsԜ\~\ⲷn ] g=MLL-655i(~ !F 4P8V嗞5 IDAT*=22xpTto L! rtC\x9Tڭ[ *w n{,nlBO@4QB!GG19Gd"d.Gb5A~!8E|eo )u[=d> CR#!RLbifQ_Q)Rhb}mJ ~5K s]آkAgu% PmN0R@; @LÂg ܆2֯BTa?bu%;)P՜UJ)2_WtB-L@1Aȳ, $-]5 aϮEuP*7J$23D{v{"A4KWL$Xp;pm&%1}`SmЭN6LI gd9:'NuwW܈ H,7Վ^p:ymLMSð55/[p;{,!ߍ@hϧgKg](QPh‡hB*X C֢C)s'7.>D⋤ѧGM&IBfoȨ~y\(C8i(kޟ*0Bȣ sa}A,־B ^A:`2GpT $_4nLWP'(a'wo8m@EuX 1SJv =G *_ZOD#0H6⏾r=XjH5!d%l0ınZ2OGZ34/D Ԥ:V yDY[mppM> rhlP_0gd= ,x}6O?2A*FR;q}+6>?ph! z_({`sj l4gHOJ2Ž"^. 5A,AWu UԠpd#C틹LKZ&7PDPoFJ(2lV^}>kO%!+5 g/*yH|fK>f#MC )6OˆJSp} ʶi\4>!~]{9<ܣ,QmUYPNk0h{gx6ZArzT{Fl$ypכ !AzY[" H W1PD)oZ^f0Lh?RmZH_+6?[#BVSOwv뿟F ]DZS 6N!&Aa%ʆ7倞B=E0CH))flN1y~~r͜]IcL~b ^x C$ J?,Ťo?BR'J$di*!1Šc`0BOQ}C:zxxr[u]AQn"*KPH i)HGJSP 9fZ5{&R^ 'z#0:q5S1)j~\RQK\ 0`m=yP1-ԉkj^O;MK{B.&A#t!Bj|P8%$F9V!T[<" ,QO BVB׃OUaOhf<9Ca!n(a1At&%`e zV k$W}P ,l'-6t{q"N_$bR'/A(B8BS6Bx uyJb8 ޟ9p^!AhRۥofG`+q5$SL@aPk$T=|"99O!UrXpxg/}w>rnc>AYH )(B P +wrE :{yA ~wJXL4LBh!b$vJ Ekvyy+c^ .IRR^!xbB̡E#T eiQ8F6\y2vJƭPe/9 EOO1ZLQA1! 7vf<,Yq " hCcT["@ Bz͸zs@"m1z%a Ω{eh+(!1%PR<$nnn2(KA_TMp(g&&1߇cz!T)I2 ! _mUPFىVay v~@Ēőfmqskг>KՅ1\˸Y$_lrʠۋFƚ1Rl"^mN$1A ̀ۃwcx"Uu{47aSol<킸>=~ ]*o@x@Qwa7“w'RYs:=9I Vc3 2j`ś%,_&>9XLJS*a<J%`(L2 A) e]A` (E߰Xܩ4vP H [!gJ7'M^k8ng^̴eoEv{L:vnރr2,hiL?M[!̵~*UKJſ ([^:x}J>fLyi*9ɪ VJ`r#i1塧6D2TD l]ZjAzB1" sV BtRHYx!I!L2wS RRHRt >SW!CxM M40:n-qTB`pDtW48dkt t:&?-Xt)"|Iӄ1 q~G?=giAA:dnjQ"8GIn7QE)&Bu㧑Qrhaµ9pQ]fлW{5GQ {SAm~0{ *~YcRM >=ÇJGGBXV>_%kNH' _adf#H?!,k-ALr B|Q}2!)NG. BwE?(Rh)a^!L]ėL}&QE2!h@,Y-#9J ix^#Ȓ䝫| [nawy#FWtpc4B㞟Ԡd `%QኍQAvTS@(s4ZLr wF3$a`fR3mdk*ѐ1UBKJ]taaMazF95ze1HsAHBJ"xͤF!d &|~k)`ZȠ;'v4L{/ڂ:Ǐ ±$u[# K Po:W{ѿtΠ8{>(1RAB Qu@Cfb H/t6Hgţcp Vc؁F-!jwE3Q|.9}~/ pM,L OY!X,D0GI Y[5C=M77aYAqk'X|UP|9 a$Fɛ|!EHpBȫy98>7;c kGe&s;d)V!2r21a+ >`ٶThYd$TLo9/ӽ&C㳓q6z uyΟ>d($ah%s_GqGzۘL8Sb.V+oɻr GR2.V}r.UyTB f6, œD F3l auJwtoxa+ ?Xm!́AOh+GY!.!SP857ӛRBUCꨁD O0j pǡBkOȥR Pv)IЧ&)0Zs+ySbJlS )X^ [ԽZWod!HߟF 5&DKKfT[=`"}~A۷/siܟ- ^;g9p W"_':G$Vu4ζʯ)QB[hANfR4Q)t.!,e 8W@y 1$l ƨ9.:A\-$ǔ2BxWЏYC 92oI O({HY Ug{fH]1uaRRP +S _Eq v$\i=Iď L9TLM6WzWK1Xɺ+}|T_PY9a2yc%7CmOGeBϽ:^)|q v{úm`סjԭtw6_cRA p姃U%DGBDA92Es%]pMxn"t u~ѝ=Ε 3t A%°L5`FG(2C:9Q@Q'FLLIH fhrB*!!<҉}Z`=IVLR$` v œn>!;KAϢ00Ghg}'ڃrCR 7>9?5zrxR GQI(B X_B)M^_m9Sw0 EsȀA d[mT6[&䟗#Mr糰t0NpbJsI Rc'#8a20(N5HkpO|:{"MwnV !Đ\xk9 Q E LQp(Ex +0hB:H! XFQ̴R&bxNPH %UlR8Em!I\U=L >\0a&"*Mnu:JR3CqBxwe/Jߠ`渁IhXj\CW۱)&{a !1KT(}&oW cރhh:~^ D1WKLV4~;6 *!! 4 r%$%N!sIx;TeQq NȆ,!m>IC5>z{l 625YQd7ߚw<,4Dn+:x?a }5nh]dh$pQ Dif#5rc pSɮ"o9[PWȁI:!4/"pX+B#-=K PaqPD(($j~/S ox?g|:\~ _O(AQMBQ*q(!.p i0XL:V>ĐHԿ T F!K j!jVṲJH7QЌvyRB0h$BT%(4&(!2 O ¨'ߣ=@(?wHN%SMj*A[W  alyvRv&r^" ކx#۴FG{$ hu^X^3њQ)cC% 5XHWh;y),9)S)g1B3p^Sн. gtxB b`pW ės1r*w;ôlx!aMg`^!$$n:2Ǧ4;1Go8(x%ĩe )4BOsbR)xCTp(TjcDG?t[aaF b_q|#`Q!lדfؼ=wJ"o_61חF14Q0TBIdta2T!FUxtH!_Iu32+,)7}S '𫚴P UEӉQ`]RãKq X RAXڇ0;QP6Gٌ=<sCHţax|B!1NPrYP-M]6Gv?j .2v69FT7, a٢hn&GEvZGӴ2HBأ6LQl.A ]^+ePB4@X>*CCs.T#[Q%lo f>a&Q']+Yѹ\%x9j! V ӡwK01ZOKm2l2Ȼ )<Գ opBP oø]' q/1t:8QE(rIVs;:&gí^#-j$n p @K[j| ]+ ^mѼdctЩ V;8y鲣ЩW!do/_!lR?tcDzeVtT#"Qd^O£al2f>Hʩ_GCEaά-r^ mQMRXdNRU!;a4GtRxf4RNCZ~B/{mf jO8Js~7oCB!LY0,S²,(/4"~ 2>va ܜ[krq+8:O} )BjnBN|LXuI20܊ a !x@u+@Jɒh; ! ,ǔ!U1F[-]ɼ5B^v(4qLX+4Gɡ’C DFI74qL„Ήxփ }?+hiyvó2'M8fu0&uWA$jJAQϟoO$ f.2_K^7-i~{*׶VM- N&BrxtUF z=Km)^HsT:{c(WK"h I(4j!s2X|CQB?~;Ͽp֔W}B{gWWbqpuu ~g1xLv (hvB {JNLC`° 2lr pM.AHiK 9d ~y~^3OnBJNehp#3Hsl7G7(a ҕڼsR9͆i~FO7WQjrU ԒœQRJxԁky{t&sأ4:0+!`xw3eO ,!K!B]"͕Y T AzI5j^i6~-@p/T]w^\qY99B40ϡE`;*k6u.b4_-N71@MQFS.:b6Q ZMUxf/^|y)m 3^:%͕`a\i5$\XE7P²Oᵓ!L3dѶPm "@GHνM&`]ղݳrEQ䕐NnIn'2N[T2T-Jx*ך&@ 1xOw+a/',--*(bA(7w*hB"0˨ ϗ{ݲ{G:K< bpCWCNb u97mV-@= m3(c@|P)W_8M a s&:pA0Q$hpцJfdݐZ#b<>J0}¡(,S÷Jmq%jjv;Q,[!,ItT @ OgV (o?~d%1  !cnҝk =g 5j.S03刍Wb2 ("nkz|u3@?+ cv:ӴS"zvc8=_`;s:LWXl1@g:a63`>ak/Ռ)A,9ZR,uJy[ >aE`q:u>v &׾)!4ޗǒab2IU/2S$}ϽiPVnSSh)iBG[!OOT%@H !m z}2vy<'ق⠶όS$٪^O<< ; Gl r+C Q8UlFLQwi(s'TâḩCD`B]g*'1=xL-:R1F8GIb0,58Ҳ:ƤЈi+LJ?^ft&vV%4C:}DXFI53E ~()kU9}'ORJ}` 1GBjOG'f!ϓPxg-cpޔ _r@r{Ǖ\J=:MvQ2/ӮyMn A/{~*z8_U0:ؓm"8kAb@Mi 4p+0≌&Uʨr#4Tp(qbI7Bpv7r(^S2hׂtoO q0%P^-s`9qVWc]zc4Mvx58=.^ @fi#&hWF.`kbj8[ <~Et;J 18_Uzm/GgJ7%.!cǗDa?WaLc%VSσ%ġz_R#3R8,FͿMZ⨼QFITĂFv嵇3a6xIc.7Ra o7Y{N '\i ʡCLoR%U__ `3 `cʚB=<.痩3HJa˽5?/Y~Sx؄&-,vW`=LQc3 zZktJ z]5eAN`PB AoA+a j4: (+ijƿI|. \o8=+עK²FXMe,Mv= %ma ӨhY%K¾y6  _s !mQS Fӝs%yo"8@:DQC}X ?1*:tL[ 8"+|Ty85E)Љ Ƽ& X>C3f'F=EB:TQ - B]-p)hgк}GSlvch8>xQk:~Ҍ0'S' =CYIx[Y$ioXby,iﮇQc_8ĔiAs/]w֡HXDGH]9o>V<9멜aPEvy_ ~"f1tM6u `a} 6`l|lN105H|R$ 6_rM)A.? 9!4A !f6Q>!lnB f {T |%_ϖQaK9b60Z_k" :fjkX_2XFZLH:M1fvSpF;x9Xt(Ğlk>͝:0BkIRNrr¡_,0}EQ·o8I(^%ՠij$]41Cq)&'W!js$mP!㔩f+e6Gwn!lMA3yF!4o+:l”@-2 MrLr7Hµ=X%4ZШh4A?lR!*ˠn* (<5RHcCn=\g;77s@w7á{$d̘̦֨ 3Ъ*9@Upߚ("[pٓP~f* ޖL vj`͞ b aLiz/~az{@2Xa9T3iJW PxtQ X'(\fL⠙hҖ B+ێBlC'0dJL)J.g AjH?9ꂛq t" SC^&&_ӷM᭄E 1%,-u=igWwc^w!ܴZ ҪroqOժo]ox nBhPATF>ݷA9$-t>Cp X6uTM{q >U,%Z9] % T+01/!R'Mr]'IQcPsuf[P} Rig 9K(z(Ujww6U!lcPBj:KIENDB`hugo-0.131.0/docs/static/images/blog/hugo-30-poster.png000066400000000000000000003604701465312036400224450ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE3!3L52/1A) =&22"2 7 F: >( B=! 37^$)11.<.'%E;&% k7(%&. ;&-'%E, B(͸Z! =" z8t4c'tF V! wJ"7,'EU0ս) Mp2j/;#<h1?3*2*']%5 8!m0. ~`cl+N nb&g2٠jI$B$D"x5Z:Иg`9s0l85 ЋzO.TVf5buF Z3ޛ[XxL'G4)p0oB6& ɁJ|d7T)>!ҝqO'֚b|B^/PRkԄ?m:sjוXqÅW'G,Π}˗|ŏZd4r=ҎPɗrXX/"i6ىI0ݨsk?Y*8%!Q" ݂CA62Z+N2o:Ȓf֣wwLDžX|:eQBq@A&ۓLQޮ~{f1ʒЄMw;aծ=ҦJֲ㶈ĵ/a7X:v[&8龛I.,~K{DsR҂_ɛ3 մoAP<'{(~AKɧֹˣj ӌp٥,ؗ1kP͉0iN#jJČF[F)m3'7PHGMݮNO™%t|d lR-LZpo~gA IDATxڤLwOҐCwoҞܖMz3k(TDL7aeg; %EMtba.X.FbE&QhqK4f|79ɉ9'$m`7g3n|zBxggj˷ν{kqUUT\Lq9|:~2>s}:$$>9?>pN_Cx饋::Oz |Ny׃pI6>'''Dg I~EUUU_1=%l;6;;@3&N~I>@g` ߰_2AxH , m܀p@P~P>Dވo ‰Dd)$aqpl3C (C83xBQ(p[j t.I3Ogc@ѫd)i!a2Bq JǑCD8|bxҔCDQNď($PxK0HAiKHb- ·w(e@ZR$k(`=(]R .APBʀAB r(mkeaIUB=&o6=H/@0F$ l C@DЩ) g$f  N^BHa? ԌPBAxT$. qEK )0=@iaH I ?!*3g A 1A|aɓ. =ď%ީP+ܲ<n;Ua)ܬP(BHmT׾-B "!)E*+TjhȂHrh`vB ;LWkO+!Ax*F*)ХxaV%gEv#HF~[9DbLN]@ szB ǕA@BPBt$!%ʪ gVf8%{{SG$:`#) kG%\`-P$.AL )< cs}PF+ߛ$XD91ު)ܱ_Y I [Ba:&Ru3jv;(4I=bwJXh$A9!|ҥ{E)^NE(QuZ|V}TסUe s،EExQJe~c(TuPYݯ2S*^QQq]ƪŨdPH!!}qlL"I1* X,+2H*?v;Ï PA~UpVUyRMf8JřOiCҞ|[ER J EVH=yQrr(=2'># zA.6{ezt:e%EDp._a,Z{92x.XNieо BB '992J8BpdL.<'&iBQGdZPIdRzHQ3!JOک];)i- IP~x-"&=iPon1k3" HJj]V+ ;@ ZETR (+BRk7hp6BPUM"m B,_j(!ˠCC"Kp5JfJ- 6;V(^bP뗯sF3 ( :H C l(xUkr)hؾ1 :NEPYplCǞ Mhħ'5FT*DfDyd{K ][W[e@*-pУB*nMaC g{f/5Q"3:,ZiHuъG B6eYN=6ZBF}sGM%tdD+jJ`Sڥˎ4d~^2 \zZgȟ {^y#]GUo #F.OY Ĉ0Ia 2Cz$Ŧ'-mEWo U~x0 7ʤ]]=@eZ¯e),GJSA>dTL{ beۗPXne; bUٸ(Sh̒BX BiP4 QHPHUuc%uCbՔvƆDPsxױ ( s'DL b2(DwJhWe^'R ku4nYkoZ~pbH ''C?%Wha!BDZ'ñqRj {iqo~=?X?9T+(:)geС WFQ)*4[g6*PvmUk/ٍ(3sAjc?ŠB]Y@/^$P"J@xM`{@\w@נEPY 2 gT*q$ ;1,,(EL+ǂC-Nd0bبÄ+H F dKR$J*\DŽczصRt)*v?CZU7ZRaZƷeOK:Hu}폏^}駟Odw[[%*{ʤ'p+T^A EBO82/e4ĐM`q-Ԣ],l*OK.c5V?@@_%_Hy`0@lDZ& `B֫ffDڌ 4ҫ`D5ф(Ϯ5h}| L0 6~6J5DL$AR4~!YԒEQ9 Iv9/j5>&E2[^mEp4r{CxzjTH۞kC=E}/o~FD@!2W 3)asȥ AY)u EY잭lO 4lB6aE\!%,f6]:ٌѨByVHWQ ]61RaQXGw;l)OA^{W_}#?#qt(M{;{W8dRBA,s+Baۥn!02>z(792ÎTv8Td ^*]j?Kk3d4>3BBD)%:x&iL"U(gf$[ujw!i*sbv*jdB b\"J $d}&"P vd*DQio1 a 2y(ñ)p8v\ 'cRxʂx˰-^ jPPhy^H _>=ǞKFEPB<l{ysH;៲~MUWqVMIkm۞NѧVheask?UotZ Eղ9Mpg1pscG"ј]2e .].@% BAJ$ؤo> #™h ^eT6 4j9 >QmJHŃa>! ƴNp%̢PŅ QLD=.ABRCPx ?a B)@gN.;))T^ak@᫯SmՕvTGEy|F$g+!6@c:ʱA5DaOVw3#̷ZT Pt2x{JB5,~g˲#Q`4P^&)S"Cin&@1'HT7HX{ʨARy =C ^jdq4=ЮCmݘhW~_ɚ8( xh,@)"Vf E5Ld` dQ%[BxZƈ@RC!1 =~ؘ(Fk)|l[(Wn)1|h)]vtC {VGH*n!QUja; 90ܜ'8F{W6am{جTql+$($!f!7 pPBGXe1` hqw@eI:uҵ1d1TxI x4qK$LCѷ1Rgf*9=KDZ4h]gT(cACd&ҧN5-,$Xk吋4&$-tB7@o027?!U1Ѷ&cBBK 嘽{d1mMr8 UnU#VG .S䅉FaZ$H#è$\1D,&Ejȗ|"@#h(EE(ÓBSUX@[wlRmqƘi!b/ x3ߺ=]}[Zu4 Be/ΘVsuҿ~!sX[." /#SʘWhšF q~3#B/K2$ D)2C*cqkwcm 9g):gs,(BHi(nA/Ł>n0A! (rx )(@wQxݼUP7#"b3LڌQEDʉ.Mi˳sfiNTB!%~1 šZ @$>+Ia -|GBr,ZP8Iz({ ǥ&䐪4L#ǬH9D'Wͼ88Rר}luĠ|?Qyq3=ʦs!.tH!u*63L_k:1 ީ{j i`3 ]uPsYCIRԓ*& Q( 7_! bћ0 an؀wf͛H>Bś¨Wm#Mv!ll{oFUQE} !pk  b)D""4D1RM,c^N XhtX0'|K&[@$[Zl (!~( DQ%cq兏"BDzfRQYq gZE0Gtƫ poođ8 Sh^:'dwP edh5̫2B-vmJU3ܠ7ۑW5t# NBAL"܈K@Va.!9 ( $@^cGP@Q0 TMcћ*p(!H#upxhE`QVDEk#%'SHjxwOŠ2 O=vC)2zd˹GGsđ#UʓʘU#P)r~BgK'(U͡4 q%w{7A={E 匪Q1v:hT" VmQ=Q fK PQ6= Wo mi<~<^u 4?߆ u}7<+ʜ F8jJk1 {5 .c]tf™t;ClזC)*iF=ʩ9-'xeY(Z= BL/?~CF0 hxE `AWG055aYe(tQB(>ҺLS4p@"it"XU|:JH3 C&)mZpT88+A!eD5S Я;ᯄwN҄VjxdDq c)["&#w6SMjBe#jS=h6Bô/RgEE*\<cA66ʯۘ#7Qh IEY.0jf WU+Afm V2l&Nׅ'Jh"&'= BQb`](YQ BC>z 57! nQJcY! C |Og>TJ:>Fj1̭1"m,/ޝ8Hi"5B0:!Bn/S.k_Va.ˬϾ_QBX.N&If!Vib(I4 N4T-}{շRQ)E tN# UR&Kkh2Tr8Eݵ%^7{)$qPuVw3 +ƿ+2p(tY ELjuTe{)6=;&JfWYݜq %+ BPA/_fz0p!6_G['?͡A {(!(@xk1aFDkj$UMf@q@Ɵ+12SSSb"ݛ)R !V Ia!^8DX!# D h)$P\xN$C]+;@wXL ( ,b[ w\0_k3'Q"'~"2CG[wRZ(:=MEZh>yԊ&N^cB=څBpCѨ'Y=sXӣLiEA9'A׾sHҨjL 3C8 aNDQ㣂>Eh?"Zhhp ?tP$K`__\xA],5QleQIʔpkD W8(L/N`Fy %H!jha$F3w|)+; EL&&}t.Y˪/OK-!I[ %ɧ19FsD! !!KA>x)B ?޳ujFnk3 ص\F:gE8>E㋥wCEŜBo Vv5{eVkb4bJ`k}cqP'W2J GƑ sNt HQHȝGƛ6 /eTN]ɑ(7qJ`PB;=4rqiN4b:/t&+N! FԹ6qm f Yl&Q I}_~%28@ƈř/Q_o֕N] ƣbH͓<R2>EIIj3Px߱ogNB; 4 _~§BP, :ZP'4t)w> ŞBOf|pZt=wPnkmMefWruZGnlj %+K uFG ?b4`?*ah8P`;o6rLh]zLZ(ܨ}kR zg|DxƗ4ªvR5v%Z& 4^=E@ #2vR Y }`2B@qO `,M4ӆ=nXh %eܸ!t}BC ;[6+^B 5zrk3D_2XyAEmmZQzcq4CTa{R ˟`ԞR2XV4{PjmŹCj(G, ˠx0ћp–A_Wgx5:ZS~oq\☕S@.)tH-kp 0c aY"-R8`#7HCM8(@ԄbψDR1H:}}X'Ń B1TBD.(Z/nD0Iu(𙡅1΂رCOJ*GۥY%R&mnlU)Or˓#rH2eܳ޵b#!jm7U{4?_ 4ߥ;56(1aʠ߸Si`AM0$֯56 6f$}FYF|Dpp8`t_rVÞSLc8!̹hen=bc $Cn>dTCn_Mr̎,}/ 5"-|u6 )$mh_:#)xW^ٴiӑyS*\QwgߊcяbO7B mԾG}:b 2jc ZJyš.@ʊ]=0I Q趘Q?Vz@mŒO\( 7L9J-+i:mzU 6n*cEQup=Ue"4ZظI4 ɠ}0K!e%? oz PaxNL)"-"(FS>bxy[BHU#ǝY!)hnu,]qy 4=Ue6U/~2yWt/ZP1lADh=W Ae5c~"_&jYs+FFA?\a( h{F8*Q,0}@0+9n.>zv.y(M 4334t&-mZ X#t8OKO zӽyu)0z,Tgƒ"\mVR؄)"f"S:o&hO8ME,6ԂW,[Ű&crgM<7ZnXw-|$J z`_N܂)RCʓO:c`!lUT_G|I\gy[\n@nAcX|!Tl{Z KnʀJIX`3ӮjA?  FғSP1YۨR@(@xB >}GlFQW $ùByl?-իC˧HO|ļK٩Th5xn-2E8 M(*~ybN 3Ēӄ_pC3i:;@p(9 3F9"Y-!ɡ g<{+9Uo9nfJ P,{\皬t6kuRs /n_gQ w_*vU 7Tw6?'bh67ꨑ μL?@e6(]nWP3{{Aȁ ^?( @D+su?7F6tkTJ(0GiZ拾XRBOf#NN{iЃb 2d ͺl#Pg<ӻDn`?SI PHr펥%%~FEdSB@KJ[h0X 08VPH g~ƞ'ؼsg}[dZ9R(j/c@ځh襶LfD* "-y퟿% jsྦྷׯjNau B;U\|Ҩ˙co!{^N0ܮ|^2 ~xW-hQ8 BJ :h W}>%BvA (ʱ "!N*8 hMܤ"fэ2|ư<`؎ct Ѡ@BCvhyl*<I'X6B&F # 8AGTp(C,BY"G%V?nxKrѺIH R7!H B˻+(ةж)reĉ7V_?#[ـ;㚚@-F$6 &6}XйLBG}H 4oݯ'̶QЋA(R@QTܮa $ ` a/Ep+3(sisGV$J+A~_{Q^ab:CB؀ҙ}+œA:')H;&S!e=3w'xt01N$ HHBLb{e]9"iӍA0Iה+/&6kI1C1D8BELŸL*C"1IB*&}6b?Z.|ۨ9PIA i0H[m%tR`IwxuKyB ؿOּ!X)tHaq -Q6`T:kʣCko9$SAAML ^w0Y` $Il80SaƧAnE! 9gECIZ~q  mـ  5%$VӾ3}I7{<6(P׋m>OL-.θ H0 '"Hd ,eQJJ(,Qܼ M [RkhL%T9B"JCS>#%scI|RIaER__cbvTiyի~zǖ6Xy!oN iuu[P=kܣ^oQ6R,T9BP%z ,,bh4jT$ہr4PC*iP5 >4@q@df,%(vOg 7ōn6dK_0KčW"4D8B"["AE2a+NN/3w$&&",BㅦHhlXQ5q(bZ*9(UIa& cpxz() 'c(u$ Ir&"Rg,2,}p\bnqkA42Ǻ iͧ ]S.uhDm7Q(svB\nbD}kPǡ$V)FFANkQѮ36x d {aE2A?~AXWcoqc!s:7?S(u(Sh-G6F8o#8ɔF5K3}La8 늇~SSS>5N.ߞ, |MVV".%Xt-]O~-BNaSE"ҿCAL""lRe0,j m$0C!~P冪4à QBl0j(ks' yEO"Jb?0ZWgl` n9UaB>891 3h0H]C'[83GgfV!B }b>9OLMat ΀ahJ핕Wy4NML\ПLa- 5Te*EG">ƬIຆcrxņgm ~h `.6zV"=NRn(h:wgB w ACh& [иjM6XGw쿽GPRsBK B(04WߛRmYBhh-2_g$~BQ#_.ʡv$x |  j@:GNhёư/Tw(i(ũ5E2\AK_A KZ%0qiP4!ʠm60kAA(&Vԩ/rh$7g,—~A`$޹i8Nf4ޏR?|'PPP8I*&Th^bJ[Q*BmC =e.)1ǚjiBY^TGq۶wB8klYc!,'QFKGhWl0sRUԑ(šVv('|OH2^R9ё9)!(JCM aLs2ZNBjBkjTuT\鋇:Q9K ]~4S.c>=55Ju+aj7oވ>555ݭPQad\ʘ 34O U}dpd!@p p(ZHui_FLǸD3?yQ@Z BU͕R7,$6nsjbLs9,6t[x1b(6 ˜K[^`2|љfWeL ~`hIlv$ȏ@  @?>_},asCPkU(a0Z@J4~; #{f.짽4@x΍ RJEÒfPฆtaZ߷G X/)=N/WT\V+8mr IDAT57;&hSMR46%",C/ʆRAXuS|%4#DTn|wAf8HND"Rt^12Rr!*}كlݼSn Q̀TQ3ac-$ D< ]ǽbе73ngp<{s܅YG6xAB[ե4_0ڋ CKU "x>\P4M>Fq?uaGAQ{Gb~ȨOJdJP\|,GѰw87i0t_^jؐuϜlyS;!|_pJ,ʊD*1}^O%F0*`DRyuh(Pr>9eJ ( I" @`i)D!BP熉d"E'b`̎JcLI}i3Ha+K3U7i2 zM k=(d%y 1DdeVBA4qGk^ 3|)ͪA=ԩ Z7 I(C߂VC}"2%@uѤQGFFv׏óg B6vC= 7 T&BUF=ېx_CmR8ܼF1L/NܞZgE`r{ewy"n!j+fib~T9`IXH(Sb BɘF}aJCAFNdΡeoHi"`"RC>C O_\&|!-|H7"-v͔#4@Zf-(*kJb߸[4BHasi!W0O#_yX)UڇJER4tOOu^u!ȶĥ K DZ(i?=dc>Xj豩^$Rie\^V(*!tT¥9 վ8*pDD. 3p)ZwCZO!3L1+D`h Y 16?JE ^ %#r_~f/;yBA -}~,T{Q zO瞫j$ I GGUwa%ɀ G5s~BQ7sw^K5ԃirǝ9!S %9jDŽtzL~#ER @9H#088mkTC|N!xFVX k%? zDr У<Չ9agSCÝLPcxDA[&-("R GY g["9 4d_f [ɵgdT,. R?K=Pb¾[ j.۵Qe*s~'8T9 ~r3š޾}Sl\)!5Dx#]_F4 kHz-Q6;mX~=R:@OUmFUIQ ˄eH!1*Tvb!{J궧]$DbbkP1@ $$ \.dUY^w/!ޠW0|o}l  Qetgutd{i5.34jRd(-a0SF88?BWL Qф I cf}e)=+T*1)(a 4 q*"&S)51 ߒ %l2KW 8QD0:XS&FI !(D bL8jB6b"C d _ء)r'2,]]=myոEZXu'_xvXOg'>s^7ӻż Nm;JWKs6+#O>,as~nQg$*PA٢rZP/ŖD4ȇ@:?AпJ=ڻwȹA% QLGGFF]afwpy3PB,p=ÄkSiDǁq6ơ _6&Ēk%= \ a4~;a>8i!䄠s.4 8odz DP AI)Aia2"{hVpy[T@*UBOĤx64Z(V )"usjn޾=/Vܗ_&s_^ܟ96S=ռFLA;t1 2~ D IGӤBzHAҿU0WrpJezw8ѳPJ8}d;Ĥ27!T2Inf'sGnx83FMFG''ded8K5Rȝ VnGu8E2g AOc VH!(>n;%,)| , xf Mr ;;/ |x;a`rIvpia,4B(8\y0׃s_T&K EuF,D-|jaȷnncau_oAAj\O|euPyuMRY.jiiOCaŠh!~ Q_1o~`_y H^d~҂#G41'JF:̠ hpH,pWf=r(|hÜrTZ[{vO#Ћ(}S}i bjSVQBHWdhE2D %GBcj2 E\eI<~IAr犙Ct,< BJA))7 TFCI!'_qoyɦ Wu@jf|kHaҝ}*&xlyPmRF*_ģyز{E[ĉR)Et2<|OҡCږy\p;L^`K%?*{CxxGwD p;|ꂬQglQ!C8zgP# vr8fqp+p[ueԫi&,0`͍`f} H! Sץ+Xj|e;2SW: >Db`BCDyģ+1-SWSԵ 6FKm1BFxoɥ@~Y†SSK_b'Jj=Na*2/`@:8,}Y^^˔x6j'5dXRehh#P}x'$(ldR8,O,)"IWTon{{PR%(9{a[Ykj@Z(1#~a$T&hFlFsFQT(l}M("WBw50 k/<|>ՓXSag2nTƚF'>vPsC[ cE"Rs 2Te9+6p 3h`tq Bpq 3 ]y!_Y[[v/3و%9Pіdbipzi!:;@d}S!r I_0"ޖ={^}q#6*hHĐk3H!#]Hn1dGx={^Biߔ\Xp{A8knw{6jeJh* )<,RZCK]jl^4Kc4Up/3Kh BXB9;Ff5;xo`;B|mDX{6L<n+s8з ^6xL$vC%"ZYYɊjb D' hh/p[G!F~F@P!}L3~ B:iKX oK){"oF<۱!)|[HCcWHZ\auOOw\m7s\6iӻmBs1K *sMBG$jFՇY!ehfm 1tyy*!QsnPUp0G u?}MxGпwԘ)um$>A 2軄d}KO*"v`8gT zhf $ +XYᦵ۔dh$|)x%BC{~htro9?G|Gc-py "H(Bbd}p^G&k3)$+k/a!+qSAoCʼSCKK +H[,IaLyh d(}.La,Lc34fc E"(1r1)bbqBp<څ+t~a,٨y~|)AYXMk:ʚH+@R£ܮ]ߛ{߄o_X:!0Qa) H3_x`I(n~3s`Y v9;qģ٬uuAƆpO.,m\5N%,(G $DJ`ixk [BT NwεpvlD@ O]\(9E@BR8lpS0D!$%d Lrڣw=ڗWb:*""$+J ٱ2m_+ǖT]˟my(ջmh~ k(C:HRQ<;p&> 55.b ^pR+)T.eѽFIoLJLgfmS D3J(ƪYAb&cJdbb`FF\]+uMv-cC9 (gah5ܸSeT  L_pHDMT:afn񵶞! H }{2"] i1bvm !-Cf^١Xtt 289t ˧:>ATF""ja,:[H!DAѻy/D)@H—=Mo|\M.KƤm~1z|9!?:|<5Y?k9t,wwb ւKGJ*!=3˩]}ژ js= %qo`R*$q>մ͂1d`ԧK25zj-u_~H0ֶ럐Z&3L7fFG>8WI< i]?R&XHsg>|ٳk5v4w(s i*nO|ᚺ Z=%()pAqd]p a9D|hwc@yMETᆱhQa2BiP@22 SzxAƣb¦!fYCmNB?bfjA@zĉѿ3R 58*7sfXkc~E0[g%Ob2C"-<$T$vp6 !|]8e-Hq(#HQz{b |*٬ F:n"ˈWw41C*HͣAj DefL\vFѰ?`4}k :_ëۿ?~|ع bgmpRTٵLYÖuB- ^`i+l`n? IDAT /)}')[A|  6|T>HXMqx>э+5!aiM)&*ueʽ!qKHI UEFJ,c?78daW_n LM-!qyPxj"wU{.GB[ ;9(N IR F(-pQh!NX<̞ vA(.|"R}la Hiؼu}Q13#,Tm!Z%TFX*W\A1+ʢ•%#Q{,Zc:H̑k/^T!܅Cg>m|>j<=O!g>| AqPkd xo~v=8İic΃8CJ-R@>Wps 8 &VBc^N5&p7⭄| '" ocd~w: t%j1MF!) I/bVx @N}$UZ /{-߃¡qfxD6ܜWkB Um!-zvN™(dDp.]2(UpNϨTKJh - N,Eg7 EHЙ@={">KC}s((50 Jlq"Yar ۾by&h!%]xs0_xJ3ي s(fP9avWPw"b~.3Hm|FˍZZZ2C@ OhTÏ ^0PDPaH( ㋨j#RWVxRBpӧ=O9-|zZfaDuS ]:8z(nQQ -VhTܺŵ/K,%d!wur:gMGv{+Qg7G_.~'d-!40>թ'|R8@02p <ϒA=+gpہþ}OÔp)5A]G҃t{qZfRxK&SIxAQ|.+TJٍY GA(JY!ZE J{.j3@$ 5C!XEd#>*6фGYÿ WNc H1$-c Q = 2=EE]bZE!Cܴ[jFϵtyuO)_q> ٠$(kToT2(sAKk3Db`e}пp( `!4+^d:$#'_[a'1#*i~:o43<@X0h8a,ozdWˮ]G'!=<09}8R)RZƼ ڍuUC vxD*J zT$ ?] B/ BA \F#/s>ux=nعc2 Px∬BJm ;_KTMVDY~T`ac% 6mYyCO4`yEDԦ}v2bW\xRB P7m~uf/|~}s22ʢj-i`'Kg/ yQHG+AfpPB;x -;9(ϜB|f)ѼXScbI/]B~b/N{Izx m ̠SN6 l^z+{W|G#-2N%َȌ\h(p lh\< 53LBO4Ysq}?"RBkzxaRhO2ҧLi]#۱k8~v""8ɱsm`#!2&cvLW a;h=BTg jmNP3C9f),-4AebӖW,/gTõZzRhedt\l߽*$y('5Y5lĀ"ϣcb=x)£&D_}5lCUDkDPh&'# G=M@9w=:tmJΜ8 N]ik.]tJNr6a zNbEO]gkmmg]g]kK'ɱku'tp3['IDGI㛑 7WD !aZ# h P޷oRr}5Pދ~UB-R(q;0w5Mzޑg)Dxi3K oN;lc'3!O"xz5Ír~zTծ V'$ۉj gy/*VstHWZjZcd7TJ4U\3ԭE5 Mu^Q!z\j(Ƥ`K 7r|8y`=A:՚([X\UZS=āb6GD!J~41.49 Y- LrEȋ 5/ }}(Wt0B3kp Qd7,dgg)ݝ=HS<{͢M^WalXs gvC rٿR躆f/H/vàPw-JH_{?SRx'C=zf>v MtfÆ߹_wV$|^Ce5I­Fܚ3 ;*}S4cչLf-ZfbCYe*P1r/9H#SD{'䕴S *e\}G ۶az1@__NCuZkl^B5fJC1?*,ܵC514Gjh Aߞ38904&&:5 !g:yԯרn=zjXmgwwhLbDag7cB k8B2Mr N0iX+l@n>q@!>av&;><ܗ&- zϠUA{휅YEcb3jz?ݯ»bK6яnk:3ܱ3Z?iݿq&<xkKۨyNieAm"}qO ADYb7Nn0v7inܺy%|gOf2ZE=Ðʲa,ϰ\Qѩ :_u"0+˵[\Mص6-Qyy- "\Jiobȴ b#v5sk1['u]Zch$>rHnI*w`GExER와G791 $j &]@sw.ƞ ̰<;ӹSXg n&YQ6IN<Cx(:^C2Ίo:P<*rcP O,>H1tB"`p&B?K{.fǡB"s pSwW)|ٷa5݀4Dh_[GUB9Eo^~uD50.KD֪; e~RܤD/=QfșPYi3aq vAf^:lx#?! XCCvd0Fu)HB4FHb5 OG+5،pCvFѿ.AOo+SL Ny&$NIwQPjE_~zٌJ(vhm Uks;4GǰII|="ZNDǚ?0aa/;6<&)҄HML#4Zj;{ 9Fz ~b7AͿrfS蹅#z~u  up-Ro@ctߊ#Ϳ?~-p\IǁеFGFl'=(Ӊܺ֩qJ ].܆̄ZnD&b1uK3P$E!g?B֮ĕ#=ޘ !< BPHka UHתb=lEi QdNJTa-װ Ϣn"z\ {kjT1 FH;T9h+ R:s&meDfr`R(h'!Rm|Nxpsv%cI`O! muk&J@Fɋ5'7Mǟm¡)zN4A pV P>aN{oHȡ=<"9el[FqR 'n׾&*M ̶xF x/aAQ3&> KÐ3֙wSфeLL'w\okVoˋls*puKOnL#фETVVOl{0{1GB,>06 IxV<_Y=U/ kQ *Ű&"W4 "J*QpnjVbMrq`}6`]є2FP: S蟘h8KjD"pz_Z@k{B!`j 6qͱ~Vp;YN]dzǎ8WwM0D;clV ȎLgggop;4ODg9N8(N ج=:e-RJ__~lwqpzO?Tc3& 5^jy{~Ŋ]3k^8 jSfwa^RB6&sjzA&OPX0-R’3ik«2Z:r}h-B)pX ^*ˍm^[ ċ 3%3@!uf`&1lXjnf<'f`EnPf'jtva*EՈ]dTk"HDD&4L L=RIy8:'OML "_sJ4mGX+ ͋"+(~X q& aw"q>Mς<Ԧ=@bp3<Ktcfxxx.22 (rG_Bht XB+{|kH q긍=Z wxm_fva8H/v}{||›'Yv%e,5'nճFuבֱ!e )܆)2+cD ˨ ff+1 .!rJ<=@8~^TJǀXV2Š E$V UH|I_ rn@`621jT{:Z QΏ n?/J 6-dB/x hD7}WDLAnTD=Bֈz{j3":?&4q V,X93oTC|uI0)ikgzn*1L7ww7!Gõ\ + ; A9X:=<p.;=#JctjI)um vf3֊Mrhlf+y}D ү _b_7$= dPܽţHSh9-CT6 Lx30/(%9[f/LmXf{[M 29zKD1D!iOOx1f LU/Q ì.UՂ5M,hLhBfWrRV^W r갮*Xiy;EՄlhFRu5"j.FHkD`).q15FATT*89h,g&W(֨xPn''45jHa?*0GNT/KƒҵdZdr( bƚ`O?YFkrx <ܑ?83&hV>QN`Q2G)JpNafUq8IU@~7#{ ٻ9PGF+~MMa7gorF[6{~U~&Uy!e\!t'@Чo/j~Hү]I [>gLN`ꖺ?xe=Z)1 C(X&H'PdQ` ^zy>{CE1# kAȸ#_Ѣt `M3C IDAT= vI }>Ej"Hl5h$ڕꊤj"'R1%3bbꨘ `TD89j@Ev,`:d'ʋf6 aYSS{pSLC1 9&v' yR$P-;>,,"@$' f4;*3BhďfZzVk!&[-ds Ÿ0:ڙuw_<(<|lrx juJ᪽ncmY-cEWT7mq̎O3[M2VlcӒ%&GO{֋ej%~%zv(f8҉PPÒJ Ĵ !z XD0F.%B"k9;8US JY ;8"F& >KM C2bq sF!t` 5Q4G#GE`0hj0"MviNi6Kf%D~)Ýo6MJ?_)cvO[M&Ӣ| 0=i::\; ԉ1g_ӘاB@퐛1_vfzn. pvfv}zVS YFI4 6MP-U$nB/63g%m_`ڙIakd{#'yh~lkGOPB3 NGW4g?>z-$BB?3&^UOZmd .ñEmz z;)- ?G& i#䧖(%4P Y-Mr*(2 !avhʹ,섯>Z ak@ +4ģ%C:\*X>Z%p%nju ]0@Av)"5"F(ER*S\DRhe*SfPMRp-}]kvww&k1!WļlGB&WMݛ73&,<ּA 4u?p8&^i9O :=-NDZgW-dgCq?;+lAJ果J:_y_So~;wvzG87>E'6?6c]B=- {UϋVˬj.GF]@6&U3;Ԅ/p2yjfonz"A+z 6guvB)6Ca_g-78)/-dSef7!?"4TF襠na*dy|$̚l WA9\SiD"DRAEM>"; 9(`4BLA'1aAE3ȠN0q8EZaN 0%ѪWxydmdm0R4 !an* f1D@c6ņ:EPBqp1$&Wl{W} vcǮ_Cx^1p:ؼ XiLEV܆epe=bhĄ9OLҗ3q$+a\Cs!u1?tL[_&‡ QB$&3`",R=Ah3E/2rm[x8^oLw95=x7!K:R @^Vr3gog6Q RwSO4/5a-.cwV 5yc,'e.YvD=آ~ێ͔f'bZdhXʷ(]9:A{T3BaRTΤ¥ /6\BJ㍉2Ffjr腫u6 30.5Lu 슦jj0.FD/ b"Eآ+%(P'LAd!nL `<ā~V4S w螀 V Іںu&k lhJ"=\71݄n֤`t ~*Pd沔@\O"43;=)gi7T bcZ/E!lo2R#[)/w=rȽoO gNĐR)]0a\B X)\޷bg'M M"^at=nu1hD P_+9Ы#t}ip_Ms材yTbK)/E+K W.N#j98: u2XLɋ| '2of\4,66k`~B  e\28~=ȟG%Q)d] :z(8qS:LBO1AP5 ,jt9SxA$j_=KƨmYZgc+ˬ.FsVׇs҃evL`^/FdN`pF3eyĮPH,Ef04ʇDWZ`LX 'DP(ZYDcܾF_Ƒ@{.T1d"] ,(dEEKF5mR\墅)!BX0X ¤ÏDd fm֎7:ᯡ6R+ -0麻-閘 PKǒ&$*D_;GaQlIUsV /S^Y {Un,ׅErqVyB~ba>7Gx˻zCr]/Q?Q%PwzbHpNmxZuIYر~3 ܽB]"(AQeF *BX't }ܥ̋*Rh,!+L $qpY&CULp * F}8>*CO)% %C V( &'lfiz*!T> \ .P *-Dq 2_YLfRƤAD+kjz &6 M""u0H։qEX-* ZXch S Mi(&k8CMPAPqe2c #qRGyLd3a/c{ 9:ni\:xO<" =yr*0*kT>Fp 1Ch jp.!A5K"!PMEx|xzAFΙQ!(d"J?E zh2QkJ%9e8ms~ٿ;#U6m 3"g1iuU$nL։$N TC)-}-ᙙLꇸLz&^a(yN7I:lE76=̄g)=>=¾vs3:cאH{478#,~[{y[_Q!$} O:뼑oj,\ ݙg-wYmF%@CoWB#\IF9 thaRXVm߻w+٘u=P8Ty!H%"R{D0K ( !PSiv(0K !s ش`f/8.Raz(<_Mj7C 5KɁPF^|p(Zx=?W Aᑣ /C5Hu^b"pgz å韎=v ,5jpt筏W߁A+os04 QQoSAC`p!p[E}EB7`ANqha"C8A1@e؞]VZ)!Ͳ00:,R P̤ s͡Xa(;Lk DžD[<#w䑜H sqcxMus\,8|hxWCrN_$2(h )R 0cK)yDj@1iJ7 LhLFTPP(TʺB!㈅b:`CxC]]odowX$$E$OnQDg"m~f8͠LVY?ym3;N s^P-j$*4F7cf j})z 5cO7=:rf6=¯~J(pծ]޺7 Z5"5B_ .]o>.Ǝw~a97⋬čy9B++I2ѕ .(ܦ A kԳE]sZ079!X"  S=ZRh`j#Y  Z"ڕASV#^[[5 cMHM^,PLD^8JP&{?R+O(4F&R2&G&SSznOa$*`6VN r8qCyv'do]R<^<@0= ӸA(߰ 0* BHQ1!,Q9e^7E)*HϪap ApZ1ԕ~PƋEkZ/3nf:!ҩK_/0S a"2"! zBJm=TY-Pbc A"j2xib֋; o9 Fi0I T蓏 *GM(GG GG YDp0fA?H^E:d"4z F"3(ˆ1:w@ ه&'ZysVޛuY7۳Ţ t@33-PCnQe:m¦(B /A Rc율չYr\q& =ԆE AQG|LúM~%MԃB-f: 19*R1qx8Ns83F r)HM9'O{68"x5jj-xAc9:^6 !B3V=˜]إ%60X$'lPD>}qPi|8<]?! 19-PX&I+fh8hxH$l bvi62AmBT-rwRf]:% hĜQDiF"zà<*|J8{!/ZJK P"jBP( Oqz ioY?mL0' 3h݅Ihf4>:(IDE(èFiR 0S4>Xp ''OipR-RVM uj`SM*q㵐q{q{'5"(# &9^םLϴt/4 ucDѤ4,&yC6ct1*:(M7:{I_6)DpiL $g =x{}J~UvAD R)ַ44sCP# GP-%6ĘPM=~"(|ٻjߪ}L"C=@(dž 6n'x ? +46A A}H$ EL(3]])U|`\40;[)Di7P >*rxu@'\n{|8L׶ zF뭃O(uIyЛ쭂?+ʕɄ!}4=gfa굚c sSmٹ_1ǼňG r ^ZM>Opzi4G5[)tƴ%#`޷ RG RyP Oj= sk|- }Cy?Ovk8yқp\ IDATV}aOjК ӫ멀zJ$$ƶj mp:ȟ#tQVW0.$KF#5M ŘبhXHFu`0턓 ͤ&*ǷeZkDŴ ~ \jT/IGIbCU7MWs4MOm<@f4+fX=}M0|iN0|".\8sw*9p' ^ڐFh˜xBw-.3N R*aԓp _P hC PB{-T*N] B)vw0hi9mx(۷?ug^^T,9K pZ0g%39-Sw pJECJ`=)6 2 1"; y&iݨ9K2ƣPB0*Ĉh0)JL|]<2Q"rzFRuEj2b|$b4F^i?!)'0X33θ kj{b y؞"hLѪ o 0<^Mp LO0 {Tn (n} ұKuճ={V0DpTՐx 5Tͻ x3D09nh8 |S4+>GrB*HC/B'_Hw?x>xݾ;K>f@0'M1v:d}?<rAe3[ln¤ +fs Qp4ѼhiN/uKB16C'@"]1?XkԘȘ]e9XsL8tc[~ڡ RX}`}M60$D|H|A k]Q(Vc"\LTS|[S?AjjGigMm&D[(5 *D o^W=L1Q¸L7V'r1)OAÚgn]L/[3g}"TTN@+6 P4Qt L+}tw4UknTx]n̤ΝGEs2y?: C p=nμ][ <<[?No<-N" ˓op|=m/ˇ((X1t34tlt;99_X|t e*6S)3+}chLLLi 4aLq2EK,.\**._X.&x5(|!@+`ƨbF$0(3)CCb  PCECCz/ O[29nIqmm`PQ?x;%2-ɪoGEpKZvE3Y!+dlݸ<_PXX(|fCc`24:Ӆ gq $ y=gc-^{(6(+i$Mjh&9^^,_TPTCc|bԮ+H 0}oߟN& >4)x b>n>gQ4<(9R'Cf_D||@Wd@߮-*T!L~ Xbvq fqPSYG, Zx`~!+l\r "j5zՕɠK>A~-`X\{ 0P\ ?jh ɿow|Gb֐"8>hct!Q/džWX У'4VS==-H#62,e`)zH_yeɏ:T04_IP] _z-C9%Re {米6BGxB#877sםi`Pu,KugQx?C[v,fr*OTr gO 7yR$!dPitCQOV㏡EA7sfgҳwe[//.,{b*( 74!D;*23: T|Ai7Q G6X@Px!V2 BJ_>1*%;:2Q8%4vfR]@ɤut!Lܪv T*, ρ=y)~yxÞSdž&A (G>$*&(RUUXiID\pCE;:7UƯ QX|99YGzP3B!A*a N"8Pe>b5Lzт?@x'>0aNbMBLǮӧ?9mGQJE LHrB5Gu訹x1z E"G yJغ , kXV_]((4LD *afX]_ܒ|uGma4› F#D4h5\CO)%J?qh>!Ŝ 'P(<Y Sj{&61HiX rg &iooU~!aQ+XSadb6ϊ?a E)@7bsbrE1w9[ }D}T4*n3L懨C[Jq!U|H& ƍ@Z LZJ"gʟARTB10 *d@Ѯ:!$qbӸoT=KuMgxnjPtMƅ,C3DL4XƏHҿz;T|'W}G%䭨!I0/x![q2QKpJ# [[}S7_}`oB=i #5HW[fR/֨h1+R۷&y EZVst|aiM.F K_eij![BSVZx^1YbgրC3T Q}W1:$R*H* M+wqSMnHE VElԷv13N$! "BHY5ɩDpOTT5p51fgPLZ8"qu_9_AF#>m\?f3.\Ω5lkrP#iݐkH7&-nbOhz<Ş]vᏻ[lj"6z#'~P~*nwvڢAXWU{ z&o>^<va^}Bx [ٺ8E09!naƴSL$Lgr(C@bQ$ڢAT;oAh#C"ľxF-HPp`dqz⢜5]Ev.}a203ѪM;Gfqq8I Ȩ}}-S0(S2Sh{|ˈ7'QAɠ›7b::::ndC|״Ao~qyelp\Y>aqT.ui( jV>S8RK=>r>Om>¡c1'?:ʵ߻o€FokMqBTO\@N|١BB@R_^R-``omC ʹ ToS¤ K\_՛C)%L<ʘ.`brc&Hഎ6ڶeqdΙʧ(^0hfƘc5jY.hHMzUwX;bFqu{aYo!c~wK!?{k{ym8ƵhA޿{Zsؾ."Pp 7-_"uZ/hz׎kn\6!-`?R<_FNCwz47G8ǭ@5eAh `V!mž)jW="[1{y˞~aGomi2ҜO^ Nԛx&}!ĸMl1knE=KA}%\gZJPxHXRxe/z x M>W 0md`oX\XXh/X!NLkrzRmˀ-Z1 毴mҶ|K[[`Ʊ9B|(>OZ0^Mv*52 [SA8?jF 1W1Y-ʳW"xԩSC*6ݘi#JQH. T7n4Q3GĞŧ Nkź 3$ut|52/2&4Ղq=9*\~'~F 4| :4sbMM70RPã)cr o8z䑣_+?ij$#إ(cgGM)vzzF!@|4>ߓJ!K3)m94m_àֳl.nY(",x,lkCUh3 C 0(dzߐ0D6Aڢ-' (8R7B[^vhC&;Rj/-zG{"%M3߈ [jEV }I4lP k7VgmmilAL^"{ZX0,(ɛ@~ϗoh@M;PX0TL  w0x. a5Ztn4u"dy)18L 梇un߁ajz~=:!k SG K;qi72Mm`GZFMQ'4j"']|3BZtHB6?D;z3'ԣ,aq,ePb_e [\نѐ b S9tFɠ)* "+ y:NIP`HyױF ڶAǂ ,DhdGb0YB*!opg#hT߿GU\u9>wuD=kuJΈ0?v^ݼ0 txC7j;D _Yn#* `7 A<{Y@D6NgYvJL]͗@=o2,NXg.RV)B2u ?vC(3t-)< A`]q<, x{ k }F>x=1A^Ms=9q̓p(͋^fT!>Hj1H+*|i^ޫC۶!kXoJMn_ਲg8GY )g[?/&hy@&BqF/(%7E&Y 0j:SA.QZP'_77F ⤱oIU6 oL)l%Ne}4 7Ep8˝dM3f4L &~(@X$e 1Pp3_] 8 !;<^Bá77x,\;fw >eaЃ2=\@6Dbd'y^!uy]{'G#K)V9נbf.$ ̆ 6K lz[23ijݺϕOH}{JaN7kH})\._0HXvE1YȍM`™[*`Dbh:z(,IL0E)/DWؤsv}CvB|- F-PSPh׊p.(җXTsPZ9p|U/6x]E $IFp`#Pp#H4dYf"EZk+Qw2/%}nw͑s Qߵ뼮=ϩX7w~'8ؑݿAOv13Z}~ Տ1+J \[r^Yn)$}1ތzW Acm|?W.ʒm[ ,6NSrWLNdD`1[*R .`I4WhC ֨kp,]ϊDZonM5MYT IDAT"K?Xa!ڵZ?iQ@c`[g B-L vki0۟^>g.r89w~x9~ K}:^i$Q eA?bсuxϕ?xU ׃oB[=O8| ?}UȌ؟O(O燞 hl%k=4݂QK\fZ< 7]JX(8 A \[[!@ZvHi! vH&+`H+G|oALHT:,Ѷy <4 =! EޗF6)f|~߯(=Bl'jVsû;0; %ȿRAQ[?x1O**@NxY0L|'kY"вq c!,,Z8xpQƃ/ٷFO~O~rdIsV2`v&"717>!u#ܸ;[F;¢+y#1na=PXkPeЃjG{ʇأIwݎZv))2I)z?}]བRgQ5!w.9sc/"Vp5HKlzX!Y똣?g̫x+yCEm?X7>{t*AT{<&}[(Pc |皢~a/Q mGER&Efaⵎ5dSpeG6o-^c VͱHc.hTVTD)'+{PyB>+g̴࿩]3e%Pp_捞Nd¦ZmxJ8܃xJ8g@dX&е 0"JP3) kѾ_5أVq5f$Xڹ~ξ=~0h|#=9ҜEM4<֨/Y%|c5Fי,=pxErk4 CFזT83\"۶miJlB*x.X$&Ammm{UZN(C#|cT y_0) c1# (o"tNkm5{%rWw MXð̙7sgkTĠ13iFd$c5BX|c!ҭ[03}-,s8bPЅJEDq,s!4#L% œ=VVB@^:σpvǝT!t+c³ɠ҄Ɖ t[R2V0d#=i4T3VBd;@xЫK OhK(kmĐ iC;gҎ n0أ.Yg!v~&Aa"A -:Q+MKyHs 5mJ[.KO>o*-*Rh RnC& vԔm@8eLhty˷F/Q˜kR_*9b{F/6kξ' tg{'>jᘚ*c ȨW͛7;|cg@BaaS=Z= 4^R(J(dyʬvwڦ \GlTFm=[&. sԅpy>Vapݐ\!J#`RSaCyܚE7 9w°׻_fs? G 0e=;_DEh,D:Y} àjp饋x1G9X%3-B ~1'|<I;Bxy ȠfHbze'D+^_oD =kԯRL]{Yǹ{T3I:6dL`6@(aQК?Ha_!!r}Sxh!|Ý˝+̙rs [~ }%k WBG.;Iu vSy-b2H߰n˵F+wW.qL%LMEpX-RrFugYxmBޱ-? ප9λ,Y +9`𐍎^ 6]o!m=%)WS[tl^GXB2Ԛ7+T%QA:0(~XE7B'$zg sQ!cWm7ȝ&8uQG !0q傪8ϭHc3&>yZGs$ĨEj0#KO۰IVKx'?ptUBt)6Y!:_aϴG>&FlբIT"TGZ5^yF֌p 4&_^8S{m%N]jawcd~>@F3qg73{_!GYZe+Wj4F Jf pior^p 0G& HB؉N!s.E!`sE2.;%4 ]t~@d#lRx]o'H-A!LcxD"AVh\eCP[?vgN &13H'^1g5{$}Opvʄ$6Y zbaTT= V9srGz4+aTVDa|\+X^~y$hT^^ZYY99OB܊U|W\Bp rAX_ )~5 -2˿ڸ̧c]X09CD#)PHD0g VU}#!)¾xsYb3Kb3x%CHtf@֌! X !b Wxa0 )p["HZQLyhnnXdJ )#Jc4NwsTަ",f=GHQ"+EQbH!)<}!HY^\6L'bﯺGW^ f ,ZQ'GVB=4^,R5S>8Ȫ AАzBLuВvO=~yge/OJ '?i?rW/DF0ąkKCB#(n SoaN(T푱Bc7n\kS`T[a [٣!!U+Q 7/Ha0͉Z B)Aj0~YaPC0G@sRJX#))Dn`{z)IjQ9EqkeK{=d}vӞO?Wk޽q׳Fq͵Y  GMՀyQ"T%j4J8@z̺۬s񼁰9fwל~ڛ߿O i_~U3Kӳ9%\1sha Mf_H: @ZqmFFAk&M{hg[Ⱥj<⠄dubZ󜌠LHFXB%/¡HZ%37d)( q ?PxF(ڸ=ek?4!0~He1 Qp'N27SCx8]B1F55ɉG7PD QMRИU6a8af ?;6IUC z^!ՏfO, n\B{ "єܹ@r/1HيX a*k4И1\㣡p Z lgvL}6 ,h/آKzS`D= aZENhsT&ṴSH}LoQ[>\B~ѨW.&ѩvAoRxkBxvm.t *oUu%Mh@sks<{B#xdVU GwOx!MPd<i&pG) y0& z&sM]O Y-|Ph:7q s>0wä1Bp5,{T \+IJl2 U2I:(WVOрzyyTfc2 '(i/KP ^2.0c llT-+'Zx]),g1OOр޾}acxZcT[ 4܍+jhV d ރ5ڡ O6G}feύG'՟DԵS7H~(Rh 0xtIB9ɠ Ʉ,p%Bb_A Ø Hd> I^`(d͋xr c\7#R..xL%db0;@qR|sEd@gtC{􂭘(ͷ8\nqQofmQ2NN!֨޽F _ " A/6JGąneaG94=18+O a֝fpd[;Iͽ{AHW+Hi0(~ _X:jtg5Å2QVBv )BV !E1mhȥ)8: YA.A[2Z-210^ $"F樧ƠڨiB7d3-/q(DW6 ͻ`%$tbBx+KGAFmv⮊fo$=wXQzdzGKB]CzR'Q:pK@hQ 6inO NNl 4kF 3^~eQW:[ @ KCkS;}kt- !`?Z F͗RThBٓAB8_"QHz9Dg*8lHk>|rƅkBn' jkt{ آij.f UwQR*᥀Qѻĵ٣uL!1XV 0g+I1># 6lLbBh?[ݖf}&͟veZB%#C_m c%%aQAB'xh8C7 ?1cYQ G>MhH,)1Jhx0e h& ¼x$/> Kv23m [8-p,a XI'9J^_~ʮܬCxݷF'g;{4;hT-rh(,5At@]a`)`ckHJ Fyds2tH[C!A^205=TΒ @ȱsY[b,Y+FcHPJkN!]VBb s6,YGe%Ed%eK>I("Ib'\`zl&)|{M;WvWf ϐ1y^RNƛ|Is/44α-T !JaMCmt0fv {<Fqژ}aNg[# KJ@ Ռ^p}tK9_$1WxzpJ(.!%`6&EG]+F[jˏ%fh(bJ>DVB FGh'QNQv"чdT̰|o}& ݡvy/aK!- uT5 htPQE!+r;Ҧm Y{L]h4cúl(gN>a0O.h&% mB2h㣤RmQ9H_l:#JGtelKFG[Z8I`C!eh(0]bktpJCȱ A7,@ bu )Ġ+ 2~(ڣ)LT'Rj0F< 9#l~򧿟c3',@f2V_PAlc~[/CwPJHRhOIpe7 Y9P!/> ܐ4+ ;`Q r mX%)Ns IDAT%%p)tRHR)$}$jy Cx@H(1KP})Pl=BmB38BI-uChkT?mQ*>pѣ#{Q'Y nAXfDevZ0HƨHaz%^V@f6|ܐ6U $nRpO}kԳGCCA{4*?I.h-YSyPA#%,L`+ßDS!VP{%ib8Pܹ($k 1g| i:!,.d!,.!!4_@XIaxĺB#%3ˠ2Y `tO=Bx˃naI6M(Fo0wStPޣw={cQ{$8MOa‡R7]s9ćs':vgSM}XW*ͪr-ѝ\b'7׊, Bh,@sKZУiRJgb[էs0 F)%k)E]@* ڲQ0}8LO;=ܚ9 !)!P샵R% mp+k_gm%lP 6Eo 黑/tr 1EO!(8>`@GHai^)!ۢjs x4^Ļb{|mKU4kcZv~HHq90}"V-D+Ef/IC8iqnwCgld?C"XP`Hc7h(5:G݊=:GјpXbyI[0̪U*%Dڈ@Ba`OciEa~Fz<%< -Ũ+n)쿬 lj߀ %QA!ÖN;>_nIk}%J=` X*rRX tJu;w pz6#įՏwLNgAvSnpni ʀj܂ RI ?==?T]e5F]Y(W.#\a終}aջTE[QV SfV9?9 ߯xA3/z S4"6U˗^$$%3J؅R*N$sz~n/)W } Gv>IZ8q32IPmab! Tn5 \ B*K|Bc+8RʞX5\BBQ(dc4(}/i=ZjAf 4h3@y r) æhB--̣9{󈥷uz;b!e0a ?А@x銁 0y@A)f605bI0U_k,,A5aB,.W I[lE)4wXXM fCbjuWnJg.֦($ O8x( >J(Kqp6=0PRqX-@bpTCܜ>*ڹ3'%Av6'q8OTk.8{x%E_!* aYO\L`)Š8i kTox1X'Џ3pG?Ko`637{ͭ8Z2%)a JٔLrՕ#s5_B qbTm•L>wіWe9!ZMžA$m†dnnA!)^G%7,,"wL߀B0NWs:Σ}))}kOg)^I* M?uӬd2}=!%|Ѱ\ N mlk4?5,n!vN|:0Mٖ V;XCBW.Ń1ࡿ>$E>j'D!hp 2-n&( 6W=k'AFof6>173IK:k4N[Bm8MBC X$ ;0's:eHHs'ץpի흔;pZ{@h(["";z;}}̙]i`_đׯ^%)<\zBػWmQU7ꄰ¢!,Dk ?fL %Տ IVG__4BBKL\ P-D#aP8Bu:u_oX%qC UYŷGaأ D19K*a^m w‘~d6{y B8L?W-@m)tIqpC3x` !r"Kʫej{4sN *Hp(9 JaMM%ExhOTVCG-#{(d(md.E%D!2Xϭc# W2m5JxpM+BMRu͙qD2j:Ejg4uk̰Nxڮ̆h(>::V2v &°vQPh 2nxX8ڢQ /_$P٣( 2پB~ eX't G+NP4EX}7hJ^3EF󋊖5Jcz(h@hBz_Rl̝g'͹,oB`ZP&,Xn`;p+A 8.~l4#GFƌU\3V  8]6O1Y =wMRnEhd%{lL'(: fFy!ٰD%3/2t0BW.8bH%kFQ!Dprhb3Ac0{J!ѺT`5 Ը 2"p5HQ#]~Br%lX}@}%Еp?:`45(PfEXF5,INSPIf*vihg/_6F;pLN4Ш`]B!ԀfWhkg$.#GX^ !.6֫d( (E80s2gzRB,lGPB@a5J10EARY`n#'W~|tL$ }6 ,rˠ5D9U('16;ص5t1y2) zE#(60Rؚ$_{t.hS{Pl)|6GODd^Gd1ʳӛz_=e <*A GvoxZ{VcW8Wo/6LH1J*&Hb`TZ.{Z vm6;=j Y 3BX`ʞq|i5T)FT"kXRIERxOb|d)vP-IhUB) BKa 4ŐȷN!溉Raof>R]Qr&G_3Cq_Ԇ^Hb% (%wQ9Gf]5`P ):zP[P7섑D[#@J |LfU Uk/ii}?* ]lmQOF-}KmրQ `N;g{HN6{ NT{a(J֓Kr0OnFCPȩkdR",LK@*i  P`O GFh*DB/7mW#$KR f20Ժ!5D X G e!)[F&Y*B}Dg ]a!ds R!f //ɜ%lm"Mb Ǘ`PJ9;_#5Jc0 ?уH~3 Z½uN#^֠lb:{Կ IDAT𗓘`)[{b\H"2F V 5˅Pc,cI!-vg?5d7أV؛ fE݆0ׯE/4%Av! %vK' vQV;~9sZHFHɫOީ{GCH zҩ%k!F0B ' /iZ%Z m-")0775:sS"/ ڣV *grY~>}OcsЉ!4Ɠޥf"_J {h;ڦ 9S Hnt; C,MUS…& S^TFV 3JgThk@ ]}gNuh8PAʊ'#"}J1<(6ҝ+aq\!95s.u#p7yB x"NWkM?Q% wg"i (a5"`Ѽ!r Ȧjݘ{v1̪8lvO*/q\q^V xLbaQ̩ st&j {Y8EDJc}=K!HڕXڐLSO{U"T!~jf}rC333{=Aa أ|ubCz%PmxRڅZ@#-"1Rx*ft蛰Fe]L8բVkH.!: ȰV)rEXHE!"]x"h@azst/މB3J+; vlS) ':P@Kaz Wpd =92W)lݚVA=kt֟)ewZ{4s^3D2eʞ8|x.g2z3#BUA9ez~HI Bp yE eSCdJfHhIoOU?CjCb0M?Aٲ5[ֳ6ϣ58c)d-<{tR8,h̸)7[% %2cnw/K;5lZ% ]X/F z*}r< DgcY,Pa=4`DX4P{Uψ!9Q:<s8M.9e4?UoחQCh M6Ȍ*dIl<c|i}+(pjI.‰AW29B)5:,)-#ĤF:Oa-i] w\)!=j4E@ £WO<H!+z-[ϫQ/AX!0>wGs79x}Z e}k4;_*Kأ`40LtfXpj_=cWx @JRx~%)5I:)6It @1FR` RP($ ؗPB-H LͷD)\tKd2B(cu ɺ59w\n\LSPlNC`86#;_ %0ɴ֬ B%rhͪ`I +!%, fZ S)BB-9ʳ?_䑘K7JQ:{4sXO-Mn*?"#kvrz~n/΁|`&00qC/NQ*T{WR^ ַ_dqVAq $v)n[XF6v&QGjp{ѰD#J &g„:0FЇ"u3|"y1=ZbQ)gO4cl:=$7P3~{0 \.UXF y.-pj0E=ZiEʏe&uVipgf /}{4WۣaFBq1@EJt{xxw|6'E&"ۚ yV2ġhX3]4g)6RO4a 1?qXtz2pM3UU0lk֦Dj@^& 0و6 M=tirc,&…QP?tJXkDCzޫ3iRBs-(]Pe)R-% UXbPBtʴv\B*gr}kaQtoZ N usmŞ=0 1Uih{ Bf-gqWɺ] S&;A{mnڮEW8)wY"!U-юFπZ`(+mv4xB#(TjּF:kb♜2[ƃO!\PiSKv]Þt |w=Ò)J&fRqǩl&b͇K):_tl8LZ^<- S(nau4}A0MQm|xJ7+!vDY'Ncς?ق|B c^s^Q%-L 0MAB7ȮBث^w8Eax6O`MъS`)ei!̞.t@BiALQQ1,RlYaG] Vw/DCW( 8#0%wec`-x&pmS̍}%<"y)b k)e15Oqqa\hmGm>̛ }B! fP1g64{`!4ZH#J| qHJOjr BUAp B9L)kݫA1Z=JV?e!q$PZ2 oz 5kXf 4O-MT nnܸry\,t6IqJltr$QiѰأp좢]M75: h;W^١p>;_BO>M_`?{qIIE y~}ҼD 7 4Χ #!qo7vզU[4=?a?4=jc<|Ѱ%0{8%n@CRFjGRwH /\6GsE7BF2bx7 PCDV$bJLzIBC @r#Bhg2 ׅtj&`әguRWt:Ja0B(99^f[aK;w? ٳ'*. VB/_5_2ΙMy!pvZk4W$[|]xJ'5}hhHxϴFi{9iz;+0/\6)g?q7&ptI4H =Rh]BРNGڢN6P<֐ ,z =1YuilRRڀ66aG^̜7F O~yBWB}"2FEp0hs<y [70[[ѬthHjf'V[ެ49+-~-St燗61) 1Yc3~&NSD s?zS|54lCpF 1< ͜m)Fb?"<3P,r|t!y(Y Y uvs1oz)XS9$@8999yBk"0S$.IH>@e -q>0iWؚx ~ Ѯ{Vp>dN2?"_nȼkHЉAF y}XU`Bt/a&0 *X"Jח6Pxa#}_ 8uw4sVySB#bX(G;@U"%1l2HU': S,.$ DРHʐcCGe0'M=({&,$ KDGŔ F*`ylH/ 8`^Ov)ABAi<4cnLq\&a;^ (Z!s66%S)I6h7frŬi;@{̑rS+N?.Os"[\+/`bι^MJ){Bpet@%TEU!x'Bg٦YPMQ17a;m۶^EOiu,l$ '陼D$ n鐈 : @*`{Ϝ91r(x~ oHb 2 >m=M­[jRlrEC%0!yQ&;Cvxlm ! _'i U;!vB#BZyap) 5q ;mM7oX7aH5v\1LXO( \4H<(AЏy>hgGCR> Atv5yߎ:9$!%ՈoУpE.|"iK]D$-S^{.lv`&9A'ڷ3$#)4(+ ; : R4wխ˟eZf@|5LF CXws)'\Q zfWGwqU; kch F-Q/_==~9DKפz#P=$j{{k a.нhgnTj&ZRhn>o,ha~Txأv!3X7!T[sP2@hKH"U)Zn`ACormk[zAr^5D5R[ 5ȟ]33s&RGR IDAT/ ROaa;OD =u3" ]Cgy&HU`Pf#c5_რ,Pܲ|$rYK| 6C KBgHQ)ךǭn,NT X̙Ĵ%Ѩ=VC!Wlj-NjPVBo/u]5gbҞ^D(hƀ1C DEz 1i6Yϐ7n'i ҃\A \EZݓ݀Enx@!--ېoTZ^ 輟1h&ꐻ:'7tJ /:;Lv1DRm@B>ÆE cOM2BCx|3}£M£BHP[ YiACXnZ|oZC:F`WYBр%V}ߒ \b{E+CE*dwIP(,_ [QN VbtFFۛ[n,RՏҦH$)f)!\ÈQü.6G\+,O9fa/F06eP06sCJ T ӕ$Z`(zaL򷪇ў;rb6n\E(+ " csbd.  J+?>#оU1[̽%o~o?]B;[1D˶SW FF8BxTH[Tc!m ݷiϻ`p&4B\qu! 5I~dWBpP81xC2B-6F nfwBq`a E{o :S^6 ? )%L`x =y'F\ܻ%+O Wq%կ=Bno (IE117+_I<-'UN> F|BVn7ck%b *\[W&A+z)>^-0g>@I$F ]% hW$5]53es( !-* AL㮗 $-lL4#H eyEńB%,Jwoܽ{:oH3.!h!V_W GxOtR<":uu%?W"1TSܵNxgQ'8-놤QZ[mo2\180 U;2rKFU;+ו֙pWѡ #gqo҉bhDψZ6"Bnl@oB_ t$ /z@,H!,]JaCvރ| R `y/aK˥K&n yI68.ҠSM}JNMm RH x΍7 b MmMds%QM΅l#W>1 j @ˁ?ICNayA샟9Gs0_ۿo~[2@G,vK/b3 t1H Gk aq1g.x#B&s*+3^YCA[O( Uk+A:=ꦡqe|8"ey4h4pKYҺ&xD &&b4>iCo5AV,% ,h] r o->RG+7\I{CybIj.v%;1a{S__o.}c'"@u}L5rUưѕR p$"6yO"E^V}̍.'s5(Y&#q iurUF~ ڭd蔗[b.-=]vUEb֝K0` `K%C!@wW盿bY.[l?$NL'=w=W^-tJ^w /IfcTESl pJ("*k+W: ;d5z 7K}n ~Yq1a.ڧI_D25ݮKzm{=2 %ΙR$'~e ۋw.e?*6laTƺ;現N}=-qr_|O9:G!G8?[r%X4X[Ҏb2IR(X[_)Jb Ѝ?| eIU5MJ8>+ Swİ|-Ϟ}~wC9ٳn` FO# qE{&3Bt C)}B&s_ípw 5 ͛%-RP>iLL>>qCݾZxCUxbæ lXd) e+i7ԠA??0ġrg0>syv3!~|%C!hi54!$,/}Iן.ի|sJ|%M||=/++:ܖCXM@W_eBaX^{Sws~7BUBo4Ƨzͭ$ (<!M,8\s{{ 2Pj6M 2 ), q3ǭ>4ai``CQA:7A *Y[k@KeE6~Frhn/]ˊpoZ]\`cO?^{&9:O~(DO~BR _EoU(Ōe+v-QĨ]*Vc+j0*֮[RIA yd% 4zAaT(2} :{5.pbBP8wcǡl{Ģ;`_{!I.7B};,ڴUrfغ T\t߫NQVAFuiw>G Ra)0ᶫcM:A!9 MB.-6 GR;\J.ǥuُ7'O>,"55d|;`=G~#'?CGb,b* O~'VSb< )~&|[m(iqPb^VfVmTxk<ʵyKJ=+/嬹?m-=+G``XC}b g$vz/3fnko/{62t"3sg3k׎>֍' $gxJX*/EwU=O8Fu)Dk)hx5ho=ʉ5k`_~;#0~ 9%|=EhH5B)Ϧ=kc$ohz|'t *t~K̰JDuv|Wɺ>ǕU:UN¤:޲jjng &-QKhKl՞n?S%"bFqk$Qogx77:_v (0#|x(-,d![!e%!s .V[f*o խk7>A#ܯ t!/[ΐntw6=@@(li4NMMgpug^~ó/?k(:E0~a$UdM|P(8|@NS5#)B#kxZ̥e+Ob"'+DIQ'QTqA;KT(JtQMxOۛ9m}nVNyW^R=x-5co%:dg[=4?kn}2ǀ 7/޷J%Ԅ_~cclKwQvPH4Qۮ郄j1FEc|wyZ5e?[ JK|x`6ʡ @U0WqTkl <#jHUaC?ekޖ-掑UyJ~G1R/}g#pE#{$Ӆn!`85/De>EuNA f5 Z"|v*Unih |,_+`+6lP 'R#~),zWِ*W?^6-e^KcJ P⏿Mҗn=C*gI5t8Jڶo-,+mź_,%ȍXaK/zy߉*Fưʕ* q-H37qLx޿5@%i<;f9D!ǢFQ~' r@H`j A32I_J$x];S嚥oϜ˿ ؤ#>L` <~;D9;?8< ʕTnK&$_ACg+H?9EB 2WOr+^l*fؗ2Hfa6EkZK־rNYc ;w{6%Q1UG"PZ l7?bk\:G+# 5LHJ8T&t1_㽩T&٬3:xEaQ-$9ڜ~7l@s H;O#w4'r)r*-e* `Z#4o}q:/sZ>Dm1P&2<}葿CP /For(c|Q;ik/889|KݨFAZqגr8?X ߷]HN7:Aَ`7G {!Esg1=0-L?6܏9żLk}nB0˟gxB蓗8KmuC $k,o!xʞB9Gww'}MZ~z5:maY+db ڶ I ꬧,"$-"(0̞ЗjC:S X6D>\ XNEb</cЫ7uI|Z0ޣ Ebp-WV‰tNwPfkk{p }?O~@FK'K_Hw}&TR;?SJG)$AE#gB1G!,|Q6_޹5W\COzVD_a7DS i>tW9ڜ gNU27 X+eX:;a'i>W>^:my(;w һl޼g tÇ'7o7%D%@n‡~KO'zl!?$xj)b_;_n9^sA|5ӷ>g@GWPza"L45 {83&nF@xf׭K}T2 o޾}.| *[b\C6^=wP8f%im4¡f??;CAK,2i%Et_~Zu:r@X'"8 IDAT%-3#4J"^e\tʹ\:->1G{AQWaJA.fFfC|X>n)PX]_3KR5Jp圢/W?yU/.}SGqi 6Z:0@7-]ZZ^^ZzDT*qfdB}mXʄPB~4%W[F &)*&VF/gu^? Tk_RAQ0?< ֽol)\ 1$ +(m׽ k >*O7@ ᝤpqpqppQ'$z׏ݑ76z4<'Gv:V+Ֆ\-aA; { QT+u1 3#-;3gƕο^}+,.a\fQL#k]f9D:~MxYgMd'& v*={XDI!|."R'Sϭ)&Z c!|d:1O-2AX(@k5tiqAx$ޑҷG M:r`ﴅ B/l߾F(tuhrDI4Kkm،@Eq,RpI%݃4_CI.%(AM$և8'}>Gw:nJ+30's |vpkaP(T s-.$`fRBr{B j@Hi0f`g\46K8?۷rF`x'P(ꍒ}f}aXEywG79 \-^-v_mIUgQ>֒BςR#&$nv8R)xdj hM`1NY`xiM-J2w<s -LXc(w"E B@D8.^[ cs~T>?2J(։8@P/*0c3XfJ ޔ._5Ǹ| \Z[QI_@QB>alr<tPh+6aDƐ?`vV} DW:7ƒݰkQA8Jż"Eʽ!*LQpk--7FAo)S@P^`0 2N ZoylkZV^ɏŪO_ 萇KBfl = "'݊Dak4I %e) RNJ?ܟLV&ASW;0cL Tr2S27x5kg9p^6Z9F1HT&__Nc3?iʻJ */,w-imZ*8"V[]".("#!ȑmS6mr/TVNFOxgv.`kJkd_fٚ[F产 ;4;pTG|@$!mf~ ŜZ UtTIW7=Ƭ1c n !# % QVY*X5-•N KW4bzC]Mool̠0sv҂J=;E:f -|xtaZfr\]W32d. s񫷏sgG .*҂:0.<@!EaUܿn_3 =OB%|' dn+UpPyb _~HA"Q W\>+R0 Na\`9e5h,ڂe^l Ou^iVYf$UhDZ4Ga asq(WVdbdQeB(ޖ2Gpx?1K)-0eiW(. iuIa Pqzŧkk'kje(DW(QN H(cI!d8j"٬(:5xaz`01념Y;jeBU㐷yP;D@xP=+P?/w~EWÐŁ]{\7wa|2mydv(sTrF7Cia WW+ ':jZSN )t<b5 ڦ10CJ(ic1+\:j!?w #TwUL-Yt%T]G }m4x (7+~dViZr2Cjn81ƿXgmAUsÄZ8ɖ޶W}㖍uw £lH =]f>gb39iY>UT(Q<͠X)ZP5q!${.`pUCXDCXR8&[A5 !rZcX's[}T̕w*}'ֺt*ťcZ;UUdβ2-[&%ZBy\ N_!z!q~ ̱3n~^G~ryhVtv¦#5ɂZ4!f/%r(,140gbx)6e0wk19 = ;RxM(B  (KL =Nީj]f1S#&Wz5ފ <2V!sſ{t5f .(plC@ :VHhPbso[4by 3S(!tB;Po 5W$ְgW KI4*#V^'T5`LCRH-r Ӝ &9FXzǨu訕d 5zW._K-5|Ƥ0:%/s-MKpX_uaRB@p.aԉuujk&WO0b?]߀}+pPB@_F}lylgXNE͟ћU Qdۉr\Bd>JhIƤ64faCNZC89 d@K<>s` {fAAxEX]tsp[[k[ ­³^B'*(N|9tUآժؑ = mtZgm-?X.|qoT.K wסQ \spQ ^yI@۴G?9MYV_."cK^vd"mBYh\L_`CU M_`q^3j 5~j&ʅ( l|4e}TK 6*S Eg %%~E@6GgA s2?/(s0fƕ1hzUDNo +q&SS0|ޛ2r󁽙 joLk'k!`?KBNm: ncrH!HͼeLLSРU0q[Qe{|(j;KA#aeJ6V"azߧ9\c`A Ndl:iRAqi4d+S07n|ةKl} yܰ8 (yuau3c|7?u˕ Yu\vd$]]$OXU7K˜ou2%D/ٔzؑ2}*P 2IILno./)ADW_+)Lm ".3%b\9҉Dڭ4LLL _h5j *aQvR|gpRI{ʗ9SAOVP|Uxo0IE~Pmև_L3o;}NBx¡$\[[*d\ygbDB/Z<6W_ ?ZA8= Cbfͺ0 {aVj$ƅ6.[ق^i't1J3+pgnpeK!`(d߫@f i;#&JDĵ&ADb\c ڽ(|B@(ݲL`ʹ1Q&1+੒{y`$C Geϗ`pWu,ʼn\/ |K!2-%lM"U)!M Bl?*TxB(L~BA=cF9 |(* a*n 41y;[H&30Ug14Oγ'QbPRѬzO]/fNaS& CG pq2j@RS_œ^@N:LЂ9ՙ S jb ,R#+ul&M6'J9alQz(!Yy|{Cf<.CBPZ6[SV2zËV$UG*_ Tl3օHNQ5IL 󝦶D [O dP#9.8jmh)̲/LhCZ&m7*S3ZAӉ.UGxX7nΎR( ~e !?4F X&!>6BGa!A؍n\C規xdF S/VQ( IDAT>mLt8OhEGIׅ^Gޡ0,oj<<_,q=?q}y tpCJVm4G%t!` TNaU)PJa[ƻx;O:[&&']qVNnF}cGVE3a-QCBH}14Ԃ0zucVCI=*Rt\&;~rss`GX@Kb= ̸rT. K]AC2rR<'=΀BmF # 1 =ћ !<]Y(8Bt Bя1 M\¦"5Hx^bl4 JXaBgNr%}IPĶCgPoѸ w{v󑜓HGW‚Q8B Jނ g4No*̢wY:4Uk#ѧO/'h%\UQ[Ebp@Җog#4Y1G$z-]`'Z A X2{IbԌʤ{Ѐ@qck L*̘M!=㻓5.DxA̶-hΓ3Xפ(C- M;zE2ozĖyLˤ|8!!yaRGl&!!MCҖ zf% ]۽q|B@@wbڼ[ O?X;hioRo}Cen6n_pEOѥ]3wn>8T:(p5š4A3nZ+xJ8΄rX;'IƄ~T9r"gGw@x> 0}t3L: a"DjbPz >/hf[t].aM6o $Ce#.<qOull!DfEɅ5Y"A[Qv^.+gVB/!|0|DQ,h+" eA$ KH^Tw#!||+7 9-I_J%sA`$^wE/xal;#T׍J ehVcޓldYhB;a haّi^!q`flef0< -X5E!Phc([*73TBNNNRx!$ +g 4IMFEaI!S cc*<8*C1QJhHw̳ <&R{J=|*bhōڕٶ96H\Yl'ix[)!,N01G WhD@xhC8Wzh%LX wkʂ\&ʬ1tR@"2*=*Qt ORBTR؜KęUpzZL[- P#B Ln)>::*@j$uk$EBܷR.q ;_Z r*JEuPF@ B;!xȺKE0xOChlq)Y.఑)ůOE 6}/AϤk`am _r0NBkzaiXh{Xd )!A@T郐[?,ZN?ŮCaY" 1H0t/!w吵U4GRѻa d)C3c*}ϕФ(Jxw/%D0%Q$qj:SIm*gpO LLCL)Qβ#>eIC*0B2[jAx輢z6V/B8+@ 럚R."7M72(z w\] VƯ#Q%WV{Yc$՞%RGӚʀ=:RBy2QcML(WvUT嵪a+{Qh$!,X.!VQߩ!Q yʦ0569Jo0AH33SF (HCHyRot!|qaV? !Rb14ݰ! c0hZ{'6s{yQR0=Ya0TXEZq -֞< f/ 21JDpB=d U0B @8K&U(,8QhxNϻ JsScC>ЯK ̠KջFov<)2&g)6nS|(_UbYp|q.J03n_| fxB(9$ GolƆpQJb dK#uW:8Zc*UMizà'[ z7QYF:53efR z''Bk}`KtއIf-%WrAt6R SJR~f#_k᷋{*!A()R94\j)$`?ْi[T>q2yMѡō)Pi4EH@-2񳂣F.I9rcP!_w5 8=*XU;p Z @M^ Y͵Xu+fjf`p[qhS8Uۯfd48sTW1 S\tx>it eapD>,zEl޲F(8 ar7!,#S ’C2D3QeFSr[cA/ ®}6~x{KtQPkfᡭG%rY\ On1 5Y2HsB5#QUI ㌸8~'OQ!!5%OhsƸ#/I'0x/_ʜHbx4k۔[KuA-)ucz5߷JH، XLE![J={Z B?Z׈D򲝛@ޣʦ)4JJpFj%̐ L@=Y:t! &pEH!530IyBmF(2$gtڦ~B*r?YɣK|6H;`f5Ul/g/WؑvT07hF 5(ե2AQ'a)ZR83jFp_24 Q” dLP%r0)u,%Px62e!yhSd@9 I#V݁= |qC SA`bи*޽禦w1]ګa2%I%bTxQ>% 5NPh.P mb8N (8R B/PIa*e3hAPt2]ObeEc ,a&k 6l]gDž2G)< #R]81qX&O9w웒a ad>%iJjX籙;- RXb-1\ Ck jG.,J(3 Yz44F J88c(pE*Bғ\BIa) OBx+k aOh2G7T_yl\&G@z] l!$Fn􎚘،;- i'?%jPDZ%?ܘ ӛ$=b\B6=e fSyrM%ebT)7I /At3nV5 ֩&(zr^!xxhG@x3o !eNS ! B]0"0$Y?c:(1)|ӣG<6:3Xr:dE Tū}ɡ ;l_m .LPn[٨G ,L+~&lBVtJ' 51"M!R5Uȩ:Y?5_(RaCmе m3)PUjNv1L& 5z5BO3#CL(EA{-IEu70KIrX~Wf/5w赯[h.xy\X*#dJk0rB'+G*aa!`l(@:e-=:;QԤ걤Ԯ:*C,*iK# 3{VUcIc%@df" 9dEO|RSFM{+kvXfhtAm!S+ql¿hWK?0^~w5R( T15X͚$)T59z]H`!۔UV t-{(_ݮs|$(7YzALjW  B8 }'4R̋E an`xvd !3XXB_<5ۣZ G(4G}vᨸn"qEZ M CVvf{Kn f]P3 r W.=*!,JhbBvCxIn ه@2.`hQxΛ&ZBLSO-b'M߅ İ;uebՖ ki ,,Wi~lf/3c@2OXН~wVcrKΘ81Gyctu/23H2glE\9BtylU2@BhG$cIm'}זd)z:e@ ] otbPws!C&\r{9/΂ SB5Cxmk0Q`՘4Hy0߬IZ8ݾrZHlA0Z %¸Y3`"fŅP5ڷfpTwCQW jEds4h2sؽ~y.^LIڧgP‘ Da*f"!|EZT\bSkBgE9/ ÛsAp4`x{,sc/L]B(CAa~_ J\stU%}]b֨S;*U+NLDGHgV\tLMpY1[9z*/xp{7<}(52qmc29H! LF@@I_dU ^wI4C%zv{ w[ 8=a pSG i]5|o:VjC7Ѿkk5!St%)‹U[ Pnc~f|Z~-{0B:h+{__v!F |3 [{m[`@ 4B0e`4gG:; $wT%Px<,2lE a]};zY%$%lETڗX;/*> R lΌR; R <,pfN`(JQ-Ƿn!L}Խ| qQGcTR< t+o8Ig qBVff>Qh{fз7t]:?b4Bbpc}eH G+a]Jol Bc",Qg TO!'RHIuٌ‰ijgf%"% SB]Uj vid'I? !sO${Ԛ a1C!ѱ!L).y~[,ɠRabP5& Br G`V:Uj08ǰcΖo/Ѹ7&KȻ(V%z+lԐb7E6h4SSB4SR'P$tE1Κ.`wȫn. IDATfΨRa|b\(%|@s5twWoKp+% BX8įf)T:fx4`sH]0K2Yﺄ퉵9 LѨُeda g۳})הQD%lɍ}!p%,55y7(66 ޾! NV;ꚣ5 BY^zO袵dtw4_NҞOwjHcTBx5:Qy0m6VtTU;{g;B=$0Da 2MxJ!cXMy )B_* K#x҅؇ۿzU~V2GTo/{@ _5kB }`*Jx/t &eJSuc1x]3-3rp>ES>@ɭ  30mnۡ8D=+`qwIUo;فy%(i A2|93=?!B a)z acBhJTn^jp{v@Q B_Z҂oaw 5=TYB*Xޞ mt7ΰ xC%Qށ ׾a0[LXiė:nj!_*69@zTLH) /33_FڣIe}_$u: ->y2'%ذv!:B> T;U50{e+Ex 8"69 * 4±1H|[y>lz}9izzsЬwDgy0p ơ[VQ+WX+<~~)B谌/ɹ)ŸP0Faճ|a%B= ~Bks>gFq,%!|I W':́qB 68lС?z> M1yX`JAQAa =Qx⟜،LA qv؋fWlމ]a˷lQ)aAJAA4 )f/=za3 U8 ʁ*R| fxo#fF՛ix+DԆ=G4 G+eZTߌZsaϱJQWAIm\n|ҴЩgۗ>}nnb!27WB(8Nq is7Q:>bbʠ1:; ÈwCD)}،|T Y`Y& ZW^9 ZP je>XFTM6M O5頵+ F4|d}A8i&=ёQbld62 waΟn~}eDD (>Bg~%Dj4pykٙ+Yz&3@Xqp M&YXCPM*;bn( {2jAZnɧY75i("3IbSIRHtlho,@ U9*Ct̪Q +>]})W9:#b3i.WLhg+zڽ3b1) 誣 |TqlD" g(,3 B<WɏdzsL邍 a1\ G LJãqW)Kan$Y' PI RPG3)!!BEkq<(6Je5"J ½8{tb5ff $ Ùgą.܅ B<_|70SAEyxN:ѯD9͆)jo ;d)j1mlݠ1IOBI#zH :K(.*!u[G:A];d%(.(!G`fdt '' Y{&n(p?~zɣBq6/~ AB]:jCȻq B?Mp/٩Y1 C.#'ޕleNOO6+cBk fKد.Hl׶nVd)c -d^tdMεg> ;*| fcCXh0":zo= 6 )4QJ O4c'ēd8K), GV V-kZ2A(J!)!yWcAxqb3@ h{( %:+L802¬4c(p6;>3> 7f(2c{Br>{65,+uaPBɎ~HB 30ajfTj@؅Qaf)q Hc8AQPw}:6:6NJ_$a޴ǚ5jG&Gh TWс^]eU}8y_  !̠~JRtpL阌Y6&Me)F@r2HΥUH!x-E39iAzS#!izm WU|%Gwgv Q18M:ڲZ09}«!& e Pp3MżGeLaQ]KQU‚pv.| >B$5"oT: Վm)T1= Q V>xoUy_E)~)Z`eZ>&C1;ѯGY)B bpˈಁpJR&V(|Bx+f"Gr?©?0#tp#d~ 53ʫnhA9UCӺKUfY E+u_wUAQ]jkzE6w43Pg{B|82::<)YVhl?B!I.2)R(G\fhkWk/u@G&!*qcАaS}`NR"x_肮`= s*B:)!(vo>=MƭP ?daBPB6ڤtg\B !;P)|.dʌ/ż))yE!AHNWlTB*oa#J1U'pq[CKҞװUy$lSZz-,S8ڋ/wᖲF-A c JȖD@P! r km/ScB(M+pkĢzlIE2g3<1IRZ}.́kY+'2GS?wudnj 0 x9(cHMK6ʆLOkI )SX_B)hÿ/w@ZBTj;qQVnB76 U`t0!HazP Ԙf)w6C9ʉ!gP#m ZB؀ Bͨcny7+3hAf$wXR1Qљ9Aܜ h-٤y]BԴ))-)d@^9^!8i_qp  W)Tۂ:z;2KIa.G Ú'L-7 ԘJhT/zqz6Ѣ@ E4lU~ C$!sf0)ĠT4[R8Iap.3ܠoHܶQ(Si$B% RFoI+!BI?Bp]2Dbj!ste%3g^J _EBHz&^"ҼipQ)D! {Ò{ (0("/Jȇ_5E ]Şu&Bi2@M 6M{E`RaĄ0.h FfÔ0Hc"^5Mmd(2>j.(Cu,BTfQ2$0h rfXhOQ ISԡ" ң۷wȠZB aK_:͕FD!0 !=ixBp]iߕD-Kt]qСc[.cɡ%NOJ`P6/l (=-tN"Ж[ZjJJI r3/L l CA%fLm[e7Lz^PȈd8>L&ڸn]ur@jvǫB4Iuv PBc&mu&*fP/z+=A ./2 CSvTؤEJJX# wbNX*K!62[x Sߣ"2%CA, xڂJFct4o">. ,p< Q mX47s$} [ î&16U`PHeN05䓭"M|5;tGn  uҾ3^>޴A1$֍HWrrT%;+roǨ*Z|-AhTpc .42J &g 30i(^0Z'ԉ: 0 Ba4uYU;1],4Ly) 7REvh[Z &L&/EM?y WХa'0x8yJk.$ab;w s d;c_ڶ4]:UJ=;|c!H(DgJ^icΉe͍ȸJhGW- NLӢP/k(*vFp{ pC1T'8B4ΨEMkVsϋ|rOx1&'Ԕ o С6U#hPۗ4j(aUÙVLk +j@G1D_ _ה٪QT%1oDS50S;k UrhB258n |gJ37>)D s&kzʣjIk*c0`Jp}KF~m*h` ]û`!a2ŊŞ3 j 1N)no λpP6$ z|K=iP!?'prvFPb8.(n.{< |/A쯇2)n*%(Vc2ARBTmg 1PTM!nFQthJ<+5 { e*%6;q8S"(Z!*tn6ad6,ǻ#% Nzi -bɆNH\5<91-1 0)vWZzOUc(N' - ڧTPZYiaMQ\Ý9A V4m4Y < n=Rxl`2EFQMV89s*)%,3%s!X(7)CG V́PX*;; /x80!u{ח6++-) q1;+ݗrAvTt4>ClGbJh0"!Z!f¡ ,{C;Mhpe"*EA D@"u3ss3RQCشjtl mjOUCuu;u"q ά@A/T[ΗFk^ U'wp۪EЍ˼dZ|(n'q? #i)nN٠U#ĕ6](I![M$2V]@޾R~kHb־Dp_i~/$dB{ # GuS/#v  P+a[S=b;13BeF]FѻKS<6|l9FPEg^DCbRMg ?Vc !$3r&(G%M:2%@kЭWrb!}i;C$jRbRitߗ⧋հV1?5I2f̨ (sTX)j&5t0.Oa@/]kA||m7mbp eFј{>>s!rƩ5 .R{l*Pb|0R J ieC eK\!F*pX1 o~Cbu4A/O|JH 5vc8g,҆́o /鳍n2BCXi(4=)ܞoƉ /sb?K|ɗvV6ĆCNŽNb  n 5q)w):#frBIV}\a2I4a^Qq}}52rk4%wTTG#l++O r8QьV#Umil,CEtCGBwYxbeB5cz (˗/mC5k(*a7j&\."LlrXEUBAp0 J`x&w)_\`pbpzg BDj"Ў^=J(T_qj IDATrDĒکׁP 5mtG᜛:&iK]$tbKy)v{6ۆ?k9lDϿd)`BCp>1LA^NfYdu?̤'m֮a"h:jWsԃ/e:[!%tXsqpoGZ2.}PǗ*rz*½βW w#Oרlʅf_8쫮 FG_kVh̶3HqjXk|§6෩YJ!OIdQDТJpQ[蟮P}x[ 㜟52:siQqdDz YAi!doo21*!֧1Qq: 8aDdjg3Ri~@c\t45\{j2DžPR`{NFC8JKHpmqM8IA;ꞄՀgZAM  /CXB%gD? O% ĉ0LȠ> /Th'Z<`*P IJn :F N̒Gݍ:hQ-JQD"Xk %mWC_k8y@ʲgQƧfN% l?T 'AOo&Ҷ:ՋO,]zx͉1HVPVD/x 5f8| ͕9 +QA#zdMe;aG {.)[cFwFN ;PH#@lS)!hZUntQJQ0:8JCAj%$AB+e^ ~v7_߉7ąq!w8'!ܾLd5./_  e=hITu1 FUDk 5fp`v*Ge:vu %8fa)!BU53^dMه3AOt %*25{u0B ? 4ȹ3꤅+n\BO\vlQR¦p>B1wӜ;YCYΠghSnRh"@*!(K37r |?l}r 8Z2¥A"%-K4!_}ƅOҖ]y0`5@1$YrbBxo.. F<'03)9 692~ Ԋ0%T Ԣ-:QέQ+xA_GN&A DWȔp^Jx0[،m14n!(otyd<%%ܦvѣp+QpG׌Ld?~'ov!o+ě@m"q0la~[0 (9j &w^B"-RT?'\'GN$MK =lg$o|)*a](!b@Eiȓ Z+%P-i@% ,lhK.T=R ͘VCSsrܩn)WD9UYK-Җ֨l\+8XM,R!'wo^@Or;ۼ77՜g@h(40k V' Dc #so>_)<#.`W5΢brAMEB1L:!@wBzXH۾>ﯾ{+Lc2,Yu!B+.S5.a(.#]Z+ !3H FIF% Э uG9-(>{~?rsϞD+ƂiGB8_=曥A%-/`= BvB3j$J((V?JH7k€!_O/A>S(M|dbL @ⲙvr&߯Z8BBh_ug8FHqFD(G",e@T(ga@I܇g|LzYG t6PoS]E ~"ޗ(N__t/ Нp)*W/)4#0WUYdEf>i^0%# ? 'FˏH_O) jATzm*f'=ŮV&]~Zj+>=ln}M7|aꘈ& )<1sBE :yG@/):({ͰiM۶H|>A_e:Āf ̊ qoee\Bӌ kbknFxN wWug !΢ oA( & 6{5e\FX1O?~f p u1Z&4c2h+!e +N>0g.I$K'?fGuX5[ k)U 42gާags'Q^sLa ֳ9[K7feң Rβ"Dr8r4MO?b K|Gb|CJ:&qyE&){,lXM,<0āp0Uh"}^k#ߕe^`>2]n "GVFs'oxo*E%(sŅ0"dl W5&-ˊÇJSdhz*D0Љa+?N ~DLZ`C8'$-y~=[[4λX6Bt/lӍ:+)PCeqcmfh?:<ּ-lI8T^?zel@j&TlL!e/0` J?iS}c*r BB("YE 7IM#}s2F_-@#|Zeؔ9@Y[C^/#ې NI+T[S%i1_b(4 ò(8s lcˈjz Ww|bƼ@Qeq{K?Gcd0S<w>l?9Q$_@rmdPt%hv|Aji^kL @?`rŤ5:|8WKȒw?>GyZ=й]BW5OV<6p=G-jC%Qq ׿\LcW6f"-;/t,6EDJ d0}[t:$ޥZĪpX⏊ 2 ]vc&tvd z!;³C|4-Jw ,ׇᎽ֗sQCu 9r=36e^#iz-0c9 E0idH͖QnxF,5OZۘnO8dkw,*9~QZΠ|yɆ&`QiZԋ2% >N[ I(n&E!/o/“ dI ۶u/[wR5(aI>:D)L}~3“H=5ӂzKURw{8!A{, ߸x}w:Yڍ0|

        ?,}e!EU Wa9c=qAp0F^܂)^:;o[`:KEu^%(l˧פ(ܮLY*b}X ̢unl  d<s6˰8|k*%dA˻ 2zN&7+I{#.÷L^E2GJ f3U'%a,kr3QP$8R .ǐ 5 X'kGq(lin`)Mb rE2zX o,`~D(;o/#\,_6j"f1 \H) :)p?EP΂CI/)a-Ac8OJ80/ DwT@b Eϻ-]J09ô/:<.J %!0_6դs> Qz QS 7f#o3HA@c`i(꒧ojẙB#Wq⣁Mm԰%O'ev$ːv c|]qa>^g:]N`]Z =Lv aȻ-z a E *(cA'EX񡉱5ygp[A0V]R1•Se1ɀ[Lԛ̄pmCXqwj {>QPp۞c(ٴµGnڋF[\@Z4!dn6Y;Ӎ^ϖ)8:Vw1(:mҼ1D*cؼCO6uM!1yD-'?xR't|Ai0 @ YIA,lO ܽ<=?2b g@)]l/ð̲;_e$O,z$^`u~C+l0ܿvp#>Db1 9$]0*,Yƒl[ )]b+_KXv-Τ<sP/9` Tf6&1~]=* @,JA_d 1Zo5y.W b!Z?YL {ha ꔖfDOef uB ?nqo765j͛.P܈A D<@ dfU,c .U]p@cnp9^S.#LX0% /X9j*!OE wtA(2> ՈPv"5(,,3 mJ:(fkW\BU2Y+ ܈ZvRPCY,2e1\܍n,jtO[vNZ s,Y9#fzq>1ZjhgSA LH.^PIɨM Fjw }&ɋI >p2mU-&!_<|y{ oqP; 68k?(>㴳Mv nyR;Q9HFSECF 17Uh7SR eeƊ>ݫ5OwwZ;=ъ˴DY 2kV9CXC(C7t5٣L[Mz﹜ix*k}<>8^ܳ9f8Z( 9wʓ"ϗ9&)czYZZ 5 Uݠ& thVKphMf )UؿM7Af!īIDATa4Ͳ.e&SoA`&,!&UϏ>/Vqsrd^C⢳MԄg>.gB+v#lT7gLVk8* 2=3(lԀuUՐx7n0p, pAb1`ܟ1QQR䔾x  BZ*=T5F1xapRIl(d5M}u4zxZ=Õlw,{/fCA`\"RG=8]c=`\ÂcN|E&#mtA;QkJHAÝB-41 Ѩ!h{z՚pHȬ'f;Aw+e2cv l8BS)Ś QA ó"vfVCf3X)WCmjȷM='LCTQ./*6@ w fp(E 8b#h8Ӱ:#dƞx?_h~zpMuۍ@W~}' IRe+At*! 0JeX&v.>Y*[S C-fM7iʵSYl!?1R~1AD ŚѤ!]QB&jk}G*K:GCyφ hh'nEgu\H*>`i?]R\h6ZF{)"j  G|8~J5&Oeށd3cRwM ^eUZ^ὈpcO-<*JpuS&z|+YPv$1.sˠL(&fլ )C!GX c^8*'BEjYz tÿ9 y= 1"PKeT>ۯm13l3t8m6e4dtPwĀT1qۧuR W9;~1`J73E1អ3OH\ѯs  D =_1]FQ1adLE+VNQݓVu)*I"_s;W n!nbinİ~OS./u㢾KBq[B=j0x3L(UqܰD// #mq{~!Zƕ$SAysA r3Ri9%_HKEىf* Bc4=:%^`bfy6K@s56VOek2'}蜰w R+JPDf) _߄ITm1/92XD/[w4JK1s 0U>cj ?B{URY1tϵVsO1Mz]Mp$/f֚} 7n_UBJW !R8008+e3I(!1ͽ`0cu0+[2a ^1F*hvgŒ%t?Z E/Ubw4U@}*oˇw}R%YemICg& EZCԣzs/5wŃ񞢁15Ib`5џUu9Y]n ( , ~Pa^pcѡ+,|}}J:ЂpYkI6֪ A=j >[_Lpr4TVUr d:JuZV }$N<+ C%=[m 8 Qg| KHQ PG=[ǡV0eM,GhI5 q6z#* PE@app\ HSFF[ 4,z'yXgqGCcDQ*g?o0ETԕ)KTF#O %;~' (% P~)a dGLׇw:#t(:FgU-I2l ׊o8X7p.FPkSexu us%fz2Vb_034V!pXnU;_ a9C!0>m#-b0Т8FKBIJ2/w;=oVVI9S_PmUz} [:i:xWY.z!GJxc(aL-ہt>A%TW3ڤBpE~*Z!(\H$ y"@ m2jz>BjОk`asv _|z}_kG(ud7j~ˮdb|9$%t'^ dCݮJ L-qb멱uf*1C< 0c(sN5ElJAHΆדvewaTKo\U2M٦iu>/pFe"w%'D7WCMg蜭FH(k* )3XJlтQO7j[=BTLEuf>Yruz|3#d"x,5M8b)$ЗgJ"kNoyABn|/ Ʉb{N"uTZD0ҺL,ѳ0ּӡ Ȉ3LIx0Qq2"Hv(Dmn@5׎1 "~ `0W]2E,:o})h.ac$LDe2(x7o' & CWl~ʅm%*Q)i4ANb̰Ŧǐ$m*9_ӬmRгLǮ;|"1` (Zt{g$zV {Pc̄ P[8>4E-\ƥ*ǥZ0!%ǼHƆpr[DfX=D<׃t?=Nu.qۨ*d& چp]=bc~Z1?z<׏OppQylS@en>U#8ŐVP`R(fn*Of7ͥ#JȍX\ck#3Y T1:y?*bʳ4<§do嵝X#|~P`1b>GNJ}MãUnUq/#MC9af8OpibuUҏ0=[ˈ)P"202wŰakÂ8!x BSGǂҐY˂fQDF#ͤcB릫?m! TG\enܔF 'pj(+BfIO!"HLu7!K(uB(3 kJf:;j>+'tÐՄ\7q s cxP5CzQ.n%nRB^4;1wt-.1f6YIo_P3C%ij>k@~uu!{(4 ` ;>UM];9[M2$ӿ Å}t5J$T(tf@Z.qmBKtҷGȷr8FY~!n^RcNwc['$/5Zʣ (Al0>6X7U~[QUiĩQuczƽR*C)wQſ)jr*OգOv IݝK14-/M=)!睺2u۱Zr}TScr=6FJ=Ho ]r =V5uģ*@6XΧ_# Ux9鶨:T/53mcU7I3YT! ~R"(AgɫPy*&8۸KNvHh}0( 7v"mA]z\kv%_6/;ՃRm™ ۟m4l:3夙sq3&_鉚wk1tv Epsx %6G@hLC(y@oַ>]qp[P8%:Ԭ64%l!ּVhTp2=n\\w=ƿ;|/m!}N00ݢΟA{nƛo[[~t q]g\A:ʲcgW4JXm%k!jk6B)~*Z:eaTb2rɂ39 f)Yj^ƥZ6"\"0?D.09S\V7*b1L6e) àY u|BXkh^zݠ&TE9pIaY<8wBL@uG=Ҏf)!4c@-ickTk '0I æ3j?u=nG딨 2D_$ЍAXg鬧űE)[级?>QlS ܼ!.&GJmeKoiK/#u݊A OA+aЛfit#qhBGPPAM g26%޾*2]c mp`.GƝ:h' }磆nʦ$ɤ._FkR{cvk!62ָ}]w.ivM(@WZ$ݸ8\CՈbSd9ŹwȓOįe>IENDB`hugo-0.131.0/docs/static/images/blog/hugo-31-poster.png000066400000000000000000001770651465312036400224540ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE3S2O3L?v333PRArM1IBp1D|K?u@wpSPBzAxwMF1uO0DmsQyJUyGiV0HfXJh00AsWLe>lVGk:Dhx8|/aي:acLIrEN΀4lrLwWR@Eu5MZep\~SC_ׄ?O~;|׶mC"q%\[σ!ݵQwV<3 /"tn oß"/k_ecEz@ڦx?AH;ɿ\y_cpslQUeHCY-[Iw[2 !\ʩZ 9PtE:aB} p#XJat!!HdRlp O.\4-214BQPZT,EJ-3Vx$@SyT~4+W?@ vK_)? u Ӡ~ȍT}UADxHVO AV V#r Ab0$ E~i4AM~}{1h@lpy(X䤼6LDH9!lBp ۜ<9GǕQ,^QT2P ~aR+!V/ "V`[^y@ƁEB%_i jf*4ed(8LYޒD1 (=5{ч٫@P0\/!$2,z,$W`txuYx3"Èa¢aȅ8%+ GpҤٰ!`بkxDbz]+"/`oʒ-PDE_g{\׌E CKao~֢!1CjT=VttFcD7R0n-^]fѩѵ~pLzj33do`-H8C$Tu/obkBNGwlzy!zQ/wr0{j#6`x)PywH/{$k+cARcpx喇|,b :G ЀC"U,Jn NAҷsqDK* CU(0 { qR"ŝ"CT~"K=6xaŸҸA;q~[noaC^ +zHԗʑ +7xIb7W ox*epAiEo!H[S ϭ2p+Wta(KN!doQ:SwTyTMJSmijی#:Nȝ> cz b,7^SpCO{Hh) 14ڀ_@ [B'Dbs-èA / 9.0p%R{*<`< Vާ ?džGz ʻxOw=r҃[${:\ПhP 4 abPڋ%.Ro ܦ`8 Dm&m4\<o"3jAͰ |*rx~"WZT!08 AЭ  =.bD"4ě42ԅ- Lc[i0zhL ٯErRSm: /BAҾ-ʨUfUثJ_)'AOͅ2a~3Jz_$2 [a^"C58"OsAͫ ]mcZ/~܎ʠ LU"9j 7Qe F+/m /;;] O,z"o1%b }υÈ!?d8#I wU"dJ8YG!8r;0[j)(va;"3`9i8IǵAnu 0\ _iO U-ԃ~L(U$\]iJc%O2t`-Zo[|jLY0 QzgxoK !|U`-Մ/C{m G#i07Vf>?2&@uP.:|9V.ݯ%b򭴨o+L?/8 mb/: `< 'ÔC DžGu^4q~2([>|S X$Q] Βѓ1 >1Fc:E7_ajWCYXMt}~* *RPB ,/KA2PW)>~0.P{C_aH>Lx53=Ѱp*XKNz! R=YTCAAPaH`2H*ӬC4CPN~P&zK =o"e lltt۟.#Vٞ>)@[1V@n@(/Ab7TCr +yv8A`_o,, 6ISk*ji'ߛR`h27Y Wpj JJB!::CeSF.L$лVC7ؿ? Shx}uC%d8YbAqS4.SPՃr KX`^.^%J:K6{(~etT =uAPEIv^,W ;O|ϊsϲ<8Aϻ3{}. g\ϯzz>,7$2.².2}~rb]\0M薊Wc IS^ N]q@+NwY]8b^_T%yL? WBEodGy.Z@{&L~qDoHPJEƳM7mV14g>S1\)Lf`JlY]F 0aW[-1tр҃̄0k#?{@$-A0 InbOaEe"ElפrYNfPQ@/[5V? FJ+1wP`O21 !L1? ?ٞiAMLB};痷ISql `]S?.<^/\π)8PCA=U,Hci]DYYd >Mwoٻ3> Sl8L>| F# Wm 0:4M JrOx)_ g鏨w|ţ~LE A!-Δj*(j))_:PϡQMmA `Ĵ,WLf |h)@݃BQF|0@ b1r"Td ha*ԃjr0thp2,C{Y׫p1 (BaRǡLz(/#y`cЏJ7p?GO?CA{8Q(& Fh+ |K b+3Ԥzm`a*|Ҷ!`@S `AWWD@i@)@lZo>{X c%(6Xc2R)B:6a /ɤ m-b%:KPd惹ٵ87k" g׏b˭!X}"HK]h* ? ÔA=h0K? +(AK+ c^N\eX| CB`𱥾+P͗V(A@pInѼcC^F*)i0 YNr/jnN4a؁W-_CyxԢzgY1ZAЧ@ y} >"pak !񴔚4df?;&ܡL4 Ôa𬉰Ijt2a{/DmPF#ĈDhUQ 2!f)A0Љ䲉!dPp(1E>{P~:E  <+C$(7[ɏ’p9L~ |fh#C{( 5H +`C~e 35-<-HoÆ`͛1k9lC SVKh`q+WrqRD-ϓ8?f[Oʓ1'#AnAHD;1 (,SVK>ثSA@>>0(A"D!#-C #0#jiK DD`~9CsyձrOW˝Dhey Cn vjU(YEX1 LgD9*҂24̟16IkƀK$)޶TxV(~GS/^4/83fm}~sٛ?W`c CD-X Rp zm4K9h `ŰCpK.k).i@zFRR͆a\hږ11R*$#0>ZΔS2$~Ż>;}ٛ:X\]UkX*Zkz奵' rP!7! \Q̚ bR0PT5c2?d!>_W&ޘD= 2 b+Фp2ŋ2,b| ;eya_١q4kS'"rE%MFXڂ`8\Py6ĬZR.%+SٵϾ%jXF)qJhznR*\vNVhLky2:, }ua,܏X|$p2ENQ5H> #СPK"#p7d G+z~GC?/Qy| ٜ%:7oȟql9o1os!hA=jtw_iz'F%1`iB*ar8{Ct2BAo|>Z BH%s(*"Qx ?gd%-4g.肀DrӞɖ_ V;\B;IC AQbs>D ~G(7;L.5 p?th A,w-d\"+1;q*mmGJwW%1ž2Msz} d 6 @l04]§C1shZfE}TNwЕ9}- ڕ| } σ3y %ȪIdA~KBCSNxa)nBA ~nRvVAB`|TWg048̂ ^wPφ@a;whŸhD ѭM` ,(H 0% z1C Bۙr`D @x&vmX3~©0(ݮ%e ܄*!0ʠLU:ǛW5R,q!;0amBb>!f]etDo;PCЋMIՄ;(>I5!0 B9aу|2rbok6/u tދv_C,H& yDP.L̄0\U/n}a%eg0r BW|^|w# s0|+R}xt3Rs~׫c meC22tmlB.a6 X͎ kq!v.fY8w \xN["ݿn?(9`5MQB&4g 8gCFq `I UɁ\vC?qM&Aj`)$HHgBV l:l08Zh, HL5eB B߉t`lW#:)TĿGP9s0\/w3)kaDo.ܬR؛&V*d\&h+ ,%6jGASw%᪵s@~; UYzzc<+xI DO/d8 Bڶ)z[&-ʯ haʾ S&sp&ᅦxw? j,9AB 7!f%DP % \㪳I@˅JN(D\BZ)!5MaXj"4NAzK:J<q`1s3I@: Gd4ymxX =;B$3y2.BAau?7Ӽw5>_sbak6Յ7mڼɩC Ψ)RCc+a?|BsW]!$Ly)ag| W#5! p2Wdta|P\FEb- ||yxmy@?/Ԏb+̄yZPlͭ>67ϴ7g7U2}Ɛpc <g 8)@gNr0_͓P 'Sf6l&p#./v֜HSی~QmvAC#]"Y'0uyCd20_-К5$*ْ&.z^6*A ;-plgFF]0JfFQ,}ͅ.ZsK333w'ȿ7`g_'gB6:׺˪E"Z] t6η>f~9JځXtZ`kѣVGl 7LHS0hhT*D^^sƪ AJ%m6j_ \'JXv?XmQE4pxKK]f.Y<! H)~@EW3 aYB7.w` "T!!D앮VE?j>l³!{N`kĉڕ.6mIH7 O$:!gN=lpYY% 1w?"-TRWBD_[w8FɂŖV|Ŀ"{M, ÅQW}c2aap0A 3%1$萏6\yY#-#z{VG*I!SfCf4!UTf6/8$)͗7 $ x|!hE/ = x&~qR?M(}=Du#0v'!MFn2@z_T3 sd!OL荾<ƽeBg V+&D A54s)dkHF4aa&ᴦ̦QNٻ2+:@8>{"g%y/ȄѻZr 桰_tLGzHAQ;hLLFi*m"4TCѕm0¨:;M։jDwɟ. bGbEEh"&$ vΪHB:pN@o4t S.Y"3¨M 9!SlH ![_0HhB`kdzvB..p:NX3:C=ZĊ]`w?cAF+!,kgY0&M܎= 7)/8Q!#'0YH;G3T@Dn6& ) 9ŷ93b3Hu$BCA a ClrG_5!6[ip"/] <| fY!ܞ$Ƴ|9SHeUh6#ϥHEVkAbLG䎂Y6!$w?FrntݙiiXF*D d)BK6ⵉ.fH!T{1bB߳s0ݟ8aC:0ܞݦ0p}FWjBy&oDA(> am.$w!>0{\/ >QVb^Q 7{6/7Q$2 a9-CX< Hou9+VA'"(MG yja2Y91LQy ӣeB /j ̈́\9C+.e }WQa؇i2"t*V_XPG-,ЄV,T1W?. ^Qf=>҄揧 CLh7agtTBh7a.A3ݺ MkBј OF[ khyɯ…k—&mŸjRDoח݄'2B9pX MʩL2syM"41X(> rڵEʄу|I҄£n& TEuG-"]ޞc!qGAH?^VZ21G-ΌSM(ݩ&@ Fv|Ci ŌE-|%SAX_ŹB"}&KhB$ Ah:f}4bP ETUu5npc +cJF]kžZcz}.Z/—ׄȠdBƌdp-9*?B^ouvG)"gFvH ABC2;Pr n&qsЩE k5Anƒ&}<`  n]xRw>RRa*t0'"n&CX 3#i!kaML(QvԄ%\oՄa*>;ᡡU:8Da ՝D&&tN2ХE &cAXk քtnv ) )Ehp/„m"FcS&4~TaaU-DX^$6儰B@Z{#.zbhSz.<52"T~|MM&$GYЁ3`BE&9Qch+i!$/k#4'K.ecB[+1=wNܗ$ jBe"F(naG &/(E:ka|C6fh5f?:aԷ˭-nZy V0L%5a 9⏵o_B,R3O b&TxP騽&ttϲfBJY zwpL4#!aMt ᧅ0˂⇗AKYF~Ĉń(=It ÅHC.9jP0"\oa.a,01lYP7\ BQj.oWMjcݭ0]0l 7x (~gb> 5B@()z1aD6^υHw`I} yY!toeš q[Y kG <̖}3DMh:) -ךIXs_Ae§ICXʼn#AS)'L3cLG2awdaBmلE- a ʸVʻD!4„ }=a t- ɘ[*W?Ԧh*4pvo|"+0X~Tƀw ۄIt4iЄ5^_.J뾗ۄUaNb FC!/noeTVBBP>vLGL0-L/xw"mrBӎזipKJ a>jJ˳+2@BCMH~p&fV̈́H}'m~*E*a}&# aQQЄ$&u` 'Äƌ9p-` eMBkD8&!7P +kw2q=.=s7gB&"7Dx26 }][il}rф*’BAw8tҎU/=[FHyC |BaÄ=4&4Fa!$ n*G+c}SLOHaFzr05p߀}Y!B%bGbC| U86< 2&<|vWeK&g~„ϧnM؄'U(900<<<0p ah*lEX8+-2RzW B#Q:35@Fz[y}*mg]?~]x*=۷\'ZTapalA'S_ۤ2#ii +?tU55§DSa5!Px~yc<..bsՁ rCB];|w W{bm޼C \6P_oJ1^ /߉x~6RYc+xB~r"_Du͇L`;֒Y#rUyD0ϟf_; )OF v-d߿s}XBOQ[nEܖ HXl" }Qaxcm4V~ٛk6#aϺI[/|\DG6bWa7>G 5H,?>ǝL7ބglPx$b&Dae-e[&lPa> W*BǮPfMGTc^l3,=x[u~gF[@90J(ǵ2O{o9AaB)ͫ_B] A xGz) >w°Lm amK9l؁ِgiob" ?}ǝsSW+'?^:AmӻzWSg:b`ݭ҆D\߿}Xr  T'2f}QOkB'zU_QSg?XiA ;pvI D%>6(K>_N6½,n"W_ [|4!(tر~Q-/XN,Urۋ@* qEA0%-o"Rҡ7B-`B7`(?=O?=]hti5t5"A*}xy)eÇ% ?@aDqPP.&.Z4K"l4q#E cs_bwp ~P7Ce TwrF".s`979ӭ )EN ?/`@A>;P'ovT0hB^!&<9\:J*T8$>! P{碞 B,cP0$&].hm VWQpN_M꿒xBx/H=?qv {E:j0d%!xۃ&iYG3B,Ҙ=b0.D} $\f {Wн$ El+ fkEQBџȅG e=h %~ Ou⺴]`QMxNEBHFo/vҕk f`;pfAmʚZfn;%2U PmGҧPFтt{?G~¯h(/!\"L!xQxniцj:xB2!&)W0,EEd"0ljE<8n@PwOh>Ny BGykt;3̮"fWBX.QIic!&ܮքdB_v@py;T"cBũ{CwZtꈾk"_`qxP8z1z^&A]=2 h+`1\1 Մ/z&%1&Cx(+WGkH!vݭխMxցۼ&|tX7S'+6oNywZa",/]+▙ )dX7>IMcY|pJBfCjBo08IpQ5~f⓶ф^MvyrQ.+^C 48~ \6GU7oJELY Oѕ t" 3q քE" K(?EÃiXkŸt?q ,PpѫTwPiiՄ!+DV!+i 2 0D !B[rܩǡix2:e|E@7zhCHԤ z^ E*JzO6HkB«Wr/P* c4p(ji\QۏMTxEwnwt 06ke K&qm:)z1]fed[$:uyh$qz'j`5DŽ_#GQ927E!Q*8.Cx&TE;P"ȫBa0Lx*aՄ{CGz&ĜtI't!A(8A/T-M88z VCЃ_Md%AB"5τ̅|hdwԐBiC16%9^(bB!5g &>:=E94ݤBf3=epsCA86葤p+pTm=?0a3(,XVlhT Od\%,o@(̂j&%',R_KdXd*`)-u04!,7_ |s:t cW=^{L6\iT"ք]҄kфx-Y0u#΍ )̄tT1j6Z^nF{zzL",>tD`ccc5Dhj2ѵд6*':èQ KpYs36 IDATOhј J_ږ),I2>TH2 yoi|KF-2D3WC't' |ttgB|;7!9F05aw)yAXP3K1l.sW_5\,(kTتeQv+L6HoECR~V z|MEjBAޗm樸kBj] MxLΘ!}Ta7@x^<G<#a1n– ª*C6Uma}8^g4_S6ڢ^ѤKiqT(mB}(tUK+bUH,j-XTMF8}qA ENp!꧟j+Ѷ"t%G9sUG ;fVz&C&jLHњL1(z UU(Vk",2# h-@ePSW$V+¬ *~h0 ;:.<(=7Q Lt0dZ8/ q [+MHH%bfv 0!ӂCτ&CX у@b ?X9wBZLP|@Vi%"$AďњL ܈@5B"^NX{VƕUlHJEW[-^KCÂXT:#Q7z0aXjy9Luet ?p)D,i&$`=<+^1M1PMxG !lQ! Ǩ;E;\OF=bo 2̄m5LcMߺLjRrw>4d&Ha1Dx9TEx^ kCO<&܄?=[.Yc l(} UUB96Wh'g_B3= ~F"TeNs+ "Oƹ+X>* Vx1"4CцiILk2$iQRF:]1ap^4EbNH1τJAvNSQ8-):}5!8(?Tx{ 7+5! ` l`6D 9 Xp`B`G312ƚ#ƙkHK#%M,UÖ;Q&<)i8͟yvDGi(p Auab:zQvՄG#LC0a71iE/]&r ok*[Xm}(,mRzopB6u'B1ahz2!S6*D25ۭd(B*z bofz#cEES]GTW*GHE~^0cN3LAz8HAA2:1 3*BA  C #1$cWQ~PNS{fzo1=Ǵ|t)iw8Hx1vۃу$Tز,e2%99ADp-3B=% b̃ؔ0/} T otg28m\ /oi)JaV̔f:) B47&AXy2*<(yae:zS!7=+beX= Ŭҋ ? dcdBMKHQ4m&]SUU=ۀי!bDAnlY' ywR*:ӃC==|Z,eĄ5`FLL!s'f>JHW"GK 3' vuuC@uROYgAyy q^JܓC Ë́Us%ԎG@Ⰲ lTLxkzz BX}RFb K`g3D8\G!Sfa9[8s[AK0 gpearQ`=R4XMzˈD48 YTL(*M+REfʬHmsˍ:aRzhprQ^c6:OcGԓbB>6qO1 QJkBBBq@> ås҄Rwhp_ 1HKk춒 ccj>hpC DAJ[89a edSf]]Eg yhîB?BTLl,V`11l.Yd$usMC*4ÃX #tP' @ }"M菘5!A_?fA#p܄Wonժ iv|{mXplX @a, a(ܪ P$$rbYBE X 3"}@#>;v+-e7o@HXj՘+٢_G˟iJ JC7 " hf;|c8&1Xz3C \Vܖ9r3 lDv !td\-jTRX I2Ϳ-d14lR{J7-UL8X  **$-*.lq^ix[n Zw G)t4޽KAp4þzv6 KHk k3`¹1jSBHS2 +icbg3%3ԕ2P2 3܂D!FT.B#hc0Pqbq!SZStG GA{(';vu}9p#{"Qcӥëgr̾(L#0$7R6Tr! lAV2n 2Hф !~(Y {`ŮBԅ@!`Y2 s!@$ɛqUڨ,/iuzNvagexh|y nYCi`ȠXuq䛿/7;# PE r8eN`vhݫRWP̄{Ǘc%!OGE>Xe壵a@U~+9s@܃- slQ>*,D@v]Ȱr0SFBY5.DKGE4./4ğpIPqLHթ|J㳯8sm|?/h|Q'4X]g(&<< ,,ūǎyP;.vfQ\ fccs:R"Ues缚~f.]z̖K q2 24D(jBO/bźFuȺ?|@|^J O~7V`^-zm r*-@kzȞ>hχ^ٟ<d*tgv,m|"-Po0 #Suc_x ?} zDGe_K{ַp!.\dO]V6MC?6>Ђ0MQ?7978t@Z-@6P롯{I!cQb-}So3</w=5 |\%L# ٺ\mw4] A D ߏr?DMXk ܻUW+  2ߪ<1*DiF -CpT[@LοB[~ QLFu<eh)}/5{ßzl4wǫRIĮlOn?l` q ɁL ːz5aѴ@pb:١{0CWB}c2 C [Ҡ!3T?AY2LXTX.\58ԑaxZ]ET!T4S = 1!p8`n,8 L)A 2f24@'ۋFK!@&5 tCyiHG!rgLxDIBBplE fz)wt謰 Cp.9JR f #BDI '1 f&\4B2 3^Z;x0Y>{8bBΡ4,%@![Y p.n![w9@XkB, I&㏓4B^C# 1Ro|vBУ01w, 1%16"},PdszD4r:2&j,KyIn o¦ _CI쌵O$dBʔNeێb?s w^\dΠ_s@s[ń 23\8(;ºRR!LIkRj5[6!`§d҄?EaiQo*O#GȄ,0#.TQ,V>(3xs0`K Q8II8S¦XkLGlF?pϫ B<.yGU!]3`Y8\ Dg=|T .RMWA(G[;MJU a~$f}3}Ư  aS BI^Z8MR'(P\+Oώ9"|4Q^t_8f E%URaBt4:MxݝHAȏ& $5NGτ W&l糰IQ!Gv)q"o=a^48&)h!5XAR!'oȃu2aO2~rnuMN@=(؄ 4[(Ζ+4m0=8?X6J%`A3+MD+. ` &umfD3Ẍ́ p8 aӂGIˡyu'^ C( | B6Dvhz4>XH/b“|!{DE0Y*! 3 $0LlySd33 SO7s}iBi)዆0+&mɭa3=)I.i3S rm8LOB2!F#5u}G0L؄IH!ҧԄ$;Ee2J Ī3s1M#P.p:= {>&8lP%L71EbPĕZ4LKǠ ?=G}}DM8Go;`63 BȳQĐ1& )gy: iߤيM',jx"/YiY?K}?8},[C(#5u@ KGoQ]xC\JApPJ:G&vƀbayA$4&҂>1&Ԕ iM/ȠK{ Pj@Re6Ӄ [A@QFPRߗa%'Q^ޠI:K*&T9=y;?хhBcM=xrƦ]I' 4ts(3QjB G i#MC„?OQI~]w}:6f2<%p&CCWV}p|m 1FG PuItW3(1qDoHB &`:9W"q~<0_$5@HoBwcB!]0! 'PԫBgS#eZz3\B@ȕƵঃ@44hI?Ňw~8BjB\|Bdo;㼕"B/I@/ OLo`_&0E>UT!bT:FFe-&{wAmwW}]5VNNЎnL+4Fd6/es&t w}|ZxX@2^n޸ `2 ;P(N&CFn( DL1wi;Lm#??*wcٟj, U }=;̻/35;; @daMȐ^gR)iMUWkq Ap3܄ "QfB^!Sy[ zPk[`mvaiVstx <rd89[pf1SҍK aBHFN:7veŝ >ˤ܄.cGAy\&8d[cKuX_A BXgn NA2: L8ɗBIeY!l~Ĕϗڡ TIM.?pMp/W_;B"tjB,?~t>й?r!W1Ўcd-wq16p &Ä 3T81h+*^ ĥ'1X!EMbi'ɄmK!Os] „J_Og̨'m& 0h op %SFT9GPppL%F-mlh3qB‚&5 rh9O_[p- ;G8&_7ƑCd 딊^qCV"swyM886TQ"z3f5^Mȅd´gӴ5UHML6iiڄ6pf` ~ڬ*MmVa <\Lؔ7Ni"t2CDfݔBb_tVHI΄ m5^&g7aZN e@V=.~D7ĄY!lkK2m 8T|vɄ%aVd}LK^ho8Z!dqMXhdANCğHD$`I&BaME 8nBV $ Nwn!O@V!n@⃺ӄi`PuDVlm}yi IDATSe*:Na,md¶JS}Ŵu%1Bȡkm?3Cu q 1 2Md qP>DX0h}fAn?{6]o R5f{7 gHzwBI!n FaMf1!=/j!^X l?m!HiqyO6=_9ܫN9DϤeN$pM[8tX' N O 6NjBXiPj0`BP d*l SdH 5aN BzZZ{eXkI+ 9@nS^٦yCH!31_|oY.JK,,e=!q.{t}=.`i]* {S R:S ƒBmHI aGN&fi1"N#3I3d̈́O>?T;HޖU~0K 0}t: Pɞl\@dMLx WLNL,Lww2& kA!la읧D=5aOŽplXJH^(gp7\ `' >jք҂O~xR46}mYt:EpG[L6Lf9 m~,o}ƶ. w!';lٳ)?F\2nPYeEq#Ljeܣ9C8!+F%3kE7!陎'Bv'V|_sKcz&ߥ6Fl: m-}Wؒ]`7 \ &p{wa$=$N˩gJ:#ׄxï\PTz+@ ͅW Jҁ l1 \ѮD(tEI3l5K:`tIGQxkjj_3B>1=M $!fxW`>:93߮@] 'DFC Dj62._ Mq8(6u\ xv®]lUu߱BLx&lOބ S ` ̓'tT0+?!a}0mKsz$(t2!P8Ce}@lB$34!BwV#mpd ݄M&1=SrCH8YM}aG[KBߙ݌=Ǎ o j7&̊m~.|Ĕ@dYjH!|'ېe&ENDȀD#BM8A@N4!o{ttR2G-Gȿd6&de@dvG0~TqxAuמ1G&U؎&gg3U>|>!AsCGȘ7&&@5XzwL(ѷɁ܄\ '͟?ɓ@I‘Bȭ.9h ak = %̂BN&ѵy@xڊB0+WOLȱzD )iBEц=^^ B<7N@(By rk!lϟ '% nP'x*}NpMG!mѝy@ǑbK%x(767t Q\hD/0,/C' cO2ە`{!tbiBݰ?ؗ wCMHe![G3 Hmp6@ɨbB 'OA6Lx0cRQ@Pe@j“ǃB < lRhs9/&,&HLL*܍̄ Ɔ8QZ!$\=H"W &|"A.D($ 9VOǺ`2B(8NZD%' ܽ6N_ w' a;RQX9$?}ơLBK6\3(e8!%C(rMb V^B>1yYxye,Ժkуv|:TpgB}> +dgy͙o fBT͂ʯ9g2׹@8JɄ QBa/ S"|ӡBxgoA=ë́';Q1p(v  N:1!CgC `^6_0!"ػH_ ӾM(BQ@ ~U騸 }3p_\fɓưA~VX86ũrp8NUt cC9p OWbo 総#t4 2xE3P!$l&M :TZ3O'OWc CA4ozn78Ҿ(2=:=?K=ló9[h|~|G#^awE.mu㕻 [: a+_L|Tx /Bûe$t0Y V< ^4~u+~3Bޛ7oR$a&~inR!ܳ[Olv| ?X -ZB"W'Htp^A>4&ME2 M @ꝙT 663 ?2dIw!$N SRc/07nزBvɈn9;#|={8V{Xqo5g~P=2w|a.}Ne|!6OC1G.5a@A /`_8".hBCơ%== '"{P>).6SA ]jV[݅;:={7!(:o0N?dhMa,?IbЄWڂE13r3^ebm &d2DBRŁ\ #=KyAgmB [wos0C}'C,LQ:/2|oi;mŽ+WvnrB aBhC0NPA~o7r {!0IG vv {\F oB UAAwh$~>LG2+*<BOZW!,tAX`}| 5kIX$aD$a^{!m`m|zP' (/ S:z ioR򒐓x$&?yRe/@OX=l?b &f(D~͕ d>Y>Cѓ I29îvǽu˵̞}>u}Q^u0, `jVKAbT*Ȍ9ݏA#W 3e&|dp@O57ůf*..-bgBMG Dq~Q5m$$$8؃C#pTК8Fչ1~IuUƻ;XYw؆ U+mH.~5M>Aۿ}o}!}(KpM5 F&n#ڙex cdH! E;xxr?c+}̭_|R+3DŽ:uK"x!Ģ_wL:xqZC0$7MUxۡP8$  aƒ=rc2ʰ Ky /sӻڴԨ4~' BɄiwԄiĢr@#GM(ïC ӀPxP t1|VCXiK/eOP} rٯq9'&& >,9dvf/0 o2BOw4QuZ" Fl aA  } oq&ttLœUf6_fdCg8(T|%]qq4EMxSdH(Db{thAxX f l=]8*sK߆ sξi90a=#Bοa{פ6 :pa&$޼ 1"^VMxi,Z ";DùAɃjm"w_2 j,]}SŦUzLp37/NRaNr=.eHhT!Ƅ? MM: שʿ 򂏇:BiNKo(4'N,z]FL/.w3PM(mM=51!Eyfi$*|Ϡd Nvqa|Nh)J p >֫ذ8Ƈr3ʴ!O:@q_/./ŗ'..fY!kkBYBxŋ.=~ 15‹@_j; ݶIptIrIwhX8(YQO3ɅARǨvIZXNrav \i1{ A`oa$.r᡻O^b0]4 t ;"BF1cZ1}u0? G:pV!XCCɷsa?i@߲{+STJyNÄAE"慙Wg6~B~i&4 `B=m@x1wLB(I!(*$ ATP\xuxD OZaElzo`5׌!23R'Jv#?Dn -󻚖͛z8"̾:f%WJr5A4DHg|y D8fM/; *?KN4hL1EpMCM:q;yxLIp% 𶼤 ^-XFާ0ޖ*0Jfr[Ôx2%E}9:0 Kն?e+ jՅ@"wՇu,~<&O^ao6\7#,3 ,)U\\sU8&ElBV!v۴"JO[qk!: Q L7LNɇ}a@oܹlCPjwdrz"o$BtahB$Đ|<+h7)|Js;Z__Dh|Ew;ww.{Nr%qCp9RvRi l4%pܕ‘BXZMWU ni`,Y5mf49<~ӥi.a#XE#0V\uvG IwDPе=y/BEgL;u1׏ \hw[/C"Nrsx˘hkАש!Tꎯ9INﱄ12"9|0v(Q5ܵM&d[wA;!ueИ,8g8E#_iB!s @p_ %X(_^ xwzhhJSU;͇oOHXc"=c8H+@2 RTxW@ G 6eS4Hy`lǢ5|\:~i8jOѠg 1 HoQs>0 Ó "0iNO Ʌʟeb KJ\| \azA)3v<C_it3L7;uxIg;.H!_ͽA)D:bu!Ug2&.M1s: j6d߻6[c99qp-rwpcڭ[^D:Lc,gI2'1\Ccޘ[-ZqPhtFxb(,>oZ-+c“h4DCR"H2pslZ≘4!Ke(Idv1iα^UGr֬6t^ o,$('L/&Z%һD[&% PX2n(7$&y 1?ޒ(wYs߂q1AˡhÛ3@ф`lEQEupPz dG\ݒ\W%:62:+-ϡ3-(+ p$uNޗJ6\el9dKSWߪ%C D MД0aRBD~BLJ؈AШ4Հ- rL0\?ҀA(E? ୗw.#,`0: x[>Agd1+ H  W؊ߊjPѓDAC OIe 6U&89^eEWbenx'"R8Ȩ$dڣD &6era$a.$,eLH_L &/ԅHO.d>ϙa !VƄ5/Y kw._6OA6Fɠ ~vUШxC{pE[QI+O:&Du8 *uϥ28|EXVZYрPr4pOl ń(Đ(6et D0bCj*{B 4fܮɐVh~&c'؏ˈ[w^rIŕ6%q&E7)$B(DMs: ?U}NKտGh=I۶(3<gq+#Zcٓy\A!hbyRIK~xI 0"7=X0E<_ Ack!ᴌRL ]& @Bpm Q!i71-9n Biu(ńjiKq#Vp E2â4>N̤k*EdYLy }վK0Ҹ+#d LX3&$ Upp3e2}CC@2T v~c*LI]L[he* .A!HcAF+L5wQDO")Ѵ<aP(aiˆc/=`)\^Y]y&׳ߓ.gY豶p|]AG1 JK#ሐ$QBQ}ޣ a~$ n! ĥC=-kcI.#cbq-FO?*ASt_L @Ϭ0+|$N ƕ)G)8 8!yf(<_=~I+1v&RcID Bč.5trDa^! K*MDŽ,CQ݀ -x}<3 7Ԇ*D/-$?Ącj1!e ŀm7%v$C2\y t$)mv0S;^ȼ4 AL0){8ʲ8cV)\hh-&kNk=9'O+L\oPD@ 堐 Ty Ty*F-:Ni.*D>s()GqqဳٰcHc )5 FC!`R{ijAPCQA^&ajB KqES ~Niϊpj\ EyG>Q&:ByK۩%kO{T:h{מ@/MȡrC  q& r7~BĻRJ@bBAq|87 `` oj37n D"m`Ps#!F6|К)[OaKmjBg +.iL Q}ʀ t!T 0݄s/]HL ʙ<k?8* HKMf wDѤܟ"LsF=ٮm LOFF9+|q# h;H*Cx8S:d Htl6J|3B283# ]R1|!WLMM&ȉڴtD~;* Ty.˳usGIˆឿcrV*y% %b,Dyl)]%HPKx!r,!h  TwWT J< @ߕԑUDc,C6G:xa0\6:\A"Xm 2A׃FA%؅f$@I_VB8ݔ0~Ӂ&D9MM"pS@+iRtYVQƯGUX{EyWp-|c'(')HDz~q!dSOc\J3 }}&1Hq8YT%&ucP&P= x;/AaBC% )myr0᥼ix5pD41('Dez\PuFr`y )+(t$&|Po=J%x/m bO nQt"@k;7C2QF1H:e< ֈᴭƸZ./1%peEZ!aBL9|h8!l>= Ué)|aM+r#Tߑ %+tK9 e(UN.a@3Yaa*Lޘ@&%1fGӋ qƎ@Ä f. Yw$eT"Ӂ щ.n|)&hm sD@HO;ZF !&| Ik4|d2&\24J+7U(`H^2M@#S=[//Ϣ +/ ,츐ȋ_ "aAKНyGx^gE|R,N 3|"A%E2 @6}c!PxC}7H4H*8KX9@ꖝH$㟐 z%! "0؀6C)3&)+Z7(dY_yfs=_KNPXXCf9T꘰Bo+̀B)u@uF>hBi4"HѨ bB1,d9">yH#v4&50aJ@A|cҿC"H-AI!0*1N)` I_yp rhQ4@g X(ꓑGWL•rIQD?ZTJIzٴ)&80aW }F:-B*h)3|[A~.|IrP kŸY!{DH%؄ ֠P}vA[MS/nL, 85T.Ͼ?IM߾) ]tk&DLA! #nʼnE7ARBRE"AYJL-lR(׻MC(' Z& 1B*2 y-SaвWZ60,p@e+Aҋr20#,n--IGa-aKx#H.)2 &'UJ } ك\/0-27`/ec?11"5#CF]&)Apjuhd g@P`¹B| jQ XmH-0n}?K`"G>D/{\ n+H*0fDA A)M27`i ZQtmaDb/.)u6ArxEM0Ѩ1}&PNчiʐ팡*P“ƆƁLrH :c!CG;[ I k3pffvG0Y@*l=daf!͞2C_͏ h]0X!uzbԖ_`tK F )[+d޼.RH]([nE<#҈bZ8/4lv}8~t`iZ& C54"@RKQ#|F>CJ 8T\bG2}M/Č!!}ZAႍKD]#FW\2yrvhAr> =\yqġCEúuhB[ o} ?BQ@$^: k /P~",pR,@ [;bv-XfTo@F:qrikdQέH&rF2! Ѐ&v/ċ$G:\%#z@{8K[@׀3QI I0*y*&p֚ФxˡF 33NX al>E4δH>#en yvGA-.g-jvEI2lIfoh$ŘI"aEYpƖFQ QlAؚ&N q7Ϋ^bXKC'$jT*,s2a|]eg r9fHчC!߂_q[4.55=dPҖZ8Ed^ +ˁES=~c2STUNn{2d#Fem̔B50:9rkBİrHR¨HIek`H5h@loym˔݀sOVa?yRV%Z r=t"D8x0"h@kyP2Z; R8EW2}*8'9AxيCy4U4iۢZWw@ A= UAgh q&lbRvH־>!>BOv-xW ;!3a:h>p5X<;۳.D%l[q-^j` P1ZrV; EnPkE|EL]-?ި("d"^㌳h0,m\,"Es!V/v@`S P% /XC_x*a_<텃6݆T>3&z fP}L)!Bڮ1)N [%VQ4}<1G:%"t3*Ă.`p/jFQ̊8".,jd! xB=^0YU,*,BX#TULc1wư`bep贶 /J0 #' TxE!pS!Pxs (=Tc{Є=uH!(Y4:$(8"8!l0[Q͙VٞSocQg Mu)Ǥ%zS5.W֊dj $U!ȎZyCN8kN"ĩ bj3>S&AsZfϙz୶ov!qPԩ}Dw` 27Ղ/9 }(h qHE;uBD~K15AЄ=/q4Έ-3rJ}E SVl%h%D0AC4ӸC{L^ 1D0"9DR# zu{:+ : 16l"i `&9˞Y˕#XI e4< ,~?R*V!ipgphDqc {$"E{b^q%2&7\ *o̤@l&l$8",*JQI__W.n1KdZZȤ"W/8*J%_IsCA E4hCHRE (Y :5ZlYUUMU0cIZ͡/ qjA)˽Cv!J-à2c!C I9mphd*HcBT/%p%Df!wqfu(E q IDATAicbXu"-)PP _.<ۉ%6UV׊ |D-~8Ł<(D!nX%:tN'eqiiMbmb_!)վ`IqQN,jXJgl,0f;C'~YsF@db#X'hg (CxPP/D ЩUr|@:%JMYϬ'$(oa_*UǕ=)S.a~>1!o sEց\H$B,H5:Թsb(r|ȄM\fU .P t!#>D R0d ng3"A$Okfr9ԑ5}C}iE`!T ]g.c EP6v!xK`ml*n$F=1I4.zbȧ_N!)VDӠ_|CaG]s>tYrz81 GCߠ#AI{(:߽oIAM8AQ5d" Qd0jLFR+ZC˺DXbuW·E(PSr|qx&6E*Q9^ʖ޴Uօ Ū3IbJgݠ E^JW)*5"MXMjy;5!bH\@er|(p2XKqD,O! gGpzPcaCC4!{"{޻2b@DnVaJ$&^Z i3jE,حP OQ`1-ՈHwCo}>;OIIdсփ R春χ=ńX 8&` /]VQd/JC .]K!:)z2VzGjiVT%\fFd.;a5bo ͜e|O>1oUUn&vjD#H9{Cg94 $nn8bs 3N&Ԇ,CqHƪ 7#΍lnH3^?!* X@!P"Q Eńg `,x$J9% u0dh Q=ˑOO@ F7d>L|u^az59 1YSg A`.}³Ms3R4áW冡^ A,O7)%@A5b#aCFx f@ji_:Г@eE {z>sfBh{lAb8\;NlC0g8YdtΧSE0CNŸvaWh $L4ZYe3QbSS`MZרYi2b[+۶R`gB dVUS$bkgp\ f,NT6[ s8MMsؓK1C^퐃bmH `3L63|#6c9=u g $@Ə q7 Cݻd!I' C%%TrK$!&m jX4>gSoY6l2e6W%xl*6 $nXg#U l3mljoV^Zi:%Q#g=a]~xjpVmhY gsݹг.1\;4 X s %ƋͶ]Hs/ n# AF1.%Q85x 䄘Ӭ4&qj8bD(^"&t9$ǥ8Ȇ|r?JxU%Hoo֡Ʉ/荷[ۍЛU%7-+͇T/bj~6Ӏ_[ohwoj l57=S^::l|H3F:O3&T za g๪;r-oX `0qT;C Iсd# 09iM}H`/,q&=- xD"33+N IUFOHYzB|6",?3%i}"$1$#Cz-M9#3 ʂÐÙo=߀!L I=A9!w"pB'BT B ajW DX{\Jy%$hNR}+ 6+ވxH UqU0mV5m}Σx/VlK1<섇r\ݶ5U$[oRd:K2U[_a&0#7>XTi lsѝ/5?Q# փq2g{i@  yEVᄳ"wäCؘCFD_HvA-%Xk];#n봔PDL8^ vcv۫ZPTgqppUJn4l?Z g]%{gúY H_m9mqD 1"M Z@JM.48Ρ CA'p젊ڄ=C" qT #"^@S0d:$"p\߀ J3! .[vBp`ۏF,ͭN9᠓! )g|7⥇c\/Z޻>N&;擾A!,Ӈ1tPسTrHϜ M:{g@gNV!aL Ô U\2ρ rnB7If?6BHST5eD@1+2BKߪ[PU*$02|Y;&zqzPѹB05, Rif&SmuextL0{@@BEh(cQ҄uᄑ⺏bD)3Ĉ0B\0~SBW;3pNӸ*L< fy0f@>b#; r0:d 9%^?(5.#8ș0 c!Va3Gz&( xL (S !LwH=؄Cⷮ-Ą!'iRC!SP&w~+  ̩%h< VoL{i( H2~B& <%F!+Lgm>ᏲPBA6H !r̛ƛ .HTqk'؀8ф~~޹{lDgB֡DKڥ^~iW^N1"]EWgGI&$Phevfh9Bgڙyۢ6u.a 3%>df9+|^FhҶ`kA3BHedp:A9I`§_ ', Q-;wBݘ}sFnWE*F!Jn2ʼn^va/ʰ]X縐㈂оͳ77!m54I^},cC`oЈ6( ցA ãj¹LLW[>6Lz̈@- τ=CA(cH~MH`<8FaJP2W'&ku |sXKRyphr]Oe;PlL~v q 6 !g0(&<]|)wLI` O%$]gv s&=g"^*W*ӇxIęX\^BR390Z9?6B>(b 鶦LوڬB1k*TJbv8Ҩ@>LIR%g &@Ps(X2XI#A1Ɯagt3: "pJM4}bLx0ġ4*awϰwU$:٣5 eC](1)A@c !\ !B虾%%TP2IF5Z`tUp4(Bhe faB@@ZcR0 Ţr&\e=ݟ8Å M)nфȝBṫW9]Aj]X۸TcSPmr(B[8SЛC cL(@ 1x&cҰ$~7ՠT`t8'd(iR >fDRMT8Lřff&tp: wO73v!KDnzbxF4*Fi׭&2C_=w*p}c\(PwjaT. q`rC$CaXp-m9ďtH$F5h̹: Uvd9Wy8Jg#OBY"xiâ@7dGg370Bh:RuB4!ơ̓"cv%P#Mp3~'6C'ȁ@ `hwH\^o) ^uݺtNHbثU)P{džv`<Us1K?f!DFsXaA {{4ӜpbA#5hA^H߄#L1PZQ3R|a=aIP,H4On1hWΝ*y|ґEhq:L6":ndB8f1!H2:EBZ2<ҬIeη!(s!r Fo ! F Hlކ GP#$BG/uȀM$}Hw:Yo@Z ZOwARow\ FS4{ߜ' ^#sNu:qxu1hSu>P:=>&'pt8҄H5nD1 Ω 3}΅@8;:`PA*F¢!tB/Wf;f3@pʣ#UiC822" O7Cv8U9C_~BQא?A@#;4tӫ'bel[_0jU.OKjo>D CXmv>n#΄Ġ)_iSL\*|Ch<́(PGpf8u]BjuYG6+ȳUS&6",(mxgmHk9؆_{37Na"Z\;-Q) d#MCO(9(= ObAKsRWp2 gHR[qcdDAh,BHuhB ZFx33! dF8btëƍ "9_HdKPћ CKVp ?~6<"k"q-?QCqlnN`0xe 7G b$Sl;<)z^j|X*Kn04&T9Uz&\\N 51&tZsځ#%F0>pᤷ@_[J*NM y /f/i,M&OY80*oIczh?G\ QP&B,٠.uXz8}w*gNY!K'ptyG4SlH &\vpet?28ύD"XHRmB!EI9 }gRgty, TPӺh۹d bózI~J9PAfα?gB( - fy@} OA}ig~.8" 5!$ c\O=B XY>1y iٿpdt$e &$уH`?0frA.uzUxAh2Ř`mHEd~i E^<x%w$==nQjibM82_.K GF L.MtQbٯ"*r_y#\Pw\rdB^6DqjI$4|VFЮ#u:U9ǛDҵd9þ#I#5H5!f(oThrAD\#M8raftA1fzKZcBzd 9hN؄ GߣGuaLر`1\`,;;;: @N*̓6LOIRAƑz )*GBPOQ(YpkwGمbC:h)X&]>I3:r91ሷ y+[>15>* ~9YnXȥ@؁   '=esBQrBl-:允J4i:&FNbj2Rz+E0j/A j:kMGS 4A)^F5,EBE(e/:s"M?E, G#NJBM8c&9ē#᷷@kjģsiۉS8N'S&h;YA%(&Oӄ r:Ԧ''ǚrBWT|)84Q(DoGG*m,Ek6F"kM !  a^NǟN6#fFxm>~7m&TB߃ a4A#&kYe()a!/+ f!ǔ"~hډ FP;Bzoo0e߇K.t0  Q`p(ʕ1.lJݥte&R@J6|GrbB;ք#iӀ" `_&2Ӄp$ބNR4I !HnHutcҰ(p@D`pk?޷L^0p>yADAQ(RtG\v:bNvuKA9 @6!#xh~6"x6TJhD##^AHD ƨS0ȡ ysc'd1!F. lJyVNȶnS Q{!4FM(z\v}GR'!@Ca`< J[0pE,4C'@$BZC:jAL cSC9d ޕ7O#҄#._05>a]60|hKdj0[Z۠^G ߼6A BE 5MzLYo}=n<_ehw|s)l W DBkc<D3mЩ8#!%w&O H_bQ!&Bx$bpՈ[eJ ܀o ai`o%E aN{vreӪp~}`LX;GgEgi1p}grV݅.b% "z6jBDtT.l.2 zm69pysdžLi >>aRI l$n$ڄ:S 7H\8 1ѭ)Š@:su &B`I\~{ *:7Q較` 5 G:}Ģx i%HHv+ULv< anD60ajbTME5um:|QT!-T0O鵱Qؑfp#7ޤGDC(~mBL|L9 |}WP4ZnkP#93!YMaDj1Y(IA髸dh< 5w1\q Ztzv9=N;."<mHqc+6&bf jrf̛m>>]( Ӂp$BX۰?p-Z^#|/!0 Ě0Zzi!q9an;li0kB'@a,q 1LB@'P{b< ;9l].~Y O0Lȩ7p}LGx1):}K{⚰3V,hBχ0AŐ'Bb,Z BBQm2' %ҧ^R&ف&JpMրd3 458 v9T_æDD؞{5ROQl 4'k~L#dngIs &#cLO4&|Tj|eS%'ԗ3"f +F2PߞKm+g>H fQ{wuk,o=t%]!(xpynh}W ǶG6كN訐D>.|ojrm13B-ưrꫩ~6" b0 v ocH?9=jH?o`?G 6hZI"+psq$9"4!p~%؋|u~zb>@٭ -QV?euX{u #Qxid'"# V ax3[bwn򶟫2Xˋ$}NG~ z?;R̦Z 3 2IP3$Dspu(.W¬!4b\K‹؉۟?r.,|b0B)#$&=U4dFB*Tg!?>TpF頩_I𹟐#LbvhHcjVPS6Մ fREHQ %}-=ncvv~`rcG@C OEia@ء(ƣ&䔐V? ]I=&EX%琷\[n?&hr:rLI`G?R$II?N&4 pÉep#K݈ lPpB> i>:K3foM:Iqfz&4 "![f$v#h}ALwYE$HJ}rOv$g"04mZ2!ţ29b!qlF7CY ½ %t)!Zx:h' U@Heư#c1-]vua0*\x̩a'u=0^cO tC"qk:Rlp$6<~y85@m#2s7a#_7}ķC(.R`i^CN D'['aﭚ{&X ܅ 1Haq'ۃ F6$ajưhM S+!HskD_+n0䋛ڞs7-x"X;cS(i߇oTfO(Kk2)lD!`3hJÄG߸!8ԄA>[m>ZG  :uA[W03O?DO>MERim 49UVFrņVYbPjCR]:~;m+W%]:Kf?eO,%B,z|`(ER@Ϩ cB\ΎNÎ,Lܵo>6W阿ݬ;H۝l<;HVDO?EcH$g}穷 oL _T2)J ) ^qo %&ʞE.K wjf1gڄ(.jŸ:9sU r "09V1!~GԈ>9j%LkX4mzഡ1!qsa9FQ˻Ǣ-o;4x.z~Cf_@>bk]ϟ~ "0g qc=R);s.!³dP!:o {>~0!bl<;-oYg$@-PS8:$ ?b<zS(D˝GQd 1hrAJ wjۈ< B6\dO A D|UPH@lԃ(B Fك_12{"wXݞL'ARA@ v::<,[هnp4I\$C 4, #GO>k51& iOц(1dfMySXN>od@f@"cZA wkڇܱQX&>#G؃VLH.DCxQcS5 TbbH# ؓ:"8v/y^aH|=,7:-LK &Є½?#r>, \i'f_%cȠsr'aQ$r(~F`jz+Y?~?#CClCIaɦ<1G@U+ k?vXmVxׯ"'&tѤt߮#½VT!HggBMUfᮽF]<?T\/0;|Ri>ߧ񏭰C*4*Հ`U`H!D m^ƭnuኬ---*t,7f")ߍ0l\}~acfHeO,/OӄlÌ!'[Ed et]}WYϘ@'~Q</iÎ@Dy<` !ӶX%{X*moOSLQn+_x6bE!EubֻL_kY=pA܏24fFà҅73ؙ#).!ny9 rGO~5 dABi!t#,CXZxqτNZH]qya'kAi\/6*$Ҷ1c:ApSxMkϟ&epQ@pd , ¾eBh5~2!Vd8W>;gI}g}~b рH qǟZ;\6ӎsHںoCAG@*)!SZ0Jܮ޽ )u; ǟ2I9ݛ=ω._xV{GcH٨S * IڄdP]e<ϰ}~ Of.~~…OiI L 2&LCH␺rhۡL爴Qںp׮W7mq͜ ?)ӛN+_nmWJ߆~rBއ$ RM;wƑe e `A Hc '`=Ƒ3}M-0,A6%1.J%MYWu7ivjtǢ " rCT N KP&` V O~,m\<5xfp$e܍\1)(B.@Wv%VE =6nacE}2CvRZic-߽LPMCh-FsgHL¿jZC7zF$^CU,>nu]>3@hΣA3.!N@a$0ۈń~Xa8QT¦=8׀[~Z'giU8P<퉖ݓc.ts 8zoz[xͲG<&mP#1a8w݀&n_&~k3! 2^P@&ޗ^j=r(D1u > Gq oVI B (5%^ax9 {س Oe.)ԣT{?U0q¨OLҫ}1dSؙw.]OY1gX_=6zj@P;ItA{N=|jDZQȄ•%)wnH`-IdsX-Z 5k#&A' hE.c+0FBVL?e˛}rmW$VýHZM!xiG1Ӎ]4ZT?tܒ$OٞfHJ[82huTުp~F]W0VZwh̓DDݎt:(3kU4o\8tbJ1Þ%aMi{ZAT`Z6a)h!beBXQH ݄ VbB$uJl<ɔ4ko|{Y,ZN^j^_Ȋ#:*j24fxhkNqa8;>_jg3rFW;o+ݎ A=k3ȯwBVB'~L47" 5*.:6IXThJ <* k5 rp9 gdfay⮁ PABZ< W+PE{  :GJ "G/j⚨,iIJҸ\ 8a}8%20,#, ]Ѱm$DakcقJ+3\1Vqhİq I?:+ +ו(/tt4q$8,ZB BN ,HIWAàGEDG^렔iC!N3q,.wcPz_s7V̒.Uesu %d(Ͷ}-*i錿G,>fmhn'Q" F,1o|,pƾRYcUMsEŤ0ӌÝuU 3iI, q4I;S-;Z﬌$N wtbIUƧx[/5"D󮎜Bp͎ ]u:$*NГjm'T ]xN֙dpF*3DžeQ\JG76N cy¸ǪllQxQ# C59TBc1j;$, M<ɝ|>߉&]dx݊PJġz1?ѳ!P1נ,;at_ 4Ad&M&_fǴQ\g ],v M2lSr#APHOgxD5,>M'J  ^ _D4g8EޡH`&: X밗Vw| 8V$ $O̙:Hf1Y^[Mf8*(\}및\v7#O#.f#E.´i5gf8ɠ\in_QAP̡q&zn6{FX8j"Y T}DL0zi0˺艺EN&=`0"ϧrP]Dﷹ]υ]nqO=f :w6lQxkܺQ\{;z ?i]dgs𻁲鞕tf?ӑeɳh3EP(!IpcbV?X \6kP3J! Cr Pu5 '_N.s''NGp'mv`K 6ۀ kvzl~(hf(W2uE0o/:n k(U R~=D?^&1}@403>OQQǼ$vhܗ8U! kwk[A#aElni@kg|qD.QU8eIop1QhhS &" "Xg=fb2cjfGś3h#4ʓHR%Y&tIGZls{T:Q "H~TE:ֽt"C¡(اĢ~6dÂl0*%Tf86f̪!IUdqipf.轣#>sXx:q?#.l\4;IIʒ7A]՜*0pi8v$uhݭ(C&%`,%[cK9NL+59i,0W(DbP8d#)ԔZ +v#zN]7zA ~TEg[Q]b~ aۻ~.ͦ}yh%n=]78<Qn@؍aK).V/O2h=}4Q{XJL.6ذ7 NeX³8<ĸkd8S7*XZb>'<)eUju>}]+VfZLj_"},{#y"~"Ax&bo SYT4؍u̍Z1,w{qn|sAKf0o3PY@ a*Yh 1\׺Nh/ccߝ^vQtaÖ]Eu֛;1=6`ލ ÔơC!:d:8tLBxb$;K[۩z1yt.cƕyu܍> O M*!"yfp0‹9c@iGNijhnF95S']beXgkZ6B:ԯd ||> § A^4C3Ü oq2G"m8Z&/_HZvq"򫜅E7sR6EЃ!냘LYrM|b^{u~/W8g3ᐇb;Ƥ~iޟu8aӝ2om69%)˓0۳[A_ O3 yAPj(_-R7˳wc=m3K°ljfCxA#M;# yǮPu5Sy)zJm%0e3[#a-ƀ\/qݛ;NOV\_Yg {yÅ^ gx^ B֞8Ѭ/a'%S^0^_fYo.Վ2tz Ea?@x!@N*ٛ4/ p^ #C0ywv^C䕼bxIZ>̮L(K2c}$dr\(ߢj^swɻ\]/: |A[jCuQ{<{ƒ |S8 <>N$F^W Ô}a 7 H{* /ob>ݴ.?bNTvnN7A>}ŇA0\s/GNal7? %{I>|v{O!'޽`ʮߜOйxBk7O8xͳ?]c08w/[f1v7rќ^/o~ :M^' hqGIENDB`hugo-0.131.0/docs/static/images/blog/hugo-32-poster.png000066400000000000000000002731731465312036400224520ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE. ( .M   Q   4#1 ' 42 * &a/  \"!w7X8 (  Zp6H; < 2 !B:I ' =X2a'B W5 i3$> *o.\*K^i+, R8JP. f&u0G=V#AIVNLBh% 8Dgb` P D2B$Y,4SP%~<b" < ; !I$ +H' Fm) /*7+6LAQTNH\ iJ,z*,P!z%?M8X2~0|3-j-`1AO"AN0aQ"%T@ $c+s Hv.  к kSr*D**+@5.ǸiY 4/-fX(?F%>) vX-~rS/W+ uq'#l~^ _XxL%YJ&#&^7g?^FI3a4"iQyST<qHL#Xc<;¦h1[+1Ҫ˰ m?#_<4#WB+UO u}loD7e#p_ J>1f&m|JIbfdg43mhioXKm(_^~pqȞ3!t_ѫ-:fI۷'AtFBcIKtns8Tk2z/ꩊ+ Q!!TUg(LJA_ wy oeZ IDATxԝOY؅U [v|, (-%@:A%RM `0謓iaMc&IϰoNd8pb&}}u<hϹg=kM]u?惲֧j5k͚6/>4'h'ƫ9:nu;Xo+ׯ\J^ߛ_NrJ׹Es_z/?͛_̺-Xwk0'ýnmӬh1XpxzJG:CǶj]*XNflj sN#/0~x1džx8>>%$Of<,p~(ހx6o ?o  4 忀w|w~.羷4~gտU9P2xGPsxNC rxa8 D =[._ âC(!'P2c-Q#Sx kGi`  60ƂmN8>6|<1@/ÐfAkA፟a0$ ò7 04'Ka^BC ]@;L,q: oH#rh%H^㌡E)ħ Ƀ!hL2۽3E +W<Í u>#sCq(=>x ww<.XgW<O3 F i$M~a4cя >Y0 _) yo ل^""`pmŢAhтp\? ńG4@HP0' o.@/"1xPdXݞ-pPHUa`L h9,«g02]eY𝩰|A!hk/HĿ`:E:ԱhGC ; !%gp!CJ EƇC H]Hz+,.ţsg!ǥI\Y+S& q<7~e„8޼aBx+!d΄ Z$}QAB }GO Q?M5eyPQA4š/B>|Ģ9XlCFl$B`, M3H!<7 >qH_BA;!sxCGLjMxmQ-X Eg|$w r Ps*/0sˊxP3tE BF8,I!-s .)CH]mFŤ< -)Q;0ỠlveQ_4t7 f}!EA ,0'4D0PS_ 7@`¿Y%"̷@4"1Fׯh^!IPs^ڃY MxDrfxҜN&P!ǣaqԚ0*Ĕ 8 (PicQ:_ɇR. exUҴ X&.zL艰QGɄНx g؜ r0z8=x"&ю P7΄rݯ8|3;]Uq/ rB F[޴9jR 6+WE>#[# ˣL 5GO + ̪D,6@BuQv -³z⬋D>ejaB v ퟿B(>*4( 6ck~]f5 d»BAe 7!𲤃?#L Dz El]ƙQlbNhMnm$+FiՒ9իWB$ckN GM$"f/ئ‡Rۄ΄'R9aGS7*H,M2w*So[(o@)I\wj/ <($H?@u?|NU8prD f=GUqVآx"f]}t;IAna cj>kǙVV$#h6 03SzfƆ5FblQԣ.EEql3"?6z~^&;a,vi52Iy^&# L!cW&34}qip漜?7zL"w 6!*q۸]ŧs,C|QRxk2 jRLjIhB?$Uu;2T 6l5&B>JjDsF Lce"|_]l K0NAlN|рe/42yQeB "37 J37D QJqZ^!g.!znawYwBj"q)xrB5 2Ԛp /UitIpXEh# -‰>F DG,>kɆI}ٵ(gf@ZS: =hdBvvۙhOmAߎfoh[ې~C)!=w! S1|\Y1(]*,) 0?fKɁ\^RQNIM 9u92@R8L$26GI@}rxUdNͨUҚ ``L(F;-`hڢ H$lg<@ڡר>_oR@}=mˤo@tWCר{nX$; ABsYe5&$)usn\f~BSOTJ-jZD {!$U9!;)>估0L )|>mST@URa͡Ӻ=`~~ 4lj;2T؜ nQ7Goo] "9Ҭеά;{qz9 ZB Z^./,ck|̤2sIBY!ţf&6!H& "Ҡ¤چFfZz~QN:/[ )ȥQq7Tpj8]dBI qSQbqNȳ^}@*&PtM$Cnvt/ d[R,a( S8GIpX +3TЍp?r’ )6sTX*MCo76!c* p;@Gef)Ǥ怐t]zkK.Q 㱙p?GQBmoBP%Q]@6!IUR!ثSCBv 4HZ^(À:.rLThxA$ orJ(*%(X2u;)BGG ʣ.Ev,RTCbY pp CPT0lNzm¿ vxj6!vQCW!FQqT!8_hgw#wq*b:.*4ǗA¡`dMM̐ UVH|)!NfLh)nfƣrҧUH\Uw8sU#<61B+Fh8O(Hd eNPFXpp' kޝ.0m;*؅?Fw!(E _ry!5 _UA p[ġ@X:2qp9G:'F$4[I$q&!P1򍞂{=ͲEpJ ,8Z<$$Mhl&ssCjc2gN!]SXS&:)vLЅ'|P(Ξf֚Lv7Gw]# ʌD?s4m-9%FPDQjSPyfW΃')^<+r1w -1! n ?)!4O~/B:nӨjknqL_0(T6Z{aj'!2PxL߄~9T0Ia<=_qې4.{dGUqMx+ά@yf:+քPgw y ,5Bɨ_ '9%BB2!v)<rpx֙E ʭGFa*+UҌ^«^NxX{HzN)EaMе}ejR0G->R(E٬-{vz 7.RfPaxTH]yƆbb.d;驐)tDeszǝM,:) 'flB8tք%\PEd;6J"vz9/܎R8Ux̏>(}*a%9+7GP0 FH. =~n.ZWWgb`;01$XY#@PR>AC Gn:IJ:b"199Q:n\5^Myplu4aa/ѨG{GU~ HC 9G&nRɸZE3ힰ&| š̌tR`Ľuˬ)kvafxj+5k1SC!+ΜOpҕ+Ԭt F&(5B`]VЂ8x$9tsH2B̌ga0FS32B015ttjţ2gA׶NsZ A9 ff}û> P^e~IɄu0 _WVVVtf8%Nbf8 %6 Qϵ)!> yYnq4Jj( tT SmCB0Qj3~լ kWc k2ENÇ ; D͉؉(% G=6%^#W C8&T@\#u޻nb"+HsC!plNem||<6ct/&0܍K>$`v!D p>6OoPN(!?PR7u{ ݥhVh,d ov9'{!1dJzqHBr}TH$I!Ħexpɀ!G($BlRU݊f0FYBor4nS$Bagʄ%%?LV ڐ8!19>}x lB8'mU$Ve4 ۹* z UH {]8jք0G C*k4kOUl ᧟ƅQ]m*PF6RX9_cd^&9P#h%j3: *fMp<:Th1ĐQ =gB$gByܥ8v$Qe łM| ۹SoQr7FgҌQ(Bk92#Ra9;>EV^3 tT5DjX 1lK7'6>A:[0&i6Iёaf3A@m?1 4m!c(V=!]yW#2yʄb!v[RaoZ8YO&t2rde94*j7b؍'SD? kT6 =ު1@'T4D4h=ȑ(~:JAL . 8*ˤ)Đ75up&5 8"K^xyUA,8 W(5g x KNJUTys¡IEQl¡W J ]< Ilʄ^aor1* HW@PN: ecN+ y$0T{廰N_B5ɻD )Nh xq24[?! EGs*!|& )Z8EM Nna8!(foτ|SCWsÕ]Cf44j6~mu! F0ץN!bTJˣဨpc`M* ɰ9 @Pڝ.*=linl7: a4foFlNhM JU{[ZYQš *!4u? BA JO`jA0j3J7NsQyTL ץbCT8%/"^8&V i9bU8?/d%M7pAAF&PTȱ+RJ&#&M %Biϑ\)#""Uf *zhVERawª!(K]{D ;)ݰ٠9֡0#IaƘ,0w"g716̸悔a0zm>Bs3!N) HՙT,H :+0$ue~)g I sG?dE ],\C()$̝,3ܛ6rBS(^a7dyq[^-߄e*mKd1 6rNڃ\=Ç~.$ PL,M 3J3 i0v0mfH6 4+&;޷&4^SLLqvw aӂBQ봭Nl [nju2!☃SB#CSo"ᮐy57!5,HBc%Ɛ+JTx "+pHRPX[D:9^K9>B ?A=Z Um+Jmά-( Q9("HyDE)v ;Ʉبi<7Ng'0x IDATep Sm£0QQ&nWxBs̆D(zHst+D(Rkޮ\!qPC}p,CH}{ C!.XCڴ0k}h2G;'@ \!DxlmBYR@: &,U(ΠW؍R3!qh48Mc:6aI1#}'2ժG0EA!H&Ϳ xV2<*ڄ hZ0 Ra)L;dmf< 7&@c`o;lCH/=bs}{I 3P2C2bX&;yB&?G&ń6)d)$ڄA`p0DfeCW"-tnZ9G?Gd}Zej kT7'Sm-ީ hv !-E͹wJ*J\(xEVra _St5Fפ:.:$GpGnz!)8=uxcRи*d`DJ9yĆCلAnG.@G!GF!8hЃhBs&p2\Gn>A|f ۮ^.gZNVawš  $n pK$AsYXHT6"EsB6!Exx-(evYz-byf L8aܤ %^rO})-ĜG]P hΫtj4\)?Wu ƃR:\ptzbB`8)żH it ~(=R&D>R9*bj8 !-"gjaּecBXhI_aj 6lN% pv G-<d $%L!+9sB>n =1&]BمC!Ug䐤/ϯܻnuCǢ$<%0 M#7-7)aB"f `A߅stqL:@ЎtbaL)eG224LJF8M"t!eaT ~Xʄ LQLsh E +K/#;V C>vqUf vgA1a=PJ3~<6lѠ[?H a݋lyoL+(1cc<>ģ2 oIJmzDPC8l44Br¤E¥e6$%G?2Ӟ 9+7Sңmρ`QbЄd}dNz0D)*uUQPR003&*&E8%\8<3WI@Ѩ5%fyBq(Rx/ K(&]!W,+0xMcP!TFц, F&4 s pnn3A0 @ SgڨMц*}w`55^{!hO$ pcsPʉ A=fB!rG7!-÷5a<ؼ ($Aq Q!1S!2L !ʤCAhXŃwJYERuQG}E~RpSAN }^iϑe:G[apzZ"QNOkJңF+)Q"hMvp€DE"eWЄf5cbH&,4cFZA< k^VU:؄%:rHje DU5TNU8B,HǼXؙpjЩo_BN ggg ]"z)I ] _o#N![p<؍>uR3CiR04F&!V7*70z\BKNMwmQ&Qʢȡ9zՙԥV=7 ߂:@W QL؁1+lB!h%*5g;!)bؾB 6c^g&>24 7=r0JgHA8 & /Hb <8IVS,Jֆ<: Ue(dQ+i|?A@`7&֫=a?eBK!am 9.Ģ^ߞ1@m>A)PB*4lBIWͱFgn,!KاX d8L4Bдsu@lW6$8xLGmat!H (C*:~Ne4^(^PC3E? DziML4 Fע z>lZTSr3;$C՝h&fq, 3C1!M ^,7qT#=ˑ`QgCxuMsgm(BeWIЮg/HخL(7D f,9 焳>& L 9BτC6a#)& BKcмhC@V LCAͧABKAXSⰘaǐSNlf,k2{-DPI9"-0k!1^B 1$]6K%߇7١G%$mzqP DF9r!D o ֋ U4hP`„) 4)9!cbhA|0mUQ([ 3mm]5*U6V|ð45[âxp#29y!mqRh4k4ij6+A5TH!"UdpSq3LpcV8:8z-FOB+v dv b}[t(=`h;.T9ae* N}vE8*AC Fm:Zq<!“H| $9UӢ؎v/dǒҬJu F nR.*hΑ /شp`ʫn ]>5BVt2!m+h[HAm"BBЉwV Bb!81sX;;[[E0B'flS 2 tz4D @ ;Ra JJj[MHm /\P/`~ JňHc;Al#DZʄCu'0' g=BUf6G)+ÜpΥS`Tq:.ʣW)Ѩu!B*5 ?˴Uo}C2j P [ʀgBs)'/P.!s Mс.Mhp+KjiɕHB<٥e;^b"?a](jaOnThuJ#lB]E\0%wQ&^N!87EBIгUĠ[Xu) ,3))<&$p;hP|xH& PS&{.Wp ڋzĂ aH G CNi+`:k hxVnp>r^j3KaPC-|8uBw9*G{;B>"?B Y"ڨPaN(؄Qh3SE H S* Y J]@=UHIqMDFB:wkAx!Nb 7!ot-HVx у^u6"(Ԑ|R J lfZptLHFxJTj 8#. q,͜GRbȅa;Ǥaİb| +VfDgI0Gp愃Bf./& Ģ|ݩJlb{Z7uT6(Ph3AbEhuTX=~00HoBr퉢anVL*$⇥QLjG.tC3 H9 $2uH`/Lȥe#G~GJQ_C\@5XSk\ D*.^s9A\&`t@ŢT cR_m`[hC ذ{ E F?q AIEם Ʌ"|-46ïHx9Řx8'! 3QH*$. Au@4qP.\ 3deH/?so @RFٰ@c3DOj#f?b̬޸pWWEP43`)f.Ŕl8=Ѩ ͭ zCnU8] /'BWs h =I=57VQe-6.m! Wp zYW,~  !̪A 9ť .0!ЬE#ˌ!pD0dɄBQrveL-qA i| heGQpt 3F_bbb)pk3< Nia۴Ny| P!NU`&K4esYnO&!0 Ge! ) ypri )$%y!pZ]J2Vd><ª“5*!k4()!yLˣ_ ٰV.l!Y(p!h\1ځڄZG" å5*\t}oMOb !Q$cw{)fWd#a}BԫhALHmȄBբ@Bm41_v 5- ?"^UEOτJw3' 3EIɆŢ8Є(EQHR"Mvyo >$ABMSBI֘%L !&|).Q})NpK O%C KmpJ(d+Ad{\Pb gU{Bfeckփ a>:(`8R@UTw Mȅ|&`,<"ѝF9aQbQP`غn딐Dؒ3b3Q)Ţ#oaK(1m(xUw- ,-PU0 N /M<:(2}e~OG~dV*2#:tp4(('ȄuO_/̌ҡfGЅLcAy?=c1H ڄf.ڦH,#+< @ TQ5t8j1!lLkѪyl} Ns r~$l{.mf'TTᨴ )zūЀ%|Q)>8 zt/&Ė`'wix^Sbql_{iI54 q E waŠ:Rk~߅LaJzcqXg02\ȆXvh6氼A #AFU@&$Z׹6"k+grHtWY IDATݪ%f7vE$&0(( W@s{@>Ą 'K0\><*3KFiG.K(*TЦڄ!"X27(BEh 3E:f=HbpZGe-qLB{ dPA0py&,>JVjWpuP/Ra3"9u2:LVp CN [F[!)bh\HK $%߄!Z$Bw'\@Ԇ>#齈v$Ή X\["B!hbEbʰD(.Ņ43\8 62 Ì#6:t&l+ugaPȄցW^Z\k:ZEc* X<[p$|wLPLV IW]BЅ$C IptY"RYbYSi^WA"!% FɄ!'lѮ:hqy((Hs:c : T*lnЉawB1*噰բ=+sE?1 \/#^`fHiWSBPX -/'&lFp5P!Ťքr` . -\Z iҒg‰~B5tpydYal{vL}~#w.>(VFIzCa"p(TZڵ ք"C2Ԕw IaFτBҫU_ G2MxO82UCEC s a R>$ruj2ںFw/v\֭fBq,\Ζkyys"i!qBC؏; z Y6/U(%Yï"B g?%^>+0"Oraf0"R)db4Ia[F"ls: }2{WST.q7= Q4hѹ -1hֽ/;ﭯ%ƹ}=Ö,oF9pʧ2ܹ_%WHFM?& Bd _x \s??jNHBu'I|C {^"fﯧBץ@"xy $N &zOOR}%;yD؈2JTgPP_rKQX7B1{wބ2LXbW5A " :~1iZ_K񫿶ia "2t.$}."gb rf~SU]PU{ -.`TfS94!r^="lYLP9W!?R5iߴR%"dA?'Z/c0*S s43\Xc[HtUِJ3}栠oFKBz3Ąbݷ]giR.ڵ=ݪ]"Ԟ~OS]𛺦 LEmEa&zPQKvhp4 z_ګ>ߌ5Zp7.y~]&?oYmx4Z}LH̰ߥ[.mB\Є  Svu~^XJF1h7:%nh{U`*psOP:~OS ztpd6GCLYEx*8ݺ0ך-y_fFN4"e=X --^@jL>S@ LhR:JB2HC}vobТsB5;ps_P ­npwkk렡!9>&t0Y j`T!" 7„QMLh$g  c2<=({)/U ]Nx?&0!Pm Zԗnز^ZUR4 1`G`}ll.!3+ _YUa׋&skt}{7P_GCjRX72~ ZLaÃzbvW <j ڃiTafSo1GUE&oāpi!w|[Z0^/~(MH fuwBD-PشҤ{}ryT&f })=H4/|q0m…?5x`NXy'hQM؄J)Rn'ohFw ¶C2mwT[HN>8MMAZ^E#Qq=hFyg8(AQN9E_a P_a/Pp8lbM&Ĥ-K_ " CâHzc }KA~I$1 \?<' |cyΚhT] _fZ„ 43ew2 nfq_ c  V!/˅Mjh4]RɗG hƄm/'0/2~tiQ!Y),*zř0[G ߖ FÃ(-Ohh@!fYQh2B~Ճ*sh߄Ha9C/5:N =!_Ѓ˦)M×Y}DXgcQ{VעQ73sO=*t)\8G Liʩ% |ED<Dke¢ K}t Qal7A*+ a@Z6 _As0~A(C&\ 3@awRbm iu ?Gd`f8p'NCms>E <EWmmu˗_U·-P/)HN4!y¦U"}= A~oe?reħֻ@> G_H8:Rڄu`)mȬF&*PRS hs'Z O[#RGa۩ ߖ JF'o!mUAGGS&sE8j9pF| lk{ʄVP>{yyӂ_9d4VɆVL%=椬0p 1 U@zUe:&Y GU0*K-sIJ@ VvFYnoslHVf2#R#!&Hs<*eIijUIf76ff eSqFU u36z:[s`BafJX3l\!BEXMJbB"4AC[[(cQɃPQ~Dy|Q'l (Tac]τ’9"ASaHH#B8)d8J0Q)c8jEMz(̷YN.7}" >BGK HF\IMGAbh̜MĠDi:G/^8wv*̸R6+/}7!Rvpp#wn$$7lB]A6n' t.! UAh\)dv GtBLZʄ ¼) UY! &OX4 vp D#> ţT#Mh)96FG`}Œ!p֯..LSfQ qMxJ_O*|uyDŽc4 !Xu&3 7#ERY:%4a70/9a>Gb"U?"%B &\ D. OC. C:,jC9ah04_hb`j(Rh0o| UX ?zOn2J4Ʉ 6c4 Gb/pM8j)| %+T뱆73[[ys_L>;LFw^{(u&\u.¾%~a Ml„ \H00i‘R& 3:gфY(Z XX ph-x:bPIP{)̜TMB~8 ^Y,hI AJCE1:cBn6!FJ5nQp.gߠ*{h4o Drdy!\z&(-T9kBaԗݲGaIf,Eྣt8)lVXc#}@L  i 'Y& Z wDIOGpSBx&${%'$gxn02|K1!05څA"އWWM!Wh&υܟH4[NHT :)LN`]rȰE cɜ@owy)YfUNsjl 1J iQ~4.HOnf}aY$G2pN3g2 EC1 ) H<ꏭ 3j>m‘ $)So( ^VbBW!8.kˣ(FMO3TZ—ajl͇e´L( B8={iYD aaւڅjL.Լz{x#sz ,X‹=0!0HOP&m0c S&)nlS _h1 U/hBYu /g ujuhpGz]﯎FE_K"y4nZfքiꟐR?EC*=!X" 9%5&dCH4SP 慪_A[22m>I _ 荦m Ɔ0s< 9a=`bg5S9of[d:(j ǽX}Bʴ{GUV_ԀP_G#cȄ o"Ni[% Jo &6*^/~*mȞpDV ߖ}|M |[^/y.ۖt8+(HOzV:l»!eh4}֓+q -ы )y8"R|dR6ڳG烰4=Q$Xl:M6)]4j^ǣ5jMR.%_ *& D mm%L}zK&P˪QgUh(TL/[nQ0&Ae@Qx﯋GMD:4/,8!'R!`bNۃܰ䍞6ڌ8'ք7 i9ߤwk MHژtQ>"=^'X\ցBb(*Cm0b?BW_=Ϋ[MyW c=&N WImNRȫ:kpёHѲnRkB (`.=s UG2|޿9P1[|4ss49& &fpNah/],Z!!*}ChQ>º:i`/FwzJZZN/jȄz[C~wxAPПzgW aM oZi8:\@!Y/^8jsYI3ܤҌ;OiZ duif'sGD;aqA&[oAP-y Fу.\E'JTCXjm1~F=8l .sn<^'!AV99% DZ3_cBYLؖGE?^B 67ESߴR* &$ɅG*B`^NF[ZɇCo~~N(.b}qln ?=X 2`BQX )ptg;UM_/gWG䄋P)ЮgY,uþ6Q&3?Վw`U7O];+jѵCilKB\x&|kU:ĐMi#ECq9^f_LCs<˚hx&؜ L ˂vC)!k07#f߹ u~4 ˩BmMX[%L(* >H&|WC'Lgg@nUiekol% LX!-)'Mx/zM Pl$"= *G7@yr@fX IDAT7C .kl󫮺2g.'\l{*p;p,y`䄧]qGג*|Y%G0~#j= C|e{AIuM >iPF)ETZdq^$/W@ڵ~++LX_>Kf1a%eІ]X!TEJքO02]x&,ׅU0E``k. @+DDpVfzEob,q))ńI wܱ D`rj%&qh_lBCL2xb=h]}Β /W3%Q83U 3(J{)t_:z9s!aRnO~B{#Ah.Vh„C F>!|dke^Fn#CM61d W/{C65(f_ %" %,0,Ca6[{ $u$u?@1ajS:iHh% Uu]|X\|QؚiʜSS7ф௄ zlO?}Qkb?L}ZU~aaSo'ƄO= v'Q1!fJu 4;o6u={'IaƤ7}d@Ra_9x"~FpKa7a;+REg;u*2U˿gkOЄu“.][lgRpkRQ$qBw ,˿?R6քboib?,gׇ%WMqt AdP|+ː{48;Õ/$ocTXa@v-B4°63dA` yooCCʅEAmƃ>ໃ㇐3B gO< (!ڌ0*g[wV$$50Sܡh*slWKi$Dt cم= ۻ!$wġreUKE_}4L Mfi ) C&0T!a&̂ߡ 'ւ"C߄J/^Di-m(wQƚ%_=M|i}LHHwƨ TmF{&S$ {:RC=[h*h2`*(] EE*+ewTQ~x<hax&7*$BaT%U fDy9SIj4oa.H&xQ]K09|S:`9&}Ō"ḭUţA9&FEYߕQ*٤H0]Mţnt#0٣HC؄R;xF{0 a>1 qfE`DNL(x#g;,\aDƣ԰/Ӆ6/ZpY9QU(Fwf[ cQ@:&jfVG-FaOpǣ5ڃv ],D8 $UHΤ֞;& 1/ޡ6P Sqbz)d慑 KPQ6"r9aQ eѮ8+КڵYb*Wc¬Va„j 蝶 ;x)0QL;lF( Z*.L͐}p;d79 žV"\`_ ]3.*H ]yB2a86l QW `t!V?Od,"xdB3lB) H8P89@nkl{&̗ KgCiBլ(ѭ4a#p?[ՂK~<e162qkc] WI0˃B!LcB 2 *#lY*TLq۹S3%SYD@ژtaY&<]+35 # .-$u@LraoJVJϴU!y{ z軘]kJg6/ՙrMv~}_رI6#0S.b<>d ~TrvSH ?“:]T>( t38 43tZ]:'K.Du8z1BɅ%==n yfѕetb2 ~C7] >`}cA=6CJ3bc6 MY*2 &&oR,x*s3ҩzzn&iÝ)A`lT֒7S^k}A@FK0d-r僗@QrD4BŠY;EQuF+Wؐ(fdULoBwȈe ^ۘ&{gL 2 &SM o!M G~7ӄƦjJ4]/T:R.⌄ )NlZEbGSNwdB7z ;])RzNu/cH!׽Ir^ IOp7{gT`J /ƛҞmCO.$.rCդfPbl(TWR!0U  rF8qѱMXU4!w<,y͚è'چ_ )3L3*)k0_ƺӷ}*Nav^BUҌP]&+-T} [i0n3S;qe } m($0Ø-~mgI)%FLoWhDm^x+[3= CvawQWUlZ\}4 08c'SS3c Іw~# "u_  {E_(&")Iӹg?H,8Ëd%MɄ*̨,r8z) RQ5_%]{.fib.fNq_+557s_af394>!: 8Df3;wFtgB $ք_K4L ^?2lq/G H3 /(MևY `S2Oec"NPLxϑz*LA׶p1@ /̵lrm&izMpLi{#@P"cA:M5+ G 3N +Ȉ~_g/W_M=VaȌzZ[^[ ģ6nwE օ=ً53H\ {BT9kNEf3)~JE(ОYRp!BjynM@93~a*ϨL+'#1 1$ʄMbS=iS6+_ƹR5 -i0VbR_h%cN3 6VץH_7#iᖣm Ͷ4-噕s@sGS \:O= Z-7@q(V+ 10 3*),Mm&C3Eҷ jUe3fa@*]%nn:)wa Ei]{}׳u3͸1K)n7@\r}JgV 83rip/9M2Uj7^rkH/=>׭)dm_ܵ?{:šLI/qz~Ԧ[ڗP+Z$1.M b$~UUŽ޹^aNcwqW4ՄېB{pFfF iЧؖ(n wdtE6,|F/JB LE0!geL5 !#tU hPx`ZXtߗ{q0př_EpRH"m[ǪMN '~aM HbnYY؃!3 pެW&U]6nE3î/4R@H[ }{J AraAv?~<U壿Sfl4.ЭMnd[@ƚ”]e i^idzdvh0t']B3la]h®pT0E6MHQjD >a3+^H%]ٛ2 a}tռn¼a6Mia2L4 ӯp[SDX鯛ٕH sgEA͂L"Fd/࣬y@ ebJߢ~qrBN KX~ ]p}mqږOA~UFJptIŒhZx% enk{Ҵ+-15*rw-‡p1> $Ca m`jRު 9*-P ůxՙ brg6+L|ϙFv-\ JZ^{.luKU_rvݻ7,oXኴ+|u5Sޕv?¥//%(*d}`!R qð-X K+q > USSʆ1L0pqh qf^wJ[@4Eos0/mB7ѲRŴn<\Ҵ/ w^ _ _|Npt@*ܬTW:SZLXj,@ $3 {/F*7~(q+7J¼Y {ը͸k-Cvj l1i_{=Ŗ`KO0r=ҞO l桮pZߥ |2$B]Ƅ_@D*k _HuRa)hܓbpS*6hjjwКM5*"%j8ɷY{Klruɦ$v"ݖsf荚KgR^[xyNa.7p~5<"srBKv1]п'4p85!FfHϞO|ƤaOXbʣOYc=nQa g/Tr_]:T T|#WzDP-Ҷv SEkk9Hs . B[28.^J@mB÷@J ق=w Ɂ\a/J<*.ZZdHNX#3j3g|+Ĺ1DK3내 ݆sziYaj0[1]z ceh. z.3VJ(U2RC$Н>J_A61\ՅhF@F!بC\L |zuş5pYGf ԍ*T$U}(L_ ԴRʝTawjrޟ s)%KK%C]!lCN UTTXJ3t 7*JyU΄6+\T@\]}`ذm>Z@شp%:%45BH7a%XiӔnQEKhZ et^(cMh1+1ܢM.$]P|0k1.R oy GR#žЄw/_; bRoئa4 KK"6a) 1.Vo K[DDhbU.ll )Ģ6ΑZ{+kXR#gzS>gWY\ Ri#]蛬Fv`q!ijb7t&{0i-9f-Ί`w+46ᗾ KóatYs3f~~w6qLnzftRG%ԕ*zaȎ3ZMcᰌ9)4=1n#LޏO {nĞ  J /T 7 /?T&,-|a  =L<"2hѢ '=3xzb1!8*Ks$яCua,Tb* ezVDhݨ7>ox*etбT™7 aCJ")td5E0Q W孥9q[ 1CpmfҜ$]=\TsgCHuK^X"$E { Q2IU gcE0b# Cly<Z,FEpG3=? z%(BC7IH &6)6PJ*DbDU6'W2ejjLHǚ >ago"Ml< ߜ99~HݟH%Ng?N c{PBW69L/0-pLy("{FCh^a0|mD뼪 D d0~< Ph:w3zC!JߓiQ`Ol n8!6$& WL/0c}bKԏ'?I4&9#_0!.ܵWTTl*xVS'!\nM |=.ϛkNdcp:o;X?F͡Q!NN Őg4@`9w RRЖgdե'rC~fManDse-ۛgFfkl=f '6#߭kЃ5tEGm$J(f;Rvb_O+n3Q:wWMCk OkPD*  y#ܿ͜&\:sK+@=@D37&27`EX|87K((wkR,jڲy1 \ 4gx6N3Y8-ʄ&)PCpڴQjd9 0}ܺu}HDb |L ƌІ> `~vӄPI#NDsB%UVEF^M} hH)Oqk4g=h GdBѠugBN g ф Rr U56\9 W]py܄pb|pFᕉԏCt"aP[FsrBr!EBe; pBX/y;  36SH\*+mB'iMdjCLc#g#F 8<1f!9ߡ<(7- a">׺5ujCiRRgh[78XN`ޱ];Y703fƧW#]K)ס4Lx>.MŰǝpA$L c`wa֯ `-1&N7aAb`{ p}\<΄,bBiƏò BCMQ9W8:J&!qIM:}>Uc@w?j;2O4.SLq&*XL!kXG5]2ٰ&Cvx^L.M: '5*q$Ya-? {LUB:5 ty ?+Kᴿt, ! O&CJh^[`*O1  ̱@eU"#!)]UƢ i qZ%cN~c-oztBMAߞzD!}\v އ-#>Ķ3!Y=3444kך5I ĄCz~o|VBe1t|C1w̼LV#ͻ5`{I~8Q aUOp'6pKDFɄJӾ*ҦrBwO@ Ṥd, G7,N'/Y K [3n cѬ&e!|-_oSLf Pd Ma =aCJd!|bM̄y\=f5YȭM8-rKvIub~-7iTNqpHk؄p?H 0h9T (-nB=7݄b{.QV)A56JV5O )tO@°rMƼt"5'+2X΂SC.d;Ws~@*^̆*B GGG4-%żP}H-!f͚4rN2qڄ=]4ҞZVs4az0bpP%)ji ]x~g{@mM7 NlꇋCRH7T@6Nz6n=6EAeH9N  Lh KQ`,hL cA|ȿ[tk4BMpư EpR=Ϭ(5v),~r:Ɛ,sar+IKM8*45Msp1ڵ1}kѨZQ"Nw nN&|䅤g~4*ԛ卡 >BFXx~/n2T6 @lb> ߄&\ħǾɅ`gFIOh_ʊ&BRъ⦢Nt+rw:8*VtV $EWTp pw9pcpC:'- DŽ~ 4- GхڄVHܫ/Wc8jAԵѱjZm.RLIDa?#  ZFCȊpEHW5cpisJ/-W.rtp<0i3/҄~AI APHTvvO4 u*l"~cVҽP!)p3!z738H '<RӲo7؀OH^V&K BQaeMvk A HkHYdšuzUTpȮ擑XDL 3%ߒ PM񠼴\PH` K{ꧨ˚0Gф. U9Œ2!&2alAI5| "<^t bB"4O #&Tք>Ip8R#m]i>]y~-̄R# w5)5RAp&dՄ?04{GGoz[pT8=0  ;K;MN)Km0 (6 |!aSS4H8ĉ$F~PQ*4'>>5\!<7q3X&ry|H JƐ FCM$3YMO\ ?5`C߄x3_fЄC߄CNS8 &bTMaSbދ1ؤ2 N(ÜpDaf ,4ӝɃP(' [3U(bZheX5_I~\2CKg| 'yuvtiv9pi ] j s`BLG/3M9Eʣ~aNȦ0]&ΨUk%x-gMM Of ?rhNH c*˄ԂaDPN|'Uo4~!Vh8^?ԇD~?$ܜxýCõn5)_! 18EŘm/—"g/\z*C')ĹRBκENbP2 83ZM 4!gBž^va`B\EBUCX1քyU䅅FL61 MB&#T(6iW*4$6z>~' ~xM(Yd'MxCQw㻠oηRC^fRNxw0PXNM M ]8jE(&a҄6lp? DaF Mtj/0XH.ߜOꈴ 'upj>gG-V[ Ia„^>XIq~IMHհPG !=WxQ pG}4]qj!PaN fG3| HC>K q[`!=(m{ &޵kg51"ÛYhN eѵE |;&Xr$ lB S!7ybQvBDJC)|)*[8TRStR7"t&P[("}u'Vҹ20+o+=oW̜u2@fr~*hUU2@ 5!FO9w.MHY5O4&F 3!\Blzfb/e pi8Q8@?0a?.J0  ave32z#!Ýð]oEc¦΂&=ڼmAM/[-IoA3E%~`gL3BPW˄ 4g0ȝq(XC_0"t+-$=84H%|!mDRa!3ezqA[T8L8 |jm*tDL/ńc9a&jB Z֤9&c@;!ƅDb˿)'RF%&| ]P:oe:ZTWd&Ȑ(E& mM茨OQ|6'Ӊ&EЂu04!PX~JɆ;9s-D} Y~!6qm\8뿙]6n6T;$M!3qeȗ߼yTY3~es SB.t6cߥʄB9雉3 piޤ':064&4H:T 0XMiawhBsx$MƻӉKFLZ.d8\6^c:qMhBCO 1ӎz A85RZƣ !UfeM>#l?H1NL@]C*N@I ;W1c74n0w*.72[ /|8zbbBڌЄR:rB !e]~S[Hy | IPVh^a(R؋A)߃Wa/ 5IWoOM ĮV Mjuҩ仇c[)yeizfhxx6ڄ]8c9l `XϧeL$Mv(bB wDL(*A7eH| ϛdF_!F>$نm 1xܿ԰͢Bpc/3C}+"2l tѵ@4.czO.M1uG yЄ^xB0D= 1'`C77ֱ "Ln*bp9+%4_ggsЏH/Mj3k2@| DxDLx~lW|rCa7: 39BXi `Q1+%Y4כ>I(a/F0s҄~bH)Dvl=H'/Ls lHi\wD#rHZm~n,ܒ{Ř >څMhbb#"։"}LHXBAN'JTP\Aʱ7!&B9pKMuuD YQ4a29S8`8a]H!t: ՜@awlǏǩss@)89D5HLjHCBR%5&\pL隱L VX0.'DFIAS8У>rpi„"AЙ0wCτwD!`ބ ?3A v])R8YhV EP 5D|2û=R@m黮e5 a`< +D88A(D[ptǹ>!gi H 93|G,0F+# 9/nr&LZKz'LH:ӭ}=Pp٥ -*.8trpJCN6wXs҄tSb%{`O„3`$cmBvaVr==YPX48AEC(М`=ቘ 8j31$mЀ2>ICj;ZHsdCI>Gb ILJ<ULct3!)&589] G pUHJ- W'M>˖=·Xއc/Ą7't;ߣx9w ke7Ql"{ ׬ 5M!ŒceJᲧ +eB+BDOwwd`Tw*g2q8t_6!RT`8><ѕql]:;uuIu >^}rv`k2ĄfV9 9Q ֜ȾsɤA!ԩ^wat)曅+TJg7;dQiEl s ɉ*6[^6IpbM /epٲ!!db@`<߹Z4OC>징4= {">3î C]TUh9DQXМ+OƄuRH6<RQPc<` kB8>".$=]y ҃8Eѭsw o["}΃C3giv r{a!(o6,RZ5oV6$C fd]/\#S߀[D~zH Ѱ&!ѱ,>ևr*Ο0cExIP1|pID qڼ-ధWd듨zօ6*2)f'L{TH=I]X!"鹧I#hb`ZUMTR8NsR B x|x B[! ),=a8X(`P0OmԐMG {}>%G:DHH A)W!ڄH"_N+ ׃ WhÇepN3sqRh/fCTn3Ȑ2 )(!aUT^9\H*酁 ΁ DZL@lBAus"Ïr䞛DFECPdJNx HJ:1 k.SMf?>@I kaes/0+<ǁUp'?bAt.Vk iSDFBRt!cBJ64!FJRH Z+B I>f U"AeyCTP1|"}99dy 4j mC@7l悝ayDpH%,m2'wTEEF!,©PQa@2Qx'Fcj |bwTp>a~}{ B JIҫM3 VqbH6"b!Ќmd^3'BIE#Z&ΥBNi,A40I47K y,2 Cb?4@  C Jt! K A&q "B ?@.y#φA(AB7 EOםVd'1AAp;xQb!X9r;8weXUV 9&-˙BeBI 7{!i`563]< W[ _#!1b5|ۄK=QA '(bhˤ.ODc¾nITn`BR8QeኺNP}{©Ͻt eVX3΄8o&&ry Bo+wR^v2~9`N=DТXXocdӐA £UX)^zNjK@UR46z jS`EzA_B6-Ѩ" NU4"ooToR&0OIE)π158Bt"@ œ6 cukP!%+*%RO+d*\NX3DC D,*ف&iǣ6_4!)@H.UTP*3L{v0/8k]_2D.2ҭp@\ .orjX&1i @*2^P5ab= CҳpJ&IyBTCxس0ޱ%HLLB3zH&TřnN1)ώ :$OԺL6D*L+/ ߄@^輐|Q'gAg 0F=XyNxyb1(R2ЌD`xLө$"Qk>;Ndհ>t 4) ql :C:,ʷYp'Btm S \е3чn3l~. ([K<_C @`2$N$9v Jm Hkۆx31oV ф @-z WX+kolUx9UhBEN; SyGarH 6=DX xg-E $X/hTHڠêeƤnL\ah@4 a\wtׯpsjkby03±)K!D  bhdZRä 'H} خ00TJ9"`كb;D pahx_34՚i z՘CGkPx@ӝPgڭc{1H=(,SE@^-VE+>ʜ RB Fϳ }˘ % 蹓(C֓(Bp! >\#t Z9F^f HքXWEuEu kOWy 2*ϳ C@z'Z2 "< AnIU!g #*9HbUCBZERaۗ[(k!kȚbtuni|^-BnL|+E]r޸(2t ްhB 5)-/r ۧ|&1d*T6l6}w*"AšАHku?T`m„ |ސw^4]0  K>Qi}A>㻰 W AI {"`xܹp/UIüp]^„[VI+θe3&28{]ܴ`~kk2׮\C̳<@-ڠ.>&W'ڐT > Cj ͣg(00˖|6$tʃ<-YWk]Bd֚y?"PܟXK3.zzq!xNr)$PLj3Ap#Lq{zd* z"$]j a۾L.KHZ.t2Tkk*e/Vf!0XFtM EȄ>+@YZ.%ûMB>f>҈{: tƵ*Na{;j;d8:N"Р XYa-IB4Xkg'VaӁAT`DJ:OBMIgB8S `x;`n̞8G][_(2,6lBT-eeҧ(fyLߥ8I$kT$% @"B s pazeQF]v _Wtb!>Jno7QI {8+T6N6 М'"6O_E<B%A>օ=֞04!P#xMx2e.)D0,HCsDBRBz2'hW   PŴxƅAb&Dh gϤgDl83pٲ:@0x+C**K!)8M ]'ߏa: @3hЮ0l԰nMdFg @t%Wb"hd DŁ΄^Fx3e91^IhhDBIWA"s/di[wh3C1H64UayLhtBo֋H*zu1&2\`bǺ519;8v@-%8>8օVט>FJ4uބ~8؆`/Ť!HK AG 8mTKV8Z ^Z[T%"ŅxX 2h"ZB GO4H9c ;s p0D(Phzp#BNB ֛ht UٙP)f)) i)nUiBUY~a…%-\0i㧔j24z%40&P6Tt}A4ΆATU8EB e"D7: =BėaETZHZN Z_Ϸ)`Hc}"@ r(z sAf^0R9sb/-!h{!P0ta[OSC6*mt7UMbtZTa-gBs m0<)3DPB G q@ăH +@Rq Д 31VI^X\Ɖa6*2)HS]^!GH g5}1s5gBRk$^a6d @I7(&B0!"D{=r@Dum&Np >T } YeQC;@N ATi|˗uDJ/1}0p(BAWi箽a;ƣ[v0E Z(>i 7#!iA]%LFT8dO;&p dnܽgA3w#8 |giXq;64B( IarF* WǕ3X ]+|Rs}m^ .BABj&իWHWT5DU: 6*N!兽!(>Zs?)=D!(yE4F,Ð|yGy\F0x#- ~Іp9*hU+ "iUC3F&o3ۂ3tMf=5+׻+V! W+//?OWq)APz+4̠`TÛ" ʅDƆA6o dv_;Uˢ4O׺0 !ĤևWlF8+{$𦦰0䜐l _'!ܨheTq f;lf%3ep"ц6e2&l 2x!jpX`BaLPauA!c7N=HWA2)&EXE6aV!blU0"| {ikt^ȋHKgVg3a45i RW*} n0̹7= @*v]%>c1 :|9P" H*l69ڐ64!e8j;[y?t bO,A߅ʄRi (< b4)!8h@!F |2H˝ i^Aм&1i=u,zGpg0.~J3FżE^6GMϴ{_ھHp|Z?᨟ 4ëW!ƤW:u{ IoZZJO}Al"6hXY чmH"HmxږÖ:v ц-!4re|j8N'/Xf|X'18uX)EZΈ cSR}JDGa 1\;Ӡ 4g Mȕҧ^+O?i BCO  ըR3C8 ͼtxΛo*ZYvHEE6#vƐ`iQ><GO? (x ۉ'lVυb]-@68%vrBV`(¹Qlqk&݃Ak!gh)gf4{n Q%RGssvJդ3+ /,<hSpNeWH~ꡈbX `MaUߋto [iߋp< Tv#٧xUz0 CPsD@J.ؐ I5x:d>a J)& E+B q CIk[&<0#d3Vsne2D_3 h#H" ѱ[O8"JU"ww{"5B\mbuLX2)v لE(4%5vkv )HP7LbOU!^c?!^?sAǡK]t!jD2Vq'}%/p`+pP D|b-p@9ֺ"ѫ3Da;  B!E*#qdDQ&@#QCÀԚPx+ԼF} 0(PQ Ra]HY5•S}L'$'0$Ќ<]h1&Gw͸T.!Pf"}D& bnVaذ]ZFm&mi'l?-J|n/ [Clsu8[%&%ZʂB>;PwA W=;D$K5(U{eRqL!x>)2Շ;=ke!;A"V"i1LҥMkH"]|QL\[sWr/*L8^0|E9BDG A qFCdjrCM3 7Mfa|N O03l["Pa;bA<ܒ4w<ۺ?=0[4 `f$) W)!ŢƄȜ3HƟ$'tڈԞCIT=ֆ$C["İ1X gTB#-JS!w ר-g!ݧ,˯Z )FɄ0JUQF>OIBbJb1B oG@OĢ$`;u ۤ:Cx@ I];\6[٣E5VVfF!8Nqh^GB@:|rW>bcP C Ʉr(f/_XHz?"E\)iaqqY[}Vgw*{T+ v_[-EU 4 O (L^?cj4w޽){h߃ 2ͣi <$-lیрmdB-<0,500r؂GGεRT~0< l`1HrE春$8BP Gs, :Kwڊ5!F,EHBia]ftTIud 7s \R]\~vBM9ͯм^!COUҠ1|Ȑ*MTW]Qdx"7 oޔ aL 'gBˠuģք mք-#0cSۂ*s bTD2V2sVB]4A(r8G@ڔG*$2odHڰT^jX_& yGayJ8&ؖXX5,xHEQalޥz dBFP'C4*! -61\&G:[ی m%19~xU&DyZa*K1tҟS2 DfOx!("nND\8ꃘuz!ل_nքئlxٻ8XEv  ]{ӞӥC D?U+D+CP*4 ~aƅ~>̞#0&u(b,7⇤X1F ezQ p7h+B9 Em-h"[ZİmVVa3H ׵ G:̹ TIưyH|݇顙ZЌza8BМ1/,R+OQ^\67߄) ܘr0('ļs/BBTe> ?~~@Un\HI-<= t^H&pt:0Dش0D)=,1)abOw-GN#i m݇8D$ H4A0D X?zmAbRb؁Bo2Qw{ks'IT!ۥ:S]ZجҲ3l)s{;?Y fdYմ_EA<` :Lp&$ 1%3=ɡK&Ġqh1Ц(4' sOD!$B:<h^9BQ &DD F&;sMo}mB#+ ;MV!I F[{+DJ6EA0,k.Tq4qEu;:y{}/CgACEl3JlL@\ !#!AAtD(Ja8AC׾gZ=RAFmpjdJ4-8ڄHg5!rF ` [ق `k GA`Nx<~"=Ci|txuFX15$jbDJ!hц^ЭƵ3.l֗EMߤпOLlW5^pсEEAmqW=ʊe/ />: bi28?"0aF 93nC1]?#v:)dD | v|~dB S8[ZgЩ }_ MR pHj/™(gi>5PGTr1Ɓ -=wJyoQoߠú!M7DĤbCZʄt j 6P;ҥ mBV,"D! E _e YcRe9@4&$4CDCD BTjë^GwmhjŤ7BI!U. =>‰Xlid(</|E<ыv+70bY jBB3={6Q P/*|~@mg6R(RLJ"o`tjRܭ#݌!i$3D 1!@h]Lm72 Uh]Nx5Cv- 1!($L&](Uhy3˖˄VA ç$h]Gǡ+@XǫHRC퇿_,׃ |Ҋ"Dd*xAH` <>ІuMgɄ‹x _hk߅q>dBQa}; =!r _oX D!e;wA!*PBp;1؀+I/7}…pjg]^*|1HUH%P.&/^~T,ABO s4Ꮾwh8p%6AHeZfQL!M&hlh#q<]d]Tʿby%,ï C=mA Fu^ ĢxдiF d0~7CJߔ4,vmZskNZ!HE]†/+5$ c r&/~@i`,TfG?wBσ>iMå󸘐OXTO~c^IƮ ׫|lx;kafl#]Dk0:(B4G ذ5E<,~zv_Uz%.E -!g-Bsf@zB)u>; sׅ>31 }d@øA@DUNdQT(A5Wqu_bvlC-ۿ'yǿa'%HɄ0%5\e!9Jqkk^Fh??D>?*#M!O ؖhx{M=Eцp1ÐgNmgD C3 ug>JDڊ ~MOȑV IqqhLB( (M2:MG~u<(1GCIɆv Wg /TH9/_O@h`b@MĨ!QEFEbYh/-Я<U=o~Z'Т ͏&?e\M(1)wQFxX-t!dËgsDųSg /^Ik "7bmJ׉AB! al# IDAT"5joc#El& ?LPT*4orTR=o( Đe%\]]XNB,jw( Ao?R/KHjX كbXN[f>FK G)E=xa^OE4"*U!Jf_B_?-!aA׃2E X."^ xN B&9$05ڀ{x"">A< ߗ 6m 2쁨~?F!|/]L&&0aCkmPb+ob 9`AİceH_5/Qt,\b %,~AG N$Wǫײ5u I YRL#,_cHט~E qBL ]3d‹T/=Hn>B |$‹(BE-"_|l(=6=z Y@9 5 u ħNS7߀c[IwKt ZRpa}v}{e5)H0!~Td3?E-Z?^~,˩_,B3,D@PPMbSWe"R~ NQ?..a.f ~ >$tR|ܐH.41Y^o9s HL ĜHg448*J ;Zu*6PqjU!vT|QLA-)_44egٚ/kZ׺]/RZ2耳 Td:faG2/XxqF th&& A[)Q{ !IMPZZjRB/J:V!Ť8#P bx*kD ;G/tגzҟ@*cB{ E[D <0>fqM(0FAvv6+CM-!XkTw}5Í~l*mkFhK!%l(u<:@ia?chRFhGG@5;ЂFAb5>[4 0\M CI0"ՋI镤si+C#*HzN-jҥ RY3g [R -~4:!|*2׭>G >',~\Sb pj)+FEHa)h fas32\5 2Jd}vLBkɄHv6! T&2Pu'!"CI >z _)t.Cf} _19YDGQAAP384?4ͣԕ`\nŤO@A\+2 j\oQ}ŃSwb x&K#CإTCVXQS z32F@']a1a'1S/1kkZWK\O1Ѩ6gpA,BL )#T1DO^;9o.zeZҢR /w+BqBI_Ѩ` Y} !1!~Vhzь^1}-p:2@E# E!iToMQlTDv4v6j᢬_MՋoojJ5bI#}0Y8h * AT!#H@ 5vCrY$A!qN0"iTAUrL*TxFkDiHRuЧ^? 0816dED*(mwWHg\ a*)l5jA>PI~:EB<:?*@]m Ha i`/b )/U(jJ Z?j~h"~ qpVh2.zBDܡÛw۸qWZ[!^K$Ͼ,!UX/\ th|uhI8rr?`P[0S3O@p!axR:`P PLAniQ~B~Ġ]cP&|(du"e~`F B6!!ʃ`o'!ҝ'"w@j%?攁 |IFQ2@gwK!h#RRqF{7S+_P RKIiM EEgq9o 5DP KLa^ Ƥ@(Q. ~TA ~ .|}unJ&tCB߂ a/q1zqE)BJAta'ޅ U@;@*dVk/765Q@h`ˬ` 8qoszD{4j@DPPSOѼ7-zh|AR6ưT%B"ime[AQi@L9Cb. C[j Nn8jc2A9 />^@*| u|hI(!%6]ToЅ[k+4*ՋBD  QLa3x F]_#wo\)&T3H_@1 8ЈIg;ІjjhtƵ6 QD6aL1!Rf/I w+ Ƴvrᇹ ǯ"Ia^|b4*t0튧P0Y1&l٣$ c# ~ŬB Ga+h. 'ڄ: U2Dipz ^`D jԍmo k6B% ۑL7.CC  U0ZajnkџԊ=j_4vajɑmEnz))Kp(*yN1i:&tEHCUQ_K#BrYcHG %GVTG83 ] 5/*nx{F ^bo#`AV!]`3D Vf3 id01{%6aoBo2vc]7;I!m`BͬS*hЪT?:|DCRLgM^79di4N!yy | p M &lqhȆ$CPߐV>YlG2CVa -CMCXhk30*${qi-N͠!%'1YT߼ E}ԊUj(>jTjǣ=fַCٰצ ѵ= 7W}X(^PCRZRV  eʹ^ƳD )H8"8W4SNVL <L@`U?(#.X 5t&Yp,p Qyl3ʄ?r ;`QcBpE\~}`8N밷qp&nt{?ل0k{spVLi6)!M~:!cA!b@@wظc- }kx4jUNP6vJ4:#Qd1E3X70. !P==#.go2(1/ G=jƒ (Kp}-h8T~:ҧu]G_|lLLJ\TtR!f(Өߛq&f6! h<ͪq&jBuSX)cQv!^&jDiE %Кp͚ W,%!(όOLHpZNYGySo>TZyʘTa= pebQD `$ EbR@pHuF|_>~b;4NQ4:j(Z|}\"фr"ލi6W( g,~3 !D6ËWo&Fy:l3߫ 4fY H18Lׁ 0@ c'!&&1՜VW/e%v{Tօ܅8;g+u> BHQy *2A( C:eJ31ER@Ĥ)AON:`<b{tP c!Єiw0!]]S\%]MC q lDg ^A-k#<9y\dtr%1kTԛxOׄƃ 3`A PԇĆVBTxH|%ѣg_sWAWp<70{AnQ=2B6\^¼ ?Cҟ9Me24@T}#~!C  4 уDTbݑLXMpclL2ˤ(j ZW%'Gy)-ZoF=\ 2n<L ίBQRa#5҈ i;ӅC+~nx=̳ kЄR~؇ѝbcwj* '@_W?L^~,9ȐcRYI={:vàpI C%\]" U8=5Jr+B )4Uz$d3,ƙ$ 8C.V|@1-B_+WuQUhІFSB,ʰ[,n3C|eR^f΂RrN[9a m?^փ 6!! x*Vz[(`2he hE7Ћ܁ \k"R'Mz 𾤒T_꣞ :i2c8Q (bk@D5G CR0y1LbB)X`0 ?Y0=DY]WE꺢.5v%N g_n84*$wRa1eQ "S(ZLDEE!1 X_?T]1!Z7  _Zt) ]y(5+1*,ք{ *Ѓ}>0H"j)=~|_? &Tᨍ:A£SDXpQ 249a dTZ0/daB7#&=@ LwE1T ڰdB 5O"ɐh4: H MpM ]ָ"9Դ)]$\15iG^ʅiJ]O3WjBp\0n!5)h>mIu;(;45R'uD' BxPp*VJ FwS f–EIj(&ԜapaDv!iabVX`uh1HF}zL04|Wb8$~QJ *u81::*]]SIdjΩ %5f*ҙU!"& azSOךpfe9 ?H-(#Ha*%J?(1u\`ۅkk`I˱Q A]p E@!7A,j7&J 4?BS@7rLk1nr4jDh8&D ]xq5uP)ygN |M%lB7XS\iLOuj V2V :>]S^@{+zlNRN 7gqD': *5҄gI|BlϮ ;2݈ߟw{)pcAN ;Ic816TB,.T2!]D'Ф?-pF {'x)!.kYۥP T*$ve k0)̈́S\iBSIgof{EUعGI bpG BJ}^Ns㪄O{O)Rᱼ|'!7)D4tEk߃?pnE$? Wvta_!8htQ5ndx8/¼yk L\LZ@PژgŒeOiz?XmAA֡pQ&<+D^F<ޏؕDBp<yD&]xyNa&ކ|3dCF{&hlof :bC }sDӯ Tº)F<뎂4!䄫Hoey؄TFNƆ}76ҶWrB 0Z2 B}>#?= Ka[.#K@:"~.vd@G,+Adp΂G "'2>\#%RBX0Bk|aEnUHJ}zFC/Yy+v+KH!/gԸ儞9ʣ8f'fh:QIX҆pSFWN2~bdؘ[y]6U~1X3cTRb1FJ3"'tSBu0u BhPHTpϝCἼ Ge}t^oD߄Ƃ"(&Udv]'ADS+|CYP_B*#Hg #a ($M9KV9"$Ioe HBɡn3}vL˴P#-nR8}{* V5 8 >*]Pcxv͋KJ5&";İU87!GTF0My@(0Q@tD Po "5|Ĥѯ95D.o?IшA(1P_\GJt$&0sSMג ,tG#ĵtlX+ct ;.܀QF7UL8)W{Z1Ԃ8 MDȋF}-`7flheJFnN$90l9hȆL"5 = لKaK^.b}D 0#34?XҲ.(7oV|XYw~M8Us8dyOX{8k4=bu0W niupnN٤pG=!!OK3pD2 t0R¥U(̈ #Ebp4*{T!%+CH SJ*0p(<E,Ĺ0 C>c;&C-tFH E~A!G?řuZ9B@h91,/pTXg `"5LO Lk֖o.jGXcxjZƄӣvC|P誸χ*Zq . IDAT /XSTG6jʬ?TODnDTV0 !5(2 f4Zl*]8hX–_$ 3Ϊ5PHb{Eh Z}cJJ-F7?&FЖʣ OO+1i\6&1WcjT<-T(n] rBF pXn^E?B b6 \i@@pTꆒ !gCP!XY}z^P# ~yrWSSaqi~K!J hT/`t/UC*Ȏ2~Rxm)hB O3#fR~N@fMbe& a(Ҭ ӑRnF?Id኎U8I*&ƄB.T᎝ qAcIoL*tڄ, Xn$P8ΉAX0nn Aa5HѨ?ĐI C%金=MbS|(y!Ç/S(;-VhEhj{?{ {`+&-MMܣps(!;(L〓=ׄviHL&5CWnO@ QDp<0 lA% T6)\ Ϯ]¹@2ԹƀtvaaWw×UNML ǡ4MX)'zIaFt8ؐv4!&":P !W$>z : 4kHᨢrqs,'H'0-L(` n@WtI{aS*3l<(0 ٓBDŽ b4rٶssg\Q䌘*4Yn?~ 58$MN HiM S:wL<\XPDJKfB۰nXDsBY:etPO2x=}xQ(rQpǒ`i!0B2_+cQ«|]L.mMX㦄rlQ%~{G5vSA0 @_Xx֟e>C`8"kAuRo))*LOSB)đgt]f9ܾ eK3~^26U*u@`(B{ƄX o~6!`o ! s4Ƥ> "1lts#WEMHl?@H;ڒn$w\[Z pڵڄ$Z҄m]#7ߺukǸFoc0tD"O,ZCESqx4/ڐ4 #KCƘ0b4zy?p~'Ga T,fQ$8fX4&T(0iiV_LdeyJL=iVVd ܖt@e8ISIvE꣌ᦨ ;6|ujruThQ sQai$)r"8>99)U/S"ܽFGڀ]h  RcdUB7D2۷oS@X;e=MVQu `QB]3!>#gߝ\*o}MMc%}K-\zTG iyLa^l4gBSͦBt JmH (-`04pp  '0';";c6'L]*&,Z1^g'1X|ф kƪ"hw3&B± Mk Mhʏ DF/̩ t10S[w's,D ґh-BbiiήPlhyQn_GES$|/x^ p- 8Ys$C*.R/_N'ZQ&DDR袷.zzɥ+ Q*_[앱[*vlnF2kɡm?P޷rf@<%.V#Uń~Y=jc#@lGңK I-ʠԯB^0z͜>04Őmo`)ἂHNhL&܇&0H*|Pކt<* Q&9[󿵳B&qlBg M4Ԕł'%j @` &$$* w '"VmfS9H:*,¨ Z~N?zb|<Dq%]zƣAd13c4qoCs [(ŜP.P>"!ht1)bȇ"7XdO˓C !T*;@ث0U۴2;yUuzPNN"kQ'B8S_Gل<ۦ>:'=P8j$Eu좙6sرcZqt;?(q4!및MH] a6'~gs)9=fQ|h@Z2յ#d4z@P({ GljꀴEP1Ťͅw_ J1!["e3 j&٬WSm&=9iLEĄnSub1ل{t&&  iMmhT'EW Ks$[i:Z {ݥϵ+5ύM9y<`x2BV!X#%ЛWB`H #hbOO H rL:,W2!'r ?QRHRGtāF(RH$xR>6b@f&5 E 6+{V$w>67UQSS_02ѿքe~lQbM ?`1lpMQpPnzm5\V8QR(B4ذGdLb|/$߬MHz&Px( ^d#RS mǤ j~]8n,j- .ӗل~EeM(Q)^hqsGZ[ctu ~2&nn2QmpRB6Tg?a%%GiS(O]mh0hwC7t*1'D"xBI)!QHV7)r |$2 .*t/ x4.&tX, }h"Q/QA-m}b-*&G *\bNmPu$4C/X02I7EhJ"kR+>ek*%6!a8¸G8 { ɓ'_~ GKGϬpi`6@R <~8rx1e-݊KS:\8[ q~}b}tj #6 -6'{ D0|/ʼ=RƐjU(,} ǘM ل 馂p 4a [|1蘩-\-,naLh &}L 6$`$:UX*3g`Ū $¯Є A(͜>NM儈"7:~c m00^qJ4bLa4'̋!0?yњE g=O(5E"ǡ.{B̨12}oo @D%+1%8r9e>cAMiy\da"]KVqK0Lx?Ǣ,BT&ѭg w9ő?ӌ3ZEIakЄ_s~=*\n83WɄP !2arI ]ߛZNa!>)j<_$<;e?? ap7!Q뷏։ BsCC'cHb 6zuR *W"j}T2cG1I!pfaH#VRM&lPNO8re@L Eif<f\:.u5P6 UR:q1+NP- "Hm&/&ϡ4%&$[LNx$hB47""u# og2!Vg؄Ŷ 척$W^F /ǕX lj셣MKN+*24 Ixۼ0>]X/\I]6yY!(r6-?,?g/\&<)aܨѨxSUnYVB&^wq(QH&{֭w;#h3I g1iqCbynhr0ڭ1!PLCw rYѨ AEk=rRؒ`Bᗺ@ .M4@`W&,W ɟS&4n#decu3#؇K $sZ< mJP߰X|^0UX+o-LV8eT-{wjʄ* =?y81&J\v<.\VE(_Қj)`c]ER~=Z|qh0.>l2RI:F"yaxw;H'P~BCgsBAC5"EqģYЭ o0!m5ҘD(E!u3ɹ565s+~hZ@c%+pƣr~~/PP1*ύHAa—ghNyǀA%j< wCb8~\+8s8itzܓ$_ʤ90hOc [lN]X-#B5|G& )-T㸉:)=G!]03Mnz+~WdBK? M0%>d"pGMyԏhrvˏDCc2tU Aip@0;.`&\PWf"KGOl5$BG^{̀ xT-"Dvx飓A*Gv=%sg:;qɌ§)c#ӌSpvB`Pp&τh6 UH"@z`zPѨK )ҕ w8Ѥ0`@BL a' LQHOD {Y_{9p;QwV<XN72a h/GJTu7)ܧ??PP m!_!)Ht#^jG GPT6ՑUKVBRa!1{މY=S]"UG9'\4aO[`Ck:篚ݼ 5AϜIڄws6a :F +;:_A/ <ǰ<34v'S\0ă6 :/[ 5fM!B|(?&$'_cPwU a Gu]YMHp0wzޛ2Lݗ05fƨ4)B /<_,-1= aqpqGFbU SBt2o-L#Ž㙐 #)O϶ '4<8W҄E4e04R$U& }uGQɝQ!VbjԋGRNm=pecN' =+WJׅa,olbǣn0&&Esi򿒪2b?uu4-cW[zHa8o1e"9aRcέIqMn-j (P#^<ПZj(fI2`VGEV-IØ&> IDAT$hKaHޓ*L6G rafk=#H5 GT1k:O 6ΩR=J Ma&M^}ʯ xr `t9Y0&'|q0ŸMXÝ71#\:&kGmutک 2#|0>noo!Q.f:i -'|j^8bu* B)42 ASYaP!cцU۲_<qM`Pϒ)j-YLx˾Vjb,"J _rrŸG)&tz : Pr'E{0E0nVۙ !{B%уoBpt0Y5!R؞y !Кpa * 8qe|/eBa'0deRt:sV_օO-!K_1@&BQ4謰U0+lRcB')T.,5A|ym%dB@,e,o0uei؜L/9{IReQ"(҂$ lm(p4@77ސ$)Qeb8N( 3alվ&y`6-Ya e:~?zQ0vaSŢ)4nbbw(.Ӄ AH>υ|HSX⨰z/7 v )L8L&vghPx$"g{²`R`(]m@m۲4UFX;*E3GtRkљ$\j'^1Xm8*9!9x' Ԡk̮t>7Ï-Y!c ]5[`jɄJI[%[7*nzpM?wk&&C ysX$p|QXN ݣhrMh֋Pt(v u 25r '8.av'Q&.^\& ]=4&ZU#p m8JM0bPWf^h.lMG;,&\`8WhL)\] ͻfd]wo.?X>EC& yG_k^!qY0 "J3CaʄP x)dL؆?yC s3[HZxbGrȌ-N[NBў0V}49Q'|{bQsţ~81Lś ӡ:)ac4 mI? 5Ѯ=`X'2ء[F\JSx BǬ5I!e5S@)<[| KLr$8nVsb(8Ͻ>!'ᘙ z׹zM#G OTxTRdq\p˟ʼ:iYL@0ad/uK364|Cg\B<:mLұKͻp%uPl`]"?nJ:噉A5S1(; مMNbdjُ3(xaP0 5YlmUS%3=m=օB`:\a~H r(/{GK(Lݺ U71vGjǏ_ΘL;Nw2:TybE%0C; e0{4,6q$A ߴ(Gnf?>}x»WČӣTf>DaU;Ӣ_Jܼzću3î18xGXFqe;} FDPm8gU=xeWČ9ؔUoo|}ie1MAzݤx4RuƩxf5:ƧRç4#ߎ9&Q[UXMMzm}mbqt@pPƣ/","i C*ztI@JDZ$&l0h]xj5G݉T-ǤU""|-H(S,ziWq2i _L`g w5'(dƜkH],#SBR$F6%7o Н{?v(:Džvrz) DHŽ`ga&er`(dVk[.G քtm*3;z .,Bd@hi }%ڕ!U^Xs t< "1 nDͣBh " d9 RwρA''tG!F}BmRLS}Ԅo@C׻q*Y!r8Цʃ;A"㱉HWz(iG;ԕFMLhMm@u-^#2T`Bhێ5څ)~gB(*f:6LԉAL gֆs_5[<.0},|9FKC +B6!H0bB/rD\>Z7j =g+ׄ 7Gp]1c1t0az0ބCG"wnF3CA8rG& U~^!"ŨTh,D/m kkEwM )iqڅn\5h ))T6L -r 愵632imԄA"eLJ(̽HV:]A" _a)8 .us!aRi,2G}E.^}̩b}JBcELAiMbCxW!zi[M "n4.);-Z[eb+&&-˓eƒ~h§1q()3X};+ yUl}65ѨkBE߻hBCRH7 "C@FM 5eY23KfP"raa 5n@s;38*ѤwDhA)v!,@' TaϮ92!*5c>\rP5a0+iO߳2l"!„e95qk˜53&E!2%w 0-PA8ƣnyƄ҄xy2|RY#uH:䨰41i䰑#]/KͥK3愵Ζ O%n3QhT!%3[bczH{ShTᚐKջ\ۄ #RҴZE.zalQ)W:'DsRD"T&RQYTY_!:h:|R GܬL,u;H3?7?ȮqGŮ^7D Zpt>GЈbxõCGA#ER_^>i‹r-F).ճ6%=lׄQ!$U4 6 &L)[ (H6Hͪ2C*Ɉ-.m ԉLX >a\8۳f,`4:& #R*H:fn/"]UR]mź h4~" `Eaڅ5ƅ6!†Z &ԫGfS*3ppQ>EXƣyj-%3f٨ Ē߈i:ֆyNuTGwN˼e =?>>zkM(̼*@RH&і{̸iiGʤ @?(>N )C\b(UǠgU9R2a *jx[JJ6a]F1 G e2^K3+IPzŨ MS]?qdjF" kLqTV"DTuWށֽ2 HM G =RMX@h6 ݂@tM`NPɰAX;) RT -5IQDBۣq?YxI:O# F[XԮW+(Ks0}oFwv)؄6)*ln]hҀ 0vFEc̲io3Z6CD:<`ѽpUck 8M:uzaYpZ @(T5niTKPbxp1:bp؊a9y(-ܰ6RmF8U#PJ;)dml2{evϬOMdž9|Db]#҇ѥ3ChB^.h8lЬypGj EjUhkjjlP _ e$B4a?[хq= .nBySChW=z X Yޔڌn2R8Z5/ 3'\ʵV,WD*&&mL8]2LS"=ŘF,acăPfI!/W%v/H(vkW m1B d"cdMC y* RR[FC! KaI&4 v6tX@Ba>yFDnL!x&܊9^G"Rc.* =ltCVB<JŤSzh:s9!\00T"b !UHnagSbpɅOM5"BN'! ~m5ڄv2:%+L(­ Wat + Oމn}0tzX>Hbj͡ Gjtk Q}6ˡׅ܉!y~$~Qh5{@`Ǡk#6) \sM /Ҍ(P-Hc8ۂ`LMcfMAQn""Otk3lC!@4*D:XU+i*)H*9 l)@C֭ B^8#1l" Ƅ% ƒHSDS^t thv՛Mm a0A)sQ"5&6Bl2a\VH Z&lÓKD!/ v p8IONNee2}Mlp*"A;هnj&(>_d@|=e^Qx⃱\t$hUG5CHk y8yQ(*BElBD8D"PgXGqld#a$k&1&R͠!R"nuBS *RCg hAlRQ@!# ܉Egw MT0&깐L =/`ղ4c[ !ж(:=n&lB?a܉2"E?0i0_DŽg3*G|]f^6&|9tmucCnS}0b=@LÛ GD!aSr8ot|@^MީOΉ܍8֭[UUnHf2#p`MSm1ؤ)91vP5L"W㈰w׻W pG: (hO~RPyPRb QSš0w"%NuH/^sj6h@ZFTYJ&dbXR8z؊0#B/+|{ KݑB "yI|w,څZl¡TyK S#PGA]_x5_tU1 HCGs@l3A mPU۞CjM8M\Ę G. F“HTj|ƖG*C>sI ;G劙7lU& uu&!؎ΚÛġ<> U~-am‹zc0x~ N!*kvPm暡ҭ ZfCQs/wo(IVY)«8.7<| v- .9?ޞ/s_B@jխZ"EWùqgע@ hMuQkB|Wp˜Pt*Ags&$0z;G7t]M"B-C$q_,|=|#$DI!!-SxMކgp_<ɸ<[ahl cAF?*%D!L`YB7ޭ~- q I)m@򽤡A 7xOJ".䓺͞ zs5U66 B H}ya7< Y?hM ҙJAaB:Da"1tlxRTf6}3'ӓڅhԄ{hyTv !kf^vOmԲ:cKCRJgEюG4م`CK!Ƞ!PQD4|bhиP%ڵ>=:lf=H&T hZrU`>PFvؠ<Řmm?SiAuoLIIm>xAg.:M( / U:&\d6TpH4> =*ݓyE F牆}_NrV !* GyI _~/:* ⸤KDa;b|>|/E! J>|d9—M U;)&U ^m\DO-l Ť&EVX6bhP;V!6k0T;{1hȅ6*TghH"Q CN A"ڰ$X#uH,rBjx &PRڀ*!1}B6!W!ݭM0>2ꓸ{dJj'Y ҄" %?rh&vZ`eܮ @^K0 1AД9BspaH‡OPu#Z&/ Uf _FPĥ@^xe &H&0Rd#R<|]HA0%wb=j-\=K ÞH ؋nL e8N ]7LX)yܢCh,-әad/]٤P c6G1ܡD RPh%%7YD73.x[DŽ^ S. #Rz߄4_ŋ<{.FȃęЊ^Ku T Tso#jx)1/aќ.qw S~;LHJ1)Ƣl<r`s͉!\NvLX)MHWѣ8O%=[2Uyģ-| m8*UhіH}tجo&'"VƊ>{i֥pV G ۷vyb.3Cܦp[D!)G<)OEDj{ށk^DMD0vdM؆-CáN0X p## B4HcaTvx !ExUǤPF 3 G2 ]a77VGMN?`H хxLOb zҶ OI06x2 Hc ї_,_3)ޒiD~PG K~7>czply[1-!1B#(tV45Uk: ~a(T^k" =R?&7.4!iM Oyu'r~Q Bǃg`8Uz…dCϚ ansVxnpe1ݼLVGƊd0J'=`|%ωE˰4UxҞqI Hp#Uh N[ѝbf/GJ30.  i Bu]9A\BRwpI }!Q$ CB*> {z~Bp$>+4$T ч|$a 5{e6)BuOhS:%vZzPFBPY͙!ƣ DŽsKM%«; B _`WΝk.[8 G$R04ŐZ`)T̳ϖ9">)XˢGZ`M $iN;*|K.]L*|TX! HH5@C7B"opM ?K`? =ɉmDj9T6쌩ʖ}SOc车xtS`w8uAH Vg6TH9/$qل5܉!՘VSԣD3Xʦ)T&| r^ruRa 8D]` Quu& Q7DMhrOF5`T>[捓ڄj\,xSFOx49mi׏LkbO" ewTVhx܃bq{!ݣ.5Kc Ŀk G/?Coߚ 1)OrK69-O5~kF.d@u}׌{h@71lzcC4a AK;w 8S R.= JcX&lyuA C)1b8h(mL'6 j@kfHyxښai!WM5+H G!;{CzFO!u0|K}J @: H@ޛa=CJC/]7o)  p[bRBuH 1)vzZ*\~jA46,:B|ڧʄPO,DraDꩰX EWë@`P11ܸQr,~!CRw >@LCSpT" 袤M}⭛a"xH+ g0#+KaLa+$e &,[RaPţF&)|fX(>Gȓʵ7L A{ $p Cia 7N=Z F9Z883d}Q!F_BXmIޅ1{a_{I%g2[UA'FMál@\9RUnPt4VӍzUŖp1 >&]*ocW0RBJl%M \^N&qxmwQH8&G\[!(͔dft~C޶zړ P0>=s߽M>ǽHP{CЄ~G J"?v4O% Z %CjwZ%B,OTm+%lJ\9M1!&lI}FPVCCf(~, N CNQj7$ F@ _^tDvObCj\**57/R8W()Cp%]~(! :'GC9&T~W8XI!og* ^N{9I`gɒ%eW*(vB>7/n1$jtVhL8LKw2U\8ÓHB Y A% =,mR.hӱ,Ғp (D*Z*BDj+QL8x&J1!k Cb4Rfp9T*.eK?/2ͫƓٻ-Mt81g ]d0|\!d BGGQ!_Gݽ> NvY uOLĩV08h ス}qΖ:!MGiHi!##;ʒ܌ 8\躯G] vKzMcxqZX:e)$ &"8LPڄ)ϲ+b8t!pbx$5axwo8,d1<('Iz}OpAD xƁ} vlGNxjc*+!d RXO1#\!3 ~IR8&ΒTX3e$! "a̦IYϢ QPIP%貸0ß@ 7E %(LcJMXI0!TGE(mH˄ dK)ؓFR |X8Bڬ^ {OH܇C8dJI0P&T+D 10<msi܇_:=QžhK,*s#Ùr3zɄ NCaD)bD 7 ]DC t$]&%D1܊c¬nNcRbf%cF]8GBvoT]WJ!’9TGLbFAq{C('px88 1Z&h!zRѡBq'Jra4@1Nvհ% =N;bN }hu2feL@b+ ?(){ QE5rtЊ_74*3z9%+7^~YP)cap+0B_\ik4kO,% df8A ~Cq.kTljlGѐ\ )Uս{zLcDܴ+.|BMrz !;1Tjxd)b0 ɑ/,1D!>]E " &F;?ZS$mTÜJE֍HæwD!7CQZ=NX Aqap4lI}t,hJ̮.O$,RB80kG_͐%MJ +tP'l 6 M` e衞0ѸF!׷E oU׸K'>w =9qNݫ TC}D & 15CDC#eR8TC5KEYDt:ExE@`SəRIX!);uġa8j)R)uR`nt4E!,d=Yc%d!.R%9VC;b)ȽaXR4J)Ҫ~H.ݵH _&Jp:W( Q T"CáHhCPy#z2ZK>ͻXoD+aw%PNW!C(aЧ;ea̕ 1!rOQd}L8?5%$,4n$bLJHtMp 7H k\l3~q$(k~q++>,6uL`fFjUB!( ReHCC4p:ᐳ4)a0၀hBì%} K8Lꌤg= pHjY  Nvќ)3İw! d]\ޜ!%S!K:K~4{{-XR`,J-a_\;1D%1` $fh]ya r9T*V7 #эOKkA  kz_V̰C<ĆtZ4~@`IT I K33!O>wvBڹQ(V8oQ®XQ`/|y3Ny:^jmY{ba4nKSC. ̌k3**ΏJh >IDATNa\hZko%/賣1 *PB=ş· WcL8a!i0 a0V Q Gf.UUz6K˷1Kꨐk)؞A:=Cqڢ*ӻF 1O",Zš0. Ta,1cAưsuBXG kz5T)N;h,iiZgBn0 R3!%{#)3^=^ sJXoD QB0z&tsT"/6}pPmkzlp `8swte@ H3}PRn6!?f˴Şi;4BQ;K Nj9L=iġRXH5YCV @ r0\X-8NxD. f!̅~EhZy%kS&"LQZ|MjN.(HVtc& cFWpyaL0}txػ3˶VR62ecF")6"M|(붧dS,w݋0jG=龡 VˤoL&{X wa!_#a9-š{{ |j=İ")A`3tm&CZ8l*)0B$IFs (ap)Y  Rxf(\&\}MU(OLJ; Ád=]UPYzZ(+;ےzl fr+CdfNC%p*^Ƒ;lo3Zx0%U~4:BRlHbǽ=C羻=gC^? =| e޴Ű iA0 4Y h%w`pG)$,O+!QB.i) ֏?]MDB1v]C&J8BVFޝFc=I’2̹7o槐0Α {F 0BQ/K2![>H  *'jU2ΕcrHOxw]ڑ 3{餋Y-t}mt1QT%B32%?Y d|T+Bm~ٗ]7֪AC:۔° /;G4?{36v?z5~4VBH6UQf5RGhI%- @{H" {Z¼z ۱“/raMy MdF BjJo VJ% ҘKtif+ŹؐnMdrЬ eW1Oa< aEPˆob)KC@a!(4U P Fu{3xdP D$:n` 19}0 L' }G$;S`Iy73u# 9JF3M? X0lɎX;9$3,sJMNz 9$Ke< Cw,8qvtJ0m~}].,&*"\2=>" I:gAMA asRGBPLTE352A3_F_`ES_^<]>:42\ZEE6Y8SGCWWKcTH9`|VUfa2D|ZLWߚDݔFI]|Wqu8MLGZV|kLP]LOfucxl/Bris5nڐIhma_bv[CyT@Z|SzaxVpKPL7j[L3zWB׋MO~HT߂LqVMyR6~Sln?||}YirJ:R=R^xT;FxM.}_6R\AKUS2QdeX\3tNrpY#<ՄQZw@a}MF^fD2gbciH91_ h,W^t/-!&6ʌIe#& x!1Q< H!$vΤ'&$[6"al7~fQÄg4%PFc)O`[e#_њ&o:V MlGzqx:c!Q<A%,s# tÖ1<؂+7EoEL&gJ5h1͛ <6]fO'c& Fݔ'n x?钵~|$,;'|5|>IO!m\enզaG:L:;%,e0"8c?1OO~!Hawn :|6P/vhGÖQ41E,WpN:#_O[=UWdd9B <yyZцuzKy@zL)"glfX~ɂQks$[t_I;2HBoD{dwFFaN͠7BYO+lLѣ@Fp3H7A CCOmaKOr0I)1(aA% g$GBU[X\{*Y8Vkz Gqg ]{m%k?:Lrl/Njr?USdV22MѸt2HdtSꏑApF8x' ,Q=DD7%vN %o•s?h? 5z?SpIx(e:G*nLr҆XMLgᘤ hGM@Od9yd#d!v?,>O38\J h' aJd}!zP08rL~@Wc4JDmL. 8}s.kۼͯ|30fN[E[M]2yToS!Ti#^_t%:f`?T-L]l{w aø5<ڈÖ7Zp 8,"^E0UzScqZ4-+1ur> H}x."& , wƂgԚթrgU]OwrIdTn 2ZG{cګ'Ώ4.h%AHTSAt?fBD7LRT`Bˍ2UOH%C[.ė>BgM㛬v Y<-f9l4ƙ'&cR3ۙ֓d\|{۰"r7iOJd@u~P#[pb1:}'ۏ0fZFV]JdDS/j2Ԏe퍠vN*{PGH̶P@+ʞ{@6Fc~3O^P"@I ]k+5B&6փcjN<<4:JlaWEj]%L:Kvi~-2 kUK4zEWt`"l;*Z6<-2  h 6v]r6Űe$PN~F`:龺۰2/) ~Y[eu2ň)s܀ʪ-n_jID?3IFEZ)PMD;*;Z*?s@u'Su?5` AGk&&Cpp-*9\1X[(UELpL儘uI HAݙM=x9ls4iў| 0'ŽXiitube1KV*:!(,VhǠs";xEr{{hnjVXJ&q}XTX{|QLm$``28 n&UWl] Zmt4 LZI3/Uq?agp*faSRcTEXǷ~W'O[Dt0E#}R8ޙ vƹ&0kvJX %.OD:"oX%Ӟ4 tNOT+Hb4o3i>V2YýTrŬI)!CӚ\aMz@ujj &l''[IS~4~IZ<{~R9w4Mx-j] _2D[Ġ*xTE%н"@sT2h7 qfb}GіwA0pXU%W:fn)WddKBY*ekWtp\Ku1y5QԍNR@xQn&duNQJFP"dx(#& TjA)p2ѕ2IJ %jC1Ì$*/,{ːM 55JhttFm`^eVL ъ+sLpit`Z[͖akҢ?} 3 UwR{I Xu\%nsl6h8\# i+'+poځi *@}s-3|aTBLY],&׸dꆾ*(!st KtK혙` `Q6 IPBfM E, euL}*̨kU8x/  iaՓ*OO1qO*ii dBk]ҡ@Od%{T+u?\W'̰\zR0QFwvI zJۮ- i5G 8\0>ϛNDq_[D!m.][I8wƭ 1T=Io@B]P= JޗmueL͡JyJls:ovڊh;<`glM mIo~SÄJ5 N"մ-:66N2u `!Ӟ@%YVWޔfڎB >M&ΒJ'OFU}F$XlPn6qQH¤ɵ.K\5JiEXm\.U%qFY:ˆz䏲n! y/4Ldm)`VLxD5 `l $!If:J"(eM|s~k''[1]gXJ3DdNGбkTJwhĠJtX8ZdP `5ٸ+o.60`t ڞټn,Pww?YՂHOVR1 2#љ2>L8Y+U[W?xYdh /ܝ+#4b-K`نp0L-P3DL S7CBs [!-X3&m5c,%\ ūsw?U\ 8.B jas+8P'k2\*#kCD6^"p?Y4=OV6jqcLǷ55 y2ATә 9ƨJ)yCQO!` !(R`JGSЪ$Rkh X.l"ZفMCa~Z:y-idVm8cm,MNڛSzO]HCWH\/{9k^Jct5nNYUh_0nMt[AAdP!; gһD30Ey_(_2 Sa5l;NjkH66BK&i:"iahэmp.k+$5[Yh W(4W&mS;."yV9WKB |RXU%u'I*U62Veq?5Tѕa.^ʉjCI"Wk!:8)1v[#Љz!+"sSy׀!'HޚOHoİ{ڢWg*+3:Z2,1h]Oy2BR~8jOvn6aYM2zicqpJq v@|x)?& ED5%>^!GH3ǴR0g9X~2滅 :AWUtw%v>^$N_4,iZ hm{#xM(ôi{Mko2DLZZ:@ 6VW4P| _FWFyi#0lbk&r }_$iD%L>`zcbYZ Gik/})J_\J-ixL\M6P;[wL1{lw&z;fRsKT5P Ѭ{`D`$m@%aICb% [{gN+}qw_9YvoPADF J# TѾTPݸ)$ːɌ)&F+Q: o6UKƓ!Ibi K&"\qqa'ȜeP NL1i!d/@ؠ.-LH*9bkόݕiU?tk Ꮋrc٢d[5GƱl3mc+v1K4?eY!,E$ht۝V6ܧN3u.i[V :aKR޾DPP(=Fa#;JV*{j0- mgFҝ@h8hc7xiChqO!_LD%1eBZ(+%$/3^(K"mɎ),F#Q-9mPikiG֞aJ{R*gpumv4rq/V1y`Dq4dR`5S`X ak_Cja ev>>cȤH}hP'֞aJh_:Pꨉ4r&(aA0.Q=K?]PmD&11 e6z_)۲(6;1fy"  jFH&.GشҝAYN(2e0t+ik6 $@c IDAT9EOIeaEkό݉iMNmF|Lmb?o3QWHZSϋ,ۿ054 ׌摃|^{l' & B;X2.$'d>k g'*gN`o}3#lw`Z)(mvQ9\St/HB]ᚉd/⽠"~aWu@cbhN U)I36D rA Jͩmtl)+0&_֞ai L'hb%ߜïd'8+4cN[AͫM ܥk %5bQ㷓Mi_L]SAHKxk⋴ӄƾCEͥ򄪉c2Γ/2?_@GsGmN+ )t<\>iEdc};F$~sJ V45 CꟆp1+]@v`!Ir΢)2=X$(A Ζ]Nt1Q}{;mc TB_x{Zv;q!'2UZSiP]Bqdn!F~BAbP96U#1&)됞0^k5=T|zG$P^l%8[c8ݿ#;ϭԐOdPx Vp(IO#3;լ }CH_m/$DoCsa; Hclus>+jnLJEWE%T7.K{:Aj=@L ѕT'Ġ :`iKt!ƽcA?_.'feCNE4g:p !q,Tgnjk2 St>0Pg4|:nr~ꧧpr^&?bh;@ E8F}&rf#!z)_G: [{fօ;SM21ɾ7)󯿣k$q&c/l}It4p8"m+F2V V@]1g݀$wk,SwǢ]@-@YQte #p_vI&R% S(C[rnr`&k-I0j Z:gFngZ N[&!-V9gU ooup3%iSnU0 F+zBd(*zzkOGNkI C8XiH0%ISm ca|[7p[SY+23Iz٬wFncZi1hH_O*kr?p8Ѹ܁>`MA7ptn7]twꑫq9>[12/p wG<}5Chr{H'`LUCv*%kc'Q݆3U6wƾRH%R 1RdmۘVeC:X%;=5cՒ?P|#I1ú1`0A]`숾xK=Iw0 \1)G$ڐ]~;%J=%6nԗJu ܂L\(oZ{f6v„A8AkO̬׌ocրB| e:x~?~嗷ҿ1d]:(zu_~??{G5HT Gz.aSԠ{ڐ% iij95,DngZ*E 3v0yШTY6;fmL+݊A`V-;`_kk !4ϹW}w_+YWW=& ~?Gc x(kiO=R' Amqr[7Niv$M$Y`z;#lV@?k{Gzjs-V&׷|tg˧T-ӱq`j~Z?٭vIѡ,P 2^z_+ G&F4uq5me>EFUL!0v~/2C^s_hRn43ڃ|jMN-j0;W$0j-@r5N+%*g-OwW[=GuJӭqx[>e{-cl )w)C?pܜ'\jhz4a΢PT"[D4n"Կap,MAldqB$crU 67 ~j1k0h]cA& kK϶> %Abk[gNjEso_ @X ҟvhbGM\XBU(3Jhɠ8]`殊oY`/mg,?S9jpK-.A[y2ZuҤ^F4Y쫯cVZ0x@_Bh!!#s ? ]\MW\ qɓqIۈJ!?<~?D! q,pABc|3PllL+&Sh8QŴQBXM =\/\mF&}5zZoVSZ}w_GKFN>'놺K/iUsMicrn]2 .PKebwǛ%C?c^`wm'ի h4̆%Jk\1YM3 ! $}ր_V6c5En0@xПb C1!kfo.-0q^Gg,x;ĪhU6(0;FB 0T<7$ ?͓BKc70\ȍFlv}M+"S+"W%3һw =h~5 bX-T's`|w>wXRp@ѡ4`ڥ\eh <3vn{!r ΰ3Y쵖-ZQɜ둘#l罌e|%j 4f9TAnɉOΕp[; D1k8T?( `REBʣϋ~9Iݡ9BLBD)SPW!ZpDH;^RAs2]dSdΨ-4j!ĪS /*yB"]@߁v9\BP  У+i_zki& ]R݃>-<ꯁCQ͢pY P{4S: j%gtf([mUQVLUzwW.0K1o$:v(+J,x^M{ue_xZiag =x-APh/`&),$2IZ 99!TJH5 ZpH 9B^ɏ¦h'.*[X%m꥖@*b>y KMgX;NКJQ!1|R&??TPEk? [**‰)ӝ8辟^[@$A'( ]pك>km2T鋌zAEEy Kkn(-i;*8ZwR:-QuPFNmJy0VCl\)@Қkᾁ "vOꍞq?|33a{XUk+&dY;. .Nm`j1F0#L=OG0=b]-! l$SNȱ(v%e 441G+I>_AՇvz[ Ax()Te;9dꑹvj}o7y{G.-!trE } ؤw8":)Q0G&~:\V2Nisݕ E8^T/Q!Nw}øEQBNj͓[VMfGb52f BWAb˩6&X AB\OPBM!oG? Ea,(MphzMБM 0*2ȉ3%.6HBmU;TW` ڙ]&{H}w(T 8hza+Oz6I"K䊛8., A`JELD3 Yn*CQ{tASPڼ:4{I:RaPPL}@H!1q1nB^t@][|}tH?[]D}?1qkp3 J(RH5 4 `V2ǠVa`L70F*)5 }P&9\g,}"u[2!F YAH;͛ mMW.AQz 9X#'\^ NPj5 {Cd~PKbzV vQ2dXH["?#ZFOZd~{h5zp%<ܿ24VS% I~NIuDū^]{ߤP;Hm&xD`VϤm/L`6ZiF4-qXASmo/ҁ–0F6Ur χpq!$`Lv1#F;fTg+O'Z?*DC- e 4*ɟ8::emI]E[ƫeY"wTҙS#N/\B[H@(cSP>BB^Ax.+auP7bx@&~aPWP'y@:qeG9]XER>*-bԠ( >Nn)íph6Aq0ڎQ -%Zca塆Kt$R~Eo)"BB~N&~`)']3Fo򽋇C`25.* ,VAfQB2<[Eb|f8ē2N?_eoc%]31SiS(GHG l*̮AxS"nS%u)&~^5{BH(:Ȁ,G@XH5E a}Q94Ηݴ4P-EmHKM`YcU)0Pf-s ݪм 5Ikv!6!ir ؽzM*):ladkܣɮpbKa)~=m % !r^Ԗ,Sֲ礒TO.aG`́C8Jbˢsr+훴EO?fG=xz ɜ U al;gNMU2W_vY I ݥ9EpNRk:]' ȠV|sT9fJAB]e;J^ \?"0)Ȥ5ܦNn>g52{|敘:,n݌B Q^%_Ǡuu+0*[¹˞J ɪ)ϩՙrΈ^zsj )<} *a.Ks2xn#2ff';A|5k8Pl݂sʋfQQX R$0j\ř̔q4U9*9kW]}+Mxog +-$ uG/7<8 )ZJer%餖A.$Kp'~fJ3 lOq!F OV2%Bk4lIE@ Q0)iЉ:Ev6QAe)ki\PLM)AxX>%7FR~s(z^=z0ދ.sb9CNLXUGK'~b IDATX`yigQH'IYPmU_`zyKT!q7 ]dnۼxc5 GdbMKA CHl wjwD|v^킡[/c=u W C9EP{BT?50`Ef*@Sp$Uej81 <+',,%Zjn@a2èjEfH&C lӈ> 5=jvúrL}^~t7/Wp^ oz7aDa͸ bxD'аyUIe#k'ӊ4yųJ焚*iL.NOcůy(J(xK0-v0X!귧 C/%<71Afk=}ԝ{ ]zaLK9Ot^֥_s?J Z ZY(U'PΛ~N0˰vPN*wk 0FZOF)ii`'tM_,`F;O}id  52-TF QP\} xOs9dCmh6FyJ6}׽#C:@0WLy4~A c0U°)qB FC{|%̫<~w~>|c~>>yZ-%E*c ${ӂoT& *tDR_ Yhd| XMp! Nk.J͛M~巾aaC;ק5յvӧ<32$qWaKN,I7e˽vs A=Z:q;Ⳕi*,h4*}) S$b[zIkt*]Mk !!xD_J=pn6Y7]7)T1QFMuAI?-4*v~'~^-ڬgz/^_k^-.uz^n)h}!Mitԥ3 y~zްi7ݭS(a0Gyal'4/c.I ʩizQB4THEtl։{Q !V\!4WQ}"]ùtmO$;Bz)t޻7!w$Y׍XSeK.GPM 76T 5 PuUqIT() Dؘm8Fie# Z\Cx1)é6$TJ!&.vaaz5~o~SB }hK67`/vE=-(4+O1Tlv1T AN.MʽiLP`,E0WQS9촵jV ˂'/L3I:Qq͜KYא@R3JMaz%diOXт&Os~[2YE%c!/ޔnRW!pErIh0 ya2nlZwh3d c@-:"_&1<8?.=WBGaCM^M4Fw|܍h (ᲃ U9 BzrXh՝J٪}H& 6p)!B o`P\Xzl$}}#pT2 RKa5/ S .1UpSLh`0d7 ouSjhOB-#s:aRHRv8_UknȨH*J2|+Qoď)U01PȳFzZ Zz)t Y y6@+V3WwI/B`ŮBx[ܼnuJxb9(TauyGo;Lq8o]Ymɣ2Z-Kc688e ڂo2L)T7fzc ?Z$TٌdWs~ITjrwa= 75݇PT8G/X6pGDSBP`O,+R¦h%2Ъ4#ky0lUOn/,r!옞bZ25^u}F{7⃜`w_X' 5J%eA*vB^Mwkl>.l)ׅaΌkaFLY `6dL&&\Dc(ںh,&m5E% =O kŸ @a/%{M-r$ڤ*PF0BxeAx[A6'Nm RB$Ol݃Q q3)dh!֘eHR|2%$oeB`5I-S6;A`yM1SmLg#vUpck,~Xɏת+{}~-!2!lg{'+ȪAO ~'NtAx j%lS-R*t꙾mhUHݚompHHm*@mN3~SZ0(ah15|6IF6p Ӿ; oN+~0M5ϔ9i)lWR!TTˉL*W7Ђ͠A[gdP?YJAk[8aprZ.,lO$bJrCh '#%hh-=,B'j |WO o!{~Dz4UwgI%0A[~fMZxt v"h0>i4^PÀmZN/bR;/i n l,‡lH/IrQ1G~/M#Muoj2~Q kY|Iʌ ˪3Ҡ@\FT(ӥ b%1$0+o r}b_zkMZod|\=IpZ6ѝw*oB°%k)D`UbTBəJx ,4D4ٸIs$-GL%=};go[:HWm>vΠWEb} -Ĵ2ٿ|i ąm*^|C{BJA$@ )\VB.ÎN@q̇""*T 4N8/NՓa(MN޽=% {DR&onIC7'?*}1& a0_ aٵ腽 a BߧIo%lyDPa b=8X ב{V8xT<0-MJWkGWM{̔G}[qxls/=UWEt:d;FaQmU7&]Y<¨va 89z~@͟KaW%q7%NVMJ0epIy'(BEQHyqMUnؔǞRM{ݷ1!&n C{/ުdžˀhzj%=!~qy⠮y.2IoQ.dhV12fΓ o'?@S=+EcjÃ48MMΟG Y %Q /̢fU ,O /xG{!̰}U;겞uUMJOp5h-(5t&E$rs jiJ8!أ*& oDP>$A )J)M /'QiCoc} "0mo1+uopڢP|2K} mMݤÕIv͆ E nҾ67G):6`J jR?rBSxIU%4u6J1S[Th-PBH$ᄴC G֠OiR\isG)%G'&Qhk4 Uw̐W,oS?0ѫgr=kvלBjaDP3$ *Q0z}J mсQ2t_?%쿗\OO@l /5ʝ{^m kCcLc; h/T=5:yZa*! P+pwP+_V7QS=%L[ UIe]!xfTѫ=a%{byY S|{KP8͏xz1q:|[T+Łr%IN:f3؆Ъ* Ka ai nj8to(3f7ntp%lhJ`BF]A×R v ڂ.i' -jeG!)n<7BMQmᾦ%+!zf+e:ܬo?[ xQ߹ %Q5_Ust!OΏ'Jqwm_jmrio*nXL%<(&&@XcF*q3:i2LՄtA)ܘJ 159xWVw 5G$>Bq_OkS~wZ&ϛ64 *)f\޸p=pMfVjj5f{}0sH#mFȺن:9{i;:[r~Qn:ﵧu)D 7~7{AMտjߝBD0{UeI;_Z¸: c ׯovc0}ꁖ4SD*?[DaԒ [L 8t/BL8&0}Pep+)wTһ2Ͼ\w̌8-:Jd-AF]K0Y 66ú~#?>zK:m*waF5mCljυ$+8y{MW>zFk |އ8w9>>]E|au%*ё@ad)z=OՊܬ1^Gk-us1bz&53DԼZŷXQYNTM4Vw2Y$yF:J@Ώ8[''|zۯ7~Z K QCF{Whln%}͆&Qb[mwB wFyr D6]f9A]&ct'oNT!l_ěp[a3wLdod7)?n:mzN;/KZ"^WK!|C%#uhqE ^Q gFl3i !-Up%83 9ADZfSXCn qaK|m01 οM!Jڧa(tːxː_{kt'p pd9@HLz3K Gl6SI& ##Mڟa |EH!2,fK7 -"e=_xly5^| JHF>v|Ku3~{#xou)#|wNqBHE 4\B5z*71^ 䦿veVܪh&C_zL|$q\@#=uxxQ=$bBN?]O(R6F/K R(6 ^uԮ5^w~Z/]?~@:Npb c9}hBFAhp8^ҎZ@Wк"kVV_:z$wB8G݅vd/p7.;H)d: W-#TGKGGF.<]qئ0 yem^^T!찢h$9_y1.h\1be:ۣ.hSgm?3!O.l #,,,Ya}8|0Ho}RL6#'wTPtgh Vzպp/\!RĢ lM+Hxo}Ϡik;V±«!D'UB9MGKtïDQL+ċ󬂫%|!,}CH 1$^J4M `$KܯUv$!JJx>Oy' ALLLopI.bq_Wf5F|L©Q(!!}Ax}KvBQBz;ĒpWbnb֝z!+nt:>mmz2BW^JU~MP b-Ŀ&!P@bمZLOkƨlW-Cpjt'J4Jg,OLJ^ģ$Oƫ"gKǪo K9,׺p-@BX:km%O#EwŻ߈A/=cApjIpD BXP)ە[BX/gI"$/o73 ue(F7K (ẗµhAN _RFrtm. j;{ [t' J\J7F'ݼr}yS O$A9C(<3^aGA8tʇ6nCAOC+au|d E BEl :绱-@\XJi Fpè/葿>J86cd^W%ܼRY= <] d"3bsF"O<^zrہE1;tHc["gk?~8]Jp]]K ~a8STl.RRD1bpNʽ;BUN;gLj`$@ *5A =dqzq!:ٸs \)uqgZ'Q K1l *!kQc4PXW)K@ $|r'-o Eί]j%/S_ 1aN/.aqc8^AiS#DݫE<&HY<$s#qJ6^ BxMjoaܕ-$bCHV0' Ow>іh8: X;wAz@>b!N7^e v;ׯn)vŧTHIQn֡:~R=: K.ӱrG!XBq5g)~O?iBb-I|'=-:sG!Yzed.{сHqu)\*T0F*>rIDch7gQ O>(UQ9ܜ}J;v C_1EytaulqfA5 wLK) }z(եUGtJLR8::Z)aš]ۘ{B J[0xbv˵WDŽ8w*E0RV'*j?>qh!F J\s׫\y\OKþ[KM/, SI0ݿsU\VWAGA *Ҝ9U Qn\fշNR/N4O>o')ڮjǎBcǘc+>w,׆C : '+\s=m@694n^QrcC~E/$Ӭta=^^7L?MepM_R Y uXUۃ^S%&}|~ZYdvW`z6P)Hzŋg6=Kl{3plss/*#SbJ; }$lֆ SX:֚)//%5 |0GY.% A9HS鋷$XeOԴc/Y a~h"'}U2Q ǦƧLJK=:Nٯ+l}ZZo3go>OmcH:Vo<7C\w[K b ]CAY]=&=u[ið/&|'bƧ^Nec aG1սf #"v6Ε:4P2˭Z z)l,ԍD~ f,OIt'`5&ڧ-97!w?^aR RPL'O>܏%_]Z3E#)`l(!V~^ K(şAaȳq _z?W.FDu𱻖JXp-HUA<" ?2]JsMM^򓷛}XX[3qM^#"+ީy1wo|DgKHktD:#Oj:}/.>TcSCLx!x[S5ؕxhuk m^69ݹt=xcHa-my<ċ[Syɮð?&CFg;o|iHCk`à.t7#X9a/k33B0oC.K$^*!iB/%>|yPV܌z%_oxSA ggm9}\sQů :XRxCƚzUVr:Z{|7LK^K}t譖R%,::M ,*<dz]XڿIl׻ 9 )~ŠOhHiyb/A?2Bv pI\I]>'zkWpa[rky$d:Zj ]@ݧo~PCk}$\ˢ޸PRVxd|OA2/?عόF+ ),Wx AMUwYomWR-D'@/A{7p15ᬻa(b]t2n^t(@~s_oBQU z*H$.>k"L9<JH:x2kCQ$L慈L_dR͐2\} \;AO?|7x˗>)т {\zod݈b*>z]w7!.>:t֨,Bx ,$F4ḠLWz|>"Xy75?N}C%/ͧBG8Vo-o=APt:x(dFb]zKӬRA.RQBJ`s ٢1~Ix  O\dr Yݺ&&b(%{pi6F3lby9U^h3' >YTߟ%w 7[K7 t80or t_s%H["Yڿw;~8l|gbɪK0)7 BR#!;CV+px?Zw .1y [k3!D;"]{* 2 #kZT᩠^J(oOoW*]9=%0 aC&~&@pmQ€Ca䏮E͒Fs(w³]y;رjBa2w>M` N-0ENDfI *DNCzRً.řȡwDhCv1%ңk"״zu  9y{"'ێDMsBif-^r'BNvQY &fC?;}CY{X:1Hwg /NdNC7[+qk tgYV2mʳWc=Y.CO[=|8kk7tmfzP (7C mghSFJڛݸV&tmcv8qH`!/@˔@OHmG!أN KX;?r8%BHz%Ez kuׄ.rml-Z ,۹sݏ釱 >Vzd mE4"t_ |tmQ%j)5(;um&Hq\&n:~rB5t]f"$ٵ[/o#@5/(ێOD %< ޞ Bx0Ð$NP5QYVEeG*EF%\|/sjQZp췀X$(Yylg=g5"XwE 0M{񻶰 Wh6 v@w;cT_6va`qigW~q$ZLè(GJEt믴k%x)n >D`^R` ]/by/, EI䮧pdcn*" f(5B8/Tk {%@qk1!SSt9nfDn+ Q3`׻C٪%zg@<4);/J9t_8Sq%,o<Om_e p8do:9(g5tJy`_&HC "AB<KL+XyTؐTV|2$O*fR@<z4Z@`Xh:!e$>(P*A?-/C1&+u/wK~Raw C`ΘdKn^TykI&f; &g@(I: AcCiS6dLHСKaڝ3'!ݭ>4&*'f_\ m^i)zC76FAPm("pF:KM46M?}tF:Tv0 R> zT[/[vOlTSR!["YJ "Cܼ '&wӛ7~h 7L+I3ύ" 뿸/F:H&j\G>j&Uˈ[~;AW>\P\-Ok*|15m?'3 tGSKB֭:,*d4`ە_!y$VSL.ρ_ o/x'fUaaJ{tyL zͯʄoGk FϲrF2)>9>ӒPଗ4B:X1`UR̐dcx(b<rjK@v$醭;x!/1|TLU2:şل&_ _D`nvLfg`fx| nXԄ2TYss Voފl9sdOõb*:Zϧ>'>LSINn!'gusa !bQu&0]g QQ:g3d F$ K,ʭHyΰ /k0=/bT+4!0?Q U ]w?}+bqs:7@e򀊨 w}5Oܺ9miKX{[sXH%" =o6ɁkF;m(v&'[d}j&A^jhnLo/< KchAHaAm°)$fK4AL/Q V AA ?^^]h/pFowៈAMZ)y3?)GQ1sRj \1:O,a!-[2rgoQubjo7K3hr)}>,t GO1N"Y1Ű#o'1Qn669ѿ&s4&b0ت d V*+/i ZI`W8t&!ȓp)3 ʄ" Dߪû\0'm͟3f oz ,RxlYل.JQDYl`3Lԇe|O~ΦLU귔.pƵU_pARzr;W!zr=Τg۶Y1\oEZPfMI1p}~?533ɎpVrY?VYv)|.cpO}AK5p&A_lD\ |]?͛->㐦Ŧ1%MRiΘ2 Аhfgf`ʂ Ѐ7*'W(\$ 4]\1  ћAvܮ̦ <ߧ.iW^BO8X7b&D"22RGd:=_''}6.(Zb~P6!Rj7."hkLKȇ+݃srtԡj[+ ",/E!ΡkߖKW^ p*.{p+Zp@8Y6&peA$CτLXu bl/.f!3hDxh~l slqh*vG ͣgSp6n'Hm n!}4n\ !`~E~ +U Lkc i`k?6O&C1C kG5(pj|+FCIEM}77;>DXʙ:4%2:4;eoS0Sjx4;{T=>R%bJ15"p4+rsrއѳx#<N]~ ң 6M{7  Mn}3_Vm&TMҟ?5Ap@v"g!藍2Px.[+[𷇣" \p6Tb 9#$yFy\N=U,q rMѳ|gn)St;p軩Ye*sv F]̮7nAXT=p2mp1&$*i OG{132™%lV礡*kײp:b0\nI!b0x{ "TH&A=Nr(LI Fxr>n #"d6ao͡G8zC7=g%>'`Hпw3mw)sv-*Abl;Ҧ=^ލ㔉`JU0034ξjBB_@xͦhBD0D˙ - ˗.X^^(~?И$ vf)9Ez$AM1j"UsxBa4!{#D,^|DW|='8Lc-qnL×ʎw8n  .f*x!u+«#'L`ѿgD,.y0&$!M:BL,S\!^d ` =ZpK+ILH"}.CG=B~Gt DNV4!jrN RUzΩYf YabOA&<˵(:2/N-Rl o`0`E*Yc\JZ3i ϖ؄׌dSulb0iy;{. yP%XbxO$6E{9BFh02˔FJ dC x$Gz{@_5u| j v&23 ̔0=dr=fr>: /; P2hfiĺDĂ  ן^& ^&/_7 o4 D0wp X0='8 EdCΜ.V-)$]MyJaf{q-pe!e؄EW`”sUF` zp"KU+jBЀptfdeqpU8?MW\ v{4:1R<9 [t<]0 L.>$ÁB8(^ O^ZA;0;0!oӍ  "w a8G`f&Ty*&ۤwChRgM r(Hu,Q@xR'O#H#(BFpјruuue9g * t& 3!^O8-*قobOxxr&&T:`mk](}B5!x!).֮W IFpyּd Ѝ)W_PƚiLuC@ pr(8̌Ό`o;􌣀K5DŽ Z+=] 30h!m pïC w1,DaL?HeQdɓI&ZK7N4(R! ^a/_iblBd8F7ǟ@""ji0ě u_ 쁆S <)PB\\km[ݜV9~wJJ#\!%줐wv,4Z ^ />?; _ WU-fzzb$ a܃H!5 Be'ԄHL("\^\?IpbH?q3aνWBntTœ5SV)Kqú12x!_ Z@T.ҋ2HG AGgH]Azo"Fup9@M+re xeP eXYk &LgpwdV|՚1ܽ[oݻSZ;߸œ>J@Q/CF3rf" wQã{@GG; A=`Oz.i:.X`wߣ/혹woMs2xo7r.펣; Cv;{\eHͼ%Ǒ:#ݠ ǃքBŁ:rWDM QNHL'6v5746uzk'^!Bh&&\$@IA5LYkkBP48#R۽9Qv/#{1йycr,^&rG-97n,ާmS7O-8H6Z&_zf d-dZ.SV풧#Ǫ]Y /hAᐨQ9C܃374dyyhQ| \s N$Y3Ђ%n39Nlww9^#JHsp#ޗd8:v NflW%$@*!5 #8=\kr_)dWL.O"p@Z)m _2!`Ƌ~;C RY)hΥF1 UM8$ ,'c $Ttx3Zb( =)pQT(Qa. gCr@! M8*y5Elj{(a{GC`(A-[% ,3IGD<>)m. As79IIHs<夷W+{8c%Qt@3^r.γ ?@xjwv&!!e\>5}¶X$]j6h«0:l$LԄ!#'kxq{39(Bp@XWLَYW obVN'KaxE0"Bqⵣ] /I 7ai= ^>5!UK@htCD]`}g Az&|rtMQ1Gp2gR(ڍtT_)1VyckblBD0G!`4# v:2M *I}3*T chB =JULbk?~`1ᓏ3/-X3s'M]/MgbWd1j;]cgD(뒍f"B$nBCB.!Der_A)Sw_R %Cdi«>@ؾ.v"ƄOnf^Fg_#B2: MaE ф}_&ŋ]flr=@ &LcLj6:;ۀ p9s:t GakOcZ6ФڂMzRYh~ڸ}ZB%GrL؎.נ AiLWH=2!$nC 28N Կ+[6 Nq.Gq+H/"ib Ut22#H''t]y أ.C6y!q ~`dH:ڳ~ ƅ(h[ {"hB BИ*L~RajOx2"Oͳϋgӄ7Iƈ1< Ქ# /Nra8ZFM**` 0Ԅ^  moW |,>}B6!M<46G/ݢ#G[tn 93 Q5Y4a!]㓈Cf.ghBÀkD^}25!w =51a *lB 6a; qBۍ?ٗOCdž;d%p7h z} W+|^rwDG:# rx̑cTA J:|M*w !0]_aǴlfj& Q(3 }#5##h;0='񃄧Ǐ} CdpÇvmvM|/cʍhx/ 4+{WGg0s„iσ+P:p`(k3a2dDŽ5H(xz!D 5ثC=_S;>gdfS!gƄn"Ia Np7~O4&@R7Oh]vс]rv{dɼΎĥLx 8<#"'_1au/8<8׻p8).+X BR#H:8 -لA Ian@z5 ALHф#5w_xGIL+kcb&"y/2 k*FP »u#+3^ "sq3cy:&\0&ٌ)0S J P9ȍ#S6bšDVffB!ɰ&ODzjh;˔1"|4T8T4\F  $_Sr,hb3Ve1nMK=V26p-CήdZ~Ѹ_+&<̨#g#~lBD:eԹ`&,QB%PvԄ5=jBjWb>*FzA#läpIES@hˊ" 11uX^PiʔHqP7yX?r P\ttƛC(l2z2MhM.hC16?dF1b; ߀t~wAJDOqT&2)vBfvأGshyfTʔJ20!xILH ֧F!7a-3-&1 Gi}꣈JH2{'QA޹C2G8YkW)B6R19s>8'ģjB}2 "dvTxơ#؄TAS= kd+vQQd՝5582e,C؞ Da F'Ъ=yc(v>O\exwޥw!N:_)xAyq&gTDye rrCב$DA\Hm 2`x9D a @h 5vA=%%BVc.JN 564 BJFi(ӎ fk !n c*<"#(cGR[  NGAD!Ѝ2mq3*Ȅ^6ژiFC=_2.1 *w2+^R8r`xlQ~s@="rF3Y,,P|+CH}oQS$H˔00PIYȎD~뉽^$c`_ bf %a_P=Ʌ̒ Ԅaz8PLX>PBɞK Z "x)!h\AP{xBM0>!bXcM(R\oN֨c3;hq hȲO;RIym.L ᓆKt4vŦ1a!n5hWƑF*܄V Mck}?"BSxaPronCY0[ \&Kky'80Wm57̫PBw oB;#7/|1h2zGP@t1PEeܲrf%ΨA:!xg:?=GMaZyp",S˯ W[ڰ=*+^(F=e CށdN߈0>=* Ĝ.g] 1E_C 4y3g{-1 6!pmhE0-4v|ÑWHuQˋ}sF NW6υC(Ωi+?S>P0$[ E}Qu!`*D3ј$dD&WT{r,Wf`B#BG5m6ݏAa:;͒+_uEffV0,!oG#`mcc榦&9,sa_0' lΟ̠򻘌!R]C|>E9z&JPI4B`:˜_af&K#2$ P,= 2jBpAMt4&\W))mVcdp佌KBm g|T9ȄIYnedxAD M9u}0bcE YABѴ:dI(dlW.4T9M>7VI"@mpmT-%gnU_e3}k [AZAe:V3![OPBj&ulC1t#-ϯн^G`Z: |X-&\Ox 2k_z.Z.{Wt1x ssAwd L!,>x hopXbFɝUsQ`NI-"?PBބ 3}I೗"ltvp\ٰ!ReW^tsS '5 n: P\؜B,pYF:.J rfu 6cP:@D'kj)IFH!!Kj?4P6a583Y@o>!$Õ!̔^Rj%Y/Zơ0rt"-2-B .F3B7nehuU |&p  NƆ1=Ogd "G@$ŠT vA\C׺OS@M.!IaS:,_Mve$s_Mt|T E N O1u!; Hpٛ^>syw!?y0 T<駹G8#/FDS0A꼷m%5½\9 'ޯ6] 1Q.ier3&?N6˝SouFCbpFڈ6VԪݲ[W=ny}tLnڝ]7V ^a4A VmjnZ3'OVQhSi#A Hb0|_+1`xnr77%'2tfSͤJ(r^OS)4"T Pm l景MnI;TW%f6ԀƢep:3쵙h( iY7~S4$ M jsOr%3A&G旎Zv^B&QrrtrrM&AeOh+sܹsh D0 mђ_Z2iJ,Rxkn ?B "ޜQ::M6Ƚ!|:bO*,ԘtʎE]tnZb .),N$X!,wRFۅ#ʭigM咙'5H,.v AM*!i^t:Y3"A1u92 & MdB\av56df֊>bsz-(:YZ.s@0<$ȴH0KI-v&pa1\bg)a(2ױ6@ں YF-i6ոn =E|MڄB0\RC0 Xo E CJ2+Ǵ+dlo<ل_n+ &KNtP$`&D9B\?^$ P癐u!\W!h^#m]l&]^cC`hr)iR6z5D@"78aa%}aC,E8F c&rrCF+W9ٲ6$ig6a+ s;yYnNB=ߦO_ 0,Kt/ qҸJyũoRέDZ#1| F 47P >Tۯs †?<5:b(VdRth) ^pi7A Qs4rŐ6qLr!"n0z CDp9lӄ \?yݽ ٓ3;C~ l`m|0> In 6u C-#Ӓ}U ýhoVGPP>4! 8OqI>H|vA-B`khE M"9OmTH"$1 A%F$S  ?!0}<ӆDPapa,`~C>Pg 8 `c t}~ E+4TTҽ{mIeg7׳ݗ_o_~*.AΈ-mXA>Z.o]0P7$hDz Œ} j"ت5ȡQ͵Famg5 yBH_6?lZ`q}qq}}=QX_PX45'&|Џ |@m:ĉiC UÏIeéOIRX=ԫ¸4?ߚ4w,OL;97U!ċ+Ii#AZ3p- j\2R`>=LN:yo 6HikcW5a &s#r0Za૯g *!Bx䉍8bMdcNWVˣQ!py6;k"/RSPb|cBh%bYngBY^xV2h㜔}0nZ3tx:8ta0$tO!iK axhUʸEȽ6揜OO\wdH BH+Y@(A 136]хB¾N۔vǜdУ`hlyKT pWsQEq+. A_(U!&D9= HO1*KNuDCх`gJQ7qM_K^VS&DPp @99$"D C`+қ<`U "F,BసU#M֢0 1a !f0{HA./4%7Z(/(~_>Ǒ:e܂Ăf;Z-mBh}|35N`VW$uۂ6j10<`Z2$-vmP𪥖!xw% WDž@Q?صjs4I]G"H"#a+{q!@xkW"D9J(@!ߙNƅL 1N<}9:M!|c~BH QS"d"Dx <}X|mX_Pq+ k~_zF3uXBu^]^T.l]M LvDžxlJNk?t7- NZ5EWnp^{ljÕAKfw$X/uڤ`^+@HԨGڪӇ>$g,X\Z__ZZ ,֗֗ހ*,7F}qs==ǘ8:]A}ka/)&q %?RØ/<  ({ %ŭgx慝 *E:q:P{ Snj;_EWi1GBJJw KR[`CJ5lpxPwᴘQ^1.leD5k%LJk# ȤնjfZ a3CõF,-e=-Cua>p8&4*~l1 h@:!=D N4M &G0.78G-a'Gb?A:IXSIg/~qkg='g+;뢜t&K/uZgJ3,K=5{cJT:eIz8MLjnG۔&@Ge܊hu|UjCW\ddJ@ѥȣPPx[cȱj9@iaQ"Ō%7L{)Lއ&4Q7P>eGςR( '`gcu"aQKK}L@ HK}gu)*˕Z=i~Y7S_g^`ҶtNk2 IDATW =TɆ(qh J.OTbZ])o]"Lbchr5ESáU$+Q+ġL"Zu8MNBaѠinpp)}ʆtQ WG#s/~$UTegu$)a-SBB7և`}e(uDD:^q㴜/\*iuVgFCAQ $H Vʵq]v.z:bucNY=N1& "D& Ep,-.6w?V+jpLRV"]H igAྱ1@%@;us/M7rKOoEAGő%C?g^*ȂHK@P^)E*j1fi>(Q06xVnJ۽"%bYՕ u"UؠXFeɱ9cUQq\P8iP@ԎW L ņAZtr=G0c I/?ցo4(Z>x(P6]3G)P`PDO>{`rt2h/A8EWdI)U{["G X}?XD*/5 :.iBWW QԐҚP0,X,6+,*.F; B T\҂Rn(P²Z8c MB"܋XflF(6Ƙ}ng0E. *Ɗ$ [hXK) e0әӻRSs42+*c~QP/(& b<π@`>H+0 ] y]e#H]O{c- *"䞜z CDK$nT]VZu&ԥ?{j2RXp@1h\*j/OLj[h3ۡhPu -:n/n8(sm+6xI"cI(Y z$ (VZPR0!M1A"o~RԱ|eDޒ86=mod }>M,ϐAV2Ar_  R`u+!ۥRZ>U [#>Luڷ}ѭ//>sr+,J)Mw(V-mr~V ,Q䥞fΩqg8Wj#EIEKEN;Uaqa ޘBùK:9e!7?p9),`syIA@ $H %1Vi86榨cg4H:<(v~pyӧ3!wPC&.KݱV1[BDfyv+%'>3gţu3~z'aKKa[!i giBBKR!nEwJ|z%B[]R>c%G*wI\xe')tqaPa3PXP)  " Wigg VKz& ғ;q51yͳu*0'/oOJWP%HIj}qvˊM+V8zi/ފhƛu!/ϞlQDd@w*PC.$l鰨|34=5^ɭZ&qXL 2HEdl4i SB'yAIlBgV3E4]@4td B#@XBD'ơnǨ64|Bt<@0vƤ8邒Z2ipyd$a!#&$#6>NK:VL4ק*0 0~]K؆}%}}a *X$,&1_w11:6H,p#VLM28It<'mYDݡvM^Pm%,`AT*52t`u4A*>{Ib$fO?x볗KEű"!cl$j#%Hk'gK*'T3PCްZu |Е=Un@\#dfSv`[hP *{jz\/*< Zu0B `G@ɃdE clǝ]32>"i7͖-~b%E-rm?!#.) =hX$B)# FpE@*a[ٍG_/W*0׼骪*By*G`M N1fp|;H&ϫ ZqedO$u`O#؇&|83zVTl.Wv81}rG*zr] >t:(Enj--|Kp .R O(/EIdqRg㓭X$~y"}mi[eD m?˪_+ɝS_2M#QRaI :UQ iC|}D?Bhb6Cj5Vχy4ʋZ jaNRZS/?]*H +~JeQR(VeW%QIUgpz>P_i|O+# Q)]QJ_ DVUiW07K7p3ca]]E5“<)!rl.=#©?dN!I  GF4᧾EBIPrhCƊWTo>r-"1hZh)z 4/-Fȗ tf*D @/ sװǕt UvR)iAAMƜ F.F" 0㻡 c_ DX!5f `>"_CӡhTK yC^7D́Le$ЩH `Ş|^< o 0z)&'S]Ҝ8vuUx^*_ձ,Wb,u,5~UR)htc\,XT`ʉ̠E8a+kJ,b!GF *ܽau߱%1W8'"0 pǾn5Gpon!`b*:q! >na F̎슺ddFVӔW6/N`.-VUG ZiTk rIYiYqe( b`W*1Kn.{IbaB[,O%CA+(ך8Yz0 $1mK$\KRieWaHU?!= ѭQB6MHD|ًyFOC8殐9ZLCr}: }+y帝9x%IG [k׌1|E4Tu|!GK1"SF, /QvSdBzhUӴ5S2,()>ҜnZTNߗr  \u3 囹/Z$1ZKQweWĚmh8WNqM j W{(TMOqhOqPĎyf碸g(S! &oŴD=nM/9RD`6ȗ0gA}.|y?>SO˥G cZMY? 'VZi9T~8#_GCGUʢA?w4M|aUeA4gzndW qbcnUBtClr<+5iĪ fHKh&ŷ7tt{=!\h"[y n1xcĺa%g~7>URpI$^'-{=[s ;o^"W1|}rx  DR=GgKGR-~F<5D!߅L843MꗉJsx"a칿_gھUV/-zU-yŎ+G_TbeaQwAV9 DSD.3]bnጎĹ; A=!PP_E_78JT=8$=^T8 2ƄG^% J-g- 0z+:%^}A; eTDj̕q:iUvY u8cnN[P5&H3ihV)p)ڛf>yidUns@-M:NU--0w)}vݔ(&7FpKXU =Jb 9MfhhIcU#<Agob \2 Qx-Ir܊xO?{DW4 Kt%\1P+(ё>pE٫PF:* /PRѯ* .YBpL"#@;s-.kKJh{֏\qb4x&F.IL"Q@3'B$,ƻa85/*I2n`\ɉf aBS4+ğ\ R|A_'4^zy룏SOz*"@rP2gR^FB̰W2MDaAvV#bb&vurM_U4xb DD1"9A/nX!0?/ݲUH.B3k YL-U-z0!زE^( -xKȱ[p8hV0؄&9D:9Ic+,k%YTpg8q2  BYPٸ Gz\K yex} Ղr)T| ß?Wd:<8BA>U<ҟj&k슖Q.z3]KzR-aK ttSKJ" ޅ3!Pz1.qB-Vhc s-{(6QX1tcLW1N扔K\5~Fǥp 1F=t1 ErU=ڏ),E(+nrU_(R!X?FI})]9~՚.ZX=~"aE .BV}j"!FRKewKwc"R Fd[ZHd%&CH!䦰I949 W9Ǚql{LaOd+ x!xP?B,LLL

        4}L1t\BX4!s&,H9[L!#nj:kj86r[.٦䢢W-[*dy:Ish퐐+oAvBmBⴅwZv[" KaN N<ˮ&qD Hz'H 渢 Pxb\s *g%|¦'b&obd &n߼21 g4 fS¡AdZw׋.q`UAHﱗ[紹D 7"?iK46at,rk,Q18LIҙVcw&pްܵ&J dp2+Xaɋ.pXƑ2O(?YI?.'&.w?|(i/ Oܾ1O8- ݺS hok{ ]hF˒UzdKUZrה#\)r>~T,mτ-A!1aj \rG 7f6hAtCCPc#!Z膇cg\uuv.Paa#l m8 0OemD$30+$Q&G&9Os@  /&؃eeebDf0s ųh ?a %OKDd u]~f,,׿#7>HrUeKP@#YZL:EX +^WW+y-tv -66r-zb6(MP x|ȼu;(v asaI$pcJ|Yf #.bIgnIO3 z;[. _@{Ƀ'ᳲo nT!M&._s/DȲyAx0ǟ)k OZetݔs&l7qFX(&KU E?s0& K&meMEik$RHU*Z$|Mu: xds;>:zNvsNnNoXq㉷ADOx%Pp%0!D~z#'NX $2"Q\g ?ZpXO|3Me n~v6?q[nuc%*a;=;)C b0nȱ| Bx>Mfq0)aD(s NC(!/܊P,gАÉo?)$?a&=$ ?)Kˀ^DSn'"XBU]N:XFZaS9RJ;L٧~fhZ7qtՔwpERƷmoYR{IJvs%OOW~>vϙ9cs,@bE'4aR22lD%R(yU\puqrgOle.P?l!PDH<;L7n!!ՇϏ uye*\ND[eVNϸ ]EŅa.XB'})MzU2:nIۏznכBg2C;;waܛ`o>oܔCMPys7u# (=ZP H3jG%olB~_NE Ep27dI'L29 ȩ;3rF8\8C«I KnyMrAΨ!Hw=Yk]tkUv~ϳ>jAEoA! yJڷ 280= i!SɹXAihD _)q-ƌ R_}Ƀ~ ᷱiPo /2,_5©baI F2e9MQ7BbGA|oL#K Xo Nzv[up( гYXFQGCD> Dنcmk,( JPvG JT_@Awxp-ё~޵_}' ƅ~WؾӎaɦpDW,pixؿhL Vnn L]dHBeQ(` BPditFأ01 ֙IN0E߮n>ۄp{#&bͫW=Qa "3(\3R'0x>T[ 0uq#ճ,P5P3GF:_"皗92kÊT^q̺@oZAd2I WGx̒H I&Q PI$AYOoK`AMB3MO,oQ޾1/϶coH)WQc~'"wK`l-\WC&PiEl~5r7(5sV1zpq.(x|J8 1,igY5iő6ę6 =DI^oľpp")u[[ 2(Z Dĭټ :ѷ2yOs,3csCP0\[  wnWۂFu@pQ[.o8G򃲠W;]=ұ:E5js&le؋Ep[ hxtq,"+#Ňrx 4xBTZlۢh3!c\67Q?]5܍&IC ~t #wމBox{V Cj6ckְ&#uL IҲBQޑU:cGG/ʿ$oMz۰P!n(Hy"ܦ-SE-*Zg*+bHWVCA#wXGM2-Dw(!țe"GcpYҧ~S@Й4YP_ wBNop6}rgjG.FR/7<*NxX:M.vCګ`N~#\qaWX`9S-3Ē)"xOa g8=FJFV?!$5X C)t?e_|ʢ pPjqc.E }*fuu~0^Fe\SGݧfgf }cX7 riV\S0T4Y;"Q1BuKho/  {n]A˔[5{a?;JM!Q,uYTB$pPWVC@ Xi4VՐI=6 >SPc ("jOA Q1iw?I`%uw곰zHuEG4r41O9j__;U7Oyt2H42+nqԭ {V0Yt:ĕÆAu<jho*0ӊBhh!R.4!}OŔe+h/UBWV Aw}d~ohD릷p.h:1֗Q2:zQ{BIfaӉQL)J.U őN |qٳhe`0Zs""6;2+# 347 بREv%~*,h>de/MU{* (0ӏ/u:8K#aPM vXb`ibFô(bxt$IUzq(u8߉ԹԨRkwSJ$R8Xe"E)l%E\)AtB/j~@@w.5P 0"ODZE9s\ZB@@ bBVB as3˗G^zG0! aug~(j*4jGog= KGRù|OեLp{x*6XlTP ٣1^! eu 蛪%$"+dMIkؖX%5V`@NzzGְ'^0ީP Y .+rRCY# RAm֠ aX#1*iW'6ql |0hĐGRQE0n($~@泌K*BCi(t-l{W $>g+O}Ջj&p/J _KJ@|60`/DO0 2"n!@.*,SƒЃvx f~=GYS}ϵA/?3/;/-E⯳bug* +!*KafR;B*8wpӾP0t:52s8P _>tT}i>֫/]b9 1^#(݀Gr<`JQh<:/'bdТ! cG6ڽŀʵTk4&rܨռ͉ :comem.v f~߽{J Cöa{ P Ռ!ԋ<;R|#Mw8Jc\RC&d1?v1@ڰiLz>P ceĩĕeE10! kc&FR@'Aӳ%E!QY܁[!bh>H ő3" po{3.x{2ȸS=uWꛆ5A5kthE^{COjYĕ.Bo#s) {!(KX& %w. #i4'ֈkMQkXy{5Q@ &A aLP!Q+2/߅"BCTBh'܅0)ˠ28^4up􉢎‘]D,=UShS3IH֎ qcӎfN<,p-԰R@JĚ',ٍnck$ @ДF6NBhpgF6-m2n čl~cT! |{GG/g!"7Z0 W]'u)~nR?C.yi@.-)u6n]G– Xш|jKǘs}%~C8!;pݻ: )7w]`Gtp=Ai&BQ8. I*_P4KM -Β~Aޑ^c-q ?މ,.-HR _Vdj8ђM9I:D;3g;fnt0!vYk>`AClG_{(uqJ1[A( MC">idL/.s#R ?Ҁ|:( HOwrF'9 ^rS@.!lN58ErR O%t;%Edb hX&S2;H;wm6(9_ݧŒ h /Yl~ԌPzފz!$[[Ȟ~ : 9߾}6-~>2Y _% Y ?dF.F:h(,[Nb|`XlpŮ[V.YX=7 W^KEs1g^x  =wű ؒ)`EܘhDUdY8C\9W ߖ*'/؅8ܢm&γ_~p}W )w.H fZjJۻN w̮`XY]0B|g`0 zCa4Yos-~[_6QD%z-;!Ǝ&Nڏo$a%P-.9XGA'lrV%_T1W&S)`P'k9)6'nzqot(>b UOmûOQ _>M;_>W%Œc\BS)!Icp}4:H7eRB^~S*h>q>j6c"VsbM~%0޸q,}+KKqxFJ7` QWBu2zw:f&(ޥ]?2 ~xzmGɐFZ@/'k!cjïvw.-'-g14zGpoᩁ)hǽ>;4bMʌ]isA ̠R8o3\pbB °CN~kX1oi}&qR&ssbB?O ?0H/ ܍!&qBcz|88h7n{sx:uEY1,RH~5l@.z%0abFO?l'O#8>n mp@T\SZܺʋōU O 8\,1l j/E@p1JW>yr`&B_"S4ORUF0f@ZQ#!u}A@c)Pda{ܯ݁oj"Av:4I466F;=1{2%plA4FHV`eWEՍ w01QHY 4.P..wbb|~T- _'DR4c[:BJ H{BBZߝ^o!WYؠU3[ &4l,#hlLtYcyEo-lB !Ҹj(\mZ $Q hMKu3I !cxeLmm&ϡ3dMAw n:B ~ys=CpĐgiQ l`?`i{qД(0i1cVDp 1I zcP_3Gؠ1ϯ"66a:VSJ,N$'~>RQ" <@. ̜? u½H"X o~`@|uQ2ր?; ˃:?,zKff W\V_Mh5mDڭ ڢV?UDlz6xI59EcF@ GBUZ>wGU2c 9voL0&H\Vd@_]Uq;ɧ+Q%l`R@4@>0!Ą G0)i`depBw޿o nkw,i \i.+8@QTrA#k,jPyb6648vbժVUU>%ߢ (*o8vPDɖ;]&lСHB(NI"`. dp8b$.Kz!|ya QDTPt @J! akw}f}h upqP\Z.w}WcMɰ(󎱱q 0K" "8cO;BT5Vy+W9jûTuW4cD V áGQ$t .1tȻc|R8!41dr17ag><pn)$* HP3`AZLh"u\LWA ͗1>R-]gb;}B%~5Bw5ja(Lt(pe į]ڨp .ݞ%_0< @hBV,LqLj !HcI;>bM0|F̀KG^? =Vzz`Ž`8!C`O3Gߪ񧤇(J;Z +CGْ^ʤV_ |-FAP (nfaFl4@k*+8&&=SSN;kX5Q5 W4Vý-6E^qu[>CbVѪI"mQvKw ,=J!S$m`RIbss! bw "42au=AN D?@2Blhk 3&z$bZ05o6U$ca)qSa!y؍Cq4I/La[. J晄- y=S ƐCs):GTbH 2)E!P! 3OI}_ 'lko~T!l1(6I[AV{5 ʢ3-#厨q\^QJ`#+lo.)]劮o O-˺96}}U"b^HȹVm&-h@EBS1 }}@⻿uݾ3XsA QIh`%nlP4GPXn"gUjiQީ}Rk2?D i=>AbYxU~{Fܳ,z9 b^xҏ|* fsg)a螇D ÈBtgN[? A* y? D'J F]hF'WB`uɎ# w >F:Vۡ}>h\/үr S9T`_pWNFCv"^ߪOh}J   )_B'X>%7_ƙƜ%5bȭ"Rg MF;w~p2xS B!+*!4:)D3B u*o{\6NRRJU)-:S:>z w^2^ӻ0 a@lK9vSJٔ5ʾQE e)@UʕBC2\4ƨ,6,<YF'UY ,2z鹢^ TȝAq A;ZyyD8A$=z,MTE=~;JJ")$ !%(̏j*vOTFltx&1QJTKV |K$Ru`%Iˊ/dy,3eӢEđ1ieʰZ fŕ+^xA4( qr'B2#HJF-)xTFѭHb/.CI!)-,22Ivuel* }Ak(*bc!0RL&g*̋((*q9"S'CPB kPVSlPäQɐeğeo7seAg@ϐA}CA B=dGwŌ6Z:Q8he[Ϙ:Aas%˕JDR0 eԑ@A!ghePeOlcSr(•NKJeU'">8ܔZ8gF|~9 jԣMO s J MPƕ33533mfP&~ϣ2q+e#U帨}s(V2ar&.(!hXYYVݑeDL *PeL35y&H<=1հdN% qzΥ@Q]Ba cHI"#9=)!Vf>3VGi &PJP{ ʶMseاc&1r+씅afvYpYI*ZTQ ae̚e+e*WBY)^/e)+c Y+PC_/1',ֹ %(*z}xCT|Fh $C?fBq(anp:c<;MXrq;.$, a=cf3էf+*WR,LPiDd%^l>,ЯNu0^ZR9s0Pq((Vw" !5敐pAҜG!'ǹ z[i/JuseYbT,ur ]VÔhTPWlVFpDeVJ1et. &\׋uVd;zbPY| iw0j UG8chk I qTcf-=q.]91/-pP+),.w[J[62es";Sİ+[Z$Pn@:u Rh Lc(*;[mJam--1ln!u7)J=4V0A?*\nTyмITU am>@e%_W,K8YS׺8Ns0Œk(F  Ò0gUwv\2مPoV8j8t,s);*, 8?D:!ȢCܔtp#q]% bR8QaOBhˏ>9+ĠU?( nBCf$>D F!KALaK*33.bN81CITL~٩+Ma1ϺBsD 1#^ fJ ?XǼX Y qN:egrAL$ O$ BO&ƑjTd0vac-040MaOHv?~م=1 dįs$^R5Ox61HiUB°Od?Eŋg'aWFv1W+6#D}3+njJ=[QoO3Çw8HqO /ifٙa1= ʢL&{&Qlk2ТKnͿtCi^G'O /GfJ;pEjPqؽ KU] CV+ M:.%@X\!I*oV C0`6; RMKave+N0xx8T;ZJ響>E.#Mq8){R‡_y7E!ӹ>Gk)<.j=(x ]^'q>Ld? jѽpW7wøm'@xمQӋMk_ؾaC(a'/ R׶=Gw L 1f0.ڇwefw6 3G?=KaQ#Ŧ<(>h=ME~lZG̜'2kvc]`PNd<0VtK遼{~ vl&$ /`šQfp >w YTxHupJ`\/.p8S:);8B%QͼׯЫ![;FtyfR"'yܒMN/NER"q`h`5輝d0F_f3s(wOsU?O/ >! 8 ġBnNqOqeySpgg/>;`eGeX>4wL_$ 9.|sʣG}&l2mv¨b/iF;00.v'! ܹ]0Zj'?єK*an<.AS>0LAZWE]׺,^|<˗'{IЪ^&S~#S2["'Fqcp_?0~[忨eW9.6NN3I/rz 9,{K3Mp|gNDi`ﰲL;G`K cAxg8,ɷ)1loB) !B||{ff)W}|%ǰ`)w =hn"ɄC>p&Y)?t: Es gwYpO t/s 3cho2oŰn)<̗dK!ܓp Ȑ s Ղ=>+m*3G}|._nk=%|GSbHc) @b\8(2Ra#@xAG]._tCN*#HRܼ^72EZl.V‚.洇Ezw^:I,a7DKaC(&?2eˣ3a]ϸet٣{)30BDi");E G@iOќ!bh8T?5rU!~C͎R}f\Ev;E/.4őBCIENDB`hugo-0.131.0/docs/static/images/blog/hugo-http2-push.png000066400000000000000000000501001465312036400227110ustar00rootroot00000000000000PNG  IHDRHC<gAMA asRGBPLTE('1%#-+4=&09  oon!}}}NV^ڌ "+52;D6?Hݴ־FNWRZbBJS>FO/8A[bittt㚚pw}{󻽾`gnmll:CK덒kqxflsIRZ͓kkjbbbV^fw|rqqǖ ꢢщwvvfffyxx{{zޘѫɟhhhWbnfr^iulBT𘦵ϗɆytFӣmyOꄼcт]ذ^Jq|X۽ʍ~ߖ{|[)v fѡGmֲx&wyzlmo tRNS]m IDATx \Zg8y$8L#&**(DA+ԭU+jԺ%1&cݬ6봽m.}vfLw>95M3>Vx8pY<;¿}Ħ]ƻO~հMw{(<$jwdq@d_ wtAGQ :AGt:@t#:#:#:@u h>2֡o.)ټ.SoY\@oZ%FCR$l ZMZ`j ક( ]iLU6ɤ':ԸznT*u ytLFơ$=U+1WH;;kznN̯XQjȶ ^mb|3 foJG6tJx7︴* pVʨ[uT܋ݺJmy՚#6MUз GH}TFog8("un":~ОZ ž2F{̩s@Yo9@0yB>&Ng,^XG<7SsCo4TVԹIppd|dơ \]8 {m_(ΟtNlڑ%bczB.7HHr8^*תk`5ZĽŅxBe_+*j@Y-s BuIlj9yu!σ>/U[9\NVIbS G?JGЙK[fʮX.0vO n݅p͎mFi4*EtJ~TQ>Ŧi 39:sq7}8oOՙخXvq7Ct?3dj)]zl1nu-܃6zvDUJB7ۂnN6;^g !wn~P:۵@Ï2 dT)!t,'ʘvPViJk[gW8R >C''fE=Nx'^G9~ũrqw؟Itn.K8Upt%[stJAfQ+7sNjvF|TwP2΀Ym˵64 b] / ;TU#([ j'v Ud`< hУwo[_ xEP,U*QaW॑lq [,rJ%،ܹ1BZn2ۥXJՊRFJaA v* &$2w= z DHw٥$1ٵEmzn^yP~NU݌RA "P^!7+&1w&<) E1KݸtR_ ^X+n˨.ZV7zx>ܙts#tht5DU,3 t5:@c~:,wʰtvtt>XSWؓ^C, H :xW z`1zavz).Oȇy9֛v+cj<*L@7߇M<Awt?GME :OC+'G9:[ՋMn::} #(tAG#: AGQ :#:#:#: AGQ :AG0ZwEF \_p-gӹ7ozдG7[Yݽy pnG!{t]o7߇^}T{`)b}AGA AGt#(tAG#: AGQ zAM`!s:Y,v@tݓƎm=|6xuO>yxWgokNO䁠# :uȓD'wQRR7>>>zw ﰸg /1Fkc_t?"6oެT*Qr!R|m/<;:5#C~ gUgyoJSy27 JeR(T>F,QHd2Baw5`,w&,T6 &J '+ ˄ɥL~>>0hOtqqLmuCc"+ǂc'`rX0x֮mݺ7&޳peٽ^˜[.<2 ٻlp +qz0aN=H#NնFdz>V֚#IYiIK=D.I},M8kN=dmφR%dZ\拧O?|$̦cgcbMȍO!:~?L&F`T(+(Ld@X w^Ql5$I|lQi5^1 ىCb2^i_Hן/%OKUbtAZvSnu800Gœ+<=}O%Si?J{E^uvo \&y*+dtvY~qc:]FfOk?Usi 6!2mXλ,>&d,> ܥ ^\LDbl|#:FTJ,~ H^Ut.RO 8V4WbvKȚf7_mGbbK/_`y3BtCgD,$ X}|j}}~E[@gt,AJT~BV~|B籼"N):ҾCM 9.3bkAFW>ޠ+CYhCTӻ6FJtTRRiRJŢ̢:kE}~x׆C$KvN|1x!&"Ra.=# >p^f7Ƥ_W!跇%$/ I N\'#E"۵:w`+bOY :&zMf`e"/݀3 9|Wbij G">x ɑ:gŦ׵ygw /OyE;:ic]{4˜vm+$11#^5>?n˲ 0p{N\fAlHp"؃c}cFl9ܿo1&B#J:-Vo3i\>#W횸,_ዉc<zV#O% _TدNxg*WA[g# t^Z>-^Fm'r~$-8Bj˟f='Ka5tِ18) F4# M֮u#KO~}~O,N޹:+v[ipZe`۫H&6]Si+OfCB Oy,7F(t`WB!cs\ƍ'y{|0`E/={xXiA(8v#[x[Y,cX1z)mG{F{kc,K5NEx8x! Yig:ȋYz++qD,/<"࣐@ oaم`GbXun$CfV y ]^'Y8[s wrMsv,[>an?Yx~;owg 1d{Zr#Ey̤ŦAiĉ1  c"bfm|| +Q׌_| ͊H׌РBuL+P /ޘٶpLq6恈3,2ŦCfCvKTXI ϛrc{;l[ӼxG8d:F,r^+W|r嘈gמ.7)nt =m`!/3ľUjtff鄾̮Wy,lTHÐ'K2x&|>G>~7xo?Ư?yQ邠J]]%[^q- >SKo&g> 1g#ΩNEx{Vl;&9 sBGCgž"yJ'V8bXD5|i6c,XCk8pH%7=}.?=c_fڦH3!wPGlה9d ,ptX'cK43c2MBp˟&z$tOo?/ _o),}lNI͞5_C?/0Gg?矀_WBNj71ii߮78? L;R_QX o0Gnܵm謴C1:gf_ T|bڃwt S^JP($GXccǪy`֌,dz{׾XO%R{嫬O>V_O<? l6/=t?>o_~CO _ʯFO3uaXGuSs:j!gOW-Bg-AgmM۫Qt^`Ş<¡1yO=1+0C9tVZɉvYط-A߻}i}o|mwB/~6plK/W0KO> |d""ψ`*Rǎtci=ڧcxD=x#1^i!gpO Y20eE*mb"nyv%3B޷ȫB+Dا) }'ybOz*,C_st7>xoЏqk_e?C9ۡV4ayM={2]|Gc~=vBud@̧'SbLϞ2wM8yG>:0&?:=uࣅt#r;0 -0/-t>^CV@yEn\(`7?{TϾ1\O_|bݽY1k߾8X4O9k"O|/=w~/&t7C}*ha 'Neh Zŵ/u M?}yg0 3٘Up;˜|,t OI:p V5-p>&i1cx% B7Ex=-!={Όh*+%t(;[Cd,o[2wf6v|G/p)$Z~_|?y>_o޾2Eg-X0+maב#[cb9k Zdk0 {46}\6plW¶cq:r/5vj!؋xYmݾrtV#_}lߩY/+Q}XY1VpïZؾ1ZPPЏ~|׭2߀H6z"/"Y1K]=;t>>VT`O,-%vL#x'D`?&LL &~c/Gɠ" 慸#Y!t/^Lpb""+&z(-9?|},oпI7[H}TR<[Z,|4@K/z2o<;'[|}3>B?Nbr~_Gӽ}"Q%<>\#C| d2ooo_Qb3t}:{VLZk8t }jmT&Zk#S[#S"Ca>#CoJJj0a yy"#[ÒtA|lzOMN;ѭ atOVBtݳ1 ƊzL_aS*Ž:{8tb Xamr0+>~Ctυ~ٙœLCIDC[Ѵ:쯏/Ets{ym}oG|:On],AG=:>!:AG:t:@t#(tAG#z(<#}ԽýwQxF(}Խ+|H9?@!uWJ#:AGt:@t#(t^Ag2~~2[=U%29>)چ;,oU  ,3''H95辑۾0厡|߷YmF> Uyqل!:~נ+:baw]񭠏C裆@usrA8IH9K|;p8<LIQׯ~w@tN d @6u 6 :Ph$ƭYlNmUz/.jfKz>SwgR]vOWj,腅\XjuDt@޴)8ܚR jHxvN&ڼltJ *ĜЦnIWU xy R'V+6ޠЙ% "9f0wf*t6 #w 9#ʢk}|j؀ t(tծxE|X#fy>ԝ`,=\. tt4J`XZ z@픨\JSSQz5Y[fxϽ#ݩs8ȿEd&((ABY/`EG{q hTU-zL6*؋ХD [d BS`2G'~P5.CUAP.#w:0Gtdtt&6:a)j;?TnW)XС`1/&}gtfrb^((WetKeATl.::50ñ)G\+W\#:J;mr[zy BKUՋyZf2t]ێgUz޷ݘQ_Zs :8%AGTt0*Fw+EEYY F|,b:W@$pFS.ǗrtۨByztInz<`T\G . vtA+)@pnYz+ Ř (+0i%tV'5r~}8W؏L:-RG:x!}誣k^l=(4公AG)0Rt<_:;\ ,RVUUꪃ&C5'L^͖xXcْobTG T/B vKUe~NvbZ _HrX)A AG$Q B; wwazu\~iJQb`ޜ'%0 2:q\6T9ج3 |p¡+"Wh+>=X Uy@}o} `EutA;~a>,+ȅ] :x}(޼^4~>'.;Ƿ:J-!:v O/lox}@_{{&@IO>t"~x/,$75tP}uDFÈk,s,6:)7M]qJ?&g_{BްA߈yE-w#:4zm5jBa+}’*Tl1'tvNDnwHNΉՂ=xEЀ뒭EԨ[?z%9]uН¥ɻ:u9)_ }FmWc 06WV\^c2tcY嫠o 肂---#'HZѪIzfpժrzCmXiΉ_xMvr-Bs9/Xr_}mh)yV}q{G#BȬ*}`p 5Igj謹&G!}Nkn:yڕU|KW&zA[7Lu=aZJ=n$AƯchGϼG7?t?:;ksM $2 S]6}Уƛ'T@?=#x9E?]UG_cvvXmk?8z&Q4ՒpGui0 MG481 \pzNekQȴ5/h$;!4O,hjW + n'*1&._߼@@ǡ :f`;^';uji-jXёBؤRێvIR}@Uj\U8A֮ 9D&-G/ *4Q ~$gDu{-z"讂Lny̸==qmS٣kZܟPc&A\b ~_/߿3t??]NL1õ*bAd87=>u2^h%bN@yAJ uUÀT(ѸUl=^N"[Fr-~#J'(L2[]K =m'ޮt )n5;%TF)M)?nj%4ȍ9:F1@@O7sqOuOv:.K[`0*k1`G5KɗV$HxcEkG *Kk:I"򵗈o[xoV*}h3kl׸Uf91͇anVI?P %mĒ>X;#kH+'2Ar B\ΞNX YaG3k= ;:7552UPR;q+t>\T~̟~/{[(7U@<;qU6h+{僷g~L}R`A}хy4J%ƌ Ƞ8]my:l;^u9(*:q聮Vwy ߩfUBm&hME &ƛInJh rRE͠r@Ԧw :#ֿF/-Kw1nCrX50#VKrX 8t|Z"7nT ~0d9*C,N8ٳx(lhi`҂H"=|n be↤Xoii.t:rwմ&NTO?W"w=Eн#~QkJqQAoIrFlhNj9&삸 ` rG;3D;(9a9AGtF?]+ OEvX\O #FXMNм20ն'y)x"Φd~0d2WkąpXIB>ֆDAC sh 薸ʸ >t?3 E5-}8x+2G+õ=p|׶c[(:ɢP.g9:޿78(=Id/nt>!2` A(-貔 yyKѽ"`ilY1jĻ'&m> rД:Ơ[hv|shV\.v͡L’rBoޑrs0jT QG5d:םMq4E~˓4|#m @Е {krr{8"#k :$$c'_ڴ[=͡Q\y{9$DAGt~;&._5.t1uD>Q(tAG#: AGQ :AGt:#:#:AGt:@t((<"J?z>sS, lTI?8Z@FARhyDt;?haSNɔ$"t RFY'3 v*EtAGQ :AG=rAL2# ={>;q;ȼP*0@dAG=:WRАTZZJkeÆ GK)&Op"ڃNZ):69z>%h-7J#p"| 9 t(TG5 ]v۾֣7Cgs= Oa}4zV=#%n>SP0S\|_ Vɮ۸p4>\bzwRmqG&qWAG t> \>q/RPN"iЩeṡv=44NE6Y];0Ə"$B^,7VW2PWW2&tAV3_ sltnsD&e贍5rAήl: H R!&_;+RR^Ymq఩2)7H @>#642%LaGo#ȘctΨiCQt\2^WbipإQK@|pC.u; s\2aPѤRjC J&h\*t`3h/eQ75#@ֳ۵ LH0]er*yq&Tgtul/g#: Ri g ,0Mg*o !X4PL.3lwN.ar)|tN`ѺD99f~C%Ϯ#zcSkJJJqC2 ,TZ`}!>@%0G0*N Ƥոodw(6sId& s TۈZs3#}";f .fz }M;Js|"t t%D*Cـ^1_V棋:~_S~R + [,~d.~}F&e17A/[}'3Uek^Wc$,k3%v \PZ;Uf=QF]+KjevV 9v SU(7莺=V96$`ԩK+:(3f0PxA16]@fx ]`d A N q}Q#5fIKqr(Q uRc}%ryUI[ן*UfH$%~Щ|b%ẎO2kNܺɖ̽++o@qJf4(˃5i|CYhkRpέV[II|X#_**9B gi]* 00qP+>8, 6L̍ W;=ue\jW]W$_Ǥ蔢Ơ@rF-XsИɔ;LbjNP] i(]0# r++59I4><%8Ȁ鋭EW>b?+o?p-^?K~ӋhK +P|k40ljxQ3T:ě+TURuXi4:osh~`Qx7.ȗl(7E[ ʂO,Ā2)+Z?\*YӕҜ[a6c˃;Tw@w/sx&^CBGqAv.QIvr>]E!jD2qx80Sө"h ,W(OhD<.M5 tYNM C,x3V|X= S(@i[䎴Sӕ-M7Q_4>:s1 K! /{w_͗{M|ѕC:~;%:6\RRH䍴Q\qLxc_#vGЕ8dvBe+ө~T̑ժB{QQ>*SE葫;B=Sscx4 z+l;-Cart_dr4IvkABe- )nMvHG5VҶAW O$o+hvFâ2RD#D77Upqt쳟_)Jf:/^y?7ד "d S%;@!qU4'C>u S;`:`E\Pm>oQe-`5|hӃޕX\·:q#]a`FP++LoH*-=זCay֠M (`r:s0KPQlqG;) %V IDATVimyp 5ndƸB}??!++?gozЉ&GzE{S}ǯۋqjXQ$zE$cdpPR bԥ 6@xˤŻFG9@V<-7BnѲaniz@YUwgaGjG3s yi_knB dXwNMg2 BC@KGZR"d,Bgx]_^{ǯ>weH3X~3X]twCS `#Q pxU}LaSdS'ZlCtKꃘl m(.R|"n?X0c=KvV)'=z;nY͎O5PMn)|[: jOa$hB2B݀,$6}r =Kcx^d彟w #n+ @&h`R\(5 Uwس3A@72FJ$\'gS(tAZfUʋ&8X[I^ĽXW=NϜj)l*7zjW#:;RUY-Co>]qɬz2F*+W{(x+W<ᕫWf tly6g #DBpzU:>cu:wUb]B[㱧8MQFؔLϨ*=utMl+W.YU*{]!*b=2Ħ@qSЩnM`BHn 6 hr>m8x;oXF Sqy9m-4&7Q0@[WwT hv/tjQ\C`sC 7tfe@ELz>6Fn<z:6n0ðϷN@aJeco${6t8ޡP(l}4.^ͤdIgnBe X3r5 ,C2W`g:r#[a̿=KEowtisA+`7Me6Y%!/B jH\vwl,2Gr"1.BjH9(3HVZ0=93 [zNVz+ߨ))=A.=!ْ\;~+]idl c2~ ν6bE4.> % nF^&IۯF^E;Hˠwb~Dp)a15T =@1 e31$2K01 niu|}2e)ElK?.pF8))ő) QN%b ONEם_51? |ssK cġ{3讱lLX \OPT*e/I?-&fug]I[\mQp',Hw}nÛ8i s}mZ7UVi4&w߲$B1|RR[RŠ[Z[ZJ7DZE"\z|@M@e4 9XEѡ41|@K 4t }ƭgn̗jod N\3[||E"\zx&YfX[7qMT̏D*}Z7YX 3L:s㜽݅fhGOtd3S"֛f 't<͑ ӚfZ^[ff/@H:>C@@` 4F 4o<:7;7r* S F nmTK놩ḥO@_$AOncӽj}TCVg+~h"GOZX5y4Pz@oJۚhD~*jvG=*M`dJ( @D+a>a֤=+Τ69-2 PO@Gkje6JdstA_sP+ZD3!tM7c:ˍTؒ[i*L=#kn%AN:YCx8.J]qR mг7x0'(@t}AoH؋h#)u+UW4& ݀NݓkT`[3RA N-+*7NGEwA_S}t]c~MNKr?#~XnBQƸ ;4)BBt}mA;r)rj=AK>%TҜK\G|4 rMQ:9$ûMm] L G49y\},, 1!s$GAHt} A'-qA+zcZ׮da1LMbblB'a$ G#k qQ_+ԥNoL wJ oH"T3:Ơ@t#(tAG#: AGQ :#:#: A_(<"HJm=oNq-lʺ۩4D&* L]'һu0%h_ Pp:ܫt%AtAG#: AGQ :AGsAtݣe䥛:rfdpppjh}he  VkP|Х 555,,׷/FA``$Ea-Fk?pL *`ݝI$IENDB`hugo-0.131.0/docs/static/images/blog/sunset.jpg000066400000000000000000001034301465312036400212550ustar00rootroot00000000000000C   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((2"D!1aAQ"q2BR#b3r$c4DsCS-!1AQa"2bсB ?gh4u AѨAhh5 ACPh2FhH *F HdDCP! Zt5 hDCY(QK"A&INHz 5 j(mNE(4iEmj!Wi=Hv-;Jm@%;h[MJ==خm%Km6%J6'Km%Km6#;J6% m6%Km6#Kmhq6M6M- Zy6Mm-IEKm6BA8_hBKm6!K8hgAM@J hWimvhQ]р4 ( h4R AHF5(5!Ah)HR  R T  2AH:FHR  =MHt R#P AHt@M )FHH4:AH R)FQ(4>P *%5: DZe2';JQPm)AB{CFB{LUDE M(Oii]Q'mD6h-WiE m6һMvhضm#J6M6M@6im\A8[i@q6&vi}q ] AKm(GhK8R;@[h6q3m-Y Kh(Pq5q:ҴQ4hH4@ #$H2FHP#$P  ‚Z h $ C$(*C$B2C$d ! @-H4R AHdH2AJAR h C(RdH4j'A됤$j)F'4=z #m)* NC :5N';J$) Ohv[CF'FQD@ob}@Oi[Mm[Mm;LYDZ-V6A mһM3m(Gim(Gh6qob 8ij6"+^E* OhKPM+viFD&h һ@T6ҍ`R "4ZRA()"AH) R AHR C$ AH) z R( !! AHR KdZ C$Z C$h*A)HHHj(H)AY6Q N#$ FH!R2E(ɴ4>Ш=j{ME(@D}HQ5t``hh h'v mқM iMmQW(hmvhmvm[M]%Km6P#JP%Km3mvhT6Ķ8m-Ahľm[ig8qE@Am,"6h E4Y@J8PhWh('F)F?/CQ Dh  P  @H)!R  ! @R"R KR ! 2AHdT"T @% C$D JR! C$2@dH)*FHz % CP  :FѨD \ :5ђ &{LJ @&(Hm v5m(m6)@m+FQ@Oij[M[hlm{MhKm6#Km5`q-@m[h6-q,#<q#%8Ļ@%ǀ8ij@q!hȮ@viV@I%Z@I8Zn(Z*( ч~Q ђ FZj5 *2AI hHdR$2AHdTH)"R C$2C$  2@*C$2AHR RʐR H) h! jTCjRH) Ld]D C$ DCDDCHmR E5@*A &EA'Ao`'AQoR()iHShvpmP[C*'Jm6'WhvWi-B Xh} m6Ҫ&vim60 Sm-@8@~ػXq5p[g`m>@q/ A+yDW""$TZgm.>gqWx EQg\y[LR _@@R C$VKC$H H) RR! E! H1AHd ! Yhd2C$THdP!dR C$2A2C$$! DaH!TBJ CJ CE=DH*>C(% @%(DQJ2@"R)Fm(K)F$dPv %LFKvQ2mOiJD 5Q6KiۓmJ!Wi{-Q+ma]iZ2 lһ{hKm6#KlmCiڼmlAmqã`6'Chw\N8N+&q/i++qw8 _h{AWCB}@]ǰ{bL ~! H($p R @dR C$H$HdTHd!) $ R IR! H*#! htRP#$2^a)RR CJDdH !dCP ASQ AH!jH;@M Ht5=jH*%CQ2D (*%2@MDeBP&mD EJ(;J 2UP[MJ!UD>Oi+;@l-maQl KhvQ6Јf#vQ6а6CaK69awm Ha`p`Nv@q9@Ν϶qt8;'CDw\Ki\Eq:@;'C@qq{\0Hdd"!$2FHd 2@H) @Hd C$2C$2@*WdHdTH) AHdHe 2E*AQ z AQ 5 D)*AHj (! B*Ae+ ]P DZ.F D#(b؞MXEeh!l THB(Du CR D2lN aFQ&dvhQқCm2QTJhmA$Wi5DTC3mGiKm6#Kmg!KԲAI8Km@8/ Gmľ:h C6EwƎqA+`Co%@36v:EqϷK+V{h%AR; [iC$H$2AHdC$dH!$4PbH!$2\(t! C$HdH)FH) dQDH) 2C$2@*R:AQR2C( ]E!ADH*#$2@*^FQH;@MHuPR 4=zMHteC@M!GH4m CT}}H* &(MGG% (BQGeMD*?BBFQGe%eB{E-ض2eŔB@IGe!im;@[iy*Gi-;l-|6sl:6hꁳѰ@`m/@A. W9@t8W¸:p;=\~D3\Ew\N@qq&t864bHL! ($ AHdz R$4PR C$HHdH)} P!!! "#$2@-!*<Dt R$ ah)p:AH6DxTRA ,*FHdڂ2C$,MDe BmT|Ņe!HXEm(`XTJ(X^%D)}GH)=(AQ!KE5(Q EF4,Oj  (GX%CX`Qbj#(2=**>I Q2mq%Dm@"Q fq-E DXET| m6vo`8Dq]GiKm6Ј8Ļcm Hm @ Aߑy sB@>\N;:6KjqYzcQqǰ+.;N\@`>Vz! 2AH)! AHd$:FHx`$2At! :@*C1C$pH2AHdT/1Hd rH) RR!r2^$THd.LnFIt  = .FHdR$5 Oh }@Z CPh R/!#PFQa CaFKu ہ{ BFHuа!H GѶ6bq#GaTM"l*<DX5 Q E,KhvQ5 ڂWj6&(Omi]h=خm[zDm[Mm[Amm-@6 q\E< js҅K8+\qw\EŔq(q|%Eq\y:>>zDZw\Em1]bH) QH 2BHtA! C%@Hd*C$2C$!H(%#$2^ HX }_Q /Q C$,H) ! AK-AHdHT@R!!HdT C$2AJCE2AH;{ AHdQQRzp2TGKTEDHmQ C,(2bQ&5Q"IDex )4ETz`)-QE#*?(.AI )52FQ'JDYImvDYI((h!QR;CmA,6 YH6l3b!-P M8a}qR.":6Xq6e9\{e#zYNiC'KEq+Wt6t8\hYNw\N\Ie9Eq:DqRWmae>>F(գ$:FHhdHC@ dH 2FHd R \Rhc%)!X !h !Hd$ B2C$2_QjT!!aR! ]hdR  !!cP2"AKP"%dQH*=Z!*?r< ,GT{ Ȳh)H*=e/`,FQ:y leYIQ!)5!GHdeD*=(Ezr[(!QD)MDenHj,"vaZJ^FHZ&e -fM(QEQoab*!UD*"ĔCUBĶF6iZ2)-m6mvi EKmm) YHR. _h!Qq3mqvhX6qhqĻ"A\K8YHJ"qYH4+EEq,Eq.+ Ci`S1CE(t&Hd@Ht:]  S$:^HdMDDE!4P ) KcEh,dK) !dHXK(X KX.$%R ^c,AhS$e,dH)ֈk+(z ,*C%.QQToR M-.B62URi ,$;xQ6Q B"=KQR!}Q("y!e.(6"CF#(K(=QDd&FRQGԴacF?Bh*.Q*2%JvCє}Q,2bh*#(Z122e$4IDeU D2TJ4e%Jv 6MDe=Q&)(U&)(j*eðIThm6j#(QDhj7!Q&)c$QFQ64Q)tD)vY"AHuI)6DєR2TJm DٔDtْ(DAHlFQ 6dFQDdH)AHlR2E2Dقhz5 -! -ل4:AHl(RCfQJ5kRDلRCȸNE(O"6CjCƛ@h@hCƛ@hxuy$P M.SP ̪IG4e%hhB:C$MO`TkȪAQ\: .H t&$]&IE(ْ ?Q"2UFH)fJHdC. !!&H;Pj& R C%& ْ2AH) *CPR D !%HdfKAHd R f 5!Phd6`()6- A0 5 byh!ѨcQ| Fȸ-1< F5Ѩj5ʾ2PD򯌴+EyWF 'Q_SGI 網 &8AH)#$M.ZC$j&̂C#$,,5(2#!$Mț\2 mpaP.dO"¦'p!C 5ȸcȾ6[5Ⱦ3,fR3DB~AM1ԉe/RI֗鐌I+/dJ24Ut I ѕA4R&*ɦ2cFT~R\rM.TCpM1hʉ]ûeC_>ԍ)DDԐHhS &RK(").MdG0ۆ&crD,-&92O &i'~hM{Z\EkpXQOgPgʣϿស'̾de7-0JTd})?ǯhI~&>VޣI)>OH{_ 2iӕL)irfLE D)=ڻ?ۆ*XSDq4eDb&܉'L)5K,T̙4eDdų&M.NL)kL)mdk43ɬ),6MN[2dٓl[5k %ɶd,6bz `YF!wp_s>E%X=ŰZ'Y]ۑ!CfYϐ"y@5B01yTjhI1j!rbIj \&䇑<$ )!\L!FONLIH'&s161+'/VUHG!tfR3^#dQd3 D4gG rwd2SVYȟY;Kn^!юEG!+9Iz1ܤrY欽YrJ-,u0ܔx<՚YIJTVR's͎nG7%+Y: YƎSYw%Id^,5g2ߐ=% e)^'sYgO΀|Un,ʔD2ȽO=f2ȴVEn,kOCc,=g^,ԖSzp>7rZӷsE8[?щ<%g=KڹҜ1YcLG126ٚj{CSypw~Wc\Kc՜n=R&e:\hɨ6NRq~r},~=Z/ T<&ﴏjrJLw(?f!Ц2w9෶aS8VnY.>Sq,²RZӻze^WЖSq;.Ց >/pkr³we32v5Uܲd^/rZܦ2+/qTf8üY"[Yvn6A̺ qx+/rZڦk1%|S3+ü{㩙pu7M☞Mx~'po9|Cxguo7rчV_+!4aӼ}*fttn Υu#;fxɑRftˆt%"Nr k(QH("$$MQ#4% "R͢ӊrd6!9PӴA$NRD4JYqVR#r2ܛj%⼦D'rrܰqtSsK/q%zs1cw,3Q8CcȘ5%K95J?_?:*["Ǒz5_&BtO^N_#*|i?{t'Fg/UM,oאZOyy߫+MӸnky N**k| ϟk~8Z9RxkLΗ-|SN9${8K~}?:y(?H߰q{oAq5X>|9Kz|iy~NCɨC7]~vQ>g˫m_BLtV\pUǙ'fPYתfM>~i%6h3j'ô꾇8~e{?% ($#&)J||>V)6)692E5KY쿴}V9-9+\4&ϐ&H ]Sxi(jE.x6>dٟc?Q}11E>5/G4Ye|s|)Q^\MJI{}OƠ=~?W_:1{cKf'} gxïoc<ZZV~"?J]i>~童Λ̎W)tLx{/5{/?<ǎHiN)wtI C 3P\1S"TRDj4&WM:i6yznŨxy ongR4w`|pښ^=fZEzP?y?J80grׯ-7;8qw2&n)UUt?[+[^Ğ9)3kTgJ柫z}ISqRi~_#t2Xs|N?S~k1Ɏ9!O(IZjk.e>}{~m/0ey+%ߤYMI{-jAgr7'KMs0c'Q|q~kWK ֯Smn쥯}^-j<'&ßFh JukW[SZmCI7VPc-G:󤛞4R3=_SZMOV3grLJ)[m_p~kW/[K~w)fM`Ou} -S3%:oykc2VRJ-Z-M+J#{[2 joƫ1o.4r_zoukcZد_SÎ,ٟlgBOvX*iOa+Ml=PV?̾=˜13%Cn~KUЛ]J52ʭc_O֭t?}FZ2 iN/Q#6XV҃tcMG/_Q?̾9j1z,nV?Kq}'V?̆Z2?=Y4?27KSw&zOG]_Q㮇JSwnq*1Po'H^qCu~i貮%'O/U1>=_Luu:oR_]ZN롞?Ύy}OZWƭ_0\}Ǝ:~r:O,ƾn_Sq挚ZmL.䠌Ouaz\GÖ{wbr[S ZJm~r G~ԯ9pOapmrKJY'_K=- Tfg]x>GwN|KWaxqj&gNQNVt86{_\o;ӹtv(}}f3;$75|.5v?+ƲV֩%$꽫O>;K*&ge~?Syک'ck5)ԵyW8zoR]bz]?~QMvmV?G3ڌ_C,r#o~>qv?o.<5pꬱTu|:Fr8F*Y>/,m)%يI& Z)"I:͓UpmujT]N_(JAFSJiEZNըE)K # 񍨵մi71JIzoBU'ʛ])]EI8K$osbND%$u,rH8ש8㎛@G< PQn*iZz$NrI؉EJҿxq$"Ez3qJ|ytת%);\/V6גZǎo$o~}VjKrwJyy61nX/r_2u6@cdI흾-#U|&jA%^~g;_ !^GKro¥ '~TabFrKUR7WҴܞEEc%Nrh MmFU~R.4,1X6>ǂ\ybhoqݓ^a]ł:|z,]u:(b5͞LaOXTRJԽ'zwRC+rnMۻ#$۵d}ڙ[i cDx:|SlUŻ*1d-˯ b'H0.1eY˾KEQܿVRJ_<1qF=N#ʚiRFq]?YZOscUB&3%-^\ȣ$&'k1My?kk~#[U(s}8dsrW>8N2qkDqRO&',k.YCimȷExڌkL7r?V&"~ˮy>\Y'''RgM^a{ɕj'c%$<"MX sg*'qO'yrOyj&wgI[Y}S[IQMW3VKd,QnO^mFDFKRq_,TrQ&kd2a^c1Rv-"Q5?$ -VU.O'i}od䒆=NF߄7CeO짪 =?_jMOSĺQ=&9,xeT Jn۳pkuM& .<⊨_C#b'"]|(r1~2MS*'8v~WΨ5>}^i,>-FY\W Gk7qח10$q)WRkc_'^'eǬ.n|69\d]W<2|,5I|{5ߍ=W瓽UΏMӼ'IS|Q% Rm7v=ú)A\m4~G^$́5JM_ƨJ}|Nje k<]^όS}ߍaWJW2>cQgypiT|W^r916yc[t\ODZ9⟽k&ϙ85:BwKw?1/C7%8ڷҿIͼkaY#*9c*_T|=''}WPJQXoqpW,Zš95v翏MjTtyqF<{(^ ^g8XI},<51={}{SE(8icrQ{R9)S˧Oe&WGTj1j΍66NZy)*oڳ~c/KWPsɁ\5$G,Xg*_9',rduܓ^k,tXȖ^8JQUG:i{1/gXi?yfP}R_m\8q|jIK]ېN <5YrRŖ\O$SiEm.(\KI>8㔿Se?$"Fr9=jfKXK$]~=4OkE&%9 ry9,K2mk~&fϷEx4;J.kpW<(sfÝJ.$~K]N$'+jmtD6mk)os6<%@ eMds\z/H\tnI"PommnlTI(}Ưoj\RW}嚔Z@Kuv{x9tθIqΎidm?fqtVt(kk8:otAnKNܣJC"CF.-JK/ñ\]9ӓulE,9-rF,j>Ϡ|q^OPg£ԗ=znL $iw[z2-ŁM˩:#XwV LlSkq_eվI'ڊu\nX/zS_S ši%S-bJxPOIǙ()lj;y1YG&W\}OKAsԔ[t$wcŏ>Pr鮜u:k_WBb}fpQ\./Z8f8uve,pT,\Xb};ّ$FחbƷ85]BK k_0eģI>e%N,rӔq%;4#+W6#:y^IIfr%aҥQO?P&O^{ ع=ȯ7:ڔ_JcRa2ӂt,EFEFyW6ؾ,e*jҗ)WO>kÊciyG& 6}J FԲeښ]>\GlmH\]kM.|vǬWnٜ-;rI~e.>wW[0nr}/(l&Ҋ3։9]'&Ԛl]m>q5i.hGxMʢ=KpgE[qv"7֟cY5m.yӻ +SEsjӋMŞS[_QcvGr}x۬uj;Rn-;'q]: [eˤ⚎ۧ*5R\ۑ|v䔩33 p,eX[b97m"۩܊m ߨ@'&K I./ ס}4RIARra7bا5jMyw$$O->_ I?ҫeŤz[OźZur zKpَiW(i=>\2bX6RX?}ؼSmROug*+o(dاW{zwb i%wӡlŕIM/v+yGouqR\y$dX䶯uY7gAB9xm&YہyҖsE2җJ\q lQm'wNUO'UọNI0#~EcT9+dTd9(^g.9J)dw5k ]yYR]DӨmEtI)B?4,2q ӡK2xZk>]M*yydM|At)A6&>Sj*T.[Z9.)6m[חZ[qvy 3'qY15M>65O my=&$Q\P!Uڕ)mOXAE\OAKȋYAS~qM_6 dm>Eh,NQ'& ǣKnKNU*_X:obkS1oZqLh㮪bdwu͓nNrVd#ǣsdwЦ\| 3?({wdjsm_ՋJ"ĝwYi|JEwá%R9K^Q?OS.5.Rp% (E E Zٍf*?IZPȗOv\'Mᨓ{ hKUKOsPE6K4uO6\qQzRUlյ׮ٮ~jUu$GbP딧&W9.7yQo=?a,j8㑷?I9VX}Jx8-LK&;C#|5//8+iOǗ4[6GR%mYmL3qJfxڝNmLg<3ɎɒR?Joi jV1JA6SW 5Ӡ+sb):\?VjLqE/y:ؗJSj :NjߠUОj*Y8IW?4qMWbyq$[z\ ,ͮ/qAҮS"w7|0Gĝ6ү!,})I9UG (e7Ep_K"ݜs˯ \ly.KS]?<&覫@̗Ifݍ}HI֔]N>i݉,m#NrʞM;GDE"w}Spin]J;Kq%_m; ;9J JniliNbrJ|IeR~9*WqptQJ;Swv([ItSnR<ާn=U%$+yˑ"kpRZ# oޣ7.8>ZѓzrSJJ:KW'.<#pMq+~Ay0RMһ&; }]^RMn-ۻ| smE#I%Ȱ1JXi*&o4^>xR"dܐSjO,KлW)Ep`WI$K9q|svߡ9EB.B,M+$nݙӓx6ixǖzm|Zy[VH(BcOjgDcw$&g^u:>bNmء A[k!ג}5oo:՛I j 9$4dtȸLZ|r(4g$idBS^A^>%ǧ/՜;GޚKG'K"J"9*Fgf$K:c(%~Er=on2DבէȤِ;۴K,VHȼ]v8'EOkʊ^#ܝ+-V9m+b3rJ<˧\_ŕb_"Zm~9M_Iqj%q]=F)G rqKx"%}@vMMΕ`OEŒ)SmWmU>Nq>Gn.)-[uśm_k۵<-gtM7hOAt鱴Ԥy/Qpb_$Ԣ .W*bnN=WЬJG'4@jtlTK/u/;-(ܛΉ"m'%9w)Rtti^5q|ha$u% k9ovxeQƓv1r[& i[RɽCizh4"SJ׫:7m4\!^)][b>XHj#9j#Oޒnǂs|/ӏH|y O]B[W'dbA]yK _ZӦ{sJ̏nrJկ kATWQ'7Rŕ7RYɂyRK [V>hnUlZ,#s꛿IGsiI7ҕX<suԶ^kEM;t~ǿݑ[s괮ZitzNP KM.GN/1,Ity/& ~V11adP|0qE& j\Ԣ3DL0EAY@tc7$GT[qn2M:cHy%r]qw $x|NzuatdmHiNmݠi-7\ڶ5+"ODenߡW\n)>Uf7)Fm&n3%ZyJ+̾)cɒiף PإGj/PGq{ãH+x R_n8'U(Te *qQZQoSQSK2Uʟ /wg,=$f~Ac$/? \6M>G{]&<ɟ^hԫ$ю2i+m7(KRk*u5/&D,QƛwN)&5QVXG>U*yW)ͺ8b)?TM7ӅQOO\>ⶓNSKݵW,s ~[unB/)&|.x U2):մO,Uy\KVcT4ZJQIpbnW2~aG3^[Wu۩$I6 r$}l㩱Vy&cRr$gKKZK&p[n\d*qTTvAT+i@| lM\t3U0$;ߡ`=x pIW4+k_/&=(: FM}B5bX15ق.68_ǠiqR]n]J˙E(7pyW'QEq,ԥF69s+V JY-=L`N3v,JM+%brsqj^kru9'Y/`Ól饋1βoX= 3c&,Ro\x '?X$ƞ4vy&sIRs"^>G؆YMQ[$[6],,tMC+5)eKJ.2b\nYeĚ~6G.%Cc576-.Y7 / <V8kRIU_|#x*A^Jg_ˊ.wEEsZ^+L+@ONIGM]EMq݃}NzXΣ8 xX3k^jcd,X⼜[_QrK2R(4Dl'9'8#LPǏ#ƔIZm8Eɮ8Jm6U)[Ҽr#y-?x,ؗ?s 2k$9i)&PISF[NcS?GO%s5ߟ`[⸗?A9/t͹pܲ')(%nD.; &\S};: I| A%,M񦼜XAxJe6jq W|-J;*M8^)-,5tQ(J^|(ƷcM[c*?ʲ)NPUZkJ/7&6EU'XKuV4pFQ⊥vEcj9W(hg7rU84焒WTz%Ž$FO 8IHdMk8%rqT0zn\QAtDE7\}*u>&gEqr}efR_pohdRx҂JqI} rR|=1)UOxo2)FPtǻ#JK9|,clӓy3V:eQy84w3IRs܎/&T~bΞ}UI_85W`Ǫ\2Bq^IŚ4|ے8gK-62Gl~r,_4[ڒٹMiSk"%-ŋo6ֽRSߨ%RxbGд1pY3oMtrřh/438rʣrIGE>h'㌛Ms'QKd|ŦJ=iMNy:8 dq=j\QNcNKrk"-,mя-<#(J 4MDvK\8I{z8r:5}/#8NVSS/'RWUF[[_n J߭` r*0\u%&ʝՖbR3OI996v,f눱a-WygD\yF-ӵ(&|J9ܛIF8Ȝ_ PIuI.|F(5|_`U(4c[d. ߫LG%d%ձ:>:7eb[d1(-1OZ:rS{(MZ+q)JfΓ^uxRī#+R͏ =߳Z=$5ORJXW2?_y3ͩ)qT.rFmb?-bS_ez8A]jM%I5>y$O׏شTܸ.Nx86WǛ<"e0<'EYvſ݉c^m/œ;rlI]ԛ J+IJB~ݦp}KInI+☣~6Gܒ];V}T@凉^(NO!(㗃k4pŖq2ڎ\}9SY{QէǍI4щ9#NprKÂR9Te۫XvI%AR9b^'qd tlӌqJir;EBR*O<Tw5v5O%JG5C{6[JXtߚ ٥Q'˫Q&Lm:{kάY1AE#iR qOnj>WCs˭ic 9!:ɧ+]!,{2}#m 8Ț%2̧7JQwռOŠɏI}ۧϓ'BX8=%r{_0>7krY²"d6_`)R(Xi}@dR7QM}[MRj\m||pihܾE 'q㤉dˏ*rN1|nI%,Z\Yd'~RKYf疛.7ơmx-Ij8\EZ􄿱רmiEO7µ*#q6d^\Y0ǑϏ 乼J5[%%{rPQC[\Z+ea4LqW_r+d3VEwj Cx9y$yWq͋bIb_09cr9),ST8ԓsZHNTeK|$'?!7<-C\*r<-i<-Za̵1\n_6Trfrw*LnYdIW3pN-+|9!'pd#:dLϙ'I6םNqR}8⾦qRڥvM:j&:'oUn X$pFkk]/Z;TPƪi?NE*;CXvۤ oȃ$rfHU[o("}[t&꺏)T%26BꄶJ9渽M*Q6ɡ>)-nk.˶-bߙ Ǡ5 3XLa@aL`c c)8F1w䨛81Ww)?9s%} c2h͓#U1غKc)7'm.0 `=eㄺ/a#җw˖riܤf1ϋ\\Ҕݤ:1 c?$ܜq:2smɌQh?ڪ jÃȎ~KJ9=ԗ5).HGČe]7+9% PJ*N b,5y&{\嶟~0]Xn {x*'ۙ-sf0bE.= m)ʾ&1f3j4Z$1 MڈCݶ;s\1d/y1Cޜ#yr)q9/1 ^rc{'1hSlx"tc .Gcy'ᤪ7/ٰϚ1uRPOcH.*1I_=Ǐpz~F1 64.;&XfCC& I-S= yrdvc l#6.FNQ~Qסo&\#rƷswRLJƔS;xqi{Eͨq1IWrK˓'\rNrUNbTT9J*ErԤ?umWBgX^ c-=<<s9~qt1D~77,bǓ:|!Mry"F)F1ւ4Oq>F1R񚔔Jܟ?MhI7&1 R;WϙLOU4i]La *朷U&_Sri$8c>')(m~,iHX#Oj^G&_sR=od6YKǒY1.[O̫ $Z#Hl__1!Lb+|c 21c1Q`11hugo-0.131.0/docs/static/images/contribute/000077500000000000000000000000001465312036400204645ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/contribute/development/000077500000000000000000000000001465312036400230065ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/contribute/development/accept-cla.png000066400000000000000000000606141465312036400255170ustar00rootroot00000000000000PNG  IHDRcfn pHYs  ~ IDATx읉[TG?`{g&d&k5n15}C(/("(.DDQD4(,_Ś9M駟ԩSU>_/ŋ'`jB!B1 h΄B!Bh4gB!B!4g3!B!3͙B!B͙Ls&B!39B!B͙М !B!Lh΄B!Bs&4gB!B93!B!3͙B!BH̹ >eA!B!T"Ls&B!Bs9B!B!4gB!B!\ ۯC!B!I@rrrhY<}4%%YYYO!B! дL(Gsv8ϟ?!B!~秥=zf@ggg3#B!B;Ls~3m&B!7▒g2gϞwAD\xƍ{=|ɓ'3!B!Qۮ5炂$%%ڵkܹn׮]Æ = ԪUe˖{UV^!CeffҜ !B!Tbs.,,|ITTO˖-:  4(888--T9B!Bq sƆcbb<==uvmΝLs&B!]c3gNƍUVԪUkذaNͥ9B!Bqks~yttt^W^boڴÇ4gB!B!njΏ?(4`eN:~~~)))4gB!B!ngΙիFY!C.^ӆќ !B!w]vU7Zj=zz*͙B!B[3>z5kVu'zꕔf{i΄B!Bs.Yfyxx̮]Jի311L!B!䍙ӧO/_^N}vuV??MȟkԨ1bĈT3!B!7`΅lܸ~>>>ʽ6l"y9sfff&͙B!BHEK:u/u֝7ox}u 4ؽ{ru3!B!L{Ef1L9geeTVMc3f_G;vL^reZ\'mڴ|rk3\L!B|ɽ8pٳg޽T\XXsC5uĉj4rg}h"YۤI>jҤIO<9B!B@###'=zĉ .\C9X%6gCڣGزÆ 1XaV\ U6#i΄B!ŋŊa7nܰ)0&tDD?ߺub%P}|9ksHHHݺu5EH\ѣGj.޽{?vڹԜW>rH5\}pBtttTTTlllZZ)gnBEIWjj;`n<|ǏUwqQ3;w̙3(,eҔ)S%B!pYfqpOp7p:c?Rl#b DB _3B/^tڵdV6ΜП3gN.]zcũ`?V?A5W~5N:A?xF4$><(_~AVpV]f͚QFxF>f٨vV^= TJJJmy !-7ߥ|%&&۝i΅6m]3N*;|7p!߽{wWsfӧv}ck׮5m׮]o=UӧOKɓ'c] De'44tڴifηo^`4gϞ-Z?!_reǎlTe@s&B^2%|7xϳY8Wu:]LsNNNӧfs322ׯ_o׮i.neyyy`UTi۶+F]a(rH4q~m߾k׮EEEdyl朝"_IwѥZ[0o޼ 3c/^b ˗/7޷on۶L!r…'O:=8L *b +<MJSd1Q2l+~TU:䬭ܽ{׸f{i>qsaaaXX֯_Vh_֨Q4ϹGU]v|nnnh+yѢEb7 Xp`sll_jլYÇ &MFTMa={̘1cD1'O_ÿϟ?fj„ k׮5b=z^r7nܰa0ΝS")*?6رC]@ͅCũSšP벹|2ecQQQ:˗7lQ{nܸΝ;m3UJJʦMH]vajq_,?p|PȎ,]+HJJ>"r uV`x(lnݺu `=& =s &''㘆cӲrUc`>>>Q߾};ڜ9s-[86J4;w^ZvĞ9cm\x;8<*qʑ6ٳnHXJ~B#}:~eUrEe6,B ~޷o : K"##LZv-ޱd̘1RA_PLdQooo$L'Q:u**EYL@T*ӒQ/홳ux,˭W4rĉaj4g ;%8LPt7"J*tCރ#K@Qm~%屿}8|Lc↣`Pe˖I4zRSS%8Lp,ٽ{~V$BHiY:*(Q( Tw5['opBkf%Ϯ́|تaUأZ3258((i¼j *IόSى;xiÔhj?n5 ` H P+=B!TdbY'+B!T,MiٰL?t/qS<ʪ0*!N3g80w)lҤI5 4^z9cm۶mR@w6;ݜ9"fv9'MfFQM1tP3r+3g,6lXxx+Wn%LϞ=Νj5gT4cǎK,+6Rs]*svʺ5YׄYWbp!cݻwcƬnO5Xٸ#8X3K:-Q`s勇ڝT%XX4۷pܹYO7]簰0SDdgPYÇ\mS9.0E U_6n8$\NJJJcǎ93㏐mI˗/+c77&2gH!R}exkB[ʆ\} =mȇcٌi挖رcutԩ,EO4AȾ}36mTXs<-6J|sYMգG3 BbϾ#e\ C24kn6vg!`i%(Ys@eɦB*իi p9<ؘDj[ǜ8LrCŋĜoKXh'ܦ9ČĜaƅ;vBP|"lΝ;YkZ8 V}-9#߈I6>݈ܰm}p7jE9h޽fl|1e0g6ӞZ/[ ?!*s6 s>zs[6Bh]6s!P8+N]8Ϥ9gM+'YbˈL&5ޭ$c9 PӅY&`e6l~/YDLSgBF9kfEB!-g̻#sML媷՜JqRsvgm0yv9>}O?-H˓>`͜ի,Fky$.g3YiGpR3W^^)w/ o fBF0l09CLL`%^>u;ꚶ32i-T+Jc֪gel}wjwcw~HӤͰ,aJJ!ǎ;zh"99϶l,Zz5PP]Ns޼y3`,g[oVarPT]3%(ɜ叁2iF.k22!ٌ7 ;/l6WFu"!BMLgT:G^4=g+,,DK4f͚e)?3TUV0Ý;wnݺVVlFȹ*Oց]Q'i+Ft%.}CE\G=dH޽{`נAc+^M-w53 ەC`}sn^u9k,Gz&={*ٳdӦMrݻ[HIi_ ?~ϹEh¦LqCîaÆ#G>z襓'Ϯ0gi(Eܽ{wx}WߜՔkfhӫ{%n؈h0U&0N1޸q/..N3G8u6pΝ;aӰ cVl:JWXD (7g -DK]{k*lҥEo0%MsFrKV~cCD ֧Nhr;8aO!ސ2'\'0VLr@wڅR!=P)KN dHYn<[2Jѓ~f5t].(,^8)) `"!BJk)_a}򬞟3i[&N0缼 686o۶McgD}I/ d>} Tq Fe;{Y>g/Myv9+-lmzغQpu1,I[wnu}1k~;049brUc"Lks6ȱ")\>}ĹQA0%/r, w{W2{g^>El>B\v1ƣ|b oJ2COS鉸/tB)!DYBq[.\yv8JA%{X̹ AVlƤYQ+TFy6v997i$..N£9sq.]Fbs//+VB_sssnjSz7lO]m΄JtsI}߾}rkBF;&BH\ ;ylׄI^V)ڬRC"Ϫ7Y>֭[`#Fv89O0d\ǎ8DQ]ߗ.]okժUNk׮9s֜xy9BL摉,Yj֭ IDATRCEdlŋe$?UY2}t7xB!Y\pA.dCհZ1`DY95f%:c[WhsNͭnZ֭^~I&ͻyѣ͛7Ceⱺu:uJ~ yִ+v,4gBBh T2x`DL!B!ę bcc mݺ6ݓsqFm۶[nR6l8zhFFLT&3Yi΄B!Bl7nҥKiuxzzFDDػڵkg͙B!B.s~葯oUwGW^5#ddswΝMUӜ !B!sƩQFݗ-[k׮={L0C&y'EӜ !B!8ӜArrr>} ~gnÖm۶=ˊL!B!o9nڴɱ-իWSќ !B!8ߜAzzz~*9{zzFEE@h΄B!63 [np9rdVV͙B!BkСC2 ŽXh΄B!saaΝ;ׯ>vvLj&MMs&B!R |||`œ۴is͙B!B^s.]ԩks v]PP@s&B!R\XXxƍ6{xx̜9333囀L!B!o9O._N:5j1bDjj7͙B!BvsXY<<<ʙTRz={&&&|sМ !B!<=f͚n%}IJJ*,,9B!By,OxUiٲ#""+EӜ !B!\j s^xqWgWlyBujDaB!Bs9W2sZiBǖ_m-˭_QB!3͙|v-oǖ%|wS"L!Bh4Jf_luEgEKa+)MZ+{Cdh\n"L!Bh4石9/^8111??_cǎȯC {#GJ\OnnܸWU/~|a^eI/神rjʳf#]ߎȤ캭\Y3%fՈ0!B9Ӝ+9wҥ=z={y 8((h˖-111999XɸqCK.KnݺKo-eIߓ";!>i˳^)G.Y*E󵣃\?%ڼREB!МiΕ̜;w ;-ѣ֭[ׯ_^1 4h߾}dd/|sܹ׆0yyyBxooXZm,){LʹY΅?ëY*أ^JNʼn6Tb&B!4gs%3N:AM;VyF͚5kQL&Mnݺ:t@#ٳgmǏݻ78p8/Ǚ?~91˛Ɲ^΅?lIK:~eܹ0fׄ}n_ܽqXmm\h[qW3~InYΑ1'^ʌ3·ռqg+unk }P{Z.?_Ys-5n؋s3Ռ?Xdy܋3ʺO濗{['Z~I1ܖEB!МiΕϜKd`ƍ$+iӦm۶5}ƍO~77XaʙI/e(ڵă]T-U܏s0[fȯN=%/J [AY73j=j.6Q/Lxsq{6ؠʸV[ t07OEĆ2~fIesG]  τ;5lW?L/aB!Bs9W2slw۷@8 Y͚5/,);K_C}-?0GvexY~(. gص'-~=E?-{'Zt?b=3?8܎XI/Pj:Ûq W;v};aV\?>J>Kn%w5/,μ}i VbЙ=lHOCq'?r܉]D3X !B͙\̹<@;:% „l_۶mx͛߉"N3+|ozoְ'_9gBkE33=Y Q/jNGyd?Jֿp{Kƾ`u·k|䢍n(_ _|9{{,3@3򧃫?ϸsz9?'x.+w-CWt.?1ٸ! }+DA^lE^Y^fvb&B!4gs%34#_;6`1ga"##o߾ڵf͚<翏|trq7v:CYcGV`0O|M*ڢ\߿Lrbk;?:ֆJn]x~wccɾK~=ȜOn(_}:A3>[dŻkF>!?>>t!NmWOQ axE3ȭi9и!k?SNʒ͋R-?ܮf^,„B!Lsd_Bb߸q 8dŜܹgݻשS>}{%O vM;jGQkEceg,*Myq ;1X~,Xr|˗|LV^{_1ʝIgoE^LO 'cl ޾,i?^%w#|&V~[hS"L!Bh4Jfm5سgׯ .贃5oë>,D>#743zx£A9@y֐~;ˣ'>sikC|-yn]ߌ _NL_TdΡӬti qӊxGȟ;X Kb~!ů-iv`&;~Vӆlܐ:_Yrnů]D3X !B͙\/hӦ#ot/OѿgΜ&!![\|Ǐi?X'Njzholj\~An,ZYupǹ9gٿC, n0gfۊ^ѿ4Ƀޝ2݀r<{,9臕 J'_=$>q );:kԺG<9bWE;-v;07NG&a޾D,p*kF"M#?W*N3EB!МiΕ̜[nݪU+ݶmWڵkܫW/>|͚5kԨa|>l/k׾[NJ66zآ⅞~GϞКQa.)S=z__Nlmsn F~_O(2A$^AxH#XX⹾q+?Qg8Go=߿A?z:=0ۋ{Tiދ m`VNxJ ϟW_DbwaB!Bs9W2snѢE˖-7jԨiӦݤUVN2eX8j(ٳ'>yf:} 4l^vm۷Uk?^yfĺ_e!|7Modž"zxfwc!'FO.q!>xug^:}鈏-1iڍ+Ozt牭m/|zTDNE7E߿y(g=t+ cgĺFƭg4 +'UtAj̇ s jrz73.ee.>ֽPas_d3G~nȬ_%;0!B9Ӝ+97o?/ãnݺ5\~}ҤI7F=z3 .\hs'~cvG{f#㯲p>}<3޿`VxoՌRbI[[#9j%|)k>_,<_=w}x 'w28L'c߬aycf?Ntl_yg܉W6.ۺ|p !Mi>}\g!Ds-yg&B!4gs%3fz4iҤf͚UV{.] 2p-[֨Q ի׶gթS֯_jժa+6]ms߷ޓ G;ׯ6NWY>)}gD`3~I9^4޿aے:ַٱbF+.WIS67X2s;iw 1[|u~]iwm=0߾#Bg;7xq8rJydǎFll,͵kkJJ ?~g{ޕ'f'J=N? <@ho9GGG/^8 A˗/#ҥKsrr8pjժݺu~s0a\<ۺuV'myɓ'h^O|… vq7fڵuǎڿʕ'OD޽{`M6]p-~HիW, ?;iVtB>q"{֭ <~ɢ͛inUܴ@h4g{9Ӝ ͙\DjjjZP9rD-,((iӦhP._G͛7G;w֭{qmƍ4mr#/^غu+ڵk۶m>}Νl2gDwڅ4k֬UVcƌVblD 61--ʹڨ^xq4iҥKl(''GǜKG"nq޽YfaCHzɗ#911Qkff&k_}7߬_Glă;qD|}QDDDΝBF?D3g]viӦȇFAaIǎ[:t޽{)8uT|>{ e* Z@߾}e4| eҥK_)COXa^^B߿_lf/&#`gmƏyEs rr81$N3˖-C`۷ 楋/!Cسg_~|/\0vXlL_;H8mlc={ "iѢC&4Lv#G"۴is3~ٳg#HdcŮ򞿿_|1bu~0XöyI?m۶bǥF-z]c۷abXt޹s=s.1kc+qqqa)6g*gyATqc3["'C7mڄpPwj͚55sc\^MPR.ҲeK,É ?ԍ/Xp4-oeHHR%fa/Y'{5${sLE &7!(w(}ӧO^,9Hk E=o>SqL/Dk)SPМ ͙AAAP+S%в%7n@-#'W4p6d,6TiX/˰[Qw-0jѼ@~:9Bs8Nԩu5ub`2*jjrS 4\,lrDFfr`:h! ' `!bN-4A͡%Mب(C]=:;ࢱ8XիWػ ZfRU(Xi~ԨQHRؠj𥧧c vJPG ժU| ZX '8k3Cb(6!!D@?ًDOpG>0ee/1gNX sYSd3 6!+DS4id`E;⌅(Vhr)iԨd{{^$0K:_5-9 &섕/Oh?3I`X tDv>ce9pJrYv)9&Po:V?vdTAh_ 2X~ >r V4nӲN)5KϘ1C)>YAb(I3̀4CT8*Bu*S*|c =P$ќu\vDjr`3㕳DS*R# [Su B%Kx3gΛ6RI%r P3cGCX'2Y7>{L Űb%P)/J5N,7o,qYW!ǎrfݕf[׮] m̿g/?UIZW#I0uT,D큵=*i΄Ls.a0I$:"СC,?~:>5tߜoߎhgeewVZ*sU#Ufllk֬ZDVl欳VsXh(KRXɨf4v''Q9zMG߹W8;Cl^SXj8UdNi} j lWNhĨ& 4LC(]Ŧ9sI7)Lф*m6D, ŋP^hhBn8GlxbY&\PW[^CW_*Ay,?q,AnW4f.Ui#( 9݋&(HB$eM?yDtK5^Qj.\(€ͩ4i#Pñw)FbdQ,PvKLvՙASU%ޥ3FOّ 6%&&߿XNy&h" 87HUګ sssUG6ʔfB]͛7Qm:&R)z֎74YXNa;LMHdT7έ6g{A(`[ҴPך^^^fivflekԨ Uخ>\R=ۚ%^~CT!f|*Z%fKt@/Lh4"PKMFwBKzt2ܹs Scy1:1gRi:T-9Khnr90g}4t9cpӳxo~p%&hږ$M>]?.ZAcšK&LIS r)AT -Em%-91g >M<˿{v9х@Ѷ#یe1LFUpˎ@ 8}1 I۶mS="(d9p{RdZDzKiѢЖ1ʜU3@ OTp*ECnVf0UL# } vQc/+DLk.޴#%f&8ʪZY ɥ cf}cudGP %f2p+Rc8`j BIΣ, P&1bDY3e3焄l3(eh2gI5x`JdXN6rtrtĕߜ̦9|дL -i^fszDP1u^ T9/98H.w9քΚ5K`[/ ]Xhۨxbm55ܐoz luRĦMf/ҵ<,2vmo2myӦM .T2$թ~ֲ#:_hK9`uAūKYr3BEhh1hlΦyTqlJ:®,q98A^F%fȣ LDbBs&4gs,____w.a0L7LiAG惹|9kV2̞9҅cd `Ӎy1g\}sFbMqhFxyyA'd*]Y "ZXЈ\\tTU5[e0g,71Z l\Xv2[ms+HxԨQm!9嫺)Դ%8JcräxG޸9KVoժ'AjTK+Rg~y^/M T%s)o)Nd'/9ٳǴ\ RȜeΚGA5-͙f8L:®,q98A%"[5ӤEjԘTM4gBs9kL\l]TjH{%(plΨUm>C!)BMs֌͛7mE2ю=s;Mw<,s$$7{3nP Y Al>r䈩:Z1gnE_*Y]Xj0\s7uBq|A:i jY( =ꦓ5N|fivfY2&Ști"zМ ͙\9e,g۷L:tPKƦ(nkў9ئ;,&piΚEPNHƉvB J%GU͜9S4d捫4nX7U~sv-9*q4&)~g١(ldIQT3oqJ7N9V*s1TQ?Yc"7ȡIal!:Ta,1A`|̄aÌ5m۶/:$ !cJЪ'~[ha/#}2 kي4@SiGEEIKDsW) (M<欦43= $NG ꊊ1gՠG)3.Lf-d:͕:cuJee.6&R)7pCgGeXd͝KCT)r6)9שST0%%EmVjȜeGA_~`rͤ)j`U+9k8{AyyyCm٫W/PIY(12Ⱥ#<9k,МiίՉ8βhyZF 29 ZjU˖-.dL㣌@ĈƏ:4,, Ayr2N$r4gʴX͛Y&svL zyc1lР鎚ɜտDpʜ:u*pBy`T,0Y M$4AS2Dعs'FUզMuMH%KHCӜeff{͑H7DF 2d3kLҦ5k`K.}O+9=DLdQŇQ=--MZ 5Ee*KԳIh̞= >H{Ŋ+&- 5LH޷lC))yxx (%|G{1(p$ޚlΪٍZ).z4UR^盞b"sF )BQ ͜9SFVgC&£CBfQYT\lRyAT" wmeh4iTzbH[$>z_)90q8j{E5vkȜhΚGUfxի0NJfivfInnB8/#Zg//9k8{I'1ܹܹsQ"YLQ3MplժL 3qDgD |N9Ӝ횳\WSGH{ըiDe~~>iBL</KzRQ*ׯ?guZߜ5c|l(p7Mqi2gYT6twVs"!9:r%*Ic=5g91C ᢀgs7;pʄMI/>&4g 2EMͬ1yY|&Zc&`Ahg.9;@RƤ:-v1&8kah j{vq5(EOvQ8hJ :f$66VRԡm+>&,85jt2xXD,r"]mZަ<,meUh ->X"7-Yz "=lB###IdBU##>d< {!inZ22p m>ܞ#|ܺN!E&{uRz(9caJ#[B{T?9ќ l"cNivf\ISQNs,q9r?#h-Mn߾-&!ơ4gBs~Ybb 6Oĉի J.^آgxV 8zǝ~T҈:D=z$)-1epnCH8k' >Zo߿tcU?ً ZWMlo7IIISډ\"MOOG~ܼܺy[vM:,ZPKUewLO7-[ V#v&@uu[/mB}*c``++ yATP߸qA寐atv a+DXexIAv鉬u#~ET_)%6KPe(n%ݘσ˖&YA|tdBs9ͻ={/X#BHA...ni7 ȉt9sMs&Fn߾i{.]*#Ls&?[*'O49% Gq98[)))R7 'g|^@Yq!O4gGpުU+%m!֧Bs9-2e&MF47o~=!گj̘1 |,#oyE`2)i4g3ɹVZ~QhBs9wN:ukn߾KU !-r( DO>_~݃-9/H3f{^ERT^gξ/{r%+WԩS:uP"Zh1~xwМi4gB!B!4g3!B!3͙B!B͙L!B!Ls&B!Bs9B!B93!B!М ͙B!Bh4g3!B!Мi4gB!B!4g3!B!3͙B!B͙L!B!Ls&B!Bs9B!B93!B!М ͙B!BhL23!B!Мi4gB!B!4g3!B!3͙B!B͙L!B!PDIDATLs&B!Bs9B!B93!B!М ͙B!Bh΄L!ߞݫ0P} JKЀi{#rQΥ|c"mr>A9dk7Rz<thibUrn/< C3fDZ6_m|z(U!;Zu>Xr+˲\8rV(g rV(g rV@9 @)EIENDB`hugo-0.131.0/docs/static/images/contribute/development/copy-remote-url.png000066400000000000000000000161001465312036400265550ustar00rootroot00000000000000PNG  IHDR;0c pHYs  ~IDATxMO"D)#)%rt%-\JH5BJi̐14c!I|y?zW{><欳k|.L&d2ESd2L &d2L&d27L&d2n0L&d`2L&ɸA)HX`2ڮΟ?_ejjj2e"n~5dj:vX6bs[ZZZWW)~X,`2ڨ0GZ+tWUUY@XYY XpE'sCYY kd& K "e `X]]}9\z!pQ;eX}E&F0~n8y'2 5,I=+¸nehP.^xd2Q]Pb@{&9-!djZ_gEo$FS"b1=pCۢLqQVVfaɣjqCfŋf[M&6 fM~77L+ uuu &dnf=0n0n˔HgΜ1n07db˗~ERw/8NEEE^ȪUWtv g8|p>f'7y7yTUU|Çyyy۶m駟2㋊vܹe^ܹsWgϞUYYY+F$BaS|xbX~~~iӦ]wuÆ {{ݧOC\kR~;^_~ s=~qv  B Gx< /qZ6|vmΐ%ՋI )؇ &<_ukfxG|!RE ҥKok믿_v3Lbe%?lvl-*++=yjAn`hԩxX {~iinx-'W#7̞= 3g<|prOSg22o%X!Y)֬Y$cǎPR㆓'O[>K/$΂ =~Wwy'Wfv߉X}w/7?jn8ʕ+IgU?~ԨQ .3 ,_jժ1cr|sòe!a 2e,Z*C!K r=yP=Kʀaaa{N;vL8&2/^qzʵ;AnXM$D EM IC!"q)V\^w|ӻwo6AݱcGܒ1ގ!"1Q)d5BoF еkWHRB8@'"</FwW|ddJjBݤWVVFL_M:USs/9ܐl;CE&liӦ@ rUn9 A9~8@tT~G=3"䧍φW[l!r@`mղR p7=?^]Oe8p^{ᇹpۧU[[`$XPP S_~=_Q0{vJC P .;>Lވ1;w.rC%E?DbH91OBwI??L}{sßɋQlSNf,N!B ?'GМXcHx'OP vnHz)[{߂ 7s' ~@nQqt~qIIۺu+2HE[=1ctL]%+Jl 7 |҈#(Dx3fA#zt)nA!Yn}RO>g\KpСCݸRR:Ez!rԩ- L<Ϯ^ "蓟Q_˗/'I'>R䞑lj)$$ ɶl܀H9)/;EAi,!7|_׬Y>D@7̋#pä z%>U4ۦMtX /S4d8q"O.]YYw܀eu:\ ".>^p9zW&>vGy·UGRls%v|]L6zq:"s+pnDt!Yn#ib q=x`w.KYїdϦ3Inhll ʕ+Iܶm[t(Ks2 }QQd[6n1B*_gJB% \qäIe'z{1 7 N sÞ={ԉq߾}]>s挮ē"[%AdceH.2DW%!z<"I +Y s33Q'(Afqc77˜pW<><?+aXvANO~ȂZ# M(XtntT߾}D,uKp +:0\ꫯ Ls+ gΝ;ĺ"]M߽{7yfϞ4|w;!L@p,7$۲páCdrunJDNޚF-lka7$kR8#;>("Je97[u_ٓS?N ,Hʚȑ## sXx.2{!z͔3-(!BbPz[DBnЇ(!8(Ύ"nS,WGOi&A]#e%,ܠ>4$ H}ux5 Rَe+c ̇`s:t(w17mCpë9EKc {N,} r9cǎug̘.]vӧOcc'l SL!?"14./"}ɶl87n--- a^R XnmbFtntN Zm hҷEʠ@m%($& 2+G/\d={-(C|ẅCIrx襒Q\q㴕'\(jɒ'nm` Z $1ZDz+UUUgK, $e UՏ́C,M+>|xe|ӕ&pa8przy-HAlMqy,k֬Qawdn˓118v7@a̙t ǥ\w_I_qN^;wq)A0*ڿ?ҥK}*% !aJ잓C}DE\.7иZlj7|eG#7ސڑ,B&%! dL:-=8!Y@P]vˀ R"e37rBu<=D>Y5w(#K"9'&7D,t{ 12;~fd01rJlB S] m,B+ITkKpC,70x qr{IXjCrP ?X* C,Ot8x8EiIp<R7PKI޽n#mcǎŠ>"7a" MWe3aUUPrDswѩS"ڢxQ߬zn # .sˬC`:n^ᆈ4gE˕ MStԓ+kRo \Z|~aP[xf"}p%kJ,7c7:wLQXXHٳg׮]I J4i477W(駟^ijMYf7H-,7P@n޽;v^Z'1BƜ9s<^̙3:ϷNlr{͛7K[&U*|Lq tqԩdGg[֤.ps9lqnhJaȑ#aM6ҥKK.եnݺ1<2;=nm7.(G p5rCےX,%=Jxa7I޽{9Us-fJ$. oY 9yd:{5L)k!{(7wD fƩ|+;I]`2n0n0L I)/0nܸTNNN޽LW%71%L7Lm5uuu"jݺu)"qqdZmQf̻ɣ d``76%RMMq!mqɸd27DE3&pÅ Oɸdj'ܐ嶨ܸr |gPS420n0iM``^-\P9|pmmqdܐ eeeަz&r!ym)HǏL YhN8}/O_8 ̾IO_WO/2f0 h a՛L6*{yy9=:۬ӧ/.4o;r)|d2'+69ګh}@{tL&d2Eqd2L&d2L &d2L&d27L&d2n0L&T`qIENDB`hugo-0.131.0/docs/static/images/contribute/development/forking-a-repository.png000066400000000000000000000110001465312036400275760ustar00rootroot00000000000000PNG  IHDRA6 pHYs  ~IDATx[U*+*-n4YYy)45aVYb=Qhy̼DQWA.p<;s8ιr80{3ڟ̞àM&)4Țd2L&ɸf2L5d2L&qd2L&ɸf2L5d2L&_577;v/Sji`09s #"?~< #ayuq ; D 7]VSS5Ne`!qGɓ'1'_\Sjiӝj%b i~<5"c\_xsM<5QZr- ~2QUDD 2׎=jvc\K:::a&a\S;w\nZz;MҒk H~XKW9sׂ`WZI623Ee`ɸ>\K׼\3׌k5q͸f\3׌kiƵx3;Mk._vڵiӦ?3dCrss:}q-\?;MƵxp-RAKqMǏ\lո\knnhPp^\onUUz/L623~Ǝuh. ;޸q#{v|4FR\4k֬*((KƵs iL5l09ЛEJ={D[nٲ)8~}+f]x1444xseTwҸ0P݅ql;d`3fxwWwN:uԹs~1 i$mkkkCOՔ\gMֿ\+..k&}kϜ9S-,Rwq~z2k͛7l0 FLswʔ)50{ᡇy? }uI?Ws1bWȁ'չΚHĵ˗-ZH}:,?3k\\%ngyFr%^C\s7W.Ln\tzz-'֭SZ5b 5xyMkҀFZrkN'K̰MHFG5G.nlǎ999x.˸q?̙3)Orliii_5+75IcK|qpaKflIa3\{deeQDJ60fo[/ g'|'`sr2 PhX\QG/hСCIy'FH:uJq4q᤼Uzm"=~뒓k9˾+ ># ;9dwÆ :jp;k<c_jU_\Z"r$EǠ*//Z***52H$vZ$l٢JNx:̜ˣ\\.8G'׈t51a 5Bi Mr>gs R5\BNaά4#hOq]o޼5)פ8F);f.5ۏk*\#Ħ0\od(UUUI> ?Wo#%Xt*++!$-b I\|K30bCrkǴLDL^oA[ʭѣGGʵI4Qv<WTJz$!5Br/RL]oiiQ˔yNƅΥƃ"N7v^]]%kȑ#eJk\Cff&Y ,p. d\FMJp 1ZY(j9@CŋK jibB~\.{Ma17J蕀GyDHI])wdO?7ZHb} ,rr /RYFS__j\ebEEE֬YҵHL]u+Ξ=#Bu *+)LuuuZL1'h"ٳPIX5/= YaT̚5 TI15۷ŠRC2eIE5NJoR^y啐FQM7sQ\116'ڜWPbf0a mb:]%x4;Zpa7^SSɺE]x/BoKl>qDo%!*1To &hs. y8Q_Z[YYY\є }q yQ/5@nY^H+>,R)poeI_ԩSڌ3(,Yz\'Ԝ\)SL1]Ys!b7\\O>-”Վx?h9qℬLB{хq|>6lSY3 _xt'إSٺ&Š -Öa,vEr )3j(}*,X>طo$:Kc!Ai䷰q 1r 5YTL1srr!\/1T.c}L"0D!G;\AVc&\sU2y.ȵ+V!QsrիeHI]n\wsas䳶R] DvZ WiY9J&ݬtu :]"_Z7$E^I|RfҥR.RyMf䚬 W#I7}R?ФI$7\pKqԩS)0{lXk_\+'YӅ\I\3,_C_Zp!|kHߐfdd7I'ty*fsH<i/\7oذaT.\RtVS\tQf/ARH^0ZIIPL2 < 'BuHk%IxjqZklrNaD 3]$.]%kHa&)lsssG&Ȩ>{9p%g,((˖-/" |"V`:DݒqMD'#zSD\![Dk;aϾؽ{rArzpHQ0H֒%K\4o}!aq"8fnbcXZ(v9C>bWb┕lE I[TTGmwWNoӫtkk؛gHmܹs[#Z ~ިSbs(3wfjJ׺5 R:(\#4-,,`\\0^8h+Fɓ')3 D~/bt;3gN084u,bAq-r( Uwǎ5B̧gg2%k/m̯oq-֒.GM׼\wjjjt6۶m[KJZccc)ed\x)\!Vd\3׮]92М;MkߩO~X2Ciɵ/5qM.ϵ q-`Eǵ& XsdΙRFi5 kUUUfA\/ϵNqks0G,- ]p!}Y 9; i:ϟm555Lǭ?]սαŝcO/ 9 /+"K}CgmqP!&;nJjwš>#tK+mmmaAL&Szɸf2k&d\3L&d2L&ɸf2k&d\3L&d2L&ɭ!N IENDB`hugo-0.131.0/docs/static/images/contribute/development/open-pull-request.png000066400000000000000000001326541465312036400271300ustar00rootroot00000000000000PNG  IHDR)m pHYs  ~ IDATx읇[UIڝMt=:Ms APrHTrNdP^y<<߇޺uΩSܗﭪ0*Gp:`>Op:`>Op:`>Op擙7s΋tn߾v֭Q;wtttN(`!ܹs̮*`ttt<|Нׯ3`߻wϝ38tT%u;9q^Op:`>Op:`>Op:`>{hhhϏ9qĹsErr$>x׉ⰰ z8xm{x}gܹs'#A^^5/,,:טgq(8tZ^HTm8fffwMRYY)os'/V044tʕ䜜7nDGGG{{YԲQ =Ijllr6l(**U&Aʿ.y"ڼ%ڵk:P!!!/sM)K!^N$;U~j9ۿ4$IKG=ӧOKQKtBM%H }?BU!/AŋP^*p^%nԀ.:ҕ &ֺ`ttt۶mOmnn_à|ԩ_fϿo#""y$??M{mHOO߼ysqqIw8Ɵ2kT{y$$J;݌Qի5"IԒb8\mmmRȳgrS%kii $s61_<==~s9rY oQEO<999o5… 3 LJJzIԝ.[SSt_xPZ҄{{^8.]7YI7c{nٲe䈷z޽{ζ;uwݷoÝgddhr{nL.1tAշlЙ. )l~0!AksخIwao1/M``è":sʕ0v먎ǡC +**dWo{{PNsjI{&5499Y"j<==5_[__wIIFS>#{[#-+Wjo_{Išb et"MMTLLFONZx~$/n޼)?+CIWWǓ:Lcl ?ckÇ?CcȡCz{{_׿USV^٤) $uvv~7uV}J|_re{-C_C&C*auf2Ɯ-fEzklb>5uзz+++Kzgk.\HII}<70MI$b ݻ%%%6瞞hi&JǏK1144455b}vttHݻwccc*%o͆rPP/[:uJڻϜ-JNl%d&Rmw!CS`9l~3g$$$<3So! v3F-iq~$y4`gs =*aAenp($HȲ2 #78 ARRx2<<'1MU[[MI,;%<---#u䟂) 9KKKmv"gsdsⲇ"ٿ%CPPPyy0C/s35}g&QZb;P DvKDk`t%7q'Rjmm RfiIo3S\rE,XČ1//_ڦ'YI7铺IKK;ydQDDMP5}:I #1A}se3F9Y%Ib~~-CH6Xds^R[nI1֭[uWqnvtRDBlZۊCvfkɗS7qGՁNFݻw;*11Qp?i\J02C]d, e4x KDj@y$ƍYRv%-͛7K-)ׯ +X>{:1[IVR$,JN9c<&(Sv%[ٳGweirI^Z{yi&ٳUzjOOOiJH*׮] @ 111Ւ63Νm>vtt?v߿_"t)&_I46hy!_m+!BC|${vy+?55URrrr$ٿFoրV[[f\D$YR@:-+;lǒ'U wLRW r+"AOJ=I'M`0YgنMMMՖ>Dy!E1J;tlN0t$AOZnx``m۴}hVqHKEնw>ǖyZn`M~%VWDnƞ4}"m3 jH/}ڧ+// -7 ___˖")ٲĤxr$q2޷9ӧOKzGGTbnooWkOcS![ZqwXȡ! ژ|*oq`WY˔Hw%ԚY/_1tk5ޓ>/_tRi %Q.166?qH'VDh: N),,ԐdR$RK6qo$93C 44w*1ѤV5ˮKG8zƇvlfOv t(mS Wb:K0U?+>>ަQ)m8^>|֕dPI4kYoܸqÆ &vvաHK,}  [Ot)M bBN\y6v褁nr5kAlʕ&:_Ƕ"qUt,5jԚ1J;tlN0,onȶ3xHpo5hW4&eɒ%?YZtǡsocKDڧ@d^!vj9벥klVFe\uޫ˴ĤٌKఐҽĴ4a#uby9v\m0Xi^=݊$8jX8΀g}]iWio!P~_K޽{l_WNr̚qmں=y{9_fC:t:BSxrܵ5iLNN64ZPRR")n:t[nxCQkC'm)}!'ILq5y:sk` 8<h1f:tִ͌Q~_kHktjzzzg=jYKؠ?7:uN)rfP΄Wf-иi):F>R xlARECxyO,Y 7աsg7-%}ᬖ<0$|frw%[O3᰻7cOfL:-Cg>ƙCñ. ixSSS<== W gzq'))ɅC뇋\7.m׏$/iP$%''罚͏=2#cccG%ҕɟxVԹ3KȽcqoC'P gէu$G~cEal6 b}.MXgf `K[Ppǡ=zG*`Uޤ5l`۷[4O_ҵCf:tlf0=[nA0?g.Z$h]̦0[}'e/5ϯ~+yp=Au:8w?Ce(!~$,KݺpsTm];3<ЙCgt!9kj:p 7ux\;tufM: }N۶m*C7>>lkpႴ a0`L:++1M08/~ }x%8 D ΝM tx pv2-秬̌q}{I[>f?fr{Ynƞf6u\ ӟuǡʡs2|葼sJ4j)//#Jw&]xQ]"үЎhII<:t 6HkRbJrt$WTThھG C9-NO~>,A@"|#=Oi-IljNF]aa&J[N755U,NgBdTr 555A.IyrC Aws=:t 7 ()MGY7 X3"NsɬC<99Yɰk. a=̣Cxr(L-=d ["fWq7 wj̹4*)%@!Qkǎ4#*`pp׬'C'ǒެN ӽIshhugơ{<97DT(Rc ҈f;2x&ݬFIo2wޑM wC&CwZJGbs8t'3{iU'Otd7{zt4x{{YywqlK5%FMь"'\chU$ID1{vXH9w:['200]CFo9sKY}ܞ<11!:؆>i?Iń HL; }3>ZQkI3bb1,ѬR'g(iWXZN/U.H/Td0%ݻ[DY!CCC9 r k^ 9X'QEg?j&nCwZJG}Hs 'C׮]kmmC9{'K?l/e((tѴ}#Qv; l"l(ٳCե&u$CNrjϹXd]5C~$X˿.^?ps{нNHNN r!&V̜ s'{ͬL: ؛qs8tpgp%''O"/(&&NKLL c I鑎.+v7VK{զKsȥKOx1ƘÞx{K(IEee+///33snOqxk|C0'8t |C0'8t qgwrxp: IDAT`>Op:ݻ8t(C0}#!B!B!u$]~_B!B!r_}o~1\PB!B! !B!B!4oCB!B!B!B!B8t8t!B!B!B!B!CCB!B!B!B!B8t:t::E!B!B}uN:t}}}{^@.uB!B!l}ԩ(3Q q9Jzmr^eeeR珍O[[[lُq 6H šؔG ,Q&ݹsGN̙3RRWR&O||˗[Idk׮Y|!!!rAAAmp9߳g&'' Y?}葜\2HKtd?qqqrd֪vv}1%Ӕ]Y,e<R9cFMMd{C*70"<<<233`zC$ĉQQQ~~~^^^۶muf||Z]]m#G<==udܲe͛3Flݺׯ֮]+)/^n V $6ӧR)Nݻwq %%##[rI %ED>D9 EBBgIHmܹsz"ܼyS> 9| v%)Gi)}[]vM򤥥\ycǎ Ȯ䭩|zFϟ \f455ݶ}v(rrD9!66V2H"""b7m$eѡk!uu)7//O)V7n4[ɝ&;?~\Kas;&r_ɹhmHڐ2K^RHɆIL=su١߳gϚ5k=<<ͧbUWWg3C788(6o,2>=6m:yyrmf4Iʾ}V^m1I~ykF)[n6##CjRRRvl֦)RRZ,W5رC6w uf4E8qj~I-ڵ ږjݪ'%o[[[4z{{堲C)!dIѡFQr\f<\V|9۷K?&&&FvOkƠ}Jyyy=ŋMn߾qF%_s3w2{zz?~|׮]7n ۺu0{zyy=x۷uܓNlؾ}d]*..Rt<[_@@5l6Y&aԡ/Zf6rQrdS)|ڲeթT(::ZIyc=)ԓ.'9ZS CKbWW1zruڡۼy$FEE9RI:|d3.neU&C-6md=333u """\|ĻwJѣGm2Gu[t)QQQ:|"TVV 222sZ=Δi٬%'f> %6..N,fP'ܹs^I<ѡ ϷO{R6͠0`hI0gtutޫknݺӜ]_ettISNG.N5Ӑe 6XwuuQz8qM166E T^^nf݃<<<|}}ٳgm2wm+t۷lbMpႇ$CAAvC-3t:tօҡSHc#9wgNVhh5QmcǎTooo=d򑙤6l0ԶmۜՉ֤V93:t6 +dffp[n߿_jGM^bg׆p95-zDpw }85𷰰0Ioiiyġ;|Cwb^c:89C=rGw脃_~llL*D>*,,tvdT536C`,G|XWW'Uo4==n\$ڬܯx0uHQcc>S١օ[[[###sްa~*98zjl\CllիW;|jɱ֯_/ǒBj 5 )|jn>"ٜf ^ Gtա3˺j.BjRa9rD1-|wxvyիWرСCV3 xzznڴB2߿k߼ySv.ڼy$Ç`ƍk֬ٸqcII%00'NwOf:Y;w:~֭[mLFd*ښǎ3d۰aömۊ}||tÇruRSSJ咥xyy>>''z^mmm.GnujƍVG#=)wyQQQ!b/"5p`F~v444lŮ޸qc``ǘ7>>+G7˓011'Й s+訜u .9'{Ί$,c#U!K8;͛KNY2XV!7٧U-rLl8222+%5&L}!d >? ~l&&&9q,Co8t?"}}} (UϜ5en.CCC#2::7󏏏|C0'8t |C0'8t |C0'8tpk-!B!B!j)Q?11%#ͣCm!B!B5x֒zB!B!Bkt8tB!B!l\82]K} j!B!Bjr8tT%B!B!Bs͚m8t!B!B!B!B!CCB!B!B!B!-~BG$x'B!B!f)Q\B),pn B!B!Fwf{"K"B!B!F(hB?Pu!B!zٚ}ET*8t!B!Э-b[7J?\~?0B!B!f8tE_l!R !B!zՅo !R8t!B!mBB!B!9t^WnU٭O(-xp w(uxB!B=C]9h&VO+%_>ϮmԘH^Wr?[#k4+]yqٍDUB!BhǕO7Vuқbڤ jU?]V}ggsᛠ,vC?}1mn}΂5Z>K=V.\˸G?ٍo@sYư{NMxtK{^ª ~)drSO˅W,Y5+BǡPzDzg׉]u@g܌R]>yim蕭gucw,ٖ˟H|юy兼]O_[QZS޷s+U&%ŝx:(6,tMyы}[tVMIהKvo/Y|ڍn+tjW WtW>["S:n7TeY 4~e?ҍQ|%(?vƛܾ2.5p?L뎎8DGo;HgoW 97䫚t64x硾W6zROQM G!^nU2+]MM1oup՞!7y}.MxE¤C6޽\~wWe:ۢ>ô豉ZQrZ/I|-CVG7J3>>Sl9aq;/CWrμH~3cOn]H ݝw29 9[C{:bW¡G{Զ[7OһWDܖ,*Vx7Fkcpwx34WŹzCWr5k5е6KIFn5ݏyY!V6K !1u{S{In+qaXkUΧk9b%K޷n/Mzq% G >!CѪOʬO&$~d[IY[^2֖|a=k ?QD>m_(d'A!ʞtW?=KeU^W?Nm tvǏuNKci,{Rxkʙj6ki\O4]N\S⛃g).!;|r-`2x}*_}y w2UxK2}8۳prA#ͣ\'~#C}фf-{b"5끛>aBvJ·}%{S7qKƛʒMġ{~=ge7FX2/Ṹ 4m?~Gнpɿ-WΡJ*Ҹ!ЫЭ}LJ᭧FGN_W^wGkI|N4:~Ϥ[l?$}6ؤ>zu#D}՞~dj< fU|7Z`M#SM\f[ޚ5e?6ZLN=?S4ϷO~Wfʩ-H?},HfR-y)Zr-R7ㆦfR96G"i6ӱn}r4%❥(ԼhSG/致{pXx}]Ի= w*wmcvuu iѬ(WIjb"ZCLJyQlpIwXgi]UYsE6*KReс}^ zAswj٧hyvJfݿŒjz3'l߶dۖސ>1zsF#FN!%e+9Ã7Ε ;&x?\ >AdkݿC&ƞ[7}G'j5&ĜھͲ{ݖ\GNgt]*_ʳwJ9ZzzF\j9}{VmݮDY3$ƞKoxD 9eRQ"k&k1o@ߖZs3=u\g;OT$g$NY2$|OjFc#O[+ّ=N6t[U}&='I;^Yh͒,ILI<q06pvFЍgG]}޺Y;zJdB1UVz@_WnʶqG&'(IxAr8N^_,D6GZDr[aEqlxvےy;q{fmNf䏋:R&ue6^#yz:}Qk+RǬLOK:+qi$J-OV![Im$S{¼RI'J b ܨ `R$+BJQm.\,Bw;mB!JhUg˳?\]l|jƙ)NY7:>)i]vhx4~nͧ{}!)~/k˻ﶵ5_>uK woM&5-e4ɶͷp9εң߆}3^;nKT6]Ozcqݥzvǿ|7٦۵7v6}ҚbU#e)Hr~45c9QorFGufwmRҝw0g$X7_~o ,9*n/~:C#f 1g41#%xúY:F_gͺ5_PbŬ:B?m֒[%[rɜ!]nrSx)dgZsvd?7cۀs4䉍<$ԡ ^]t~KZٕL]<ݒ_u'c*ӟ'C+S%gT''uܦ5F&J6)XjT{m}] _r5:4x{FV|N K\Ď3}cJ)7)mn ߚw\6Q3➱Ns54>_Rh.re9ݼJۄcNV־*w!Wҥ%O=RdI)+.(!)}Y遒M/^ҷA!^a.ex~6[fQI_$˓wYF)t'=luE_ʼn n?vs)_ѪO% oM,Nifݲ8gⶦ/@&^:p5H/4򬏓1p+&$譠qZҿ}7ܣ67.Pj%𼺰y^u;OOL';cMu='we28o<#mrOiJl,^G/Pa{vqyImĻ]#/}>OTy}qYyUIw [\2H?W5ۯwɯCd ]t0/,,d9[^S7ڡ^nI4=;H28t.>0p;rjHMY'ۥpۖ,gP\vJ1d?j,2H_yy~~:=zBJu&W1Bۮ'}>K?\X` KGm*sxӶ Z3 22Rz:Lׯ1LʹDڡ3Vڞ  b/zA[enfXUijz39S)ɊeFxdRmtVD|._}`kN"7( VoMtǡڐ=hR)M:t`O]W3XK{"3&q-6j6ypWW>y8ypS=x0ef5|rA\mC@:M99:>Q֟-z04T==obcηzYrLͺ2'Z)I+Kr5Jk)>;ro$JU[-Nnwcg}V|uğ.Uݽ#n&{}U؟{WKP7Qdۻcw›OY}H&e|%|K~0ޖusuRSb5%5Y",K)'W;^ݥv,*| L?"c<]Qcqm=gAS4%1rORV)m Iyx"O]lb&߫Iw+&`pOa^xRܓMunU瘎MDԔ;\7ބy}7lk]T+511C*KR:u9Q:>۽*.jjp_6eY:t6ibibfu4 J 55l*sɢt.\/}Nzmr]2 gOn=vhR_;mu8tk|yTx?صm" E%Ss[JPJ3OJn ʚsƤ?ksV$ueYcL^8Օ CCަ]gnsMۨ&l+Ɂ6'tp(ꦹï;sY/SC-cm<_E,6V)p`DϟaQWeX]]EQ"ecw'2ת3uvo.w2IJGs3yλ9oUyYqG$ZUdV3~z:+t8j>ǚR4ŶR,$he"g^V$GԤ']a~u꣕j5)"#9K2HġYsPvmJZPȵ8xPu3˥6wO*/uy˵N2W]8t =iCg]UZ[9f:̺͎cƙ2%9XrV{~R辮j<|`I4FPImjΖL|xse6õXSaFBRduFn ٴl1|y"աsac?̮6|0éWfk诜㪎{WjkSZ vfL9Sug48tQM&u{IYoo~D8Ilh:=O ԹۑjMU4H&(MKz{0~ygR(τ/e7 ~좘7vʧ&=yj_QgVtۺo<)~\FKŘx4]I?PL(6"jlrLsWe=Rm:Mq,9d+9\z;y/=fk_.7I|:O9'kWy}ڌN̪vu˚{rUޚټk{^ }56:+.nݺ:T=O/K&wzv& :[*~5:cXiGfo]TY Ԫ0gǚSg>N CC}ےg{?Cg} }(Mܵ:= 6n)+qΞ~k:\D33:t#- 1g$Xibw)Cّ6]B1]RNU*M2Շ:nlRVvOtMYAOܾjdc)ଲq˞& 7g_ڣbb䝙 neXKԡuz|Fj.O:tйyyrԕJB]mfêdNR ÉD'S}/oBV<[lENC0GfW2;U}%)Ȼ+u_rۦO4G}%k;&OP͑ϺMbzK&FiJuO2_!nCe/qW겮'얓3['ΧxI.ڵ|am,OX"4`rܿmۡeurڂ/]S3mMi諒 LM½ﰞCjkJtC㜥(Ԫ5ݿzYb]ڼgơ7J='Yґ'_C,C-=hb_.7CW^k>}~eGǘn.:3 Y=mS̠5+pO3ѵCg}NC'.K߷{K[>me:t(ΟۮW,υ>qگE|.>sb_U;s謏1h.qǡ3sB1kyfO_ep\ /< MY؅Ck2kN󠏽Vp:,#%ݽl3aYu wnԹNc6wƯʒg.bA;6|efX<-_(ܬ *]8t:?4#JE{Y'ʷ41!s4$^ͽd5j9We6^h.ԙ3:t6V.+}]w wܿr[7:\]ܐ'9;[LC'E^g:t5)ơSM8˝-E!: B!J;tK2]luzk9nh6y,OhϔsQmy立|y7}g<M>2>3c$eo꩹MCS*;Mbb~bWM3;UԣUeWx1\zşZo> vSe`-dp&9'+*bκkNs1TAr H "APC=3 is3S]]]U]] W?:Z{n6] ]EqZ2kG=t [W27W3UT[։źYTNݨ(G:5'Du젪[ح%تm4WSMUvkjUWU rqz*tj([Ǻbrdm"6R=6bvO;3(tFXq^fKCi^f{Ɨ%]vSujmά6V:q+4\]E~N?VvrK+=idYmH$Ir`+tAO4 ]oV|j:K~b&W$x w{QKq=W?|r|MSekT`l=lKMq\へJSnԢJc`Ӱ̤Нڻ$pL-Bϻ5;.?inZ\k~]zgʙe!$4Эn6rzv7 ̹>Iv.1&]ԟw鐜'ul5(D6(xܲCP9SP1H$g=y,\" O{fA>\DCS;?᱊Gc;cܛwed:Sm Xܥн mL-7En2l_} 04jQG')nɣ1_M L{G` jGW#7|TqX\:V;|̮"y:퉱]=QQQJMWr6+27BdoKK#3TUe]<m[,^:aNz\@5J!j_x I6́g7VaGwXf Ryũc[M3>8mgs (X*!k(yzޝ"+޼vDboy}HKӫ"Urԫ]n : ]SZ7SإХ%vli.1|gq(\EQ. jQ jef7{Aury4okfjuG\CY_O)tl "u|Ue_خmm.;S$I$I8nQZcV|j:K~S]?2c24/DN\qw\8Ȇ7u] 7Q)GB'.J / PkՑS7|zs˵?Ǣv*ׇzQfh^.Cɠ1K oMq;Sj^P r}Jߙ$0,4Ma<һZޙ68.yzQq\DCM1sDDI"Jo_Ȕ3w3 P Q x16o:ypx^7-A~ ~VO4eo{[GĮ ]pBgwXZθٱ6JCMqЩE7%'nXxѨ*t~!K\ =̮=nKH屢My%iF 0+-7[+Q7(6ԒBÊT =j]j*t,W{"(HFs+tjNZe@Mc]Z_W|81WNG*t̴O{oKDmTsrMΞֵW\U]yOuTGTISBw7*NeIJXu5 yN)0-EV>x`Z&K.%깨mQ #:zZQ^>Xcv!~'=^M?E Ń0~[Wۥ>- 0"\7#ŇJWL*۫}ϼ\ϑ!)mTnt1մkd#04of9qQ ݻCћf]kJ>OjgU5DnDc[[j52nG§RֆOצڧ4eޢқ7TBrͫ\Ց|20œ݁Wݝ,!2^$,5 ۻs ioyez(go 5ɛخowLzܣ|oK.V}@̚.1`աyL(m(?K}ϋg+3hQCKRTh67]9 3zФ.eso +p̫?o+t~'ke~4uig?lpkѩ[tϜ]8/+ +'X-]:Z]<}+jYAFifLETkk~fEF[^G}Wz(nw` wp\C]$y=eՊ)uGd"OԒͪ0bʆ8(UH7vΘv)tjYd.$q,XWhX%Acz(B+tujEx7[SyeD6nCt5[O " &_;CodBWVJJ( +^ڢɜ^(tznn ,N }LV9NFr@Ya|YaBFJ5ݗ&S?,^\bΓ(tmM7ol͊3mb(;c ]vFCAvDEQbj=+p +-}][п ]OBdHVZН"B<:M~k:8;Rv}fZYorq{fj rsNt LzPsǕxz^)qB\KFxʺ~]HRې$IV=-d+e&٨6Ê,) <_yֵj}˫qKI!Ze«]ˍ>{KMc_g &1EbZuwW*-7<{]BnzSpZۻT4cm{SXfu#甥Z1Nh|Y7ŮZDKR^D+ŷuϢ͋G%!sN7$S\B,i .~ gZ^@WoڨJHۗcuRM-7UAI7vNWw,mX bHdJ/h6aG+&+E0Y饷{f9o4 ղkjڬQ\T{nԢXkJ Qb%7Ёo-#DAJXdojIӥ_dngEX׭lQgBsU+t5MV|x_[mB&*ȬBmUzrU^;5vjQnz5F>/Obڏ53{vxQvrե[C]zP2f`.ّ1鍍%^ s:6Hp]+0\=1[nwJc`PUvoHx,ӄkc/J(tɛ*t dڎ엩ɔ?=9]ӵńSBDW$v @ JVBWJ ^iR%l//ho2T2k7F9\\BC&|.¦ϛ*.fQ"\b++9C l~v'ɾWT9e1L;Td[VP F ʧ{ȄGj`q}[gx7  )b+a}{ B䨊 J{SaMU˴J׫5 p`zQ E=Wl`(t=ʼ,l}]^^TYUN8fnLAEqՕO e'P5 ~d7|iI^|UYaj#sS\|km҂DPwli,ê[\V{#VmCiEqJI~Nsf31Tf"{y'4M8,%n$V^m[_ "lƬT 1ZN]KO;l޼E%iyڑnI5ƫMxI#"o_%I$I$I$IǸԹ~C<!ĭ>ĮO£GrC#I$I$I$I:!#Iҩr I$I$I$I~2 JSq֝Б$I$I$I䧢q$3o}G$I$I$I$? }0cDSqQ#I$I$I$fnϏ$I:]nX< I$I$I$I~n,{Ĭ߻x@p-kQ#I$I$I$Ƣq|&̾<  5`#xǾ?.?|ߐ9kK$I$I$I$HG_?$[G,?G$I$I$I$I$TH$I$I$I$I I$I$I$I$IRBG$I$I$I$ITH$I$I$I$I :$I$I$I$Ip ][s%s$I$I$I$I$eMEZ틢*t uM$I$I$I$IE!D&I$I$I$I$I„Y?]S[Y9K$I$I$I$IV*0ƞQFҥD> #I$I$I$I$I jrZی     :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    Oت577&ʕ%0y Ijs YTw1g**"k-fW@ TJ,ήfFq=YOՠ3D͈" Cff&|@@I@y1=+篋;y:r+<0gCMM *t:'r3Ek"i[lB=e677#FV˟8PPPRmMCXh꘳DU(otӼ+{9ؘǍIEـ.#*t:dTPtx9U[p ٳg=eH^VȄBmm(t0/ۅgm?Y;RsN-;@6448<-o"d 7l9/e A8BUGO)tϟ?G-%5DظF'AmN|QBGP# 2F B0 1ye>;RBGBGPBGs*tT*t ݰsAߜRBGBGPBG)t wwj*t'нUG#x֒y.mΖ97'lLt&9l:@v\4yɽK_3Ò v9Bի7D@:珧Sޚ<>xH3R*t=򂧧}ȑe˖ƍ{BG < +t6vn\vg& 3 yDI\[zg6j:RBGBGP _鴤gϞ}]7X N8/^O)7#CN>}׷W9BwȑQQQwΜ9 kcBS蚻pr ={j ^vmϞ=EEE=~֨9eS .hƀntg77wq0|9T4gI;1+C8:TjkkBuulCC*++k.X~-Z+VAAAZصk͛V1znȑaRR\"~.w, ' $֊g;JJJ$QF G =d^-`Nk,:x+--xJn:~cqGX?]\5UB^2Y.n(=BK.)Κib!KUE^n%u.v. 3Fx*T₼3$p6L+HǓ>'~CA8^1lA$]>St:%۷;*ږݽ{l%x /_2*;rQs 'OT ݡf8@B4QM+em̴E>cۣVMu.UW>WGM51gF !'--6vx[2I-5Ѧ;*=\Dnh{UĔf)b~e&vyxCpmWzw7]9CY7w#\.R ݸq_Wr}VQs6oV &_9FmTG5,X@.[L/Lt?kQh{]\rzϝ;H?(.Sƪ~ƍ\ڊ:uJkH>R_ Dztf͚(cx8y$:uf#JUn$[Of{{ԩS񰚚3-+؟Y!/{5OKc*-P¼yN![o'і.wwէ5'Yؑo1O$HN\es*tN9PW@cmeTwWWZ0QJmz^Gm)$ ֈcRR.V Qq  xF#"tu2޺:.]D3 Ŀ-2˗/=z^00ж"8ܹӘ@LL :Ka4xh:;ܼy)SfΜy!MZlzy5s{tOB f _d =##î.BXPO?d'Z4RS 62yd%HZd2ߐBgvd:ֳ]Ϫ,a wox"ƳWRw ֲB/,gQ x/^cK^e_~ٰaԩSTZȑ#0_O҆ctdU_Ԩ|.>hIRB D1@$QK#_L/f}K~˿;𮮮"H: ,zC$|uP$p4@SP̆@.۶m3xO Cn_p!*dTp1ߴ$Doi['T%̚5k ;9 ,µȽϣIhH5ՈνOFĐFGW_-P? PDO=hش"\(§p`Q3Sihh@[G5haΕ(tٳWB^NNXI Ep%:B?6`jTU~PB;jW 3^VV+wtbS;6B7еq(toZݖf\Y`U ޤ"l{.f'cߔ0GFfX1Qa֝%& T=6u=h~ v-=*L 뚚gVi}s_ ԺBj`։ :T bbbd$:<:Ќ!߼yӨǙU5CV1 :%Y7K$QQQ#Gԕse666.[LReMYRt:YJlETgV(=z?=+**mo(RYBVwa+ zX<p,~P"<+@ȰGO >=ƅwm/=\ !^SްaGZeTB,AΚUNu/%MsZ^ZwƊI8ХI\K}aCv$,9Cxzf9=AwY˚uLJ=-=hوeH1CmoSj>sq+#'ÛV^:9yMgH+U~W%+a&͂McFEEЩ[owU rS6WJ}qnz$WTÝ&e-yݢ ^ :Tuym?TӋV޻wE⢫0a*̐\o+֣WQB *Z={6" *]׸:Y}CS^'l r ً5W ,H.4KttE[ahӕFES?@}ܺv횴#j<},<_mj􆆆I0O ޡ΃a*DI xk^;jݧ2Xaln(dv`(9#oiwXHBMkjɓ'8p@uub2 Wu_B Tx(v)t}v(bBZ(H[#!eՖȣifATAENv=nĉFA m \P˥锵 i2dn)vBFM#{fR\]]˗/WDxkwwwxM*e(֕2IVœɸ:{eQ0#"".tpZN$qt2֜;wN8\{xuA:@"fg+tvA:Ta:q3gl߾u(g-(=J0LOOO\P%55U 7a(555 ҏx"K >N ((ڶ茢Ԋ!(qPB:ᒝzjTШUh2k^A oab:Ο?_ySa<)GtVQ],lt+e E:6A:fT ژ^ywDa>p6"ܤs%Qus{N}3='VpK6X}[PݎQc&[BSYiCrcZuKp::+1x6m%#}r|r+w[be7r:k\&fje+nBy8*QH)tlkﰐ*Ju+܉m?\X JvO]]2QU>Za&fݴi&.%wc8:9S i)G[$5@OgŽAi:[iFYϞ=k6GM.жw}B{ʕ0(ŏr|׿{UiC:c˒gtQ,((QJA@ LmxԎ BUhʛ%^^R謣:ԙ4Uy%0t}"Q#9&9Ѝ9R"RZ=yyyi?H5P) PQt@}-5Huݤ:7fBo2޽/PlϽ{:GB)M?s2))IjEYOF춹;]eU,Uڶé:+Hd*9;uT\j++ #GSś>t{*pMU`M, v)PQ`j2Qܹc%Z\'gΜ)tЀׯ+7~(t:%U:Txbo5\wSUQ2+E\]]j5Is(q^C,l&֒HyΒB*zEOƎO[m,u PnRv/Ylzn \9k2&~?]\N:gPZaqBv,QXl)bJ>wQ9ugfBW\)tsmgRXr1һK+/ҺےVSԵB'.I<Rl)XbʝV&f9ss3? ݠT`௚tR -,Z.1b|< jodFuLbSullC:Q@/5cR{!rOdXqT(H'B_XeeewftmoXՅiO*I&7T5QV駽3X:gua̘1J;VM(<[T>E+9,9vm%8x ==RYYjP?GgSV_-Zu|M*t7:.p>|'8lڴɺ0tb6Xi(]:_Yn̙hekWXHԶm۴$xguWBvS V +ұiQQTSjdB'KPRR2P:XwAAAxD3VCP;$2NtB'MpG: ctt մOOO(+jՖ-[PoWSoܸ;퓘UFeSBYmEns;CVFMrJ[5 fe?OwsD|y熳%־.Ϛi-moe {+VEMnje'8{"Qe4d.&SWxrLƖh$ObwiMزoKVN#ꊴ^L;d%KqTy@)t=;L [oyץ\uTBŒ -C+T>ʜ/$o9B׹s54*P>\%KEQ&ՙJ n֭VGmiB\>7Nt9)w)tB2@M,34;8aT+`{GuGs~NT@]]AЅwDޢ[K8:B'fBS@=zι-cidȤ] ̳FEdK._,QNQ1_JCOXRr]_.l5"3OU(z: ['F ;6TTTOUBBB~JKKEixة<*M֡Ӆ`RDU:HZGٞd5L9* 6rDŽE53qD֭SV>z_T @u:f̘YݻWS3 HM0*t Y9qED{/J #KZu]lڦ}gR.3-gVT]Pi1 ?r_K/:gb,Yփ; }-p3{,Mgc*wM5K .&.viXļ]Jmxۥjݣ5Y!4Y1XZ[,tL`/ ]N9\B\+.6 'Rv_ap~]G쫎9BWSS@"K8B'.dVIoWHBqMY2e&CMI ۶mSAGl]&ƌHʺֽt9ViJZ}$gpU{Aj}*Yl>ˌYeZ8)YF2B Jhլ%(L\TP,WkO m[3oxw;cIJKP z؋Bȋ`GڝlG91U*K ), "6lypVWW4 o>ϨGQ" eޙ:tIENA6mڬV3-[ѭfJ7822%J^С7]>OEՕSN5$ZI !놼+k.uԨQ#FSm A|t-I]]]{\}E]~@WE/5Ml{ l9bחK++R%Kts<{|[ [*tf;U۩:ad:+ lq8ke] zqgVVXapFN20"(V:i9S-lE,)t'8B*|_"[ uyM# 7QN?$d0\uK䲸} @np+t~,a-&fgaL@?A<߿%v$(..1ֆ :!"_1nCMS trss3ju)OѤo)=KIqQbdةС0֭[m[+m}+tf"- #T_{Cg*tk֬U|mQv:DGG+rȑW/^l|_z\M/sHYUWȮ/|W60Er難f͚eXosQT4Pg+V_oPjje j)t ]@h,f,lSS'!XkSʛ(tX7Xx]]] ?}𡿿˗/ŋ^ ؘ^@k*?J~:%4⡠@ͯ Ǫ*Hr_tԄY(vj8XlZC;٢C`fsCR^~֬B>=l.ned\FoɏK~!-əuula seBIRLDvlwU*[H^4$GVk([v k]9><1$}P1cWm%<˒xEBu !䆋ǰU>.n]:~WX;U"IDATW"d ŕIhKMTQ w3v}E7ƹxssf{+zg9~ Lҝ.׆ν9܁C9:]5n#Ĩ@cQQntwVc)̙3e-EeʀZ688JԺB[RZ X9D0G%D~MVI HD @*j2VCKjb?#6\z(C ;͝`YI_u ]d_.*TP3:hMc[o;(m>;lh?1cNJZZلG =v+P4՗񬒒_EY򉂧^lI8 n ݌3d]EX(]ϟAe] Cp499?~h惗Ϣ1믭m$|gx:tӧx 7oDD64 ^|KvzYYY!!!(24OMСC(tG$df??a Bzq/Tbxzz:4O)Sh:k-R [$\\\2:YN֩pU-RT ]VVhOj\p``]~DCƪe Re(G: 5){i-=z4'( ]h<׏ ՗9,I"˥ !!A}mwe #PҘSJ=U!SFj6nС_Ez6O΢С5RһmL ]DDax!20oߞ"V- ]AA2\p;T ]/:<Oo(t/_֮ lDJimVҎ҄ B?~zΜ9#!+GԪTF#l4XSi:>G)tZ9'2-OwnVTUƴe"f3jԵR3Wf+KfEVkwW+uٺ1ELNi]1ziҒdbONْJ/rЩ{?W xN?/V9YH7]2>U3cK}q]^yCL[1w1y@B)(tMIH-&jou-,u9,1ԨvDV A1t3,c4I7oT͇& 5Xl|@ۤzwɪvJ U GHs#g޽2rH')iyh{\`T9dwB %(A竏҇D**tZ,::{!KW߁ZJB:OtQ&uڟ~,%P*q8v Pi[,fٳgYNݻBΣG'bZCAeXdwo=ݜhСv±SBXԨ:JFC|'Nظqj(aB*|t컲 |OȀQlˣpڵ՛[:+ E  g!UJDR}YQGH8"'33S)trCgc~zB'4_0q0f7"dmgF:9t钲5[HܣQ* \-:?-}<u[C'jhq{uho% wB7D^~;:"trgZ{+K4)txf-jMQ^mU+C' [fIK:ے>"BJ}gmɊYG^>ǝg*Ny3i#&o5xQ"v6}dyc̃pb+?L=ȭpPsZ~ȶhNOsJ}X0TJCӠa:(Cȑ#㦾l۶M9*[bqAݎȑ#;Qr mj| r599YS|SLIIIQ7h%Dut;俌?7a5C'j̅ H/~(S^ԥ %(D`Ո`wA?߱Ǫ}Ԕc*Xh6lSx} 2#l*tƳJ۳g[h:YEDɴ%SF3F#[uG99P;Eo\Ȃn2qZDD[ z~iwj%,FƩ:c~˥ߕ9THBWV0>ֈ=] ݕl#]4gN1O³ǫNJfYnIY{u[27*t]{"K7EE|քM|%+m1IbKBu>Ÿژȓqlإ#8p*tI)##tXQuVthgѐ!>if&N>9b]дeff.h,50)) -ֱHnN?8D,!!yR?BgCӳ ,Ng^_߸q#-- o5A:+nݯ:zVs f?ӧO?rYcsN_.l+R||||%V0s{jAAA|O~Й*Q I6OxA#>5ULL4M=}%TRBtBQQ> K6{j+t :*TzCdV5 F@P(h%ׯkʒmQs|{ =T 9hZó5Č*Y$*tΩнx7V k[?A% c9_e9:ĭq---r GqqGwoc΁Pv oo߮~,.t *t6^Twmc%liga:!TQsNBG A|BgAcOA< ݯ#>9T n\<Ȓ#Mv!x~ǀTQ%dggɓ'TT nݺuİaÆJ +swZ9kTfqr1#9BBԶ?~"~KxAf{̙:pNwfh.FccOkT<N6;p*tΩСUc%)+t:*t-e A 龜UX:P#BH/I : A ATNv᪣q[ZZt Aƹ~CNJZTTT舏 : B݃ kcBS233Q^_v᪣?:qLsPYY ˉ'T@ СިS#@@7Jʛ~gUCg~9xYww{SThY[R#9P)!-uJsrr^x\BGT|HAAAO%332Sr^+tRr; z(W(]-~{w'ʕvVů!*Vy%>Ⱦ[W[[˚gQ XByyyA'X{>jȧxcvP.**BmVC'^LNX777^2i tv(tAAANW^U*BS|1}r+:    p P#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    OP#    :    O|\{ESKY[$I$I$I$I$?׭mv)t(ԳSIENDB`hugo-0.131.0/docs/static/images/gohugoio-card-1.png000066400000000000000000002202311465312036400217010ustar00rootroot00000000000000PNG  IHDRQKiTXtXML:com.adobe.xmp I:gAMA asRGBPLTE~( F G֞ ҙ ԛ Ж ܦ ؠ ͒ @ˏ  ٣ ީ { y+1 uptLDR#Yiza ¬F^wn>7~iӢ $@GxDLSɸ%'Zd:I69E˳1 %Σ¹-.O{Ɍ%/TpLҦC@ѫLϯ0KzNPl18,9::7͜"% Ú)pDZb\c,ǣpP(Ti&ê˩Ѹ-5@BٹA 'wt "rg]k?fX=~frZ{5{Htm{I٫ >vnl`ݳƉ߾cjyD.brƠֲ bZ@WyY*mÄ $>d&ǒ,v ơHDßȐ ا2Xx߿)sQNWȷu/kϱzvDs̚qcۮ5TTS;87ZMƢ=֖ IDATx{lն]j ;HM[ \(ƍE#+b6C 1J/m B( qՓ7?~99y6cY]n1(]t}9fd36|jkylkK-6Oڦh~j#1$cenl[m朙fXnillĦ{#=bQj \[RXYfCR8b8J,C0X,c2j gBRgpp``x?,E\AIc |% [5s 3`I ZaIa!44 GRʥ MY[m+:VO]tpUB 0h0:hpTBZ!80 p'7 >h4:h4BZ A"!lupB E &QBAPX"lcpe`8jKRCe9Z}D!\p"Fy!DG0ިGSf(a  gtƔuG)/b e :8 0&:J9J8JDNBH$K #C! ttT "%` | =%,o컭!BEB>e;(!8D p0 QJTAVZ)4" 2s!FV C:X&f&!!!:h2ތi ( Y$$iA+ޯa Jh2/0B5ΨEz!!:Jb^ƀX6\)|N ܨE qGiZf<-%>˸J($G 5Ajt8ҴBB2LnI*%tQ>"TbZ? aD5B'/c1t2m@8OH!B3*p"#cC%|:T ̈ФFg%ɼRg4 /NZg du5;,ODBQ󙐐$el}""~Z&G%% #lZ&Zgj~D8nQBPtd!duI<G P6R s3V Wf_"$5|SN$ N8JdeH̔Fygt:<:!A'G 2TVf T_x@XVo̭l~[%tCB[PJ軣l]:o2Owɍ2umATopHmD8Dر6Xs0iT+%[!YS:>57EeHVꗡ7:Sx (FìJ  uύR'+3ꅄSfG mh+RQAjY1!:kt h qF!ѻmubH8X+*!ײfzJHR†A/BxQ&5:Zn " kԨ[`naV'IDk*aع=u ,'eĨe;ڼVor׹}땡\떱{`T@HpDV-k&k%JH+\Zt ]57$" aʼnVoRS$\tn} C75ez4p6n;YIaZ&,3.̍: t0:nޭAEa:}y+mHobr˰[&앱ik* 5:"ڲ6+Pm//z\^f}?1ypލ&7328?1ay+7sDn|~S@cF&_ u:m,$5Nr0=O C~ 'Y>4ːԨ۰deՎޔ}-էv3c-]L{"YN`BBF 0"pFB4x5B?9RabF )7MߐՉad1FRp" oJdFi@8%HhUBpeN,ㅄavFvРA› 2Y08R=i^`4g-&fL8ZFF=kNFiqF ݀bn'nrV%#"FFˌ2[ꇅ!!vFe a4>"tr#b#* OY`]oqDzԶ2@+7MLdEI8fi3fLf~iwiNۨܶ=k^^:Գި~I ZoOe&:Y ͝sXX)›EEˌnuɎIJt'[&#XVftL!ezghCFSF;֨2S- ;ܩD`;GL˸!ixp̘pP&fLb9xLh|'HW깎5:i27b FѰYƙs(ʸjS 5=~b:”O8N`πi[Jxx|~3琺c"e[-[oMݎF}%2.Ãʌ݈pFL9Zp pm kR [2#0XLD쨏 :'˰kL›,󠿉LD8=~muu0G#C-ڔydjuGoi(75w괌wlDg#!3Z?DLY S-f&7Q`XHO !["TI]JL8>68 NK;PO0kب4'cСW#}nGG߻{&6[T{y[!BulYhf-y輠_-42kF^EX{,:Z 4 eر-m+{yGǦuz'/ÞH֖1iloOun 'e2efd gF kHBYy*B8 [!9#QNjt=}ϤF8kԎ5IV7:Czxzam0Sa`H2SپAAN(oU?~R0g?= ۰s'af^w/3P9ИfécAI aAoZ!)??2v{3w{?1'&uJgar#!?ZGN9#}FLBhbBfCcn#isF u=[!k J=}Ny ď8-ҰHmb#-3 n^NOL3? ͖5m ]y M䍺]#B8WDap^|ZL iZflNfeƥk$7NBH;k61Q4Oxe[d}+7iZ'F͏wL?PG2Z֜f?7+hNّ5^ Ӈe\&y E[mK1 Rw0b"<0qJhOx5BIe#BIU' OLNX{̏ 3- Dq›NS8=;p:-ΟnJF #9z Nс3x'[f?v;&Vo|w83݉?| w_4ROجaS6ˤO"BzDT0n lLaRzu\pA5͖qv12wNlb 6ˌKm$TEC`IF3(+/VM,9^ӨaF%dNq4%匎3ws!{uFYo{;lQţtӄpa̟]眅FyS:=?)ݦeh(?c-!0oHhK3ݼnpĚ}b?lIHO%2&Ѷe22\2^ύ2Ѽ ھmwLx:6-O"ɓnޙ>BFzO}Onyr}ü}NOSC`a4$Fh' OF3pǂca}e\̣ms-F`[#BrDLP0_V 9! -3"E(qa^8'L؆5u{r*+:%AL1LI[! 2zO'ǡŶOFٱэde_gDT{Fۓkވ5/3(;9-f MRO0MPp#`3V#6N1!'R|zPZ˔A-oQGwgmbZ(2(-d!̻U x:?L arF̼CAD8c-_"'B8=5c--3uT>7i%d2D ˽q[ ckfh (tJBzg75:"9gc‡S# 1=jvP [7QH8?Laka~6 Ѽ̘Xj4Fdv'&Ou8:1OJFU@H8><61s[bZ+7Cjt]P4ose.uQ}iѳDp̃$$"p'adG=-%GQZQ!5jf-oVwr:ւ2b[y2pǍ:T hJALSS=]L?fU7bL87Dщ# 'F0m3IROXsOI$e`okA vP(Ą6nx%G#B8,,vO =%\6eb3"dS۳F s&&rN66P8nX'ZN;@X%tH$eD#2cfaN9)<Ӄ|רSIG W#FNuw$h(/?~)L2!!>$ff{ټ#(/zFe̘='Fm=JM}lcSZ W&!0LLQʼnl\KGIo׽2˸<5n?b,3-cFfNAˍʈpp(B1\puJ mKwZk1[%'۞ g,[QaCEBrs-mYQAC &Z#4.H#BD(p#X\(浍N  m[SEJaM;2ʼnuڋ7_݀pTx4oX#MFcA̴щ #E~ ۱6KI sC:+ÜͻH\SA A NE%\-#*&\!ܭ>je&;ۖ{#n7P0gӜq3C|]kJ GbT(S3C#D@ F -m۴! ,E@=l/dY[uĄe Ø0r̼7QdFIj䀧9tEg22aP"DPjjq=&0D{D B%BYFaFMFDPY,)=l)lYC1hCj&$1j!Pe2LVAR7搜KeӱÜ" !P (]Q|.qCC~|PKF["h*rXbK2?淍>?sZ8u{bj뎦<%̈5`p\zo nP? 9E23*mB"="(\jkᄅo1SIӲC LqWÒw$n V8,E& AOTb8dTp{X{ 2t{}H8Ix3a苎w2c2A6}B NZ)B? .4ѻHMmS ZA_OB0水a^Pr׹(EXZ9)Gm&CȘU s2vDK[4TbUP.eB pM@)M2h6~N%0x0v9a d-'uB|0tj͌L<3n$Dܬ8f6Hfe,AkGΨporGU~TĄw2cmDt 1Òia f4BwܐŔ¥LvH},$ dޠm-O̴B8 r[֘dBc[$zJH (a;/S, _|İT$. G\!V^y r5 (/lneZLQq7DN]!Jh2n\>W[]]AB0n`),-!,AzIS!4R'GHX?4|F s;S9t6,2zvv^Z h> l#d6 [I?Dkmep.X_fu#[-kn  ۴)\Q^} IDAT*3(r/,lU,3 dipX0uUB<j?q?+|D8)zF=w QB^ԩlubPJj XOqi%HqB B›|SsLHI0,& n6J8rEGZ"a*"aJ3A#љ5)7*pH|\. c Ca&*DnEh--/鰊C0 AK[q9¿ҙM VaD v:t=~?X1tlҮќFIޝ=3CL~ ʸ!`YYp-&`(D-}R=ġ.X Ru`ZM ,g: @2!(`G {F'f^u{2?7Yƥ0r ad$owDC(FB:nK (2Ρ7*ޭʄPTSz'9$]Q :9$HbVwV չv)=vޜCgh0u Yk43-pDd#ܮd xlfal`Z" Q)vm(",wTڔvs@C5I!1|%6Dv8W"5:#[ P޶'άQf #zfLY&D;MyYtoǦnLM: NCDQ׷(mP([PH22*ǰX^lte0`wmq zEG|dOd;yp$p|&Ͷej/RXjt"w !W2E)>s-L33l@LfbY.o9h)Dmmط A`6l(LL#W466\vLx3::ZX<FآmO, ]r =(ӏ l]Fivs8)r,Hv:5:P%M5qGntm",[h, [ALkVp1 }-,q8~i1.bE RZ8l:1*lYf<>1neeئ!t"B &eILs'e⦍.r2BzYnl1wAPƄ*,ÂDʖ¨ 2AK"CaREtwEm歑O1$„n>j!Pa\R3RHzęj^5y k@1)znwF=Swxdz!`#ՆQmj&f2t0_rZUÕ %AO*]Awj %ö-UJVBDQjӲhۯƟ?vr2'aC™  J Zs.=xFwȘjwC Ҧ k-aYI0%W 1}I;Wǿ8gYMknGW1F(_F5oun{'NbGFs-LI߇&{F_]-P" *CR(cBG VZ J)z^++تÐ*R3x-L]wu잂I@!'.['l?/e˰MO~_ru).5Ws<6>Y$&e}x>Bk=(nYB,-y!HlS%An(kU7n7ƴI  k+YޥА8l(OK! tP`-(N^f{.pBKp_o Ǵ;Xs>32fČ!0~ϚwE>* J8 n݃nQ֦yaAR]\v0@sk9LC0݁?A>,o|2%otl.*nN @|fe 1| =Q!s3Ԃ;<}cJQF MqB؂;Zʰvw) AaqiP(OX4 Tno(+ª#Z8$І]-aawZa}1?ym6_okJ.U\?+b8fZ KAy sDPJ!*R _#AAR_(r%G(bsPо6:]PX<\rutB )MIݷ\rآ1!+e5Ma49a?2g_Mʠҳ d-a?HۿK"uP j ޔJGYIpF'*,@P/)>> )<:Ee)J83d9,)r叮Kih Q ׬!H~:xXkA0*,[ra B.e[_9 (өhIW @}+I/ÈP(cٚpEgΚ %r _T)%O2:"J$ăQ"II㨄 GY*~l\/Lvn/ tFWQ?9 7U 6W%^EUbL ;/-SXVB!dK} ,+iL $ʚ3 {9ŇJK!I ~gt pFJgc[!\dNP,R D)|]:"-R1r9<"<"upPBAcJA?SB( f `O(!\cє?Z;H!!eՊI CgԼk`acg"s3&4ʐ~)O  R@9"A$祟pPeBhQ JyIXӦI Q /)|JHAI£ M(-T鷰o~cepAx3Kl`pܖZ"U\% K2>IAAvFQ Q.|] G ACEA?;&*ZĬYd? \QDp̉*?'aH8I/I-D)T:(LRk @EGN9 (2] -~- XP9psAqUV^!Ji¾]vŘ =-g4R!k)2yo@a8wQoJ1 )>+P #7*ĐP4"`/C!hT<4$z6E7xAbfP۳R 5@[J HG<ިZ7ڷo_BPxQ `,䰙aJqh;v-v從 Wu3 aYJ 1Z(JW=fpY@uP '*{{^u*GrD"& xggEp Ay+tEéR BP*` %L׮PQHk/͠a}uƆo4G $a]t-sʾw"` hDx?!rxF0+/kH O)w옵C2H=דZQ߀{O)=]T!@"1z89v #BBm^ 21|K\*䷂90L̬ -:-ޜӕ w({+"R(lljj;iamJactAd22׮vtLp4Y`҄ݕk]|ў=˄PZ˄ BR“.D5H @q@ 3;X |Po`ȠG_(,q Q2&D @Ïx"x `HWB÷VhwTFo{ UFxi␞bQa_ A ;H;h۹.jOR shaj}YgJkAhePިưWm:ڙ{ *+W`w}}uuu}+ݞ{w7)ݺuYnI_TH{j޽T?yZD܁*wH)OPr/i@KSÀZS__;e$7Gb@x]#!N pxbe'|x""`BzK{d ih*9T entA%#=}HKPVTX%iEjk֞O{UfAk\:wN/0إck~^'edsH;cwyJ5ZI]3 DsCK@T KcO?Mk@D xO!pSO4XVzAQ2޿ i;B4$Z;P{r]: %|? *!@{"f)6$Ġ0bD H)E}7p1İ>3%Ioo{R=<PN)3vnR"hJK!^LngE}7! 6EZpIR*+5 ocw92( B &ʀMcܨGA +/?@~BEaB#x7H߬C'B!lLŃ]XSFl!vOy9ƛ^B>3#cL-i_|hc?@Tpۓoh)˺I@#*(<Aw i ߁ڋJߒ :QB ss+*B~ ~bDL؜.€{%Qjr(^/Me<84aܘ&\#+:saL@p\9*4>I%UKjPTr (1//up[ _ NpPJTj]WU !L1b>hě9UC_ c& !FC!LAe])EItY8Z| B؏&F&"딂a!])\ |% ? |1feP]lP4g  U·3:FeHbL BP cr?sC}b5Bx-i!̝>lf f7C3bJK:.ˡg D$5KፖU+IpE5} hJB QqFN5 $9R7J Fi'!lM2Y aU `AHT_khhȨ#{{vj)%D!SW aPB@r(S//\h ?)P@`'ڪlTph0VESerTH|T&fr)! hu粞AHa?ZkWp lci#V(,)NtWшlC  \ٳVS%]>^sJo D [;pǏ)օw` MO ^S TǼ2\\$f$2A~ݡGi菲Ok`†NahC؟7Z}6vO2hŔp:& fH@jR!a)k2P,ÅJ[/z6K _yFW'RWaE3P lAm2( RF #˘)cY!w Lr΀B`@XuB JWwaM ^;šv$$^\🨄MF//㷬P,덢?ePw¬ :]P@vJ"-s2xzh˽Z 0-ˋ_{XjZVLmONVcZL DDީˆgĕF:P : kJ+po*BX(wOLDU¡67#-Сԟ-G!Q& aF" (L~ܐhglA w dB#^g ^&(|/B4_}B D-L|.|)o|)܌ Ks{* 7:w.(QB/*DO ikCizEx(-Qh6-aCح?DD]B1:2r %dL| wG-Jp}MD^XMiwȟϿ< "o+Q`Pչ#;PPx *=QxF"QiS2]gt[ wPdy#5K7Rwnw !'1[ N"pG߇}k2uDb:H0J7oЌ0+(fGsBHcŠt^iRπHa-! sA7@ح?C 7&r8W.d=nj%DU$t$?W ³bmٰ!ᯧ|)NA>>R1$x̗z܍ }uHmT6˨j[ sC0$&|>gՓ0?l+]\> aY =,?GjΩ.(["1ިPj "C %? ktD((l|nQS2$Jy*(R Q%` #vՎJ-5"#9zÇRɉ6Bn a ݺ% $,i[F e$w>$PY^wT!aC<}Yդ6!UA0o3 Z及PKfQިb=RB phBݮ#y J ),c!Pb;&DPujaB nHT.JؔTBK:>KAbBwnQ]%\5ʼJ33ȡ38D{&xm2!ݓB0]%DSݚ TN%ZJ3\ws@@&!$2X kv/_\H@({@)DWD%p-UwC.M(ot*'5C0 5f-H<!-&<~>g 6 ºfC)~w) TK#:-}Ipl5_#^:`mZ/7*, fP0hP $" sG $ >0erÏ'F&w7 Bs!#QxC!r(SQ²!OCa "AI}ΥB!,!pne(\SIhvL==l%TZŽ2{.nл%P%f[}b%ZM~JYO a*1D}/)!Z,6BŠB华$cn Pja6U&0 JG?BCjQoo ;vb̂N@XЩPp !3?i7h-i  JO@P@aZϯ}y!BHQsq#Œ]Ql#/a! Lʮ/5䇰#s(gBڥVB3wsQkpGmtt05ׁ~d:C /*ׄnw BBÑr@Aٳ, ]-̂0C250蕉W _#=W_Ѓ#B{Y!$ jz !E)%[u8((hku |Si&5GʵȕA\¼JHaeqΊ+|_O>1!T^ c\Мx~'a@GZ = 4&3#MI%t5bBEJBV Uv4?yj1̎0iSz: !NPX5锂Q͂.n} 7)w\˯\͏3J0DV­@‚ѪdLJ)D1C[厲JXPB*hUr*}( a*`P7| vq RY&4C I+A sCXVKaS­MT>\R 7*%5fI*) !`*&t),˂_/J -sC dnL@xMj聘;3ᵀTZ@xJ#(9 eBh 2Nٔ ڀ,%jpkxL? B 7I%ܤA\F!apvFpGOeP!Q =VdC1*0G@; ao'j,% 22$ 4~T {GUy0Jh0(cƳT*%-Z; 64CC k 0;ZBaYt+G!L /%00QWJ7jvQf&i BB. ̭ 7!<4M@X &!\J( ܄黀5Z%r3.h>ysL u0Y"1.Sq.)H i; hfLxF59cšP ]ۓO> !A-%~*J8S:(RR ēMQ{8 ɑo^KC`X{vv4EsCX_VJA8&e-lLde#kg%PXB5WČo\>W[_]_{Ƣ5T UFphJYAK$GgAئ;[LAx-/z!j\7RܓW!憰wKf vU2%LM[sDAI/JjQ ]\MWyqܨ|JBoqFO'AEB@x.vL-k`&^ 錫TffCxIs.e(!I%,1 9!zE>g4PB_ k`*9Z!R(QH{/f~V^7 B8Ġs29v֫+LB Ijk%X2=z)wLS ~ɑJH5Hr)P[%DwTQ8jsԈJ9᎞f0AVI=P燄A;^IvܤTS(İ@SMWVU2aGB!R|ý&`d|g1<כL*;6t'/NfjEqEV!,X:1ffmJs uζvɱix44\Ko -aϟu\U. atG{)qPwu&5*bgÞ=v]L( Q.7]x6.*?10J6@@8Ђw'gp9`H{GG7y {Q \-+Iw J;( R VBXXj%#cBaSp߁kS )YP84ϴAa^[!*a](aA.B[VjT׮z2НM1a;u/*j!DGg/%@ev'V (ƄAa>("V./"$}NZ.%B(PX?r5T"(01*a!܃QP=եp7KPߊ<&! VX!l;:$l~e &$uBPRJVBa%#Bx 1BG>T)QF '>)˩(NZX3k2YE.= Q̬IAb5qG*7S&e].)5̥jv)Q/S.&0a:d)̐' +Lp ~h!YX:~n(a'%|P6֗Bɴ|#w/fB(]ѺwAh5*%k HRC L YB08W`imE>!yTB|wE2HƄJEJՀ|K s=` tc~%f,WK 1SR ?j2`RxF2 (s2QY)7*ܐ0aLGBRQ8_tHa.Ő3-@j7K\Ra6uPh|i`(TRXC"_?JTn` `%̣~:ڠG﫥09_O[C0bKڣGuI%D0/(qեPP%<[߁/*\ʣyQ+!,Qz`UE$$3<%4C gݍ P%fTv]* zpE z(@Qqc#:zQB\@폲J) (O^*EXlph1aVZT1%,B{2{7R 6AIaŽ]9OQaL%?3JXd~oQJb((4::J~^VF> )<"R rG2F>];9IvTff«- af';rg= Sq@p%!3:XWwf+VMk {dLxԞ(a~t6_f<3dÊ!m3 'tyh5J>wT">jˆp#^I!@u͜-r'p7\{HLr%#RegЌpeʄ(dPxR{gMa>+.hVI1[G2a`MX!4}k!̾/ ̴5Z2rC(JQ`,h˕bCXK!jTSf~Z;B(j /: F:.GA4 y jER Pj_ԃ)PPNCI (🨺`7r@Im5'M@(PBa!E;!jZ!͜z9ks~Vޭ?^h\Xu!/!B RQ) sQ ͍ƫu2e3YgEᵫuugp-XHjD, mƍ6* SR;,VwS4֯5Y ٠CBTBa,fo_dAHTJQ_,;PE%ܨL^LEamF$ia`h(73$4fCAІZߑJs\j6iq#풡 'MBONo7ʲ(GafzS|h&Љ ȐPD]"jq.X#C"T 3i+bF<.HȎ ]3:؏@3* d`(D[K3tMOR<& IDAT4j-xb`QPh0L+J!@&3 -o{Q)GŽ9R :w"Z?7j!AB{Diյe0Qט"h&{K !UA}L0"cG!*C t02>i}a'\qDoA4J[Qù?Ccp o4aJx/àKo޹ڐgeuCw#]-6&J6TmëռZ)Q ÏADPrxYeC7 kdA\{uS~kmm}}}퀦 j pEj}? B^o@ϩ'~xy[vO,SJŸs**Q8tsgpPhb(CQxJ?ژTU/;s!~N!rF'9=@ԯ!"Q⍁\FP Q PX𓤶$? m1l]c2gB~q x^ @h^è Wŗkx8!\V'[!v]%(?_|/Y٭6' |0(sdP??ۅJáˆ5y&Oe=wƦJ=jͭPf׳hph?Y=s/tcP௳2D#i _ !Q !OeG:ng0oӢ1â>FdptF惺!vI)={Byz?qHaFQ˟D΢10iCn!/z.1@Ώ(<|]RkJ CpBPB=B"Nj*g8!rHQ?~#k]%pS(C_tF+VХX4MqAzhިQ~^z**y`fOVdr~BHcrBeb?O%@|)|APbSΝrΏh! aYZjcÌȜnPۦGa\FeA/:i?n( MpӮ( R’PU[0t|ۮj0 ~y^žABC)BEDLR 3 vCc$8]&\{rȧzBe)!pq'\;}">KˡJ e9ٚ$7]R⋂µe%F=_6VJB)k]K 7Q)\jW18tJ Ê90YO' t)H Qhv!SAZ`i," 'Nx.PDڹXR1\ Ǩ).)5 ,qrIP zٺJ/Sa}B(n  CcϏOKkxl8 B;D;@ N V‡F-y1GrV VI-qQ0*\o Zo4H`d 0Ri\]B>>EK q?!^EmbQ dN-@Z oBm.aTuFrQj$f̜ pPF}MRJheY\@8%JT*(OAmnZPA%P 䰯¾$MWmaXQOuᣮ`)'12^ˋ2[ ЕQA@͎' +Q Wb)Sf\ѧJnf1<{AB%ȰBM WcP#2!b7A!iĬoͩ/l(ă/hў5 ?0ԯK|#Vo’6`p&пC P P UzKTkў9ZrUX "܅踢JcΨ`f~ya6=r_8HHm#02V}u _g}I0\a\r%Pr' >]')o%vPPK(eP[/!p("_.&dYYIT!"*%SsZE">:KKAP"=@$k%>|SZ- pmZo\rss*+iֵu; J rQG`33 7q=NZ0hBB5s ~X mrQ[aBW[ A0L+|vI!pF*!|sAA\#D'*|Q"PxJ|4c#P9 r:0%Q{F,- QKa[ )I*zշGLVM3}'$8yҪ!Rx̙r!~r)KqW:ڦDoJ w! yOH!{ *+TjT;@>S>U~#B4TA͠4R <@ 襗O"j9㘲RԈ*I ar(s.<~E-A!-8bAOo1C»׍`dWk\i+eP\C3F3J_|WH DAᎏ(:(n%Cmz? ߓj/%,T&Y"D%"hT(f|Sŵ%P,a@c epUJ3z=^p1 qʧSpطk.:!/07{A3#j!]ΩK.kDN95?&T̆=#(=xh;("g@ &U+!\v OK_TbMK6@prHQ#Y03J0oEG:P2(t7JR(SכCC \kB!D1\B`o ^l7gЂE$63 &21  vSʡtL{vCA?dv&z ҺsC<8;^@P Ae#}%BcCk@.G qiCĵL), [IM A )0>DàQ٦7*׀nFM1. (R %a\zuk4GwedCH\E>l8tjb/_ ѾhQ\c2.M=0yJ`8V.JOI`ʰPn3z&"7*_aW(o5"ppOkfK9* Cq J AઃĶm (g/Nr-iGr2rlaRȦFlH H4_F{wm^ݩɯkCiAeYT 2ZK^PK\7*,(g}a-~!(_+n  DpXV AA b=[zm1(qaP`I$sBv#.AAM7!l{b[!s}!t_}Ys)K׸{ZyEW>yxX  o B ;mJP>>e&RpI.AE? R R 1pCq!%l󻛑5*W!ÃU@[CgL#'e(h=-UFM4ia˦3K D܅۱cT_2ȤD}uwa?BjO$Y;ڱDS i5oO!/oT (!i1*(krpi ۤ}LWB&'Tv[ڶH5]Aa]Ac_%;S 6K1!h-:#;2B~ks=Ü(A/8X Z,PulJ$…O crDbXggr={O^#ZݻgYei'vG ⫭TjZ9)_::?4AE %!.6rQDQPZ^ 2)(! Q@> #Ey|I!!(^c AxMHJX]13 Bphˊ>@x|( C[ NV7ަG7dAyP~D`:]}?"*fHoigO&`Hs!Lz xUޚq(:s(;nR+o(p}z {RW,%!m)|Bx -]P(e'gya .a 8c@p8SB)% %7s5: U+ A&3`h$g2 dEx÷yT̨xd H4O}ѕ~UgΡ~Yf'ˠ/h&R6SYt`KLxۢvu.%i Ɣܡ84 GD)D%@I!J0"7EcKVB >i pE@ʊ ׍w Ap&͟?FpB@qC@#C uM; QZ@!.L+UD 0 7.JД/!VyQ;{mA6B2\a%EZ\^A82,|P||Fk}Z Qax $@pdPR T$6tO@Nw2gUaȴp&G xp4@T䩨S !7bpy(i}$G i׽2.ζ#e;; Zs`NB)tb)CA9!Hs7]H8et+e%ġP%u%KHyxi豔P<ҍx Æ URXZXsQjxzC= n0 S7 DA\& Gg2P%Sъ2GGב >odg/+g5v ,Teb/U&8 ^38Ϭ0Lb *HkCop^a‘a:HT.B'^K+ A xyiHRz hG!/CB!^2 3L3G B`pp:HEf°\`٠2J AQ ѐBPPE iL~pz:kg#s.,_ {WW0 }e]<%kOw\5B޵)_d j/ӎTS(0GIC&۟P GaA|# !4B(P8]*a5<"BO&qߙCQ? s2Fp"8T j;: _Ki! 6G"]nPf̕_$j{2(!L"/F&%p)/ ˢ"P< ;BTG r)9*1uaTabpi.cçv&5CVK%\D 667ܧa|)d _-19G9B8Y$̧\!  0(pԑF CC$kd#*7*Q~6vV5!MwkN^ս~FsF$h( Fa!RL(IBMBPC8H +gh !3`)!"óN<{xwcԙ'.0n0QE`j!pXG u&Qy#I@э*/ `PQzD?:uuͨyuRawm*{0fPb2x^N ̂EO > I# ^ct1W=/K?L*%;Pn IDAT0. jo[ CsFH;j0f^3G@/RB`PQaJ̈J:~w `(!,ke6Xyѐ$&ͲeԙsA A:S<:@H@$2 C{}V"Jp{ S&wQAK;<#,^`0}e ~^NOO\T" nׅ)\Ɠ%@!;v8B̏wB\ZIӣ )eN)a5NDP:Cup" Qg@dJ/%FщE;7|od>xY1MӨb#xlj׀ 2 N_K =ΗD+oaxBg\in[Bx0 7,!I!eJ 9ktAGcRs"Qh)!818ѡzRu;ב!1pX1j6Y 2)vt̋*%@#Gj;*@xdݣ *_ê-3ڣGa /sAv_ƈ0 KJ`l#NpJ\$: Ckxv(wW$bt$Ё3vUE6%A٠ AخK!XLj K!O6Juup^ Iw̎VnԋCLyQ8w!:HJhp,QLfPHRH^P Q ]3jeF܍AWЩM^wG:A;%& ?PKq aBb9҇a3]BV%xPPnƋB^fUWntVAa gQha1ٹ-edVq$Zi[~#M<cƉb0CMM9yј^;!A-M) :e Bc#;("3~ZvKoww9:0џ)7*h 9JEP % x-e680$4BH:88WĴBWtVp  M4 U4hIU:BUPO%^{1WƦ1c ^L.#BI]?I{o2)Q"7ޅ@FßTB  i% 1"d r;@ H:$$3vJJ\!Jeη;dרiY:`2A5z;54dA v6v;k1h8fBϠٳwu@OoصkUi"H#ѫc `PɠNոRÒɋ~fWF\O!/Mܥ]nrTsmF!$D! R wUJF l/AKB) dA@-k$Tz* R~$hBs+$K - = F}t knniiijj*)/ym2Q 8HZF&,"KtP  acF^~IRH" !Qa J2ATBĽZI ɒRP(Q\Չ vUzWB8P? pmC'"45&DRFkST!%Fc(QAyv:2_ ~ P 0EQr=tp %FtBx5QcыR_m*':nܞ4kކ;*53YfmG̭qv\N6WӁ#]p8/3~MP af}ԑ^Ņn]R!r? $\̨%N#ع .?si# k Z R!F eBܨQ Ͽ[:H naJj<+ޖΥQk&0Կm$3*U}HJѣ$K"~\&䭣 V=pہ LNr"mϖEDqvzrRU8_-HFɈ ØQ0:xP9ę&%$>Ar2kHN˘P2H1x R m0*HseR7UzsW!$dB=H28wupв*a߳W&"vJa¸](0l'^;,_Hr3f !( \7~ tzL&*twg\]{/a@nEAXD8EeP8=*!\GBHZu &5)AF\)d%B$pB9fm4JaPu{F~T"aB4kB~.q1l#E U %{@Ha)LP T(ԕ+^UNdfK|!Am| VWE8XHiQ<+Ϥut2%ldJ($nx 25ʲ2P@-t0* 5sapC!tKPtHH^k0nh֢xALvW%c͓bf,uLxd.C.%ܨx3 9~mQf(dZF{dbbBDBPJ!$Ѻ@v4Yyosk212dz9Z{sFRyhI-螵[r'v.X&df2a¢p}sEQpxyRh,2 kFJR+U:@hd, ./ɵ/Jy)_X@(53.Oxi=ʌ.#ld1!pB~b3˼ ͐5UN+ ~TOxJ+UtC7DܨK5d:2ROژ#=( `Sɹ?MBg'GcN W %O`F}mږ#]"} Oa#psan AcFC$i$ 1)\2/ʄP{ѱ>=hԾ{.Q .$D)c$ (pyv ]c⹙4Ѣ|ּnXF "IKwt1|iB"{R;*&\( b(ۗl%`[I|bVtB:1Eǃӑ=`#h"SH:HfTX 2\ ouca7[+ @=_FOvQMk&S2)߳0vP y‡6|8I«읈axҨ&U*@)#s%8fY U]*PPI E)|RNx_c42% P$BF: \R!iL܋G!3ADmՓ' 9ڂq(gdĝN^?lZ Cۓ&7qa:KRv4fNH)SS3y2ѠrhOV{t7+.'[Kz˓Ӱ_[QsmOvU KzщF )(\ȅpzvkABpmm%Ñ䜵Z3v^D0wi6"îDH%R$\Ob\Ja--2YaГ) )ZݾDN8n%oI/j(2zD\ /š^$-T0)JH!p1\ _ʌ;LcئF2U7^wB Iz 0X #\BR8>C{ 2HCfv,&9Q1 pư`-AW^Z`|VQS8 1dQrz5gvvP𽠉7#8bj {]; 2 /ɤk2i܇F`{'RlyTAGA bv)jAo-"(14$3 P'Vsg a%ed@6Wy%l֢Btb&ɠ\ *Ρk 2D c>@TCewKi':2#݂ #,iÿ1!E+C&S-H3K̻"j)r!(0Mn.woDPT7PoKΠQ=A3t̨=guiANDhe,3 ' ;ǓK 'Ց I s p(AAPCI ‹VRhzB%b6 1=iAz;KʋKp9=7 !]dzK&d. j\IJ<#Eq@3i)zAvp1/)=_mk{eL߸lc):&N^ƾSRB,UaB9c5-A %2Dk!9Ru]<^(mhU>&rxeg H %%ړFZJ;3XR>랹DЬZfAM[U>l|:8ZZj' pلr zA Z7g!A6bX~)*I GQ*P0G8fqW'ݸp\ĐBP(!`8dApvzl6 ƒ1/B :aP _K>ٕaŊZ^p 2HB(ӢRm{~[:#x}-+|s@|Cc9p -EhpBUz qӻ"HA!18^SKv1̡g`i}5C%jTCMb=$1 3/@A^W`_W8Q 3KBId&Ojٶ}edCK-r6##8$虡0J8΀j76mN+AJfZ: NZBHf ׋P"[UWJ+pDx_a~_Ν\CbzՖJ-Dh6P_P*O?0U S(d 0av1 5X~%v0%Py $\\rڕ9˵.3|p&[jHzat8+Q lX 9,>㝼PUS B'*>qZ ' V=p  1810\}A/VRE$=O#d0Pp=BBwq?+k?Æ9w%82ɽ\] -1lc 1aF3:SA\9ܾ_Ke }ep"PJA%5Gq˗%]."(A)f $I#ӑAAc|-D3g(|ҿ81\}~XTrE!8zj* A~t'u5:Fq(4=(C}$7z^liܞ,Dp=twwC#WÐf0&{!MzyfOоezlmdEB#LP< A%j`Erdo&$<6T>utJ 8=;Zao[? ތ%X ~cL1ȇ㜧%!pHO@\tu}{#_x˿ѹ!b(bzyF;׫p($[BJV6M7!A 2)D1R8.lirDɯoQWF1,L _,i24iP(Wk%& D.hP `$?<tg3:1t/ׁ Zxofj8Gz5 !KZj\ܨIbX۠Z A}B!=%571 ʠ=l 7 C^.r b ݲ}^ @EA N fd4A~`1[3AM !*b9D'xp8Bp-`?|r5 ;}bDphGg}dBkU#e#uP8ѷY0h0$0Hr)j <)SÄlF`i{|`BY"' IDATB{LI}}͛C= adol/9Rqxk1GyeFA;DAFS*53 RgJgJX:IE{6s>:$CPnA!dIcbFrHU55ZzzdD6C pHnV0d(f! dDA0{$Sa_Y\':t'N4o,6!aB\!pP|M 2(#ŒbɡF @z3籙Ǟsp//5>CX@0KZhR+DC8f~d=FZ ^Fr$ D000xadÂ)L¢GJ_K}=~`$FGbab1b?Yx}A +xd U((< W}BQB")"n=!(h 1vtLba$d0h1&+28m@&ƒ |E w *~x8?bpd{pi*-[x`!*B4Q hl6C(Ml3G`yeȈ*$r)!'UP +xJsRspEhl 7eI!P%# CJ3H Y\C 9QcD1o·АyR`_@ )$ƚm'{Dv) >aX _ø&R7< b5ߏ`QR,Ygd^iG­c2AABˉ R,,XR|nqDE H T+}M9!dD=Jӝqha`XhZ/1$W!A`'%]\rOZ0a DSmuNn/!MG!00NSPɐ8~lO`J 44IHE*l!"Hy }`1C(+kWjBwCdONϩ^MfJu .?ţdPhdSihAH J R 1XxL ~ۓAO*(%c^,U=j^0$t?bbnZbka(, KaAZ,JH =1LN.UPl*˴  AK`XQwx83S&9p>UNYB1X>=1Fp)[!E|@z1 D&`8Ma+zJ؉^IQ a t\PL` HaaZH(=+q6i_on۶upE&tx>o!(P(1 Fyٙz֢P7 bzClr 5 Y/BX_Ԩ:XDd " 2w|?U҉xW&Na6) D0M /@ayggi[ Pܦ(*p52ra 'jaY,Q 0B9PɠFA` ObC°v4HE zpBDyǜx>L-W*-D9M> !O`~2)yxehLP D_æ(&yܶ :M*a\NtJrv>& +24l

        '޳'DP(KIb D1Cm # :ˈCþjS9}q? Qq842If491UIZp$:H),LT-C ъfdt0܍Vh[Z=w.@A:HYU.Kd@N&Ix_ ܊ZN|n0A˔ڡP}F14'D/E v!!ʡx92}|q%5-q /kaCJ&$dD`,%Gez?\QLt }/g> ?Ds Dsp\SeÛٝs)na*JnMN4S0I7JOWao"4=je e@͛oiYs 0ݐvlR]ZxB\%P|V< 9 oUU% Vt!xѥDLX3 GU5Pм+pAWCP Qzn֕\OahİGGr3&"hTP[&{%K1Xڧ2uBS9x)La&)vBH<aPB*C*Jn0pvd WTc:?<)`H@\A )!%|!o =˜x_0Ա 9[oZ/^KQI0X8{njINHg+q'ʴNj`)ӷ?} %ZS7=҂C=w͟g8g"%U*2%'*D*4Ǟ{__ ;ќ29#}=1(&xߴE \0@M5NN`Цð'6D180 E2D~c 8ꄆ[B\͜[ã'аŜfrv 7eLn!(DPy*E U0ðDLzR1D1|9 LD WH4e!n>&']LA% ɜ[0pHM&|d0Փ  Q=Qěd:mtfFH#˿U {|7"K6uJX|P_(0m>nSBH %.JOE3vBKupTCIEp/+ RArM_aD{0QRmɱp AzT0vv`xoI?3p|G#lG괮u.Wܢ&'Ia0C0@aVGV PXft8Jɠ JIJ `D MdbCF1}II/A/jc*;ћe 9bM>LdhaXe 5Cx}#"CL3=91s8 }X"D/IАoEdV1k_:l>V\mpqxSB^j+Q⑙QKs>bG,i=^POH,-pVxjȠrZ JHϚRBDC@OZl*2̫࣌/273'j0gBݜw5kVmB2 b RKQM2y& _C˓ .NPhA8NiO>}N"bq2’&g.TSӉ9qCo0G3Q'AVUF-!AbD0]e6F Mu#[L X|u ɠDz =j9~.H!e}Z8Ҳ_#-Nem 6>&gZz{Veb޿ Ҕ#x+>F`Qb}÷:~At=x(^V b/𪈳- #‰ް ! J) (!c?k*GStI-\! {lYN4'=MAPGBY;7' Oi(o3c 1819f{{G[,vdKL!2'ХHDa| b fc( (lY"KCZneZ(YQLB(2 :gN_qAY316X[Rۍ j͠[P)%98ə.S2~:_7mb:SG*"ȷY<0s& ]X|zo}/7){5~I Qaď LbH$|%0,tPVF"fHV|nP"1FM% W.d 9QBx'g0]MT+4`Hj1gIB%,O*)\b͋-IA(?A eX8@񃁍,{EyGyp!#}eG!IaRj&'# ݻfo^bi JrT!W E$1bjo>k߳IpF!Z6j(.cAaGSB&<%`Ec{m= c((Tl|FfДO. RT!PJ"CPy"!4 JT!!)ae`?dH5 vJV}/ͱ|*CtHou: LeTCQs$By c=B_ăOy^G*YFPą#:] Ay _5mǻ~:/C$`Μ'<"RfF}Ț)7^]#@mE'@(FWBD(`|l!%0 ʊ #j) )A]cǁRAhP]3ghወ +3^_TJBKʌ" ;@QJ>cW+-pCf}!A4 ?Xt|_[ ýŀ BؒɒJ7 DH(jb` %+*QM_k(_2)|u7>.&#ʓ6%6 m%\(* 8G(R8Ԇ B2ZAQkAʑZE`H2E[`_k_z祯Q|i;64|u A~`p}85 ހtA% "JtJ3ڿ+p'fJүOCعB(aۇ_)Ё77kPQ_TnPeӐ@ H! {UDdwBpGzJW0fPX>}>>;gNkB*9Q./ ABɌ73ƍ҄P~wƄ%R@='"W w CFpLX@C1!oQRjFa#E`7Bw|T_EXRegS~. TB?&ls31v ZFCg>v,c3i$* B@(ڍNtk] _yg:!]%t;IŊB %GwV ׀eR !ISķHbFDŽWk71ƄSmZAa'My}CWGm()Z:Aa aSWJ8{\ PFĻ PxI& **Nh3hRĘP: TNb#;@j%=̕|(1ä\JjK&Lf- Q>FjRC,*:ې!~n ŃBK4—>v) h9:8gGYqw܅ ao:h1"a#4CVw̔E:fl\y~˝DWw{KOr9+3~QNXR[JaG2UHfc<$F(ABG !Ϗa=p n%O0{F٥\41c} Bgp~Krd~hC͠P#(GIٙN P)%(=!5, 5] ۊ'Jݑ*DK)m9ҭJ޺BhG(,#SKngBx̲;?pB5V-T`'L N(%Z Q냱^SY+~ 4J;2yHm=FzJy섻dfs8( ffU&[ Ob P?RJB`ජ:^)l> :R趯p2ڍ%GQ)JB1a_XS^BnI܉^CȆ %UΕ;fحR3yFAB !njkC4A‹Cx!E)Xkrr wԼשsS BK 31*Kur'%4rGPԢ*'6G6H#PAػ7 )ڍ&@P̢ČܚO;&DD5`h % vy ń:W,PfMZCG~T)0 -r ٵ9٫ֽu'*1vL>L\\:UՇ}˚lQx A7* ܌e&̋_'4 P)᫚6&!cQK7 tT}_7&׋nLaFʖhw^px8O# QL( 4\P@QU.Ca!s!) ){߉Q !KR-@Lq|sh]\n«|D%d *7`E +JS)#2Wœ5!#*! J0 &ݹoIeUB!_Mۨ|T@S*LB6:  {8O7۷3rB$?VT$)#=(y4B}2Ąn[c Z _Uy.\8;j8Y5嗁USBuTb&ᑌ=<Ω3A3@2Ztp㖴5o ̒9w3IW'd\iǕ_1,?33…xx.OBd/D? BdQ!/$*a]ꭴ5{*bR|8;+a+- 4ǷJH$nJTo fТ0~)BmIvNlEs̨9؏fwZ%P(.Z ^j&A&f,ei!d/j%)1\ aS"Т0B1786ZӔ0SvTݞ(sfi1 “`P HQ6?_6*d&ܰ=Ҽ,՞g!7Oaq-x]ݙ++NAö0LO?Nɐn5ntPs<5^HL*aEBnj/WBy, %=)ض{AK2bB6 + (R{B~Op p&~;3hC (ܦJ ,ͣE; r5Kvwb .?%G 7R IDAT4)pVAbӨղ&h2<3غ}B6_]Pqh+p3)WXEfS F"Bu"^jl~FӕvK 5U#oL0vʷF<@5-=PP(iPq(?<p E( w *d&݂ Ia A`DiGMTB5cPYSU CJOeG U*oK:UYoʗ !%j-Yn7$0p5}V{SBVOsv(ܧz /ieYJ(w*_ձ>pGKm/3ѫAaHA033_aB SPka2aa((+a(D3a5n-T['f<% odFw&1 PBlo&w.!Fss33 Q,P*Iڻgd@E Oa ʌ;]% 68,$lJD?z)!xQJ "%T ʜ 0BrbFfG+3Ąehߤ]PWJ rY.ضf2t'w;3;Q#.* 㐴׻P/l: }4'?>}yYC:PVfnuh|4?zVBP*Z8[ƄfJXf<V0]v%406֡DҲp:nt-lvk0Ǚ)o;|>33AXX1aSJ A^8(ѿŅ(dsh5b'Sn{eݕ*X뗬ԏ7: MfBW !J>ЫBZLy f"p>1&Š&㩻>J⽣|~.!CvTꥤs hɻGxS^h1\忬C!Sjx2eELdU B5f/ ՜hgx ;za0 )!dtJQYxĴLjh{;ъ:!^&LFҕ4SiBw:\$c7)L@XR_h_yY)ts3q)nDOh:`33dnjCfʎr+Lppʘj̖63\gCX؞B*QЇ۬ߧMuB̅_p[F,mrpF@BXcvcf& cKڃZ"853*Pх u~ Sڗ&%w,v4qkzoo.;F"YTh!(̥^Bp89*GL DuWPW4!MJxGQ-R(9/sZ}0GSAbL3$G[LJ _x 3*aEY?uJXʖh.aN t\2T0Զ$ܨg!VavI'6{ ).I9f4 EH SB)Nj4.\2iee ݅0%|V3 dp#c-i:ao73 {0:h{w@#q -njǛ6oR;f4Z |//Q)M;M1;juس ;C$ftdX߶ f'./R F̘֙u Oe0hG3Jˌ"!4J ͠bVLh]ϕ'plS`+ oמpw] %flfv̔jG!ax9,/?$?ԤZoQ8xgaI铼?WLRPJ /2iQHK+xd;ZֿڪkРDqb¼n>Op:_ɛ{Yh;! 78t>«7ލ>CmV U(^x0|I*E,;^Ϯ=׏ y^J#c~BoLh.zKM"H ;f=gvL5~yДbvC$h($ġ}5wCpzCb= \aoʆp`;񗒣IAaD m3 aPMpPRfmv^fGs9gtLU ܥFԘ0aeƎs~Ί'7$޶hj(:~уr>Zkv:DN||[`u\.<}EP[e VBW*!JhzGۖ$T/OuBO֑_+y3v;;Sb})nM^ro$7KqkҧDIW/~~G ̪/-\oat䠧2|3'!\Ln 2dbOT^&-=!OUvtlzx;LI̸R #(8v:SRwQ𞚄9{RϨI;mw๣;*eKD(lnȰv4<9TeңWYJ8q+!g9"i^Ƅo1!/„Z s*CEcfqSEmy2zGDNSebŒ`w^İ6- 3(1W Gր%2.;VZKR&fT>ƌ/ul aJKmR2F,-x+Զ +gy;܍.ޫ2k ~f1~f[x[RA7WpBV<&\%&,˲7͒J7JhRV0mXeKRf$)G+3҆Q(pV[yQEI|,A 0g[Tayao VJPMΞ-`?n uBH̬azhmqb¢ H{, l2,b^% Bx-ZLl)&5!Sph󇗄k5Z ly*kKt?Cʣh SBXo1-,0;*7Ϡ-n\AOpmV ?2!j%oقpqr>)CXm͸&Xצܠ=lՎ&r/!%$G.t!\,9\0M ҩn K3>(ySOs EGQš_?(Aowp_yT0 . HaӫeM+ S&'0ݍC]&Qʋ?zUfK ń!),JZ=T%|Sܘj &$tn6[QLḐA(a4۝1/_?sk8g|޽xܽGԿVӁ RB23@V(!\QcYe VhqZ }LW{ם cG%$+ MZF,QB͠~) Rkaljq6YhBy~44{%t_]W,0!#_ + 7(EUvff…cA)̜ˮ )1:x:!ѝ_ec)!eҜ}M?6p/2J8T'Wف1EEQ(vgz NUi|a%·TC}^<7JᏜV|m[3Ao3 !$ +! )f%[Đ?NYo+aQBGܥ@!,G߷'9v"nebur%gU-\/l)_GOue&4 r=))vT?<;!CJG0\W!4 Z>^Kw Lp}0ƣ -K PBdLəM_(eG/UG ܮ5$B2);JĘ\w:fuG3@Y =.jfRi?{ƌA}; "#*:u VQD@ |hAM[OԊ|X8|pkkk'qG_ta[?na܍& Q ˩.'i!{킰M\cJFNE aPLJ q+_B׏Ҟ^iG+**;^|7ʋL kx !`$ll/=TS!a?`LxS^YBoǂVOvBXZ-!o~x+E<$]k:JB9d7 {?T3XV(v5H%,'fcŠĶ5;C*İUEȡCpй3?>ȇeaـ,W{mg06&=*~]BߍJ â%M~^S3sX~|p!lX-7JeztOA!IB@.+ Dik)1aNr" a?]g7qlٳ_lyD5;gU't稭Db[ o:) 7F s/tO!pOЍf\PɑT?/fzXM iP3NQh!lyӣBBQJH w-]%fƒbǎ*%L,ZЛBE%JɎ.ZaFHsAZIh!TKB$6v Dž(#W=dm[j# ?2{xʆt7˜g:flJ [J;A@V1 B g)I *=ʥpFNhoƄ (*x|#_.Z*{ް()Jp~|A!*Ϛ9~-_?;/SX )!@H&h Xė8J7)xQ J7JpZw $A,94& #jHp}#( ඤ8Jq8j8ҏ.ѕk_U,)%L bPUe@hܨo(ցE)T w&/5CVDžP@8b#ҏrd©BT9j kyupe!iQKTA%B#ç¶BP a9RO䜜O  AB¥JG] ivB_]0?Z-!phJ {xUv{) $7ZC sj3SmCF+m"io ވ|nD)d*aeA{= !"$!\$a7CACFF .34kWj) P11"jG.1KK D5c!Uq~aͨ=s"ѥ0aLéT"~3Hᰇ܌ΘyY$0K0_{ŠOO$ a>!Sk 0B@QjԄ*L˔.DbP(SX~U Ąy "XBֽ! )Tydw2[(!QI?p*1+s!C*)T4,<&k O02x`n0(YhziK>KvLQLʈOeJeⅉbpB| * 0 eeD.b+W5`1d4J^9\ uPÔV/̾]tp|L Û16ܰm q)@!8R#nl{!P^LLoA $7Z8I+~ȑڍP5&UF CH _PaG!t0é.5٣@_Vk)D9\ 3}%)Q 4l8~ IDATT0 b(@ mkaB[7ojCn I#uZy[[dď>:ښ  7BO ȡ 9e0ݍ^Q*OX1eT(K&H-0a1a5DD)T Vi)N$'F`$Ωq>%MP:F# u*Kj0PQ-'e&>M`A(N0hX!EL+ &i90(+E VUM)vT +D QH3GJ4ӝ m=}3A!axhXcq-^"J/P PbfFQJkA _xsI!ǰ 1#ZQl~dT(%E V/&CnE ] N%z+o]33=|Jj5ko56i#8RtZhp෇NbxI^Z1+(/-hFihHXCHU-2$Bo1( b8jلe˘.%DC( a9+Mi,Za !8.ZuŰ_3PLt rf=La?/!28D 1Hg$OQjPAdp ġ{8bCCoZ&DPԃe B^}asGfh{0T ݷ,M6U uڥ1;:^&,2.\L ZF^10%?cuD0&5H!ibFݘvWw3ƺTARA  T# Ye~(W{ cNtϯ,f4F۩: a\ z= +/~b> X)pDK[͒ \F:(QBipyГ +Ѣ :e j}6CBh0\U'guY懦.d\#3608f5‘I|[2f͜M[|t.|q0 x}B+KP08WEy7PN-!1r_b/FC؄nA KL\ 'LpeIbv))!\a'ъ vXn.NA 0BDŽ+5 ! ,O&hz ٪ %j@M1&\S+9k<ç &=Wz%}'|@0x0ȉ80 a[w ;Aw- )G |j C NҞ25ہC'ZwƦK8"&%G]&Pń$R _X.P<'Z(CC/%cOз%|̗I-)nn\G`c#8Eڒ ׆Z˓21̹{zsl`FК1 k[Apc=i,@C(WCOY23fգdɽB "!;6r> >5AJ4Ci-}y(oYSnDWBFR !C02h +I |_#RTF@R~W#D7IA"P b89sj0)gn[341+3ths74t3z/1+Ka vRq⊕DKyd[dQ= _~'tYlǑ u.tQy#uBƠ&q!(а:Q#`p mEiZX -BgA:oԅJz^G2'` j `(ޔ~)CvOù)| K,1|Y<{^3w\EOyBڮS+ϒO%(}q-.ۦk$RL0ĨrAㄆ:T4NAKA=!)!'W-ZNmBpMZj3ek6ړ>Y ? u0`D}uuvY,1ekCq}7N1E0MiN-c E) zB8A~,v^4B#%%Gҏ"D J+Z=kjA){10D pFpAԓ/&#Z=3$sb8Јa6 ӂ F9AF;X^Ti,1B0`<,PvY-}pvD*w7t^z*BH~P{.r3pJ8Ra9! bST j' ÉA=4.GbdzepYk  7Bj|F[ Ttc0v=8?h'TwJ '2hY ,X;AGӅPfGVq31\6ޥhG5a עJ Z yfcj/AToA)H* 5 B- A% Vg(e@pSuw596nd96'`OyĞaeh+W|j_t/,qxRa0F;Blf;Q agw}PBG@مfuhشD7;ȁe&&5Tu4UOɇih>'a,&d4u.2) M i/޴`S!Zl ֳ>7o}/nM߽&xq(tT՝@u!WƐRR!r(C u>4X,588(_肍*4^% ݫڥa8'V3"yD18H]Ҡ1QTDihqhZ{<Ɉ+?)X -gb4`\EyB+M6aƄnI Xdj)1.WS.V/qr$ ^B=A7.nz}Wٽa8buP0Df{o쏕 [3.mBFL?=^H [nSi'!,D{W= La> J@[wl& 9&*rA}OgޤY=i2ۨ3=(,9ERхbBpQ]A*CPFp `DšFPT,2N ڄz8Bp8] jmQ `| k hqj%sh(&P".G"wIa'O>)(? xT3ULP= *GZa-#B ưŔ`!3Q{i=(GnK9O,2bO*apK CGq gʿaH5(T׃%BpХ3RVyA(ulA WWMR " !ؐ\ H)!P+Zv ZdBEń3Ad<ah@$GFXktdCCXL:TN% O}[t,Aq F$SAAܷ: } -×6P . ckQFbM8*|tn3QGnBj0tHϿt2QB{ pEeB!!H:rY' 0'X-#-1ߺ(dX J9"SB ShpARl0"Pbl z ` я!Csrb mm@b':X] 91374a$ $jn|j@ݞPm3׃.yUsHGCj^eD x%F~ gA2!B*\QqDx b0hpx4iQ}~MEd5xE( f)`8TC02ȳFh:$VC bpgƨ~|"`Wi| Q(2,|Px[!lB Ȅ_vx /cWlBBpc~n*歚PHM>R"8K HE  jUB].VW':{3J` E" XPmkЈ6[a^Z-#6#cKN3EWaЂbee@E'Vnwܙ~a4*0@'%}1!wf~Մ o* qc 5{~0A(dx]q@^7YD'&C D8a\YxDH* Wq [H27QA=yњpb@PB:r%֥˸/;$$}t+|%, B܆@nVbBOrx.XQ[y0.2SD ^ AAT|!ԲA7`p܉vD1B ?ʞBb aAb_kki(^(*g &!ol\}hFه. /ᾤ0^ !x AS L!8.\ [^q.P8dQ' ?\$޺":&U>]ZRNQ ҞZK;%v_(Jx%a9C1%k0z!ĉaMI {X!Q5G(2`HeB𚛒jVvҜI윛kSΡ/gm#1r9B  ˊAQ!b Dك-k!Aۂ oBpX#RtaP@DǖȆH=!.S%DLG`Q`СĘtl#~0.P>xμ ԟ Lt6&$ʠ^G Ń 1~,i95!bIh%KvI Ze9V&Ȅ{W˨۷EB ,B؋*B 3EhWz(=V>b24FZ,J0a永8AG1(&>Ox>Cܴs_ g{TZЭ 3,mԘaMxW-8fEB WڐSRV!`;,U:18KZFa2J2#HP-Kׄ-Fp1 B 2#rna]-ĄvawZ ȎF >M(s kP_y(>XKn@@M&bQQGmϜ(6E6#`a'L6wraGɃYM6 -WA M }@Wmn-ow<&0vT`w714 )84횐7Kpi"8xRFDvP <h0 sg46%Ch[Gf2 m۷2-ufNG CP!8ש0$B!ssApvA+!2xTx@! =gW& #IAEan\ HaA6!PHDiZŚB O &O-s`2~28mۘ3BlL(vdDؓhsvQa3UdB dvRF%ae%Gm ɨ*WtTLx hBĐ\&SZ!EobhT42ݖp+ƦǦDFxqfxt`J}MxWLfMB=0 nчݶݟ1GGڣmܗps ))젎IDATdT\;˝!uHۈADёaeYdB`o(WdBEkI(B JHa?2!% nor؎LV`]~ k 1dp 1ԛ@..^*fMчЭ#â⤈(ϱ.udO,4djۜ +ҟ cRLΌ{bm~fmpW@4g6DŽAY!"[|6 R9X QJE"*$n >-~(\쇅c$p7`XDp Xިs ). 94tRIw[`01-!(tN$= F !eBasTwf|%ڏmŃ| 4&;E!ܨaP?9e2"TUa28Z$ R>nPTV~tTOIXr=*<]hLjVy^f q8$18iAQH=(lD}Vu!rX ҅`X""1^IbDdB~`Lsߗq9g rT^xgP8̈ 1U&|s^fH ,H}k`PG^ #E91٦Uu)qYB8@?PTXmz2ܒEBBE. @+B .eBѠ` P8U N9c* }r %$HpwLdYG}810/s./=U)í0A&lgCk=)PLՕ1ho3%dBXRRJ p_R )FQ!,8* i5SH1 p:*MH2 E/q@aD0]6UJ51ZAw *.[NoZ~c빎}1 /PdP CxQc8, ͱQ!ːA $mmRZ"@ Gq Vh ɄբSdBrej&$ Gok ATA"H \Ca0hiE}l 㚮aw!>]E 1ӜEէ!szqJSypsSe2qSs~&W|o_W Cf(T( qB!}ӼPɄ2# 1,bYH(x[M)d DV L6 (1HD 後0!xU!׏F&'-P2d=2,XxP8k$ 6I K]kX2,%pK8ҕ> vE>Jgb )[o_Urۗח s|_aMH2 g=0S!8$ckY@0a+NA)ݎKQax))'X`@LxB9gu P]I\:U2ݖ)#) T`tXvՀN >L]]&1xiLJ@0AC>/g%4G$P>0abL2=i!OHo#6KNöNc66!$DXVhj 0mJE- Ԅ'ńA80 k؄:~Li)Ex 5x %z^~BM[v*7@p4 :eW2ySܗy3 ӗ9M_FA8G*hw8oz\.  2FVIk&PTf(o ^LhaX V:* PDHqsQ !b2JKTx\=ُ;dEPeD Ab276EzñzdL(a,vHfaq`_>9v`: FߗYs2k}_}T~!>(^JM(# Ɛ;37ٯwל2<@ 6.& ۃ&QTTs>B.G+ù!"xa62x['xTXtE8YÝQPD!R jlSzV!n bR%D`5[Qlɦ#̠DŽ̫oլ)ssg](a w(ČPB*ic:~oǐF5"FL=h0Gy](U@auOa63Ba-QK!y0“a%BC@o X3Y)3 BDFO4rMX___Q@ˍJVҕ'>S4ϒ`A*=r_i2R;e 32!e(P,s: ݰtj6 /X8jWh(X REHZP\FkU2 hlAY% @Ma0De"$ e{TANEuR Ha=!8)iÒ]w-vVϙC3OY]^^=E|29eLE䣟5jBk\"C}C ÎkN>ګY|u:w< 9l "CzMHr>J ń`)Ֆ5lTa1!5E2Mn:j7-PpJ14]1 0HKѮ k`ZOAG@ُ-R̉0r(l+$Jї_ d4LHr[ۣ߂sZ_.ZFez]]xEX$M'Hh"քet[QGk vF 9*@a W)r!{P׃ԕqz^׃H@Zne$ND^9L(19ք5ᶋU/{Zh:2/!Q) 1|P CmЬZ3ӝB^u$B5!Ai,!ذB PP#x2a1!e9ڴ A8,İF-2 uG+4H&zJE Cv0KrďRj0;99Ԡ~w2l@t4[weLF1x$sqrѠ Y5?A1 "(CAmBNH*"m'P#(]!i6;,IqH"pEM u*Z堪@Pz2@:TlPRܚ LƐC/ 2Eښ{h-/ss (gdB]RIȽ[<@oYfevO Ʉ$:2ar$ 5H!qh0$+ ! #B6\rA6<(,2XMx\yucB PLXLHi5BWKJ%B"qwJ#ܺ;Q-9# bK>Lc;Q~)* |S_o.&D3PEZzV/3 U rxu\HMY vfzB2a2!"5T "FVȄL(# di( OJF|<`㜋v.ZѲ25.=V* 'uLr!SYiJb{k$0a,X=Fems_$jcs:90:fhJC F?z3= FnI(&Tl OnsLxJLH"!7ZQmJB!(2HmDl"QlpM^eݢB#F;EM.J}Q$$  d:t1Gټ.r_&91}OGnO:ʍ6PdT6Cg$4:g1E:6^ L;xdǡ auUB6Z̓ 1CbI($A$"4eЅP`'㖄 C4T,Tu}7ӖHݩ%ϒY@(oO$B՗á5ؚ'%Z KP{L RM8zP<|95bwԞIܗ!Vqo(4*$ ʄBAF< FBa1mE(b:z!T"d*PX&LO6 R6*aɄHa%KDtRɗuF35ɟ%߰. nAxߗYüdEߩ6i aad:-5U2zHAф.ՠ9p^F уTR* KD !V.sX|VLkT2[ {\.@M(we؃.Q&<fЄ C"!(P '(8`[Ex8hB<,Ԥ{'\ !?i"ltKzgHzAp~ Ձ#?gS aA>}ᝈ ל<BmBBpgBA}Q~" 2 ;FX̠ BIF912v[_maT6 VǕ$fX(=fkT܍y(HD asVQ9FAΟ%D #y "|yBKƄVMfBpA 04%QY9QsB8XUeLxf0ބAj h"T KEHN'Nּ.كz$ek|bIF-܂`%pKxeUÂ|skl07'@k\mQ!yY= ֩I4٨au@ 3@kj Ohf@aM>~Pohp(4%~]JIܟ'=ub<#Ǟhxջ J0eUj $_|" 5G?E%AIG{;mjB=!I$օ $n6!"x*H`DEh"Zm0TrW&Ƅ쮌66F'\_I0psd/MGow&~0d_;&| {df&c!C7zL,ut|J壑*RhNny74?y2f %2n7ે L)џqAF#X ?QH p(`ݗƌPJGɂ;qc2 &T"$v,8CxDPeЃmj !]z)ty=OAT-p'9oP5;IENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/000077500000000000000000000000001465312036400226775ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-aws-amplify/000077500000000000000000000000001465312036400272135ustar00rootroot00000000000000amplify-build-settings.png000066400000000000000000002031521465312036400342410ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-aws-amplifyPNG  IHDR5W%d> pHYs  ~ IDATxWUW]cxGt.[*uʏݧr;K2DX}LbNR$F! P"U"E.BD6IL*ϻ\־A?ߌн\k9ޑy+SSp3&050505SΤ9 Lۇn_tTW`lܾƤx}])\b {C|Y7ؘJwOtIW̟QU"w)ιy5%ЯbƆz?! y>)EܖB^rR Ԙ?6L{VIgFiƗfl<02RwI^yoB_ڶ5&$/5I e/,dSpBԟs75<)L-Gk6\۩+%g$)LK?1#F[t]==+k㏫sZW*+-Hcc̈^!*''ˆd#cCn96bEў RX)Uyш<( #ӪMk>:*'J%)8(kLhOlߞj+ɩU0T&|/>m.yuA&@.R4Sq29r(˾wzam}RJc|OtOԈ{W^YDMl^#w)Y[-O)U*%Z6eWqp0,b%6,]g_QB Ȧz)W%&nW=#3Gr}9LOӘ}iIfJl?tDҶ7ACV;%iaٽ'0R2J Ryt]X$3;u=/G>OM#mMjiUďQ%{T;kM$;5f3nG9!Q6UFó9vm 4P&|(S"inGo0oƞݲ6D{^u;nFFޱ66 "=+qY>7#9<{}Ǎ*"/-II}Nk?=0Rl`ڎؗjЯll:~^Ou\A8ja2ql=?IK^emB| :4_bL)0L=瓞Klj44ʦU*Z#6ijxsu됥KFQIv1gMk3w (45OljEBӠ9/2(*H<053eKVV#u<Q_.U3LSc$sW&7~@_bLO 0KS2Itrhj<`jP~=Rr@ V .0[^LGԐL?S#iOloWWt;6% ]vJRv; &;›; SSSc&;K:՟ Hx6ejدú) AܡePFp/IK- иg˵pԈ_dt51FnԨ3S<&"GyXFfH?jf󧮨ƨðٝ~N59dtFHs]DzuժU aDܽᤔ{_i ftKkC|[25TxVo:#k-c,4A[$#0.+sJJzdw]@I2)G/#fƖZink?dp˗f}R!mgdSm£/M RTX$U=zTE碊scBaW*%58RC];OvKeEJ7}O7wW9(e砨%%n[bSC1`D@GU]Fzi,Xs-uvʉ3SCl[P6w=Qʶ&3Kĕ&tY׷Lv5,5#k{Xja9`SsGʊQ4?>Mtĭx11OAV/Ѡ$ޖ~_-'{ ٿwzJv#o ԘEaE4S)AS76n1t@ }W|=4RSe}ni~0uK^6۔H-SDs>߾[2ScrB{NHwgn$L >i)[l>߂^GLϠ4~:CYƘZ4 fі?'#͒fFNl̕dIk]Q(m2<1!EI*7-Ýe1i(ت=Uz(0>"4`j wO~xX<7xM=C-LikEqgnjx*ޘ=ё}UgSCym-YccAs2_55τ}FEvyk{3AYQgп3h/]VF>iMk?5KzOf!+WkQ;GlUkA`j0kɿ?on1)NX-W#o|_**IYt} 3%gĭzvѪXYjmX/{W BF{bP'{f?. +Q:8B5ƪX9pGT~NR'U׫h?vHdŭYdURѬ]ʑދ͒4/ʞ:8+5djeO{ʝRXrC%e]>I/Pכs9%%+SW c|vx+^g6 z>7= `$(6$$u6:7م8WqmpvTY#rr2&F29򪤮T՝gcd2apֺConp3>3#C[ҌױjLjn Aa3s/t3 |]X 56e-L'+u?g@S<`&l햩qߓG5a p[hLGGw}fkj?Wtٴ{ 8^9,ͳ{1$EuHgO̝P]+#1Zڢ{I~~R Ce|'-:pN?ɯH~*'15 YQR j\>ڕ[GsJ@z{1ʸ/$=5̚7njCH޵O>Bv>p%\0w.CazJsࠤŽ>Ê9EjFKH~2رWo̶P>/ ūIy;lLɯ.=9+ eZ9pMۙܿNS0+kWe(] =%QVaFf8Qn 7"E{ɑi8-[Y55e؞B^(-]~ڦc~k:2ԓ䯗fT&Z|rbŔn$)t U2".)%]CO= {05*^|*%`a~$aƝ`f<>ǹoisg25#)kjZTL VN׈N =|#i55=l~r5hgOEu6F(p p[ x_c8!%+uX1:s9E&:{7;7\ 65"-j/@ 3pLFed7_ Y+%y: G^O{45ζ25:M/7ٵ1{,+f5? ۼ\;}qw4vI^=}"5&}Fjo⣥a9|x4H gٟtO)Ɋ[rmm|vO?bNrG,L Fq "lKZ'W̵pZ#1kMPSu7Ln[߹cbNo1Y|m05 a|9|VGkU๬ScJXEʆ{HF55&*\5ٍoiEgfY ֺ̅7oa]]A&ύ>}+"54Ơږ5b=edg05vOA Xɢl!9b;ke3EΟHLE^ UFdTsm|8_Nk pu udj]3>KWQyHFpT{^8Ԧ'Q}›!"Wn9gU#k}Dfuφnlk6C}Reb,v2L L i!<Qb\ 8dbHJWWKƮjgjQ++gU}/]HΗӧYTp9X듂*y5șRYR*YɟZEmi▿|=IH'G4nw<&V>y2b߈)9JVA5fcj4eO5+INq5=Gs:WwzfYl|*f]ۛmjq̈́st?$Y t3%1eZ̄0~S3~{A OL~3l[RĭR~߈zōw8=ts$HT&m^2~?EFzt L$0R%yPӓ?sԘ󲳍_ܾƤx~ZS+n8!0?y%}lOOkJ}KuY^KmARsy#oL J?( {+wəfGr6<0v}y0rxW|_r7K\>)n;0/HA 4e]9#EYy dygG|!"D[6۵[(NM989:ly+'͙~=[>+CعDOT瓐>yƶLcnO%a!g>T<#ɫ^h@`665J5tֹ=.w)joּM'Ե {gU?]]+^ة/of>J(1MglHz{IG%}%b38y*V0AO&_P?R n=}RW]}?z{19>z(}qH{Fs2礍38avAY,Yt?MnjԸg 陌ܾ`ܽBØWknSc꒔IAWNyvM<꒼RK4i<:#VEz@n` imM oYMmi67"9eź1tNQU6XxS%%G r*rn5sWh\)ڥyF]JeUb>޵L>{֌U:øy4 {_lJvYuuT}޷ 3)uR?t%xegla@V&Kw ޳6wm{=5kYl$+⫥ߟ~2=۵Xڹ֘>}*ME]|n*$. ӹBB{ Ȋ$3LI)H9R0%rob>b~Zmooj &sѽt[$iMv aѯS{A>6`)0#M>ٶL8i$1MVk7}TfDdS of_-WO38K7ڂ5>ol wDKtNSti ޣ_am:}_:WX̀}QJ9=A4KQ&Ial-zFɑ7p,7;M dSsX%(HoWjwJOzz/8ԈT(51y&ȼnh]cL s>9^65,^8N#0" 4P)kSm*mjkxFFX>TuڎHXTw65}s猊dPBhӨUG$cm< :wNM 9XR~.iOLymU;cCRGbVXT$c,1zC,C@ej\΁ܳ>h8u$s_ IDATpt?0#t!q+@;BEYM`_"9>ˬ#!tcfL᱌ &Pcxճǵ9'۪Hx :;[Sm'ϣJ2rk1`NQ;4|ܙ&oNgR;eAO518U[}M ۀPVkL/f9!+V C(o5Ls`悿[w NIjQs#ܷ:}L vu'1,PSZyUu6$]Jj"jmvZZ߁dV_~͌.֮sJbheHiStEX[դGKjTUV2JڥOzսTQ3ـkI4yd2AE~Fu64\ޛ&JWsNiꑞRe5k68vZ{MrVI^X:>o`sW6o ڼ ggޯN)=R#\2SUҦ_qo)u±F|PgNa`<^Zţ)-.己>bO"zʫ-Wy(SXẮ*tR_|R2 ]M)q?L@ZY5`j`j`j`j`j`j`j`j`j`j`j`jF({znbcj`j`j`j`j`j`j`j`j!HwO]Q:7>rI_L050505bj S'%m/aulBja`>)poG9Lі|e,tKQyǧsXVu{ZwIQ}$ubqr#*/25ok^zDN=a_u߾[2ScrŒ?Ok*'G0505fÔ{Q `G94F\no__ec|WIS/^tXǙ1BSԵh7fIK6 RTaЈ(mN$K+nߴ w[Ƥ`2'z(0>"L=eGQH<#"?)uon?<Ʒ8eM"5tQM \;Cy =VL L(j4ח.+#yerY{ZƌvU:ʆ\WaDyK*Z *ue$='dWn`j̆7셺;^#dZpJ4ƷȦFljLI ??OAcԘmGQU?"W.7*coj4*#!JOIU)9YF:F&Cƹ:AF24s1Fe,'cmr䣏d[N/ްˮ9dj<| ?zs] ڽڽ6~&ef5ƍqq #AաKLL66#"_ڸ(M)i*?/K 9ByоRm f`sd~̟F1gGόusϥj:2x\W툎VqWKfAOLPY:llȗ5dGo[,$EuHgO̝P]+#1Zڢ{I~~R Ce|'-:pN?ɯH~*']tT9%rVZFyhE\,/3eߚŃ߻Vp# f6֫FFtpĸOS3Bojl[L/[s?2;cǔd>qO㺁q0忇׶ka:s1x s7<9ML0#3[_ݳ|(9>p4%hjj$DZ=! PȶіzNU-sE l9fk1n,bgvfS{e͓"I:M g kQVGhSC3\/-ȑ5ÌF`R[Y,e~Ծί^* ͒CS5VV{WGdr.Yk.cGq{ 94V5'>sx./Tga4~5u㋜ji:U!3e_ }05nk ODw~蒌Uɖb~2:Le@6gu~, L?9ku٩"(fvBVT25i}艢P_fCNeW@a#"ۉF{k;H4cZt p?g{ﭖ1vZLFMRw xxLhj|X;d`w7GX+`KMmgIqL_z"Bb/v\)%3s)/*M@wjslq&S&#.U݄m3j55MYׯķ 15"m};Ƌf{mt W]L;馆#E"zG`t^'ŸRr]Jy,`j8*>;VY⼗3M"ZSy3dIjO̍vi`|,|lL7xm2h-3[K(L L Ԙ4gj& j ٩)_Hd`U;Y~*VY;,F65vH{sEQ񻝪G`A/ `w(M `xiεxw_wYƔ6\)oiel8COg֧^M!qN $R..zaUR5n.zsJcr~65-a?{oư~|zF}2uiL L Ԙe^xb<9Uw)%rۙw? ?cmJ#oQUչlȗ]X,ǨS/ҵZTڵN݅B-c15z6x[`L L Ԙo/< Pu ׷SO}1sȦ n/ֶ s\?1'W>z>;Ŋ԰Rn\Ç涫bOuF!\HO-~#ݪn]oKv㉮N5VT@aWU0c?5n|> ~5dOHYANmڠ1ig~L L 8aQ{BؘJ9{S_w)ǐcߵ GWr|F=lgj+REA3:uSS05M덵JO*j풸1N>Z*%p{V Mh υΞV05~ڦƤx-5sV>P.yc ||R_sV{Goi?zU˳%%/榆^;!^VشKcyj ^97IV]$c[b~Zmooj ȦX,XF]fЦh^NAIx}$üƣ;ιz'em3j_sv& ӌ#u咡Hh?-Ϙ+\n(=j|VߞV'Y6q66v-5quؓ;'K{yơSkN=vgRNHvٔf5fݱUk-q\L sqlN][C_[qFX@M ԰+E~D25MqD"*5h9C~#f[ߴJQ}tܯt??3/v+fߖkL T ǣS^9Q` Gz#3>k?83mKG$7^ͩ5g՞svI'L L;)1I 瓞K;s9L apVn)jY[`jkxFFX>TuڎZXTw65B 5+3*zE WӨU݆Bؚazz[%#Z2stkj}pC9s?'ƭ15.3 a FLPƁ^#v~3A_: .h9cΨ( ݴ K92?|v Ivm2`XFQTc|!ߨI̗j05SScI[SNSM40o][>'Ͷ1yX[i2zgz6XbCV6&.65\Q$f\i"[wi|Lk|s1wnyzJL L԰ujt ڻUInMը{T* .Zqס_3Kz뜒Xs OHiStEX[դGKjTUV2JڥOzսTNZ)(o#M2٩L>EFu64_l%a7uh2GqIme<;a`8k6XZţ)-EocK\;8#zʫ-W-s޴½{wcK.e:Ⓜ]C7ep4x"ǎQ>\h=^o>ϫXP[}A}ף7.H1ch B\߫ϕwէ ]SScAԨSb1)= -SiL ԸMւ gMUB c WN) qGs05>D , S!B!0505S!B!L L L B!0505S!B!!Baj`j`j B!q{== |15B!@!BSSS!B!L L @!BSSIL B!050505B!L B!`j B!B!`j B!0505S!B!L LxO.3yB!`j S'%m/aulBja`r:5Y亗_jxx`!Baj1ڒ=z)*oQt|jNJCYi씓Խ8 SczB!Ɲlj 7PByU1_lO3)RSe}nimvEjAh.'wKZfy,]]Z%05f˒_3!Bajܱ'#͒l2sL=Ik]Q(m2<1!EIV(ݾi,SICV禍=#EyQ"uerYEwJ$ S#jn}5ej<'2="B!L;POeOZ}|У).fĆ\WaDyK*4V̶TH&zB* %I*ubڒAzox|&_ɬ*̏Q_xsh6[LKl!)H^ЏB6柑!f?& wYqt/;r$vy㤺oRֳ_o?U ɫP{OT|bAjv'Kץ1?^^[b7ޢ?B!0505fvTY#rr2&F29򪤮T՝gTEa~G\`jD?M/ˢRe_ɧ/&>*rdizm6 THǴ~z/oIu%_45KVHrtvߑHҴcwĨcإL[s_7Ȏۯ{}휭Ԛ$/7A!iyB!L LIZUP@;"WF c"Em:<4=@.O;[uಝ~_!^3$UN#0ڤY:I-Z#RScfp2-i h656~:i{YF|Uۈ45Te2`<:޴dheIfgg_%[j WSJ+uQB!0505BGf8Qf"e:$ȴ-ڬɲqlOBK <0LtjabSz2qQOyr65v=~E{#p65$]7omkAnXe7.!B~Q IDATaj`jTmD^M35QGOz_ ^WHravɧf!a*sA6-7 淇Q(4an/wNVmQJ$S#z6}LKWkdnw[A!B5)B4U3C.w45]SRJlS2 ^3w=QQf=bEv¬oob;M载AƞvcHJynY~B!p{oIvP32}=x0e<W'd|bBw+/FN̠YvToL B!051P23^Z,_D35ڳlnļfO'$JkT}n:tLŮ/G05,)U?3Lk$_C,g&15Og6l5eˡZ/CR/M'%K\ vtA!ԸL>ׯKos@V.["=OOv/'%a2Y~U/u]ӎ7MV}(+WMK*5p:[^}lK2 Y+oc#x+I:̅=ei&9J $W?wOrV~Ýr~ScMK_hE?7hc$z75FH6/P{#cRgEޕ~x݁όyS^1~,z꺏ks^VX6RqqזHWӞvnLkfEou,_{dg#_PL9o[%A[w[!oc>#/ e'ԸSr? BajIPM9=U$o>J[䩤F6%)EÝD2dJDKYum.[$#=ɾ.+"ؚV_OOeg2̤psS;o>m}\

        "5c\QVUD1slx(1aJ㯩԰%UD(vEi~tLԘ/ww|#&IQ)'i9p _k ~ 5L2vE6B,5BXhZT?qN&.˩ u4-}Lk}Pj /35jןنIP&߀B.p2S;).N;"a .Hvi<+GDfً26|^wf^sʡ 9tNXn7v0:mUWUݕrwY7vN M)餽SRQ񀾇#뼍J3,:븜B!05o bpA\G6޳YA;TSQJÌE_Eq! -V|Lۑ~VֹM(=DcSclfSGs 5gדּr=v?`jPSccҩr`kl<)?r Ǐe 2dji5MTi2r;/ S#Cڿwn ST͏i|=2b^ٯ]CgkJz!QO1΋ˬ_?6+OvI=Q|A4`>=`jFG!:<+ma3B!05B`֛SPO 􆾯3dxl˱zt~WIഌ~A߷HaDIJGXnM kCX)&!M ߭Ti2TLh҇> 25԰^ԣêi+=Ůs159k|犲VDDaD*|jEi*&!XOTL+%ao3U*艤L9pZL M9|^([TS:^ySbf8yPԄsYdj-I~9|\FT;}v05B!q[lKg0djX)a HU*ꫵ=yH3D_įXmY"b]\1=fF~05L¨Q,Cu }gHB{;¬z?fuiCj.fgj8='~ϕ1(kfbK1S#B05T_{ǥsy#d|HOI9(q_e=\k o.J0FA8ScRHb!y<]-Ow/Ӿ ?>!r^zd$3D"4*z\-c|# T<vI*5T[g5v)&Ӟy#dmwg!~B!Ɲfjckk.:WaaՌxD[[VHkTkGgh1-kBGz?οǢ o_Sú'td/>zş2:OӈN+C7l,}bI|w?s݈1"IK':L#:g;%d,+V sBmhM;nw_PL9 ȀPFԫ W!ʜՂ^O"Rʅ [mẖmPd(|M?EfkZnS*d*>)ܽŽ}!L0 T9fV s(uiVGCs3g 32{9(J0͐ЦF9kqlM[O9G Baj܁R;a7ӣ"ޖ\\`;:9ZѱךU&B9Ob?0c1j|7̜s;#1f3dwezLϛF4S1Ǡ7>1914IF]o<Ę'.|.sO?Zy<1B!L L[US\3"c~gGrb``jF_WL#b[ב6Շ=gfw !BSS31(Y1+\ U ¥n'6:W3nq;;_8/5=-7^B}1B!L L L B!0505S!B!!Baj`j`j B!B!`jDW/EGnϤϦ<|X!BJTSS05#B!t3~6L B!050505B!L L B!!Baj`jH{Om_lL B!050505B!@!B1p|wA{MRwNFޑwB!0505S.y_K_9yKF#!BcxuB!9FLNTǿ+s阼rbzgBcxHzIr^}uWJDp?="O.7]홹sߍȑwEL|gUR쳍u'Re5|E蝹 c)?q@6{uPiI)5pA__+k$WU^hhj=E^|ת%ݓ@B!L L L ԘwSV_+9;P|e,UzcysߩקX&+Bm|ݞe\[KR"lBg.6+_֩Փ[Աw0~ixu+%Z?7!}$gV{=^R+;c_H6>ˬr(ђX__rR|lmD!B1Ӵ^;M |\?jZLoཟ&7~"{7]FBGʙ6W~\̂WnjC{<ǒo12|,ގww|3rVҷJBNN7"<2XM6[o- YxO_Zc%05B!7p~cv45$/GU%/S9sݾǒ䤭6)?膁U1;w"iG8'9#8#:[03~GzO=\ PAҀЂE.PRPJ)UPؔrSPPRDsl{]Q?sOB! 5JjL(pi#ra(( \^-N٭: T˕rd8J iRKi>}B@@j 5ÇKOyDKe>Z_zmJZFČ|eXʽ !BHw$8(\CPZF̮'rhq)^Xr$gdӮ JR\{rL/=Nו+)shˣ R]I$u1SҎJ|բ!xU#B! :+׮H#Rn.ÇrDЌ1ܠRPa8u-(&ۊ9?Tו`dw=FeAd] 5ԘδZ?k~75w#!BAj|8t}0|ɐׂhΩDHj88zSKg_\vCFH j9Jb$7rp"kpR@jl A!BRczw@nABw|ʥQ^g"7' 9I]߈w'rR&oMϘGFƆdn>{EF&yRA!BnaԕaeE|\_%?EͰ5F#lل\(8!Y t?@j 5!BRcj&ט^X{iM'-Ƀ}u@j 5!BRVxUj` 5ސԨkkمA !B;~Oߛ"5> zq1I@@}yV]ߓHHjiA!BȇRB! 5H B!BH @jB!BH @jB!@j 5!BAj 5B! 5ުԘ<}I}=7 B! 56[jqB2OFpt .^!ux8 H qduI<2NV.ψxn}+V]!]9~BAjwR W6J~둺 8)U{~Yy9 H˧7~m*m.(7W[Y1z<_c'FRZ|ҠU5w.IM~p7E!(5.Gt8! #}-%GA4ܓcr!.Fɱ`vDK|Ϟo9N:XR-G N%ϼޥ[RQꐂ!.G,5Ɋ'ZJOmvM֌+ڠ_="נO6Bm_nB!HRj4I[r27זkUpTʅD^(1q迈֊z65oVMRiV]$'uHFg9>Qk/piڎK^msQ7ʸTVf阔KaedWKpL<hY45W=~)7izHJC],vK%/>c~,H[yq{mC!xcj8*'fKcMjjG\McԴ-ߗ#F7҈[7%U{9+5Qл 8Te&5f<# ꊸ;h׍q,z.%N-<3F%cXRy\>5ɼJ[vrhw1J< \Q5w: nmŬWSZZx&fͥsZ[rO?KJP-Lf IDAT Du] /pG=Sd*^&-¤4i(3JںOnu܋I}luA]yY;~t]Dws_6эq)TRC[ϽдJmxJe{d]k?+ھ B!ƅ8m~9?}F_a͜84>G~L#5-GTTh̍_a+jO7'#+5<ѺxZ C]0Jhw4"uq.ZRD/ƸJxYtרO=rUQ-'Cx09#Rg[{%ijU UCbTUךn+gc|buȮgo"TGD0>)5ג HݶK$LRj%#5e{)fZĘIG3XB!ťFxZ_Z uQzo|bŰAK9Xo&tXZlLYZ|1k_A[«mQǑ]b~Te<񖹚`]sC!JRcrn@ZcR| Y6ZA!u7$5dE׺=]A!u  5!BAj 5B! 5 B! 5 B!@jB!@jRA!BRH B!BH !B!H RB!RB! 5H @jB!@j 5!BAj 5A!BAj 5A!BR B!RB!RB! 5H B!BH !B!H  5!BAj 5J !B!!B!H RB!RB!RB! 5H B!BH !B!H  5!BAj 5B! 5H B!BH @jB!BH @jB!@j 5!BAj 5A!BAj 5A!BR B!@jB!@jRB!RH B!BH !B!H  5!B!H  5!BAj 5B! 5 B! 5,=~Xmqvc%i+BRФ/QRq(M~N؞>gB!R=KRE߇5XXQo[ɠ}m_yBiɯgCnɭyy 7k b[\'-oyB!RབR%凳rslHn޼,CT̽E[cvdU-5[aScX*:_&F8F7YutҗUP|ZUܦViE=d#RCOon *"C/ҪFy+ġƷ)+B!xJ&OKtd%%w.gRdWeWڿ~pЉD X#]_.9=U#x>΂-I~)24&5H㍩a=uE3]!_|ׇGOy+!BRv:$ktxbFXzrN˾-q Zʠ>O$O;~'qDj 5cKRW|B;:_%Ի3YOMs]}U-Hϐ̬n=uڞy ճZ23p]ܳ/6NwC>$M`mYA,uo{djk,c玧ըX˧7 c9տH`-ܼg<\J~/IV=|qޏ9~[pϒG-y]hK~>mt Ҏv~ ,=]q}Ͼ=CkEs>Q%>.H |-5^$&lѢېO=s}ߠЏ]Ex~qА큗j%M[3$8>s\H h@eҿ W²/:gUˍoȪhbƵkr,X=/VgsxNoB7mՎЯ&y^P7-)aq=cW1F=yv$(oE-8/~1gY\sӎJퟲ9_*K~lڽ m'*NKNqgq+)a6S1%yb'_k@͊oRX#ŧ2s)MZjCuMt]Uaas4-d>*k􄽯[+Wyq}IY824fkeuasbgjߞӡ6%<V|GYw\*mMidh]JbI_/TيI]%{J;^-ވԯFkwǗƹk%5Ĵ9\ڭ[_O05cyzX*aFu_mH|Z U݌9 x#RԘFٗ2ZT_"sEiVүUr]],/h7/捐GݐuK_GķDWfvԦݼ_aak9Ω/&טxAy2eUvuż)Du߬47}[f.)ˠU(=;X|p5w: nm_]vCiZeٸvsS_©W֜u7RC;bwLjhi83*'TepnpFJ+{/ru`螰W uwc0"/N{݌/<[-Lo<]yY1=sMN>?=*3 sPbC^ղ@ZS86Q,+vOyf6qS_}vWge}WfG sի_<_},>ܞʤUCzP/O8HkKfisOOjJR%;+zuWM%Zol|j+e}gC XIyIwCRCrUvhסi>;Bjn}m{ W~~E¾nK`Q mf';򚰚(:G2ڐxfƶЮk]xFeYuw1'olK Ol )/wK.=n?zsY,9uZ^Jt1t띕JbH {2Pꏩ}zﴩ/iQϸ\տ(Ou/Y} ׈͗y1/X*_fzIjڮH˱u#y5o/_wk]a7َOf`U_:) %i*5DLUxFЯǮ/<;d/du}WJCX0YAcIFtkUIt {٬LuQqϹ:6z j9kU5yuBӝih] {} }Fsz$wucgV_\IzĻ$Y\ٶ&{#B=K}zaͽ+]greV[/R'KصqQ%5&Z C4_d#wּ,G;N*x$XDj 5oܨ7:ԯyj1}rsI7`P]71ou Y sT!i 7֍}# g@ѪkY}qb*OFrGWoQ3M`9l;r{H52lT!5攺vf+QR#WiOQtp}+^VdI xnHMd7ŷn1oeoޣ˻1R ]yLٌc\*m17MLRs<3hgZ[j8k|5EB~s^E/.5mtk5AݭAk{eeQI_U#SIxJ|";0x8PxGŵ)H91~/ϩs5Rj~m_B~n{lIDkR#AjK\_b?#O9Ntfq(YugRc)Lj$>wH<ު<uxrOˢYIWfVVM2*Vs@qؿ[]ncR m,/&-hY {5H+W·WK+ti@)g4/Bi4QTT7O?9wL!Q-T+ikRhe_ZEJF= Y:z$:'VEŷxS꽲0l|$Yx-gEfcY1Ԉ$u첒_[Rq>a)ӏ /ٹ80hX-^Tem_UVa3&y\U׉9%:a\o,~~vRz$UfH FK>ǒ9.ai#< IDAT6>Ik!y;Jt[ۖ]qׄGkeUʓ\'X:ctpbf@?@@<j;,%K'6L?R`|j$9kLTu芼'Ws<^&@j 57,蟩T/Ҏ{bRVoڮ3atmY7JJ$8lp6}=sp09vbpux+RW- 0qݡuͥ/藴<52n|Ĝ>/z(b,cx ?v TE4+ly~eHQ/qVXAMVA/&a?\j*W<R#mn%>*۪ 8v_Jp~F;Fxlr>~;[VQW.׷*wVǴ/@yS ϤK=vӮwkyÅy]^c3Mח]Vݲͬ g\*%'÷!98%5Gpk3/7 3Զ'|־Jt]]_#5J":$9FKz>ǒ9.f2od?'6}4?YaiEM| )Ͽy/[VwMH}zu$k]APCR nO6xmf U{405Cߏ̶1#9'= ?H Ejl$ˋef,c8<߫M[PWM[osyWWd):oDg紲GozZo:sֵl>ٿK>/z&o?.8/-m.91JX6,3WЍf}sz^_ϋ9yw\f86o:ֻ1 vEqUuuX]VYwK'>7k&>'}fw?Yu/6%˲*ޞ^y!meD8#m o;H&*qzhx!5܍j[7d8'ވƲeڲ]RQ|ƴÎV hw]q-JTyҿL8!;Nu ۨZXOܭ%Kr^ }d>IB!H  56񆽶1ZFHnybI O#{Hүtߕa%;VjDI@8'Wo4)aп~KFŕFk{ee5"IVH4#)ԥFw07Lj}Z*mT:%)#RB!ZC2lLuɮ5F%#cFCxhcUyX2"MF~Pg'x3/D }"b%Ʋ썳%+RaJ&,u|RcӘ;Iّ.FJ+9ڻ8@j 5uZjL9\qƠ0⌕ieE|ľqmK`ma+=NˏcsRX+AjRxRjIUr6jIFX.mi(zg]R3лMH G/NQwAjR*W|}zjC]%6=J7CDv[IED~ʹF`evYR/jP_ш.1..)i6,5Gdt%>ֈ^]_o>mqʱRH-~A:* ˗vx]aϑ& }7dt)]d߮u?I&5n"iyUFFzg1F`!{q\m+L:ie?-$ѳ`o1s2:D$Q\WOXQQRH-#5 (R# !N<짍#dX}IQt;#]*ԈT]|ww㗮GV kR8-B䶤|zL\я яz}H  5`#X1+'^mމkA_5+-c)W/ԸKW]G&F52ƍ 5H 5@j 5@j 5H  5@j 5@j 5@jR}~ՍHQg9r$X*/~S0="] qH H @jlѳs!>Ή7&5:OڞGVǥRtLu=~u$@jP@jRcs*ewiUcOٮUS>`۹Gvd -:V98ծDRЇu  5驒H w^|ζ/lWbeykRH7\l4¿32Rcj:(CmjKO晔?ic咖jtIqH)+?Pvו4I)owdݭq=T >oj#N >"[.֟WcOj̖E,>Oݍ{8)d{FK qR %>MSCo=b܎q&&őjyB$);ҥ+0?>iO9pDyߨ>ƞn[j_ #Ԓ-J|`R n(Vk K`Oآf(j[Lk RHMgR*2vJx{dR#yސ{kISY'Ɠ"$@rJym8#No'5:OzCjRfbu(kKKt:VZ@K&JSjL'na]}mXSjr~"X%{RFGF_yPVRࣕ((?+UuRQmPV}QFl-5ƪ߸) jPW5GԈ}-);29,ÿHY^8͖>Iϻ Qq9ٟIzQ%RҎIkiOfΔ2]8ROxHT}F1i15I Ւ"#S2цK$%TD@=v [jG)j|&' ^rςSв,8cJu}m@j 5odRcsw|L6iO;6xL%[} ԛaO@j 5RRH RRH RH R@jRcHqq85< ZjMuMRK@ᤤ{(5&%nٶ=O܄ 5 G8G?ϔ^JTIԁ@j 5>153oSaH܌ 5 ()\YI׻Ƥ]3)eK .5<)Czػ[ͳ1qº<-}{(;7*ㄸ,2=$9_GtٟuA.eo+rem٦ մCq 5H5:TfE>%-WF@a9Zo7Zjq}rܒoʎ}':_Nّ.]h1[~V;:\̐|c'V.V~-,me,QwQ/HVCս1-KfYvvsH Rc\>Ā-v[VjȐ C@z-.ݲV}AƧJJ\LifmK~ZFq=NeJ|Y$kt"UUHIٮ[Lj 4T{ ؕ$|j9}VzOh1Җm JťNS~&+02ZؗOiH  54z%?a N$xI0ZazwpZPIoI_Ԩ6ƶ~.ZjM -SoUaSxƥ1OF+1jFB @j 5YnטOҥs8tc.OsSH R#O'Q){wc\$%^mv˕RtI/_WT kzZ[WtnK.cGU5-@j 5OBI;Q@j 5Ըy&7'H  5 qY@j 5եo@IhR>u:R[]jWشL6?吣VhI |(CjRHBj|&}6-5_H @j 5I/56{w ;]vg9wEr2ew,B]oiOuD\ɑڞ6U{9q Uy ^gwپپ7]B .մlL~qeIIݸO.oHjLI?"鹨D+ewօWnH RPٞ|}Boi?|354^Ijɾ]Ur(8ծ. [C8G8&O5_3%4% <{Ue2.đ{OQ[;GrSv܎JcQ]&9GHLمqI$#鋒`ClyX@jlFQr򾓴JAZj$ 8Zqӯ/"q+>+sJ`Xz *sIImLтc! Jŧ[PDpx-Zji5}vk;REDp0?BjkrOMƺ3p@j 5(Y-5:HI)KOQ[$(YlWUvmMQ=:kdIߎOil>@Aoj_S%V\<@jRc J Ҡ|]Fs@RХƧ0.)%59-K Kj=PRCyXv8t9LjL1Na]@ӷWnH  5ԨAJja=!$+}1#0Xb Z#5 ɤF_ZTܳeJE9(z*'8nN.G.H~Qmt9X3 w%inH  5VW9u㦌tKUg'Uk %6Jߍ_RrTO zcU^ڵ _cw٘h+5*sRuF1I׺=h1i<-_PRX_Zv~8ѱQn>e[Vsd&KNʧ @j 5xKRYݙ'#ƃF1BŸ0gvƢ0OVy̩9-ɠb.5zUKj}*{cWwjH RHRRH RH R'H RH 5S 5xG1 Q?fR:9v.@j 5>^ INz)OK-Kp]kygn77\@j|Rc-9v+#O\_(SغR#.vEH @j 5>RR댩J=H @j 5>N$eG8y{)5u_ynCCMenDC-ٲ\q8)"){zoSvKAnH  5޵Ԙݲ"9_>Rm^8'hťF)trksw c(uyt[fȊQ]-coBMxڞ'8oK`S#%Th,{w{@j 5xR#~=0X^;t-5X&G#6cQwoCOv9kI.'Mcr o y-=RHwDIOn$T yDžRcLߖ>(~~&'5:.)GX _w!oW'"ݙGRƻ1 T9v}܄F7-5ޣēcjqqܔ3ݡ'S1W#CgݛHE͉濉9s.|w|auR-tnՠq 6ڂ" ؂B7*@JnZ v|3+>O-UIVV&"QA@Dql=M%)jLFD  kRþ)I[g1o盐]$-'d{jprs㱝՗%ADDDQD7a:AH#jSl۞OI2#S!BFe Y~D::J~2l ևMiADDDQDoP\Nq̛틑+IXQ7;|KQ_}⡺w;Ѷ """QA@D oQFjՂ=r{;R*^"""5H j0RcV&!Stk@A@DQIߨkNq.A@DQ_D "5H j "5H j "QƄUIU{M JK9( i """5D D$j^?vPmhgYqN?&ۛ+xLIvy꿉Eq""""5lk> ۾_ i}g55`.% p6ޱAD^)xN"Sq""""5L? /UhNDDDDQS*JYw5Kd-K%T}[4 Θ!K r~BOҎjɤ'z5"^Ʀ|26>*c>m6FlB7vGÌ_ۏ[7IBJ}>f|~47dzhRd4蓪ܰ)CY{"hQubpX)-WJc$eYqQl|^)ik?/ %wou E}/""""QD55%oyCjߡ#cV!a뱷;g[BcAިn(3Gi,놼AX8C7:ɑ.q[Us|_A@D0`ݷw5:Ndj6qN͚g8 1FxX0ٶq5rh3h%cFnMxM"""5HXkQÜqwfEGK1ZK[k #_rԘ~xG0ꗡL\SQQ#~Dڮ^6m'j,8' _Wo5ڐ?NuW${TGbXGm)mPqEž!-&[/qޑQwG*I_QD D5~K׷廼3ȸGV26>{i9Wѿ6ZH j "Q^""""5D """"5H j5D "5H j "5H j "5D Q+*ǰGsHfn^ںzW/cCrqJS܎u vJ[{8-p ]w1)u$D DDƛ9KX݄$4 άɨQ* eDŽTlKηn-OGoizwxAܾ;,,3HqRzqUH j "5liX 52*}WJTHqvMF'>?:{pش 䤭RX#U|+*Um;^j/UfkNj_A$ "QMOIjr`/SJ}!ңƛ6RC;ljZ9$n=$zϴ53j"""Qk "5FwHv1]"Cף$S:iV]rȾn!_*cS!;+Bm-[j ?5q4dQE)~u_|cyѱ;rHxOHʍ@8~ }\"kvw<K!B,3|.ggV](Ŏ9sFĮg/׈H j "5"GkhE [Y#:J? ^F̋lXhU: 0.ȳB\QwPԺ Ie>HJĒN3l6/f 2[a;dn"{gu { OGVbZ?; [GKA:f£\St`q ͷ=Fǎ~v^gI X3ADD$j5OEv[q^ !.W̨Q jtyAzn܋){i8ǂSZw[eڲ%Us]1bGmF@^8jԆL{Ci)^oɴe)%B"GC,F"2#|.8N>7w%r$ƒ"?;5-:A@D$jW7xg^o\&WB1a~WB%F~B}\¼kR}]X]%g\5[ŢF`J{˹TW4~<͚ 24Q@IQ#q> }mo5jDC`KQ#WۉKLD DDFȅolY_S j!R}u5ecBFȊ7-gKHcD`d>aw?h3l=v]SFjďO}H}ԈFHzd;zI+a\C;wakl ٱq] 1 #59s`q-n![I-cp- GIpjL$vYK%Y{s]24gL={Qw[~RQ+. ¨JkP{=urqN]t]ĥ(֝XZx0i48NY :PKzQ3cQ&VLJR-s~g'lZm[YZگFY3ADD$j5j1Aq?~_-w? \ GWn0]=[*B$kf\+"D~j]! |]څqy5n9kDm)a<5];BGLXf=@ ܑ̈́uwʈ3~^vFtE<]"B)LI.RQ#ԝ-a#%z.flח5ꤤsD}&D ""Q#p-5{dl_|F;[p6#uܣ 2}vCqlg|ڱyT&m3elMbs`x0FHkϩK#"m&g=꟩g%|&D ""Q* t(jK"o'_A j "Qƿŝr ""5D D$j5L1o2mD DDQD D$j5%A j "QD ""Q#[>15(-G䐣X*+UIU{ ~l;[""""QHX;R;únZqLht=WM, >?&;r+r(%-|qPDDD$j5Hx/Qu82y~S#.*بvq)׸Txp6#Wfۄ""""QA@D{~l>KJBZQ/5IFaD Q#jLIfrr;삿j[yƌ_&}n)ސ7-c2f K mm_m_eF iSSXm8GfγvS]l hQo6%A@D\sQCΪ >6-yƅv55:SB`}RUW{UI?ҹX`JtT焤On|failoƦ#b}]w|~|D ""QCwDTإ5q }b]w1))H=-Em[*ˈru*n7Ω~ȚWo/r>i?)-a~BDDDQ>Z)!!#!H.4[#5SC*lX`Ä86-kuy>K-[R5PW#AؤYD DDk;ɘϯ< o%j,#j5|Aau46skkd:di? ٩u5ʯ(DDD$jۑ IDAT5ҺIxO^#j7/jtE,9h&iּAMK"""5D復C;tɡm4X QñĨ`?"mW/J?:jTfz]9/.ksōڹj>2No}QG!8M{1|G1ccEDDD$j5?1j.`jٕ7-E]0jT؂wJvA [DcCyQ#,BqǞB@DDDQñ{i+?jv#Cf) Qh +$W;:NDDD$j5Hx!'ۢXVS}p-H.K5_A@D9/6dSB=~E5RC.bn2bqx4Of1)l Vzskqxp򆈈D "5VW\r;lkAIFjD8!nWt^q98e~H j5Y]aUREoҮ:Ҭ 퓼tI6jJ """"QDJ60V"mW/j>^oƳZWu]2>KA@D\QYpa޺zݎ2=5dQCXD "5~'996ֆ轵XAGnD "ڏoSFj """5D D$j5H j "5H DDDDQDU5A@DQH j5A@DDDDQAxc'<"D Q?jz 1V&钰}Q?&O.DDD$j5HxQclQ6Рu$b-|Q& A j "QKb5#b}.!;Ğ. v҉D "5HnqO)*U5<]=dI-O.q_%53YQ9I&CcO>y,# F [S;օ5ejƘbOJBo~1BDDDQDeU5.}mLِ/U7|*e]mBQ.fQb 󩻿+\mdIY5CbGvA)޽Iy]8I^Mq9tsދ`z 6mbD QdZ*eP,CqCն7J}pFUK+j{Q؃s]M=_u?8$$T ]|Bj\ %HD,j q`(i-qW_×ju.cћ!j]/]q"S-.jruOM葴UT0FتP't갻Gw ~7!j """QA@D*F Ws2r)xGb<oTۇGӷ0#^k,ky\K"""5D D$j5A@D$j5A@DQH j5A@DDDDQA@DDDDQA@DDD$j5HXYQcl|P=CqoOJX>?}R/AK*U}V]$Ŏ^I~CDDDQ+'jz aNIjrz.z9'j,8ϊsp298xu|K,tɭn*kǜR*cD "5VBj iV:q~PҲ G{mFɲ/n?%Q:e]+ j,s_t GQD D$jQŧmdԈe-U2DEbA~>+ D+'j,!\?)QD D$j7=>+"<}hlmĭ'J}M_^&}:ք 몕BfY^mv{5&}>֫Xk'c2E^i[Sz6vM r `+W:=Gșu<H j "BF}R&ϣ5bCƟːcMUWF?wz$XHЄu*F2ed|̂,MGn']qYؾH j "~xQÿHԘCTu]kAQmDSr5R%!P }Kvȹ jcjȐ-nhHfF _:R~<''5DDD$j5 7jd[~.xawM}D.֫W9RmR\{NMbM DDD$j5KReOQ#j{–+;j|j_677kŇ+!Qcₚr5GX Ƽ#i? ٩u5ʯ%j """QH5PD,Qo?ң~n-[R%!)_3-nÃ}oXd!aۼ 8 㖱)"""5O+tXa[]=.cE|X^yJjKUaEw24vkogisϏ9BﭱrV i9*jݾ}5e(-SZ^7Re3$U|H{1n-_dz[5A@D\Qü{Ft™QwHBﳼ} lB/N-JriKĈd5)3\un2FĘuT>BqF@@DDDQ~{GjwLwܷ}el|Tӷѿ;Y2#e`ԸO@DDDQP.?BGҴ'QERJH j "QbGjd|@f6VCTD>P)"""5D D$j5A j "QD ""QD "5D DDDDQD˩q#C#>""""5HX)Q/;TlU_{s(E➚%j """5D D$j16(yҬ`u3ћRנGFRSQmqH j5FGR|XRӣFmvD DDDDQDw;Rcg+F{ʌTD QePd[ܨuJEqqkj """"5D D$j5kw)*B)&j """5D D$jcNI{=C@DDD$j5HX%QCL(y8}D DDDDQD5tH~ʮEm+^/ I6""""QA@D{IrYZel+el桸jHam=2#Nk}gYSA j "QEgKΎz.ਸfD Qɂ9C\?H j5*%j """5D D$j5A@D$j5A@DQH j5!@ j "QA@D$j5HQD ""QA@D$j5H j5D ""QA@D;%3|1K#j5+"{w?/s3~玨A@D`A j "Q@ j5/1QD 5Hx<s+[Ǩ?^Z(篹×s2;0mW&7 uqlٯ4.Eq֎ɰ'C\)O~3K^':-FÓf@Qң}.ZərVBZ : ǜԈ Hvͳ>9#H*[.1'+m@~&rmx;kj{W/rtK5l_*Y5 ߖ.ݥ2o|\vG.yc %RzDp-F8#GEB~>"UǿQQGX~Tk1uJi Β_˰3+- vk r6x]tci=wz6~^1˼ʽwxHEUv5?ȨR{X\\9y5"dsQ:rA@Dk ]L?_sEB$8CqVa_eDpVEuG;?.1>cwFX8}P]?|tv>.V:9$ʍGs+ok:K`ʫm|Ә/?ʦtPO7jǖ#T91rMF'D}~^9 |Qr^>+]D "Js~$ǿ鐈X̚~l9bsi/ď_gLmT*gvWYj ^U,g7KUEv^yqZj/kŘqaq,|:ͫ߆!50:+g/^Ь7׹x1FG'a}JƯuLBP'(K3ϟqڱ4ܵ |'dѧ9.XQ I2F&ɵ_aۻwv~Y[dSt>ysIF7GNuT|R9@ j "/(L` 0rAl]?/)zvq]rYK=T F 5:ิo%7'ՔbD˛-m;m[{|X5!Tr}S'?/x G9+jȓ~z^/UF5"Z,!ja7+gO@/ bQc.WGo;)FsVԈu\)K;I5Fl$헉`[MŲ)mKːuYT={~^vn}r\kDx.w{q) _)ɵJ\7ŞqN_,5ki5?}8Q*vuҳ6ms{ #7x.+J ~oǙn9({"G/>QnmQIJ/&j5oVᐿ #ZeXM/8*W}?C9v=jȳ/ٓYWnwFn{yǥX^h=.ɫߌ_Wj ߬p}X;)I<-އ.xQDd؜~R~l{T{xΌ{xgB^hǤo@ǚ~R|޻@MxhD_aN?}M?9/jRs[}\FETР}쳘Svk:1! .׍5E7͸Qc1Gߧ#q$EOI#7q$~ݵ?Rc4nmO ^9 :9|nD "{>'q9lj2.6,^X ^#< `G?m_](ǟx]V[^ ^͖G5#sZumCax_sx31֘(5+SP}OM[ GZrc ̜/ib/jmip'FjWh΋6bOD;Ѕ6Ǻ9:2iS:OYmmwJ;.5EE^ߓ~g8RkxK5^= qJ24Z|QsSŃ֢ BwAk8}lNG}%Ye?J]C^7CN&aSƜ^!^ܽZsM29saW?HzȺL85PmQÙ~#B,圄G }qi~lz,@Gd8ZSc)d'j5 r13`5E[ƝN5V*s 'Gae5!k u{MtfPKS3N-,5>>N j "5=Diz9?@yO5-AsZiEscYz; 9pCr>]:)1ݼC5>2>BU[pNbF̰}}Q?*~D D$jZˮ56sȭd@~E_= ^ ָzں [SÌy }ME,=;§-kp|>+I =~fEMXKQWɸQ-vNSBѫ~]i|qA@D$jx~wr|ZO#?}'B;c.)+s{ӧGj~D D$j5`FgA@D5A j "5 ^>7>cQ5'j5D j5D j5D .#j5l;‰XE蟗sG j "QV0m"Ok\ꟗsG j "Q`MC j "QA@D$j5HQD ""QA@D$j5H j5D ""QA@D5H j5D "5A@DQH j5D "5D DDQH j5D "5D DDQD j5@ j "5D DDQD QD Q@ j "QxWD "5A@DQH j5D "5D DDQH j5@ j "5D DDQD j5@ j "5D D$jQD Q@ j "5D D$j5D$j5D Q@ j "QA@D$j5HQ:2t^OP"ٜ[$ A@D\eQcN2S#ӵpm^7ɭ@ j "Q" {售V%^~Q#!)@ j "֨Y)1k-ʑ˽2,{N4Jh^ܴ!(l'7KInKX2H׽!q{(k`^\F|{Hn=uQYmk;tW3-6[}kIZ~^en\T/wM7& ꥷ6+,j(UM@ j "qT_45 RO%=9)}TT{6T=c}ljbJS_zSCjZ&ݑ]I钸ZW=g9~eD:9R'I'm&+H&OzJO-d QqD55Ϊ`NMIڣFNf^ɡ ~xތ&T ,^JNR$fqcEwY1b^u|;m/Q)s?۫ fU I>p%$jdkQrF6!i?AA@D\UkjhOHfՉogNM w-: OY%Fj$?e D "55"ҨQ95?֪w_簢jCo[ j5wm\gUrbQ'8$migc)Ma j5蹍o-j?]o[ j5ZԌrqJ-디"FҖ<ٱ_ mOƺ-9aoқsm D "55ˎg_2f޲p]5D䮿[$;RjfoHwoZ j5yOq£G>$_,5HxCv|.Oԫ}cS#12XD D$j05_M-"~FcQD5D DDQD D D$j5D Q@ j "QA@D$j5H j5H j5D ""QA@DQA@DQH j5D "5D Dw5>DDDDD%J j "#5A@D$j5HQD ""QA@D$j5H j5D ""QA@D5H j5D "5A@DQH j5D "5D DDQDOen~^C~5"dsQ<ԍRIO$MKzNZ쒓i,Ή=w,kҶ j5z_YtGٔ.%eћo|õ2崸뤵n/:'u&+[B*sacD j5n u\/իWˋ/nHNR jlM9f˷8_=镺c5yj;#TQCH8Juwi$'E{/@ j "pۗ5j#4j|^T%bɒuiqN_TCrrNYK Vrrh.YV/wsڟ7ԫ 鿉#?[_ 5'.8t; dSWRuT%=k$$HGc~fX'1/})mz.=kqiI9;Pr5}K}rq }ߟJM(US?ҳ6ZvQO \J/\2ԾG;v^Xߤ#]/Y[y;*jӎfrt;RWc~VdA@DkE{:垧OntɟIIc׋Qr%'?HzIH//?T-u=T]>kȭMԨ#an>ԍɽ#)-1Q;"_;^?4{cm|5W;DMk魟 D D$j,/j]P~q~Ԋr5.E!2.w>k\}#j^/!J`3/F4<"Gӿ1ViS=Q=D~U^Z4vk\WhǾk?7HH-{ˣOαgf乨v3'*˄gHۗyqGŃQc=qRZ/[{6ĠL)ާF0j8Yis3iѱ\ ]z`TuI^Xk>YB}4Kjh8Ubj'Ǟ4uΊBFF3j'QQ|/{/ D D$j~x V2֙mϫ.>tE]65D'72|_q.Vs;s}KC'2 O#&ix>-u`Ku r|ļ1$9_INZ5Mon ;o#4 .5Ϻ wE<}eX j5arN=㙰15s?Oל{W*s?9߬ az M;ιO<52ds3< D )H j5D "5A@DQH j5A j5@ j "5D DDQD QD Q@ j "QD D$j5D Q@ j "Q9:OKy rf/C;eH , 8w xřFer$};QteU=ҡ?9aa!jaa!jaaa0hic'O6!|N>KN!j֭x%rRo|vN>C'}5Iݝ89%gi)D @5D @5D @5D Q5D Q5D Q5~8,f>$JAr,u7:nVbRM5),2}0&w$ 9z ~E ` Kf ?;.j!ja j j!j!j!j<5sQp)Z:&</Z^5#cpp0-Y`0N.Oo?@g詝]5)xk?gGQC_숊ُ(*Qkܐv8f>YVR>j9Й(93_RTO3w"ln{m{z69[&j@A8V]el,Jf,y8*zԸZ/_(rm䡆#bǩkE5"QѱqǍ{)j@N߅X;#K*+ꋅ ӡt>{^kg%tnj?{guƉٙJ+G.ǰ̨G>|\K=wިW>>gnNէ׽{1ɔX[qo9).;37+dGqp0)VOM i+R]M/3P͊(Zx'LG*b}/ƞU˗Vlj)5'-o>p0H=,{EO/ԅkbvx  S˳/n$lo}(͞-Ei>?+ ~O\e) nыUVǩu=v YP^U2`}K33G.1>P$]=NgN-w&r<@Ԉ_ c)M%qJvŽ56S#@ZF{?6xikf~;eg\,=!jh.5"ԑ\czvcl>u55bx,)/sO9Ulӄ;ܲ"<51jt|*j@t-ؕŌ54S͂'v>5lnivܺɮZ˖k/\wcw]UqE cz!z]]瞧]5q0#8~Q︨!j!j!j ja j!j!j̚ .](LHAr,8j,h]RqQ82`$ 9zܺl6#h$qQ5D Q5D Q5D Q@D Q@D Q@D Ah\u IENDB`amplify-connect-repo.gif000066400000000000000000127724071465312036400337020ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-aws-amplifyGIF87a  !!"###&'*('*+++--.0.026595-666609-9;93:8:4::#:#:.:3;;;;);4<3<2=3=;>@>;>%>@A@RMS9TTTVWYY_[R\\\\C\:]]`^5am3noroBr_sssu-vwyys{{{/|K||=?}}v}P~u܂T;2chadh,bTRCgTRCdescHDTVtextCopyright 2007 Apple Inc.XYZ QXYZ o8XYZ bXYZ $curvvcgtndin6T{L&f\P T9sf32 B&n, LH*\ȰÇ#JHŋ3jȱǏ CIɓ#?|pݻ0cʜI͛8sɳϟ@ JѣH*]ʴӧPJ*?jʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷ޟ~ LÈ+^̸_kbJ˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@d:QeFjwLƷMZeE%-XW<]5 |%M|`deHݒur)SIXBdNWjB0mX}xIfu`aM(6mm N%` y(ɦ?"j: fmXـUR򪀧Ե` 췸]`KE"r2쩷d?Xp-a%QTè d^ƺ1y7pφe*Kd;lH& + .oIcP'F`@xA0J~[ƶRf[`hюYaa;fKIc|cG>VK"T601 &_:Y}/QZQjk4Q_]`zA;M`{ @I]ƧjE h ` VVan:)#F2L*muMDS`2ơa/R,iD t0iV.PJl@ }X(?90R6J üƸMbE| ס9DY0A䦜a+8&%aR`7G?;aah|%HHaE!GAb溣1&N.ыq.4 (aV-}K‚ FlF .V R*`T}ͦdT }4EZ?$q&t2I VYiJ'6%rdrDjeJh M:yZ[[Py<WKX6eU@_2>,UXl*ͨ3LuliӞ"3gzI uXf]ϬH^K&)"C82K]X4Z3fomm`ƆԪ+iTK5ΒbhJ)SnJaBbufMfaWFuO-lpO5%mj mP0Q+WqWˆs:'[]uFJ.z,|#fTK\[↝L՝; " QTN(ݫ&7X^cZ_ b=AȟPu@nxǼެW#\-*jæJ9O0b؃ =lXA:prCqLhiIm[օ`H}C{CU-<#e%.N2{hp>֒)5 ;ݰFSJ(iRfyy]ԅLòza6vw Yp=dn|KEI-Ln;{]&iPO&&- XVxqzlӽaTJ蒫37n޷W2y%KLߑJ,Gi1iFU*G/Is?"筀|V?EA']a4ȷ- wy\ou$.H?r2CS,x/X+pKP4U6FDLP'=b}E'fDtgH@-JsMTPcl)IL:/a b]߅0C_Ҁ M @8` hex4E-":uT?[VH$ Ar X:Huy2? 0+gF>b(m>-Cn 7`C3,MQ2^B4@Twp5)@%_=bDe*t$JvB*uB4OHKCEg*wMwID*MH{-Xo{̒wX&@S-HR߂@X %0Gr+ @GpV @HC@w3' hLL+e.e#hδoHJB [/"o@GBSf\y _b oҏ;R +8*o\ᶉrB,!\U(LsLeR2$Ұ%Գ$4( 2 fTo UTq@6 QxO s bnb B_Eo"N2eDt-D UeP b[T 60hذ{W!M*W@2HRTq @Xu-L0f`r2+0Deg0ҝ+CCQ-5r|<2FkL&j2ysC-8w,{wK2UrF%Uh"fZJU33q",ՔCeŒ"NVVx'f5QNmD*uʙB*CmVY`hN"h[{~s%Zb,#t/J=0S~ы% aq?˩&@@,%14l+n,4bWٽR 4e's4?3S448H+dϙB,)8,ƴTpux/--Y0-JE8)30+ -x$ <'(%,YA,VI}Yo#+<= $QvEձ jۢMgτ>hTͭ_Bde`WVr@LpvYqPTM@s]U[ܣmrRxU4HkK3A8T%d8V@Z1S}Qr÷WEUx`Hc˒Z b߃ʭ,Rj}ۢvm9dՇڋ=q$8i@ ʻN~v^uT Oi1TaQ/+^q3X~U>/i`;˪j%bo!'ҰHTG*ې{!%K.;n1}_> rf xgsT Ho~*.2?J481<o>B_6?FwQHLJPcR_VqZT^]ba?fejin_mrq?vuz/Ҩ.KO텟!m4Ka _J _Juz_ Ɵa5K_g֟GB: _2J5 B?_$XA .dCJE5bNG!E$YI)U>fqˍdΤYM9uքǎ;%ZQ>.eSQNJhdrDWaŎ%[Y6zTlUΥ[]yW_&\5 cȑ%O %Ԋ5o\Ruiԩ)+~ZkرeGut4ҳu=6߽'8csgyϥObW޽ཏ'mv˯g[Ϗ_#~p@\ #pA2Пp‹D+)pCCB2ϟh0vrH&1-z c "'l &X0Ql.NewAL1=\-g&3`Q&& ?jGPB{$L|GT P wtI.0_CTF4ˋ@&Pg`W"#&YYm \ ~VQIJ`j9UTdUW^54\eaM՘HY~rIK/VZ-nYKW]fia (yEQ*1]ɸOiG٥# 0ACm_7#rE Xa6PȘ12F+!M] ,F&%죇<RE^/h>Q8@Y'͖O2\bۻ͘#&ZȜ* .crFQP Ll@QJG*yG0)qJ}BPWWJ? 9;6 >#b~ɜ'gGy}?!@,ʒl}C 3AjP-*~y]uqI4K[谙,0[T$x-Ō1d|`U!K)(Jl@"x X9@@F@q A9,;V{kjABAa ɴwܻ;/BkA0wȴ"&z>9p($@;L[=(A(Lfl,- C0LD1<8C~HC@9AʉAס#éD\08&B 4|C,9ETDFD92|@!5&RSQhPXq @#?DED#WXYLZ,9C2;]$+kzA ).28(i`XA8#:>YDn ÀEFi;GJGaL"MʋbAԝ&b ɇHnn<9B;輆>0ƛȵK4\~x;ɒB{9JXLlL8LM;˼̒;ʤD8Õ$B)+ AJ:KIMS90̱LCyLL̄4ܴdüi@J xY̹@ѴhCʐ|R4}x49tDh(]|?DΎyAKTlͽ̜7rML4NC 8`X OMӇq;<4G$\ FH Dōr׬M,|G: $NOf: -LM{;'T; ?l܇w>.lѦЇ~=H2H4QlI!Aʉ8 T4ydу9l-} 0BĤ\, żq D 2>w|OPE =>eGp<@@@=l7PT=л ;%Xԡ[˜K]OH=|@7N#ȗ 7hK2@:DVE'é@LŭК_MalT0K!;֖e=[~2`Ud9\:5KS*.@4aҕcWC9W:;p@vxWN5AmT!Mo5>}, Vs2mԄu ek}|X0kp ~ 95[)M QМ\Ե,sLO]7&b9i J !f]UFP.,T\Y5>NF]>򋆡\C]EfF.h&Uw!yn 3*gw@FP/C0qWa2sZ"`%77d¾V%j5FIaf!ˆo2l&Q jӿ<>-9!GlN_c9`琊;ܜMj UlnHxo6bʮ9Fe$:Y)ןNft;JdX1|mn6n.wXi`VpʳO}spͥ멦~A*/&l=E912Pnn W`ݬ̐ r w琄eq[gwK6ꊓN'\rx6q\ի)=36gS?8r E#cPsxrd"W+$ÅP8b9Dt/sOt?t+2cuԇTtRgkHjoK?phI/lv0LFhvvm:3vvTgo`䙥?oVi2hg;rEJ()};w}w>wwxw;_CCb w&ixg[JxJxxyk`'w_H+t5|yyyy`c4cy.s`P?zN#ٮWorTzmzp'v%zO/#{'a'o{fz/Gb{o?{{玿7/_Ooŷqo|q\ɗgz¯|||Og|ѷ_/}|/o}uٷد}g}ݗ'է}G/~ V1ylw~9`*أ;GX /?a@oP~,h „ 2l!Ĉ'Rh"F6r#Ȑ"Gvl$ʔ*Wl%̘2gҬi&Μ+ISIB-j(ҤJ2m'Ԩ$:j*֬Zr5԰b7Rj,ڴjײmku,\eҭk.޼zs.lذ!n1Ȓo*\r2̚7sl3΢G.mgˡOn5lm6ܦg7y'-8k|9ҧl:ڷS9#Zꅺߨ*:ު*jΚ]N–q% ݀4+qO晿9ahM @%@V`D/` ׿Qzn՘`3-n@#BC־CXBwAlNb  j`r Цwb#!BlDd,Jamm>ȉWD{"- k LQ@x: 5sX¦@[I=K!l<A sPGy$- @ʰ04k?q+AȦЃ]qxQȸ ЋAYV^ry ~>pA":d-CHq(iӤXfW 憅a6 V[VԐ2 ue y-IdA I]4` !@bZV0̍1ryNa^W`@R&*&V:UZ5srs-K@PPq D:iT$D!NĘI_qR%SQ#ȣ-åiBZk4HW5҃p^"xkM3TSHOk7&'%vG,$kr'Ry8Al`:iƴ۪w,<U0opWb[AZ6[ Mh+!*୅"@ATV";=uF]MRxGn19w +Y$,Αf`mЃD{\Wmq&׭ͫDG~H `&xZj6,{[sƂ2}V5,w Aۂp eҌk70 ٸ*k=,x#]$HIfWj)&_kЁll"RxXuU nB&Ev l LKmI8O0vV(Ζu(i#;Fḁ:m!8dJ&lp+W34nJYjQ= ×ڂ!$Ey'J҃  Fu6@ Xhֵ]ąxmk^5k=f3R6w!˽c]"|&XY#(;+62LJѝUFvwLm)Z م-KPka5g RLJVT!Ƙl`j ̠1TiuR+O MH{R`[Ճ=Hu1; '-ȴl|]+}Ψ˲xz}\Omt:JAV^z׈C{^Ѻc[<]3VU?gW>S7[Qu?GK?93E?eJfJJ%d >IF d@If`c``lxl tF1A00 F R8|  F9LC)@YR$a؜ !n= 9TG8@PrC;,O$X`m; @1~,BZ L"XJ?FA =D&@A  ͹UJ##$!Tb d$;, xi biD '*G+;B d-; 2(dy=Ă1a$ 8 b&R; X 6.!rL $ ?D-19B|-  ̢m#n Dj>9D@@$@@zGA,5BU2 E5\= -00@ ,(I"@ة$9JKfAx@@`"45@@ ,/F54@L<@SzT߳Teil Vr X6̀BY It(|@5(@s*jN%%iH (;&nAaJ/pٽ@;@Hf'WZ*u v; t@h EC88N BG{{ڊ`C}~4΀FFjj;$W:(J/E,@hhn@8htiG3:|@^JB,Gƌ;dA XئphԃN6Wr HZJ~7,D%hu%hg |i&z&$Bި:&@p*QEi>)iϖچ*Y^h% 4;X‚&znäBϸF*|PJp^`I;,BZ*jĪ>V<ުLǮNrǥz*nBVj%B(b>_g~hr i !D*M.ӴDkɱ-PDb/T-f @9 o+L a^NbúUf,Ϣ l|A\ &mN$@)2D ۦ)*+f!@ Ԁ -ڞm/ƭm1% ;Bo*.DvjAQnҬײN>hx!C=FmF+Bp T]Ԭlk8B$Al.zn> %v/.캮/Cn BdM D㚬cdl0U!/B)lH$pDNtN0VBA.k%B3=FGRPATQ &ppkp(-'-Wiր$A@Arp&B*1 Sr| XC4t^ GjC(B*B&X0'li:(rp$pH\Ad+B-:ov 'P*R8ɘ&,"5DN+ F=C3B))qyq s 2r/\A+B-BV2^qd2(dX  0@<0AG67岤+kH H mr1xy\G9U7<@\~@ 8ΈMF[UfA uD;8R{6gL8ad,t}&Op) |1;йB\B.=0[spd7 hzBBC'%3*Tt[FdTG=f>HN|rAqyc2@P(~S[;; 4xaB 6tbD{-[N"L-KH.C+=T(RX9ҫW\b]w&ޓxiRKbKiTS2\A@o&ڀ@b %@dT B۪s];{p`|=kqb*-RXDTȓ$I\qQ魧vx%Җ}wXǖ++D^x5Hķqs7w~6өW\۝SgZ=,=l!%N\"Scfz)rߟ-#8`0n l JʺE {ґZPy%Lb'x@8'J #WZIY 5|J\" z尽z9Ptk*thʅF|NJ5D%3! B`X) ?HiHVyzӈThLռҟ]( RVSXNUXdўw[.q ':@Y̔ÍTP%YyKuݖt7=>JX.W]Sփjw[!:oyZlAʬ8vǔi0}b\| %00d({RݹܽI eDf3WȱTp:%ݹ%RlOfOU0i'8!cv \ze).K∝MX5J%Dio8@#!M37rL)*gF-di"P`l);s;;QȪdzuκkjrŶ.z50fB[k舟rân$Yk!M.ܒWe9uuEP m/x\ vP$ "k@fOjڀn Z'QІvj^C(Є_B0gDB@%EЉ\8*@u}@9cX%VKDHX =# : D硭:j)H5 h6pHAJx0rГ z@b ̡\>hܺ"B2Hd(Y1K(FP226fDp15 18b*u5@4YMk^S4a|S-xoVDgCq.@XxU%N{'ypSD$YȩӠ y.9X+D)ZQ^2лhQ'XR&4iJRo7i"SpASJZ ԧ)AԯԩQR2J!jV V:WX U.__ZSuoRԺ־uyJ\W)Qծd_ KXll`4>bfdvef5Kv,_E26,gU[ӂV+ie{5umlu ▷mp;ۮ55-q5-kKVupkui~;L)KZUPz^|[_~_V/x+` V`wxEx)Tf+9j/3I,Uߵ)V\OLYm`c\ctry_A2.,!ɑ+r.Qr0FwY&An,V/L<"@% # ᰠH2&`i,-H*<7"&(sΥt\eQJ%V Ph0;*o =h(1 ɋ)J\vŜ Llo__a4.2|:*û`0;d8Z0K1Ҏy3oho1CK;]0 r.y 0coك &bև;T,| v !ߨ 2TVV@|`]0xKD` +z z INl m@ w\`0 Ģ A bNL.p°-B8>@zpPB `-&p I `! ݰ W` Ta Ղ0z bI m+/\B~ g@>w VV@ rP,ԱBVE,lV h,xqAzco 6J RnR,hQ D&`ށ c;RwOP0$JД!q#{ N`n-)vo&^qq$?]-  Vn`$R&Q.@,(BU1,{@" So $-q Δp D/3T7# 1ErAA1#n#N բ _n $[p%c% p: boE&0k3Ă •0<`Wf})+BH<1+k!R(~O2) $&cD wBS2A%s-Ihn,d/S.J,V4b@DA!N042  N(/" ?S,Do V8 -@X24iNm0Q P"a3-)>` ,sK2FP/P1!òWQ  v?#N s*    "?b!L)(WS*A  PUM ~U/gR8f&K4@@/R!FNZ49&Z8TYp>[? %wvOa? 2DJw aL 8U/rAd@XRL, !u V1cMNwaaHUtO]PY(962HQo>r lseuV3@s- BtUUׂR4c?QA bN-@Da*v %3cg}6i`k=TF  *Jm M9 zpPIkU u-N&B2lkH#v=bbK7 >l;뎳!nGjt vq293d2C^ ukV5A[#k@09MNw\!2Nw6NrDaTTRM cjvށw&_{.Wu.Ht+!z,b2ƨ]N B\:5OVFO8@u";0 \sL))*T|UnnQ]5-n* O/0qёL)n33MMP!4 6ƶ5w, @W+9 B[qX hnH/d>utP2Cv+4{@ڡ+.$w i.`N_4] :fQ8G,w|tgVD1C,ěR{i,adKOYtBX8;SB>DXB/108ʳ oe+b8D%bwB BdqUa,s ixV~0,BؔCde-XBOo"Z8Nm8A"r)nƢC֦s:X{zS-}-̟b~bǻȻ6drPC!Ycg9)%5ob8cb.69e\ګcդE;dݺ쮿[#mT$ c۱#Z+;p ۲3i0[;[b8۳C{[@[KSH۴SJP[[;E-Mgk۶os[Fd)Է[۸[۹[ۺ[ۻ銬>м[כ۽[盾۾[ۿ\ {#\'+/3\7;?C\GKOS\W[_c\gkos\w{ȃ\ȇȋȏɓ\ɗɛɟʣ\ʧʫʯ˳\˷˻˿\ǜ̙M\<]w= O\#]+'/]7]LBA[.K] Be ]M =MH.k_},D L+6.Փԋ/߃ba(ڣ]ڝ=׫ɠQk@5z-uHnl(Fׂ,K]b(\Φ/Ai/@DaOE;*!+ o¦bN$–}Ё ! ,   "!!###$&&*('*+++-.12/05066666:9697)7.749.:#:,:.:9:3:2;;<;5<$@=?=>=1>8>%>?C?=?:@@A?A1C,DDDEEIIGGFIJJ5KJLLLL2MEMNRPNNN;OLQOQ7TTTXVVVWZ\\\\C]:_^a^U^G^7_L_<```]_adb_cccc5c;d4d;dCe1e3e.hgjg,ghkh'jmkkkk2k?m=nnqnLoqsssst*uuzvbzwxxuy4A{{{{{AK|9}}~~~<:SɃQ:I4nNB<߉PBEȋm5S;IDZ45f:/3:/3aٔbEMWN_՚QO=DL۝LSƞiErŸџ\K=CWܠTjgŀǡsա֡d롟Ǧ|ʫԫqlɯiޱ~ƳsٴһӼpܗɣ羅ÝĿļƝȗʮ˪͍ו߭PAA!<ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲF )4`͛8sɳϟ@ JѣH*]ʴӧPJJիXb毫ׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿UÈ+^̸ǐ#KLʘ3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h]OcP?D&OcaGsO)o;FU 9WSvXCuH|%N;  MM=FiyimhD\SWdP: yY!gipr? uީ)l5 :h;"kPc)} "('3ꦼO)@)gYi @`+ CvhWB@&[(>6,M?EΉ7宷:*lMe*W.J&) IäY1d7ɥGZr#c<rZV&f8[ '"C!?ta BIm\"?`Cz5Fа6rMa&5F#mvRCO rnW ]c)lhR';P @w x! 66dː;5K%؇O>`3/J(%X3З7!*T{§'1op׀-l0;008S[eR>@0_ \4@@ DHwDx ~-rEQ hBur!^2ܡ ي0 l0uTG v]H@/cH"!ЀX oGԖנEFbb HcĔȠAtvdO iD1RP h~pD֡#R1|{B~0$(jb:?42h *u7S,ڥ$TQMKhUMJ ܐ ,f6jl2GbiW`GPhl(@մ3u} Z1l> 'dLj(=2d<@ V aԚH FQoZ>H)FrkW+T!1|x\p3_G P!UI1&``c+Ȟ5IM/,5֯pqXCjIw·)\-1$TPQѡ]Icw#_(!˴+IG@8 a$,EGA5gĄz>k +Sdm|Xa_X[%Ng|:TTg*.`Zk%לԶ#g ЯϠK-0nSXRR!K|+ITTca6UmֵJ)BreU'jx :2f-l"SQxֵ Q ;fTezk#uJ[*!(U~#7S?qZtߚdl/g/=B^ 3BK (@4c&]֞m걊8}C̫zšB? xzvf(:^'5?¥`}~JJNh`=ˀ#LQ?H^Capoќ5O ux*' Ў/lIKMh)ugTS&"[~4~ITdv}Ӿ/egڄ{jl9xW!XV3a hRnY,-x \RW=R5j7z䑢kYi$ x&"6kpa"Qqka^[D3Sam)Mc"WW-|zwB,<]i^䏥 g3R)Cr VIUm  QZά.8I-󭲔ɋfgbTњ/ZB0=}OԀ $wtwD95Q uCY H 3?2=e/tv)oxqrnB@ p:vD9P zt5Gc5I30=1;"x/'PK#H7eyGF)_ S e>%3;g`X.'}5sBFt8Ut#nT-Z)id$(*7bivLIB 8E4GuEDFwsm4>BjGWr8wb)GH)tL=lE.V(fll{N4_dw]QxH@S^]hMr@Df^OE0@ PN fjf6>Eb^GP/6Xd@_( j*Nh_EuʨH `dRJdpUxk[J !p`7؇ E&.@jurN09A6c@68X*=205A P "X=4:st/&҅jcE%8IK 'yb3/=98 p+y`E)+jD ;/2CC3ʒ2eAfitFtdid 3`Beq0h)36S_VD@rrky2Qi2xiY);(i=2:sV6r1yB!L s"'əxUmDrY8s6mB4LiY21)ҵٜ9Yyؙڹٝ9!y虞깞ٞ9wyٟoZz ڠ:Zzjڡ l"Z&z(*$.02:ɘ4z8:ڢ<@B:vDzHJFNPڤRZVzXڟT\ڥ^`:dZf[zjlziڦpr o:vzxu|ڧ~J{:ZʞZzJdO0Xda w|{J 4)՟1K`T㔪z,c{qyw1g)??WBc\2G9ɖ̧ 3Y9Gg) _?jQ.*l(km=pa3%I),Nz G_m**+\@^Ű5]@*aOбNOF ;8JlPv'7 v )[<`d 8{d+09Z\OCoه3;':$0o mCr)unPu20FٳvUL @ p)QF.Q)tn]Z&(6#>B!CxDTr=-cP}+UBk"FCW O!,M`ǂ>K>c}K+_uۼzi3, Cbv)6P <@5!5b6 6NCf8.$dc(t6*Š TE &[Pr>->hTlכ`rACZo)pj2XT[j3Gj"3~?ISZPZP d λ hf_)djd&=\hKu)i0*VF4Xg])7K1%2cj+TB2=̴T(k suMÐ|>|Rk2$?İ,H0XB?0P )yXKmSG  cKK7$d0DDRP: [I=^M[7q.UAʄlМN *( :fQ4nu8nHT_9zr0B*g)(KTH4/UX+lEjCb)TPM{yE|X*[:f{\[B.)#`5B]+eNHj@\2]ӭe>:GIO@.{1H.e5=!1}c?`>:eДRyR5`) 3 H%p;:rjxŀ\Ԏ͟CM TjXv/ Hʾ(t&<՝Zlrϟ@h!SliFҘ`A [`֮w8jFK|(QdiG CRi_c@S%5JAJpu ʮ/y[tP| ="*M*C΅[hxvDSCv4CԊ?M}]E qXѷrD(h);L@ܔgzVţ{H;(oj0ihC-Qڲ!$LKv!H`~NXRW*X ]N7~dyQ6 3pi]A{4swg\ 6 2sI,}aY-=u59E^DnQĮ^^.ɮ=rZD2Ϫ tqsg!fti=OCޞq_:/ _r1q ?/$o( , 0?.4n85<@?LAHGRo.?VUZY^Bba?f?ejϧin?mrϦq?v_uzy~]}?O?1/O2x?_ȟʿ\?_؟ڿ 8!i>jgn!_c#XA.dC%6DX"55nG!E$YI)U8J1eΤYM_O$w$ZQITSQNM#PY{ Wa;ZHVYi4Q[ [ݲsWlیqgaE[\ccIpd̙5#lygИ;\:ЩUmjرN6]!jٹuC}MnQ]|Kɕ{s,i7;ugtꕭy)GƗw%dw<&ǦX|) hah (A_LHzBK;+F2*FF!x⽒ G,8Calr#2Bo4i ?h !9R#ӔnL͊D,  ,L` !JL4AzD5C2ƃQ T|Ѡ;IK /3FK4KHT BdĂL QO)8DC T{Ҹ$%5O ,xm-ٱAM|R1 Qv*,R, b[5Die` j C-b,F\]`jk 6oJ3.V|]؎E-e]cWKf ׊B(@O ( \㐏NUb (7 J<=.Z~yԡUcԈ*;4!Cnp0é:Q6p.h2m:hbG+;qLKWMl8 ҟb}.bc1Omn*ڷH҆lD>P_y1>WeGsw;ZjvI[8#ahl6Uwa&4;; qtF5D}ۂrOnj; x}sYM( ;U͎9ŧlQO&ί?([xЩ)irg7y$vY=: Y~qaBOSؑ5VOڟti;Ђx| z"T_f 6ІQFWJ@{6!3AMCA5-("x S|C?L0B$8%TW;sBc4)Cê;3 Jj@ i [@9,#;7%kBʝ%B5$ ' CN?^ EpC=ఒW\ j9I$Z!j\ll@no q$0@݈Ы,(>iDHPF ~5m<<ȃCII<8H;rT8?d7@\;)K~G\~EXHLHIIs4şYQ@* >hC=PgxH?XCĄh,sJT4ȃ,m@Ԝ ʉ P#kN`S7HG`KM +M1 J$ 3^;pF@ %ʑOэ;P!ɕ)).08F'RZ-}NQ5BtOdS7 0F#CRMO| BE)EtEq6 /}T86% ]AkPOpH9ĄCM|J TyϼDT]Z%5NZr<:^UUUV"˗?,BjMGe~[ 7R̿95<ݵKMKeNV!eI>M[f|WؔWKpkHkXrWKpLȑ/ #kA1-_І%-X#F -`XKTs;41K4BPKPm-=_X^3k'ڏH6˚ᩝݝ?ʓ9Կ3S:ić.6HDȂ}``U:uO~eI֥[*<+]!xY0Ʋ'JPe66ʭ{㢬̃U`PFnd..#6atm非;26 9%^79 V Rq_-eՈkQ_, .]NXeL[;:B@)e(;c> ܦ$ѬY&~=ټ[:kh gmi9 c@h_4N;R}fY|gxfPIRVvph|(6>^e dHh bTťBL_INd=^6s\F(yi`UY[Jnia)>7ia+9b-"Q?tF~ 9,JAI۹ߴF\\ |Pȷ=v8k4Sć/ lE MkܶevKkm,V>Wl[B`C΢bBԦ+~(lbq9m[LmeDn8=3mȆ^KlPn~eK~B"v84 xᦦ_pp}|?opp/pw5ІJoxє-M6m74CpYpqqqڜo8IoܪѠBrdFQWhClq!r"//clpz+ F 2laB| Rh"ƌ7*DQ"Ȑ"G,iȍ--7h)R{bB!&⃐`?A "J2m)ԨWbJ%;2+##b?d lXd}(P ǝX 0X_@n\QRl٤ʋ1X!!gjj.Fhl6ܺff5D'~?6xYp'R) +X ?|2({_ <@wgyf PE d\$^mI8!D-yP u kZA}b3IQI=@3Ќ% i}w$=fTBK !@ ;6/1`t1Uw9$mWUiQ \$G BZq xU 5Ș9BtA2sGq/cBd<ϕd)&0&*ea}A:ِ?i!e-+GUh!+ݶ+C$G$rņ@ZbB @|P0ihtnq!;a5$twC"b @PtB4`1Ֆ?z2,2e-KnC⩷ ?IB>OM ,;4vURD6k =SLiB!tOhڪ|ZAVϝD5鏻 h"3H<˴-PK̡$skyT b- Aclw;}NZ;  [ک طڹ 60Xu;6 9ڙ?ŋ RA 0D?x$t֫r=5!"&>4 DkC.Fjab' D:2?$+<`D,49An?TIJ9NcPF$pwD Hˆ$N _ӸVNQH1n{\"/>%eLHk%`YO"l8˒ >D ą#G!?ؑn#0YZc#RNwG=a Ֆ6IН 86fz@ X%4GibP@2A9`BLubmt24! *1Q$GIb&B1dʁR ʄ3Y![rT[/ ˄8nH$73qO{ =)]V!ʡʥf҅ӈmlA&Ž_26(U0OqPRVxO18RtDE19anbhCCP]$߈Jn:gȐA@vd1CM D H%>zQ+/bVVOwE]Î*KՕ ⎍@RD&4q}4iCD 6(Ӕ.@A/#N@Qb*ӠoiX 5/CbB |lW$-(Z޳y n2_ `rUV1( =I g@ҹb_6 N6B!ESmjjj'wqvQp +aI+:WmH":A=2Ht\6Z $;S@#)@U@We"o9j f0 pKfFz nnJ,97j>=O-N|3/;ρ>4D3:v& I9Δ i,Ӟƣ?-jGyxS}PԴjWZ5Xcfֹ: avм̜,BXb3>n6ݴc$Yv gk6AbmA{^jnÀ;ܲglOںEA|&o;-prWwX``M{J8ԝkn PcGGmkA zNG9q3@Y;kz:Z+ `&H=ic:WuS"~l0B J`{8<0vs_=3(DDOGBL TCh L(l  @Gx[xV bQG .p V/=b&ETH T40 f߂D׮r4#EkD0 M`@/wG]0Ip; @@w$@ߵB @/== _Q@@¥O`8O4$6D աZ <KA8Ԣ-"."ɉ#nZ$<`_S|b(@ &B[)bO(7޽b@cz#;:#RT5Z0B0h%b @9E>_\ 3f[6):BD8@7D0,Ł###Ixt%d S^4&^8dCCD{CAT(@4F)|$Ad܃Mn=L*Sz L@"4$6*A74ن&= \SBe>a>VB a=dCG&[RXY> )at0eFC IjSf6dbNF.Ec>Ef= dfvf&FS*I_5f)k*@͢T&H&n:oqd\U^D= hef֧2樥T4/ؐ ~٦[~'gXg=ygf*#֞R 'fgx C~:hUa E(86E[&0%C=l@== )i= '(WtZ DB%/DD[1hCɨ|> Ҁ@$. )Bi* =X)E."B[(h*衙-i|:LDj|0**^P(BTC&XFf}+Ꝁ)**.nC@@ /:E2kF8k-*a =*BdxH@>,R 8)ƞg}& *dA)1C?+66^ ڏq$mĿB&6z+*\FJ~r(Ɗ LjxA't/>l駧}C x¶Hh.+6\,J>X(,'."Av}rvlt)B-Ԃ:Cm>h t8ć<@bєBI=C--) dy&'Z)̂B3뼎n ȁ&;uD Bh <<;n|.bNY>B*)*of֧$JK.p*Ȃ,B, [on!+B+2)-*0 0g}1,O\A嚂(2,./ BLXrCܬ Bm*4<@3Wp44Q5j,Tn'@8'.}'Ē;2/ijBs"Utq?p_+7PPB/q SۯN(C/'GAU.Ln*&,+^CQ2'@MWSG9'm @CpBgWvBJЀsZus?:uG)=vtwG4T/Fz[I(@zH87n{}6/>t+\EoXTigV_6tg-W,B*|m5Ѓ+*D8@@LDb<@*mCl2'Cbx< C*B,-BfXAJı' p::'ltG/C"~afBdEPT@h1;ndg=XC*úy/-9zSw-B7ăކ{N>zCӀ^g<c;}k}xoB?,AkZ0:sbc3/YkwE|G/x -6@.:)[K6(n䒼,`3+:PK'+;,mDq*\w-B7[H;hLC4?# n˗~(@AĔ)>6t/Y!5k֨Z_F9vdH#I4yR$5UtfL"š " "#@5ohRK\jTSVzԗNvu>|XB ̔/CP0 +_b5 Yŋ`r__ށ`@Ab8*((RE|$דY9w50fѣQGϜYRy )^R5ʚ>}I9o_$h@ (8rWʒWWg92?m S-V|~K?$w H |y ! :1A%%,0*&p[2iC %^"hCUǴ8q(F0=iFA 1q &0(KHu6 0n0DsG2QZB3!3:‡J!H5'D#' J=J}Y1 ٍA%݈O*Բ p @&;NL}?U*PS˼Om 1„$ QG]UJw.x3~ U( Hzhhrfu}9Bı>UZW)3 p 8+#R \i{W_r[-/8HaI@-3`ޮJ a7ڃ33ҏ,\]EBH ~9zMJDMF1PAS!jqXG;yG? YHCьn<"HG>$Fg&9L򰓡(I+T?LyUblcYK[pӺ.y\Jfa+&TLgvo|4ɷhV$5Mo^8Nr2g:(ӝ9O{7>)}]?ZP>eUBZL> !hD)ZЉVhF9:ύv\BZ{Ԥ)h1IR/)9c:Sv7)5sS&?j0?:TrTRT>QTŽ,jVzƭvOjXñ, ۘ<!cfg<]mfÇ&[Ꭴ@). ?ܮ4@0!wCP?p]N_Lh ml(o ]lz|@d7A o (RЅVE5 2hX#$Ca dr1'| ]p >"a \V#QF r1RXOhoFQbk/|?f */nIW9^&݌ BF Ozh]A]|Pqf4;hjlb$Z'febDz?H@3R'DyT0_%l/J 0@ @ 9'405d96( p. BPǞ"`"lj-՛ \DXWaG ̱[20?^![sy[ ` B(l85@u@C A`B um<dvx?^BЭJ!$@]/oN.1L'<-3^668w<(0nFc@+ugd*qvP{m܎@) -2kt(߶1gM `e 'sqX<Rdg;âYӞmf?.}?x-U?צG}FHx'p">P1uhi]@ r3"m?_h ƟwvV/sbD *"2H8"A/ꀯ$# ҞPL2"Ao$~)/#P`pJ/4`~,2"D3GP`VM# A|A8KȀY``X 4*pNbՠ@|!z$OʰpPKK%&يj/ hL/sXI/@!B@A45OK2K\B2T N(vQQ ;5`@gو뻢1sx 5Q#$\- j _B+D k ]o %ĜM;p1Dr. @` < qB '~ C@r )JM^  @|LACRQ%[ͻ.k l` 5#@X T -d# lP)` 7{*ZQ#* sX `r|03"tP/q3pm3 Aڮ|òp Z vp0Z2L#2z a4"5 %j*N7bq%mP%c<2%3}V6#Xk27Ɠ#K %?BZ (#l@ @!M/57<[&pW1# P*u6s'ck| k:ֱ, NAXP#Q67( 9psX2 XKLyKm*|+j@(۫y $ &5F7!^ )P p}MA),? 喏R-sH H3 *T +Gt gt  q ɔ閑@ R*؁NLؠ/v1<U8BMM3IblE{rrF1 bd/Nֲ!|1s |\l9\nAXfLsM2 ,T!-:UD 7 u.܄5MB@ It\C2 @=[Bʦ([q U`^g )F#tOΕ4$eMV6"`! >K66^o@V%Xג[ÕK{2֪TCIv#IժZ͘Z薙o[pQ-UܶoovoW$ qA>Mroqv#p pd2ht;ttws[st702`M ˉlEBw/ ͟ndeX5/@Non$׌wC@oe-C(Z86q6)vwxg|3o}e}~]}~e~~id%c Gc Cnu)/;r:؃?CXGK؄OSXW[؅_cXgk؆osXw{؇U8F*Ŋ؈X؉X؊X؋Xǘ،8Jט؍X瘎؎X؏Y ِYّ#Y'+ْ/3Y7;ٓ?CYGKٔOSYW[ٕ_cYgkٖosYw{ٗY٘Yٙ噣YٚYٛL™9ĜYAْٝ癞YYYٟu*X_ ڠv_Wj:7Wm;\zɞ`?=?B?8?$@{7(g @hCĪ+@8CA($ApFU”3KW| ' ŠF>B@b=  # 8p\ @fp!pF*.]@1.e3 H”܁,!0̥mxc)RA>#; 0#B DLgP&^q fhx踬`nTdT'V9`(qHJ(`Ⱥ=`oDZ0mh݌`C1kbQAJU7N(V:HJP` h=&lD7H.[X/L5p.C [f=>I*_T@yQh]R=Fh`rЯyA 0G{#y8R4  *&e3 0#Ll%Rb*W)&/5~%AŌS#=ɠ&-aa6V*Gqm` Nհ~taCxnZR.%M%T{moR= YiʲhrzN[ p6/@W9^z/@wt]$]@>T&MNn+# K10TUͬ3EҦS.qۘjO L`PiFP(oP\mV Ef, M^QB,I)fyxf TZX0+7Qr@\4fk0X6RWuM rDmcITx\+۸б$03.҂f@]YZT59h/ŀ|QD`'5z`\f0 nk+N6QWG_'Jx:D:җV})fd~.5u9'jN:SpK^~=z,aU8>_oM&3}gSKP_iccz'g-SѨe7 KSǨAO;.¦Jm,;(%|!I8!>%D3vÕ7X~6f+Y%TՎ@-'֎28L.VaqwyRh4@*Z,{l!1攜 슕8 |as0U3b]RC# Plg73a̫vXk0׿Y 3S#%R Tu'EQgM|fWh53'dv)D$d=p[q 4}4F3*TF%eNY=@W` B|YlKN~rׇGu|:R}C,?=iR]\!u\W05 `T~8)T\2 hjmb7C\jp4@` O@C7ae:1 T*f .?pY*F% @k3R6̶_a;0@K ؠRvoS uS+1aRBT wSPUi:xp{@@Vfx)Чw<˂Ql":s)P2egVO(53W(݅bB*DJ)JT>(c~V\Y&R[P?3g F@r)W`XUWEo|#r)t3*I2R2 gVF@X?R> ~#'-))M@Q󃉗0٘2I*23t8`( U%bA#Ixfef q?T0E3P~8t4@r}IZ_ybAՆ  L ePN"`|b_.IT]0ė@# XB@tXgk2} u&0ė\x.s\)F17p |8(6#ЉK2P } {s;bqv2 ::<0aŀeכ2&1&-t9(!0f$c0v^:w^ }LgY֒١3B5sBqz**!Z-'j LD1< EY=٣F!CwR 0F`G:T籣Z`b:dZfzhjlڦnpr:tZxz|ڧ~:Zrqڨ:zکcQZz:zZګz:Zʥqʺڬz:ZzںڭҚ: Z蚮꺮z2zZگ;[* [{J۱";t${(caj&T0Z9h*۳ʲY6e0e454w0=*RBUPO>{ X&+nq8paK9(oaOn1eS`#Xʪr |pGus\aZ<+x|N:ER˷{~&? ?e`P{:ېTeV7T`l'|xPaPI`W;\Q fh 7hSO+ 46#%7o`@T8"P e@  :1RPs&9 v5KN0h/ h ?as&{AU?vPh;D30c@:h0@3 ۺz|f&4]Ņ^tuT&uYyzop)7B \ a a@V<# ? \bed*MQ`@;RowE$B(eRBS01O30#TZϠI5aWhodbX1 p?fmիXWdC0I'/0*8'nJԴ-VsxK+n+Y;V$ւp2\ZwxC`3X{,ĔN@37' kuIm_6)BY!Cd׸7bX+oRdmAJec@2Saݩ^.Ew]@ `,ȹN\4Ga0wU-M3I؂FL%Ӗ:zt[ ܘp);y`;#r׊2XAWNY:DT &0CJjUã]`2aS>4#diBΔ< =#`t[owZ1V6D"W3߼,I< /33V2.@>RYчܱ=wXxA`913" &~ЪzϮc.J|d59P4%C@T&0SZ':o~ M(Z4O6N$]ˣ`]M~\wr1P/a"M銺GJ59|)$oy.k40᷽[ho3kھlAU>MAUȀ+0)X2IR+(j>B-eדp2BZ#]nz Y骉)n[/*!j0r)J)YoZQfa=[׬T3<UK->~E)۞d]TU/rQi+o +*S`X4$QX&R5ڀii|r37#*TP8[a|Й|D*̮Ųxl]XI1#UL" qm 2컂/]7@4󢟨~;ßZUˠ"sO0yAd< Tf蜭7'+1#a\e̙JTgСE&ݲ鞥UfbԱs]mQeoA-qKGs3?-uٷRwar,y{G_} ߿fj'@ 4@TpAtA#P*B&ĩ ;C4l DK4q)G@cĉиDcvxF4G< lc8(NKG!TYĨp CYH(H v  @=iTX*|!0K(\)aÉoT}'M}FwсB@`pH\3PA״)p꽐z*Ui, ˾1b$k;60qp`7z HQ~64t) uLRJSEeyلfYF(RuIB_rŢivGqߊw;eyw/e_wqseg xeO ye򙗼 xo yd󩯉zֿdIQjz>-}mjo~>T!2ve*Z޻'XD$}g_~J>{n@@?y{跦  @@,@<@\9Є#K$` | @k6czD@NHA\AlAAIpAAJ@Kh@x@@#&Mb 8 LB%$&t& \z8@BA.A-N<(t  QxC8|C%8|p 8BըeHODB,DC\k@TDVlLDEJsDְDDܨ&$PlP E;7A;S$ ,tEhE$T?Ex &%PF:D0G8Ħ+3e @UFyFGkFS= U2p`$`lbGnzEGdzA|m ~B HN,H:4Ҏvzh?H‰V tb8$I4IO= HAItjIMIc|ï8@0* D%p6 4RˎLpALlEXtD\м <!L :#a$ܤ*j$4h$T+ENFHLN@T pJ/;U8:˰ P0 %g6iP;80pOضP0ƒ,. L!@(NAWDRDRHbOLQZߐ8Žc nMROX3P"LX4QATAZB)e:*KܤvM?  @4hE]TFmT˔HNX&=Qmx[,NDB,,,S1%T0UTFh.UHUTܸ+TBkb*pt AU/N?PEVjVkV@VHGV?\ ]meT$<@ɓD2-ԗD/IVEo͍pq*W-LlØPrRXdIxmuμG]LF@Hō}"bB,8 #ёhyMz?AtmؐzLo8H@BrEsXYM}B~ēw|H0]ۻ८mtE w ƛ[C"XmE֭CET5u$Sϻ]0@ _u-T3-dF _2^"fƆG|ųFE @ٲMV- ɽ ,^ P"!6a 5GHPQiCJd]*N㍱ `$0+L% QER1ƌEܒ}$dM+cYB%M:ѥl`]al^D:J]:>0-CD(@#tCDV*y><e6XLbĄW4eU5u[X T)~K%aݱTMV`rd>g#]4eAʼnRWELט8^ (0oF e<.zXMgfbExhfh4޿fho^t" OP(hX2lLD˜ni֨FOyȇ ~.Gd+p.`z=ߤMZYūHa 6f@߭eᑎCz8,J$^Qvk=`fe׽Vb>RIiiЈMşqsMks, ,SY`_ D??DIjAdb{|m ӡ$ D &sUklmaEHP>o6mUTlqMIiըNs`r` !TεdR0m RJL9NL`B;M v14ۤLGM#n4iHbF䙌lh / ҔtL*\̔\_n% ƴ w.cezteq|Aȹ"ĦRQFx,PsrL rag6Efss}ٖ/ T!.i4&1x$X4xsޖ`4F!mWFVdmk^m:,r;.2ki骻n.{/ Wc/{Y|pW0 ;LK<1')\13{q<2\2)+z-&/<1|35ڜ3=oA ] C}4#m0M;4B|Z}5Yk5נzqDv=6e}`CTtUj/`-ᡥQzlshml}Ƿ]lG NlǸ{O n䕗G_lǹl[Gꓟw38_ܲ:~#vNrN|#;u|_VF[ Eiς+P6)g= j,Dh4MNl c,61& 2`d=v=@@+Q2B"eL,Lꤖ>Yć3' &FьD()*'l>J? JJdpzCH"U )|ZD:?fP H q:G TEiLFPrDfbQ"~2+X@QEbxE/2pYpJSS"TV\#/Fԇ`E"q>׶zK{L{d@AFZ`(C%2=M ?&ב8H=j{Hۅ`QH'ݣPJV'N9FqQE&(R'\M"ﷸ Gb!?.0̖%#ZWQY WbZ1'$.,!ǟ 4HnC#'Hm Br5I j>.! {5ËќUj9"0B/"/)Lf5l1CP?F%Pփ 1 ?y?1-Ɓ;pGHY<+߸h Dmj 4?A Ǝ(Ԭğ.lz~}:^NrA=Esh6D>ǃjv 2Ña0\֔>&B` Fx8ui.9]/PTE@;DzU$6G\no`fG폋"/4+;D͒yi hY `.~!m<#5FtSp׽au1;EM9(%r\7_dSs?3[%JW.YMAÐ@#D^~I( bp_hp̠](orށ &<3}M6S N1" rg8Y*,?(? Ir !|{ݜODpA )!]!2qAHh9xm* A-`?l#)1$=|Q1$ is@=[Y Lވ ȁc$@F9i6<@|2Y\*<#Bhm^6[DΩ)taiBDQY9X3h!פ!i;$>@,;dW&11/"@AAy]i|aIHT ,]2]]xl5iZ51.;l#o$#8v7 #2:@c c,m4̣PX>NG==#gcȣ@&? A>?.p$$}@d4$=$EֆD6UFV$A!FvnHEzRHhld@dd6KrKddOɤMfFMn~O& I%azQjEO.j z(S6ESI= @evMehTe(XbWG[fDK=9C?l9#@$8%q%XI?I?| 'pfS#&2x&AhP1j^N2I? l=<3 efgQ ( (N yy"= 0D'S 8}Jep(xRzKX<  ($vI2Fﴉ@ D?L'.&,DNnzC.Zhr&( DmFD& Ѐ$kஊ,~2/~$n܃.ƧD? o&)hÜR8 t@A!o.L\~H @n|2Bns@nl0F<(A9DvAvmH灆0x/Ǟ-nEDv!4.l@$ _I?./n#./z7jdjVfۚ/nqPv􃤚 r r"2 @=$G$O$kj&2 &nl2DĖWo'1pD[L܀A2.H0 /200Br.s1pE8x@p؁gqRrC=t`9T|<dzs93p#C?0@3EBAHD61d>t+As>4JJs`3?3`A/@C3BO*(8(@ݩ2C_ s/o?ȃ1*xTuUgAT9WA (nn˞@U_uY)4?4(~dAYHDto/C<*B"U5Vk:W@sY_AV[),[ 8B؁X|c=>4D_p`>L+-!Y_97A Kfduc_6Z(.*>ɨI=iZb)Kl-FtI l47G%nk?/-peqr竻րwYB*,-0Cv[AkA (AhZ@5T&|PPیxC|kvw3*.uf 7bmeW_Z!8x.*B/4éN*^ D@FLCD+e:-c6q3 995g3y.-NO9O\@1XDJZ=v+Sj=0-B.BSw*5VryrgXsW5Hw*4y6[l7gG(ISID.@Bo$5$zC<¨z)œyyS6xU08,{g{_@ 5Dµ?D5|@-P%/n8p{ 4:BzB*z>#Kv 8[uzׂ+vW ?(0Hz!Hg(@#4vf)d*X@>wTCZk ڄDz6 %yЃ!v,XR9vdH#I4QIXtfL3iTI0M;y?{\e+W\p2$f̕+XPR#E *n͊",WH,XJsEu{z9Op`~P…8GJr@vX889%6oɚY3iٳK^Xb2ʈȗTnS][WmPGy{7`1ŐdE;S dc:EyVk5ތoTI?rU@0NH(X2\;ޜgi zfq[rӍeˉFTfkoYGIQh0I˰?ՙoxlGxAŭL {Z9c 1pUlqey.pGgqvHoF%p@~Fwܱ-=w1 i9Z8 qDROXp)Z14FG M@dy"m(BL۽wЋshNl%_ a \0F<W#{|D ,1lxG~' j?oYQv SaYU !T dda jY0yU󣲹B"  I!B \wp# jc p\91(wM=찁 S@ј+$[ciE{q\=!UbqSJR ]2F̰c$mGRi@ @|U<owJ4ґ-33rqO&p8@]x vHBb pC$Q4\ziPPQ[W_Ѕ1٫GNHӟ:Q+a`I I+4_<;.U36Aw.Fԥ*a* ISs(|zcPHO .a`]%V5$=H@ppF$ թHx:֘5I'V{PZsdiW@e *y)_EִfGHRD8O]`m@f;ԱIdE B mmݳR< Ά\ؚgBvI" ( "`F\ʋm mK&vu\KgpB+  V`'X`"t!*]dp,:B!P*HX1qZL 7߾acÍq=b3f% B@Q\e+;Y$4?3oo۰1P 'BH'`@R, >`00fC @z @La0KpP6@`|`Ip0$|4@T/AI'FZKBvR,'a/ʠvР RߥS qF@ %# Q r"¤H1b SA,  bq^ڇIЀ ̀#" 2@a `.@9 P RױC P` " l\Rb ^r?`D ~d% &r"|! U!@"w " )C` D"X1%o O'ʠ5`]DQ4,@ 0 $Q@fG.4``Ue :3A~vڡ 2AC1`V@.@$a.b @` `s|appl!!}b V"! , 7` vР!1Q;35A!-37 @8W 1` @v! X"^ gs  % s!RrFH! l#XT U2"ACS#?e OaִD7 ` u%PA A;f U^/v tIH3",`TV1q]:"GhEY-`% PTAAQ3H".u  =28 ` T9w 2Dp/; X,@`*x%vVJ isvJ4|aWWBDp>wm ` e? @:I iWb8HU ȕ 79y{ X ,"5'I@1t | w>v! y}Y}| H-~Y{{v!l=uP>mVcLMuF @B.7YeqA#״"Ӆ"#t>qLW42ڵYSd9cLKi," <Օ 8#ʠ`iwYb#4M}W{xadŰl!~u``!@[р\? =?[diccFZdU+RC}!AI޷}w F_cg*%X2d*"^nGwS99unpI`={ϰ 90O}}k}W˹Ip >@H/4`]! [}F}! <( 9={[6 _O'500hW-{8Lq Yb54N`QBA!t>`>w:fz#~cvn>@CZ+v5^ G}tqְ8,`4`~{vJ }aFC{tavqu)U |5zEITv I@GzE:SÔ>@ GIs%4f~s-v!.0;B v^5TT@ץEegvfvN7LGs @bɓ4 MZ# d|4S胞{tFU\b2 g=o^^臞Kq}^꧞^뷞^Ǟ^מ1+^_ _#_'+/^7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__ <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ ?=4ҥL:E4ԩTZ5ç\zZֱd˚=6-á?}Vܹtڽ"ܽ| 8e=Ō;~\佐+[93GB'{9ѤYѐ[s- ;+Ê,ԛ]^J;#UEňb1 Qsp=yh^QS^nzWcH4Fb%~>T%9\oŊ w] 8|8rFc^>?0 3J(3!Aਢ vڅJvܗE{L}]=3#QS v! ,   ") !" %"*##$&&*&(,&*3**,-.20./-05-2:3345,46A96937=7&7148?:#:2:+:-:2:6;;<;8<6=5=9=>B?7?%@9=AFA>B>CCDD?D-FFIF-IGGG5EHLJ6KKMK3K,LDNNQNPVQOR,SSUS4VVYYWVXLYPY;[?\\]]7^^a`^^_\b]bEbCccdc2c4d4d:du+u2vvyyvwuy}zz|zwF{}~}|}~8~3D݂8VS<҄b<3CM~[ *S#$Jj j,JJ@cAZq?u`yZ0@6nx) ĨRu9[{+j&i5pc?hAK&fl@b `[`B)i3{ &'\_TAWsBKs(Z7k4ttkl!>HLZc Z J o2VQ ^QȠJȱ*.^ѶZ,^jUݥZ@$ǺB![= uv N u8jZt3>HCLa:>2z'H ^𧨡O+F9U_>XjNΰԏ*~׏*U'|~7j[o,ЍET @@  լ/gxUC2t*LN K Tb- sG<|u ~s‡2ehӔ@"} 1lRQ0 hH !h'! 0m YB(%@v LDC t< _CFDfćY(9(@ 4` ZիA$Pi!Y-t5Whڠ***#JQ % =>T0Bx< M5  00TP ^q mlc% bhbïR42{$_Kݰ)L1žh*Ζ@Agf%%IBm .pS/5ڔ?EW%P|fhؙ#ES<H 93ƩºNά j`2 u=`aTK>#8 ԅ5RjCAsHoShNrT*PQa /,*dT+kbJ@\wLMJEyw_8/ӥ`4,B _3*dʆI?r-wOlgLG텿2PK3p=}\&ӪN`!nZJZ} //h hfuZE^ivR[(w ZY^TL@|TQKe.I`UZI /:y" [m䎉*c5S:r;;K[rƋ1z;R05)-ri8w KHT2=p4gI#BnC *_U& 3q/XW rA&dԋZv ;)e*"xUp,Dx >\9g yR,7Uv23gIP )ޱpF畒YvHR@8IL9xj1B8=Nx'_G>׬I Dbg4X@?r)^m]ѿj(V=.XX T*["q`ՖgȴE¤f{BO."ڝ2ή\֮ [ ^ $`ul|! YX^_OKBx K^?0_d0ϼMj# zDJM^;ShFbFujD7olz=v*dyp^DjjW]'eVuׂX]8i$TrgOۧ&]UGB@)}qfdYR 4斀}6h'Dzajv&PPf\"(r[7`yvuZ3QHw%k|ByBHWe;LW PSa 0 T@EW{ ɂu Ӡ{Ѣ5L+6y%(U 0PA ah,B-R ` 'se9:hc4ZP1Rkkk$SR RV<'.~3mzAV 8,65ha0k'\04 3 WsXRdƞer4S35Pe!+R(p16#3.C50u` (0',J%OcʝzPb|*+A5c_=/ MLv&j CU #D2]r*PV.%ЄS{T=gu*M @ mPTI|Em>6VR(fs>gx52W/t &`{q@wYBbZedU&@3^B2'9GO/-PUP1Q2&&dZ4 cυQ[0B5Вhݫ Iz]F 4'|2jF)&xLuLdupddd {La>fJ 4'[+τC)Ek%Ň8}XFxq@$H[=ZJ:&5̖3?Ν-0x톱tNM$/$'|](ƀZ 6e,P"m@@y9pwLY( B] - gN&UO?mB,AU/u8Poy 4YVfyϽOX?>)*yl CHNZNj`Bc|rdD d &IjC4I#}Uԩ*W&>a/ax`Eg'Ctog q|, DBKG:հ-Mt@ef!xU {OpzCUTX\(dyQ '42NP P!.=N]tO+'*u2wU.lyucէ0Lٛ0_Kh5A2'b+]+ IHPnhO*DmlT,Ym.ˮ0)ߖJǔ=%&3Ool^Soc}w=q_dnx*@-`Bb-a-)w,@Z[7J0HTw'xL { GZkfhSIYShWG}&IS89M?V١jpl-_'&rc7Q<sȴ{{']rƍ]h@m` s'J{-?^[S#&U1A#348!0㷹0㧋)]OUۡϤ_Zqrp*.z=կ́g^@nh{?!m hWA .d6!2tX"E1fMXI)UdK1eΤYM#OAQI.eSQNUYVWaŎ%[֬Rif=[qΥ[Zy}ڵI_& Wa/fcLOe̙5oK3QΡE&]ϩfk؍UmܹuOM{o[5qɕ/?m8sѥO<5uٵoj3wŏ3yկ7h2{Gw?y}qG9//w4@TpAtA#pB { B 3T4CpK4DF E[t1&_qFQFsџw{rH"/H$H%tR<&rJ颤J,2K.mDwsL$L4G33M6یlM7s08NsO>ҳO@05PDtQFiRQH#UQI+!JLM9 8@-USIR3tXcuVZkV\suW^{W`vXb5XWduYhvZj-VY\ehe?EuUSvpr=w(OG]ݐQ[Vߔ7%m^=_~8 EiCآ^ avb˜|8>D֩B%YW&d:Nfۢ٠k.+g%NgYf.ګxRObi:dQW髧kSk[kN)>km S4gfԾ &ซĖ7 : f|'qg-r)VHVG@[Tܱ<6]:0R%"F -lBTgR%t"#'rhaQ(* T=hgOgT,^{Yݠ8H h&dN+^'i8$F f8uԇ+p 0Aph pY3-drWB@)ml0f;Vq 6\.P# -*2„e Т?dhB +Xwԡ uxcQ } d4@G1f2J1! BZbx>)#+ `CDFakjCa{p* `",:bDzÇB <"+Z#zaq ԓ04Uc&äBvR  Ɂ4wX Qd61j2T(:_sނca` 7Vh ּۤC!FbK!/ѻڄ TWu(~^d bɅ51Rm&ig_ocyNGYj}`Ǔ]]{<<^L(N+@ `?=J*Pm*Fmh>@]+G q\# WS@ ˩79HquB-4Mexcv .^5)/X'tHBԩr$[ك8``LEӫȝFic i.<9J T >p^Vh@We6|n" n:[+[6ڣO99fi/{{:TsXy't]A_g6mwM l[Ͳlǟm{> m|y/E "C+GPyv7 О+Mlo þ+iR)mT ?_1OE:үìU I/&A _?;rqjT@X?NE8 @ @@@@@N ?@`@&!8LhJ!B",B#C?C?`[2lf@QhQ BGDI6IDGBJMkCۘCC- @DUrD4 |8>MD]!lD!sE E=|VCVTAtƮ4؉>\EoTM|A? 0F-tgF?DGg6Kl$nFTGq$0G@GH{fdF|Fh\CwkD؉Mx^GL€C E&RjTHxH>,% rH-ZHMH,<Z(8IHTA`HwIIi,@ێ|T|XAȟʐl J0@J ,AJAHX@F0F؉pJJsKYܼ JKTP%o,ME L23M'<@@ 5b(QCyr|HCxQK #DME,>HU,؄M qhL?$ܾ( |*}D-R,L\B|Q` XPhRbF%ä@LxN F6MTNT\S>Q-jd-,%lR>)JN|JMIU_U`UMpFhR B C͎scDr HCpj,[F Bb]AxEs=Wt=WEXWv4DL5B LVXVhVЩ !UFpBIJ0H"Jz=12UǜAܬ R>@ $BMR!tL8=~tXQe(`ƜLo$x֧i냎=! W|JEЋYP-^pY9ZZגeUәЩXIV ?pQH4€ ;Q\CdM Em=-XB-\@kɆ̤sԫPR$Tlì5\= {= |eF5 5YUTY>[|JMX܉GVSeĽqrE{H (?Tد`ٖ5C4#,^<^|8։EF4P=Ս{>&P &zƦݧ*Pԁt_]XK>C58mE#͕M;E`v8kF_t܄= n .`h&9Pq`Ss@6aQYOS$a `5`*b|pJ|&Ku#\`)^*b 0YUgl2bÇGI5MYPXԜ= @ۤ` b/8VJJNPQCub_C}7>+I_:ٔ][k>;lGC`MlQD%waƎixcoUVT[# c=qvWYx}D26պf*)iYj\pҀۆ ݫXV6 ZYP؄c@w MTQꨎ(Ͻ!$B)XSB\ޫ[c0ʀNf[N%|HihxU#-l6F(͡fjl^wiI%.| p8.$p٭%GqWM?? N**'KDY,|2o"/A7OlDM-(N7p^1r:v!2/7r;G`-\oVt^ ] ՈjWAs@R?to^t ?pufrTͭR͆LߍVXoZL^ʴ2gst&>nv8%w;vM‡Aw' f\ͧe\Ww5Bun<ǎQ/D/,jVx5ߎ6<-lvwθn%j'co^ES0ftK1no.dOU"^iGpl W ?o%9}JCC睋lU zgGD)ÇϮ9}OR ux\M^uy>_Yx班hCtYW7w0F|ƀ|Sox|PuXc|ӱ|:g OؗLtB?Xi{joqZqo_Y}=׌_gIRZ8/%~?;pWT!tQOSwOqЂm ,h4x!Ĉ'Rh"ƌnHǐ"G,L{$l%̘2gҡɜ:w&РB-jhH<2m$4J+nC ӬZR+װb,ڴjײm5c(޼z&/sKֽE)X'Si1̚7L3hG mZgW|5زSO-5ʊ#"]{o8KCd9=^ڣsڷCn;a'hܯ׳O^}޺k~?d}' 6埂 :SpvZhjDJha#x-X1 (##X#c78dt;yt?vH:OJ雒K%Y]na%Y&^g\\9g]UWtf{wTz>z(9%x Zz)j)z):*z*j*:+z+ZWDdmbEk&챭 l>+XfF{TFnkcI(+;/:/ n =4@}4G4MQK]!S[}5Uc5כLw:6e}6iw N!6q=m6vvwy}oo}E'(ipቿظ-/뇸CJq˧(np硯No驇 oCIxH6z.>r%*<|K;[?oF}lݓ=k;I!U'ڪ臛u)|j>!czrH)##@ oX 8X6HQaw+B `-@%|BF ‹(C 98|h 2 l"mP$8tCV!Lh* ~ᲣnTx.Vn|!r`)@QdX(A @2`x9V@()V!X&7$ӠH J}_6P8t8VQ4J3ZT@&/g.4O]:~#''|`$`pr?2L"D3^3ć;0R(#IJ4@N " <"a" $"gpT"lCȢbQ/FRl@ E|@C86DkUS$*vZM->"N8:GydXUc]M7`H|_9UPy1~'BPKw|cDI Dh+)v*X ꉪK"9$J0=U 19>ɵ6zn}kvӇB&-p5,O9ʑ !>2^FD q!e j_P?UdMKܩvPn=S@9ȁ/1~ӝGšGF8Z 1p jL[@AB}t [bԂ=nSD>eH _ ]AP.&-C-pcl -(`ЂnMPfc1Ύ\@]`-Ds30O Վ2Ekgo>2"ۭsP!>n ;VƱ9h!Q~*Ð 3nqI~ҜX3!`ED z`[G ~.eը_ݙ-7I{</&)l>+:A 2!ԀH 2B)l@iDB<u! ͚֝]Bܚ?$lS8))<@u" X1R<$PAƹQA|yyD]yCM 48@qXL>b5 0 >|dGq @`@B-D5aUVQW4 IByB}A{QtxqYtAS \ }7]ˍL͸6 !7M5C9yc:6A>PVUVN\ (@9LXS>I?;p8| @0^K\  : CV;C?xGvI9TA78@LbNȤ- e6=$j>CkX (0)YaLiiI?܃ =8<8@"$gmfIx*ob '>Ԁa4@ fy؀l'0 t.E$ Hzfuu*y}VFw =A g A><h$ztmA%P,̄ ,(h"dd' z\H<\[:$Xԙ?xLiP@E̋NF0 R) y~C _j*%(|]dVaR~= h皖<\A ¢Ij4@g]7m^4(ù=Lɠ >@ * @%7x院f&C-0#:f@@BD*6>+FkjU*܃- >C=0@ @讲g@4Vm 8V1ia>_+%:I z =؁yAՇ@ @DB*h 3|@t,֬ެn\Vv HJ*Ď@vk:*',Di";V"8@nJajI~F*"I'6 hsÜ\g C9t_zmVB,HH*- qΦH=8j-Bt&Hm ].D'T̖zI?Cƺ@ |*>XG:xm).EUD"n(.K=<r 'I':-୆E<(G9z ˫I?,g "G,mvm DHP0ETP@ B4B!D'"H 㒰4@6Īpێ@ s.@;[ aVhI:p kq=1  ri!kSMgb|v0Iq?r#I>A))r<0<++2,ۂ ) 0+qD@x@z聝1r''I?>lxTsd4A`|388`A6W3:W4AB=N//H^mE B@z&#sN2I?7Ȃ l4S3:3`AgN4EWtEC93:gAC{AB*<[<H3ECP3R(C=8C,AP55c *R'ut5D5 .@>I/ddpA4CZJ?tq 4?C*t(OPSsAs_s 4CTSuV>p–~lЫ @BXJBsZ{,q>h,/&Tud5禀 l&/+>t5j >ABZ*TDh(c(@$+\ytrOi-B.,hP@6v+ <5|5A!{3$wc{"t`XJ'X^O:P7D7h#hLyK3/v!w5mnA7pA!.N;x?I3%D7 D$EHCp&ȇv>+/{+~S31ڷ8|w,x,BHdzD7<D8{.oT?= ,AvP~(x+=53cG7PTԩ' C}W=LC~';3>:Xrk׮ 1ӥ_Pb /! gj5A|Z?3iִygN;y645ziR@ pC tDՙ48Ќ8 V кn\sk5o^{^v6|xg~ͻU`BTy;.r̨1ʼn_@yV(Sl^>~1׶m0ܷy^Zm*o}Q`f .AV

        nr| c>x0ێ8u,ÝۑHg}YV"oU4)C?ӲbL, 8L]rar٧"ݤG|NdHr 2  g,(&|t9q JLg`y,\ 0 R#´.8CZ9%XgM}_I*Rct«@&bd(&GVқ,`ןGBŕYB)TU\մ1R[yrI܄g&)@d@0ѧUŚIۇ!ux:pU.MQ1}]t9](Ë,8!Ɨ)C_UT%Bg]içXO5 2@SF4dݬz: ^O}y9)xyUƗ"#U%\`}[ت妼7К&wc:PQQs vvྼgb|)Iȿ|7 Mp\ѧ5\z75?w c XK} lWc}v3M2yqw"pU `5摤#dB'_X@0O<CJm`fc"pHB"+CP.GH'B?@l;dp W&(\ AtPa  U7qJ|!\H?cw \ Ѡ:XM4 x)R\V,W"}ςv!l=v8*ГA*PD 2r9$"-Xv .bd!p*XUi Wjoy!96.p<=0A*[DI%-)epڮ3n`a ' @%VUιgS)c >t^y>e WŘи cxC0t?U:98;4CJ-ID%js71SG nF1^FzO @c O͡T7iOӰ&I 0(ڛ&&M$nt.`+ՐBouti4R8ϣkbqJPU7b1`;VÞELaxǚZUtPr p%NjۺLqW| i)e.,Z|dך% 0(t3Nt(q#/ZӹNU1 P(%H!R \UP^io­mUdZP0$1!)@B Qhaf¶/D 2 vlAGP{@N?N1Z*ټLfQZ/QSͪN.aWz̲>-q[˺6, _&+c7ː' mS3UvO>.p%mu_6,9(֓O]|[<~|ΉzY`yOw!7[ _9q!I^r)WYr;|:.i^s9a>SAz.`ty+~ԩ䨗Y׺^vGqgWuWL{^ywW} _$񉿚xy_z9yX6 , I .'B4( f@  Q, !bb+H  ",J!x,@,af ;)`a> Ɉar@ Nl&>fFrE,`7* R)g7l,@ 6Q00E ,7 \3P @ F@ a2 x& b2f03, >*Ѐ[6@:9];A`d@&-l@ 6 ՠ0F@BŁ2%SFW!rS&K9q<1F Eҳ[4E[aRGMepX&aP&>@"Oa (Flf@QSMY f`;c-Et7aQE 6Ej " t)@(Q?GcX$"/#>e@&@V}n& '.uOqFs (&,Q@E`U+M3G(TNT5[A a.. Ǖ%3EU+;UVdP_TPDt,ZNv&!"[b5@ aT&PtXKYe"=O^e5J =}q JZU&Z`eTxU@ZT Vٰ eB 5b/$r -A@Ue6OZ\ u Q&v<3dAQKu& Eebj1F& kA/wq)QM`0[ &Rhcb@7v,JA+5Ue{6;c9ʄ0)TZ@:o6ejnw5ɷX4N1(QPjSd +AS&d--A.f"gBP@  X [g"V+TQ EX gkmgr/  ?! r0Od`h u"s@Aא [|eMl@ €QA `*@tkHAeBL+ O**X& S+dwՓ`t4-.TE @B FiX&x9G0YTO@ A Reb|XeԀ}Î}L-vzFSfki:grSMBLq|&.u[`T978;:.ȵrU|tB0N^ nWjZ@ &g*-zؚe@p Y&J&לͲueɗ&Ѐ9Si\SeB`AW3AٙL3+!y$'PLr_g@V& p\i@[<Q!F| z&f']'ZdmGcOzҒYYo C Z 2WF GڨT4uTyՙ}Qb*> :~?@E!rq-@_+-r%@'z&NZ,`&3 9 Zy(ճNa/AT T(:3q⢥ʤ{B&LvP[`dM@\[GHv`m41|TEd7P RsM@AWP AEhdɴݡ ES1UBtjW :]TDzB[9idP;5@ k4(S'MT&4 i"0 %ȩej;W=+vTa&x|B| 6-@ Z KiN.5 5eN;-0+ %d xz\r]òY PYg7e*[dѱPnVE9v==0=}nG?/G}غ"_c}Rd'X\S='E'RI];M}6ҵx])ǰ;(nQp;u1!o4={==A zNurkLsz[}y`al4@ҵ7ӅߥCP^1^&'/^>7߽?^5F俣O^=V^c^gkoR{^臞^闞^꧞^뷞wr!^מ^^_ #_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__La <0… :|1ĉ+Z;z2ȑ$?f<2ʕ,[| 3̙4kڼ3Ē<{QСD=4ҥL 5*TTZ5֭\> 6Hd˚=6ڵGź}6ܹtڽ^x 8`]r47;~ jPA毥<#{ :苙WiQD*JmTt7yċH6Jj`aA](%TqʔϬ(>b|'8ۻџ2!LIgT)Mç~*W*r]v)%N4nezgSz! ,   ") !"!%"*##$&&*&(,&*3**,-.20./-05-2:33445@5,96937=7&7148?:#:2:+:.:2:6;;<;8<6=5=9=>B?7?%@9=AFA>B>CCDD@D-F-GGIIGGG5EIMJ6KKMK3K,LCNNQNPVQOR,SSUS4VVYYWVXLY;ZT[A\\]]7^^a`^^b]bEbCccdc`c2c4d4d:d[ @+SC$Jj j,ZJ@cAZq?u`yZ0@6nx) ĨRu9[{+j&i5pc?hAKFfl@b `[`B)z&-\p.Wlp6f̖L2Iq|y4~T,䳍@5aу5DBq,cULEMu *Y˶ݨw Ek *UL9(FQmJ|0@ziK!R u]f2R5 =(:c=J *wLYPhLλlpZ vj g\@(rWaLߤmM~@7tS) H?H VU{>dө,^RKrӶ'չ')Rʔ#OSj [ưI=NȂlWD+T"4@S"\`[f@DN!@h @8NRnL<KzH;>P h@Ԁ,pWz5;!N"%dϠ֌^Y cX(yR0)@< L#PɚvX `\NH`B &Ƃ/ CȆ=Z6Y/IjBY>p*Y*. x1#QL2UԍJ> {`B?1j ><y `G{JM^pT^+`u S>c _Agg9N`Tg 1?4ڣA; gb7?(Tˣ^G0.fxdOzWT O M!I,:LU 7rHQd @D5 xUL.ll͆U51ଢ଼OT%F%:eRs-Ω^/֠PW܏Tm^sD˽ט?(*HWB@AFNUPn\ڷՙ1i־@X+S.jigV3^WOŅ-GypFd:y}lGX,$x/R'rM ƅCz~a7e//՟hO]m"P,|[jjbfuhdD3Uolz;'+|v*Dy| 0DjjrWZ'dnڗeHv4LgJ)x}HBUgfYED'}ve dXb ɒQz1nN7.{q6 Hk%PE\g"(qWY7]y|uZPuEhe|3wT{TfWhLtW `Rca @ T@mVa{,PRA YP-j ZBCwWB@R|0p; h7U""۰ p2V&N #`օR@kQfkiRR R`Vk׀Kd/pqpÂ<_ӈh0ZȇgcEAhq$GBqTr7dr'cRP 9H4OT(ݰ-RNg2? +& I:J+^sc*jY)f`AXA0B\&t^b+e'BB-I^xCF4+"0TI~^b %@-= PNr-l!Mw&5tWT)sBY`$Z^7OТJ6PID#0d]"c PN@o?9O -9F-4?p<)P %Z2N c r 5 q)]0-*ig+Z p1Jv`R,t4 iR0Ԑ>)^๝R\ (3Iz5%@Rc֝ic Fc(zEAO3#ݘ}N剡8Bhu`(0jI-i49S40ZBo6UJ6lBZfQf `IH P /^7o2VZ!QY:_ELУ[z 2lhڦѠn:tZvzxz|ڧ~:Zzڨ:Zzک:Zz,ڪ:ᎲAګګ:ZzjڬZzؚJڭʭZz蚮AڮZz:گj;[ +۰;{۱";$˫![(* .0['4[6-{u<۳:(& Yp\JlP> 'hphHPH-0?GZ4I5?"j+TIru;`B859 L"QacP868Ƿm[\u<2{ڙc24Pʴ_+9b۸+D9_y h h0=x<llIY i &jR m-TW hbylj*PՄj l<T < 87<@P N:Y%8ie S/|(9g;^u73,C^k lPIApY 'p0=8B[wH3T՚"?L@d?4?cOV/vS;xr2;+Q6D?T.{j'G&B?gH~+R>YCPu40rQ'V4)S`A[b:`?eˆ(*:5Z#)ix&[HyZhr{d@Bd Y0PI@@ZddU $>^:iݛ2 G/- UPP2&$DZ4i[\(ǣ;+BT.ϊkfHy]F 4'|2nG)"XLϬttjV'dXv sas {Gb`>fJ 4'[+̈́=) %k%}6|SzExQ@xq_YJp:חl?c_Cgܴ -G#K$/2h '=\`Z5<؇Um>u;ypKD &y x] %c`{&&xyS2WmC ˘=]NYP膁̝͝I8?>GFAy #HV^k<=j԰`"cxGKDǠBM &)jAN3GL>ܸT5 NG6UԄ҄ab@'_smCy9Vog l\*示D=KG;հ-KT@\,7m'c*=b yOPzCT]ҟ_]ik̅Nh` P!.<{hGe'(ЂW7^\qPcըPԛ0By=bHT(B@H-Fh(w!/*$jk,޲E{.ˮ0)@(HG6%/h̍UOOl^dSo3|6u xrBhx*@-@Bb-[-)r,@,nuHd%xDI1 ?Zߖk©(`L8-1[{wUgrt6WrM;Ŧy )RxK-5K9. 3ykC?ϡ yuQ;1U٢ߩT};ҫZx~4{|Wc卪iQ3H\+_?A .dСmBd)Ŋ fԘ [ 9*I)UdK1eΤYM9IOA% TQI.eSQNZ5iQYbWaŎ%[٥[ծՊ[qΥ[׮Sy{d_&\8^y /fcȑ&Ue̙5oܷ碝E&]iUEkرSmܹuZ6o'ɕ/g8ѥO.ٵo:ŏ'?կg|ϗ2}綟x?!@TpAtA#pB +I@ 3p1 mCC|CD4D"[tEVqFkLIFsqGpG Q1H"pH#Tr>$trJ*J,J-R6rL2c L4$L5tS26ߔsNN<3O>$kO?PD4QFiQG#t%H'R*2:N9HT QQ-5+LC4mbuVZkV\suW^{W`vXb5XdeeѢ|uYhvZjezm5UVO \-M]>%wEfn[s^e_{#u,`u%44%^,Vzo,އs+,]cy' )fX_vp,{Xw砅*诈fzcJFrjN9ߥjBZO;*φko4[m҆-+TSU6Pb6n]*|PҺ)ȡhe# `1)GtS,!w}rmِv)Hh,=YZuKqb-bȡ G  24Zwmu?]Z}Z)r!)@-G$ 5؍ 'nz@d>f%};I)F$ 0T> 4 Ԛ x!, Xa!ׂ5PKy Փ0DIYc'BxS 4y\ RdB7Aj 2X4G2xR`J*ۥúrCSh6,6a$X @E҂4|r{xBGHYB)/LV!L]zЂ䠩Hwjr ejЃ T(Br@IM$IdPo1gBqK[ 2mAg0_d[R/ɐmGRPBJU^ RB3 xR =hB{Նui}EIcJGoQpj#D#-(GS0#Gؐ\bNEuQy|X _Nbw?=PQXP?:Jtxz0}%@leS _50=@CHA[%dX 0HdC#&<W a B{*pzka:M6j%rhn@ ݈L4qm4DC[=.D9658z 2BW Ȉ=x"⺨ҜXeM|D.`csq']e!7ra-sW7+ryJ1`!P@~(L9Q!}@| r5TF` *=o!pX߀@C-hE1 CA[ h0 VbdgM0!JK{֑#=T( @s,h.vnDXW[tH@H؀  4S(A.m7U\y͠Ow8l%'R.3gؿ ^F7cߝ,W_POueǁ w8b!/K)#H=Rgby7%;CП^)'P;zM>}%La}6?^YPS||L~Պ:AxR@ZqL$,~_snO} 8 (&HD8 3TE8 @ @ @@@@O*@& 0(X\AԪZ~|FQB!B",B#=C?| Cf8QhQBGDID6IDG BJMkې%-CUd@\r+A |>MD]E!l DvEE E<|UVCAtF@>\EoLM|B 0A-tgPE`ytƸ23Fȇo$|DQGr$s t܎QZ`Ffwh\EwkERx^HDBC\̎ERjTHVGCS+G ďI" CTL@dtGlȉȆ\4a4Ȝ XBHʐl(8JHJ(,lHi|XJtqʟ q K0p=YZA!BTtIfdWˬ|KMЄFF_P;at;`A6%0͇͸\L)8A&4P,]Q/+,XLR>%&H J MIU]U^ MpFhP @E AqcGTLp HƸj,YmRaB`UBBxEqWrWE8Wt4D ,8ֽH–dK !UFpBI ʽ0]JwEQ!%4,RG\SBK TWN@=VDXQexX(RhǴo$XVgۋȆ=!֠\KE؋YN%\YԀ)؇[(zTl"Hмtx­$T\MC:Um[fY 4=Jf,lӷō+=BKK͇ZJ6Z=[ڼ؆ODD= X= -IϠ]QT%AxFXF0]@][XAh4/] 3P0X4B%IU5E^P^x8hg,_}(TK%q<_[T74Z/ XU1Xߪߣ8 `KGskF_D݄=Dy`38Xq_>6I]4fQYM#`lawy ng ^ܣ ƫauG"$H}e,N XU$g42mb'·GքmPEl2 U ܒ `c?l[h"VP Ec$C(و bU4Ϥ_)^]# L?Є(mQ*Md egTAvX`HֈX|KMdtq]FaՄ=dBR5{쨣#E.[ƒUP|剗]ѫ= _&XfU͸aaMyG7FjyxΎe{Y>I KcTځₖ.Vw\d)ReSWhIܽGh~܄ξlp3^&Č% UT-i%cxiM aI(P-IjЀ=DԜXeHf9.F=K؃͊tTS_Cf^ Q+EC`B^\]id[%ij8%캝G "DnNņ&3~U6x|8jU llEYMCG>nVWc)}.Nn&6iYB\ںmн+j+&h߶|ϫ_ M؄;~G@VWФYfԢ6j+ Pr+3M*|Olw4;VᄡpHfPn o@R|pEBj``S#p2̇ShFo`phQBrN* ڄLB핉~loxi@:CB}Yp&*cfB`/ oPOx'Xvy++퇏xGDyn.|%62% wt:^eRH?Χ?GhsYvŔ7{Gp 4WZeXG]{-,|e?Y|Dn -vo?FcIʎ@}Ez/Yl_ ܃eq9Xpg|I:ZODuLM=OgK-|  ,pv~ӀA,h „ 2l0DN{$Qh"ƌ7R1Ð"G,ir6Wl%̘/MTpKUz djٺw‡=6%o@Cn]6uɷmz;xo<ܓG=ӯoTzU ~y߀ *h :l%X[Z jhaVV!򗡈%ءh""b_+xs/cu3Ҹ< Cٛ?MfVQg1)%A%V%_Wv9[[y\T h错okDSws U>'HI *(:(J:)Zz)j)zi:'z**r*`.im:k!kj ZKm*ldV>kVY6+m8zl;.^K.骻ۮ.{/ѻVoh 0,0 K<1&\1c q{+2%+_&2(212k2|34Ê3=èA "C}4E#4)4Q4*Yk5]{i8;s5e}6h͓˭- wM -b{+Xgmm_߃ _;?[^MȚ{~]:Ǣ]?:Ī\v}=;_վ :?j+xq"ZMDpվIO{b^hPCJAQ 9@ ` Xʇ!S +Qo% x DJPAQ(CG+r ;G #D,@ [kvEx(J+,j "i qvaA2A!D @a,h/45hh=PĢBzr⚮$Go!17|U6P3`kMQQD<EW,<U> bT_~+?āo0H<8<0S(#%%)M4>M.р|'U(C}$J+o*Ӂ|lE=J0]qDt. [@YbҊ05SVnGP]}xV,_U-~,BWiKxxUt#BYI+0 @f)|uU iUjj[!CL$0@! HO1a?.Bd#-P#) ģMEa> *$!c  VZ?V@$Gr[3r| tJV@9ȁ-!|U CU; & YH1HhZ@B*)*Ε a H[آGX (h4ћQ ʘH0W9*D遊GUly"B =p?D,H9'.H1L| Ac}s ɘ<4>)_ $Ա?xw&⡵#ރxǝ*@9>ՠG5aA[G04@1 ѭ*E!twtY(@ m*@ AI*A,r*ZA2Ģʠ m<&I 0Ӛh2&RԴ]`h5neN f?;Ӯ=lh4%x{ɓ3 芋=?] <8`1: u!dA}@tHO~D@xl(|!eWsZcYb7iq6l"(F/,+EB`Ifz -@:}&ǘR|@U>@av„@V;^8"+V [`,=زER&_Е`V!̋j._?僼C(x] A,K dA 2Sb}7uTvDB5ֽ1X)*iH5DV '*>u" 6aB1A]؂@yu"2-a4@1=@@(iޙ(\M^tS13ќI<3ƑShTI52N2dX=<H=cc?>G?bA@GA&_ Cce΅Ep@EDOEf$o`GF>QG$v4IHRIdiKJ2UKƤhMBrJOLVMdQNnP&Q P/ģ,%{S.T>"\8Y>@ h%r4C$i>iI]&(.D'Y@9gHhI? @>8<8@" gk})y(zLnvơI?C Ԁ`4@ (rr%@̝v؀t`Te\'0 @r"E$ LdzGAt*M|~n=hA g AE>fDIlaA^ޏ̃} :@(Q0f~ @yN@ e+A(`lvD(( 1 >B7d蘼f^bP @ޭ\@iPP)a @ * @&7djɤ֍-0!jf@D*&.+6k~TaX). ~>C>0@ k2g@]`ґॾ++^>YbAjPk؃ h gm + @$+z I>Ȁg>lTBk+|@t,,n\I.YfË 4:ꄍf+:: ~Bl49h@١6&"8lJJI?`mn)}gӪg9G>B?C>*$FIf˨2ڢ@ jkD?$'cdžl!Z@kAxm윭dgԀź@ lźj>\nImJ.ꭞi'B&,. n><~r <N@ 6 t(7n9A tND/P6 > ڲgr>A:n,j݀,&D1P(L$.P<^H:Ao* $I,mfm g66D5@t"D/fr[I?Lh;, - 0֭wFpsF_@wdmNx\ Io kq> 2!=XAޱ"+r |n䰀B(^*K/1dgA2*)32,Dz,2.82.l%'$(1Mۜ*> x|6cX` 8399p3636[sA0C?{2"$ 0{Itr3>x+T5:_D~E_4Fcs:3@ C;̳{TmCAP43C=8,A 5Q5_ R/t 5L5-@>I/CdL@4XVpIt?C,t%APuQ_3s/`s 5K5U[VB>x/lCl$8P:*,M2+.('#d?6Ȃ.*uT^wLA;l`sn |JI>BY*Cd(b(@k}/s|iHj ,.w'Am< nso@TP*- 3,c7wt"x`nB|Bqd&#xtD+/8/6csqov`6`w!.BO3=$G3%E7 DYD6=w;B..*5?}7, \GC좓2Zak<+x‰ x!A^uUcso;Qς,4D?(&Ļ{2"Xfç)h6o%ۙcp?C,*4T6Է wowǓ{=`fKA"2*@8\ T> D7ؼ{7t0xk_=B'v:OkOuQ9/B,]`I>@3|**06)6"$18wצ@/;(>4B#}dkU , 2tď/^^SHFC wIYkukٳVAJYpain RyTe>%ȀR,Yө׌Mnv~I{ʗĴTHK,KR^]0y1@Eo,纙\Bd8'Qx ݢ-z0&d1;\~gzqŕEN3ϲR0zC#ZEWdYG}L`i0N0)H:(Ũ0Hџ@|6SXZ@s*% =-]4qFY@BU* 0"("H1: #^rEiهXUTZ[A5cl Pc`r @cbd0%@m}ЖvFZ֟GtAl ɔ'xS:%F3TSŕs|S%~u1rI@Zx@ӥVÕ79j5--v0}E\r(( ,8!c^x;iY'%/\?&.H!PXP¦荽|:< WNeV6v+CP$G&ȵ:?`j1d@0y 7& H[XGarUa 3!o|zG#u \ Ѡ: `= ؗ!ZFcVW1bA3P=Hd "W 8 d9D(=lQ.`Jp&nsSgPUbKY!*B^@*oT'_4)~&Θ0 1+Ȏ:+`O$sTF(14I49^;MiVc`Uĥt’u1AƽHR  `†ӡS|gjT&'wRلKC>8/AhI\N_&@HX(B$ Tdy SgsMOibҀPhX_bƵD`Pf>T Q5Tʚ>N#Q!}i`aP@1ޘ夁U\R¢lG;AK9(`,CQ0nJYYvG>4/cm>2e =_T6-]p ܠtKXc@Pr 9c)^5E+pÒUӕKw0 78*,I؂`?@j_'1pP"0(6Yb#1= [0y(\+\s'Ic&?yA8α\e:Y/Le-(ezivfylvie:ya;v6ρ. 6; у>t gZthBUtlibLt騂=u%MBլqe_Sֵu[3׽- _K3&,c2~+mkW/m>ylBn6)7N7aخul ^p Wp?)^q_wr2q!I^ro<%6YrF. sX9s<6Љ^ ]FWҩ3Qu,u_]TG9ֹia>v]heG^+q7^wCw[wg{ _zWLx'<#?y߽<3yϟC?z[WSz=c?{۷}s{ >?|gW>?_Z_}_Cj~>ٟx~w-pP ppO# M"%AZ`+/##$LG ɪNgOrt, )& /:0aA (L ?G  ie"B<D c@Za B@ !T(`̄`betE>` a"sLAl`z 6DA vC`a/(%°0q/ @ آĀ %vq<1 @D050%%%4Y@Dz.`rP@+ha1B4@'e@  Pr+ ! bpb H   W,L!z*~@0a9(`a>Ɗar@ (,%>DrD,4d)i+g2%bpZ%@+;".ݒ5A [" p3 ``R rT  -F a֐, >`)A78vSCS8A`d%*k``P j//9a4Q ߍF&4,@:Y4DYa6J?p2,R%a %>@bLG %yFkR=0DJ?d 0 @8-LHK!M NMAd% a)@Ki2ps(J09>$,C;Q%SS.% -\Lg 5UQCY %r%,N}D*J;S4B)DpD+2Y/'WMY`ɵHM&L@MTbS-8&uKQQZHQMմL]Rsu:%-YtLIS LZ %ZbTLsRW4 Za0QB ~5<A,Sq8 1aRAl6Q"-9N!57'%vhj8[ h>nJBSB D MZ)M!`6  6+L*ĕR;5RS8a vȐ.xi"=5xd%V1st+yrYK@r.%f{S.QBW+%D6ok yv 7 hWXS"*6R' |D7 z1d?t#k*W bkq|S8 Dc [g2 WH#6RF $Ԁ@DPQ% PRQ" P7Q7NJrq-ʔ-&D @B F ;%z7T6EPwX- A &TQy5btf{S.I-~ywyVC%diUb A7SFJ%t5WBRK98]u-5%&}Q?pK2skӗgW@ k%p;~,Xx,@w*zQ1Y{)%3ubW%|֗5yd0% ƙJ3ɎS;RSs"uY%l\2kjL.󒛓 FZ'=PaYR2@ PҦO-A/4-$YV'up 0uAC Y 6iWc.0hX3ssғvSQ81p)>@Z{|3Ͱ=1Z>4`!bH2 }'ְۓSBRZV/ТY"+s݂vU]B+3HKqbzz70 &J`>1P CN!TPa/4bCs>sOuIGDڴ'S 4@OC?`o@vb=xsBQBY%`[[?@P D:Rteh:vo.H;*Y3]gS.R&^{4 !bXQ٠5*{xJZRX -YSwd7c2AϓNP G'ݝ/QS;?C^GR^W[_c^gkos^w{^臞^闞k$!^뷞^Ǟ^מ^K^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟϿןEb__" <0… :|1ĉ+Z1ƍ;z8Пȑ$K<2ʕ&A| 3̙4kڼ3Ν<{rd 4С"}=4ҥL:}jˑSZJ֭\z 6lӢ0mHlۦ 7ܹtEU%J(Sџ{d ڶ|E1mNxdZ90[-6MuQ9L2e:Z\ۛ!9ċLb3eZj)N\VmjT?cGc]Ym! ,   ") !"!%"*##$&&*&(,&*3**,-.20./-05-2:3345,46A96937=7&7148?:#:2:+:.:2:6;;<;8<6=5=9=>B?7?%@9=AF|A=B>CCDD?D-F-GGIIGGG5EIMJ6KKMK3K,LCNNQNPVQOR,SSUS4VVYYWVXLY;[T[A\\]]7^^a`^^b]bEbCccdc`c2c4d4d:duuu+vvyyvwv2uy}zz|zwF{|{}~}~8~3݂8UR<҄bI<3C~[ *S#Jj,:J@cAZq?t`yZ0@6nx) ĨRu9[{+j&i5pc?gAKfl8b `[`B)z&-\p.Wlp6f̖L2Iq|y4~T,@4aу5DBq,c5 % t )Yˮۤk )5L9(FQMJ|08ziK!R uMf1A4 =(:C=Dc"wL|YPhLλkpZ vj g\@(rWaLߤmM~6tS) H?G VU{>dө,^rRKrӶ'չ' Rʐ#OSj `[ưI=NȂlWD+T"4?S"\`[f@DN!@gC @8NRnL<KyHp;>P h@Ԁ,p Wz5;!N"%dϠ^Y` [X(xR )@< L#PɚvX `\NGX" &Ƃ/ Cĸ=ZK6Y/IjB>p*Y . x!#QL2J> {`B?1j ><y `G{JM^\|NURtxg3"<ک #wT{4`t'Lg4P\yK&%6X`v,)BJUI)hE 4^n9)LhfɅ 0&.@)Ĩ\'l^aWwj"9?SA l߻t%&*3_S /zFeE'W( eRb\ mg C4$p}:W .;{Ɍ0qA0\jey11 >XQn\#7?+&.r?aץBJ+ΌN 8dmGB /l1H%פNn5l/"YuS#d#6-X*Ʀ,eW^\1Z%|e 1 tMBϼeן-BƩZa-[xG ps~n:im]Pkbw*;9PA Q?ciIŌlIn)A!!o7<_Uk !j .C 'gpgHPH9ê0?GZ4I5?"j+TIru`C859 ;2QQcP768ȷmK\t<2{ډc24P_;^b۸+D)_y g g0=x<дY[gb`Yp*Bypa {rI typy_Nb#9g@b#.s{;പ3aY]B 㺜^5Z#)ix&[IyZhrkd@Bc tY0PIB2ZcdU$>];yܛ2!G/- UPP2&$4Z$i[\(ǣ;+BT.ϊKdHy]F 4'M4mG)#XLIcVuAveE0&pzсg|]h(0hF2Hs"/eLУP+]2p:-PIJܷyaC7Ld:L~oUeYh}3?[M'0۲x=B[D2@O~ysE UP_3m\U(SLJÝg=`qTNK`GP.K]9Ɖ gh#xެ< ј,=U/r6-@y@pn(9{3_cdN^0dU륺,>& &1}D=Yz=`4̛mÍMUTԡ* Tԃ}҃ abP'_smCz֒og k<)礪D$4-ֲAIp/?NrWc }-P)m&bلPHSg`WC}&FgS}890Jѕi@l-]@"Bc{P=sbȳ+/fXhk8g .pRx҄>_J3ѕ&R)S06 {8)ZUC[_;JG^pp*) үLk{5?Uި5y˵3 ل8A .dПA !FToZ 'JG!E$YI)UdK1e:WM9uSLA%ZQI.eӄ>N*UYnWaV%[Xiծe[HΥ3n̍w߶u\aĉ/>:qUƑ%O\Ǚ}^gСUj&SiԩU>\ڵMֱeϦ]׶u۷Gܮ'^ܸॏ/gy䤟O^:蚯o{왿'_<ϯgߞyzϧ?|;p@ 4@TpAtpB  3pô.CC)DStD[tőXqFk|CsDw {rH"H$H%t9&rJߢJ,cН,r-sL$L433M6kM73 N<Â3O>$N?T=5P EtQFMRQH#Q R0HS MAOI4CJ'fUV[uUXcuVZkV\suW^{W`U7XdUvYfuY`A;GFM֪RTԎ8 IɍHrW])StT#7I_|[ݷ|%X1xca v/ӥ ތ5.^6-*ydN^dQ~c)xakcKep,ѣyުhW.謊^髐9~iIB-NycZlF;-wh|Z0_h~Tnl? :Epi¹)iN(,r)V9 )J R:r!yorIאu)ph,x= MtH KYrhayH "ł F}R0MyF,`^z!HH 4hx$rq^fL/*Ҡ%nP Hj#w<{!-!6<khb!{;0R Czٰ`E6wb"A1, kp6)![W A K@r*2#1P'#Y@p Ƞ0 $ 22*@lbT<@\ L_Wאё"#zkD7|X@s bB@*%i<˻J_ TFIHCDr̚(a3 iHc <x,8el)+ @J_ 9Mҁ ̝ڃ=i?>dCj$Ʃru:C 98;!!dte> =!%(>Q mHV"sTZߚR L23N ,wyN6t*!ִCթ,*·ÉcT8?:Ї[XOGVDbq[S(@Vk *o劻ɼTp5 WtOve>lcg1 4-k[QdMvE[+VB's)TF X_B&(ARA[xۜY/7!/7 !W*ZP]7dHF? #FA> @롖!c&|F0RD{AV@7wE4}>xs_b"d 6L4z\PeQ X| CXƎnL/B&$yC~tp_eZg;s:\>m50ȫ{m! ְJ@TFᏣv V1 :Nʖ<&"T6EEL.@tzJ#! GMcUܝT3j]&5 iݱCJJ@_}XP&Zۙ|hߒ5] =;7 ]Hݒ hS 4uٮM-4V^ GEu'  Cr (gbx/%Z|#_)Pxͻ$/ [ W=TL ?y/G=S8'>%o 4Y~xgНp?"ljHPBg~_.g r h$@ӒSA0 @ @ @ @ @?NX@ȿؿ (X\rA*X{kd |ЄEPAA B!B",B"̄E L,pPlA+BVRhA |8BA#,C36 7 8GhXB>=,E<ؽ DrODHE[ADAL,MdN|O|hA?D;ȍ\1OXHM3Bh ꝍSJ<&( yRFMӐ%5ٍ H o]|pHH5u 8ST1( ߧ{6!DHFvj\=DI`8( o_krC46P1DKS!5ߚ%_ n`Y|8WHl^^ Bb8ߺ8W-)RF NR|h,tZHXZMuK2C%#(Y3JO@8b'UD+`-9*"gtGWlpкRh'6~|OL8~F@>WGsi'=y v):boJ/|瑁 *^6JNؠAh!Q!b_x"zb#x,蜊3H/=VAb($$JY$XG69aKRyeOBIցXzI_)|[%im槥&Uun~tڹQxgq, z(*(:(J:)Zz)j)zr4(:*z*^F&l*ΪюJkfk ,`hJ,ȢխK5ڮ>{ѱF묆4z-z .嚻Þ.J;/ld./ |0 U ;02\l[ ā^1gW!<|2ߖ|Z-ʬ<3H\39y=|"? =A}44MsKK*U[}5Ykݨ72/5a=6d{ s: vz-hM wXfv_w] ߇GxƉ+^+ĎK~^H9Ök]柋u݆ڧټ:o:ɉcy μ<|K 2kd? >0og#M8##q|R i,C )I$}_ 7pUk; % #"!c9@ZpJ0A8BAFrO-?x9nrbF<Gade4p`D0*5Rq#F(F %tp"xA>}y^(H"@LFfE,fɋ%0U@>dL'"RYNTB)WR8XրMil 1'pt"Jp@ p,j7YVqDpH z-1]IҦyjDZ$&*0nEF]d vDJ?`N18%p L@egK  J v6=?W;ؖI7Scуgs-@*BdA QH=G#?$G.l)#0η)+v4 Px+vfs)[jbsY< :VN.BR5DZtxK~1Xdty/p> H:0pCNU50!D>f!y0eKۊz* >>,SN;}(Df.C $uO$>ƋY:Ё΁Ra@! # )lfrYq ?!хHA3MDHQjepm* 6Y% .PЁ\@G9Wu=0YQ= S5@MI| U"Џh@1SETD\l=#)M[H8E A4 !]E ÓV= @2h(C>AeCx}b1eב@1=@C(A8PHtXJG1х4RA3 G;lO7i4Ԙ<439;6b!huВv\=ֆ2 3v?J>@zA@B&$4CF=FgEcN=fo`G6BDd[I*D.cEAKF6LC֤MJLVNd^OHfHIVQJcO&^4eCPA/ܼ SRr!\8Y>@ Chep;WVWV!@`P @@%|D~9 ăR:C?r0 ;TA18Z`aI- Bd"= i6iI]FH(/J&Y)gRGhI? @A>$E<8"؃d"H́px(nLnNnI?C wDD hb[ $ݙ (FLuu~I> / Q< @4,'GAt*=L|҇̃~ր(Po(E&J%L@ * @x6hjAɤJ>P$"0qjT@)E*2$.+6*w"NvΩbI>B g3DL"g @ 䨀& $@ 8] _>^+%:PIbRHRI?( rO 䨶L+tt3>#q&ϖ*ICrk6jhM؃}.- 4m8>B?Ce*)$2IBF6=j @ jkD?$J.(@䪮CAN' n2IvA \ ^Dj)rnjzPzVOn&fKzI>4}r䢀x6M@ : x6Vv8A tRT_4nC - "'=26mr었nF <(@D9"H"I:/* mL(jڪ'og4@t! x|5cP` 8839h55S3/C?/2|Pf!$ xJ0sKlr'3H?7 l4Ws:\A'~VE_E?9s:cC{/C<.=G3FDPA7V3=0+BA 5Qu5_ R/ut 5L5A-8>Io4dHC,X6/L4'1M^o?+$APuQW3s/` 5K5U[V>x5/dClȀ#N8PA:),M['[d$# ?6.*uT^wLgq`sk |iL)h@1dDl.FtY'/i=Nf60Ă.BqovQ@j+ D5|5!,r3r?vs IA '@Etqd%WDx @v<3+..~[sqo66`~7!x.BO+܂.qB*~W1 8|Ƕ,++7P$D_,EnDPy[gy3-{5@8 XsQA[zouW7:# 0FXlFfDC/񢋷Z<-T:&p`^G-0c>z GȾgE2G4|t02x3KyǺij9‰[z.x5QW5, 9uw*|9Ÿx,BczN8<`دEh{fk{8!`;~+<9*8T67 AAœs{<ȗ<<XfK8A#f)@<\ >@6ܼ6A=Bգx*lBl:Q31w TulB/ȋ(@,HFBUDI6lmBV}\0Hij>Ѓ3'<$ T7= ,PA} =446PT|,vk\tBEh.]4 +VH(1Ŏ],p,Y ŋ׫vsfL3iִygN;uf OC5s0T0NK LD}N ``?X)Gٶu6fPֵ{o^{%*n`oO|ZE2HTr>.˒%J2 $X`{Bi-ML8ɝ@ :.1 o#ǟ}VXi,\P٤1D6/7B\patÄ́F- X`aHwd><|zZba0ks@@ 4f̥A{Y '1gXaYYF9g",ch 9PA Wpz1:m]F;ܜVjc4*:?OlMlG.}y%N2'ٌM Z[ѧ%]x3wa XGoCBCOO?=u#y9Ҡ}nTJVGH x\%LhѤA5m{#[ئ r-RчfP3b$(yŬQ /8q@#M,A0P(!n"(AQp=>ұ["mCe B$ `d|6IĨ|a`3#'8#2Fxp|B3I!f 诏4"c$esU <*#%ݒG=:T[t WbT0ЌapEBUv/d!(4 NWJ d,)OɨTJux > ` `r!63IvR NRA'Sq(NP?coPEx]a m-/2AqgF`&>OD8h@s͔d!x :Xvӧ6B |@‰> :;Da hSH4(pjn6:֚r39!iҷԬTQYոxExA|pa+m:Xi008&n]WJ׾԰nY>A@:3[v ؀8.5wBu_x;Wu?5!|)oW}|9owm|IOї]?}Y?շH}i5}y}>~iW߶թ_}_}c?~_?~χ-?ݬ0 л'0$(9 *\"b4p;8B@u,(<p'H(6GW,րn">``0pps@"pt6`,(rZ-DL6p&4`K0AHJ7Z(`$`%~%>  9l{ >D D! !0 my΀a b` %zcD ҀJ;%DzLd @9q .1&V!  y` i" p *8W a aĠi$D,! 'Y MB60aocNHD$ eoqN#:,@ DyA%!p e0'4YLDz.`rL+n'B4(f@ b P2,!B b| H  ( ],H!z+@,aF:`) a>džar@ ,%>ErD, 5%*+m%hpZ%@@,<.6MD [" p3 ``S r`b  .Fa, > *΀M8p9~O8A`d%a+ka`0 rk3/r?At4] t 'R.,: Z4D Za>GKE00&a>@"MSd &Fk^">DRKK f@8c-@HISM OI@M$& !*Lo2|s,LK9J$@9% \B F^00bV@Y;I=TFI`/cXRM$N4DKL+3M! S$,, UB*t96Dp]tdNwA]V,Y.%!o`Ô5@ a%ܔIהV-X] o\-4M4Z|HJ;QHZ`%Z`cTT3S`X4 V]" 5B,[tq'-@!SMdm>].:%dAO-7/%6irk<\ it?o QK %C_B D IfB*3I`Ӷ +H*USGy`8aZ'SZ8O6cHL73w84LoQ0Wib(w?%d*-+^"evg @Qhh@@w%ri"j/5S8LDz Qv4{8RӀ.|ѷQ=!q0Nd@H U6 s>p [zc/k €P! `تZ8:+U?]"J 15*% }*$zdu!48 &WKoaMBcMD k  *`:N]#f[t yoDy@AB%* `R1JB{I-vxC3dia 7_rB@$1X3&%Z`RTjVZ_ۗEt ї}Vobbq{X`"[">%&S&Ʒs[8O9X7za n9QZQ]BJ!8(Y9'^OI]bԵYṾZt=;9:0!Ez ﹖e%DZ[@%wZbIzEbcMRq{^ 0 _dw:@ a9PwAw0ib@Aw6=?=u[{4_xh˷1}9 㳣?PQ-@Ƒ.4)Y} 1>%05q5 :,8 7Z&:3.tI?U .r?T '`ڬϓJ}['8aB7IaNMRdK`ZMd%(vu^eb4`/zsDD70 .sK>7P aDZd݁!Qk/lxDs@?t`CP5J!SEt/S 4P{D? p@"GsB]B&j;\?Q NR!th{|/H*eb^sd &|/R._;ԭ b^@b$H;/q"bX;NTUV=& |rЫ QFxlZbѭc^pW.Գ+]3ZzD]?5y2}cC[m5qz벡qZ2Aׅ[<: >|uƩۙ]م`?l4`ף*mpݣ_hGge w#e$"c*oH:?C^GKQAW[_c^gkos^w{^臞^闞OZ^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟӟ_7_3 _ <0… :|1ĉ+Z1ƍ;z2ȑ$K 2ʕ,[| 3&K4kڼ3Ν<{ 4hHD=RҥL:} 5T*&4֬Sz 6رd=^/ln} eٹtڽ7/Ƕ(Q"YێH}p4VwҲKсps;7͜;{H0kКyr%A*1!62R|U/p?7&7148>:#:2:+:-:2:6;;<;8<6=5=9=>B?8?7?%=AFA>A>CCDD@D-F-GGIIGGG5EIMJ6KKMK3K,LCNNQNPVQOR,SSUS4VVYYWVXLY;ZT[A\\]]7^^b`^`_\b]bEbCccdc2c4d4d:du+vvyyvwv2uy}{z|zwF{|{}~}~8~3D݂8UR=҄b<3CM~%by=ەYrΰ~/\֙8 klȴ6k]*P_v T%?eG햯"pO6g]҄!DRoj|2^,(wg8c2yˣT.GI Ԃ҂Nu 2г{0c72vtWa9=lE]e+TJ%usvzsnI b@ RZTݶ>pH,a,4w82HFĪWM@b^`<2}|DOx.aZ 8 cRITP8YZSL,h`X p>ټG8im㮟_5'ӛE۬^ Hḹ (P¦1FQh_rP*@: WhlgE]Y8;Ð=ysv[=ӜvA9K@yDJgDqб}Wj'S]H!JyЁ~aQ󇇕@)XJ(k;B{ lݯ#dޗ.>cu6q\?yx# f@#ΥhJJb`ް/eło#|G [4ȗW V2J`Ź#؊h5Q2\N)=.nO(fos9VYd''pD8p`6PŔwʇhrL%'4 SKN@}uAU|o h~wjmUYiD&4sW%`SG$FD/V~PvqrYB 3uud9LtvlePfu$>"(V~Ge7b4x[ 8Q+;%}0T쇃^6E;LW @ SSa T@mKxu@f,@O! Z@,i WRCWBR|p;ðiN!"ِ @2`&N `)V1l&M!6F3jV)8+=Kwe.rp rʳ@;D[!{FLHRozIJlVش`O8Rpf{lpEd3 c|ERT\a ;rE w?R5HJ%x4Z4PA6=ۮ|(@s.Pa0E*CJ۩Jĥ+u۹˯k_v gg =uVC^ e$0Q$s~SpAs\b?Ea?eÖL8|*?ÅVV"(pb|d"u5[W'/%Zv!-~nj`pPBZneq28%<^Jik20)GY-pUM!2%%Zi)߂ςQL2\/A٩Z Jяd'iJ`2PIpDAXg`Ypk,-Pu,xbdbgb,x)'^zsiF2Hp.UŸ́LZ)k%ōk7}UNUva@˴G٧]ffz3~ն2?+=Z%}0زyMBjDO{vQ؂B ~UMҭCbVa%(vLY 4p!KD%z y= %c dN*]H XVV,B%/y%ץ,O@ ow6ݲq%_#av3HNgh‘,=#xp]cG"ȯuL)%jM^4>L>Y5NQ-rу[NQTI2]F2M7i)G&Ƞp}>LĽ$ 3 DE)]Г-xa+GwCdYص\,(UvQOyCnߒ3`랮%Jt`^;mR,5(7>6fm {jV^V^+"y I$(B`nH Qz(t.'u}lm, ,oZr.~) SGF^㕕Om`&K Yx56?΀ s"zH*@,PB2-mX-P)JMt"HDcnyT); O)[fly(`-6u\+OM&RSu89 W_Vyim{-hn@'U uc'9P _;&jXlDW-mRiriKʷl Ȍ ]frU,a#ڀ z3uCI//j¢~4_V.ʷ_"ǺY5Ώ1^E?ͩ 0W߽{.d!Ä%NXE5nG!E$YIUdK1_\ߣ3lM3;i Ht=6ghjԠSQNZUYn*W2%[Yiծe-ְq}[]yׯŹ[aĉ/fvEB\e̙5{9fСE&]gbMfkTSvmܹu[n'n׷ɕ/g<ΥO^8tֵo4ŏ'_/կg~*zϧ_"|p@@T7[A#AܡB 3pC;CCqD3DSDTtEbkFfqG{LGrȇfH$H%t2F&rJJ,2K.loK/;04DsM6ѝ637NsO>5ӳO@UOA 5t/BUtQeQHr4RJ+jRK3SP?4TRKmhT>(.X]UU`O֢h=V\5ETsW`vXb5XdUvYfuYhvZj#v[n[pw\juׇJYzXmVq-s=U_-lz2w]&45jxӞ L0X2u7B!7f,dH91seSO,t] |)ވf™s֫g>ƀ6hB)[NZ~^HՊ:kĪ^c>kk V.,52onho=;mVf_ FQdH=D oUqVG" Zb5@{X3C@~C.?4 a *e! D'TS[ħC)9V- &%0ATEP䠇C`FB@y4<[, [?}+D RuA!"% _ݡX6%BA":ъ$ec銻!q\S(@fLl 2.)cʦ<@ 6L T=$seNtDk 2 mo\*RSumq%Q!D=K0O9M+؄hA.0A #9 s`a¡ }E7cd[#KX2S+4!dHJ``S!0 y3 @<7zG֠D(UBlb˚ 5AY3֔00p##y=#kH fB>an|if,6$ns*\~(LA 훱7 \A15r3G }U+5 !Ȇ u0a5V`u=x7Tvp@c-X0`܂d[ gxݞ!&3o50X2!J@N{0>ۉ# h(`@-v&_!8W,0(4e;6 rB ȩDN{ pl0 IOSW!ʊ4_i"y%sMn=:8b*Dn.W/7-<oW~-V$? Ik(AIbzW%ZSZR=j;J/{,W~/g7*'fS7~_?UqyRBNVLQ?8م$*q_ӄ]Ⱦپq @HsSD0 AA,AQD` %D%,Eu@PE`EA|\DY_FrQtA @PF`1j,kDGj+8o @q,GK tT`Gp%jziFGCCGFsGƂ(PȄLLLr$%HdLEC#d@P(rKܤHD9)x8d[| H D`TKd?xdMAi9K*Y#2Lm`KM8,M$IK(+8LHL\ q,O`Ӏ\  8mE RSPDr<=4L=ZN+!T@@6R 5a(Q4įSLc(D|BՔaRKc@QQ(A4D4u{*,+PB|R0  U%i,OɊ`L<.(e>fjDObIJՕR(SKpxL#Q.R־SǶ%% b@[PUf_Na=0Kf^ CS%:#FF[̪U唽}ѭEa%Uav5_vBp6qc7 jgyx{^+eC<մEbvU`B&XRDi\fxNc5FܵKT6j/(Du^`p@,'C #l;AZ2Lf#$SYݾ!234q0g {L=tɀN@oysnPJɶÚ%ߪt??v)S7nPּVwlȬE v'. yA\sQi6 Gv6gwvIjʫ{HGSmw̉DӂjQ]Fu-->RWXoNY@{p@-J_jer$SRNXT:,?DA+LOd:j-wR(ehtGyJ}8 82DڸxUBkDGЃ&XuwsvgW Y9B?tȖq8/$Rx4IxY9-{z\tw;vomcK7AwI ,j ROohG̓tQFxtyQr@x<[ooU#p_Y|Ep%5wmͱzӢxE~kۏPЃ0}z)pS1CzP ;hWTam^TMLexqЂj ,h4x!Ĉ'Rh"ƌfHǐ"G,JMz"l%̘2gҡɜ:w&РB-jhH<2mޣ3J+f; ӬZR+װb ,ڴjײml5c(޼z&/sKֽE)X'Si1̚7L3hG mZgW|5زSO-5ʊ#"]{o8KCd9=^ڣsڷCn;a'hܯ׳O^}޺k~?d}' 6埂 :SpvZhjDJha#x-X1 (##X#c78dt;yt?vH:OJ雒K%Y]na%Y&^g\\9g]UWtf{wTz=z(9%x Zz)j)z):*z*j*:+z+ZWDdmbEk&챭 l>+XfF{TFnkcI(+;/:/ n =4@}4G4MQK]!S[}5Uc5כLw:6e}6iwM!6q=m6vvwy}oo}E'(ipቿظ-/뇸CJq˧(np硯No驇 oCIxH]6z.>r%*<|K;[?oF}lݓ=k;I!U'ڪ臛u)|j=!CzrHu) ## oX 8X,6HAaw +B `-8%|BF‹ C 98{h 2 l"lPrЂ#B D8CFVG uƒt"n| HB0 C:(D Zri<$ұ">PI$Njd&7$Ҡ J}_I6@8u8Vq43ZT&/g.4O]:~c''r|`$`pr?2L"D24^3;0R #IH3@N " <"a" d"gpT"dCȢbQ R/ JRl@ { g ~-3U*Si%7= w@: @([]B  0 5\U:6tI+c j>6H#oJD 96}6r#A$㒇%#yV,(@\*X V=IuITݕARB$D@61cQ=vh n ZФ@zגR0&,O9=2/ qd j^:P?UdM;ܨv0=S@9ȁ/1]~ҝ)GFa@ QUgKGTj2 Q.#Nhie)"H2ڄHJ-_ ʴ`GG!HqD8i)0tFp\` ro-e0r^!Z qy  x6`K9h IG80"#3 d/  "6C&J:y{QkzU@A,D{{ΰvc\r ǫq 7nEj@AFlk:dG3 L5oLCbfߛƶqh;;ݩ>ۜ썝 h#T`t.-GtǽD: t¡!hA}ud:=|2Aqvֲݘo/$"us{2Cnn|s ubBB`*j6#ق۸@25ŰD NP LepOF +&2;ނ4=i`5w s_yHZ3B t =d'I vtH$sv3ta.iH 2)liDB4t!DQס]BԚ?R$lS8V )@@!$\0;$PŽQA|uytѝuV 48qNX 1 t>|\Gq X<-4OUQJI2t_ Q!:UB8D = @ 2@ И?\@=C'>-;@78@7=@8 @Ty! }7UˍLͰ6} ܍UYI7M5C9b:yC@ ʘ =C@t-`\!8Lʞ ܀-pfS"f3&扤AHƨ&=@ Să B=t&jx ('i@q ̀cD4 T&m%@ y؀ǀ'/ @s.E>@ @4XgFw*u Vx = = r2(G Ul(ʈ9 0( |e( A| ;\]&(`lv8dt( ܀0,E=B@g7(4.abP @\@jPPݗTg@ D<\ ¤n4@@h]7m@^@4 _(ږ=裢cjCiҀ$eWP<3jTD)D*2L+V^+Rkz*N٬ >B h3tH",h @ L $Y\@Ȁ`YՔ*,&,a>\i|C gT=ޅr+ $+v (}@6,X@:S lt@l,xL_uQÎ dj*Đ@+:zjv='>i@"!8o>I?Bm郚D=BX- `-8\^j=kBȐ?C&f)$@jĊfI=4j @ D*nD?Tz(x,צ,l1ZlAtn\HFH?C̀Ⱥ@ =G0mb*jjBcfײE\Vn.K>4Cߢ@{6C>D?(( $oƪjnd}R9A tIRN|/ۊLv - -NjD=bb홞wb0P(pTﮗﺼ RphzDՒ+֭ /snm^ELP@3UNtBo&,4pC4@ޯ)@ކj*z0KFbV"IX1N I?l. +2C=$O2%Wr%Wj&k2 nz&®E a2U c1q CA2.-B3200-822ԁP?O#(G_q #me.>C x|:gAd <3=׳=3:3:3/C?8o>doV!$ 4qH6k1x37B lA9>3`A퀖II?A>>gG{/@ћECP$^6C2ਗ <0+AL5UO9cA ܪVotL55TB-8C=MndhA,[HH>Z?+45%ATWuUsA/d 95YZ=od `,.!TwAY+v;OA"qdk C,.P&tW< or{.@XT*Ȃ,\73v۶!tB`FDxh*GD|6D3+.ܸ.7s r#27dK7!Hx.BS4AKɧ2&6< Dj]?DP4`C;-B.T7* ' yD,,-+tr7PdAb,DL.ImĘO_-k=0.’/yults  :WutA(yZ5_gUZ%&o S/D?k|϶}OI?/zooB{AcO+u:g{g@}kAP8=J Cwe?C+xK8!AbSuYg{.;U;W,tx?(K){A~Bj<R ;̧W@+P9*lXw:x' |{*~\BjSA|$V)@\\ D=6=;}{s?/8o=&wS>"|@uU.;+B<@,MĢ$ExX&D1\lA w =̃3[<9%PXw=. ,TATK=4;I6P8 |*ސT;lxEC ,S6tbD)VxcF4:dH#I4yRddžUtfL .\t!1ftrK*TpiGp)*f&Yxɋ׫v4{mZ,UUn܉@…9 /^r`?wXXP  V֭F9w>2eѣ5Ϟ;{ F|IS)NU1Pm+0y%G~} T_Dr\ 

        ${.r1  g, "$@ TՊXbT( 0"(tJL3ؤ8tXgT]gGe.(z3Fr"tZPE}x9]glV) 'xBW5:% nb兕r٧z}w-k)zU RG#Z xW"v5٤MZ`M2RXzNa7l+\b{ylLA Pb@ ” %4r9lqCYya%h]Z裲AW&6ĐTxrX9vmȝ`O`ܚTP,8c4'f{ x]P .x6`FV~SLH{E*y\`Bp,X?B%u-FO:r@#h[E.A#%TbeByo.jjБ["nCmC$ `\ t΅X<$4# &@\+%FNnu0Jzh@6 KSSp%@H5"%*Z ֈR[GC<@CrnktMQ6uL(!ιֳU+Ij\F2üG4^8a#fCXZH6a%5 d1 Wk0au XK۸xU:Ɲw6Нs*\h ЉNgE?`h3ALҔtr3iO*ЗINԌQ=iDժ1aWԲ0q][zӺ/_ա4=c74]gWҾ3kwnnr. o-}w;,}{{+hVً:^v+w:N״oq;>wݔunB_x÷Wx?'r|)_yL׼Z0ycI´oUw`.v bB JaJrЃP4h"rZ@&aGzrp"4`^-Aj4!&`D$%>3QaBv^L&}4 hGӀ%x !Fp=P P0΀aҀb€ #ā @n 1Α?B}z <ba`A Q0؀ %B "Y T1[!0W r؀o1 €i1.! G qGDG!؂(ݡV!>4({kPRe~2s=ae!&7+#ḀG4>6 , e/!#.A !@q%r 0@| .# у @FZ @.aF >.q>`ˆar@ t!>fHrG,`95  0!pd@@!0A@2's:{D17\z3P @ F@ A4 z!` >b,: HG`H3# /=SnAd0 (n@T83ACt!9FIHF? ̐4?G@]ah!0A' 4 Hp!$ }2G GO =#- Gt9A&k0Ru@{! O38)ttO=#GrK!@ `We! E-PUT̐W `*;!,RTG` !U0I;Dh47{ D00bذ]04m[bQ]`! v#_E<,\f!!>sdT(5@ a 5 Y_5[">OW39T]H?EPHZ&!ZfTSV[T Vp " 5~0tPOg"/AV{dOiHOSVAU" l ƶl/n_ \R9t1WsS.gU2{!b.I!ZIpEU1`a` vt=7QSV%TZ@7?eX ^OPf{D ^  `DU£itX|åm@AF ڗ! GiN?B~ceFM-{V^kvhXmgє @1!,m[!s㣄Y']E[e@ICt 'Rr B 0s[Ad/$I h"7rv[=! f!ΠYfaՇ 9TA !"9=,+yW%RUM \..Vn0O@3t#^AС\ U@ R] ە]--@7Z}51uh0>@duak0 a`:AiA^YT5A ̘k59%@ A>@x4V} s1\9QB3t ;\odi[}D gx?a2;OA#CT #گԮ#"CG;B؃dQ{d `صG6kf+8%"A8sBu{s 7bCsPFtH* F{;m3=tCw@BCIF:Dg8qS 4 SeTH?s[85%|i?!4uJeZ8}Vat5El1vFG9sR{wBC%-@ Z I{UY SpSceT8԰! !2cz]ҞwD\2n/Ev|=oR4-}$Wsw/}^I<51oeR/xTA]f ֿFU^8]"8]4Si]%w#rYЏ=].UQ_f+fL09U33Q4У=:TUbsQ-@ɟ Eq5@ڟM[Sg?0ѝgI#f+37;fCKES勐Z?%xujos^w{JA臞^闞^꧞^뷞^ǞE^^_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__ <0… :|1ĉ+Z1ƍ72ȑ$K<2dǕ,[| 3̙4kڼ3Ν/S 4GD=4ҥL:}:QԩRZ5֭\zJ5X_˚=6ڵlo} ܹtڽ(ܽa 8lJ8Ō3UÔ}:9Q6+.9լ^E!HwG#+úPdƒӝ̛;>N#a(5H!;)޷CL9i∇Cnӟ8:ۿ?dB #H1iHs2 )'8zR)QX7&7148>:#:2:+:-:2:6;;<;6;5;8=5=9=>B?%=AF|A=A9B>CCDD?D-F-GGIIGGG5EIMJ6KKMK3K,LCNNQNPVQOR,SSUS4VVYYWVXLY;[T[A\\]]7^^a`^`_\b]bEbCccdc2c4d4d:du+vvyyvwv2uy}zz|zwF{|{}~}~8~3D݂8UR=҄b<3CM~%by=ەYrΰ~/\Y8 klȴ6k]*P_v T%?eG햯"pO6g]҄!DRqWL@f:V {8QTzѭ/Zщ lFŰ7RbL}K A_#WN>WbAt tzf ) α0g~?t.~EUT{Vwło#| G [4ȗW V0{J`yi,'XVDaH2"{×f.nO(VosiCYd''pD8osŔwˇhrL%'4 SKN@}uAU|f^g~8_7mEYiD&4sW%]SG$FD.V~PvqbYR 3'{Ud9LtfleP6c$>"(V~Ge7b4r[ 8Q+;5}0~T엃voE;LW 0 SSa T@mK@f,@O! Z@X,i WRCWBR|p;` N!"ِ @2a&N `(V1l&M6F3jV)8+=Ke.rp r@+=D[FC;&zL۴(Z\dl`N v1 Rph{lEd3 s|EST\b K Ccsz}R5HK%x~QcPA6=ոJ÷~ +@s.pa0E*CFah0 & å+wۯ(gtWpapt ]lIuZzk6Zp)Bz az4@wvȐa8g@aк-p]b;r P ^:Z%P8jU S4g@t3VS88e0l@2ғ l@A(8H~T9?Mu^9@.ND:f/9.An'scg5 +cQ7MB9Nȼ{]-c+apH&$r"c51QHtGYE2pERP=u D?Ż?5a?ߕØ\;]?ÅVV"(pr|dBu5['/iz}#y-~Ɍ]pPIBZoeq28%)fl}0~t)<>' %;6xT((GZwԛb]EsTÎU4մK) QBaaP$S`g$t}CiBpd }8谺DPK;Ӏ-Ld@gf+}Є<aN zON4`u]U͂NQe gXN@ M-9ZtMQ /$&6>|WDgm~cx֧P䫺au1lٌ݃2$c55H"&$Hr-p2hHh&%Rw.z0uUip+k6NYt6n2Yh-2w*GH >%-҆-P)LKIp=?&Wu - )n&byi^HiSƅX8QM&RSu890X_Vim[j~ yRuR7>~V[ L llDg-mRriM?m ȌqafrU1JV4C03782: 8m15oUʏ/HOL!* p@*u%|q^?˿y1XڝZj$(L޻WCJXE5nG!E$YI)2dK1eΌrGg51gxz{lǰѧ=NZUYnjWav%[Yiծe[b ]y߁tv aĉ/f8+aȂ:e̙5oٳXΡE&]ϩifkرS Smܹu]7K'^|ƕ/g9G侟O^:赯o촿'_޼ϯg޽ϧ_>ߟ|~p@0TpAA#3sB 3pC;CCqDKpBST/[EcLEdF{GvrH"\F#TG!tIrJ*J,J-<.sL$L433M6čFwܔsNN8tP$PD24QFUkQG#T+H'R*tSNCҴSPC5 PQK5O+UհX}uXaֱp]TSlvXb5XdUvYfuYhvZjZll[pw\r˵v_I(m[wswygze^f_]^7:u7ʦ`^,a$23b@/*ydNFbQLe`v0#Ug+xY/b聐6-S8Ě9V鬵F꧹0Ǧ:읧fmA뷹*3nһĐYUXmuu66)pWɉQ' GpZ Gœ" Z4@{p|!)Jx AoeC ⥠c(dP"aЂx-0wC|D΍ s x  \ 3 }_b{>pX@|0r7h R@>>mu=e)>ڤA@4>)C'2o%#"G y 3҂\maA@f2C(0З>Ņp+a4=p6Qخ1 k 2td H?>B Ȑ"iHF:c6JA@7 #4@H9 !c|1@! DZbxF.dk$/ @@@DGkm טD2 i>q(s=,:X Z#B|q>A|fF RTY)` QH02aҐ4,X !4;Lf G8QsB@,jrH{sq8S BPC` Ԕ!P %h@B@ñ> 3 $=Yf.٬R:JIZ2;]hv{rS8_;Bx(e O^%׼w->З>-WU*& i?g($=i{C;b{D">|j?*wPg/E:;w c+'mӓR+<)hA'nB @@@M+p ʁHTD0,AcLFuTtAH@ B4F\F^d`m:r{ht\GNwGG%kzlF]ƍGTsGPƅLI+lHQ0JߠHPb%mEI|Dk`Y8ITTIB4YIIߠ[AȞTDʬEԴ(`dLJdI;l a0íHLD}Jsl{=8KDJ$d {p`DY:4Iˬ͜@F5ʡ>PȄLLHLu\F(Hg|ç+!A d@P*KHB9)x8º[| HׄMdN?MhMMl18 TN*9ZF` m`lM;lMTIK(.4OxLՈ_̍plOGcӀ ( oCEH :NTP E]u|EtLD/L`.!G%ЁE,;5͡8 m!9!#3pEKQ׸jN/H- ju'HK jVp]`kЃHBsUHH0̜-U)V;AhQO†\M;`LV+QM,[/<[KxtjXa3VȔ hN*ԵA<]ZXtϐԌГ}ݐE]ͽI@[Qԋ$W<-Oܕ % yK{G5 CK=J*ޗ$qC-]h^W踼Th((t^R]QTAxGTR\I>|6+] MD`̝`-UOuGv j8eU=hE^;&8 y߬[{(:LpaL$U?BU2b^{uH~%tbؐḇ 8Y\̵"u7G0;dMYWeaٴW5~ 6$ cG[&-\K(OWIB^4N@\]Uk*E\.%.BBۤA.=ce\͞%5eCe(D0HRcZ޾<[']r ^Tda=`fnE Ɲ=H4@,]CZN~BaY[f)4\&t~I: !{vL[_R/=cC,I?ڃsvVr.Yzldzf`N>Hr6g(ΐnJ+%ٛ˔`imvH^Fu͢[|Hiw1ЀKETTlbia `>mHKg !UiU,^Ɛnzfx}D^ξS[΄CHTooG6&Rnm`ò!x,C)Ӎɐ=,Gi=.?>6J^ؔbpK&6:耑6U4`*5ij6Fx GDaEWȮ_% P8Yr\z9* 8L 4qKjw /HLj6n +zʺrT 'uA4pA cpMq.rdweCY!-L'f;TC'4mRG$7t$m o;Z-Ns6D`>0upMVW_ikѤprmTIY>!dr5W@brLn_swuHG{;W -7`]Bq]rOdVOwf_tsO@-hVvvB?0> Fx ~ÊjGB o=j x\FS(e`F7xi Iy5lZx!&hDDG0sg ΙZ3Y蹃#zOWQ7\UO;JbڣZz[L'Зw>&׳\FG0?ey7I &WE#ty{kfW'tQӨzz@{d[l/3{hSlD>Xyn@qɧw>E~k8Lݟ~'@}~ppNXz} yUPEVQUT]fL' ~-X „ - @Ǡˆ'Rh"ƌ7r G,id{*5%̘2gҬҎJ(wSdǜB-j(R#l){0 2PrjF^ǒ z/jײm-ܴմkȤzE..]2n,T1db1:l9'Ț7s,xUϢI^.=t4j-n7sزg^]6*/247y]wʗ7E.9ҧYiЩs.}{BǓ- tÖo~yӯ8z8| 8 JW~*S2 ? wk Fx!9!Rd Y!nX"bi#'8#+h4螌;7:ENףIRi$!%1$_DVhSreb٘`_gcq奜uu~=i'l's^K(Nࡉ:ӢgPXz)j)z):*z**^(o:+z+*MeIQFNfdK&Z>[hD,of6Imܖ n8.4n{/R/K;0/0+0Ú!|TK<] K1kn1!SԱ"|$g2-/c.9c_9}b>z{ax`>N{{e73wޢ+&|rO=[;Y|E?k:bڳI5@B?&_wiC(ߤq|R(z,FC H)+ RpBd$ 2A"@ {B FȑG0#B4`Aؠ-p=]`=,0 ΰV$DHƕGްP!_C !RАQ4FD$Ў9$(WdE7)E =_u a=Vĕ~cE 2X >x s{ _FɊ%4 .2PS+(Lٜ',! .{R l@8QP@rC}#ψг8C)Z%`8 c#H90`.8UBLh3S3P7G) ƚA'ȰKMRq'+٧wb NE=&V*)@w][L=9ArL W!u+"iұQ@*AC dyY[!C ˨Z88ȽZy,()7KR˗83:*4ĵHRn{<I>ynt󄕐0Swள Y4)`ryFVRщ|?|@^{GH€tP3L(L`,W[2S'PYlh 6i$y*?FFD>ch`ڊ3xQAn@nѱ:l`{@@ZP@}%x=!^"|8BA8[೜h*``vzq?w".ݘ9\zC %Ht Fc{qBT!=Y %KkhBA:"]O\-^["NApzw ]zDY s·ý .iH 2B)li_T UşJ̟Ey1 ĭ,MIAA7Bmm+$ T8"y}%  A-C<A\Ja\=4wZg?A3 ߈JAbh7"GyG5l=# ,MCۺe E [V =bp U0QdA@ @-$ (C@=A{ _|xI|BA(ʞh^Ź\܌iS!O`5>SX;c:_!ʠ<\6=8 5SgXD?4RH?fs d!CV0E$8dA$EBFFEnFvyLHGRH$AJ*GAA}LZISJ$gl$dpd~ĤO7bzQvEQ.ea ez(SJTNS@~UFS=AB7 V^GUnh(8Y"[BI?;x8t%@0`]9 V:C?q ;T78cVHI-؀ Bg>= l6lډ`H(0*DYijHkI? @=@E<8"@ @ @4xjI(@te =,'@F$&* &]Lh菋9 0h |f( =g~ <\@].(`lvhephi CS)@ i{vCn+&4^}]d@`P@#b= 鑺I0( @ )PiHC 8}8H2[$*, @* @46 Xfv2=P@"4jT@LD*2T^+fZkz2MV=Ԃ h3xH", @ &MI $a\@̀`aU.&&.la>@\*PƎ=ԁ Չ d꼢@ʧW΀=llCB ,4|@t@,n\@зV~I?( Ǣ N魢F܃z3@ Qzʐ􃙢jj>(J C-C, 8t@aVB-PŢH>j- Ȁ&I􃥾) @FnؾYtBtB`nʚ= , Ӟ 벬}N݌On ҋ2j3 .© 4>D?(( (/Ǫ@j6V8A tQNܒ ~= ޲gu=/nmldxj0P(x\.葚鐂f+ު6V koFLP@3]Oto&0,p4ziw쑦(߶kgn0o(f h,B٢//-5-$@ ʫ!+ >$G$O2%!gr&+@I G2E Ca6.V kȰoA2.-B3200s-822~*S[#(Ggq 1^=BlxsdA9A`ij<3=`:>s9<3GIEBzL3D+o3{7+I?7B l9>3`A耖I <>>gG{/@;3b+(+F(eCG ,'Lln<0+ATUW9c *WwtT55\-8>N4odpA,['IDt?V?/<5%T_Usd A9Y[=d <X=5Hrt>`,.!TwY36;O"wdn <f3vl,/B;ç+C)ĥh@1\l0Ftƕ'_Wc`u>C,.X&t_< rXxUB*Ȃ,d73pz!tB`J.Exh*O|h46s+..srs+d;7dS7!Px.+/tӸ,CaRNlA;p^GċrLPyC;-B.\w*&8 L,4@S 8+D/,&JDڮBDܲ93-4y_wH7:d UA[z~ @b\(F\o2BC/qwmwa©ooB{cǺW36uۂgvs;܃ gJ,_[6+5|=0zz}{9Bz.8,Uu,A˺z[5G*9x,g {8@<`0EB#!Xjg)qYx5ĈP/\y*x!<둗U .{/<{@,CNȢ(#FxX'*D1d ~,B 0{t>̃3Bg9%X>Y6 ,wUA\=S4CI6PTM) C}X@4n vJ0A)VxcF9vͣ{#I4yeJ+M4eL3iִ؏_o`¥KW\@ScK/KdB Sر bn% (PxjMkٶ%\sֽ8N *\q%&seYx" 6|Xnfkzdt2;o6}c~3h.RA˗;Nď/^nC(װW_Zөo,zv@9 Pb< ,R3tq{~73p~WZ%,dIE,x'+3J(|zT#EeTkN <ȝ@ A (f|21*I,iǟ}ǜVZJ(YrIe2('6JêhCqitgE-2A {@/' ` q` JCEHʋտAP p`E<ow`v?oZN=vWB~pv Y e0!B_8ߋ!P%d8 -# =q3-t`F+-R 7!7A!T0dY tcFu 0TP@pq._$]8Sq2\W@h)LsTb9xRk̀2" D!W 8 HEL,I/L S;nUP8 #J}bM9Wz$ݤ!X4 }bK@j$I%Icʓ:= ` У `+ov$ eG `CT%`֯5g=S%458<U nR`ۇQb3ThKTeh[TVSMvl h`Bh* yRy!sHp#ptliXVit N(@AQ@KEG:O=,GLZX'ʫe{D#QI,R#8 k݀LV-MH3 63=1 B)pڌUfF5d*H;v4npqct㭋sǦޗe2°uw3񺷳*Izֵ p%HnR\9\ VP*{{%6Sny7~6=mo}76'os66M3xh&^FIϸ9זEn3r1i^s9ysAЉrIWҙt?QU8_뭮ճuCzɮ簯iW{^m{^wrwCw{ _x W<x?Z)/(W`5yozҟ)zYzq`?{׽s{g>?|'W>|߽ϗۣ?}듽~ֳ}?~{Wӿ~ۺ^_sP!}#30&P;8C@PK0HSPP[.c0XPk`sPp&  " #|T: NeSjv :>`؀.v jB KaPKe4h#rZ&HeI#4jk.Aju"q@, i" 6 K1K![ quvƒ*l  tGH& !0pEq 0 ΀aҀ € "P$ \ޑG} `= b'@! 0؀ -" (#a bq["0Y "r؀o1€iA.! G!QHTRH"#)Y>z)$l`R\%>e !'M7$AEH4>6 ,u0! #.A  "@%r!1!@!1/$q VZ @.a"F>.q> ̆ar@ >Ir@H,`:;!* 1 pf@ !1AA37s;D# 27]3P @ F@ A5 z@"` Fb --; VQH J3#=pHC^lS 4JF > Ӏ3FEÁ4M5IHY z.K0/| @ KAM@w0R"a >@"Q `+- Go BCpH>Po\>\, Ht:A63l6S d" !O!3@*#tPKQ$@ HrL!A  X  U.uQoPX% `+Ks",S`UH .5"U1K3Tx48D1ѐ1 p^05}\#BR^`\ V=F   ,]r !F!3eU)5@  RUZk[ "?X3:]J@ShKS zOg:qU Pq @ Ҡ\sOSJ`|6 0pUHQZ_ UwN a U?!XAڶV " | Vm?n` hSITu;sS/s53)b/KZUVqF"1aa Ba |>'R_|;B53iw/xwvOw>PsAr7je-D? f//1U c6Pu @P l@a rn#BnmW<2X Qi pK/58 FB!&xf#cqTebhVv%sD1[ ~Tgm S! `" XksD bNWo!H 3"6gcy4v -.xVH @B Fo zw=8P7UugV",Q[قT :'vV#Xxջuu4EPѐxy#p8U7\@ l"İ9P0y}_CC "z@ 7)b/s= z~% Z0z)}pQ Py4 AߒM%f9Z5^ jlaѥcgc p^ uDBuy?/1H}, +m*_*fp^*bQQZ#ZV C 2Z X F aZq,Tw,aFԐ!>ǚ695@ A > Z 5#} sɱ]AQCAzu I]ey}T uZy-z aBPAr$DT $# b+*#j7B(J&UH>HXr@^Dlc)b44 ~?G7P SO92A\t GP)A qH4VIDG4W >1tNqTST4`R8@@UGBS`bXwN"B,Z"[`4mG]S/tn~d4-ew"}6QrݮM=O1^f)蘼]]R"t={mQҲa؅Βw{^臞J^闞^꧞^뷞^Ǟ^מUrR^_ _#_'/3_7;?C_GKOS_W[_c_gkos_w{_____ǟ_ן__ <0… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,[| 3̙4kڼџΝ<{ 4С9:$:-:.:1;;<;3<4<1=>B>6>;?=?1@;A:Assssfu,vvyyvww3xsvyv{{{F|}~}z}I4~~~}3DN:؄Bx=S4CNBN=4Cd;Jˍl:C5Xޏ59.349DْZXELTSkۚIҜYJҝD`DUƟhՐH&`]dJF[XCX%Ni~z=;{1-{ ~O;0 S`ٙ&2)B,'(oOlWLA %Op0oL)S,r-k3V`51?PFPbDDWά FrғT;*c8T e ԟՃ~] Yr7=a@;SM$8a(((A~=dRŰFeVơؠ;|dU}rvЂh 2LkH`?fe_JX @E4 (b. a0B$?# }"z'x.SF*0@uI} FS'R0J e0k .i_)C/x~N@ʰ.9iW(9 NM#p; "2ׯ`T .61ү 8 @Gҁ+@?^,T= Z"V?MIX L`1F̩ϺV$Ť=T [Xam\N-Q7 =׃F PBb.rQHD$@}5-RZ)_JL7#1RD$@`NpQx8 L[HD$J]V졾N̓]Ǜ-cj # dA! dTW`힤/JEZ,06~mN FI{XS[ 7X,'f&ql[#pg"&V4ra 18`qG>^4{10;闼HKD~ ޓ`Š! DjNH5nfO 4TjEmx oLZ pޞaa^p`ߪ0BC vx_WJHVA+ d̲ޑLk&nW?4Eg4 P{1x.vXد#wBL=Y?rгSo;KaG%5,+ N%53ÌLkt&&EgZc هΕF{6ΘK^v1F*n09, w'R w§Cʀ,EQضE) 5#}xW0*bbJN.F1H Za;73Ox"8hn 3 Uͩu)ucfy5~~v'7k9!A9Gz5t!=1{,Xuy՚Z%#*!N,{tOZ%E/\džt-/{-)7 2!`_i73JIza39ru\B wbz?$ 24Wv_4,t.>EN2MU:Fyؗd$XAF%~5 _ot@}ba wrDҕ.}Fm>B ]mqE+6~%_3|N7/$]Mbc0Sq,=P-/X.b UuXHh|80@F|_[cO}u}+xq7\]Ao@ h`A3+X(~v3 u554\DUҰ3H*'`h:qT@ P,DGD' uuC_ ƀT*e;kPQ0,Sf7Q6uV3S"y|&FU*& SP$*,&)D 3|_AhuDWcXa.,uKNvpYX$)P]ADgO3Q,bK`NG") ,bdUraR uKIPi )T83q=; Ɛ7332Ҟ]$:24#!103uISTIy8ڢ/ái68<7؛yWE.Nڟ?-Tu gsfTYq7 0)Ibʆ^0prтNT]q#PNMz?+r?DA\:Zzک:Zzڪ:Zzj񤗡:Zz Ⱥڬ:/zؚںڭj:Zzn躮ڮjZzdگ[{}1 ۰k [{:۱K";$[&*,{(۲02۱/;6{8+<۳>5B;DA[HJkGNP+M{}Q 'ZX+S\۵^;&)5G&@3[rK[Z'x+h *)Lj B=>9nuspqQQxm/#2oq%ӹ}{rdgj'@[,ǹy(JB9y㲽;zcAɺvJ.q` y cT@9b&oZvXP[w#Z {7V /#ca e epFL 0; H J| hFd T&f}: HB_Q L&;r p6B:quKe;hp0,p`?΀gpl;Ẽna'Y+3 ,[E?ײ/#)`lE1))5>^g]aa'CP=s W0BDւoTRBs]'=@aBWrQ 33; .XD/4>IĦ\Fv@k`iXI@^=%x R>Ӽ` vpE{eNDp,FX%T$ bDPmGBDP b'V䎠2(b ofn{`LUy'[z$,?'D[`Ms/$E,LĴ`M`?=FK>&{&ٜ_D3fOyR yaz6SPCHwWdjlt'`7,3=()(JiMFWghG@"v[%I@DTլ~5\͗@ W= ٠ӑ"e,Y&jBu/ =^'x%KNsT0Te2Кkʻ.8\՘X7L8Ndhnj5'Rfm;=HEP1@U>DӇ}rߑre$%Om jW<JfӨ0{nN&V V1HiI9H=WV*) '(I~$BQSg\AW(0*ϫT36b? Nw'rcK/V/$h2U5w ]JYU@yz@P؅^e}$xWs%N؊+P.aނ2~šha) 4/A&L+`ܢOؙy"-tK;e,EDR-$awРƓBM%D*]d~=83ǚ[0;?t`aB}ﱸWUg$=}-fd ~Ʒ6I҉+eXbG6(pR A9T~OJ'f MT(0Xta|$=p`'|~b!@cd<s& C'^d: x|8\˅XH<}$*vUI.@es(x'C2b[N?,0/U׷cz?/nП*{ A`? .dCsD5.G!E$YI)Ud˔dΤYM9uބ { Q B*S@2iȫMnWaŎmYf.*'+Th 1oɂF̯z%\aĉ/㳌%O\e̙5on 皜E&]iԩGfYkرeϦ]tkimo!&Sqɕ/gNsͥO^zue^wg_y]{ݳ.}/?4@ tA#Ċ$B ! ;C6d DK4;?kG[tRlEkYQƴvG rH"4H$Tr|TrʘJ,r,+K0\K4L4"3M6dsM7SK8sO>?ԳO@}OA 5?BUteQHs4RJ+mK(-t0SP4TRKmTSSUu5+3]UXl5VZkM U[s+\wfvXbQXdXeuVMaYfZlv[n[pw\r5\tUw]vu2zw^z^|w_vmZwZF$`F$#z&beأ!8c^8ANeDdWf6%Tav!V9qg}yB+o4Jh˖w狙6i1I˚GZ=;>Ξ9h5S;nu.g3;.{jo)˒ %|##bgeqgu8@ VAsEfzvrk C ⑀C)c !c "vrO%AHx `Ghr4~*ɵ_ _(/!7B kHW.USEd)}p$R=9w'BPw'Lb* S BHpv4b>wKB:`19`R Yz{耎y4n` 4Q A c(PH;8@1(F402֠yBq0Ip`!(@?X18|5B1|D. `C@B5C2fu4[fAnD/rS 7"(Y"?P@aJT<8e>{ (" t%HgTe/H{ Qh9R.$xZJcՋp C`iG瀁Jr ) bVe( O a*0JA#P a"`O($U~`YIhRMCF\H%S#TkDVY$~F"DJ%Զ|hBȊİbԉRvhf# =hgLgj P!| E*!wh.q%Z\{dB#$pjYgNޒ#vlX[[HWZkCN px3k!YHrJAXM%v] Ax@ui$mUS":S7@ܪ;XZL]BxY.UMVClV[MzŎ$W)h JȝJkD(@N '5Iۆg<LL2:ŎU;!Rg8Ƴ ݕM [A borh;80pQJITVZ`ộLD]V}*ϰp؃[_m.0̵],SR5*vń㺸M!{ԹK]yI݁tw}l|X~%jW|^7% 0uQ ] w5c-d[t6,p^{\D.MȢT5|g濂>=+NX,tJ}!ʸb0Nӳѕ ,M< vȃG8K l ,QbeA ̫ۘ2i.C"4jϠ^\ю}:̣KLpB'7xˬ<,dn`@F5RF@a!LK\&Aȃ>6$DbF ɽ΂TV`BƱng%FxąFPGPWǶ@hcr@Yp[ќӞFO7WvTB>i 94Z39o+@8н4<ļl̶PN~Tv py%Jz2u$Hu.~Ѽ7o6&[p&&e qQQ.da"/pd f̲ʹjj.o{WV.ZMHf-XJI텈 qpgqBM>4Zvp'oYƀOVqAqk.U{37O=pws0B!v%[bH K03?tTTz-?FGl[_ _S6BGRg6osv;No ..^@/U]`ZPrMO"IAfvgue$m]#CAXjnGPT/vM Hw-OisvVoX"4i=w-=HAsP-5x UE<\+&N_ x,qtvVyKuXp)*5Mx%@|I6yN0a(G c 6M]B @g_L'Z5Xmȶ?G ͉+8tA y|:ŝc?AF_|ӬgW{`8!݄L}g} ԄMdȸ*BÀ /1M~_~ӣv1Q{fy"'K~/~e~|{}{qu#}oI],XК 2l!Ĉ'Rh"ƌ7RDX#ǐ"Gg$ʔ*Wli$̘2%&Μ:-֜'РB3ѢJ2mi¤uRJ'ԬZrװbǒ-*ամjU--ܸ4ʭk.ٳ UK/l0zm|kȒ'?\2̚cN›GҪWCMM4fmvu;$O8򉼍'o<Ë?nrڷ3 .=6u/o~ۉ>wWߘ=ou}_vHZ*8YEr J(YZXZ\zY{Wth8/bY"1ze8%`t#=#A 9$Ey$I*$M:$QMRZy%Yj%]z$ݸ6xfiUDjFflN%'Zte'cx.?a4fZe9('U z(:c>:)Nj)aJբ:*}S*xS:+[S+>݊S ;,IF,*;,-,6RZ^-f+[ካl{.R Ľ;/+o+߽&/g_|0 +0BR S5<1[|y/Ol=t,khyȳܹ\s)K3-Wre8m 14## LwtӨUM[k7tY]-يMgkf ۬m]7t47k޻.$}xsZ?{3~U&>9e VStai~*f3pn!#F7$zcLQ;\;zL'BΈq(P1  =H"(a&(LakP)r "=DE@T 91iF0}A 5'QPF$ `|1A!! A 0p"͐Q"+"w)T / Fjh!D F*ad A ?Ҿ A0BQ`>!2;^<(bcܸ%$E{B<`1>nb1}b؃F)U(= QQG;ځH7"aOe1 Š_:#|^9@E{T@b_<ӗh@=L=K 4-qJ4P\~s!YBD bHCj@A2LBĕ{ZL7$ d\& =԰cB.!Ԥ2*$ȤDpZP".%i*: arI0v ;ľ@OpCdH7ӿ| Kz;B URETp" F a dmjMx!)>HW)`P LE?HbcI ˾Gc@dd7@ nP8J՛IBߗ76Q؃ @@ h}r^u{E` rsM&A}#nOq Dp;{`/*ohI/ ^P!Ć2л/ĝ$Cn@N>VlB։Ep` |LG%-Hx}l=b\b/k"  0A;}'nBP_zq̴\F{q}{L^DBӗ bӄ9AtGM#ka䁴\]6 ;rH7u˴?~12R@{3DЃh "-ė}cBZEH2*K{6{@IH?ԑ?vq5{5=/PApު, y1N,F|;5 J)d;$ ndFqnGt!dk}7 ϙusp:V+ $@^OĢ f`qѫ}vߖOlOhI4{֬WQ`l{_#aAhF 7?&;PzM |)ЃE /8J(EЯ"~\X·Ёif U7YO/̍=g ) tPO8$E$^ RX&E&~b]0wx(vE("$r⭘*jE*"&⫸,>E,"(bآ.2E."*0(c2 E0== )_=[D{y]Tp\#6b2^ \@8@4õcl=OC?C99N <@_#l㈤@('[*)<@T0 <@@omVh`g_঄ԃ@ @ e9ꊜ*!\ @>D)&Ǽ=i@x+FCbh x@+ o+xOdīllZ؃hȚ=D8$˚) )c>ĦRH~ZъH2x l @Q&ZD?`-b@5hmjHF8 dqD&`tl܃! ,>k !<%2˶`v>/g(@#m⎭-Nf lfk &V= @ 4粈z B41Lą--֣Ybk˚i&&R^, Ȁ|G`A@v/~$Ȗ 0#𜚬>=<0GKp^m'@B6m:28ebf8n=$0B2 11&4 7̭-׆pC,Bh+ (._>:TW1qD x1qqDA$Ѓ>:/F2 PB_ WpLh?7pqϱv&)2)G&A1 1D:r&o`1CBT@0yM#=C-p<34GO̩5_36iے q4pA*1? ..ɢ1AA +n]rn;(s-$Bt8C4@65 73wB9=s-X@) , #I<@N3 -?6-)BA4q4Oh^n ؀8t)-*>_=h; $;b2 @d|~fj0/1MKK+-+ NCNCTPLQ_At"B,/2T[h: dB(RT,C^hDà2YqZZ>/.BbB`]?sLAu޶8taA+-B.<ۇG?+7M#6󀊷4t4wA",kExO= 8\&D 5\%t=p= \fDOHʆo9k9r'vԵP5Qv*.BE8D,s@?â CyAT@ꮐ2L8jcДGG?Lz[:{B<8~.@zKt[6i.74~,>/C>EúLj4|DA ;h@\VCDg,̔A)VxcF9vljH4yeJ+Yl'`H3iִy3c~ŋ.\nŊEJ .WX2 &NTZ"W`aLXE++Wn\s+ʄin^{700J$ XtA.43јH,0"_͛th+_uj:gNXEǒ )JRzD QzҥͩWdƢE˕|t~iعwhLe2Tw4"fql;;}#jDkxJaP S"GUZ\FKQ @H:ĠܱHE|J{ %H|ن" DÊ 4,î>Ges޺O>3rg@  (hA5(=p&{tSg[26"(H HA +` >H*Zxq$Yi5%g"{AFL/(fIevO-Tr]TנY%:E.p* tŠ+ R̺%XW'} u#g+]p 3  0\L)T]YtO~)(\N,޴:5Uh{{Sf:  H fځCۋ…ZɔY>$N}聇Up%N "ߞM3TfecimϵuZ+DXc(ykqFt;OzQ+ZP*aল1{}lEGהc,Fwxl5\>lѣ|-\Py*@Sv8 .Wx1<};2eH SGO5ӣʬ@vTаE*A 6ֆɠ>@>τD&P<ZD<0Z C5ޜu\HD\ɇVBa53<@^X*qd54 S=,ctw #dja](m~kT9vP@0\ȄPb 31Jj$v--Cu|hpG%|4恸m?MLIф%1$M :C.h ~0Ё8dznYׄ hm $LmfG1<H~3q#LQ;#K~vH#C_4PԹNJч=$ XG^QӣA RaKx# 0:Hn?8;$9Ҥ 1 LJڣpKU?MbXH.c5-&Ylv1Ra;76Kc@.^qwB&s Id*G~d.wPά [s\<h}/Yw},U=yrx?Ft1xt=[.+lLhӢٴC=RrM*2pҞMo7NY׹yk_]lcVlg?;װ ]mk_ljDZɝfGV7ϝu"n7J]o{+xiM|^ݵ!-p#s~)>Ww۬qTIN1)UrÈ/̱s{yysA @G҇t?Ng.u_]VGu=^.vfGv=n-wߝvwEw>x?)vH5y @ BA .XA | F y c%0H ѠX P  )*AJ,Q& P=  !4 F Р4~! `db"ڡM . ^ +pİ.)s) q"3#@' B bG-ߌN1@9 rR"); o!c60 1@9r"`&74J[ "Ӌp8' *6G!".5A3;3,>133t5 )+ ..|R?<OC?#%/)n@b$9%B4357 beQX> 6 SC R"֓ H9T@0A99ǰ$A2 bV:dP B)IaP*4Xa: t$ r-3A"4nTPuR?_KHF`FP) PPA%J XarNCX>~ < "PlxU0PHG3rbP?Ac9+U@VQ P ,tJגP b\0 0t-S`",oeDͳ 4B3tHũAr"nrO1a 8V@RPP_UQ Q5b "S W b0X#4TU o[CUjQG r;E[ 6skV 'ha42$i*) n.Tu*E`P"fLAOQn}u V]'U@ `1쁨`RWWqp4 \$B]Rz/ U Uʱxxi>Hh3KTT7PRQkv`+"12O6$ 2)_LQe큊G%$u$m=QyY)7SRٯ!|uX#'Œ W;tB{y~ ! ~W g;HeE4P<2 {XKcu4OEܸA~0g;kE: $K"F\jWّ=_M  ! ,   "( !!!%"+##$&&*(&&&)-**+$+3-.20./,15-183345.96837=7+7058>8/6:B:#:,:-:1;;<;3<:=1=2=5=$=>B@;@=@+A;B=CCDHFFF-FGIG2EIJJJ6KKMKGL-NNQOKNQVRIR7SSUVVYYWVX5WYY\\]`^`^_b_]_Z_1^`_aIbZb?bDccdc:cCd,d.d4d7dTH>@ш>VC1S$p%vz([ p z[W,W߸CHAf\ SLiMA&MlI!;;{P ،.tvAS:09yѴNqe2>@L[z 07j#43獭!c0cnlR u>(WiT s$K\ @;9>C`sVV;D;i&@xkDWjpg S*C} ϗC{͂f '}~wC ?|p=jܨRLH16 GYC@GD)3$j  lOJ2+Sj!Q(5Q`b T* Pï+LTPv'R$x$` $a XQU4#4Ɍh\x@j wn@8 ENVē? 9˕P֍(-`J@' }TA#D L,:Dzq%f*t%y(ވ2O7L@" Ƅ@SJY  ;@q H*`$I!G<!aĀE4.FƼ^,݋` Z$ohh) K7:P.uu+FdCU2(4\FDш{̐o62Tx>eEQ57ڶ'Jx=!-} ʮ4`_\gaRB;/WLoi1UK^YK(K@ck5|Q]W:Y#F֗k`ƢmKeeaH|l`mBuu}c0&}&4`FpOa|!9ij&ûo9=ǒB2ڵih͕`:/,k]i8RjJgR bɥ1H{ByTaz-X=$PZ ~zDE.S^7uF)p{mg{g DT|*EfP_! dk5Rd'^w Yg\V8=(ֆo{I]0Se-Wq2|J-.lg^")6ZG)ZX]PEde}4| {sIpN `3*$Xqpx@).4a3 U3L* 8% u7q8<[?4>pNP ԰6i|dtT^wwtN VvPp5gDeGGs7"Z7o}bHIQp FKb45A i@fmN|v=(3t=2{ZtN(7T)u=d~7@CPp-m D)hC0D+sF6D׃@G@xpG).U)gƏWVBogwD`Ԑ=a'y5`,ktoQRB1' I!0Yp׍iW= JP84R@ C PG^xAcPL@h.PKpT$6G^5 ut`V*)v#K % f%pR80#JPDPSBYR*C%txYV@;S&Ǡ+QFLF!:^l%p .<9_M3p "; y=9BgPǰ i%ﰜ X%@Uls# 鹞2b/(c1ڧ21-8rlH2H0c2 I#|3cj~0)M֟9'FRvr+H$7}QYQARA z9[hi@3eG p9R6iPiPmSBxPpOhb|C*0`Kp͛\Oǰ{u s iCBX)+uzO#6 뾢T[`\qv;`PG;@Wp=6EvՒ*fBk9d[ t\Zs>{FPAApP=40t=γDB\3pA(xpZi=pI?=(t2-`'rG $sF p t=Z|RP)@ +y= L'4W80\]; q 9\a'D CPKtHr %t!`NTPO7B^ i&,`c~ɚ0C >ML5 HQy>cW`S.WXD)F .P)`?+}Eq; P ; V\AC#fNlrREFV-Of$vXPRGVbXLG9tk'^L; w%"SC7Td{#S[Z}W V(*7=;,}BYȟ}Ga&7E4/wXmּ]*&yyF`5p  '|Ar YrzNsNduCm|X1+`Rw`>K5P2}Q|(Ǡ&/ iTq5SC֩A]Ad{<]΃aq- =73yOv+ݪL<\O #=>bv Mm,*5Ի$ιQ[ WEYeFeH 7r e|(瞪f 7`d4~xc$D`R)?5uσݐ̠QeP&p =>wb{*łY_ۛ-LL^1 |7sxflyZ$`h#kM#],4Ul%;%ՙ{.Ch~ e/ 0ڼ_9qʨrg)T)WHl".L oEM,+$O`1)YGW._)1(XWNi.Z^+^! O*tp$s էS,xed<NLbْ1ufSk'.QP *YS΁LagiV vI pVgY=?$ntkd&MC !*9pWrOLB{;pI!h upIWsO=󢿩?_ A]PSGH$1,bmHł -ZwQy4Jv1EBRꔚPbrk|uj8dek V ܤA SC !NXE5nG!E$YITdK1eDYM9uOA%sQIeSQNZՃJnMWaŎ%[Siն<[qΥks]u_?aĉ/vKرLƑ%O\ٲǙ]^g~5ViԩU3%=zkرe϶Z3mܹul;3o1qɕ/j1sѥO/0uٵoGh}0w ~կ7]/{3v|}p@ dwSpA2#p°\B 3Ԑ5 CC}O@1MA 5t?UtQeQHa̓#}RL3tSN;SPCuTRK5TTSUuUV[ċ*uuVZkV\suWUaUqҍ5R*HXb؍hd6hV#g'Zh[n7 wq-Jܷm܌e,y!w^uIuK߆+ⷢ*V*9ه=b"X[ۊ8⎝^@O.kd /Vy_]o&R/2Yrza[[LKKiؔ((RULirCi6ڤ!%rm!he V(^ Q(z!Q{" ;;%f-Bn[Q oX{"7\r$`D=iH#|(ͻ˽p >/a>h- \9z^roH󷥙7tY:Go0j]w}1~! ߟ-Jx^8zE*9k 6ch0J:7}hz! Lo C mς rI 1c<(9;.ඃ\F Ń@ sK iauFw(U!c7! jlCA>̐0GIP4cD9lq)m *0o"2uP&WJ,G rx>e%z0!F|젣ŔPwi !kfs#" }QBjQP%t Bf NR [`gi!œpTĤAÈIAfj"ď:ED&=wMo8(9 :\m0HKT`ܠ7cE*R6aRuG+OjAĦ_M}v(.aeBĶ M>RE1Ḏu(t( D[{Ū ٯUkTޞW G]`0sb.rkFPPTW?UPC*;٠x$t6H<@ @ʊkA7d ]җx$ ?jNN+S oO,?#9Pד98'Ƶhgdcň澶$TB \fL0HW/W <$fW3D{lA np |A@@! [ ::U4 aP`?vv°b <(8f5s|{:ှK&({_'~|oGߍꭃ߇<& )布?@;>.qEBg~_WR89XzXx@#[! ЇMK @ @ @ @HK???> %8pL/,ڀ?Ap@ @ B!H  L }hpB,B-^J } 3DD8ՐY EL/RD`9b+% ˎD H EiYDӰE;8Ea+% hFP RHi|GH4Jt:F]DA_ EP$G9m u}AG >X>t l |L@ǀBS$E+ƈDUC}A \ kGܘ̨~ ōĎ$E9 (<@IPPILJ<(4H{䥑Dw(~D@ω#AFPtA`ŦȌ9PO M0ʤO;I|JxA_D7%BʪJA_ acH[PK`ˣtKKXK?ϐǠ@`'SAA*"p$$ 4F|MtF4÷LiKK L/ T\ `LS p4%jPb*+T/NDlTNXdNTM M0)9J/\!΃("ėcDK2=RDS ѭSݘ* 5ПD[PLHDMP?ETOTPUKpG#@T'A<$AB_hRV RBMF!PCHճ(ПL8"H7O'EK}P;5OЄMLDOe@U4ԙQx\#ZFmd-ʅ3T DI<@ VPU5]ԬXH[ES!K>`N!;h:T WtwQ RʌTɴjQ,W!˜ 4YoHل4%PHK  Hp#dSJPmM`΅ZDЄ@@3K8X׫WX*Eh_lJEKW G}pDA}C-& %W$L\0@eP\] Rʽ@a\]-21],л[X}] 4T FŃl]ܻPŸH8ZR+ـEW^r] ԄOA^ߵ Be_pP I]rAb _} `0` ^A ˉr`.a}LBKr%MhZt4H]O@A ݉-%]v_ BK$EӶ&!A"#8c'^^卐Lo̵Xi>ߒ5va(cA,*@R^+d^1(sMW_oPУAHZ@ A B (Gnʉc,FGfրU=v]@Aw֔PZ<1֏R֍Ie-(EMXe^ RpWv4` $fUPdΏe΍Vh`EtX6EFDtf8^8 $%XN_V[YdM)ևR YR4Ag}ԣl˅ehPbD戆J ^@aB$E=k$^bbJTEJ3Ԅ`h_@C V*Ľi 8.}QЪVV`iݐ(FEF9X}p5 g~Pf @ \lADRO]3"@baT6F9Ė%%VYFԞSh bb;h;hkP:M(0KV <@!p_#BzJۖl>M~EN 4UChn1~4NTC9oXr;F7 z,#;Uv} km.u\nlv6eDd#ü%? L#E$e*j`aLqeqش#]..KVwʭFdpeo(3Qڨ}IW W !gf2d#բfN9J5tև=trm ]N>>*l*a6B|A7terq41qBe' XGG4|F;`R,ӵKu rX*t x!}PM@S~~?Z{_ЇFH}mm7M v,h „ 2l!Ĉ'Rh"F(n#Ȑ,i$ʔ*W%L%i&N1w'Р gF$*(҃82-)TF6j;QrF`džj$ٴ!:<g։lҭknŹ2@ fW`38ƒ'SYiXVE.mz1iW<\4ؕSm_#Ykv Q7>8y9tţS8̾C[ݲ#Ğvɳ>=|ϻMp}O}>}fٷ>ǟ `V ~ JZX 6B^aZ8bcjd""^&xSxc_.#X2XSy#/X$I#K$PSܓQZ)Ԕ1rx%a9&ey&i&m&q9'u~Y%Mv'}' :'m啉&DRT>Ӥ7EJi[fiCodѡ*:**i:ktZJ+6+.kM{,`d:lOˮ-Z -]-ފ;D. k.Z/*ok/$ *|0kp ;hK9lb*9Un 95~zzk:f`9 g*;eo9nW*JCIHû4i P2@>#ΐ>ϛma,qjj4NXBB0E| d1p/(؀-P`w97؁ {U$ "@#Wu ìؐ` 9v@(`Yg.a @ " `"w2@@@\p/a:CJB pu#!;!r 6:^ 3aq8LT!#CҰǎ8(G$G&Q<~x  clDT(7O 7>ܐ?IJk> \iE<8(s Q~؈4liEҰ pLCKGӠL714Oꨏ! Ĵ,Dk/!3dgBvbU 6H]1%$cKiSTj$ɸĀszp3gF c+: l C!0<;.pF* 5DZx*$mJ \]l:㩔.ELA ltp=3 hp$Kd̃cv@B1)dxDOj&(-KH0:R4 ֪)*6jH䶢Y$n +"5{=|hœTyLƖ䱑U酟#AvpH֪RQB'0#A@z4%yG2 b 5 0Z1H#Gj05S'Ra @x0u8{(DhoA >  JkN8>(쀔?`_ X&&BS 0, z@I0)RChߑدmP9@L%iPsc#(ha7@P}2-?,-G)3e "T,='Df2–՘Ss4omץYNg" OL5s/GNz7$`%@T$$ИnZ3CF"c''emA8nw&r;p!ێ ]`iA o oa /ș UJc*7"y&:;P(>crO'5ԓ$ pF|ep#CwoT \(萭 & U{Ǿh3 3DރKG`P<@0\} @]'ϴ#a:K| ? Al6W]NE(w`B r[p@&6Buٓ|Gz H6{!!\!18)#ih!V`0&l@<- E͖%QޅC< D D%eR ]禍)V^I6 [ ,@@!@ hFR]ݜ@HU A@ cP@C u  3l@$! ̂@CnpqaZ @&A}|F zdG੆ndAr0N(~KK(P+iPH52X#@FE==d]$B*I?B?.$W($D EA6>Nd> Ffkl$_H${C@A/ޯTv<$H"HG!`@\rC>o܈$ ]@Y[zE"I>P K dBIQv$[ P6؀de&y@j߶Yf0@@ eD>0 3%wf|@aY~@qƀ$g'&8 t_&D!<@J@ w^w;s:H:Ȁ @l&抄U@N D#T@>t^K~Z~/>/ ) kyHfvG+8% S6^ `iT@gCJb" ^dh )D)hwH ЧDHA&u@Z4D^8q6ij 6Vi0h%wC*Ԡj)X LA1DN*VJꝦFN(2g,ND?0 Fg)&%A DY@ *kgXhUp =j@yzD?0 #`j t@|>phQ ` kk|+xh+fw(+瞆 VZk hpwøH|@9l`3k8 >bpFk &P"V̸J·D49k)ˆʦ I>΀"( X^D?PiB, \il^l~K!< 9\AtB4m) iJV)iFX%,&쟚-ƒ+CU,mmmǧ:쪆 $h *2 : hjdC@dGL  xh t@ XE,߾s~k -:nCC%$@mVI lR( J,ŒZGjBPCD1Tro.< |.ĆҬEl0h 1@(گ.3<@4] ;-3 ȵ^ q$0,11q$'q/B4B|AFTݦdC?>pA$%Wh@ 'w'r'ord&[%C-؃"⮈3D!2`-&Mjq?C8AH)WtAgq63?s@@dh$S2$A5!:h0 qBB`vH!.S.] 2(2> ,0??Sr ߰ D2@748*B28X AlEr5(r=B>?B?;?tA4>0B- 4@{D>\tIӎA`@ 4BAID@`0<ӯ@h@10 t Sv2voܼ,.Ԃ.5+YsZsp 5uNC, tA]?p+B,u4`g4lA@!t`CBThlA3 N'T8w&j02_B.|6+Dsiw[N6 (l4D v./B0Q'3 %7|(0 CDXx4BLwVI#vO?-|Xx5is7N[;AOAmk8}-s~'<D/p /,k =%[vt|Mts}w'|ACCAu 0C;+@ywEÌH#G  4B`֌>0h@OđWׄ+H?C0<96YsM+z9@W؃3{7+_C:ϾTZB&DNJ, 0>{̼>C=Bmǂh7t  !\1 @b-_cF9vdH#I$ͤF)Yt&Kj$*HїNob၆b<8ѓj 1VzUK}[vlXc\mZ$-7-^p5l3`E -fB`X֪ŵ9wx6%hϣIìqTJrNixG1L*tp"E${yf7w-?|nݒ.9f" Å e7^kn-wi~~y?ɸ?>4Y 0 CI=< E̢~AƕZW9//0C.; NXa!_n%}6$.&LDG)0XJf@}H@ !,tд6li4}ƕsy2@@cFhF%t<茅&[\TM8)#}jH@ʏ@Z631}5-ݜÖUJ-GZhKX8 1bd ;L#3q(\td(n9#pERSN;҇&0H |8U%L$ƝS\h9[]gG2= c /!Xpq{*nΪI4x !v?`ȁ`c7ޔ1<9#K`~܉:9+*fK=W#I6vrΑv/0 Ӟyl$i輻*KƧGb@ -XFB/ődI[s x8Tv _};.pRWыTM(Q%3c~M<'>7$IHaZzb]wj/Iɓ0 -0c^qG>Iπ:`#0C 9F/-Kp·%ڠڢdЂwxBT0x h10Cap !PB`-h:A0%"\∐&qxD"j- 1q>S< ԸB<  PC` H@K<"R6NM"?' !4+1d!VA]8kT&r DH)" X#'HAƙ+B@;9ip t4"U28:DfU@7`B8HPǝn1q+K2ٕ>v5A| u$-cc8(XZ׾mEzYJv,e7tv A .lF\\>̵Ϭ Ou$nV qoԀ)Ho ^|O@pm ݆& Nhoߎv%\abdq,a|!̂36ŞqYlxpi,c &yqocd?n1 xI_Ad*yqle.8 [e28Qlf68]=f:8θ+lg>w8ϒ gBK8qhF[7Nu{khJ7ZQ>2/Iw^AVKz6YzV+(~urbMY 5YjjUҋ1 ^k+6lg?і]mk_mo=.Vnw6̍l~l}!w^px>s QD82-o!_b?.rz$GY>E1e^s7_sMyЉ^tZFW_2t?Wqzԩ^("YSث.vfGÎu=npW{~{ /?|7~|)W||9wT&yI_zӟWYz7ܡI?{}s{ \{?|W~o|6ϗã?}@}/&?=!\ЊYEvV1Ah4~^`f"`@FbB`@- pF &f4g Jvv*(H DB`Za =*.@_B 6I0z:B`#nPneҀx`%h`aJ\m #ޡ ! ,Z! ܠ' 1oUA!O'аD m ` ?C p+Za l#A! A = r!tq% AgxBB Ԁ/'Na 'f Q#o0a%61΢AIQ}qOqM1& ۑKa T%/Ara¤K6B:`.!!`Tr& A  ' 3@el w&܀_ܯ` f!  .'XRRp0YrzE@}0&aBR`2 ^: @0\+/&"`"@;";, a%A5A'Pb^.ƀ; \ -+4` v`' s"`+ iQ5`   1P6(S3\p0b1`^ :Հ'%`')A@ϳ .1" JN 7BB6E!B KP@gP` Ys)6&7,'VR: a)vP!@BK#..s=S K6 @nb "@606 Fo'8)v`AA :#" 0b 4h2@P)ςej`!&M5){B ]r#.`?#J H{JTD@4Na FKFEV)AB#'HGaЯ)1V+B5s"E/SN:1DT>2>K2#6 :#AL1T1b.OSRk Ru @V1Db+OV`7@ZK1Dk Lg FN! P0Հ2bگ4&YSE1@_[TJ\Wt ՀQ5 a ?K]H4Bcgp zBZ0i(d[1 0'D#:#fDaP35lE)RW1VǔM[t bVfapZN> x^=TS'"DRZau a4vSƄrU@"S`3` K% `ݵ:OL@x;K - w tRed{vALja@x_7i3>Rx`+0vNk\4'cyt& FAzqdѓ?M(#, wy$ `5@2#` m#y1b 0{j]/5e6|aT/4#ҵK@ T"}HW8#[9 `AB/Zt!D #Bao"~1CwE i=^,vp3#])4'2*Q1#B+#Kvd>O32oT $u0QpEָj5AWR[w :7#f`$#D_9"UT:N9##@s7u]X[Օt5w44q4=1žnSrw!'4$2CbABUC1b 3LZk-TFr ^3yP~7Vm'  H-AS497ޤw^)<5#2mAWa5#s+tuPmu&suU)=PBB] P!: b`2pZm09ߡA5. U$#F~ZP3%YbGyhx0R9o9OtFC@Ao"3_q+v@E1MWRTZ#Қ27Y^x$we^BD!Z7 F(@8B6(s(cTqј*AP/D@o5s)}1]K(8g D!UUEy(!GwhE@6i[Z'6@R51]5)wä=bsBge;S'8,gX#67yB@PU7v`{Y_=Q&ށݠÃ$#\T}<d#WVQȉo@_\-XKʟɡ<ʧ\!|U8/6:B:#:-:.:1;;<;3<2<:=2=5=$=?B@;@;@+A:B@CCDHFFF-FGIG2EIJJKKMKGKEK7L-NNQOKNQVRIR7SSUVVYYWVX3WYYZ?\\]`^`^_b_]_Z_1^`_aIbZbDccdc:cCd>d.d4d7dDP1ԸS =NV#4]Ie\*i1 MU N8Qh=!:9?׼–]:vәiɓpi?08 #æz* 0|$jZq Z:,)vp\0WKaNyMGxAuzu-c?i,fa53^("pkNrvfϒY0m;dSo;J?Sib[.[o78_5nOm=L@E=D=o[DA1ӴpvZ([p,{[W1.W۸DAL1f\SLiM1&M\aI!;\Ql.tvASr8y4^D|(QyZ֊=1lv(8|*jL1F-Bu,WiL 3 }K\ @;5=A`_i3[NC3@xsDWhP(D * B} ϗ {¶pX/~p\w@WGM 2Bب-U{>ofTճR-yAI؀P~%`| 60-@U5ꀤ0 Kl!0L4A ,REn؛IuHx#T0*nأ?q_AVЌ21U[)u ٩.۹a8;D(bH7UNp.G{ X5`)hLJ8.CMQ0,,JŕgD@jT*vIKV,-2kH(F &etyV*@@(HKETFP/a ' פGSA3!0&U}9BRL}xtl*c䏚L,N0]g5reYٯ*|ߑ0)`}T!-0R4nF$cv%l /'{%IV_biUuq[dQZ 'u؏t|nJ]cR4XH&&,_\qV;f5a>?KX4R{@ U p[2q}DGYV$W]wNJ_pCfA@?kTJJ'`%4-v <M%=GbGoSM_*K uq^C&)Dj'o7DIK\(&eMb1jS3= ʔLFȴKtx]鏩r^Μ"` 9n8M[2 >ϗ^8kW `5 p^ SrvzK VWIKMxg0[No TnI)Jp Zz .S&wll=>)ļ+^aZ%/fhn)BfV֧nϨ@5eK~ڄ_ (A56ШT*8N9(tffU۞Y`҂a(vRBsw,I5Q>kr@ -ej  u<} gl}}6=ʺ+$*9M$jv@Qoj qh4w*,P$ !K(T>U#Z]pzmf{g DS}v*#GfP_ 'd&FW#4R4|![j0)zE|fusa3bm7@15ZV|f`4SA@Xɇ-^qQ4zBx-ۀkwF̄o)5TrynfTEF&@N7Cη 7( qp6C"g "`B6pMQn 0=APPkXW#׈+y@2 kcyDtT^PրJp;qeu0QPMQ6Qt3Z"1x*$-LC=0`T*FSѐeƆh' ףX3C0O/RtrTOQ׳Aw2./bؖ@rF/4BD%r=f[HM:r=y$> p"R@@ 4@N<%U*0>,OB'EhL D3db e_©0ӈ..Er #d0c Ơ׀9z<&G9]fo;Bi Gi NQ65r 9CD12"0W 'L$s.C1 1*=73;!(d{9)}Vd<jS1r,ڠGYQQ-:6ZD 8z4=:9 g9M?NQEzJӢr)/CIT:vG;:)c @Q UQbzc lڦnpr:tZvzxz|ڧ~QzڨjEzک:Zzڪh:Zz.ګlZzȚ*ĺ:dzؚںڬ:wz蚮溮ڮZzگ;[[{ ۰ˮ:{{۱k";$![(*ۨ'.0-4[6{媎Kԩ^8`n57:_ Q&aV0`p=Գ^!Vb+}=hleb[b3B5 u*^c˴ZvSr{t[[5?r˲m:d1 7+;ehI! c[0^[a;8cPy@T\8Ame6x /wTVj&g[;!: 4xV nEc [ehP:Ɛ[P::/4QٕSQG;4bcp; n]n` ) lGk쫡hsuAnRDG)X س+VBt8d[ ts>yFPAAAph=44\<:PApy,=lEæ3w${soHhL4HQsy?dTX-GTH()F0 -0)`?+{q K p ŎH- ;~ϵ ja@^3Db&hTTD%j4a"DGR'~u Bu%%tfkDhY#?mv%!S" Td{#R[ m|W L)'5Y1#dȝrh{GEu&'E/wXmչJl'x**7`F@m?l0JݞoG׀E)4QR:.+_Bw`>K4 ,}N\(Ɛ&/ iToSAp֧:]A{(<]gTlmqA{3sW]k׹\ܪ i!"}bV2\ &D{% u=7NQz&uM% JOETsiz{@\(ُ;G ?0)T4!t\Q%3,(ۮIcNJ V/@-čJG%u@PCR]"-|ٽPMuX1N%H RuGn%]>LHfh `|>g1 G%`d4}bqbD0%hL}QegTJ?UB\מq)5D |7rdHe-G{#jMmT4pzp[SL}2FΩvnb0ݎ4i*TʦrG)4)Thk-`L oBK2Vk[b_NMRz$su$fN5Y+^ HU1b]pspեŽP(wkc30_^$F,Ys`ygM|E4 Xu9G_Iw hݖ-fߌ^qP|;SHVmI7?xcbSXf_``6|$ $:\z풧m_Ʌ=poZMQgu)y@?~1?Zk '*'8Et*"k(NƠJ[Z,;of*v?%ݭ\ʟRzmĬk *roD;2q kq Vzn k2$XA .dC%NXE5nc{!E$YI)M~dK1eΤYM9uyPOA$ZQI.eӁBN UYn+RaŎZYiծer[mΥ[]7 _>pJ‰/fرÑK>\ev%ogСEyiԩUvXZ2kرeϦ:2mܹu^k0o/qɕ/h|/{̥O^=ֵo[ŏ'_yկg{d}# @ 4-E:pA*pB {0 3pÖ.CCCK4D DqE3$Ec,Ek;oqrG w 4r!TrIԒdI(/s2J*LlJ+.,˴sL2L4\L5ts'6ߔsΘN<73O>)A"GfPB 5PDUtQFuQH#tRJ+RL3ՔP SPCuTRK5K;S@#FU?^UVfhτh0_% ׼W%.[]/e[SqhZv-mѡnE+devi5.rjwݮ-ۆW+{ޫM1Zm_v_z5ۀN t]u'6 b,7݌ثG&d+6yWfT~hVNaE{ږgy- -;v5>pF BZb\7@ j0:(FaYfai9 ScX"`-ly>m{r СG p :4 "nl[K< "Z t؂(ؠ"vDh1SG}?t?|V ^kc^ ~g{v[\q\ t{z+{bGu*Î `܀=c G0-i-kɞ@.9>0t` }!c ƀAa7a% *b46>xCB?lm~i  ?w=#{ӡ@v@@P0/}WQ; p?(ȉ}Z\]:"O @} qKCni !rE`P&% jѩ hDT /`4o}c-50xT2=PP` vl=6N3:.xS>r=hOVLH &@:x-1 tP?3a|H}~AqRys (I9}5:K24((0p @&,w-[- Ԣ˨@A>vC쨡N̒ޣYQR0 ^Q$ M P?Y0DM<.6Щ jp`iݟO*dvKR9VgE W4SHYZ U]HR6W%EDZCjF$@ ]&DF۞ZqfSx] SY0/poqnOJ OxEcPC&o:ItS; <\.>:AD^.BrN)7׍gcCQJ1p]k$D, wTFA4 Ky4` ?8&25M$Obz N`RKeT8H!!Kyp7!Nٸ&pXB&lB'|BYJl{x-B.B/B0 C1|@|  ,! GpPrcB%|B;d#6ЫjB/AAT@X34t5$=L{؁P"A:C;Dq*dABERl@ XhD}hxJDAD;D#PBQCE@R,FR7 XqGHGXgK%9Dz|BMD%4LE`{HL@QHd;sL T`xJ|;HLpȏ;0D 2PFDLDTITJJGASSS֘G !C&E RPm{LAL |PC|6S8G@hBeB3P!ƌTS-LȄ\SlLOdT T{UHQEX ->E:TU8\jV:VpWјQxVP?1jViURהӍ߼AkD j5K=Xre;s/Ŀ(L)eIV!D0OXmW~4O,YEp_pŐ^ـ;,"s Q]%]Xm6ְtߞYOcŐ㩠c٨1Sh00FC `{XcO^7NhHnNpa8XLnBQbpKZVR>MUfG5FeXfY.DIe^X%D ]<boNZlԖ FhTY>bSnv]l߀s摣th {0^(JChF|JnP8bEԀ`guM]4߈{P_ԽѠ8f̀BL8a蓫瘮C 5f c`m$i}R6CW=؀Eq2{5% f@f1<@6\NlA0D&=RF8D \L8\ xƑ %kQB)RV0Jl KNmZWjh|QDVs7;54Ak&**t^i_&nˌmrNϢMc:?hD48Ʊak\<'<~rN{gfnt,$tU%K]Jcs 뗌7jnlU̢MaWXt!%cMR](7w%+ O;# v6vMX_m,,ce@@klwevp'/#t>X4L^yVz%u+qw1.wQ?o]xOx^DRqnAѸg.KIzBȁٙy.~s8D$ppZg]\,!.ww  cx?y됥V׎ [/WTzޅ'wdIz}ERVwնpH |$SPJھ{;MdC^&m}gR6JɃg-rۀwL@SO~_8=گs*sGHy4@} b/?Gt?q; `/W,H 2l!Ĉ'Rh"ƌ7RDX#ǐ"Gg$ʔ*Wly$̘2%&Μ9Y9'РB-gDF2m)ԄJjU'ϏQrְ`ǒ-kTWײMٸr҅+.޼zͦmڷ-l0P #n]'c 2Kg)v)&Ԫ.z5P_,m[餲wK[‡ ~ܛ3o4xpҧ+4ѩs;-^nY<ozynwo_3Ï?y~C7ax l s!) [ .V!!!`V"M"r]HU="g݌5֍#y9$Ey$I*$M:$QJ9%UZy%YMZz%a9&ey%׎mgUũӜ9Չӝ7Ҟ-ҟrMk&*(JkMz)vXiz)qhz*o *t:++Mg ;HI,*K~.,6lZ봀^-f[n{.n.랼ݻ/{ =5Rc^^5 6]5]3B7voU2ҭ-uO'wtۣws|7 ۉn;t5>p*9C&iFN`N_/穗Ea:]_9 M8(MФC-D1@\@DD>~.[,a pi B"!IClAhW{ly*tr dg@9 Us.Gֆ ab Q@\66 D&tD!fu(Z \†hl]v!wp1{/l lɻ8 ! p!D9 S.rȋcm-DyŎ `@H8Q n @H8{! $:C@F1āaIp `G5RI7i. 4ʔ㠼"N/KW݃n@j#cdi = T$X+58cCYB@hͅXy̍$DF3-&Ԅi=mQ&\zMWU @ GA)Gv\@?2E:uzK"P/=@VtӁEI*rjhZ :8I0$ 1讁 T!7WmF AKJ d LmAy`;Ç5 _rqm?|΂pu6^ t{j pP|H8|5!?p_{ɣ)mB;U? )# BUѻm-`aH(2! <@"2~pNq !A 8{a ʱ!D0zrS6ܻ; Ď   UUX`Ŵ\ Nک]PD Z C,@@!Q ]P I) T) `垟!! U2l$z-3!aVm W !AmȒ(j`tIFX`PXҩDm%#QiD,"Db`¸& !)'"尃]A" b$~P`|b͢\Ԣ-$-J/E/^byȢ1:F1.c] u(30NY@#rH5b5n#Y`qh7c7Wy9F3Xm;E;ΣWciȣ=E=V|?:E?S$eAޣ@=A, BGC.$Zd$z$dõ\dp~88T͠$x,BD0@<FILڇ:LC:C? `9`@AĂ<$.OG*@ L!x%6SA@t$C TYƄiVs\C'ؒL|Ȣ6 g VĤڀڭ 5-RF9 t@- r᦭x2n !DD%6B-n2>htC%$@lH:ٶyʀ <pE'|@^/FmsoCDD1@}q/0K3@nnbD|<$mCF+֖NABFoϦno$j@ |p p @C= %|0 H+/sB(X.F>ZFXpbh0=`@G$/ o1wTGq$i0qB8B|A4F֯נ>!p!h Ā4#?2$CrxA"!,C? on0C%n'b0+tr>x*x [!kA@r/20 @pr!x!:x*ӨCB`@nLLa+<+-<3<r ,Ȯ 3@#->Cr`_P+D1\H',3(s@sA=/sݪ <A=(4(0ՌA` 8AX*h@n>d+.& <9gB?-Ԃ.du+tZspZY tZ hB++1][sA@!pl@\58(h`N8(pc/T1CGϵ.ep5xuπHkB./lr'3lG6|ZH0 D\DB(EHFDdG>-{ffgwgs +wJyjKx{4S3KlL7ARpCҶ*Bxccˌdž=.@8{kkut kA?h@s@+‘S.3wQ ރ T4CZN=0b@whs:{w9kk5vsI6y[LjweN8540&i3uAP $2!L4$h†rWs矻G'-\vG+|At(A>!;S8 tS.+4f@$0<ĨI!8)4(@2\\93tz{,z6(́wv!A+uK;[f,»@XN6 h"T»zJyjt< +B{ρ4AI2 AXdzd9\u_{,k/) IHpC9CHZ|Q+D|kGH'<4+|u/fVo 8i=<3j/3pNjl) w0A2 @pY?ˋ?=+.`eBoudzIGyx=߀v3$\K3?y}XVJ%DC>ڽ>ʛkSH?C>C<#y~vIsxYp A?;k.og_? 6tbD)VxkndH#?F#aa=pXr4c /@@#CNH$yiRCsjTSV5ǥ[vP_>fn…UWޜ1.]Xo+R(3g*Z!Trdr<s4C<ݑ = 446Cj}eWym5+n&ܷo[JJ3_pӅ޼zU87Zlr%$ni0mY v0!¥ --5~Vj9+Z/:fn/3ФZg l܆<2) {4Pf"p(܁A$Ŵ wMd*w޶ʙe4, +ҎeK:{۞kPf)*P#Vy:̜lZyYTy .Xg pGGl/ll|HU, wsv[C{WZyD0yH!J` 2 5oYҽy3ŏ]"!AZ#{vّ]|$=ǞrD:B %~F20.Vnj^9|@)<䰈%=!_ui.=ƒ;P K]R3!wBF!B$І)JHE, n99(+rDoJX1r" j,`@C[RBj* PiF GF0hzbF$C *@exP-lgRȁa'@p"q)}ܤRH3 r7 \%R y40 dC1}c&I5ȭ!J7Sgk&IZJ "pw[b k%Ȱ`8Fz@U$yOfƛ'diАP1 'hYv"& C2VQ%HC },> D`!X@9KT3*E5+4H@Q jsK{&549=ц IfVQ6%OcU05YY2U^ŭU*]+_c|Y@ `Р+(`K^(+e#&]jha= ,a 4p XDXli[[v*gzYdV" p3B 0 l1]t[]JP+qV&x-e#pPC!H E|;_կ HwnϣTI7!x~"\_=R uaHULbK/17U-x9ފyucC,~7}~OW2~ow~ɏRp2x P$`$ ohS dPl|o$h!)! % < 5v!ቜ@ Ҁ A@ b `p!"R%!t/JFK!J` k@ bR"1 0" a=" n%(!ݠVA z KN_`"@<,! !؁KA+Jy61g Ja PE a}8/aJ6B:@.@! h2: A}! & "`p u@%`s   @f!  .(lRR*P 0`mr`|0'aB at` !B@ܥ" J.T"  "Z+20 jj2R0`#Zo Azr H` dS@\"2  2`ks @+  `K,BL02'aR3!;C`!Z LP R^`\0! 1T>Wr! PZ>.5@R8p`i Ana6B`T[ !/I@Uj: w4(p! |@J*s!/T/aJ ? t J  Tb " &~2O;7kG% : (tBA :`!"@O}! R+RHi %!&'6 4LjIaTrcO RwԤN&aDpUGp*?SH) A:r!D}D< UG/`SNa;dj4@?J0!6 EYu!R6;J ` 5E!t`"`t-)co+6_pGeQo!k2U#3aba&% UZ<6 @zMJ@=6 w +Q&Mχ F{ z`ul(.!z %7 .`yބ%P#@- a O%fjqu`\v>n^c }Ҁ[/@%%6e[gD{b 0U2aj^d6w6ҷ~wt/!J@ o[`Q9ĶB^pIIV`C/[u7F!XbUDF`jS_N$!^?%.bXfPwX2!>`:EqUC`NIFrm>x/E!6bZgYYO\)*9 סjVkC1P%$x$kBjtOU"3kXr!3Yxٹ\#y^BGa[5V[+O^ ~_L!arXw G/^&o<}z0s 2'YR | -r@scY3)!H%`~Թ2%BqofC&6S"3s53+[v?c|f^꧞^뷞^Ǟ~VԞ~/_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{__ _`^?__ǿß6:B:#:-:.:1;;<;3<2<:=1=2=5=$=>C@:@;@+A:B>B@CCDHFFF-FGIG2FIJJJ6KKMKEL-NNQOKNQVQ7RISSUSPVVYYWVX3Z?\\]`^`^_b_Y_1a_aIbZbDccdc;cCd>d.d4d7d1oÍu4D*iL1EFD`T,xWhX *,=K\ ;E>Cp)я4^ZC?鯚@7>GZqc8 ) p}۞0?O ۫ A@Oxz%.`{/clRLJ>ISl6JA[@C@ޔ@ d·!`BVTj)UB,*SkBUjx @<Lć+P@7 P+U chFpR*-pwLUhڰ^r*@D!G$'L;>4,L M<wQA(΢4^_Y cF ,}[JcdjLT! :įd2!@Ru`8 PЮGQa'(o}RPoc(@EAB*B+aF0f{ P?XRﻓ PI"8uJ >X?lz숧 hHx%4Ͳj5PIzXđ~wLYJ#cpS ޓ}a@ lۯ_B@ YNJhG9 4G?9؂va Kab㙚4~}%Z_p)X F,1dKx(@W,oMu0)tQ\ddݴF}Ɲ%G_,&U9.,)Wj 9, 5 )8ũaj+o'FUKܟ(,cPriؓ4G;4LFL^`paI ^Z̧ޫme!*U Uf4R5upj/Exf9td KuXZY*.Qb7,j|`H,0lL}M{c {$dn=ﱑ}\7\7*_ٿmV^BvݲzNbkhAyeJdb,~+)|?̊GtƯe={ ^~j`[8M0F~k)Z hCۖ"));ߛ2Raꄈ N K羄5J׊ aեG|d[+ ځT9^?jYq]?8`81u; D~ay_?{q(c'|XeoS ps]Ok,ioۛc\KaϸWf:ZhNh楪D]V * a6#V( BRR+B.v>eM^o0{,GnWR EWԀ*#L%gPb dqE1uJ*Sr6awElsd4m7P6Z*ҒsprCXͷ-aQD{2kg;wkMG+QCbq%GvWdg$}VD! 7( q܀9SbKg `B9pRQm 3wCRƗP`k]#,zC2 nyt^XvWJq;e pQ`QDQ6t7WZ&1*$ .TDE(`*ISҀmֆThXsCpO0RrWOQ۳I&6`oD3 be5F3DF4)&YM== }$>GqBb@5WHCSc$='yu-8,@nd=RaKtr8^|QI$=j'HtY KP@0 0 )-_a !Ѕp B5,Ww.QKT+60GdIV2K'J%x`06li]8*1/Km;> 4N P<@%*0?,Rr'Un%M~q3gb e`iG .iGJQ'` .C_=V63` R; ٝBdv$IǙs5i i Q"VՏ3 <1+01g2di-x22. 0`SU'2V⨡KhSV=(X'qRLYQa5J86.-;D" MQ9? >9ڤa-.2C(Vju0Hx,c `Q@W:2v0d12jpr:tZvzxz|ڧ~:ZAڨ:Zy_aک:ZQڪZz񲫾:ZȚʺڬz:Zjqںڭޚ:Zz꺮ڮ䚮:*Zz+:{hQ ۰ʰ;[ګ* "[&{J(,۲.2;|4{8 ZQZD93TL6+dB&m5iV 3=A@huOM[zpH#is!W#>'1v{qVxzTVPj۱O/7,wx%P/ s"c{caz 抶o&t*JS{bː;I>h@#dI 9ЅSdKh 9/Vi@&XhZ0<': 4ɼX mEc Z@fx:ƀZ:=2/4AS@V;'5e+ m`!mоP# 5) Gn+ kuBoVGyX@ܳ1BS-C@p,T=C{FADA q+k2>$9_=;Ay0@4mëC${rM=2_kK`)^xRG0M=j@ۓŦ;" Cmt4jLP# Vx%d _^; bqk 09_'$ C`KHb Ut!N4TpOt h&`Vd933C>VL4@HTyGdVPX1@4 DF ,`)a?+%rL K #q厖0I, k<иJl@d7b&TXt%nabTJ' Dhu%ewfitn%']#B y%%TFWT#e{#V\}7W6M-G; Z4#ëȠhHu&gED/zX@nּz'*,7`F@q@0Pr TGE-75Qh(i1+b4n>K4@2 ~R(` ؀&NU0m*#u  +H\iуMu|윋 Dq |ע=g3|1w+ݪlt-F= `xSD8@`ZӢ5rW_W QOY1`lll]hgA9حMjT$=lBP!R@#(˒ ft9Қ_A=⬚jtWbl]$@cR`Fw|e QP`uX5~%L<Vx"JҘ,,1 Ur"e #-b V,-5Ԓ_.quTf@;e֖1~Hgh d$jiw%5ao5qfTD%A5l  ExE -.Yb*ɥ2y,e~ל.|La 7v0 HeVv&J #nPT D%q yL%=%>1hzh/..Wdr%*P|Ob&`DF$(oJ,4c9Om (Rc=x$ yg8SY7+a 뱅1hb`!q╢IB?у*HŋwvF.=ܾ{NLm4GVXTk',Q@ 0YYS΀,&ILJ n, gaPSVqi==@cybUfbdI0d;L`:] cم>b`V*x`Bjxގ?x]BDSF8loaB$c0T2rƭ/+[?/rAgJu?+ bϮV~p1ŪNx^%Z?ۯGkؐ5h_mh#XA.dСB%NXE5nG!E$Y#>)UdK-MΤYM9uOAYѢC.eSQNZ RYZWaŎ%TY+ˮe[qL[W\yoO%\aĉ f Scȑ%O e5o3_̡Q~&]iJENkر),mܹ5Ӿon,qɝgsG2,u Rwm1yI{٣-?}p@l'>T/UZA#$B Uм ;Ò6DK4q OTqEJEcPDkqAoqGrG 1H"4nH#T6$tI6<J*LJ+22,˿sL2p2Ts,1tMڄsN:5l:ԓ'9tPBCPDPEu;5J+RL3tSN;SPCuTRK5TTSUuJGhRVcuVZkV\sEU#^kR6/͈Q9/g}h1b6jXV.o_}o sm+Eǽ]u˂סy^D޸]_~ }'8.Hab؟mxb'fሱxޘ)ݵ㏕Bb:eTnezf%"qfyeit=ţ:.Tfi qT B`!U`ꄢEvBاk#§(`BFU| `@7 "Q.(4q o|Xs v (؀:?^vdHҤ\ʼmh"Cy'M<:>gw:|s]i|pGO `'H L {XGYoh3+D.\Dُ à s!D 1?3.#!;%J@)|M4! lBS GXs#IP4CI`q9)Bd%: @r@O|0ɤ"5OtP" l>\xi0!F|젣ĄNWh !(k)8*kSgK u;k,AMB9\[Vk\[^ kTߪw =&qZ]nM @V_  !UA ނhQG* P\^zhz9l/"yKFACAX+9HPqOuxS `(@QC^O氖j9c E2F/;-%_ c9:V7,Aj:l| @al5(F.>d?wKܵ=u  *2ACpD~ào]`(,0E0X4/ LY_;Gm6u0]K !<^B:G {Amލ$Nn@;Av,*6 @,~ڎ;Xi2wһG L0?F!ǐR UvAb>s_Av~qIreQudYYwc a׉3vdiWvKq3wdywd'xƒdxwdLx@>g*o`~>?ΤV40. Z@VHt3(E&&q{^}}{gb=ύc[<u@7w_G&쐈B_'~.`s'< M'}A2@#X! ۍLJ\@l@|@@ FMx?Ԉ?꘿qXY#?c4AAs  D |8@AAI =%c' 0ph%\B&lB'ĵ AgPB-B.B/B0 CAgxA@@8$p%%LB'%?:bC٠k.AADT@ 3, 4$5<=| |X*C:: t> ABERt $>XDhDhJLA:DHBY1 *EHR,FRćLl̰|RJL̸d N\ !5 IxZT<MtL$E< 4dZ??5\΂K@:9>MV4Ë|%Kd8H/#Կ L`*%SeɋEJA݆:X(WH(Y MAEN]TALZH2V ՠuFPLi I~mE # ~"]UŦyOiAr[@V XIP Zxۺ]tBpР9Qy Ub@@ ۔ Petq;5(mB H]B- ?u,@w@ e] |;ȍ=|eH%8ЉZ帿،uQe^|J]@LI} O^'_m_|4uC@^O([]ͼ= : *^ FJkLP Bh fDaܜܚ]ʭXJDhSaM%>#~:$Љ-&aԍ5_ M4Kq4YM ɥ,VбCxؙMّ9|؆;pR5UWIOxP8cȨaSئ08Cd!d|pcO8 9nheL\N֣d:bMfBY*bKAғ2Xd|RW (nZHH\d]@e>U `UB\^XZec2g3F MuM3|hF-d,%n[6:ܽF.8@ۗNY@RҮ,@fag%~\D44hȇ6gEV=dBFģP"eLBLhiq֍5童CX55dm ]egf@> PPh2lU(& h(\,]d# |H5\g f(cEJ \b@N\n@0DHj#=kPh@ߓUd^^d8\ 0ɒ%MVY)S%B>ӯ3?}?}Ͳ6kP̮blLC Դ+@%,$P^jFEzHRNeBn+&n1ܰSNh#5A%[ihpweBV93F~o-FiF|H9cn> >_Y|b4ZdӰd$NCtZL(p@iB6䳍4;I O   α- L*V9Y+L ' rRWL`d7woys8o|>>k`!enqXf61 hHKr/|@2v\Th'|I1}S.=ynfIMmnbKqmDK*|p6G |áZquLJRl*uHxY;kds*5EY*jۅMI,p=>7QJ&_%vUuchA:E$@XgOj=ut1ć=2u[%wD}р*?0oYxPu `AoKL?seQSxM,swBDIXsr 'erg&#@) o\4VA Gc? fzdw崍V@ П-geDBkWx>:qРXB׌7crTL&K&}gR6L{-ۀB y@S~8-_=~&q4@\~L(?O_/Uy:E/lK5cA!(YhЪW+N 5ؠ]VٺwV7pmumF9tÉC6yگ{ԫwo|׳?8}^ro߼>ᗕ{~~vBK *G`B-x(^L]螇%zơ)&Fa}"#uآI* U#o܎= ֏ (H($M:$QJ9%UZy%Yj%]z%a.$G?y&i&md&uRC^Psg'P|$(I^dE)gt"y'J:iF>J)j*n)Fiz*瑺go +Z޺+k ;,R{h*K&,JM{-VKQz};.ш媻..F{o.';0+p +I0K<1Ohk1{1 5T W$&7rG#祲3Œߍ",3?4ͯCWsAl4o@2]Ҳ*4:RmN}5{Ns^ԫn~Vm^ؤ}wؔLl6<˝]e}vtwj7 \"7xp~[8俥ە&Sk59G!B1)T$N&cЈ8А.4h Q"> 2>Q#z _iQO0dFD! q=Gϐ1pXxާtw$k;`!@4ldp1/qaBD8; H0, }@ , QȐ!H `G|#zXbyA`:K!R!Q@@ȼ 8q> @ F`H5$F)%yD6|#>ڀ?\l^#|R:AEHv 0l6dm#РQih@6yGF F an4.Eb])1'̇vĕ*h)Qpyˎ̈́XAe$b((EV3,(&׎e:d.v[:5_WHGiC!P0~c;.P ę$Dj=-C* \JBJ$EFj9t{ h8!K b˃Ct@~ xT :@ ,A ܑG6d,*>xCp( ?+h,H 7vD91 vH7A`C- UzW[u2;.d bBr6(Z#݄ZH,@РC@eHpt H@@b 2,R)?yKFoAz9j ar4Bw@Z(n,ΔbJ Dwqу# mDi~}ZzCS$' DiCM㾆0^p\;m>i8>(=|jEwTԁr܀ 0Ed 7(U{:- kGɼ h2AC;` SG#P %!H3Bİo?-d#;@ č !!R XmRՐ|l^ƌ d @ĒET NU @AC,@! _P8(4S58@2]QYA U@,]@ $AX@@,D;|V"Q$Y "Aqܒ,ie ED4Pi"$NFQ@#6".'9F;t"'6'q"#d$i5%V"f"u$".-"b"q"0v-cod޹#2Z16#am0#4&#Uc.ʘ"67v[HcmP#8 37*#|#:2;cXcq#<~9#[#i#>#=U#yX@?$Uc#B= D/ܭ($_0dCC!`F*}"-#ҭ 5- B@vnr (`]J.6N LfD0,(V-ؚn۠.n Nog~{ګ H/kȿ24X@|C0,@{DF,3+ntG|,Lҧ HLNA.Ko/oϺ t0 x0 @ =0 =(m Āp ~$p{,0C,X/\KPتk`0>\ ?1(0$go1L1?()ntB8|tKq C?> lA !rdA #7#?#A !2 =O-BB3%$rq>|C*t Wr!g@s&// i @AlA 2!rtA Ђ:z2B`iLTrS,=+,|;;2 k,΀ 2<A B*2?t2ƈ5S̢A7nZpm @HsA+ -A) tЀ#D CD@[/8ױ8/cN?6.*h@3 3̵Sƈ/ 'DTCBXhh2 ' 47:Rs[B.H*AVVpӂXh4@v./&sr*',MB@p@;p"w{ˢS39/+Xu+e[7f3 'wXx4j/8zw4KsExL7ABJBBSK%qS4Zt4v3.$yBjku3 g>wg2H{+G.=H >D+)%C0&A^08Axbob{kH?0wUWe4 (3#vK-M3]H窬iD'uAT (3O 7`9KSC-Hv++xA3$=uh2<*@w-M'< ;lCClb\@J@CD_ʹVry:-zy:::>oh3ρ*Bt'7{,\@G6 UEH˝K9׺{Gt@g{wspA;Au[+dw-œ weH X|o(?}x4Lh) 9vdH#I4y6tfL3iքRJ;ya~E%.\RL/^ld[P"_ʔ1ǩ.]r)e[=@ֵ{7Nx FS(}P;Xķ:LQ F9wMѣIuBN,l/[pk3%[ƍVԪMj+}sUW>׹w$>?"`]!؀_Du|{~K_~cXE\ryG‹-xj.3 MTqP^d|!#e, h0X& "48 wGte9"$Xo1 VVdǞK=:exrH$ Eo]3 (S>h+1J7goO DXB`P8i ]XR`hhC5+R.t! E(V`2g@dƮyk_]lcVlg?іc i_moFoZY}.LrnwI]o{X0oۿ p\ o?dx#^qt9w!E^r'WSrryi^9ups/=ЉI(5tOӣ>uWγuӼ_>vgWӾvCo;>www˺?x˹W|x+9)_y_9j?E|IƗ>}Y/շgzi3~}yP}<~_7|oDK`*B|mGRw{I;2h  ڀ/<|b .Y@&soد: o~ h$6`f /3H'`DP 4:Od#r % e t 1F Aar> ӥЀa bР 6fp &EA`0r "AIQ "@ 0' P [b#1 ۠ !?B PPQ'РdXCz-B1%` .vT+,A1S "8"7! "$ ?HCYb,b`ڠ"s %&b@Z8Ԝ` ^Kb'7 `!<G_D7"O1RD?!@!"ML"HaP&N7FdS` 7?W-48B/PL7D$4<;-`abU T IPu+eNi@t %R6!`Le`@VHAiHg Z`L .Ӏbo:R3A`8TWµBopB0 L % sbHY" !@bzpv#,0 (elV U 2!>s jH4K;B!"cWA V-O  S?@J+Tʵ .cV. V[ 4&g#"AQ2'V^U <5%'-u Е,2\`UYUZS6 v" 5 `W F1`7"tIg'^W U7S.i|!a Z.uCK#`n7BL!!dЀf+w I!U > r]t@%}p Nr#.फ़R,cW (Y!" Ze9 w |g5x 6XSm?/ Wqq"A!![dwBϐ%f [mT ?"elE7RxLb0=4 tW./pBIoV}<N5w w 4tjV AS"\;B]1c'b);‘w6t.Y!#lx"5GLjP1! yl[o8!deT4MP=[UqKP5s%C |`%!b'Q[2 y+ uP48wƭM PKM,BPkSAy ]%<MKp=Q8;0tЀo9֚uB "%G k+ O%Z8Fx@\lۃR0Z S0vdB[b$47B/)k 04Sy' u؝IFԝ%c`ye `C% #ab7)s wT 59'BvGG &qW&w 6G 9R0֊{"ޣ=w6Te2reN=td|;6b!rRCGwИDG1Nz"J[XBb'GƋbY60Y ;% `6*aUB!RO. 7:{I!Y /.E|e%O#\"hi\ǣAB\\[\|Wq@QcQmy~BE/K<5<s7»q'a DU{p=TWQ6УoB'e.ԓ][Wե_]֫(g֟&o]׫w[d~]{ׇ؏p]&ؗ!fګگ۳]ۑLޠA]ǝ]ם]]^wQ^#^'+/3^7;?C^GKOS^+~[_c^gkos^w/O{^臞^闞^꧞q^ڟ^뷞^Ǟ^מ^^_ _#_'+/3_7;?C_3]FO+W^[c__ko_wsˣ;ڋy('4e"VA v .tl:wB! 3K"Š cEaŸ gX;3 `"Z,/ƍ;zџ:@<2\ʕ,[| 3̙4kڼ3Ν<{ؐ%6'̔GAkaFqVajLDutű>=p vfdlIc!/Ȁ! ,    "( !!!*!%##$&&*(&&&)-**,$+3-.20./,15-183345.96837=7+58>6:B:#:-:.:1;;<;3<2<:=1=2=5=$=>C@:@;@+A:B>B@CCDHFFF-FGIG2FIJJJ6KKMKEL-NNQOKNQVQ7RISSUSPVVYYWVX3\\]`^`^_b_Y_1a_aIbZb?bDccdc;cCd.d4d7dG1oMt4HD*hH!ELF`T,xWgX *,=K\ ;E>Cp)я4^ZC?鯚@7FZqc8 ) p}^0?O ۫ A@Opz%.`{blRLJ>ISl6JA[@Cp@ޔ@ c·!`BVTj)U:C,*SkBjw 0;Lć+P@7 P+UchFpR*-pwLU`ذ^r*BG$'L;>4,L zI<wЈPA(΢4^_Y cF ,}[JcdjLT! :įd2!@Rt`Y8 PЮGPa'(o}RPoc(@EAB*B+]FW0f{ P?XRﻓ @)8uJ >X?lz숧 h@x%4Ͳj5PIzX‘~wLYJ#cpS ޓ}a@ lۯ_B@ YNJhG9 4G?9؂vQ Kab㙚4~}%Z_p)X F*1dKx(@W,oMt0)tQ\cdݴF}ƝV%G_,&U9.,)Wb9, 5 ;eM)ծEw%dGrSM<+WLeޛÌ>S)8ũaj+oFUK_(,cPrhؓ4G;4LFL^`0aI ^̧ދme *E Uf3R5tpj/Epf9tT KuXZY*Pb',j|%`H,0lL}M{c {dn=ﱑ}\7\7*_ٿmV^BvݲrNbkh!yeJcb,~+c)|?̆GtƯe={ ^~j`[8M(~k)Z gCۖ"));ߛ2Raꃀ N K羄5J׊ aեG|d[+ qT9^?jYq]?8=`81m; D~ay_?p(c'|XeoS ps]Ok,ioۛc\KaϸWf:ZhNh楪D]V * a6#V( ARR+B.v>eM^n0{,GnWB EWԀ*#L%gPb dqE1uJ*Sr6awElsd4m7P6Z*ҒsprCXͷ-aQD{2kg;wkMG+QCbq%GvWdg$}VD! 7( qۀ9SbKg `B9pRQl 3wCRƗP`k]#,zC" nyt^XvWJq;e pQ`QDQ6t7WZ&1*$ .TDE`*ISpmֆThXsCpO0RrWOQ۳I&6`oD3 wbe5F3DF4)&YM== }$>GqBb@5WHCSc$='yu-8,@nd=RaKtr8^|QI$=j'HtY KP@  0װ )-_Q !Ѕp B5,Ww.QKT+60GdIV2K'J%w`06li]8*1/Km;> 4N P<@%* ?,Rr'Un%M}q3gR e`iG .iGJQ'P .C_=V63P R;s ٝBdvIǙs5Y Y QVՏ3 <1+01g2di-x22. 0`SU'2V⨡KhSV=(X'qRLYQa5J86.-;D MQ9? >9ڤa-.2C(Vjt0Hx,S `P@W:2v0d12jpr:tZvzxz|ڧ~:ZAڨ:Zy_aک:ZQڪZz񲫾:ZȚʺڬz:Zjqںڭޚ:Zz꺮ڮ䚮:*Zz+:{hQ ۰ʰ;[ګ* "[&{J(,۲.2;|4{8 ZQZD93TL6+dB&l5iVz 3=A@huOM[zpH#is!W#>'1v{qVxzTVPj۱O/7,wx%P/ s"c{caz 抶o&t*JS{bʐ;I>g@cpI 9ЅRpcpKX 9/Vh@&XhZ0<': 4ɼX lES Z@fx:pZ:=2/41R@V;'5e l`lо@ 5) Gn+ kuBoVGyX@ܳ1BS-C@p,T=C{FADA q+k2>9_=;Ay0@4mëC${rM=2_kK`)^xRG0M=j@ۓŦ+ Cmt4jLP xVx%d_^; bq[ 09_' C`KpHR Ut!N4TpOt  g&`Vd933C>VL4@HTyGdVPX1@4 DF ,`)a?+rL K #q厕0I, k<иJl@d7b&TXt%nabTJ'u Dhu%ewfitn%']#B y%%TFWT#e{#V\}7W6M-G; Z4#ëȠhHu&gED/zX@nּz'*,7`F@q@0Pr TGE-75Qh(i1+b4n>vK4@2 ~R(` ؀&NU0m*#u  +H\iуMu|윋 Dq |ע=g3|1w+ݪlt-F= `xSD8@`ZӢ5rW_W QOY1p`lll]hgA9حMjT$=lBP!R@#(˒ ft9Қ_1=⬚jtWbl]$@cR`Fw|e QP`uX5~%L<Vx"JҘ,,1 Ur"e #-b V,-5Ԓ_.quTf@;e֖1~HgX d$jiw%5ao5qfTD%A5l  5xE -.Yb*ɥ2y,e~ל.|La 7v0 HeVv&J #nPT D%q yL%=%>1hzh/..Wdr%*P|Ob&`DF$(oJ,4c9Om (Rc=x$ yg8SY7+a 뱅1hb`!q╢IB?у*HŋwvF.=ܾ{NLm4GVXTk',Q@ 0YYS΀,&Iw n, gaPSVqi==@cybUfbdI0d;L`:] cم>b`V*w`Bjxގ?x]BDSF8loaB$c0T2rƭ/+[?/rAgJt?+ bϮV~p1ŪNx^%Z?ۯGkא5h_lg#XA.dСB%NXE5nG!E$Y#>)UdK-MΤYM9uOAYѢC.eSQNZ RYZWaŎ%TY+ˮe[qL[W\yoO%\aĉ f Scȑ%O e5o3_̡Q~&]iJENkر),mܹ5Ӿon,qɝgsG2,u Rwe1yI{٣-?}p@d'>T/UZA#$B Uм ;Ò6DK4q OTqEJEcPDkqAoqGrG 1H"4nH#T6$tI6<J*LJ+22,˿sL2p2Ts,1tMڄsN:5l:ԓ'9tPBCPDPEu;5J+RL3tSN;SPCuTRK5TTSUuJGhRVcuVZkV\sEU#^kR6/͈Q9/g}h1b6jXV.o_}o sm+Eǽ]u˂סy^D޸]_~ }'8.Hab؟mxb'fሱxޘ)ݵ㏕Bb:eTnezf%"qfyeit=ţ(:.TfipT  B` U`ꄠE"vBاk#‡ (`BFU| ` 7 P.(3q o|Xsv (؀:?^#vdHҤ\ʼg"Cy'M<ͻ:>gw:|s]i|pߟFO `'H L {XGYoh3+D.\Dُ à s!< 1?3.#!;%J@)|M3kBR GXS#IP4CI\q9)Bc@%ر : @r@O|0ɤ"5OtP l>\xi0!F|젣ĄNWg !(k)8*kSgK u;k,AM9\[Vk\[^ kTߪW =&qZ]nM @V_  !UA ނhQG* P\^zhz9l/"yKBACAX+9HPqOuppS `(@QC^O氖j9c E2F/;-%_ c98:V7,Aj:l| @`l5(F.>d>wKܵ=u  *1!Ch~àn]`(,(0X4 LY_;Gm6t0]K !<^BF {AeCލ$Nn@ ;Av,*Z6 @,~ʎ;Xi2wһGz L0?F!ǐR UvAb>s_Av~qIreQudYYwc a׉3vdiWvKq3wdywd'xƒdxwdLx@>g*o`~>?ΤT30 Z8CTHt3(&$q{^}}{cB=ύc[<t@7w_G&B_'~.`s'< M'}A2@#X! LJ\@l@|@@ @FMx?Ԉ?꘿pXY#?c4AAs  D |0@AH =%c' 0ph%\B&lB'ĵ AfAPB-B.B/B0 CfxA@@8$h%%LB'%?:bC٠j.AADL?3, 4$5<=| |X*C:: t> ABERt $>XDhDgJLA:DHBY1 *ćDHR,FRX $4J||n>H#XbH D,K4F䃳쌑 LXdt v2$X)B2ܿ9"AچT>Lxl̰|RJL̸d N\ !5 IxZT<MtL$E4 4dZ>>5y\΂K@:9>_=ܕS٣ܭ8_ FM_@Hh?Vq@$F``x^; ͉έЭzUAGLqA6JQ CCO]Y@J=HTpȘ\b;4$^#m'US_|c@Z: ;>  !\0mbk,A8ABƇ7}@@vVIhEJc,?.cq>c_>FhԜBB[fbM`3x.k< $}< E^(JBiF~mO`bETpNÃ&|VsQQd=棢hB.e]taD<-RX-`_Aa sZ:UXA( ,+1^V~f<Q.V-hZixEsEH6TCNvXoV 3VT!@&?amlC|V=RFE^LaEEY,Xd%:^*3>SJg4OKl+֍?!`XLM$^BȂ,AjNa}nԴg$E([@M% K?$v9RXb:E6 w{W&n#9k늶hoVQ&o(5fD.#>8[듈(؀>L4Aj]pYm.ƣ>K֊A2A8L<$>rNʧl'W.CF[̣Q`-c6`#њpء/E}F~8<#N*Q&[&hr:?mnc=wkx$‡3p*SkŅv—S(Gқggtf't;ۙԾ$gk" k;*O[q| ɮXuHx">uEY*jUcJA-=>?QJv._%v]ch:E$?`khWj=}t'2D=2}[5wD}сڪ>0oixPv h`woL:M?kgQcM4sxwBDRI`t 'ezg &#@9 oda5fAI Gb? fzeemV Р{-dIE|kX>:ǎpРX:׌?qTL&K&}gR6ʲ\{-ۀBߋy?S~8-o{>~&i3@l~_L8O_o?ey:< 'I#2QE lŒ|Ԓ -T G:WJR(-e-!fBX 1~|bEQkL1ce8F̔gT"!,J 0A츀}(e!=L*,b};/p (pE宵P %AvD,C,R ]4m]a]ƊR~/GZ ȃ ! ;8CCu? 2܀L2ZZ: $C `rrH]֋4 bbNYp;qEĔ!CPRJGFRKZcv@ 1)WFDGQLX !5g( =WGk3ה0|?FRwjL+z)(Ӄ")C Mw  4!d)LiU [Gi3$H r7A G̯k| 2BMmw3'pk w6 4d''bxG Aز?^.K%J njt`nP+ %Ge bϷ] 0MPu,2<`,rNt  on^ IЄ%a P(94@X*yu^Qb?ZR ]P3K:#pP%A:=SFY@_A ~^ja . bڃpB0?85;>h< ۅ, GF3Mй@1: r9w, :,v%`~{@Z&+&#H8]"jT`poA$Pp;˱Ùny #]0j84 ^#0D6E0~\Pyd8FF8#8r#x:E:#YeX<;ޣV#v>bEE"D@h@H DaZ$@ xv*$ L `hX fI\@{ A^@ ȀxJ3@vV@@Ҁ(3lhzCjΨ{d5@{(@ )˔ T@>4i~R\1ԩ)橞i b s~= j򨘊2)Ilh @{@mgt D]T*jfgT(G?C*$gJ>L@g ,)fnjl>ph6 ` dklk|~+t+i͐x)@ T毪C Ш(br|@ [8l`2`nСꩰC/ VI H*؀Iv*$XK @.CD)$ź = tl{I( ',w,6J; &(z"̴U+(r)JC8-Bl`mD(ؖm䃡k"j ^ 5zR9 t@M n؂D֪{=j6e!0*EX>m&kʈJ0̝,(UNHx@ @-X&F罪f/N./DDDA1XWJX @W1(/ 1dW(Ai[v1B4|܁`I(q28qC?>Bl!"/2dAĀ$O2%W2%82#3!A<roA ;J%mJqH>x*ȁ`"o"g`q031 i `lA$"2(s,B*(@1+c, ׃1B+3=ϳ"sA0 p "׳@{!->(glsCiA 4+n<̂;;<4=pAso?m @I3+ -C׈oMt@#DFDY֯F9s0)O?C6-B*dBA׳!3XH0/ &DPDBXhhA2&89/J7Vr].`v*W{AXp5ԚvZtjtA6..(F;D 6|hZT0 CE"DsGL69.+p5+gsgϳ!'x4Z4zߴkG{÷5_ӷH7A^pCM %D?6(-F7D)%C&A08AsODsq<{okwvwJGLS@+y8ko9fNTvߚd*hĚ?uAP (2eD 6`޹sTt# -`C+At 4$?i'r=3A*XB-Om< ;lCD Bb@ֆ\L@.FT8DyBܗ <@ćCb@ӹ빤%<0C,@wϳA=~]W3?yuRh(ETB.9,â 1 f}{Uٛ>C꯾z*s4= ܾ>vcv,<|StH4 R3xaBnP `A|F @$2*4yeJ+Yt5մygN;y9ӠLC5za~Ak׭[Jզ /]ldcɪP"^Ȑ)j\pIU=HןЙ6|$`Iw$ (o>u?$6ݗKY94iٳ]*ݷ޹Xҥ*2]leYeSȲ-6X+7j-t-LJ7^&|!4Bw@k`CI| `pдVr W~1fZWXq.¸fXά2$ %Zgm@rǣh8@j8#!`hpǤ{QR.mb0}fr @q2H.\esه1 C]D>XLcI.)! rPO$/MM(|HUZԜ8P 0HױBa`C\\jY|"dZVUhhħG; P JXM ZVExYKvtUy9$ٹR W]H,f 0"6mUG8D1[Grg"5)(&uݘz f9gzˤ/J~MJXige8jE;֖)*#TK"}Js泣y-?,T ۢ-ynh:Ӯ6 x785J]v1EosQ#ǜ [iCV`COv%/=ŁQȉU NΡD_ҩ74B}A']-HBOaXY%|~ѣ PF 9XR<0˟yBw=eo&ZlcbuWP  fXݲ1BMPCwD@J(Q g@ 0 dܜc@#,F[nP'$T @P H I`C/"Ƈ?4UUø7F)P,xa,Xh PA [\X"B D%" 0~q##G9v#'2Ճ@8` b1b.!RI6sDT>yPd$Pa [! Y6"9 ` @"I/YO63AdI4 ɃHCP,{V?ϳKSH6%|KO@hQ CXV09\6J4 Kɾ03< J 4G:C;Cj"r2{@b%ꨈZTuUIVK |Hui\5BI Y.+jVuKjlJҗ.0s],0%H#oHJ"hI[ZӪ"A,"h|sd (߂yCo} p T =HG]Dѝ-lcX x6h@xoxMP^& z 7HBlG _OT32w9y.Y[`EV |D p}u4a `.R!^fk5'&pYOթŁ`u^]lcVlg?і]mk_;ظmo=mj\C=snwy8]Ǜ[ơxu Gj p? ?8)^DJx91qI?)wUr/ s yysA_>t8ҙ7QY.uWzгuc_ѻ>vgW;Ӿvgo>ww׻w|?x W|xc񏗼%p_9yNIc˗|Yշ~}iѽ}y)}/=~/7|~鯧1xF±ՆFo=v/}e1`4W<Yvd@ % 4*p@(Ns6o h%6@v 04P(`$`Q <; /erƨ& af  2N !!FP h @0T #ɯS!/ga  k  Ѐ&TA Rݐ z$ ΀ܡ Xff^ I!؀DqfJ! #`a ^*A( |01{45SaP#v6J b |;`.a 8 2A! ; # " @w #` " @&Aj  .@B*0( mP # #X]/{0$ÁBཀv` B@ƥ" I.. "`"Lb:\0`@ :>0`R-@&!Y/ 2r C| s H@ ` v!"&@}3` `* 2/0'Bp 1X@$"P9 !R'"S, P Q-ު*7.2@.0i$AXPC)o3س ##!$\#@5"I ` /FDz,DA 0=C $!؀  $O3MH Dgr@b`ؠ "s T#'C@[Fԝ`anJK"(3 !<4 tHoE3"P=RB!>KA *I+:RTw@4#H@EA7 pT ( C/QJ8 $2=rolm\\uF&b6dp3X bB 7-u&ŒQ ymNSNU@BQT ^&LN͝YqM ^2 C@YM @`XSd .`SА!fАqdVɏd @o9'0זT!0prePs1&v C SU<!1yK&v︞/T7C@R @D!f6& r9 xЈ/`B ~oh:4#rW|őPT n'ù~qrr {01,o;"?{7@Dc'C hgƥC(NYC #6O"075~4(WT J0ùϥ;e97{f Re!60gX&!!`6*s5SS< EH[u"g!<%}M"#>fkTf|"w|{y&(x#7,ȅ\lGE ‚s\t%#KS ET̷\ǝ^-qbR#m!0W|6T?t[x(a pV;qΠKG|5Z.&g4fv]q jY-=їuWՕ^]֡%g֭o]M.wׁ]?'؏]ؗ7]aBگ۳]۷ۻƝ]ם]]^ = -O#^'+/3^7;?C^GKOS^W[c^gkos^w{~ 臞]蓞꣞f^~煞^Ǟ^מ^^_ _#_'+/3_7;?C_GKO.W[c__ko_wsqۇ|tz_߁N1FD`bC B!گ"f!_( IÀ d> Xp` |1Ĉ+ZX0\b+H|‰6:B:#:-:.:1;;<;3<2<:=1=2=5=$=>C@:@;@+A:B>B@CCDHFFF-FGIG2FIJJJ6KKMKEL-NNQOKNQVQ7RISSUSPVVYYWVX3Z?\\]`^`^_b_Y_1a_aIbZbDccdc;cCd>d.d4d7dDPAԸS F>NV#4]Ie\*h! MUO N8Qhe>!:9?ؼ–]:vәiɓpi?@8 #æz* @|$jZq Z;,)up\@WK aNyMLꇪ@>DH>~o[C1ӴLpMuZ(Z o,k[W1.WܴCL1f\SMiM1&M`a !;\Q l.tuA~ 8x4^@(QCxZ֊u>1lÍu(8*iL1FD,Bu,WhL 3 }K\ @;5E>C`_i3[NC3@xsDWhP(D@* B} ϗ #{p/~p\Ўw@W'M 2Bب-U{>ofTճR-xAI@@~)`|60-@U5ꀤ Kh!`L+4! ,REm؛I |TqS :0f%M|`XWNu6ܮ !DAtDXw# p92MQ`)hLJ8.CMqE@,,JŕgD@i*IKV,-2H( F &UtyV*@V>6 D $@IGZ46gz W$=X`&>: u 1)2ROZ'ð )uf:j:Ouڀz&4/W?+~KVC[^h^O'K ) Fni x0tK5"+ֶS-A`Kx< 6H+8NzEL%+gN˪+V$C@r|_9y*:32[-ZƘ+4 >W֙~]G/i`) Th*;nL}\#P@EIU-'\hYzE_:Ҽ >@GIv<brrP!XTRsT*_y8դy6-饙?Xa2OvRvyzbHbR:$e<9@Ld΋LG'/wUFrpeA|&/ڑ֔BRՐqW)6ATC\\VǨR p7Օ@F^n OTA~=/vzSv hOT [pҗd7 `#fhI(` :}5sKQz@/N5q3 c7gng,{_FDሎ{w=6ШD*7:N9(tgjUܾySj﵄͔cDa y~XeI* K=h-TKNXKG(K8s9U͟]UJqBSFcC baz~h0ՐkS# ~MLaY OGZ*JJ*&UUw$1ROv<53qƐ6V;4Lef]EQީ/d_E<NS;%M]oz(n׀TR DSv*#HfP_ gd~wqE-5J'r^wEhusa3rm7P2EZV*Rsm2CPXɇ-^qQDzg';vgL+QPC_A%G6Vٖdd|RD! 7( qܐ6S"GXg B`B6pNQm 0Rw@sRWP kYW#+y@2 ksyTtt^TvvTJp;e0Q MQ6at3Z"1x*$-PCA(P`T*FSҀih׳X3C0O/RtrTOQ׳E2`lD/^%1wF/DB)Ӓ&@M:r=y$> q"@@ҏVCS_=Q'y E-5R,j$=OraG4r5b^yґQI t=fDD4Y J̲P0 0 ,\a !pA1,WG.PKPT'6F`IR1GIŸ%x`Ҋ,h)]@Ȁ5`*-/Kiy;> 4@N<%U*0>,OB'UjL~@m3db ْe\)G.)GJ!'` -?Y_:R3` ; יdr$ oi ؠi N"R0 ɞé<1(c0W172$i)H21S. 0i`SU1gR֟hGhO=(W#WqOHYQ!1 42j.-7ZD" MP9;ʣ>Q51-*B$R:uGH)c  QS2s0`Z2flڦnpr:tZvzxz|ڧ~Zzڨvq_!zکZzѪ:ZjrګZzȚ:ڬ*1zؚZ̺z:z蚮ZڮZz:گ;[e 뚫[{۱"; ${(j*۲.y0;4[J ZQZD5QcH2a&m@1)V #1r;nUIx:TRPҵ*Kk/e7+7u%ٓ+C#xѸ`!zශ۹Jl&D*IO;bP;E:h#dE p9Sd h /tVi&hZ;#: 4T mEc Zb8P:ƀZP::/4AٕSRG;4bCp+ mз]!mP# ) lGj̫h u AnRDG9Xس-VB#-C@@,Pz={FPA@Aph=$5\<;PAy,=lUçŊC w${أrIUL4HQyCFdRX-@4DF ,0)`?+|%q K p H, +~ϴ i@`3db&xTTD%jTa"GR' @(u%%tBf)tj&Y#> v%!SBTd{#R[ =3W L)7Y1#kȝh|GUu&'E/wXnո:l'x*(7`F@m?0LorG؀E)4Q($)-+_3j>K4.}N\( &J0i}*#q+\@iwCM5|\q<מ=73xU1v,t)=l 8SDˀ4V@ ZדӞ4obW\QTQOUl1\,h,Y('=mM|f}$H=iBPUR='R͊tfph\AZgtT"lY$c CR]B7|%ٽPM uX1N%H RuG((Y1 Tod #)nbU],)ӎ[[mp|5Tf;a->Hch `\ ^*fA G%`o4}rqbD!=5Eh  EtFE S)X^[*u2I,a>י-^\Rg})x jtߨN{?8]ASBhx/^An?!30jT z2oBƩ?(C[+og u?'ͭ^ԏRԃ{mĦt *_C;ܿ`5dmk $XA .dC%NXE5n|!E$YI)M~dK1eΤYM9uyPOA$ZQI.eӁBN UYnQaŒZYiծer[mΥ[]7_6pJ‰/fرÑK>\ev%ogСEyiԩUvXZ2kرeϦ:2mܹu^k0oG0qɕ/h/sѥO'|/uٵ]ŏ.y6/{{ϧ_}vp@oTpA#4B 3lB 5C!0DK4QOTq SdEt1FknFsq9wzrH"WH$t˘rJ*J,J-7rL2L4tL5t|sN:mbNtP$PD |qQH#tRJ+RL3tSN;SPCuTRK}È5uUV[uUXcuVQQЉ5QHW^粰Q]`BVe[ٺeZ}H6-o [-ie\U+ww׊{*߂mW_pb+x%HabEsmxb*71&=I㈯y+OF`t%V9_ƊM٪o0 ڣ|לUѡݕ|8ZPQhIhB`!UPbꨢvAzAj# CcX"`Ђo-؞(fg[˻j ؁ǟ|6 BQ.4 {pʧh7(nX`?'A `Bxq="-v;:}~!_O4i>*ǑQ$&Q!ɛ;!ZSTC *9h S_;V!q?BAO!x  1c `?'&Q11b huhCnCqw&DCA l/tc=|qXɠ c@:#@:eIpGRG=vm Eαt  h@ѐ>jK^O /kk\ABvɐ,] h@C 7q \ /` l~$BrCh18gCnQKu@@Bm`goAD{fi@R\Ax t>`v_ZH 4G4[Z| ̓/{r#;Itx@^GV 'x+FhXh;@W_,dBx(,aB H*Ek;Xh3 r a!;Pp"S7菦hA t0B#Xҫ-#nm (Am[! a{u)qaCԡxގ b҉d Ymju FޑK`oPՂU"bضt: n;ߎ .,Ts4Xʹ/0wb@(} ܁on@5-z_D`,Ӂo.MOy_ Fo_x ?BJ%a@ Ay1IW:$T2b\aMU"iM$\"!cJ!, aXU%f>X?ԁwIogX ΃ 2 *2A>$P$ >pDxGCox!Yg8,0E0X(/ F{hX -MW}JDR,wCj>(=7q|A@"PH"A x#`26 )RNm@X!DwDТhq )5 , Zrm~ 5 !6s7yz#1?WTxsWghh:ҙOԩWljιg_ngg>gogwgޒg g׈g񏿈ġ&<+b`>ټy:F"h8\?eB2LLB}}{_,&[gc O>QL@}Pq~X~tj_|l(D~_gٟ;Is{#6BUڎ鬒LJ|@@ @ @ FMШ??|qXVb#?cT:AL  ||8@AAI#{Ӄ|p3ph'|B(B)ĵ AgPB/B0 C1C2,C Ag@A$pX%'lB)' 7Ck0ACڣkD[tJ́ȈTCL HO L4GO;ȄLI8@ZD6%?zʥJ<#(C6RFdHJKP²`K(JɀKE0'PJA>2#Ps#a^#nQ$LȔLTJLQMzJ0x*VA4̓V t.;VpW8 (Ѻ2V?_ V >N֠HW4؃-WS1m#HL8*' Tfɋ ɇDHm0YX( OZCYSY0TlM>шPN^EKg}XELn@^ڐhEPJW@8@YtUW-VLG͇@ֵXIP Ɛظ_Bp; Rzōb`5Y0Pƅ@ [U<(̍B 0}B ==] t r`]׵ؽkɭ]+^̸ݕH'8W 8،uSAm|(J}@LI5S<= ߙߚ ҙ|Tٕc@^O@[]5 < !6 I@V,F$ܙ]{VXHLYHKTR`KCb@ ˵T>XTq^Ơܱ=4ݐ= &·m(mSߠܖ @Z;^ ^iIPPp4p@ h(^ޚu͇Tcά]ZuNxvR~@'@=lE)^%kPh@_6^kY\<)F[% ]VV:6d5jVJkF(?ΰkPeh`Z!`ZtMˆ$j,>E`|mIfm{W\N-b=hb/>Z%[!ihxv8C| $S)EܽnC i#?f5X"c)/k)n#NJmi}eok "(_%4gmz$;|ҲlR؏'}ӰTKMJw9 qUS 0+ χL@So~~:]Z/{;G@~48@4/L/?O-W"_u;?ys,h „ 2l!D"g"ƌ7rc;E,i$ʔ*Wl"e¬i&:wzKy-3LJ2mMBj*֬0:4kFj-k,ڬdM-ܸ(*k׫؈t^.l`w%0ȒW>&Xy2̚^ǼS7.mZagOn65E?\6m(lv7-w+oi᱋7<:vԎs2z/o~t~oͼ>ۍ=? WqV Q !=!MH!Q4_%)F!;؞15b:9=n<8Y@]Gb$M:$QJ9%UZy%Yj%]z%aɤ9&i&m&_9_yzEAC|vEԞ)<j蠈?sYWxJ:)& )j)>bjT:*I*ꝩ*֪z+ѺS[,,ͪlOJ;- AQj+m-vQa. R;8/XE/K\ 0ù%dK<1[|11{1 kh K4r9)ӷ X3~8:38vL+A jI缣-mjQ MiY+mia{boi زk"my hwx}]{>scc*8}7!2>9rE{9C5iQJ$p.H:.~8m*)uA#F@;4h QO@~P;HwFb31931KHO0;@ hKGD w;dmy]z|x |\6@zRD.@]7 l cEh( `]lȼ )@"@ D'!h8#M 5`&bxֺ#Fc1&F8*FhhCGIQ h'Æ,!  !dH; ۉQG;ِKZ@xYU XM41`|/lDw2#$DCN"\E,)2pY  ;/ռQ1B|xQi0re#@)IKG3* hy`4 slC,SR$j#Hy TQH pTtШB=7k! &Zd fyc%wv)[BV x%ĕB҂WبR͇keG=PgÇ, 7vD8#xV AxD=G\/bWuctz; -Ƥ xDœz8iԐ֞&$ZH,@Р<e(lt 8>1,B)?IFU =ikS? a"Bw S Z]հ ˄"H Dw%# mDh}uz Q*Čs' CiC5#qܨIpŽ#K>   i -Z;KaSrg> pM!ŗ rscYAԊ>rܨRђvD\*Rf@jcH0ێZ4ٷ$$A`%D23(ELzF)^q!=՚e`]Nx 8cbrǙ i,/0NkpS~AA@n\r"! BU^\n4JnC1ыhi'c 5pڦ7Y |@X@%O.Faꞁ@ҵ PV M=CqȻ Dը<!yA=Ȏ4Y {c9-sB857 hD0v̀(l"{\><(;t*EDn܀ {0Ed 7H3Jw{/f) C hx$AC袅;` S#Hp %!@ݐBİnd ;@ č D  q A\GtE` 4 y+PA4T\A! X<8,IU4Si 8@z]IYQ2l(@A1R4yfU @!AqВ,i]IF8iFThghRi^I<"&b$^b#;@b#&'^bðYbE0bN& bxbF"ft"-n,"/֢$_p#1"%.b #30Fc\p@#54f[Xl`#76Yxt#9.k8#;v#:n#=V:Y#h#?#>$t# $A.>2H>A,+ފ?B&$p\y(|$Tgh$88L͘w,BD4@<j I2K;0AȃM:C?D^H9`@AĂ<fN.FO*@M܃!pe6RGt\]dz PY„<`!CYF\En \2JJ>dK5@_2P\^ ( $@Af>0eK# @ 0C``*((&MZc= & `ʎ@mրfuZ AD@y˱,&Xfyfm;>@ A=h2RE @8(pp@4gB /=|mg_lRx:*$ AM `hX.F ]{ ^@ Ȁ|BB4vV@@Rh4ft(wk(|d 5{(Ā'))@`N$gzD@<,&<H܉/ hR*J歮 D*@J :ǿ*@$8P .Cd݄)$HĺJW\ d{$IC=`꽪~¾6GlC]Apl䬋+@ziJC,6TmC(؊N DH+j $CԊDҭ 5mqڈ>D9 t@OK͹>j&ڥ!,*DHn2fk6D0؝,(UBB y @NoAfzҫ H/*/ޖ.4X@|C0,@{DI 3+npHx,L§ ăȱZMA*lJ/ԯ=, t0 x0 @ => 0 p@ Vpv#2<RE$͝?<@1C2do1w1*\1+"*#(h (@DHH?> lAr!AdA ԰4#?2$?rtA"!-qs!ȱXBNdH7A %rp$'k/2@td!r At -o6*(@)S3dެ1+3'W\s,1\Np8oK+-#?3=sܦ $At $p~`tЀ#<DEDZoE㰤L?6.*hB@s 3ԵYƈ/ 'DTCBXhh 2 '(8ʻ<6q\B.P*VAWpuӊvYtit@v./&wE+t,CL6@p@@;D/B$7qc_s>,BzV`6vk;rxwJ5>KL7{K48|s<@~//D,ȱH_Bbc~ā:w.&Xwx?rw~ B+tBAC'7  LBBZL>4Ab]08Ar_8= zcjgugvI@;yKG?hrدH?>C*ct= >vS,<{C{u4Ĕ|4x>@i X0h+)I4yeJ+Y4%|3iִygN;k$gPC5د߾|j +T1S0[$bEX*TH2eġK׫\PmVQ{4&` .I#)>(C  <Ac6HãIܒgjիw=]vlHN,r/[pBV3U[ƍV}j+}yewG̉e>?"`l]!02_D! I/% <05\л~'cX\ryG‹-j*.3 MT^d|aDu,,))0 9i&!4 wHo*$ܒ&(mXJ\Z/8D1 2U.YXAǞ}+,hPG`>V *$,K}GTPUEJ|j͸^ #t ,f n @䕸pVAUU)U}|mtSa@"NG%ZDѨUuZJ}WS]JV'DKlRa2XXWpazފ:Oew !o?XācMW܌u xeI^+Njthm7M[$Z+:zU~l拟Ftcl˙n/0bDіdy/mj.T/BG-Rا6~6/j~HxCS,HUwqN;A{ΙWZAd-{@hJu1.7Zi?M*E \")} ]zBGte9"$`1VdǞ)L0=:exP%<@~\dv*M>QU CX23!uzFBτ!JJ,).:ml^"BPm*#BAPUBaGC xhB0 # ІsIhT?DH<(Bݲ _vHE-n:jcK90#VR򅍊%9df"sfla sH]4މR@[ĥQ@6XBI,ƕqn:U'Kɕ1^>nq 5AzA u&Kd8!H$"%9Ifș*&=ybj( [BbgytЖcYTfY@c$m=ɚ|(Rq+ 8>qKʦ/Etv@P;/"S^G=6P`puhg~GOBJNt=xhGӋ$R P "be u41+F$I!C%@bsYjf)=ZRF 0) d4Pc I` ShI[U qԊbA[Ђ1kȭnp[ `5hkurؗ$}-l7 Hp [^$PzAt[־쉒fV&k~ H5/k"`$6/$\,_ 9 wdmyFE_,q=Ss9d[^s%fÙslgsgtk"ѱ]tBҏtUk鲺eB kFR+=NWjծg6r(sNl]lcVlg?і]mk1mo] ldfn0n:&v bx7MynoG%xp?v)~ȈW'5qבrl3yYu19`>s|A5yAυ^t?җNt?1#ң^;Y:ֵOa/:^vi8vqw8^wy7v4_@g3+3r^y_9y>}\yҟАG;zֿ>®+{!vź*|ߡGé|?_·(a 8U04#|f@; `?"6@ZB`0oJ$b .Kd:g dvX((!R"`VA I(.`" 6Kt~BN>*ܰ!f@bF (*~(? @ө`a cР .l p6EAfrO OIAJ 0FI@ ' Vgb&+ ۠ KB VX( Aeb e`V! N @J"Qc ."@ݥMIzo!.z21Ƞ$AS c#t6Ib |;`.A 42A 7! " B w` @#` &Aj  .@>#(P@(kP # "X\z0$ŁBv` B@¥" RI..` "`"`HB:`\0`@ 6:S0\-&YO . C|s H@ ` v!"`&r @{3` * .r,&3@p-X@""L8 !'"s@,  0 O ިn*3.`2@* PhAT00?)/3 s a##Zp# 1II `Er,˲Da ,C=Ea ڀa $KIHpDcnvDMnUPpC/H >ITCo]۠c=H}Y ;uAr."$%k[9ka'drS` ] ]J#% duV8q@ j8Q`v \xc"L C}v gu ?Rg v`&0Z)C Z4V"дB#U tVCxr b Y&[ B``y#РXO "BYM#0~zN".@6cW ) Z$ [`:` |hA AYcMYOeb!A "70) ^5 nC#fT\yZ U@"K` ftmER8M 1G4 t.5CUx}Vu=ؗO?w  >T] q$bu$DV, !$q7@kYHOrwR}kSIiv6w( cEC` {@|/&?3>/liuZP\UBt&W B6 b03X ^B6)5&@RQUCyMM QM5<QŶہT ^w&HMύUFqIuR;0TЀ }EIB 2 kX,A 9&huDR؁Od2t9mY/HC (S45gb.TK/1U " Ӂڙ]b\繝DE93V(\ @ "&) !aj) @w" 7 ?97vAOG&y&w6G ( R0q#C>w@Եm2~6fV>Ye;.b 2SCG8EO2Vz#T\cƷ'QF byk{ S#?kv`V]*;1a yU#rSηOc <\Qg\F]Ze=e]b]k`s=xh]{AL׃=q]؋bؓe]ٛL]ڧګگۉLݠAۿ]ǝ]ם]]^Ѱ^#^'+/3^7;?C^GKO'>W[_c^gkos^5/v^臞^鏾^o~^뷞^Ǟ^מ^^_ _#_'+/3_7;?;bBK3S_W__[g^kso_{_}Cɍ_u'4ؗg_IVA "v 8m^<؏BAD!]l(ˁ^IŠ d\̛\*9rX}B˜v3…  &ĉY1ƍ3WG\Ǒ$K<2Wʕ,[| 3̙4kڼ3Ν3$FLjGZj6DJOQoRZPҥ:lΩłŊ V"O! ,    "( !!!*!%##$&&*(&&&)-**,$+3-.20./,15-183345.96837=7+58>6:B:#:-:.:1;;<;3<2<:=1=2=5=$=>C@:@;@+A:B>B@CCDHFFF-FGIG2FIJJJ6KKMKEL-NNQOKNQVQ7RISSUSPVVYYWVX3\\]`^`^_b_Y_1a_aIbZb?bDccdc;cCd.d4d7dG1oMt4HD*hH!ELF`T,xWgX *,=K\ ;E>Cp)я4^ZC?鯚@7FZqc8 ) p}^0?O ۫ A@Opz%.`{blRLJ>ISl6JA[@Cp@ޔ@ c·!`BVTj)U:C,*SkBjw 0;Lć+P@7 P+UchFpR*-pwLU`ذ^r*BG$'L;>4,L zI<wЈPA(΢4^_Y cF ,}[JcdjLT! :įd2!@Rt`Y8 PЮGPa'(o}RPoc(@EAB*B+]FW0f{ P?XRﻓ @)8uJ >X?lz숧 h@x%4Ͳj5PIzX‘~wLYJ#cpS ޓ}a@ lۯ_B@ YNJhG9 4G?9؂vQ Kab㙚4~}%Z_p)X F*1dKx(@W,oMt0)tQ\cdݴF}ƝV%G_,&U9.,)Wb9, 5 ;eM)ծEw%dGrSM<+WLeޛÌ>S)8ũaj+oFUK_(,cPrhؓ4G;4LFL^`0aI ^̧ދme *E Uf3R5tpj/Epf9tT KuXZY*Pb',j|%`H,0lL}M{c {dn=ﱑ}\7\7*_ٿmV^BvݲrNbkh!yeJcb,~+c)|?̆GtƯe={ ^~j`[8M(~k)Z gCۖ"));ߛ2Raꃀ N K羄5J׊ aեG|d[+ qT9^?jYq]?8=`81m; D~ay_?p(c'|XeoS ps]Ok,ioۛc\KaϸWf:ZhNh楪D]V * a6#V( ARR+B.v>eM^n0{,GnWB EWԀ*#L%gPb dqE1uJ*Sr6awElsd4m7P6Z*ҒsprCXͷ-aQD{2kg;wkMG+QCbq%GvWdg$}VD! 7( qۀ9SbKg `B9pRQl 3wCRƗP`k]#,zC" nyt^XvWJq;e pQ`QDQ6t7WZ&1*$ .TDE`*ISpmֆThXsCpO0RrWOQ۳I&6`oD3 wbe5F3DF4)&YM== }$>GqBb@5WHCSc$='yu-8,@nd=RaKtr8^|QI$=j'HtY KP@  0װ )-_Q !Ѕp B5,Ww.QKT+60GdIV2K'J%w`06li]8*1/Km;> 4N P<@%* ?,Rr'Un%M}q3gR e`iG .iGJQ'P .C_=V63P R;s ٝBdvIǙs5Y Y QVՏ3 <1+01g2di-x22. 0`SU'2V⨡KhSV=(X'qRLYQa5J86.-;D MQ9? >9ڤa-.2C(Vjt0Hx,S `P@W:2v0d12jpr:tZvzxz|ڧ~:ZAڨ:Zy_aک:ZQڪZz񲫾:ZȚʺڬz:Zjqںڭޚ:Zz꺮ڮ䚮:*Zz+:{hQ ۰ʰ;[ګ* "[&{J(,۲.2;|4{8 ZQZD93TL6+dB&l5iVz 3=A@huOM[zpH#is!W#>'1v{qVxzTVPj۱O/7,wx%P/ s"c{caz 抶o&t*JS{bʐ;I>g@cpI 9ЅRpcpKX 9/Vh@&XhZ0<': 4ɼX lES Z@fx:pZ:=2/41R@V;'5e l`lо@ 5) Gn+ kuBoVGyX@ܳ1BS-C@p,T=C{FADA q+k2>9_=;Ay0@4mëC${rM=2_kK`)^xRG0M=j@ۓŦ+ Cmt4jLP xVx%d_^; bq[ 09_' C`KpHR Ut!N4TpOt  g&`Vd933C>VL4@HTyGdVPX1@4 DF ,`)a?+rL K #q厕0I, k<иJl@d7b&TXt%nabTJ'u Dhu%ewfitn%']#B y%%TFWT#e{#V\}7W6M-G; Z4#ëȠhHu&gED/zX@nּz'*,7`F@q@0Pr TGE-75Qh(i1+b4n>vK4@2 ~R(` ؀&NU0m*#u  +H\iуMu|윋 Dq |ע=g3|1w+ݪlt-F= `xSD8@`ZӢ5rW_W QOY1p`lll]hgA9حMjT$=lBP!R@#(˒ ft9Қ_1=⬚jtWbl]$@cR`Fw|e QP`uX5~%L<Vx"JҘ,,1 Ur"e #-b V,-5Ԓ_.quTf@;e֖1~HgX d$jiw%5ao5qfTD%A5l  5xE -.Yb*ɥ2y,e~ל.|La 7v0 HeVv&J #nPT D%q yL%=%>1hzh/..Wdr%*P|Ob&`DF$(oJ,4c9Om (Rc=x$ yg8SY7+a 뱅1hb`!q╢IB?у*HŋwvF.=ܾ{NLm4GVXTk',Q@ 0YYS΀,&Iw n, gaPSVqi==@cybUfbdI0d;L`:] cم>b`V*w`Bjxގ?x]BDSF8loaB$c0T2rƭ/+[?/rAgJt?+ bϮV~p1ŪNx^%Z?ۯGkא5h_lg#XA.dСB%NXE5nG!E$Y#>)UdK-MΤYM9uOAYѢC.eSQNZ RYZWaŎ%TY+ˮe[qL[W\yoO%\aĉ f Scȑ%O e5o3_̡Q~&]iJENkر),mܹ5Ӿon,qɝgsG2,u Rwe1yI{٣-?}p@d'>T/UZA#$B Uм ;Ò6DK4q OTqEJEcPDkqAoqGrG 1H"4nH#T6$tI6<J*LJ+22,˿sL2p2Ts,1tMڄsN:5l:ԓ'9tPBCPDPEu;5J+RL3tSN;SPCuTRK5TTSUuJGhRVcuVZkV\sEU#^kR6/͈Q9/g}h1b6jXV.o_}o sm+Eǽ]u˂סy^D޸]_~ }'8.Hab؟mxb'fሱxޘ)ݵ㏕Bb:eTnezf%"qfyeit=ţ(:.TfipT  B` U`ꄠE"vBاk#‡ (`BFU| ` 7 P.(3q o|Xsv (؀:?^#vdHҤ\ʼg"Cy'M<ͻ:>gw:|s]i|pߟFO `'H L {XGYoh3+D.\Dُ à s!< 1?3.#!;%J@)|M3kBR GXS#IP4CI\q9)Bc@%ر : @r@O|0ɤ"5OtP l>\xi0!F|젣ĄNWg !(k)8*kSgK u;k,AM9\[Vk\[^ kTߪW =&qZ]nM @V_  !UA ނhQG* P\^zhz9l/"yKBACAX+9HPqOuppS `(@QC^O氖j9c E2F/;-%_ c98:V7,Aj:l| @`l5(F.>d>wKܵ=u  *1!Ch~àn]`(,(0X4 LY_;Gm6t0]K !<^BF {AeCލ$Nn@ ;Av,*Z6 @,~ʎ;Xi2wһGz L0?F!ǐR UvAb>s_Av~qIreQudYYwc a׉3vdiWvKq3wdywd'xƒdxwdLx@>g*o`~>?ΤT30 Z8CTHt3(&$q{^}}{cB=ύc[<t@7w_G&B_'~.`s'< M'}A2@#X! LJ\@l@|@@ @FMx?Ԉ?꘿pXY#?c4AAs  D |0@AH =%c' 0ph%\B&lB'ĵ AfAPB-B.B/B0 CfxA@@8$h%%LB'%?:bC٠j.AADL?3, 4$5<=| |X*C:: t> ABERt $>XDhDgJLA:DHBY1 *ćDHR,FRX $4J||n>H#XbH D,K4F䃳쌑 LXdt v2$X)B2ܿ9"AچT>Lxl̰|RJL̸d N\ !5 IxZT<MtL$E4 4dZ>>5y\΂K@:9>_=ܕS٣ܭ8_ FM_@Hh?Vq@$F``x^; ͉έЭzUAGLqA6JQ CCO]Y@J=HTpȘ\b;4$^#m'US_|c@Z: ;>  !\0mbk,A8ABƇ7}@@vVIhEJc,?.cq>c_>FhԜBB[fbM`3x.k< $}< E^(JBiF~mO`bETpNÃ&|VsQQd=棢hB.e]taD<-RX-`_Aa sZ:UXA( ,+1^V~f<Q.V-hZixEsEH6TCNvXoV 3VT!@&?amlC|V=RFE^LaEEY,Xd%:^*3>SJg4OKl+֍?!`XLM$^BȂ,AjNa}nԴg$E([@M% K?$v9RXb:E6 w{W&n#9k늶hoVQ&o(5fD.#>8[듈(؀>L4Aj]pYm.ƣ>K֊A2A8L<$>rNʧl'W.CF[̣Q`-c6`#њpء/E}F~8<#N*Q&[&hr:?mnc=wkx$‡3p*SkŅv—S(Gқggtf't;ۙԾ$gk" k;*O[q| ɮXuHx">uEY*jUcJA-=>?QJv._%v]ch:E$?`khWj=}t'2D=2}[5wD}сڪ>0oixPv h`woL:M?kgQcM4sxwBDRI`t 'ezg &#@9 oda5fAI Gb? fzeemV Р{-dIE|kX>:ǎpРX:׌?qTL&K&}gR6ʲ\{-ۀBߋy?S~8-o{>~&i3@l~_L8O_o?ey:< 'I#2QE lŒ|Ԓ -T G:WJR(-e-!fBX 1~|bEQkL1ce8F̔gT"!,J 0A츀}(e!=L*,b};/p (pE宵P %AvD,C,R ]4m]a]ƊR~/GZ ȃ ! ;8CCu? 2܀L2ZZ: $C `rrH]֋4 bbNYp;qEĔ!CPRJGFRKZcv@ 1)WFDGQLX !5g( =WGk3ה0|?FRwjL+z)(Ӄ")C Mw  4!d)LiU [Gi3$H r7A G̯k| 2BMmw3'pk w6 4d''bxG Aز?^.K%J njt`nP+ %Ge bϷ] 0MPu,2<`,rNt  on^ IЄ%a P(94@X*yu^Qb?ZR ]P3K:#pP%A:=SFY@_A ~^ja . bڃpB0?85;>h< ۅ, GF3Mй@1: r9w, :,v%`~{@Z&+&#H8]"jT`poA$Pp;˱Ùny #]0j84 ^#0D6E0~\Pyd8FF8#8r#x:E:#YeX<;ޣV#v>bEE"D@h@H DaZ$@ xv*$ L `hX fI\@{ A^@ ȀxJ3@vV@@Ҁ(3lhzCjΨ{d5@{(@ )˔ T@>4i~R\1ԩ)橞i b s~= j򨘊2)Ilh @{@mgt D]T*jfgT(G?C*$gJ>L@g ,)fnjl>ph6 ` dklk|~+t+i͐x)@ T毪C Ш(br|@ [8l`2`nСꩰC/ VI H*؀Iv*$XK @.CD)$ź = tl{I( ',w,6J; &(z"̴U+(r)JC8-Bl`mD(ؖm䃡k"j ^ 5zR9 t@M n؂D֪{=j6e!0*EX>m&kʈJ0̝,(UNHx@ @-X&F罪f/N./DDDA1XWJX @W1(/ 1dW(Ai[v1B4|܁`I(q28qC?>Bl!"/2dAĀ$O2%W2%82#3!A<roA ;J%mJqH>x*ȁ`"o"g`q031 i `lA$"2(s,B*(@1+c, ׃1B+3=ϳ"sA0 p "׳@{!->(glsCiA 4+n<̂;;<4=pAso?m @I3+ -C׈oMt@#DFDY֯F9s0)O?C6-B*dBA׳!3XH0/ &DPDBXhhA2&89/J7Vr].`v*W{AXp5ԚvZtjtA6..(F;D 6|hZT0 CE"DsGL69.+p5+gsgϳ!'x4Z4zߴkG{÷5_ӷH7A^pCM %D?6(-F7D)%C&A08AsODsq<{okwvwJGLS@+y8ko9fNTvߚd*hĚ?uAP (2eD 6`޹sTt# -`C+At 4$?i'r=3A*XB-Om< ;lCD Bb@ֆ\L@.FT8DyBܗ <@ćCb@ӹ빤%<0C,@wϳA=~]W3?yuRh(ETB.9,â 1 f}{Uٛ>C꯾z*s4= ܾ>vcv,<|StH4 R3xaBnP `A|F @$2*4yeJ+Yt5մygN;y9ӠLC5za~Ak׭[Jզ /]ldcɪP"^Ȑ)j\pIU=HןЙ6|$`Iw$ (o>u?$6ݗKY94iٳ]*ݷ޹Xҥ*2]leYeSȲ-6X+7j-t-LJ7^&|!4Bw@k`CI| `pдVr W~1fZWXq.¸fXά2$ %Zgm@rǣh8@j8#!`hpǤ{QR.mb0}fr @q2H.\esه1 C]D>XLcI.)! rPO$/MM(|HUZԜ8P 0HױBa`C\\jY|"dZVUhhħG; P JXM ZVExYKvtUy9$ٹR W]H,f 0"6mUG8D1[Grg"5)(&uݘz f9gzˤ/J~MJXige8jE;֖)*#TK"}Js泣y-?,T ۢ-ynh:Ӯ6 x785J]v1EosQ#ǜ [iCV`COv%/=ŁQȉU NΡD_ҩ74B}A']-HBOaXY%|~ѣ PF 9XR<0˟yBw=eo&ZlcbuWP  fXݲ1BMPCwD@J(Q g@ 0 dܜc@#,F[nP'$T @P H I`C/"Ƈ?4UUø7F)P,xa,Xh PA [\X"B D%" 0~q##G9v#'2Ճ@8` b1b.!RI6sDT>yPd$Pa [! Y6"9 ` @"I/YO63AdI4 ɃHCP,{V?ϳKSH6%|KO@hQ CXV09\6J4 Kɾ03< J 4G:C;Cj"r2{@b%ꨈZTuUIVK |Hui\5BI Y.+jVuKjlJҗ.0s],0%H#oHJ"hI[ZӪ"A,"h|sd (߂yCo} p T =HG]Dѝ-lcX x6h@xoxMP^& z 7HBlG _OT32w9y.Y[`EV |D p}u4a `.R!^fk5'&pYOթŁ`u^]lcVlg?і]mk_;ظmo=mj\C=snwy8]Ǜ[ơxu Gj p? ?8)^DJx91qI?)wUr/ s yysA_>t8ҙ7QY.uWzгuc_ѻ>vgW;Ӿvgo>ww׻w|?x W|xc񏗼%p_9yNIc˗|Yշ~}iѽ}y)}/=~/7|~鯧1xF±ՆFo=v/}e1`4W<Yvd@ % 4*p@(Ns6o h%6@v 04P(`$`Q <; /erƨ& af  2N !!FP h @0T #ɯS!/ga  k  Ѐ&TA Rݐ z$ ΀ܡ Xff^ I!؀DqfJ! #`a ^*A( |01{45SaP#v6J b |;`.a 8 2A! ; # " @w #` " @&Aj  .@B*0( mP # #X]/{0$ÁBཀv` B@ƥ" I.. "`"Lb:\0`@ :>0`R-@&!Y/ 2r C| s H@ ` v!"&@}3` `* 2/0'Bp 1X@$"P9 !R'"S, P Q-ު*7.2@.0i$AXPC)o3س ##!$\#@5"I ` /FDz,DA 0=C $!؀  $O3MH Dgr@b`ؠ "s T#'C@[Fԝ`anJK"(3 !<4 tHoE3"P=RB!>KA *I+:RTw@4#H@EA7 pT ( C/QJ8 $2=rolm\\uF&b6dp3X bB 7-u&ŒQ ymNSNU@BQT ^&LN͝YqM ^2 C@YM @`XSd .`SА!fАqdVɏd @o9'0זT!0prePs1&v C SU<!1yK&v︞/T7C@R @D!f6& r9 xЈ/`B ~oh:4#rW|őPT n'ù~qrr {01,o;"?{7@Dc'C hgƥC(NYC #6O"075~4(WT J0ùϥ;e97{f Re!60gX&!!`6*s5SS< EH[u"g!<%}M"#>fkTf|"w|{y&(x#7,ȅ\lGE ‚s\t%#KS ET̷\ǝ^-qbR#m!0W|6T?t[x(a pV;qΠKG|5Z.&g4fv]q jY-=їuWՕ^]֡%g֭o]M.wׁ]?'؏]ؗ7]aBگ۳]۷ۻƝ]ם]]^ = -O#^'+/3^7;?C^GKOS^W[c^gkos^w{~ 臞]蓞꣞f^~煞^Ǟ^מ^^_ _#_'+/3_7;?C_GKO.W[c__ko_wsqۇ|tz_߁N1FD`bC B!گ"f!_( IÀ d> Xp` |1Ĉ+ZX0\b+H|‰8/6:B:#:-:.:1;;<;3<2<:=2=5=$=>C@;@;@+A:B@CCDHFFF-FGIG2FIJJKKMKGKEK7L-NNQOKNQVRIR7SSUVVYYWVX3Z?\\]`^`^_b_]_Z_1aIbZbDccdc:cCd>d.d4d7d=f$:;-Yy[컚=* S`gb#H)IW)²˰pn JdY{™ M?q1S"6Ѫ?dCP4˲~,Dhd<C4_AC(JA谄Κ9a~7l,CRW`lpZS,tI;؀0~TB,A\NC3ltn@l8g(Pw ׍35>1oÍt4ڈD*hH!ELF`T-xWgX *,=KX ;E>Ap)я4^ZC?07FZqc8) p}۞0?9, ۫ A@Opz%.`{chRLJ>ISl6JAiZ@Cp@ޔ0 cX· @BV#T*D)U:,*SkBjwd3<0.p%7  Ȣ.`?#q*a NJY._8.l4+CN(D1rhSI@sg‡ I<uQ! ΢4^_Y aF ,}[JcdjLT! :į$2@Rt`Y8@ЮGPa'(o}@oi@?H8U@(>q%l 3z/r!J}|Y}wR03 RcW#*U9E+bJ`9Fζf ˲^Mhp#YX*=U GJ:^a1%fElh(FpFMUK(fxO%z&^m|*jXJ-:Iu= VP k#)]l8 0^LLx ,ÄXZI h%⒬ۋ/ ^x Nh+CNgsP#X֔XtWB_$':ĿRyQ6 꽙?h3Svza`T@KR:$k=E3C#MdLO'w%+> ǰٔ-O;}ŎN1HNHU0G-UX w5Q;4Wמ*a) K+#K%{^NE "vm`4/q}OjL8vO25궢\Y=P>djpjbx[ Vu bǙ#d9Nx, Q_eJcb,} )z?ˊGpoe;{i&xOX ǀBo-E5= 9zT0d(RFq?HpW\!` PܗF7h׃8ۿ~sڿz&RuR\t{;ΐ!۩>-µLG VX,!HO[5Pck %ړpi+/@Iwge|W"-s[#ٴ37uf>!r rI$NxWT>#^]n { nj|G EWԀ*#KfPb gdfF؇#4St|%w`h`)~Ejsd4m7@5eZ|`7AXͷ-aQ4zڂx7-܀oFo2)9$Wyoj(UIv&NwCҧ 7( q܀9CbWg R`B9pQQl 3AXAP@k\#,zC" nyt^TJp;e pQQDQ6t77Z&1*# .PDA``*ISpil' XsCpO0RrWOQۣEx6ĄB.3c@F34F4)&YM== }$>'qb@2%=oScD='iu-8,`nd=R2'#?DBۣF:}N,SC#  )-_a `BaL@w.QKT(0GdIU2JJ%w`2-Vl9]8n^*0/Kmqz> 4N yP<@%* ?,Rr'ElM~ 3gr 9ec0..Eu B#(e3s yz@fGi]o>By `Gy QU68 yGt12%0[ C*M'. s1 1->g3>Ҡ$((e |zi}VdS<"Sqr0KYQ1z:8z\ףK! kyMD >(;a-.2C4PA2`8 6fJ*)zl12mr:tZvzxz|ڧ~:ZzAڨ:Zzy_ک:ZJqڪ1zʫҫ:Zzʺڬ:ZzؚڭສZz㚮ڮ溮:ZJzگ;+[ hq [{۱J"; ${(j*۲.ʲ0;4[|!6: YQYD93TóN8+dB&l7IV 3=ABfuOO{qH#iaZtW)%=$1xqQhyxjTXP2Q/7,x%Ή#s1 s"{1cQz@;誶p&t*IUKbʐ;K@g`cpH 9Rpcpkh 9/Vh@&hY0<$: 4Z lEs Y`i:pY:=2/4AR`U;'5eо+ l0`l@# 5)GpK<k u BoVGiX`ܳ.BSt<[db۳>}FAEAq`k2>:_=:Ay0@$mé%3 ${ܳoL=2sw]c`)`xRG0M=j@۳Ũ+" 0cShL4@HTyCFdX@X1XHX)F -`)`?+rl K q I- ꋻ<кjm@@7tb&TXt%ndaւJ' FXu%wBf lJZh_#C y%%T(MTd{#V[W &M-g;Y4#ȠhHu&gED/zX0n־'*.7`F@q@̜0Prҷ TGE-75QhWz2+bwc>uK4`2-~T(&0 jTsUSA֪=R`B2{=^Wrrw=A{6W]o'b}ܯjl(b3ZY6\$''D% ==MQQ-'y}%OE g z~@`gٔ[{GMCx4iT4Gt_R)4,ˈ۲IgfǐLZ9K/ Aٍ$ުʽNw%u0 R`(m|e QPPuX7~%N<Vx"JҘsK(`>L=]5O #.~b(,-5Ի_= dTf@;a֖3~Hjx f%zj w%a8e5qfTD"0nQc@gXJ?[Er\Rw)8R 7v i.J0#nP3T 4q"z vL^SR3|08*Wrʩbw)d)Xn-LMoF؋NrWp4c9O ]W$>w# Ij8ReY7+a 믅18b`qȌ TsvըV({lgғ6d$v,Y@sdgNE4`X 9,MIƇ n-faP{SVq==@ѸcIbWfbdYd<$ d:`-c =s`U{*w?7 ß%(Z'< j܂oƦoK[?1rgjt?+-bNﮜVT}pQUZx俲Ik2tn Y#lpn17[$XA .dC%NXE5nG!E$Y >)UdK-MΤYM9uO7c%ZthPI.eSQB4ZjѩYnWa/^%[VXiծe[f^[]y8/V&\pпafcȑ *Re̙5oZ3JΡE&]gϦUfZ5ʮeϦ][0lʶuݛ+nž'^'ƕ/g޼/rΥO\vo]ŏ'կg{ϧ_cWo/ 4@$At)A{pB +)B,pC;°CCѡG4KDqE)TEc Ek;oqGrG u1H"|MTrI"LI(I)0*r˼K02L2 I3T31tMڄsN:iNtP]lUtQFuQH#tRJ+RL3tSN;SPP"DC5TTSUuUV[uQ#2T!lb%.D)V\^"vc+YYDVYvYhߢ!Zm[nu qi=Z@}vݶMH^xlެ-_~x| X\sFk`_ݝV,sx؉ê⌃y;jcb8.'Wd%vygݘߕuQ Dzu#|Fٚ-5ў+JZ$|ZP!| Gp!lPW Z?(& Qb N) f ccX"`Ȃ,ԞYjڠ x@ 4 CQ,( #{hGmZhA'! @@Ȝxy="Ɍz<.hxͰgG:&{~!a/Cm=o|PߟFZ( Gm~IG=wx'dM?T С S;T1pC;BAP ' N?>CߓDF 17vЁ t á ߙ GD4C1iz,ni ?WsD T%61u`=6 sCÇ+ < CZ x4d|gA@>,tȾp с&QhM;c7 i`C@:,p l/~  E8FJ`= P vph>4QS;0HhHϗhZ~!W.6:F{,n # >yό4#CCS7#kz&}NaS T{ 4t]rA?S DT[dBt+(,!@D*iȏ+;~8Tĥ`&A0< vdG HvK|`\ K}Me>h`T3#i^ C#V}a =Tw<|?z:z5BaAm1a+D %XٴP>=gIg` eOVm.wƑ?-y۸a2P撥\” [>p@ 4 HTp@:@ܑрtŗtURlTb 2%/ >}ME:6up}3#?܁a9S2dzb Y9{RNyRka6V <>X LU-`h#9 xĚ:پw7 lh@+ڳC Y 4 gc7.~3"t@@9ttEEEAt(E|#q H0 @y ah70R-wjMj$BNvC@K03-6D]R(lOFB:nX`\:9zٟK\[jcIWON7eQN>W='8W|w}aӧt-W;R.$\M}$tL$|זP_ Ոs%T 3LJl@|@@ @ @FMИ?𨿃#%H4z0,?@8)9@AH 4t |h+h`'|B(B)5 gPB/B0 C1C2,C gBFhTj|&B<|c"d , |=X@1AC4 |TBA;C?<āDҀYD,NC`5b&L#E|HLEeDUlxDEE@#PDL]F(< pF+F@ RHe >p w xͰTʣMG)DNlBPKHqćhH j`GXHhHzDCD53l ;h@$Is@ɍtE``̜4#FܿELk?@8RSJJ,A D.4K\F샶 ̙J[\r$ԣ0)>*5QEnJqHLxȜTJ@{K, P%  X$i02&\ZI|8$KNT$SLPNޘ)ČJ;??3΁C#-Ͳ NAP@HHOK=j0t2|FJk} @dHqXǰGļJdž` mLu@}.@R*R4(m%ʔDNQpHI|ʉܣ%5 x R|;S<;ҟDҢPjSh*5E5lLF8K?DTMTNTJ0GC pA{Ph$=B[M%T7 HPKHFB@ 1:ØިD؞F}B[JO[- HP9NL @8K::0R% S T5ʪ0^D(hSkpIK̲IqSr:tu vmTiթ_V2՟a5V!> NVk؀UKxXECUPL(*ɎMpAՆE X(GXY= j5 FuN#"JAlZW7W ֢FHK@X HW/E< {=&ыZkeOmAu<[@WMHH Zx`;۸8`h ;DR}ܺbP@MMה0Pu Aɝܹ  ̍B0}݌@Ӆ.@F4q.t] <- ʝ |ݝH'7 V 8ѵu0E5ҥ|N@h^%VQ٨B%_0_P)6@ AEA>턴mXu]+^ڛ@_V؏JAJo5ބP B` vX^ `ܙ\ER WXGLA;%URaac`6PHb@ cUK4>ߑUt^^<,&c< &ޞm:V_ NMS84FH=ZꍔNH;|Xl]ZMc-?> e(L# ĭU3maދWMY~K-.%GL]@^G@_`h U8`uBSh d$>.A %DUlC FԟB^Pp]`AO #nLd`lA D#om\p peTڃ 6oޣoH秬j]dAPhpUdF GK ]H*H-fFPWC99Ld;N>:‡R;Lωڊg>er]h zȧG3@|eq*}dݷR*S\ˡTzWpȂS+8 +}g;l=~~ӕ%9_~|h3l84@~|(Lx~]vD<l,hР 2l!Ĉ'Ng"ƌ7r츑"Ȑ"Gǔ*Wy$̘2gҬi&Μ_N'P,(R>#m4#;IRj*֙K!n5Ӱաش,<[-ܸreXw.޼z*G -l0b#nqVS(x'̚7cL3ТG?2j{nuDӦaӮ]tjԫ%ζ[?;7ݱ3o.WүGW9ڷ;!^:q.?,} W S— !-`Q.4`6!v!Ci"+%tb/ڨY7W2D#B; !{CW>z>G: >5$^ED ]z%a9&ey&i&m&q9gSD'y'}'qIQEUyhxZJ(SCU袐6RNңB@T:*jꊧj*ʊz+jWJ+R{lc.,:=;--Gj-b;V;i߂K.:kb/*j$ L|00 CK[|i{1!<.J2)2,|* ^9E\`?$2(t~>#ѵ4AC^Ӯ>=5Lb}_է^Z^נ~=vb^م6x8M5=v4Y3ε]}O7 Y~|3K^'G~mh9o~]7?e?dMv>Y曲%TS8l~z. M8М-@!J P3>P3Q#QTcL`,qd z ?, (>Y7|h`{#J<,d|)v0UC8vr}a r P@ Џ"\B44 䐆6|\IXQeC<I !~B;at!wCp kH{9( @k<N xi|*YH/> vLQGrEmd;%A4qywva8@G҉ l`BCQ gC+vH_ eC3bYsxĉN kL gF7yxڔ䆜9d@hL;#*<ϓ"A@*W'3st2*3#?~1i iu\HHM ʄ?1&ꢁ4U' B}R찀8np!N :ũ)@-`b ,=-(Qr!44AtI,ak0r a8RDwrg6I@E ,a RXf-H+>XDtSM‡VyۈNԧACs$B LK$פ=@M20{><`Aڕ|v:Ё śZ BDçv )ԤVО@bBhZk<iE6e4k)?9nBx>SUb8|gYx0fs-> PD}_b㘕MqKg@:˃QA( |u};?n 9>Y36|1r 2E& 'dp(>@җEmQxk6ObjV2)h7v5RM  iwct &=ݗ732ipLX9.Py6] (3)QԧR]Uճc6=*uM[CN|c L:H* K,,!)A+RĔMb td4 1>6}TO?2ԣ$W^=yȐ# ׁ1Fz @&dd4CRB DFYTEN@&Ff$R $@/"ldytGvK!\@8MV9JK*iT]ɓC2i$ÕD?, siNm2flݝ$Q檮*{B8@Ȑ: =n*xD?hh ,jt &qp>ld@ \+xΫp֫J*P`n UB+
 ,i'pN@48(+8#H2JE~B l*g„o.+ )t+$p @2Z,P,0=A WD?@ l®zb:fYAlB (파GӾ> .UFviΎms-D--lhH>d*–ꦪ@2mH -@\B(D@wЭJPݪG>܃Jnn Ā!|D$n-zrb&.DC%$@MԮJ t-2Hg/ÂnHCHC@1O<&3*2rDN-<\t>RTArlLpC= @ A==00d   C28@$t먕 G.b ?|11AB211*X1'A^022D#$$Dݦp?> BhA$%W2`@ 'w''`%[2$A< /!TBܖb!!F"+7Hr)W2ltgp63?3@p`$S2$pA -C+2?*$<-/&L/+2B+ 3@3%op G0˲ Dr@?8B*0?+9YAL,?C4@lAt*pB L4'T-CF IMp@#l@@@EB@_p<3Fw?C6.+dD4$8 BN ?A&B.Ȃ,>ht9H<{dd1܂-Z[5@o\׵]uDA&+`#Ca+uGd/ &@TCT@dd턃28&l<v0`B.6+Z{A[lu.]+ (Am˴Dv./*v(Q)Ap<@;P#BdI2J3wC>,~Z6z?CN\;PP68[xXW8/;D,CP8gͅG'= .x~ngyA<4$cCl ;4DwA+B.3ÍRp  tC_ >0g H^0yA(yWx< CnyM|PwA|niQ'u 3Øl0&noAT$6M ;\žv{u,a+C-+At?(B$?x.* u;L@$0@D{ !|l(<D4* Wjȱӂ/nB@HT{B/mS2D'7;ۈ"8:ASy(7 TdӍez<=C/;c|AL{4@ nn TA4_v-,9zu['?-!@ 1(6ɧ^s7J=C3Ȃϓ7ƫvL=%7Oߵv~_.,0*C7@'- 9x;rO [/Y#?=*.i¤5tM9ⳀA@zAT`3?9缋TRND%@CnlAC$!!#I_1̹mhC<[ ?z-EV( *T E^Ĉ+]9^~H4yeJ+YtfLdYgN;y6|5$Ar(Iwd VIyFlXcmwmZkٶuVΛdֵ S>|j Wƌڔ! -[X2)LBL8Xm| -[B{ujskV6OL !FiZl}ؖfa 0$"#F5jU饸,KՒܙc@ np AXau."ڭvʡE<2*[%{~7j~9K"G UHD˥Xi)YUnx>݈V8L ,Vض3&5f 4M{nS_*p5J\v=AjKўsnlW "Ro+t?hɆoKlAr p[xGMfQ{A<%LO2GXU%U@(`eH K*q%~|N11u*TM¼q)xLAS30/]ɐ dȥ 9 l=kI%pBaa š4./nq4@CA tУJ,* `@BH`*(fA)Iv˝)&Eurxci(B [fw +R^(iqjBs.E. 97aXc) 6%Fp`䡶K Uh6՘xXC 1լXji\ORLIzS䔮'kX45./qU}X,i0BTBhaeh`SLT%,abU!6)?Z<58 *a Qp v5%-[LԺ,lt$z@IE~ x ^ PUr\yQkj 78 F \`#P?hq/[;ܚ_GFs3\`)v·#,bٜnik7$Ƹ]nsVnw]o{} ^pF9 贀[8މ_V3qxI^␟%W)z17S.s\4yJAk.t=U?Gҙn37Q7ӥ^uÈWֳuz^iW{7^h.w߽v޹w~.x^Gwx?>掇K.y_%y֞G-zҟѦGzֿ^̮5Nty{o/i_ڟɷ379ѥ_S?~۵}&C+_~o9 9_m?~J%@.,!pBxh @^@`.2p^`3'Fuϲ"06LO@`o %4@.ZP50H-UL$_S(VVQ$h$VN]vf T{%$\IѠTu`}=Mx=\U]ف!Tw b$aߤL$*v**6*A$%h9v5o[y]wMuԐfofsM`|!qt`X3%%4R9V_CREd[ 6UpVJI2 608xo z*a y 0gUV!5Z5`.U.Up /`9P+b$ZoaYյ$ Zc,Ru5,=@R'`Ju V-qVAvEL`oH1O;&6?xF;ՕR3Dx$*y6lA`Mp(.&B~tP4qY5ay`% z`@E!J%8T,``rJU"4+ v+sx-iЌ- GIµ/8*, @+/+u;' ly$.ۖ$*6` 4 I+A`lb5&t@k{iBJ$L3XA@{$8dabi F>iJj{(2i$4 ۾[UFt@ ` TWFx[>% d\ZocR4W_{*!pQ9$jxU pÐTkC<ɼV{%}TZj&Ѽ9:$:-:.:1;;<;3<4<1=>B>6>;?=?1@;A:Assssfu,vvyyvww3xsvyv{{{F|}~}z}I4~~~}3DN:؄Bx=S4CNBN=4Cd;Jˍl:C5Xޏ59.349DْZXELTSkۚIҜYJҝD`DUƟhՐH&`]dJF[XCX%Ni~z=;{1-{ ~O;0 S`ٙ&2)B,'(oOlWLA %Op0oL)S,r-k3V`51?PFPbDDWά FrғT;*c8T e ԟՃ~] Yr7=a@;SM$8a(((A~=dRŰFeVơؠ;|dU}rvЂh 2LkH`?fe_JX @E4 (b. a0B$?# }"z'x.SF*0@uI} FS'R0J e0k .i_)C/x~N@ʰ.9iW(9 NM#p; "2ׯ`T .61ү 8 @Gҁ+@?^,T= Z"V?MIX L`1F̩ϺV$Ť=T [Xam\N-Q7 =׃F PBb.rQHD$@}5-RZ)_JL7#1RD$@`NpQx8 L[HD$J]V졾N̓]Ǜ-cj # dA! dTW`힤/JEZ,06~mN FI{XS[ 7X,'f&ql[#pg"&V4ra 18`qG>^4{10;闼HKD~ ޓ`Š! DjNH5nfO 4TjEmx oLZ pޞaa^p`ߪ0BC vx_WJHVA+ d̲ޑLk&nW?4Eg4 P{1x.vXد#wBL=Y?rгSo;KaG%5,+ N%53ÌLkt&&EgZc هΕF{6ΘK^v1F*n09, w'R w§Cʀ,EQضE) 5#}xW0*bbJN.F1H Za;73Ox"8hn 3 Uͩu)ucfy5~~v'7k9!A9Gz5t!=1{,Xuy՚Z%#*!N,{tOZ%E/\džt-/{-)7 2!`_i73JIza39ru\B wbz?$ 24Wv_4,t.>EN2MU:Fyؗd$XAF%~5 _ot@}ba wrDҕ.}Fm>B ]mqE+6~%_3|N7/$]Mbc0Sq,=P-/X.b UuXHh|80@F|_[cO}u}+xq7\]Ao@ h`A3+X(~v3 u554\DUҰ3H*'`h:qT@ P,DGD' uuC_ ƀT*e;kPQ0,Sf7Q6uV3S"y|&FU*& SP$*,&)D 3|_AhuDWcXa.,uKNvpYX$)P]ADgO3Q,bK`NG") ,bdUraR uKIPi )T83q=; Ɛ7332Ҟ]$:24#!103uISTIy8ڢ/ái68<7؛yWE.Nڟ?-Tu gsfTYq7 0)Ibʆ^0prтNT]q#PNMz?+r?DA\:Zzک:Zzڪ:Zzj񤗡:Zz Ⱥڬ:/zؚںڭj:Zzn躮ڮjZzdگ[{}1 ۰k [{:۱K";$[&*,{(۲02۱/;6{8+<۳>5B;DA[HJkGNP+M{}Q 'ZX+S\۵^;&)5G&@3[rK[Z'x+h *)Lj B=>9nuspqQQxm/#2oq%ӹ}{rdgj'@[,ǹy(JB9y㲽;zcAɺvJ.q` y cT@9b&oZvXP[w#Z {7V /#ca e epFL 0; H J| hFd T&f}: HB_Q L&;r p6B:quKe;hp0,p`?΀gpl;Ẽna'Y+3 ,[E?ײ/#)`lE1))5>^g]aa'CP=s W0BDւoTRBs]'=@aBWrQ 33; .XD/4>IĦ\Fv@k`iXI@^=%x R>Ӽ` vpE{eNDp,FX%T$ bDPmGBDP b'V䎠2(b ofn{`LUy'[z$,?'D[`Ms/$E,LĴ`M`?=FK>&{&ٜ_D3fOyR yaz6SPCHwWdjlt'`7,3=()(JiMFWghG@"v[%I@DTլ~5\͗@ W= ٠ӑ"e,Y&jBu/ =^'x%KNsT0Te2Кkʻ.8\՘X7L8Ndhnj5'Rfm;=HEP1@U>DӇ}rߑre$%Om jW<JfӨ0{nN&V V1HiI9H=WV*) '(I~$BQSg\AW(0*ϫT36b? Nw'rcK/V/$h2U5w ]JYU@yz@P؅^e}$xWs%N؊+P.aނ2~šha) 4/A&L+`ܢOؙy"-tK;e,EDR-$awРƓBM%D*]d~=83ǚ[0;?t`aB}ﱸWUg$=}-fd ~Ʒ6I҉+eXbG6(pR A9T~OJ'f MT(0Xta|$=p`'|~b!@cd<s& C'^d: x|8\˅XH<}$*vUI.@es(x'C2b[N?,0/U׷cz?/nП*{ A`? .dCsD5.G!E$YI)Ud˔dΤYM9uބ { Q B*S@2iȫMnWaŎmYf.*'+Th 1oɂF̯z%\aĉ/㳌%O\e̙5on 皜E&]iԩGfYkرeϦ]tkimo!&Sqɕ/gNsͥO^zue^wg_y]{ݳ.}/?4@ tA#Ċ$B ! ;C6d DK4;?kG[tRlEkYQƴvG rH"4H$Tr|TrʘJ,r,+K0\K4L4"3M6dsM7SK8sO>?ԳO@}OA 5?BUteQHs4RJ+mK(-t0SP4TRKmTSSUu5+3]UXl5VZkM U[s+\wfvXbQXdXeuVMaYfZlv[n[pw\r5\tUw]vu2zw^z^|w_vmZwZF$`F$#z&beأ!8c^8ANeDdWf6%Tav!V9qg}yB+o4Jh˖w狙6i1I˚GZ=;>Ξ9h5S;nu.g3;.{jo)˒ %|##bgeqgu8@ VAsEfzvrk C ⑀C)c !c "vrO%AHx `Ghr4~*ɵ_ _(/!7B kHW.USEd)}p$R=9w'BPw'Lb* S BHpv4b>wKB:`19`R Yz{耎y4n` 4Q A c(PH;8@1(F402֠yBq0Ip`!(@?X18|5B1|D. `C@B5C2fu4[fAnD/rS 7"(Y"?P@aJT<8e>{ (" t%HgTe/H{ Qh9R.$xZJcՋp C`iG瀁Jr ) bVe( O a*0JA#P a"`O($U~`YIhRMCF\H%S#TkDVY$~F"DJ%Զ|hBȊİbԉRvhf# =hgLgj P!| E*!wh.q%Z\{dB#$pjYgNޒ#vlX[[HWZkCN px3k!YHrJAXM%v] Ax@ui$mUS":S7@ܪ;XZL]BxY.UMVClV[MzŎ$W)h JȝJkD(@N '5Iۆg<LL2:ŎU;!Rg8Ƴ ݕM [A borh;80pQJITVZ`ộLD]V}*ϰp؃[_m.0̵],SR5*vń㺸M!{ԹK]yI݁tw}l|X~%jW|^7% 0uQ ] w5c-d[t6,p^{\D.MȢT5|g濂>=+NX,tJ}!ʸb0Nӳѕ ,M< vȃG8K l ,QbeA ̫ۘ2i.C"4jϠ^\ю}:̣KLpB'7xˬ<,dn`@F5RF@a!LK\&Aȃ>6$DbF ɽ΂TV`BƱng%FxąFPGPWǶ@hcr@Yp[ќӞFO7WvTB>i 94Z39o+@8н4<ļl̶PN~Tv py%Jz2u$Hu.~Ѽ7o6&[p&&e qQQ.da"/pd f̲ʹjj.o{WV.ZMHf-XJI텈 qpgqBM>4Zvp'oYƀOVqAqk.U{37O=pws0B!v%[bH K03?tTTz-?FGl[_ _S6BGRg6osv;No ..^@/U]`ZPrMO"IAfvgue$m]#CAXjnGPT/vM Hw-OisvVoX"4i=w-=HAsP-5x UE<\+&N_ x,qtvVyKuXp)*5Mx%@|I6yN0a(G c 6M]B @g_L'Z5Xmȶ?G ͉+8tA y|:ŝc?AF_|ӬgW{`8!݄L}g} ԄMdȸ*BÀ /1M~_~ӣv1Q{fy"'K~/~e~|{}{qu#}oI],XК 2l!Ĉ'Rh"ƌ7RDX#ǐ"Gg$ʔ*Wli$̘2%&Μ:-֜'РB3ѢJ2mi¤uRJ'ԬZrװbǒ-*ամjU--ܸ4ʭk.ٳ UK/l0zm|kȒ'?\2̚cN›GҪWCMM4fmvu;$O8򉼍'o<Ë?nrڷ3 .=6u/o~ۉ>wWߘ=ou}_vHZ*8YEr J(YZXZ\zY{Wth8/bY"1ze8%`t#=#A 9$Ey$I*$M:$QMRZy%Yj%]z$ݸ6xfiUDjFflN%'Zte'cx.?a4fZe9('U z(:c>:)Nj)aJբ:*}S*xS:+[S+>݊S ;,IF,*;,-,6RZ^-f+[ካl{.R Ľ;/+o+߽&/g_|0 +0BR S5<1[|y/Ol=t,khyȳܹ\s)K3-Wre8m 14## LwtӨUM[k7tY]-يMgkf ۬m]7t47k޻.$}xsZ?{3~U&>9e VStai~*f3pn!#F7$zcLQ;\;zL'BΈq(P1  =H"(a&(LakP)r "=DE@T 91iF0}A 5'QPF$ `|1A!! A 0p"͐Q"+"w)T / Fjh!D F*ad A ?Ҿ A0BQ`>!2;^<(bcܸ%$E{B<`1>nb1}b؃F)U(= QQG;ځH7"aOe1 Š_:#|^9@E{T@b_<ӗh@=L=K 4-qJ4P\~s!YBD bHCj@A2LBĕ{ZL7$ d\& =԰cB.!Ԥ2*$ȤDpZP".%i*: arI0v ;ľ@OpCdH7ӿ| Kz;B URETp" F a dmjMx!)>HW)`P LE?HbcI ˾Gc@dd7@ nP8J՛IBߗ76Q؃ @@ h}r^u{E` rsM&A}#nOq Dp;{`/*ohI/ ^P!Ć2л/ĝ$Cn@N>VlB։Ep` |LG%-Hx}l=b\b/k"  0A;}'nBP_zq̴\F{q}{L^DBӗ bӄ9AtGM#ka䁴\]6 ;rH7u˴?~12R@{3DЃh "-ė}cBZEH2*K{6{@IH?ԑ?vq5{5=/PApު, y1N,F|;5 J)d;$ ndFqnGt!dk}7 ϙusp:V+ $@^OĢ f`qѫ}vߖOlOhI4{֬WQ`l{_#aAhF 7?&;PzM |)ЃE /8J(EЯ"~\X·Ёif U7YO/̍=g ) tPO8$E$^ RX&E&~b]0wx(vE("$r⭘*jE*"&⫸,>E,"(bآ.2E."*0(c2 E0== )_=[D{y]Tp\#6b2^ \@8@4õcl=OC?C99N <@_#l㈤@('[*)<@T0 <@@omVh`g_঄ԃ@ @ e9ꊜ*!\ @>D)&Ǽ=i@x+FCbh x@+ o+xOdīllZ؃hȚ=D8$˚) )c>ĦRH~ZъH2x l @Q&ZD?`-b@5hmjHF8 dqD&`tl܃! ,>k !<%2˶`v>/g(@#m⎭-Nf lfk &V= @ 4粈z B41Lą--֣Ybk˚i&&R^, Ȁ|G`A@v/~$Ȗ 0#𜚬>=<0GKp^m'@B6m:28ebf8n=$0B2 11&4 7̭-׆pC,Bh+ (._>:TW1qD x1qqDA$Ѓ>:/F2 PB_ WpLh?7pqϱv&)2)G&A1 1D:r&o`1CBT@0yM#=C-p<34GO̩5_36iے q4pA*1? ..ɢ1AA +n]rn;(s-$Bt8C4@65 73wB9=s-X@) , #I<@N3 -?6-)BA4q4Oh^n ؀8t)-*>_=h; $;b2 @d|~fj0/1MKK+-+ NCNCTPLQ_At"B,/2T[h: dB(RT,C^hDà2YqZZ>/.BbB`]?sLAu޶8taA+-B.<ۇG?+7M#6󀊷4t4wA",kExO= 8\&D 5\%t=p= \fDOHʆo9k9r'vԵP5Qv*.BE8D,s@?â CyAT@ꮐ2L8jcДGG?Lz[:{B<8~.@zKt[6i.74~,>/C>EúLj4|DA ;h@\VCDg,̔A)VxcF9vljH4yeJ+Yl'`H3iִy3c~ŋ.\nŊEJ .WX2 &NTZ"W`aLXE++Wn\s+ʄin^{700J$ XtA.43јH,0"_͛th+_uj:gNXEǒ )JRzD QzҥͩWdƢE˕|t~iعwhLe2Tw4"fql;;}#jDkxJaP S"GUZ\FKQ @H:ĠܱHE|J{ %H|ن" DÊ 4,î>Ges޺O>3rg@  (hA5(=p&{tSg[26"(H HA +` >H*Zxq$Yi5%g"{AFL/(fIevO-Tr]TנY%:E.p* tŠ+ R̺%XW'} u#g+]p 3  0\L)T]YtO~)(\N,޴:5Uh{{Sf:  H fځCۋ…ZɔY>$N}聇Up%N "ߞM3TfecimϵuZ+DXc(ykqFt;OzQ+ZP*aল1{}lEGהc,Fwxl5\>lѣ|-\Py*@Sv8 .Wx1<};2eH SGO5ӣʬ@vTаE*A 6ֆɠ>@>τD&P<ZD<0Z C5ޜu\HD\ɇVBa53<@^X*qd54 S=,ctw #dja](m~kT9vP@0\ȄPb 31Jj$v--Cu|hpG%|4恸m?MLIф%1$M :C.h ~0Ё8dznYׄ hm $LmfG1<H~3q#LQ;#K~vH#C_4PԹNJч=$ XG^QӣA RaKx# 0:Hn?8;$9Ҥ 1 LJڣpKU?MbXH.c5-&Ylv1Ra;76Kc@.^qwB&s Id*G~d.wPά [s\<h}/Yw},U=yrx?Ft1xt=[.+lLhӢٴC=RrM*2pҞMo7NY׹yk_]lcVlg?;װ ]mk_ljDZɝfGV7ϝu"n7J]o{+xiM|^ݵ!-p#s~)>Ww۬qTIN1)UrÈ/̱s{yysA @G҇t?Ng.u_]VGu=^.vfGv=n-wߝvwEw>x?)vH5y @ BA .XA | F y c%0H ѠX P  )*AJ,Q& P=  !4 F Р4~! `db"ڡM . ^ +pİ.)s) q"3#@' B bG-ߌN1@9 rR"); o!c60 1@9r"`&74J[ "Ӌp8' *6G!".5A3;3,>133t5 )+ ..|R?<OC?#%/)n@b$9%B4357 beQX> 6 SC R"֓ H9T@0A99ǰ$A2 bV:dP B)IaP*4Xa: t$ r-3A"4nTPuR?_KHF`FP) PPA%J XarNCX>~ < "PlxU0PHG3rbP?Ac9+U@VQ P ,tJגP b\0 0t-S`",oeDͳ 4B3tHũAr"nrO1a 8V@RPP_UQ Q5b "S W b0X#4TU o[CUjQG r;E[ 6skV 'ha42$i*) n.Tu*E`P"fLAOQn}u V]'U@ `1쁨`RWWqp4 \$B]Rz/ U Uʱxxi>Hh3KTT7PRQkv`+"12O6$ 2)_LQe큊G%$u$m=QyY)7SRٯ!|uX#'Œ W;tB{y~ ! ~W g;HeE4P<2 {XKcu4OEܸA~0g;kE: $K"F\jWّ=_M  ! ,   "( !!!%"+##$&&*(&&&)-**+$+3-.20./,15-183345.96837=7+7058>8/6:B:#:,:-:1;;<;3<:=1=2=5=$=>B@;@=@+A;B=CCDHFFF-FGIG2EIJJJ6KKMKGL-NNQOKNQVRIR7SSUVVYYWVX5WYY\\]`^`^_b_]_Z_1^`_aIbZb?bDccdc:cCd,d.d4d7dTH>@ш>VC1S$p%vz([ p z[W,W߸CHAf\ SLiMA&MlI!;;{P ،.tvAS:09yѴNqe2>@L[z 07j#43獭!c0cnlR u>(WiT s$K\ @;9>C`sVV;D;i&@xkDWjpg S*C} ϗC{͂f '}~wC ?|p=jܨRLH16 GYC@GD)3$j  lOJ2+Sj!Q(5Q`b T* Pï+LTPv'R$x$` $a XQU4#4Ɍh\x@j wn@8 ENVē? 9˕P֍(-`J@' }TA#D L,:Dzq%f*t%y(ވ2O7L@" Ƅ@SJY  ;@q H*`$I!G<!aĀE4.FƼ^,݋` Z$ohh) K7:P.uu+FdCU2(4\FDш{̐o62Tx>eEQ57ڶ'Jx=!-} ʮ4`_\gaRB;/WLoi1UK^YK(K@ck5|Q]W:Y#F֗k`ƢmKeeaH|l`mBuu}c0&}&4`FpOa|!9ij&ûo9=ǒB2ڵih͕`:/,k]i8RjJgR bɥ1H{ByTaz-X=$PZ ~zDE.S^7uF)p{mg{g DT|*EfP_! dk5Rd'^w Yg\V8=(ֆo{I]0Se-Wq2|J-.lg^")6ZG)ZX]PEde}4| {sIpN `3*$Xqpx@).4a3 U3L* 8% u7q8<[?4>pNP ԰6i|dtT^wwtN VvPp5gDeGGs7"Z7o}bHIQp FKb45A i@fmN|v=(3t=2{ZtN(7T)u=d~7@CPp-m D)hC0D+sF6D׃@G@xpG).U)gƏWVBogwD`Ԑ=a'y5`,ktoQRB1' I!0Yp׍iW= JP84R@ C PG^xAcPL@h.PKpT$6G^5 ut`V*)v#K % f%pR80#JPDPSBYR*C%txYV@;S&Ǡ+QFLF!:^l%p .<9_M3p "; y=9BgPǰ i%ﰜ X%@Uls# 鹞2b/(c1ڧ21-8rlH2H0c2 I#|3cj~0)M֟9'FRvr+H$7}QYQARA z9[hi@3eG p9R6iPiPmSBxPpOhb|C*0`Kp͛\Oǰ{u s iCBX)+uzO#6 뾢T[`\qv;`PG;@Wp=6EvՒ*fBk9d[ t\Zs>{FPAApP=40t=γDB\3pA(xpZi=pI?=(t2-`'rG $sF p t=Z|RP)@ +y= L'4W80\]; q 9\a'D CPKtHr %t!`NTPO7B^ i&,`c~ɚ0C >ML5 HQy>cW`S.WXD)F .P)`?+}Eq; P ; V\AC#fNlrREFV-Of$vXPRGVbXLG9tk'^L; w%"SC7Td{#S[Z}W V(*7=;,}BYȟ}Ga&7E4/wXmּ]*&yyF`5p  '|Ar YrzNsNduCm|X1+`Rw`>K5P2}Q|(Ǡ&/ iTq5SC֩A]Ad{<]΃aq- =73yOv+ݪL<\O #=>bv Mm,*5Ի$ιQ[ WEYeFeH 7r e|(瞪f 7`d4~xc$D`R)?5uσݐ̠QeP&p =>wb{*łY_ۛ-LL^1 |7sxflyZ$`h#kM#],4Ul%;%ՙ{.Ch~ e/ 0ڼ_9qʨrg)T)WHl".L oEM,+$O`1)YGW._)1(XWNi.Z^+^! O*tp$s էS,xed<NLbْ1ufSk'.QP *YS΁LagiV vI pVgY=?$ntkd&MC !*9pWrOLB{;pI!h upIWsO=󢿩?_ A]PSGH$1,bmHł -ZwQy4Jv1EBRꔚPbrk|uj8dek V ܤA SC !NXE5nG!E$YITdK1eDYM9uOA%sQIeSQNZՃJnMWaŎ%[Siն<[qΥks]u_?aĉ/vKرLƑ%O\ٲǙ]^g~5ViԩU3%=zkرe϶Z3mܹul;3o1qɕ/j1sѥO/0uٵoGh}0w ~կ7]/{3v|}p@ dwSpA2#p°\B 3Ԑ5 CC}O@1MA 5t?UtQeQHa̓#}RL3tSN;SPCuTRK5TTSUuUV[ċ*uuVZkV\suWUaUqҍ5R*HXb؍hd6hV#g'Zh[n7 wq-Jܷm܌e,y!w^uIuK߆+ⷢ*V*9ه=b"X[ۊ8⎝^@O.kd /Vy_]o&R/2Yrza[[LKKiؔ((RULirCi6ڤ!%rm!he V(^ Q(z!Q{" ;;%f-Bn[Q oX{"7\r$`D=iH#|(ͻ˽p >/a>h- \9z^roH󷥙7tY:Go0j]w}1~! ߟ-Jx^8zE*9k 6ch0J:7}hz! Lo C mς rI 1c<(9;.ඃ\F Ń@ sK iauFw(U!c7! jlCA>̐0GIP4cD9lq)m *0o"2uP&WJ,G rx>e%z0!F|젣ŔPwi !kfs#" }QBjQP%t Bf NR [`gi!œpTĤAÈIAfj"ď:ED&=wMo8(9 :\m0HKT`ܠ7cE*R6aRuG+OjAĦ_M}v(.aeBĶ M>RE1Ḏu(t( D[{Ū ٯUkTޞW G]`0sb.rkFPPTW?UPC*;٠x$t6H<@ @ʊkA7d ]җx$ ?jNN+S oO,?#9Pד98'Ƶhgdcň澶$TB \fL0HW/W <$fW3D{lA np |A@@! [ ::U4 aP`?vv°b <(8f5s|{:ှK&({_'~|oGߍꭃ߇<& )布?@;>.qEBg~_WR89XzXx@#[! ЇMK @ @ @ @HK???> %8pL/,ڀ?Ap@ @ B!H  L }hpB,B-^J } 3DD8ՐY EL/RD`9b+% ˎD H EiYDӰE;8Ea+% hFP RHi|GH4Jt:F]DA_ EP$G9m u}AG >X>t l |L@ǀBS$E+ƈDUC}A \ kGܘ̨~ ōĎ$E9 (<@IPPILJ<(4H{䥑Dw(~D@ω#AFPtA`ŦȌ9PO M0ʤO;I|JxA_D7%BʪJA_ acH[PK`ˣtKKXK?ϐǠ@`'SAA*"p$$ 4F|MtF4÷LiKK L/ T\ `LS p4%jPb*+T/NDlTNXdNTM M0)9J/\!΃("ėcDK2=RDS ѭSݘ* 5ПD[PLHDMP?ETOTPUKpG#@T'A<$AB_hRV RBMF!PCHճ(ПL8"H7O'EK}P;5OЄMLDOe@U4ԙQx\#ZFmd-ʅ3T DI<@ VPU5]ԬXH[ES!K>`N!;h:T WtwQ RʌTɴjQ,W!˜ 4YoHل4%PHK  Hp#dSJPmM`΅ZDЄ@@3K8X׫WX*Eh_lJEKW G}pDA}C-& %W$L\0@eP\] Rʽ@a\]-21],л[X}] 4T FŃl]ܻPŸH8ZR+ـEW^r] ԄOA^ߵ Be_pP I]rAb _} `0` ^A ˉr`.a}LBKr%MhZt4H]O@A ݉-%]v_ BK$EӶ&!A"#8c'^^卐Lo̵Xi>ߒ5va(cA,*@R^+d^1(sMW_oPУAHZ@ A B (Gnʉc,FGfրU=v]@Aw֔PZ<1֏R֍Ie-(EMXe^ RpWv4` $fUPdΏe΍Vh`EtX6EFDtf8^8 $%XN_V[YdM)ևR YR4Ag}ԣl˅ehPbD戆J ^@aB$E=k$^bbJTEJ3Ԅ`h_@C V*Ľi 8.}QЪVV`iݐ(FEF9X}p5 g~Pf @ \lADRO]3"@baT6F9Ė%%VYFԞSh bb;h;hkP:M(0KV <@!p_#BzJۖl>M~EN 4UChn1~4NTC9oXr;F7 z,#;Uv} km.u\nlv6eDd#ü%? L#E$e*j`aLqeqش#]..KVwʭFdpeo(3Qڨ}IW W !gf2d#բfN9J5tև=trm ]N>>*l*a6B|A7terq41qBe' XGG4|F;`R,ӵKu rX*t x!}PM@S~~?Z{_ЇFH}mm7M v,h „ 2l!Ĉ'Rh"F(n#Ȑ,i$ʔ*W%L%i&N1w'Р gF$*(҃82-)TF6j;QrF`džj$ٴ!:<g։lҭknŹ2@ fW`38ƒ'SYiXVE.mz1iW<\4ؕSm_#Ykv Q7>8y9tţS8̾C[ݲ#Ğvɳ>=|ϻMp}O}>}fٷ>ǟ `V ~ JZX 6B^aZ8bcjd""^&xSxc_.#X2XSy#/X$I#K$PSܓQZ)Ԕ1rx%a9&ey&i&m&q9'u~Y%Mv'}' :'m啉&DRT>Ӥ7EJi[fiCodѡ*:**i:ktZJ+6+.kM{,`d:lOˮ-Z -]-ފ;D. k.Z/*ok/$ *|0kp ;hK9lb*9Un 95~zzk:f`9 g*;eo9nW*JCIHû4i P2@>#ΐ>ϛma,qjj4NXBB0E| d1p/(؀-P`w97؁ {U$ "@#Wu ìؐ` 9v@(`Yg.a @ " `"w2@@@\p/a:CJB pu#!;!r 6:^ 3aq8LT!#CҰǎ8(G$G&Q<~x  clDT(7O 7>ܐ?IJk> \iE<8(s Q~؈4liEҰ pLCKGӠL714Oꨏ! Ĵ,Dk/!3dgBvbU 6H]1%$cKiSTj$ɸĀszp3gF c+: l C!0<;.pF* 5DZx*$mJ \]l:㩔.ELA ltp=3 hp$Kd̃cv@B1)dxDOj&(-KH0:R4 ֪)*6jH䶢Y$n +"5{=|hœTyLƖ䱑U酟#AvpH֪RQB'0#A@z4%yG2 b 5 0Z1H#Gj05S'Ra @x0u8{(DhoA >  JkN8>(쀔?`_ X&&BS 0, z@I0)RChߑدmP9@L%iPsc#(ha7@P}2-?,-G)3e "T,='Df2–՘Ss4omץYNg" OL5s/GNz7$`%@T$$ИnZ3CF"c''emA8nw&r;p!ێ ]`iA o oa /ș UJc*7"y&:;P(>crO'5ԓ$ pF|ep#CwoT \(萭 & U{Ǿh3 3DރKG`P<@0\} @]'ϴ#a:K| ? Al6W]NE(w`B r[p@&6Buٓ|Gz H6{!!\!18)#ih!V`0&l@<- E͖%QޅC< D D%eR ]禍)V^I6 [ ,@@!@ hFR]ݜ@HU A@ cP@C u  3l@$! ̂@CnpqaZ @&A}|F zdG੆ndAr0N(~KK(P+iPH52X#@FE==d]$B*I?B?.$W($D EA6>Nd> Ffkl$_H${C@A/ޯTv<$H"HG!`@\rC>o܈$ ]@Y[zE"I>P K dBIQv$[ P6؀de&y@j߶Yf0@@ eD>0 3%wf|@aY~@qƀ$g'&8 t_&D!<@J@ w^w;s:H:Ȁ @l&抄U@N D#T@>t^K~Z~/>/ ) kyHfvG+8% S6^ `iT@gCJb" ^dh )D)hwH ЧDHA&u@Z4D^8q6ij 6Vi0h%wC*Ԡj)X LA1DN*VJꝦFN(2g,ND?0 Fg)&%A DY@ *kgXhUp =j@yzD?0 #`j t@|>phQ ` kk|+xh+fw(+瞆 VZk hpwøH|@9l`3k8 >bpFk &P"V̸J·D49k)ˆʦ I>΀"( X^D?PiB, \il^l~K!< 9\AtB4m) iJV)iFX%,&쟚-ƒ+CU,mmmǧ:쪆 $h *2 : hjdC@dGL  xh t@ XE,߾s~k -:nCC%$@mVI lR( J,ŒZGjBPCD1Tro.< |.ĆҬEl0h 1@(گ.3<@4] ;-3 ȵ^ q$0,11q$'q/B4B|AFTݦdC?>pA$%Wh@ 'w'r'ord&[%C-؃"⮈3D!2`-&Mjq?C8AH)WtAgq63?s@@dh$S2$A5!:h0 qBB`vH!.S.] 2(2> ,0??Sr ߰ D2@748*B28X AlEr5(r=B>?B?;?tA4>0B- 4@{D>\tIӎA`@ 4BAID@`0<ӯ@h@10 t Sv2voܼ,.Ԃ.5+YsZsp 5uNC, tA]?p+B,u4`g4lA@!t`CBThlA3 N'T8w&j02_B.|6+Dsiw[N6 (l4D v./B0Q'3 %7|(0 CDXx4BLwVI#vO?-|Xx5is7N[;AOAmk8}-s~'<D/p /,k =%[vt|Mts}w'|ACCAu 0C;+@ywEÌH#G  4B`֌>0h@OđWׄ+H?C0<96YsM+z9@W؃3{7+_C:ϾTZB&DNJ, 0>{̼>C=Bmǂh7t  !\1 @b-_cF9vdH#I$ͤF)Yt&Kj$*HїNob၆b<8ѓj 1VzUK}[vlXc\mZ$-7-^p5l3`E -fB`X֪ŵ9wx6%hϣIìqTJrNixG1L*tp"E${yf7w-?|nݒ.9f" Å e7^kn-wi~~y?ɸ?>4Y 0 CI=< E̢~AƕZW9//0C.; NXa!_n%}6$.&LDG)0XJf@}H@ !,tд6li4}ƕsy2@@cFhF%t<茅&[\TM8)#}jH@ʏ@Z631}5-ݜÖUJ-GZhKX8 1bd ;L#3q(\td(n9#pERSN;҇&0H |8U%L$ƝS\h9[]gG2= c /!Xpq{*nΪI4x !v?`ȁ`c7ޔ1<9#K`~܉:9+*fK=W#I6vrΑv/0 Ӟyl$i輻*KƧGb@ -XFB/ődI[s x8Tv _};.pRWыTM(Q%3c~M<'>7$IHaZzb]wj/Iɓ0 -0c^qG>Iπ:`#0C 9F/-Kp·%ڠڢdЂwxBT0x h10Cap !PB`-h:A0%"\∐&qxD"j- 1q>S< ԸB<  PC` H@K<"R6NM"?' !4+1d!VA]8kT&r DH)" X#'HAƙ+B@;9ip t4"U28:DfU@7`B8HPǝn1q+K2ٕ>v5A| u$-cc8(XZ׾mEzYJv,e7tv A .lF\\>̵Ϭ Ou$nV qoԀ)Ho ^|O@pm ݆& Nhoߎv%\abdq,a|!̂36ŞqYlxpi,c &yqocd?n1 xI_Ad*yqle.8 [e28Qlf68]=f:8θ+lg>w8ϒ gBK8qhF[7Nu{khJ7ZQ>2/Iw^AVKz6YzV+(~urbMY 5YjjUҋ1 ^k+6lg?і]mk_mo=.Vnw6̍l~l}!w^px>s QD82-o!_b?.rz$GY>E1e^s7_sMyЉ^tZFW_2t?Wqzԩ^("YSث.vfGÎu=npW{~{ /?|7~|)W||9wT&yI_zӟWYz7ܡI?{}s{ \{?|W~o|6ϗã?}@}/&?=!\ЊYEvV1Ah4~^`f"`@FbB`@- pF &f4g Jvv*(H DB`Za =*.@_B 6I0z:B`#nPneҀx`%h`aJ\m #ޡ ! ,Z! ܠ' 1oUA!O'аD m ` ?C p+Za l#A! A = r!tq% AgxBB Ԁ/'Na 'f Q#o0a%61΢AIQ}qOqM1& ۑKa T%/Ara¤K6B:`.!!`Tr& A  ' 3@el w&܀_ܯ` f!  .'XRRp0YrzE@}0&aBR`2 ^: @0\+/&"`"@;";, a%A5A'Pb^.ƀ; \ -+4` v`' s"`+ iQ5`   1P6(S3\p0b1`^ :Հ'%`')A@ϳ .1" JN 7BB6E!B KP@gP` Ys)6&7,'VR: a)vP!@BK#..s=S K6 @nb "@606 Fo'8)v`AA :#" 0b 4h2@P)ςej`!&M5){B ]r#.`?#J H{JTD@4Na FKFEV)AB#'HGaЯ)1V+B5s"E/SN:1DT>2>K2#6 :#AL1T1b.OSRk Ru @V1Db+OV`7@ZK1Dk Lg FN! P0Հ2bگ4&YSE1@_[TJ\Wt ՀQ5 a ?K]H4Bcgp zBZ0i(d[1 0'D#:#fDaP35lE)RW1VǔM[t bVfapZN> x^=TS'"DRZau a4vSƄrU@"S`3` K% `ݵ:OL@x;K - w tRed{vALja@x_7i3>Rx`+0vNk\4'cyt& FAzqdѓ?M(#, wy$ `5@2#` m#y1b 0{j]/5e6|aT/4#ҵK@ T"}HW8#[9 `AB/Zt!D #Bao"~1CwE i=^,vp3#])4'2*Q1#B+#Kvd>O32oT $u0QpEָj5AWR[w :7#f`$#D_9"UT:N9##@s7u]X[Օt5w44q4=1žnSrw!'4$2CbABUC1b 3LZk-TFr ^3yP~7Vm'  H-AS497ޤw^)<5#2mAWa5#s+tuPmu&suU)=PBB] P!: b`2pZm09ߡA5. U$#F~ZP3%YbGyhx0R9o9OtFC@Ao"3_q+v@E1MWRTZ#Қ27Y^x$we^BD!Z7 F(@8B6(s(cTqј*AP/D@o5s)}1]K(8g D!UUEy(!GwhE@6i[Z'6@R51]5)wä=bsBge;S'8,gX#67yB@PU7v`{Y_=Q&ށݠÃ$#\T}<d#WVQȉo@_\-XKʟɡ<ʧ\!|U8/6:B:#:-:.:1;;<;3<2<:=2=5=$=?B@;@;@+A:B@CCDHFFF-FGIG2EIJJKKMKGKEK7L-NNQOKNQVRIR7SSUVVYYWVX3WYYZ?\\]`^`^_b_]_Z_1^`_aIbZbDccdc:cCd>d.d4d7dDP1ԸS =NV#4]Ie\*i1 MU N8Qh=!:9?׼–]:vәiɓpi?08 #æz* 0|$jZq Z:,)vp\0WKaNyMGxAuzu-c?i,fa53^("pkNrvfϒY0m;dSo;J?Sib[.[o78_5nOm=L@E=D=o[DA1ӴpvZ([p,{[W1.W۸DAL1f\SLiM1&M\aI!;\Ql.tvASr8y4^D|(QyZ֊=1lv(8|*jL1F-Bu,WiL 3 }K\ @;5=A`_i3[NC3@xsDWhP(D * B} ϗ {¶pX/~p\w@WGM 2Bب-U{>ofTճR-yAI؀P~%`| 60-@U5ꀤ0 Kl!0L4A ,REn؛IuHx#T0*nأ?q_AVЌ21U[)u ٩.۹a8;D(bH7UNp.G{ X5`)hLJ8.CMQ0,,JŕgD@jT*vIKV,-2kH(F &etyV*@@(HKETFP/a ' פGSA3!0&U}9BRL}xtl*c䏚L,N0]g5reYٯ*|ߑ0)`}T!-0R4nF$cv%l /'{%IV_biUuq[dQZ 'u؏t|nJ]cR4XH&&,_\qV;f5a>?KX4R{@ U p[2q}DGYV$W]wNJ_pCfA@?kTJJ'`%4-v <M%=GbGoSM_*K uq^C&)Dj'o7DIK\(&eMb1jS3= ʔLFȴKtx]鏩r^Μ"` 9n8M[2 >ϗ^8kW `5 p^ SrvzK VWIKMxg0[No TnI)Jp Zz .S&wll=>)ļ+^aZ%/fhn)BfV֧nϨ@5eK~ڄ_ (A56ШT*8N9(tffU۞Y`҂a(vRBsw,I5Q>kr@ -ej  u<} gl}}6=ʺ+$*9M$jv@Qoj qh4w*,P$ !K(T>U#Z]pzmf{g DS}v*#GfP_ 'd&FW#4R4|![j0)zE|fusa3bm7@15ZV|f`4SA@Xɇ-^qQ4zBx-ۀkwF̄o)5TrynfTEF&@N7Cη 7( qp6C"g "`B6pMQn 0=APPkXW#׈+y@2 kcyDtT^PրJp;qeu0QPMQ6Qt3Z"1x*$-LC=0`T*FSѐeƆh' ףX3C0O/RtrTOQ׳Aw2./bؖ@rF/4BD%r=f[HM:r=y$> p"R@@ 4@N<%U*0>,OB'EhL D3db e_©0ӈ..Er #d0c Ơ׀9z<&G9]fo;Bi Gi NQ65r 9CD12"0W 'L$s.C1 1*=73;!(d{9)}Vd<jS1r,ڠGYQQ-:6ZD 8z4=:9 g9M?NQEzJӢr)/CIT:vG;:)c @Q UQbzc lڦnpr:tZvzxz|ڧ~QzڨjEzک:Zzڪh:Zz.ګlZzȚ*ĺ:dzؚںڬ:wz蚮溮ڮZzگ;[[{ ۰ˮ:{{۱k";$![(*ۨ'.0-4[6{媎Kԩ^8`n57:_ Q&aV0`p=Գ^!Vb+}=hleb[b3B5 u*^c˴ZvSr{t[[5?r˲m:d1 7+;ehI! c[0^[a;8cPy@T\8Ame6x /wTVj&g[;!: 4xV nEc [ehP:Ɛ[P::/4QٕSQG;4bcp; n]n` ) lGk쫡hsuAnRDG)X س+VBt8d[ ts>yFPAAAph=44\<:PApy,=lEæ3w${soHhL4HQsy?dTX-GTH()F0 -0)`?+{q K p ŎH- ;~ϵ ja@^3Db&hTTD%j4a"DGR'~u Bu%%tfkDhY#?mv%!S" Td{#R[ m|W L)'5Y1#dȝrh{GEu&'E/wXmչJl'x**7`F@m?l0JݞoG׀E)4QR:.+_Bw`>K4 ,}N\(Ɛ&/ iToSAp֧:]A{(<]gTlmqA{3sW]k׹\ܪ i!"}bV2\ &D{% u=7NQz&uM% JOETsiz{@\(ُ;G ?0)T4!t\Q%3,(ۮIcNJ V/@-čJG%u@PCR]"-|ٽPMuX1N%H RuGn%]>LHfh `|>g1 G%`d4}bqbD0%hL}QegTJ?UB\מq)5D |7rdHe-G{#jMmT4pzp[SL}2FΩvnb0ݎ4i*TʦrG)4)Thk-`L oBK2Vk[b_NMRz$su$fN5Y+^ HU1b]pspեŽP(wkc30_^$F,Ys`ygM|E4 Xu9G_Iw hݖ-fߌ^qP|;SHVmI7?xcbSXf_``6|$ $:\z풧m_Ʌ=poZMQgu)y@?~1?Zk '*'8Et*"k(NƠJ[Z,;of*v?%ݭ\ʟRzmĬk *roD;2q kq Vzn k2$XA .dC%NXE5nc{!E$YI)M~dK1eΤYM9uyPOA$ZQI.eӁBN UYn+RaŎZYiծer[mΥ[]7 _>pJ‰/fرÑK>\ev%ogСEyiԩUvXZ2kرeϦ:2mܹu^k0o/qɕ/h|/{̥O^=ֵo[ŏ'_yկg{d}# @ 4-E:pA*pB {0 3pÖ.CCCK4D DqE3$Ec,Ek;oqrG w 4r!TrIԒdI(/s2J*LlJ+.,˴sL2L4\L5ts'6ߔsΘN<73O>)A"GfPB 5PDUtQFuQH#tRJ+RL3ՔP SPCuTRK5K;S@#FU?^UVfhτh0_% ׼W%.[]/e[SqhZv-mѡnE+devi5.rjwݮ-ۆW+{ޫM1Zm_v_z5ۀN t]u'6 b,7݌ثG&d+6yWfT~hVNaE{ږgy- -;v5>pF BZb\7@ j0:(FaYfai9 ScX"`-ly>m{r СG p :4 "nl[K< "Z t؂(ؠ"vDh1SG}?t?|V ^kc^ ~g{v[\q\ t{z+{bGu*Î `܀=c G0-i-kɞ@.9>0t` }!c ƀAa7a% *b46>xCB?lm~i  ?w=#{ӡ@v@@P0/}WQ; p?(ȉ}Z\]:"O @} qKCni !rE`P&% jѩ hDT /`4o}c-50xT2=PP` vl=6N3:.xS>r=hOVLH &@:x-1 tP?3a|H}~AqRys (I9}5:K24((0p @&,w-[- Ԣ˨@A>vC쨡N̒ޣYQR0 ^Q$ M P?Y0DM<.6Щ jp`iݟO*dvKR9VgE W4SHYZ U]HR6W%EDZCjF$@ ]&DF۞ZqfSx] SY0/poqnOJ OxEcPC&o:ItS; <\.>:AD^.BrN)7׍gcCQJ1p]k$D, wTFA4 Ky4` ?8&25M$Obz N`RKeT8H!!Kyp7!Nٸ&pXB&lB'|BYJl{x-B.B/B0 C1|@|  ,! GpPrcB%|B;d#6ЫjB/AAT@X34t5$=L{؁P"A:C;Dq*dABERl@ XhD}hxJDAD;D#PBQCE@R,FR7 XqGHGXgK%9Dz|BMD%4LE`{HL@QHd;sL T`xJ|;HLpȏ;0D 2PFDLDTITJJGASSS֘G !C&E RPm{LAL |PC|6S8G@hBeB3P!ƌTS-LȄ\SlLOdT T{UHQEX ->E:TU8\jV:VpWјQxVP?1jViURהӍ߼AkD j5K=Xre;s/Ŀ(L)eIV!D0OXmW~4O,YEp_pŐ^ـ;,"s Q]%]Xm6ְtߞYOcŐ㩠c٨1Sh00FC `{XcO^7NhHnNpa8XLnBQbpKZVR>MUfG5FeXfY.DIe^X%D ]<boNZlԖ FhTY>bSnv]l߀s摣th {0^(JChF|JnP8bEԀ`guM]4߈{P_ԽѠ8f̀BL8a蓫瘮C 5f c`m$i}R6CW=؀Eq2{5% f@f1<@6\NlA0D&=RF8D \L8\ xƑ %kQB)RV0Jl KNmZWjh|QDVs7;54Ak&**t^i_&nˌmrNϢMc:?hD48Ʊak\<'<~rN{gfnt,$tU%K]Jcs 뗌7jnlU̢MaWXt!%cMR](7w%+ O;# v6vMX_m,,ce@@klwevp'/#t>X4L^yVz%u+qw1.wQ?o]xOx^DRqnAѸg.KIzBȁٙy.~s8D$ppZg]\,!.ww  cx?y됥V׎ [/WTzޅ'wdIz}ERVwնpH |$SPJھ{;MdC^&m}gR6JɃg-rۀwL@SO~_8=گs*sGHy4@} b/?Gt?q; `/W,H 2l!Ĉ'Rh"ƌ7RDX#ǐ"Gg$ʔ*Wly$̘2%&Μ9Y9'РB-gDF2m)ԄJjU'ϏQrְ`ǒ-kTWײMٸr҅+.޼zͦmڷ-l0P #n]'c 2Kg)v)&Ԫ.z5P_,m[餲wK[‡ ~ܛ3o4xpҧ+4ѩs;-^nY<ozynwo_3Ï?y~C7ax l s!) [ .V!!!`V"M"r]HU="g݌5֍#y9$Ey$I*$M:$QJ9%UZy%YMZz%a9&ey%׎mgUũӜ9Չӝ7Ҟ-ҟrMk&*(JkMz)vXiz)qhz*o *t:++Mg ;HI,*K~.,6lZ봀^-f[n{.n.랼ݻ/{ =5Rc^^5 6]5]3B7voU2ҭ-uO'wtۣws|7 ۉn;t5>p*9C&iFN`N_/穗Ea:]_9 M8(MФC-D1@\@DD>~.[,a pi B"!IClAhW{ly*tr dg@9 Us.Gֆ ab Q@\66 D&tD!fu(Z \†hl]v!wp1{/l lɻ8 ! p!D9 S.rȋcm-DyŎ `@H8Q n @H8{! $:C@F1āaIp `G5RI7i. 4ʔ㠼"N/KW݃n@j#cdi = T$X+58cCYB@hͅXy̍$DF3-&Ԅi=mQ&\zMWU @ GA)Gv\@?2E:uzK"P/=@VtӁEI*rjhZ :8I0$ 1讁 T!7WmF AKJ d LmAy`;Ç5 _rqm?|΂pu6^ t{j pP|H8|5!?p_{ɣ)mB;U? )# BUѻm-`aH(2! <@"2~pNq !A 8{a ʱ!D0zrS6ܻ; Ď   UUX`Ŵ\ Nک]PD Z C,@@!Q ]P I) T) `垟!! U2l$z-3!aVm W !AmȒ(j`tIFX`PXҩDm%#QiD,"Db`¸& !)'"尃]A" b$~P`|b͢\Ԣ-$-J/E/^byȢ1:F1.c] u(30NY@#rH5b5n#Y`qh7c7Wy9F3Xm;E;ΣWciȣ=E=V|?:E?S$eAޣ@=A, BGC.$Zd$z$dõ\dp~88T͠$x,BD0@<FILڇ:LC:C? `9`@AĂ<$.OG*@ L!x%6SA@t$C TYƄiVs\C'ؒL|Ȣ6 g VĤڀڭ 5-RF9 t@- r᦭x2n !DD%6B-n2>htC%$@lH:ٶyʀ <pE'|@^/FmsoCDD1@}q/0K3@nnbD|<$mCF+֖NABFoϦno$j@ |p p @C= %|0 H+/sB(X.F>ZFXpbh0=`@G$/ o1wTGq$i0qB8B|A4F֯נ>!p!h Ā4#?2$CrxA"!,C? on0C%n'b0+tr>x*x [!kA@r/20 @pr!x!:x*ӨCB`@nLLa+<+-<3<r ,Ȯ 3@#->Cr`_P+D1\H',3(s@sA=/sݪ <A=(4(0ՌA` 8AX*h@n>d+.& <9gB?-Ԃ.du+tZspZY tZ hB++1][sA@!pl@\58(h`N8(pc/T1CGϵ.ep5xuπHkB./lr'3lG6|ZH0 D\DB(EHFDdG>-{ffgwgs +wJyjKx{4S3KlL7ARpCҶ*Bxccˌdž=.@8{kkut kA?h@s@+‘S.3wQ ރ T4CZN=0b@whs:{w9kk5vsI6y[LjweN8540&i3uAP $2!L4$h†rWs矻G'-\vG+|At(A>!;S8 tS.+4f@$0<ĨI!8)4(@2\\93tz{,z6(́wv!A+uK;[f,»@XN6 h"T»zJyjt< +B{ρ4AI2 AXdzd9\u_{,k/) IHpC9CHZ|Q+D|kGH'<4+|u/fVo 8i=<3j/3pNjl) w0A2 @pY?ˋ?=+.`eBoudzIGyx=߀v3$\K3?y}XVJ%DC>ڽ>ʛkSH?C>C<#y~vIsxYp A?;k.og_? 6tbD)VxkndH#?F#aa=pXr4c /@@#CNH$yiRCsjTSV5ǥ[vP_>fn…UWޜ1.]Xo+R(3g*Z!Trdr<s4C<ݑ = 446Cj}eWym5+n&ܷo[JJ3_pӅ޼zU87Zlr%$ni0mY v0!¥ --5~Vj9+Z/:fn/3ФZg l܆<2) {4Pf"p(܁A$Ŵ wMd*w޶ʙe4, +ҎeK:{۞kPf)*P#Vy:̜lZyYTy .Xg pGGl/ll|HU, wsv[C{WZyD0yH!J` 2 5oYҽy3ŏ]"!AZ#{vّ]|$=ǞrD:B %~F20.Vnj^9|@)<䰈%=!_ui.=ƒ;P K]R3!wBF!B$І)JHE, n99(+rDoJX1r" j,`@C[RBj* PiF GF0hzbF$C *@exP-lgRȁa'@p"q)}ܤRH3 r7 \%R y40 dC1}c&I5ȭ!J7Sgk&IZJ "pw[b k%Ȱ`8Fz@U$yOfƛ'diАP1 'hYv"& C2VQ%HC },> D`!X@9KT3*E5+4H@Q jsK{&549=ц IfVQ6%OcU05YY2U^ŭU*]+_c|Y@ `Р+(`K^(+e#&]jha= ,a 4p XDXli[[v*gzYdV" p3B 0 l1]t[]JP+qV&x-e#pPC!H E|;_կ HwnϣTI7!x~"\_=R uaHULbK/17U-x9ފyucC,~7}~OW2~ow~ɏRp2x P$`$ ohS dPl|o$h!)! % < 5v!ቜ@ Ҁ A@ b `p!"R%!t/JFK!J` k@ bR"1 0" a=" n%(!ݠVA z KN_`"@<,! !؁KA+Jy61g Ja PE a}8/aJ6B:@.@! h2: A}! & "`p u@%`s   @f!  .(lRR*P 0`mr`|0'aB at` !B@ܥ" J.T"  "Z+20 jj2R0`#Zo Azr H` dS@\"2  2`ks @+  `K,BL02'aR3!;C`!Z LP R^`\0! 1T>Wr! PZ>.5@R8p`i Ana6B`T[ !/I@Uj: w4(p! |@J*s!/T/aJ ? t J  Tb " &~2O;7kG% : (tBA :`!"@O}! R+RHi %!&'6 4LjIaTrcO RwԤN&aDpUGp*?SH) A:r!D}D< UG/`SNa;dj4@?J0!6 EYu!R6;J ` 5E!t`"`t-)co+6_pGeQo!k2U#3aba&% UZ<6 @zMJ@=6 w +Q&Mχ F{ z`ul(.!z %7 .`yބ%P#@- a O%fjqu`\v>n^c }Ҁ[/@%%6e[gD{b 0U2aj^d6w6ҷ~wt/!J@ o[`Q9ĶB^pIIV`C/[u7F!XbUDF`jS_N$!^?%.bXfPwX2!>`:EqUC`NIFrm>x/E!6bZgYYO\)*9 סjVkC1P%$x$kBjtOU"3kXr!3Yxٹ\#y^BGa[5V[+O^ ~_L!arXw G/^&o<}z0s 2'YR | -r@scY3)!H%`~Թ2%BqofC&6S"3s53+[v?c|f^꧞^뷞^Ǟ~VԞ~/_ _#_'+/3_7;?C_GKOS_W[_c_gkos_w{__ _`^?__ǿß8/6:B:#:-:-:1;;<;3<2<:=2=5=$=>C@;@;@+A:B@CCDHFFF-FGIG2EIJJKKMKGKEK7L-NNQOKNQVRIR7SSUVVYYWVX3WYYZ?\\]`^`^_b_]_Z_1^`_aIbZbDccdc:cCd>d.d4d7dDP2ԸS F>NVc4]Ie\+jA MU N8Rhe>!:9?ؼ–]:vәiɓpi?08 #æz+ 0|$jZq Z;,)wp\0WLaNyMGxAuzu-c?j,fa53^()"pkNrvfϒY@m;dSo;J?Tib[.[o78_5nOm@>L DÅ>HH>o[„B1Ӵ$pwZ#)\q, [W2.WܼBP1f\ SMiM1&M`r!;\# Rl.twA8z4^̈́)RCzZ֊u>1l w( 8+kPA# G.Bu,WjL 3 }L\ @;5/E>B`_i3[NC3@x̄{DWjP(D * B} ϗ #{¸p/~p\Ўw@W'M :Bب-U{>ofTճR1zAIa~%`|60-@U5ꀤ@Kp!0L+5b ,RIo؛IuP#T0*nأ?q_AVЎ21U\"* ٩.۽a8;D)H7UNp.G| X5`hLJ8.CMq 0,,JŕgD@k*IKV,-2kH )FQ &ut$yV*@@(HKETFPa ' פGSA3!0&e}=BRL}xtp*ԕc䏚L,N0]g5reYٯJ|ߑ0+)`}T!-0R4nF$cv*& /'{%IV_biUuq[d:QZ 'u؏t|nJ]cR4XH&,_\qV;f5a>KX5R|@ p[2q}DGY$W]wNJ_pCvB@?{TJJ'`%&5-v =M%=GbGoSM_*K }q^C&*Dj'oGDIK\)&eMb1kS3= ʔLGȴKtx]鏩r^Μ"p 9n8M\2 >ϗ^8kW `5 p^ S rwzK ⠇VWIKMxg0[N TnI)Jp \z .S&wll=>Iļ+^aZ%/fhn)BfV֧nϨ@5eK~ڄ_ )b56Шd*8N9,)tffU۞Y`҂q )vRBsw,I5Q>kr@ e  !u< gl}}6=ʺ+$*9M$jv@Qoj qh4w*,P$ !K(T>U#Z]qzmf{w DS}v*#GfP_ 'd&FW#5R4|![k0)zE|fusa3bm7@15ZV|f`4SB@Xɇ-^qQ4zBx-܀kwF̄o)5TrynfTEF&@N7C 7( qܐ6C"g' "`B6pMQo 0=BPPkXW#׈+y@B kcyDtT^PրJp;qe0QPMQ6Qt3Z"1x*$-LC=(0`T*FSҠeƆh7 ףX3C0O/RtrTOQ׳Aw2./bؖ@rF/4B)Ӓ&@M:r=y$> p"R@@! 5@N<%U*@>,OB'EhL D3dr u_©0ӈ..Er  #d0s Ǡ؀9z<&G9]fo;By Gy N"Q65 9CD12"0W 'L$s.C1 1*=73;!(d{9)}Vd<jS1r,ڠGYQQ-:64JX؀Kᣙ' p̩rJӢr)/CFT:wG<:)s @R UQbzc lڦnpr:tZvzxz|ڧ~QzڨjEzک:Zzڪh:Zz.ګlZzȚ*ĺ:dzؚںڬ:wz蚮溮ڮZzگ;[[{ ۰ˮ:{{۱k";$![(*ۨ'.0-4[6{媏Kԩ^8`o57:_! R&aV0`p=Գ^!Vb+}=hleb[b3B5 u*^c˴Zvcr{t[[5?r˲m:d1 7+;ehI! c\0^\a;8d`z@T\H ʥf\؈ /TVk&g\;!: 4V oEs \ehP:Ǡ\P::/4aٕTQG;4bcpK o]!op# ) lGk쫡hsuAnRDG)X +VBt8d[ ts>yGPAAAph=D4\<;PApy,=lEæ3w${soHhL5HQsy?dTX-GTX()G@ .0)`?+{%q L p ŎH. ;~ϵ ja@^3Db&hTTD%j4a"DGR'~ Bu%%tfkEhY#?mv%!S" Td{#R[ m|W L)'5Y1#kȝrh{GEu&'E/wXmչJl'x**7pGPm?l0JݞoG؀E)4QR:.+_Bw`>L5 ,}N\(ǐ&/ iToSBp֧:]A{(<]gTlmqB{3sW]k׹\ܪ i!"}bV2\ &D{5 u=7NQz&uM% JOUTjz{@\(ُ;G ?0)T4!t\Q%3,(ۮIcNJ V/@-čJG%u@PCR]"-|ٽPMuX1N%H RuGn%]>MHfx `|>g1 G%`d4}bqbD0%h\}QfgTJ?UB\מq)5D |7rdHe-G{#jMmT4pzp[SL}2FΩvnb0ݎ4i*TʦrG)4)Thk.`L oBK2Vk[b_NMRz$su$fN5Y+^! HU1b]pspեŽP(wkc30_^$F,Ys`ygM|E5 Xu9G_I‡ hݖ.fߌ^qP|;SHVmI7?xcbSXf_` `6|$ $:\z풧m_Ʌ>poZMQgu)z@?~1?Zk '*'8Et*"k(NƠJ[Z,;of*w?%ݭ\ʟRzmĬk *roD;2q k Vo k2$XA .dC%NXE5nc|!E$YI)M~dK1eΤYM9uyPOA$ZQI.eӁBN UYn+RaŎZYiծer[mΥ[]7 _>pJ‰/fرÑK>\ev%ogСEyiԩUvXZ2kرeϦ:2mܹu^k0o/qɕ/h|o|̥O^=ֵo[ŏ'_yկg{l}# @ 4-E:pA*pB {0 3pÖ.CCCK4D DqE3$Ec,Ek;oqrG w 4r!TrIԒdI(/s2J*LlJ+.,˴sL2L4\L5ts'6ߔsΘN<73O>)A"GfPB 5PDUtQFuQH#tRJ+RL3ՔP SPCuTRK5K;S@#FU?^UVfhτh0_% ׼W%.[]/e[SqhZv-mѡnE+devi5.rjwݮ-ۆW+{ޫM1Zm_v_z5ۀN t]u'6 b,7݌ثG&d+6yWfT~hVNaE|ږgy- ڭ;v5>6qF'b\\7@ j0:*)HaYfaiY c`"!an.ly>m{z G  :5 "nl[K< "\v )vDh1SG}!@t?|V ^Slc^ ~g{v[\y\ t|z+|bGu*! ˜ހ=0<.j-kɞ@.9>8vp }"!c LjAq7a%+bA56>xCB?lm~q  ?w=#{ӡ@v@@P0/}WQ; p?(ȉ}Z\]:"O @} qSCni !rE`P&& jѩ^hH\ /p4o}c-58䖘T2>Ppvp\>6N3:.xS>r\>jOVLH &`;x-1 $tP?3a|H}~AqRs (I9}5:L25,(0 `&,w-[-!Ԣ˨@AvCN̒棘YQR0 R$ M P?Y0DM<.*6Щ kx`iݟO*dvKR9VgE W4SHYZ U]HR6W%EDZCjF$ &HF۞ZqfSx] TY0/poqnOJ OxEXC&o:Its; ܼ\.>:AD^.Br'N)7וgcCQJ1p]k$D, wTGQ4 Ky4 ?!8&25M$Obz N`RJKeT8H!!Kyp7!Nm6qQA @pd@t#Җbk1(Panu:@FmGR0ᲹBih Щ<*k`몳Q2Մ?ު3#\QOȀڹί#sW˖Bs+e)zґteizԋuezyudzsvd){mvdi{gwd{awd{[xód)|=\$Yxx@3_n*/ gV؃&.%~4_B}m{^5AIBț|t;D_Q鼾6"}_'~+hi G@Q)C){|AQH@\@l@|@@tA3˪&0ÿ,?@@ȇT8@ AA`@@8>'pXB&lB'|BYJl|-B.B/B0 C1|@  ,!GpPrcB%|B;d#6Ы kB/AA\A`34t5$=L|P"A:C;Dq*dABERl@ XhD}hxJDAD;D#PBQĊE@R,FR7XqGHGXg L%9Dz|BMD%4LE`|PLQHd@ 2XGL>ETITJTKGASSS֘G !C&E RPm|LL |C|6S8G@hBeB3P!ƌTS-LЄ\SlOeT T{UX -RU:TU8\jV:VŃpWјQxVP?1jViURהӍ߼AkD j5K=Xre;s/Ŀ(L)eIV!E0OmW~<O,YEbSnv]ls摣t |8^(ChF|JngQ8bƽe]`guMVT܈|P_ԽAѠ8}nLN`>hq:RÙʁi ?Yf^ IR6CW5jF꿈Eq2|5% @f1·A0D&=QxPG8D@\L8\ xƑ %kQB)RV0SKl K#>mJWf汬H&FBܿ<.pVʥEdo&A6[>RT<I  naH)aV#P5Oq̈́D6s7;34Ak**t^i_#&9Gmdb(__kD48Ʊak\<'<~ktGi.>qE/ŢMb8?h`Xԥ4:Gq~ @R_,Z^uUEt^ %c5vWOm^(DOOh]rt/gav5dOm,,cesZHOw?B V㊥MQnwntd@[z'BlI$'o֟ot.KIz@și=ADRJoP oO7˺u\BYbS0D'MoVcx?됥VnU{wedvkzޅ'wgeIGRVRqH {$3PROfrTL&=doRO}&eӮ4KyV|@.rۀAS~/8=Z?7ȇGPy5@xYiM~~~~~M~i|<}߷RO~SwFٙtUē_f,X 2l!Ĉ'Rh"ƌ7RDX#ǐ"G,i$ʔAN%̘2gҬif;,U'РBXt(ҤJ2zͨR)֬Zr}׮bǒ-;2,Cj޴,ܸrzI.޼c.dK-l0I #n1X',1̚c&y3s? l:eW>Lֲg}}6ck޿h7o\eҧ<Էs{; _peG_<3L~7/2}7 qx {wZD!`kB8a~ .HYQaqk^8Nxb^g"-ʥ#%65x#9#=#A 9$Ey$I*$6HMJ9%UZy%Yj-HaDdFd&DhBEUlfp9U`v 嗀'}Sz9(gl(_J:)Bhjiw)Jjz*U*[Jgz+PJ+ʑQ:,ŦM*&,lnZ{Δ!z˧2q-rnL㚻.S;{/[/ <0>yf +0 7|0;6Y|}Yqvچ ()S0&,9lA lI-kQM=kYsW1`{u  tUΑ8jn{N(/'FW4$N4G! )]H!D^>gƎSi![0q A1L0; 0 jl LOdE3h랾P>W2 v`sHq'Ej+ey =21HB ; \gh@! n!1BjտKo$aC y3;``}<(]ym4(BY@[J< zT#-z%C"ȡ)Bٻ_Bdח ;c;0R!b$H7{ )5BY!zFh2-P)r8FC @2S'H`C.:퀡E@D8mtiJh%L@Ltʄco@Tph,:wֆtD<#!^ %p7sRA#;0Q>xzFޓ7 8,M^Cp<0"Q֗5b͛ ~śQvp*[)CePA@<4 y&" b 5 0X#z"P[fJ ,I%LTQC3c\J- f'R +2DD D|5ybPLD#' BCiC.y\cK ,8a - SK+$g 0g>đq?V/A|T=9fu&2ٿѼp+,:&سlmz6%<)m$`CZ(g{Gnq{5>"Y?X4A'] "u#蘏<"4!4 fĝ. \Ǖb"A3Q"ٽvf ;!G](;QR/cT0 E`z7H]jywe. Y lj b@B"; TP# %!}Ȱiߞw` @\i@DĩU<ވDTN0 @xZi ) . ,@!qw8)D I@Dݏ8@[Y-PO2l $wdȂ1a}l]e10w L7 *A18@J гTγ 5]aD"!~.-"9R%""!f%fO;Z$]uIR(M#`+. f8->F,,"."/E.."b"1F00ca#3E2^2>#^8#5E4&4^h"7E*27~cWX#9E6b8V#;#r:cS#=rE:6c9#?&E>?cm zH/4$$A=!`@e$ ܉]@TI =X |Iȃ =j$e`!e , dB\ TAO+~H $eO @ ae >d]>4 3n_|@(!hcPzj%( m2 !<@8MJhFh: l&I: ԃe"U@G #X@X>t^vb |/@xƦ/=̀zJ8f'uLb@$hqpVv`hxȀz n]Jh (螤~D XgDPA9DHf'8@\g T{ b *@d`(i@}B1ĩ)֩ΩMKԌ{C2f~$^D?4B zl)rGgݚj@p1O$K*uF@<H~JI=́jqrD?Ëg 4M*uC hu@pC>ph@Q ` LTk|fntviڨ(ܼj| Oy怣 Ȩ NfD4(<,$&<@HJ/@ hlFF欶 8jINJER9 *@¶¶J >Ī' QfD?ԃh+ ((돆tf *nʀ ¡J[& L&+䂈B0](@$T-rx.| .oTE'z2/*sܮCHD1X@@zqf3؀.nbz@<)-TdGD)nD,^JH?܃ T X Ȁ=0 p -zj w0 -hsp/C,X+1O\F,60dA1(0$GO1B,1(psBtAAl !!!1=톈BB%{2mȱ>|*A|7roDq&-ײ- ) Dt1|A!B:.CB`@jP8r̐2ȱ= +*A99spN, 1:s@*B0?T233KA5-q3< nlH tI3l,,:@eF$Cp<@ d>޶QFR-SB T{9{AVϯV|=&,Y#>uXn B'DTCBXhp2M'2{A .B/$Sr(,K"@p@J;L A+o3 M:B/7,,v8sC9P7HtV?IswJ7y'274q<@|/o7,1|<-~swU6m|s.xxBhos3o4a18Axp׉=xGyh?us?6Gyv+9JhGbBKt69x-&guAT $/eO4!hp9[q?-(v8,A׳,;c6 s9'x r#.B+%@$0<ĥ߉!)-)@2t7zC-zv(Ё{3j6ԁ+Br;+;60\@bd9Pl@q&@$帷9pK9Ǻ;Eh Xwrx9AuYb-Ԃxȷ#lo';g!|1h+bՕ;Q+;>Ѓ3̂+;E<?Ӽ* C>+;wptk5@~v+,$ ypa# W4yeJ+Yti˂hִygN;yޔI0OC5j_}ٚ+W.XSaL0cxYBE cYP$L0gΠSu.X޺^ң{/ 6lT/uH;|̧ "B C2ãIgjիy =]vIn֬sD 0]xRv,4]{N(Wƅz˜}zew5Oܩe>@"` i]!А1H! IO% <05\л~'dZ%*]t*4 ⼢!2 @cW,+Yni&};SK 8`h'P ajxt(OB,kR.r}ѦvXB 4:,E\D$wsه/A M|<@\,[. NaJP)+==՟[̔ :Hk1XWRX H`+]ni|D m|]4a "MMgpDSSK]HU]/Ugf )V.WBV[X,h1:4}%VGރ*Ai=;H@F&q r/ݘuzxǜZrmĸ+Zu ؊nZ'~(՘r `-Sj(WKmh&왇ϸ $0؂E.Jq\ ifښfYF4 ł !LK*\g4;5vq{t&|W aTz-;˭m>N~D+'>6%IHat8@]v֮~ǜ2{ѷ3bi' sYAŗ*8bTxʱKzs=K{2)E؂uT  i`ݱA@QpPCaw D@K$ ~Y c*/ DۘXE(-CkAfP'$T XP HH!T9/Ƈ?RQS7&),A-Wg]!Va \\|V"R D1"@0}!#G9b#'0XE@](CX׌?mxPuy5 ,L%%HP%C\\ lxe`"9Nv@H>@DiNxҙJil('lزY^6%'Bx",Q&D]|f%Go$" 2B"С~䒤yhLSraJIЍ4> 6; DC;C9Ւ(C{Bzft%jIgnq@KЇihE6я-?hI'6җ,5 jF.ԦSVYʔ8&A _]lcVlg?і]_׺Tmo7 l:'}ct񖷓y2MԝoI^p#U>>؄ӄ |D8-xI^r )W9Pr<^-in(9usˆ?tFǓtQA>u7Wгu_>vgW{Ӿvgo;>www?xW|x[|;nq_9yIc˗|Yշ~}iѽ}y3_|ɇ(q2'%_7R?="&.L>0zP{J<)N$l B`ހ0J@($Hs~(vv( (a TB`Xa`I#(.b 6KxBLpPJeh`B! (,(?  Ԡa`   2EAjrȏ IJ0Iހ (` ZPi*@ Bް |$ Ԡ!B 0R!Ԑ  Ad!P !d `.!(@1C-10G=Pqop& H 0Ϻ gP aI6B:`. @>s0d- &\ `A| H 8S`b/  h/^? @K ` I.B$p/at0a8C@ ^\ $p `2\`.!`.y;Yʒ Ԡ04.2@, j AR& Oa~04B`b4 @/I>>2:@K#^!f" I rp,-]M< I @ "!R2L4DY!`7#v@Av : ">Lg }20EE߉ !ִ !Q$U tIqFQcLOKԢP#pR'Pb0xs/( "U㜓MI .IHC׳,#ځLD b@W% JR ,9Pk8 "P bCi)9< 6XJJ CkJ vPA 6 ׀ bJ24a`TeUD}Dp N &AJ] b  V\@w!4p ^3NDYA P!TC!" FHN|5TerU TLE BVdI:YuB `]'0!"@C0Ķ_ K6k&3e / 5-" ?A `(R_9kg P!.@:SdCzD/| B[D `\: } iI avq IbA ,054 Bu a\ٗ.`wAntvB]/ "5AJ@ "gm'6Փw EנPwyrAH؅9q}uY~PI & P^ 1#j685#L.; !,yr7k]טYUs w4&k Ix!mopW!x|; 8%NR :dWwpRwJEo F02aPfP36kY`&8 wjR y,'URq0ʙ|7ܢaT_P]#" kaU᠗ Y_&VNSqW'Y<0B A#xNwJ ``0qUdU '5.RҰ!ƀR0 bW!&vLvxZxl2|m/VDC@ p vePib>tLb05U2< :1'8[X&`v߉5`r E˕&B6 '`r 'Mo)%0/ C@Oh:4#v7.ہY; 'GRZ'w`7 0 *SYOsb4wRtu2!\ mu6SC!6P b0C5s(_{D<`[8"e:;!{ d 6`6۹$G'غv`bDRp@I: *\V)rNSַ! D Sd oR7{kHv|}#ɓ\ɋ|it3Bץkcǩʭ$yɥ\ʿ%SDST\y|&S ~BS%>mB@TSc96;Ґ\; jWqM'5Z.]4jv/ÎT`%}(o} w݋X]P|؇]G؏}A;Nٟmڧ0گ]۷=O/]ǝ]Ta]]^ ^+/3^7;?C^GKOS^W[_c^gkAs^w{^臞7̿^꧞~鳞~Þ^מ^^_ _#_'+/3_7;?C_GKOS_WM?Zc1Fk˞o_ws?_?CfDȱ(zkbIX * Hmr<OB!H"(t Y ̇A2tRZ1cF;vwX5􈲢h0q)[.3̄3Ν<{ 4СD=4ҥL:&,VTՊѢ8V=FIl)׊&k6aEqo|U5! ,     "("!!$!*##$&&*&)-**,$+3-.2-15-292245.37=8/59=6:B:#:-:-:1;;<;3<2=2=5=$=?C@;@bDccdcVcTc:d.d4d3ZG v1%Ś[%C Csĭf=izK\GLnIO!yRq=tAh,R c}R \yc)j#moQAV$оtVҪl_5?-J8kl#òWd>aЉSR-0Co1C Ť ʁ>[צ4) yC OJ00oʀD%Y=4 Dk> Q4 [ PRmge@tIN-2 Z^Aeokvń%H5!i$Vo Yr.a80byV ħv.HNND%ܰ)Jr4M\f#qWѭh {*tE|+dK+װet& 7Y]'zex  C5MU-mԑEV%ڈƮkM5q)؊[X()6WXŸvwc:ujAk`0NŠt[gpoBMIptp,`נW0F2F2 ve-n @=`kwKSJ>>*\H'ivRmZM)rJ-!NrqowHm?qX }F8٧L{e ޷l1[f"5Җ" UM{{GS7`0ߛiͰuw# (ַ<{i]B%\da 8Q#S]Y ֘U[ P.Lu ӅPtN%P&);>+QL4|*.H$dvDE>t^]O^1A0Ip|S;)-)H)][#o8, wyĖ='pY-eaf>t\AHAwfEYAP BI8#ؓ].dLQR]u-@ pǀ ^Y0^a pPn4$APn*S '-%P le7p $-yK!y%sc)4@S-`*scD@D<>! -Pdi`PT[Dp*TԢPYBЈF#E;ȚZ;*cp }ehڨaD#^r Ub3 W%cp pw G'uCzTπ>s's=RFǀjQu ``j\ Dj0;# p #Ģ>i223 S~CB.;V/S.#1!{j2zb\XJ*8Z/xzrʚX*ufU棠ֲTvZ^WJY1O~EF) yXU1~-g>p{q-P9:zPez Zz蚮꺮ڮ:Zz.J3:;[{ ۰vκ[{۱{1;$[&{(*f%!,2;4[6{2법^8۳>@B;lQ:DJL۴NFO;T[V{XK2G;<^`b۱Qc{hj|Q;˶pr;pHKxzIk\˷;%뷒ѵ;۸;[i۹;[k !ۺS;[7 !ۻ;ī[ʻǛۼ;[[{( IS,[I@F:y^q c5՛{0gr&cC^yj>䳱,Ľ`X̷ϋ0D?j -2p%2S,9whNl| VRjN{i&P8,yq%@(?|C7:7&L|웹E<nR*_{<ڛX0R0sVPSHP _! X0X sc r|f`Qg7^Q I@=; ʼn5l`;0u^b$c sXsMBIb9<5 2ucP_ cʹ# $) I<,l.0Qwt4D?&FEA`CRMBPH>Cp%,4C^tõB?%FE, WD^4Br>5 |t`IC?'&E4F3c|B^d_L>+BSLB 3fϼ@ͅ1g&P\MZ0Ґx.ԡ -^`1@ tS :^'T 7@Ib (fPYeV QY@ X'y9c0-7)jHtt1`'HxN-I^}X3H0UjW-qp"+=}@7%, ϤuҰ @p n ųt-J' L<]5Yfq BD6'Dv1ԥ3@HdtQ}"Zݫ$[ݭn0-dX=SLZ;'P'd7 PPt#kd)0a6WTdmvR>{P3 yi*}SUV-`4XeI +);- l^ACu rdv'LSvXG>,z8,e4?-@- A&"0rYXu>+ xF.TZfV}X.HQH70_`2(KWad!0Yo ,Y] _.X >[S=P Z^Q:Q:% SXPt<BgS`),\v4IYѺjU,}>*S40%Ru&TLWI %^'VR'oNTd_Jj-5#ɖ7]C5=7bFI'ĝ$ BEg`?A >>pS>2Y^,U-|SItîViQ^i!\q ]dġmVf0^? ]G5ToFbd @ţɨSS`qjqU&#*( r.]X 8S(xez'ֵ p\B \Z,4t.w.-W2[Ƞob_f/o_  `_mէ*2֯R ) )xEq'0NqCH C$Py+b)jP?U@JDx@>VA"Ba3qJY PB @0n-=Ajs 0xbYiծe[qΥ[]y_K#\aĉ/f\x<06d `G*IBN`M PމX"~z z{XK F ,n"1<0`n @|v3!YA` L9{Cg0Z. ( $(C lDK4DSTqE[qF{"s1vOq1GzgIb=Wecyfej_yg{goyV6h(sViZcT穳zkjk{lFkglvmN_n{o{o7pgNq#oxqr37e&^C}tF)dSW}Mc}vkvs}w{g19d}xs7~yG ܕw~zYw~{̯={?pm|wW}fv~矽~fɎ#`M Ѐ dxFP{`8A fp^d4A`MxBhpo%Da ]*΍/a ôІ;ap6PC<D"&QtՐD(FQ-MlxE)RqhVbEqQ- cxF4QkdcF8QscxG$œDbׄH6яF&T ehC5.'(:Z0(D=QTG=4OqU`KF@|ciMmzS洍JR pq)`*STKejSSeATRT%3ujWU\ k[֜BeYْVeIk_W5t]Jelc(_v]aW:V!SNְLlgM{~VeHZfQ?j[2WU ײU}l1V:M#m\uno߾]vWbX6%e'O0m#%˸[zC̍Hswսn: D]\"x]PnD[)߈p4!`!" )`!%hZ 3d+IDHY o?]xx `LXcBiQ,&'av|1l<79aw`s r@ BנXa["g1⒔j>f4Dܖ#he" /G$IX|u\⒄-yb\2#dHs6Y xPl #e\;v김6IFۡf q1CY nEG8dT:3 MZOjk0 9h.|2 f\ A 6j`K5^J},i%m"c R0C-nk!.8 偣+@@S[`@@ n! ;"@q@507`H~&`,`aBx~ܸrQ`!7;ah/r;% #WRk[6lAAknsqj!1,}\V<8 D𲮴k"D@wfa@ C#or7"A{!jPl=x-8>hKIAv&0! K(c9#@@ °!{@B*),z*;c[`7%/y)Dd/ xAuR5Pz8zx k ๵bS;?<5b?wh"(`(`X5h@<# * u{sA(E^ሥAD @\ ZK c>jkA `ȇʇ\ ;hJP?4:z (0"i@c@jH̃C(iE؅;CnK *2.k$S D=\,{JDID i.!Y0R5STĵ5a:Ha Z\<#Xn#j;PhjƩ؆5hF4=P [.=:kbq5  {t|ĀG0 eī!kz4]Z6@;P@X/52Ab,':a7kPfඛ|L5{s{=)I@`\E\ )XʈxG8F$3FX˅ܝ|466?E5 / ?j{?o;B͗,x.p(L<#ɤ4JCD,Lx,yi(쀩|Ts刵gHR {|];8#K78GH!-à$8dL8/LP|43x0Д d5qHU ?Hm,y"#$]-&z\ɫAD p@4hH(kJ ЉP3 XNEÂ5cȃ%P1sBZ w(w)܂2* {Bhq(2gz(~U>;Y+9499#ד TE9$X-#.Mu,J%ٓ Me,ْYHYy2RMO-7E٤Z|XZkhyBZIe=5uٯٰDZ}mM;/@%m[fy[[ٿe~[Ze#ڶգC Ɲ7*ϽIܬ}/a7"h2"9(a/-)OXC^-^=^M^]^]OWAiH81VQ 9X4Ʉ~h;ũ `ύdN^`P 9p@ ޽ܨJ`^b&n&F=|X Ypa0cVB[ [)8%8c9c:c;c<a(8*FWT({b1cp\ ^maxc:vbL=PE&![ƂxX`DNNeF4[I6%d]Faq_ e_0 efe0a8p-bepeިf"fK veggF6Z6bZLpLCrܹb덈c3xgfd{;gf:s!tYx8xhD^0JX1-]|ȅ`Iha5_@e^d^iV^fZN9iNf`gx^VV`/kkpkܵE }2b@xGiIPE~~Dv\nI܉ ,SEfD  4EWYoa@@8&lg&6Si9CiYd҈  Fܼ> 6׎žm^FD{mj>ݎUhPfGVᓰAT@ad N Ebl]no.CfF[99؅%ٓr;؁  UfhMꖙ|=n_bl(ƅONZݲǛx BV(Nm7qF6do \XCuf ;#m߰r\~rlB/tClLt_ޅKk/(ں^4h`h!\=~hC`'aE`CuZu[D.vf-oJo.ks7. 0Mx?5rzCdE8@vovpwDgL~_o rq83v:GX񹅈echPeUjwq!}vL~gonF/tj`gYI7s wc RHv$`@x vmծGPE;b;(X~5Ɔۋ[Ny ~S$TOr8y<`;9y]WdzP-bBHcC-spAрGҁg:nWu #nOl8ۚv3evr oZ|Tߚg g♏V1‡Cu|IxCPl?o/Y Ja͟ ϭf'ݩ`xO~ȇCE(|_\O[ :Rwz,gh}JX&?bH(I"A!Ĉ'Rh"ƌ7^<"z"G,i$ʔ*G_QѬi&Μ:w'Р;JqPD0`jRF+ذ<ϥ?hײm| :Xnwk7I;PQ$D{mqc.Clɖa36PRp-Xܺw$إd‡o؞Gv G "ŝws\ Wv<tEx"9y鹘z^5ژ|!u_~'?XfmDhI Z+H$b ba%t}Xs"":&ByfNbmZ_3*9gApZᇅ9ĐWIt*h0!r)=!a7zSb˶[<,Z.왻/@9toҏ{xC0`B%ŀ"iZD("L,#( J@>-d(@ `WDr֤?: 0vle=xǼ( QLHy@c (]e^0lv7U`-RD]BhBv!^=j/<T` ! qX~k@ 0J2 ՘Iʦ0):j@NEFvO|bN4諮0` NI9 <(4*éDr e݅T UR͔ӳ)VaSppqV@P@ k!LlUz#bl:&ᅳd #*YMmuk*ٜ:FyOeM5P I= =DOWWi/k81dzd- QO6O:-j^s'( YU (&⛚.5(yܼywQ@*vfWnOrC5@r5Y?vȤ-,F@ gF]-x"EM+SIp$kx|S4@~A>ˢlJ.ƿQ;%=n4CFN 2'芿@}` <]pC(hjh4<3Cjv!675ywuyt| 9*rq2~:`B4^ } <$ iƷul ?T~I-1C,FWmV>?nW-zRإWy sl^D]"e]i{=]lk$ܮ!zl =c[znyQ:Nr߸DžCcU 0N Td9_oLx1[i# wr;f,w9`N 9*`aC$ldyn7NbR8R=F1zbc]" ;o ]>-*/=1Lb{ON]?!^f-y;ec0j}lP};r Ò{YH~e.|D_|H4Wʨ=L~ޠ& Ǵ>wN/מ_MxCP "x Y,$>!z@dʈ3`.[Ɯ MC;>D0#@Z4Y!!5dBJ?:?$DS9cA\.$FF7cDv Ud]dFl?zJHRHAL J:JddxdLdZ$QD#O"I%SŠP>dQFp$j%e5.eSf%`"Z%aQ^_&c`&dG^X҄b6&fcF&ga2be„_f&iagf}&f?lzF?iޡj=5BkY&qq'j:%n>'Gdo::(vnvbw~'xx'yy'zz'{{'|Ƨ|'{j; DH1''((&.(6>(F qV'T䃆n(v~(n=(È(h((h茖& aPGjȑE i*2.:B)C'lviT@'R ]-閘E陪iVJ©\it4)ٖ֓)H٠*6ERآ>*VfiqNn*6jv*~*j*v*ƪW*M*z$⓭檯*4j/*Ɵ^+6%+-N+2Vn]d+Ɣ^+k֜+ n̲+櫾+:'G,&.l F̫,18lF#Vl],oR$9j,TliMg~,RȦl,,ˊl,Rbi͚+,k6 *m%m46r϶k^-relȊmf-v-žٶ-ЭFيKmt->mǚ.~-.־mEf\C3`3( nB.Jnă<dPnjmF0<<<<0TE@PaG FDF.^CjD=R=,A(,-B  `9T<t@nEB.. zdT.FúN<` d?CPBCFlB:nFJEPp?-d= @@ڸAA`oD /E`c U`Bf@pw [ae^DC @mp'nG`)Sc pu}1a?Óu9P,8|_c`ZP.42NFLqEN3p? @!.i\ %܂G1^0%`A`AHҪ6'8&_< Q3L2gpEC!`APn`14cʈ2*GCz`34gdol)%%%WM!OP2W ,Wq*KWqep - -.~®EHE@ gOC! JG`o=`3H0A@Q_5| ?p S UE pN?@7W@tqn 04mQC4sD`pCD <iؚ9DDK-H1 @t 0 CvtRl5f?!&@ Z[8+  4YvEpCC@ qqqJ[ $`0LOmt,\EC)o9D @Y [0CbSl24Q˂VC228Xj0H/s= @ 3s*Vp== E qcy{$ss[`Aq&G} qp Asv7T\K,r"t@5%4CoXxHxDd< VV{auoeD0x|; hD?0x t kWC|z 9D ,39x=@B8x%AfHCCD/S[p$=Z0,yۤ/sԓ2/gn2߂}e?7c@ -PpP%h@A}p!hX(ߎ=ٓ>~HBByC _<' D?LX%p=CcA!Sv$, 8`1=V7?tB+<'^ /&E3iִygN;yyϋ5ziRK65zMĠBz(zn, go`X =@-c0f`Q 6|qbŋ˜*qzY}N-4 "^DZbw+P)7VA0Ƌ0p'n t^<(% ^c`WH(+p'>DdaV6>:@,?1P)AԒ@t  5ܐ@4PID&+mRI Ch@esH$BK D\z/(\jd,ܒ..2)̜))3圓:(;ܓ>;@|I? ==iD}; [SJ"F#ݔN$LSOEuPeTLR]}V@Z#5u(UuEUp`b= EuWK{E3hviemYpk"[q Wmu6s}j᝗^YbV6e~%M7_giNh .X}mcx'p)`I:X߃C>TQ pNfe;G&yJ'nnxRe (u&Zjn ܇xgm,`KӹoJR)Kdy.( ߲nûI\(a~K\409c9(HAuh~?h<(_x#)H P#} 5*H"@| ȀXd1Q<-#4+8sF&Cmi 4@H xQ'ZqhϳL̡ A`nD > AP139M3`<6 P1\INҫ%ϜCP82 3D-Xt1Li Ԧ+fj?DG4xl ](7Rr|NCњuy21 `*ܡiUZ4gn=OeT/Qg Xѩ,9agmG <*r@4BU Yp@^ĮãWW@ e;>!Hd%0$"qgՕaDy06. qjD4LvRQ qc摘h`*ReY[t^Y3 R+8YW8Ip -pۓjdRU`\{A^zeo}UKka+[ »[w"2&` Hr-LKhztC% d,Ή0& x1x9cP-g@Ȧm ZA9dRb!pu!P +1'Yn֪)#` "=@~ TkUXiOc1glJPZ9>Sʬ7}c 0u@9A*z cN+lg>訿{ @`Ak&o E 1 ʰԯfp&`va'JlPj(*'%IH 1 ݐ`M@ `q  Ilf^BPJ5Q.1dҭ}jS  u o&뢠 : \t!R.W>  BaB*Bs&j C'B+:ғO\a:AP/w!ʎ kFˏAq5+rha&`(|" ,@zG& LT"PTXQaF ?= rT tGt`@HHL!8Q&3pDr{ @"aLJ$ $eBvPrtejbpPaŐN m((G m4UA4.p';kb>`,nQ"naS@ ,UQFU Uk[an T "8@u!=)kT U!aQI#Y$U.`RaLa'QurUAd~ r.Wo첀 : 0L* :+fͲ&V,T/m"+Jr&dv&d5_p9Q1HbB")*`6! '趛W\ŷcWz5LS0)84AuQsa̠oe"9q;IW]cT m()fuI63`i6' @fikX=&6V1,Q_;zxe4v@hF'8EYSĸ>A/ h F`J .*s55kZƟ 2D&*̐a.v\!DfnO/܍ >7a8 ("hs85_9|cg9AU`O%WLAxcamv@uv9ZưMBn(m ٝCٓFq>!`8"Wy&9j!:]" (bA"Kz&Y`dug'C yay=璤#v!2 UAטiEcQtK[qBE`D}ϣEjե@ wIO_}d4 ,C:cypK]! ڦRh&fzZF;kƉiev.J@ xZ>ѯid!ڭib Ȍ,([{@1CsEٺFd(N[Ǜ[)2oẺ#z̠ T>@[ۿ;\XZg;5(*/3Ag[9Cz[S\GUěj[V~"3^797CO:~>^Ö́=[eg$'s^m藤/c藞#m^;ꯞ&bL䵾`^>_ĞӾ^큞O>[_w}_U ?U__` ^++_[#f?_;?P2K?EdL_لW;$k_gPl_wfؓ_s_;Ciǿ?ӿ_)_]ؿ)?\?_ lŸ <0… :|1ĉ+Z1ƍ'2ȑ$K<2,[| 3̙4kڼ3Ν¬U^k@?kxƴf"yC" N <椥^֬J m+4n]eX!Y$ N!TnuS \$"GaIGaA71Sd3g\@rxW-q3d0 dXL&5 E2 cd eYAS3RS)i42,?Ϙ&3+ DbtGYO!I3JcS BόŠq2b1!8 T0jbE!$ngcfO)Sj=n $EG8ꭦ.*msHS,:Y&+ՓǢ'2Ebܹ LQ)8<,ka7avm`ŭЁ XA 0lpq)3M2ݐ@n<] qLV7`?]@A Dz(f}#aosC G aB)d)@`Z"kNh18A1#HN xg 6j 0ή @E8nPܪ ­ 3^a+ RHN(( )}șJZm|n꠰ϱ?,K1nHr:11ؙ@tp;jRQC9kr1% H #A!Jsl)$%a=Ƒ4=by&NG. :VZ6`a6aU6AX@@2(<:Y RD!n1 J@Y VԅF ArM'A%- NSM`@ . =G6&dNs4,'J_h) fCN%H6#g]*T\wYΡV!C P &*skMՁ$7_`Vn Cmqϕ Ih/AiCho LWF 2`oM` =Gb@dbOyP0yӞ ^գa@;*,YR7zo~Dx+=2 X6BMa% #V G_)4Ro) G $Pm9}AC8@ԡUz,IB-^($CH+Mw\\D 06 Vjy{f8eWNo1.D6!=Sh5 XaL b o1$FjI@CRfs98uu܁P l#@! |+ %viA3a7\::*q,r~:&1Pc:*מ?~[?"<3Ec~( DDa8 c@>Џs x3Xh?m5:lPJ9p1cp9Fpo΄p*5/}9Jvren(QͅEgucHMti3%8&$cjBV!%16.7xc2%^Pu ߓ31c4s In43,n43'CA]3IgE'Zg9]%5gj'==#V00,W2r9(x'h=jF933d fYR2Dvbdiq j18XTdz㧉zQ~g0v4$$;*SuJv~FQSuybB*0|0|'R5i8'vH08 (&G Q3$˂(%C؍8JҍBȏoщH= aJqV%8ʨn5P1C R؏"!q @P rla.Ey6W!ɑ9 FQ:A  Bm=IO QKM)WYtѓ_ a)1Aici[Yxk q)ؖsyS"{ ) ԗ~vSٕW )bQJQ )Iiɚٙ& Iiɛ雿 )Iiljɩɜ )Iii*$ )Ii牞驞ɞ )IiɟUJj ʠ  *Jjʡ !(%j')+:$ʢ/ 1*3J.Z9;ʣ=? A*CJEjGIKʤMO Q*SJUjWY[ʥ]_ a*cJejgikʦmo q*sJujwy{ʧ} JjJꨏ t@o@ʩ꩟z JjUꪯV *ja` mtjNJ^a@**VZY \ \:Z`窮^`tj֊ʭZ޺Jʮ^ Qٺݪkگ{+ k'{˯+˭ 1Z(9ۣ* Zj3 1k$[:˴Mk0[A<{Z`jYU芴ڰKekVq+(:C۱ʫoͺa VPUaJ{k'4!A D[t |PaP {˷j| 뱃;- vn ; cHXRb<toJ` ӻӫ Pй/!ۓv+sAM@|T % ZdB [ϰ wB[@[ȫ T|P P |pP $J(! ,     "("!!$!*##$&&*&)-**,$+3-.2,15-292345.37=58=6:B:#:-:-:2;;<;3<1=2=5=$=?C@ccec;cCd7d.d4d=rrrtsht,uvyv3wsvy|y@3zzz|@{I{|H}Y;~}~f3~DU2'lijk3S 2!?! A R|mWC 5l! =.̓,k0k,WQ =M!MV@6O2b C BWbZ)kY= HF_+%A@4⬉@!7ās>GZGvE%Ś[$A qĝrڷ5<-,'q3'[!, 8ЃkT%PW|`Vp H=P;D:5)_҈Ǵn }tpT=z ++SW48;5?x&_Wz4ճwBZ ߠ7?^[bG`m`X 7 :qp-p~A5gԓ&4WqxpIĀ($,U pnR6UI  t@aY[@V(Z*x8lxC0=QT m@(@VB`UI~J @Χ&abX.ŮlN$&AAhIP'rS5,r=!P\ _^0Il!(HТ_^Ġ.q:'laS2WJʜ:Uk`$ SJ9V5\(ǣ l`RZHu#a CUVA X='Vyx7JSL6.;--(r=pXzaIp65xkRjj PPm!IKJvJ? *w[V%&@I+ 'zK]@mŌ\u ˳Vp%>Sv/@UvR*U:ϺL.M2 Gw% ""[5pq^s b _j ˒5(\=͵8Mp眲^SibPMfK:thg#U 6keRO< yIpU!wiˍspIqk뫃gG鮭~[61!Y}TfXƫjp5Dz -LgeO.|qW'DpWҴGyGk*v (NK ZGdB(qo8L{NbnVSLjgs} Wp_'n);5fڇNȒЁ&лd@:mi2dnު%2Jv&1{y%.~f877-*9xTB $xt_\wuW|#+Y:eqA5,&Xq^:8sfvʽm?‚}sūzu $%scϐRGGnre$zd0wBo^a D`CVuuҀG5'aedho2Pj2]X3,W}tuwjIR7)}PVtqdd1|S@[ %|3"n_ V#WX8oFFk$|+g\Vb( xWgZ+K2S6`{JGYtc4C5`U$S-wԆ,5[(.aS@@Z. zN8waSD7*]Yx`1]c ej4 ` 8t+ uG ^r*m0o{C BcPAt1Sb0 ?+ ]0 yRuV,;G\\!"0 Bp &|PT3.@@SeS@Txs`Iy,Se0k*Rc0 VjHP|>5Q֐0[TAjrQSs%Dg1rD`tgq)tDEDz>k[O^!A I|C:uA%>V3'F='nI,>~90HJ&5y ^YAM7dit"\.dLQR  PȐ [Y0^Q P@k3dfR&1PR=V\VրH)ߐxtW<+BK`PFXe" I TUK%V@%* O@-YhP2xy`4='S8c1` ְWV.C<% _&&S {U2 p 4 @FzR@ZTP;Z`Mjs=RCZPkOe @^j\ Aj0;# "j-UGcRn5\QRIȤ>Qj" €浪eV-irDÒ{q-@:+5cz +Zz蚮꺮ڮ:Zz+J0:;[{ ۰vκ[{۱[1;$[&{(*f%!,2;4[6{2법^8۳>@B;l!KHJL۴k/R;T[V{٥\۵^`KPa[f{h|1[npj˶r{xz+t+v;۷񷄛+ ۸;[h۹;[h !ۺN;[6 kۻ;ě[ʻ̻Z[;yq GS,;G0F:x_a b5ԛkb! Ap&g"(߰>1& 3>B Q[{˾jA󓆗{ -2p%2p2XpgjI VRjA|Ti&P8},xq%@lo!fAnatAc~@(iYh&Y& \{<{{V@xQj :PB0@Q`o\k9/ }PY[p&zpss*0X30e pǟ b@Gu GŮ]iG/4ڛBŜS3\3/ ͥ['# L^! k@<0RˏJ̾~+- Qt34?*FԖbCEB@ƺ>Ap%+$C^tõ2?<^>/B}DH-)Gq> t`I3?%&xs4F3w|2^t_L>t*BP,2 Иӕ|?Xgxݤ5q G`WJZ PR +Rňp |OPVpA,b5UpUdAÝ) `q24& AbqCAbCzDJ?CvrtAx5%Sb0 Yvv0CP"+@}@6%, uҬ =` k t,eJ% 85WfoAD'G&1ӥ30HddQ}ZgݫZ o0-DX-SKZ9'P'b6 P #jd)aمUɄdvR n{^\<o<Ԧ"lwfIa Bi*Mu^3^ zH⚎/^1N>-dXjm ,W7 p_.X ˵>[S_>H3Qs[i^$t>'TcxpNe62G^PtzRZj99TkM[aFG'$ *C`??>`S>[& NgV۠SG`tVjM~i2FO)FPAjh>J/0k(doq,z[;(̟o^h5(8FQT3iMըђ`(uJ vԦC%jQHS;O TSjUЁti[2Fc%kYmom_]eWUUsAU_l][J%laxׇUZ- ְleɈX.V^McXZV%,fxq-uUd=eBgޖiӊ6=#lq{2׌U.numu۷ҮYX+)ⶱh%KCuKw䖌ԍk2/MN,[U"xA]M 0YKƕF ! mІl1 (@B%`Z lH_=C?w1GۖxƐ a@3XbBh9,p&asv`1 7 ;Yj7-+NXS `1[b"d1b;qc4I.ː\.%Yx!/8BJp@W#`ɃAvȃ!54CiVԀf;uoPaHÈ >C8sg(YQ hp/k p=(ax D-8RʡjZ7˯nKGo 76c>8A L.blt@H|$ن PZf% RyҨD|-r e}}A[-Fqo:%@gq x-dѣz;d?na<^PJ9`+@)>kp4G>KBvM[[(@PdN 9@8ceq`(9MG%ȸ4YjZZѷg!m ip~aC`< [ :8= «ߊl٧@kuˈZ:@kHNz aH7xP{zXޫg ? " _1 {8?Dp:{=p`V Kjh9jzH7':q)O# |P8K|?D4 PxA0[{`;||؅0P8B胆†8 iHdHj@kCe6D:Cjt#<,(,+k"CB7+{IHL (:(s h-YPQԝ$ -5284\`z6AK q]|^ 6HtHFhlFem:@C,jl1R k92[>s7!=z| >{ıp(Ɔ:BR;+6{8@J1lo듁G0YzAʣ'Xfg JcItIC0S >"ldŞ>zt`w x`l<:i, 3)o``S3k3:5/Ȇp6bQI.4zp1LCJ;7DY 1PJPʮ㠼Z0 Q'J7m3 0m/U;!@4H(㼶hP8mp Q Bj,삋!+2!ALnt+1 O+K+=IAN6<(X7*;YXolU 1ز J݁M4;?Khz󫭤( >M`؁Kir؍d48Ndz (ox-0AFT~z[ɾ@, XHNuh Vr8 SS4+0ё(^A <0B6]S8w w)k1gg r02YrOP 9(!8"W-)B2VR<(۶-jey< ۮOQ\Xzъz4V Yݭ%}5]Yݹ-uY%UuYΡm垣MZئeZ~Є<ѫUUZ [Qd)9۴U:ԶƦ![ۼ}3;[e܆d8!h2!8 aHL/čɣ/QPC8]M]]]m]}]UQקi\)ȺszH2xS>m>e 8ݗ ]]Ih@S^^^6']]ye^2S}_Rm([EC``.`>`>`CFȇ!=?HhHU 8H mM`navCQpڅ`ۑvo ` P ٮ[5|ȅ)b*b+b,b-6Nج| %cu ^!Dښ`&~^'.9+~a=c9P=eǝE`p_5^c ndS⩝cm]a>dN&ncA֠BZՌ XeG 2(aKFaLMd^]*mJhpen?0 f6\06Ȍe^gngϸekvl;f}n:pnaF!bنp78hpFn x`^z&kƇ]g}fcgQg)gȕ@ VFhfdG& ϝhchi6hdF[@{^Q!f j<]yg5 \ޤZX #tGxDHG86h jꮅĜ@iV1` f`!fp ҦfiW@8)>cm8;h@k®3l\Ue@ >H8F[& ɞl-lN>C`{hBBўW`@꤆0lX ( 㓍 NȳߴmӰ|K ld嶄f\NZ@hHj8$r:C euoyb>(n>fa&C\йƭZHi8.@Kfx1o/q6n>5d箨cke芤4JYkEyp8rmHobk:s;k=rP½r 4o UΌX71aX4 %.Ⱦ~`B%7`=BuQuR<'veq,WE1CnfN.Usq6>0=N8fovggO=~8qvquS%qlZuj:BP!`OjK #mNK~{G}afV-hpZgh$86v̨`o>)~DP~#tG``v h!m v[w buIdmkvb70:NO;h988yTOh/7_Y`uA$htPrpptvag7wa)^6{?)@qAG4C>ODHw^ `o%@x?HxBh'Wن0 %ft^?wKUnG`/}|0>HHP;y9Im((VǠCGg肰g|fOJ37k5nlb &# (P0 Dk!Ĉ'Rh"ƌ'"GDF$ʔ*Wl%̕r9):wi;|/V#[ϼJ {go(5mO:#r.qTI7Φ{5߷z%@U$9pwYD6Nsb"X\Gڲ#NIwwK RB= FܣlD(~+ѝ{6 `K %gB` !L2f"=q4%$c'D1q!+do\ص!_\A,ß#(w"imUR14!@ vPd=E&y{)E:/kn؀"Y\V8,j@UDM2C)Tz 4if*l'!a9hCc)M3T&JJj r9t^,[e!ȀnXB3痈E~?(*jX*{ C .*;L"+9Z,xjP;:@?=(+#D 2&" MmkMgBɣ]H8$Xc?+ ` 0paB! 1Ťi=jUABUs5K!v Sy؋*EO lzUe "$pggXAU \;ڱ%_?PTbOxn$ɶRҶ!<p@✇C: D&ۯQ/e^>CVrA18$.S M5&Z.s:[0)ڗ %shD=N5P+tj @%0ޫ5 _p2O&n$,\$$- fR\-00X<<֓ ?! wIk>|cr/v">QNWm*fj؀+ 2 s)3(is[hr?<}2#ГV:}T[3(q$I:`A0Y?0=!C͠Eљ-QIkҖ."kc ׬kQ_8. /YO0I+=m$6Q>hQv'y44 t ĭGY:@ݡrf8nw3C.p_Ap 1n@Op`d#%/8"R324stf7UAlí=ʜI$E;o9CdLэ^_gT\eV4ã t\+HK/{mT[Ş1T!f63|Ay; k98)2п |m&ʧ}S?lZF:qIZyae (|*GFÿLoGT7Pb|x$v>cP(֕3G+@hxxr1UARepǵˁ*Fb,3@]^M@(e [?27#  `N ~ q8@@T=T8n ʠB" !ơJ"IE)ٛa-D: HN0lA- JG!eU.(%V%^"&f&n"%$^!5b ϸ)**'>,Ƣ,"-֢-",_+K-Ǎb*֓Wcb1bU\2RE(:c#5bW3[mc/E4~^\#"!@y#;B3r84F"=6#>;Y<^`9ޣ@F:2>(@>d!$EBC'tFtN'uJ)oj&n"xx'yy'zz'{{'|Ƨ|'}֧}'xnfa>=(&.>=0N('^hVnbr(R~hh>\rUF H=ŋFΌHf`hh\^U졳glm&i))m"JhR)biZij19)iܐ)ii))m)s٩)j *d*6^>*VjhFGMn*%vH~)*z檾*eYƪ***k .+B⌲6N=kD+fkw'++'mD=++H:n𵫾 ~f%&"h_.&,`nXNI,_n%lwu~,ɒȦۙl,n,ι,,͞,f2- ml*ʎ 6&-.[E^,X-ז,ֆm|yvǔ2ھ܉VTF=e<<ۂ$Ԏ\|+pE<dmK0< PkMʅG9 \VLq@Ex@|Å1\K3(CH,5dȲ?-p^/ApTX5W|CR 7 rtmuJB 01gc1AD $B<=ӬΦJIXC?)@j- -U@̅uA{pHk) 4@,$?r<vd)sww'BCk= @ L?uK613H V46Y65I"p0C%wH$/lp̊gJDU~D=o!2Ir/D{dH,1pXA{7JU=Ugx=)1OWi&y[BÄ0ؚCt6]&ʉkyض8&33;Xir뒳ߖ-ל/Ēey9@@?Xo+_qyyzW+~_o9x$wZz[7my( 9$tDx2p?{"{L+G nS􀸋DFY9Ddy+9#zHr ަC`[=$@7o{x;-e; JPy 3دõ?x7xc{7;J5SwgIt]p\3H{гJ9 $-Inp›ؑAW<Ӄ 8{`ǭj>,Lf{19܁ A<3L$dz O-o^.w̺B9kpH,sZY 4r ?wTB%d0ŤwZ @1Zs"};C@G9xp4I[6QHPB^ч9g\u@uOonnAD Wc98!<0@ I9# 4yeJ+YtfL3iִys%2:g g\ V £YɆ#aH X*u@  .ON%(ZIx[$ TAk%$|A_= =J~;s0 *yuj8yVvlٳi׶}w5[~ VO J[o9 *ztө-'a羽Oksn6( ۷(oRrܿL <`z-|hR - 5B:EDmbUM™>,e1suAUBq Wl;<$_1%&|(5t$ A"cR.R5.K2pI( E9wj8!N-'\8{^^( :DmkH6fail$!DPgBJ[EuQ א v4"YdLez/2 \@P#HM4(Vnw)# `$$!ֲvuL8ޗp"ВPiMmgS[D*0!+_y:eT0YLTBXySfp4-(D`XmjpBxE) ^ʃ* T̐ :_? T`xJ a',LP+2"OBDn '< *JQjc@=y%pЀ |!ߌUQJ"?,^*}#`3'@!,rUI<>Ld7f#w}h. %,` b0y/|&(ɆD֡Xa/ "/,*N@oV\ٔ-T`xaa`8A`a&:l%/nm\!A@# tVŽPILP_b$`ax%HTΩ1"XV\0eATCpo\- Zψըn @!pY!tN^V&;>V&\$8*d QbP&PĺjLRf֡F>/ Qa (qR!A*>˫jrZ?@6)8 dN0 o6pu*&ղ a. t 2bM>N Y<1x^p$^"&( /( a|.]q!% 2l U.1 2ay'"i8FN%F*V #e`$fk&'%a+Q)@ .dmn` @FoO2]\N E z@l!I-/5-12'3 P/@֠,`0Cn\t!5%I<+ b$zdJb8#57qYfrPAoXo 7On >KoA4Q51e$& dതa*j$(=q-c= 0TA>1`? ?n@@ !AYbA i2*{%@/& d%AI /$(=}pE&AOQo ` [!C@DN @oPa2ASTofff'3Ob< * 2L`;Δ~0ִgR-!?o`֐` .T @)>]AP!IAy&i"T:Sb;E&$!m3 `7O0E BpbN- _<%S ZbG<OBVYO[[%\>oVo ]u@ut`8HI=_+_$JR7 %8a%@$EUEY'EaMׁ1PA `ފf.o"3gfեf~^nI*a?`Ʋf`J5M -UaJ>%1Ƞj`T  @1A<AQ9l; r4` S&b֌n7hiviie\NKP Oa 1!gҒp.1Xg?nToQihUաQA2!fb @eN!QX͋+f"F*At@Ut5Yf>gT\A)uxSP)=5r+_2`dp%@:bNt0!ޒ ꡘ @&ғrr]| fSڔFnK-xM0!ޒ\M !_ȸez` ~`*%8 եbqx\AT@OjN9qYepmN8䘾z⮗U5F5B! 6@yiy8]ҡ~!W%8y bUA  b$Vd nh%F9bUBrYYEmv:% :yXZZ N w4ٖE#a82 눓S{չaUAU3iJ$N˙َmR3:ށNfygENJ"C `V :J1y\9m@L<*a۱#[9A :yo:iEìhNS[W'`6*Qׄ5{%` Ka<oi&_bEk;;bۻ93 BYUΛnܛS.{&7{Ieכ)BQz#='£w2\1z C|-A{SܫW/{c\=EaƳes|܆ Ǐjƃ\[be ȉ_Q\IǛ\}ž%ɫ5Gk-˻Ue +˼őUͷ\[Rw'׫›e<&<\ϿЃ%= }%]U\/D^|܁;?C]GKOS]W[_c];ݹaos]w{Շh(ٓ=X݆]ٟM3=ګړeڿٯۻO=wǝܿ/G]H]M==J}G}]D^C ~:>Z+%X(7>1^9Cg[K W>SSX-Ec}WwsOj^}>W菞<鍥飞ܟK^>ĩ^Z]^e~6ў7쇤^^E^ム>E{BoAg ?K+/3_7;Q"?LGc@oH^S3 c__d~o_)#dnzĀ? F-]_6?O{aC]`?a z(%bC:a vA_gxn= <0Ak:|1bI&Id10>DabL4˙4"PΚQDX4R=WNҩTZ5֭\~S6ذ Pb6R ^4e YZ5AOR >;P5\a͜;{Ѥ*}`_!AVj5,[+Zs zA YY߄EnXAڈXК5xxmʖ 9YS孬IްzϾ#uߠ6qL9p^9b@a[CmAC|ʼnq =c{ى!2]VD`:ۀH}sCm݉?l1= #t@QF1"DVmx<]WwG^G}#M=8a=0TR9́VX7&~ Q`-cv}E69-XiNJiRi-G\`C we8C2J?~ɴM C'k8 qW b75PBdgYT0$P?HwP@m%CG0@2 =dPp@%d@ EA ? @@ T$E p@5Cbdv˪? @oUAqj  %=xp?b 2<$ @p@ڥeZChET:*"p@C=I= {1=[{pV 2SB?dW8ݜ1@aV@Vi袏Nzh^;E?k*L$(̭M1s5tyԺIAKYN75?1zqC8OՓ}ۑz> 3qHd(<@=*zd 2u52y!!9\(#8% /` N=A=>l:/{L@=%x;sVȪ̀@?0p'G%V'ٲ@wx@z@ "2Xs]sRG(YE\{VS/9cAU'^ Y\3X/e9LyM)SI05iG[ɕ]_ a)cIeiWGq! o q)sIuiwy{ɗ} )Iiɘ阏 ){I#gɄߠə陟 )Iiɚ隯 )Iiif )Iiljɩɜ ))jI׉٩ɝ )Iii穞ɞ陞Iiɟ *Jj ʠ  *Jjʡ !*#J%j')+ʢ-/ 1*3J5j79=? A*CJEj?II r oQ*SJUjWY~ K_ SejggJkʦmi q*jJd ``{zs *\v ro@\jʩ:ʩJ\@ ꩢ ʫNJ :j ʫӺɪ*˚ҺWpJՊejʮzڬj:Z֊x2xګʬz +Zz k_(FK7WeºzovojZSʯ{5kpayH!{#` y0`` ,۲Jy ;Zlr_ qb$Hi{l :oN w:Y d*J` j˵bt`,z35sT@A`K0?(@j 4%r qB H sYv _з y` 0V ypP k:kJ!! ,     !"!"(!$!*##$&&*&)-**,$+3-.2,15-292345.37=58=6:B:#:-:-:2;;<;3<1=2=5=$=?C@ccec;cCd7d.d4dnqurrt9ssht,uuyv3wsvy|y@3zzz|A{I{|H}X;~}~f3~U2'lijk3S 2!?$1 BRO|mW 6t! =.,m0m,W$a >M!MW@vO2c0 CW cZ)mY= F_+eB@t⬉@17̑s>3ZGv%Ś[%B0sĝrڷ5<.,'GqCHU'] 1T;/D:6)_҈Ǵn }tpT=|+,SW48;5?x&_gz4ճXwBZߠ7?^[cG` m`X 7 :q p-p~A5gԓ&4W spI Ɛ($, n6eJ$" t@a]!]@V*ZJy9ly0#=qX mĀ*PVB`eI~GK Χ&acX0ŮhN%(AAhIP'rS5, r#!T\ _`@Jt!(HТ_^Ơ.q:'taS3WJʜ:Uk` % SJ9X6\(#!t`RZHu#a CUV#A X='VyxU7JSL6.;--(r>pzaIp65xkRjj[ PPm1IKJvJ?  *w[V%&@ I+ 'zK]@mŌ\u ˳Xp%>Sv0@evR*ІU:ϺL.M4 Gw% "G"[6ps^s b _j ˒5)\=͵9Mp眲^SibPMfK:thg#e 6kgRO<ȑVy0JpU!wiˍsrIi|g G鮵~[61!YTfXƫlp6D -ƀLggO.|qWDpWRT*v (NKZ>&"z$< caߋͥpu:F>#Sf2 \>qÖXݩ1>tU,0>QqS m[V*ު%[]>@(A{y%.~f887-*9xXb -%xtcwuW|#+Y:uqB5,&\q^z8sfvʽ̭?‚}sū| $%scϐt)%3WnQF2'@6s7)Hf1aUGҀG5'aedho2Pj2]X3-W}t}jI-7PVtrdd2|S@[ %|3"n_ v#WXh.modFRkxnUj)Ra! I'xuP$3gk])dqk^Yrob4S%`U$SȒ-wԆ,6[(.aS@@Z. zN9waSD7+]Yh`]c Uj4 @ KPZ ^*n0o{C BcPAt1Sc0 @+ ]@ yRuV,;G\\120 B &|PT3.@@SeS@Txs`Iy,Sg@m*Rc0 WjXP|>5Q֐0\ITAjrQS%D>k&TdwtDEDz>k\O^!A I|S:oA%>V4GF='lY,Ŋ>|Y\1HEEc'% ^YAMAH7D".dLQRЇ0 `Ȑ ZY0^a pPm3WR &1`R>V\fրH)ސxtW2<+BK`FXg20I TUKV@%*0O@-YhP2yy`4 S9c1` ְWV,C<% _&&S {U2 2 DzR>ZT09*t xs=RA:PkOe \j\ ?j0;3 "tj-UGcשRn5\QaJ31J3*~ NJ!tݒvA*G4,׫ƊmIZׂ B@:QRԺ򱫞2:Zz蚮꺮ڮ:Zzᢃѯ;[{ kX ;[{cz˱ ";$[&{(k\b.02;4+[U:<۳>@LA[F{HJC˲KPR;T]7UZ\۵!۴8b;d[f`gl۶n{i;9t[v{?1x۷~z|{1Q;[;;{.[˻{țh{rЛċK<ct0^k{+ gr&c 3^3Ȱ>ヱ+`Xuk-4?jHw2W29. zh%Q7;$\nWR/^ D0j#L2:%\n{Yh&* \K<כWusV@C8@ PWc |gPQg7^a I0=; 5~\pPr0t^Z e sБWsMB@9Z9p<5\uc+ c`ɯ3 #)Hkļ̻?yK7CrjHkZ9?> f<1\-P$^ T:#W[9BA0O8\+QQ@C+ GD^4Br ]K64c`R>@j>Px->_'A$GDo >C)0 >W2ݳHJ|7\MZC +9Ґv.,^`0@ RL :^'d 6>pIb )VtPWEVQY@ W'>Mc .7)Gt1`'GxN,I4^}X2H0UliW,349@ &)d dS’}L]D|`@FR]XLHhW/P3>m*vgSWF,ؽ}1VeQF +89A-1v34^Gh|ZT,ЈA& peXVe5+=MN ^l9O.?QF?6 ~_`(^&Ud`@Uִm9rU|+P좋\V59SuO.vSpQ=1pI)ͳ8tz6 }elLi$Z +^VR^S4d(-Y F˘mWF)Ҡ^$t$TcxpN52Gf^P$uRZh9Tkt,j|IB <[K2? 6#!e?\z^4|ylw :QOh5\`+S#@eZ/LɼoN.^B ]G5TgF* VfP D<97Ve@$# [*p?.*8Qh.mWWq}P][0&%ާ䓙4Z#ҹ,4t.g"DW C_ !&[ +SAo4U ϋk.Y*pPbW'n7d)ЈY MҔY-=v|NoN$#10n +`⠉YnWaŎ%[Yiծe[qV]yݺh nYqPHDfgvPcL Pp\DT|lRVx HpEg0|>`CSqs\kx܅3^":Z``J\P|W0 :h' :Ɵ9Z ȆB 3pC;CӪJ4Ľ;뮬X$oʁg.x#q)zGƞRr1$+xQ+eʲExQo$ZL47 JG8_24qO@tPB9EDKm F6"PSN;SPCuTUTT*T}Z0W} PB+W%uXb5Xd2UfQTuCBCX]ڧXB(ٍYʢ6sUw]vu]gߵ^|w_~]v^_ 6`VvЅ#xb+xvx;cCaVdSVye%fOnyfk _9U{g1chVZbNT楣zjmigzkjMk6l^vm^n}{oWޛp/xpSq#K&]3|s@cC}t =oSW}u[wuc}vk'<0$}w{r }x ؅7~yIGv囗~zȟ=z>o]~{7ֿ|&uw}_}뷿eU~8$&P;`@Fp] $$xA ދ|`=Admpna M*'da °Ѕ3!`5P;CQfӀ8D$&+E,D%2qgNb(EQ+bE0Qc$cxF4QkdcF8Qszhq+tcG@R$d(5,L)9NqQDRd%-yILfRd'=IPR$e)MyR>r8>dRe-myK\Re/}K`S$f1yLdVD"7NӤf5yMlfSf7MpS$g9yNtS8'\id`zg=~sDj̙&QHT%hA JFh,'Z|>l?zQfTh?Іd̂|eiK]RP(V"pY\1`Hlkܡ޶-3O[ʴ̸pbdkw%#AqXtǒ٭h 66 ]"o V4#o.!f$0 Xi=.pB|(!$r\WXx9 3]ACB +HB̀Mk;ʴ p:|l C7.,KDS  ZSJ<OdS] =/Vr dL&0ÂAR"Z૱$I\tV6˳p\{oxG aawcm`S3%"ZM4X]FGPMM(%?r)2"j{#>UɘbAcօ]tk2âŭ =#6f`KB4Cs+iήl%!C S8C m_Y7 y)|.f1wo?p:FІDTц+\@p VǘFx ƸG> ObuG؆D "~vJȱs43i?3;cytV`ٕrP4`p7NrՃ@+ ad(Go.HPi&vxK}r˾:>/Ã{DAb3`K#!($aX+(#C`:@9tq+;p po)A#x Z>DQAC` = 4Kl |9B+{; c^56;)? z8-G 98e.0Od5PQ ;>]`z8[S= q]T?^ 4aAHt@F5dƐ, ms!=zDFGs5x؈0J FH "5_7\ 7_qH B6]Br%lw6_ya؈6`ntƟH'9h6k; ;K6F5!( O@B4ʇ|.L@f3؁H!rd5(NLR H6:]zprp;B6p zq"nN}.Tl45% ,4ё3( BӔ'aMBB?Sb؆-W9W.v1XAXXϢXEuմV-XoYu!Y}YBYSYR͖OYdaqYZYYdZZmZ2Z>uZzɩZ-+ڮ -[ "EUTjc[:,Le3KS][ۨۿ1CN(!+R![3 =4E8 ]]-]=]=E0oUUJI3== 9\0\PE~Sm^}^^7pyԉ]M-3ЀS=_]hR8mM\ED____CFȇ;HhHUs 9("פK.a>F:v]^H`P XU#aIHb%^b&nb'~b(bUa;ڔ u\"X#.:_'Fa8c:Pk{4_0cbM5l a9dIk;<>,vZdX@& aŌ|_FY#HdYnݤ %K8<`>Q&ebGшmU|LY8C(/ee`3_>bgPʀ8Uefgi~gSfL~%t~~ rAP 4=.w_Ig_70zc{v|[PgS.f& KU].b9߇hvffųgaQv ZpR/ģrcpNZ M.B?HphIPEhDxvۋnnFl XJǸ/jRj=a!pR>奈>}jjQW?@$je5P%4 2ZX3nZ l5N^IFDh{xlbf0iWݎ>ЊP<挨mVlܖdݾ.ܱfY uä(n01/^ r;ȁ 5e Swm].F>Ѕ;gXfLa~ˇE u%dkAVvL9'o `_D`;m24ENLUk~8j"f@ߥHTgQ O_$_s2/s0d ')! 5^T0-!N/aꢦUjv0Ms5GtHGG>`K>6GTr)GD $r`tAl9>88V8.\u]u cHSN'ZlSuHk؁ᝣ0`rr`pguL~HqGEytp'PuQwAhm:Rv su;af^$EX~p#tfMlHp]t= Q _1G vvn.2WFm`u_|8>P$m$Id,ZdɆOkbu}T6-ZE)+ 8Ċ?5F'Sܲ4k1Z9+*  ϪWתgӮM_>>/{tt"Hھ9t"fl:D[!sl0enV?}-tj|nGe=$wH4vvjXvpi}!(RK@y]j%^P 5g߅긣U!rHx!""@qAI p#UVmebtŝa(^(74~6 fj9'e8vyO?dZG=p!0`ґR'VZryC^>!R'X oWOngrzNv')u5H"AF7pu㇮F(/ֺlm^e)*vzR0@);}O:&20غK[9,cO*Iɽ \qBr1ֻp]A+-zٻ4DL Kz*.tr `\RZ0u4lrd|GJu .#lIˌ!MK|/K ?cf b-E O`0]OvYͬt΀*% &m\f !~71ݴOcڑ7׉)*@#N!㎉b} +ymcv w$H SZ!@EVL-(>8=_9Sc+mB@s-dD 7ߩW?&dFd_>Sf< &(&N(&ii&jj&kk&lƦl&m֦m&nm)&l;xAt&2q'r&r.'s6s>'tFtN'uVu^'vfvn'w0dC>܃yyz'{{'|'z'}C|'~'y'ڧ~'ggh~(hzC`^ \HPX`pzhRp^^ݜNf( h~hh8($h鏺(^&.1)Fޔ&^)f)T)j~) x)ZŘV)])֩J)i)@*n%.Hj %*F^*eP^f~* n*t*R2*N檺j\**t*qv'++bgfnE=$>+FN+>f 2\Z`j+vk}+xFfʥk*g+~XkѫZjkk l.!l>ĪW^,V,FL~,!Ŧɒlf\>F̾쥔),,\Άr l͞,>,&Yn&zўӊnH27gBF=|l<< Upֆ~(<mtfV\mV0<<(<<0xU@PUayV°?m5mVP LB8,RTC@t W@^.$.H=`@9mU-^%T0lVt$j0lovYn<O ȴA@`8ALE^E6UpHcdobNEU+ZEù5w@X !Q|/ 䝔_^d0ٕ0UuzSA WU UV W K^udTxZ3`1 mKXCP. A%\R76l[<֯A3<#chE!\AP²v\2 D%_÷qf@Cvh %ol1I'Vbuh8)1AtTto#K SdaDNd@!YUT Tf ! @;w`rAxrs/Y3S5^b^6U.< s0DooT=KDF- 86w3ˢJE 0CELA"&3 ToJr҂s ttc`?`]\8FLpmR@>Wqx0V!~A/x5/`2W.(DXD@tBFQBxL 7% 3c3 Tx@Ѓ `:O $@[Hkƚ/2\nmXA/4! =yc@܇nv%Pܙw B{}~|U ;-tYpD9`A,3UK|@ۀCtk%X Bt Gu$, hAoGtF9-G]C6|A@]i۲ap%`ߔHmd@j-G>"@beLՒF1 o x =hA JxhG?a KH ꡊTBܮ~St?xΕ% }g&B5LX˂?8 @Jt`p<sM[G7: V^_~OtR|PCYWbJք]#6XgA>@Bb./aJ/R X ܯ/xoA? e9"l-ꡗ6b;P>o]8_aV!z̠m nhOVLb BAZAv 0.ZX@8@@Bf6f#:@"fa O;vN Ua<֮N ͐Ґᠠ ̠xQOTN @Hl"A5"!: 0%q/nj#DoN PPCa ᖀ mJp4VR %6B0 l.v15,vBBp  ]Q "M NloJq 4 12!ie8" t'b5`f!7!c1/&Jց@$` `d4hp OQP0 )U *N q |5nɖ, Rk )-hJ!*O mn*DLq,[JaH T0rnr @'9`֍ Y 31A).RaZar [p3P IJ:A0e]!&({""`A,b!g#*8(!2959:p5a 渓+S<ӱ<ͳJAr!&e|q `B6 |7"rP3AS Q6 Y  nEm Q/3Ra=TES .9B>`0 pA~4 2CHGHS*SB L!M \PlOK LRV!NLe"`?#P-pO\4@/ 4ZY*nv!:S'ڪT3c+ `dP㑳4UX DH> 9bX@U9WA(PWaf*NIҎxO V YI@ @ZGͰTRm 9Φ& 9H%Q) btr:4Р mN `C!15+sU Vlf#.'&.Hd31GHM1A 5 \V hid` bp3Va̴gSi`7!Ț.EASjag^ ;t. hp:Ѐ|6Ua)* :!겂-&6WU"jj!Pա>LUq=2Mx4WaLD3n9EnX> 8#aV8/A׀ :S4A.d`qPL3TkL"6l& !wH)QALB-3y+`MJS+EvE@(`a-7i79!IaZ.4 m D` g[x)/XYI2 "v-`̈́Q [7dv8I^!Dm p K Ѷ|Xa!Xs9`,@-uu7؅ WvD xŰ P)}&na ,Zך;სWyT0ZzW KܒK ۰(@NRڮ#ۚ'[ $XBCCAK۴O)8`hXU%[bs[wA2VS*e;i-;A*C,^ۮ5kj;U;ljϛ(r[Ǜ;p־;͛7{;){|Sűe7/ǖw?|Rܛ7%dOܵŝ&d_pӔ;Evo^Qڝ ~O^M+%O,^㽄7?$KGSL^WSy_;IsoEf^>y>W/\'^i%$i)$꫞^?i>?b;^~[;!A^DSў%^0^S?0 Q__d/f*0F;_ElO?ZJ/B[ITM\_AloSjX{Et 9v+L*B/#Nria9}?Iy3(l1xRl"ƀ!:`B4ߗ#ӣb3bH <0… K0ĉ+r,z2ȑ$K<2J| 3̙4k|im$ &Hjs!q8 NZi, iJ]0`@d#"KDMlۺ} 7ܑ-oڽwfΐZY9d]G-y;sAkXׁ3Ȟ!ϛ9艰\+ Z/ϕ{]"`+cX6 Vmd2^FaisY9x|e1A]ֲz"l5qc Ӫ٘+%KM}]7T01&!4m\_sYCJVO"WAkC[n4?INXqw%ymEIW\:6YKhYA\ffjbUW^nIhWA̠0Tu #`f8p!B8@ ^ N60Jhk ` &S 5 tt@TsQPU9XP2@q&p#9 Q>3@9p? :`I=D U`T00D`C(Р@p6@NcK5l?R ddBEѧ0 #$ 1@Dҹ9I0l^ܙ$փ#;@PR?&$m'0:-d;I\uXkލwz&~)EOvS0=(,,8`p8p) UA ?`0V焏q(Ac᰺^yXRF08 9Q=/;7AH?C8KtMX@A02Vh>VUN ?y0 n[Sch@P]=z0f й](AN.Hp RJ\YG.+(S>$a _=@8Xa 0?:r8{(HHC`x\Rޮ,jQ%}R:|R-A3TN\VL0tȕ$*AsiY4pI"<-+\t()!SmiGל@ ,?SVR2 vw%y!|`0IypG5b#v>x{|!Dp.v#H$vmEoe>-₯F)Gd>5hsfWUG-aIf`v.XHU<(&-W.Tt|Ta3b"ʕ]2EWXϥOhpFKEǂ@b.D`؃AX4xtwXZ 8g%j'~+q*m G?h.VSԉoH ٧ň&@xvIVGEz(bmMyqkB8j.jԸ(٨_F(H7ȎX&Hz)Iy1aɐ 9i(Ya !_9 )')"A )+ 1)37/I9; -PFmGPwyS ; ذTǠбU Ú% $˴m _"[UۃŰqЯqG p cJm۶ZPLp m:ZixmrMKL6QT>0I<5&R T= p-KE@_ZbK `kKzp z@P yYpIK! ,     !"!"(!$!*##$&&*&)-**,$+3-.2,15-292345.37=58=6:B:#:-:-:2;;<;3<1=2=5=$=?C@ccec;cCd7d.d4dnqurrt9ssht,uuyv3wsvy|y@3zzz|A{I{|H}X<~}~f3~U2'lijk3S 2!?(1 CR|mW 6x! =.-n0n,W(a >M!MX@O2d0 DW CdZS)nY=  F_+C@⬉@A7Сs>CZG v %Ś[O%C0Ctĝrڷ5<.,'qSʕ'^AL9kT&`W|`Xp H>T;?D:6)_҈Ǵn }tpT=|+,SW48;5?x&_wz4ճwBZߠ7?^[dG` m`X 7 :q*p-p~A5gԓ&4W@tpI Ƞ)$, n6eJ(B t@aaA^@V*Zjz 5:lz0#=X mĀ*PVB`uI~K Χ&adX0ŮhNB%*AAhIP'rS5,@ r#="T\ _`PJx!(HТ_^Ƞ.q:'xaS3WJʜ:Uk`J% SJ9X)7\(ǣ!x`RZHu#a CUV#A X='VyxU7JSL6.;--(r>pzaIp65xkRjj[ PPm1IKJvJ?  *w[V%&@)I+ 'zK]@mŌ\u ˳Xp%>Sv0@evR*U:ϺL.M4 GwE ""[6ps^s b _j ˒5*\=͵N:Mp眲^SibPMfK:thg#u 6khRO<ȑVyJpU!wiˍsrIi|gG鮹~[61!YTfXƫlp:7D -ƀLghO.|qW'EpWRT*v (NKZ>&"z$< caߋͥpu:F>#SfB \>qÖXݩ1>tU,0>QqS m[V*ު%[]>*Q{y%.~f887-*9x\b m%xtcwuW|#+Y:qC5,&`q^8sfvʽ̭?‚}sū|u=D)_C}*i#~-[4c S[c2k`U~Jɇqs . b,WQvyZO> $%scϐt)%3WnQF2'@6s7)Hf1aUGҀG5'aedho2Pj2]X3-W}t}jI-7PVtrdd2|S@[ %|3"n_ #WXh.nodFRkxnUj)Ra! I'xuP$3gk^)dqk^Yrob4S%`U$SȒ-wԆ,6[(.aS@@Z. zN9waSD7+]Yh`]c Uj4 P KPZ ^*n0o{S BcPAt1Sd0 A+ ]P yRuV,;G\\1B0 B &|PT3.@@SeS@Txs`Iy,ShPn*Rc0 XjXP|>5Q֐0\ITAjrQS%D>k&TdwtDEDz>k\O^!A I|S:oA%>V4GF='lY,Ŋ>|Y\1HEEc'% ^YAMAH7D".dLQRЇ@ `Ȑ ZY0^q pPn3WR&1`R>V\fրH)ސxtWB<+BK`FXh2@I TUKV@%*@O@-YhP2zy`4 S9c1` ְWV,C<% _&&S {U2 2 DzR>ZT09*t xs=RA:PkOe \j\ ?j0;C "tj-UGcשRn5\QaJ31J3*~ NJ!tݒvA*G4,׫ƊnIZׂ C@:QRԺ򱫞2:Zz蚮꺮ڮ:Zzᢃѯ;[{ kX ;[{cz˱ ";$[&{(k\b.02;4+[U:<۳>@LA[F{HJC˲KPR;T]7UZ\۵!۴8b;d[f`gl۶n{i;9t[v{?1x۷~z|{1Q;[;;{.[˻{țh{rЛċK<ct@^k{+0gr&d 3^3Ȱ>ヱ+`Xuk-4?jHw2W29. zh%Q7;$\nWR/^ D0j#L2:%\n{Yh&* \K<׫Xu$tVPSHP P,Xs |hPQg7^q J0=; 5~\Pr@t^Z u tБXtMB@IZ9p<5\ud+ d`ɯ3 #)Hkļ̻?yK7CrjHkZ9?> f<1\-P$^ T:3W[9BA0O8\+QR@C+ GD^4Br ]K64c`R>@j>Px->_'A$GDo >D)0 >W2ݳHJ|7\MZS +IҠv. ,^`0P RL :^'t 6>Ir )VtPWEVQYP X'>Mc0.7)Gt1`'GxN,I4^}X2H@UliW,349P &)d dS’}L]D|`@FR]XLHhW/P3>m*vgSWF,ؽ}1VeQF +89A-1v34^Gh|ZT,ЈA& peXVe5+=MN ^l9O.?QF?6 ~_`(^&Ud`@Uִm9rU|+P좋\V59SuO.vSpQ=1I)ͳ8tz6 }elLi$Z +^VR^S4d(-Y F˘mWF)Ҡ^$t$TcxpN52Gf^P$uRZh9Tkt,j|IR <[K2? 6#!e?\z^4|ylw :QOh5\`+S#@eZ/LɼoN.^B ]G5TgF* VfP D<9%7Ve@$# [*p?.*8Qh.mWWq}P][0&%ާ䓙4Z#ҹ,4t.g"DW C_ !&[ +SAo4U ϋk.Y*pPbW'n7d)ЈY MҔY-=v|NoN$#20n +`⠉YnWaŎ%[Yiծe[qV]yݺh nYqP!HDfgzPcL Pp\DT|lRVx HEg0|>`CSqt\kx3 ^":Z``J\P|W0 :pG ::Z ȆB 3pC;CӪJ4Ľ;뮬X$oʁg.x#q)zGƞRr1+%+xQ+eʲExQo$ZL47 JG8_24qO@tPB9EDKm F7*P$SN;SPCuTUTT*T}Z0W} PB+W%uXb5Xd2UfQTuBCX]ڧXB(ٍ! Zʢ6sUw]vu]gߵ^|w_~]v^_ 6`VvЅ#xb+xvx;cCaVdSVye%fOnyfk _9U{g1chVZbNT楣zjmigzkjMk6l^vm^n}{oWޛp/xpSq#K&]3|s@cC}t =oSW}u[wuc}vk'<0$}w{r }x ؅7~yIGv囗~zȟ=z>o]~{7ֿ|&uw}_}뷿eU~8$&P;`@Fp] $$xA ދ|`=Admpna M*'da °Ѕ3!`5P;CQfӀ8D$&+E,D%2qgNb(EQ+bE0Qc$cxF4QkdcF8Qszhq+tcG@R$d(5,L)9P RDRd%-yILfRd'=IPR$e)MyR>8>dRe-myK\Re/}K`S$f1yLdVD"7ҏNӤf5yMlfSf7MpS$g9yNtS8G'\id`zg=~sDj̙'QHT%hA JFh,'Z|>l?zQfTh?Іd̂|eiK]RP(V"pY\1`Hlkܡ޶-3O[ʴbdkw%#A܁Ytǒ٭h 67 ]"o V4#p.!f$0 Xi=.p B|H"(r\WXx9 3]aC +P̀Mk;ʴ(C;|m(C7/,KDS  ZTJ<OdS] =/Vr dL&0AЂR2Z૱(I\tV6˳xC\{pȃx G aawАm`S3%"ZM4X]FGP]M(%?r)2"j{#>Uɘbacօ]t2âŭ =#6f`KB4+iήl%m"c T@C m_Y7 y)|.h1wo?p:DT,`@p VǘGx ƸG> SbuG؆D "~vJ_)LsQ3;cytV`ٕrP4`p7NrՃ@+ ad(Go.HPi&vxK}r>;>/˃{/EAb3`;"($aX((#C`:@9tq+;p po)A#x Z>DQAC` = ѴKl |9B+{;<(c^6;)@ z8-\? ȓd@dE<5ck+DЉ^94Cº1(1,k A\&{H>G 98e#/ 0Od5PQ 8<>]`z8[S= q]^ 4aAHtPhte, m9<[t7"={DFGs5x؈0 ħ "X/J?x[˵0?5/$h8.D/Wb{pgFh cIF- 7G%BIHsx `D`t\ FнUʂ#7е2k-Z\$< ;0gS-IBtƓ́wp/,LMV{}sڛEmIxۈ&9i(쀥 NOU/ݺL|Ȇ?#?ȆC.wX5D>H'Ah6k; ;0ɡ*$=ȱ΍F2 q,&ɁUBHB K92=@(7%5xZpp$Q22J$ $D|ȇAL`z-@ >= HXL(zR@Hi&  jlQO};g% o> 78o8T Kr `Vشr8 P4, 0[A = 42c#5w wX)c+d r."W.VTUm45%ɋ,4ё3( Ԕ'yMBBj-"bON>X-y]ukXUU =YEtYMMY]E-Z Τ=}ZɩZE̮ڛڜ6zX]Tjc7*[M-[ k,Vڣۨ[ۿ*d:"2":(a5# UIS`D]]-]=]M]eSW19w[d@>5[J08m^}^^^?wZU-"q@  0<8_M倉(^<޺~`?HI____`FaFDR8MY`^!H >Bx_}ZY%^b&nb'~b(b)V8A\MBP>@_a1a{r-b=b}c9_?eFԑ}\h c1aB>!.Z5#ΆcI%p`P@B`>_̸*@md=zdJeI&`MM>-~ZP #R. ~^WFZ~?eicA@dvNۍ6p`3frV Kc}f?8klnmb@7(gB&dnxef^xxh}c eU e>ecB!ۄإ"fh7` Y<{eǠ Q0cNYH~~Z8@ @~[h@cklC0ljŦDHGǶ,^-n~p J0 xC K N{_umN۞.\ȖXuä n01/ 0^ r;= [dnΐ|?m6ڶD]cl~lmoOM[~KioWBd(8駦Xfbx Dh;m205E%7LeJ" WfHߥPTX; Gq%Uj2/s38sKr"XӬ3 ]-6Zז~`C__5CxtHtI4ivdX%qr*GD }n s`$bBn96?@9^8.]u^ HSpco}Q'uh #@26ep9Xr#^i~g%E`~p#tntEHx] R _AGl v٘u|0_f'vz{}ENz2ا6|{p G hwأEXQXewD@}L_%_Dv:g „ 2l!Ĉ'BDFz7r#Ȑ"7z_>Rl%̘2gҬi&Μ3P BPbP'Җ`@SMj*֬Z]GФ?`ǒ-k|D4IܸrE'(I۹rIJXA3F+dƑ'SX"J[7sܙg@%S3LXDU:ӨgӮݲW{al~ .0bt ',)E:ƻ)F;3mu]lĝv 8 Eq@A=4GHXG :D݁7"xRybĹe +2l$x ^퉚ջqNP 4oV"S-@1zDJA,%+[ I3P{Dhּu@Ȥ%3f$вN9pØ55 A @l4>sVt$Nޑ'4BU[=&iM7y $Pn|@r>Q.,Es "uHwL'hѸG};F_N? gCڭ;жSp.&#/T sW0p=A x͵f<@ڳ6ژhr2i$`{ySUf!i3A~C@a1)!hB;t[1ՀM(&t@0J)s O40m@/N&E!JD–`<փAL&$<{#H'zkb/ uOt hX@n',[PZTX?dHtTR-ᡖ,#7-TBUJ ؙyJ[`Pptv@22Cj [V|q{JeCH~Q -wij'"$r.A[0١uʘǼZ25fNf "`hv @u !A$ɞXBu3!t_usa~Fˠ\BSRR%lS=, ` 0paԓA! 2!?+O5L -5zViipiŔO:"F2$eAE56  z )Uik:fhJS\j_:v%UomNѝeb1h9eR HR4X$(9hkx%jUZaݮd;V!~ PmIhqJ?lPŠlya](wCo3Vq"@w1Qn`e8_ p R rfؾZh#ޏma/H\j{g6 2:ᑀXs"1N87&8H=93썷4n#Yc, Q'͢;)UII^\K);^S<}ݭyFJ?_m}bў{} 5Nm%YU8A@E7$`$ \Lt}A!Zix?<8@t'OX8dZ~0Bdn!v~!A; ޠe>)M0`-GEK#!  "!!!Y``B^Db_:)A?t'~"((")vib-暨؞%!"b❡&.#&\{="], ٢"Y2E//jS0c52B[3nv=#EcL5ҍ9eq:788::㔽I<#c#A‘>z?B"@.$$DAWB#C^d8F$GDVE"FJ1vu$J*b=P$LҋFNaJ$o|^dLLd $Pf NNQfO YP.%*QFe$SVe9%BTn%Z%XPTErKr%ZƟW]XiKrV%]U%^V ?C?ե`z%%b2X#&_CWĥdN&eV&9\\bvXb*Rcj9i&jj&kk&lƦl&m֦m&nn&o&*ir'2'r&r.'s6s>'tFtN'uVu^'vfvn'wvw"d& C>z'z'{{'|Ƨ|z֧}|~yާ'~"( zbxt^Xh`h(zh膊hbŭy`(x&Oڊ6~h5h莖h(ٌZ&>)ΒNYF^)fʔzXf~)ƖW)rGei)iƩ^ͩ)(jXA*&2>*zffV6Q_^*v&f*m*J**դ*Z檯V概w+&.+6vr&EԃN+V^+fktBD*l*2p+b:+앫xJ&Mk7~ ++٫b_++Zhj3.,%,&^ÆNI,F]Ţni,\Ǿj,*l ʢ]4iDI,zZ,>ϢbK-"--6-XF-9@Dԃ7$gFE=b<Ikx­A|!T/0>( 3Beۥ%pVϰzCTA g0D00D< { (0Jn0t0Cx.3,3  .OXCT.X +UBC%`V7ي,07`r pt> A z; ;2 /lx1n\sֵ{o^Vp` 6|q`}u<<JH2`ᕛthѣI6}ncQleׯzngϮfyȰ^Y+z6lٔak~Mvk۹dob^{zٷw׷~/@ˋ? <@|%A ī =OM<0p>eTub $"<.R&,ɪ0,\K0H*2I1\K"|1+L!L-1Q2'ҸT$5-U==L7S}uSa:A YuUYU^uRaĂxL%UH6mQϙmmo"$."hrąWj[wnm\A}M3\{ -8xŐ^!\xz,ؗ]/&wHw *yi'ΰaFP(BdAŝ!4@xj郾iَ VP!|X@@&Ш`yŃ~hTp 2[` {܀9MdUm%`8SV-:`"UO4J Id.K0 4;QP Md҇DL76RŢx$rAS$ ZBb`. B/K 6)zoެf 4<A`ه<>&=eO "3*u )E)찢C ) `ZwP!eU;#` BAw\ 4˯vX!qjB,tbg\T`աalVxZQG*m}3P^^<#X~G! *Q9TЀXP5…QzxHٞ K4Шŏ Vbpxo&a"qN,BQ=,~-I p#E h@uiJi/n G=V W}|i@SW?a؄(D=SBsYGx@RLeggؼs_[XG]ъo Q¾oi@w}jwn{? |}+Z Xjޥʅ&#6Xo>@bBl@bLOP V ڏvo!ElŅB Ê a"@.. ԇ+hX!x`` NfOXl` Da\av/ZX9@ P&;! :@#ha VO0zjlf y/Ɛ w . aVat0ޥ@ VmA6"": q0/F$ BO RPE pᘀMJ6TT% B0 n.v5,B@  ^q3 ӠNıȫ`"b #Z.q#@X \a !2"p(k K2 h O D/R p"a>:,i,hɗ, R+"#-QL)o a mNjDJQO,]LaJU0@l @`'`ԭ * (QU(T\A2 [2P 9Ap0cq`!& (|B"A,,b" * 8(0d.f9P7 `3+;;Lar!mf|q `B6  "rP3 T tv!@9yOpQx߸ 9UAa3@Yf)/q  *0 pAvT >G% yGH1Q :4ҠO0Җs Π$9aTaD<{LhE3G6 ڥ AR? OQx8g@ava9Sڤ2ao+- @fRAѳvVp %IqEV> X UVO)'PWZaR Xy`x3CCA\Z [SEն ALN h.< :4WG@mdsʲ9T M `Eܱ4)tUVn!f.'.Fd5FVP!%1A 7 \v hid bpSXaƴg27*i6"iqjILjsW!IMKnJmﴀ,agVn()* <颂J.$]C֍7w UL4#jOroDvADGsTpY> 8 ar(2T8dŦPSmMXV/Ĵ W$yᢎMc8#c X j`R\'qe` qbA7˓]fcja4 Ua֌yHS\bWN阄8Q9jYG@ P rSq4 RK5F?YILPA<1EY ܸxřuM (,!`wSR!묧 3.bZgzXzf>Z{qڡEu` |@Hb*ڬ<ة穦?R Kܘ˯[(@9PzbP}ZK $XB C;AC[G)8@iV?۵*0 j۶os04A::QzZ}۬╹;j[^{2H˴nZz{zuٻY׹뛦[7[o ܾ \5m>Cp^yC|苾^C^Kgˣꯞ&c^a_dϞ^<^Dў;'߱?<Y ##e7j2_0*C?N<DW_\RYA?kHfsUp_?A|.C; *y=??`Tp!ToBV`'&0 RT:`@!Zw;=*B*A!o<;0… :|1ĉ+Z1ƍ;z譞ȑ$K<2ʑ8`6ހ^i Y!ZZ;(BbP N>;P֌taرd˚=6-Ő+ۺ}{g !E2/t+rϼ5IdϐMXփ\X OY уxI|2j l52I썠0ɴ,h0+t%hT A P BzjRp@-.xdp4, & &Ϻ>|?d 3$D Hp@idjC(E :"t0,[KdA> @@'Gv}'z X wrMwDl7iZԙ?wIs `! `v7'S s0<D.Oddc~`uV<.UӃp9&NC T6C&mu%XVN LKVRD`۠?hU96@@R0mMDAXC! xe0lPpN$g) aaY /,Mx/WD6C LqK@ <` a: D[d(Jqd[ޮQfOxnƶr$ )HaN!MA"$yC (A.C!U%@qQ + xaAd cy> z  &' ?z .*pPdܑ  [_Drz%Lx FPR*08g:b)/X(!(&DXa! >C⸷5񫖕`ߖ Pz$U >$BQ=& eE*t,m)ӶT"C &aDzJCi`&aN)C["wzd 8=8`A dAQC uY~)TeKNZ`cU \KC DV,H*t2//}U,èxRYQaK@)5AgYPu Qa*]B`WhJA0 +dV)1g=? \%<~mJi 4)B 0bԄDH:~yq41Ir1r4+A()C3TLk,ͯ hQA"B7P Q4&Es{ZoJh"#O>9b.) 蠭aB\\zrT5+GSJxcQΉ Ӂ@}*i \Xċ*PghKA kġCdЮ@wm7[洰NPPwިD9`axdpQ0x\ʲb.u" d զdgIFlU~%5OSQQ B P 95סDÀX@bsD68.e ã;%PS*m`2d8%Jr=\Ѩq\9d( 0VCrQJu@B /h siTMɻwn(Q6}r>X!6 /r|޼\st; 0p+wpTJ>ZW#rx;[WrbVv0j!]C"#xjRu@ߣ-uPx?m ^7s !]Y20`bҡ!PUEE $8)%QO(I( ?H`s!H+# 0xBD( qBwkm(I$2xxr+(ƁxEXBQpA5 梅*Ly$)g|(H_hz%9i@BFyagL%xfqʸiGX_Hɨ(cA8٨ȍQh爎8(+A(HaŽXȏqi(_  ) ɐ#qRY)#I%Yi+ɒ-f/I5i 1ɓ=? A)CIEiG:I9Q @ Q)SIUiWY[ɕ]_ a)cIeigikɖmo q)sI] I)K*]Ky+0 [+u*rPנU@de{eP@**ʐ}"G{dAD@s D #ZZR ˔`KB+P FR{1u`_[[`+U 0 [0 ; `p Z+! ,      "(!%"*##$&&*&(-**,%+3-.2,15,282345.37=59?:#:,:-:2;;<;1;3=3=5=$>2=?C@u@ctCi$m^P̍8cLjC8DC Cҹ}Gb(  } 7 @O0}M&X@W"=+'A}NJ@@t ̰[J3" Y)B Ե'Mh^ }Rp0 K@dE\[n! lHDyUšp,PjkpؔSF,eq&?T:*Nc{6^iBy%'VP6TS^vXWd9%NlBPگȄ(\HqD`)5P޳#&9 F|_5W6oZ n'6Fl"`RM=8"?)U9H{)&7]@$\O| _@ k0p Ѹj7)` <1W%ZW{f`\xU漲2xW$sm8P+MUqRH7U]stuNPɉ!B55(EA(C.W%(ƭa p8j%>5ܖ2IpP-4Vfye XtRV]_(>6akdgeK>)$neV~E WрtkHgkY#v65[c`ʤ:2ʤ45:"hIA0#p5mǂ@˄qb\-6@Xp]7#sej&xwpoXZ1beMa cZNhse/+ GZD(לZ6c! K Q  P.׽rq_js<8Pzv*'-0nbOeC<(1S$0l3^oNp޸4:dѫ|yz1XlvЀ~ /,fO֜z*zH/蕫)\8/c\/ vo]4rQx x@YOsOݒI%f= O@7 jVR1#{z}':aY _C/ZoR raKEs^3dFVy]7m"`+V}&xB$S!Wx[Qd2VzC>[u3bkFaX``r7+v `kb6'%w6`g 0 trjx `IhBOdnv.@S`RT >Vp=*HV@0Pk*PӐp SjPwU>t,Y> bfF #6U>+fD\W0"DyJdxw$DpfR> ,&P> H-c)4)H)vI>_s(Wa&Gq|A@(5sZ,Pk#~vB<)a)6@12Ėt)86> 0LQ2 q @ʠ vI0\1 @k.WV1@R;PVWF0Hȹ)ytwW6*\V;hpY+@*4LSxKhW@%*bO@kQpU.D2xpd@4 )`(a:cڠ vpB1B#^ b.UvE2 2; भ8+0^0 MJgd>=Kڤp ХF_:6YF'R A2P%- 8 cn{z%Ї2Q.C.*1!/Eq# 3\H{Z)sy:o2:ysen'Y&i\㒍GV:0Mn: @ N)*Wa0sdYC׬Zk0IUj֒ >:1z2Ц亮񱫠2:Zzگ;[{JAѰ;[{K` ";$[&{(*,\b!۲2;4[6{8:K/[1@B;D[F=GL۴NPmq^R{XZ\T ]b;d[fk]I;V{l۶np_q[v{xz1J~z˷j+{XK+i۸{;gѹ񹤛k;y뺎ak;F Kț ƻ{ͫ;؛ڻ՛׻݋[P8P^ev{[q`1 >p&gp:+ =)kB k?>$Uus0eb'\xr\h|[{g& 8|p,2wq%=%Dk%l LOc8|ŁWf&A\lQt.>.GFD%[ 71Z-]D*D3yZZ6`B0A+SJ&PN`eĄ=/`Bpr?F()Oh\rN@1`b=p] d$=]'eAv$ӖVpT>A)p XOVe&\MX3 V Pq.DEP NR+ʼn |N@ָSA,0b<D0Ub 5A}'0 S'N c(6)wBt1`'OHN+@IT\sr`XW`0 UuPA.)60 $)2V7$S~ӰLbV|ڀ?SROD o,MD]FMDXED_Oq"d]8~TnI@eI'U1mJE1a\Nc.E^aD}B p(|[-S0f҂dd)_ɗlD8ERZ^3CNm*Y'bA8y&,HF/C۳8>M=Ҙs6`+pSgj',B kvYO8Eh.Dd^1Q GbS+@;,( or* w>sVEj4`䯒\O>D0eZĚ`KViV N xf{4㤎;>=.H -Y=vuI,SU_ @].x U>vYSS8EvY\1QZP5U \SSsqڂsN'r M$oVm by+\]m:uFђw_\uWOYC|AOXo.}bJtW"3T~d]1Js~(5>M#5pM~_^AFE'ˍ-=\ۓ?\@#'oen2QWnSEp5uj4?cŁN`llϲf(t] [QG5TyoFe[A?PSN`oSzjU&\'/]!C} b.[!h 8rq{'' UYzD\2 [G52~ASg"VW'n] 1&vmP_!0vfOe.j|))qqb$NoG2hMϠAss48p8П<80?(s诞BN{`49W3\Kg a!M@  ș3ALyAX$H$Q]y_&\aĉ/fqzM\e̙5o,0qB2>` z$x!Ce$^̠' :rZĀ)aPيH5>`)9݅{S 4 9!V «0 FܛTHPɡ\(ZM煯8X䃧884: XqFkFsqG 3 23 2gs98  nxR/.\r+^ qk&% *,u$g<: $3sP9,uS6rRL3tSN;uT͊1 tb֨O 3XkV\suW^ T`5DRձ} .p2cM h{v[n~ v\!-')z zbu{x` W2r\va#xUbxc;cCbKXdSVye[Δ/>ekfk9gzhwy\VzivFijDXjkN9jEMZlV{mn.\{n/u{o6rk=o 7|/pwl+#|WtG}㯼ߗ~xox` 5 d`-Ё < VP{AP`FxB^ ]Bps-a m-J7asCЇC$⦀8!QKD&FQkd8E,fQ0N|E0⅋eb1rgd#(5scxGkU(ҏNd';NxShg=yy'>~ h=:ςLh;І?'ZQNT::я(uV1M2f4H?>~tR3iMmzS   JI:1F%c?YTKejS94?XP3T(E=UUcc?JxQjծUsk]ejVƪjm^Vi^ka {XS+L0p%lb-{Y̊u=mcJN5%mikZ2}lC[YV5$jǮ^KdZWͣmU[V/EdK\Fw,r ܼ0Wp-9G1y{,t{YպmmKcz^R6&|Rrwe4.a;\bo2Gzկ 4 f1Y[DFn5c?m̆,1  |(=,헎6遊\!$lXJ}_xxcT4!i{ę \/(B\FhΎ˼P9\j8-02S|S  B@9 @) |! ؤk5Nܗ7#v32 FEpE0ڊR50%~]A V`:6)Pcx8h/$9nV&nBZ75_]as]h ?д"sd{x &Ud oP/& x!Io=$ jȱ˜5lJpT.f52!hȔ执KqiovF R\8 r1 ' $165hޞ'܂)LADʠ 4FXZ =|zI#H@  %)j8Ը  `d7hW{v[In;mC"H4L[us2 y ~ђ5 @!rb){Kkت1ع6ȇ#%xnr؊cX:ac`> \ : ( J [z eІ\8踆86! 'DІfpF  Z6؊z`zӆqJ@2>z@w:{D{X 8{>ۍ\ AXXBW,$"LꋍƳqxA)t` fi C+A[5 h0CG[@D7=ԫ1@|uSI@kD>JCjhchmHEA4E3WlHBr3Õ-m=_ `<4e4Fdw(wз9/zHC۲nI Y>nMoHPY(8Os*)ZU؛-/bZ{ZΙК6V.آ"ċOZڜ[=8 X[m-E[;ܼ-\ǽ5=}\M5u\]0YՖϭ]=KI]Y$]Az]ݠ]48-9EU =c4p!(O8cS?ݒޜ!BRXCh_}____]Rз^c p>^-`Ӑ8%_:2_~y ` ` ```;hNZ_ =r ==ڀa>8q`<@_ED".b#>b$Nb%^b&^CFH1BeHa^8 PV^vK&~c88F:`bu25cAdA~B.d2BB>D;Y^pHdKdLdMdNd%F9:b:7;B8dW~ըW<4GMc`f%9p)Rv=Y3y dh6WAވ25[~d ucagqF'Κdk]0dj@0Vh[eɇzqp~btufXCgec۰~? h?8_<]SVރ-ayh掐s~vޏi8R8iNi]iB@8ޛi&d]tFcnێ_E Hi>b6@Vwu0~6B<ޜjhxkH`h;QV5+i@gfEP8ǎlX f@Xmfͅ]vGe_EkG@6`%j\T.&0T )UЈdžlB^0N 9I%ncоLD0JN֞]E^%[ Wf8E0FmվnaFD`{qQ¾i^  O1Ήx f5`}E|Koog^~TD`vp~ZU<-Qs:u]hn u۸UFI㮆EeD^hdqq}W(o;jd],9.q/r&F50f*L67)U\02K30V0dPV+@Wc-B/C?JFҞuZ0/bF_GHO^A\[^l3bp0h0t~hCVX/bCvpwqw\?2o;Gg56[`0vlppL2@CdSGjCfE`AHx_xg2G`&uvcrp^zρ3.$0䍗r]T崙#s9VL~g!^N)޹|?m]y@2:Pꓟ؊Z&ܖ盙6DGPEBb~6l`6SwkѤwWwGܬy|@sW;`BV\OVn{unwppvWzA6hmgO{+.mGbw!!n2h3}B"@vV˄q8}L8{Cxmz_[/ܣ. NgDzgnc0C7|;+h „ 2l!Ĉ*xp\7r#ȐY/_zVl%̘2gҬi&Np`AB PJ9qwQ<80 ҥZrufzW,ڴjײ-Gҭ;7?J ["vG{2nْERl㸒'S~3i jzHC=@T H5ܺ[Dd‡WלG3b'ATxysH !8ƒO|<-nV=M=@=@ۻ x-{l ~xMfy9D$reG!uC'%3u]"j$ )P7Q{xNTP}Q`n; `8$I`Y-dPȅxDcKuU#h!eBC/Ƹfe3f{Jy`SxHVC Gf5'1 BO;P%]~xCZ2%`:d*xh&igwzVP~CȪ*Z O>)]-rO,bH]2#z$,Шz+_ꫩ*?P[.1:Ѷ Q?`svQc!u!`׾[Vztֻ1Sppi|pT|M}.d1J1O?&WvQۆ8Yc6 2 Ul1w1QT Ku 9eQGG27_!m@%4l@ցLjmL ^ӕB]6 8pRdO.kZUxr⼞ Qc`beD{J6/|s9rw=~{-=874neD;sOv@pCJu\ҷB+a됀/;v;ֳ\'4 iOjأԶg9J}吰X 3;D`W2[H1Tq@y@@x `!IxK-HuC?xv!w 6[Lda t* cMy@tFV "jDڈ#%2/A;Xqq(R0baqPÐ2;cKNyd|?葁y3Dyrm^bלآ<&2YDh. a$ӝdte(4J֕*/PK:FώX9c!(JoHfĤT1~^"ЁŽ#Yb>lh!=SU')9`l!ȀX8 (?˨&F4'׍̈́ͷJqL9Gx4wos]uC򫄂U)uNҗ_f'`=\G pt~L_!A1+?ۍ@ h(@T(h& YB+X}2$TYA 2GYkA%VIKK[<KlHqzwD]푬1NNuAdU`f]M^DcG'0}WsE]=>_5>+vj'00@JqS~7}9yxr;9 cNY6p]Oݦ*mT3{:xANK1u:)OU"$c##l{nvDvG fQQjMc~rV8?5 T%|#hۗh#2sѼCdÇ-Z._TA ĺ 0yH|}wlX0u7/OAAiIOŵ\ <k=c~v_?N_[`ju [\ y IB`GXX vEA< ,TC-8A9L%M C8 "P >"!I!!E\p!G )aTALC<@z5E@\g|!Ba>"$'~"((")&LL!R":$K?X%,z*E"#2&2.#363 cZ!R/2̠N]6 4J?#::#;;o#a+f56~cN >v%&r$qdg$P~E0N'$bP6%"TR6S:%V T Tv%b=^eVlDz%ZMURX[YdZe̬e6[%%Nҥ_X"^%a[M_&e( fa>I*&eNc`!%aKB&gnXdeE_=Tmfgf}{keaf'j&@Jkfx0f5&n'Nd&rr%i˕E>|BtzE?&'vr&pDuCX0x'yg iQ'AUvgZoPw:}'~~''((&.(6h)|B'`QI2T^(fn(v~((((2=|D>Ԩ(樎(=)6*NFR):)htg0ŗtii)) mtީMnOB|)㟊iFܞ&j)ͧ>*F09^*fP*Y~*cp*qy*j**b*֪JZ*je+>j6f6&粦=>+VIFk Mn+!֏v+}+++ka༫+2櫿뤎R(,&.,6FDԃN,V^,fBDh2p,>bȎ, &F2qll'R ,&_,8j Nb"m-Ӛ.m,V-MR Nvqz2Mؖm)۪-Ť-܂۲֭^ѭކYfI-6mn⾗z 6jJna=nDnC΅bD[dcLLF%'*1(4M=nb.hB1L@:9EsL= (98 p ?q@d.@.4 MCEiLB.T B$LLA Z.٦ˍCLIodaNd=3DY)D=$@'LxW=%zZ,AE8It`5{s( 'rev2|rIbA'C0432uE# T1'F&w/;6B7Ć}Wt! @K[oo82\1Fs @6PJBAF<1F?@GSشx |x@4Q&A;͂NB# 1UCfB*s IOW3uQztY"'?(5'D.61V6g2BFp >' 851CYOZgb3Ć1=T wqE7 $_@5|tZohЙAZV7uA6Dz3hIX Bm38D26Bpd14shG3,˷m= @L$?wW>y, SrBsS@(\q7 0,#,h$q%WA-Z{3m 2 t?OTB%L!NA!@eDB _YNU:@o-'(#18/hPC5ziRK*cq\=SVzkVS=E8ecEMZo 1 ! 8i '|hpWɓ)W|sf>޸icu5kfPb .½}c "{ x p _$kO˃B/Lp8g=` BswPϖj\*<#z1l Μ.ܨCEM@RBEbDim:jRb mڂ F(w/Fzf<,Z)LdK-<4LL\8圓Φ$2<s7@ϡ D]CSHSEF-Dm4N=MTR,TU]5@Q9cXeNSm͊RZgݕY]`Wn=\*vf5XfZ%YS=Jjֲh\6m,v5x}+lэ:_ocWW=`[&e⌧8R'S7FUƁÇʒc|Ivf_gY(>*H 9}OX0A2@9p9QH!`r@;M7nԃ8 L~6(T#@|@HPc\hŢ3_,TJȏF&Dy @s@0 H5X"BPyȂ01)x L0dH3b|[C>b`Z1rEA"-,4Ԋw17fCK@^'iVLl`o9J q(4YMk^4(K\y lX=v>KdQ?J`0 6U(Ȁ` 2.@VP$Pl8ũ.18EU,xmE0?̓yr 2 ,6^&,,* 0(~, 0f,׈*I}CJػFA )So\U!HVy#\b r i$"dr2\@!`E BP][C Fi ,<:cׄ4jmߛ9. %ApU##Ez 5t :-kB32^3$щ&{"?`F58$"p!1e!"0q @O P"P"Y6.jlp'b$cj`'(:(ilRplv'2 )71>0 0**&-.in(.b,m#lpEl+lPgoprj&njaUA#n f@-)GL L0 WYa S!T_Oao1>v`FpppX49I.I5faA`' O7 ~7C#D$nPl&6"(3X<(vd>8M";H'?D]D&Er!S5M) tt 1FORI-# i)+= B.!r!8 ZSK&TcfTWTM5pF $0.0pu \dt~5P#rn#bKP(.4[2@;#SozEa( a(MV/} HP#D!zXlV9!**,R(fa ((6dc0.WA`8q>׵d7л0/"Q6ff1FO(H B .(FSzaP Ub{Ȁ=Do([Ď 0Q)_NlYRAXs֞2u>C:ad8pO+'FjA^AN X^]4Cfz3`l@6 h"ai=ߡ4Onk 5mȄFg  `yא״a A^NK ANs_ f<@ &" hbLY%O &.ҡuN;VR_K8+FRLߍ 9Mtj_^Ư0l}ye.4'4(湔4-ֹT!" >  `!¡7:mv $)y VSU'l7`A @aЖWP$v(hڙsy.j~5F+G(!)x--<4Z0Vkx_ǚfj5 @fڭ~i#&zf߁aȁ#a@gq3QMˮz-;hX1= *av{۷=!j㥱 j-[_H=z NJbaKƮ[&`P9|{˛ L DV曾۾﻾mJ7 w[_;\*⏮o2 “T/-Ý7|?ܵ'1<O<=!< _F7eoܗ]OKxg;xȏmQ|ȟ<9rʯ}'eɿYAԕBS08C~P<~t]OS3[dQg $Es^-u[ŃQ蓾{i#f>ꑻ^ǵOǞ>[Y^ߞ` ^o^%fT c _%/e&+'_O71t8DChWSKJct\Ah_os_w{e'߲_xy5&ǧ??+_?`߀gFe[f*ڟX*_Ÿ <0… :|1ĉ+Z1ƍ2ȑ$K< RǕ,[| 3̙4kڼ3Ν<#zD 4P*{ ǜ@mNACx][f=F(ѱ9#6ڵl9 7nɢ'Qf0*00-N@aBz|f?s<>:ηr[˥K%( 9r8 O j|qD" mhZDp>Y>i %̜20p+4@sƭ?4p`d3/Z<ԓ>($04@pAve@NpA].cw _# Hp]2?\A!/@$pEm̰ǩK9E> n"p`@`@}W=,5={ HK;CB>dpӀ< D*\tT]$c9{Ď"ecS Qr|/ Rρc'ұ5 $i"_xqbɭq@ȁ*1J@~G9dIxT!:3 ;WOTbK$ QD煷YMt* Dk2ș@19~`F.#A b0;AA0n.Y"9աJzʠE CS Jh ?o NBK,fM g$T3vc i(Tc*,'K( [/n f%Z:RB$$uIf\kh X%reL(լM r ||[-[rk.)bY@܃坞7\'+x&U}<,^)Zi0#8.i0#❢*%f."cӜ.z/XsKjN)dIcÁ:Z8O RwB4Q) P`.E<=ŝ)]\ԊR4_:տDk%< 6$Q41yraxI_|tyA*O'۷_~;.O z˶q0Db2@b`4,.0 j˔[Ѿ\}_9 İ߄EPX`  E` 2{9~69}> zm^P@ H+aw764gqR`ec5dBspBu .~)/ڇW)gA1q#UHJIv7c()rTQJ2/qbzE' d"S~%aqv|uh-!|7ŇbD!cNC[TQb!'!fQq{hgbxBa"|[1''/2'/R)(*v"x8,ȋxWNXF)O)('(GVyxȍz8A1~ K bXRWӊюV04ݨh(+ ;@ p3 X@e7 6{6/uɏ&cQUA&e#I+ّ9Y, 1)3I.9!Y;ɓ=?8e@IEiGY7)胔MO vKQiWYi-S:_ a)nArAcik \)^ɖq)sٔngIy{ivxɗ)I~Xɘ阏 )II=r 陟 )Iiɚ隯 )Iiɛ雿tb a ɩɜ )Ii׉٩ɝ )Ii牞驞s )Iiɟ **A ʠ  *Jjjʡ #J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUjWY[ʥ]_ a*cJejgi:mo q*sJujy r *Jjqz {ꨏ T^ʩ꩟کR T^zW*Z *\p򰪻ʫMq \pzV`ĊɊˊʬͪ̚W*jҊګ C:Z*Vךꪮڬۺ;:JJ+K+˭޺ ˰0گ+{ ۰):Kz*{ 1+)z\-;:ZzR){,+;IH$78 n^n`';V˲.Kk[ EP;L%|"z>9 XZ [b;R \ ;HK¶ O(6P Q8 /PaT{kqF JTQ@T Q [[ Kjr.I$kw\74PEO~&-w 1 @ ([;PTŐ  [ P k"K\! ,      "(!!!$"+##$&&*&)-**,$+3-.2-15-182345.37=8/59=6:B:#:,:-:2;;<;3=1=2=5=$=?C@;@=A;B=CCDFFIF-G2EILJKKMKGK4NNQOKNQURIR7SSUVWZ[[]^_b_]_Zb8bDccdc:d.d4dnFn3n6nqtrrtsh:tt,uuyvsv3sxwvy|yB3zzz|@{J{|K<~}~~_e3}Dx@I _řmK% !ފM+q3ԛeZ,vkr cqdcթ̧yT0H0ԓߜ%=y[PC$ x5 l #%H eC%yP;:nzL@̀l,eDD l֤M2 AT!GA[w=4acNyj4q5OR7NX,P" 3,+.`ÃMyR2yA'=KxC.˲8 @Su' &LŧO~ML DdB4= \8X0 2DU ~J 8 xG٢DBhg(ՏW1@`C0V2NTpi-R.2P <%K--V@Cd ~T€0 K@l`\xO@9XT% WB8@-@;2  x#,P Pb5+[8mO k9Z]4> cVC€ Ly"(A Nkd2@#X],*IH3  BPb łevCWAAc BW6lU°q]W(ARWтOf `< Sz +G[$ #]r$LX8Hjm)lě]%i!TѸ< PǗaO9]TyOu`Hh6X`+x`< J١Zџ0S ` +VӸLF sت E &T|̘4dՁOVZcJ*+?oBĀD M6 k>@R< [ pPD5JJy?p,hJ*{kTGVA)LCW7KHŒvぉZ?v2@uR `*VBOZ&'xʀKc? 43Kh_n {1te|+f0L2KnFX& 8Y ^3 z_{I06QM-mԡaFn%ܘFl=qSc()6wV݂Xc6umځ&l `欸ϑ뗋 pBYNHp4؀,x`ؐW@F2WJ3F3eԱlhme(CƝ촑t#+$SKַ>>*cP1'iRznj1! z&D |]U.|;&^xNIl2C$Y 2[ ]7V4wލ$PXϺJ;̰b1\2r 8PG8}hOtuk٪.p(NPTHDֵ9-NUn. TY/da~ őyNY @WAXLۜN)?uYʛe'r6a WN׈cL\d8'lEux^`V;~ (-9(˫f?ͤ׌r) 83'(>6og)#(a60a{B ztarh)MauV~C]V1p"+8s.tewzw+I0>xA7 ~04mP2|%Y^ sy6e@3pqXY fFm|5+`g9Vb)y60H;-t2\gn[)ssN%+\_4pq@VH3,H&68[ X.`SPZG.D(4ˀ%( )SD7$]VXY]4 M ؐK PU a +kuւB Bc`DCtէSaP A0+ ]E@ FyTbuV,;Ep0%P @B ^5G]>hB@ 55xF1eFEv9\:-Kdyk-Se@l%+UCP TiXP|>%/M t$P&);>+r7cDtcvl'HI4h,H畅> $?cJ)()H)Xv#oh, %`GgR(7W>Sr0Xy6(ALBJ94 t^.tLR[u30! ɐ X-^a @Pl5WQ0pR@VZؠH'*@x:6+"N`JEXeK@TKV`%m+0Op-S70Y,B͈I3E;d8; c؀ {eh׸aF#a Ðeb3% W(cɀ  A:Eu=zT% 8sPs?R@*ɀj Z92@ >ڤ># $d:3b3$(M:=&2S/CpjhB#?4?3%0Cd2ʦ(GK7ZFv&z.I:gQnU\SѩRalXx. @E!BvYSȊlIz7 B@Zᦿrڭѫ2:Zz蚮꺮ڮ:ZzNѢ;[{ kVڬ ;[{۱a";$[&{(*k_!02;4[6-{u<۳>@B:HJL۴ [ R;T[V{eX۵^` .+f{hjdkprm{s{xzu{K}K\;Qq;+[۹; [+ۺ;k[뱷;ěʻ}a;D{=eIwaCq! B&j(>U$& S>B %Q;{뼊jAsh1p229e|r·h5+5+L(̴qˢ5؂/^d{5'>1:7%Jl당C<qr`_! k<ًT wqV@C8pCCN@p7l9/7~PY[&}c*[S@e ǟ a`G HƮ]IH/4Cƞc~_B3lua@_! aɷS $)Iл,+-/QGt5T?$FUA`C #bM%B I>B--D$C^tøR?u^1>2BҀ}FK/)B  Lt`LS?'0&E4F3cB^t_N>+%BQ<B ͜>̇g'P\M]C )Ԁv.t-^`2@ tQ@:^'d 8Ќ@@Jb )PWEV Qć9la@ T@'FMc .F7) IDt2'BN-Ia}X3%HUgiW-54;@ ')c7tS"}MXW, l ƃt-UJ' ,:=4[flBpMZPtRd#C]=$kMA(r xJ3\O%3`u- (P'b7 P$l) aٗWdd=vR z~\?#7dԩkA=Ue'fz0CM.>ƭ]]R,;9A=2N5D^0GcZD=EhEJ:jƂ&LsbT0,@@x%n r*O8 WeU8c<䠭D^_l'ROV.EQE^8A#Z`/'Y1d@eֲl9rU5P\S^5:SUSԀQ=(9B)8!D6 mB}vKў:ѽh,z*S4aX-}RtY)yC&$>&XP (oN~n2I^N&`:'BR]Q^9Wj_JbFH'½$U0S`?A0>.pS@Y6 ^(yU΄Z ;QH'hU\A#bH`?M OfuVt4^@ YG5TmF+dZa=Q :@7Vh@$w Y*E^*9" YBH 8Ov%z@'m'%}4]ҿ-4t.Ȣ, Zˀrr_e_o p_jF)+ֲR* )v%t'@NtSH2(PH =$L+xvb)gv 0 -\XN{ < x0?mp8`Å 8@iUR @Pp!1, 9>L ('F"x-arLZAO$[Yiծe[qΥ[]y7z&\aĉgu  gp@ @H2 [,[;1 CMq,L"3\ibdf<@@xF4QkdcF8QscxGdRe/}K`S$f1yLd&Sdf3LhWq$(I~tf7pṠ7y{SDg;ӹNu~e@IPщ~%lȥ&J~Ñ#%iIMzRٌh\2Zр.XGQC*iO}SՌ,(L&ӷ`N!TFUS1˨1RY洪c%kY:ҫf-Hj择N=k]zWZEmʖ tka {X}_iUle-kzեc<>%miYųmjY vmmmF.rY` +ي%hsΫf-ӂ?}#C.:BZ5q\vect(3WDI]8N5v{ߺzw F 3.a@\B^cY]zhݸw!o_ƥE\U"xa]S\nϱpp6h ?l ADgq㏢]8c?wOAܖd1i+ B`0M\8gf$x.nX,߅6!p;wXqalAWApšzhJG"&PQ`La@ڲ|~-a6[8 *pE}f !ձ<b XJaQܹhpn'?x?QOb jr][G0 Y~-qq ڄ hJ2>g-Vmiۍ@h]ScY`[;8%lQ CՆXM RږPpӇP4P H9xK*뵴xJmT.*\ @E6JS} ,l*thK\I1dTtL@hġpwރce  $ GcU+[0@jT{]}ZZ4ڱw?A3%%4ie]Aw*P|$Kĉ5Thq p""4$K3mHl\BpHlXNz d,ax8x88azhiD +`ܿ_ X(?x؁0؂0j#;5@q$Q+IطvlD#PGMDU=[JłJjh1l(;]󇼻 ɏµ{F+ɓB(HG !+߱;l#6pS1/rH D7dąxxz` lְ%MJh1XEߒ8X@1D (P BamÌ;, 6ä5"66G. ;@w).,Rk:baB\(qpP5:Hj \M r H2ˮk8jp FÜFK̕@0l4@Gw`62H h(( 7\a8pӆ 89E$P0=#U823Mh0E@I' $ %0lȃ2d`?K6xȅ`6!= tQ;-̇Ä?LpQ؄ͤ( W5@PX `z'0Mq-0@H01\":? 6q@Y5XH nڨEDaaaa CF``eexFa)NaPl!^ ^K .c3>3>:#_A]O!Xab= >n]ep cZfk! v]^6Y_ xbFfdF*~\UB>Cjf|!ߨ fJhfsf@gcxah|L|YC@Zʕگm܅(n 8a^hV+Ƅ;h6c;@f]ޅ80@h^xhi1#^EaIi68^ݟ㛠(hNiVi ky[gjngghٜ0ihЌ'b&&>IPg>(3b@HjIPk|Dpvݮ#lI}`;̰n AmuflyDlmk&rC]ۯ^^I{mˆ<(o.`h]ܬ~XCpEmgD@F릦:t]逍 + O, a4>>I+lokK MmY]Pd.סMI̓^@<1`ճ%Yv60Xn7]A>o3oElD]ec(oוe>& Xk̽rrn/a0aDX\.:Ho j0xiXו]+Nh=^rivnq^dlXuYlYvNtcrt%3i.h0:rvvnCaBa[aCvmvnZkDvF\bb pBTcuO RCeEU@x/x71eHUjsW\t/H `wvw.H@Q}7YSƇxL~gF&37Tszy0jhx֒?veg ;z=/]|HPufdHPE/Epz/s.u xf;36xߍjC0E&m7`}]w [|3z@x*_Q~\gY7c|IC0/w/Ezw˿xFfO`~|8>Pp7tIp<~,h „ 2l!Ĉ I48ƌ7r#Ȍ*×oT=|*Wl%̘2gҬifLN8HP0#$Λa S 4)֬Zrٯި~$Qk,ڴj dRrҍш_Q$n]IitoĊ-KbȒ'wG$ʮ7s̒ PG+Ĩ痠)DSӮmNbI:f7t$0]|!~h\D"(":sDȔǓh"攷׳SҰ̾MP `S=֔n J2W]\r89d2tHu] %.t D╷byI1ʘS='aWN觟N8#8&*Ib>!a] >\$Pha*C*xd.RyzERHZCFߞy՛v$ob`> $s݈ UB!}桝~ghjel zmKA|Qag!kO 0zo!E"P"de]@rWJZ :* UjZڏ{ E Se{-&}+"Qb<`W:ֶrsλRt0hPT{Kuڞ@/ѽl>)%$n|C7vpoü@<3 ŬP<5L2T@_T2DK'J ;  \J{1G7Y:=x=PK*ى#_ 8PRew-$ Tx²⺢ڀ[R\. FsJ7[!~{ ۹@/Z3!#9~Pw;vuzuq +;E[BW2AxxDGXUF6pmTD40kQ P|Ţ`N'l` Wُ.æҏsჰ$Hh8iM [HqIR2Ĭ=@6 л|02Z(*G:3Vv߈΃FI(0ȇ"ev41Mʌ!照=yH\ RPTZ( M0l2d֣\\c (KS"H/ ;Bώh УPYzsWL~8)!Ї@GN8)}z*<Yz*N7b0;>OMV2 yB#K'EӏvbC آ zX&EmDsj(^tE#AFi&l8TpĀuY$h:zzlPR>A3bj\HLK'ZU\EY+2ݱN`'`C1di'#[OK:W8@3+fkרb&@$.킗D,e*&TVP Ȣ )H-/ T`8[`=nCNЄq+MCo ]H\o?P4 E2xPaŧзpgW/mpKa}c..3*d2Ň [ ;> kP0&=2XXl"l% 1rԐ\ѫ@wavo0JV"R1ieWK3l9{vHnuh 㴉lpz4 ԑ'(H=`<Pj1x'@a=#M $`QM`kuvTꍴwV6 Uyz)'f fq -bm_ьP-F--n!AlWfMa'̓f ǕfC toMm+# E>9c$C=14jۧ+ke| )}}3Nmuzɼ3|]aΣqtAP z`Db#QfDYQVwq#Q>Ab;ZI*0no#Ϟ+w ;>!'wfc0`=/`$[&GILb[0ԹK? ? = PU< \U7 ȁ^ZܰY%G\>G [ nA^,`4 })@\ m`?]P$ U nDFŞ C3쀅90;9A9zMN)aI|, "HBġܼ!֡a\E3 &R 6bVAH<L-@`@"gAB"A ("))"*"!>1 b`af:$Jd?Z-+E`"43>#4F4N#56c%Yުb b1 t76^F;;#<ƣ<#;_:XEqQDa9&_fhbApZ=cx b7dJDABV-~C!V!rJ6??$KzlLrEJ"$$+RP.PƤQF% M-UjOSBSFTvP^X,VNW帀&[QY Y%] [[edde]T# %a _V_b]bda>fE%bVf4&OBfZ\6! #WZhXXtf&yC~&Lh&C&mdjk(%lfAbfF֦p&e}ͅo&gWdps:j"kC>¾('v`svF Ng?t9|q'zzuB+ny|F(''((&.(6>(F({D}&n(v~(((((ƨSq'~D>䨎((i=.")F>^Vb)N)u^((Řċ)s酰i) yNgIf'|) N*H&HB>*VJL٤^*vH٦~*E.ب*&DBת**dͪ*:*"fN+vjjK&>+a.k)5+V*^+vk2fk m+Nڏ+"+5ܫ+NB*zRk(6>,FN,Ŷh|FD=Tn,v~,ȒŦHfeɢ,,x6!6'BJ}jk6,_Άl,Ѳ^ڏцRiVF=vNf-aךN׆b:M٦%ܺv -ܢڭXRI..6:6.1UJJ^.E)nX.C^Z4P4p&*n(F 4:r *< 4F4 20P t %\ ጃDbgobBD=T.U,,ȀHBCAtpDh/7. A>oSP/f"D^l&oBhXv %T0D'!t^DK0pCpL. U`)0P B ;DV+S WJD= oC`\2SU2Dp +M+qBLC`bY'v-q:4A` 2? X% y"B;ʃcq< 0QKu 8П6[PR@a0@@2AyiRK6ujTS&r\=[vlX[]EhdkeZM " ! @ᘋß`4 @?3 bhsf͛9w4JWGK7NZieڙt*ċP0x([ANhD yxBɆb\H!v\U)Xwzf#\6@>v !u\AJ*$¯X#Ax )y;s$3\]|1jmD4lzCGR!g60)r1FE,q<a12Bh 6|N8|j8´,S\p q_`fy"A * rE߁K@(y"ps!2䠺MO U_bx*4ƅR gH$)|Z89QCH  zP P@ ʰQ(!0c@4P H2[ w<9+PzА Ն2O=Ђϕ#!0dq[䢄^(գ)a_ 5NO8 LTFk#ʆRD4G lE!y3k\aeR1to>A@c0PhMrs2@J\\6&e0# H`FϘ^\,g^ "@.s# $@k UBBH8)NW]«ԹNx "IO{1Q!@1đ\i>PZ TQG;3X)]4xu@oi7T{hScҒ{LX t:ZWxP9uPmTKw˅gQFRT4?գ/=J9 \ 2e,qRt `BXC \b{1m3$QNYI @4*Ѓϭ 8-E.ŵe JI4`F& YbՌi|hCdJt{J us$a ,[A Y:vQFZA|!v_{lV8:[8)fS̱?EtL4kEU#ed H['؆7vX&?YX3vc@p! LHQK"["nX.\ `8`de1`'HBΰD~V|$7mb8=#  RHLvV5A \:bVJ/0)@~t0(1.@A jle/]mk_ڧl ^/dB$`^C=iJzFȰqrcYHBo&L8T W8 # <߷u{nf5?IIw]_6~fz0#j0q lys@*y 3ς&T AٲxlZXfCxBw<3B> F=j?#%A w/ MC(\ }#QgǛL8(5xdgUm;_x7o t g]NJb1gvt("&wBX(*;+$ l)r +P `đ1ɱ,r l|)0.yczFZ.Do(3-0 jmfLar 7 @j`,FMP# o0QYQg>` @Kn!h7d J70{ ;a~s s -I0l3P;[La.g!0F..%d*d)lEBX#?1CQ>V!48qϯ :UH5!w׆v`h* BЌPdFF5?If!\AHqp pI)iF@p ,JM^(qhr ` %anJb @&BvtTT|ovA,QH5߬P~ QOHK0Eq*AS) RFl5g"qtum!HYH`#D( `3ÒH_aJ!!SKp2TB4^!B6=ߔNpS(s5OaTH1q A*n: PaTb6fQ/a,`V/ -n)d 1 Yv[ rGyfOfY9P g~Ph'h[>AHi-mq(!N\ V)Tdr- jEB0֢4Gos hmWMaZ *O~ WH?` ba**` ()S(W?!l cXGK!6aoh@O0 f òT[bv62f2!~DsӉq7yG^a3ՠ nAMp: do33bOSwIF@(`a9h"ĄWw[ !|5nLP`` Ү,P 'c| 2W)F.5,wSQyU^ABfNQ AbsY1B , )Qbq^Fyma,U` =m~ `T8w$ov xoA,Ox㭙bn@m@ .p7Qs>`$"" x)Y/QXO9QA$ @ `Ioyf ~gOQyz5`A Baw)p!&7ֵ)>Yb:a "}Zjؒ%B$\3̓A;:3:6zY8bAbSzW`FՃb!^9iٰޡ&C#PL bZ`A葲鹔 {m:& 樎JT(ۻf*^[afjz,FI[)#430s{Z H ReZD E+C3\7{8we^y%_O~9>e _fU+%b,_if??;?d@E^SSOxTτ_s8Ō. 9eɔ+[Ȑf :с7s&왴լ[Nj91z9!Hඩw<."Z#qѫ-,퇔Pˆ 2@Ca u@L=z\RS9X hegv iBNn,`I2B4!TymS \$"4eB8 I!*9l<B-#8ePќ?<`_= փ e$#M2Y3Lޘi1<>28!6`0h@ @ g z]iaq#[H#Av-@%ZA*pA\L@3Ũ4@ %`I !@L\%tK-PT~a A|8&G kh&~^)LKO %(#y%ބ aPx@pq:&S @ZLi"(A %DQ?@@(RiGW @  KPN%-|` 2'hE= #`% y`C=SzG'X(YGAah@a੤8Ad@8B @X|G?1C UY&!]nl-o Ixs 5]+[-P6t(j*"@+y!5Z1E9FWZɎZl=pUa W 焗K $?k,c*#MPUSa$ lUvxSb2A @z N$&UgQAVtuAliq!aPD'tO%ة'(b֐P!ۍ`!=Q UQ0MjB +:u`Es ,r(ReơE\iycڎM7w 0%l*W@./p);57q_[KE'z; Ń΢K:T62"553#MӁgQ60VPvdqc'2*H4o"Ѕ6h J%#HlP4wOfzGXfv&4RS.LŘYXemXG,̘7tWl(bg*cx2la/Rx28'* 8I(gX192*TnbtUB8K7n 9e1L3ዿQ6 f~WRW_7ɓ,i&O1h_MY8l3X0=x;AYI_)b d gI[t]mojil uiwr]t}z Q| iYC阏Y?Y i2陟99IiZ)CɚyI$隳I "ɛ雿 )Ii(q١) )Ii׉٩ɝ )Ii牞驞ɞ -9ybɟ *Jj ʠ  *JjJwɡ !*#J%j')+ʢ-/ i1J5j79;ʣ=? A*C3JGIKʤ1jM Q*SJUjWY[ʥ]_ a*cJejgikʦmo q*sJujwy{ʧ} *Jjʨꨏ *JjBʩ꩟ *zj s0rꪯ *Jʪs0pʫsP\JjNJɪ˪R U\Ыjʬʭڭ^*j皧 RW X@XjW*:zʯXrP芰 ʮjZ[ KJY` !{ ۮ'+*'[+3K\J,[V0+˳-{1[GUz.;=گ?[FYQlD2۴B[W*f+(V{+[+s[ 9**9*o]0o+ZE t+k HU@pQSѷ8 ^ٰJ  YP{ i;l"˻l0;.;5H 2e`+m+OP Uޛ+ UP:+;q]׻ǃAPP@d ET|d(C  %0U粼{ '+ԫ0 ٻ\P{@  {@ `@ LR𾿘+! ,      "(!!!*!%##$&&*&)-**,$+3-.2-15-292345.37=8/59=6:B:#:-:-:1;;<;3<2=2=5=$=?C@;@@B@3~E!#3]$hƁ0PBd & S:a0+tI&rSl3@GA>A>De Ywt@HG1G:yX帆A J̩܅(I]I0O tx%N pWlSrb  W> 20b1mKl$豰 Xaw|f=?/Xu`}*d\cX,}$~(`lMF> mlB0%UZXr]TeeGEWTۛe641bM@X2&@\*GkG\K4XՂ,靴 @U62z̕\6=SD%#b0Dܕw|u_tJb!k 8,J5Tl!v*b 8Nׁܻ ^ijАMvKZtl8hE7keSQ'.`cCbZ0*P8;u# W^1%o'~d*$ȵ]bC&4O9lx<&8-RE'7P3H1N1S^Ca.8eNٮh8J]1(H_tN%ԭVx0bgBI$!{y&xӺ7RP9rPʽ2`p%SOXNY?2Bz?U!r^Cdu} :5U󘣷YըB +-`l|%HWu2K _aqpt,E3Gge4zc@w/2fP`,36%ŇuѰG5UedhqbPlb]X0*G}wJQW)}Vuqdc/~CB\e1V@08lP' \l @ogFVXxrUj*Ra Gg@gmX)dtN+]_4BO@ZH5,qq467P[H.aSZ7.7 zN60)<Pd2 ~rՅ5qq0PD P 8+ H `+rXuf" RcPCtS` ` @ + ^Հ yTuW,;F&q 2 PB` ^xbLuK7i2 75F3UH%Gw\bw2)+D7'=U ]MB5 YPƋX[D@Qհ0`GUEAlQS2%D2D0HDr7HJ4j,#H>!$@cO)2)8)b\SoY,x{='uY/aj>u\aHC'xV4E[AU)BK:ԖI&(_. LSR_-0" pƀ cy0^A Pl64XZ 2pR?V\vհH*x`Y;&+M)`ONHerL`TKF`%+0O`-Yh@;w"T4TS:م2P WF4F>& (_'VSu2` ` :J|ՠLzUgI0 K@G|4#Kj 6U Y:V p3` PB/:(-5#2W$w0L3l3R232(ӧ]AVµdAx3XUS> -Hc7Zru\Q FqR~ ΙXUQzx-j>{º4-PʬZRh*z蚮꺮ڮ:Zz1j6:;[{ ۰v {۱ Q![&{(*,۲f%A.;4[6{84 _:@B;D[lA< FL۴NP H;Q[V{XZk2I[>`b;dSejl۶|q=r;t[r Jkz|۷K^뷂;[' 񵆻۸;;[{i1۹[{m+AۺU[{9+Aۻ! [˱{ۼɻ[{]* HS.+H`F:w^Q `6׻i&`Pc^|>ӱ.`Yžѫ2d?n@-2%2SL9whNq|VR"jPi'p8},y%A*A|E::7(NG<pR*_<܋UPGOn :C 87UU0~C }|eQi7^A H`=< ɩ5\P;}Pw_d\&C p@UpNB}9d9<5k@2u`p_ `ʹ# &),I\.02Qt6d?(FDeAbCrM5BJ>A%.$4C^t÷b?Uvs^A>1B ~GJ0)Kv>ut`Kc?' & E4F3e~b^_N>-5BU<" 0SfϼB͇1g'p\M\# 2 рz./^`1 uUl@:^'D 7P?PJB *0P[V@QD<< U0'H]c/67)Jt2'KN-I`#~X55HUmW-qpB+?}A9E, uҰ ?P o t/唆J' l<]7Yfv)BD85'F13`HdQ"ZݭD[n0-X]SNZ=,'@'f9 Ppt$m)0a8GtdvBn{P3CH*}SWv-`6XeN)+Y:-Pm^aCe tv'MSXG^,4~X,g4 @/V?-A'"`&tYZu>.+=xF.VZ˦[@>ai.x~lzM,㜮4~6NB} @ּv9ѲU5@\s`5nwn 3(9 KB P@?zD&@"Br!Ȅ9alff7kjSg99NtfӜLg:Yv'9z̧:~?Osdq1,Y"9qqǤ~thG=QTpB2ч o.jc3iMmzS MiVꖖ~ .G(dS&UKe* z*KP f@[jWѧF-? E=WVaiYuֵUeCe\W6']ǵj5elc?Jֵf=VfV#dN\M^uYΦV5g%+x-U[YVu-aa+/ٞBF1hq}-Am؂a^ 2@p    <8  ^L:.%R-!>; !%x&0 ϴcX  `F‡R ͝vڏna u\5 B d5zCP0$BBY!Z#.]& pT ,⼐ $A :+]yj Se@#q}H6k;}!S 2ؓ?(DBs!D4!c>7.blEdb50%h! ͽ> QLZ@7pχ@4D Gw=Zj:D|1T-([ ISE}b(l(tub?C[p c<d`0Gḟ"bx|$T>ud q $ G֝cG"B#0PSl$rjcz,.wGm I" TieYIWC<: 2aE68ίhd# ox`$ pp8 a _a= Z : KAA}.Sz;c[8%-I'Cd9c\ HB`w5[ zhg ?q?:Ý55#?;4!Tvh @@H=#@ @@hPSAK#)kk[xqA0@%ľWO<ڨ ZJX& +9K#{p:bȇ~|i[@ع>LB d0dCHF\ġDŅ8D|DCS2, j13 SD <*{YlXtŭ>e{g,0aD6bct:?\ 9V4ev?$ѹ8tXwdDG4֓4JGt}HK`!HFH о x9F[Kză1/>hi6?s>?AwI?Tq$&lň9;]X6ztLX YjJќ4S7CN|"[dHy“BYHЀ$0)QLhc˓\gԆ66A{ 00Gqh26Cyԁ x^M$L|-X5U7֤*kh?&[[h 䊊4<8g(a/!zN6o=@o<l_3 (4Nph2 uL5 :k8:0O~c +ò ٲԔ0M'$ E 0d2;3^>J6H 7 fK2&?K`z1"/Y2U t d#/p8O =x>H*ݣѴRgTpP 6p@X5HH jЀI [+QOc2ޑ?L|Fe#zhrhp#{1!7H/2p(X#7;$ V*5j99),7َ!),1Wh Q2P;P7 wiT}T݂TODuW)'cZ:ZZSkZmNQZڨZM#fyA[b[~t[f[3Yۿ[eY<=ܯ*Ͳx?5-E\*% m\Byɝ#L4y]uͥ]-u- IݪYi#>aЄ4x! (Mgkm*D ^^^^^D(psea(PPm_8a50݅8]HJ_``.`6`>pLݥ)_͸2 `x1x~@=(GHa^ana~aa&:P|xv]p `!`Pk_aߒJ8ab++.9_%ߨ] (b4Nc4~5^㖨A@Au]'b8*=c>c?c@dA~a-N95 A0hcHd4:~c,dP~=dĢa5rƍ@ 6dZ^c`ch9LvPfana6TU۱Y dXZF"~UMza`md.e[ X~ifjg5n Lvޠm{KrhPB0tFdVE>b yg{hp>x&ggi+R@hIgbhUCƌyhhp}]of0NaHif6(n`NeF\k_ ii 00u0b7Pjnf(jd>jב۾%g`YfXiInkQ|8c67\|0Z>hFiH8CnBpuP]n^N׶& Buxv{fYY :Ōl.b\^\&7>(~=Vl&g6׸]m=3Kz4 hnehpھa.BP{헅Z@ɍpjxF? @bx EH`c4CA}m˭{bFl&oa6JH۝̩lfQf֛EB]8;)_͓%Xle][7]\؃N*.=S.kۤffZ@YBhcF!p#aNBXRVor>õx04_#j5W-qoVs6lKtL7Ot~scsp;߅Ћhlk Ym4f~`A@"aNOAu`vaMj7v8f~bnU(b p:4$kckMPE!= P>J/u_wvow%FT^(¤ igj`b<6N[ we{s~Hu@a,>l?(iewz:WIfvWFh aU7R:_lN`:Rڽ~u=nC@~uuFh\w yZ}kkCvnSZubi6Cu#mx7'rvSqvbm+/w#H(y5^=wo%lbomi?{vA{3?y@#_Hv ۛc k+Al' Rn}~GHR}})aF' h$=8a=6o;zη{mS7fzF#5fwb~9„ BTh"{Qh"ƌ7r#Ȑʔ*Wl%̔J/{:w'РB-jhP7(hRݩtM6`hjհbǒ-S`~4\-ܸr)õPÅz5$n"H6dtp/C I;1ȏ<2-g,ТEӧb\ܺwD&e‡Ϙ؞Fy'lH7maZCw#iY3.97K[@+ܻ)>0{O'Z卷 "3X!w!c]2!t 8F tz)Ǟ7g 1TZ@~5GQiEۏEƈ p$*dES&Gcyt"w5a#aNL"F ci p_WU ECՏ q盁dIeyd6B == X#AHNzZ&䞠GOs]_QĪ*U*R=XG 2XTץ{e%:z\n4jtj[Viؘ!(+_X`;oP-n.5]Ct؈X ;.0nqmkN.E >ɛ?<@M p 1:,0X.H8L3%JL1vQt*ز } &J=o͜t:!rRp[dž E#42Hl M4_ RSTV;fq ׍GNވG%G{%~ ^}:҈SxG~6E`u@ֺӎ?u"6#.NBW~iGa m&[^¯g;f=<kDq~c=QR&{`W "" ,=$`5p ѳPjhtNIDJa0D51ȇP{t0Q OH! kqT8`C_WVԈ $}]܃,ءMrrr(1'4Q#9l$ ,0#Z)&"hAH z$P{9)Puf7_qjhLUF D!  E5e Tjx!#x4XPڔ̷>J[ro1T9ST h0@[ `OO2ȦcM/oGjQ845IFXsJCt j[lf҆v! -IiNH#TpvK]:[ۥـ 7%}!o'957b҈=δ9.g>vwunY*~h2^eWAt'&':dR<~=;0恒kuy?{AHރzq(iZd 8wH}:F^'* 9]b޻p{y! y}ϩ)?Ȋ|Aj @<B9ī,*n3/,FqR,!!w-qoޯ^<'UjOՒR_7"c\ls˗Ԏ~E_~M 9PV܁MA= Af˿JSM?(j@<K8 ZBa!쁳!֡!桳:"{X9$h:#D~<CJE &TDv2 d=f$IFޠG$d+$LIJd$OfLbMंdO: %S*Q"T$.[S^DVEʣENWR#VV=EW%UƑ[ QJK]_(%_H\b\c]%a=eb"Y\`D'daNh8b^&4&u%ev栄CbhrDRd`C>ty&kZ#[FhfiE?d9V&oovU e`ʦq;eW=C(<'tFtN'uVu^'vfvn'wvw~'xx'yyB'pZDr{'|Ƨ|'}֧}'~~''({V&sD>4>(FN(Vhfn=X~rf(:舎艮臦((6jg{ōnh`t ^N%nf>&qNi؟9)d!)qyh)Yia)i)Ʃ顸)橞pة\)2*&*\r*>*b6&>+*-+4+Vϵn+VVz ++kH+֫+~kH|k(v li#&2.*'6æ )zn^U,_ƮZǢRhWȦޝBP,nOlF O-n,VvF -XZHnamh-تl~m2 ٦-@-ʺm-ŴmGC8I= \GbvKf~nFWh ܖJR$TR0& Z^oG/V-@ XD XְY Fo{U6H g/e^=C^nG`1$1؆H pp1R1GԖMq7 hV9k8lq w {Dq[ CxձP0IxoF< X[F5,$I,1 $TTm rGT{?T<=3@2,DHFЃ THjBT1F.WAw)AerC$IH2{Hrh .2e2h#%ccSDrnFX2jݖ92Fn'<%=qvrarD;s{Tp0?Htqلk  2t!LAd`|μ&Y4Lxܻ7ʇ3v9@?Zo DOptS0p8rl4(AW4h +tqN "r$$\&|2$%Cʑ*y$)ܒ. OK24'+K|8 #:`{P=D|7v< iu4R0jT-BA A8 ! ] x$PL;6 N+ꚱucșxp3$x#G,+Na]jhÖN+ .x&9hHǐ1``0ἐX0l-s^!9ycue \GanA c&=BH[,i ^4GHu(5^Q$DQ@1z]pGp2M 38Yrp@wp'Eg%iaP\9 :.@n# 8TP ,vF9Qn@!iE9\0d+H%({P҅b)7aPQӎt<QT*889Q;Symx1c[ȅ@ĩKLj@- 5@8@V w֤j12}ă( NKG9rjPl,g[_bX0y8h#[u*Nv-H"xǵl}G[6j0IL`Po, ^[:[h#\L -@~Dק笛v%lwD-+f7 p]{E'&` H@j՝TNK4U!zp%Hy{IX`0( |qL[i =*,_ʖ ұG  {\/$o9#` <@hTf+gC[5DḴyo3\6}C0s@0+z Wֱ5)j[=碓k2GsD ؀E6oyKQЀZ [~@Ayh۱{s%܈|cX'+F?H0&Px; WH(T1QP_̞i,Hh șXy&\naG4}#X9=Ex | @e 6`  $$(.gHvArPNPVA / |n UAX-_zn>aև$#Lrnf!F | 0 $f 7lFB$j%*$ED& 冮r A!lN @LqW!rNcZ2AB@>Fa6G#61`!9Q0P_AbMi{0| O /RQb! jˮt'$1dD>  : 0p! qSڬO@ X.یn8AqPa3-#F40 ha$2A`,` A`0,4#![0XBr$o %\d ۪ ԀaqR'yf.p#0DB)!c,AZ )XjR#'S ?r^m7aJ .hЍ. pN=3eH,41),d4#a,@(s#263i.qp4 M.P6WF!~2bAT0 -haB17 a+0 OaP oα0^qo 5C9A+&thb$ + {4A B 7BB4Tdurp xpDSr@ EkE[tFСq#&n K @k!a j   !5"tob>a!N 0KuQP %%GN @;Q!gt+k$38;>`)ak lO Q!I R&bpC X.X관9&9 Qt/lpgpo5 p\aNOf);a, Q/ ="(r#`P5V9+a;7T@ b}&bTct\{r_j7vU؞0EBofI%SjsC@ h1 AAt2>v~^d cI(D""f$nm-sܰC htf. E16U>+Fq7@i@M*`Hs5YӺGR,u:pK[ 6O!q-qW a)*@4XX $Y68ua6;zҙ8-=V+w}Qc> v#  oSFC`ww28!f@ar&\\#XEe]!g6@@[;֛۽Ϣ,0E"[ȧg%h\ c>{I\+\[§3|xC<|ÉSKc5\sV#>S$/P(0;M4<^GK@>lBS^o_ A1kcw"{^a%I'<闞Ý^Y|~V뻞൞T^ZE'E#}%ߞ<ߥ^O^>~_^`_M_?_p +\3zAG?CG:S{L?hTVgkos_wTX?=!__Cއw+fͣ%ߣwib%çӟp_&_XaFa_UqŸ <0… :|1ĉ+Z1ƍ2ȑ$K<2d,[| 3̙4kڼ3Νi@a8B[z|fr<>:ηr[˥K1=(Nv9&c`5Ff8A{V\ pUј!l:`>xDž-A+g wU%ܳpe|WS= P1CW8\G'\7P9lT1@TT KX&U5 d"V# =|hɍv!g3?\TiЭ!te)ͺ$`@Pށl77P?'$a ym?ȳ4Wun}Qkm"aKwÆTP6<6I2@-P] M$SL{bcS±0{- >|B6Rr@$?] x!Mm+%B@sb s6 @BQ8Cc(! J }GAd;HB'`b ҂c 0d a I X@b M,h]У!p6ڜs,H V1& X@AA}Ӊ@P )&Мo $u*Y $)6?"D[f$,L4gGM{C;9o*yy*<ԥː c}}q~M%h?@J=+e4pD1ĹjOh`JX$G  {$&+PC `p&00 uq 2pP$ T 2L%BcϨNApMˑR(oHh7&S vB*`|T-of NN J`4TcЁV#UޒvA@$v @ x/y6b e4ֱ恬BJcH^XªH@ z#gƏAi LLt}d2̻)m e:p&4@b4f\iAe-%њ|og1DTNϪe"@ovKKrF!> ceqX Zl@M$!8&GZ6YwHp$+ZLeX9!US(b>G,g54j14ـ-8" zD0U?buvW^HgNQ ۇgh/2J6v{uh-{rDBF/pMxtD`2seYM'x-gp"qRgR,hERK)fqMjV,X!B qhXb/؁+a~2"pXPq5@yg?9wxyB0` TK0EQRRsюV04ܨh@a ?@ p3+B?xv6,ɏɏ(FQy!9$=&))ّs/ 1)3,,ْ$4;ɓ=a79>?IEiGYA) HO QIKJM)WYhABi[ a)c]ytHikɖ@m)sIFi-u{ɗvr})I"yɘ阏 )Iiy# 陟 )Iiɚ隯 )Iiɛ雿 9'f!ljɩɜ )Ii׉٩ɝ )Ii牞I-G )Iiɟ *Jj :Ƞ *Jژjʡ#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUjWY[ʥ]_ a*cJejgimo q*sJujy r qু*Jj r۰ ` r0^Yʩ꩟ *R0Y`W:j *\ ڤRW J:ZZ ɪ˚WЬЊjqʭ: zV :ҪJѪٺJʯj*j+ Z`V;ʰ[˱ +ۯZϊՊ {/ 5T $;+Rp<:,+.GpA($76Z*b^ bPJ:_K-ښi' $b|">7۬{֠ Y`{R \"۰W`^ikK[l :(:PUQ( 1aR;JqM :SZS Y`S@P,˰*zC"W˥qs@J0MD  +$b" Ϡ +O2Xz@S` Y @ @˯ {Y [! ,      "(!!!*!%##$&&*&)-**,$+3-.2-15-292345.37=8/59=6:B:#:-:-:2;;<;3<2=2=5=$=?C@;@ B@3~E!#3|]$hƁ0PBd & S:a/+tH&rSk3@GA>A>De Ywt@HG1G:yXA J̩܅(I]I0O txN pWlSrb  W> 20b1mKl$豰 Xaw|f=?/Xu`}*d`cX,}$~(`lMF> mlB0%UZXr]TeeGEWTۛe641bM@X2&@\*GkG\K,XՂ,靴 @U52z̕\69SD%#b(Dܕw|u_tJb!k 8,5Dl!v*" 7Nׁܻ ^ijАMvKZtl8h57kdSQ'.`[CbZ0*@7;u# W^)%o'~d*"ȵ]bC&4O9lx<&8-RE'7P3H1N1S^Ba.8eNٮh8J]1(H_tN%ԭFx0bgBI"{y&xӺ7RP9rPʽc2`p#SOXNY?2Bz?Q!r^Cdu} :5U󘣷Y֠B +-`l|%HWu2K _aqpt,E3Gge4zc@w/2fP`,36%ŇuѰG5UedhqbPlb]X0*G}wJQW)}Vuqdc/~CB\e1V@08l@' \k @ogFVXxrUj*Ra Gg@gmW)dtN+]_4BO@ZH5,qq467P[H.aSZ7.7 zN60)<Pd2 ~rՅ5qq0PD ` 8+ H `+rXuf" RcPCtS_ ` @ + ^Հ yTuW,;F&q 2 PB` ^xbLuK7i2 75F3UH%Gw\bw2)+D7'=E ]MB5 Y@ƋX[D@Qְ0`GUEAlQS2%D2D0HDr7HJ4],#H>!$@cO)2)8)b\SoY,x{='uY/aj>u\aHC'xV4E[AU)BK:ԖI&(_. LSR_-0" pƀ cy0^1 Pk64XZ 2pR?V\vְH*x`Y;&+M)`ONHdrL`TKF`%+0O`-Yh@;v"T4TS:م2` WF4F>& (_'VSu2` ` :J|֠LzUgI0 K@G|4#Kj 6U Y:V p3` PB/:(-5#2W$w0L3l3R232(ӧ]AVµdAx3XUS> -Hc7Zru\Q(`d Uzߢv!ZS7̊kIzb pA͚!%逦Q1z蚮꺮ڮ:ZzگLa1[{ ۰k_!{۱ j+&{(*,۲.k^%4[6{8:[1{@B;D[Fг{L۴NP$+V{XZ&\b;d[ K2kjl۶nho;t[v;qw|۷~˴y;[K`{۸[{+˸{붣 k{+[[{;ѻۼ}[{H뵊?fԱc`+;q A&i(>ŧ)k c>B EQ{+1jAhqq"Y"9e!slu-%+,  p2Yr/^ \*ganc~-Īc'1bE ˓H:aѽH@A%.$4C^tķb?Uvs^A>1B ~GJ0)Kv>ut`Kc?' & E4F3e~b^_N>-5B3V< 0SfC;͇Qg'p\M\ 2рz./^`1 uV\@:^'D 7P?@J2 *0P[V@QD=< T0'J]c/67)Jt2'KN-I`#~X55HUmW-qpB+?}A9E, u Ӳ ?` p t/唅J' |>}8 Y!fv)BD85'F13`HdQBZݭD[n0-X]SNZ>,'@'f9 Ppt$m)Pa8GtdvBn{p3@J*}SWv-=7XeN)+Y:-Pm^aCe tv'MSXI^,4~X,g4 @/F?- A'B`&tYZu@.+=xHNWZ˦[@>ai0z~lzNL㞾6~8ND @׼v9ѲU5@\b5F+RֱR ) )zEs'PNscHX F$U+vb)ZmPa?UIw|h>FA"B|aH+1JX PB @0l-=Ahs 0xbYiծe[qΥ[]y_K#\aĉ/f\x];0'6d @*IBN`DM PމT"~z z{TKF ,n!/<0n @|v3 YA` \\iCg0Z. ('` $(C lDK4DSTqE[qF{r)睈tޑO"q)G>zgIb=Wecyfej_yg{goyV6h(sViZcT穳zkjk{lFkglvmN_n{o{o7pgNq#oxqr37e&^C}tF)dSW}Mc}vkvs}w{g19d}xs7~yG ܕw~zYw~{̯={?pm|wW}fv~矽~fɎ#`M Ѐ dxFP{`8A fp^d4A`MxBhpo%Da ]*΍/a ôІ;ap6PC<D"&QtՐD(FQ-MlxE)RqhVbEqQ- cxF4QkdcF8QscxG LfRd'=IPR$e)MyJTRde+]R0>cRe/}K`S$f1yLd&Sdf3LhXL $%#ҏL#f7pSܦ7yNr3dg7թv';Iz̧9~ @Zo4G&QcвRSI̚G'HT#%iIMJGl>.(X:^l&=NzST;S іr肏|¦=ejSTPR5a DRUU jU2ԫ p*¸ԥUsk]XV5`k}K[]vTU%lTR5|W XFvj^qlg=;R֬qeUڶU_mk]Z5ֲj٢Zͥmo}Y"ZpK-֪qFĐmu\]rӸ4mn%纱%#u^b.F X±`%JChDK{y5wvo*_FD]\w]P,m\-0 <.pq&\Fc`?rN1 x `LX_BiQ ,2#av|CbλRG7Ġ:AЍ_WAtzhAG!(@P8 ^z|^-YQѲe18 *|vH կ°)A|^C " x!M*Z^Fu'[Yᾅn0$;VDfdC WRde&xD=1P M v1>J`zP@#2~nl0xG u4Di[]C92(Sp  WR ;l@xD"P-k kPד M|%T„ 8D>^1qxy %%@#7Bފ-] @` R^jߐVo Ҹ0?q)4H$u]Au&, 0 `P#lut8K1p7h| 0$ ppP a _a8=8Z 9 {AC/ˮUz(;c[@8%/y'Bd; xxB{_5P z8x k3٨zS9?3@{0B@Bh8h! w= $Xj05:²0(yA\; Q[ ^ሥBS\д ZI*  cqk{<:bȇ~|ЅkSH(3:BB@ d0dBDJD|ň`DDc V2.)-k4SVt\,{\E[Űg3&Ё//CfSFai9ą[9l#nxbɸ! H'H DE 9'Kǣ̿3/>`lӶA>?Dz BudG*Ŋ:c]5~Lx [JռT V8c R"dy•8ByH(P-LfK̝|j66öC#/ P0DGuB2贡;5C8}ԁ x`YMD#P-W#8̸,Gl?(싈h T\`gHd/#N8o?@Co<lb3 4Oph2P@x L5 x9Æ 7AO-- 8ز.+0͋+*/ "! ܔ'$0 \@[H8; @86 XXb /3 6D#pJ?fj$%z  U5=H0 @p= 5zՃ>H,R$gȥtpTD X8J[v   mr@$5*xR8`1 ;XC jQ8v v(72" $Çy0tR%CrfRgHÈr#8u5<=X:0$+3h0j{+Ցϒ0KYLL=ZLZQ\ZyiZ}ڜ2Z#]5Zu=M[-흸[-%ȻmC[}ݝ;\L[\Ei)\\\E̍;N757ܳ],])]e.ݺ]9r]?X-M@' !7aM⥶4٨/R8A^^ __-_=R(7 ^=/z2hPU_ xY-#ލU~6OM`^`n`~``>hLPݧaq82+a쨈!3 ߘ~8= Gaaaaa:H|  ] a&&aPmeaJab00&9 ^m_eݠ؉xb9c9~:'@pս],b9/~B.dC>dDNdE^dFa2v9!N ^cU@`cMd(!|?Nd1NeU=dŤ)er(ǂ@ ;d_c㨠>QU^ffa VY Z۳[ `]_F@'~Z}=zPfneaiNj[ꈄ8]~nfog: Q^|JwnhUA00yd"J>P⧸ ~gh>+6Eh^i0RhgͅC~hhTt]t2G`ia6(`eo_ ii~ P06i2b7^jffxjij[Eg dHūf]iNj^) ph~;uͩ!uF`~C0nhF 6XمؑZ6Հ *pT(]ghpeΈ >q~b5ŦN7> vBv.Xg=8Kz9nmFX(`j~aAnfB D٬7 C M)> TE@cs|l~ofoJomkfnPG]X=)_г%XqebN[ ]\l/no&=X~k&ܩfZ8@.ZBBc#ݬ&q(aBPWoTnFr0 iM6_(j:\-r}sNro`s&lPuQTtshs@߅hgCZm9 Ul~`A'aSaAHve_vfWROk<vfedxb p>T$ӻcpMJI=U6O/zw{w*WeFTv^-O ngob>;N`FUp|XxzJua1l?xij?Ik&wWFe99_qΐ:Rbv6vBfC8~u>vnF`\ws]Zkp?EvsS_kb8j;OzCunpwrXFvfm{/h#Hxy:=_w[}cgDݢWIQ}73X|;d z@Vp0>1x?{x 77xF*/e O1\oG~AC& uڏwBc|,h „ 2l!~Bg"ƌi#Ȑ"G,i2$?J9j%LG~ 4)Cb|ОD,j(Ҥ$9 G)ԨRRj*pE E"ذbǒ kjתbYg0`Z/`3U,T)Ċġk!yX5H2>y$Wbr"?^4!5Īkouc_uI}%śf(N8h DQ! !|%scg!"9^!IՀ!o( #ET$grT`GjY eCH&Gib"#O397yv<#}&dfDn9(@yQq!n 1]T 0ZWṩv\2/u=*sJ#H|y[ z)%hnU\J Ű*P&*+[SD uУ:|"G%E{.~ẮUEOKG@]TRHF \P%=. KN,!32F7*vnj֎ {,.$)3d d ?<@j *LP}<4HF?m0"3n8ⰙQLDk${k3٘! `K=O-$Ie+H!o@tplgG !KԂP7\7a=*[Dh;yr ۝7ȕ-P+9!~PuT9#Șœ.Ev@N۹Ρu2_3!=J&!I4xgFohH#ye\4Ц<o_ 7)^ $, x,$~cS#@ :E00qx<`-@@Dlt!J4Z7%^"Tч8ZQt*0# G? |F49\P>3~cSD80DqЗqyh@nhCv;C^j#o{;RUi#&ED?6\EvA>uR@ Ƅ\d-@ @dG@y-< ज椃8P,m* 3RHk*IKb0'BQX2 N-L~J&=#&AZ"Lw?tdghy>YE,rPP0ֺ4FvOdŌC U(c8=L% ԾRk$C~I3QMisī"hdkPa (p5=~qߨNSc U7Yg+|LkqYUOg&Ӭ5@s,"$'@ ɚz*`kvÌ0ъv#i"ծ66/%`{c/  d` r[GJQE&enU_2JIZջnZ|5 Tz\WPa/>b8`S̆lMTK!k7` Wb4`Ix, 19!k6M}|$<-n[(R/t@TS&"⍔dg19Gv'#&yl`^s'_ q $]R .B*m<|Xp-u*Dkh t䇪Xh|Ij U1^Kj]dm`wrh PzI 4&5Rk5ȳT j8? Zz*Td5MȕӉ*`cu[t} U'0 Y9܅2 $ 0Аev"^%B[v㝂'app3ʹ7n@=Lo7^0&,ͳiL6dⓌG=169=r^7]|@? Ax 6 ۛm.׮ǘꖻ|'\ Եz(*PcGԊGWw[2PQx;ވd_0 % Q+GE`?i8[ P aWr`J yKnc=3R&zS'>bG"[x~߿.߃ P%4R-*&XQgu b^SR_?(o@I7B,!#02!F2aK8Maa]3 X@`ü_FhaR!| !  ~KC!5\F aB]D:@Ș?$&""W!"**"++֍Q5"\<'B].Z,Ɗ1#2&2.#361j06I ~/ A0]t'EQ 8J~,lX#7JE8cIPc-#;S>7f<$="b?Ā _6&_?@V$>A$qdEYHFvF"G$KVNIIޞJ䲰dNMLLΟMMQ"#=P6e0TJOS:%V^ TTve=%9^eVlDz%ZIUΔX[bYRdZΥMRJEJ%_D$7ҥ`nX.b^ Mb_v`>&v=#vP.&fbJ\B&g2SP-&ffCH\vjJ.EC'ifYQnjf?ئ9Hh'qq e!^s;f &>C(\'vfvn'wvw~'xx'yy'zz'{{B'd Et}'~~''((&.(6}*'urE>T^(fn(vh=x(Z芮ƨ((Vl.VxyYF9 <乇\&:-G1ϯȄZsVtN̹]G3BȖ u7kFp]GX^!h@h:Ho$@x;qy;;;U;]wID&/H \`9x ?׻۲?@&~ߊcDwbK{3}73zoK9Lѥ$@$\{`wC;,+w{Wq1Vs1o!3RT sT1 A Bw@$DN۞:ׇ~>{٫li-XZ+q]D9`@A8_'߀xO$X XZ+v, r8T 84pp_Bl$ @K8O|IETXcaJ+YtfL3iti̦pxhPC 3!Μ55s&5ȳ70|w  0k/ CEQ0{p`S*i&pϚ>; VǕPIքd1sHGջ"uB" pU]@5ݕU< UcS)π,(A|%K>*|O@x2P RbFDQpl%\IkѰC9\p S ½$Ϧ |(rJ'c,ܒ._#SI&k4\l6圓:Us%1>3@;=D,4%=|tɽUJ-iҤ.ݔNgG!(I==SA5V]TQIO_:W͕^u`Kb]c]A` VLvlCJgXmd=\gm}Wk᝗Zu}&ݗYyW{33>W)7 W\M?)S9V pN6-8ɌmMmm`7ܛ.b prtHtYڣaom\!}㔩:˕+v\8?z4돯H vT 4Yn\?,0x<(GoeH9ėZ_a\A")0a!BV§b}HQ'm`VXa4g?bw6H4xr2Tx^2+^ޅ0|5dVQ0%2aЗ>\wL0F R(f @pH (!:2V< V6ݽ. ZzH+ 1bx4$#G,/N!y@NGTA N9D`SE#0yHdž\B4a 4Qc6}ȕ `砝? f8a"w~=, d%%H>–4.yK_FNk %|`_HJ1 KIDx h :NwS#23R99fQf6_`6Z(p%Jw*! pd8Z`|!HZRtPiJ=M~ т>+H%({R9ta],7aS Ԏt\YV78;[e"/hfNw&(6afl{[G "r@HH4(Ma9oGڸzaК_:B-AX:"LgTs"أmIdѦIo< )M͛6&*VgunY[у̼f3IA䍳xphq=tgB 2@,sK /Ӳ% T9q hi ,$ `+{6'Vw6@1Bnp01Q/L/ ;? /t(Ώ1 [B0W Ɨ ٷ_An^!p&y̓o{b)D)a1 #` =@qܓg9XhG#f,G0b9vsCBAXРխAN ^׹ֵ[X=@'\Yz%H,ι=~WGꄘzc(6Ѕ$|xVם#[Lm)k_a,c%eI(ֆaǥmz,i0nr }92O*wpMau0D,!< (j)+sx.0 /a KPҕ>a^ZK|Y_BO]M~DxaJjQ06pqi(z#u<Pױ\ I;ӛ`F|=;1c@AhA 7@A=桉 @ pnXPN{06UpY##\ /oBPb=.9dCs@.P @>04 Ӊ68NH*Vq{NaKǺpXO8@!pi Z 0*^":., f&a6Gԯx!VA o OD+Xr UAX `fzf6Z`~>l"`ZWO|Z{aX A v| ┯ ! 8f UldBm6J'*%pE  Fr pA` M@/딠 8kpR!Xn %4$ޮ%&p&tRb `<"q%81nYfJO-Fiq@ Ơp/R&QBbjx^C H2:j. B&& BEۮoO@ X1hW6a1qct<-%d =!~0,2=hBr$qr %\rrLӀsr'{rh0P%0bb)?c.ACZ+\l2%'UpRgMf!K / h@&- L=()fJ,4Q) ,H",` Sr2_-}a4R?@O`lM5WF!jbah0@.tB1US!89Ӱ>Fa6s^1ꮎ V3/BoA12iA(&j ,@\k'%4!>#`ABm09! rF F lDQtFQ#_m@i @!a2 !S"tpcom(skr 4U`|^| rC PaE/ƛlB9{%  C򔔘iMfp/C@05. nBڴU_U&xa#G%SXt6`8#QMe#IN!(sPRS7N  F~'+`%%>!UZ _]u#cIjT` %vJ#L+6M7qc gW ^puٜ 0cBpxD%ucUixSbB v.g Av=n:` dhDFd`n$*@l 8͵fmVmq:!14.ǀni@`rHN q06ԁUjpUРi @k,`f"A]/sGgaRGCsO%OFm6MAq(m_n7!a)*@4>d k wQ5LFa7-I2 Փ=ٴM×p|d> V% a gl+9fI>_uBQ8f` o2LaU[\/_.ԕf,Az DST2(Bg2 `N[7aUܔvofa4`tP&& =Xw$uﶀ⎀` n'Ip!x_B& 2%8!isX<&Kj- a\Ev `, P& y1rG YYrAM TЬ L!hxϋ9krN s9"z+?xagY!&АҠY"% !"[BX~*yY!`  ^a9bd@tG&x?  ):؜1J0 1QdWUZ|%z%X Tv9[ЖeXA@Eaf!Dx0Ը}.UzYƕqڐNG%>BIŨ/ZA1:EN/"G fBZ=q-9!t֞5f8L~(?k&!V[۵_5a+۠Yʐճs;4zca! Ę @̸[{& .r2u{]A Q>@[ƛ;[>Bg_) ۾Ъ'tۿ=z uȺs{#qz` ©z39f1 Ccm[GhS/@ yc܈]W-Ns-^`ǻ8Mq-|||]+ɣa[;<\ō|IQMzü k\\\ʟAe|^\Xе|cb:>Wk/&2]1?ݿC]ڬJI]UY@VcA]{؃]؇؋؏ٓ]ٟٛڣگ۳]۷ۻۛ]"=h=e=ѝ۝_=]}\Y=W}q D׆^K>m^'N )3K,ޯ5?J8AKADM^W^0PYc̿\kYwsYB烾}^X^>Xߕ~V駾ݡT곞֭]뇾Ǟ͹RĞ>_`>^ >u _Ϲ[&+?'I7{0?4Cq<߇D:[_c_gkVRw?ߜ_q(@`y_ѥ'q?(ZuB{e+ao6]R_Ÿ S=k>qBSY1#wkj†!K,hI| 3̙4߅3Ν<{ 4P,=4ҥLF3H8@ `,곡 V#=kh&=yr>8y:} 9R3cۃS8`WIX0h2VZk $q2``+$pMċ?ܧc̛/ك@+gʛwQ%ܳpdgZzB@3cM ˭"@Xs W&T|6 `G# =h }7?`Pa0DD Z `p@T5a 01!- AxD"A `\: @`8mb@7C g dPuU@찛P puυ"֊pb vN,EmN<$ (f()Put(KWĵ$A( *qJb ;IÖ!"xI#DQ 2VjMd@ - X3pd,3<IB"zqS a ՆEkcZU> r! :t% *hѤjڧ.$\&iyT oMCagGI ;H3ix8] C6?V֢ŁU؜-6`\*kxG9"qCXk$|+= ! oy˵/A_ Zۮ BM `C|K]p}&EPtqOQ݇%$MD;Fp92}Rg,@|'-5giwfWT/8H~.Vg+Gx-bMׇWHf a Wf- F`thGz_bz+CD2.LbCq_gCXLE%jMWWw!YR7Rx8+f- (6LWk8+~ za"X*ah0nl򉒸YB>RQQLHrH%aH(Jd(nfQF 3H<֘j}aL hH1͘XWRb}ȍ70fqaQ(爎I +AɐI/a YɑIM i')b8㶒/ 1)3"ْA9;ɓ=)7z>)CIE@+%iKɔMaHi^UiWRY_ a[)T)gidfo ql xȕwy{ɗ} ))ty$B ɘ阏 )Iiə陟 )Iiɚi[BFaBiɛ雿 )Iiljɩɜ )IiYqɝ )Ii牞驞ɞIiɟ *)j ʠ *Jjʡ !*#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUY[ʥ]_ aVJej qpmo q*sJuʦqp{ʧL q ]X@jʨQ X yЧjC*ʩ꩜[@ jQVય Y@YવjZګVJ*pPʪ:ګUଳj z Zڪz֊뺭**ʫʮYPU캯Њ KJJJ:˱V蘇ǰʮQ`(۱3K-5a#Z$*`q[ R0X`5KU H O?J+-x5ʮB{ x΀庴Vx *j2 bˤ 4F':9F%-1_=pL *R@RXR@z+^Zs@I07D v ` `gϠ )PNq {[@Rp X @ ,jX+C! ,      "(!!!*!%##$&&*&)-**,+-2-15-292345.37=8/59=6:B:#:-:-:1;;<;3<2=2=5=$=?C@;@ؐ\:i@RYAdO"UnM\9CL!-zعI͵뙥@B,Wp&+R BmG.)ogګ]]^ @Jp%0ƕ<0*IX'X)s\83e*i1 v%O>`mB@3~E!#3x]$hƁ0PBb & S:a/ tH&rSjȖ3@G@>A>DE Y#wp@@G1G:iX䰆 lJ̩܅(I]I0O p txTN pWlSprR  W> 20b1mKl$汰 Xaw|f=?/Xq`}*dXcX,y$|2(`lM6> mlB0%UXr]TeeGEWTۛe641bM?X2&@\"GkG\+$Xł,靴 ,@U52z̕R\65SD%#b Dw|s_tJb!k 8, 54l!v*" 7Nׁܻ ^ijАMvKZ)tl8h%7kcSQ'_SCbZ0*07;u# W^!%o'~d* ȵ]bC&4O9lx<&8-RE'7P3H1N1S^Ba.8eNٮh8J]1(H_tN%ԭ6x0bgBI {y&xӺ҄7RP9rPʹC1`p!SOXNY?2kBz?M!r^zCdu}i :5U򘣷YԘB+-^l|HWu2K _aqpt,E3Gge4zc@w/2fP`,#6%ŇuаG5UedhqbPlb]X0*G}wJQW)|Vuqdc/~CB\e1V@08l0 \j @ogFVXxrUj*Ra Gg@gmV)dtN+]_4BO@ZH5,qq466P[H.aSZ7.7r zN60)<Pd2 ~rՅ5qq0PD @ 8+ Gp `r+rXuf Rc@CtS^ P ? + ^Հ yTuW,;F&q" PBP ^xbLuK7i" 75F3EHGw\bw2)+D7'=5 ]MB5 I0ƋX[D@Q԰0`GUEAlQS2%D2D0HDr7HJ4],#H>!$@cO)2)()b\SoY,x{='uY/aj>u\aHC'xF4E[AU)BK:ԖI&(_. LSR_- " `p cy0^! Pj64XZ2`R>V\f԰H*x`Y;&+M)`ON8crL`TK6`%+ O`-Yh@;u"T4TS9م2@ W64F>& (_'VSu2P P :J|ԠLzUgI0 K@G|4#KZ 6U Y:V p3P PB/:(-5#2W$w0L3l3R232(ӧ]AVµdAx3XUS> -Hc7Zru\Q(`d Uzߢv!ZS7̊jIzR p@͚!%耦Q1z蚮꺮ڮ:ZzگLa1[{ ۰k_!{۱ j+&{(*,۲.k^%4[6{8:[1{@B;D[Fг{L۴NP$+V{XZ&\b;d[ K2kjl۶nho;t[v;qw|۷~˴y;[K`{۸[{+˸{붣 k{+[[{;ѻۼ}[{H뵊p?pfԱS`+;q @&i(>ŧ)[ c>B EQ{+1jAhqqY9e!slu-%+,  p2Yr/^ \*ganc~-Īc'1bE ˓G:aѽG0@%.4C^tķb?Uvs^A>0B ~GJ0)Kv>ut`Kc?& & E4F3e~b^_N>-5B3V, 0SfC;͇Qg'p\M\ 2pz./^`0 uVL@:^'4 6P>0J" *0P[V@QD=< S0'J]c/67)Jt2'KN,I`#~X55HUmW,q`B+?}A9E, u Ӳ >@ p t/唄J& |>}8 Y!fv)BD85'F13`HdQBZݭD[n0-X]SNZ>,'0'f9 Ppt$m)Pa87tdv2n{p3@J*}SWv,=7XeN)+Y9,Pm^aCU tv'MSXI^,4~X,g4 @/6>, A'B`&tYZe@.+=xHNWZ˦[@>ai0znlzNL㞾6~8NDm @׼v9ѲU50\b5OR\q9Vks-mt~bK LTV~}#@P 9$(e [ES3'=uQMglu\6&A9ibRLTfwtT^Av ]G5UoFfզ ASM@sjsu&4( +( 䤒.] 8%VHzz0'ص `^ -"<\- 4t.g0MYb\q_g?Ο _ _o>F+RֱR ) )zEs&PNscHX F$U+vb)ZmPA?UIDwxXb=Wecyfej_yg{goyV6h(sViZcT穳zkjk{lFkglvmN_n{o{o7pgNq#oxqr37e&^C}tF)dSW}Mc}vkvs}w{g19d}xs7~yG ܕw~zYw~{̯={?pm|wW}fv~矽~fɎ#`M Ѐ dxFP{`8A fp^d4A`MxBhpo%Da ]*΍/a ôІ;ap6PC<D"&QtՐD(FQ-MlxE)RqhVbEqQ- cxF4QkdcF8QscxG.(X:^lg3&//3FfCFQFi Skk9lMs6qD;@GHP=[:{~|JǵX5j Ⱥk,0 ȋR4z4o4k)⺈8X+\"ԙx hBkB0h;DX6T7lXm+k3i.c\@r4*(N cQ<"(ppO4rWs{MncXKXKHPϕغPes 8F2"鄣|=3,=#@v618 `'|7l˄]7=k89pD2O -"2ִ/ Mxh),I/8>[P@[H8Ɂ:856WPa/3 D#p/J>e<#y S5@0 8`=ykS>H,RR$*g%t pRD PJx[v   k5r@N)`R0`) :@ i|Q8vv 72"#y0t#2tqdReH`Nr#8t3<&X:##+hP/{؏ϐ0IYJJ,O`N`^6}mގ @1`ƎL=CЃAh~aaaaaADȇ`ٍMH`>V@ M~a-b.AP]ZY쎝8%nc7nxc8f <ٝ*FbGc@dAdB.dC>da2`3]{9dKp"8haBbR.eփ8@OL [$p,`ΈcKe8Ɗ8Xcd9,6ec>fo`ieze= _0e]ePSՇ_a|bFft66ߨqfHkf}~ば5ڨ~=Hg.>kFGd"~g|gV郀‎ځ.9Hh=w\P8hh.Egg!\(iv.^bXi ~hW~Ŋifh6Z!eh&j.5Xnf\rjL Sked挨8ط-Ԝ2R=XEjG(B(k^A`uxݵeQW>Ee{j~[[< oV]Æ\F=n?lNg6Xg5y6j.Y(`V@ގFAD٪ 6꘍gCL&> ȁR ?E8cXc˭͚{vlNc^IpohfV] E]X=!_ϳWoeW`.[ _]ɇ[~lp->=UVk\Y(@Z":cn ݬ#p%vAHU~oT^Fr0h6_%7ZqMsn0rvcflMtNglRes=ׅҳhg6 -l~X@h$aPw@vb/vc'O'k9׃u`楞d4P p8N].E%t{0uzJxuh.n>Pig|+:貥 Vf$e j3X ZkX.l6 pЭHZIvC\J7M=Y&Ymxmx +!V3םg{  VPla!шT_JFefl8 l#muOb%-d`)ipZq@Xbk}E"zkbDPr^?Iv ro,@xd`!N хD!Zc!ۊ 7(!ؔc/dc5_dxТ,`J%{YDpz:_A&^II|{M0| @%fR_eE4 ~ALQ?$Ck0<SímoC$7A B"  @pʈM1Ҝ`[3X@[~@`8!m`CT!!V CamFX}B!4uEC0X, a ]<-%V%^"&f&n"%.$MN2ZV0͙"p!Ca&=-֢-".."-"'E((T)" A1+.,a"(V`cN2rE$c6G3&4K4"aք52ucZG|3#=5&a:j6Q}lp#?2#a=*@>@>dj$%!EґBCDv$Pd3]HOF6F:GpQK2NIVIJ侀$BNMLjLM% Q^LO~O %S QQFH9^5%V*STv$%I-eVl3z%ZUVeL$Yƥ}(A%^.=Z["\%`W]._^&:%1rPc<dbb^_>fEdNg^Be6D>pm&j2#KgffD?`B9D[&nnʙ aBp;T:(,'s6s>'tFtN'uVu^'vfvn'wvw~'xx'o6Dqz'{{'|Ƨ|'}֧}'~~''z&rE>$.(6>(FV^=HnbV(Nz舞膖((&i|̆ahv4Ō i*n;&p>)ߴ)i@Xiii`)~tIQ)Ԉ)i))֩ei)i$)*j&.jL2*F*:OJ^RRb*v*jjXzd:1$J*ƪ*檯j*.+6$k,N+ Zͫn+v~+kJ++}kJ\kռj1k#Z<q'#º6,)2,VlIPbBzlilpȞlӑ՘]ʾ,Ʊlո[,ج[1=,la-h0Ҿϒ>m9X-*XԎf -zmRj-؆ْ$َ٦<{„^3L3Jy8gn-tmI/8;Ą;8/-I@BJ,J:ߦJ.RoIp".ć%㮊"/+bnHh .$T./@D& .D؊BD/C@C@C>9`=@DI@0\qIFT~/oHDj/xoD.&?~p  S>Wh<\и p9+8p D0]-+xKC3Ь YjPT@B-όC$LxJ@8x*!8]?.L{.?PC=!32+ $k&L{!j.9x#%뭟<49ԁ#G-T.O0k ǭ @&rZqIBHo+ VnY"?VnBd=5R<ӱjա:{8p>?8ۀ  @178< MZa1νÕ;lE?V@̴nM . >#Q@&DόTDU_58H+$ l4uBȃ j/ 34I@DKM?cҍm5 ?CdOB5*+tTIBY*+28sDfq+++u?Lq0 ?Ā74E6%m9;{<@ZoV?+<2!pK|3>xD/0{CL0] v09L" ڑ_|c=@4|L0Hx@/8 D3D8<:3C8N7串mɆ;'|B-DHG xx7=y*n*{B# vtz@X D/4CNb? eR K'HC;t ?xdgu k%hȬ؀7xC oFI?D|EJ:Cr+ C`F};$9۲;c9 !uV垟D:ۀÈÀF3o) ;+|7c4"PLxp<ރAtA -zti+n,y{pJw89w+hr O{|>>+j`(f@ao?pl![(j? y)"[EEem1Fr}HvHlŊ &|R%*ˋ*.K,L+d2\TK/t7ۼ<'!><'9 5@]єmHC sOI5APROTUU]}u>RM-SaWZ͕^[iRECbmhcUV` e5iYgko5[mVq%u% |h}\sD7{]4Â8|eLHhcF%V ~`ta"UemGtglci, B|喱{9O5LnLޥXc+ iK#:wx<^:`cH`7Lnt{_ƅ]G:aZx!!I\!B(\ƶ wS:xsSj?>PAAO' À/QAj}J!#S v[cyL1HT>ds%b)t{bq {H:Fpf@9PPj UB5 Ԗ:epm"eL@ zITH\Uv%!w>v/GXq.ve$cٱF:s4َyq+5]ĒS5 \K5v]4 p(KoUz-M 8BN&W)H߾hUi7"a<d!QId*ӟ FX ^6H _v@j PG˂G?8#-Z\WӰ^`H<.70F_Ɲm=ބa DPf`fF+vTŮz2Ct  HpX-s#^Fx84f0IO<0/viOԠf.]Ism5"~͊xZu{ÕظPlcF0 Rg?ю6ld#[ Z(E:dVO b~xքNw-2W5硌NE TH F7ͅKKfU֗B$ , o_޸%)(1yef6P% HPl\ X`: WCަx,.KB EOL-3lobx9ep?9lG 2gBQtT#!t @ |c @6[vrE.}X*6q,Tp0k* D 3 U8'R! QLJʚ,EDd0Y4IZZY3}P7aGQկq9O|bք P:8.,Rf"A&oll8Fe!lORa6a fN`+tnz /RaVaۺ%f 4X {<, !H&P||AV!? @0zNPO^o elE`L$"j I#*!E Wf0A `/ ~.xͯ,~. @ >aQUpa$.vobX ?@B^'!40^"~*O]!,A:.p@*R0c @ @qP!f@.nt "A`D'8h.o0E# QeJa@ zΤVd6!QNA! %`0 fA"Q?@,DQQ  #A m"sЯ 64#AR$U'"`20XpO'(I# ;AP!C+ `N/p` `h oKQr\<`_r|`Dh`.OQ(r/5!zAs S *L 讱`2UaDMJ^&`|0~ @A@- A+.j %o(scAA4fpo=o (z.` $4@mOAL//f!(&* !,( Ɣ'!@ ' ?us?s2 oFrK gG=0 x"Yd  O14(k"b4<@'iX jL cNNNu3O0Pho@S1 q82@gaJ_֦t!ED!sUT4@5Y!Z_\b 3p?!PWX1e bp\AJsƱ1"z!`b<`X}QF/5 3M?azA6/܏ "^T__TaYG:v]­&B5֚-#"pRmcNS xv30@o @l1ႎ ?a@:3|[x!a~`)$Bb@i&6/'jQg7 +@kg*R檠 P.a4ҡRVgՅmU 4 ҳ"bMoO3Cc( [fuT>H%2LJz` .HmsAr Cgmio]ioDAp*y  :!|-Vc:w i~P3}Qumu{G??Wn@Mp\#m(Y~5tiJZd4n X!\_8|>vad sʰX5AU?U6W\A2`rp&"R>^p.@ߌ WO@ V$k m=cƚ Ԫgݨxoo{xXOa.!ߌذng׈g ~`, "Xҏ paJ zw J6;Ehn/ G9XN7WZy?Cv-Ҭ Vf痃'yEl<7"8Ky\_U[yq jJaM% 'y$Bdz9xV.a qO0'_\1TBC=ŅIZO x/HMx2 +xBSbwAA:LG!oڨyũZ?!x':%bD &X:bQ{yBڭ/Z̦|~(<7$&+۲/3 zuC;K1Ue~! bZ ̵_c[_{&@*F[EgeBa XB CA[;j6pp]t{;:ۼ!=aٳGhۻ婾[ۙ'µ;"j|H3|u77珴C<0ċSFA;\bbM axsܒmNqzŃ!eÓ\yP5vƣ\s}ݐʽeɳ3Y6c>]e#go=Me{^e>ߋR>͕P駞ʡYDc|~K~\퟾^w'Eb3WDf]u'+/3_7-%Ih_UdOKP>[H&k__s_nf$_Xx$|Wu_;C)[#_PoB1L`7$#`B"ujaŸ 7/… :|1Bj+Z  Rp/BWG8 @ʙ?:s%!*s9T 缐I:;=5֭\z )Bd˚uH) 0Z{`p E zՕa 4p %Z3"[&X@5.{ :ёǞ=aZ<bVܸh,䜁3@jnγ:1Ŝ[ WeN)RuM"\`)^ [5 6b S8T1e?ΐN&EdxD B8 G23^ØEx1ŅcM8 4/&#P0^q`Q'IcO(MhA^ $Tq$^` 6S$` 5vC2rNe@zY`cB?d0œY@#ݙ1@bSPi馟e~zY*@A?<7ɃL $ lpc80:J И@ ?`PH{+Ɛ^I>^8 C[N5&H##!X$(ԥ [{Eej?<ʐ#X!:&05/d$q4DZg4Û6I3X:ȃV@ ;s? `ܛ p?p0($b'YHx{(PYT S@ r9Y]7%5TTBG䄀H ! 1ACf/d#Ņ<1=@p'w '@@ dPa%fxwLH~$+x` 00A&2Jgta襈jQ SC1LꂀXa!$@B'd3Ab8f(L GT@dY@H:P&(@Й1cAF2sBB"@O~bH'CYIζرzU)C"rI bv!L⻳ȤUNaN(b0yYH(Are$ρ`׾ v- {w{]bz0s{y|r-0OV xCeDaCyR37;DLG~.8dA wd,$H%0tgGaxy!Q2DDڵ/)xJ#RLf=WQHjg"H`()od r@WdHv8_.jxVhi(W(Urx|LVnHxvO.Qm_h`0Tc!LS)mE]a&HȊ8HJAD uQ ㇂Ox,Ȍ͘:ф]Q >PqmÖ'͘? vU6PdO0ȎfraH ȏhd1Hi 91 )IƐ Hɑ鑘r%i'("$/ 1),.99;ɓXU6Y=)CIEy:?ɒ8iKɔM锅dOIUiWiQS]_H)`eigikɖmo qɒb y{ɗ} )Iiɘ阏 )Iiə#rgIiɚ隯 )Iiɛ雿 )I ɩɜ )Ii׉٩ɝ )Ii)uɞ ))iIv *Jj ʠ  *Jjʡ !*#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEIKʤMO QFJUJpYʥ]_ a*cJ[ x VkQ\psJujwy{PQpqlJ*n qʧʨZs*`j(oZP꩟ JjZzzJ*ڪ*ʪX@  jZתz* :ۊT@zʭ:ZکÚ j ;bal Upzz +#{ԑ)x,AJ`pKQWP$KE u G`M>H ++ן\%2[ pwpԺUw ۯZ!+rbou1SHk]ղ{_ N0Q4 PpK {p j@tp736z4AKFW  FpNTLP ` ۸\w 0 wp P jUpP 6)"! ,      "(!!!*!%##$&&*&)-**,$+3-.2-15-292345.37=8/59=6:B:#:-:-:2;;<;3<2=2=5=$=?C@;@ B@3~E!#3|]$hƁ0PBd & S:a/+tH&rSk3@GA>A>De Ywt@HG1G:yXA J̩܅(I]I0O txN pWlSrb  W> 20b1mKl$豰 Xaw|f=?/Xu`}*d`cX,}$~(`lMF> mlB0%UZXr]TeeGEWTۛe641bM@X2&@\*GkG\K,XՂ,靴 @U52z̕\69SD%#b(Dܕw|u_tJb!k 8,5Dl!v*" 7Nׁܻ ^ijАMvKZtl8h57kdSQ'.`[CbZ0*@7;u# W^)%o'~d*"ȵ]bC&4O9lx<&8-RE'7P3H1N1S^Ba.8eNٮh8J]1(H_tN%ԭFx0bgBI"{y&xӺ7RP9rPʽc2`p#SOXNY?2Bz?Q!r^Cdu} :5U󘣷Y֠B +-`l|%HWu2K _aqpt,E3Gge4zc@w/2fP`,36%ŇuѰG5UedhqbPlb]X0*G}wJQW)}Vuqdc/~CB\e1V@08l@' \k @ogFVXxrUj*Ra Gg@gmW)dtN+]_4BO@ZH5,qq467P[H.aSZ7.7 zN60)<Pd2 ~rՅ5qq0PD ` 8+ H `+rXuf" RcPCtS_ ` @ + ^Հ yTuW,;F&q 2 PB` ^xbLuK7i2 75F3UH%Gw\bw2)+D7'=E ]MB5 Y@ƋX[D@Qְ0`GUEAlQS2%D2D0HDr7HJ4],#H>!$@cO)2)8)b\SoY,x{='uY/aj>u\aHC'xV4E[AU)BK:ԖI&(_. LSR_-0" pƀ cy0^1 Pk64XZ 2pR?V\vְH*x`Y;&+M)`ONHdrL`TKF`%+0O`-Yh@;v"T4TS:م2` WF4F>& (_'VSu2` ` :J|֠LzUgI0 K@G|4#Kj 6U Y:V p3` PB/:(-5#2W$w0L3l3R232(ӧ]AVµdAx3XUS> -Hc7Zru\Q(`d Uzߢv!ZS7̊kIzb pA͚!%逦Q1z蚮꺮ڮ:ZzگLa1[{ ۰k_!{۱ j+&{(*,۲.k^%4[6{8:[1{@B;D[Fг{L۴NP$+V{XZ&\b;d[ K2kjl۶nho;t[v;qw|۷~˴y;[K`{۸[{+˸{붣 k{+[[{;ѻۼ}[{H뵊?fԱc`+;q A&i(>ŧ)k c>B EQ{+1jAhqq"Y"9e!slu-%+,  p2Yr/^ \*ganc~-Īc'1bE ˓H:aѽH@A%.$4C^tķb?Uvs^A>1B ~GJ0)Kv>ut`Kc?' & E4F3e~b^_N>-5B3V< 0SfC;͇Qg'p\M\ 2рz./^`1 uV\@:^'D 7P?@J2 *0P[V@QD=< T0'J]c/67)Jt2'KN-I`#~X55HUmW-qpB+?}A9E, u Ӳ ?` p t/唅J' |>}8 Y!fv)BD85'F13`HdQBZݭD[n0-X]SNZ>,'@'f9 Ppt$m)Pa8GtdvBn{p3@J*}SWv-=7XeN)+Y:-Pm^aCe tv'MSXI^,4~X,g4 @/F?- A'B`&tYZu@.+=xHNWZ˦[@>ai0z~lzNL㞾6~8ND @׼v9ѲU5@\b5F+RֱR ) )zEs'PNscHX F$U+vb)ZmPa?UIw|h>FA"B|aH+1JX PB @0l-=Ahs 0xbYiծe[qΥ[]y_K#\aĉ/f\x];0'6d @*IBN`DM PމT"~z z{TKF ,n!/<0n @|v3 YA` \\iCg0Z. ('` $(C lDK4DSTqE[qF{r)睈tޑO"q)G>zgIb=Wecyfej_yg{goyV6h(sViZcT穳zkjk{lFkglvmN_n{o{o7pgNq#oxqr37e&^C}tF)dSW}Mc}vkvs}w{g19d}xs7~yG ܕw~zYw~{̯={?pm|wW}fv~矽~fɎ#`M Ѐ dxFP{`8A fp^d4A`MxBhpo%Da ]*΍/a ôІ;ap6PC<D"&QtՐD(FQ-MlxE)RqhVbEqQ- cxF4QkdcF8QscxG LfRd'=IPR$e)MyJTRde+]R0>cRe/}K`S$f1yLd&Sdf3LhXL $%#ҏL#f7pSܦ7yNr3dg7թv';Iz̧9~ @Zo4G&QcвRSI̚G'HT#%iIMJGl>.(X:^l&=NzST;S іr肏|¦=ejSTPR5a DRUU jU2ԫ p*¸ԥUsk]XV5`k}K[]vTU%lTR5|W XFvj^qlg=;R֬qeUڶU_mk]Z5ֲj٢Zͥmo}Y"ZpK-֪qFĐmu\]rӸ4mn%纱%#u^b.F X±`%JChDK{y5wvo*_FD]\w]P,m\-0 <.pq&\Fc`?rN1 x `LX_BiQ ,2#av|CbλRG7Ġ:AЍ_WAtzhAG!(@P8 ^z|^-YQѲe18 *|vH կ°)A|^C " x!M*Z^Fu'[Yᾅn0$;VDfdC WRde&xD=1P M v1>J`zP@#2~nl0xG u4Di[]C92(Sp  WR ;l@xD"P-k kPד M|%T„ 8D>^1qxy %%@#7Bފ-] @` R^jߐVo Ҹ0?q)4H$u]Au&, 0 `P#lut8K1p7h| 0$ ppP a _a8=8Z 9 {AC/ˮUz(;c[@8%/y'Bd; xxB{_5P z8x k3٨zS9?3@{0B@Bh8h! w= $Xj05:²0(yA\; Q[ ^ሥBS\д ZI*  cqk{<:bȇ~|ЅkSH(3:BB@ d0dBDJD|ň`DDc V2.)-k4SVt\,{\E[Űg3&Ё//CfSFai9ą[9l#nxbɸ! H'H DE 9'Kǣ̿3/>`lӶA>?Dz BudG*Ŋ:c]5~Lx [JռT V8c R"dy•8ByH(P-LfK̝|j66öC#/ P0DGuB2贡;5C8}ԁ x`YMD#P-W#8̸,Gl?(싈h T\`gHd/#N8o?@Co<lb3 4Oph2P@x L5 x9Æ 7AO-- 8ز.+0͋+*/ "! ܔ'$0 \@[H8; @86 XXb /3 6D#pJ?fj$%z  U5=H0 @p= 5zՃ>H,R$gȥtpTD X8J[v   mr@$5*xR8`1 ;XC jQ8v v(72" $Çy0tR%CrfRgHÈr#8u5<=X:0$+3h0j{+Ցϒ0KYLL=ZLZQ\ZyiZ}ڜ2Z#]5Zu=M[-흸[-%ȻmC[}ݝ;\L[\Ei)\\\E̍;N757ܳ],])]e.ݺ]9r]?X-M@' !7aM⥶4٨/R8A^^ __-_=R(7 ^=/z2hPU_ xY-#ލU~6OM`^`n`~``>hLPݧaq82+a쨈!3 ߘ~8= Gaaaaa:H|  ] a&&aPmeaJab00&9 ^m_eݠ؉xb9c9~:'@pս],b9/~B.dC>dDNdE^dFa2v9!N ^cU@`cMd(!|?Nd1NeU=dŤ)er(ǂ@ ;d_c㨠>QU^ffa VY Z۳[ `]_F@'~Z}=zPfneaiNj[ꈄ8]~nfog: Q^|JwnhUA00yd"J>P⧸ ~gh>+6Eh^i0RhgͅC~hhTt]t2G`ia6(`eo_ ii~ P06i2b7^jffxjij[Eg dHūf]iNj^) ph~;uͩ!uF`~C0nhF 6XمؑZ6Հ *pT(]ghpeΈ >q~b5ŦN7> vBv.Xg=8Kz9nmFX(`j~aAnfB D٬7 C M)> TE@cs|l~ofoJomkfnPG]X=)_г%XqebN[ ]\l/no&=X~k&ܩfZ8@.ZBBc#ݬ&q(aBPWoTnFr0 iM6_(j:\-r}sNro`s&lPuQTtshs@߅hgCZm9 Ul~`A'aSaAHve_vfWROk<vfedxb p>T$ӻcpMJI=U6O/zw{w*WeFTv^-O ngob>;N`FUp|XxzJua1l?xij?Ik&wWFe99_qΐ:Rbv6vBfC8~u>vnF`\ws]Zkp?EvsS_kb8j;OzCunpwrXFvfm{/h#Hxy:=_w[}cgDݢWIQ}73X|;d z@Vp0>1x?{x 77xF*/e O1\oG~AC& uڏwBc|,h „ 2l!~Bg"ƌi#Ȑ"G,i2$?J9j%LG~ 4)Cb|ОD,j(Ҥ$9 G)ԨRRj*pE E"ذbǒ kjתbYg0`Z/`3U,T)Ċġk!yX5H2>y$Wbr"?^4!5Īkouc_uI}%śf(N8h DQ! !|%scg!"9^!IՀ!o( #ET$grT`GjY eCH&Gib"#O397yv<#}&dfDn9(@yQq!n 1]T 0ZWṩv\2/u=*sJ#H|y[ z)%hnU\J Ű*P&*+[SD uУ:|"G%E{.~ẮUEOKG@]TRHF \P%=. KN,!32F7*vnj֎ {,.$)3d d ?<@j *LP}<4HF?m0"3n8ⰙQLDk${k3٘! `K=O-$Ie+H!o@tplgG !KԂP7\7a=*[Dh;yr ۝7ȕ-P+9!~PuT9#Șœ.Ev@N۹Ρu2_3!=J&!I4xgFohH#ye\4Ц<o_ 7)^ $, x,$~cS#@ :E00qx<`-@@Dlt!J4Z7%^"Tч8ZQt*0# G? |F49\P>3~cSD80DqЗqyh@nhCv;C^j#o{;RUi#&ED?6\EvA>uR@ Ƅ\d-@ @dG@y-< ज椃8P,m* 3RHk*IKb0'BQX2 N-L~J&=#&AZ"Lw?tdghy>YE,rPP0ֺ4FvOdŌC U(c8=L% ԾRk$C~I3QMisī"hdkPa (p5=~qߨNSc U7Yg+|LkqYUOg&Ӭ5@s,"$'@ ɚz*`kvÌ0ъv#i"ծ66/%`{c/  d` r[GJQE&enU_2JIZջnZ|5 Tz\WPa/>b8`S̆lMTK!k7` Wb4`Ix, 19!k6M}|$<-n[(R/t@TS&"⍔dg19Gv'#&yl`^s'_ q $]R .B*m<|Xp-u*Dkh t䇪Xh|Ij U1^Kj]dm`wrh PzI 4&5Rk5ȳT j8? Zz*Td5MȕӉ*`cu[t} U'0 Y9܅2 $ 0Аev"^%B[v㝂'app3ʹ7n@=Lo7^0&,ͳiL6dⓌG=169=r^7]|@? Ax 6 ۛm.׮ǘꖻ|'\ Եz(*PcGԊGWw[2PQx;ވd_0 % Q+GE`?i8[ P aWr`J yKnc=3R&zS'>bG"[x~߿.߃ P%4R-*&XQgu b^SR_?(o@I7B,!#02!F2aK8Maa]3 X@`ü_FhaR!| !  ~KC!5\F aB]D:@Ș?$&""W!"**"++֍Q5"\<'B].Z,Ɗ1#2&2.#361j06I ~/ A0]t'EQ 8J~,lX#7JE8cIPc-#;S>7f<$="b?Ā _6&_?@V$>A$qdEYHFvF"G$KVNIIޞJ䲰dNMLLΟMMQ"#=P6e0TJOS:%V^ TTve=%9^eVlDz%ZIUΔX[bYRdZΥMRJEJ%_D$7ҥ`nX.b^ Mb_v`>&v=#vP.&fbJ\B&g2SP-&ffCH\vjJ.EC'ifYQnjf?ئ9Hh'qq e!^s;f &>C(\'vfvn'wvw~'xx'yy'zz'{{B'd Et}'~~''((&.(6}*'urE>T^(fn(vh=x(Z芮ƨ((Vl.VxyYF9 <乇\&:-G1ϯȄZsVtN̹]G3BȖ u7kFp]GX^!h@h:Ho$@x;qy;;;U;]wID&/H \`9x ?׻۲?@&~ߊcDwbK{3}73zoK9Lѥ$@$\{`wC;,+w{Wq1Vs1o!3RT sT1 A Bw@$DN۞:ׇ~>{٫li-XZ+q]D9`@A8_'߀xO$X XZ+v, r8T 84pp_Bl$ @K8O|IETXcaJ+YtfL3iti̦pxhPC 3!Μ55s&5ȳ70|w  0k/ CEQ0{p`S*i&pϚ>; VǕPIքd1sHGջ"uB" pU]@5ݕU< UcS)π,(A|%K>*|O@x2P RbFDQpl%\IkѰC9\p S ½$Ϧ |(rJ'c,ܒ._#SI&k4\l6圓:Us%1>3@;=D,4%=|tɽUJ-iҤ.ݔNgG!(I==SA5V]TQIO_:W͕^u`Kb]c]A` VLvlCJgXmd=\gm}Wk᝗Zu}&ݗYyW{33>W)7 W\M?)S9V pN6-8ɌmMmm`7ܛ.b prtHtYڣaom\!}㔩:˕+v\8?z4돯H vT 4Yn\?,0x<(GoeH9ėZ_a\A")0a!BV§b}HQ'm`VXa4g?bw6H4xr2Tx^2+^ޅ0|5dVQ0%2aЗ>\wL0F R(f @pH (!:2V< V6ݽ. ZzH+ 1bx4$#G,/N!y@NGTA N9D`SE#0yHdž\B4a 4Qc6}ȕ `砝? f8a"w~=, d%%H>–4.yK_FNk %|`_HJ1 KIDx h :NwS#23R99fQf6_`6Z(p%Jw*! pd8Z`|!HZRtPiJ=M~ т>+H%({R9ta],7aS Ԏt\YV78;[e"/hfNw&(6afl{[G "r@HH4(Ma9oGڸzaК_:B-AX:"LgTs"أmIdѦIo< )M͛6&*VgunY[у̼f3IA䍳xphq=tgB 2@,sK /Ӳ% T9q hi ,$ `+{6'Vw6@1Bnp01Q/L/ ;? /t(Ώ1 [B0W Ɨ ٷ_An^!p&y̓o{b)D)a1 #` =@qܓg9XhG#f,G0b9vsCBAXРխAN ^׹ֵ[X=@'\Yz%H,ι=~WGꄘzc(6Ѕ$|xVם#[Lm)k_a,c%eI(ֆaǥmz,i0nr }92O*wpMau0D,!< (j)+sx.0 /a KPҕ>a^ZK|Y_BO]M~DxaJjQ06pqi(z#u<Pױ\ I;ӛ`F|=;1c@AhA 7@A=桉 @ pnXPN{06UpY##\ /oBPb=.9dCs@.P @>04 Ӊ68NH*Vq{NaKǺpXO8@!pi Z 0*^":., f&a6Gԯx!VA o OD+Xr UAX `fzf6Z`~>l"`ZWO|Z{aX A v| ┯ ! 8f UldBm6J'*%pE  Fr pA` M@/딠 8kpR!Xn %4$ޮ%&p&tRb `<"q%81nYfJO-Fiq@ Ơp/R&QBbjx^C H2:j. B&& BEۮoO@ X1hW6a1qct<-%d =!~0,2=hBr$qr %\rrLӀsr'{rh0P%0bb)?c.ACZ+\l2%'UpRgMf!K / h@&- L=()fJ,4Q) ,H",` Sr2_-}a4R?@O`lM5WF!jbah0@.tB1US!89Ӱ>Fa6s^1ꮎ V3/BoA12iA(&j ,@\k'%4!>#`ABm09! rF F lDQtFQ#_m@i @!a2 !S"tpcom(skr 4U`|^| rC PaE/ƛlB9{%  C򔔘iMfp/C@05. nBڴU_U&xa#G%SXt6`8#QMe#IN!(sPRS7N  F~'+`%%>!UZ _]u#cIjT` %vJ#L+6M7qc gW ^puٜ 0cBpxD%ucUixSbB v.g Av=n:` dhDFd`n$*@l 8͵fmVmq:!14.ǀni@`rHN q06ԁUjpUРi @k,`f"A]/sGgaRGCsO%OFm6MAq(m_n7!a)*@4>d k wQ5LFa7-I2 Փ=ٴM×p|d> V% a gl+9fI>_uBQ8f` o2LaU[\/_.ԕf,Az DST2(Bg2 `N[7aUܔvofa4`tP&& =Xw$uﶀ⎀` n'Ip!x_B& 2%8!isX<&Kj- a\Ev `, P& y1rG YYrAM TЬ L!hxϋ9krN s9"z+?xagY!&АҠY"% !"[BX~*yY!`  ^a9bd@tG&x?  ):؜1J0 1QdWUZ|%z%X Tv9[ЖeXA@Eaf!Dx0Ը}.UzYƕqڐNG%>BIŨ/ZA1:EN/"G fBZ=q-9!t֞5f8L~(?k&!V[۵_5a+۠Yʐճs;4zca! Ę @̸[{& .r2u{]A Q>@[ƛ;[>Bg_) ۾Ъ'tۿ=z uȺs{#qz` ©z39f1 Ccm[GhS/@ yc܈]W-Ns-^`ǻ8Mq-|||]+ɣa[;<\ō|IQMzü k\\\ʟAe|^\Xе|cb:>Wk/&2]1?ݿC]ڬJI]UY@VcA]{؃]؇؋؏ٓ]ٟٛڣگ۳]۷ۻۛ]"=h=e=ѝ۝_=]}\Y=W}q D׆^K>m^'N )3K,ޯ5?J8AKADM^W^0PYc̿\kYwsYB烾}^X^>Xߕ~V駾ݡT곞֭]뇾Ǟ͹RĞ>_`>^ >u _Ϲ[&+?'I7{0?4Cq<߇D:[_c_gkVRw?ߜ_q(@`y_ѥ'q?(ZuB{e+ao6]R_Ÿ S=k>qBSY1#wkj†!K,hI| 3̙4߅3Ν<{ 4P,=4ҥLF3H8@ `,곡 V#=kh&=yr>8y:} 9R3cۃS8`WIX0h2VZk $q2``+$pMċ?ܧc̛/ك@+gʛwQ%ܳpdgZzB@3cM ˭"@Xs W&T|6 `G# =h }7?`Pa0DD Z `p@T5a 01!- AxD"A `\: @`8mb@7C g dPuU@찛P puυ"֊pb vN,EmN<$ (f()Put(KWĵ$A( *qJb ;IÖ!"xI#DQ 2VjMd@ - X3pd,3<IB"zqS a ՆEkcZU> r! :t% *hѤjڧ.$\&iyT oMCagGI ;H3ix8] C6?V֢ŁU؜-6`\*kxG9"qCXk$|+= ! oy˵/A_ Zۮ BM `C|K]p}&EPtqOQ݇%$MD;Fp92}Rg,@|'-5giwfWT/8H~.Vg+Gx-bMׇWHf a Wf- F`thGz_bz+CD2.LbCq_gCXLE%jMWWw!YR7Rx8+f- (6LWk8+~ za"X*ah0nl򉒸YB>RQQLHrH%aH(Jd(nfQF 3H<֘j}aL hH1͘XWRb}ȍ70fqaQ(爎I +AɐI/a YɑIM i')b8㶒/ 1)3"ْA9;ɓ=)7z>)CIE@+%iKɔMaHi^UiWRY_ a[)T)gidfo ql xȕwy{ɗ} ))ty$B ɘ阏 )Iiə陟 )Iiɚi[BFaBiɛ雿 )Iiljɩɜ )IiYqɝ )Ii牞驞ɞIiɟ *)j ʠ *Jjʡ !*#J%j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUY[ʥ]_ aVJej qpmo q*sJuʦqp{ʧL q ]X@jʨQ X yЧjC*ʩ꩜[@ jQVય Y@YવjZګVJ*pPʪ:ګUଳj z Zڪz֊뺭**ʫʮYPU캯Њ KJJJ:˱V蘇ǰʮQ`(۱3K-5a#Z$*`q[ R0X`5KU H O?J+-x5ʮB{ x΀庴Vx *j2 bˤ 4F':9F%-1_=pL *R@RXR@z+^Zs@I07D v ` `gϠ )PNq {[@Rp X @ ,jX+C! ,    ""!!)!%##$#%+('*%)-%+3++,,.3+15,292345-37=59=59A:#:-:2;;<;3<5=5=>C>3@=@oho2pDnqtqSssts,1uuuyuK=vv4xrvz}zz|z^zFH{5|}]}~3~eWƂSj+ 移0+Dh$W/ ijP;\BS/*lp^CW=ihjʈd6jT>ӏIq&=Дs?R8y؝s j8PI df_dam#&Y*,^ vpvu$oUY̱X|0g)#)iL2!'w5;PC! W[jj;i58 ,)JH p`,)4fr/D 9뵬 Qҧ# A +jdge9+]׈:x16|rWL :ϡ;kq+?YRHyG.:5,_ >j| @wD x\]h+nHA 6!U:YlWz7wL$C' ;2f OU` ]/z~`.j"= .V.SRA{؋,9_Mu#ག˲.{%dކO\o 3"|Fo\=~Ԁ"vef,XBtc!4RqWvUmC^PВjR*baS3$9;{`<*"X(0m5Fc؋w1) p 'u`%E@*Evw cP;tsSX p 5 X y0uP4 k#dz' AIc&r&tS`Z;l2 VbRxwM$:67KXDD R ]O"V"ehRTF]qPREGdGf}N0B8)[F0.@0f@SAIVr2`*D0[}+"_u@kAmE>ZR=ed*q'h'@?MDBs))L֓=[UaЌW%BA(Ǡ Z -(HX1B}E<@UsHMR6[JL۴NG[+T[V{U1X۵^`˲Z;\f{h;Qjpr;ln;xzkQq|;q뷏Tk;=۱R!븍;빌j{!_A`K˺ke++kΛP:0Hbq a䛷Û R E a"^{ ~zB Qr{F3'ռyQ#/Px6fzVRֿhKa~4;|*:c|d;dQ&1"RpSaP$$j P`=Nd .p/^a &e EF5 5Ss c p|2 #B?0P<_a5 wo\ a0K o  j; Rč8/ Y!«yf~rgԡfY>;eR>&槕SE;,G=,.\&Q/A^A?/pB` 5cCmrZ+>&% );@?@g>L2ԆBR>|4:՚]eR<Ϭ0XeR2e<`&p ?gXU 7Mp@ @hP+*P V''C 5Ќ;I -=Ԟ@cuF΋ &cҲQ f_l҅5*Q <(aAh-pF=`*:~A4+ Ta;jpsd>` z#ј-:ܶ<<dXAZOh"dc~46hЉ)}P#rZ`*=]R0HE-}%$Qt@H%'n"@S݅٠A g+`aA݇iLCFl4a|ka% 5Q)-.SژehA7x}N},ء-;2Ev1@)`\/DA&r+Dsn]rJ3 04RMp+;b.da!4L$CS7~`8&ki?L^Afs [mUm֜55[`#>nn='[0zRbT@i_ 7 ](v)8ՌTr?]m[׭3sGͨޡGf +LtRmE,w/rfmӨjĞcYl(f wo^U1pJF?E2:E2XS^! 7N6bqFE 'OLe?unqx?<)&6a4EX-dU]r +;Kn;//0xy6ػvi6'kpJxdyvy?@)V U;6`*Rj ]THP˼=N]?0$Q.-)P6hroRЌ2ޕzF5| )h /.ԆaՉL .] f҆0 T1罗j) .$tsw644hV`l}_`FnM* fΡh&Hpm`rshr}ҧRrH-[8$vff&~)p6rrAu)dgR&L@A .dC%NXE5nG!EzI)UdK&3"dvW& JxDPz` !դ/:*U+ p;$BϠC4a7a0 A&<| <\kB\h~iV@w0܋TH߻"z΀&PFɕ/gsѥOg^u[ĈRwG@q$d! @&Rdd#yHHґd%IHZR$&3IPRғ e%I}tCX1VC=n_NG#a/}K`SZrUɴ-˃Ĥf5yMlfs1[LV1"wERLS 6ywZ3t 7iqT9au;S$hA zЂT?%zYDhE-zQ*F?&:ЌT+UюR$L2jaD,iO}j~Ѓ >3S?;iS_u,jl?[*PjWAjC .Rkek[VSeeY5V2Х4 "D}_z؞J5\Xu]*; & ,`9Kp%mJ+VԪZ+eLw02kلhpa/WJ C+[ZZqHI贉y*U?&x`?ц6AfB1 2 x {yo#G!iMn*J$4Kw@#u|K~p!?@Z"EnF/Z{0` fF4E@!x2 <Mzl@ǽM{6" m&& #DPBc@*RoŮ.e]+Az :vCo:շay5^|[$$!jkG09N1Dٓ !N9(wc+:>k&Hr;BZY{[{ p?в@=Hգ pC 9 (3O@+A[- 1I;ッK@4iPcPkP85%D&|S> ,,5|#Hk1X6WFhC8\x@400g#D4D 113v^XGEL5h(,NA@<@%l,sP2\|bE'h=3=d|hO@ id74cS`H AB(|D[8F6qH BR"Eh@2PU3 H>(,aH| -ʼnĵSƃ81X@H "@8 V h*K|L ͺq< < # ш +Ȣ˵x<̚+GxCl89H @ۜгH`0;;34C

        PF FX K_NWD_>a6HHCR0|!ݝ]EVsڽ`b!f`#fūC0?&{Ma*b+Exa^;wᙱMچ0ѳ: b  >b# wש]e}H8`Hha>n++^=pgvbcޝYT+MT6V 5dfc".Փ㞥c)dQN>naqW{AdQU_hx6dJfcd(&| PebR;6]뵋JeZ6b[dKf = f|~B(ft;VW~ex"&bf5mFīh~BrtNhThUvfg=^+Y#!>k6d͗c^m`pxygj"5ef" L{Iepfi6eixiQ`,hhH1,4>c[d@H=},%m5i|8;(=^a.G`6hwꞽ ) f >c Jfk }adu녅Dk?kbHkUhۃ;]vI mhxW@<"u|D =cҮc6f{@mCuڞK>bԄ ] x0LÃJL`b5nB_F>cmnFȄ[&Xكx JWR<(r95`Vrd[p)nn^'e*>pH8=bnlFYpI^l#Cq@q,RScۭ6ꣾ8 VpksqCpo q ?4Nc ^rcc7`q`֗T._/_FXtFotGc+m?/5hl\hظ&8TEdGE_t en/EXBu[u\Y>E`=J'6_fJlA$`9_CB8g*u?(Jqwr/D-`o꘎ms7*sq<n sv{!gLB~is*VewvwE>v5%q@n{KZEx?>G D :rD7GpivjYx1Vxzgj_9&Fn|XyyBv nP_7EhN6~(IVM!pbcF0+x^~15eFab'0%xo]FDOTWo|d&:{owpgdK*G!`PHHu{QE}(= smC`:ڷr&t5& gwC KZ҇b}Jߘ_) z~d0 <Ĉ=|&Rh"ƌ7r#HBV G$ʔ*Wl%p$W:w'РB-jD0m4GXcL2PI*հbǒ-S~3\-ܸr'㵇¼yNǚkҡ8i2nqۙ&aRlL5og@p4@{NԨ^m6nhΌ7%{pBnX3F/L92-3܌37E[(@Saj(lبnku`x%qu s],u0XH! w(yt-h|]GSzlA`o!y$Ec "Pbv%w]a$b_Hz x"؊B٢h @ UVHm V k =R旉>V!(^ >BH"HO"< ^,G!8):pr4f7yZ=tY~*]HzZ6#AAMR#~`eFznL,er!P޻ԍ+ְ;[9bDž5mp#!7w`aޱ k\[{έ/EdBf@Z_9Ժh9pQN ‘"#m,#2n@q2|5Ffǩ :D<'̛2h2@- s=D51ESgid .hB:8i]5G9`d 4`'Ev:qԎDsiB1ՋドO; yN_~Q暛F>?,iI@}?Yi:o||)!Pk)$$ԗ8"B8A'5-oc+FŅ ~%4=%TfAp΂G@$uICW" d8E<̈\H2h4jkʛdk3㔕ɧR =D$hB L F!J? &%daH$<ň=[#h'b$gl}0AN>/cV6\DTEdH=gP^ A΢%.syKzTh!~b AG^kB"A.Μ]&=K& /MC@!P{BJHI0揼D;г$!&HAM9RL-E|U)!+ro, p ExA΍QR;f@I |)L_ o_zhc tdf*RW %*P @isZ`D;p i85 `H"m=(ĕRB#uuT="fᐓf3kHa`@``5CDN0,V }]YiWWE) M݊3~@DF륻5V*RmE i"ـTtCfLmU.}KAs\Bn:vz+!2|#H)N $JF L PXmEYhj_’!= nHmJ,wNDOd5p6T;<`YD\a٦Oi*YW$gmOcD#X/rg|IM@W`C MT財#2qLϓMӹ6OwMjr#β[W"a8j aT !!PzcRIk/SέsͻI%Z@)vQLs<$0lMŃ-BzB^\Oۃ(R{ޔ7%pEMhcфK3 < ƷSWVab|;J@Hל|"v6nzg­#T e)+A8bٹqDf:WSj5w01xC*y `y͏3mkAoNwz =j 89о #Kk!RB\~vsO!p}7`K,77~-ͧQIOE]i nE^MUx!Lue YzdޣJ=AP@"a-Q@EHР۠=#y\ս`4q4\W<8>`>`C#p!aA2\15D@CxXB@\LZʚE %\"&f&n"'n%R0O$zB6bM:(CXM0`-か*zV!ZB"0#11#2c͝)_*梻4u.Rg0$N?8#99#:y3b jcU`ch>[4D^@B^:CDPGIEF F!id=TDGdpD"I$$M$K3=ɤO:3M:Nθ$[Rb MjPQF %L.UGSSNTv%h=^XSPVWPX%d{ZZ%A%^b;?2!Z%`ڜI^^&3Dre`6&إEd\֖b$c:f[NgfGeed(fgd~&kGhh%j&Y&/&n6kh>B?mgYddn&'\f2f?;_N'uVu[?&!Ѡr~Gs*Ro8zz'{{'|Ƨ|'}֧}'~~'g)h&TH1(&.(6>(FN(V^(fn(v(6tgM색(((ƨ(֨(樎(hp\TEy鐚̑R[^c`i"*i%u&ƒIIɗ㔂x4da)ՠ))ɩ)ci驟*X.{%*FZ^*2jMf~jknOu**Lj2*#*֪j*术F+&+>+jF^kLa+v+{iT+ 臮++Ϋz'H櫾+k+X'k,x"lNUxj3^U,v,Ċ~,U,welaŢlI&1ˊJl)>,\jy:vM~L6lJmeZ-Q-NZĹ~-{yvmBPumڎھٮ-Eb,ZnlHC8$I=\@@߾ޒ.fI4&2$GC0@;;@C0 F|E H \mn.ꪮFCDEMݺB+CF x@ nH.r-n=hrdvw|n;.RA *TC%TND0HxB&%O9EدG0<o@E AFEdL.FwK߯X/Hm-FC0rj@G1`SNı1Q{EsЏcx?<&)8qY}TCSF(p o}x@[C&.䩤/F@(@5\E%HLX;TA0oxE8r׷O?K/k8rSȭ2O$crې:d M+[őemq!&} sL"t+\&Lj|*2)R.{E,%t2\M8M7ۼ7D0E}MFBL5RRI7$R9/PU]NY}F-S\rU^}]HZ -_="^]vY%X`XeWg3ڋR< Oݶn-v]hx<]# SW` x-H~maL!hjf=c xhB`x+FeɁq£gfy "a.S0}9fPaTvkd ƢYH ( l:m; Ph!gPCoXȨX[Ʒ.I%w,oa2gMqDHLΧPJETu!H*PT? <ώZ"[˥Rw4V lh=;- G.Yf$ ` 6ö | Rv4ًѣ"Ie ߵjb[i|A\ -H2BLpj\ݳ+`)O/h՝+((Yfw'I % -}S裄j@n-~#" P|E+v@"EA50. ۜK\|_]"?`zut=Fb  .1n˕\ F@̀k3dV`&br9!x |,qnSb#_6V>4)9Nb64I;u.DbUetCu9G=-H6mc{Plg@ & -lAȇ -!|!>;4o/vmaSF(lo)p{``[&@ cp;j`_B@ =t +x`r10Ii9gNGLUKBja$V,2MCPE%FkN@`wΐSbCfk X@0C "E굦z8+X AX.ˍЃ~#PA`*Fzk0B"EhDm>=f5x.=n1[>-߼ yFH;M/NE.f|`C h ,`JAC!/~/l\faď(@@l8J̎ JROVoTA-&dpd<"`$ @ .`hwKKW P 2oF-0z`:>pBH-d^P!+/"Lă"!b!& Еr! HAt.، Μ Gp@ HNJNtB@"d`qB `l!z0dMT! /4O.@/F` `ADIu4I@@)#B< Cf9+A ԮFظܑNaa*!&b;1!*@+,4/*%/qtH 1玀 RQ(da"3R 0 !'+@!=^ -l#b###!f- 0爍" q` 1 UA/ epad0"61,`H$ dB 2X񎪲` 0na+a RK ` iXFp.y.E(D ZPx$BD7a( r!x f @3*@&$]Y,*nْ# b @ VYA ?i"( zS"S? 6!`322:/sNa$2VrQ%l& " i!@Q  t\0Z]SX"*Tap0m Qz`x ΀)OA.ci"/"@' -1!jv H AGI%PjQP.X p@ RtN!E 4hT@"ARAT0Lc)&%/@RAra,t@-,h* 9aTi6 ~Ao"Ͱ!(!!\VWX+o;n&Ym^DGW @|e&1#^quE+bW@GOA ;eND|@1Waxa dd4"6*bWVlu ԡX8NRp5AS}[ɲ! |/8-"Pq"6W#bdwdGI04tM RA.EApO@!H^Åj+epgPA!R @ TsFP<5~m*hA :mFjdӎD#Zy~5ކg;!Lؖ5Qw@pVTaaߓmHu6Aw,R~5_ u@!C |GaS{v}3Z ~jP"a[VR 0nA `qI pVgQxG`d "@"ƀӶ@LՍz,W4_! 9a `@цS׉T/F"nh-`"X?e ?U WDA :z 8AXڗ\&(q!& #"T/zʄVaޔ` όgo&bU!ئ3yC;X_@ b 8![9_Y`f V)9z4AXWHP7ba ,bAa[ye]Nو+rzXyI`@TE9ep A6@L0:¦:z n)BTzOFK۴OA@U'"p[x+/;h>Fv{۷y#`防ig۸۸m۹w-[[s7q{[gļ۲﫾E[Q<'s[+nw[,*7'*. SJ<`.m>_F7Ģ*@H!id;;0… :|1ĉ+Z1ƍ;zȑ$K<2ʑ8c634&1C>*Q \!X6@5 \3Std˚=6ڵC| 7ɖA0@ca!)cg֤g-dA;FA0)^qI')a5΋T5Fc9`eir<. -~Lx-炋 M1oa(0!0RT.\XƆ+Y0mz s0a?%)naH(rV(NTyϊHC+G'-Çy" S$j VuʕCDb)\;e^~ f %WfFRi2p/TsA xO6NLՠABZB 0mP~0!P [C((n0@0M!p?Pj=]@;h@Л ;@K?TH38+ cdBSn« 0  1T id_A@ lZ&d \Bj< K5D /; /lE1S>(fzwyfgigxGU?jV2@*@O83@a h3@|@? hջ|rT`Çli8Ie @%8\7@iƴ>y_/+ AlZ0N VMTpPtMx:AP9q\3*^#!pfA K0$}RH4o Z~揠›h>e.Р7CA &S9 &n%Y]2(b+A8,jq\4 F"^ 3; ^"*h]6Pz$ E?l .@"B.QK qyV&`7U8! ݛ {Eݔa WG!8Ej1X:A@a?^ 9'uHH0JxsMaC tu*1!x'E`,dP\&ƅH4T).|3w)GR D7 "d]+cr vq4M!0MPLP4?0>pAN G娣A[n':Jur 50T Ӳ~@D 0 P R=H(&4G*Ws{Gd"a+ N~)R*X@YA#+Ǣ&x3dCƂV߼`;L?H!vEWHx]JY_A<#[B`p-F_eJa>TPB+Gm$]We%Yǚn 89ݩY[AF~vރUDnozN9w,<"s (z$ɵaZj0p! krO'B֩qF2]kq= Y0ȇ=!rڧS2Aj=Ī;*BD/ӥVyܐ )BD5>k!di  CF'+ē9'YUaTCy Lr3,/4@zԤ>Kl1J$wGcDptd8<elU, J&dO!?7[=5&wď3Vkm'ם@Q!3O??&D{} Vmu5#xV潕4?SM+reLSg7F8˄!נYDC0'լ <Rѩ0!Ж$SJ303Dqal#Ȏ!3լv|(ns40u@#P׏0+z{3wB0BOT*+J0B?7M|7-l! b6@T&@6whdP|C'$I:(QN#-y8yGtass+fw`jqhTHt"6[oh738p9a9H:TvhAx*/Fcv$V64p2uY $C?W?_H]%9' !W yp8S aCx6ԆG{x$'"h3Ȃ/81Hxv` %\ǀy>8SքyuH@)\_hSHfb]a ;k&$Y``xZP פ((^B(78p؍*(HhbD騎Ȏlah(()A)IyÏ8 ɐ FqYiyw !ɑ ")+ `$ɑސ,)3I5.)i;ɓ=ٓ8)CIEI@ُOXKɔMO Q)SIUiWpXLa)cIeigikɖmo q)sIuiwy{ɗ} )#1 ɘᘏ )Iiə陟 )Iiɚ隯 Iiɛ雿 )Iiljɩɜ )Ii׉٩ɝ )Ii牞驞ɞ )Iiɟ *Jj ʠ  *Jjʡ !*#J%j')-/ 1*3J5j/99 s0oA*CJEjGI} ;O 0YZ`WY[ʥ]_jTPJez0`kʦl*`q* o]Py{ʧ}V JZ{*{josꨏ:uzjjT@y J)xZSય *V Z꫿*JjjzS|UJՊhwʧJ]୩x zJVୂ*zGꪞz]j/xuz :ZjT *Jk&J8veoY0u PQP˭Vk;˳)Ph@ *֠ 1; 0 ] y ;皳ڳc:Aa@*E<:7#}8C/0$/Jjo@`` ^`Qp'TQ@NJJ[- D S €P 3 : r tkÚ}뷯 ku0 ` 0 PQ  "K˫K/p:Q/pd2:!88 28웱X_5-Qu۱ k `` " ШV˽!:/G$ar< M+4ʀ<@ @ p 2Ps˿;xk K@ @k හ ˔;"gd Ba PB: {1n 3 j|@ Sjl ~  ` N`ڲTઠ sl(jCh "5`"%V<l: 1X@"e{EP`/hȈ Ҋċ<Lh ɓ\N `|K`xJ}ڪSʪ\Р! ,    #!")  !&##$%&+&),%*2*+,,-20/8+09-152244-37>48@59=:-:2:;<;3;#<=B=4>9?7@;>ADCCEC*DFJJGKKMK5LEL2MNRNQTR.SSUTUYVLW9W7[[]]^bccec;cCd\d4e5e+ffjf*f.hOi`jJj3jklkHk9k-kdk&lXl*m3m&m+mnrn2qosp4q>q,q-sst?tuFuvyyvwv3x(xF2yvz|{{|F||h}Y;~~~bc:^7Y݄~Q6J܆PCqfA3H=Y4f/9Ìݑa34t꓎^M|_ӛXyƜhٜOuMCzH@~١]ţx~𩦊ɫݫsiӭt̰xӹȻ輍нŠ¿ʯ̣Ζ̗оӨݸ#Q`",A:l AbÆ3bE 2LhB:Xr (L!C Rt *G p hR务#DN0DF,?|aB#f\QB  HpƧ4$`3W J@&M FhX- >,ņ>gdKa4DQEJ)ar^{]sb/18b18!T4/di`س+}DڻO忟^ÿ|G~]g^g w#VH=(E !mB!G0L(v`\d@aa, 8(P@`…`#!:#(0pH $\$NE%QQ\DŽ3:1DNT|3= r'nτ9 @\p,1@<:: ;? L`"~1&ciA`—3BC⩄H ls*LC`@< @X+knc'| p F\LF=3s0;m 0@ |:33?f@/B@~<HP<B (+# !ң",&KNh[? ; 33 w-T c6SPDpH:xch!B g{{a?qz }z5_ 1a= 7QB0籂L@L &<>*@Z`>eQ|L2)ݬo? *#GF"P^{ #nv )f(9ALB 0͙z @JЂE %ŃIZKD 1QQȒd͆mhRD2.#h@V @ 1z0J^ǂQ^g"Sތs-1\049)խNwJpųA U*=RJ@ 4d'KZ~*`9xVf@`|MZ+3bǶi ]}亘g2*mٽsf*E$&s7cpSB9@:$uz3, `X@r!4cxg0"F,+K9( WYC^@78e'L [? H쾷HcaGOcU NVkB% ~wJOd@ NVHb;01 tK9֖5\%U]*FXttz-PRB!?Xkak#iCP `~q(N{Ӡ( `AHuy @huRvubDn!nVH-2לC`F(r D4]KkD[hheO(1 X3gA\73q+i~pa ;vZMh(<m0LyV8Q;1 ԻZ=55Z}Ɛү} "2.!Ɏnk sx0;`c@ uC XaMźY۔b-ʳ }⭄GL7"`CL2x'Nx :|;o$CB0`! 1]3iH%Lz Ǯ-Zԁ׶| c^&i & lS:| #' CqdgԞ_`4s69|_l#7D}hP4f ߐ 7 \ VHM7~xzLtUI)p 6@D`7s8v`S:e!_nB2k!1=SHS3mwO#+ti42MVr 1(CC=$1t'vhgkF5ECX !3v>"kQBPCw8C`ZMki;h'etE;f0akAHȇO 3B' e0r@5pvI=# (8<>A0( \t3@gP 7rt1< 7$e=j1pCb-ȂfpJ98>}(! 4sFP-  C0U+P7ۈ~ރcW`i PGigҷY}5"Ѕp %0D@^/@ @^j@G `3TI p&F SU@* 5/2`9AP 0( ) Y/WI `T pٝ|qvM6e0#6agl34X}0ų@[F{*EH۴NzĴP[V{*yDX۵^xĵ{`{hb{Gdk00êf c0~kkkGm{0Q0;u 1VfM(a H۹e{0K[;s0-2h5OJL0=Uy乼;[GJ< 3mP v`{=5;{з;29 +0k0IsQ90C C0JcJC }=R Q9mEP rPl 0PQ@|ۑ m\Cv`0P {+Zll,0̆BS AZ_bZTu m` vC [ "Ci f,03Qt3 d0[DCd)3d[=N][rBфǸE-x\n@Q0Ź{[f0jנ^l00DR68D[`[(`2ǥBC9 1k0#xF e0&5[0 S 0̭`(4[ {s:P7Ao0-6T4jP Q>Є#&Slk!Gi!@?xd]v0~4m ՂC:E3dR6S4l4SpiO܂;#Y l#]E8`?o ֖ Xjs0PL2l0$9*fu>-HRxLV&nʍ_Ga ( :_%5ڧ<7>yב4JCqTI?ssY/~]>!@ۃD}ʫۺ;S(bFV;Nj[㠞ޛ[848Ve*#V7]5ߙSkNSIh]@s!.CCA>[5?B@M7m01vj'4n/]:~K>O,J.yC5S6ut2z0'&iG  .2%.B54{,4p3%}U d$;S7|+NQ@YI`k8tShJv7sB5=Щ$! 0( ?ǜؔ51][q;r0>ؐE0l0PM2Wjl0 1h>1D=s'f> O20!1uNyo`q;ɥx6= ]R:C]}_dһ3;YDWrNщHm?or 3Pwj<ŀ\ ;*# }O(ɍ[(OQ(Aj @Ay@P< |tǁ@BXc0 *bN e$(iy+Wtgt͐ #"AfG ;Ǘ6CghpB +B 3pC!p@ `8 EkFsFC[$ ;Pbߚ(^irJ*J,yDG.? 2K0sL24zrȾDM8sN:OM6dM;O@J<4AUtQFuB G+RL33RIפTSPCuTRS.,uUV[uչNEHXkV\+uVUW`]yaUvYf1,XmvZjgLkoVDp5\e1nu]xCUw=^|_ܗ6`vva'\kb3xc;cCyc#SVye¶$`cy\&(sygle:aEzh萏ViedjfjW=k.56{m-Ecۖ{nA8n[N5{oqp$cw,q+7&ȣH1R=:;Jz{izS:s֬)JofP%ЇK(c=Ly ʃ=u= iPJ.5 cRzS?2 7g`D XA01 $@)7@CK1 g%)Jӷp; eAmڀCZoy@!U/@ rwמ.li 2ӥȰ  + Jd(G?qqA@>([ZND;`A 0`g=Р ^A eur\ozKdNA@<1Y2e0w=ci!#$K~ѹV_ȿpp R m3r"ǑY* s =}b qz9<.0i%*6fpLŏk AbcJ`K3YԿ(u׻g f>00Z@@ hpXAhA B+ipU[E(h55#]Jjш5a 0=n!5Pc4]䃔`=<"Ikv @1R@xGp9Y pMI\ !ZRT•n|5Hi@@GV~+ºlCPP"P%ȗzCyqp>ZLUAb0|C7& . ?܁ dQ"qo~2]y\((3hDOH10F F2yp L @6$ LvUIpqӇ;҇sCAJ::p4 څhH`HiX8?@c?ܠ 8 #ޫ{c PK91|t@h@@ PR.P9  >>8.uPYP5 *`*2p A>Kk4Cu6RC6;,E¹+pp6H3^C3܊4D!_ ;l@ST k"CCDD|El.i@:Lb7qP 1!D4 6!]86`;bt8Y,p$ۿK{(Cdp`4^C <0 z,3%Pi^<47{犮銃꺮Dx H/3 C2+{H(8#p*?Ň28t-/h( gl WJ 0gp 8#+A!:c1oXd 0697 +lL ?K;` A?JD-T-r| (1@O=5!9x(180;0 .@Wh1 F̞"bO@Vj 6ЀOЁ؀@CKHR Mo. 8AؠPMS 6p@T@aԫhm2rxp (A(:D#ܞy`q``({RfҎ-,Aq*P-<` :5 2希8F\Eܣ-bcz1t758MȢBmI*TN)Zl TN=UԸUQR DUY(U Vm#IOX5YyշU\WXUd'`u a)֏9dhZֶhVgh^Vo%ke lִoMWU WWrstUWGTLT2xWzvEwuqxyW0Wo2׃WF'U)X}4p`9P!(Pw/5UE@YYYYKGU`0UX@ 9( =C-~7Z [[-[53#`ٌ6o0ȷh[Tx[Z{EDxGm\}\ȍ\ɝ\ʍDFЇح ZuUYP[U`= ܫͿ͕½U\}]]muDS\\n5TpZ 7He H]^^7,ܔM8CM_]_-=\)E*MV( ^^_7P 7P} :H}`DXf]Xa[qte r[^aD b3 }\EaNb{Kݪ(ΰ]a,^\tLh#a%Nc^ohibP{D@,DhߓY5Aƪ@aPcG.2& ?Uc~:cN:?b=W}I,QUG.aUa( d[{MId`f\7P/0VxK`WNbve' Jz`ee`d2PbcATz P&g0_JWnfV]N>PpqGH7h|EQiUs|(O if{g Cu kecGF脎ntFuTf+Wѽ@8j>ь^ E;i{E8I`F]~ibGGn{X@Rd8fFacPѐˀȁg 4Wtb'8SUWKk~-k_fD8PX`yo5;jN:';؅ ;6(2?~`c'R}nW>߭vif&^> 杜Pen ,w. fj-neޱ͞~nI-ޘd?.=c 4,eFUnXavϖ\f^dRFVU6ѩ6`9=^-W WDH Cr!r" ofˍ$W,q_=bBF]Qju\\rEx*6os7ogGs6֘UZrGpȁ^.q@'_acM>-CĠMtNMO^snR(Ge8t{`uE&qq_s]eܗ~CP~teJ_a&u¹n<#aLjN*Ob 9ou½a^_?>ppjG`70nvSUTՄ&BQGq~8To{؆>\`ww`^o^hxvvƁh_3wu%)I=x\>8wq?x` >wfz7VX$@QVyyCu!}@>σaEP&.C@9~tʶzܬoa\\zW9{mIfT5{dz94fvөR+ܲ{⭃Ynzqw=g἗n:06[nu_`BȀ}|Ff| [^ 6uj7GB`* 20Ɵ{ 2l!DQ,Ƞ@JB#Ȑ"G,p)~Wlٲ˘2gҬi&Μ:kS'BN'8kS褢PIBTGݽZr5'̭-k,ڴjײ- N=}晬k.޼P` FpR0ȒT3̚7snO"DRNj"{9StQҦ~"wαm/θs'3o! /Zs5pCwhڦ3o>.]m(f^N j!rt7!%teBV]bpPxxCi-8Bl #n6}PE-x$/q`M6jrI"("B1P9r`W%xYm"03hcPj_0F9h,ĤRR` dB)JN*g mF"lD =2߭Ȗ!nl+Z: \:mdAEJJ3D s&*Xɺ=&,A%ʤ{GZiNVղ45,nE&+\is3ʥL?v0\#+|<%$?J%!2+0g1zS'; B(0lkfBOJ0.4yEmS&3XM==E@7bkI 4Җ}B|u0640>ug[ߡt=A>c7OɆ7zߢL (559 Y}_i:齜>{0B_,s>?@I G#3,4f<5,6 x09d56%, T1P Xg0.IFV"SKqE>NKcEz)etth<&TBP)f@5r@Aqu$<PPLm\F5vdZٲ| #)]و*ї8ʖRġ%ltC+V CVd@2?(/AjDUh`}> FbS샀W͓%g[%qR{3j>%4T$`E 0ݬi'Uv@pړIZ/!IRiUD\TQ2mM:-Bb,\`fD :Q*" R*_/7 H>oVz%#~E(AP0e1KnO?')ֹ_(ߧ) NV^ fn \`5`v  } : ]nNͭ dpL ⭆# !`:L-^ř`V"DFqaY']! X vK!zC]r!!aB"! .b< bb "$^#^9bA!N'~"b(n&'2'Tb+N))*ɰ".R "0R ..#͜ub06c1Fsb)# 23fs #J7&^?:Hr;@dIdB)$KK$LƤL$M֤M$NN$OO$PO)&hh<S6S>%TFTN%UVU^%VfVn%WvW~%XXeS&V@W2nB[[%\ƥ\%]֥]%^%[__=`%`f_&b֥afb6&af[TZTXf`d@uW(fm$|$Y(樎((XdN,%)&.iU )Ng18)RrŔV$5"j^pdtI)Π) ϗi骹)@p)&Gi wnd*=V>)ݚVvi%*ݥvjәirR*\&VF'jjv,q*2[*&)88Xh/`+MB@@T%YCTNBuki;ЫL>h  +Ā$@L @ HN(- 3O_+_\vT-nKC%DCV8A.뾼8dKloMDAQ?\53DHLA%d(DACQ._-9nJ9>-QGoJ/f&_ Nvh-!/ADy-BM/2+3^fq"D!@ˬC@ IpR^1TmںDyɬ;.KnQkkAE7q1p D H_/[-Tk1 q Hr⯧*'L }r / b! Gb@p2Cݲƀ.8ps -q];.YmꪖlJ@(D+s,r鳚Z"3M̃D nB#D (}tLc*E2+N/0ԕ@e!s2_H@4D!Wnz-KYA-,?,0b< SD#B~G)_hDSLUC tGYLB.BTLu\jK\oK-ŽD*S0T5|u ,y/YK05M#D„Kį?0u L;5J;V/5BpJ"!ZZ/([?,v"[_r֊6ӊ @ 5/v6@6KLLd2DOGrBQkJHN^eruk@@6Np14oRHvpKo'7Bs[{(tE/]2_{Jt-x pTUwnD_.7ѵAl,NmLm 9𵆋8 J@{6SqMKL$FEﴆKT@"3D3}mbJ;3ri뺜pcqcxϺvHXɖ5{؎jѶuL~5ȹqW^6|)au67*bɓ)/Uܲrf͛W^&qh%=s6}rYfhѳ'v}7eذslڳ}ə7|xtŋ:~]r۹.=:uɗ~|zK W?5^$8;AzD 5{o" KP$?2 %X@@*7 }pr<9*d 6A&qTp 5LFmnڧhGLҠi. B Cp+EjiBDFD/AZRMP`v Zd i,˵h&^xk2A1ύTs0hQӫ>9DrĚ0'SGyrX"(ի6T(O]͵yjTka4yZ؊TH0H$Zv(_5y(X'e)^hA%rF ;!t u[p%yqf ry)6\Ƀ7k0`iZ6 @ mJXa},iAbgiT8Uh uZ{d4q XANq6`$ k9gv6B3~4YBNpATn\w)! `y HXqUL':\ s r`n}d4\hٝ};#Z`XX|n;2naSv )4 2إy2P[ '=s'ohdyrZ!r빇hEMZ|At!IXv@Fp$M G+mzΛT2nh&x\+H@cׁ t0T:A!0+^Y":197a gؑJ-ȡ&6yb 1SIUAqB &@"+ƨ2r䌍Z$W݂8: uV,;yt ',j&O-?E:y@+]ˊ׼Ԭ<| '-l}Znka+ -i{" j+SU }=>Qn G K"=/ D^;^ޗ](]겠ͬE NlAX\v=y j@xˋ_ Gܬb@ }W,FP(@j4;h' PC#<P6 ZQ2o|-l h-恏'W596!)h+c!-p"əB"ʉ`mB? h([3o<:bx\ycBcVxΌ|bPE& $: I!LaV8s% @(j8EGQ@4XO¼@|̣u&xk`U6lCdB(tqӚIC` .dN, ( y.\h $y]jrr \Ch`'a"<K W7W:.`m!0*N&GUcC$B(5 Y zPcе)v] (؛- 97/4<1{u4J,G# Gw#YO۽")!.װA<&a'CV)1Ґ6HAP&@ɣA  /%uσ ŞrQV h7\fǻ7KpL}o`@ gC1 $8%J.D!JA MB/-NFA$Sr@e l0@0 *28|$ $n PMpOaU42 ҫMMԀ@PndjB\D_8) /``g` M.`/c-PM\a2y ZnäN-ߒ 0DA!d$V"`8&@>k t``E(a n=PK05Zo~/~2ߚ SalFCZ%. pF@`Fz:H.l zf`]1(de F w  ΰL Q!02%j|6`F:@Y7 0ud!ZޖLDOM/ʐ S*QKu` ?M BR;+ ,HZBzp#Bb2!0/ ̂Ѽ~(N1 2m(*]R*V0A$Jj ! @D h2! %2$-e-2PXμ`/Tɖ`  3j玲"s"{>@2A4 82$,$2Jst L`.L.vGA, -*8(Rt/XpA @bE, "4- <0apҚ>![.V"V@*7"܂"te*o=&ZA.!P &Pd(Lkö :P~.FEd3}`!ևfb$;jȺ!l! 0/ (4 ){.)cI8`"  g$a@K՚TRgNDA5yM/+p3"Q1!QA. 0 BTUHdB&0_elಡrGZg4>dj>r%8SCYkY!.M6 b.v $aiaF}G#3Zp&G3@V B!MTk NjsPtm-kO:'@z'<O&̖VԶo֦o8a~@!A\mf=ILaA(ꀖqS$Or'w F2 ѱ~ JDqmBd (`]5bqV%W1!nxb&M!v "ooѬM" (v4V4k7mvr4la@ "!ΡV7}gMdE@k8V@~QM;hU{ rA~@71XMj@ ܡ"$xG^2C.5!LtIt-  ̇aXM"iQ=l@pgPAJwA2sV Gcq}#&6a;);- 1IݐB^E2jhG`*A ِB! chT#T#xO|AVO`)" CYGK8== Y[VOV <#J`H`v{ٗy&eY9h']9rY?2!}W#ـ6c6Ý߹f癞MGOkyk)18 Ğ9E)EΠz\I8rZ9s/qM9gڢKzr6F:dQA٥;ctcOڦ4sz=ڧkiA`ڨiW:@ک+kݪڪkq :ګCgHbXZךڭZ皮ڮZywZMaE[۱#['+۲/3[7;۳?°?K۴OS[W5;cibgk۶os[wۥ}[MD۹>; ;Wں)9E[ǻ/{O›[¼)[G[m3dۿ;&@ \|&|#$\%/Y1չC?\E#W\S|Y ʼn#kʝ$ʫ+ʷS̭)'5ܦǼWK̓¾ߜη7å'\f|a ]}8="ҁQ3/!\?GEO}m9lP!G[]"gӣֵ.{Qv}|]ؽ'o؏=IٗԛCo$ܡ L x#܁hK)*Th=-bQ~ON|he&%f"])=$$`b4xe"O" R$Nܡ(b q;B g.S)Ԫ$Ơ`ˢWBG$@  @ q %nN !|A ]d& CyEgqA 9U'Q&R#dI ~VNG X 6+cQnO >dMd?T 8a F*ww*I 7 ;ňٛI@8Fx.1@D>xE2 a~MZK3|Dk5 w4mah]jwbbCx0-_d_vǛ|3ka!(bE^glr_ G%bcBb%QYIGg$ @s#_iw}q0"LP dNx52c12[:@ZH 7;_p GP\K g ?`S6hc2PHMތa? P;ƊQr^ _WW\H,ƍr#0+#,lA H571 qHY -p]%v62M!!PjNg'6;(%? ?A6$F'mj˳M 2@/MζgxR}c+'NB@|b$JHnv;kbv=d;g'o-Oρ=d/S9qFڽg%PIռ6u 9OuO' S~R2 9=$~ًQl{z؏,ٞv޲ϏRThi!о)~=l6P V6@~ u~o % uHȁ(#H%h'~(/1(3h'*҂4;ȃ=h7x9EhGIvB8vJOQ(5ȄESY[AXSu\(cHe^QqfȆmoiEauhw}rt($ŇoswQ18G:6 hȉ艟(HhȊ(Hh Ph6 HhLjɨȌ(Hh׈٨ȍ(H{騎Ȏ(Hhȏ)Ii ɐ  )IiɑUx)#I%i')+ɒ-/ 1)3I5i79;ɓ=? A)CIEiGIKɔMO Q)SIUiWY[ɕ]_ a)cIeigi+o q)sIuiw k{ɗ t Ii9s@ЗI{wə陟 ) SI@Y )`ɛTViljɩɜ͙[V`љT@٩Q Y )Ii牞[sy@™[pZҙVYٞ ړII♟幟ӉJX` ʡj YIiy+jʟ5j|+"J1ʟ๟ :zMꤥve$tHTS!Y <1:`ppYe@TPa@әIS0)E2JOʧ}6 Bz7Q+X(*؝^$` p pYi[X@ @wzy~ꪯ450cz2Oa0]jYYWp0rJjR` PrJ:1ڪJJ#o Q!: N 2F 0g - & zbרzɺ R  ِ S p0 jE :媲|j5kp1090El9:03>P#R0Q@od*\*K ʞo p N1 f;`1[(++MzcP 0AJC 9 + >;MkTPf; Y+൨ {^[c{ knJskZ3N BB[ {0~a9` 37{p pw ݰ Rp砭RPA ?˿ ڲ/ %=&  3 :{K+p:{Op P {gjmˤk)oDO 9p ~;@f3FW+1Z0 O U;Wнt`˪ O`& FZ35|qu[9c  ~ 93pvf P=P QA`[L++U|spð@pN { k,ór,˼I9P =0\?B0 =J \:0pě9.Ne0 0eOw `l ;<zDOVvS ~fzϖeP  g w0 wP {٫X*2Ê!)Yiՙ=>jꢘ\יGԃ318: ՛jSmա:E I^ݨ%٢ҙZ_ll[iNK)bj]-y{M؅miԀܝPyv*ɹ֋q YW ١-S ڣmYP{R=]M۵m۷6Ms MmǍmw +K-Mm׍] -Mm -Mm< .Nn .NnΕD!~! ,       # "!")!%#+##$%&+**,$+4,.3+05,3;3346+37>48=953:B;:<:-:2;1;3;$<5<=C@<>AEA=Ai0AծgHO<s( > yG<xRL:'H T@2Tb9FV/^*Dp0a7‡niJ^ȝ?z[ӖgЙb8CkZ9*})qsx ǺKP]NtҕjJjZa 5E υ =)PY`̤&7Nz uym  ݵXy0T%͋"Y"Y& 9%](ʒ(MJW([F 0TH\(0g%y0!wTPP#0>e8@1XU`02u P+ HTo-}y 8@&4HлAV¨FYT'Vb* h`T`alcXeMjWJ"әc <fGd|ʼG@j'WkV`C.`.?P Uj%\rnq LN:uDbrg@Ҍ΃<-2S/uCiZF0PHw=Q[].fG`-0RP7]bBżvw=*\"\VW@%z;UMdFuBuZu/-D/_Y#g0am9 oP] G&O6S`yǖ,ttX^k'/RLJ[Ҙ?8U.8vV-?hvF%no\j/^aP%5M>?pX̀Y7\whe׉\UsF7Z&];l\4_'VkV δN_Y*I1yR^eΎz @8!.\A]za_7[]} xQun8%#RSᰀ|z ,wj@y tש|κp0ͅlZ (]ږOP9* 0@Gڨ<@8 a4^X'fshG8 Cl/N9qsu3AG@ Qvf/x% #GfEywCLgG0"J(l.x|ƣ{7+\&@2 LNFS]aIn%WkeiX@In.B(mQy;NgqI/)YYy( &)BDD9)p& P@B:D ;ZR"ZJLڤN,zPZVzXZZ6RJT`b:d] J_ZjlڦngIitZvzxd =~P4zI: ڨ*6Iک:IZIڪ: JAZ::AګڧZ*{:zڬκ*AZz h0 _T {ƥ Np0 U= A:5<N B*3O亡pGn2)$7֓[ A)}U6=:>>N`) ,YE5)D6@)hXa nM@u):E9,W7;"2"K0TB F`)P ^0t)`BtshBy S>/ön SspI3rdb;fnk*K ^@ n`B'z ^h@GF@vU@ +ג] n &ags0) 3h+>4_D IiK{V@X,;pCUP8YUU PB@wPMs:w[M SD3]l4U4–kC.F@ DU 1p,6G:\(OV8GGr N@2uCe0X :C.BV@u;n sr^ ?#l p@1`D`#ͤj1;/%EѠ3< s`*"2 qk* )#,1<)F+#Mh=F`9D"Ӯ8G`<(;>)>;U4B*-G< 9)kr1Fo0))DlY!M!]] Bե),F/S#80/>Q X fR4RM/:6Yْ5P)1N[QвLE B"zYda-}PLm)]d S7 D6Gw V=V&.e sءFFe͔e F)#."CCS%8WsG.P1-GGqV6 S=7 4"sU 3=b):0Wo"3/0|GpBE|7S)ul̖NUEӕ-,h}Vg ㆓oȯ~w~3Hkbޮ٧BW@GB>@nGGl} <״P{*Ľ]΅zΝ,/FG/R!TZGG'En|9613&{L߁m{H*FI0C^FEƗ f)Ccf}B`n 0*oE} eB {ƭ@8$7 McgB$2T I EwM#K:3rD*>)ڮ>]9qa X=/;=I<;sm'y*~aUc2n? G?_[S7o @B Gs ^@X;BD wT4.ڂB0܂),58}T"BB~P:S)ktHz.@*nH#Kx,P1^{?x)1дS;X^0:u~,T=ߴ~1pP Yu^, E20:,yX|i*Y TʜL=<,7RgT)|BRCzK/--_$XA C%N +nHQcGxIH)U$?ƤYM9uOA% tCI.MʰhD|UJ\Ŏ%[Yiծe(Sq:mp!\ۛ8qaĉ/f(R% e̙5oٳ㷓EǭiԩUfZlѱu]mܹu6 [oy'^q}g6sѥOty«owױyկ?^tϧ_c{O4@DM*PA#pBlp.(pC; gpDK4#B/[t@TaFqXG ,nGQH$Trd%rĈtrjrK.K0sL24&J6tӰ4\M:봳8ŜN> mhK# `HXLk|KmtyaJ rS"$FIRqC&.| "RS"^ d\y! rP*ZaS|c"% D:&}6\F]>ADN&SʎN'NV!WQ[ CC!lU"HV"`K~:1?gCC!ٞg`ˎ `Ø ~0+ᏽka J ke>!! I]XlH5g 0C0E\@ WTdЂ/ R 4x o}GabT ~/V F櫰}= A3,E^+)H,~ pUpòX 8@f6c~zg? 8^G |CTVnF^%^^$@?$+t61˴b#fM: !e"#9E & o@sk/`b!2`W^p5PWdF|m6*R Π``/8B)Ta @ 4rA *y0-<yܷm!bw9Y'~H PڡNcXVwVC`p n PgԺβCZ!+J}tiۦވ)ҙTr hDa ᇀ @OoJ: Ti5ab.>hiLc74ǭ>x9?\4qyg;>}kW4~z)%%#6۽xD{juNσ+ d\ !`!q9Ϋ NpB > (Zx)&ۃ6tH,~@KZics z09C=̝MK 6=Gt˽sx+0yh ?yX>j{46hA CZZ;:. p8.r<+:.=@(ËQ=yp8b=@x+1(l 8 @t8 #!~A@t(nvxp'?3/&sDBq#p`E23 pr_\@X@,xgH|4 DK lKkO{=0(r4ȆM&vP0#(LX,x]s2 Ȳi( 41481I3('5ps'/j ~:*,>/=ss?"pp00-S2IJKp4#I8hA"ġ;'R3e/0 SS-3MFڱ8Md, qSAi;N T:SS8%THvPp$P<$pKs24^MBS=UTMUU]UVmUWmUB2?@u2p((`PB0]T3DI=JhViVjVkk%.YZ[=S Ȩ(PXWvmPd4]QDpG` XX-X=X-A<VO W.}`8tMv؍e^ pDWWH~WmY}YYYE9=-R(]WXXM7CWd5Y@ZZmZzEFpueע=ڣH2x5S5RY[5XA8fPVYVY P @Z[}܍m<{¹Һ~~[\mĮ$, gȴtMW}]Eےt@D\[eJU!Y1 Hȳ]/}^vu5!|Dު]<!ДABu?tu\^ؕ ,m;Y~9^EXפּVկװR`uh>ءm+(@p`h]FH` '5-Zn`}~\S  `aNeao%a5a#0M/`] ̴u̯O\apuЃ.Xހ-5 ePl]suu4I/fT.ߥ;YbF0[0߀}Kk%xyp@ʹ3&nb'cp0Nu3-BMF1ڼ۾F>DUSIfJ6Sfhb]idJ %v ).D6d-'eUdF]xc_vg\%a!_0߉he^*$8J7؅+<^(YTpLURt\\\e1c}Y!.\"~QxXm⢪neBbL[`L>a%Du iyZFؔH`YcD>\M⏩&EeUh^liED>X[>F8q >fMޅآ}^0:d.j^_f>nkFmm>k]6iF8l4n} P0[մ`A_8[>kh^m_\fA#n~]fG3"$>Z@V)q@b'XG*R㞏:Xm_>Azyop^^ml&l5þ풐qiKbf#opYߐvD ~u VnuAanQ; HӲ {,NT vxZEq=05sGvkFfc8( jn 0pnGkcOn`pqr]3m5r;t}v =o^Ȉ3gP8_dƒ:G;CqBSrFAd>/t/wQ8&CdPvp$?L%Z/YXu>ބqO3W?\0 Xq`r9b#F"9Bf>(%H/"Μ:w0'yB-j(ҤJÉ/yRj*֬Zrւ<,(kl6+ Ξ pۼz[@8,l0bqQu">Yr=sH21Ԫ't)ز64ܺw.%ݳ˛?!_WҧS x`֫sGqǟ%G C0:4ǑӬna_im&Uu4?Сc=#t@rϝlz)$99gJ*bAd@Vs&PMO4fHW^7)9ءڇ=ЁH2"r,Wd3krz*% Ѣ: SP*D hh oֵVɺ㟍r/;r C>0S.}Ku87W.Dx̳BbY@V^Vİ5?&!cr-xH#t љM6K͚NC*I 3ol2\_r Bt5YyK'$,_I 28NMDg:Q8B47dfQuk?^m BZ x,(UB@83M5O>*^L3- x;3Dy^~ֹkO?ਜa0W hVlӋ \V:pᨵ`.箧Tb#0[@čDX= Q(-^tdKA| Ay\6d)CX T`lrZ·` RUь%:2,Ԉh f?\Q9T) `/B X!ѾH@.V:rZ!"E(i%Y" C&||Wū]!X |r+ T?/@ M!Y<>$TbZ"Y2y+H*.R6d#Uɵ7+ # W28oXZ|?avqe.=攓#A\3Y%$6-nh @2v9p6T gp;,rQ9gr΍ h O]3HE b%guxRJ&&}DBQMpF{Ua"JS$g#9cY0mNbA=RS+V I%6jPm/̲4]Z%z@ج :嫙9" #WG@q5S$Bb zzaG5 8ii%Y|Y8f7[< `goZ'bnpd@g@v#<9[k|%Yt[ 58~&\ZzN@{Q\ͣlG60jѢ37}]ϓmiS;b6ds! u/J:- 0Bp8C.s|\p*.XVTaEU?r>9s.j+6gpWQ9USKQWWO/:~uz1zp]b7;Qvjm{{.xv 3?<ݛ)/ﵻYy(C̷|ֵnЋ%N/zw= {;D=soCt=s | ·rwm߿yX³ҧ>h}b_?W=QԮԄm#-n? R>"K6`~ &EPP\]Ea`E `¸`O` Z DC.C8hj'xB'tB.>!&!NF:!R^aNZa2Fa.Ba6baVJa!a'<!  "!!""&"."#6#>"$F$Nb~PS=C>p'~("))"**"++",Ƣ,"-֢-+v'aD/Zj1\2B0b2F4N5Q#6f65R6~#8u牣9#:f9^:;coc#=֣=<2=#?@$A@_A&B.$O1$DFD&C*D^$F&dEj`FvGFG$IcHVJd$KƤL#&L$NعdܤN$POVOE%Y"N %#RTN%UVU^%VfV>"30D!1V%YY%Z LSdJW*N\][]^"Y_"^\6^``B_&R^PaVb^bF&b6A8%ļ%e"&_n1^bfz&M&ihhvii J&l^k&K&nmffO&p og 'Q'rs6)S&tqVIgf>'vvwvig$ }+۴LTփ(90%9<*E\F$qapNF&D5@iBاCiKd #B*0D;\8Ĩz(8PNֹ^"3`&t(ZjVKD50?T\DH#8AĢ%,/Pj.&D{+,9́/pɌ{yL5@`2`%CSc9C\ Y&QyhA\\}ׯt(/jAth)]x0̙b(3p@dr<n,85ġX)\1X +:΃T@h ?-jPb`CC@^ 84ABz&@5 h ^P.hkmLk T Dֆr.-xe;WX ŗѪLDo3h.ėoB)p 80K&T+APt Ѐ;H#]4HԀD*d4d֯C* w%0=ex!5'dW< >N# ((;#/8@ T~⫆.@+A98RW5>WG_^@:GYhJ>%ynX`wV݂n2'&yU-Lƚ>%zo@m1=#^y))K" q)CrQSu"lKPw-ga~OvCX^}8PpH^gV{}/]Θ4 }"hEZP>B!( TطA!X,AzfãtЉ-yZh& (]bC`̐cl;q|t [yqa ?? (Oj i)V!Q#B21>l273hV=q- T%*%v,g9 aBaA#S@ʼn[K:$ld?Y426G1&\2 APSNssg)UbA P/Ps"%p|1b9U,(Cyb "\}0; ˌ EC&Dyc}PL'RLH:< Bbaܔ#Ѥ) P\3JCe>." EI3 'v!MN UREhB&X* tTiiZ #~MDhcVR  QTF!/>a Sd)+FqC&ESp={XavB@X+\0 P@@5$liZ±l6!X ܋! -IFbAB"Rc"& ZNke>aO4P"L5']Pk> E)J uinL_D@ 60H ("U};2  Ndd*1t aI'"aF0C1+u -R0"xW盐o\uqf}R52'&8]9&1M΃VO3'"szGw9bq "Bns!,ٌ*U lE<Ҧm(BQ6lO=8# TqE?6P. 0|.ux~[O>r&a4D07ҁ~? uO+2*`|:mdd_?}Cvi_b<5B!?®cm(œ.o\>kib;T -!A[ff/N+D+L ^ $>a,4@@d!!T." j@3`@i}ToLÌ,,rjጏJ oJABP  ."c-B8J@!hHҐf!p 0ª E\ 0̆  @!vj b. ,iذ.0n. ^>/+  BH Q-v.."bIR`l QQ恱hPЖ lNha Q422`  &@ƌ`,1 a رz `ᅵhlr)S^,! a켨"*rTXpx RF lm M2R- -3 >4 (?" )/i/ 0i!lmrj XB^iiQhap'¡!@ /l5S*Jlosrɘ819iʦ*< į! V(R1زj>JA$$¢j%)0&3zEA&4H@@S"1<3#!ԠBG Z KC!&C*;5`T+"̐;;TVCr - F "nHDJD5Rrr!Ja)tF8 xPG}aMI7  $ !44'TARkrA&`nr``a)u-tDk:c&`gTTURUߔ#́&A .ʇ"jy>)> =:B@'@J#iYEO5K4#W- g `N8AWe*Ii S<@Q"YCE]5 +ZWU`p&  @VA '5`T^I+v]a-5^6doAA: 1zuf+ %&a5d\"68\q!HgWgd]2`(G!e _^'gZfkEVf4VL @YS@)("VMcľnn43|K<s;s?t?7FNmmqu֞ >x* zwxw' `a=(bm[yRKkB .8<{|W|4` w" wWy7\Cvz3Fٰy~7zWOS}g[wy~u부kg?'8d%}7\ղcGC53W9Ew6`ge4ukw8u]U8熗3x~U8TQAxXcػ)<؎M؉pr: ِYّ#Y'+ْ/3Y7fXzk쓉SYW[ٕ_cYgkٖosYw{ٗC"N٘mAYٚy9ٚyeY ׆EM/ٝߙ5ᙞ9YbYyzـڠuځjڂZ'Y ڃ)3J,ڄ5ڣ?Z?8څAK7DډMZW1PڌYc*\:eڦo&hq{i٧Zڨ}Z樗^򌩣^Z::uIZZzڬ'QzߚFzZZgZ:X룰۱'{#.蚲3u-{.V?{9@1X`VW[۵_c[gݺo{O%0{u|[onu{VñRǤۺ=康m[)Jӻ{A۽c[⛷cЀ!D&nדu5ph!e3<¾_`xR꼠ݒ"-b-2[B*=桎yEA#<)&%\DTb,"\.B#Y %ܻ-\> # V( N>Ѐhn.!  . AS K @b ! #.a=hB m!  %:ѭH!Ͻ@/  b@#.\Uh! 3 ++@14nT'+6*]!h^Ul^A! K#\@ל!# /!/<.*AG\v! 1b` \i <> b Vk`#L]ll@&D .,LX=M8C8 l@l" `)T+*@\ 9@ 1 a!hAy7b BP\ < l`w+#b^J?- ", G 8/?/ D1&H ^"fy.((_lpa0hIAL:} 5ԩTZ5֭\z V+yd˚=6ڵl˂늰?7 `$b@-K0W)^ aJ.`DoApOL>xa] vjkLQD.pt^bu/x8 F6m~eA#" @`jy`0\Mq.RdϘDT}']8.\} C<PHVB5GoMt?8@Dh\HCB^, E#d1+9QAD< ,BDLFkQdwvy`gN+d Vffjf\VrΙֈ[`@AQ$ܠcG}FtuLi(ay 9(ĈI<%Ler#ry% V*(<8XS^xk <(+ 2O*^fn1t\j9:wsd$Ls /PS3*HḱqxaD Pjۍ?󒕀p J?a's9J$.99YQCpobLd8`pk@#FaD '$mHFS,0(*"5#.s/0aJ  aPtً  hpD@ŧ82ERSgc] M"bChWq4ѷp /G ȥTP/sUyǩYp,1prJU\,>j<1?[DF}t=Nrǻ ,z;[>+~{ K~y ?/[g,O_|'_+gg>Fb/+oKԯk/|Z>8(Hh Ȁ (~ȁ!(#HVn%)+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(HtxY艟(Hhh5(Hhkoo Z`TɨȌHZ ׈kp͈X騎hl X (HhXXPUPToh9( )IiIkPɑ y9Y9S0xP0()HI5 )# %)',i. 26Ki8#ِ> /iAL_y RvbsN SAiXZ\I3 wZwXgq˥yVi :_lƨT_@ Ol(L*H[]'t' ~"pM: Zp `w`@RIiiw `9ِh9YI٩i>0B6(fndI .>e9ْUO` Wp0_99PY׹*;B r#f #aR }p  SN[8 W xp װ L0 ) PМ(٠G j90$!+QZz@>PPx4aPs j*tj֫$TP@ 7 :`:qpݰc`zLRU 491]:n58`} 0@ 1^F¯LJS)k @<7ZW 6IJ꠨]ˑ$7`P-;>`0[IP0 :/ iŰЧck6ð5 M{U굗la uZ0 -8ж }B

        0 %YFB Z5@y_ЛЉYې  qۀiYZ{p\pfkql}i U˻k٘9p `7l lpk Ūe(lU|g 9xa,ig|eXQ q<'a48=3:B:5:1:-:2;;<;3;$<5<=C@=>AEA=A˘3k̹ϠCMӨS^ͺk1@h6۸o㣥 @| h m|h1 }v _D0Aܸ] P!G}ˀC(9G; &54>_ 0s sB\(5Gr0qqGy ?<mpwA<|_HE epNmh <4  <\Pd<X 5`|矀*蠄j衈&袌6裐FmTj饘b \Si. T`X:.?:d $|s<@2sT:8ai3+~$@M@ b@fZ8̻Jc@r{"m@F3tl*k?Hv0!WO;bK\JܬTWmXg\w`-dmh} &p;l!m)2c <ĐZ,]i7 .m΃AK  -&l)p@j/ wc Hco'5 (ny;д?pc>))Vfc# U+=pnp 1 `f0=A+QHX#EeY` ¨8iq3 "* W 3y,U :[j3 \x;v)8 F|̐T8=N ?HI~ HGJҒ.@ 6ӥhYg J 7ޓK۰\ h5#e:dX-&#{ GLR. t`' &۪bנk,H_0g|3h `_]V8-׮lA3X(|]?NF#xWntSt ȅX4P1Kc&'MJ; *U¹deRP377g4gBhϛ.UJJ vL 샊[<nb`'|zD3R\kDOc3IMGNnE c@۵ 7 +`K8,A ; <G[7>SYe*SÝ@m).xRaa04ʍ `yFz]EtQOoN9z΂ɑO*Wa6:pl E?]5NsUJm] 5@ yet#?V~Q\oF; pZKp1`^\^vlQhAHIX)fn] A0hG$jt P3 @uDJ i$V8#]a n fk)lin ? n-(mNy;HWҕ^.q)YYy( Zi)@$D9醋o# @B:DJLڤNFIHTZVzX`4Z`b:8ʥdjlڦjn:tZvzF&3;|ڧ~Z $ZzIԨz5IzI:jIA:* Aʣ:.zzZʺʡ@ڬ:ڠ*Z ڭ0[D~$ K 0 %=Zz]ʭS :F0?x&P3Oʡ@G# 0)6_i;@ZrxT6< >|tN`( ^ءYsJ; ԱGO_ oLt (*EZDNk6@8,[)=U)0C0y _ G ?KP-KO ~`GP0~2g k4_.mPdR몵`slf?0( \ ` m02o`y ~0Q`q okF* (-[ͅ-Q`x f oPX i;_0<;?;i\E@,DgON 48 5T)T`C5J"4Q8X7 HiT`/i;Ӄt493㰾S0JXLkCg̀C@wP3RJeNLG`Cb5=JHpr<;*P3 [) L:pJ~1KNHG)53Zt4>L 4~CBt])/4{ekVoi,O{4B\- k\35 xq)=7 Z `ʀC4;8P36A@>@os5m0S+7l @@FF@D0#ʤj1~S|5<\# 1[ 5]* tP \Rͼg7+X3acBj86`l65 1"7z cS?Ȃ; CS *d=zd)3a  !;FCo`0v)\)@ےiXL-]zBij*9M*3"=.uE0<tX 0Y#E<^}͸XԂ30'p1Nrx0*4Z ,#0z4aw+MPۿ9g)YT 0SCwB]?M{)nB2j#=Br040, 1^g)?Eס1BF`)-2c48T8%hxeV۴3/="`qFbE2K}T@199Y-ӄS$4 s@G@ R-MH0l1D#BcB}p _37SLb)t(*DMI42ʐ ilz ߇I/0d?M\hLSI{ȟ.)S;ni,E00ʣJ|i@BS:uݠP$c~aI+s4gtd7?u.A 2&E5nG!E$YI)Udˇ ΤYM9kʄq {Z.3 8~,UYnW&YY<jX~̵qи_&\x,Zĉshw`b,IgСE&bԩnkرeϦ];ԹѮo[Ů/gs5G^&oٵo;\c^yч_zϧO}/74@OQ+PA#pBl0)pC; wSCK4D@ Ѭ QtEcHujQFsԱCkrQTrI&ȝlrJ*$I(gJ.r4,4h/4L-itM8sN:NsPDUBcDvYhY7ZlvMk[߶[p55q$\v-,](uw^z "yw_=2_~%}x`Va3bxE#8CbBydK6dSVye[vecyfkfsc?n0dzh6h}P^|9ejzkk{l6lV;mM4s!i`n{oo|p 7pW|qv$񓗟H3|s;sC}tK7tSW}u[wuu.ᇤ`F9ۙn "oO|6Gi7xW>e~d9!wL~y{oyڧw+M }~79E}<~$` y/z_Է.|O`-x%z"A: MxBOp@H$Ka mxp-tGBPC$tAz?a D(Fd`H^D\#"tO(E0QTd!{Ep9@!F8;4}x/6 BG@ZpHG/qeÛ1Q=<*)7K1"G~CxeL7F&CJ*i:s14nDI$̬q-h lHQVCpNѕ!=C:H0*(!7R"I @ͅn Z"DgX7M#( 8ݭ3>[ʡFACFn@7p7,E^p dz',@\c,oꀊ\Gnۤޢ5Bl!!L!Ղ8: Q}'HA 8!<@d+S{+fC}/BRw[0wS网zKѯ֋ p't iSVXAX)@UX|΂ޑO1GY=|d>b{@HDK4Ps+`UK( 0 L( A P8c0u%1 si9!!:<'+9-+o82s ɪ/>r+A?4>z곎ӒkAP+;LCFs hCA`@Z#k%.Ѐus;k#G4<.*7 8"+PuT0x;_133|h$I:I⇄$(/K08p|x >n!əLɎ%45 0*X/H:ӕL>De+ )TR9GM.TT8TvJh!8Ǩ\4Se@AXr@_U` VaVb-Vc-@pƢK]LԄ/H޴Vl0CXjD>9=KtMWu]WvmWw}w -EfgS/"PX-X5Hג\|59(EPDXXXX Y<|А{͕|SPX5XYt6$%}8؋-Z=ZMZ]Z]BI8YfUC-Z5)۬YZAhXpY W<Y][Dx[}[X.KZDe/?p؁-XZ2 @/Sڶ}\ظB(dIY`Y-% \-ݚ]G+Mŕ~\ٝݍMEuWc\)ZWۿ5]]Sx֍~8B(ڭȵ]Deu}RGH%M(|BH[ߵ:~4-V؃[}0M_r_O_I_I(6[g[4-%NpE_5-\L}_^` a^D8^` j*FF3 FDuaa)38W Wsl4޹X, W#]EGR'FI:Xbtӂc[-b5}0tT2[]#}9Fca= cRc}m5X耇H4}5|45UGcT~#b\h"K@Bc[MVefB McdFBaQRSd/ب̈́ cxЀCc;¶0_p6 04f ZcfUfۍ挝\f:ifMZ!X-_5K 6XV4\xQR1V9g1ۊh%h޸:~Z^p媕h/U[5ae+PBW;_Vp&fIŇ{dȵii^fiUF# W-JveeI~6 k]B]dNg.쌽EHlŖ^8b[R5_k\SV8jklr<>lF?mmmB.XBŸfYQB9E%f`&䣓S^څl_>oN ndUlj̆h']PZIvYjpapg6FgIz p p t߀o K,V-QNn}5$A9hȨ}kq ^f mDPB~tqˮfR#ZqOWLJ^PV.O6DeV,df*~r Ε10uJ/708UdE3Q|q9鷝J=Ma V#5Eo҃GnoBpr;P|MN6uiqyqZZDb(ͷ1Mbvu&:pP@9 e'A٫:)ZS?uGv:!w@厈%tw^w9xwdWy/>+F#IxslW݃p5ncv j~~()R- #(hON'@l琮}o2~HiҟmsTyo {6Qy]rf\-g򐋏'>M3ᚍڹ{Iu]uSG˷z>)9KoU'G+ YNjnwb`G茕K'o*O{}_OtjKIHj]uc 1}A}cwhz{՛}Lgƞaﵭ|!Q"D2D(!:h"ƌ7r#Ȑ"?yۼ*Wl%̘*/ߦyw'РB-jP' ,h괩l"JqOxS*ذbǒo&~5\-ܸr`ü**t>{ CgzQ1mki2f4MY3С+ilR_* N7 PܺwպشJ+3ي{[?CNe5Y4<&TL/VE;RZѵ͕Is%L<KZK1HFlM90M%@,XB@A=[M"U<3 G!-_}i%ۣZ`usF6."C㝑{7;kk\p0BjG'`TTF@E/P @L9H^-?陾e^ʁ6 RVȻt{?Q vĥ Pl2\p@S4dioQG&6!,K T@U$NOCaϨRHE  搔y@l6h(. À9z$7ttP5Q/b=gƊoF&FI^`Cmh~1bH@6~5{|;28Bi0jl#((660ud<燗 ?safG(_ rm5ą%_L͔\;'C)M-q;*U{yFAG<,E@" @$@ƗQ*Y4MK-PΡ)El;*?(;5VLU?J3ҜR)Mi{p];|z}YhҤx@p:*RWVvZ+ku s5T$bXWaeF\GKbչU~9YfT06/iXfshqoX~ NٹR!%ep}}Rl'k}]#DQd 4P-m:k@/7rPEƣFӑrR(٪wBl뺠.ᕉm/"Yip3, 8dG#X_"*\2ؔu .ԁ~ n1`DxJMq*K:fĨ1Znd ȿ0݂~02>BfX,;xܨBH@!Hkj.-e2suFBA"t|ULH;@=0E o- @WdАS]n)d1~5xt?C?C>K 6p6 nř_K;>2x@T<(P x^jRD38#Awk;90_z'*P]r?x@м69sӜ7c0O{bjt& @7ε!SV:ֳ.[?^8+t\(;]׮ǗPۉ#]h|,O4<)gsψ<_kWCz?=<-n}x_ݓw#=c{߫v-kw }soot?Og/̓} >~tPJ%l>%^iSA . d*m?H ?P`Ơ`>\( AZ\ λ(1aB\8aG 7l%|&h&~!^!a!aaaa a!~!a""a#&q<&n"'v'~"(("))"**"++",&HM==/"00#11#2&2.#363>#4F4N#5:." nh-6r8ۏȠ97f9#;;#鹣<#=<^=>c#@@?@$B&dY)C>$DCj_DVE^dLda$GvGFG$I$eƙJ$KJ`KƤLcHjL$N*dM`NONO%QcPjaQ&RZQL.%TFe5l܆9@ijzȌV4HN­ Fp*ոZ8i숆9@C% d"]9mZef&rv *ҀQuMFBȻ4t @jDzvDRoHnN0f]CtEJʤB?oI gDjt:! +BJd%H:@C,iiD7`/.h~-?A/( (+~ē/i0NK7@j*Ȯ?1Kec.(~f^a8,ʒ(3jeê hEܲ.AҨo,<1!?qEl+-[ 2'* $?$[D7O:357`N/,UoIE$l'+lG,G.PπLTÂQIlPxX* RR2ëj |G#ªRE\EZ508sϳ'9LBno25@*.WĻ3'+tvg@*faNp "&mDi?RIx1 2FȱYr%1  1LrEu'ҰڰV+F4*GTjgssDbELq?n39vFRO<7-NTXҴCqHZ_4vh^-E`O1K 7kL3NU*bMic[hu 5N WL 0Di*-YeFuFdww4vFDWDh[12Y7I[ڭyת? T#H>.qXv50 ,Ē,< -\)v87+򤷥 &pvt&t]A uEC¦2l.ZjG+'*z)Z,D6jQZ_,q#Y*NAݞEDOieE#0.%mF9qku*3jv n7tdth;IcĄ`NSgMx7Hg;+r+w8*F;;!cb r&26կ5x;S;'eS ;9P{LȻQ)v /M|O<6!)o<2yWȏ@|tc`ɯ0 ;ش۳]3Dzx@ $/އ& `>|_4$E ԳHI @9 |!1⹀sH%~̓8 ,9P9J * > ,0ڵ 0@~`D<`9IRJ&=Ch @|]&LXaB 6tbD)V0ń5vdHQ`p w\v扴ygN9j6hPC5zin{t*D|d$(y@ !BŊwQɖ-"ZkNV h G0dPA3m 6P-şI7v\tić)އ Ղ:aBլ|dQYi 7x;,XK\7˙qCDv*I$@pdzzzWa. ܕ#Bs* X@kHl,BgSAqtbD("q5H<1y<`Q0b u}O|p\2ʖ0LD D<$aIdo0åy*Hܓ> f@3RD3I*[4 i!Pp# =|RPMbܜy8 Zm\u+KI-PUXFU=fT (f;5Arn'򪔔p [9aͅZi(Pw!vdj'z|wziC `-X'+̄f9si=T aqU`A pN Q`An`m6Vn$ -ﳯw:s09ӝљR@h뮟Jq=ǿH*";pnv[(``8^oIs`wYdf}ț~id WNm'CtTh=d)p-H@'[(BvF 8+%Pb E IAyXE%HmB.zd\- V,$M0~?"s$8RSX G? 8*n C-y L~$ i;ċH!_iraə# ڠ _ f \W'AT:Hϔ (9 { ٚHSvsr\cZiVDr}2tB<)U\a c|_@)ɉxP68TND!hX;@0IiJ @+Y0.ǪniݰI#]JkVE(4}gNKs#B\O7.@͇ E$XQAjpItA%tؤ"D!˔;P,QH 3eX>VG!^# "ĿaW؋vVZ1,B:'1'b4@ piE?4-Tv U/ax2Q>܊N=o]i*SXH  J'Ү:iʖz:`pO5X* pȰ*{NY zpјMiL,6dK^>R e:@B0j$*!U,jO}̃p/Ī 򯤠,.-ƋP:ʁ⠉"0 DiPOηa bhz\jO0Phjro lߞ@ ϣBn$ ."e`0ЅX78`$ "jRpaoɒYJ pD!o!ϧ۞!a.>,@ހ,`b, * bNPϐ0! ЀJè`~P8a TxhA, ,@jbBN J"lPaC1j Ǹ$&@/Ecn Q((5 8, ¬L$l'KɠbEt.\`"R֨"~Q(WϔR)opmN˖*;A4j++- :$F. p"2(5  FT Jr񴁧[2LFr`$j*!k" 2((@s.5jMc1 `BLaim3NR%( 8 Į!R d:93!CaDyQR21 \A "k3!>Rs+-C,a@@+B`A6Y41۾ V8@Q"UM8|uS е | 5^qt^#&_+_VvKtp`JU'b  ڥ8vRwp "$RHFa 6h0fZ1 `Lb!@%=wv[?uhPii#7 ozsr7"R [kԃe6f_R!8fR@8qr#Wr#*.f|oo?7<7rb'\",@ vcWvgvcz\W&@|Dvt+E< "8@4Wzzz;Ussx|Ymfx7d3.|V|Wx}w}?}~7D~~i' ؀[xP؁o'A!X|$؂765؃YRGAK؄qV}Qx"U؅Vfga8he؆?bwq8t؇/U80vD؈ٴxq؉Xlp ϊQf5)xlX{"8X؏Y ِYّy恍F&9:ٓ?CYGKٔOSYW[ٕ_cYg;+[vwy{~Y9{YٗUٙyY=sΒ1 h8ٜqי}*?YQ靓t[4ٟg3&Z vѤG6+ڢ#d7#㷣CZ)xOˢ#8[ڥqb3g6}ks!b:uڧ:_ڨ8Z;5yq!Z:ZQYZz|КYY::ڮϙ+:Ӻ{: {ڪ [h{{9+ہ%,[7CC[GK۴OS[{[{;I\[gљs?oi{ބ۸[QFuй˰[(n[{;J[{+@ᳫF)"p-|- 661ہ)ػs?DB%p( ެ=4m'"= #~Ha){C` <X`)N!R,['j\` #@CQ#&`m*pܬ7! (t` % @p`p!A| Aܳd=b J?\@]Z huL,L7"X& _=^ sw| 2Ŏ( A@!\`d>=_*4 -h? ]t@[F! ?(5`  $ %\!^>#  ɋ 8 h*!\B`!aď ^0 ?[j_E@H08Ay `@?U*p74E< pY4R Jm3$΃D=4ҥL:} 5ԩTZ5jy\z 6رdv:mT`&⏑i"@_KP .&CE5X ڄgAXo 80hA_Svf3LA,pswbtt8BK"@N# v lAis[Ea ,N ouVMP8D dB< V5g!?8Aj4$S7XȅPA`!$0Qsi_w\C2a#9pA06i  AM]*8uDfe^~ fbIfU[fjTyLD A[幑q(LY?sD"?lA`K8H $:[Ko0 w0A,(Ws$s'pHSZNش=% .RrP(?>ogaQt@n Fc A.F=pXqMcpbUfJP'f@vYyf44`oyX$H (`X ƇCQRA8 ! Ȭc* !(*0 ,6sv{m0Mdv  p H K8@-KFd>!`4^ CWp0(C=╘l^ J^ 0k\ $qx (-P/ RP `ɂ K(`N!yū-(IB%HKzҔ p/=i)k\x @(l۶”v84@Kb!ڦճ 0Q:6 " m.MX`R#Ҭ)I"I#k̰m\سvÈ[LcZdbD2ޕ22`@NMvDk.Rsk|_ʷ1R9F%PHyS-/Ђ x<ϝ񠃊+\t޾fӟ~o !կk}VS}d/G/go=jW}|-뎦}/O,G]/k~f7Ћ~ͤ|yҫ~o}O~bzs%ݷ?lJLG0`+oKԯk/Ϗ>,p!Z/mҨ(Hh Ȁ (Hh{ǁ!(#H%h')&-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhxi,(ShȊ8(&ȋ苿in0n (VRR`Hh׈٨hL(Hϸ騎븍WpnH؈MpO))TPTN@T M`)ȏ ɑ )ii'ُ P N4( A)*ɒ-/i13h8 :ɓ>YBiWyDy-yOД^`ɓ<)IIXɖm {H7upqZɕ^iJɔLYc;Rn)qkX#kpWiFL`q8]ROMЕ L ibi)4 <0Js"ty1!tiwiP@ ` hM M0 ` PS UI)>.?40(֞HjtYOjP`PU` yZ:py4ɝi 9Z h^ .5@ P  R f!iYU ڍt` @ } p` 0I ^)=Iꥴ/9)@3D.2/`6| .@s)j0Pw 0;^i_jm9\p:C@`0 3p QA qM~zKIM@ Ш* TPZp )ɥz*e @ <\3 * .G30kѧoڑwY ? ۨ:qPCU`T0ʲ(cZ.0ڨ$]jP!kiܙ-608;< @;Q`1.P65JMI! 9p`+nnw0> GېZ([s sP:;8k70W{sҧ:P \ʸSۨ= > P\ B9Yg੺竌26{p}t< *zQF? :3߰I) h L 0I L %Rdٚ䋺n 0`^b1֞ 3 ]0wΨI` qJqL j% f{]cL"|crO () wxlIِ$IƁ,jnLIrBY`! ,        # "(!%#+##$%&+**,$+4,.3+2;3346+37>58=3:B:-:2;;<;5;1;3;#<5<>C@<>AEA=A˘3k̹ϠCMӨS^ͺk1@pF۸o㣥 | h m|k!g w ^<0Aܸ] P!GˀB( 6:?; &58>^ 0rrB\(5G#r qԈqGy ?=mpw<|^HE eNmh "=4  =\P<X5`|矀*蠄j衈&袌6裐Fmϥf)[6[h:N( A?b@ `* æ`@ l 8Xi" ǥh@zXz8): *,8ֆ T OAs[`@G`?/[+Рi-`ά4`@#z'Ծjk87BOhG(ӎj0sD$@WmXg\w`-dmhY*Ͼ`ZJXprԆ&si;:rKzBcj@Bߖ.chD"^JNZ4Ի CTHj,| %+@MXj(XϳJ<+q9Rރ`AIL: x?z_`*GO_J@!QJupw}ur1 jJ*'Cz =B@ ÅGw) nv@"ꦴNuH`,1 Z60S]%\l**:uJ5F4Kp"BPCT*PE Z̤&7Nz28|92ĎZx@Vfc?+=np 1Р ff0=B+gIX#EfY !èHjq3 b1*U W 3yh)U :B[Z3xa [0Gܱ3LI\Vh)7 dT xA`⑒,HGJҒ(]?@` k@nuaײ?3'OznEǦr:1׃㐀/U*g` 7/֦a8ܿv ?h\ ?A7:0=X=z[ UYt*\9*dlS)̔MjW+)$c7cDNY27AUu2=8W͡E$UrY@J^ z::ns;mac\Egn(YhZHIX`ҁ<?pSYm+_,ܩ)4_}Rnӹ¾#KAhX$hO?;_J`zwqXHX7tbu<o  !Fաp8LvH5QT]6ڕCH9 wȃb[)bX%qhD|l#iޠXxrG(X(`)t Ԑ8ơ $Ͽߨ7sEC0r0TB@gгDZ Qe>Tjt p3 @vDM iTVHd)˰>8%4B*-ޣG<0Prc1Fsoހ0)4V2FU)ƫB2)ӃS*0<X -aY!E<,`C}R;e-03p#9Ļ" BLM~h)9)YD pSC{B^ DM)nb2k%MBR040,@1,T1[{)-Rc#48URh{9g3/=B}qFeESKĭW@1I9\/#X=1HGR `< [[,NǍ@ZpXca@R̙" 0!0jb0%OlD4b%S%XT1L )ǫB iǖ2<$IײCKH,xKfIly_ /N 00cR[ LN?Qߡ.)Ys,E00 i".I WdfL, ) xk9in9oBO#z؏.YSgI)޼WAz C%NXE5nG!E$YI!dK1e\ ڌ\fhq SQNZUYW5Vz@qx[]yۗ"W;56g {HCA*e̙5o)C\iԩUfh_I]mܹu~7aŻ'^q{frvrѥO^͟[w߱g=yկ<|lϧ_IEǿO @T #pB 3kAقpC; 1 K4D+ QDHLEcpEPFs?krHVq? TrI&H\lrJ*lH(J.'&K24L4TsM6tM8 K9!N<|8O@O8PDI(uQH "MC#/'uRL;tIMSRK1T6G5uUV=DuMU[uV_U3VZs>[uW`=W4Xd#Lcu5Yh5iˤZn,[2v\r7KqUw]΅2]v*ww^|%^_5F6`f`6Xavx|!_|2xc;cCydK6dSVye[ve5C8fsyg{g[yÚ oNdivizjjzkk[M6|:Gvm{nn{oo|hGuq#|r+r3|s;sC}tK7}KH$OKZ#߃WM zw{w}"Q#ab/.j'܅~z꫷~z_]y?уz7|;.Hc~Rߞ{O~?hzG|*>p7%P d`w`F觝`M7\eM Ѓ+da yp4aSBP/ae8 axD!UD\9C!x*1Nl +"PHA-Ɛ]!8Ɠ$gYxчkdck1d21<0c6G ed#ІFI @Յn ZBCe&9m!05@U N|ՙE$B @ˀEaxv01(XX@PxB`  1nO4*=b;ey~dhjmGzAgصu}B.8A RЈ5@`I3gyҜ['SwQ(zШhUc 15E-ւX;aAX!F)T<|ţ΂ݶO*X+ d}D^d^ˬy(@@-oس3+HQ˷}{> 0H P@|#rS3 7BЁ!I%8027Ȃ>Ы,\ /$ҁ۽k:S% R*+A+;>(4侄`# 7@#7rB~Ȇ.B>+)lH2qҁpvPp1tF4=J2/4L5I`;7p$p`E:\$΢w"hԥB8`DS-eHӀ4<` SC<XPLJp?݊?Ot5@""чk(2&VvP/hD"/ƒl@ 6H360 p3fC7<;y>24$؂-r#;+8ۂH;Ѓ-*67K;rT01[%̷&*")I9EO&1K7; p`864c󢇢 ؽn"8ɔ̌YɊ09xH#T3 oHrQP;8 HKI)qH*0$  `cy\<$bzpK$ss07#Ij¦2/2pH,LͤTxw$` pij0qOPY D9-EAI:^c$JQ! & 䣽Xб|{PŢ%Ѽ0?BѲ\Q=Ő?Jq RQQ R&"g#$G&R"҇0(Պ)*R1 -.=/%S6'345mS;ş2U.SM;(̂@7]7 i SQCU׉TKTjT:ԏ*>`5 ϻ@J{ԑӂHX>U[U\U]U^U^X(,qTH5`Kf}V.t.VmuSi3Vp WqWr-Ws5>8H6!VX16un 8)0PW~WxOk EKCX@@D0XXXXX>:Їq[W6-`|~]ٕFf XK*؍qUUPXFpuXY ZZ-Z 7]҂8dYZ? kY{x7-[=[=][=EM}N=T|W~u[M,B;.E[]\e[ 2P; -] -q |=0[eC41$\65o`Xm]וCS\v=eUn@ 80 VE]t@x]e5SiF@]^] JU~^5>}N5 c<@ټ+_%; p=7_^ָ-ֹ `(] TE5x`53 ~ `HC^Wf P@MY~a'3@nuL5ݵ^[ؔS|ECmR%Q9vbuTSbC }M5@J=0oT$F`T`zcCP[9;؃@]KFfUf@Lcc6@]ь@MX/Vr4I.v x P82D²_]~*S`%hXdgXUfhhiքkVPb \<-\ZNsȅ61Ћ/Vh6g [ ֕i؍c텅f*v+fRPvXId@p$gILJ^HK^\h.h雞\i >XYE52]'Y]2Q~fkuXDknæ^7Oۇ%Kk_~\eRV5lUI;x^6C0lC~m؎m&lhǍX@8E9lNQ%_sd;ݩ a_m뿮U臕Qi-nl^o0mo+DlH? _ P5nn|胎]DNO#RcV(&r%k5k%w0uP^OѾTJvcd@؃3 4W[]FosaQJ&'GJ2WЉkƒBfr6'T|``4oܵ =Y@eDb~}MT=xX8Np u;4wX탚mmf"q}ZΫOgghgi]k7o NӾ~upFw p ,`r>?%*w:w|wiԾu~;pΈf݌}i~fsיx@grjjX>(ivejޛnyt+t= N:25+8reܷ=w>.p/cGIs*_)ڵ @G u8pSzGF@yGzvw{'{<y*kTrߔisWa/9x zz̝&owy~SOIQog֧9< 'op̿ͷߺ=%xw$lq>z߰RJ*VEnQ5S{>=K.!u,=ıQ H ۮ[L1=B\Gq/δ0es{i0hJsTԄ)+B2YB$L1BtLDBGy!aE~U$.EP":A'bM!^H_2C{"ejCˤK'MC(Ch.#Lp̦7퐩vJT=x~3y@n)QO"`Gd=Nq~U-:9Zl3gS|:׺v=A-%JGd3m<%-  HG9W @ Ԃ_YK-?!5$CvIfZܞ@#(`.uDygr;񊨹. *nv $~w!M(w'@T2 !&K_g_KIcQ%pq3%xşR[i^8B@G%`~aD_[6oIryK_ c5~c8lG-$ 0R<D%Q lf"Xs^l&q @[Hc6ȃog59#Yg6}?aw?31Jc,qUfTKFX  Y#@phRCXmk3#glms/O;6ε@"-^g(IFH` leieC38#p ժa1KI>1G =gDOPIM Ӽ69s.sZ%xnݜ2ɿ)3=!SV:ֳ.Z;@zA܎]-;"CӠ;7Ht*v i97~~?k+7<#s?&Xj&lN!n!v%d!!z!naa!!¡aa!!a nR!:DЃ0<"$F$N"%V%^"&f&n"'v'~"(("))Bbf 2^`>=="-֢-".."//"00#11#2+rk 4sDa4^| n#Qcq#88c "#::"7~:#N=^>?_$AAV@*A.$C6d$d9DN$ED_EfFn$V\q$HH:GH$JJdIn`JKJK$McL>aMNM9$P%dP%RvQQ&S>%-%4%T#FU^*v9E"XX%YY%Zb2lT80CZƥ\%]֥]ޥ% W9 [f5a^%``_fa'bVa c^cV& UBT ebf]&hrf"d*hnhf䕦dg&⭦lkNGWZ`mm&9OopggQqNr.!'S6s[oN'u> Ŧu\ungATJwZwa'iy2Zy犁g'T0D$kDl,{. RC,#.}r ~R~gh:gʨTC.,C{у;,C.UTB[77UE"RYUÄV ^J@,@=5 h%; hO\ŊNTt =X@J8:RHVZ.R{ \h?$%,ܑUhfT(T4:Ğ.CDC<*SJD.Hm%STЃțɗR#j*/AWd:b0 @"j|)S4!:$R l?Ê8l8VE%TF{y8*@SP.>hSC$,8V 蝲7٬rJ2&(:RÌ_Pg5+E)RC" A`%l.*fj&B~*‚,88f,O.~> 5@bTŮ>DCS )gx@D Jϼi%xg[Ll}mCSh.@C)Lihԏ4 h8ɭd+NJCPଭٮ(1EO^m+X6]ȅ9҃ąN̅E7v-#n2 |*= 74.,ا0Hk P@Nl{66 F2*Ѐ-a[e@ *?ӏS KĞjxC8fm*@HKH:NT6oEo.L/gѫ_0=@ 0 `z@T?/# ?7$j*,/o DCCı 1D4DCk.$.կfq@kN1q{?(?:ppƱ0mKЀ+. rBD*(q+"gRI+׉_㎃ɪ1]jV.q։/9@Ċkg"3E21=1IVXr+1 2/N7-ն$^6-0*5/Hu:{CS\.q4RQKg0DmX3D22j \E*RD5"nZhcv`K8畆Cl;.XfQ@XC, =Lf9D΅/߹쨥 n"xnWk@ކ.C3Wړ_ Bcy_X;GGĪmLQF1("CPCF~+:R+{8{z5hl6ֺD`k "_7;Ѭo i;KRؗ;M;!޷;WOɻ3;M׹;;UW<<§O/<;TûO <K Ƶo|^< ;;3D@v|@ ]K& `~Ѓ ~0(=Ap@ >WdC#=P <^w# (@:(1}= @矃~ >7]5H^~e* W>d , ՟ 0yD<`̹F2>cH \?p? P^ ,(eCgq VxcF9vdH#- #=+YtfL+4ygN;ygM &dXY޳+HPQS9jU[bTЃ 2`s֭5dʙ{}Y$^ ܇ P(0Qh $V`FpftJ X'g @wn;8LXu$PAeTr>L4%1b"ƹ{w"uqh Pg`Qɓ>\p}YTPᜩ 9!*-$. 5܈O2 g*- &装[eaqg+0#/CQ$2&LYۉEP()K2̲"p0`#z*H|8 fRC"/> "Ac)%[a4ԉPP$P,ԲR IA0+̋`- T]V]}խ ʹK+\i QA(rzG4pWl5hh /-Gh [ډ5gv}qԥg 8ZܪEI~[}lL*g92ɖeNx}+l6X r@sF_3W3K uC.ET;ųXh4 z¾Ct..]vfΰ֍raVZvID)8hَw&){*.Q\Pi)ɶŮD416[=TᓩH|\ O!:E5JN!b/LT*Py `@;jby~.k#rʕJr; Y9g tM9`8zHҲu95Y$|c[| ֧H9G`V7žԏC)pQ-H@IM? khPa@ Xa e9;|">Clϊ;V# =* ;)a$EEijNƋ1u #fV60#!,)n.w+`erXPoe2IbIճ4IҚja)sJE& LarKA:NDagU(9gY2dfϏ8#hh'Gb@něz`!|=~Ђv,A ̐4 E#Bq zc1SfN;r.vhZ*Š 88&OHʇ"LH> NdJK_V `0K~dMCJuQkEt `hYN,uC&D)JA8=+0 ѥgQ OtϰGb)׹҃hl# #=P.)"Jh(Y[m6E] B²CfYz-hC:G&'9W"r(ң4@z`PdAlqq\$e=qKP ͆400~g!`gPO$'ؑ}RUmzbh"\:H!9^+Q.S # t X"@@ĖC$>LYs&qS"k 9 {.ІxujX" ? ,Ll;!4\(0HPӥE(n3էr0~ʑFq  a+ci|fIX\ &'Q,CX^et$^1= Ms.BRW {v+IyX$@{k] anwsːA NpeLvq?(@J\^VD% '( 0Txo[;ӦUNS.,CZt&1e1qOo{zp[g1q顃`!HT k{c.(. gZ(l /;e*@xĜljuң -T/|e v` `VHHPU sw kyv%$/m .a !/%wK܂syZ ljnp+r`Qx=`d\&(-HilHDbl(#wV ڊn:l꼌P  0$ϖ@wL \F.BB/o,o,BȠo( -Ä.EBnj㴍XK0 מ@"8pnƁR  ln a `lNJO OBpa(  Dd@..5` 8 9nӐo  M nA0bP -4bУk  $lnL SQllpfJ >(2 8n lS-#tf>#" TȰִpɊ-cxl ,JA Qߚ0 Ry #*$&#Fޯ"[&-~Ȁ ٖ.è:ZĖ0JTA*!@>"@B(+(.R`δ, l0 O,Fv졢\qIJ A :@ ED #r1Ⱦ2HP-ø+ҟ6r`4j*Ajq# gHq.5!s5-voР0l6%ws+SRf 0  s().OQ8YkmE#/0 7`K}SS $0@P?1/.23CAȀA% HHZC%@I:MjB"1i5N S:;`0`b G14RN@6Be&/jN@⌼0@E Eq5ݐn30/,B3MՔH409+  r#N"Ot~LSRZ S52Dg:Y$ >TbT'OYUu2$ Ҋ)rYWYK : b?%I3X"YU:Yuaӎ 1I@7Ŭ['U2*ܼT8@qzV#TH~LY3RE J` ~ 2!R5Cu0a#O`auEMq56@ d__j .Rao\$b HM=>^" !U?V]]]PP!guH5 u5B$lu@!6ngvW6R6LN  kz  !2Ws7s;st?Pi?imOmdvtyBw,@ @www{wwypW&{Wu(5: 34@8@{{{0@`K#NSyuu􀀱PyW~}[~i4~yחyjqS5jxuїS1iY S3Ki/XR-]+r?C=7MqO%Meׁ_\4yo=gs*h5}Yp4qh}))hl)a،,oӨݸXX¸u9/Y ِYّ#Y'+ْ/y-,xdxpnoKٔOSYW[ٕ_cYgkٖosYw;$FAYeٙY9Y}tדٜS|Oי*OYv{7ٟg&Z)%x58+ڢ5d7#CZA㣵xO颤8[ڥbgVksZ#b:uڧ~!:_ZڟpCZuũZ]gڨǺOӚڍڭ癭ߚo8M:گc 8۱'ۮŚ/#/;5/۳G2A/OS[W[۵_c[ DzI۶״Bo+g;۸츗;U[ ]ҹw.kۺ%v[~"J۟{W۽[97 B`?"oÎ0xA P2݁*ػEq" v`!r(` l4ڍ*2!\_"̀*ܩɩ @% d `! a>p`o/+ Jݐ`   R̠Mt ? @!n!kA*!a @  "!%*>A@0c  6"a aa > Pҧ ƁϷ`+a ta ̠i! #<}ŕ@`:" @0:r!RaŝC]+ . a_!~k !@nS!?a"<'-!-\(`tαp @3^ݩ8Zj(b ~ ^Hg$J=hh@$==B <@-NZ9N8\D@tRX, 4[t B!=8 \"*\\\_ >i9Q+uM`F`Mhh X b w)@%`"aš? ^‚<OGhşD[)KɔH6y)ٓTy@)+IFJٔa)uUp"Xj)lFi ]I_9w&asIWgYWypsYu I|)k#qB€Wi iQI\0o\P`MK Ip miɛB=0Jyu u9P p K"KP IN`^`ɞkf/[@Jfu6u,@>~IiP Rp II ʠPII%#7q  eS uP !"iyiJ P Ր I љ ) `I!z#jkm@*D./`7.&48=3:B:-:2;;<;1;3;#<5<>C>9@<>AEAd4efjf,kjlj%j9j2kPm"lospos@rsrtseuT4vvvyyvwvjw-w4x^x?uy|zuzO2{{{|{`F|;~|~u݃?3] G W%{pޱnqeϗ , tDPɟ  ` rq{ p8 tulq!]r0p:5@UG%MA~T0챇yQ=桧:]yr~x53sKЗs: 4cCH4 =3AH)d- pH} .矀*蠄j衈&袌6裐F*餔?馜v$`$S )=xj2O C;i1@b$#5wp*I)= @ jJ PǦ@0@6^E,qm d@mJCă)=d)pGtO ",7b7tZ1W/c@ fpʵA͈M #AQAKioMaX0 1`Io:(}1wx :LP]Ntl)iJjj 5E$ =)PU ̤&7Nz eytp ܫHy0T'Ą YA q#⍮Mlf)  (n!.TMez p4l%PPP@Fê-JljWֺ3`̒fy%0t0qT\Y7-DtZ,` om0:CU܁Gu[jfy5 t@0TJ-"YtdwQ2LEz)]QhX ݃t ؚ(NU)hDi0 `@|؆bp+RW z~25Ô(0j 40ϯTaC{~z|_zpv6X[Adzn Tw%ɗT<(8:`^ı e+@Zh [Ҙδ#f'{U E+\]U(D} Ds8*r{#K#|+ Z\ 'pv`[^ͺ;䊸M,}MC6_E 8Zd']@;p\u.V5NpHFOk{ B[jz+T-7kX]zak}'gpSbކGU)I&q^GH<@[`9Si ռNs؄id{ Mi0D-y]sDŽ5 @HydpCQ8֐\w;![K@rA_$\kb wCLpi#78+l}+D/$Ѿ2{ G-кڽ\'b&?J%)%`[`7jAGVrn{_ϭ P@!C!S{rT> qxsZw:HGC@rpT2C7gDYPQ5?ujw 3 @2vEY lVx<|T/pG @[w4sr:.x)=ӁQtc;WCUo&;`*)!tGHEiRC)g3V~)AUc. wЂkvxx2O$ (^ v,  C 8p>~B Ce+0 <p`,`&7QSǓi5W" x)fS#SfPF@~}yV (0d-`2; @_HP@v ( 2.vvIg(Ifyzb9(֖c)DdDٙyp( `<ٚ+FΘiQX8wyIq@gp@pyș/cr9ԙe7ՙڹٝ Yy虞깞ٞ9Yyٟ:'os ڠ:ZR7sڡ ":$Z&zj,ڢ.02:4j35:<ڣ>@7zRFzHJLCjREڤR:TZVz5Xڥ^`bZ6ZJ\:hjle Jgڦr:tZv*oIqz|ڧ~d7C+z]JI:Zt:*6IZ*Iڪ:IZjAګ:ĺZAZ$Zڬ) ZzѺzڭ*j6J檫 * QA=Qrdɐ3, PsJ骧1@YW_g :4%硿pGp4)$7"ۨ)Uw:oSGD &@(E6)4;>+%k')qYf@ wMPu 22ʢM9,׳?:,#2"KvtWy0g bt)Q{w4By cK/# kSc" wPJ 5E sqW0  q@P-0L|B _tdu[vV@x--_`k} qp wX t{fp<Q@ibA,\;X굨 ,;͐C.Q:YUU pBpFQFã=D){Gc@q DEr:=-V <7K:s5gU+C:>QMw=*3<@pQ~<)@wtN:sP[wrUjէsFc]*4C4Ö؛r3-  GE 1p,7 Q1@b80UY))>9 sF C4<H A >Go${ -u"ÐbT2%P<$l @]1w`#ͤj1| u< ]#p1 :Cpb]k*H ! bpZ|LŸ61=+F+h3mD<2r7} ǣ#MC@; SE#.>})ЃaP pJFoQ&KC[L{lDYAF%]Br)5F=/sb=+ǓD:C}P>)tHz.I H =z-?QE[XH1)u0,rKSr,)M){$2D*OTqЄ/zwM iyϧ_t{a/? @Tп \#pB k pC;0 1mK4D QD4LEcѣYsqGkQ-yrH"Ǟ,rI&a fɹ]ɤ?K!(2 )3f7.qeZ;#k|"cV9! s2P d 4"0 12>^RK@"%4`iR%-wB; mėQ BA9U%"QEZXD &e̗a# pЃ:a0` |c%*_0g;9iK:yӊ"fT|#F@$C @bPpc`Iڮnѣ9!9E @/xB|@P Jb=HWDB2TOS5ϩu s@ $ *CFjD IFw6#sFQf}~.\8 g&S@ó~4+b ?$kmF%97cT 6\ nh{#ҐFGA+v x BbQ`w"-*X sq?bс" F'x ɐDm,0Pa K!nz\c-,{t`DuC)\pA 0 #ⰬcPΑІf.+w15팳$(Tk[ D/D ؋$aDK+d.2c-S8# H@rhsx!=.qW֏>|t(: >ܣ0JdH6l Zc@z \B5 *Pȝݽ<_$G1"@ Fi$C AK( z#mBpz0XmaY[Wcka5 AR.j!v+X%f d y|@.fX}(@Vx[17SM-rcѭދ4 pXCYuOV` qx B) UŤނZQ0Oᐇ"CEP&g@ⱄ@BX"D1lCW,؍OY.5$B1ܐD wׂz!VE)= t\b ,d!< W_(K? v`W(.9%@Ճp==T3Q=S0h;>[J38c+ >@ʰ8s @Ȁ@?cu%"- ?ta!(JY+?ث<C¢vXC/Ax=Q,i>#뺹Y+A?d ӂ*k@+;İCL k Aˈ'K$VT@6,a8|a3,zX,@`+8I\B KWÀ8P"tG*1`;Ft ILD";+˂ @_AcKBtthMj7 '8%pZOq,?,MPK 0pȈ0tpixbQK{묙#J2Nr#Q*wύOC" eKB}@2Q@m"C"ьMQ#" ɨR#JDdRRTlR.E!*%ұ~RR4E/0Ӱ S+4S ZShS7 8N9S?5 ;<=}>әPM*aQD#- ɠ)TVGE*TTT'CwP+@X]3SDOճ Y0BU_U` VaVb-Vb5Yh YTSu-]hKj(CHUH'\?KtMWu]WvmWw}w59EfgS44 p0PX-X؋P p5@|_e; hՕRU=_ F%OS`86]\>N:`m9 WEYEӭhۿ-.X&6iDFa*9Rzt5 ^W[8X8ǁ\ .}u٥b auU~S3ET,c˂-b=]ȁ_;Gr[7);ncd?]5 P4m5c4F=^FkU ~#8^](9CDPme[M<6?V ?52 tJMNs p#t%dېgfȕfOjMhXlބ?SoSe ]=3D\0eOtȅ;6KBB.c&Qe>؆6[filޅvډ6ԊNS` %p֪LV#_=h4{؅׽hX띶clm hf#PheeaD\FAj`\D kF؊m܊EX &բZ_8滆ȅpne`%?^fGpmmFlF@XUbȁZWv_^ӭdSޅv^>oN^nkG,ln&>RQJ3^!dj~<@jFAzzp p u_E=ˆoZP'=]j~6>胦mNC臚Y}D7uKD YpNr5Rj*>W\h+~EU%0vJT2]/FMc>h9O8wݵJ\rYdE-QZ5"XDE?p s:ψ`8/MAX]G ^ C tarU X7YgfA4F`rt`E?hX5;n)R٪:,AZsvB0叀m?hF/ԽwUcvz.-yyvv-8|xĴA/Xw>{}+\Y~`cQyz-n7v;^<'QyD{zGY=olVwfعDgkwwk*7RZMVsi2?pf`qthbzW}{7~ 0H~\q:XLvN:Y| ,(>N1l!Ĉ'Rh"ƌCa`Ȑ 8hQ#J9 R$;SҬi&Nqg_@-j(ҤJdKϣGR誣G w霪b^U%Ӵjײm ThZnҭk.޼zœ&,0G!daT HdL#sY'OL-m4jDu4u#A|f%pFnt5l^Q/n)r2oߥ~n}@0//quQX@g3mgn׽ʞT{(C1oз ŗrI8a^)5{j8=Pb ;aJ$PHȞ{-`9 >"T鷟~,dN"W!қku;ZyePjEH!Z3?(p&wԑ^dw Bcy]a 3 i`!y3QǒB>i "1=y)8e6%Ra9*gѓK4l?͈Kh >G"Bj~>S 7+ijz[_ Q+^-uf*#*Rc{o{-Kj# +쨳0 /Lϰ`~rmmQ~q_/=VKe  %@-M@޼*@%\7ja{;Q~Jb$n0c/˙tA0-/ ߨ,xRwN4?GvTQ5q՘q O)Enpw!5Y+Kţ H;Z A5u!ʹfAY*أXćBR 4 "q|)v,!1+@("0@Pу*n PbLG u"8ezyIL~Jd% q:8hi%C:Xxp ;(Df R Ol)dSʸ{ $TF0zd! Lb;EāR_ڧ#aО!:RJ~͟A8QR PpmD23Qt< g.cv:{s(\|(ԤWD=~|\*A 4f]< (&+XUY-5[\j r#|c4bjhy@W6WrSZ偪-9^ꯀ`++dMcј2"ڗ6ih5T f3;2i3Ti@36t̍ö!-vK3Yr.6R?X Gs F({6G@Q2@),ZёxT{=KX+}>l/@Qo Q#/Q4g(ق~<!T6$c)* "S"H 1DK##hՐ#TNm'[|ߖ^ٿr74wo``f4?8tp9֡#ϋ"ibQʅKhO2I lxsqXb?PsHV"iS־weկK2kc_1H 1@1XCp.?8}ߞK92{g z )|3A~!R򕳼.9SU-xķ,[J#;Ӈ!ғ3N:Mt98򬗋SjD6ٙ7GuE}^';ػ wTWW{Ͻ_{>^|;+ /yQ/^ō<sĕ3/ =y?=?Џ-Q/{w= 'ξ=`os= 7ys.mo軓ޟ}lhy30/~_?܏I˿D `t>`2[Zvf.C}~ ?IB\Z&h ](J5YصE+ E*Y`;_EG'hn&p6V^&LnbV!~a!!¡aҡa!ar::\A/$"."#6#>"$F$N"%V%^"&f&n"'v'~"(* B ҃2>==+",Ƣ,"-֢-".."//"00/b*Jih2q,2F֙V#9cY6n#7vcA`#y8#98Z^9:##<ƣ<.;<#>#]գ?#@v?_@A $!$C6C·B^CN$EV$SDYFn$GZR)*aGH#FH$JcI_JKJ&K$MrcLH֤N$OPNOP%R&eRΞ!S(^GVn%WvW~%XXr1TQ /X%[[%\%$ΌU HYNeZ^_U:_v^/[a^^S]&&&d/D@4&r2R āLD02&k&.ϮbB&QgJ4hv~vA$*&Cn)/`A`@9 ?*`$jx`@ rA`+(N1ʎΎuhcW@R 7 jZp"~V g `JC*?$n(:@ p.veP|J)D, @ƶ(6ҭvyu1)JAryQS+9(}@HQt؍sH sަl28X9yF9et sGC ]@rJPG|(4{bV77+ 7HǮ!+ B菫& :*o;:usѭy{4tR; jRs軿P<յM/<ӻO| o\{4AC=t@ +98+B#ܓ ((q$#O=l 秃|Ȃ >>Fξh>C+ >-Q$t |GAC(S$S`'< go }DqAB2ȩC9z)VxcF9vdHǍ^J+YtfLL4ygN; WD5H %D`hTSijVZUhA|*@X 2T@!VsR L{9n]CB [D℈,R,Hs掁=r. ,X`B[d}wV߫ GoLKO*8'' AB{<4PV’xѵmYX׷Odo  5b.ґ :*C e h"q2qHZT\qX\|FU1w2"1ҏ$q Z ARE;DR!+\C*т:P8/ f[6| AK G : \h2'zRSa?KI)g FD2-48SGLUTG|u 6@R((=uZ+D&BV≞mCrpWn-hh .+"p ځȝEv}^rԥ<۪=i~Y}LN XۉTdv8}x+lŕXj(S.J_17W3CNC1R' cB9<.NM 1#( nQC`beaL9!v6k $ 0l⌎;jF;zI{$In߯98D Ac2'mbŪL16[; F!Ip] Nu -3RT9f.AHc'L#U*Py `9kb{^.ppnX4LJon4gB#]f`XB(^zHZ߼N#`FQL| [L>'uCR"m,P+!O觡8֠$# fD2,qЁA4>#a%*[H- VT'Oa)^1GFH` XG;`U@B+hG?hGCrNDȐdsڬ,b"eL#5!q <a T*S (@,iIH 0rPm R0MɎի8Ɋhҙh'}ʋR$ޠK] J18YB]J7Y7$f7Ϗ#hĀf'HMsɇ> QB ZPQ^ /`lgSEI:QJP #(h@$1 4,aE@S@8AРD) .L$ :ZA 2XeT+6d0K*J B[`ld AxP,(XN4E&Zj O $JQB?8RZ ((H fïidYq4P%(A& ( ?XXS%CG1 FBulT!+n0/e/JLlR.Z+v{`У PhKHdn{[RG7gB< #r%OA wĤZfJK " [ "$0"S0iOD2n(- L |grML&l<axϯtA" P N*B2@Z p0/  Ϳfܭ`Ҏ jN*n`(!$,B0 bI D *+a @v` *P"ݞliB`8c ., ,0 *2I0$"0+"ʡN$q ^:*%*R*Q;I11p,XK#a"Ѧ XPzq [BqD˱R)BPhl ,ZS}*`G2 Z#0$ l#1 W#/$Oo"0Q NN%%r|X*!$9%S.(,&, h2ll ( @L*(q()(u >4 N$$;*/*r%vL+m]Has0Fl(ġ5@z J 1ʡ "`. `O3i4Q4 `STP. `/$+UR7j̍2쩼`!]0.咞1[A @*!k*ɳ<21  (3fS&j! QTAEMA A41I (\D΄ B jaDu4RNt6<"-jP6,Gut1*R)ϰJDal-Is+r`* ʥ#4KbKKiK1UP@x  U(s!@i 6Y#u* վ5N#W]q3%GWxxwpCנzIyi{zf|7x7.}{wWŷ ~u}7(|7w#~ xxASGot+84)O;8؀mIKIE8{H [8TuXCkxdp$؞tkhXc|NX0\"A؋Xǘ،Xט؍ɸ"bxkLY ِYّ#Y'+ُ#ؑ{;ٓCY{GٔKٔESٓW?y_9]imYg1oYw uS5ٙaj)ٵYAEwc7ٜfי%Yx8ٟcG1#WZgxuw8+ڢ֗7ڟ'9Cڣ8KڢG_4ڤWQpXڥwEcڦy]wszOj:}ڨ[:Z}KA)Z㩷ᷫ#zZZaiۺ/a/z֮}GׯB|ٰ[۱p:'|(ײO-;[x7<[qOSK[PuTc;?_ e۶w[%rWJ{۹'! jn` #y n0C'6(A;+;'$$A'"@)pڦ¾.BM3 .p" (>cnlܽq`;&a<#T0~![*4|.!x0(@oB 8>!;7~A&"|ڷG" FZR"! `A!%-~!>b!o - Bij - *(! @A B $J  ~AT L \P! 2! @0+" A Nm1{\  B  };) /Ti~!! hS}!}! 2/!A|7 d}! E&  d f"d$ U Lnn Z B  r) % cac b`2`=`@Vx Ġ"2r`"wPcb"8("05K :S˒Ǒ$K<2ʕ,[| 3̙4kڼ%7z<{ 4СD{rIuzţ3 Ɵ$dBIdFִSQJ.dPK]w=%`=eږ9 t*V%pG GsFR<`UabO Q0t=b@$[$Wi#&Q qZ$ &Q@τDU\&PUCH%IwAOkvѳ?#duYbx!H`(lE ypGG Ɠ#O-:5<%YXTdeV@pR#\&Y 2HdEz?KtAzDvd*r.RMLPDxV:'ɾVYHlYϨiFR Y VvBlTB-:VdED8l@QdQ!"zBT飠Q0a0-`xCQ0@.fm%8@c$r; G 7HD zT(I6g }$핢RyъEBg$yi!OS9 }UGRG&wf,@ɬf ^D!E7{*Efe&;܁p3L60N5@&bTvuV;]F^ s6C^5@ĠUh6$'sֲD#0 ;$+YiԌd/@Il$MGBdw7(PGW]ւ-.*ZQ(x`{iPTyt%p-oi6pKzK)K*H dP"WF(k a:f{M$$€*]ǩt-xf3w<<$̊b w~C* wLԹ70j>xRp5䌇4*T E!tB;Nu%P_OIQ4xZ73Qm?=r@1YIQ khHl(Pa#N@BUH{R@ 8H8L=r !7dB!$ܑpSr } =bEΩ0qR3 % u(P8Pv,iOڜ蒗MbPK@S$=0@J$ 0@ @ K F $уpZ0PH53[b9iM[Hk#Qx.d@ -/7ЯVz-j#S 86!@qsxc$!atYI9/ #5eQ])[ 0}pp(y) {;8%@g\rUÚ51Ȓ0X>_Fh lΚH6IL Ԯ6 ,уyiIr1`dѐsNXbir6 9r\2T%DW&f5!i"B+KS̓VHTԲ#IhmWd2/y}kN-b엒Avq|:@{ M>Ixu 9ЫrLK "Dz.0䎪Xf $E?Rѹ r2w+E0pD|,e_.(|+mNF|<'7a|D/я4zҟK}TWҙ$W}\׿c`/ώ[c/}t >}|~w;/ 'zGR7/k<=RЋ~I+ҫ~<Po~ /+oKԯ?pli&ji/Ϗo(H~} Ȁ (Hhfȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈs(Hh8ȉLr k HhhkGPXBpB苿((HXx=`XG`xȍx(ֈ h{Xd>@?(H؎xk@HC8)ig8@:A!9ȐX/ ّ 5َ"' ))+َ- CIV(3ٓ <َL @ُJE EYyt\rG9NRT BmfX?=QJrVwYh@PU@]PX)츎>=*ləMbT%/# 0HَUp Po`Pɓ:MB IgViiI1bpf9vmfsA -`<_>y]Mp p XUPYX5 ISٙ R>!@ n s€  |Ih9"9C 05pop p po` = 9 )I)y17V+ Q0 x y  PKٰ=0y CP@[@zKi耠@>BksI@/ L;dP֘]I …]  = l>&%KN;iGܘH싣ȋ|SLE!D\ɓK!\!=[gW̝"9)i9XhxPɏnc\n58=3:B:-:2;;<;1;3;#<5<>C>9@<>AEAbCccdcJc;dSd4efjf-h,i$i6kjlj3kOlmrm"pos@rsrtmswseuT4vvvyyvwvjw2x^uy|y>zuzO2{{{|{`F|;~|~u9݃?3CZc@@{({(C\TuT%!{ב%czA@+, O+a38W}:8ǁ:`N56K>: JH@1Г8D6p^c,] ׀Bޟ*蠄j衈&袌6裐F*餔VjioC?v駝@pK)9+.O>!1i\w`-dmhlp{h<)=@cdk?q 8=I L0̪ww otH۸Z*=pCޚoOgہo?8 0&RjhK0垍sNPO<AOƣ\>,T~/qo+0@/@uC>p:'H Z$?d@X ђp0*[LT 0?*bvz@ow.PO$rH0٣ PtP78uD1Oޞ&D޽n !$ ӗf ֛qMdsY[X7vdO#'`un`|lAF5;صNp9&1͆k ;rÊV`헼``cKdxb[ͫI݌I :2e,*\5qFdf'-+o޷,PD6o G zD:LwCrٰTģ2Gwg#EVYQe?jz 3 Prv5E] oV!<t/G [z$4ss<3.{)0=Uxc?p*oV;*)$G!XiVD)j3ܖ~)EXUg7. zl&z|bO4 h^ ,  Cx>b D+@ 3=$`,a*wQSʓ0mE"X2 @x)gW.phD:`')g COXSQc.50@>DyCw@ɢe:7Gy؇Yi$S& Dt ,2{E 0 'DXE@ C@]v;B )PD9{  @6AF'C` 2){D(o-ܰ `ϸ DwdYfbSAUe@Tyu*;[e/dS&C0t0.b(nɖb/l*yy"arrDI9Y{șB ɓ|bo4Ņw7ٛF ' (8ٜ));*yؙ]px9Y@y깞ٞ9Yyٟ:Zz'7 ڠ:Zz+3":$Z&z(*,J-2:4Z6z8/>@B:DZ ʣ*FLڤNP)RzXZ\TZJVڥb:dZfzghڦnpFĦrzxzJd|:ZO3I ڨ*~JZz94کIzd3Tʪ䪲zJdmʫzȚPJdʚ:UԚں,j`:k 亣麮ju' 1"$- [0Ų =: ! F[`Q&3Or# zDg-zCPrMrr={jz"*TG7z>Na7 آ`sRK(;ʲup4YN)*8{ 1*2yBK`FKH2$-mAV`Gsg {G Q[@D:@ZH>A)c}Qp$?RgaM{)Re" ~l㖞8~A)#s#$rp&v+4MW~Cɢ*q}}DŽ,&]<ފ(ZȞF.p (芁,Ԕ=b g(?} pE70Z,YHi/7 @5 ^`y2q>$ CTz6X #X=SÄq ˆQG!E$YI)UdK1eΤYǍuO<1 D*TZ8 ZZU!9ljWaŎ%[Y-semϡc]p5@fx%p%\aĉ/fc>㊝]dґIzq\iԩU8ȓY}g=>pp@ 4&{-tA LPAB 3к )| CqDQC+qE[t1Q kFIQƟhG ,qGRQH$TA"%rJtһ#rK.ʜsL2J(TsM6 ;IjsN:NOԻ6 5Pt#DuѪ3H+R$RL;SMSRKE4T?G5uUVDOU[u%_3VZsF[uW`W=Xd$6OcuųYh=iZn.[;v\rNqUwΥ3]v㕷4ww^|MtQ_ŪWN6``v%|xbъ3#v|J6dSVye[vecyfkfsygME$g6hVzisyŠy,8pPjzkk{l6lV{mfNGB jdbkp ›D v,Yb Q@ C-,tajA qHp I‰`T p>*$>*\3-DJGd74yJ9 ؠq`8gT lCs"u{YYe TV  b f0>Ȧ5AB*R@$ a~l G.GB:ul{CqTRZw0A‚ d7-]@E.v Exng҉fhBTݭ 0!  q|anĉS200D4=(Y9Z .Ji:Nu:8CnYC`|}*iG RX 16A ȪϞp& 51'>3{;"7 -85=Z[X˚j%H*@8 -dT͸& Lhv2#{4>ha:!YAx,AG?N3  /C 8 @.zvݖM5qr8$lA¹1 Y)A8̊k}|!@ q; @ [؂ "O ZY\ W`vx3.UU+),׃\h54>:[(%;#6;AI !B#I; 8  Hnx+87hB0cc?'ڝ!z?Ѓ'=0@q8h; 0*,#>㫛% ;CQ0.z@-8t+P;EkO+ < A)E [~m00<’)s'#Pt 6 +2;9C=M`5DkTA$'FccGZ8JY BXs5\ ezd K z,t}?訑*)iEwj038x@```18 ã#6)8 8`'=?Ƒ5 4;G17(ÿ?10I#s@LVd86/a 8|3,zx,@`+8I, ۈ]rMYˀ8 #G*p<1HãId?GӋ"; +ۂ*`e[KU|ss#Oj'92%qjOq,,M@<͐`K `OSsxr6pjgaKę @6LJ%PR:2𙙴OzODJ uKK}Q:2я@=e$#*Q-U-C=RQ !G,Q$RR`&M'ݣ"R/M3,U-ͨ.R45!+-,S(S;4S ZShS7% 8?9S?% ;]<=>SN:>dQDe05 )T_GE'?TCU>_:Ӂ% MA3@{ېZD8^U_U` VaVbVDK-LUM]`Kj@ItVlUUN?KtMWu]WvmWw}wE9ȄEŐeef}5< 0PX-XQP p=@Sȇ^FHxXXXXC>؇iWD=XI ؂٘MGj QjħO89YWSxY 5`=^g`]*}_L`_Lh ^{M%NpE`M=…lp`$)^ G^`{ߔ߼ViE`.&XFjDT)a,9(][ R{%^5^\8XHǁZ],/)ua,X][-^QG.R#҃LcۂMbM]Ё,_KGbq]AP9>\>/0W `55H:UHsVP;P^]);DF8eS]}l~EXe=0A^5dDE4 ԈKPs x 0<% U 4fYjf?cl}[ۅhNZ%d35g:%C-_6[(:ȅH<]`ӤUX4.ta5h)[U%eZSVۀ5MgO.@Y;=A ^pGV=jj>Mj4[._hfŽЅte`j%?ޠnl~AmmEnmfYΔ&b;.EMV95n?Ho^ofe赆ۍ&g"lX6CM'nK^#&gQ6=懾an^Azzp pup]<`b6TeZ`'!=嫖~a)ZnSH`D臛Y!7kEGqҷ %Gܐ ?/nr"#We@zQ>k)VW&Qp0vZVB]F}χnʥ[%%&|\o-2:YxC=tvjC7"/%]x)@OX"A )V> 2Yh~ĐU"l-n wCzyq!萈=9?(yA_jy ‰k)ޏ}9h(S .!xBǔJ^"Q >la64fn'RZ?hi8&@ q3,ڨTb*:U>#J.V>2 #z|ϱUBz.H]R(p#OHdAY U+.Ë(!$,+s1_Lϲn% J)gt&]M"N4.N 8 /*,oT/I4,DtAH$B[R]7u/g` 59*2C*=wKZS0hdP xQL7L?v&Kڤ[~l#9oޤ*(;gG~V(2 8saټ T  gF,SL -*00Ǟ>?sInhbǓԟAmaù|psx!P6[Ќ, d]N]-/DܢT$q0g-{i _r%>(XCr &,25(20RDC#$o PdL Q! D j^TNՀs, aa ӾskH#la wXaD h-2p.+.Čd XINjt).G/ZmڨȤc p8O*YO9"#IM6$2՜dD'Bvr`G8GVj4%'b-` a6s:(ÒO0B秞ͷM0.I` E&Cy c]<PqH >%Dh 4Pu@,qN;4@,:=37XHBOP: JSZA T @eʾ>]A/ۊlĔW-leU^ַjՅe]qo,3s iUhX`dTgu"3gDª ?đ1VA$ ʉ7`E SM_),!"Be-bh[ON G< jdD9nu"97C8\.K5ApT hL&[ׂك XHG_/pS`Ե!?p .cJN3ȾoQ xlq aPƉA0Al @'nTZ@y!-t+wT&ˊq,wo`7g8p9ٳ@,fqI-/v mj6˸'|![yp ZMN]s9Pjf6ms{ۙK e\bQpC$ c &Yt٪m8 ?83iskr[NA7M@XN. RҌw< yGK73/n˝<<⦍-=Owws= {˞toOoY|S_̿Ov>H|~#m~4ݏWߙy{ũ 'L Tqa_- @ٟF^`@? Hy8`4q  Ơ   IVW ]`W!W"B z8x'La't'\Nn!r~!~ab!aavaranaNazfa 'T=#>"$F$N"%V%^"&f&n"'v'~"((")# =">,"-֢-".."//"00#11#2 +b>cFLq^B56V46~#86vc쉣9#::9^:;#ݭ#=֣=FD^$Ff"jG~$?V $I$CJd?du$KƤLʟKL$NdܤN$POOQe %R6SƘRS~".T*DTLG2)~%XX%YYe("CV6D#0%\ƥ\%]֥]Vh%Gr0U_`Ga')bW_f &c^cVCU^Z fe~id ef&j i jޝj&ڵut Ҧͦn]$_fmplgrq]r6szto$qVtv.udvv1xFwex疑zjsf]t%7@bEE2ﴧr'C282't~y.ez2;2=298.l d &H%@ppCL'=9H(Z(0%Cܙ?H@P+ʀj  lAC@t 4D2,D t NCCcJ%u*D) @N @$T@^Ah Ӄ*D6DB@)"  D?܉F7A» @d A6{tUx)iԩ6)WjB)BC/)D WdJ 0(LŸj*?Ad oTUkT?C(9d%9ԏ =Ch±2)u@l,(Bk*gBPCĀ&Ĝ }*L,HİƁjl(7Z>Ͼ2&(6RC `Pf5 *-)A$lA&ج.b&D~:BH9܁r,N>lԬ~D 5@2~R`DBeVB)hYDAx) E؊ &h۽\l})AfB.<@Hȉ8͜7tw{ݲ,Ἥڪh!\ud@6EXH9@K  E ~NL5 f#n" |OqCH ,'0L뉨 PC^,{J:͑.Ƹ.jH@- bZ% 0Eɢj"?|D vp7vkEDH:@>TFoQ.X﫾"0= hk B?&B4/ *+<HoZD@.e*.+@H2@\kC*Fv(R@xm Dk!/A-+ n @+. 2+8l P.+ #g`A +I_䒃ʶfrA<1I/9@"khnA, 1=ܱ@pC&@x&k%(#"jB+B4Ppi84:5B4jOpK&-ۉ D3r?#1M1b(tdZK/3Ƕ*&T;֋+5w\c*RN/S̞4__C77jh_8IaZ2ADjO)@4EBe@A$iBu@ tx}r,9&a2(vSg3iD?CtA|@kY5?kh$Nk{M rCAd+ɂ)ٮbʦ3Ϯ @jew@ `&bv6A#3[A d@K:-n~fis" *}Zi, @޶$28@[1 9jKۆySg?0y(! @PbYsd6w@ߖ.C3OڕoNX9mT;k3"eD 9hO-h&9.Cq5BTh2Ⰻ+;p9>; :#+:Rhk"k~t;gѸ;5:;7;кzT7;{9;ξ'<˃Ǽ̻|@<c7R3Ƿ| |@(ӧzd5Ll4C7] 8/IV}v}聃 8D>< !>ŀ#~(G~~C7@ >:,@S9L핟y ([kዾ+ -~C%x ̂ GAă(_w?<@ '  4xaB 6tbă$XcF9&@8{ LX9uX#GcL3i|x"7z;yhPCyrˈfRKgET6٤D #TlذH#{l60" qA :Tp`>Iqb@b,<`}VHEbUB%P0BE3IG~ti35QpAǒhO܅ B0`jÏf<y+&\>zdTnB}55ADFC7?ӹ#xn^/tɢC8 T9 AISAtj:*F@ zFဂ")H \aϖmQuqyG\Р<2Ijl>S:'4jclȂR5PĠ/#tA p:[ȀaۀÚ2ub'(g>ۍW܂MH.bysXF"i}Iǜ5Z0j|CKcnvșqm&:3N챍5,zFū,˼d\09?ko"u&EOXJuY;}Ԏj6MkG !V,Pz `ںk BeQ{;fYpHR 駉yv=dEӋLg/'3}0:=;0U@ %`Lh`R7Bw,pQ1L@%IM)Hcj8 xfE@;;V">"(RaWF[4`0=T8_V@nCp!<>y#W 3xB "FБ"5^ .SAȺH. #sbOJ)[% X,D9,xJeјMIAd [& Ij^DN)"#x09K'd%BT:%@ ޠ e\0Cf>2I8 3;|6τZ )Ԑ+\ hFP(:FӝzvLU)MgBPdT90ЀpN5b͛4 }MiobEUR)`YmN0XV5Xh&^ZtbbjBwᅽa%d\R`5ɦRM -@qSlY(FK!j}CL)X5CBE2؉5*bd @PVtPO%P {Z:(c%rֲìD(pvhEkjGBmcGxa>h%>`X` 5VW5͎ko}lXZn30"<(D +K=+ Q8P1њҴYBym8C4[,aFX#W?)`{$0d+JU F$DDr XP$,a ߳GpBib82d(d`f\w9&ʎ \E! ,9 &`Uh]>=|-s{`UKq &\CqPl;l+dj<>YnvmHotjIĠ^o[1r% 8%!L, q<ԚF)v-=W \(FzUHFU~t)@QJtɬdl4EhAPu tQ5bnxٴNյ! Z!Ulr\BԐp;xxB#n@8-C0SpY#xm_:5!],[h0 y5h駤[g`KAlQ@}Ѿ]m= PCބ|ځWGZcP>@Ʃ>b@16Dߘ?&? i({Rg:^<X8<@>D/|뺍 a\n@bN%O'T|`l4 $ b(m i6 μ@ ADN n@zbjc-01rLX v@.eM /Ôllb,A""ʅNB2m dJдP/40 zM Jʐ|ObJ(0)bC$"..@2 ,8IL Q$-\!,`F",~ϱ 衴C$\+B`)R ]O"D 1-聱 פq n/v@ γ6Y O !X`z@B`- 0/|Џ, Mo,0RQ1b@!X"VR.%Q&L emm f(2 @6` dD"+=L+]+т!A  ئ`"C.y.,Tjt*4!kNzq!q11A$! _a>1|3e"-4,TX\B  v%h+_r:KA@La` #lo"Q=0\a `.k6 u ZI $aL(B(77j4bk&3+[2BS=-̕D@ &\DpB@}T4;ki<1B{GKG+2l8sиʫֲHn!.4JanJ+t, !jKgK~qʔBK2ghZ):󨜡@k6[&Pm"Q1"Q?@a> &.W1_ls sf4!VF U!V]&f  (!HS?5OπU>@zU 5|dQc@ WXSXhΑPٵYY cL%4E |t <  Tb E]V!aSP LsBǔ^OLH"Bv%$ JBYeueSGe=Ղ!gTghOA@Uk#).!ewtZ1c T|6 X>&noVove!¶lc&w񠧶F "0.s3Ws7sr'4^G^*iuj\D >:nwsWwwwA`UppSpSl4(KNxO#zהizySW{{W=w|u{W`{Ǘ}q}7X7V~o~WWZϖXb׍ЗwjpOt#8L_a )2X΁;XWWs#Kؘ&Xɀq[eWh2kxCXTL/zX(8A넓1؊(f Xǘ،Xט؍X瘎؎ ܁[8v^N ِYّ#Y'+ْ/3Y7"}AGY%O}SWQٕ_cYK9kiuYys=a٘sxQ+Yu5ٛhMǙ?'Y朿w7ٞd$aZ㟕x8ڡb';"*Z&7kCڤyW:S`JcZ]:vdڦ9wizx٧'P`ڨ:I:ڪ;8úڬcϚ7z1Zx隔KX#hZ k (!۱#['+۲_:7.{8׳i-KzG{L[Qp_l[[`Uѳs3[{4oL}[!v;Juy[ۘ[3聱HoFw.-{t#hG4![#&&#NB+ԣl,Zm0/6" *~$ J QFv,w Ġ04t` *"`AI(!?/ H@ @:Tg[,3̙4kڼ3Ν<{ 4СDF/ҥL:} 5RnB9Nł<3?zdZC%Xv,h* Ŕ5@FU x%@zf\V;ӝT 8W+?#%K5h5rK[ s#EW#1|ρY1awKe/U^H&P}j@ 2UkJ 0.0IR1%KrГMR)^T#KX`Ʊ27'%QJ.dN> eR TV^S%KjI7=(R%lq%ۙB9 u!+c%0WAJS<Pdb ^<4=nL@1^$PXl0&S [T:&Q@χF%&7XŠ"L5IwAOns?$5\b.Lh)8xu pJ Ɩ0O9nI%ZY$Y@@$&\ sLU!?KC^:t6e6ߌs:\SY Sd`{bj7cKZ\)ϫuv pWrkWR-8VlEFhZx`Ql".Wզꦬ1#i1 .d@SAQ0.Ԗ-&8Pf$ ~; ȹmA $8$Q  7j 1-ސ_[ЍOEN1 :{![W9<ՀK1#!xs{rxJpς 'P@t ]DaC+"W_r U!ks*7$aI!j+gt!5nTѐMt' &*2SSc&\ A|cf23M.W!0rKbq LlY`ŗ&FLU&)Q&αm.8chY[1~KI*[ ` s3`y bbdÂbC%`nF`-ebXHh bp0xjxDIm:C::p6CIp+w@p.;p6'/bvxP#Da| @q89BacVsYɄ3 } wSK4 3 =(cE!ƍHe=tM %`5豇ثFxgEw:?q9p*|0IL>RqLV!.=O rC +Y J3=Ҙ#CGv51[EqUd:4K#DdPa2H01` &f `=`؅d<,8GT pp0EHn r,tjL+ qH@rfe Ȁf/ DxVrt Fe= )]&5ʕ /@@s*`TC( %ۅWVlSI4LQ8 u 2dC `2]dz<þᲝf0*zьms 0I3I[T&@3kiι)95l1MK 9H*|z CS )-"z'&Mܑ0RejEqT3˱z 奻,;ۦ˴w QW[0D x;4-Iv'䠯)]`<0x<݆;¶3w2/z,ucJD햳b*!  Q뼘﹣X$&|+9;K}Tգt W׿fYz>}lond}txz +~n'|uK~ߔW~yy/E/O&^Iy_˾'g}gvF`Ȃ/+oKԯk/|YBګ(Hh Ȁ (~ȁ!(#H6%)+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hx`s(HhȊXR k(HhHЊ苫kHpxCCȌ8(Lj>`ȍ8H@h8爎戎(iP?A@=؏(IiXkDPɏ ɑ ِ !Yy)B<'=y"9$ɑAp)@)5y02D7Mdȓ&)5iX-9L_ `Z7=yxW[93Gaiwscj'~i% mFr,O]G GCp@P@ >%xI%ca KIa@~s)Px iFh?0mp Ii }y=1 Q 8 'ftFcD@]PޠL P >IÈ6 j5ȱ 0 IQR6 0 0 `  Y&h)P6o ʠ op >@ )@ ]ٜʤy2p8c,Q1`=FG71([2 [75ja 1 4,T rI X А iMʨN9b ٹΠFVppP 5 Qa ^jMlz) wZ  p@pIq@ 0Kڨ 1 I1 KKP⠡X!gPw `kڦ ̀Z TݐZJ0ZL@@ hC٬u OSJu5:`b : 1p !kV⮭[z. i@/6P tLנp 1)M ^S"J 5J &1Cw u9&ٰy,JP C[k@ePrpȪv](NO+2`bp  {Z {:`W sF ikk[mo PʀK*2`;WK ^7&Z5銺ɑPP P)dА@GGIkj0@pKOl|@0|K˘e(ɘJ  e B<湨ÜYFtW/GlˈȞSLVRCElÉIK ٓCL[iW')>GuIyj| s\9p\}S\r0,ɓܓ(ō+I2=ʟLʤ,syəK(]űʳ|IJllI,ʽ̨ H˴Y9LȈk ϠLl׌٬lk MzLllh ,Ll -Mm  -Mm !-#M%m')ҙ+ҋ+5m2! ,       # "(""!%#+##$%&+&)-$+4*+,,-3*05,3;3346+37>48=3:B:-:2;;<;5;1;3;#<5<>C@<>AEA=Aa@@xx('C\TuT$! xב$czA* 񐇏*aa28};8:`N56 >; J8@2̃7D6p^a񄠝 ׀Bޟ*蠄j衈&袌6裐F*餔Vjio3?v駝~@pzK|8@*S">!2i\w`-dmhlp{h<<@adk?nZ 7=I L̪@ww otH۸Z<CޚoOgہo?9 0%RjhA0NsNPO<AOƣ>,T^q*0@/@uC>p:'H Z$?^?X zr0*[LT 0?|*bNvy@owW,PO$r80ٛ PpP78u/Oޞ&D޽ !$ ӗf փqKPCsYW@7nQdO#'`5n`|\E5;صnh8 1͆ F;rV`헼_K^юxb[ͫI݌I :&2$d,*\qC>df'-+o޷,(6_AG zD:LwCr԰Tģ2Gwg#EVYQe?jz 3 Prv5E] oV!<t/ޠG [z$4ss<3.{)0=Uxc?CoV;*)$G!XiVD)j3ܖ~)EXUg7. zl&z|bO h^ , 0 3xW> D+@ 3=4,a*wESʓ0mE"X @x)dW.@h4;`'*g COXSEc/60 >$y3s@ɢe:8Gy؇Yi$S Dt ,2{%  'DX% C@]V;" )P49{  @6A6'3 2){D(o-܀ `ϸ DwdYfbSAUe@Tyu*;[e/dS&C0t0.b(nɖb/l*yy"arrDI9Y{șBP ɓ|bo4Ņw7ٛ> (9ٜ));*yؙ]px9Y@y깞ٞ9Yyٟ:Zz'7 ڠ:Zz+3":$Z&z(*,J-2:4Z6z8/>@B:DZ ʣ*FLڤNP)RzXZ\TZJVڥb:dZfzghڦnpFĦrzxzJd|:ZO3I ڨ*~JZz94کIzd3Tʪ䪲zJdmʫzȚPJdʚ:UԚں,j`:k 亣麮ju' 1P"$P- W0ł =: ! >pWE&3Or# zDg-zCPrMrr={jz"*TG7z>Na7 آ`sRK(;ʲE04YN)*8{ 1*2yBK`FKH2$-mAMGsd {G EPW@<9W P& G03w{[5dP/0 rd܀S)W @Wg8 _ rP"'k \npGiu B]" dhs0)@s[A 4" BItvۥc۪e) <)RUCu5U*4[X;HoTU)od<݃z<:<␿-QdY(MCrC ~3YUN =)3SU45 ;7 c"<ñ :@tWU XGIA3p G0^[}>D;@<% b3>@YOsl нW*[8pjA pLt40ɒ_-5yls5ZŸR Wp9jn ?Os, T@ws L2)J>((m @`1 x#Фk2 SE#B3> s*څ@B* |aܫco7aB kB9o P=VM9%c/yH)Ӣ}wDGm_]\|&9d4s]X=k):)CYCoAG&Ny݄M2O7X)9m\J)w5ڵ-!}P#WPjP8ƓQ÷~W}Mv`$T @DG>Bs22M" <ڧ4ݬM2FTDCEPD, GBGHo4ؔZ}2=E :d9GJ7~$I*vI2ڑ) s7>ZH>@)c}Ep$?RgaM{)Re ~\㖞7~A)"s#$rp&v+4MV~CBKE 1|VFY|b4[3{#j0w s~OnABtGG -a8S2x -:}$T$CBɢ*q|}DŽ,&],ފ8ZȞ6/p(芁,Ԕ=_0Ώioܗ. WtCB$<9BazD[ܠ* !oI?1D5WjM@-L8p^v2L(`; )*,ȭG!E$YI)UdK1eΤYM5OA{r{S m$ZnjCqWaŎ%[Yi][Dɾڄ̀/Lq[aĉ/fܘ-\ȑ ʜ}xQc\IiԩUf}dؒ)mܹu{]qɕ/?\ɶO^uG:]#qŏ'__޻?{W|ߚ~o@ 46tA#4P#kPB 3p( 9qDKLD[tEPLQaFs,IQG D{k!TrI4rJ*srK.J,urL2DL,4sM6, ' sN:NO@$*4PD PuQHZ"RLS4J3O7SPK55QQ$TV[%3U?WuuVZOYkuWo3W^D_vXdX=UYhc6OgųZl;m[rE.\;5w]vqCNuەw^ޥ3^zWQFw_9`o"8LvNb+VF-x1nc!ɏ1dSVye[vecyfkfsyg{>9G6d6hVzih`|)ezkk{l6lV{mvmM4tai_{oo|p 7pW|qwqk%g4J;sC}tK7tSW}u[wuc}u0%_9ݡib:|6iW~ywe~|:Y ?Tj %B&K%KH$4܊F! qlRt  i$*!Aۏu=e6졤Xtې1xHYM 6d`Bb,8̆v݊1 vh748v%NOHC#A:\8.ył8H`*xEZ$Dn` mhbAl.6D4yHDw A0{Mr @>$! P?v44liPuExH d017hgr4U/ `G<=?@-!` uG!ΣrBNo!N]kza؄GHdgV@! - ``4du9oaLio Ov IZ0o="DִvZ Gc @U7n Bq3^ mÒ|b qÔqA S8(Qw@v8GF!#s Z 5W-z ѱH:s>rx8 NC@ $0Zw`rzpL~(\/k<[uXUʮZ%@hˊ===WS3S>0@c>>24h0;ȀxS @Ѐp?7py(Э v{"!"Hҫ7")γ/ ²o8`;@ 0+; 0 ėiA@yP|+X+;F{PC  A*M`6Dl\B, 'csHjJA BY5] d{l 0.[E!".||>(1|iwb2 @`al`0H3C4)9s 7h'>@F5(KH/7(?/J{?"`h&8I4 #^zNZ7( %G*/Iē H|?H ;(+*_fkÕV̈rr7Ob"'!9ʶ:qzOo,? ԚPOR>e+QEu1E0 9_HM)(T@DTV]9hہ KBCA|[B_U` VaVb-Vc-VBL5MM[@KkPCJVmUULx>Ku]WvmWw}Wxx%7F͐fmg6$ 0P(X=XOX qEA_ChFXXXX YA=WjWEhI؃ٙ]Gk Rz̧PX-Z=ZMZ]ڥ=;eRuSTuځJYZBpXhXU=Y][XFx[}A\x> Qma0}?pح-XZµX/HSض\ٸChe[q[%U%X \=]uZ7\\5m nɭ]XFXZ\{MMR5 \M^ SU~@C8۽Eeݐ߅QUIH]ߙ5|CH[ߵ<I٩תSY0E`M^ep]+_J`_JxT { U%NpU`]`MÅj`%` 1] Ex]`|ߕ TjU`>6XVkTTa-7] [!S|5XE^\HؽXǂZ^<0b1t t U)ER+ 5+8K(%6ՅuTp/*&W՞ط-X>^ *58ށȈTQ\ZúI43^杴H]e;R<~ @8@>Rȭ\eCd#dCVb0M^cM5 kº@eƪ[h~kl^T&enNhfMZ-d4-g;S=_7s8K9X,Z@$T`5>a-1[hm^mX\h9hVXM_t| b=p)&hP.D1{il؈Fkfo.q 5 ]\Z{`ge4ii\CP6X\u>XZaSVS5g&lZ@gZV8 Y\[kf^l@mnnCV^CźkM뒨!ށZ1Ԇ >^dSF^NnRm_no~FnF/q6ώe4dޮynοEbx_JVnCJz ppOuXC l0lDX?nvJYjMjn$ fekܵC ~t(rF0Vo)ˁ\4I oJ$upa(?r6EhCXeTAERfTb+[W^X6Qh0vbVRݧGf I!LJ=m7!r=gOs7U^YdFES5%.XP IWJ+L7]>`vGOjyWW .l8QgvSk|kq 5Zd B >'Rh"ƌ7r#G_ )rg$ʔ*Wl$4"Μ:w'РB9SJ*5̢R!`SH+ذbu򛷉L"Ӳm-ܮtiT0!… z#,"G-hAT2n8Z%_Rlyȇ4mg;d] QAj@JXZ69˞M1/B.C 9\";!Vks7ɗǓg曺׳, i pQ_e'%=Z2 O:Qr1sADI AX^!сWQzO#I|%0NU9~L9T9;x6"MNQ?rWuMu!M9y%vtbmVG-"9P I-0 2yh{J&BɔFx v]FcG1a6bG$`(njLr":mͣV 4}?dV|azHl[ܳxa^bG/4^;"r6F.L֤D U$H,Sj/U`:어~jȶ{<Cwm.>i pv$k5 ,)(#aʂ~l@4P̂.USn^vw=ewJar4 [6FTc2̮ؼPm<$f?d@@キ ʚ^Ɉ_ >zWjXrk6歫uyF4O~{D_o@i@TtsE0>/8 \9k? G%AvE2ک_nQ첣Hsy[?8dHDt< pZPq/|PJG,I–>ф!N!}K0~j,{_E'?BӢ" HD !  7\͏%@xpX3u.Dt10Zkʼnp!FlEIU0@Gvd^0|2I6x$XzsCF Fed]pZD7ɋ3ԛ? ;>=DrP1zc-yJZEr#dAL2sRvN'cr/#qn8̄I$"S!rtSsK(  s*F)MG1(k&@ @|(l5*lZDTDja#*A3AU Y|(13زB JR zɁBF,$jR ( a%dx~էgFyS<*R1)iz+:O sn FAڊ՚,ƍϒBfKe~EY:^G9v>ECy,]EݫJvFE`Ʌ2֍IU, Yz#nc`҆ʵĢbVY|V[~ZM- 26,àUkaFVjGT h<ⱍ[T𭍂 t:E{]hkdr ;.)5M"~X9`%< V!m }lY"-p6\%2`vl\) 5pV~$9.*1EN``y%*g Fς|#07y@l4?y4{,?/:0sYf7p˭L}c1u?"VDh;h4"T[{8o8_msj#ƺV CihȂ)FL<2P/P"vhFjσm38? FIh"Cvqj܂ 09i !b.Ӽ69c [-I2\@Oy~(|8G?.SV:֣覯+@G7#םΓ8&1c>q.xρ.}t/V'IG~q}yn Sz7=z쩾]?󾸳X;Z=}{I ,%>ut> }K޷q?go~zkc.i ^ܹ&>&!fv M^"~C>L y S>J ) Jh j 6 Q-BکKF*NErD;Y >x&`j&lv!&!ʡҡa!! b"b*"2bnz!:Ẽ/d&n"'v'~"(("))"**"++",j~D5E_Z@D>==/"00#11#2&2.#363>#4F4N3b.nc6Lp"96# uy:#;#:_;ƣ<##>>=>#@c A$BA &C>$D2B*TCFE^$F2DZSEfG~$HfFRGI$F$JKJK$M<Ƥ̤M$O NʎNPd%Q&R֞Q R.%TF%?<Ef.QfSi&5e czfq&i/e(ef癦kz^j&flNlͦbfk&poX.o rr2dr6g1tsRdtV'evur$wvQxg *^x矑zyZ^z'ŧ|w$}u~{^~ZDUnbIąI82|ŠGT%2d"2w$}dRD;2<2Ԃ8xD-\ d %ȑ%pG@6h}8(/$&G|A?B`DHC*(΀Z \@t pH記r+ t CEcJD^* ϑ @$T@bBh^_rDvD-D(j#M PD\?A9EԂ @|LE4*GCG[©V@d&ΞJ0ih:Xڊ}/(@£Bj<)F\!$@4M᛹:؅C;Z|ï~%\+GRDz5ɆBk_eJC^ĄfĠJSU@+ĴE%||r\Ae)7,E Cnl\l44p?HFR^<@Zւ-k,E$.+^H|y(-:*DDI $ŲQb8DHTgeĕl܈ 0ϼ9%l̛lmRh-|D@mˠh9nG,DHa^d7MȄ9@΃ \ń ̈́Y ʭSdbbFFk7Ĵ-EBȾ΀4 `g~e/\PlfAT@dF~(+e;^VljM/C99iTE(j 7S0%V@*D2́$(F]rh @Hnþrp+үo`j*?\d@/I$J[p0ZZ, D+"ln1@d譻qî?+)o5 D(qreFXf.@,n G26RD*|+"2, @GdjE kJcU걭B6S)s@09@P t*n0ђ$ !!1۱D)R6++#`%e ަ-lQ2~rEŒx/JR-2D4lF0ςH^QkdE]X>)njv@tISE)Ems7,17mdsV=+1A_bbh qڳrEH\EtZ"7RQqvt9Zr::#g;gVDjDJp( N3D󟈪D`*qdhdc*hMpҼs,JTUEM;uGcQw^s,R&pta3RgMub_ccC4F*(g*pDe@JTA**_[gzUS46vEt*n1.j;dyJOW瀯f%@l^/GA* +7T*A +n<7-]MYK*{0mmĀJh̓.l@ؔ8P[ 7x):niFN+ d(28@[q!yM9E(΄s0'z(i]E!p.#eƑ!97 ix49" ۩vLh;%VĆDoK8PTSzp܆:r4PFkJ67C⫶*E !Byo:.2!;{M;Q߻_;_O{;oO/|<ûO?;ſM«_X<'`|O<_ħɟ4 EB#4HB}@ Ӄ8A @"~>ɀ0K>eHC8 9 +@o8x (^< @,>GC&x@ GEă(< rwaB }-tbD)VxAx[Lpab˼(" 0#Yt&ņ#gƴy'L. 4xSdCWi;q"s6u*ƚzkV[lب@򆶦pqbD ֵ{sżwMHB+dB6.hB nVwoŪ\9wk̗Ihٔ"8ℋʘۻaZŽ 2 (PΟ 0@aөW-qg۳Z}8qD 0r &Ox @l 9 bZ^ƿo츻;C Džksr"ƬFo :|! F zX&!o4AYaqG>P$vZi)\I-n]-\S472ݓyWބKHXe&hj1y7Xsg.?hR4iEh9 d*AJ Q码x"WwU,<ԦE$Қej3m m["'o ̑m>3_:TSN*\u.TqOr*$[r-|횇S.#:$>T硩uR@촯w߳"ϟH*cOe%qC;iSM}`a]q=9+>&3-YzΓ}l22SxVph)K yFB0,&!Lw /FCxQDP8d BE2^,0U(؁M1E4v8##C^ ANb$[٘2 >% K}\hk G.yK"0YbT r1c4/JS:ʄқJ#,=#KP"0F Ler n SZӒ`<1 NӧQAD r`I*,AcE/zĂJU(B-5% ^ZVsq 4eXO5\"8GO:U!hddH @1xH1*8PL9c{} ).!(Ԥl%hVAlEiA OưGe5zUΣ hn# Q"AP0 P@QDYYqF+GOq>% mXG[ZӮP1 jS*K'e(& xPtHPHfis! ]-Iw G'4ZE.i0׻PxZ,(F! uCxmOU & 62D@˵H ر5U&{Rp07ΞAaDEkI@1m` ^(O8̆F6.9X bftECGHJ?heT[̻YK<%'W!P} ܄# HBЀ mf LU>c:@!hB;ٳXmeOuvkQ`s9Z!2h+|̲^ " U\[_ R!4DkzQ/hAWo˖>E'AZߕ6P>*JP-*]nxu[% W3蛻 Z@BB_z 4T €A5w>x N!ȸ~E|3\fڒLyU$ *.% [G&`ɱg_ɗxO:S XOJe:9ux:@qG5n#d z>0\SOյ7+Ny廬b 44A i/ f`@@ $ !a^nn%0#,ʏFA\ .\JlpNx na" 2 QB4  G2P\n愮-x@ HD!Nx d$#@2 ^>/[\:`x Qf0F!/Am"0`@|!j !&a!$1L/ fAM@ PॢhÂX6DafKk+*Vlyh.`~+"A$ !TAN&*a2+tXp8L>rpeѧb܀G4 xq",&!q6 ?PLBl `d06@@rn H|d"X"lX.' }j2Q-( 2n L* Πh0ꡣvR  @6 #@ ),j,sBN"2xR$'*V`k*,l1"a'Rh;ʣ @ |O5O^5Cr-IVRvȠ oH37S0"ԩI!ukþ *#}“E&6`J >8->4!NAdo v/Q*R !2A˨*+K87l@4 !l,'242s:tFXBD@0n!f4AӠ8N 9n$8'ԧA۲ ?4Bpa!KԮ{: `("_("H&tO/ A @ B`OgIAh S.`z") ՠ$5(UK2ߢ);OFa s~!huH5& 9AW+գ` X\Y)FɀW>@q"L .puW/a jt!ȁO2]q]}*Lk^5Or֧l_,V574'=VKt<bTUU'bBZɴf1gU-6];jLhVYgL `V)&A jg3QkRR9#X`>@ pqWqWngm5nre{, tOuSWuO{Hw(@4}8*rol7o `!2:>xyWy6]%"*w-76hNv7>vv|va{n}/||We~}}Y~/~WKO>g}< {;z'83-7cWGX0E6zV[?x֕b~K`s8RmX3wJ8M}HiXxMGT?iXxR؊Hr9˘8Ws7X瘎؎X؏Y 9ZјAݦ&+ْ/3Y7;ٓ?CYGKٔOSY'y-BGybYc9gٖoyjwYw{ٗgAmy9y)5Åێٚ}Jzo0Yꛏx?8ٝah癞'׸Yu#;6 ڠdk%$ͷ#Zw/-7;ڣbGo" SZrWڥ_"NځakZǸsڥouڧK9ߦbZZr Z1zwګ뙫+ũ8ק:ڭ1dߚ!8:Cگ;[cذ?i۱x'ۮ]X\3[7;۳?CK#L[qm_z[+kd{+h۶w{p[ yԷ->4[urKI[;9[9 4 n.;lr&"g{ѻb"@s^b{_%  &+@ڧܚB׳.d22\*<9crD8ֳ[ <1JM@d_ lʜdt@b}N$^@$ g`'`f rg һ. * a!!d_,]r 0 !G~TRa^ ;|`H`!@~8>! f|dg Bdq}`&|% >r !`H"mP>\`@ (f!y Ob;7/A* vGBnqQ0Ed[B/yt%9]ŝ<{ 4СD=4ҥL:} (yTZ5֭\rk:r@^p"iI8-2^Zj!t{v_|!-])0CAǝ (w9^f p! O[pqsn%*W*\‹hٟ{{_p)-+=N~,y6C<v_]8`COwh9$`78ENA$@BOkBuP32 q$9E&h;R-]*.q#BEEeV^eZneSSufbf5R@Ww~SA!IrY*]"P~]}ԤXq<uqE~ELhN͓^W8I S; O- '$@Nc\psa<~bỊ{` $}+b,SArC\cȆ\}E}̑SB%BC8ةam|QNƳf.U 6E>. W!t `$xWȷpUO3|`ƺ/u tBMtFJ/UI@$tA"1Bb/4sgF+b?TgAEWQ^T`DWoZ>0' AKd Q |~8TPA/ P˷pTPZ0 Lmb$N|{Q;bj;0@+u7Yj><8< OZ^$~SjqWl?O\x-U0v q `Ve\ @I Վm?x1mLsQ⡀""("wBد!~H/hؒ9TpYHO".@ =ȫK.rZ|NkWJgI6<}(Y!` h-TPL{'dl'6؜~P(WpQ'܉C_܉ z4jt7 ☼*Hl"?4KDRj@d*sI0(u ^&j?$&p5@`l4kXe OWHysA;yJ3F;Rq@ M@F;ńs@:Yv>iKe|C,Er$sLAf@pC9KV .,2}xNHED"><>FH d$;^ ;IWivҔtoL{J '5ӵc*DY5nQwF-8X}IY 8u;ݢ(OjP6TQe'FȰ#zfviixt;R|+Ӛδ E0(Lg[jی֎ZfǷ~[z~\˳(^wZMM-Z;f0U";SD̅KO;E!ɥk}\:֩^]d/ώ a}t:.ͺ}|~ww/3% K~ug|Dk~//w~/yoo_ԫ~>o#Eg>٘=WboKԯk/ϏoZK4(Hh Ȁ (Hh{!(#H%h')+i/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehgikȆmoq(sHuhwy{ȇ}(HhȈ舏(Hhȉ艟?@hȊh(&ِȋ苿 H(IJNJΈ٨HרHh稉ȸ͘XHOP̘[ PKP   I)ɐӘ  HX%i')y NP3I~8O+y9i,(5iGI7?9< A) IWkK y>ٓ9bTEiwaaזD`^ R Y,Iih -k.X & ua 9X`b J`)X@LP C: BYɚ4! A JkBtqAQtV @u@ ) Өu yLYCyV٩)>20E9's6oKx(P F@0אC0XC9F` pIy9) i3V @.EpBY. `  b ٘b9`ɟC ؐ I `` `` չ93 9Q,pR2>>PH8 2(@\30W86t! 2"7)ِؑ[` FP`: 8ِT1 :UU:Y i_0i0˰>@MP` 6 ! jMx9NPPِj [0 O:p j ︩{钞ᚕ*J_Z AT6   cd`s l:w6)Y P`[ ;iـj[ XMIz*G] 2`AMЪ;@ -Mp \h  F zT@{!;] i#UA 6:Z'23s %:0K5ꤳ` [pTj)٠  ^k93`_ xj1+.[;`W`}0~q>` y|i0`F0 @@P;t`;ɗ{{=T,pgA s\8PP'j6`pj <9I`@Y  i@ XU θilV `6) -ij I`T`b`X` ~pb@b 챓 MLA|[o)o DiOtyȌyHk/k[[Ur HȍeʛjƁo=-ge;,lLz9ߪJȓKMiɓL ), ɥLILf9˵ ̖Ka<_58=3:B:-:2;;<;5;1;3;#<5<>C@<>AEA=A`@@vv('C\TuT$! vב$czA*0 𐇏*a![38};8A:`N56 >; J@@2̃8D6p`0 ׀Bޟ*蠄j衈&袌6裐F*餔Vjio3?v駝z@pKx8*s&>!2)& q`2-"GTl G3F+X(#iS< TmLS: #oiM"pޟ"A ^A?qn 0#i& Ef1T QҖ0LpH  1ThH0h%@z`!ho]TXˏXc4?h]8& l٦,Qk *(l |jn$l37c p}NTo~T $%~f{(GYjJ(=4,V+͙lg{)@d=H쉞Q`Z3$UƮZ(!ч!:Y:Efnx?3UݫxAp^yw=Yêfgp`Zr VJyV5*/ ºօ 5kXS G@RF[b-HTEՅ'h0v-d8AT7F%=Lw W%UDl^ ܞ&)nSpIJ?9/Q!Vp )$b2`^vRVӽ1Gb"/i(9\ D_߭ӠG=)4#83X^.[]E̩n(lS,$5:9v8_ )wsVS,p9er 72H~ͩ\.BِKdGf@P-yt Ƙvעt 1 ;m.;,a8S@6^jq>*u +P;~;u[^ +;Ǐ\@)L>^Z<k0_X Tr%Ot 'XiS62`.N2x2\qK㖰4(1?#nzVbF+qF;Q[Ln1`@>]fvoyBHAE[+mK^ 0hDhb $0yOsN3` L"VlX?< A)lV$PF-/@K"5bC~ *0d-l8UA `js@7=, 0X ,pkc 􇃘 A"( m ݀tP) Β-7(A 0 WD[5 s@Xf@;" )vV;0@tT=ny8 FY`P P gH;݃ɐ I HǐjlbXAZ)f]yp(F?];nq7O)fpf/ n0.b(I0I~fNig )ٖٙBa)JDYyIj. <Η9Y16G8jQcw9JlqЂ9b/by#ڹٝp9Yy虞Aչ9Yyٟ:Zz J-)7:Zzڡ:R:&z(*,ڢ.0R%*6z8:<ڣ>3$s?ZFzHJL6AJDڤR:TZVzX:O:Yڥ^`bj[R5:hjlڦiStn:tZvzR $xڧ~ħz!Cd:JJZک>z:Z:BjQzڪg$Zz*DګīZzt*DڬXĬZؚ3ʥڭ;qzZz*{JڮZﺢc EPFIEshSj X0Œ =񚰯: >QEf3PK' ~g2CMrs3 ۲ʰڱ"*WG#7Q>O0a< ocsK`. *$4]W!)*>ˣ퀰6zGGf˩L;N)вKwPL0z b G EPXAX`P) }H0} 3Kk5bP/ p0eݰS) X DgQPL೯ l0-L~" }pY{4v^ǹ Ә--@Y0a+v l q0Y Kb<&ECcj^PF,ķgc;C.X@ZXU B 4GX2G>N~\:> -pTtY-7M Dt DS3ZXN&l@)3U5= ;7 2=#@:0tUW~N=C[~>[aJjSLƓ]0*75͖"3/ !- L/0ɒ^-53eD)))p>;p s[  D5b<&8B >NepѦqFp$cT ^ 3Ђئy 82M P/ c8P/<P]$1e =]*&( 'лkhj H)ՓY@p K0G `p0RNWsM5]B:C~\k4d:=2C=\/Fd[F0,VޒxE\ f~^h<*-`69-d @C)=MBwNz)B: )cTB):dxEDn rmG +,=.4.[0q1"TJ)#y Q)C.cı-D[նDՇ603p>~{GoHkݤ<۶,9f5dx=u#45P<~tl) .$5zUٖrQZ]bWp=tefk slAy0o+xxg 6F<),r TxD/34#BGt5WFŜ~`;v;HzDҶr[^DsED5MGLhH47sؖZ R=E@:Be9&H*HNs:TI*I3 NE: >Zx>J)c~E$?gdtX73`- H >> $䟲y"-7 kB:d# tI%: SF ƃP/J<0.~@-Ot9+)Ղ)uu )1D3>CL2Lƞ *T>3}{>Xc؂B)01d56{) 3&*[N))D2N+Uj5}M' 9*AnqpM<>Qa^Ξ 0$jl0;lNDl^eD)ӄE-)C3~>>`ɢ*|Ǵsnjܞ)"sDXk/-8,=^@0 /ߢt_[@ZC#Q.*9p@ ,?@tAC0B 3pæ&8 9qDKK D[tPLaFsM3OG rȺxTrI&#JI*RG(,+KR)4L4sLM8oM6N4cC(ydS֩>Uve#>fGfy̙yg{gzh6hVzivi޹ o2gzkkvj d|)Evm{nn{oo<D̄.P`6O zP+da # }"@KȠ }C &awlR(c;aD(vo",K%0[b6EVъ3!E4Q>{` rD1>;Ib5Q]l#(9>aGDT# ;6iZvDf c#IF,D<;! &JŽ(?W2!.- 4 /5yLccm8?nBJ;2'uO$V6t mx8Psg` 6$%88tFWnh@QB2pNd&~d&#{Ҏ[HchG2nq:X>($ˌ (F9H#|$DG] kְ7a ]@2p |̃ԙ$,`Y'A :m@Й@1ԍ>f[.j'*@HP$C @f@, >)B] V֛pS>,<Іr(g$ٳ=8> p̲*. 0íl#%H,z:9kFoi1+MAar8HĚD PHЁE"K/;ckȃNwaa:5 1TmPE/Z1m3&aOc5p gmq{֡:4r jucWxH ^cWt @/"&? 6Xq;Q .BK̕y {^ ;x%/ C` 8BZ:* @wV@U Gi$OQTtle2 z3`HCƩr 8!^c`4wDb<| lXF2A xi3u@v xGWs) a &`m@Ghs!E."(N 0 Rk0HЁHZRjƭu$F2^A[ C:-H0# T 2 Rd&<'Omx˞pbld @r#豏W@0@njdm魢M4.}>d7ޞڽ xa^?ľV q '{BC -w}cvA8'"Ȼ ddur] p+28 ?<+bs<?1Ȁ8+ `AЀ@C`2` 1($Rr6ȃ:(59A.v  l S3՚i>>~*AK 횇B;BBkB)Z ȼ:38X%1HC%H@~0@,:ܩk@@ DBUsA]ڳ>SDF8Ix<;xn`K\ǟĝ2´x&$9qcC'LdH,t6|+6X=#KH@@_t =کsbƁb18F&>D*k9( 8;`24hP؀8` 4vDwԉfsK3:?+5,/考,,&9@5ؼ/88ҫ[ԼT`1k6B7 8,1%J;VƠ)y8 03 Xp^88Cc =``&8,Jԙ  hnH `BbW+(=/8SΓL Hȁ@R{<"1, ) 7bFLtyPL&0p0K*J%v!||:vc]'ӊ4-H CsyqK|$VZ!]ꪰhLЅMKO ˝L=ћ ) ]5R "݌#$C&'rR(͌)H3RR,S(R.e/u*%S7ݰ456}SpXXp[5O%ԺZ ]хY\CXf0A~Q\,%ĐX\ʽ]-S#}~]-^]=u8Xa]q+Zd]51@c]t0C0^]Ucqޅ^&%I85]X^ڽ W~0=_@%T5[G=U _= h%SZ~98`OuQ_` .@ ~ܽ\678a#nU6FXVӹZ;tX .u .!">b4N6 &n'V(S#K6Ljص\NJ]g7cuMb4~Y[5VZH6 S+%ӄЀbM K51T01W!դRdExF&]FFm78vSމ`T[\dcS;5=@8]eBSC>~?0\eUgE(B[CnQA=X<ΈdI[s X9x 0L液< r>gG~tf iэLd;λ(ڵ_AK8V4[8{%S<`a[轵j$f[T&TPǝ},c@6p0hXDљ{ЭeѕꐖEj9h/z $j)lbMFi^3ǾM~}FbwlE@EmG6cu⬶UÖZܵ_[gbV8 XZvdeʃjlEnn~n.F fv>lW)lBHLMm `-@VAl`UِNnwvV=oooielc֮g~C>^e2v@% `JwmBJz_qoqWEް.Zh wGfC~`urreBXq] 5ʕI ?o &ZH5%Rא!)Gn+UL"FYv^1?_N`ҋo* < Tpfrtr|HdҦo~ok0pxr.'%_kCuD>mVT%c5tt u/Gnw6C!AGE0?f^!)aU+dbQOg?H.Äu<(`^%_A:!{ |Fs&qm B͸6;HhFbs(<0:l7mDnM4oy9Ox>nQ9nY[V.s0n1ӄ+ (IDwW:p]hv_|W٪VzfJvKyGuzz!zGg_~C{ 5@'9YtKRo[| u0n?:HzB[F{lO֥|˷X/'lx|9y `x7$Yrf|\VY'l3{9?x wӜa|']gj'=(Nazu_i_yx؆yzaOǐ'7)*hࢄ i'JćڛBr,Y),i$ʔ*Wl$ͫi&Μ:wiL|4ͳh(ҤJ2m)ԨRçZp԰#9u+8Ųm-\i'_̻zw->^rvD6 ȫM)2ʤ3:J4.ԪUGjU?T‡?:]Κ3o^;E'eeQhr\c tcz}8UXodܒ ,EX8`w9*&j!:쮋Y"ޥ뎗^ ') :#yZ T0 9h>$CT$ C2 +00O/~?H:Y޹ovWd;$Íx1DQ@6kOG. +➴-p[IW+P;bE\aZPg)%X", $ 4P TqQ(vBsڎ _(9v$Eqc Q4D4҈AQiD4)@HcD$!l r`kL"đc 2_c0`uX@EM#%"94&9Md-IN)Oꌧ@#F1+A_PSI=+9Q=U$$"(x&ca3!A9e0Ej@g3jS"Nw:ǞރPGNL"3@GC BB9cuk3ub׸p9Ci)E_i @#dhachܭ6K-{ڤ#xmdRc2[- Ak~Tl754emqG67XHT@ h<్\0n Nz.LK'T Ԯ]O(ei._Jc6(P.8dIr I&,S$ dA"|Y^H(Cg y-% 3;Y 84К%bhJ)0l ҆U֗q MD*rLFi;y0)6bYZxi6q>7ݶtB v3mu( XO@*kyS6ڍ|Ck#.S8WkɰRlH"zj" hI>s〄 r>9s\/xȫ2rTS)8ӳ9G?s^:س>U?|힜nur8ro5}Am;jn}ӄWϞ/7/=،W3OOݮ/__͓^Ӝ< 3S/{ǭ=,xξ߭owl=# | 'AumS)}퓿ӏuϯZ}ͣ}`DM ( &V&5 v ZT.``D%LCƠ4 ޠm Cҥ&! !sH^S_8]@Ha&_PaZJR8h&a&d&!!bơ!!aaa a!!a""a##a$$&aM<(("))"**"++",Ƣ,"-֢-b(*aKR݅EC>܃001#2&2.#363>#4F4N#5V5^#6f6V0] 0/^#: ;~W9^;ƣ<#;c#>>z=2>#@$ A$BjA_B6C>dA-dA$EVEDEn$GvddzH$I.H`IJd!$L$L$ʤMޤGd NON O$Q% Q.%S&RR6TN=D%UfVrU Vn%Xeu|X^'Yʞ.vK\%]֥]%^^1J|"0^&aa&b&)J[!O_yEde>ce^(\gdj&>fhgCZ[rj^jƦ&iifͦnJm6fifooK8q]q6g}N 'tF'uVIP^'v*svgigRr'xw''T'zy &|'{֧h''~}'K(_Df$Ln e7$(&:hd(>UgI-$|C;$-K@XB AԨ@$G^-F-ńU3jAc[7&-HsqCm+N?u)s3&kRI*:n0/JF7r{_^esZk--+O3.nTv%dpI\'ҿrq5i-z1mM##;5g:6BvedhMOf*O ZlTnT++shfVq46E FG{CwxDPu?PkX$`j*HNBvCxAd@!-935m4iuD 7ߦJvJh_4@D34IZ>}C@ տ9A @#>)ɀ0PPYL>a̓7 98+9>/ (^$/ϧ<̂ -JC'x@ ]E< 3xaB 6tbD)VEudH#IMcF+Yt;.&R0ēzHbC"RK2@v LHo޸t渶iXc*dZkEhl\elE13Ĉ.5|x"\7kB #d6.hB l61DlY6ir9Z+h83Mxq-Qpa`܅ @C0r&ouzװ+'y_Jŗ}D ILhd8 Ƚ<\>h&( ,iбBObAU\ht\Z8(co(lGU(рI >!kJ*_,RWA "2_K 硥7~+[ǑpicQLܳ1 $%/CoYh pH%J!}O2$47=4MҐ%AV8dָaABGYRQ ]VY&}vY&eXմNA$=cZIrGkF@TQ[]Mhşf6g~q>^ôcox9WnKssiV|@^ޗew_ KHX6x[#µh櫏d '"Gc&-׃  J @ZlFS1yyGwlTMؑEm|.#jfy)"HrƻL|5W7lWa(=I+Œ|"kP>!.A/Qt&~yL/qwmsxjOV~p 8;4lܒQ8}>RV}") * (!QCD!`>` a K:CPIȺx"@QPx &ꏀX-Z[C6EH-0Ud;I",7B1k"C}."E$)YIK^Sp&iU%E%GZ >oߺy"Q!`_$cLf LgJA ( q"Vq,C%$nheB^9N'&)y np3)ԧMd)a@ stD(DJ͆|0=qTe:ӳN>l?^ C.!烀/( aC d]4xaC'i6P:E* 8T nQH3}z/k3亖!f%Ki-`-`G8q>8EH"4͹UpqI"uyV7=ږMA#^UI ^M,yX6ЁZtb $jQ.=u7sm\S;O#R4"+\zm,AbAPgA ;P ջT׵K"{|?umV8 -t@z la"D؀sB6F&,A! X2@mjEr.A 𥄳)V譶Χ-8ā,.C"6 ϲ@4%!AT. ap }d@m,N|A /nJDAPd$"2 ^@L ;a p<|0oNL2 db"D*.. b2 ,`\I\`FaA|bhj<C :D!恶аve|z rbBT m-կ"v漑a`p˗/Ø-, l  ! X@}@ !`OinBPDA Dlё$x RWQT,@!@a$@&'#/(אLm) ohklʗV ೂAR% ! @6 " #-"B92&.AJ,)vF p!z .1MFJbZKP&d8!qs+T|*>@ n!X@9rSSꝄ6җQØQQ1 I@I_a `&jDN%B"ym4'"]vO /1y LU2s(j4!"nj(-@SHRB!ѨDΤ&nHN6;%:*p(h 3"4@єr @ꭌ +NALKҧv,  &"TNuNE4~BQ!N iBARKu1aCm 9U&N)Nts T"ad n`LWU.% ,&9 ?'`ISNNB+r@ Ա`Ro3[QJX>@XUS/*@5|D5TRtaQ2_u򦪔`S(`u"NWrzUl`J`aGakeKOAGoUgm[b"!*Nd.6_EXAԳjjjil!@"(&!VJl4SmcG :@XN >  r+r/s/W6FeMOSWt)tq)(| &` vowsWwo|hw(@y6t7Hy֪D !3:>z{W{6_C7"XyMpU~|Cx˷|}x}t~u~E~W~KuX؀tQׁ'tA#XE!؂q3x.1؃Ur}ͰCx=Sׄ?xOSXA؅K4|GcXƆls]ɇxшxٯ`؉i؊qi;"xAiؽx"ES8؏Y ِYّ#n%鸶桌F#*>CYGKٔOSYW[ٕ_cYgkٖ?'“_zٗ{Y٘yYYA9EW]1Y1ŗٜϹ9ЙyԹYY4yTٟtya hZi Z:Wx#G~%ڢ/>(1;z64=ZG0@IS)LUڥ_%XakzeiئsZBxZ{aZ͸ZکEAE9󦪳ZLZ::t ZMīZgڪqZ=Қڄگ阯ۊ5;~ ۲۱}u6k+[ l?;;;-atK۴OS[W[۵FA[Wio{cwmkxַIb۸i{u-۹J+۪{([ۼ?ϛ&1ځ nH{mr<Н.g)䢾w"`y^d2t%  %+`@`݊,j 14X*@<4^rdL|Iw%^H%!%aT!P2(p\,y.*W :@ 6ѥ ơ<- r @m! b $ -P.  s ++,3L\8@ڱ- ,=C+> @QbrTA @G!$~y' <2PMd` ~jv`b-^ 'g=`ft} 2 " * `!!d`\r D!4 I<h|Pa^? ;|H!B.\ |< B <+!># ɛ~`Qrr6( ^ v+#f!_!ū?A4%<dAbYEDI481` H *fa T0EdkB/f,bQx1ԩTZ5֭\z 6رd~6/ڵlۺ} 7nb Q,Ќ/ H_Xo\Kop@!\f;$rX\2 ;h g6/3`\,x/*4@?sy\CTHF`[` -Jhljnq4~BqEE|}'q3Sk =^Tv@Fӎ6HUAՖCMu3C^@I$iE* a? < a$9E\6lݸP4u8* uCfjfn XhEgvU"Xp{0T!I^*эa42ҟe%Lqv]T hLy?/a%jyt,@kEDՎs˒|Bh]4?0E/Tgv.#'<<ИT^| @' *2OU$l<}6q)FBJZx0 +^#ҫTrxEĚwuQi%PܙP,4ϯ@@$% r}9V>Z?@,LY` gROMuV_M՜wn[{0Q%ɿm0Jؑ,d)4m)Pf?}Tk@ '2XQZTweDXtk>xW !Bd  8TPA/ pK,Tp0 f$Nzqo;ܒkP6S9TL#2 ]LUpd?"ld!hi 8e7a`^2B@fe"yHљv k,l _Cjk4׸E:Ax3EABġ{MI$zh?ػ[xQy]ndiH,EBOTqavU4ZRr%DI45݊L"PY+_eb¼lEHc`1Ԅ8M^^Jr7^DQuX anUO8?f`A/ 0+?A\ ljsSa YnfJ%E*$n| F*Bo# UT$Lb>hj:y6=;h<Dih*,@dHF;rġq@EIv'A LC>vHcMf"1g֟УndCXэ@r+ {0@I"?@*"89 0 ,:/bZx)|eK ;xAT" 6$~_d:iQK|hQG웁a^ 0 IpYo`_@ ` 0C /lp'( K8DpSo߅Y.*bVJ /n):`L92B+ `e1T~r? P/-\ԔK,$m0n$*e;В[w"[׾iJܰV%qsݍYh? rtRfhie\`+aRm<*"_ka̷{ȜힱX/IjSpf^*`Ļ2``uMm8oWk-hs|oJ7_R:r,WW ^W3 Ԁ Loӯ3\ӯj{\W:ֿG]4zώ}loUNvtc q ~;+~oy~x/3Wϥ?Ћ~)6 dPS 9CC :A  jّ`) BySk >5 0 `  %b E@ A :_  H 0 kٖgq0E7%2 B53`/ys rCt*`H` 00 I@yNYZ 3 k h ;i8 @6`; ۰?ZtA\@@؀j \0 ^: \ : *㩛 d)2PiǠ @E`@Š wb`q {z '7Y @P V G\0j隸ɪ-;jʦn:p 6;  20 1^LQ- 6ɍd i@A@ S%:,iے y ka 6P9<+"Y@220RٟXy()H \@Sdgkj )3 ^Ū v`i62rK źJ'@5堸h0PA0 S @A0P ې(B7Ɗ{ s@ 4Y8P(k6 霱@   hP Vj ۘꡮ*! f,'&9 $l8hIHS@d AL`+Ěkh Gnyk"lž ٗFK N{))Hl8XWLubLWINُ|{܎鈒NcslNjlx̹S"yp|Ȭzqr ŒW7l㹓|Ɇ9ɯոe|U`U@7i˹ ˿,)ŋzȼ̮L |,~h ƟԌk)㌝۬(H H,Ll-Mm =Ю  -Mm !-#M%m')+-/ 1-3M5m79;=? A-CMEmG԰|IԡISP! ,       # "(""!%#+##$%&+&)-$+4*+,,-3*05,3;3346+37>48=3:B:-:2;;<;5;1;3;#<5<>C@<>AEA=Ab@@xx('C\TuT%! xב$czA+ +a[38};8:`N56 >; J@@2̃7D6pb ׀Bޟ*蠄j衈&袌6裐F*餔Vjio3?v駝@pK8*s&>!2)\w`-dmhlp{(<<@bdk?nz 7=I L0̪@ww otH۸Z<CޚoOgہo?9 0%RjhA0nsNP<AO£>,T^q/+0@/@uC>p:'H Z$?^?X zr0*[LT 0?*bNvy@ow,PO$r80ٛ PsP78uD0Oޞ&D޽N !$ ӗf +KXCsYZH7radO#'`5n`|hF5;صn`8 1M6R04ؑUco䕀_? vےh^NrfL 1! %cT-p8$3;oXy{'(`Y!䰩v^ Ҁ827jGt7(g KE< *ptwf=R$m5`YQG I13G:"XU/W@B:DZ ʣ*FLڤNP)RzXZ\TZJVڥb:dZfzghڦnpFĦrzxzJd|:ZO3I ڨ*~JZz94کIzd3Tʪ䪲zJdmʫzȚPJdʚ:UԚں,j`:k 亣麮ju' 1`"$`- Z0Œ =: ! ?RF&3Or# zDg-zCPrMrr={jz"*TG7z>Na7 آ`sRK(;ʲE04YO)*8{ 1:2yBK`FKH2$-mALGsd {G F`Z@=9Z P& G03w{[5dP/0 rd܀S)Z @WgR`L n  -`L~" [wzvZGߠϘ--[aKv n0 sY ykd< ;FBj` B,Dga]:Z-;C.U=ZWSU BFUF=I)G|c [qErt=4=/ W ?7;<5lXU0CRUOcy1=*3<DqU~A)zN;p s[ C4B<"(A >Kp x1r$#T ` {3쐂Ҧ $u 8M P/ S8P/ɠ<`]$1" <0]ً*"( $p ``Q*ƽJ"16=.f+nsm4\27 SMs@; TG 1DB>)ap vJF 3pRMQۓoYqF-] Cx): G=1c=\/CU^C|pm-1gW\=J6ۇăYۢ6`*1cFh-01Z-$zaWםM/sF L?)74xFDe}i dBG ++=+4.[0h1T %2g 2>)Ӳ}wDGm_]\'9d4^X=l):*CYCoAGלޅM2O7X)9m[J)'5ڵ-"}P#WPjP8֓Q÷~XMv`4T!@DG>B22N" <ۧLF&6ݬM2r[UDCE`D- GD>GHoDؔZ2=F :d9GJ7~$I*vI2ڑ) s74>ZH>B)c}F$?RgaM{)Re ~|㘞9~A)$s#$r'v+4MX~C4>*D zt40."֌#1<Ѳn@@1d>.4D3þ>)H. BIP=ӃzU5U<]9)}0)?T50z}Ѣ24*(?G$"E7McHhO<$ɣ:CM9)0 CV lKsj[ٲD)4LF-@)}8{> ɢ*s?}DžLF^Lދ8ZȠF/),Ԕ=`0Џk/ WtCRΎ%<9RaD[ܰ* !3/pY_1D5 7 Aq0A 'P@q =pC!E$YI)UdK1eΤYM!OAM`Α6X8aӓnIS9`$&ԬaŎ%[Yiծ}[q5l7F1 #aĉ/fcr%OJ,$-s6nSsEhԩUfuȔeSf۹uﲱg[qɕ/g{ϟ}tk. 4@)@e#PA#pBlp)pC; CK4@ 8PtEc$KQFsqGhQyrH"QǹZ,rI&H$} I*2=( O+r'04LrJ4tԌR1NO@A NDUB UhQH#F mRL3tJtSPCSA?TT!%5PSSu3WUXkJYV^{1W?wuXbOOaUv 3Yf?gvZlZ=[p6Oo5ų\tuw7ud]zM-^;w_~÷N}x`3`V8'\aj8J#b&Fb;x c#ƑQye[vecyfkfsyg{g^O^1eVzivihb|9ek{l6lV{mvm;nM4$tii`o|p 7pW|qwq#|r%/KC}tK7tSW}u[wuc}vkvu2%`Yߩic\ʜЖلwy裗~ǒYFxox+Vy7|/zy:1w 7G}]he~}N85GDy_@Fm h<"  `=Al[-| CBƐ# B=- }C B 18?20Kdb}6ш K6C'fQ[|YIJ7aXWrE%rQk k(F$:O61n$"xDGqgQG=&|HE$Zх5c<u@)J`7e}z!|#ST$Q! ҖFBPFUϛj/KՐ$Ҡ+Ab@0VkHWqAW4f.ڰ mC Vo;4PkcBڐ ^cd?>{fPz;%ցk H@YVNk?K" i$ɚkr f+W!F@—%+ni np H‹`T !61ǯ[="q1,RE7'YG `@ ^6TYLYm({Fӧ.X?kp#Of Al 0@$p}T Q %[T*p?$0nבIfJߐCm=JI`@X0h7( E.ra bQk0Ё ZB+4"qu$F2^A4? :m*H0# TG܈: 4X1\:%COt|M`f1#6JlD#*}h+b 됁 XI DHY0@ozZ2 gwq;dƥsMx἞Gm r\:@q#1AhW` Ani¿g6! }>d18!0xaJ)?~Sv q ' Rv< -v}TEsQsy$sĹ\7de5BH wOH+K  Hn;|#7|3I] = , :BP,u@ @/J%iP>s>iAC; AC< ʪ`D+2J(5Ѐ{*8d1̓@2k*Cw :$S%6s9J;;;$n`C.>"q\i-dH $[<Hǧ@X3 Ùɇj:Cj^u` 2P 8F&7 k8 H<`3hP؀9p y 4o4D4 _2D34-0{ۈ<8ȴX09 Z8ZTT{Up01cr.t/L 4|Jȃ<N⇈d(42ÁaȀ8|8y>``&8IT,%)nе pxZW+<0;LƓ HJ <X+  *`BiKdYCJrr7"QZ%J'I'KyWzW{W||%7Kk}lT9$ 0PhX}X Ph umNmTbDhFXY-Y=YMY=A= XkDݽI]؇ٝGo TXUHX]ZmZ}ZZZDNjuHl`X۱3UW{h:؃[[e[:Eۆu]\M4T?].[\[E6h%RWPX Sm]?LCɕS~\ݑeEuW u)]#5*Z\;\u]0؈_ t@D]\]\!^y1"u%I]X s^YS^ ~@^̓A`ZQZD>Uu_罻 hR;_VLuQWJ`?.u\ 8`.]7XVS:m<\}~Xvn!a/7 !"#~5]޾HذmV\ؾdž [`d4QtȃbthՂ4-R 7<-`KP'vX]d_ GbvU)@^]eY>-=c5]P@͵4L^L{Uh s^\.>BD V^e\ν۹E:h6D!]I=7LJHNTs 8 h<)fJ0-eE,mfU&pvehFYrDSuSk [] ,[j}r948OBH~cvQk،[-jrޅڏӐS`]uv^SUc5ep+ӟN]ݡf>jqNjB&g:JgDHfbM ߁cf^h3nͳV~=CYʶVEoj2~Wj4x]5i^l[h\V8 ZVh4]ڃanf͖l@(n>nNCYώk^CżkP(aoյsmf`歿P>mlgcovnqF1&bZRU%P'o^&^j.RF vﷆCJzq/qO[Cme? yjޫ@(QYoD ~tPF8 p)=&[\VkM#r#5ra*ݹ]'e‡Znv0rѕqҥvn* jm4?;^k@r*sFc-Gg'rӕ[QTQ[s5ptMgr? [D;GvanCq v.F4Y0=vls+KU ܃f^B0:V!= k&q*ȊBM82A7/AZt _vY6ރzHvs ZJsMKx[xu=NAYrnhVҽ/"wj4 wRUQ:Hwmhv_y^z.zE>zFтDu%x[ нovoѠz6&y!t@HyJO+GU.dWzu5nvA/^PR|2_u%-dN'{Qfďhˊ_nuGy-JGSyO/g E'>fw_7kuFWwglrQOY8-*h z'JćZCr,`Y),i$ʔ*Wl$ͫi&Μ:wiL|6ͳh(ҤJ2m)ԨRçZp԰#9u+9Ųm-\m'_̻zw->^vvD7 M)2ʤ3:J4.ԪUGhU?U‡?:]Κ3o^<E(eeYhr\cH`p@lM?PI0K/ 0? FNFw$3 >:I>#S8\@XC G۞X^l)>`dPۓT%|+j%JtG^3?0l A  \KD%Af*~p 4n7I3Q2LpN۩ (Ȥ;m# f&81& Z4{L$B1y^@ L)]8αsLQxP {,NQ pعQaD$@ZƤ%<PBi) 񔧚=,}&KhȀ 0 IaZG8Y=䤔4OBMo"6Z79d++?>XDnΤ9*+O1GUgh43fkS]Z7G4m%8%'0D|qd:.?$1'-8GLuS[mSɩN{^ՁIdӴC=xH`qAbRZF8ט"Gm`´j^7;,D Wu3;y(-!h|k> Ӳ h {5dk;f魓QeMod஌ \ZԽV@ZbDfwb %(m1Ïw OAцf84,mCY74TFd;mbGq\(Wjsa]:jm5xB oh;P .`ReC +n=6-P+R^[dS"*a$q2֍X`am6p]fܓ eYRDh1$v ғ+c%H,,yA.\|ȂDsJHI{U7ZGag8y3s);mCK$іS`  4/LUᴬd$S|Rv,2 `7V?:"v.D f >7ӭu{m%K5vہLD0 T ֘=!S83 ˰M,EG9^"+`rg_F>9Ѓ.8KE>cS2TtnolGwEяs^:.Wҋ]hldEgv+Ù{s.r#qOR*О<LS/^ͭ=<ξޭo3wk=! | Ο?tmOo}?OvΟZ|쇫} ܟP͔67i|C&d^C&9r Jb Nr} vK FS>,a֖E݅ގ!!sH^ S_@HP&_XbJC 7lB&&h&!f!aޡ֡!aa a!!a""a##a$$a% &M<("))"**"++",Ƣ,"-֢-".(2aK݅EC>1ރ0#2&2.#363>#4F4N#5V5^#6f6n#7^#1 c]F 0/:*;z9;#=֣;#٣>#?z>^_?@d$B&BvAB>$DF$A5$IE^$F E`FvG~l$II.HI$KdLΤK$N$H$N$P#OOQ%R6S&RS>%UV%EeLUn%W~VVvX%}%Y'QZ/vL$"]֥]%^^%_1J"0C_a&b&b.f*F \O`%!M&e"eB d"]f(gƘdrFh^hZQ\z&kj繦i!jڦ&oNn>io"o'K81 rq>ՅaOtNu^'Q'Qfv6\t~'qRzx[x筑Tz*Zz`|{'i٧~g~g'K,)_Df$Hv`&7$(&B(l>gVhI-$C|;$-K܂@\BHY7:$DrYKÉc+I4“B L%; t@̀ZďJ@@\ODNcx6t5瞄F̀$:Pdj֚*!gT@RL]"F[5$kRv@4;\2<;<ӈ{2eZ O3FjD|s,rױmf6IRKTp1>F%@m_X @D ;W5"w@`/ڒ.61bGrTOjd7dS=hM$iPqf6O ZhTrjT+W,{.h&W񑮷46E(GGh/@CADXku ?Xk\$\rAD@rCd@!-91굟niuD &VvJ J<F@ dOƎ?$E G):n wk&گDnr;q*W]oKҨ.'+: T:WgZYHR G4n&M97 jxL9@&&i 7ny(;,(F8qG8d)S.9lRkr4d藳ýFx)7ò+3!,RG1anpkC{(- Q;ỿѾW'6GGP_^g|`KƋ^LJ[ɳ"ʣc׼͋<Kw9=G`'=qH(h5HN|,X@ XLj==M4L3`<"=k0 }D`7 ty3 ;=5C@ (\@N=}}M $%|/샼mA|L!CD<@ @`K@ $S (E(K {<` @s X[]-K>h$@ @ >x@ +|՟ -A 6tbD)VxcF46dH#I4yeHn9vtfL y1… /f2ףD+4zі&u1aB2ġ+8Pɖ5ŏ)ٶu[rƴgňo BotC: 'FpnbY.vؚ*g [m\A<6}܊k߶vm2.SԳsbPWGqE fci'"r3^Ž 2 (P߷ 0a3T.kcc<_}”8qD0vL0!; Rr2 x*'жhWit(LlC\ѡ}qa0Zh1}\hĆy@Y a ꐖ*,r*|"rO<\qY| f1y/GV0fM,>cCj9T J- APPOJN| F3'6|'lfmgujWy=S3EԊv,cZJtG/fUW%8]e eHşf.G%bqG>wĺd8WpKAuuiR#9}i%KHf>pKz6CYy i&9؂ J$@l:ihܼ$0'Q(ˉGEYЦaGq aZP(p3jpNluÇSuν-f  I`cޡ"3O(u)'Ua7;Bw߆Uz)/?))Rg~>F_on޵)ݨҕU?y`>^|$I$^=*o=3a ݧjT \npAW,<  Bd,p1L@==bFP(# %D F1 h-.*Ehр 'JL1:nXl =!=p (YIK֠=$fIO~tD0iIS£ʊk[Br!L+K)-/1RlЁ GP2"!4Yj&qؐ*K8KcH:˂ҝBL$0QJr& 6L*F@s2 Pl&e𞨳gD˴E ҐaQ-QRDzߔ;A 06mdk ipY aHG=qҲh [I1eb‰*3<.2f[?f EBcH\pAqA!l (đO,J!+[=L2˜36wfSxHVI aG %KA;Nɡ7+}#~4Qaf`^]i,7.ŨSQAڕ A ": B`+0,6JhِPv (E0ӵE[P,:X( Ll_P@* XCtzE D֯0/z׵1Q4 I iQc\yY x!A8(R^WVD$ r;Ѕo +҂hk}pxmb4; t Y$#80@r*Z`8,`׷ywޥ\v`|ۢ2&a!)p2gԍ7ncp~{eE|:;P b b}فd@'m>.zXyՆwN]F<|:f>VlBam÷f$ܠsn B6&.!X2mدHpO" *DL^ ኊԬR!jFP ra" $l SB4ԉ GD0}kAn錏` Р^,HA"OPd$#2Ѝ ^@Gb }ar>/ P"aRR͜ d"B$*..b2 ,Bu;QdoϪjMT PĠ.l+JH!}~+"xb T s `d>qaZpVKG@xN0L–AwqB܀G4` q".& !qv (j$2HAr ƱO^LSK$;!d %شq,QX,!@ *`,'! "ІRpM)# 2p6f* x(pr!! @6@ #@ )-S*.;k.цD!1ڌ/D2/R%SW m*.an1"aB~r4(W*tj NP dSVap6Sr(I XTȀ N0(,=R.RQLQQ1?y_a `(!k 9?+#&r֠ # \0#ѷs(h @"FΎ93:#.aN$MH] jΊG%D* CXZ>cIAIsBʆa"@Ĕ) KRAtLWLE@v, "M{"NE*4*J5RA`@Har1QN2.`|"0)6:>uLS4F`Ĩʥ/euVJ 49 >'IXTD(tQ5@ր ʱVmZ%\ Y>@Q4X @T%a jtP^U\4k,`.`u`P-JD/cNa< peUe` bDV2pvVT<tZoVcF2*b[thhdQVi3(a@ r+r/s/W6hv5PvpKGsrܧt"1jvowsvgv'4``tMxG9` 2>:z{W{A`t)opjsfA킷`4iǗ|W|W~WW~K7~xW}wLW36m  Xg5~ٷXy4/Zy,Xq3?{'"|g/EMKǃWxqKghw\u!yxXOɩ戗y执C߶ؕ2Xi+XؾH(X ؍cOXiX8؏Y ِYّ#Y'teط.BYGKٔOSYW[ٕ_cYgkٖoC9-c~٘ٙY]Y99ٚEyCl5YǹZK!Y.ٝyY4ᙞ뙗SYXZy`ڠlx_~Z'zM )3A,5ڣ?z98AK1DMZW,PڅYc'\ډeڦo9wZڋڨw:ړWک%tZ5фضչ'˚Dڬڍo٭S(뚞ڤZZtzzX[{۱#'#-3[-4۳5BDK۴OS[W[ۓcC{d۶w}s۳xK׷/;c{[۹yM𹧛+к3;[) Svϛ{tћﹹO܀a&H+bs7ɮ.[}/bB6B)ۯ!&+`@B,zm14^*`<8y_rDH\abB@+Vb!B . B[.*] :`U Qx6K `> ab}++. Ά ť#.C"` Ȁ !$! Raā@ b 2#_2/   B Bܽ` `9ݷBݷb0n|TčHٷ/A "B=^ WBrXā 9^!I5B < 2`Md ahav bP%^'@g9`fsw 8 " * a!!d a~\r @ !8`Id\Ta^ ;~H!B*~L v\ B  >d~'|!# @ɋ~QrrBh ^  `v+$V"%!_ě f`4B<[Ar QP< v !0A*` v0$`G7("25K!Z"pIv $0ҥL:} 5ԩTZ5֭\Z6/رd˚=6XnZ'% RL0 H;xO\K o%pU!C\>d;$r0 ;( e,3`\x/*4@?sYL<)zJ[`J@fLVZn@s~ho%?z {'o3iT^RxCÎ6(UACDq3@A`I$a%u+=i? < $9C<&j S U*=q@zfbIffV`fn!VyS! I\+ɉ_,b e%CQ\RI1?/Jr V@jF$ŎsːBf5? C/4t&£*(<4PR`| @R(Š*2O U0$n!<]6oC3QB:0r #> ccRATpgCcr5oX %C?=ɗ!0 p$xX4|U AO3@|`*20tJ/tN3RO}VV@$$ `3 #+(G`] z黤`Z)994Fë ݘ?0a6B@$C*rֵ*F% CeBk!;T` ܒx6L; |`NZpC3 N,`bQš6Q9O`jr'jW 59}TP?F`?gNRXU0yRq Czr1,B L=m$, O8¨QmTU#B00" Ē5H0 249TqوR.@`>k[Pw1[^hiHvECOS)_v`53>$0LH+@K"1^cPv Spk4E PNߎ5N!?R!*H'Eo/&[K1TR.H*;@ hJsKQ! &Nd DF$nF%n SU$Db@dh9u6<;`:4Dpi`*OH;ŕsBiv'@KC6t8Lf!!g@bP#nlBO* dkKR)nHqI! l3`*@ˉ3[d`"sF5I6LkE"&Y6lm[ M)=,JE Qr5!EԶ-knDTr=)0@6˪zеg L{}[ccd}ct'O, $nlÛNӗF$&;q ؖgJ?X'bkss;n|$?~܂ʒ:^2cziY]oizvvrt_))dٓg Wɖp)tkE3(& }Ř| K`\f`M\pW`XibbixD<9闁I)S#t' $0K7{iO@҈ HbfɓiH@ PXɗFyZ9 e!n 3``:You=! /@>uI+ifU IDD@JB p.ٖቡ pc 6p p = ! i)0 :D M a  P 0eY]*s0 F/%2 b53P/p r:ʒI` ȟ` 0>VКhꥣ*3c ` ;a8 `6P`; 06ԧ8\ 35>z `P`p: }\Jʔ*dz @ Aa6 +j 2A60o~:pʒѨ >z:@;jp꣞ W)jL bJ 2`AL; P1L Rz\h`0yf `PY뱟i"Z'+$7:"`2;A5k"[102QsY*PjXڬBji#Hych3` xj5+2[;X}?p ~;k j0BP 0P:w ; kaݻ b0u+lA +c[8`(j6ߠ I`*  Wb ʐ|V$ 0#|׆0 @c -)Op\Pi٨0 ~f=39@;;<>>A?BCCCDGGIEHGIJGKKLNNQMPOOQPSSTVVYVXWWYY[[\^^accdffihgjjjkmmqrornppsstwvywyy{{|~~~  exvxwxwzc~ H}ӳÇHĈZh1cF zH%;J-/lL5E̩%ϛ{~3'P>UZQI.4SQʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ְ͚c˞M6׶sͻo Nȓ+_μУK68سkm}ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($Jf'ؘ%h\3^6:F0o$f*,ss㓥:=BDqPsdi3 ': ( Ege~a Yi.pҩfhj9C$(\ IM &) ǥ d鯈&!@D駪[ d~!fh$ح.++na ³lZ$Fox-/`-/[F<PT E04ΨT#7[{$0Ȑ6c0i/4(%t/3BR/8x@.[t}ƫ:d - Aqm'zL&Bt, /6\6РE &{ßa0&S 'x  EAN04zPkda@t=: :p3d!4 :,A:b@qk0'̐kܰl1C< 0 F"@XZnY٥д) ngD )k/V x@x{$ 0r nZq֐QRHU53=@8?@A>`Xba$x CBȂ7| ^eD>"2/x 0 +  B HG:,%,"$l[z„j\``.sTܼ@s̻88 QIq#KYݴ [ԈItY֠1-/9 ~iqPNB;;'Dn|;701U]O>WtuKoi?x\u@w^Js/ [,t~1$b 8$_֦c(e}ɢV6o@Cu3j{Ҁ-=6` {%wSdfvv[VW2|#Wh+!/T&*9Fft0s}v3^6nKFwHjs#s8u%Fmk]4f٦hWy#I˒,p(c4B'cj0gYszHoM}#Xlǂv| #aEbz@L0E`sF"3G*`mm{*W,dRaknW3V8so%oBr'h8Yb7T6f*dnB"dX52"($(&h|V\GU炎Hn8gCxFyq)S`hgb^4h{0F0t0yuw"5dWwu%Ox)^5&sdL8x0W Y`4 苿Xwb"Q~Qvlb5W1#>3hBH()(@~gW-%T(UQemFL`Jg@08H,-k0,To#J0U6`s0kp, }W9XY\SCB2_tv[E`q MN G5669*YP΃I_y)nr9M[Y*1U,pl-P, =o=X"x?T਄/2*2f`RZ3('SH+loO9uF~6bVgDf,2cD}YM *p @I0TԉSL^VLN+ $`PyF* =~@>tF)K-$Vfe'CDâBkS3k"kCTw<+Q*dXd1I)nȇhVBRDSŒGE,^P2E%H70"mK&j_Z|5x"`D, q<* TbE?ѢgdJ)jqEE  5-4pT<3p;WE0H"j@sHRz~p8 Tl` `GyH7&łM#<-`%Qi$TuC{F/xg Y\"!;r"{)W/w>%bpd\[R x'6r\Rp֬V \I0zWp\a`kP׺\\,{0f"2.b%3a&[38/&5d#{W֝5.w80" h382&05vX0s(cU/#5Z##2+abZ5Jt5$=qIUh/ TxB3P{3U#9T NBighu/I*]`Aux{(Dm6!.ѹt-xQO'bd p"WО xB{*aqq`j[˹.qK4skЛ׻~{2a۽;!䛾a[1 ۿ<\| <\|lA "<$\&|(*"Lxб2<4\6|8:<>{v?|HJLNP3|QQ|XZ\^0Ń;`\f|hjl<4 ;rӔ,G540tD3""<0J !953^Պ,L@6~355cVLUY#`|b=dՃzueI310,H$8I8rz7ĨR-פ]h0jIxP1'`Ռ)!&d~:=0J#Bg}\&KC:bg]'BC-@q@9?~`07030ͅJyPFu18z]IvAC.:Rpq{Q)|X(&J`ޮ}ޗ>ip+j=u"\`@I4PBk7Wpޭ-z~mT@NN~!d(tY4

        ^Ae^/ O e _&, N.?4T<_:c<5.BOnHN?*/TnmZal`_.kAfjlir`Mhax>g~? f1@OX_І_",&%$#-|' !L l ]?ߑ{c?MiF>o? u/ğm{_,OֿdALcaجb? a!l`~kx{{xkĥӯئ Lv/Am.&!5o~1chO3jQc C틤C *2) Ff"X*ᥠ9tɳpC .\lP銋N?IT8)x 1ׯ` *4G,!&@,eΕ"rIR+)ED\ [7Jd)kTye$I8!ῑ_l&0M$ Ss873dMf]u:t06҄ כ'LWУKNb֤ /ܞ| AWD&J&Yb &›99CČE$`xlQ6`EER`e3Hy~< :ф/!{D/h!ozmYlp1bm(}W7ݓPFSue]#F5BkVLIAU-$\&!:շMaG@re~q/|Y"{\9 bCx*Hy&ask0*p 7$sq 7@";U^s%#{/H!Ŗ M`UJ~YpVWD[ ӂqE{5ABE,xbB%e&| *: & &NxX+ǩ`P +$SClHT:{0*VmoV%K(,]HIZ-Pdhf#χeP40*q;nd'L*'‚nI*-)_}=^ޭU@xPhBq FlW`d'L3ØT39``uI@P? h (}:0!y0 "z|*, ?S L͡?'YLSf`ALB3 " !& +QDɀ#B]$0?>&Q Ƨ`P2ZCIbNh}" !)\&;թKR # \x=!V'"osߴ4UbW\D, !I[2 #I ZREl^el4iaSƬ^#\xM}Cr52y+k3 @^MBJ D' >ͨF7: %GGJRzy E% 8MIgJSp)-^T@OHMQA(JթcRU`.XMŃլV-Pնy_RNgkY fY\SBjP+lQ`'K' ,)BT@ \X*9+B@Yeq * lCDkn ) >%ؕpAQ< #L`Wz@W@c9E(*kdb̮~ePkD4!f5*! 45/URT`fTzÐo*VAc MB8a($' ĠdHN^iO}X&@0݂7k  $h1))yp@sLg,ON[`E0l)83@V^cA!:(ʷ@x xu5vvf?p2I@E춒:>a!*z5lK ؘCӁQ(y[[ `0jhD`;@RK "v0x[ܭR ^0U5"R{^06 +^9SXY'1&aZjeJwӥزrA ļ"( nPCt,J`0@NӌcP,U ya ^EmVx[VХjwvVv5fB Qɛ~/FJ->%lV|/O0R@;ݑO~SKt->z+Jf0jb ,sO~:kəxTչ=' !,(X]wtfr^  _xC8 r׀[{XoIׁƐ XH&D&{7,BT2xEؤ8؃">8DGH_@ BNXw.h;T\KhUuM^hSQ(LdXbe[j؆5ņn#rXEv +o8Xx؈8Xx؉Xq!Rzć؊ĊXD؋2ċX~CƘ‚،QŒX_A֘eF8ō/䘎 ؎X@݀؏eyshX ]ȐHr&`} !BNi!H? $/yjsyvEMRa*nz @?)!ْR1R5{l1lMybz2#JtI+iAQV%CQ&dV`   6C,4 Aa20ӖH!!\,Vв[p3%3:})A݂9m)e62.+(#C39m`7M%#(':4v8DzLIjKY.cCO!"`y1"R9dB"z2/!~&He2j$ >bv >y =&t:)+ M'C(*J* &H(@+U\oHqv0k@Cf nqe 0ߓgM`)Kq}{`}j0&_P)THiDs@^trkqP08 kX[!@@MF: q"L`C :'T@E?:Ld`"}tD@NPHr`:D|QM${Bꢓ@]SȦ[qJ0?P`pQb;nj03VS@c'LQG&AL+ D ?ЙM:ЙYD`pN ,1;nHaDM:7SEz`J-AE`;BHaS0A@ WH} R'WI0E} \?PCpW+@``>\0;r6Q@t  A } ̽b: eD@@`@Qߜj|mLnV`x8=S8}ÜᗘJ(˂cJ(:3S(ޗR]h;t4nHp?mGv ƒFoȍ[3iz@nl0y9PD0|2SbQ(*!Z~ z£;+`zDШ:V0|)A t03sAöޜ^wAςAbw "$KɪU\D_dQ:q(:pr@x3` z2LC@̙aOE`:vP#k@7I_Cf0 a ::< lSqj&=;R:AY`}@`APnlP$8=~pE0ML{ĤlGp.ȹ+mF}*~@f$}`nfWA|2L Q1?bR6mӻ(eg*1 v!?0HGKL^l".XlrPٜIPVJP7W0/Fuq; 6NEPExZrƕJ`E LJ{xIAlDp#"r -`Ě# ADp$ xb>ndZqIAkC{$;ED 4E`a˨[^?ƭ?HLe@f}}mD?ks`CHpX AgW`{ը*i΂Y88.z@awI-g00w0&ݑmwBb0%_7f-N}`~`\@-1[aar{ aoGE~v@okstx~~sW~l@t~WJMSIa~I\g@{YIQLjD}SMo?sf@}~{fEHLlAjxsx}IRxvvIW~E\sEv~r@vАMRWEsCf@kDsV@r~oEH\ gYĚ`Ċ}"HA" A}PX7;a]LR%C8Yk~dA6@Fg!Db0ZA. ckT2 7YYwB.G;xB{_YA?H3hEDaG@_`vQm(G\!o6*@ @[CR$oehQ$As(:>?*քQ|ghHю@dIF݌DADDžm\_HE#Rg +AH<~>ZчHB%dG"1cF4Gʛ9'ED_EF-N2)DE"4Dw}DeZbh~A2M2HZMp!L>gġQDp}Oa͊GHP>{e'WkDƺp͢ N~~DN6ahlv kXU:d@BWF0Yl qER1`UMpS X§p3YBEO"`]^& )I&|Th> O A"n*8cxR%.$bT 2hL•\4 :>&d^4*'i4CEpPO"JZr7y8b~kOU `P7\!8g\Ѹ+*bW "4bœL2f:Ќ4-ILcZ+Ȝ6nz 8yMkfSL:v3,g1z̧>I6@JЂ?%&+yhD#ZͨF7юz HGҊNԤ$MJWҖT(hLҚ8ͩNOZ2 @ PJԢbB GXpPTJժZXͪVծr4Hjw2 !Dֶp\J׺-eֳ"+O]KMbJYq_Tvͬf7zVTlEN,]gWֺkh*,Ӟ,mec .A=*-+E:Ѝt:[Kucn=Thmix:ny9ZJ^*WKA 0@ܐN0k+ T|!\x}2׾i!0 C(Nގ:*ت@Fk(S0@ kXj0tPQ#`hzAQQ^Lf [Hxz)1jw 4J-;d^f+h kBP݄w)jPna }ق\7c rH7ׂ& a@hKACws:N60,8 YȂYdrK KPÍ 59Bv@pAQ@ a8Q(rþ0ȁD`#"-d{|T@gZ8~!Իu(`&얻\r³`+d!6V_D +~KnHtb@`n4n ~j(\ ?Pdm :;a C~І=ޠP3FvCk*uH$le > ;>zPóp+l%ƊKY {IIC@AjZ$%0ڻʉE[4,Ema̗> C0Е9! | E %!`$a O gژUz9_%Nzv.$s:ݖ9g(&k 4|1QhE|Eytk3L >_°#i0eiɧHv"v>`p"(@jw8\rjsga%osyg,w_]OrepHPaV!U2kxjvbe"gqf |Rɓ0"2urfP/`ZP@v9E9Z=RpDAmWVy+5jf3x/c2dsn%m*v: kW\0^+IvuπR@w1va0HQ[A{r0wp|Ћa`RyWQV "pYa #WH%z%dn}Bv8Xf&o<``rI c(6 t=&7-H0o@pkx EDe I}`8m_@U29e+ \KQ_mQ@4Qu^^m`0ePW}<_J9Qs nUr0^WQ BbFlٖerՓ2e``Rkui\n@eNJnYpFr tyZvIR( b7IP}Q_!٘y8yRF 9YIR9QeR'VUvryֵ옉Y!ٜ ^ș_Mؙٚv4ԉM]9i܉F9LgUxgs߹V&ٟW V|&Ȟf ScrT Tc:_Pڡ:PWK$Z&z(L!zV#.02+T-:8:Z u<B:DN>O@ZJLڤtN:TZV)W\ڥ] 夥^:dZA flڦ2椦n:tZ$v|ڧ$~:Zڨ}:Zzi:GJY:|)ʧ]}ڪMUOګc?lOzȚʺڬ:Zzؚںڭ:Zz蚮&q:ZZe`ʯZK ; ˯ + {۱ ";$[&{(*$+KZCe2;4[6{8:<۳>@B;D[F{HJL۴NPR;TXZ\۵^`b;d[f{hjl۶npr;t[v{xzg~;[{۸;[{۹;[{ۺ;[{ۻ;[{țʻۼ;[{؛ڻ۽;[X^NBkAEt`@`{ /P| -0ۿۿp0"</ /п^8DL4\ÇK-0IjB<Ă.<<^zEPŽj¶N{>MA,\H+\PJbh̽;UNWLaav\5LoNqM[|dž k\N~\PTȇ\ɛcspڶtƧ+\Zlɪ|a0&0@X[C˿a& OX,+`,/`ts+DvdWAfcË &*0,s* {Bĥ*̠LW1'`3 J@ǖŨ+a`DLi:QPJVAй{/ 4Py@z@2 MRċAP`Nj@0\0*pO N0SPq QK!3$s@%s);,=-g9'}!i\:s\@`8b0&*0 #"pM"`/`L#l7q)}M.&zp 3u]`0~px0n-ט'{ R "őO rJ|nj'V`D[modLH7})2,Y@KO , b"p:/f`o'/`p-țtY!R6 --lp|p 3<" ; ۟0J0.Y!ͶMͯTyuj'UoUXk]k8"< N:#K-]dXL*P*a / 70:p7"0&p  ,pp E*@.X_!_meR~PUjQ4&= FH6^魫 'pF8\ˍ-Ez")-.TnLV~XnX^ 0~@"P6~0畐E &0VML݆VUf[Ex" tp#@px:O`0  K z@-+}AL勰pDm 폔|lnU< [RP1:Oy|#0'0-@7,|0Q6$B0H4X>kU>lxʎ \PZc"R@,=@˧vLrQY (r;)0't`-`'`*O0;6PI,?/Ia?BXf`ϑ .JN&P8{_\ *{/ @"`uC'Q}u j.^/ne4͍p b h$Q\1ZoѼ@l錿 {~s/{~~{qsxoss{/xo}uv}ozzكzz~्٪{͉ H*\Ȱ439@;;<>>A?BCCCDFFIFIJIJGKKLNNQNQRSSUVVYYWWWY[[[]^^a`^`_accbdeeihgkfhjjjlmmqpnoqosnprrrtvvywy{zz|~~~P@*\ȰÇ#JHŋ3jȱǏ CIɓ(GfPB~ɜ96sɳϟ@ JѣH*]ʴӧPJJիXjU)?(ZDVٱdӪ]˶۷pʝKݻx˷߿ LÈ+^̸0B#K,˘-S9̜984eҟMF Zue֘]Y6dڗm]6޲.$\wq߼xs丕?gyu败_}ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,b(4hƈ<@cDiH&L6PF)TV ߐVf\e`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤj*jꪒdV zd k  yꂋ("? @RH0.p4xQm0p*1 J*+`-`/b*l$0.k1|0Nvl|"f0N(lFR"(15_sH1 ɦ}E9GQ";@53; δY/aùs $p!惾? fNe. ;R'ȃ3,B 4(yԙ!( X@*zS`A H)8O 8xx@"s H]ڜp`E PqPE90-3B!<*F=8&pc" ;xA BP,as Dx.;a! `2a3X vM& NdRt YX770D< ӅfdAv'%pZi`91v901˄8-"*4$. Z&N!@ԡUdaA/ٷ@`<9+ O@)1 (!HהMTԤJ鳈0Ln}F;$p?fkM `LRd%X2 h pLnq K 048xigFʸ´ r ,՞u 6 [IRԛO)Ig{:ω@Zv(Ln`JYPT5LW@-@cƥЍL~FŴ!YhK;\75fwVE Zô@, i VvXu2%+!z+X~5K:EL 򆙃;e+氐t@ pC s{ AZP+%X]~(dNG79o@k0tY͕8lH9un4#l'`Bl 2Z^,iZ:*d"իN9_L@Ty &Š Eݛ-E\!Ђg, ӂsY\:~3Fi0^k)(%=,;l:pe(Ap~y:7f.V@jFu4 +q4G=rC0֡˨Hp6{t&7- ZڬtO3d4wk^Kkø`p߁IX_= `vnm T a1;o@"ARM; Իș[Msxy`J ,b-n`>@w7 ݻSOw:PMUk@TXP9?x̓R(V$r:wK8lM9rcx,kwlS{$`96lV=ε` F.`kח*sGV@/Cf_/ p,0\|9ON;yu/rɂ^5\aɔi%UbupQ+uЄ+R VWIOaGDwSWCsc\{-(\ P\X:=ôs;$$jR 2'.L3yR 6@<'<\ A|p2bHkN<+V|XZ\^+23d\f4qjlnpr%@]F}-AHNP]V},AX^չ،`]f}ֱ,Lhn֙p]v}}!My,PL8m׈vQN Є#SO6i4E8p7k}ڨ]ό}юMu Kg#5da>I Pmv}ȭZm\}< C;8NkP;k0V(iq]]^F!4>>++60P&-3P3PeN;5U;0^`N5`~7.9UhfP5<*.{^vF(P*CQXW>L>;f RrjرeϦ]֟_o] ypɕ/gΗxqǛO^ϡwk߾xկ/Mϧ_?C4@IM*PA#>j 3pC*P9qDmC0,qE[ 򨣄"pG|@Ždd% G,\q:Au)؁B*hKuC]Ô lra`x8L +\ s [QgӘJExNh .a@BBd%ZHP@ B a7 {Kx~_%3E(B 1; "Vpc=] #;+̱i5|p$ , KJKpo=DpP /''$lJ]`93@}T"![.bz,xjQo엿"ǖ`c^:cM0!x^ ė$<]KQ@ eDR&{%'X f<+֬%bHL q[B:AK=%b,] 7a+5ƛ%w ' y( f`8̠~P[쐃!DY uAIl0Q P! o!;i?At@]iq`` Kx!;HcH!K0ZKC*vzQYT^{IT,NSlX˃ڒĩ:du*3BaIҧ7%Wr[θ0A>*5^,ǂYɔk IoK\mb{-.A!rwE-ik:ylG~bG\b?re`FCN40m +\eq]C^I1-q9SME c|d:1ˆ|e,Ešrl97]s,1gfsEf֬s3cଛ!Y{̝=#g YЃ2<$R*IĄtg$:'kz^ eiT:(~ wp u XWջ } % o-kdZ֣qlVGG4)Dbldg{5lp:1 Q/[>n [ޕ7w-"z d tXrfM(۞^/ک0gX&p7Lppm`'5lI?3CB~s yKn\@''วAP.`kVc@sXucqm\KrP/6B‘}jH0-;@[5 4Aݷw u>='𤝐qڽOapo7 vj!"$ ? ?ݛ㰶(Lo|" p0@$O{ @jgrG?Oܓ}Y() .ߒ# '  >-K"0)`?t 5 '0o Á| ;P>]q +䠾&s{7ˉ{xs۳@8`Ԗ˺: l =.?LB@A!@9:kx' ?AL \A HP1%l`“&6 57n[P5И-[N87j>o@"7CD 3ضQI0۶EA[(%Xi7p.1@x @#h+DdM P: Ⱦ6O:ȃc Z=ȓB9zCh >`dLGX` >\5' ;O<2uaǑ/ FO;;6OB|H?/3pZk 3#AHH|Ƌ w;IlIɐ;k5sI BIX{Lȝ#0HI@;JIȘ8 G,KJ@3Kʵ|K iKK0KK KK KL:#BP"yEP)Ec=a.`"KRlH8"Amʊ<*T!-(d%RV3$%&8˝F4۱)h<)ޣ1x0(:P[́*Rz.P;*ӰGڇԢpP޻P=@N\>aBEV=⒁au IZ5  qT(-?G<۬ [ R ]3]]RH=t1UJ䍉@8H2}ޭ^m^O __OE1P_ \% (_P ___}I

        "ˡRpQ`"PB`P'`x+)Ȓ^C};Q3P' (,8 :(?_/(ZIع-^ 7Y@0cX($a(ԕ0> "Ûa13"==X0X@0$68E«x zCU#6d4aB8"@` :8aɓ:P+:`8x]+F%(_v ^8F+l8@o,V8^a'3mI=dV r;(TX):&3h,x0pb;<[gLg6mɃ2?>0Ijw^:8?)p5`BE[e( -} =3$?/pE(hgd&I.p)0(-NFj+>d"8@nn ?\w 3\)跰y 6Y%F.1+v37hzbߖ"șM$6!_708 bH~+,Eb@x"PJ$P1ǚ&B H"'EX#!fQ"fRh"ƌ7r#Ȑ"GRʔ*Wl%BXh ""eBJ,r$J#k$Gs6i"$I!+[IRIqRCd7  ]He(r2Q +Rd!ӫETrP7l Rpl%N@8҄G$Aɢ7Z().SgP]RQ GyBQ(J,E (%n&d¦:5cQPvHV$FSȢQ3okM-El6L ̋J-e5QfפvJm7 \65R.Zykkw 5y;ώ]}7. 38#.k 83so6+&?9Sr\#c.Ӽ6I\rD&MvsD?:ғ3D:ԣ.OH:խ3^z(;.}l}uÝvtov;چ?<3ڟHu)w$Y;3t=j<}/ߎ0=C/]~{{aᨅ)K>&HJ.?3>/Sֿ>胎s_T hO4YA3b="7v7v$f6`*V+fD AY ,"Bl  0 ]@)YLޥ  L  (ҝb)F]Q(YdB}7KAM֤pAa9F+rlb"-:Qp)^$"A!< lA LrH}AMb!@eԝ%A"APЩMAl ApLH|4|"AAޱg~&h:``AfxlAN>NHO0fk"<Qc V]0A]F"oFAlW84|υAN9g\ HJZ$dS1Ap6AI T[0% [a.Hah(&(fP kcHUeHcG$EXf Al"Qhd((AI?P YTeXAtQ BA I% XA*yd UUӎBMD"r((>!rJJ!#cQ,"c \\GA "hO$Gj(]"dT\2 Yh!JT("ĉHe" BPRz$A X[֕Aij$>ʝHhh#JZD f05ޜpjCVN)(.~AxȄ)#bd"E^kϨPPA!  A(4h 8 xa0UAI$Ȇ,_Rݳ:ʸi浺jk%$XAAZVM!U `j/+IC'^t XXt-)0AT Meh-ޢ>i):+ Bk ;)l 8)0UA\xҁDt_"B0hq'u^%fL̈́yD*XAU}TA^@HŽNg"ޥ,nbT^Ad~/EAN(blHAlyAF /8^%4oՖ&T##~TNqzNFѥ "-* r΁r*Џ- ޭHʹU۞oU9]!D! /%dD<BA<~ցZ_BϯBL㏮0cqFplE])aљ!]텝4" #6#2'1'w27fqY%bS" ejƴ,ocԍC&#c&{03rF E2 r+E""360e5c.^"^d6^2zl>c:33F(X:8!;>s{0sڳ'A4Bg?sI34>'4EWE6t ۰L=cEHB멪94@4nJt'FK4LǴL4M״M4NN4O^)/G3D4R'R/5S7S?5TGT/5Vg5VirXX5Yל@QZ5[[ۛJeZ5]׵]5^Z\\_5`vʝ`6b'baa/6dGdO5=6egfo6gWpgh6iefj6ki\jl6mk\l׶n6oCmW\np7qo\pr/7sq[r7tO7u3^btWvo7wksG[vwx7u77yz yz7|wJ6ʷ}7wW788鷩ŁL7?8GO8W_8go8w8888x 8縎8߸8A99#9+3;CKyS[9cyks{9999ǹ9&GCKZd!P$9::'/:7?:GO:W_:go:w8!::::Ǻ:׺:纮::;ú;'/;7?;GO;W_;go;w;;;;;ǻ;׻;绾;;<<'/<7?+P` SbE!uHXʒ'%`ٽ(/pj%g z2Δ5q+¶*I ,a C 5TBIE#@B:l2DM<UI4\ZP@)B(a?(@+N`B82E(B±39\IX@P($ `Xp!#XpXX$@rA*fK@^*/3bh 1؂S< 8 ;‹-oW|XeZ/k4/JaË@ ))"8"X P#J#Kxs-+ 3v !d, ;`EOB-{!6E;*+[ +{F l-HxoM?3Zd#0cJB^h<,sP‹0>\$ h(h^cІ|ށE -R5|(VEPFYr30Yȶ @]B@>VZ]z;hv;73 E3 X!  o4Yc^D7Tl`%W4/~z `$fȘA *ȶ ! :E5 tF7quWP1١!`(,]S, @C)?8 F'!QA\ࠈ,o08 G=h- Rvp'ꑀsҡNy"0,+He2 H Wx2(K ^p!.,bʉo'A TE +pZV};g=R0ha Zx!eXeMnAB=p'O@d<9#zZc$\CTV`c%XJ*> Q1:d ^WꤗYaxÛ]V֭2kW\)[ȼ՗,_W~݉BCn-f3Kվ6tli[Ϝ+k1Znp[ܙɽ o5׸ѕtA\^/+vK]~|w Bt,t^tiz{h7+{_Uxl~ʺhV`?8Eԛ)\a _9acx72 DH\b)VYg13c=9cA}c#ǁPrRid'?U0y\e+_Y%a\f3iVf7q\g;yg?Ё ]hCщVhG?ґ)]iK_ә9iOԡI]jSթVYjWֱi]k[׹yk_]lcVlg?і]mk_mo]nsVnw]o{o ^p Wp?)^q_9q!I^r)WYr1i^s9ysAЉ^tIWҙt?Qԩ^u_Yֹua^viWvsq^wyw _xWx?)_y_9yI_zӟWYz׿i_{w{?pv[0W@! ,   !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYWY[[[]^^a`^`_accbdefihgkfhjjjlmmqpnoqosnprrrtvvyvxzzz|~~~P@*\ȰÇ#JHŋ3jȱǏ CIɓ(GfPCɜ93P 6sɳϟ@ JѣH*]ʴӧPJJիXjU@,KٳhӪ]˶۷pʝKݻx˷߿ LÂ)*{ǐ#C>Deʒ3?f͝C7,YtgҥM{F=Ye֭]cXveڵm{7޸='ܸm͕?g>ݹlե_νËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,8[0(46 fH .p,x-0p. 2$Ѫ7p@B ¼j 2 / +"ޫc.Reŀ 3LG<38/HpQKڴ" Ma F7V 5c@ڱёUG7Wwed- Sva 5ڮ^\l׌[ $!OG!U/l 7c ܪY)da~f ٮx0cwV~޺^+۰hͷ3V`/`샺o $@!s.{p2G:BTTJp @pt ;8"0`~]p`Il'3(1|C0@D C *AR&@ `CT|"_ۅ5hD/%ʵ>ƞl/f{`"6O>ΛYjZ9&.Q{`©+Ssm@SGnȠU1뵾N"j@ wa9Gk>2y] ۛܯb_] ھd[g-p;] &xcJ7=6NQ^w6W{ 0tv Ua@kmqt~<)L30$.LN)APԭa(H/uw &\7>Q3-AnA?PXp4a \芍=%6kcN|HSx~Ϝ u1ƒU(C5O2GZuŠZ,G0?\r1 APT1Vy~M(o@&Wg9avk eV|*,HPSQ } 8=u{w>`}tICDH?eFG{K6o3$9Fxja9x /r7k21\`qрih: K0te#dM']HoW6FlgGL#4p+'5Ec3|brއR J =gZţnbwyCr=c0Xw5 3q5R$hf9M:Rw<+ 70s #5 c.:e&T5Xa2 jgqPSh;c07Xo9k{(py}gsyvw.cbCM @cfrbVlp?@c GCr18-}[hO@&w& CBel%xp'gŇ992H@;=0J5n]T@M\wieqVoh%mC~C(,Z6!;jSsŒwjdO:u#ՈLr6lX`-rÖ/ps@{x{nff\P9HkBiFPV>/Csa[57h>;ݤk{PW&=C2q*AI[L|P2YB8\J`F0D eR@V@CVGhs[ [qcg3!eWF:J`U>;03iCMpU: _@keSPEJ:uojՂl'@xw0^580[U7PY#U;`tk8pZ*tՙSY*:0Ogy6e'`6UCd.0PJƂ9d=Je 3llj8 "-bVys:qrl-6-``V04kQuM/p`aeS.ikٔ+?{heZ+_me Jv@u k;{}{'۸7 84i=#+;Gs[~㙨sJųۡRjc 87izK+/f;}$蔼^{sU!!Se!6)7{;13߻Q%v۱M fB"46{Bg=65'm %#,V *@\u:IGk*I \&&'|",4|'0 5rr<mB|( 1L FN R^U&P5;p*)G{Zv6=Q(CK.N>5QK|I8C 89E$VS(Ylw0^3PM7lT_!dM `wP6 /^ L.勇p?*>|Aaf25"Dr U㢸mޓlH>vQ=}k/uyĔ@LЮV4ONgt6u²u&`:E~^T2u/gN"THD2 V( -o(WyW,r"d6F~}W'7p ڭL/nvG+_Fp2;lc!fOOQ.niksohMkaxOqss1Q?ȿTpA 40*pB spC;|B OCK44C&DcDJisq1\%NR&R(),T* HiJ,W00% E@A. +IN<.Ur!tX$DHŠc-m$8H1 HTEԊC e+(E}&ТEH 4Ċ5Xr:@ M*É'4;C$~=;lBE4E5-KZ;b)C'Ĩ$>HA@ ;w^0 Q/ezPtprPЁd٢@$NH\@T8AE2ZLH" 0ytH$"D!e)Ov+|'_TE (=_!Y$ ^=P(Vx+BaVHJ8a'oϔj^&@(Z39_+@p< ;@%\0MzAZA"Mp\eN %QZ#_`eVIbk a$I@^VaԇWw;%P&^t+Hc^dy0HأU_pGcC(\  >E$ @5LZ &@[Inq B`(X .(X:h0m 1#ĚPZ- $h0'ÃCL$ZHA B QN:h~_?$2D1D BѺ X IT``%\\DLQh.D`   JIxaN1(!JIL"P'P vUitN`MXZ ʑF eFd^M~x/A$tCBr(x P8A D 'Qb(ྒྷ!,I"Q"4 w&B-Rv)C ΐL*!#Lhn hvʠ p@; u02>(A onZJ$ `@a``jOV.`H03 t/b.Bt0$x 4!"PI沚n`ݤ)q iewF8S} J»*T =MH:&"4o )"&wy!PaNfeۑل+cZ<[`c5 iv.SHJ\c4'V/cVBB+De/0Kͺdui𬄑)Ux~O2W/_֨%0xZ#V~*oaP尉ޛH~厜p]\et>H F`\X^7!~˄|d${EȲ!rd,4Mr)Wr7ٔc&h|-Yk˙#s~b,&{BM1 , s -7#fkDz^ uhLgZ'Vc uI}P_fuwg<0jTzԷ>Sj`x : \Zרu`G;îάYB[?`Ҩtp ޕv Mm|fc| #|>6wՌnvw@J>:0G|oSrd5TْA${8Kð5p2m' hd w[ds$I81X% ʝ^!&BD۹tJ D I@0@OgbH kW +TT0&vFV`AFDH|P]or1A0; ,0 ľU`x|OEL|Y}rO*i$ś H@`(x4 `I h= 8E @ A0 5(=]+0Xf5~3$(X+a8%K{s}={H5 CE|1 (\ @|õDӶ[h:xDHx2`x@) 8EhD [  X>:H#Z>DFS ?B_FЬ7\5H1o pFG{4ӿo;5G+ByH?(I`Ɣ[s@GuS ۵P8H C;Y I=0ɑȵ%l8I20G|dI躟\J9 GJ; |JJ3ȃL3qJ<,1K\QK|KqKK KKKKKK LK, LL@Ll`LnjLF˖LɼЀLoXL ML,M ML@MlML<MלMsMMM NN,N>Pm*Y5C `&@MahU"@ƐH*,R)`==r*!2 ҂:puE(=ښZ7]S,)QP=p=hHPA:P'k6Qȭ&&h}[ RWz+Ұ=(Ekԃ;ЯAȡiEljR%H=, C50ݼ ^,^\.!^}^ڌ^uMŰ mmJ^NP3e0 k܃JlX$8_6 }U:ۂ&-$xߘ1p:ʞ_<YߤVII!- $PJ$2=8&+/E Eh%7) >ӤE("ܓp."邘5Pɘչ&.3/5'-@:)!@×]a+!]2U,7\[X0XA($6`[=B x+Y!#68 b93C#967(B[!W>6]8Bq+48j|UYVN2`jXHnA(,EN0I/X-0C(.8*7;؃Aer;=f@>/B2oޱ:0@(h5(DP@NN8R08-@0؃8؃-xF9]> :/062/=@ b1 Q.5P.I^qwQ8Hyd098n/@8P$(Z^6 S88`U ]Q53Gc656VD6 58dERUE7pfjn_BqQg=y#Ђ7k@jie$P7Z!&!"(,#(: )"x((CIQ(ȡ`H"ւ#x'(&hP!ui)*@%P=Xp&0V#@(!p{$anW9;9y*w:"ރ9^0|+*P0=Ђ&YP3Eh*ϱ"(JzCx( nN%7Y&q'b%h^5q)`+@-CH%I`/@&n"-%F= a)06mE `* "M6*J"mY=8(>iU#&&P;8~>Np&(!"EH4E`8P$`т!8oE"@"'3n$ 6SE6 /?6Bf@▂!:@`o/7uAP&0m6:@(u#((H:No7`S=/(NhPa@#&xkq)imP2g$ȞobIvbA*0 5G7$hcFRQR$h_!H +p_NS)A(t+;)Eѭ#-X(2X^+RO+`E8@y@iu"C"1ߚZ9!+p7 -?g> GҦ:@)6hix@UgF)5@E$h#F5 EPsjxINOo!W6g(BoqhA$./a+_rz~yvj!IbЂ2c64{@*Ђ+8EbAx"A_vH}$0)% !( #(Cy$ 20G:σ^1DDQRP5$Ț3HQ\( 8dDQ5D(ABDUP2f5A(E"u(I(f)UX'O 5٢ъCH,e'ԁD*fi<$ V!&;GIBMREa@_Q(VIE5tY$ -P!QزrP=q@DOj< ڈQ E:D]s(1"H=DgH$!EpMM"!N^$\X }`U TIQPm!CmKQ!1U]" iT^aCQd1Qr"TW 1!!Y>QS,^GE1SL84WF!W  j[(Sm]z%a9&ey&i &q9'uډ pYC{!DQDLj4H|tģ"$1a]z aG?)$1qR3!-Ʃ1YEpp_aA |*U*E-b֊W~1QzWDLD Endl%gÁeEgVnPvKB[厷M q/bE;!q-IfJ@AV!QV( Oz 5D-f { mċz.25Zwa+a"n!jPTQ#UU`!ңU8tǍ̑M> ")E/r52/ȆqZ06V'衋>:饇杩yG1N衈V}aD3q%z1,WZ藲Oz"YRA =D~DgSW vl91nm(W lԦ@: ;vE`a\_x ?]0 z0UO#Px Q ?QѰ $p"}!:a2Y4 (\&tp-mԉkmYQ= qbC-Q~>5'1qӮqeԨ~iS־6msΆ6q>7ӭnn~-yӻ7n7.6;]38|pSNfq7 GC.򑓼&?1򕳼-G]rӼ&9s̎> ~.|:/ѓۼN9C>s>oбr'^:.\?):)g.w/=Z.|Wn ?/}L{I;/??̍WLўq7j4WRY_ߍ=I ^ _IΟV\ Y`` I& I`\!4^"f!^ &.!`Щ\P` v~X=aΕʱa! 5!>1 jDmAvp]Ν\ݽa˽(1AA2 \bȉ"!,Ƣ,"+\ fI I!!! h]!$B,A!TbljbǽQa ! !#! aRa("< B]>΢?#@R Av4hf r#D \I!AhA|$lA2!"AlA"htЁ(|"IA2l@|xd2Z%[\%tAhBܒ`踉m/DR領% #%#E( &Ԗp CDU@T D@Q i)$C, o1? $ GtP  AG   P T6ӴtN'u.t\rDve.ye``I1R@(1e  ́"TAi=lAHhdbw4D!@ T́ fc2G!TH 4  A p"ĠT(!Av>$w /g`睤gPiA’ABl14>1" (H" gTY A\<(B" FLIhɁTA"Ld&E"g AUը>*OBR1$!'aɭ@fxB}&$#z>c"~c@he3"' AyyBe\M6F*kR.̨ qjԁv_ɨӘpG )]yUM "`MT!|i$*&8P\n$LOA +Pς܍#)- ЬlAV?+t6(+_k뗌*Pҧ~ AA}V)3LGb HV]iv\OV AP|A4Am @A$h2iq nVw+0F%钧.>-E\ D !+ m 0"pf' .k k6v,'*8DmAlvG=eh"$A2"]i2i!/enщ/A&m )}! N%\@"K5j]^"l"A p ,p:F  |J koְ c-\^Sj:F ^a&QO2aƥȹW A聭0,09q1 1.!$jd$>=1 p݋m>&^VqŰh/2#7! N$K.H sb:'"+c!(Ar(c6' 662-r>L2%&wٲ031.WaLTri034G41 b2r/_<4w73:m)03::31W362:ֳۡ=3>>3??3@@4AI91E4DGDO4EWE_4FgF'^̙IHtH'0s:tĥJ4K1硴K4M״Mߴ4NO4PP5R'R7NSQ/5TGTOu5>5UgVo5W'ZS#VwX5YYyY5[X[5]uPõɵ]5_u5_6a6 a/6c7!)cO6eW6Aveo6gwv`Jg6ieji6kY6k6mS6fl׶n_6op6hSdpl/7s7s?7tSoYt\7vgvo7www7xx7yy7zz7{{7|Ƿ|7}׷}7~~7psA8/87 8;/8OxKx;x7x3x'+x8Ǹ8׸8縎8A,+:"99'/97?9GO9W_9go9w999;yt9ǹ9׹9繞99::'/:7?GO:W_:go:w:::::Ǻ:׺:纮::;;'/;7?;GO;W_;go;w;;;;;ǻ;׻/\|3;m4?/ y'/,B DO"t XS؁ @ >E 4xp`&u6t!"|!x"Cdf )p6EMIu0tfL3iִygN;yhPC5z4!K].:ڥI&eL$aZ4J&$Q EvP`E|d RiЏ {):{0DdE8s]JEph%3lGʚbKP"E_$e˕AUDG=L]tAk#6AHW~{v۹w&^Mٔ@+HQB(N qd!Xd8TK+ P@ ^Pn#XnXć8B'*Bš @8.^-2B m0J=b 8٢ =L(Tkp:2<4ՔICꢄvCDͺ"@b)Bp3V AB5ؠ 8; A˵C2t # ;@EEj,BJO0o;8Vl&mmi5m QB1V3J@o]Wxf#JP/L4.0Bdp!E~VYEphgbIZ!NE72/V۶By0~襟1opB|Yλ,Nu3JC9dRq۔r < >8 Jي"\!+t fYINuKP@y` XBeRU{P ف!؁^(,TD @p g>0 n88RpADXq0 _N(`E#D0TF"X; v@: Y*M=: 3B/XA Yx ݀\Bu}@gIjfA*D4Y"u`(F/7iq*<*=\ Ab bҁdu.h4>D@F:APڝ`}fQ"T:9qAܔpXHoU1w6X_ɢiU+x> qJ)ֹ f]^W xMkڒ VzbX^',N}f9Y$C kUUjY9D] ̶-Z 0km+Unm I.. #~x[^/Yb2:|[__7MÀ \`ؤ V`?X < '[kƖ!I\b)*Tb1i\c9ycA\d#IVd'?Q\e+_Ye/a\f3iVf7q\g;yg?Ё ]hCщVhG?ґ)]iK_ә9iOԡI]jSթVYjWֱi]k[׹yk_]lcVlg?і]mk_mo]nsVnw]o{o ^p Wp?)^q_9q!I^r)WYr1i^s9ysAЉ^tIWҙt?Qԩ^u_Yֹua^viWv.q^wyw _n֐SS! ,   !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYYWWWY[[[]^^a`^`_accbdeeihgkfhjjjlmmqpnoqosnprrrtvvywy{zz|~~~P@*\ȰÇ#JHŋ3jȱǏ CIɓ(GfPDɜ9S 6sɳϟ@ JѣH*]ʴӧPJJիXjU A,bDvٱdӪ]˶۷pʝKݻx˷߿ LÈ+^̸0D#K,˘-S9̜984eҟMF Zue֘]Y6dڗm]6޲N$\wq߼xs丕?gyu败_}ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,b(4hƈ<@cDiH&L6PF)TV ߐVf\e`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤj*ꩬfJmijGl⡭ G"2H&Z1Qf13!#|pG'* LGʶ!#J0Šdı+ԋ! L@`V.!1roC!#f0N$lFRȰ&5[sH1 yUK2 Bl<0ld0/@`KH `0$0#=Zv,kpxwkP5oR uˆ8qTd!RoZ"6qdeNV`ȯ ǚwzӞ9N  p V@Z最2"~r1 <C5,qA "Y_< p(X^P`KМQGXAvP"YXJwbny @SdWH%@вin4'Bj,JXD׷Aºore 'WJFAr3/?7pWVkH~e"&+Ay`hx8H#@r Y@?Pr^?;"0@i @~`1MȕL`@AN6 M[J%,ԛP)I~g{JVU @[ v(HnճJZ@T1LW  c؁z LR~~VŴ!Yhk;鸈:80< dQ0-v-pK,1 BZU{҇ap5@ DX@%RFy/o_r4#y9CZzU @;2hȧZ 0\ RB\ KtsîŃb ۚT]ڑjCUp^fA!\">yaQ9 AW{#ۆcQm;cH3=v'TP 2E.^ ho t4-Xim)m 2z䝫h0d<^;aCaAn#0`ܡuhADA1/ȽF./~Qa@%B6RZΝaxz9..@Q|`ëc t1PAWnU3+`"̊@ 2zuf AvNd]tt[< #6<|{R8ANT~6W6 7Av@\Ci=z$`LAeDqdwn\ ˭ @ E@ƒ2A;*." lIl}/Cnķ_~{'=^w8a#+Ȉ5^tohD'껗׹pgh%8HmLly0py61se5a82drɓ{4Nue&0tdn`t8_C~T27͒<!MGA,`v1'2G/EЄNefiiz7$-q3p>hK@0pG"Fc'2wF3pwK'(qSw6J6E;p{%oJT`ndet&2Xo49Os'+x @ kxSs4)(94P,ʧv4wSJhH#ob'@rod1`5 qڧŊbh 9M$AES<7+"7s#"C5 U'2edAPkv2x(<5RJe0DvpX`n0t \ڦ:0i."fnRQla>pMjl@eX3jdkR08U1szȖkQ2;sYlx mD:#og\gZg\n0C. {lpl49<7\/ q,0\@|O0N;|v/rǂ^5\ aiA5UbvQ+#v+R0V u;! \+^pIQ7y9uƇ*)1%3\i14JH,B!FcZ$|>dRlp4\WZYNVJ3c1O|2<%9"\D,W4E,oY5w :"QMX+srl\j[tY I,fUdW- PK: ZJVR~Xv7=l5 1^T :RZ 9M 8:rXCxEcOI~x.?O@g 4! fXH;KU@<@ÂkMpcNUAJ`@lSEJAu0pp m'@0eE9[է8Y&*u;%avk9wZ|EcZZ+ ;W6h)='=UI.XZȢA{eFe0Cmmkp@0B-W{:ywՂm-V-apWDs,lRpU/qaf`[.q;lߔ+GhfbKgofRH}+;|[?X4k>¨C+;I=~S3u=3kSqc{h=iKs;rs;~*WUY|?+ѵY|⡸[,,iA6I7;˛#ѵ%x[N<"T6gEV5/ 'sl'C,W +І w:Q{מ$&bi3;JT,&-<~(l 2L:'6,;sg @,H&D!GN&K !MT rXZ\^ź"a<`\f|]Lhlnpr@};=F}HCENPKMV}XMSU^` "f}h cѯnpkmv}xseA,pL8j׈3tN i\HY+ ~بY=߶d}n"C;Є8RFl;l@VE@G}}bfsȼlA6 9IJ`&ai1B`NQpB+k!%^6>нuӣ[r60K82$%0Z80Y܍/(1P9STEtb>lj!j_i ^s'fPjd2@:yUŤߴw腗g{2APj0]ZNyĬ.f*Siq6 K~B,^> `EY;MԮ J'7lLʔqA{pUsB6[hr TesLpх*f*Riax/}BR0NXm^'0㍽t(Xw,%ykMW0~8 -TѾw0OgR;tߨ3d1"\nWY_6vqstwpOTmpy{x_܂Մo!A?!x˽o_/AV2Na6? !ԟm 7_w-ȍau_ߒ?l+ $XA .dC%NXE5nG!E$P")UdKaTM9uOA%ZQI.eSQNZUDM+˙YŎ%[Yiծe[[ΥےPy_.*aw /fcȑ%Ofje)ogСEﴌٴ]UfkFKRslܹuڧo&^qmyrѥONysϫoױy鹋?zo;?2K? 4@ tA#I]jPB 3԰? +k CqD:P ITqE}3D@lqFk|ES)7; DF$ u\V &;hR"6p.4̷Ib!0` ('P 3ԊAp*Ą-4O1#zA v`DP  ..屦8P" ԉ VOF D@m#+0VF8T'آVFPT% 6В;H k2 (RCc % <"PFT/S;I >dČ%;xB; #3Et` Stѯ HkڡKBX@ap`Pa,f .qf8U*wx!NXi#JqQ^ %@ "HZfx&"DA0q~+.aȡ& \FH a! aD ` >P(X ,BcXJ0=I# vԬPaf '@x49+@)];@^kabAO|N(⦠ob#aډ^I aw,I~^aܧ_;%H6_+H胑f  ǡ0HÎa\ (Q&-{YD=` ^H$h @P\.&=`kMpyD`)X /ZXp BɜPb1 $p@.BD&bHA B a֤'(\ v # l80H6@@(B䐈R@#@+kb +iB>dWM@Ƈ#&a eRtoFDAP!أTȵ+N@g̏ fldM`AFpE8O;fCXWXG9L~Գ_ -z5!ƶ$Z2v5D OL^pҐ [MZy;` ( VD rIHP)@\aMh=@>')rJmtLX"ȚlpWw>sf "J0!!!BPqX>ȁ dzZ%>d:Єy.;APW0@l|[HeOEt&DP,JSCD ό29DcnkVAZ:{Yt9DN5hGbʔ"v.6Q= !$bï?D&XuRZ77sB@"&vh*|`?Y07.ǸFax(݂XC& 7i 63pXe#rLc/ r,7G_&skfn\5YsV͛ig:Yϔpg@:4}6 ?,hD'-vΟ)@ŤbEgZQaĕ,@0̠Zfu8(;8\j`;rF>d]`zuo¦va}n6eӮv[}m{'$PNkS{_s[fTR``/7:0,A@e}Gvqh:q(k0`Mh)86;ke)qM`񝌡']5N \ 0(ݱMpa9Is(yMPjxs'RwW)R0f0f+^D'?{ /{4$`N^ nW6B4<|xmyw'aکwAh~`D08' ~53 䛑/NJ4rZjQP^A@ @9Ck8\ =p#7<̛ ?8O7P?Ãۿ '@C`7{{9{7"@Z@r1O[A'|oZ{'H?AP#dBHx'Bc; s6 6hP6 0䑐[RX58x8h+q :DC8 3`SL˰c8Ese;xDP(3`xH1 82O|FŠ;[ o6R<:s$b>DGcˉ?Ch|h$`8@+#&G\i\ xpQ:]5+,H;yG3RDF eH0YHORXT; -胅h֚@)(Vv2$xZ&pd"XmٓlSA&؃;`1(,);h-Aȁ.(.=Z@_[@؃@>h@R(]*iEY=rP\tbWwգ RF8 b@@=۱ #$ct5݋R$@1J Bxx3_*_EP}_Om1_vj\e L, ` _@`g & " 떿`%hܫ _;3 %x` 2BR˥i^Q9Ha"P >H:$h=ޛX'ੀ+)a" EŊ?Y3(ڵ'.,x:(@`,/pZI5 ;> 6<6^"B ;8~ "ßUb3"x>԰^ 63H1h3h+ 06 e-jA4h+D#`@6P+J12`>y8J+ 9sT֋ad.3Hre&>he3BS10. dD0/&+8.;!f;">@F0e~2;8@)p6DX<\ƒӛ1@.H 19V.NAk:0ذ63ph0= j'65@j媦 Xf8Pa0X5:G8Д$0h>SN6EyY%`=@@8hBYR5 EZ]E 8X礢y8pRf888-8>em6kBP5x0xky8 ++Bh&*:")("B%$-,%(8-@"p'¹"hn")+@$X%6'h#h%8$/ Y8PQ!.n' 8cb4(,m>dFh+"+5  ؃-p6E@e x+() .H)"h)o%X;Pvo7^'!&$؂+G%Hc$r/Xqb'(a"a)>u!)h+(*!6&ZfR"ua=@) A2/&X;̒8#n\w 3`)>X%0d)X%H&- _A($(/xbb9N2h v1@shl >XpBu+H&+() >"@maEhN"xmO#7(P:]w8ha߂==7])OھK2'h0QX3 %HhpeQ7 QA* CO)%XIZYZ$&؝&i"+qmVa0  xmGz.Xz^Cڂݑ(Fhk-vWz8 0HW"@/g261*3Â6SrF."80 h$鵃$ljN!ş 08 Za$X0P)n@Y<fC'Bhe%(,i|<"#Ȭ Q7WXQn**@(gqsnzr)QR:dC^|N_+, wFxA"8c8|I2#>E \…""lYQX#"b1Q3Wl%̘2gҬi&Μ:W!'РB-jh"BqvLĆIBdH "%(4IXRҧ%M,ZɦB6I:a4)0Bk,G$#E}WRHJ;JFmȉFW`q $O'ɞ([)M^|ĴO0pDq2C KXJhH0OVa )Xr(D#HJqűKߝE-QDh,JQ !x+I#l1)tX\"Elȃ9yKN1H|BOxqYGd-Iq{HT`f|$ dp1u0xqgNx1Ȕ-{PǒexۭX"ɘPtDPI HbF!yԄWDVDIZh\, aS*:SOH:+C)*DF|"E,qExHQ)}xIJoAtH؇a!bM45d%a]zƸ5O GAHBN!KqfDx!mrm@ _WQ`jan:lR{Q`t2vuH 煛qJMM4#W0\\hWkWnKDQ(1dWH+[i{$QDz,RD|\(R[9LнF"GD\l}֮QpCֲV[Z\9/4fjuP4:FAbXDHalJ݀Г Ql6G[H|`=e#rC6$GJO OIF*$td%U%Bj01 bE%!CT4Tfm)eZoyJwoMM[p:f y;k"i)Tٲ(!EZ #YNmGh0BN4AZ'Pe$|xUlVe-RG%|:]kRjL]Iʦ"aKp N< u{ 7 TJJ{g'),̖MPP>1SDJ!ʤ;1Ym5RITڋdNZgŲ)2L.(&L cfm͐aΗRvə,;%.,:3UKn,>8)sϬ9mznIcN*6҃4lL>ծ~5LLY^n@Z3b޺׾UŁ _"~I+þ6YӺ?1bcwh 7m'vdžg/\ 7M̐V 7]mo?838Np"83s㿖IZq&?9Srm<c.Ӽ67y]N>߼>9Ѓ.DMox:SV:ֳs^׵Nu]f?;ɮl;>=n;h;]v7s>/~~?A.:E(=G?Y?`M!I_UN V^ je `M(1`D ` Πz M󕠭`E _ .aLGAaM v_2~!` Va`Lh!"H].!rLHaG!">A\ۥ v]( ɡ'+", O !"O.n#6bQv„Jb*p BY\OhXU|AT(VpAUUAā"lA<,  ZA"( @p`bNAAT%@Aܤh&ir``AfxlPjP*el"R&e-%$f!TI?*UЁ1P f p!ɘ҅Q94 IAN)$w%W0Ad }5AM Q(X TTTA$B$ ^b:1(xjvTzlNKPa#Xi A"A,( pWA OD`r4HSWq:  w.DKԋ\a%? 4SDT#Lů$(f"Arā#L`(ZmQp(KU AOA S ,"(!C,T_LIPQ"((.e)B0"Q#!X' `a+ٕAjk儮J")?]Q0ؔzj, *(1~A}$-~&p"*VD}&I AA& AhBQAR'!F`(n,v `M]D{UݠNPJ&-dd˪VG%$B>]R*&{Z4Խ'"4PRqK 4нfP]" DHOQ"zLv-d ~NAimΣ㴺,B&^hA 8^S"@/39q0p11?K3<dz<{_0_:(Wa~ >޷_O>s09Ewr~wi>Cჾ |Pyĝ~> BߗԶ~>?cPP:% WO3 8 " LAD,r4xaDu$tD)VxcF9vdH#I4yeJ+Yt&GD3i^D +px'!D E84+0Y$>3B| 8N8blA3N5{`}e,`-Z3%\F{ыPbL 6|qbŋ7tEFbaѠ> yqĉm1D]q$/#3K`) M! :*?+P SbEvHiʒ'`Q͈/p%h z2T6bQ_ V-[  !Vb/f 8-İc"r % - P릂B(a=(@*NˎB1F(B,вӎ=E^ Tp*h .puV aH@W^x JH $e56k8A ax(+7U5BЗE{^%@X ~]΋ԫ+Ê2Fo6xaB0 +r%-aC7 )4$U)@1|{q:bhkV /h06^W d%gmmKNsn! Ӗ>)Vb1]bń1LIc!ov\d#IV Q\e+_Ye/a\f3iVf7q\g;yg?Ё ]hCщVhG?ґ)]iK_ә9iOԡI]jSթVYjWֱi]k[׹yk_]lcVlg?і]mk_mo]nsVnw]o{o ^p Wp?)^q_9q!I^r)WYr1i^s9ysAЉ^tIWҙt?Qԩ^u_Yֹua^viWv[q^wyw _xWx?)_y_9yI_z7{=Olv) ! ,   !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYWY[[[]^^a`^`_accbdeeihgkfhjjjlmmqpnoqosnprrrtvvywy{zz|~~~P@*\ȰÇ#JHŋ3jȱǏ CIɓ(GfPCɜ93P 6sɳϟ@ JѣH*]ʴӧPJJիXjU@,KٳhӪ]˶۷pʝKݻx˷߿ LÂ)*{ǐ#C>Deʒ3?f͝C7,YtgҥM{F=Ye֭]cXveڵm{7޸='ܸm͕?g>ݹlե_νËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,8[0(46 fH .p,x-0p. 2$Ѫ7p@B ¼j 2 / +"ޫc.Reŀ 3LG<38/HpQKڴ" Ma F7V 5c@ڱёUG7Wwed- Sva 5ڮ^\l׌[ $!OG!U/l 7c ܪY)da~f ٮx0cwV~޺^+۰hͷ3V`/`샺o $@!s.{p2G:BTTJp @pt ;8"0`~]p`Il'3(1|C0@D C *AR&@ +z!="W)G"x5ʣ{k+_+`o r Wm:8!9 1A)xq2{w  k&Egl)An%Ͷ]\ F=8W<)&Ȅ5|t?Bi29g`V,8fY/OjY@y/1s E5a7ۄ2dpr{M0{;I tcQns8]}42Ʒ˂6pMǀ]wv^Qk`3`\[s2yPrN{269[$,V4%,h95pI=|cGW)rI[(ZY),e@c7- J9턙TUQxjXpf7 7Ul3 *'^ԟ +j3 9G:pCXw>]:`O}zSY.=O>sg3!eWF:JpU>;0CiCM[9NU; _.Z7U/pSF>P-vwI[eXwzkJRSX F7|W9[]:e𭞥q e}GyS9]p{S%0DDe꫽i,PU67k@s+R,i[7#w8-gboV`)4Ų``kYH2p&H{P_KꢶM+Vkfz6PSdHak෈[q۸C6ݣ:s4gѸ=:;7z[< :A*f2ۀs:6sĻ}9N{%8*aL+KQbCr11[;!HK!V-]b71]`F.廿!2Lc!ucSs{xF>[2b e\'\qi 8= |h#.'*/\w6r<m B|)+L FN Rcq;`Ce/ ~f(dQ6J'TwS#B% X^6. =ن>nӧ['7k@LkADt9p^g[g ,\wrSdPnqEkQ(_w*h`x.-BQMm#W(=o(WzW,Ŧ̒Bt kG~W(7 ۭL?nvH+`F2;môc!f_OQ.niksohMkaxOqss1Q?ȿTpA 40*pB spC;|B OCK44C&DcDJisq1\%NR&R(),T* HiJ,W00% E@A. +IN<.Ur!tX$DHŠc-m$8H1 HTEԊC e+(E}&ТEH 4Ċ5Xr:@ M*É'4;C$~=;lBE4E5-KZ;b)C'Ĩ$>HA@ ;w^0 Q/ezPtprPЁd٢@$NH\@T8AE2ZLH" 1\6-ipHYʓ] p0&Ua(~JO:fABI@bJ .<ph8R8NXavez=3` $ DN (AonZJ@Y`@a``*OV.`H03 t/b.Bt0$x 3!"PI-`d)q iewtF83} J*T=MH:&"0o ) "&wy!P]eeۑل,[Z<[`c5 iv.SHITc2'V/cVBB+De/0Kͺdu)𬄑)Up~O2WO+JҋX*_:FlUS2Ea79!;=9 bǸ2|2D*SzxX2oH YKJesd&GYʺqiI9,)y8X ])δ¤tD!ܻtJ D Ib@@PnlH WJNT0&v~T`AFDH|P]Hy10; ,* ľUX|Og|Y}rO* J$ś H@@(x: `I h= B8w_&,{N ? 88GiȘC&{?  g6r8x8r3HX@R@j=p@t{-P @ 89؃Xt8E @ A0 (=^Xg53$(X+qy8%L{s~=ٓH5 CE|1(](47][J4 +\h:xDHx2`x@) 8EE*?ː \[  XgQH؃; Z>DF& S ?B_hDЬ7\5 H1pGa FH˿pC5HBz,Ȩ`(IpƔ\FG vS 5Q9,H C;Y J=@ɑȵ9%8I20G}tI躠lJ9 GJKHJJCȄ3,K`$K\KJ|KqKKBKSKKKKK LL,˗K\_dLJtȬL LLLLL MM,ƜqJ\M M|MpM؜АMڼMΰMpMM NN,NJU-2jApaqwՙ,!1*h$ZVZ2 E8&x )q :$U J)XRo>Ze#D$:4Q:0QJ+W=0岁QFJ+ؒD( 5 ; -٦U8= rm2$X&h]]%"PetY"&;#כ0@!:)-A'ףY+ЃX*9u&UGZ嬦)QP=p=hHPA:P'c6؛Q ȭ&nۋ''2Z@F=P[r[lt.5݂4ĢH^ޕ0 #X: ^^MR>^m^^EO5` M_OP3]UP8())CkX$ߣ6 ~V,$_1h9ʞX`<؂_@VI> - $`J$2 =8&+E Eh7) >ӤE("ݓp"5`ɘչ,.355--(b4 @^2}- n0i;0XA($6[=(x+Y'#6# b93C#96Дp+B2xX6]8Bq38kUY]$N2j\>2(A(,JN0 eI/X-C(.8*7$;ȑex;=g@>/\2u:0@(h5(D`P) :/@062/=@ b1 V.5a.N^qwi8Hd0ȴ9>nn8P$(_66ae6Pp%X=@ @888_p&(!"EH:Ea8P$`т!oE"@"'3(o$ 6XJ63?Gf@疂!:3uAP&m0@xu#.(H:So7`X=0o4.Sha&dF)&k?r)mP2 h$-M)cA*09G7$_FRQR$mW !H +(qdNX)dy-Ppw]:Չ Eꕸ-pu7 O/(!"8.(])-))n -^qxm"x$x߭$bOFƻ #0kRY$P/H!o9Q36^9A_~]9$p$4"Gk#@FG-vNPr o-w>"p$H2 d6:D*Ђ+EbAx"87G"%p!( #(Chy)t2(#Df""e2l!Ĉ'Rh"ƌ723Ȑ"G,i$JDpdh"EICI,b #k i( s2a" d *ZAR p R3D7F$H@2Ie8 $H&[ZrɛEP B:pY\egDa2 ^#udg |J)l]T/ aaㄡI,re(Jܭ8DtN"h'pֹ|(ѹp"ra$DرkU Z(cM$Gg@)P_B2]|oPV@wMIT^e$WqMбu5х 5.j[Ce6eE" oHC1H2@ RG G@ !XOuBa H"(:(yZJJ1`̸BKL\!IA`1cC GJ@Q1̦|d FpH[ %IՉl;u܉ b uV!Q4JdY:DFQ_|\n~bAf_mpƓQG9gn!1|@{ly= M,ɧ[}//b!q\qS Do(Eo tYq2 1tgLлmO`vVo ݌쁈"DTE]c{h!Ŷe+` b܋$EX>+CMhEX !CP ֘QZJKYq% ebm4ʋ$y$gp &K GME; 餗|IrGaAz(b`_1&v uPR) '-^(ȎTL8HSQGNqcuE"; fJUD"68D >@l(Dnd U&fuAb, D~`(' ^N3a_C@441H~. zb~ȇK$Q-"@uXp-l*?["&7 *"0A@\U"PUj?^P$ P\@EM.B6DuCq7Akgۏx+EaAU7(1qtQ5J 8:qQ૽|v@]!MCD)3#A* kbjɧ !,B|"$'V(*Ёx;% HH@j-B ;6%A;#B BV}PX! E B& H"pOy~I0B>Ad zu lRȚS=t(K͎$E M `I+3akh ωM'D"I HBC% =CMX3+':\U"°%iI~)E IH8D'\ bYЙhk BB͒eR:EbLJMơ5P&LfҸ2!'M@ +B54Il~;4 3Nːt%D M [lj #7eT@&TDlp$a"(C,&B95r X '=w E,N=Q[l6rJ$o13bX"M~՞ 8"?v\,D$`qy(37d61a䫒fKn˕eLF|&oy΋Ze?[Yƫ1#-iĖNz' <c4C;OISԍu39Ѓt\B':ғs3䌹ӣ. bV:ԯk^.vG';.[A?-ӽv;ދ lDZ~E:ݾv37:K^+y7bOaA=7}xpҴtTK$$s~/6O.{",蕯}/~>/gE?b/Tӏxqxӿ?gGE_ ߹u\Qq5:`=I V `E`=J $`͟&Ӎ`E  a Eh@`֞ R` !Хq `D\!^"B ma^v~!_\MёY &!-!=BЁxP9j ` b!D!T!ꅡ#>"$FU ZyᩱabZK ATby\E!>]!^!+ ]!b!-+\.$#2&1abzh"t`'!D"XAB"\!D+\.\H `H =BH%R"P!AOL(B#;D)2>$DFd |E^dl!44. 55>T"lQXGBdKxA lA"hĜЁ%(|P"D9l!E|$9H^%_\&tAhF_G:`E$C A)iK( L&d hUXLQˁJ5EAG lO, u1AF ($ RܔW",x،eM_vw~A&d@ b"b*a'Z d6ё@A)B)L'< ́"TAc L"6D!pfG T'&!$9IH!PL 44G,M x(h NcVĊmDNc{"6 l2D5| G#۔(BB] "D)WxAOJ"$mA$A]%Btf"dw YdZQV^*ґA`>arzڕ!<F$D,6@01Fg"ȏ gA0JT>J(BVA20#"}2dA!X m!, d-IXb+Vn%`}*eg{^TB:^e B\KbQq#rA"OKAH夒"@ANϺ* (j9$&~7)gn %\X&f&'.T'~AAXL~r9Jq S0ɦjZA:%60J |TQyߖ쁳h,ɃEy.-^Zn!f GD*նn,I.] J !8T2 m ">' k96玨X'/JJmAo2CEeД"$AgFAd)9/Fb񫒭V.z"G&K~K)$Ԡc4,˭!!A&A ԍީ X> $h @Gp03ܐJCr!c ?"^qIӒc-J1s G[Aq2qD$qqb71bR)$*i pQp+R^#1԰W%C?&wӮ]#Ϣ>ޡ-0 #!#G-A2.:c-2 :^2/cm|d%pD22'2_&guX|61/5_360C3p5`639Fzj-1+Ԋ939Iy ˹Hx~I}H" \IF G$HQ>IqxX \de!Pe7>#"t @xA ??s7nadQB 6LXI)VHE8v("E2YIG DQb3iִygN;yhPC5ziRK6yjT(!A|$I2 DS&I0-dI(Ir";(PH*">2dG=Pm=Q$"IW.c"8[oD]#eôV VQMٲ U*Ft.5Z[L۹w|xɗ7/ԩlJ06$J( !HPYGa+J(|pNJ(NT @(?;?y-1S$ @ ;6i7b -Ƣ¸B*@d)d*4-B;4\6|^DbD!E3X~A2`c/D#pxC +Ёj'%"'!pa?X$[AEEn JH(|H7=xc78C=b@Z$Oy3x块z;9,aܢrΊ- T !d aׇNp'^(!>$t0L*ڡ0""~lBV(lѵvE4jdA&6#iJ72*x :QC׸n$C5xiE^wEK4 Dd\(E]`ad :(:JV \x@@+@q@ֆuX};6YD0" ɲctѵ*8 ՂlhLꭟn<;@hof+peCp53Ja/7|B@\!06OBC|p`.<#D D, MV4a\ZȴE$]VJW6]1 iW8x @@ / "b `A` pPR6FAGc  %! :H"Hs' ²LAJNIִ`, C2FljxC 3-a.9[ 9IO~5cf dd .ȐT ET!el v%Lp\ tSQAb,@b;i9AA%d wl#HA&}t " *i%^@|a C-X @ ZPJ- 8AV$ʑiFЍz+K) ±aSB!4!2DP .Q N;PZTg qȜ2'V&S~uZ7 Z֐liUZz9YZWvkCVHZ؜#d5,]*X>a[ 3kc%Y~8fI[vD%)gCZ׾Rl+r`e-ly[T0/p啸.o\N-0P6!ݘ4is]ﶍ12x[^Uz&|[_~k=ݴ> VQ`?` _0C aW.mA\b)VYbf1i\c9ycA\d#IVd'?Q\e+_Ye/a\f3iVf7q\g;yg?Ё ]hCщVhG?ґ)]iK_ә9iOԡI]jSթVYjWֱi]k[׹yk_]lcVlg?і]mk_mo]nsVnw]o{o ^p Wp?)^q_9q!I^r)WYr1i^s9ysAЉ^tIWҙt?Qԩ^u_Yֹua^viWv3q^wyw _xqlj` _5[F! ,    !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYYWWWY[[[]^^a`^`_accbdeeihgkfhjjjlmmqqosnprrstvvywy{zz|~~~T@*\ȰÇ#JHŋ3jȱǏ CIɓ(Gj`@ɜ9 6sɳϟ@ JѣH*]ʴӧPJJիXjUi @BDٱdӪ]˶۷pʝKݻx˷߿ LÈ+^̸0B#K,˘-S9̜984eҟMF Zue֘]Y6dڗm]6޲.$\wq߼xs丕?gyu败_ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,4h8N(c<@ގBiH&L6PF)TVie|D^\vc^)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤj꩕"⦪)YFX"9lzx2Q "kȞw0a"vPp r\ x "BAnv4Рf+"q0 fm0/ X "0n;/e؋Ɛ/ K Q.pB,1 "R pHjߛiԎ<Ɔ."+ Y2;s LP@ KsLGOJڲD',ƚ4Pv˗uiz6w`7~u@=cЛMY7-2kEl²9ꝝc>,XiELjqN:::Ͳ~_ýqfE %B `F 6C( p`9U-% r5 C "vfA BP(!Z  @ ($v!^ P#~?P2  x( hA,aL AL2Ph#@ Dv,XBB"@]w8 DLahd1h XP@%A Ilq*U/da*Uy4 !@>,LO K@9K V͒bYpbf  9#.CDRj JD06KL2dD+AeUrdb2!*-s,(9 RKe9P;'>T5%s*; " c_}g(Zp,, е0BÃP%c p ڝ|Dd@?dZ+K @JYCS BR{@fg lr_}Y`rւ L*AЀ@Ld K  @@e((5_AX 3B&q *藖"Uγ ~ "Xs zXXm< 8AA>rȉvvq0ejpT ,ЎAJitrӮc, ZRّej!pV_fa"\!@Q {02Bs} cUlC8=ʖb+-D}-Xybuh4`I ւwVI @.[mE [3k9D&(\,-DOĂE/ROlƲ-#UhBngqM㭾M ll IBC=j:Sڌ_V29'9؁w@;w558pzRnwg`!x2K@T*A?a!xjEϫZa]dCpy63ڣ[6`V4۝`]eNi;8`Br1^vy3dB֮uߡhnp/BI 5wXR -=@a4?oy0vpy41sU5b72drM4h.BmDP5L$|2hÒ="M'sbG`<#~x}JPN@`f(G|cLRlwp=hKPpcC2w63oCxTrArx:LufdT(P^#8u!BfXh5.H-0Xn34-(iNxRc4dQePr|h'sHXcqmՁ&yuq9*Fl@P^5 q'Q/fPP&bS$JR T5ez˃}2}C992S31p;̘g`HHEkтeH@'SPh=ERHC9Sy~Who9lp=w CS4t9T3yhrJ9@c&r1H(*$f}\OPA$w4eV=9gxn)s4xw]f,$vpX@njx@\ؖ:Gbp0iq.(fl4 /^ğD:rZ 9N (:qY{pHתFڏ31J3}/,p?#b`u4^3Lz:۔slN_%T %0[>\/qp TG?`- Άw^Jp\XuERXV7}WH9\P^:f୧reS9^S&DXV":>e(ցlV(FD۳jy\7~m-F-apW@lRu1J =|`X내N0"fl@fr6`M;eG+n+{l`q7[8DSC@LHc50(={@XG9"{PG0]cn4XFm$И($t0҈B""󽋣}`;*fP ,`4e܍=UU;P^N<|ܪ-V(P5<*/{cvFQ)C-0N53nL^<5]l!jr9n-S)PZrPpn32.NmT>SrCUf`f{F /c VN1>q@J^!anV*{8N=(r SO>Ch^[mqQz慰LNWO~G5(tS w/,`BUƞ>]2Jv/wrN($T^5IV02Զ ڬ.a5Xpx"[k, 0zLbT};0 NөNp!wDk@=Dq_s2._.FFrsAN/Q^!`_fP?\l-An?tBAS4J#p##!J8!Bh%R!,HJhAXF8pCh ( -7}=iJe#:6"R/(gHEl1 ~nf(v AKk~Bv Fc'D&2-a D֛o K|yIfp)_„`rM@aq<Ä"fzxw!r^,,кR)((*L!v`ʆp98A +Z'gQA`+Lp(DxNj#r#G5NxB 8S+ b &w%M;D x3[$"4 Ld.E( ᷆@ &CCXpIiLWLJ csHp9$ ݚ4DJߎPЮѠ)@`L Pp0WY7ۇ63@vT GƇ!bB,JPP𓼇HY\Im/"\ J,Db8)ŽX @J!w@R0 k' Nǐt<Ё@`؊ @א8 g=1!AdJ+x I3āԬY!\C EQ?deQB R0LA!4 04 Adp(O%``€ CxA;x!fHZ&D0540qo}?Sk q}yk+A.D{#k63^R:dž}ͭ՚PU9x Bp@$6 C|C VUDcd'/xM{tنkBܷ֖W@-o]'*DJB6l%&YZ܉ mt (R .Hdh"EGJP)!J^λW*n}y$W#XN(G} |7:H h02%J` gn}M|jX#6aX1qoPb6-͋e|cƧq}cx3=r!k=rL$;f|B3 XUOrep#lpygf 0e8Ǚ'`wp{V΃&I<1_$!3gHX }iLwɇH.?Ւ7s8y˿`^׫h <'h@D* @\ HK`R4kc%9)`+rAA0%8 7̓j;C52A2$4 4G[3(9Gc7d+5Gy;BP83h)1 @28c 3 P5l>B@ D"YŇbD[DW{Я$d6 ji5[\ƨDX@T435?3dFo<g06L%0ŇP8GCo|]t/4<7xGG 9l 5;\Hȁx8|<7~dH|z?iF@H\䌎<=8(PƓIE]|ȕID9IId\,Jɛ$J\J@J]TJJʜJJl:|5J K䴯,K,찴\KTKʶ|KKdK˻ġLLLdKDƌXLɬРLL,Le@1/ MM,M0Kݟ)Ir#E$%h, X0x*Wq%XSh ɒWi>49ғR*֪kn&b!@*QA]9 $8yS8H6aC(*hhQ݂("xSC%&"a8Q)&+p CChC`)(,P%x 5V 3)4"ёCX)n%;%+U>8кkY@ /RWS٪kXў-͹@U+[:$8&xQE!Ee$h=%22滋2?ʁ׌ٞy ,)tDBԜN)|a`=0xX9wI8:`}&6h9pTp)ְYdQl⃍B?`ED؃;/@@ A)#M܅ь#l 0Iň@w}]]DU\}ޕQ ^^EO㕈b@}^ N (uE6]^Z\%F>%.%(ݣ`%[E A,!== %_E#!"# . %s8ߓ"P>H:J2D&-mCpU 8> 0ӗC0b}_"_+<lb`(&G(@#6 "B}G0"pBBB//i62$60=0Z/ *i=B@"A:8G!;)S:h8<68V2e92/YE6>a 1-9>d3@*>1Xd0.bB0/$+8;d00e9:d,0;`4:0'lf #>'`L)Yf;F1@.H19A&.&0AUn:0630>`66hZI.d68 r@7c`ah@.I30e6+EOnB[%`})4='\f$he ޑ#H)"h%nvA9FA4(,l>mDXg+X+5  ؃-pӦ6C@Eж +()8.x-!e,p)0V%Ж ٦p$!bɖU &$8h. %ዜ#0H ޚ% v"'. $#P).r72&"jf <o\A0(-`E)$l:t(/&8= P 8֦ _.p5p'0!Pn>8V)8%(n".$(/xC9N2h t1cxr@("Dn?"; ?xIChN7GI?1 b+p:v8hI߂=pn("6.n{zQ'lvmX3 Xg%(ioe:u@*`-/g.l0$%ȪCXQJh"X+` U.8cǖ"(Dꈸ7w48~0`N" /O>B"8w/, g-8:'#^>(|O".];H#Vzx( K/00A$@z%2&5hb-7@PlG%0 "彇#.yV:?=&V9z+"!?gL@i"s{׉-4vwD>'Uz8}+,uJ88>(Y9"($*BH뉂"20#4ΪvƮ3wg&20p)X+pi%(ox'Ć7z6(&L Yق$v9H5DAH!DJ S2J1ӹ"pF^r%0)RX)%|tɅ:M2L/?-JfZ,kGL|Ia$wّMDGiIRTFaƃgs ԄPDTDEH(FI!ɇH]#A 9$Ey$I*qRQJ9%UZy%le|GG!Xvf!A}H}xEKyU]}ERCiQ *I!RZ]D_&űD2eGMHaEbIR?'ۥI8#^URaŬ9'ؘKfVEF`f!E_ENbwT[Gq\|#byA`\\8A_YVj"r_%AGgF vKDQU!N\ TM\jaĺw@G4|Z!=GhЅ c3"`< 0s[Da)"aleROb\yZe"BZe5tTsԌƧ[q(D:m3~8+NY:8TnjqQ{rDM`~vXر;N[pZ!WqĘ4vNiPFI`!1r` ,9CUƚE`Q?qؿ R`lGFW@7ӭuVO7yӻ7,nxGr}w|/838#.S83s8C.򑓼_6S򕳼.O};rJ>9Ѓ.F̧t>K4nbV:ֳs^3PϒEn;.wb~+s;/?OK7<#/S\G3~J}7C/ѓo8vc/Ӿ]OW$λ>.RģduVپ?>{N|>κ7{C<:uX~pؿ˜???Ou7_/R]?? )B!x_QQO\L%.`q ^ABAlIسA_B  5GhH !!A.p0&_]9\qؠp(VΙlJpx`_q!aAā!lADD^!AluAA!l pA$O)b•t+vx<õߘE`P`ñ x AE;9EPyY$2Gx(LD E1AXj5A;AWu  8B}c!A0$;u8"Ablxbf"5 -aHFH{!X7xR4\ !A \J)G(AB8I6&ad 4A!|8I"gAvW!Br8IM$EFE ALA T R9d!nIoq--I 2q& FeJY4 bL!h%bJGA (!]"ByO\0A@iMgI%(vsġtapZ'lh!H^A'2ASJGHd-A|s E-_@8e)aObPTA ` |(AyHMO:)Wz)jە%> ZMtᙎZq%5;Ӎ؈A]A#TcXb$A^:(yjb^?j#?yo%B0d_Ё4&Ɛ̪X%rɅH6\'A A:y j iB\!!hN:Xih,p_]y]jq >3??3@@4AA4B'B/4C7C?4DGDO4EWE3 !l4GwG4HH4II4JJ4KK4LǴL4M״M4NN4OOtFP5QQ5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^5__5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwg6hh6iikMGGAk[ۘIm6n_ " Ѐo6pp7qq7r'wpi>7tGscqnWuu Gk@X.ی]7y7SA hʼvyǷ|uv7{.|7o xwB~ww/8b8x{W ]_83"<8r뷔Txe8Svx͡m8ۇ#8)x8ckFxkw87yc2F[!G8W8 GSFs4wWɉGIG#@ Dَ3I @ 1 Pځ8AՓ7[L9 @ @pyi~ jy/I @΀PNhϥL 0)\Czh @!¼Az(ALG]b,` y wt T hUAQ,V訉<5g@ ,F_~P  @  | ѹ#=ع_@ z|<H^؀TOiAd@ @۴#|@V@ |&އxaXNJ bD"Dv 4xaB 6tbD)VxcF9vdH 4- *d+\hqF0A &a"'3"CQ[" "%Z)jQ&\9"+!J"kM1x"3`h."%!X8B4Z.32WıR:l) 0l1M53ywnݻyxpD&E 4D !  7YG0LE0dbk )^DZ(h>Ra.%"ra(DvH0q'\RP=(sI:j3?c G3 0\c6Dp-FDظm} "*.< B:ꬓ*zZ(4L1B!BQ ?ჿL@B`(,BBہM&,FlRbPtRp(<TU]VDLH!Xx"@D-6:~8"jxcp㐏[@P@18Cp9 b.+uCc"P(B lt,#+5c+@-02̊m 8fJc.SRS]M>e"]rR ہ)-v@aB(̄#L'[N[5% %(w}rv/`"5a7,ĄDl .CE-0/-$ .شQS-s#>i.88$K_\Ct!#ɦE+n*>t_YvcjAaCd9ߞ19B| J$=rH?r ojGl Th`0-])XA ^A`9ȿ٭!HIXB ٠Y("n-LSXC[ yH$= sXD#=jB|yMbXE+^$V@ ]XF3^`0h#XwbQ!ȈF;'t G? YHC2{aH HG>$)YIKBsy&9B(IyI[ (E]0YLcSHR&ULd>є4YMk^6Mo~8YNsT:NwO@ ZP UBP>D)ZQ^F9Q~!HIZR)UJYR1LiZS9NySAPZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^v]~x[^Uz^|[_~_T \` V`?)\a _9a!I\b)VYĚX-J ;! ,   !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYWY[[[]^^a`^`_accbdefihgkfhjjjlmmqpnoqosnprrstvvywy{zz|~~~P@*\ȰÇ#JHŋ3jȱǏ CIɓ(GfPBɜ9 6sɳϟ@ JѣH*]ʴӧPJJիXjUi @ KٳhӪ]˶۷pʝKݻx˷߿ LÂ*Kǐ#C&Deʒ3?f͝C7,YtgҥM{F=Ye֭]cXveڵm{7޸ ='ܸm͕?g>ݹlե_/ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,l.(4hc0ި<DiH&L6PF)T'dXf<^`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤ:)"ljꪘEYh 냳j3+&( "jleu<!R p@{@ "2 0$! I PF! b+$0A "+1;0Jf옾14apDDA` << "0@q&mAWH,!+":39?@8wX'Ʋr\tdfՁͬ%+MlX+yM7|W?}GUqID}ӑ5FdыeXnjc +YY騶z޹J#cvp~NH𱺼κ&,ZP3UP/`Co $@!o{{p2#dO܀rR Hk 0;[ʀ+HB W;)  AF('@ <F X:!PХ5DD Bv20+nP b~0:IV  %P.@a貃T@ AKt @]0+! XJU@%\ u"F90M~CH9g!atXIVVU Pr] NpLVs "pp9 ""`1V.@eɤ RZ(;@8;"rFy'SlS/ (A..(P0%!D4hɒ`xvgK|<;vҚ@uJ`.b`6$+x0@`g |p `W3!_Evt? B /\8@ Dξ:̔iЮET֋IYy=̗]y60_Hu`p:0/@t0:0tv@CU|ہwrX,IYM(} 懈8,gP$ 20e' AǍ#op2CV:$h]R +%*@ \ w,|C  pS,DjE WJ[k;DH!;hPt pCsy AҪ $Wq9e&F79<"j0-dۍXf=D`SMhui"$@` #$9 Ģ@<8ftd2M ҹC ^,جY)hZrd"f hM9K"Y* 3 Ν{Ń+vdZP RmcIgK d x%l7ؔrE9!zwj9ƪ"`p`ُD  nu"}$^eIO_ȶv 4}5Ǵ6Oջ:?\d$4nvll/ f\b:؜ss|Z0Mv6>YfPU\@)S r[Pk  MP 1<[50vMXC6:d_O _-zJܱn4p4'1y`F@5?,gA}:Wn͏9cr nVvaD0Ѫx]nǁFp`y11s 55a7t2FdrWMTXSFh.;EmAO5GL"s|.H6ŁpM3__}͓}ICJH?f#DGzK"lGp;hJ@oF0 y/ugk11vJ"pNG6FD:pE{ x=IS\Vne{FZ‚XS+ȉ'@iMS0P3 ,Wv/~ 6&J=ӧZng?xrx=cuV07}f9 1RThV9M;Rw<'+7`s5sho[&HAkFmvRw98jgA`SE@gD3w-xox9kp6df3U R(k_5@L sW˸V$]86r1'79vȍoaҷ($kul1XtTF6ZQfT99p2H0; xwXF,u`peWn,sEmc~C墊]^&8e!>MDH,jH`%X33]0Z7C/pfUoQk`3\XBU0J.7E'y'cSc.M_m5yH_RRӖ7AvT|2"gu25J5ePd'- PJ9DKUQnX77ul2 ,W^dLj$3 8G:oӎX{hAyTW>31I3y/*=aP|U4W3DԄmXS @fkuS`EJ;uoj l'@|}I`8p[զ7Y&$E;`s3k8sUZZtߕSZ*:`Sg7'7UDT. TZ:6e"kV"&<[hi[7s~sl-&-``VkQ%upaeF.@kٔ@3heL+cSePNQy+kжw{q|۲B6Si=ԓFsy+w8أrJw:7FaRmVcù+J;a0_qe67+YQ;pq~%uMvB "$6{rgA&5*{'m $,V *[t:n*k&Z ;E& ' $l'!#\* '' !-0&/ 36L&5 9|<| 4@BB' ^5 >nՁ['7k@Lg^mArYpR3B0E[g,^rSd^n1Qi'a*i` x{.T=BQM44(2f\`|W@xZc,/ L>`sT|ze7 */M_ l)ϳf&˳˵]:4O,B-/_ ?J?E_[QTGߏU\WOOb?z`djo_?aprponxcu~?UaJo_.A[6Na? !mTAIZDǂ?oTWlLkljismg f,eLdlQL? _m$XA .dC%NXE5nQ!@D$YI)U K1eΤYM9uύ W%ZdKI.eSQN*QQYO"WaŎ%[Uir5[qΥZC_'V/f㾅Oe̙5oQ2Ö;&]Akرe/UZmٹuamZq&^cs*_^tٵoWJŏ'_>*g޽{QgXHfOhB= L.$n"NpP&`R)T) (h0pD1/CÈx) i('8 AND" DGR H*$$0آJ$(*A-vD0 K6 2DD.l -D$H @X cBO2x"3lt2 4ANLTQ,d=h %CHp"24W`B2I|'A@V@An@$PpAEd oad8aupNPaAoo/\ $@BE dX!D^u+ _A2TDu_!A$ ^=P(V+Bc[VaB18ahڅzUz騆MrI^&@샃3 9!Y+@y ; ;@ \zAAF^N ~ Z#_C=I뾻B&סݏUǕ(aWDt8a筝Tݶ>9abD0=(wF]7! +: ;H%@VaP~iNr`(L +\Z)&@P `+G97%_ȚU@J:XO A t<#`?%0\B/A# DBm (B0Q6o­=|bn@DQg u2 >2c d6 ke0AzC lC"' -yIP>4H:nLtB!t @'BqZ%HV!Ps5'h1#AGi{!d D "GO 3 vDc p(0Nx^D@v(;|V@rg=Ra 30!C p@,zb t _CKPCG):rA@ eإ ^+pAM@P5_*"P8)l1-)bkzgYͺy~KHĩU ֥fS֥sk -E 6G(ԋl?*&`Q.ZcRWF=(Gmm{2DT"Uk%[঵:kU8 S!;*wO  :Cuh.ܑցw<ݎ!H+%W]q"Ed`pĶW }c߆BT[Wp3 bR铅=a6qM'fqbЬ31l`LX;̍'cYȌqhZYKnK =Dx*&gYUq2k,5` <2/@rL g($pYy>7ZW@ sgFt-B:% DH?ό63(}iT"]Ƌ}IgF uiM#"D@+kV+"pc 0 \[ݽvZzO )70_{CuN>9 l6}$ x/"氀x}G!V0C(l.H(! 2.0_Kʙ{ -AӞT0&v`?DH|P1]Ernm͂/s?D`_@{.XQj$(X+pAA(7%6{sjػ3/A2|4,FC (ikpCXc4p'`($X7p)@p p"h$+CL3D[ (=N5\}B>BhE*rD\?` $\5 hi5d\lFKDa P1#>[1@gFƣaRZT,cs;rGx4qŋ 6:8H3|G y$ mD3G$Tw|4[,BGsdžHE^Hiƃ8H,8 `ƕIȏ,IkII0K!yBeee)ɒ-!I$0QIei !A;Y1:,R<'aixlѦR!0(;M1$0x/~S2I5QC*`8K phP=& /%YGJ5Rȑ+&. T5)9?:H)"|I ]-H!B#:9:0Vb"=0βiQ ,Jמ4й-UTp#ZU5$&hK#%E]ݜ'`=": (.!::-h(kq'~;بJG$G]YԶҘ@Ѓó@p>H@1HdZҚC(u5Ի"Ю.XXl+;PaiaX(D1`((a!\?p^MJ!PBB ٯ,5*$6[=(갖Y60rI!3h)BD#P0P :`8x2.N2pё8/5T> )9xd>p2@*40㌹/-(bB(.*7;؃1/8:hP2?=/2w_:0?(h5Be I %>3$?.H==p_ڒ3䁠.b/(Pك/PݙiY9Yeu8^^7/ic0`9p(֕}8$(J^QRed6(D@X+P5ڕ:8|2e(58(`C)P3>)*5h(58@xVN(8`^rf=py#Ђ7?judj$P2O8&8 "*#: )"Ѓ(XB0Q(_H"{ւ#%(&h7!w\i>x"*@&5?1n#@(!h$`n>񹳞aA3 +=@mD**5К-h~5C8EƮX+ (-p*f( mN%np&v6U&ֹ$- $@a$0p-7Q!& wڂ?*2$jgp&`* /6"c1"ЂSA=8($P:Lv(&&8=h0N=NО﫥&(!"؃C8+C_8P~-j"@"'H3m$ 6A4')rmB*`l&+ m)>!7@8&0l̖r t#(&x&t-?p:wh.gPbzD&PlpilP2f$hx4@*$/ {k&>j$%CpDp9 |8%?F?:)؂Ci!-(2@>+17x8'y'ann"Bi1aA!CqpЂk|+lm"ȮXw$paɭ$.-qŤozW"00ےFO ~QEP pNIҮV!Gv6 sBmA$pƭ9? Fqk.`xH9#A*wDxLOz/'*Ђ+ @n8}Pl= Q9!$*B@s2(#**7+M%1(P*`$(lq/āsߜ5r^Bh A:`IR!o5$9hJCI:3Hl!"+V!y@H@$zPV&P|ш8-4AH$l"Q-!-(#:FqP$]Irp BH(;:DDh'AN a|(!Aba $E*=DQjƃ IBD !,$ӷ%| DdOLB|QHXy{$J$U MxB6y8#$zw1q}aĂzR"e&ic!GEmu؞(jm_!%b_ D 5ƗD\Q>AQ0\FV;ЅʃnJDzY>0(_h7ف%uC. TLF6* z]GBwM„I R0օ"Jk&& d u9Tpu! R!a-vC @7Z(DzP=*2 &% @ uN5a >!Ёfpga@:hgA-Rh ‡YP؂PU>&MqD} A9D2ڂL=<]@LRYa};&2LNq|f`% HHA@j*O |  %!V BpM5c$e(p5 x+8R%$LH%, >ⅢFU3S٤=:JxΨDCh#4lPJvOt6-꧅Ҝ ) UMa_ggtUp °%,Hjq6-X|8fd2=A(90+U#X jEU$iHPB@Dk3'B2Cd!"@ Vb  DF@焦n)=%U3zTE;T w{EAD BΖiA*z!XٰpQ0/tAП[("mnI#^7 bE||&pjӬ-W k&<;eB<eyGŬVAЃM:puyeFS6*%- :lʤzAmbR5USъ~5YӺֶ5s]ea>6]_-iS־lB6-q;UC6]u~7mtϹʧte1p,o9^~b}N:ԣ.SVG-fHo5|f?;ӮvZv%=k;6o#}P3:,xGs|#ɯܖAճLzU^$=_#/~3ߺjo,#Ӏ}{!w8N4B}dX`AY) hEݟ BFl_B  \̿@L}   |al6= mlAh lXAh_QA!!hЁGT!DxAxP|('~"(\"tAhmYވ]Iޘ ́|!hE8I AwUBLGEG   3*g1A8SYcD5M ?ac!, 8E4"?A"htbȎA+H,Z,ݍL8xB$\[%-̾qTnXN_}AP TQ^ՉK4|A #Vf%h$\+HCC^DF ~<&i.NFBQO1 \adB;>8A !PEH`IvT! /.MFAH؀Li%lfA)*"ae!卤%ܵ,hXBt%$AJ[!4uHl@HeَAI& AJ85,pйG!&A A&Z( g SrTĎT2L!@afh@A۸XB%"dOAAgĎw}A,A(idU^ݽAq午 LH0 ҝ\F"Hol/GG*\`oD_S$eEG!!NFLP|A_Ax(AxL7Db*ّ#`nnZߐiҥ)DPR L])R#<" ^.hxd*bZ=RmhiRRk>dV1&Ì*+ꝗ>*C.!rY"Ia|,,A@l ՁFxz_,kB,Byz(mq4N-z꥘>-cmь8*> R-۶Ymza-h^ĕ-ɬ-ܢ2 m..WR(%nVR*R~.j*Srzn覮&S֭X߮..eoS\[ޓ/oFN/^[Vn/v[~//b/oﶵ/:///'/0O)7O0'Vo0Zw0 C[ 0 'Z 0 ?[ װ0 {Y 1s[/1W7O1-^goq=0F1C1q-_DZ1ױ3AH1  2!!2"'"/2#7#?2$G$O2%W%_2&g&o2'w'2("1*2++IJ,2-+r-,߲+.r+r.3+ s-*3-#*+,33,;s,C35W5_36g6o37w738839wq!B ;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C3 !L4EWE_4FgFo4GwG4HH4II4JJ4KK4LǴL4M״MtDN4OO4PP5QQ5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^5__5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwg6pXRh6jWj6l B 6nn6oo6pp @%/r'r#˶s?7P Vo dtww5 Iv[)zNKx!w:IZz7~u[!y}78Aww8GxIۂϷ8I87vaxˁQ/ۅ8 xa?Dio778z8d !8[h8x2KΉ۸縓E#D Sx|xT4" AD -9ix\U?9o/ }ш 9iy T9ԇ[߹ߐAd0$mC:I@ @  \ D\G4peL$B `zE'+ Q 8l=M8U4OhXZP!PMe"āPs+9}zz XN#phAά:ś  lϣ\@ @ @ ԁ @H@ @[kWx 3  x@ t tG @@ K! P`RX9ّCI@Dh\hTkA*M|'~X_Q:\1{;`JýB\ a'>?ҁʄZ :%KDP )Cz>PODtH%J-S pxA;a)^ DBf Uk#Yh'!>R88 m) d 0(tآ;HA":ֻ <%ہ-v:<,ÊeŠ7# -xS +p- SG3}%%O:BA5\M@@ᄈ QBSJ(ah5b3\XV" qm?N5!#Jo qu+ *"B]䥲-#„ -x/ - - N-LccҎ=-88$#DZ i&Tjq#FЊm,c%*=LNXAȃ$CW?_~`ZC!d˫o>:.G蠋Y|%}ҋgCl~Oc2?& X@0y? )XA ^&R`9(>3XB)ܠY$- SXC d yH BHl= sXD# ijOs"D+^YL` :b]XE-iє4YMk^6Mo~8YNsT:NwO@ ZP UBP>D)ZQ^F9Q~!HIZR)UJYR1LiZS9NySAPZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^v]~x[^Uz^|[_~_E \` V`?)\a _9a!Nw2NDk01SAR! ,    !!" "##$&&)('*&(,**,..2./82/200.22366987=39>39@;;<>>A?BCCCDFFIFIJIJGKKLNNQNPRSSUVVYYWWWY[[[]^^a`^`_accbdeeihgkfhjjjlmmqqosnprrstvvywy{zz|~~~T@*\ȰÇ#JHŋ3jȱǏ CIɓ(Gj`@ɜ9 6sɳϟ@ JѣH*]ʴӧPJJիXjUi @BDٱdӪ]˶۷pʝKݻx˷߿ LÈ+^̸0B#K,˘-S9̜984eҟMF Zue֘]Y6dڗm]6޲.$\wq߼xs丕?gyu败_ËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,4h8N(c<@ގBiH&L6PF)TVie|D^\vc^)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤj꩕"⦪)YFX"9lzx2Q "kȞw0a"vPp r\ x "BAnv4Рf+"q0 fm0/ X "0n;/e؋Ɛ/ K Q.pB,1 "R pHjߛiԎ<Ɔ."+ Y2;s LP@ KsLGOJڲD',ƚ4Pv˗uiz6w`7~u@=cЛMY7-2kEl²9ꝝc>,XiELjqN:::Ͳ~_ýqfE %B `F 6C( p`9U-% r5 C "vfA BP(!Z  @ ($v!^ P#~?P2  x( hA,aL AL2Ph#@ Dv,XBB"@]w8 DLahd1h XP@%A Ilq*U/da*Uy4 !@>,LO K@9K V͒bYpbf  9#.CDRj JD06KL2dD+AeUrdb2!*-s,(9 RKe9P;'>T5%s*; " c_}g(Zp,, е0BÃP%c p ڝ|Dd@?dZ+K @JYCS BR{@fg lr_}Y`rւ L*AЀ@Ld K  @@e((5_AX 3B&q *藖"Uγ ~ "Xs zXXm< 8AA>rȉvvq0ejpT ,ЎAJitrӮc, ZRّej!pV_fa"\!@Q {02Bs} cUlC8=ʖb+-D}-Xybuh4`I ւwVI @.[mE [3k9D&(\,-DOĂE/ROlƲ-#UhBngqM㭾M ll IBC=j:Sڌ_V29'9؁w@;w558pzRnwg`!x2K@T*A?a!xjEϫZa]dCpy63ڣ[6`V4۝`]eNi;8`Br1^vy3dB֮uߡhnp/BI 5wXR -=@a4?oy0vpy41sU5b72drM4h.BmDP5L$|2hÒ="M'sbG`<#~x}JPN@`f(G|cLRlwp=hKPpcC2w63oCxTrArx:LufdT(P^#8u!BfXh5.H-0Xn34-(iNxRc4dQePr|h'sHXcqmՁ&yuq9*Fl@P^5 q'Q/fPP&bS$JR T5ez˃}2}C992S31p;̘g`HHEkтeH@'SPh=ERHC9Sy~Who9lp=w CS4t9T3yhrJ9@c&r1H(*$f}\OPA$w4eV=9gxn)s4xw]f,$vpX@njx@\ؖ:Gbp0iq.(fl4 /^ğD:rZ 9N (:qY{pHתFڏ31J3}/,p?#b`u4^3Lz:۔slN_%T %0[>\/qp TG?`- Άw^Jp\XuERXV7}WH9\P^:f୧reS9^S&DXV":>e(ցlV(FD۳jy\7~m-F-apW@lRu1J =|`X내N0"fl@fr6`M;eG+n+{l`q7[8DSC@LHc50(={@XG9"{PG0]cn4XFm$И($t0҈B""󽋣}`;*fP ,`4e܍=UU;P^N<|ܪ-V(P5<*/{cvFQ)C-0N53nL^<5]l!jr9n-S)PZrPpn32.NmT>SrCUf`f{F /c VN1>q@J^!anV*{8N=(r SO>Ch^[mqQz慰LNWO~G5(tS w/,`BUƞ>]2Jv/wrN($T^5IV02Զ ڬ.a5Xpx"[k, 0zLbT};0 NөNp!wDk@=Dq_s2._.FFrsAN/Q^!`_fP?\l-An?tBAS4J#p##!J8!Bh%R!,HJhAXF8pCh ( -7}=iJe#:6"R/(gHEl1 ~nf(v AKk~Bv Fc'D&2-a D֛o K|yIfp)_„`rM@aq<Ä"fzxw!r^,,кR)((*L!v`ʆp98A +Z'gQA`+Lp(DxNj#r#G5NxB 8S+ b &w%M;D x3[$"4 Ld.E( ᷆@ &CCXpIiLWLJ csHp9$ ݚ4DJߎPЮѠ)@`L Pp0WY7ۇ63@vT GƇ!bB,JPP𓼇HY\Im/"\ J,Db8)ŽX @J!w@R0 k' Nǐt<Ё@`؊ @א8 g=1!AdJ+x I3āԬY!\C EQ?deQB R0LA!4 04 Adp(O%``€ CxA;x!fHZ&D0540qo}?Sk q}yk+A.D{#k63^R:dž}ͭ՚PU9x Bp@$6 C|C VUDcd'/xM{tنkBܷ֖W@-o]'*DJB6l%&YZ܉ mt (R .Hdh"EGJP)!J^λW*n}y$W#XN(G} |7:H h02%J` gn}M|jX#6aX1qoPb6-͋e|cƧq}cx3=r!k=rL$;f|B3 XUOrep#lpygf 0e8Ǚ'`wp{V΃&I<1_$!3gHX }iLwɇH.?Ւ7s8y˿`^׫h <'h@D* @\ HK`R4kc%9)`+rAA0%8 7̓j;C52A2$4 4G[3(9Gc7d+5Gy;BP83h)1 @28c 3 P5l>B@ D"YŇbD[DW{Я$d6 ji5[\ƨDX@T435?3dFo<g06L%0ŇP8GCo|]t/4<7xGG 9l 5;\Hȁx8|<7~dH|z?iF@H\䌎<=8(PƓIE]|ȕID9IId\,Jɛ$J\J@J]TJJʜJJl:|5J K䴯,K,찴\KTKʶ|KKdK˻ġLLLdKDƌXLɬРLL,Le@1/ MM,M0Kݟ)Ir#E$%h, X0x*Wq%XSh ɒWi>49ғR*֪kn&b!@*QA]9 $8yS8H6aC(*hhQ݂("xSC%&"a8Q)&+p CChC`)(,P%x 5V 3)4"ёCX)n%;%+U>8кkY@ /RWS٪kXў-͹@U+[:$8&xQE!Ee$h=%22滋2?ʁ׌ٞy ,)tDBԜN)|a`=0xX9wI8:`}&6h9pTp)ְYdQl⃍B?`ED؃;/@@ A)#M܅ь#l 0Iň@w}]]DU\}ޕQ ^^EO㕈b@}^ N (uE6]^Z\%F>%.%(ݣ`%[E A,!== %_E#!"# . %s8ߓ"P>H:J2D&-mCpU 8> 0ӗC0b}_"_+<lb`(&G(@#6 "B}G0"pBBB//i62$60=0Z/ *i=B@"A:8G!;)S:h8<68V2e92/YE6>a 1-9>d3@*>1Xd0.bB0/$+8;d00e9:d,0;`4:0'lf #>'`L)Yf;F1@.H19A&.&0AUn:0630>`66hZI.d68 r@7c`ah@.I30e6+EOnB[%`})4='\f$he ޑ#H)"h%nvA9FA4(,l>mDXg+X+5  ؃-pӦ6C@Eж +()8.x-!e,p)0V%Ж ٦p$!bɖU &$8h. %ዜ#0H ޚ% v"'. $#P).r72&"jf <o\A0(-`E)$l:t(/&8= P 8֦ _.p5p'0!Pn>8V)8%(n".$(/xC9N2h t1cxr@("Dn?"; ?xIChN7GI?1 b+p:v8hI߂=pn("6.n{zQ'lvmX3 Xg%(ioe:u@*`-/g.l0$%ȪCXQJh"X+` U.8cǖ"(Dꈸ7w48~0`N" /O>B"8w/, g-8:'#^>(|O".];H#Vzx( K/00A$@z%2&5hb-7@PlG%0 "彇#.yV:?=&V9z+"!?gL@i"s{׉-4vwD>'Uz8}+,uJ88>(Y9"($*BH뉂"20#4ΪvƮ3wg&20p)X+pi%(ox'Ć7z6(&L Yق$v9H5DAH!DJ S2J1ӹ"pF^r%0)RX)%|tɅ:M2L/?-JfZ,kGL|Ia$wّMDGiIRTFaƃgs ԄPDTDEH(FI!ɇH]#A 9$Ey$I*qRQJ9%UZy%le|GG!Xvf!A}H}xEKyU]}ERCiQ *I!RZ]D_&űD2eGMHaEbIR?'ۥI8#^URaŬ9'ؘKfVEF`f!E_ENbwT[Gq\|#byA`\\8A_YVj"r_%AGgF vKDQU!N\ TM\jaĺw@G4|Z!=GhЅ c3"`< 0s[Da)"aleROb\yZe"BZe5tTsԌƧ[q(D:m3~8+NY:8TnjqQ{rDM`~vXر;N[pZ!WqĘ4vNiPFI`!1r` ,9CUƚE`Q?qؿ R`lGFW@7ӭuVO7yӻ7,nxGr}w|/838#.S83s8C.򑓼_6S򕳼.O};rJ>9Ѓ.F̧t>K4nbV:ֳs^3PϒEn;.wb~+s;/?OK7<#/S\G3~J}7C/ѓo8vc/Ӿ]OW$λ>.RģduVپ?>{N|>κ7{C<:uX~pؿ˜???Ou7_/R]?? )B!x_QQO\L%.`q ^ABAlIسA_B  5GhH !!A.p0&_]9\qؠp(VΙlJpx`_q!aAā!lADD^!AluAA!l pA$O)b•t+vx<õ_ SI6 V <;TA[9P ,_!XM8cy\ $AP$XŨVt8* qPh,8B$ AS *$B.xA+vp ,Fڠ-I. 2Yhl(#  'Q# rt A $P XAy `b9N8AA x &$Y4$lD-IMddluALA T R9d!( ""Jdq⒰"Ѡ beJY4 bL!hdJGA (!`"B{O\0AXiMgIEsĽA08'A'I^A'2ASJJe-A|s E-_@Te)!QbPTAčb |)A{OO:)X)jە%>q2r.gzhԁ8;Ӎ؈_MUcXb$`Z({Ҥd^?r#?yo$%B8kg_Ё\&Ɛܪ,j.)ub Wԡ"\~!Dlt!hN؁:Xid,eDg,,l|%1l/rÅeʼnU:( ő8A,f--| ,,z5&\ϴĥmH-׾:؆-\FۮJ-&.ݭ{-߆*.V&JB.:~.jmViyn覮RSrnآ.fNFnl.aرϜ n^./. EJo%mGn/v[~//6Z/Ư22l//07Z/070%O0W]_0wS0~0 3p0 oo '0 װ [ G 0[{0wZ_ 17;Z?1Wc0J_1wo^11G1m1S1q 6mH1e11 6ɁL"'"/2#7#?2$G$O2%W%_2&g&o2'w'2((2))2**r%rA2-ײ-2.2//A./3/3.31-#0+-3/;s-C/K3-Ss/[.c.k73883993::3;;sq=B 3>>3??3@@4AA4B'B/4C7C?4DGDO4EWE_4F C !tG4HH4II4JJ4KK4LǴL4M״M4NN4OO4PF5QQ5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^5__5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwg6hh6ii6j6t4UjǶlǵln  p7qq7r'r/7sw MtO7uKw6vgwR pDY ͘v7z?uĀ `x;+7}wQsw{!TbMW`Ǧ%LaJb>R/% "rA)Dvh0q'jRP@l>0,"BD3?c O3 0d6DFDظ" "<$)J/< B ,;ê;Z 4L2B!b;?LcA @B`(A-jLC ΂FH lDhqjSC bQLQRTV]}Xe%.J0!b`"DaD)>Bx@#rP!CLMA A> 8P5ЉPKWU^喑IJ!36`n@Ċ YB1tL0hoݴ4`0wm_-"_y9`"5a9TRL .ł-0/-($ .5ғ]5ߜC>.88$Sm"}=jt+Im8p%Ń}2;.s=ƛa-;*Cv;ߞ~}?C!|җ&IDۛ|o顯4+ !$=, X,W@ ^`p8Aoz5A)TD:HBZ* X9!ZHC&gITbCD'Z?#.Y=•TDF]iT' F:f|gFlB YHCT" $)YIK^$%EGO~q,DHYJSS*YO@ ZP UBP>D)ZQ^F9Q~!HIZR)UJYR1LiZS9NySAPZTIURT>QTZU^YVU~aXZViUZVq\ZWy^W` [XUbX>d)[Y^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^v]~x[^Uz^|[_~_Z \` V`?)\a _9a!I\b)VYb1nZdյ 5*V̰! ,   #! "##$$%*)'*&(.**,/.12/2,04*1822483766987>39>49C;;<>>A?BCCCEFFIFIJKKMNNQNQRSSUVVYYWWWY[[[]^^a`^`_accceffihgkgikjjlmmqqnrnprrrtvvywy{zz|}~~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ: %I&MD8sɳϟ@ JѣH*]ʴӧPJJիXj5i"D8zD#GhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1EdIfD˘3S̹ɚ39hңMcFZe֟]Yveڵm3]Z7oж/ҽ7qǍVly'ti_מ6qwOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)rIx湥zJ 蠄&("裐FzVjR馜vZ*JꩨYxj*묋J뭸ikk*,dVV[a6+%MAD#>vkY=-fbA6`#G*$!6 XG#M`C$=nJ'`>" 2R1_p&1Ǽ,q <2+7#W@\q ;s8_ l"$kGH$G);-dp2'u͖HLjxĉ66x|6ٕq|oǍms Є }Yx}>:d\BDzqW;hK{5)[ f m淅L*|dlII;3,},훉.A4>/dbPB .8"daAP N`8Ch1%lH zA+ܞ'u B SFl,ZWa#.0HN&}K)gXmL?+\SW1`yXHN P-0Ѓ  HYB 0@z(JqJ^%+rtGR#cY,7Y vz#NC!zS4!gͫ`·0.P8 eI |b}D!q@ 1$b`YW ,X2ځ/5Pmosłf5.6nl(K2}f1t>PF5KBAӕWL[M0CXq㼲XZwj>5b`MvxnHnIY\ƽ4,n Gz@hh5,w osy΢}fG`AvrjwƳ;8@(pWU- š$_JFL[~ǙE !_dY?;еtĠ׫U^<7$\e{D@`@Z s%cBT=2_)4K[M5G#?q~vRkw2F'A\2G0d(tVj!R>5@q5'P:qG0zw:vb2pV(@s1SHG*s`U! F=%FLd;h=9uflWFa*.0 P<1\P:7PF"LZ8\á\!|xf7wc/=GPK:v@Ta&ԇG5|Nt=Sj9rvtӍo3:|ljb15HBREj(>?xBho(h7n#pTrWo1y7rz1xGf+FSjvwV|(;*WF$54^$Kfs00vp2e3ɸxc'Hzŋf7}pfufF>!uCpBfA>3p_ӗRmQ?Zyg1&ldaPfa&cSV'sJWLm]TLyk]81d!$RGWG;qCD+r{+ygIWS38X`2{ /]}Mz-TN=`@2N$5"/k0b/\pkP@R>㟀9WViف?<%\.cXQ3e4labp0TCcP[s0P{zVef4p؂?puW`v7]ٖGE+d 7&PKWgz=sTx(kM9>aD]COzjU35PVTZjB _RK V:dO1Spp;b3$0(9$| mH3!3=Wx+(K73[0uC|qrG8Z}\/ 4tJ0Sh55%pX5C;MVS#?'32;*PSO!VLa_%*55]{*5q~ҩ#WyM $ ]Y kSpb0Xpu#U:[efa6H3H5YX/ڬJ-v; a5v=pvpFcwփw&m۲\ =garp\II`jptZb.\srNO;vpa;CvaVK+$}ws.M9s=r'S=8ӻ^û;hsK9ɂpk{K-,٧L0Kg,1"j=HgP[S9oIc0rrk u؋[S(4c0b:--ִ½OS?. ,=`W-\ . b%nL%r)<.&RF!V:<D|HJLNPRD#N%. k9boݦ!` :4Jq(A:`h۸y2 V=pz@OEp.G>Ie_`\ Ms%3 GfW69qns.u(̈Dad6™s wExyedgʝu1QpN@錰9 pB|'74ee#w73^d7Uܿ0 n!Q9n6{E]*8v`Ml3qT%!cآ~R~?r3ĥ\8+n)aJ O PNYS:O\ kXyyAO05~ЙuU ~uC?:@\ b?P=4Qߊ^ jj )6z?eg?>y|o_?}o?ԐҼMc_o:!պoϊß5 ȯOſ*ֿ߽?/_@m?O$XA .dC%Bd'#5n#E>zLdD)UdK1eΤYM9ufŋ#%1ў>.eSQNZժNEnzb"aŎ%[Yiծe[qΥ[]y_nkaK^ecȑ%O\ęgСE&] fͩ1kرe.Zmioƍ[pɕ/g޼)⪏;^uաG<=wŏ{bկg=L_}J?یTpA=+kpB +0!I ;C JC8 DSd0CBDcqFXLqG{Fp F4؀LtI([S21&"2J,!2BSJ&@¬j@Z F0sK8iJľ͇PaOɅĎNp&: BHCNH#KOhA 5x)VJ 8ڃD J$0$u։=P+0m \'P(8Ehw-N+ ROA;~zǻ N`@aq+BòE,Ak;A꧃s]!WBF*( BDi 'Bo`* yAE o ?ҖlX@A"|8㩎=aJ& ,  6H4AG8 Á'X@\GB'#h$ ƣ0 I$6CA`uGLAT .xB@rpM8#*jŃC .Bs#&#$*8%y$KBvu3 OID=cD9{[BzI lƈtd˃V@ ́BPXW8A d UDH1tt@n0@@H yoY,0@9SF PM$ ȅLA\ #\`8!|X"vp 3(CPAj" `j8J `PcY=]2pJWsUvHa= k*) Udp  İ +kӥQWUT!:N@(YMm}\0O)qRuAlcD) Ъ4ۃVoA؆Һ^W;A!UU oF1mOݟў7UMR{#vDZe1˝6Đm*MH9o|?@H =ȌdMN'ĐB^Hq B[Nы'P )Svkf$ ]bPmel l~F}&toЋfp-@7ZғΣShJgZӣtw"iPZ4 E}jT[DjXzR$buLqn@dk`׊RnK`@`6+ӦAV]V+ @p6}`_{>.2 =noόn|Z/b7Bmy"#`"Ёh=H(8@Gؿ;A 7ወ)888Rݳ @H@ @H :\B0K?@ ˸>KXoIB("dB7l'̕p:1pR@\)z3|EHC{CH$8>y.y; ʻ;`< 6=:{;?p=!G@;xIl=9=;ysŢIb{•x=΋tJ\ȾC6qʢlKk 58IJeSsK?JJ|+3ZȽ<KHl,tLtȴɼLL9Lά.\LLє<͚L.lS45לM(MyMldMMLLZ#LxLJ|N`ЄND DNx%NN+O4dlOXϏ;O΀O٤O :O PP-P=PMP]PmP}PP P P P P PPP=ЋO=Q}]Q%}QQ-Q݉l RR#U%=R&u "5&R.YR+U'e+RMRZ[R. ӄS3 23]45}uRQS8 6S=S@*@-TkOB5TFD]!EFm@T(K%NLu=`JjijNOm#p-RT=Ue(9`Q9d!j#!%іXrcZ}[5(]͙ 뙟i(h(5r('rx3hKȁ`!Cj]V;qGXbhz]07[hhGx(=)@4hA)X$؄.؂)q(@@Gprh,prŸ'`򠵩-IEN*af #Gh+?%%$ZXBHӁ&!&uǫ=Z +[.(XX:?(XJ&)pBǿ5z")@ sXB œ7d RZ%1*@P,ƢUq7,M!)ZˁX8BxM?p;qWX1l0IM0!G8|UES"Klr29ߏ_N 233nG5:u9 ;s ?u `H aR>a+MaR~@aQn3fv 8C6BUmDU&X^ )Ns.*1 UZi#~Dp!%l,v 1! +&x.*2 18&Kd?`fC`)P41(.G* =؂EQB@`VXG*`/n.?8CP @,ȕ ;ʆ0. Q\~;(]@XC+Xe0LlC[BNb"x2A&.2;5`-8`5_8,u 82;`V4oBY9EX?H{i@謆?j\xy=’=`a-N ;XBdA]>D(sH:X̍5g!41E1X1,=K`B0N~>?3lC;4nVJ7U.+;D0m=zT(51`85-tBx]J91fI8hBH4= ;V)&J:zs듁kc5`8j;(bjY!:͒=+G8Gov,@::pDVni>c-;AVу$=8C䔽N9CTI% `h6:BX:,#1+f &j#؃%إ+(*#P *,()(=8BD^];)~)HDك&qc1ټv-%98.R-6ق-:X!=0A) p!p9X^gc H1a1܂0aΛT#!T)&, .`EhQAH&1Vz(?#*1@R:p(@nsy 0on>[N480XZ+qnFe:$A8, 8|Jp.c2o0c ` +qcw+p8)@d #q6>~8p7 @5g,SN#-o)8.P,0BC %(!G0q,`#=B8&H7He.@?DvpAH]7CHenDh)jBfP+H7(E`Eo8h[Ccrej14%H%4HFtvgD0nfovGqi6!)%!XCxAGHVx>v7x>._{5<-/4(wu! P&@/sJv&Covg%59Q2Α=@ytwZxˣDG g0]zǠ#9'ȠG(R@)a12b:13ʖLIhEY+ذbǒ-k,ڴjײ'rҭk.޼Il;)rGMNibJ;rx=d=SHh!ćKpn(ȡ:F(cC#hJׁ]ɟM5 zY LH2T &,9IBCۏ4g, ;CpyNIBulքSXV0Dq Τ /YqEc'LaW("G4KA@cфv$r vxm M#$Xc\!cGiDL,2P(TM,1Mlb! 䆚b1IbUʑ9u-!5yC8NFGE AW\aDN.U(H)FLwR01#eYGH'9rD~),:Xo5-W'!"IH$E2akW"QvUq!Y#1"EqP"oGc֙9zBiHkB4N-cuZ&rR\ SYu $ALlJb"F}vPv#F!]\߄1ozx `2-FHL4HGrbcDb׫1%`k?E.g]dXz@Qz o\q4j4y# /#K'FC@D}v彪!R_*R!F \aŖUu!5DknAJHxlW]SHGLwpkGTr{41E!>rl?7+(@`-E"""8sƐ,A@ <EN>z/ `ICti0B љ(L{ PEt&0BGPgnAF!w ! ULz!H!tP6z!q]a;rH3#t!I$ I-ر/׶F"!`&EaCp1$lG?0 I`$EPi.#a#>HA]I b-L+A8%tB@B,y4PG bsaMbD2$|E #YD"&4M'A)%l< aahY1[H ^] 8Ph=#/UĄMg+GBӝ PX@ L8#5`a0Dp)0A"jA?5 KfdL`^(d87R6! WeD,Q("  #VʹdS5Z67$'#Pa3X⽴Yd¾bjAO:ͦKsԲ9Ιf.FP!Auea"!T^3[*) js+C,FZO0#,2#ě7YlD{wB @!C1( -pPCw:q1\8Oo;c9S򕳼.9cN6e>9Ѓe|.%Ʌ3N:ԻMJzԳs^ԩnujaf?;ӮC+Es.g1ҽ4;\~;/?<3<#/S~ws/}8ܮJ?%s/??)+^}x?_ş\]ߧ. 6>`_[h߾ _B v~  rY >^" Ơ ΠI Z` ] \$@Ѡ!&!`Z _ E `Q a!݁ay!a2a `R!!͝pYe,""&=#>&6!#( Z&BIa#!"$"Ģ"1B#.HA ѵ]*"11 !A,,^$A$Rc%Z"5#(n\ pAA%'֑ ]I # B#cDc A,#dК%\# 1J$5$A^cYdY@!7&ޙI!aDADD# TA|ғm2? 0"VQ 0L%MF:̟LUh\5p`%1A,ZD@B$b& $L$BMcY؁8 OO$Ma&̓#D@ 84!Ԋ ,Be:Φx!di!BXE$@4e#dc"AlA"BL[2HbyAAdMb#[Nf^"g &dA"pA: . :BAFA##dT" @Dnޏ?iUu D0%%-bElA# 5# ^-DƔ]y(KF dne6'gjNcbrrg,A('r$qci0XA%-,KDei +5^ D!0!(|)6jcޑjYF˒2zcy kIZ-&EYAdp! 4 A#A79BH' n+,j|⧦^r 䁨x NAG-} aaAcATBAr]`,USmvʮlQEU*TUAve`!LYm@&)f݉A`e!Հ.m*QlA\zhJR#,ƭܦԥEfjfP>)߉$=>! 'B!Z^-K#@n5o ^)ͭNmXO0:.}e-).^.&oN.X.7ҮO f%Z^Cp/0 /El֣9#o/M+/ٹoH0|lO0OfW00^0dlu0Ͷ ) Z % 0N޲^k !E'aZ=1C}*)pgo1w] WKof1}1㢱1DZ+O K1o]ۜ 2!rq^2#7#?2!2Yq-2$_2&g&kc&2((- _ %o(*#K](2+Dz,ry2-.r1/0s2Z21'2/ԕ33G4ONA35g6os:b378583:333:3<2;;dz=(3P 0@@4AA]y`C?4DGDO4EWE_4FgFo4GwG4HH4II4JJ4KK4LF!\܁N4OONׁP5Qu5PR5RR/uSS+uTTuUUuVVuWW uXY5ZZ5[[5\ǵ\5]׵[CMc.#Ȣ_5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwgvat]Dii6jj6kk6lǶl6m׶m6nn6oo6pp7qq϶h'r/7s7s?7tGtO7uWu_7vgvo7www7xx7yy7zwrz7{{7|7@|׷}7~~W7}778'/xy8?8GO@;8_8gox"28G8x868׸߸88ykYl'ۘw8?9/|^ŕG9w@3 999 E9˹B`{M' |K $%ˑZG97 PL {[M;oz H:-'z\\ze:s# ։zۅ_ߪ:[w@?#:{r:ݯz];9ߴ?+; {w;S̢"Sݵg;ӅߠL} yQ 2ŲO{7!h  $ D{Ցv t٘Bߤ L X7 ; Z,.˰ gCP @Iۤ WZ XiஏY  < Ҳ@ʿE_=#8ti3;}Y$ k̀ Ć1t@QBE==Bǣ !lT ]^}&JN3AȔ@WD@y$ĔG8Jc5#I4F /V"B\ݓM<'MCygG¤yt*0z|% -CX+^PGB â \ҡl8a:|*f@\XmC^m6_mD8;zC~@!.(ሓH"^HP5ᄖdX!*| \!5,oAO TMuU_]%\DZDEIGր-AHL%5}))\@(lV%ai\^jaNH@ FtOQv]X^Nm\bRiHT!$.ڌ$vHRaOQXUP!NԨUh*R\"U8B'>QX^c2@"ID1 턋8q􂹖M&o !G;i`]F=WhGRHKlPHG>C"=!Szb>r"YJS)Y= 12,i90e(Xl.yiAUک"ZTfY`\  *YMbŘ6 f"' q zf7Nws/<2bh{v=9cAPZTI TDQTZU^Ya"ϝ~aG QVi-Z2fu\WU\ͩWWiFWaX>MPX^f9Y~hI[ZӞUjYZ׾li[[ny[p[\Ur\>ѕt[]^v]~lx[ޓ׼U?ѻ^W|K}}_ `2p:Ԃ%\a ˒a-,b&FYb1i\c9ycA\d#IVd'?Q\e+_%Uq-w̏r 1a=sټכΛ]s9s=s ]Aёr#DFyʅr/qec\7ysAЉ^tIWҙt?QԩV=2g! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;<>>A?BCCCDFFIFIJKKMNNQNPRSSUVVYWY[[[]^^a`^`_accceefihgkfhjjjlmmqpnoqnrnprrstvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצPDl%JhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4Y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9S#=;T6fWIHƯU VRyHB@yܻ+VD 54Al:bVI0+NXI  71!7Y% /KL1LG\ Ϭ%^A@ pͨ0UJSXI#$KH!K&3-wdp/#3]-ke_5xf6|q|o]ܠG4avc6d%5dFBcNq2.nJY[d:Yel5|GTpeG&Y:GnʐpiC %h"a!k] Np*@ Ct^A!' v9I@qș BLwo Hp4[\@ 8 z"c@$p$A$Ђ02_% VB$P{U"?)HI";@u`B&iA PPk~/@$% p35hA z0ߑ 8 TP K%zk /Җ!Ra+n7H-@<X 譖G;@G XV jŕ>L+[ܒ YJ`(P@l*8ni9I(g;h= 11- 19 %DBUt@Hga{ u 4/A\0}Y3(7 Ip4bQ;[ ` D֕ :[oABjJb{,Z@Y+ᴷa#6˪FVa*b@4y}+*,@K AH׃ (0  0Y< @H-inJ +r)tJO+cY,6Y en y^~ S4AfիX?] Pt,hT@Vvd1ĵw9#n@$fǥ`e9[)= 8Ft[٭ ˴Mȕ,4  W`8,\ ~ tX_6 d5K ố=mn7>_n#UYvBPde]!"y5Kp0Vİ vmd FXuٍoyL.d$Pf,Wr@Xՙtaf9>_2b"AjdD ў{c$[dcO%uj[A4SȸjLcq%N{}iPb7Yz'2q'|V (lU_g h"8~")wys]3N bxf0Vu-&#m%S{T;;6 ݽMvln@öf,lӸW [X)5;{pAUԳd\Un{0ɂʩY_ O`'x(X@X[X.&s]ܙ|k !,j`@uvuTSN7,eϾ{wD@`iX<Ʈ$ll]ǝ*Az 8vW9PV^GAZ#as.WA!aC4,g~pr"LRl0$)T 6.b{"7qUNW 325w}Ln&ʗ9Sf }DXG%d_~g{r'ycw`Er.WW1O4G rj!s>U;`q4P'@:5qG/fV G3qF0'^@773(d!rT -s 7W6F=UvLfY=XRq5E؊6 .h*0jѳN1a6@.WzZH9ÅsErsqQl46/=2eHM}xdQ20oPv ' JWT?U{E9tcb6 wp냃lfIRjC@p8vX^7n #pT-3v5dAzpj3>DwA +ВÇx=0;*VrަO0{h0Y ?`K&Bd9WhysC2U5h+/V~bwP 9xط. ueVؖC"Xw;t@`K5'fC)wqf]00c&"\r0e1Tl_oEma?2y0leAW%E&wF5^%tM7ksm^SIk8Ϧ1dxS|7|!pg]Wgx9?B B  p˜@|tz5JIjbEѷ~8;BtP]KO."ijUj` R<:WVSi0IEuX`\D3])`H\ ]cЕ1 {350\?1 S%Gf[6l|?ouW@t:]yyTk6) cOu3GV. gvGHt{A;cNXXjSed׋}Ń=v׻,/dѵh8{1"jD׵U778-ea7g)3>>>ؒkk b@;c b\ L^;-t7rW;!”.+=pW,\ -002$2=!^rj5`fS>G$#v:%`:U,Aqho;#o`טcM=#8腎1d.̐N(ΘD;y|6yGx%xz%ꁎ4W3о^ 6y\)=W' .gsrW3QoQWJyS\% kd0S=#9n6c)^N Z]*8t`M3;cWAU\qk.q7@p,6s!Qn!;3\ʅҝb OgCWNYd5<";Ut% eP#t)LD@Q*j?2*?jŦRTiFH#:U T)fjᄊ ZpH(-Ū'_ iH#I c+bxé<`#GTYtT1 s*&(4 #M󘢉4,j)B?~hAo+d`."(:$"7"M+X0,$&`sF]+C I78٢7AqEhJnhϕDB 9(X܊ lIC7MwlلHy+F\XtHZb+WHTpbDZPJ5p(jBN <&v\c XWvH^[+ᄂ-ql(G*ibH袐P!1DȣnBehEQ'  ֶkA 1=YkܷC:dN;i‡{7Vi1F$_,d;95XִUM1WVD rp-H$qcy>pCp$Ckch, Dlnȃ5BB`{EE31BgI/"yt-fP㹰Id" 1TҩPG֏S҈([l8Z.mJ}G[+6llhG)Vͱ}mlۄzv8yLu6}nl1Fw]hqQN˻luc)d lnW |C @jpg TKz$#'XU+߲F m.r'fyQr:!yo~rKq 9t JBN-H@N!T$:viZJ=5X8{ߴDDAx@iD![_d >p|U?9T $$6wS$VEDW@5F_p'?=zI #Wк1+`WxCj4r ._EX#A G$:FrzT )p18?< P9x Ё{? t;P) ˆ4飡`T< # H+X!iA ۼ Ҹ@r; k ̱>R+@(q$P8bZʫ! ]!H6LC?9 9$) :`:m C8C,CH/ C( =5*!;!L<@:"A۝Xâi@ĬY1, 1 CI`y;<=D(pz(\=V,W$y1?ZFŰH19:@:@Ѿ+.yB@<((!ͳ)˃@l<Ⱦ׳F4 ltx@>9@H.: ?IhpJ07yQ PK|fAs 9 (BG~<@SJ0qi4:I LkģTD@DmԕXCuATTATKTTMԏTO UxUSݓB-H=U4UVUW}UOUYTZUKU\uT;\MKI=_^F-V4lN1DV-̱H_sVVxh/V֏@*ie}~u9Ya\sayW#W0"iY),Vj(Eh&@`eȁ*JX&H> X;ٟꒂx' p#' 2 )84I+̗M6:o-]B#J8)Jh .})X&ȢH"Jvڍ). h\#J`+u2z2-@(U&CX`]8-Ւ0WIďI;ڣ00ي;ZZM&^)5);=B") @h'"D7F_#.J.T^qu͈а!ihB@`1Y(?h +:X Y1x^mc BJPBP_F ^@kUTVV=>J Uc ]U\;NMoռXV*;+bb.nQ/ [b '#4Ns0U ]y$iC3X<962q%_k :h+ǘ8dQ$,>1XLޒȃ&h6spPcE6BhSiBEd#h7&<(%)3+䋠)Hd-,0" |ʼnp7 a_dJN.x ?8EH?Dmd .ؠ@fbgC +He?o~ #ƏP%k#41<*Ԭ4Fx&P:aBx h7:fPEiHF ?H?H5ݰq<:΃=Xii:QYC`\y>0~i\Q杍A]y7ڂ.4`f@BF=?Ю17HEV4Niֈ?HE0+:IxK\afCP8&EP1`B؃Bh88j1@4x)4mEަVnRh:8N&`Wpvr-w -8ZY:sWDA#%,` 0#J #H=Fzr=/`W 87(7?B+S(H #sJ`#`#*x#Y68s&p:W{,>mns-r)P.r,0C#PBwgJwO5-u?4<?`+wEf4׻ov PtH`a򊀂7!PP& @t#:XF@$gf&ofio) WBm#89=haQ!~1Os  pJo1Xyy1u@Z7U:HZ9($$9JvIm0V*MR#~*:򧐐?0s0QT)4aKȑI*I)&A&2JnHsQ9GrSR# S)a#.+5AODb qʔ$&iHW|$KIMrE1pQt1˧MbSI:9x[E{0 FdD+]*5r'ƒ[t1bEFx~S&rMsJJ`d2G81P͛$D9ڷs;Ǔ/=O#I׳o=%5Q)G9r1MXaEtF4F}(dDE1_Hcea!UMP2bF9U8UZi0a4nEb@eVH%ZYl;GS`Q=u"hfV^dQea1HVH2UI!%D􇡕1FE$sgґ#X FTE!MF$%Y !xM#GLPFBņjq5\8D!!$bADbQN<5b 9!ljFJ&1Ai0X/nFGLD"nn-!sRhSGGɐQ0%Ŧq2-y735W~"I$I%EZ=2ĭFaP(aNH!Y1- {FՈAl0qLn&{!eiD&#Iш"1"[RT0oFuIu080!BaHPh ,ehjeW VݚY~G"CQ09]R=#n<UD$R!d,ER}~l!PuPWJ!RH!UHYiń[($(DAgME?-22*14_!C)i@ )m T(l:QNŒ) LgJ(0 "<4a X%#QVc-r>8+  8!2$CЈ?o0D29)(!h P*#p < ]0D$(@*MA9"F;B$1 F#Po4(\} ~@)`:B#)*ptJJ&8B D$+R DIVbB1o*p-0[!,27: !Iv !HT(J?H $\#cLA7X#!ХXaB< 4r!\P?7SF9b aTAN\%bh $"i jD؀\[o)@@p21GD#\%3bQ]lH4adr8"Kk0hMGB҄V Gl{M+LMG90.0;0L!T,7&R MH,44aEr^;R#YzW VщX…$T)Osp)%ݡE(0a 1p04LEU1dL!F43(8pd(4)u/ MX(DdG\!ZК[# 50 M8˜pXuF *%JWHBOD|c)[+P7[&L l54 J&ΏcKl#AmX ~ s-i&D6m~e^ʱl^A I#Kig~Nck'IOwldgv#;^A-yڿvֽ|eF7i ZFmts>/>ӏ~?o?LFȟ?_~m> FN V_{$|,"` ֠ ` Ο`NJjRLu2  >!FN!V^!fn^Eͽa%w4\q!ơ!֡ޡ_xy!ߙ{,a ""&"."#6# a R !!>"'v"'(F"x!"j ߡw )J!(΢"..)~*/G%% ,&B,F.63>#4rb/zG0nV50Z1G&D1zS8#D~zAd֣G~$H$<#5#d@~@~7Ĥ@zAܒ#;c 1cD$cL!#>:ƠHFTN%.:_\9~cm}4v5~G6 #wt$AaRUNKTd^#4# #cS~#H$T_#]Jd܁h%c8R{ \R%gvgbàhm%٥AXrXƌYZK%NcB0pAz<|A4p[RSȁDBݥ8t!AHBvAH%$#BLZ,A>*R|F[g(&礕yAVJbW&lRJ&v|Ed8GDZBQQ"hAV{NXHp(@_#\lN,up#,mVhr5P,HYq5BH 0A,Aq1) v:(yτ"JLYjzԦtA_Ot9ԟ%lA$` <"4%~p:k2z"AXA>hLhX#NS*az>kY]K( AQ W",#Tf:2Du"N.XL !*d̩ґ % O"FOu*"xl>/H䭁bI%.Ymz'0d'u\zMA')_)B[A#SEj0eM~(jv8ViA!j!D)!LLlB\jV|,0 5tIu#EW^[L܁DEL"*2ɺi̟=p61RW8$c-iiwnrIkLJAֽF%,5_ ױWni?005.Av!M!gz$PB<[ObQ6\)YIB"ANŸ\M-Ǧbg$>DZ,4ײ-wb o)f_c-#8n2#*$5>ʌA.#4NzPBe0]L]-39a..\/k/kh0B"U6f^sSN` :J_K$< *sE#xa,A_4\97C9_^# k>7R ec3H_AG'9PA!$CǴLcaDpG_4ve2δO4P3Hm tP?5TGMvXpI5XSSv`5˘hu ru {uM5\-loy (;2RrD5``6aa6b'b/6c7_kVQ굵 G:6gwg6hh6iiv)W kkRN&f)նm6nu6_6pp7qoӌor/7s7sq[csWu_7v+wtGrgw7xmwM7xz7{yGw|7}wߙN7ɩ%w78'xsw+^?8Gu38J8g6Smo8/8^{8ǸoV܋8縎u/8N9'/?9GxӦG_9O@n'_99j9`9ǹ9׹9繞99::'/:7?z!A\:go:_|:Aw:::zӺ:z뺧;;'/;7?;G/;sQ7m&V$&w;;;;;ǻ;׻;绾;O<<'/<7?>/>7㏹?O>WZ[>go>1=> |F~觾|7a >~ʳ Ԁ>>??π 4k7?k39Ws `D#w7v[R?!d^ @|͕r׿}% ED%I S aB 6tbD VxcF9vdH#I4yeJ+YtfL+!IbN;y|F#4zT'řK6ujTSVzc͛HvPRС~5kT)Vkٶun\p#iyoވa XVo`i6|qbŋUY]uL0eʄwth-LVͫZƘ^Σi׶}w\ )40BSl2ɳ\k}{v-F{8:VPaC$qu8qpɍ6b.T vאzC 4#x7=+4P8fkH=jZ/?2ʐPAHH75B .=p'BCCܒ.ѢJΐHc (x:|&`OL.7h G*<12qaLlAF튃$ *;+)1*C% (Hh 1p ,+ .dIɿC0u ):?"dE# 5` lL(+BP(, NP?j(*T(!JP'DlV$ @TD8Q@(AD*"* "1ԁH@ V8)6H #Nr-I  8!5. D ,h$-I#0Xmk-]Ho Ƃ_t(AN7 PأqD _\ (AB~!p! %8½H0F8۝~PU'S V )4M A @18YNB!xu؂*-7C༄Ё ^XD#&zD#a' ؉*\ F4`+@`SA b +AT !@tc_J :僮DA9J 1-D&0bhDE9#JqbA$@]TW$T!q@  GDoߡ4΍ I\P!AP,G1ApA Ń$R!"Qlg(^*D!R] L.j@ J˙k;A q 18[% uŖ»~$0|6Bv@y(#J֓F@& T04 =O1LdT`q L %B )<ԭ[J! bH{b- qkf`C փ`^dOT :IL(  z؀ZS0XRE qO…GT $}b8jOr-@N`f(t$KBA 40AVĀG0 [Qҹ^ڪ o|È4"iD8b*p*Sper+IzqQt2&! NR|f撸".\x1JH{J_଄ 1Xt+,yYY*!> LO)+vy\F7VPD=Vy"/OFʑc&_uWe.)Ir\T~r%'iʘ\g;KS1e9'|gC:[{[깕 0 3JhK_C]9iOԡI]jS:H#jWֱi]k[K4yk]lc^zlg ; wkk_3uQs'3jc_\hqݗf@ɝnw]o{o ^p Wp?)^q_9q!I^r)WYrg/smyysAzL>t$EGҙ7Q'ӥ^SY:ֵsa9^i79q8^wyw _xWx?)_y_9y-{IїF<}Y_ֿ^ɫ%{~K;{>;o#|_4G;|?A|_-}_~W~_O͏ O#&/2P;>OGJySVi_PgkosPw{P P  # P   N ǐ  ֐ PPݎPNPQ Q#Q'+/3Q 6ڧ/! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;<>>A?BCCCEFFIFIJKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgkfhjjjlmmqqnrnprrrtvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ91h͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצLD,IhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`He!A49˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n312T6fGIHƯQ  RRyHB@yܻ+R҄ 64Al:bFI0+NH  31!7% /KL1LG\ Ϭ%^A@ pͨ0UJSH #$KH!K&3-wdp/#3֙]-ke_6x6|[9|oǽܠ{G4avc6d%5dFBcNq..nJY[d:Yel3Y5ÛSTpeG&Y:Gnΐpi!C %p a!k] Np*@ z 28 TE ?Cn B`r{V@ PW!e(Xy #$G"Y A(1`,~*܋q0HA-y F/?B4a]HCdF#~" .(P b = dЃ1danB*ԫ _Xօ=} A 84 [p@•/(nI,FH@oԠ0uTFqȕ`+acfAKX@|@%PW}e*1;( g<<չBL` (| <3:{۶Tt硪]fPSz6f7a[3ǻNwʌmikSh*=ؠ*jZ2*D\7J=dSu +մˇqtpP@ 5I@,Ռb2Ν׶Ȣ` t`km rz0eqL+-gyMxDe˅>k, U;@q4pP'@:qHr1y41bpPs3CH L17wM\(<a*. PAT;x:fp"}WPgIpd%rSqAl46k;s*(=,8 p__xxQ20oQ& KWTB{'E9ptb6067E8f9SUv=g`e+ 7n #T03v5dzpj4>0d;t'Zisx=w0;* WqݦO0w(~jR;(Ivs0sC2U5h+/~bpP 9И O|eVצC⃧;t@pKƕoriF o jf,IcSüv2>E^F6?m#;,ûa챵h8+x6[[5}8q@av9c[ ࣃ/걼 S0"V1;-t7Bk!uN,!,"y3~>%"A,2+WJl!/\"8>:߳T,!M\XZ\^`b9DC..O7Z^ ;^δ9f[tumJ1>6`fN $#v:%`:U~rjbo;i`јcMЕ:d1d~ˊ^&ɨD yp|yJzw|gӗNfF5RBs07)9|>v5c~.>d7֮0FN1ޕ{o5C^N8]@P~@ I3qNT&vR 0>n338+)a@ J fQp_Jw181R3O jXPy|AP`;/ڍj?@$2`S q^l@^ iRg~@]V_wQ>A}a_o̪MOoL/_/ߣÿO!?ǟԟoLį/ >/ $8QH.dC%NXE5nG!E$YI)Udb< ΤYӦ@Hnm3PDrм %$PcͥRE;]tOSPT@ɅNp&:BHS^dT1>H#8I])bx g`-y^@~t$`#@ztO _"NPM7@MR$H:b uI^:Gr;=WT8H{%mM#:9t\K#BP!k-OSHa/\Dy7 $"  }5&$є0.跗^7 9 GP\ VH{'ټFoVa`O9:. ³H >JE?J8<@Rxt7C@Xs@[僕uс?H(8Х້1BB/:;<;s:|{XÜ9'æC+ 1B,E/(pK?+ҌM0MCK s&\K&ά,$N|| iQN|NζNdOI3T7LONQO44O/a;OOOPED]PdPPpPP  QQM % =mQ Q̈)3QQQQQQ R!R"-R#=R$MR%]R&mR'}R(R)R*QJNRRR1 0E1=S(S.ES6 5mS83S;;h OS@5< @-TASSC]TTEeTFu5@TJTAyTLTKTPO UR3MEN-U8UUmUVmR}UX UYN}S[S5\%U\UP qK- IV$֌0SQQHWSdV$c992(kMl0Vvq7yQׅm &9!Wam} W(W"C+Qr(APtXmȁ%Jka!GX#؊P:hqI!:(.)P- j076Juș@əʄYYV.؂)1M,6;a @%w&x!Izډi"|a2 0?f?Hڙ: ][BH%zj4$܁.=(W3ĉI6Cp>BUHءD%`mבY`:pI=)%") @ 5-ȳq?؁@0E؁YՑ. !-QUr^ވXYX ́X(CX| IU_ZY}^PH^rB-JH$@33F)DJ<>59 M&Z- Tʖ`bnb8V/.Tcc4R5^cmScY `4}yY; ,W㐀#㟔c7Ec6㈐Rrd⥠&k4 IShe $,R. 18&uc>E~BX( 2H^IJ> <؂[CШזIx#`ᅠNd#H ȳ1^L~̊ s fi|:ྎt`*+`g0hD\b.cP790A;ƒcɾ4Ex&P:_Bb`7:fK0؞<&x^"i1V* (B8D@HV0Ii,899F&-v=0&c?^)"0 YB4P8cH `$4"8% LNLID!Zh a!JEH#!.jBfE*P@`e1B$h A H+92\ B`d5 XApJH"B`tB !ACAIJR#VH" B0Ds 4l#& BpQa^Q1@dL z72]8$TH\a%䕄|d i&1 JƸJ4+ x@E4r!\P?7SUfY)ӌJU29ҢHБb?"cH! B!bN\[`To))DfNr@(QCGHEd W"f3Y.z1 s&Li$iR[ VJpS]miw8P.0M$Ʉ)| eK0DIr!rB4'[&R_R#iH*z@$!"N4/0h-P`sr&@a,iJ$,NpPb("٘B@ahBg4$[,  moNidTd _ XdK~ ! &^1@?._hV0F >)zQ/t~)[:f^\-HH[&hU4 Hُ@?Nl#aPHl7 ~ ij™`Q@|x1RP ۸YӺgsͳО H$–j+R͝` bF!L;?w*`<&zmFϷsnb+{;Ϸ-w/}6͝q[ v])3#U;Y)S<^}pihnw]l[&u3H@>9Y69,l#ҁtӷ sR9ԣ.u\a=[k}e.c/u-[̃7pW_?</~}&xS<3wO{6yΓ?=Sz{ ׾Ӿ=Oz~g=/ՙ<6͞EP>sޯ~/??/sw??_-< FN VR!_Gy.  _ B_ ֠ `  `_ 6`af-Uu||`w FN!V^!fn!RaU؜ݚn`{(^x<_u!ơ!֡!!xy a|0ᾱ&"."#6#>"$fB^F'~ (")"Nx"by"|!)J("."/"*+Μ%^"emѢ$֢3>#4F'"xfYx w|#ԟ$\6&0### ڟ4#=֣=96cu0V!17v8R!$;p#_cYUzD=H$IʣR"acxh@!~؟E#-Q:cCS,9cPM0B"!#>5dI^%Vf.BteW] ̰dμdF|_$؟#H]R]_$N8 `dG#0B#$f#"Lc$]._Vd$#cZ{ih&i*b"AjXz YYZdLz# QG" ## ALSAEJݥ@_$ !ADBwAP$ "BLZ,>6%!}J[ei.(6礕zAcf Z~Kަ{F<M^DDZhSLB"V|N?Zp跄`4kk,ؖk,W,$Xq1BAD 0A,Aq1) J(zυu( $^ArPXbLNYN$lA •%0C%AqZ5z$D8)G8dKiX#8z'^q" H~(z#Ğ%&.kAA|'liw|hǟnA,2,"$! $BN^2Nf_-$h>kRIiȋ_{H $Q 0BL#}0+ɖlɲAc5d.ae?#eDA!|A!L!-`4Ml$kONYl$,2L# X,QNTY,0阉*%AЁ}w-fArΌ&DR&eA"L$sAQDq!d.4#l:.Ίv:OO.XH!kE˼!lOM Bi4S$(,^H\A&.w`+v<.F|x*p rAU"1~1$0eM_(4jw8ViA!j!\)!HBtֺE,ư c1tcbʌ&M?^>AplAT2"O إNB_l),SWDL.:)ixnsET4֤AEMB0 ._c:*l!~_BA#x*d3*::tƏ#hE! "h$׼a!< <*%_;d_Dj! 21s">!&2-FZE%eVfG"_5 QncT*n:bs 3<dz""w0sc4#wcn2$;no.N 0 4GTVe;NfY4%"#MO2E4-P$G5Qg!Hߩt@G'5TGT =w>%I#7I/2N5XXk_UsURV?X5\GuYoYU;5>w/>7'?O>W~Ggo>臾菾~>>ꧾsޯ~[E<,mþΣ6mO>9KЀ ,?7??GO?W7? ̀c??@FtLЁ ,xs.h??  F"4X% 6tbD9xcF9vdH#I4yeJ+YtfL3i^tF$;y3"$3&z)O56ujTSVzGJlLl؆Bj4*ѥYٶun\s5m^# 5ĵu 6|qbŋSB5pd} xVr9wt–[: 9sꯔIĬfѳi׶}-CHd.|i/l@Ywr˙7?IПByThJB?>Q̑< ڨl|Zٷw^nGNJ*n(4"ʲ(Do7C'Fdpd±T +*7@+?ϧHj=\|ab>K\Ё+ÆBqt; qtP$zc`: {" :X6|#1N d1b77hB Jc)@ (袑Sr>&O;VG"a$ H(.bH:.Ơ$1~L (Xh 1t 5)1 .܉ˋID1H-P:.?p= ad0cZteNNO J@a*HدTJxJ@J@TIPaHa.DQ@(AC("( "сH@ V8a)6 $AP AV!5. D ,`$-IC0Uu>m=_ϱ<`#H,J!8^8aV!J :D=@ qaɟ7z8aQX*B((q(!J4(Cg.hd] D4c <(c8&!$ 4(IzK0ܘܴ61Px< ֛KՆdW b($m ([N56XP .$G0 @'KJ jH.`5AL y)D XuQ xmz0KB 1~@C[ÀD8\i/P'M` [^.1N!UalxҾJiSz6mYjWֱi]k[F_]lc[ؑfJQlg?9]mk_ۆﶹmog61 1V\P^f4Oݞ| ^p Wp?)^q_9q!I^r)WYr1i^s9ys?tTwҙJ;Qԩ^ZYwҵuS_Ս>v7gW;Ӿvo;>wϼw׻w _xWx?)_y_9yI_zӟWYo|}ii}yn}9~Ϯ7lZ~?W~w{~ɯ~~_P Pd"P+p.O7:C0FO0RP[0^Og0js0vP P  P  P 0 /O ǰ ' 0֐  ߰P0OQ#Q'+/3Q7;?CQGKgN@=! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;<>>A?BCCCDFFIFIJKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgjfhjjjlmmqpnoqnrnprrstvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SB:9٨͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`Ie%I4y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n392d6fgHƯY 0 ZbzHB@zܻ+Z 68Al;bf0+Nh  ;1!7% /KL1P1H` Ϭ%bA@ ͨ0UJSh#$[H!K&3-wdp/#3֙]-ke_6x6|[9|oǽܠ{G8avc6d%5dFBcNq6.nJY[d:YelY5ÛSTpeG&Y:Gnΐ j,!C %p$a!k] Np+` v^EA' xIDr B Lwp Hp8[]^@ 8L|Bd@$%  A$ P2% ZB$`{YB@)HMB<@w`C! 'j PPsЯ@(% =6p |@ߑ 8 TP K%zk /Җ!Ra+n7I-@=X@ 譖G;@H Xf  jh*fZ@]8-Zgl$qP 9.RU sQx{c\#dO[@c$syK,j 4@vi. `_; a fP "o89dqv6 & JZi.6 WE[; 8৓؞x 8&VK8M$8j *4(2pP> c2^劺 +@u(dீ@ L (@L+E7+52,>PRQZ8>Ȋ\myJ|pX5t$ vV{f PCK K+_Ų8P8 ei xb%!q@ &9, JI=pSn]Yଆ_hdI9'/V!ȡfN;@H;H- Xgߍi'nxvϜsDz+Ᏽ pb8+ >8sY%%H;8Dm K\IvٍoyM.d&PflgrŘՙ!if9>`2d"A@sod l`D"Iͮ+f TpK3WiO 5[&KQ$R[^2$,u,Vq4Eo؀Xn4#ubfx'g'^X|Rէ[U&Ʒճ19 ۚ:uSf[d{O_1D[yPT!Qϒq!T&KhlX*}_>,hU;Pq4Q'@:%qGr1z41bq`s3cH!L=pyec* _3vcm1>17gM\3(<a*.0 P=t=x:#fpB}wP.W` Y\#<Mcjփ;ǂ3fhW"x5eiXNO%T7Q4,SHG:8,fC3;kcxRĉn3UjC>pvx^pz0JS;c0hj3>Px>u)Zitx=x0;* Wq޶O0yH~jR=8Js0sC2U5h+06~cP 9Ӹ ׉O|fVؖCѐ7;tA`Kǥorjf Гp' jf.i=j!ѕnl;-G!X4`N¸.pFfreQ#3jcVuPsUYRdC SV@t6lᔴF;lCi|;8,opg]gt9?R ЕR /A |u|5Dѕ2z0/ ]|*y.UN>P`2N4/k0b/]a%3 ^h3qpG9<%].dYQYp]DS]'8`H]@]cecp@QCd`[s0Pz{tfEnAˇ,#W'uP]U?YE8\`K1'z;Tvh N`q6z@jWdOW9U37נQVdZ%.p eNg.q%11QPrIj n;5j++FKmJ3@_š% ڸ1C[ť0u7iKgKQzPjg:7/OP/Ph5%pXXC;QVP#@2 3t[lT&' ,5k0z4 q$Ҫ1JI~N "@]YUlSY QNss#w2>U^Gf}?m%(҂+vit cjU7dfa7ci۾ >><{d EKd0bg̎_RMw.ȿX="B"+>Wq8.] .2<3/">a"rj F}H,AJPRL N=XZxQq\b=S٧Ędl3mn=t] ־v~!׀]؆},A؈؎Ьp,א}ٍ٘!ؚ٠}zOtc>0۲}Ҥm]@.@6.{0PcIۤc.s9}ҔMc]z-KTq06dAj8=V6! ]v1 0D>D;@`u;u W=d Vd1~m ]p8=Pd9`r Ok#Cw0X%.JY3  6:Lqta7l 0+Cj&^9CE O!Q C3O<`>-`jvP^ܶ!` ;3Kq(A;`g6!H2jS#_@Oa莮>n@.3x\F:]]sNnC@`NG1qjId7 gHT+WW.p~6qdA !Aqj&h\C);W(C>pW3*AapoJys\& kd0S!9_I^.Za*8u`Mc;GDu\rk.o7@@/6Ro;S\<ҝc On nY$_Jw1ވ8X:? <kX`y|թBP#`;/ڍj@@$2Y?pAlᏠ_ i h'E?2;_xQ>o\_̰խ?O_L/ſo!??OO?`ؿ/ݟq_ /y $XP#=,-dC%NXE5nG!E$YI)Ud%IzY&MInDOA%ZQI.e*4̝QJgSYnWaf|ZlMge[qΥYӚ][_&\ݼxVkcȑ%O Sf⼋6gСE'EtTΣUfڵҧemܹuo'^qɕ/gsѥO^uٵ<ۻAGu^'_ݿ{wB- 4@; P@LA#L 3pCB0pDK4AK[tESTq3aF qƝDG tmGmQH$T2"%rJt#rK.ʁrL2t4C J3tM4MلNH;UtQ. L'etRJtT1HW ɧt)=9*&JS ЉPaVHɅDNp(':!CHCUd,WPC@ic-bȀ(=hġGT6Yt\֬fC"`ȇ 'PH5 #_N 5r_*DՃE@pao- d.$ЎI-SKB -QÉ)j\ؑ.ꀃWKc;D]*Q(!89qCNHcKvϝd CH9 +0wCp"[GԘs{ujw)Aޅ|ՑVVal nKuX&AT;f|PApGBo>;0rHBVvuW g8`$i|JKXa0dv8ᅯC A&p-X^[pe@Aװ2e,H*H9LBl Yk !BBf8 : \CP@wT]`@ JA]>x\\0 0 (%|@rȾ.PA,QYb=T   s_*W[^BfZBX ε(Z(8B W/ D ) Q y: ((%p*t 7UCT0CR0 0KTh ;4\H Q % hFl;Qc p  0$ `BVe.PBnw5CNPj'ʆJ`C``b8c9aRhUj@QK!v)RkW R0.$skX"h  B@eSMyo>$^m" h̏a"<2D#PI`ښ$~(.DW`"цBQXAnH+x!kfDzKGV'%#r=Bx>V7eBUdڞ:Ĝ #*| 0 UzjJGApk)xk%D-9 'XA耦 H5  hP28'ʠ6`k$^ 2}uv," [J`:8V7@݈j|Ђ$ױF8>Ega8*a!TZؠq.!7qzX̱osUZ6!X:0TlEݙq'! 08.$Aڍ9YexycH>1¹qǚ,@(q\%P8cZɳ" ^!7,.iB0((!)?t=>֣F~ kD(Ðs삩9  'pѻtQUC¤ZeP\L]UyST OUӍYQ ̙^CָTV%iAA (jLk͈jP{=їsa'H]sYqV WW#z qY1Wr(GPz9hmЁ+Jqih!ػ؋:ȟqJP:)X. jY17hMcشpDjY9,]M`cN8Ic3aXZ3Db''6 G>CdX?uBGpI' J|1!@v I'HN,O61@'Ml?C&2c䅨*.P,8{=.8@f*gm,$X @42ޓ˴. Afg+gej@s.#ƊX0V#!<)H5F&X;Bp8:P٤=h8C i8G0֕5xј41gI2*.^t,(4@1XK(&,.sF.@D!h=%#eO?W!`80*$0Jp~ƂJXe=&#Jh$h$ *[.8&x;_^{gFr"E-ς#8@8{Fw7W5 g.',y*ȃ)z1(;E g/оF>y{q Al+B*&"_(?^Ep$E_wf#:`FH%g_.s&(JhlymaWf:j>paY!~˂1au ‚ xK o1yyy9uHBtWBI [Y)fp>&n4/]_1+`d?!dh Ku c"F@MYC1N61KjN9iP$M*q2қ# idĘAGCXBKAKN\qCH*SHJA$*74r8`j%*]!# '>ڱhHFM,H*+5(&#|. /5#DA.b9dOb -D*4 &4"vB¢LJ541D'l&CB`V,F@%6) SM)w ۈk՛# ど8+*q#R|h `7+V̈́] ntVA=bp㋴dAb`l)Ӄ:'Ƙ"aWz`38)(,c-kpֳhcbd_E|:59)֎Ê1$xh}=;A}=_'=6Gsli߇!wx6c7>/7?ɯC/?֟v_! , 6> F|$w8~  Ơ ``^JbVR͌.Ƈnu .!6>!FN!V^V̹ w0_a!!ơ!_xxayԉ{! "!!""&"ΠaV _{{ "f&!n'~"(^a#Z)V$JzPbϐw `(:a'"Ң-".(~)Z/+%:&2b,>[..#363f.z/f4G00G1bABQݠ2"A7::z=#<ƣ< ~$2f# a*gmEt#B"#A08>[9vDz_zAd ңG~$H;_>֡#\5~5G ́M=:*/K89P#,:27N>B$UVU"!Vj,]J??dչMBNtA%PEOBzIJLEz<#<`>z4Tn:N8e#ԥDT:G>Un&gv&!.hA}eFT`J? $|i$5FA#L$#D́D:ܩA0$M!Lu@ AO%(Q#<0p=*e!AA|>tgh磙x&b&ΌdEyfw$l+vbnM_N86A%,^Ak'AxD9 rAp (jFkA4Vk} 0p9AL 40p5AB n'2xOBHhv`(ԍ冶Yj$F%UOٔT8"L[ 0%$^ցff2"\ 0z($pUTU@B9$oզ6"PQ,JI])&_AdgjvhhGrѓ4£: W#E!K,¤MA\*Me_!e%daG.kBHe_z P%SQ8B̉ܩDz,ɒl,Hj>JcXƌl>zccH!~!T!5|8M$ NBeYdP%*TT#pA1QFTAN~YZAoQ9;ጽdgI,f6_!)I(iSf`n6U "T%XsPLBp)b6B8$P&:6u.NWPB Dʸ*!OU(h*,Q$-V/H[.lw`kov,rg#hL!BЁ" &-_-no7]BRYTljv^gAkAA”%(0#k-jQZ 0<#@8V+)*.1n㶤y,VSȤ6OaR2^i0Rל8$L2*hVwrAr=8U0-va&p%>vAv2"P9Br$ `.!*B`.%Bפ!,`;*$O_:״C^ 10 *rB";#g9ecJ޶ F%^4 IaS9R3 B 3;3!y/w2г$r2k2D_o6%` Ҏ"Tr9?gj_"0^0;gF!<0?$2377N$Cp5T#cDO*9ƴdRNM3_M]n4P5v0HH#I1 S?5T s4lfc;.uR4uTwWuvPu̐5rVs}"X[CXkYÌYs\iu[_kt\)]!^+ZrD.6c7c?6dGdO6eWe_6fg6cc}\]iZϬ6ii6jj6kk6l!66ngda a{^ p7qqcYhq7s?7tG766J7vgvo7wLrrwx7ywv΄y7{{zu{׷}7~^|χz7xͷR 8'/80R7GOx|@8go8w[r8/i8'7n8ދok׸8g։]9ǏK]/9_΍,s7O9%9gfo99wn%99'5A9繞99::'/:7?:GO:W_:gzy{؁:Ӂ::::zzzzzz7?;GO;W_;go;wyifM`;;;ǻ;׻;绾;;<<»3^5?~>'/>?>G/O_>gWw>>闾*R=>C^~>|iǶd7  '/?7??GO 0Qno?wn?yg??ˬ XDD@#̷6Q[׫~׿'$ c$taB 6tB@)VxcF9vdH#I4yeJ+YtfLјgN;y:dÑ{5sLK6ujTSV!7vUϠC=jZkٶun\Y{7$B-!Z 6|qb&% ]Vś9w4*k}uɣ ^NWshٳi׶6$I/,]u }yr˙j!WZ2Dʼn!֌w8BmP.>lٷwVw|u[c 7ʟ"*ϒ@T8 $trD^PA*J c4C v${]|%15P8hA.Th݀d(\HP,PaHP+8p-;ʍ. >0QBCE\67"KI!( ;Ƅ 'ְ1G  /)0?$cyaltaE I > P =q.B&@@BK@CEbJ& Gc @1jE7= N@дJ8Ay PP!,HKS2S1WVD hpXw FѣĊvDƐH8 V(A(6ذ $ۮ @5 / d,pD .QU1ȵr[ Kl| I  K(A9xX(8#p1ą^p%5m 8|8`QX*B(,s(PJtn5,!CT;*D’N"y:KLY@Òh`*j)eb7 !@@ `$B#VP@(,qJ+ x 8tz?X[o÷<1p!u7>'>R)@,aBjXMw u>`2 Ѥ#RN2a\j{ Bd`u; vг Yb$p.A&) h34rC b P4 x*DV61,IS<P1 !xX(&0;P@H`0Gb#B԰ǃA^XT$%u$^P4 ,L }P $Y9%1YBL%*# t+FK>)ݼV H( Yt 0A/ A 4I)؁ft9>H*H5 Xx}ezT|AKH81$P!O ]! 8Ap^Yb^[4n4Hd`1  |M )D㢂~UB.Nc%2\&>d4EEgd'WRLe/|V2dVs&90P1f7YFsj~͙jv&ƑX8$]媯uP&l#1kn9ԡI]jSթVEM?>"Ĭi]k[׹y}kBsYӝ#CVCі]mk/>Mlo.nswnuf]o{o ^p Wp?)^q_9q!I^r)WYr1MNomyys)A:Sv>t=@Gҙ.7Qӥ^uSY?:ֵusa9^vi_9+qg9^yw _xWx?)_y_9yIO#|{Y/շd{}ioj}yo}9~7y~Wr~w~_~W~_P uPO׏0O'*36?BPKNOWZcfosPw{P P  P u O p  Ɛ pP  NpQ Q#Q'+/3Q7;A>@-! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;<>>A?BCCCDFFIFIJKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgjfhjjjlmmqqnrnprrrtvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ91h͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`He!A49˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n312T6fgIHƯY  ZRyHB@yܻ+Z҄ 64Al:bfI0+Nh  31!7% /KL1LG\ Ϭ%^A@ pͨ0UJSh #$KH!K&3-wdp/#3֙]-ke_6x6|[9|oǽܠ{G4avc6d%5dFBcNq..nJY[d:Yel3Y5ÛSTpeG&Y:Gnΐpi!C %p a!k] Np*@ z 28 TE ?Cn B`r{V@ PW!e(Xy #$G"Y A,1`,~*q0HA-y F/?B4a]HCdF#~" .(P b = dЃ1danB*ԫ _Xօ=} A 84 [p@•/(nI,FH@oԠc6X@4@aqqD$x&s!yޒ#N\L0\Nd4nVKf ?`KsY@Afph(5L-y# { #6 70@XjOsAt-Y @쵃X$ -:m$@j 2U4,2xR0> c2_: +@u(jd@ (@L+E7+52,=P SSZ>Ȋ\m{J:{pX4t$ vV{f P CK Sk_Ų8P8 eY xb%!q "=,JIơQ;pSFXଆ_PidQ9'.V!BfN?H:H, `bWߍi'nxvϜcDz+Ᏽ-pb@+ >XsY%%H7Dm KlIuٍoyM.d"P flg sŘי%ih9>`2d"A@sod H`"I+ 7pK3Wi/ 5[6KQZz$Rۿ^2$,u,Vq4YEo؀Xo<ubfx'g']X|S՗;V6&Ʒճ19 ۚ:uSf\d{O_1D[y` QӒqW!亁T& hlX*}_>,hvX Ieaf,W.wE58S; ];p{}P+*ލdn[=Kn$ t,].D]cIY6^?Ro(u`5@h5^rtK  6>yWM0y 'ig.uyC2 BQh2-rDrgeT{ |fpK_~7a{pyCw'`L&.W2PG s&j!jg ]CwNePpYy4+G;G3sq.8G^@673%ȁdrd *s 7XFF=%`>5f7Y:X#Sq~5B6 /(*@jNȃ1b7@.7zV8 zH\#<&Mcjƃ;ӂ3fHl%3eiXNtP5T'R4,SHG:8,fC3;kcxSӉn3VjC=pvx^oz0KS;c0hWCGAShIWC +%jFw/݃w sAm:4 7f ?pK*ŃBd8gh c ;:$[Us|c'X{ pUgfm: 9,?y}i <3LMMt\6Wf< wqf]В0c&"]reAga6W Ema?2y1leA@W6E OI9ebtK7ksm^MIk8Ϧ1dŧaG}fqpِ~6c+\/-"DGIWP3] jbEΗF9;BtP] KO.#ij%Vj``R<Ѕ:W W gSi0IE%X`\DS]&0A2%?&]){450\=1 S%Gg[|Ȓ?suW@t:] tITk0icP|3KUY. gvDHE{A;sN\YjSudK>;= BB;c0bf|ZbMw.X<"+=Wq8.\ ../l/">!"rj<@%"!=L\VZ\^`bϝ=p7Y=GA.FbHU6P9dExrG02b~8^}]vs 26`&>9DC0.O9\^ =nε9f[tumJ1>6pfP. $#v:%`:UƼrjdo;Ík`ҨcMѵ;d灎1ď^&ʨDy}yK{x}g3㗫Nff5SBsP8)9~^ w5s͞.>ƨd7%خ0FN1. {o5C^N8]@P~` I3q^T&v S 2 >o338+)a` J0fap$_Jx1X3?T5O jY`y}ũAP`;/ڎj?@$2pU ^ la0՛`+v~!Ԛ+_7c?? _/0̯_OoL/_o1׿6\/PASC_OT0TA . ÅDTE5nG!E$YI)UdK1eΤYM"ӧA?JQI.eSQNMSՅAWaŎ%[ّVpDqΥ[]yUeVUz&\aĉ3{%O\ei60̡E&]TƜU3|kرe϶ztx2o'^qɕ/gsѥO^uٵowqMyOϧ_f{o4@ M9+PA#pBl)pC;D CK4D@ 3[tU\aFqƞjG mGYCH$TR4"T%rʺt!(rK.JrL2˼KH3tMLMĄN";Ut% eP#t)LD@Q*j?2*?bŦRTiFH#:U TՅ)frᄊ \pH(-Ū'_ H#I c-bxé71 5h(H܊ lI#7Mwlلhy+WF^XtPZl-WH"TpdD\PK5p(jBN <&v\e XvH^]’+ᄂ-n(F,ibH袐P!1DȣliÄM؀b(dp!{D3++03xpAd;,D gQ^oH/` # Ԗ DrL Й"xLk!WR@E.(jH!hP!GH2U4m?܄7 6mS vS8T$׃V3X A[e E&z@ + Y/ZD ܈/sꤥ|dEnC@HG*(,~*TuU+2j$sVďBF.6xCl;(!@0meP- jA&` Z$R+D"9C"`\[Z$$d=q*݄"x ư ٝBP("i( ؼbv%B! 2`!,Ft T-l T5.x 5[G!2׾HMVhՖЌ\=dиNƣww2ǝȜ*[k5TreH"\ +G "bBX{YFA24AMEyg7Fjs!0x2+,HpJE?ÓK8`<@RtX˓@, !#{сH(8@@ hK@!Dw{ɕ@š\sL\ӐLZd4 ˲L >MpMkl+ˈx&, K\βA&N NTNNNԬ,Ϲt<8\DTONO|tOܘD PK6P] =P PjLXP PxУL P/4P ,-Q]}9QQ 70B4QQ R!R"-R#=R$MR%]R&mR'}R(R)R*R+R,R-R."MʑSS2=ө0S4]Sp>QdS9M 5S; ,;3qS'qQ> Դ"TA==!T1TD=Eƚ05Tb՘ \;\.6/ f-;c5Q6n}c8VQ9V L؈;VcS@^ J?&4vIa!ntYҵb&8`, Lk%|:ވBX(3KJM <aI CH)WJx#aQ.e#삗#H 018ޘ .@`g萠C +p1浺?y~ #ƏHUGi#x4(|ȏK:X7`5&7K7:gPg7!Hz5Pxj!m8G+F@-`r)H.s,0C#Xq _Js|? {&H5-&+))H0 ?D.Eюy@7s+F)&&(x?̮Dh%I`}f#:XE@$l~s&(J`l6#؃&0j!D 7?,J{ ^0+7ֈ.o~_8<X4,H#1"sK-]"0͑Jh0(KWbiDdȟBBXd#*0Id)bx%%1I,)J2Q$%7F"9Ҝ#HҡS౴M 3BGnC(I!I9G)H0A3R7\tl)\I4&OֱHEL۰ =ڥŲ=!)JDF (pK.F Yu2@iBcIXĹ%++5q&DF<׳o=(?E@!qWHE%L4EVXq0P"MPJ!E%qUK\aGIR\suxgI)1MT"@ rFGYah9ueE0AIPL<5PI&RpKZVLAahtD"h"V$v$aHT 4GMa dE$ueGATJaC&o$*))I,HUձ#UV DHGQoXRHa@Sp9%Tjo AxE[Mr@AF"FSt$,!dchus§Co+QaFAbr B!rFwRXhDW=DWx0q`Q%KPG =3Aw_E}~Xm[!@]Rt!-ؤG:$'"uҐZ! SD"(%$DvƄ&YbF)ţWHn0bHC!eYj ibTdž"Dt1lIEnh Z8\hAYaa uaH".*H@:`RS~}Xs3I^e;GQ%Ie~! X"8I S@B B+D%(0 CFeeir*1| _*2EsDqm T00=|R59GHd0 C"ǭM,{$1f}5Gia"@D2ȠsƐA#`i}WEJE DG@$bD@)0FCvԄ.DmDPYPv*Kf>҅H!qD W…f ?j A Е.DGK p+( '1bEⓖCpDL!&?G) n{iGYN$H_`r:!+c"ڙ>!oe"Z!WɂI&!ا,.dJT$aR%sR0 C$?"t"@\mtBJ+FXHWFh`5#̲,Mr`8~e&4,d "AC" Q# t#H!xt0N/v0)(ђid#jFԥ 3@0Za9ȗ&\8zpZlJ&X Lm\|2a .rmQP"(A%qNLe4%,KӵU }p! Ih.*Db BD~2&4c)_ DMB\ҐHLdႤ`Es3՜X T夨rƾ$4A !r;6KA% CK9clSG&Q%&:crsIa d-ES8|E!9kǹM k֧@ `<Q.GP"@F7 z 7{yHrbE۰b#$+qf`C㱴5 thO!.H@QgL=n 0"vmw| Y] uGϮyu_[ ae+=~vl8[d _烿{J- {K*Apkىp|s6c. E$x왏#5Ry.z!N=FxÝU֯$BBs꩹s . !К^ ?ez͘1=o"v1{3v5<#/S<ϟ#MKR>{6w?>#??~?/_"_ &. _> F n v~ `0Q~X`zt5 VƠ `A Ѡ   Q` DVU ĵn!v~!!LUa^{l!!  {!!"}aa\ !N"%V%^"&f&ab V_1n"*b"*+v{(""k`((v^)$b"0N01+b{آ1#|0b9"@b"'c!6n#7v#**#{8#i{@Icz#$f&2ɟ###ܣ7#@@9Bf#2~b.5;~!$>p&c#d}G@K$Lc"d!z"ϑc{C!HA0}=cF.\]0ڌ#4<ʮʲd)d8MNQ˷⠖_>.S@IABn!B%H"Z-A hJF±&W UEA%05X iGaAAJYZsqP>ȁ'Mjr!LF}F jZ!JdBr& A"T$ȘASDs!f.4#=.BDWxbOR[L#kIAȪ =lRU Ȥ`Qm%m.+~/$%._~f#nClz*p BuV"3ga2hM(@*yk;i@A!j!h)!L䖼>Il0#1wcn^.^(ArEPh)Ĭ+ii)F2h%tJGh*9rXW%%lPJAv[%.i_'"#UeoZn"`Ud=Efѣ#\g8n\] ]!"NBMn#Q }\ m1C"/33O.$[GokDo!#gecgJRa<7yne*WFn=373>3%>ozLyTs^Ϭb$>rq.Q 2"XrI!?B(V]rz_;$F;0qeXjNG_S"B=t-%VPoEa4S751KǥK4SgVou3ztЀC4~VX#W5[JW"_Z^S{"5555b'IΜX;`!a'L H^6fgfo6gwg6hh6ivfŭ\Rou~6m׶m6nn6oo. q7qa9Fv#NUGs?7tGt;Yl#LOvo7www\uu Hvy7zzrG#s[zǷ|7}wx#xv}7_}M~8w{{kn?8G[̀O8go3.x]8xW58O8˷8CS~׸8cl9ޏ[3/9֍^7O9vUwgo9%_or99o^9rù9繞9k:'/:7?:GO:W_:go:w:::K:y$Ǻ::纮غ:纯zzzzzzo;w;;;;zSjEdֻ;绾;;<<'/<7?Ͻ>'k7?>G(J>W_>o>w7>駾>>ǾϾ>҇[mDlov([?74OЀ L?W_?go?wW? gw ?>?3 "L9v-\$H4xaB 6tbD)VxcF9vdH!RJ+YtfL3iȒ?5yHC5ziRK6u!(Vz'9lʠOɖ5{mZkٶhɐ aN{yup` 6,\Uoc+|sf͛9sxdXƕ;vvlOw7jGwe4@uh2J(WTȀ7(ĖARM0:Ɛxፃ* d0 +Td !w;`J;yʋDE s1DD,0kL u/l99D$@]X57 0v) hH4? rTI - dKN"PQ$dP;q'9\{Pj5a% +*%*q=*"%sB/&L~ VG( Yu}3aʰ! A n@$`[J $'P ~7D' Mkz3D`g"Upu..A ? A%H.UVe S/ xܾ j3W.s{gC:9A= hK_5瑁u#04*iS23~884i]yk_k02 alg?і]mh(vݖ]nsV}nw%.1ݧnO C`;xK}/ Wxgp?)^q_9q!I^r)WYr1i^s9ysAЉ^tIWYp?.xԩ^lOYzu_vfGڿv=nܡ.w=vމw~u.xGax?)_y_9yI_zӟWYz׿i_{7u{_|z֕|3_}P/}p _~|A ~_ _P P#P'+/3P70?BPKpNOWZcforPÏ{~O  P  P  P ǐ  P G 0?O70/Q' 1Oq#q&/Q7;?CQGKOSQW[_cQg,^UOSO$t! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;=>>A?BCCCDFFIFIJKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgkfhjjjlmmqpnoqnrnprrrtvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SB:9٨͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`Ie%I4y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n392d6fgHƯY 0 ZbzHB@zܻ+Z 68Al;bf0+Nh  ;1!7% /KL1P1H` Ϭ%bA@ ͨ0UJSh#$[H!K&3-wdp/#3֙]-ke_6x6|[9|oǽܠ{G8avc6d%5dFBcNq6.nJY[d:YelY5ÛSTpeG&Y:Gnΐ j,!C %p$a!k] Np+` v^EA' xIDr B Lwp Hp8[]^@ 8L|Bd@$%  A$ P2% ZB$`{YB@)HMB<@w`C! 'j PPsЯ@(% =6p |@ߑ 8 TP K%zk /Җ!Ra+n7I-@=X@ 譖G;@H Xf  jh*fZ@]8-Zgl$qP 9.RU sQx{c\#dO[@c$syK,j 4@vi. `_; a fP "o89dqv6 & JZi.6 WE[; 8৓؞x 8&VK8M$8j *4(2pP> c2^劺 +@u(dீ@ L (@L+E7+52,>PRQZ8>Ȋ\myJ|pX5t$ vV{f PCK K+_Ų8P8 ei xb%!q@ &9, JI=pSn]Yଆ_hdI9'/V!ȡfN;@H;H- Xgߍi'nxvϜsDz+Ᏽ pb8+ >8sY%%H;8Dm K\IvٍoyM.d&PflgrŘՙ!if9>`2d"A@sod l`D"Iͮ+f TpK3WiO 5[&KQ$R[^2$,u,Vq4Eo؀Xn4#ubfx'g'^X|Rէ[U&Ʒճ19 ۚ:uSf[d{O_1D[yPT!Qϒq!T&KhlX*}_>,hU;Pq4Q'@:%qGr1z41bq`s3cH!L=pyec* _3vcm1>17gM\3(<a*.0 P=t=x:#fpB}wP.W` Y\#<Mcjփ;ǂ3fhW"x5eiXNO%T7Q4,SHG:8,fC3;kcxRĉn3UjC>pvx^pz0JS;c0hj3>Px>u)Zitx=x0;* Wq޶O0yH~jR=8Js0sC2U5h+06~cP 9Ӹ ׉O|fVؖCѐ7;tA`Kǥorjf Гp' jf.i=j!ѕnl;-G!X4`N¸.pFfreQ#3jcVuPsUYRdC SV@t6lᔴF;lCi|;8,opg]gt9?R ЕR /A |u|5Dѕ2z0/ ]|*y.UN>P`2N4/k0b/]a%3 ^h3qpG9<%].dYQYp]DS]'8`H]@]cecp@QCd`[s0Pz{tfEnAˇ,#W'uP]U?YE8\`K1'z;Tvh N`q6z@jWdOW9U37נQVdZ%.p eNg.q%11QPrIj n;5j++FKmJ3@_š% ڸ1C[ť0u7iKgKQzPjg:7/OP/Ph5%pXXC;QVP#@2 3t[lT&' ,5k0z4 q$Ҫ1JI~N "@]YUlSY QNss#w2>U^Gf}?m%(҂+vit cjU7dfa7ci۾ >><{d EKd0bg̎_RMw.ȿX="B"+>Wq8.] .2<3/">a"rj F}H,AJPRL N=XZxQq\b=S٧Ędl3mn=t] ־v~!׀]؆},A؈؎Ьp,א}ٍ٘!ؚ٠}zOtc>0۲}Ҥm]@.@6.{0PcIۤc.s9l]ѵ]=z-KTq06dAj8=V6! =v1 0D>D;@`u;u W=d 6} ]p8=Pd9`r Ok#Cw0X%.JY3  Fc82ta7l 0+Cj"^5^CE O!Q C/O:^><Ζζ9vkuumK1>6pfQN $#v:%`:UYt_aN >.f3x\F:]]}sN>#@`N\,qjId7 gHT+WW.p~6qdA!qj&h\C);W$CpW3 !ApoJys\& kd3!9_I^>Za*8u`MC;c'Du\rk.o7@@/4_ΐ>t;S\<ҝc OnnY$_Jw1h6_V8? kX`y|թBP`;/ڍj@@$2Wnlp㏠_ i hEZxQ>O?̮O=ȟ7ǯ_M4f_Do_6oO? OoO$XA .dC%NXE5nG!E$Y$=&dK1'I$3#=LOA%ZQ?Q)KO[ԙUYnW'SJ%3jYaծe[q^\Zn˳d_6XݼRfcȑ%C4|l⧋'ogF+[&TshԩUfzti0amܹuo'^qɕ/gsѥO^uمŏ'_~.w'4{wWߝ|/~}o@ 4p$MtAJPB 3԰ ) CqDC(qE[$D3SEk@cl {GrQ&4H$rHfLI(kI&]*RJ,**d-s̒, 3Ӝ$sM6LQM7NLNO@0>3PDrPjBPE#HF*&H# $@25J@ItRT2GSHbu \8A @r; 21R5UɺɊhA 5!(*V 8ңF zDk5dZS|xAIp $QÐ1T*Pc G"T=T֒@B오 =x~7)Ġ5bƄ8tuIU 8bF9ped,8'-)؉?.w1 8 r: 'uDI(\3LulWȇ^yaNhVd ^w lPaZ}aTpA,#Vw d8 'HpD $N؜l`[#L`).`j^gA!xuAK{Hgĉf CV@a^:A/Jdo^ցPᅸ_Vñ*{; V$VIDuR,!5d d !HO 38Hl @Tt u(f;*nsj NKd% NPC4w.ap>PA >vxpC|`NpK`vC, Oj_S!$q+bx/t~0S-?,ZA--|^8xh;xR.tAs#is1P02KTn+a) a &шp!w(h 4(q >J*qӄOmrƕI!68 aH@&qL %\KvU%(Ct0p$Af% jf1@ EBIlqKA)WJ5@Ch w( ثB)bi5u t N$(*5}k둦A޵'pi< HNY{Z(P$V0lAt@N.BCDuQC L@( Z6Yg067JTZ`q.!bqtX=pqYC* X6ʬT1l|Eܑlq'! , $ڍ+dx6?1pŚCA=93 jXHDavD.XsQXE. ha'{}^Plhٖ1v}0KviW&w!TfBq7 ݀6 7,`]:`8N;3#xŧipng @q<O,~a\Fq :\y jU*OE˼39\.rK#x ]^z4  ' &o &*\zή"z»L N@ ]m;+ )ф8i1D†,^@6NGH}PCT`@!c@ˮ#:qB-?8)GPCHN+ W9 l pp $L.+$DG~x|OTDNv`X' # /$P8;@Ԁ>PJFÓK@`.=@RtX8̣@ 8#A"ӕzف @P(8H<\A!.BA0$>KCHl5칉:<(<㺁#sXCaA'8DQD11HE5T> a>pȫ?׋q689 #9H.: @IpX+Kȃ(8xY P3;|ɾHCs 8 :G0ͣTC -C3?lJIL'0:=肸y>5 KJfI\8>9:[8^K&[ܶ88Hr$ՃKGKŒȋ;?=,L üK38L\ʌJ@FRqLËlͲ5CPsM d=8LMQN感N4Nl̦NNď$Lϱ OlN|8OuO ϿO KO u=P(PDP!PPP HTP  QP=QPDQMQmQ O|R4QQQQ R!R"-R#=R$MR%]R&mR'}R(R)R*R+R,R!es{ OS1=Sp#S0S4mSQtS98S;56S><=SAmTCB=TED]TGGT* TJ5FTN%4KeLT>TQ-UR-N=UTTU]ImUWuTXUEUZOmǻUNS^e\_}T_#bucX2˱^k|ֈ$hA(lmMmZЉz;ڗ~ rQ'8'q\rIaW+ׇ8!j􉛹qX,Ur(EPy)hm*JpiX!뜁%X3X:qJ8:). jY17P ;҉z  HϔنX/*2M,H);?ʂ*!|P$'"!8u[&-#Jh,Jx,582(T''C-`e]sD2aI; C!BI %hmܙُB׵;u2&")(@X5p-@4y@-1F^[٣/(!(Qrޮm0qpB8Ah9Y?p!;@ Y1*u%]eVm̈d*:ç߲EJK(@X43G@%.JEKaV^VF̑qT[&n?[e9\]+,-n3 cc3Q4Nc]c6P7M@9ҋ>ƈ8=2~?&81`kH&F:p ,⎘1F^&DT'Hd9s!'Mvl1B.K'8PQ1@'͟l?E&!2d*. ,8}-.8@*i%,$X @42^l. Ag燨+0g"@u#FX'=#),5F&X;BpҴͩl;h΃9.Ih]%Xptڠy<:$>P4h5:Cf\>8G0ƕ54p1gI2X3.8di.hٜq n+B*&#(?Ep#:E_yV#:`FtH%h.r&(JhkylWV9">p`Y!˂1r ‚ xK01yuxxAHJTBI ZYz(fr&fo4/0g^1+`d?!dh Ku c"F@MYC1N61KjN9iP$M*q2қ# idĘAGCXBKAKN\qCH*SHJA$*74r8`j%*]!# '>ڱhHFM,H*+5(&#|. /5#DA.b9dOb -D*4 &4"vB¢LJ541D'l&CB`V,F@%6) SM)w ۈk՛# ど8+*q#R|h `7+V̈́] ntVA=bp㋴dAb`l)Ӄ:'Ƙ"aWz`38)(,c-kpֳhcbd_E|:59)֎Ê1$xh}=;A}=_'=6Gsli߇!wx6c7>/7?ɯC/?֟v_! , 6> F|$w8~  Ơ ``^JbVR͌.Ƈnu .!6>!FN!V^V̹ w0_a!!ơ!_xxayԉ{! "!!""&"ΠaV _{{ "f&!n'~"(^a#Z)V$JzPbϐw `(:a'"Ң-".(~)Z/+%:&2b,>[..#363f.z/f4G00G1bABQݠ2"A7::z=#<ƣ< ~$2f# a*gmEt#B"#A08>[9vDz_zAd ңG~$H;_>֡#\5~5G ́M=:*/K89P#,:27N>B$UVU"!Vj,]J??dչMBNtA%PEOBzIJLEz<#<`>z4Tn:N8e#ԥDT:G>Un&gv&!.hA}eFe̬$YYf$5FA#L$#D́D:ܩA0$M!LBu@ AO%(Q#<0p=*e!A{>tg(h磙x&b&$$ $|i#lM_N86A%,^Ak'AxD9 rAp (jFkA4Vk} 0p9AL 40p5AB) f*(xσ$ɥPh@bw$F%UOٔT8"L[ 0%$^ցf2"\ 0z($pUԎU@B9$WoU6"PQ,JI]*iAuL݄g)w=IA##r5Q"L ĥPf%RVBNjp A T(=1p% Q;%5#ثʜH8Gfjl$Hb(ʹT?BkyccH!~!T!5|8M`$NBeYdP%ث*TT#pA1єFTN~٥ZAoQ9;ጽ\gIn,f6_!)I (lS֝4>:n6U "T%XsPLBp)b6B8$P&:6t.NWPB iDʐ*OU(hl*,Ѧ$\lڭ>/H[-cLfPyiw&Z(vjX t(rAl""0fv%/EeQAv_hju+8mA !!4i!P\0 E`,0 c9tFXn%v`(VS$*6qOA-R2^`li0Rל8$L2hvrAr=8U0-van oʩA#v2"P9Br$ H.!*BH.%聕Bפ!,`;f*$O_:״C^ 10 *rg9ecJܶ ڦF%^4 1aS9R  3;3!aow$rsv,26Ȳn6%f` Ҏ"Tr97gj_"0^0;_4F!<0ʾ)2's.3H7NBo5T#c_DO*9dRN$M3_M]fO4ntҰ,H+}"P/5S73wsH5F3ec;SwWA5"$b5}huq5X[XkU\7YZR5_u;uvuUL^uRrD.6c7c?6dGdO6eWe_6fg6cc!cQ0!ki6jj6kk6lsX+Om߶mv6pp7ΐ6q'r/7s77 sO7uWu_Gtc7wwwwsC76₷y7zw|lz7|Ƿ|{Oy{bϷ~7wY˩{85w87w}G?8WWw#wpg/8≸ޑ8өԱ8׸߸f8"Qg5y87׸Wh~?9W9GZocygns 99wAĹ9׹9繞99::'/:7?:GO:yۭy{w::::zzz{zwzz;'/;7?;GO;W_;9hfM`;;;;ǻ;׻;绾;;;3^<'/<7?>'/>=7>GO~?>_>go>臾Y藾9]}>>\lKv >~ ??'/? 0FnO?W?n yo; XD؀Ѹ6Q>_!@$c`-?D4&Y2xaB 6tbĄl84 cF$v! #I4yeJ+YtfL3iִygN;yHKlyiҏ*^,QiTEzkV[vlX*z-HMBM6bձsֵ{o^{J*kn`mrJ`T6vrdɓmj_wVJp[ϋR6}ujիy"$͎0按o-xpÉh!uZ2Dʼn!4isp = ~ɗ7k뙿$gNJ*n]I[ cNrD^PA*RJ Hè?Σ KJBCU2 ,qdxC$i *'X *@# 'x?OȿJS&49,8D(?/u 2,c'‰(81 $ 0-Ӊ.Hp 1Y +:?*CC5i)1p=)M C>,qBP(0 aNPa;@l(_,T(AKQs#lRoUaI.PuP7=JP!KaKa53.hb @;Ē"֋ I  K(A9xU(8#p1ąo>J.vEa$ d^Ρ@y(!ϵհ n PR Kv8Um 1)4<,Ƀ 9*)D4,Yy[7~u3Wгu_>vgWӾvo{>wyw _xWx?)_y_9yKE_zUzp?=e_E}yO_}9~Ϛ7y~W~w_~W~_P 0"PǏ+0.O70:C0FO0RP[0^gkosPw{P P  0=O O O P  Ɛ PP  NPP Q#Q'+/3Q7Q8,+O~|>B1 ! ,   #! "##$$%))'*&(.**,/.12/2,04*1822383766987>39>49C;;=>>A?BCCCDFFIFIJKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgkfhjjjlmmqqnrnprrrtvvywy{zz|}~~~¼d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ91h͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצLD,IhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`He!A49˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n312T6fGIHƯQ  RRyHB@yܻ+R҄ 64Al:bFI0+NH  31!7% /KL1LG\ Ϭ%^A@ pͨ0UJSH #$KH!K&3-wdp/#3֙]-ke_6x6|[9|oǽܠ{G4avc6d%5dFBcNq..nJY[d:Yel3Y5ÛSTpeG&Y:Gnΐpi!C %p a!k] Np*@ z 28 TE ?Cn B`r{V@ PW!e(Xy #$G"Y A(1`,~*܋q0HA-y F/?B4a]HCdF#~" .(P b = dЃ1danB*ԫ _Xօ=} A 84 [p@•/(nI,FH@oԠc6X@4@aqqD$x&s!yޒ#N\L0\ND4nVKf ?`KsY@Afph(5L-y# { #6 70@XjOsAt-Y @쵃X$ -:m$@j 2U4,2xR0> c2_: +@u(jd@ (@L+E7+52,=P SSZ>Ȋ\m{J:{pX4t$ vV{f P CK Sk_Ų8P8 eY xb%!q "=,JIơQ;pSFXଆ_PidQ9'.V!BfN?H:H, `bWߍi'nxvϜcDz+Ᏽ-pb@+ >XsY%%H7Dm KlIuٍoyM.d"P flG sŘי%ih9>`2d"A@sod H`"I+ 7pK3Wi/ 5[6KQZz$Rۿ^2$(u,Vq4YEo؀Xo<ubfx'G']X|S՗;V6&Ʒճ19 ۚ:uSf\d{O_1D[y` QӒqW!亁T& hlX*}_>,hvX Ieaf,W.wE58S; ];p{}P+*ލdn[=Kn$ t,].D]cIY6^?Ro(u`5@h5^rtK  6>yWM0y 'ig.uyC2 BQh2-rDrgeT{ |fpK_~7a{pyCw'`L&.W2PG s&j!jG ]CwNePpYy4+G;G3sq.8G^@673%ȁdrD *s 7XFF=%`>5f7Y:X#Sq~5B6 /(*@jNȃ1b7@.7zV8 zH\#<&Mcjƃ;ӂ3fHl%3eiXNtP5T'R4,SHG:8,fC3;kcxSӉn3VjC=pvx^oz0KS;c0hWCGAShIWC +%jFw/݃w sAm:4 7F ?pK*ŃBd8gh C ;:$[Us|c'X{ pUgfm: 9,?y}I <3LMMt\6Wf< wqf]В0c&"]reAga6W Ema?2y1leA@W6E OI9ebtK7ksm^MIk8Ϧ1dŧaG}fqpِ~6c+\/-"DGIWP3] jbEΗF9;BtP] KO.#ij%Vj``R<Ѕ:W W gSi0IE%X`\DS]&0A2%?&]){450\=1 S%Gg[|Ȓ?suW@t:] tITk0icP|3KUY. gvDHE{A;sN\YjSudK>;= BB;c0bf|ZbMw.X<"+=Wq8.\ ../l/">!"rj<@%"!=L\VZ\^`bta7l /+Cj^1CD0O 89D JV~,\jPu@^ܦ!` :3Jq(A:`g H2jS#_POX>n6^8.3x\`&:]]vsxNz?pNU^^|qjJ4 gGT+WW.p~6q 1~i~쌁qj&h\3*;W CpW3^poJys\"< kdq 9{@^I^^Za*8tpM;#Eu\qk.o7@00u,o;S\<b0OnN WOYWÍ@N "o+YG W;\-@ O5^`⨪X@:P\ xo TPpl0\__ ibho{}A=1yQ>!_zSA_q?̨/ՐMc_|>_Qmʿr[-O?`Пӟ_\ѯoP1N?CXߏ_O1 $8QH.dC%NXE5nG!E$YI)Udb< ΤYӦ@Hnm3PDrм %$PcͥRE;]tOSPT@ɅNp&:BHS^dT1>H#8I])bx,F|S _% : LDlkP =+Bhߥk!:N#`WHm T ^ʝnS@(1L ]V҂P$$Q '"Nء`T/I(P,&?[ƒ> AWxp#!T QIXǴ{cw ~# :&Dİ_=!s҄4}pry[^Q;9…BG^\`<Ks {:  Bw}`^A*'NgB {<[.ux x5+@=|0>£HJEJ8<@Rxt3@TP?ϳ@c[僕uс?H(8ػ)}L5eZhƌ~=2L7WJQ7ǟrd K@\KCɏ8~k?@kK> T3SA=TSCETF3BEEmTI]GHFU:CTNTT TP TO-UTMTQURMU;=UWՆUYUZXU\MU]RS_U` VWVbEUcɔcdSA2YV{VӌV$c99 *(m NnHu6yqºm &)!Wam},W;WH"A+Pr(@PtXm%Jka!F5C؊H:`qI!: .)P- j07 6Jtș@ɑ̤YY.؂)1pM,(6:Q 0v&p!Mrۉh"|Y2 0?f?Hڙ* ][BHyj3D܃]ՙRSՈtE0ڞ<&xV"iaW* (B8D@hV0I(i,099F-=@7+i:lB0$,I{Φ0p+7~.O~]W80<0Vo4,F#1P7r.e\s4LQ*XKJW cCБ?D E:GNdR)$4JJbPJSL̂,!yd2 MH"Js-HH4H 2EF\$6AcGb Z$&aHW}D(HMr%pItDN$[R"!t1QS-& t !Fc+ eb-a1DRGr`$tHq#o[L„HS4aI#%҄m#RLbG8VHl%!5Pb2% #<2e=L#$B>j;dRrF¤X%YMZe06`ԁB"]C$EQpA:$HU}Rz} EH}4#4d6},W>F;" &HPL=N&v_Yj$&l吼\"]#LXmfJA" ȇ#A&%AtSHr_h_$ !ADxAx$ "BtZ,]Ab%!Ar[%kFNg{Aئeڤ'A#heQ4A9$$ZnĬq_(W KO-Ap8ٙىVW̌,Ps1BD 0A,s yBP)yb(thMM>$/9PXdLPy P$lA B2E&rZj a}$DG8UN!ix#̣8}-g`q" HATe|&Մ f&.kAAmiyfǟTA,2T"H! $P_VṔhY$С*Gf`n8Ka|H4$m@,0B,ɒ,\hALNna\nu+y(;nDA!ր|A!LB$-A,ATF"WE MBҡE$0җvY,(=eFȇX3O#O35G"&a%&sff%# 'JNa88 ].e&eW".=s W?$^sy 1+E.7{t%V2qP 2 B?-v_.Jt +$2BwsC;dG+m%XOIS"=5)UQkEBa4TG4qLL#'SIW5X ABLY3B -VwM55\ǵ\XY]NZKZw\`u]G^L^+q>`GdWsac^a_cSE4$hh6ii6jj6kkM\A=!V(csΨko6pp7qq&9s6s77mdf/f4]7vgvo7)rx7yyǜw xwy{7|N74VV7~~{7Ѭ78ۜ}l/87Gށ?8W_Ex% 78k~L8xq8Ǹ 8S縎x87989'/yy!9GOy7'C9gonZb9yBg9,9;998hy99:4?:GO:W_:go:w:::::kz}纮::;z'z#zzz z;;;;ǻ;'jfEBd;<<'/<7?>'}/?>G/tO_>gko>>W藾>w=>뷾~>>׾>w>zIn/?7r< G~3_ׄ l?w?? XssU?׿/ D$)ERB 6tbD #xcF3BdH#I4yeJ+YtfL3iִyS&$C3NhP!`TP㟡K=jTSVzkV[¤tFϦcɖhiFf2}n\sֵ{o^ p`En\+1ķz7vrdɓ]3Hh gp1eѣI6}IH~vtF:unݻy:&}|blk#owtөWУM3_v=[7} LJ4)|ew]+O <Z(.cQof\ 349C;;=>>A?ACCCEFFIFIJKKMMNQMOXNPRSSUVVYUYaWY[[[]^^b`^`__h^accceefjhgjdhpfhjjjlmmqpnornqoqsrstvvyxxvwy|zz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ:9٨͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצhD&MhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1Je+U4ْ˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9#=;d6fHƯm" ` nb{HB@{ܻ+n"E9HAl>@b0+N  ;1!7& /KL1`qLt Ϭ%vA@ ͨ0U JS#${H!K&3-wdp/#3]-ke_9xf6|q|o]ܠGHavc6d%5dF CcNq6.nJY[d:Yel5|WTpeG&Y:Gn֐llAC %x*a!k]0 Np- ;|^U' ~9KTsșB"Lwm HpH[`@ 8LPbh@$' X2& nB${mbD)HYb?@}`G )l PPsЯA8% p3A9x ߑ 8VP!K%zk /Җ!ņRa,n7J-@=X 譖@G@L X jŕ>L+_ R YM@,`9dw iN\<)OqAr`H!=F }kg0۳`8̺ E 0YZU V&BL*اaD+\Q3`{XHO5 @:!UH@I"\Hz1膀`%XF&@ LI YNInxZ†dJ` t dN CKE ;^Ų·0P8` ei xb%!q ,1?2, JI=pn]^ج_h`dI9'1V!́fN;AH>H/ K Xgߍi'nxv;Zx+Ᏽhb6(+ > sY%%H8Dm KLW8.n|kr c84eC-r`Řՙif9>`2h5"AjdD ў{c$[ec7&ujcA4S8jlcr%9N{}lXb7Y':2q'| (Ug h$8~ r tuu=M<^ ƪθ&อ>'4ujj~ƷTᕾwǮ)~֌͝2r{ڮ cB.Fhz v0Yp@cZ95 a`c /7Akv_kd;mp %NB^_ ʈO|w[w򐛀@$ ˗|pטx愍 Te#Qok+f \M HAZ#as.]A!bwcpr"LQl0$) 6.bw{"7qVN 335g}#Mn&ɗ9cf }BXW,VVt_~G{qySw`LF ;mR^G0gx>U;`q4QV'@:5qGr1z41bq5ps3cH"L>pyec$+_3vcmF91>/7gM\3(< a+/ P=t=x:#fR}g=/I3sq vq/׃<ǂ5fHWdQ20qP&a J]T@E{Q9tb6P6'u8f93Uv= gbe+ 7nQ #T.3v5d1zj3>0tu(zSbцiux=y0;+WrO0wX~j@tR=xJs0Z0w@2U5h+0F~gpwP 9pxuRwfؖC;tE`KƵopj qW jf1 f= Z[/3<bPXE/X;g_8qOBei;8,ݺ;h U+E"h.omzaق`в:p`V ;{pv@4-16}Cg g8cx(s`b YIplZi붌C{bgqt/5 AQwb q0`w`v+;+5<،љ,ѻa9912͌@]F}H]BDNPxĬRZFM\b=+kժdl mn=t]7 Ѡūv~ !׀]؆},pײ׈ًؐAؒ}٘a{Stg}٨Mva X$!`ClEM:#;˦} t0¿DP`MQ`cCHfJ 3=w]ʍ'0DB>@`w;wWnd =>}]pv4Y=@L.KbMT6P8աҳLP4bd10n Nvs+Cj^,CI O!(8dDT^9pfI $#v:%`:Ud>qjqju_`\PMݕP(&yp\s W@\@]|5YY;{o cq  i@i;-wQ>~tqrQ o}6-g_Ocqo?Ο /O<?_ϾѢ$XA .dC%NXE5nѢ=,$YI)-U2=<ΤYM9uOARKIITZLQNZUYnhS)}Yiծeٯa.mI6[yߟq ,`ĉ/fqTnze̙5o7dZ\iԩUw ˻eϦ]6֯utt#'^qɕ/gsѥO^uٵowŏgryogχ }W?|p@?,pAtPtM+B ;J(CCq9STqE *DPlqFklE F{1?sm4HՂ)tI(RrIJ,4kJ*QRK03(.L1TsMMdsN:ddM;ρtMOPD4B3QH#rQMRL3=,щIPC+,J9ӓ MȈr} ^8A A; 23`uv ål 6hv,X 8CF zdouGY KNJhb !`Ȓ.CJ0 E )ȑ~@u!3dŨD=D=xE+x6H8 K@U8Ђ98itO M۵ Cz*p]BoaÒ8}l kZ\m{XG``A|hzhȁ79XH BVW!hć^X!MȵpdbNC Dv ~/BC,+ 0ٿgy)C B{a)=A|0G@X0 dH3r0AH.rb9 Zo0( %>_䀹;I'D$7Dz}\׏w\9MLĽqͲJKĘ3m4?m %e BTbZQAl· 1-EqsBi y|ܙ>?CJ;Aj\HD/3d|`\';ERieGYM}ml rvmlCw͍qOfwnX7ǐj=7h-y']$ufx}u+9p,N=|./8@+WyN\y"nGH}r'@㴞y!Us\!@σs ѭ'"'ع4򌇝 P櫧NdA7F@ d]cb7 eu4  4AH>ءBaq0.q]JF`@ʓM`=@Z$tA$ :ۃA3A/~H@p(8@& 6Kn F8{>?8dKlÊ*`J=¬L8LP4;BMsk9 LCAҌ0͈g\Ϝ<єM, J`KXMTB7jو.30NΰNL6NtLO9OQO |O܌O O4O <-O$9]P)APTPPKP m PPe -QѶ1Q }QhѥOџQQM ќQR"!04%]R&mR'}R(R)R*R+R,R-R.R/R0 S1S2-S3=S4MS5])8"SSqA1ڔS< 8S>Q:e;>TSB=p.QDmTRT*aTG@%TJLLTTTQ}SKLAEUVmUVG;U[=R͑SU"}]!V VbUc=XMVeeUfmQ5ThTiLVk\ͣ# leNlM\ 3,qrmP&🙘j|Wp*y#! iQ{~iY3H|<}]~M"yGȕłxJiơFpYX"`I؄(PX>،MUЄ'5#ا"02+85z+ͣżM8:zš0@_[#Mh)Mx+#(*=x$)J"a[s[Q12%Mp.(ĥ|jǥ5pЛ*W*()Dm]@ΉW42Sأ?2C衭<=&(Ju߹Z^ޫ\"fb-BxA-AAp(Ah(@,A`.r/{Uߢc_ aٜ`(Ixp9aP@x֫";x "10_[ V; ^o+>ڄEM(AYA3CsW #&~5@X,_%5`a0ζg9\ckc8.12cn%vMIv;F.Ǚd9‚8=EGxR'Sv l3!JƉQ&)UY3`)XΦ@K^C+(lN.MP=dCpx Mc1@`EA(HC;P͆"V o;g+.gXudE8]ic7:XL"l;`;86.z/ Gѹu>;pifĖ9Jha 't6h @(K4}i8r} I> =r8Cqi`iY98@9 1Ѓ5(AC( ^>@/&>8`Eb5fi>ApE8.;KPk$j`!q%Ch98(Eh4 CC.9"94X峃5&65nI떉 nۃ0*9铱i68@&=(j K=R*BE BҾM3Mxi/:X:GЃ-=.l=p3Ѓ_16kv)p5f%r+%&'A`/&(Y.G.p;2,n#&6(x.X,%Xa1_ )0+8=`C("+p.'.@% )Zf-Qat~M&(7=߄6f0#68:B0,0#Є9M08 &.09,.%Kd.0;t)Ar)8ǂk{rv/#1>J, hf5m/6*f&3p)yfF'/v?8s80+&IK..P5`3x$.(r!#Mg+ЄBXH#h=8'Xs*dfY)d#ؑ8PEgCЄ.Є_ރ*(2%tM&&@,e^9x(;8o'/0zvuڄ0+X1s/XC%XPxM,%0z'h{h.(t,Ѓ+z3(HEgBg%Ww6.@YV(H/*@8E6Rဎ%@;IuX't(𮎂w+ Y%ؑ;">>dY#3ЄO|>0"h:g9=)Dd,ˆ1I%4X69rhS&7u c Mk8ڸi] Jt CGm%;&7 h)H3N6 J=bi%0iܸAGGlHLL)k !&t)P]'0c q|=YJ\Xbr 1\WGlZt䎤(m YRRU6fY>iKJG8i01K.mEƎl Vi(u6UFGMRqvђ3? 8 x % : J8!ZXYrL8Q]\&Q\pmmW\AwhU(ZLQrXKTm"PyP ŗWqg!F{tqa#Qd{|w|DaAs`Atb]7P[z܉!1Ka !l(dPwJ)mr1QP]Q$gq&]z.UTAiЦljzx& –Av8V["fTԚ("Lyk4„!njIkDQc ERa !!BD%g,EMg(TW9^4QJ! KeCRK,^ QHW.2A|wrBe=vAZ3>N7ZK~sgo}p{??ӯ~SV o!??  &. 6> FN V`aLl v~ D ՞U⭟ `PDP ^ R !bJMNHG^!fUXB,y!J]Rj!a!}Ӊ!EBvM !  REѡ١a:B$N"%_$!6"".TV"))f%jH&t X l"Ԕ5:/dd mD0IRV (AGJO,% # E. P H=IWJnD*vY|-0AY:R[fpYҐ$0ZCBЁ$PFd&S2 ۍ$hA i6a#6vU"_?BbϡCKiA@HA9hfhrGW׽U~hWtELYA{X`HEzuM&zgBfbff gdBj"I^eVF\nAY LBxZp0AW\&LĄ#&pT(U]P&l@pA'eQz( 5ge1fk7"rOdDF0HD~dni L`Ƹ| ԙL FTA%ջEHpEFHciHRHTH%l`U&]Hd@Vϋ~Q [`H؛(KHWtA^&lȄ䁋YAǁFLhˆ4FO S:%L @A @r⦆b&#HQDAA:IYI.qxȽA] Lsυ#hMZ`XIXRVld @| &xFIG <dI"`"hVTAf1pqWB{DUAI|X8OIЁ%(G <Ŧm0 4cO6 Hz+aqIiJk"0ZzDA6H1ّvqWvDG]l*.n*\9(. cV-Z H@L& lZ^_ߪ$DqRa!-4H0UYLA6ͭ*͍Aծ*#;b4 ` ul.^dd// h.)FRi^oAh!|ԣqmjj`j%Mm gg0*p=0 _%/$,1 _ c 7bWVsMp^eomqp"1URűRq1߱q2! 22""ױ!+2 r$$q%%q&#&'2  /Ff 1f82,Dz,2-ײ-2..m 030Ӏ *//33s1`2Kp3W5gO4ϟ_7 f|9s֐s7; 3<׳=<6=?a>S=3Att3A7CBK@?4EWE)4Z4GwaޕG4I7HKHJ4E4KǴL oL4NK-LO4t4PMQ/J#)5SGG;5VJuԴVo5WwW5X{U5ZZ5[[5\ǵ\5]׵]5^^5_u5``6aa6b'b/6c7c?6dGdO6eWe_6f_SX[!h6ii6jA6kkAjǶlvhm6mnmnlml߁q7r'r/7s7s?7tGtO7uWu_7vgvo7www7x{XHyKBy[$7{{7|7{|׷}{7~7~7}/y+8/?G78T_8[l8k7cWxK?x3xg3"ս8Ǹ8׸8߸88ktF9x'/97?9GO9W_9go9w999919ǹ99繞9"޹::'/:7z#GO:W. go:g:w:z::?:׺:3:';C ޗT:7k围O;W_;go;[۔G:?;{kR0;{@f3'!(׻;绾;;[T㸛;<9B1VNAaҬW{b%B \ELݪg_<ɗoB"ޥ~|ꍼ69!M^XwM|VFD z B ;#T⁶= !,J TکW6j֭] ;ִ@pM8x2c C49Ë=CB  /4ܐ=E$ `( @cKM(9(!8C\dRbJN =B1HP`,B*69+6顄66M M(AAX,d,DbJc9 +*oM0C5*MM 1cMu1Zd $R24XeZmT,I18(;CN)fȂP'rJ9N:I@1(F`hΜ(A tSP)HxZQ ]41كM.8+T̸M-lզ\M>U^1Kȩ8bC\#QD6Ѩd6 `at(Znk5\/`CQ6Nȡ#Vq6(M !'CszPg`!ʹD VoQ#yҏkoS31'Ֆ-5V`i@A*$K p)uQPH{:PJ(iK W9暣A2bVLm7aᄣfXM #XѿIcB4TJ1cd4iÌ30&or`71|5 /@un*aDqD8 QA#b% b+(H@!5Rzb&y!IDl#/8B gBȧG.b3 \c2!zf1a#w(@5dqXLjD#aV@ ^ А 'PO(ЁrP1-Zf #bPju #N@Π%v /X 06( V+ 34PMb _"pH m?7zv6[]!qDpET8" q)iEc='IQŅZ!!\‹t+ !8RLpd~ϯ8bƁlz!H'sPaE."{TJ#OrSQJ$PZ50H%M}T'z1SJZFVY1aUZQɪWVY)6l"kSJ`8Jw*b}ג*d-2AI f_)[ZӞvhY JؠWGz֋u_zsgGվ7{k>wwyr} _xWx?)_y_9ygEnҗݧGUzr}={{vumۿ?|jF~|;ϗ_}_}_~WcnK\bK! ,   #! "##$$%*)'*&(.**,..12/2,04*1822383766987>39>49C;;<>>A?ACCCDFFIHHFFIJKKMNNQNPRSSUVVYYWWWYZ[[]^^a`^`^`ccceefihgjgikjjlmmqqornprrrtvvyvxzxxvzz|}~~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ9-H͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵץ9#iٳ$]۷pʝKݻx˷߿ LÈ+^̸ǂ}D˘3klϠ+sѤMFYj֘][gڗm Ii޾EwƉ'Gp紕7tձ_v9ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`pbihHfl tIv]矀ʤj;袌6F*BJ饘fvq ꨤjꪝ꫰j謶럸8InZingk[TδmҒl$Bmh7HM N2yLB! @y,N 7<,m@ml$y8 w(8q"K$3t0,ȭ,1f ?1j[NPm$ł#s(tP{8I$YdϬZ  ֱ$? 6Qm$+vf5nӬx)N"m jKN}69Nt˹ݤKHqr/u7/u|Q&Q >eIͼr鴉!Զq1hY>`-fn]DPMY5/e @" ރBE6%Ta1^ ˥}l вU[6R}$̦}$0wzeԊUM@ Dw bI<d00y.)w-U; ˍ37nbyssvS4;VW4£]`7LjQycV>1 % N->6WDX7IH-j x& ʷ3Җ'tD@$W44;)5dsM2 gٷ-7 w0ڳ5%m {rpaw?KY(⾓2 b#VAs.Y0A/!V>Irr72WtHnօh#Qk#0.f4r{=>44u5ʗ}NUIom5S.״37Qʳ_8N6`2Ld~0Ob8D0g@#MbmWtT iRYyWH};xz4?@5'1%hr4̈́[͵aV!PF?6Nf:=:efmGK+/P/+pjҳN :6htm u<\#=g=yCzkdgQ5p5 fXM|fQ;mQb KY4A{˘~jjF_:.Fw8vC >CUfラ֊+}dCw0GRchfqzitzY8QcmZjxiw PrAx;}5zX}>X'UzDd7Ѧ23xWFXz Cr}ouvfئCBHDhFMfy7(Wf>IwWtcF4>>!e{E*54f=/ CV l#a ofUysSW(tMgLvm`tMikӏSxJ1h181opg]vIvpi?җZ0az򅏁YWK0aV1 (] 0icEӧ̈>bu0_0KU.$FaIkri@~@RA~9YWip'=% ]/d[Q%ve4% U2 cm@WCI?S%Gq[e6AofϷ,YPu8]ٖYqd^7 vz@TwȚ NC9AS6h4\x;cN[XAcsEa`N> eN:.qWIphUPrI7 n@.HCѷ312 44Y>4s S1u\c1;Ij0Y|q5rw8X}/ ZVhe5%mX`ke5240ڳwz;UlTСVoRV!FE:UHC.:j O $P]Y7zSY!QN<@[ xc _Z[davoTxdWU+EBYZ݂0R<~``gڣtPtpa4fg<`O.ž^08ao@/^iIPhtZ4VcyeX)/m0i /~k|;4imPoN{h f@;3u`vk{+ų4§>Z=,;8>+x;=d9=S;$t$Rzԩvú!1*x"m8C 0hQcLAk[AHyu^8mPd@b.cMzn+5cN!["xk,,."17+:|!"hR3D !=\HJLNPRӏq@]F}HBDNP]KQ}X=Z`b}h,]ajpLq+rz׵L|؂=ؐ؄؊a|aP0Ԕc?ٜ-ю}}P/@7.y0P6cIc/u0lۺ П}*vMcx}y LUā`6fQnf3mϽV-{D? ;@`Vu :u Wέs䘱63khQݽ-l ]pCF O9$c%~H'n)NY wmL2C7pf= 0)#bWt^}skQ~JW`;WR@Sginkᤇ6:v^閮K^z.&θDg1:T,W7ap6mZ^N.Nh 3RB }Whht7z^턑qaW~j|\LߧN>2̮0#i6~ŕ ^.3]+9upM%m mC\o.sW@~.uup@s\͕2c O2=5$_J?1 2>|"p,X7 0a:*\2Vs`{/ٍA@$3P@AqѴPߦUߌcz`+vh֮ӂOBO {x_?~.ۡONn8]ՙ?COO_?Ο:_/O@/*?<~ٯ$XA .dC%N\)"H5nGH($)UdK1eΤYM9ugAI%QdэSQNZUYYEPL%[YiծekWq!ĸ]y_&\aĉ/fcȑ%O\e̙_۹ҶE&]iԤ9{fMdjرeϦ]6խus|}o'0n佋/gsO#׭:kŏ'_޼Z;?{aW|wOp@ ο>@tAL!B 3I ZPCCqĉ8 ITqE!4DRlqFkE֎JF{GpLG4H$3"1I(r%jrK.˪2+zK24/ íl#K*Ѐ334Z5@a4X")fJI`1ڀ*/)htW^괫OK ա$'@4Y 2Z*cA?x!V֋GHȣ YVIBt'A;v/hEǀ9j,>|Z j}ޓܝd',I cB"~C,XUBxEЀ {Y_ 6aX~tX6^n !Ixt= aVa:zXaxEJF%ئIbPvtx!&iP@G¦P|v@C|2DnHzWhX{{2vh̃^ M@ HV d]IOhthZ_ hmVH ih FI ZЧE?@*7/2V:V`BLbo @$$P@XDa /X$@lR&腁܀UhcV* N!!d3 $AqЀ̗R" W ٸ'@jL %A!B  @+I bdhFIRjx)V@X@dQ.@R0-O H "/H y< R !A9?@ ,!)$7CY @y\!NeHRFID32тR @A* nІ<`a#S 5y!dJ0!@VO@ǂ h0I  @f= _3bJWxuuX(!? ** @#UqA Ɛ!#K%[?ֹ2!;aP(m|k^Pjr~dցmu*44HKpAxS6N_aCU ~X`P$- Բ7~m\$wq̻:| `-1RY,K,/?W(F0$K 1l B- 2fq5w% 0hRuswY"xX*^'@Gm-}iD3t=]Mgҟ&uajpԫfuZPmQZֳ&˫jZZN5bJZ~Hw3gA3[P`@ mt7HMlc%?H[xY|n|:NBHnz[Ý|'J w\pg SK wzgQ^\' f8`!`v·0'ݍnyyO8綋@Zm!K?`gH6Evqh!T7Exy 8A]E\WD!z!+:I1l 4G ߱lg&`͓0l[w-/|_H.r$ @` I\XH\Oy_z (೶N /^Ü6 aD}Od2A8(bV$@\AHƹ? n;;;᫷ ܁@ #d Á!LA@@$𼶣A-$LKðEHƹH#_"(Bd1p-BP;;4#  " I`<$c=?DDa*[: 8!,/@:)"r#((?ȃ;PL ~kx9FF/9z@ ?HxI6ca X9e aqƔ40:@yIХX16Iba=*H3)ؖX/*(͂?Ip-)&y,fB/*.H]TzɁl$Fu, >&*)AP ہ(''-WOՙRˉ (BPBG "\quơh'y|܉Ԕ("*???HJ6k*^Z1@?ȬVy<[TjiFxpx!_ I]$bKC}X+ɚCIFp?H2UE('`*3 ;óJ B̜@8}aHU_ܭAaa!R".b'=bx2 `bՍX(ne F▘#[a>= 26Cp*15&I7 <JQ BVIh+HCP ?,#ѕcl/P@cXIPi~:dM]A`,(f@SdC[Oa680y鲳h:@:h6p4jz6:V9}B(y7hGPF%[֪:-e6u,=PނP)Xj%X^6@z|^BhX9"4hhq3 1Gh21-< XA>=>h-&>?78>g4E`>? fBȂ*Q)EU%~1p84.yB`d7h2g96A83QvAXpGCgFx*k~U!9Y*x')hmk8LF1:zA9&h83XH8uwF`u|vtgrɣF"Ѓ'h"C A9zHIX]By=x6>/FH#c 8srIx! tՓ[ײ/,@ 1=A$hkBA wVc?pbs<6ˏ^B*vvIؗta$19hf7.W]"<$YˤIO$HϤ*c%hH?K \(O< fiR''TMB,] %CI4d9I#t&"R4 YPiC4U PH43"/%gH]|A±OEx!VdZcl,rSP UGs]NHL4u<$!_d_ Arl`S@xW#F5D~hdO6ƟҚU "FI$d;Rb'os5cO1;9ǢgxH᥉҈~9re !"vyhz$-Je3"ɻ1!M䏃5jG[1F alUW!NFF<UU %j \ڃ(\$A]J#C2Z `.|! cH0)6 RçC4b C@A&dX_~!a~D0I Ԩr;AH  xL HֲӇ!q4H`g$:;X9 a(#ͧׯYS0ݐ'4 nUE:whqnk?8;MȫLBY3qVPWu"WH uXnEZXc.f !N񌮃\w.tC?!1̃OSt5hѳuy ;f?;Ӯ^ &vӽv;ooM6w?<x{xؗS<a3>/};3ms Ϳ~h6X'}Ks`(u*?`ޡA I `ͩ^نF^ fU -`-\j nઅA >k mg   FNnaaaj 5z! ] F j^!j  ѥ&( h  U3} %^hHM%X N!)63%M"*F 8@ @-F%! FYlj\PT3#>~@# 5 8 D $"3F.#lagXa+yύQԝAAxKH$_(Z-MePpG|ZdA AďIS>e U @b5zFx -@-FDJkP$gXEp蒥4$tA2XT KJppp\Y8F4B$E9< $T,YK 0ŒT&LŒUT&kT &lVeWv@SL88ctɗT`\$A=NByK_BM,өUA$ EђBT'@@ \pAD ,`DpGk'(? !F$Po pbbj!M6,FLA3%JL$$Ht]A,7LQĚ5A#8AABKHBcO$4,…^_DP\6N?ʢi $iDm ei%[HXLTJ$ADpuJA88{@d Q L! Az܁8$LAMBLLAC%,n>)> Adrei |H $>gDiTTu@TD;h|A`QB{L"$tflMB$L@ h!@|F|9Fh%xօ}dY%>KLV\2z%beX @Pi"cL$D $Q kgO APݺ(A@ 㨦⛗6 ~Fd%ATv&Ղ"$ʐU-K`T2>ALSpp3 _}Xf^`5\m~bL(&h\c6 k=Fm9N}l|[! tqb$NX [ƫ2h$ @kA S]:c _*>/)hx `% b*okLU'PԖ B/ lajQ.<~/pݕo v7+)v<(ofo0]'FPNdVd #\o{ 0k)J WDp*/1/q+1/?G7iT_1[qil1'{1cqWKq?3qCo#oqFY_ j 2!!2"'"/2#7#?r,%W2%o1q q2(]&Kh(2*?+ '2,rr´22.r220s+ 32'3sqrp*34G1m4_36531g38sm3mX83:9);٭2<׳=[<=3? 3?4ApG@B/4D4&4CGtDAD_4ASY4Fw=k4^qG;]$Ik>dKtK4(+(l]hO4PP5QQ5R'R/5S7S?5TGTOQ U_5VgVo5WwW5XX5YY5ZZ5[[[$tm^^5__5``6aa6b'b/6c76`W,dGdO6eWe_6fgfo6gwg6hh6ii6j6jk.F#@#Զm6nn6oo6pp7qq7r'r6l7s7w =tvtOtWu;7vg7u+ wkwww'x7”wlwyow7wwv÷u;:}7~~7788'8 7]?8GO8W_8go8w88888Ǹ8x۲縎8899g'97?9Gy5wW_9gy/w99r99R9[99׹y99?::'/z9?:8 e9zo:WXT::"lĸ6kz:4X2纮:k ( ;;';}o:G. x m@5p>; !@. E\;O!@'#;FӚݺ;{)^l{'o8p ˆ/_| :E]cȏm<#^ǛkL؅<|Ҽ㡼߀˼A<9Ȝ|dz9J \=2rw"Dbl΀$+9=NԳvs#FO=߷y ӍnxkDPL5c$#@L\ǐK[]d+XX KэAK$a:ō B{AġI 4h$ 6tbD)VxcF9vdH#I4y:+Vԙ$/"P ͤ,$V(Q3$?7P c(R2iЋ~&Az$2&1v5HIzVFČLA ?tJ!.q6>ِd(HEUR 2brg/bxiL餕RG!!HWܫp0wR@07RG]< . L "Vc K$@Pyà(Q@6eVy6cH`P%/|\M?U_=Ėba0-f DHTB%xEqA$J'AP@j!Bhʎ$X@QN1d!N5l:'^C"84pEDӍXA~!\p0-jYX-$Jm=X Q1~ TL .p7)i + Aް /Xv nRv`,pIxAU){CX6ep0 8e4sAT$Ӫ2,K (b[",= f]&وFTSH'7Gr@fɮTb!2\OEk\HI' HbϩBHGHrє4i>]OJ=MH {iVT'-(Ls3QjԧUKyA"9̀1N'B)ρ2thzш~!iG&QNIPkt1Lu2hY%eNF.-GiZTuP?T`U?u:J"YjT~ PAΪ[UZʬI(DzӮuXXԲhIk[ [Xr7Pl X>d)[YJV^ciࣈ,hI[ZӞUmi!QUI/zny[pb+V;[>_F.5_[njw'BW׼Jx+^|[_~_ \` V`?)\a _9a!I\b)VYb1i\c 91Mqc=I^d'Oe*_Srela3q'x5.pwE>r~Fyr/we.o7ǹusuAЉ^tIWҙt?Qԩ^u_Yֹu@{>SF{Gv^oti}w{K|'=xGth7)_y_9yI_zӟwNTl! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?ADCCDFFIFIKIJGKKMNNQNPRSSUVVYWYZ[[]^^b`^`^`bcceefihgjfhjjjlmmqpnoqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4Y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9S#=;T6fgHpƯY ZRyHB@yܻ+Z 68Al;@bfI0+Nh  71!7% /KL1PqH` Ϭ%bA@ ͨ0UJShI#$[H!K&3-wd/#3]-ke_6xf6|q|o]ܠG8avc6d%5dFBcNq2.nJY\\d;Yelf}bl!?d>8m ;C>^+yB& %( Y2Vؠ nWXb|* 2@ VI" @xCn arkX@ U,`7B)SD26P A H@!B~* ` !X^xx hR0|yr% j|  .8 JpA D,܌,m \ w$@p>bVɠ^!B eva!oT ۍ&|A!<*% &d5Bze0-5tHH Xf  jh *,f^? ]0.0,@氺6Tw iNL<)OqA`ccDo>wgVP8[{2h@GIq E4F L 1XGٶ~d1gܒo9b>:Ms jpͻ`W?lk8NS=%ދc'*> Z2}u[Kt񬸔mjnaܚ]Rp1@ ja& h\H@އ{g:%\ PtmG 8p7n9N}D;wܲFXC _56u(ac:.Ux{:F @g A С1^K F>Dsrdz1~BLߦp0$*d 6.b0pH{|<3SQ#|ҷ;NToP|ɑpaVp׃~߱.Jpq+Le~NW`&w`GVz2u NE\Cf6gxx"mGNxiQYwyWUxh G3Cq,F9g\ s3#HLpTe+_.i0TjvoeA>/7M\ユ(<2+jѳN1]7@.zRH9w<\ <!q~/;8N Gu0[րdVH%3%iXNMTGS4,S`b60ɓGEp1f4U=G_we+A7m v$Cքz6?7sQR'Ziri=SlpAM;4 CHWECPd4'hvsC2U5|WFrXw3Uf@m 9,;XY}Y6;c0A>ado!if+T vtR~:6;!ensyEX4`N.lFepeS#3w ka0YTjnWl`SU='6lF;HlC8|68,&5|og׳] gmI?V/șbq!{u5Aو&hbEˇDPP2N4/h bW(#{T9XVxrQg0JEY]D3]#H\ ]!(] bm@QCF?ʥs0Py}$fn1|([ZNGEh'Yq|tqUPљ~aw2N50.0\PShMdi5|3𒁳VHjW}(*5m0yp4p$販"W+N " ]ȥY?ÓYQN<`e[Ru#E*[ fvT ;cU+E"h.omڬZقPв:[ ;yPt`1-16}bb8Tt/vg.g]upX0յb8X*>r"ci{;4qimPnN[.ge`Ṃ[ekGg9/S='1Ѓ>J7=8o9{[ <5^CƺûsI C<8 vIӹ#6W/dfa7\5۷ s/ꁻ ۲T0"I{K"_M.!fNТ! <-vmۋ3{*!6+M_ٻ6,!-\"1;\t@D\F|HJLNPR<Ŋ,V|XZ\^`b}\^Y[d]f *Q}npacv}xs 'k]S׀؂{m}r=؊،}u.PMq;z؜L.@7.z0PbItc.s9plۺϠ]]yLt06dAjݑ؝u! yD>E;@[u;uWm 8'i Tsq:h=tfAj3 PFW9`rMek#CvGڈ㝏J02ad1=$m=vs+j^ CE O9hDYH|q! 66gKuumK1>6 f=F$#`Wv~pj ese_P\6M%Mϕ8eg瘞騬o`Kv9 g,pW'aHp^tP麾넝 ragv) 5NBsHߏgS3؞oAW|JyS\D8Nyf1Ў19`sfWX An5еS^N8]AP~` J3mq-T!@vR ?k3å\9+)TgCXNYd5<^0 lU;>d >fnp,}om {ar oNF_r/z1Һ?_6oȟ?4OOؿ_џl??=)?$XA .dC%NXE5nG!E$YҒ<$dK1%E$3fXai /fcȑ#F\i:LmgСE&]iԩUfkرeϦ]mܹu锖7,qɕ/|8O^uC.Izvŏ'v{˯g W}˟_~pTpA A +  1CCtH PDSTBK$ncq[tQiqGFrqH"\G ]H&t A }TS| \TMXoh2qHG hxjpswHp<#xpLg\ݸ.҈8|&'9Co|;fr\Nl X2ϝzX@ @ !4H~YE=/THN%:C|h;r@HqCp<4!|m!>4wi#u4b  ~uΕhK.My7D^!X@ bl mp |$.+$D}k^"/: |Jz'T &@&L B60;+(>1N<*3`; :ح<@Z \0$:73@d@?Ϋc",S,(g%X@Wb[³" !Bx`8*99c !rCh' B {<- B4[s[ FHӱ6o"<$=ª*DRBLp3DB   ! @8ĿD+EcLS䓉Z:#I>,.A(!Ãh8t9 Ks@ÜL@Bf Y;¤L$DE8JX MTF=@MzM NL$\IΡdNdˎNN ONOܲ촶]BMT8,UDeTGԋTITTKԆTMԫATOSNUSuPuQ=5-UVTW}LUSYTŖZ0UUM ,ĈDVV#K L5d}Me}D$(ЮVVqb%s9tYsw{R!iy}V׆WiOKr(;ȥ`m RxxKh!D[~X: qJp). mj051҉q 0QjdY-tم"/*1(U,(1h,h:;r "#hT58e"x =?hb?Pq 'Y[BPӁvr3 Uq:SWQ1200IY(*CBڞT&0)(]IMg") @& Ί:5{FU[9#Z/٪TYŽMCS` Gph~1a?p+;!:  X5mYJBp-KPB]@8aF$$aE[ @aQKVYU5,S\#Xbbʛb+>S,1b.R/~*X&*c8Rc6 51ƈ{cs0Nu$ieHiM:p ,F䥹8gmdT'xch5HijbPd?8qEq$pD&:(&@) 䂨*(.Љ,p0z-f6T=H^,$P 1Df̆ H bQt~:ȾʘX*,f8gdE`ZF88;K#BZ_3Gh&@:`B-hĩff:xhX78H`S%Иg3@I ?8* q5eaqɌ>=𕙨5d.6,Ⴡ ChiRA>1x6,/3@f@B`6=?8658ET~3>n?PE0,:IPj#Rc%C@7& E@1B؃BZ710D3h.3EMKx::mnPiI 7>1$ZIh3 >}N^<@&hF IHhWq6! lP'm t$ho:`Gt0%d~&ng)0L#/"=pWQ!P1O=‚ Xi/ش7

        a? !ShKuARĈ4Qd) 8XKƍJ, )&$D6dƉ$KkHz9HbBQ cF]@tbf"BKTBbhBJ U(<P٦I̓x$$b RaēG<::%EC!gTV:mt$Ng`H[SDBXFw6"QNDu {(hJ<ŚUDtxJOaDPHf0i+YRH#x8V)1\ucN$D/J"U$$ƞŴ#]fVsrERqD!m  XmJGG4E"EԈ 17GDq QQ\%< Xe0%$!-dY$P#4a1Id,!l^*G`ʾȦB%MSX2(eb! 6!FCL1#Ϩ3Q<`qBXO CYӄ),Npb*# MT[ME*H"p\$9'( [@ӈ0"l])& O)ok$`nD{pm"]Poq ågN :KH QJ( )]tQ 0SbaLfJ#B0p)pNWF8 ]D M%-5B@b#I0 C^@Fd ̜l{D,(?Sxg`6W/BZmbs7s#`n "mx?Y"WD'ķNPD~Ӑ5/qދE cYECZaA 3(r9--lvYk#B0P"˖35g_GY6M0ۆ'vwnX ;;zCos;Y yچ]7v {( ?ؕ)A" A_d|F _v" 3&^iwT^\3UoivgpeGWs^qܬ_'ȼў_oC\?!`Q[.^a{^ƞ<#/S?<٣x1/??ӯ?/ӿ??i   ڀ ei=V^iwCDμ L"Gfa AG wؕ ^չ aץ `5  b N!V!}DuHBΜ G^Z!N:\ rG!:_[*!azԡzFa6#>1  %؀ |$.]!v0"$*"I 4wPA @ LȀ xb A@+63R+"w Uy @'/G0 ^!wT Y'Px3#>(=8JvP ؀ |cw|""99nEQAi\GNt _>Hr% xG4~ @/c?n8>$z( qG7aG!ښdAXGVJAA0mTf5QAW|Ų !^Q%!A] _ KwPhv؀ x Bk9$O^Dj~Ӧ<V%p<^h8F Aĥo)#0 oIALHaSdDjEhׄ` ^Ft \u`>&@b@] CdN# rǭA.eN,%GZ$mQā$SHl%p%A#*m\OGpLXHM'vtA- A!az-zxcy 'vW2d# ; %$Q%gːOE@UU A"T<PQI @ԁ4QTK#LEldYBl $Й(Ʃ% $7GKz/vɀc^dNO>w4LNWG m:Q4GƅuXDAӝi:mbH4qX HAA%HGAg%HAYdDHAMy] dLv /v C*WsTK N^%RFHA!ADDhg4Oq4B P"AXDDP ޥ@ hrgad֨cebt-[af!tWK]Vn2c3XAHvYʣSAHt%+N  v3JGv Fv,np! JMS4OnX%> I'%~H_~4o:Ef_0N~Uz-vv@ TcJkvP+9Z?nDzQqr@!ďpimG%0#PO!)vW¦v PP -!-"Em]ivG/ \' -"絁y ~A.ptoi v*[pO~220x80hdjy~0 Þ+Ү͘f۪p Ҝ c0O"bz.*ٽp 0 p0O1+7qC1eYjrq11q˱q{qwc1r#+23Ckw( :qrӇW((2))2**2+צfƲ,Dz#nqU.ri2rr 21st.3373>"(|p3W5!445w7[`60C 59s|ls9;؍³={3>?מ>'=?A^@?4C74%4qCO4E DDWFo]4e4GH' H4JGHKJ4MtLL״NkMVN4P7tOVubx*uRtSSkpTPAl5WwW5XX5YY5ZZ5[[5\55]׵]5^^5__5``6aa6b'b/6c/R!Te_6fgfo6gwg6hh6ii6jjwͶk6lǶl6m׶m6nn6oo6pp7qqU9#4#s;tO7uWu_7vgvo7www7xx7yyt;zz{s7||z׷}7}77대77~ww70M8W_8go8w88xG68Ǹ8׸8縎8899'/97?9G4O_9go9999ǹ9y繞9y⹟: '/:97:GO?:_:go:&:z0:J܄yߺ:;7Bry㺳?T,O;W_aUv;;{GxC#afB{y6;绾! Ƽd< ;EB/z4k'6&=B!D#HYG pF]You> >'þP%٤|dA9ADcO!x\2J46R.uq⤋$)V(BI9ncd6bĀA ̩SȒ?~"Y"P9aQ?5ziRK6ujTSVzkV[vR+Viɋ+HĊ%$vXE @,r⣤HYkq6(FYڳ3"d sWSBO, юd $~ע 102H~ .2̘0pCp 0]$ F^BL+t}zٷw~|Z"BO (td+,7ސЄ(6ڨXRi1{&s6| KHa! D dQGK a K ?`V DH  q" 8*+b#>1PxG.0Ar$hb0!rDJp3PH P $J¯h$Q Ȇ)HxR \:cʣ / Ai <ƌ5 3# &;̮@ UhBi…>TZQNϣ[[5hI4P-jYZ׾li یeIFp[\%n#@[Z>+71f^v[]~׺x ^C4Xa^*i4'Q_zv~_2go \x)U\u)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?Q\e+_YrU#e/]4E]jSթVYjWֱi]k[׹yk_]lcVlg?і6c.=mkֶmo[8s=nsV{˽nw 8h=o{ Ko_x=>pWp?)^q_9q!I^r)WYr1i^sG2yas?gyЅrGGɕt7"zA>u{Wxֵqw_>viWvq^wyw ~ڇG|g7͆|=y'?v5_lw~؟}E?_F}wzue_{y{_|W|k| 7$,a:H_5Q@! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?BDCCDFFIFIKIJGKKMNNQNPRSSUVVYYWWWYZ[[]^^b`^`^`bcceefihgjgikjjlmmqqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SB:5Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצXD%KhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9S#=;d6fwHƯ] 0 ^bzHB@zܻ+^ 78Al;bv0+Nx  71!7% /KL1PH` Ϭ%bA@ ͨ0UJSxI#$kH!K&3-wd/#3]-ke_7xf6|q|o]ܠG8avc6d%5dF CcNq2.nJY\\d;Yel35|G1To|G&Y:/=[Ґ h,1C %x"a!k] P+@ |* 3@ VM" @Cp arsX@ UeȒ`8B)SD26P A C@B#!Bw *` !X^xA hR0l|zr% j|0 /8 +JxA D,܌,n ^0w$@>"Vɠ^!B efa!oT ۍ&!<*E &d5Bze0-t@HH Xv  jŕ>+_ YK0,@氺K7Tw iN \<)OqAn Hah*2x z Ixl,ZW5lji* [E C0tapE_Pc B@8ig, :@;+Mp3As7B/zJ' X@]W P_// 吘W b3 $S 0 BVk% L{܁ ʲLM 2MB=Aҡw@-&zzȞ춎g/y MX۾,f!( a3 ];,\ $؝kga#,P:|HƷ<$ 2(`P+'kXYZIAe e`l&dj-FKJ7Fp/Lo\ ]<LSYvJ8Wɥ-v-=`cco*=wg[xpbٺ{AƸL7n@,8 L 1X'֏0жt[Rm0G SBSvwn|A y٘pmX:).&w{ް} 屣P4ZA]Kƹzk.0XhjpaܚeRp1@ jw6I@;-B>,S <9. vX'kl3< pN3nۍd.i[=>^wv)gJغKU7^F{`Ώs<bPkh2^K 6>DrrVl~BLߦp0$*t 6.b.3wt:335G}Men&Ɨ9 fw}@X"u T_~(qm`w_GVzpzr~0N`Cfp@rx"mgNxiQYwyWYxh1y41bɵ?@373$dqt *h"O!PF>]p4fdq9XRq~5AK+0/0GjN1]8@.zVH9𷇓C\ <!7Mcj"W;spda4p ehMzdQ20nPF1 KG@{XQ9F^@:+.fC4<}Hxd!Tj3SiCv e,iw/3?%!W~޴O0x;~^8EVsVw8:$[Us+y~aď&xP 9ȉt8HuaV^⃪8We:taW`f+0T ftRV96;!enyEX5`N.lFepe#3 kanjmWl`SU=g0UӇlF;lCI|98,&5|og]זgp9?җY/q /CdqgJaPC8`3z 0\|,ySv`^0$KO.!&ajpi0RW^3o(7%\/c[QLD8U4%ϕ3 |55Pt\:1 S%Gb[|Ȓ? v`]e=C8ZKuO@u3HUV< fpvCH4{+I;cNYX2[YMWg牸Y|tqlm[ v٩/ P/Pch5%nXDQVP#@G28+P(E!VzpRP!FZOHB.Z|rJs }3ܹ$]LNGmIV}XQ@^`[]f}h *S]Kprce=xzu 'mroׂ=؄}} c]،؎}w/PM;|؞1L/@7.{ P;aIdc/s9plۼϢ]]zLuؔ06dAj8=6ڽQu1 yD>;@[vv;vW} 8'y tsq:fcrfDC PEg9`rMk#CwG*J@3a]&.mMvs+j^$^CE Oh9hDzJÜr1 6g[vumK2>7 f?F$#`WxqAT~o;s[`hc%Mε8qz~|>~(ʸD󊗒yÉHwwm4p]xnn ~\*8W>~6q15~..td7uM n#gh6{~NٽnZ\+8vMe;3gBE\pkvR?o3•\9+)TgCXNYDnsB_L #iX@yB@P5N"Xg@; \09j!Gi? PcA #wi emo.}]pQ>alFzQr _LM?/`?ş̯Pί?BX_?l~-^$XP`#=.-dC%NXE5nG!E$YI)Ud%IzY&HnDOA%ZQI.e*4̝QJgSYnWaf|ZlMge[qΥYy&_& ^fفcȑ%O\e̙5ogСE&]iԩUfkر5L\[¹umqɕ/gU8q7^u>}vŏ'ߖ{˯gV}˟~p@/TpAA +¢ 1CCH PDSTBKcqZt iqGųF`qH",GR,G#tɾMIJ,JĨJ-sLDK$sM6LIH7NKȧs)=9 7&bP<mSONXHPx(':!CHQV,Iq@C@)U/p(=`ġFTUfXyb` 'P(4 [@ 4j[* cB@xAa/ ."YH:&B7D\@/1w0 'F P=c: ]ȍ*s+n AXu8^/D C(@c^‰^Ac7bnh_5+ kaF``v`yf/CHbVWSfd^XK긴rbP Y xԽg K}aTxXhQ_,tDnp(G.qHR1DËn WoQ骘.҈*H 8&Y!.Hv/I?@H!!fXHIWA|~[ 5%( >G   pB}@7ӽ`R0K`^pگ (@%VKрC"H`DwQo*:G&h 8BwOf+B P3Dt/w?̂ \-p 4 *0Q P8 )P%ƀ*t 8VCVpAB0 p"KTx p,VJ(AR4$BJP B 0$  CXV!/P%9]L!6 !c34`4PDP x"aUNV6@,h$R!aVh6mҕߨ A>7ZP%+Kg,^DVRN|)\JZR!qZ(]">`6F j`|UIp]6 zV"C`LjtHJH7. z$ׂ)pi_=Tқ )1" !B` zAWo@hшisTLY AzC!n@BJpI@zPX;Z5P ppCRg5$0ZT =.&C\zAB<>h!_ DDv ET T! C7 ]*Ta,xs8T;>0RJ1Cvb0l3ضUM $Fy@N3@@ I /(["X6#hgŁŹ!X~3E6kKʃ&C؏x?1fpΥ0t M+w7(P~('mFtt -z6u]T&ӯukֻ5XpYZ&Գ$b'[^tlhG{%Ka"mlg;>Lb,Tv@ְgm[Fг%b8&@ 0o@c7ٍk? @pp<O@V i /\x iGGk_8 \~%y@K w `CyEH(8H@|!7 C ѽ43у=d=V]h`Xs^ xEnpT"s!5%t7B  0˛t`͍q} ?8`q;z}By`C ` NAр% 8pJ)ӟ I i!^@*HH B tgǮ=1K+@= JF8?#`!A#y<A?<=찆=P,X(c[%X@Sb" !`5|B0Ao;8*H99_ 8h#åh"DB ;<(ܐ4:cdFHϹЗ1DDk"7\D$ 1PB<(>xۻ?dC h0`! AȓKpK$ka>NE9;ܸ;h9?>,.Ap(H!}˃(Ӄ3|==FtDa쓎ppDѺsy8+! 'pc7KƬ6i ̼UL|lL\dG@XL,Ȓؼ@`ԬX͞Mݔ܌MͦN἞,N܏DŽL\N謐NN>SS@S SBMT1ATETA}TI%;FuG=TLԊTNmN0UR͓J-K-2TUUVmUN%SX-UYUW=եRO?Q' AUKYP#V4֌$[AA'h%NiňVn q!}9'hOᖘuy'֋iKIGz(7Xla`uЁRhXxKh!@#}W;yK0˭)X. ir06-Rm @a*YLC'BkŠ.NZȂ"K*Kx)Zo:(p#'!:":ڐZII'!8?0^?PYæUYCPh$rr.~UoŚ6A\-0@Iم)C2ڛT&])u%I?Ò)")(@ā4ha@@h'@`!-"/btQI松畈yxBx`D`t`Z:K] ߕE%;2-KP,@ /32kF "ga%^R]\bƕhGM|U4tO[&V7'`bHU-+0 c1R2,Lj?SmPҐ9 "8~\~, 8cEP^b6987A[i>4Gp&H:B3pj.:hT8H`P%c2daƨ[I;PŘYDfOq5>`@֗F(/4`i31Hp12.<8h@03(K@ߒaD`4P@e88?j4Fg%PD*^@(?ֆ@41hP41>01`qf?3:87aC8aṄG}VVfӃ h i47?=&p>ꑎIȃ0h;hB%FЃ!P)[d*qu* q#s$0Kp/KPe=608AG@&@1ݵey;o6!4!5FPK#Eɂ#@@8E@|G9o#xxz%Hq\,hs*ȃ)0( '!8Eᇾ,K0,6كv1ukkIu8[WtGBHMa,xn$DO3tRp qwx3z>^:>,spggKa΁*_mGE' ǷHCyjo7ÝjqbӼ6ݳHDBʾ b1F?+,ա!$~gZ;YI[R$ɕ^:˓s߇>Gk؋2NOi{0WbX;`u3{I4?x=/{3>ݧQgg| >/??ӯ?/ӿ?gޅ &. O\e}l_x<] fF_ `<@I}P x  τ| Š!ױ`5ڌ ҇ ~^!f~TwLB֜ y3s@3}3A'BAw@KBpD( ă! ʹDӫk`B8)>Oix#x#B$0BlQw؁\0iܕIV(}5%`XNG< Tg0!/b.ҥI^Pq.tЍ']&A'4YPH ݈"< -cǐB@"]*P#:aQ%@'6ujTSVzkV[vlXcɖ5K+.Zyɋ+HxĊ%QzE ;.uA" xrR=xd#nj.Yb3V\ PqKB:lnj+ tI(H< rHNS&̘0ppM0]$KF^JL+u\z~|׷~^*bL*H E"9b+.@8(7ܰXRSH2(=4{ 7| KHa! (.١4~ $H*H1hLI IR*3RL(9Dk-j# =BAd* 6, 4.i$R:6 yD̄@B =Ѯ"B/#Cb!R@2a RXįN,+ᅋ@!Ƅx@A.(aF^H9_"J) J%HxK /ѣ<֔ 63# 2>L|ݗ~-8j˭KXcU,JBJ#R㒞`fC aU'2X[ 4ph\F2*+IOJDDhYk:$Qgɧ?9Q~HIಒ,JWQl1Li(`,DGSp%uiY|ZSImHTl*u*KJ*YժtaM E%V[UZQf9wuբUKZW(^ իX X>#hpJNqe@pkqMsΉ֔FU-W/}li[[no 2v55@Ur\>miW[]^>=ȸ+M~/x[^lUozϋFm,v[_Z卣&%_FvX&ZOpEa*9a!I\b)VYb1i\c9ycA\d#IVd'?Q\e+_Ye/a*\f3'gVJf6us\y+g?n} /AщԡhGϏhJ_Xt9iFӡ5T6=jSOԧVSjWֱi]k[׹yk_]lcVlg?і]mk_]jnĭ mr{FUnv*oz߻o~[joGp?đ(q_z9q!I^r)WYr1i^s9ysX?yЅsGG:͕t70z]>uWWyֵrw_;>v G{=vq^wyw _xWۆ|=y_v5?mw>ڟE?fF}ꓽz/ve?l>طu{_|W|?ї_}__)Za毋! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?ADCCDFFIFIKIJGKKMNNQNPRSSUVVYWYZ[[]^^b`^`^`bcceefihgjgikjjlmmqpnoqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4Y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9S#=;T6fgHpƯY ZRyHB@yܻ+Z 68Al;@bfI0+Nh  71!7% /KL1PqH` Ϭ%bA@ ͨ0UJShI#$[H!K&3-wd/#3]-ke_6xf6|q|o]ܠG8avc6d%5dFBcNq2.nJY\\d;Yelf}bl!?d>8m ;C>^+yB& %( Y2Vؠ nWXb|* 2@ VI" @xCn arkX@ U,`7B)SD26P A H@!B~* ` !X^xx hR0|yr% j|  .8 JpA D,܌,m \ w$@p>bVɠ^!B eva!oT ۍ&|A!<*% &d5Bze0-5tHH Xf  jh *,f^? ]0.glG `t@5\ d\pNs`pOyc Khdp:s38%@:Y-r!aH@/ekB6PL`_L 0@(p^@:,@f!@@;؀S=KagУlJc`8j ŕF 0Z^U W&BM*vاaL@k\QW/`zXH P @:H@  \Hz1膀`%XF& TI YNIkxrdJ`/t dP ȃK C)qׅ ea xbE뵢w9$UL,HkP8oneۛQelbm,{ j. p\L$4 +F4lu<yg|-oWd1~ A uu|ޙ,f 'WX  0_;_ak@ dG%h(pX˳D90bLZJͰc$.ۖ2`7!ck@a dg5XW"hɽ1-{qz]:`*dS1uM.`l-Ah@ #|W>xb{I8l7l@,1Hg:U Z~d1Ŷgܒo9b>:Qs zpI`W?lk8Ns=%c(*>XZ2}u\Mt̸ujnaܚeR1@ ja& h\I@އ{g;%\ P tG!Ulxɠq 'GɕU+bڮ1%L [rlo;3zN28^ jM!s.X A!bC4('K~}g.n yC2 BQh2,qt:3457}Nun&ŗ9 'fg}>X2u t_~NW`&w`HVzb~ NE^Cg7gxx2mWNiQYwyWWh0G3Sq-F9g\0s33HLTe+_/u 'jF5xA>07M\(<2+P=D9x:ep"}G~y8CrCq!rgrzspdQ3P ehMxdQ20mQ! KXTA{V8E9F^@:).fC3<{XxTÉk3TiC:xpuh^({pqnG2`0hOh Gps.=FXu0e,scÒi=T(lqAM;4 cXWUC`d57hvsC2U5|WF#rXwIuT4f^ƒe3s?qgf BNN`G7e0c#"]v=WeAfp]W0Emq?2sy v6EEvF7U`ss9kCm_K)ks0̦1dwaRWFzv=qkِ{c+| _+'WJ0aP3X`2y /]|U(PP2N4/h0bW(${Tą9XWrQg0JE%Y]DC]$H]0]!(] bm@QCF?˵s0Py}4fn=xȇ,XPu;] ioTZg Uz;Tsj0N`nz@hdO9U34QVTZ43_T|K W Q ;ChQpqFg m;j#cTئ41s\J>2~8[ZNGEhYq|quPҩ~a 2N50.@\PShMdj5|3+MTkW ~(+5m0y4q$ҩ$W֮+N "0]ɵY?ãY QN<`u[Ru#U:[fT ;cU+E"h.pm\قPв: \ ;yPt2-16}bb8Tt/vg.g]upXPd8Z+>t2cy};4imPpP[.ie`[e!Ig9/S=01Ѓ>J7=Ho9{{ =E^DsI 'C<8 vK+ #7/dfa7^5; Ⴣ꡻ T0#&KK"_M.!fN! <-wm݋3},!F+O_8,!/\"3;\B }}E$]LNGIKV}X]Q@^`[]f}h *Sprce=xzu 'm}Uׂ=؄}r]،؎}w.PMq;{؞1L.@7.z0PbIc.s9lۼϢ]]yL؄06dAjڽu! zD>E;@\u;uWm 9'i dsq:j]tfC3 PFW9`r Nk#CvG孏J02bd1]&m>vs+#j^">CE O(9hDzJÜq! 67gKuumK1>60f?G$#aWxpj usu_`\6M%Mе9eg皾opK$w9 g.,W7aHq^tQ놽rqgw) 5PBs hߑ>gS3ھoQWJyc\D8Pf1Ҏ19psfWZ A n5ѵS^N8]AP~` J3}q=T!PvR"?m3ĵ\9+)T4gCXNYTnS#_F_= 'hX@yB@P5>0X7@;@\ yn%Km/ pc1 C{`+`vo1Ҍ?/I/ k_n¾y/P/-c,//`Q֯o// E_O\#@(O?io4TA .)ÅHTE5nG!E$YI)UdK1eΤYM"ӧA?JQI.eSQNMSՅAWaŎ%[ّVpDqΥ[]yUeVUz&\aĉ3Xh`ő%O\o٨FE&]iԩUfkرeϦ]mܹuo'Z3g`fsѽO^ݠDٵo{F֫c^yzϧ/}?kL 4@/ P@LA#|kB 3pC*<8qDK<}rD[tQCShkb1qG qDŽh H$lH"QI(R0&7 )r˲tΞrL2TTQL3t͖K͞Nr 0@K*j?*?l1*1 OHBu\@? r:0*10MMGh3! Ш*Xj6ʣ F0rdcov\U!O; |x"Ip "91]4*8âF̥"X.m aup%v3H0EQD  ЅlTQ 037Eh܍";%ڀ1up‚ .ȀlTcE^:-J`MÌ!b#6h%7 aH@$@ DE\hq*RʍtH 9^ 6 AHM6$ .yaB.bF u$ V}mP@K[c t M$(+h1]:!c2F5P")؈(ؚ%"KӜ`D &  Y eЅ Ey@XD9(RQԑx T Y]#PKLS R”')$jhV$(cB@%vU` A 1]+gʙf>;8, \A*Aqۺ"B  (&<7xPU|i d0=S.BB+ W bs@CA h4+IvE`9 6+DB5?moB p8JBlZ/Th#Xh ;z3 Bo {FC։q*TFtmspòxZI $2Rg?2M҈?l"(I,q좖[W#`.8-F *f)L.-'?\NcQNgAAB ! @@DD`lPC/9Â:y8<<\Cȃ`LGF^168~ 38.9?Ip*K6pY X:u`Gns H8 pAY9xDǎ(B譆C|(z3+ȫA ':ȃ2?=x5lCK7|k.7StJ4Shx)@ɋ<ʰ+D $ˈ+AKȕ>7LnjC@@kE?˸ʖ8XLDAdz ,X\MMbM4l< )NDNNyNДN tMǂ*Nl:OPOLO+ROO|OKPONMP^3OO}%aPpP0P - E ЩPQm =%3]QmQ}QQQQQQQQQ R!R"-R#=R$MR%]M=8ҸR)ReP+ PɴR. *R0 Q,-0=ӧ`ODS61mmS95 5=9h{S"S<ӎ SA @A=TpN3ETFS=Cm>-I}TTKSJTONTQ*LMM0 UT]DUTdQUUX/UOU[T\FՐ(2FU$˖8<5bLcE$@.zVߌV)q(w)uitAxq{AsI1Gm?nbF!FH$؁H]zFX"`G&PI84}~:8qJ). nj052r 0iL)\ٍ"V/*18U,(2h,B'«Cn'GF1K 1@'H͔l>0B`)x@JB <ȂXI C(WxJh^փd/x ?@EH?:M.H@d0RgC+孺?n~#@ƏPŵe=y#3q;<;:x6h4&6@FhƩg:hU7@H`%h3@?' r5far >=5dF6, C6 FxF4 iI3P1Hh1h).<0d@(i3iK@zaCX3P?H70?3`^k%PC*@8?FVD7&E@1B؃Bhj7 j10C3h.3mfKx: :mn`:H`g9ui6k2<:I.: P70F:,K9JȂJh<ѪG=4:8lB%<ߤ6t,3@0K &,h1's$J #=Fȃ!P&AXd*q]u*i#Xs$(J/J<308>G@&@1}eq8o5!y4芘!l2F&KE+ς#0?8EyG)&8W4f.u?3<BszWmny6s&y7af!HIHhX򊈂6!8P'(H&xI3PIXGh& (xJ$>'!Eߗ,Jp{߃0H ,5Y1ߏuxppu0XtLBHR1FAJ;l#v?HX2O!,iIK'ND0T(Z.;*tf=Fbؤ',9" F )GfrJl4%`LE):JQ$y8b2M)%9i# IHHEĉ):ytKyD1.-ڷs;Ǔ/=O#I׳o=%5?QR) e 4N\quE8E}8LT?5_&ELDy|5QtEWgk8QɈasU$% Z8]urH]F#MTq`ۑYфNASEJ ǁUl[A%YXE "qĄJrF́qZGWH2`Ez !5E!q'kc\q)D$Q`ѧ֡#YiU%^D8DEE ZKMDyDql>(#S`!TGQBA6" 5&biTbD>Tsi~qfvH$Ws^q._ONў_o\>?eQ[.^a;|Ȟƞ<#/S?<ݣ1/??ӯ?/ӿ??i    eq=V^i_x@DD_ē L"Gna AG `xؕ x &\ \#a {vN!VΜ$lfG^!Nʠ Vw0ᱍ!`խ!`[ Gr!#6#""yȀ @Y @xH"a!G"#"*"E 4xPA @ LȀ tb (j"dBL !*.#3R +w Uy '\/G!#wa%Yu"\! 6=%Gx~$Hr% 7Bv ̀.@ 7cw#C"9vG~v爁 ~0m^d OlV#lq́L`stX,pBTB YJH֥] % dBbxPhv؀ p `$wNGOJw ;u#lUu4HJJplDܚS=8A` AQۚeٖQ]]Ư^wtAv kn.赁y [~5&toi v*70"0~1*0y00(8^0G 0b [d" kC0pxL0e OӜۜ Wι-Oܱ"U7>1ٰI/Lqq11q˱qwq{ 1r#+23Ck x(j1 rGW((2))2**2+֪fƲ,2c 0'02/O&`.#1s#"3?3*s0s1C5_Js 3b7j|P389 87C`5;ss|3<׳=+<':`;߳?3{3@A@k>A7C_^0n3?4EW%MEo4GFFwH40?4J4i}tCJ4L4L4Jt0M4Gj4O5EPhICR+I; C5K/_{dWwW5XX5YY5ZZ5[[5\5Y]׵]5^^5__5``6aa6b'b/6c76c0-u|Ёe_6fgfo6gwg6hh6ii6jjg׬k6lǶl6m׶m6nn6oo6pp7qqqcϠzOI} T :>`B$M oG! oͰA(1=dj`AA {?zhd#x#B$0lvK[GhܕW @zΥ|%_XMG TAfE $'TX2(K#Ky1Ɖ. Vx$ %uF#ۈFa.x V3N!KdОBYGH|4ziRK6ujTSVzkV[vWKuVpX%/"P +Rh(Ja )HTȅ"miFڡ"%fdi ΈK7H]N At+F;ޖ2ӭL'nD"5rDr80cåA5]tBH,xyRM3aI.hXٷw~|j A=.(#F.{ PMjh:a?!? iAλ2hlV? K ! Kv( y ư nC CaB L+Ȑ"6Ì.dXA8ÒF/EG$ʾ<ܓ>@|1 ‹!J 0 0hGh@aHZ|*fH!C\`a Q2+K: !@!!FXp L l(Ϝ( *ds&L 9j8X#90 <"pͣ֠z|B˒3V0W$h,ƈޘF^An(H1K Ku8*Hᆊv`cd8lТ-6icJ@7WK"qVK,<*;J# ,Ì3p0Ę":@޼}垛nz!C$+Fa.ARQ7RI#RC;K̢eb/bHj ܃f-zjƶm6I+ -Zw@ ᕷ?7XAłB HmF*ш)P !xDt‰1tc|ΚS0s$AZЖ@tB_ " mA J <@ P%(A @55TKmCÒB[kpHN1PĆgǞHjzAXĀ݀B6kD>pZUcztI .Ko ZЂue$;O#d6a-\ l1V4: fe )h tm ^%" `a!1T*Yy/HjMBDaD#јFRY! xZ Dmek[r1i2#D hCPj#6͋"h"9͔Ae+YO{޳=i :r1@>!a~%TBJ2ԊgXO^%lΈ~ڴ"(X*Q1G=RS#$MyүTAP*8iI=rҤFԧ^jQZUɄSjWzU= jV4KL[ yEFU$_$`9VuUbe F rd}&e,6 JĮrehI[==jSZ׾li[jLcm- L4p[\UnqZ>эM`15v]~xͪ^+]RQg9 mo|E+[`VM{9x>)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?Q\e+_Y*a.xr\fiVsFѼf7m,=9y۝g?ϋhBLph:ґ~)]i.ҙ4S iOCӟ5C=jSթVYjWֱi]k[׹yk_]lcVlg?іij_ĥkmn+nr[Fknv{Gnz{ao~)p|G‡p?)GzOtOyԥrWWzǵw{/>viWvq^wyw _x~F|⥽xCwv%lW^ٗ<5ycw}=zuUkַ^ׯ=e?{y{_|W|?'a a/! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?ADCCDFFIFIJIJGKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgjgikjjlllpqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצLD,IhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4Y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n352T6fGHpƯQ RRyHB@yܻ+R 78Al;@bFI0+NH  71!7% /KL1PqH` Ϭ%bA@ ͨ0UJSHI#$[H!K&3-wd/#3֙]-ke_7x6|[9|oǽܠ{G8avc6d%5dF CcNq2.nJY\\d;Yel3Y5ÛS1To|G&Y:/=[Ґ pg,1C %x"a!k] P+@ |* 3@ VI" @xCp arkX@ UeȒ`8B)SD26P A H@!BG *` !X^xxA hR0l|yr% j|0 /8 JxA D,d{m ^0w$@>"Vɠ^!B. efa!oT ۍ&A!<*% &d5Bze0-tHH XF  jH*,f^? ]8.Rgl"L 9. U sSx{c#fO\@c$s֙K(qj @zi. `_; b-fP"o@9`div @쵼=B R;pTx 8$EɕG 0Zbu @W&BN*اal@Ы\QW/`{XH Q @:H@  \Hz1膀`%XF& \*J Y-OIkxrdJ`t dy~ S8Ai Ų0Pz,xV@WviV/ĽJxלZ r^4oG,lV/c4w,gm `!؃ePPtt($Pb",'^^!|7`k>sym?ֶo:$[ L+D,`vd)6Kp0WIJ v׆m vk@ d7)hD@TŲ_90_b LZJͬc.ۖ3`7!ck@b dg5XW"hɽ1-~qzˇ]:`*S1uM..`l-C-h@ #|W鹓>3ZP4`ge\pbHg:U Z~d1Ŷ3gܒo9b>z*Z2}uW\Ot̸SÅ ִoˇqupRPK{D IiAg,'a}|jvN944T:];dQ+{*(q3n pJvr%w g0ˇökL 17M\#(<3H+AdWeQ$f^&W0Ema?2y 6FE G8asS5~Hm_K)k0̦1d0ŧ`RWF{>ql |c+|z2DWJ aP3] 0hbEηFPP3N4/h b&W(%{T9XWrQg0JEY]DC]&(`H]0]!(]){55`tCih5Py}Dfn@xʇ,XPu;]ipIZG z;Tvؚ0N˳`o&z@hGdO9U35QVTZ;.m eNg.q%=e*W`tp޶3Y(9$8KmJ3>w_3s;13[ZNGEhY|qellXvة/ P/Ph5%mXDQVP#@G1=+P'E!V|oRP!F*OHB.J~%rJp <\;Z [/3:ߓB!;@]JLG}3$T]VOmQ}^`YIf}h[=Sprce=xzuw׀؂} 'mro=؊،/PMq;{؜v! T$!pCj+4N7;ٺ !t`TPMg`cCDfJ 3=!mϾ]={D>E;@]fu;u WM 9'I dsq:j]ufAHA.GaIT6P9dz7b640 ta7 l 0+3j ^CE O h9hD*D^ br! 9hxKuumK2>7@f9G$#0bWdr>LqjNo;ƵU`xc%MU9 kqtv^x&˸Dz{‰Jywg4jEy>Nf5PBsI߉gnW3ZqoaW}Jyc\D8Pyf1Ȏ1 9Eb@:A ֜s5P+8uMo;GDe\okvR~= p339+)@ K O 69_%J1H:_/ hXPy֨BPc3j;/ٍ@@$3p;?N^ R;G3w ifG|/fh._BmxQ>eO˒ԇcP< _ooLd?1ZO_;1oO̿~_v} _.CH? $XP`<(-dC%NXE5nG!E$YI)Ud%FIyY&HnDOA%ZQI.e*4̝QN-سUYnWa3>ZlFu6b[qΥ[]y_&\aĉ/fc2NVe̙5og)iԩUfڵDѤe4mܹu1lk&^qɛ|rѥO^!泟[wbg'=yկ/9zx J>D>^0 0 )%|@ z,(.X(QQb <  ] u< ~z׼VB^BQBzX nł(LZ'> !5ŐԀd(8v ., \ F/.B85*^ /Q Y8(|1cȷ(QH(%FZZ"*nJlx0*:))rRT$Ac QJ2+R"| )f886iPr M$T qT { ݁5Cٔ [U8|y Cڼ6օww)30OHܠi{/|JI $PxBm[/҈?5&I DY؉t"@nC^Yа!IO2+d+:f3x󂤙I!0k.emsqfx#A08)[}'@k'Ι-}DZ6t=Mgҟ&uSpԫfuXP QZֳʫ+kZZI~p=][ؙΒj ~݀6P4,yӦum$!"umv Vmt8@wޝ[߹^Bw=;fm4".8 n ox1)}-n 8Vq?m)x17fBx TF\9N{{y$ҽ㦳#;80l$R3$ ?zI 0{s^vfPeJtvH֥mw+H}rO */l mp {$-+HD|#o'?TFP Z+P<>w1 oB $ >U'`Kl`?x!A#oc;[@0?3;=0@=EA,Ș(Y[%X@Jb" !4Ap>A6*88U) ܁T&9!l@ @$A0 Ժw;Ⱥ{9? kXXsaB1@)&B 10_(C÷#h`! ACJp?$b=B,E0D38:?I=,.@Ⱥ(!sÃ3(˃X?(|<@=3EgTh#8F)P?Ip)J6aY X۹g9U3<؀w 䬉fL6;=CIH%/H,h!ms\O϶NOpOLOO -ЮPMPPIϭ2 P P P P PPP QQ-Q=QMQ]QmQ}QQ La#qдTP= Q  R"Ռ!-R$u5-$}R,R*Ŋ*6YRlO-RRS2.56/-S51}5}ӟhS:3U4S=ݕ; DT-=ROTP ULURTSHXS}Tm[1GE{،Պp#QAA *']M^Pd%rhY렖['Ж) DI[vko,VSz(.Xb`}uЁRG&PY2)Ws%Dt㩃Y њ@Jp05$Rd 0yg؈!V/*1XU,$)I)!f'"'X!!Fژ#ZױI&!8?T?Pș*&!JBP أir"Tsi܈d%R1IQ$CP J]H$)huřXNBXHD}") @4Y?(0FFq"/ !,Y]z]]jE9` Gxpq9a?xk : 0(0*U_UU)5ǢDHBU]@82aFأCJU ] ^% V͔)Y\ ;óKU BI@ b԰A%C&~b5b)&S*/@abX0 D)h2!`'4-g\]Gf:pe ,aɷӣ<1Նp915p\2 Ⱦdxq:apd$pL&Ldc)=nI?F <HC'VIh$`DV $H 1Hݓ.X@pf@狨+fIj?j.#hŊHm~N#0:4+x;:x6h4%β66p: f7~;Q9HxӊFP?P?8- ?0I Qcɗ5W9atكcQ /[=Y=_F6hyPCsiZhDAfv1t6/3e@B.kt?8.N?70?h3 F\%HC*#hDaWmC@7&PD@1`+r1)hyf?32:06k38Bh: Jx:89Pmmi:sQlxɃfi6rfM<:ة(B@Dxt@FƂ0IH腘,(909FF`)"wHI!1\ XgJ0Xxaat0s>BHBBE$|Ie73/T_0ȽZgC@ o?hjvt1N(B J(t&B FT$3N$QZsD$(AQa < iB'fV1ȄYB34ʃ$JXplӄN(EtIʬ3<9DC),hB0rv]#h(8 M@BXr$ [0E8 {:J Sk%&4Q]hlЮH ThWK gM!k q@MM0,m'憷MYa7땳H.b:k޼>uWsᘈҢ$h:ϱ.UtmQqV:֟g5zB!`?{PGKbtQ{~~_ֹ{1?<3</xf<3s%?yTf=SճϺG4=s}iv?>/{/>mBֿ>s>/??ӯ?/ӿ;sp?@ 5G%> F QtZ,͜ r]2I `AÙ tt`} xr   \#!wr`6>!V$!U! jv``w aIsLa!a! faam!n 2֡ !YʱafGr&!"&"!aa @) ay v"r"")5 sPA @ Fb&ab (G#A!(])#2: *bs >y &v&V'"!Ρ6$ `U(Ձ0\!A.&#=#^2F L@ @6:#.zc GEG^cgΨ@ڣG~ H"I i#3* $b -BV/FZSr䈁yqDOQLADV#T_́4k(ES nyPOԁHƥ\ % A"tPhAr ` _brtM8`sͭ9=#AjMs=1GV40Ǐ AqIm#0A}\mIhV׳ JBjW@1Ḁs>'u ^uNg s &&cFC6GAd,MNAPBp$% Ҁa (Mp1AHB]$W\k#u25Op2X SPRxDdt.GI ܚdJ&- xrx'F:GV2b=!9M$g(S@k%gjB́ B#P> @ (fv2u(&"t4LL@m:L YP,`Jl^`q{%A$HAIB(w)e!K$t@ J @MZ^btd qӥE ͈U ħ*HA)D,Sc O넁4B 8DpL 0ʥ@ h8h`(T~cyn[֏ [AaD"HBCNpxA0T1&ΈAHsͯcQApEHh#+Ih0A="#tsA @G <"d _"sf8E2MN Oi$WޢVLLAPɇ0z =J9# NirhyqU-:G? 4Ԡ*`!P[I)!PȥFO1IM%5B"e{5vƮs  Av P܆bCQy/):G/ P' b"jB^l/:G!h u 6RcdNc -\z0Ⱦo ǰ *ˬ0i& 0k^ # ^p77pMzvC<oߡbMWq-CoI1qFK1DZ1C1? s 2 ; +32;rC1 Kr[2 Ss`j 1yVGVڟ)2**2++2,Dz,_غ2.rq10m 2 2/s~Yqv`13O353{4Cf5o37/5L6Ks739?7L8/q93;9L:<ϳ3=>=2>@^?>4B'tts BGD[C8O4FgtU]F4H_G GI4 C4K4󡖴KL44MItNF4PuD QJ7S?5TGTŌv dWwW5XX5YY5ZZ5[[5\5Y]׵]5^^5__5``6aa6b'b/6c76c.Q$Ёe_6fgfo6gwg6hh6ii6jjgk6lǶl6m׶m6nn6oo6pp7qqqcySvnj#H#L7uWu_7vgvo7www7xx7yy7zSs7{7|;{7|7}}߷|ی~7~ 8 sw+~3};8}tW_8go8w888{86Sd8Ǹ8׸8縎8899'/97?9?CG9W_9gygw9"9[y9ǹxϹ9繞9M:_y':7?z/:O:W+_o:wAzg::xUͱzǺ;cd͵:纮::{ G9:'x:D.7?;G{]\;go;w;o!+BEwx;׻V$ ݀f{E<8A^$;sw*O|v:C^NdVG_c L!D#4ϏG~lEm ~3W_LTb{eFݕU$4SE̮DI4xР(Ir)# <\gNB DОBY'E@ygN;yhPC5ziRK6uSJuVCiIJ^DXAEJXHHQkJn(Ab.(P R/$JZgNl=+XH:#bƊ b( Ċ?tJC\!(7D* t\(H-\T%L.$.Є1 kF|xɗ7}Ƞ!.֘D0Π߮S+6\")iR8圓:@'kBb!P a RX¤,$I i+ᅫ@Dx@A.(aF^1=삠J32" H%Hxl'w[68d520c. 0\*Z]+t]v}NJIPU,(ɢ ʡ1"!7Zh )M'@08%Hv`fnТ)1OJVbVJ"qlI(oM68d#50 3B) 1(/>;x>^;ϼfH?"yIh7Kl\h rHiSM 3hT))׃Hass#Gb 2ևe~Z6I* Zv@-?䕿I}w/bK&Q$ !xDt‰9tc{͖Srf ; B!2m n?Hב|1EkТt6L'ZH!e5\C0 N-9y/$eCdVM KV-IPfz`! \ociʔU7dBE5Zκ Q^p=$+@xvÇ0mJQV" `qX* Dؐ(I.HjIBD~aD#FRX!xDVQ7@-e~;Wo11e De JHA*di]zx&EB6򀲔T:ec9 H|蘿.nZey;lBP0c7A)Zф,DAE9jF%HIZRu;FO>ŨJVм U)7TlWuJVVZz ®TkS W#h<ХU,N@ ϜLMXlӬf9TJhC[ZӞUjM1׾SkY{6ix[p[\6Ur[Lsb,t[]^v']~׻=D#TUz>Ue|^2\o}'LŞU`?)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?QV;e+_U|S-wan\f37gVyHf6hss\ty3g?ٝi Bthё4%]iDSҙ45iOԡI]jSթVYjWֱi]k[׹yk_]lcV8lg+ϖ6}=mkvgmo[=nsSyV7g˽nw״H=o{/w:o8>pWp?)^q_9q!I^r)WY'(yM>s7yur?:Dž>tGz-tSOxԥqWW:õua^viWvq^wyNt}]<?xcF|ⅽxu%kW^ח<5y[w}e=zwuUz׿i_{y{_|\,w|P{! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?ADCCDFFIFIJIJGKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgjgikjjlllppnoqornprsstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SB:9٨͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצ\D,KhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1`Ie%I4y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n392d6fHƯa 0 bbzHB@zܻ+b 78m KC>^;zB6 %( Y:V nW\c~J 3@ VMB ACp arsCX@ U0`8B)cH26P $a IH!B~* ` !\^Cz hCR0B|zr% r~0 /8 +KxA D-D/{n ^0w$@?bVɠ^!B eva!oT ۍF! c3^:~ +@u)f@ (@L+E7+52,?XRQZ8>Ȋ\myJ:p]|pX4t$ vV{f P ЃK K)qו ei xbM뵢w9$Uij,IkЧ WO>rv/c4y ,gm dAePPxt( $Pb"'_!|7{>sy뭄?ֶo̽:$k P3<`zd16KIIJ v熨m hk@ dG)h(\D9@_b LZZͰc$.ߖ3`7!ck@b dg5XW"iɽ1-Cqz^:`*dS1.\uM.2`l-C-h@ [#~W>zb{QƸ쌢7n@,81 L 1Y+֏̿@ܶt\[Rm1G,[Sϭvwn|[A>iz٘mX:)3LT= &c(]:?*Z2}uW\Ot츖}jpaܚeR1@ ja& h\J@އa <9 TtKAlxq ) GʕU+bخ%l r0t;5zN28` jM!s.Y A!bC4('K~}g.n yC2 BQh2,qwt:3557}SG&ŗ9 7fg}>X"u _~NW`&w'`IVzb~0OE^Dg@x2mWNiRYwyWWh0G3Sq-8h\0s33HL\)~ySee+ _/u 'kFuA>17M\(<3+P=D9x:e"}G~y8CrCq!rGcrzspda4P ehMxdQ20nQ1 KYTB{V8E9F_@:X6;CɳGE8f9SU=g^e+Q7m! v$CzeTwIaT'Ziri=T(lrAM<4 cXXUDpd5GhvsC2U5|WF.P 9"u'Oe{cV^ƒ:tah @NO`FGe0c#"]v=WeQfp^&W0Emq?2sy vFYfq.}pSV=g0UlF;XlC8|78,&5~og] gnI?V/򵙽rq!{v5Ay{ѕ3z00 ]|(Icv`_0$KO.#Fa kripPRGE\x3q(7%]/d[Q!LD8E4%҅cnPQCE?hVS%Gd[փ|Ȣ?v`^5;ȐA8[KuO`{3J5]< fpvAH${'I;cN[X2s1U\ #A8|mYYq|q5[lkyvYsS 2O50/P\PSiMd!k5|4ٳXHnlW ~(,5m0zp4q4蒩!W¶+OЦ "@]Y?óY QN=p[b{3%O?0bhYKŀC+P[[/@WƬ`+`Ҳ:Ф]& ;z`u`2&-16Ѵ}ccc8Tu7^y3_chrZ[ czbcnf/2Av/´2 nP]v]vKk}+ls=t=8׏<1>㢐>U^EI 'C<Ò=uW*sLùWzU78Gfa7]5ʷ Ⴣ/q ;,nPd0ba~qSK"_M.(bh, 2 ?Wܶ.^ /ЇLkA^r<.%!c<:<D|HJLNPR7@f=G$#0bWv~紌qjRo;SY`I]]is mX6 zx~阾z^|&ǸDjp{这 ywk4nUyNfF5NBsXߎgmW3պ~oaWzJys\D8N f1Ύ19PEc@:B~׬s5P+8vME ;#WDu\p.lG@/oц;S\<c OgCYNYTnS2@,Bo,X 0a:)\. Q5§Xe@No/[/gs^#>Iytٵoǯ{'_yr=>{=c_? 4@ ptA#FAbL_"P;Bᅦ !aG[3ҵ&ҏj 4A `*X 7ËF,zd_]uMX59Z= ~aIx $AÐ1T*@"GQ=.$(@B= =ܸr]*4"x7BtI@t"7"D8x,=8"1inv1 Q7B f':Ċ'~uIhYi#RPXdQy !nXMaVxa0Syf@'Hpd$Pcn:T$LoT/.%Ria""F}aLК֥Hi h CXH`(:A/Jdl`ȡuXV~ǥjZ9R܎: a$XHd D4!a!t&! ` DV"v(h*nphXPL(a%Pt/@0( ?XA lm+PpL`sC0D MO-OG;e$ns+2/x{[0q,bP-,.Huۢj3,gE)^8H42#ܤ#RRya"Z08KC pRp:"  B`)Pn"h( 0"cpCa { !m>*r[Ad_ptɭXIvId SN:ϋd<\*xq!67 ~^'r`TT()rX5$pI:#Y J &AD/S:"l1R_XY)FX/ULB X2E(ARI"Nh: Zd"4r =GE mңR߹ԫfELKZֳRJ$&TZ׻6˫ۓk^[Sucb=ld'(lhτ~9GTmlc{r6G n@Zmt#{vFp@7l, H ~p'` >ko"PpgOpO:B#B@s\ 8#1K w \Ay;m$ ' 6o &(6zקH$zx۲ +@ x]JMi{pP8f1' ]I++ old z%by."OHD[^|l$$^7S,c@@ nɂHPX(@P%;;L(Hk+A(܎:k?# ? $'2@!"4BA$$=ËBNE:i78;`˿,/Ah;)X"}˃먭Ӄ@4|==Est`p`8ѹ@Ix*Lȃ`7la XssHGJ1 s 8 `A:v,Ǎ0H„CHP v33IY1'p;;1?v4\J Ij9 @xŸKxEJ9*\Gw)0Ɋ{ClK>T:y།tKēȾs7K̑L TT tLLˌ ƕ@X޻L҄TGȂȼ@PҌM8ƔMͧMdt,NN1N"\N$Nd߼Nd OjOl$\HdO,tϷN?OOO}-P4P }PhPPÐP Б 9PP QQ-Q=QMQ]QmQ}QQQQQQQQ5Q P"!-R$E#MR&%mR(DR+%)R. t. R-MP1=ӱ#S4S4mS!USdS7SR:SS<ӖS>SS@ԑTB=T0TD]ԧ[SF=SETJ=G%HT.TM]TNC}RP K퓰QTQMU@]Վ@ BatU˕4ZM[݈A•$.} Vj8n1/rJf'x&Ofv{T(d֌xɚqLY+Iz(9XmihuRH'PXIWu-Av%;yKx!;-*. 4`"&!(1 *@3q9̌Í)Bc͠. PYKX*8#-8L9z ӣub"uz$Kp,0K !md5`)HB'·]RSEp׬Q/ K@@18ҩ8ى@LYR'x]*E$x\ۊ@,Z,Bjz@HJ6@@h 1B z݉X>P`(Hxp{9aX?x֪ : P*)}_XܰL X+ '„EXIL(@x .;1sH"H&_`iผRƙXFaNT4جNs[#6$'|b T*(&b.NR/6>Ȉ1)=cR6am59xTy+^c#JՁa'!v B.]'x*[i%FE1 < D&'hIJv1H'͓t?=X3&a@$䊸*0ȃ.,@8 pc7H +xH/h?HE8 @"} ;Lk _u;x>lX,@bE[Z 9@="\a>4Hp'H:PB-3pf>:hÕ8-IhP%d:\a<; >Ș\Yu;C@Oq>>8G8/4 31gIp2p.<8d@0iޓ@baCES3FvU@XE8,;ؘIXj|!?Պ841pX4 )4(H~ٖޖv?"*Yh47?~&='p!bֈȃ<;(X8I4h,L:KKp<螈F->ȃBɃ%< Eo|裦nGx:33 cW;/-GJJPYP$Ђ,H$fL)H"1h'H=l1hq+"8|I*$8.x1CE')(;+%m)X'2@=y9ǠV*K<@8H/`qCgLH.I.!4 !B*r "8]L. $,uoAM#,Ȃ!6)b*lf)u-!/p1PvIxj.3p[7$)W$1x(Hf3W[%$r6*$ؔ99$,X3H1n,Ђ3#s)@ !h= %0rtJR!78*$0Kxz΂Ke=' $K$p$ 2V^7Ps'`: Ov&rrE($8@@ vyH'@֩_4.'g<BXsw_mowh,@{XH'@)p? Exݾ?Wr$@;hHh8%by'f')8Kp_ay`ր-'i"@E az>-K0{v&1,6Ƅ/U8$2ؔǡhdUbi=luq>$2"|'qA@NaSBc`:,F Hdɥ3O&abd$0IB 1Q<%q% 'g"S1iC;8ғDLLYtdIO ĒeRxYNŒ;@IED@ra$0="̫HɋO*P¥hJK`6&,]n?afEHx%9ҧSn:ڷShǓ/oA RA&s |ä ANB d[-pP &ń;N*+p*f O8g%P> {:\ͼz[} ^%& ̜q؇ prj6|HbU II .W$u u J )JÆ?;\X"vaz2D@k8:劮3;Vu`s̼_:{Zqfxb _Zg'%-}ZߺyF?<3;#<3s>|3yU?=Sճ=xF췷=s{տYw//s>/??ӯ?/_q ?ހ EIG6>Iu\$_Ψ LGFA AõG ulu ўә Յ`9 Ɯ B.!6!{$sLB`݌G>:!.\ VG!_Z !faxxtaVa!] B [Za!u""(") uTA @ H%Zau&'N"!<")12)bu  >} @%v%n.>!u\$A Vy]V0! ؁-<#mc2bG N@ 5V"]&rc'zݑ!svF<#=n$GV#$  Au ?>+ Ԣ$B.* udtJċ{[rDEOѣMP#L,mHEU oABމ؁9JG%\  % @䳡uTlt X IVtlcMM utA9"|S@%t;Bf(~d4||$VQAB<DKo1y P٬2EfY$ TL\6sn! Lt _N*t eddc>c"!uWRA!&AFb"QPLm iX$PLEv&E8# rI4mCXEHIG=txA+ @@"6jgtb̀'&)$A4֠%X]}A3VVT`B!$|~""8B4$TeOBT%4A8BcD qTJEΑ)& $5bG>Z f_*ft0fM L#Lh1Of5G$[8P K '` LԊrh|^ԘLLmL3y'+\ $Ki^G$hBr(oUKӽH8E mʒ&D"DL؏ !8e48 XD(A0 @ '&_DGH+'ꢍBD kذQ4d$IBҖpNy(jh<$0Ej;"YO $(A A~m1AIfǞV h$jAvM~lD#iU$kJP4i%EVP"PX4 A|$zӬ#kAfWx)خזmuc?>O D LmB!YPJ!D!πPPMGJO%9"e[{%,fnu$ @xA ۆ'_yz!ɬv i)V/ L' fb"`vޯeV!l u [6c0 Rg"$F 0 )jupq"pư0Ͱɨ6pZ+/13spMbx041g1ߙb 1"qZk1/v1qvq1ױu1u1 W 2q""q##DZq$q%Z-j Ǡ/{\%)2**2++2,Dzy-߲-j٩/BR1xX07.'a(0/33; /p3O353L4s5o375L6p7397L8:s%<3sz3=> =s<{8@3 B/ty3CGD/C6O4FgUt]F4HoGGIzpB4K֕K4Mt4M4JNG4PD 5iQJ7S?5TGTO5΄\x 5ihWwW5XX5YY5ZZ5[[5\5Y]׵]5^^5__5``6aa6b'b/6c76c/Q$ԁe_6fgfo6gwg6hh6ii6jjg߬k6lǶl6m׶m6nn6oo6pp7qqqc.sO#DtO7uWu_7vgvo7www7xx7yyKwszw{7w{{Ƿ|7}7| ~۷~w~wsw~#8~+x}3|4ΜO8W_8go8w88s84Kd88Ǹ8׸8縎8899'/97Q4?O9W_G9o9w999O999׹9t9yy9:/:7z'GO:"W:goz!4::_uͩ8:4fx͵պ:纮:0 IعǺ{MZ./;7?_x T_;go;wg;9;O5V{&>g; hG&^d;|7D {ISy;?c @$4sgXfH{:6>wlz!d@W}m0J4U b p8 G&4X& 6tf̘0tɣ:v GB| 9#͟EYtfL3iִygN;yhPC5ziRH1YK!1}b n0e!"E z0 @DL^H8IRѐnPmQF`1 +.+)bektp숇V)Ɇ$l I L;1dpŏ5^xRhҘ,y}b(3bR۹w|xɗ + b3f$$#`()a 7(h1ʋ^H4RX+B'0)0ᡄ4Vl$H *H1RPV(Fx -ېl 18ËEȽ.ظd0đݦ#k('μ6|8圓::I "JO PEj@F< +hHAC^`./5-tB!X"A GXxO n(ŀ! +:Rs!%Id1qC*b#, = مشt]v}8꒩0AcfU! L(!t( I`HNdfC „N +@H4Ra!Xpx5d(DL оĤ%I`a2ؐUvfmËC.n 1.͌38#*r:ݲ>զsRI 9dsb-X!#[@btTL͵!R8\[-'DG`@k1X\m6hnJb@&{??5}y.bJ.",!dv 9vc{YS}rf* # ֢!1nJn?Iא~1!E4u QnpCZl0/O.t,iG\yC^8(PaŬ,R[ @@*Hm$(c-+ BA8Q+cVp3/g\/ )J,e!1?(g$񰈈 "QALDj.%?(IYJv)dX#B=BK#8B q $r({(-IbH*ϨU:d !_LX4[R}R)4:Nwv/yXABzEg@tB)ZQ  E9h4!HIZ'݀U)A1 D EKKZS(LydJezIU*uҔ)(jѢKVйU47nuWKPVZʒ&Uk WMm 4iI(9`0I k^͏5f4|hI[ZӞ%-XZB Umik%dny[p}rUnxBBMҘѕt[]>ٕu]jZ DK[Wկ~kJj9ߚ$ 6[)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?Q\e+_J penasN ~s ]hЉVLhG?zS)DWәƧ9i\ӡ.4E]jSթVYjWֱi]k[׹yk_]lcVlg?5]S/mrF.]JN.nN*]o)og'^Q !p1)^q_9q!I^r)WYr1ib7ǹus*zQ>tG'yҕ.r7Oǥ>uWz1u[_x^viWvq^wywMvGvl7~ُ|%?cW|懽y6E_ЗקGUz\}i_{y{_|Wsop7C! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;=>>A?ADCCDFFIFIJIJGKKMNNQNPRSSUVVYYWWWY[[[]^^a`^`_accceefihgjgikjjlllpqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצLD,IhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4Y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9n352T6fGHpƯQ RRyHB@yܻ+R 78Al;@bFI0+NH  71!7% /KL1PqH` Ϭ%bA@ ͨ0UJSHI#$[H!K&3-wd/#3֙]-ke_7x6|[9|oǽܠ{G8avc6d%5dF CcNq2.nJY\\d;Yel3Y5ÛS1To|G&Y:/=[Ґ pg,1C %x"a!k] P+@ |* 3@ VI" @xCp arkX@ UeȒ`8B)SD26P A H@!BG *` !X^xxA hR0l|yr% j|0 /8 JxA D,d{m ^0w$@>"Vɠ^!B. efa!oT ۍ&A!<*% &d5Bze0-tHH XF  jH*,f^? ]8.Rgl"L 9. U sSx{c#fO\@c$s֙K(qj @zi. `_; b-fP"o@9`div @쵼=B R;pTx 8$EɕG 0Zbu @W&BN*اal@Ы\QW/`{XH Q @:H@  \Hz1膀`%XF& \*J Y-OIkxrdJ`t dy~ S8Ai Ų0Pz,xV@WviV/ĽJxלZ r^4oG,lV/c4w,gm `!؃ePPtt($Pb",'^^!|7`k>sym?ֶo:$[ L+D,`vd)6Kp0WIJ v׆m vk@ d7)hD@TŲ_90_b LZJͬc.ۖ3`7!ck@b dg5XW"hɽ1-~qzˇ]:`*S1uM..`l-C-h@ #|W鹓>3ZP4`ge\pbHg:U Z~d1Ŷ3gܒo9b>z*Z2}uW\Ot̸SÅ ִoˇqupRPK{D IiAg,'a}|jvN944T:];dQ+{*(q3n pJvr%w g0ˇökL 17M\#(<3H+AdWeQ$f^&W0Ema?2y 6FE G8asS5~Hm_K)k0̦1d0ŧ`RWF{>ql |c+|z2DWJ aP3] 0hbEηFPP3N4/h b&W(%{T9XWrQg0JEY]DC]&(`H]0]!(]){55`tCih5Py}Dfn@xʇ,XPu;]ipIZG z;Tvؚ0N˳`o&z@hGdO9U35QVTZ;.m eNg.q%=e*W`tp޶3Y(9$8KmJ3>w_3s;13[ZNGEhY|qellXvة/ P/Ph5%mXDQVP#@G1=+P'E!V|oRP!F*OHB.J~%rJp <\;Z [/3:ߓB!;@]JLG}3$T]VOmQ}^`YIf}h[=Sprce=xzuw׀؂} 'mro=؊،/PMq;{؜v! T$!pCj+4N7;ٺ !t`TPMg`cCDfJ 3=!mϾ]={D>E;@]fu;u WM 9'I dsq:j]ufAHA.GaIT6P9dz7b640 ta7 l 0+3j ^CE O h9hD*D^ br! 9hxKuumK2>7@f9G$#0bWdr>LqjNo;ƵU`xc%MU9 kqtv^x&˸Dz{‰Jywg4jEy>Nf5PBsI߉gnW3ZqoaW}Jyc\D8Pyf1Ȏ1 9Eb@:A ֜s5P+8uMo;GDe\okvR~= p339+)@ K O 69_%J1H:_/ hXPy֨BPc3j;/ٍ@@$3p;?N^ R;G3w ifG|/fh._BmxQ>eO˒ԇcP< _ooLd?1ZO_;1oO̿~_v} _.CH? $XP`<(-dC%NXE5nG!E$YI)Ud%FIyY&HnDOA%ZQI.e*4̝QN-سUYnWa3>ZlFu6b[qΥ[]y_&\aĉ/fc2NVe̙5og)iԩUfڵDѤe4mܹu1lk&^qɛ|rѥO^!泟[wbg'=yկ/9zx J>D>^0 0 )%|@ z,(.X(QQb <  ] u< ~z׼VB^BQBzX nł(LZ'> !5ŐԀd(8v ., \ F/.B85*^ /Q Y8(|1cȷ(QH(%FZZ"*nJlx0*:))rRT$Ac QJ2+R"| )f886iPr M$T qT { ݁5Cٔ [U8|y Cڼ6օww)30OHܠi{/|JI $PxBm[/҈?5&I DY؉t"@nC^Yа!IO2+d+:f3x󂤙I!0k.emsqfx#A08)[}'@k'Ι-}DZ6t=Mgҟ&uSpԫfuXP QZֳʫ+kZZI~p=][ؙΒj ~݀6P4,yӦum$!"umv Vmt8@wޝ[߹^Bw=;fm4".8 n ox1)}-n 8Vq?m)x17fBx TF\9N{{y$ҽ㦳#;80l$R3$ ?zI 0{s^vfPeJtvH֥mw+H}rO */l mp {$-+HD|#o'?TFP Z+P<>w1 oB $ >U'`Kl`?x!A#oc;[@0?3;=0@=EA,Ș(Y[%X@Jb" !4Ap>A6*88U) ܁T&9!l@ @$A0 Ժw;Ⱥ{9? kXXsaB1@)&B 10_(C÷#h`! ACJp?$b=B,E0D38:?I=,.@Ⱥ(!sÃ3(˃X?(|<@=3EgTh#8F)P?Ip)J6aY X۹g9U3<؀w 䬉fL6;=CIH%/H,h!ms\O϶NOpOLOO -ЮPMPPIϭ2 P P P P PPP QQ-Q=QMQ]QmQ}QQ La#qдTP= Q  R"Ռ!-R$u5-$}R,R*Ŋ*6YRlO-RRS2.56/-S51}5}ӟhS:3U4S=ݕ; DT-=ROTP ULURTSHXS}Tm[1GE{،Պp#QAA *']M^Pd%rhY렖['Ж) DI[vko,VSz(.Xb`}uЁRG&PY2)Ws%Dt㩃Y њ@Jp05$Rd 0yg؈!V/*1XU,$)I)!f'"'X!!Fژ#ZױI&!8?T?Pș*&!JBP أir"Tsi܈d%R1IQ$CP J]H$)huřXNBXHD}") @4Y?(0FFq"/ !,Y]z]]jE9` Gxpq9a?xk : 0(0*U_UU)5ǢDHBU]@82aFأCJU ] ^% V͔)Y\ ;óKU BI@ b԰A%C&~b5b)&S*/@abX0 D)h2!`'4-g\]Gf:pe ,aɷӣ<1Նp915p\2 Ⱦdxq:apd$pL&Ldc)=nI?F <HC'VIh$`DV $H 1Hݓ.X@pf@狨+fIj?j.#hŊHm~N#0:4+x;:x6h4%β66p: f7~;Q9HxӊFP?P?8- ?0I Qcɗ5W9atكcQ /[=Y=_F6hyPCsiZhDAfv1t6/3e@B.kt?8.N?70?h3 F\%HC*#hDaWmC@7&PD@1`+r1)hyf?32:06k38Bh: Jx:89Pmmi:sQlxɃfi6rfM<:ة(B@Dxt@FƂ0IH腘,(909FF`)"wHI!1\ XgJ0Xxaat0s>BHBBE$|Ie73/T_0ȽZgC@ o?hjvt1N(B J(t&B FT$3N$QZsD$(AQa < iB'fV1ȄYB34ʃ$JXplӄN(EtIʬ3<9DC),hB0rv]#h(8 M@BXr$ [0E8 {:J Sk%&4Q]hlЮH ThWK gM!k q@MM0,m'憷MYa7땳H.b:k޼>uWsᘈҢ$h:ϱ.UtmQqV:֟g5zB!`?{PGKbtQ{~~_ֹ{1?<3</xf<3s%?yTf=SճϺG4=s}iv?>/{/>mBֿ>s>/??ӯ?/ӿ;sp?@ 5G%> F QtZ,͜ r]2I `AÙ tt`} xr   \#!wr`6>!V$!U! jv``w aIsLa!a! faam!n 2֡ !YʱafGr&!"&"!aa @) ay v"r"")5 sPA @ Fb&ab (G#A!(])#2: *bs >y &v&V'"!Ρ6$ `U(Ձ0\!A.&#=#^2F L@ @6:#.zc GEG^cgΨ@ڣG~ H"I i#3* $b -BV/FZSr䈁yqDOQLADV#T_́4k(ES nyPOԁHƥ\ % A"tPhAr ` _brtM8`sͭ9=#AjMs=1GV40Ǐ AqIm#0A}\mIhV׳ JBjW@1Ḁs>'u ^uNg s &&cFC6GAd,MNAPBp$% Ҁa (Mp1AHB]$W\k#u25Op2X SPRxDdt.GI ܚdJ&- xrx'F:GV2b=!9M$g(S@k%gjB́ B#P> @ (fv2u(&"t4LL@m:L YP,`Jl^`q{%A$HAIB(w)e!K$t@ J @MZ^btd qӥE ͈U ħ*HA)D,Sc O넁4B 8DpL 0ʥ@ h8h`(T~cyn[֏ [AaD"HBCNpxA0T1&ΈAHsͯcQApEHh#+Ih0A="#tsA @G <"d _"sf8E2MN Oi$WޢVLLAPɇ0z =J9# NirhyqU-:G? 4Ԡ*`!P[I)!PȥFO1IM%5B"e{5vƮs  Av P܆bCQy/):G/ P' b"jB^l/:G!h u 6RcdNc -\z0Ⱦo ǰ *ˬ0i& 0k^ # ^p77pMzvC<oߡbMWq-CoI1qFK1DZ1C1? s 2 ; +32;rC1 Kr[2 Ss`j 1yVGVڟ)2**2++2,Dz,_غ2.rq10m 2 2/s~Yqv`13O353{4Cf5o37/5L6Ks739?7L8/q93;9L:<ϳ3=>=2>@^?>4B'tts BGD[C8O4FgtU]F4H_G GI4 C4K4󡖴KL44MItNF4PuD QJ7S?5TGTŌv dWwW5XX5YY5ZZ5[[5\5Y]׵]5^^5__5``6aa6b'b/6c76c.Q$Ёe_6fgfo6gwg6hh6ii6jjgk6lǶl6m׶m6nn6oo6pp7qqqcySvnj#H#L7uWu_7vgvo7www7xx7yy7zSs7{7|;{7|7}}߷|ی~7~ 8 sw+~3};8}tW_8go8w888{86Sd8Ǹ8׸8縎8899'/97?9?CG9W_9gygw9"9[y9ǹxϹ9繞9M:_y':7?z/:O:W+_o:wAzg::xUͱzǺ;cd͵:纮::{ G9:'x:D.7?;G{]\;go;w;o!+BEwx;׻V$ ݀f{E<8A^$;sw*O|v:C^NdVG_c L!D#4ϏG~lEm ~3W_LTb{eFݕU$4SE̮DI4xР(Ir)# <\gNB DОBY'E@ygN;yhPC5ziRK6uSJuVCiIJ^DXAEJXHHQkJn(Ab.(P R/$JZgNl=+XH:#bƊ b( Ċ?tJC\!(7D* t\(H-\T%L.$.Є1 kF|xɗ7}Ƞ!.֘D0Π߮S+6\")iR8圓:@'kBb!P a RX¤,$I i+ᅫ@Dx@A.(aF^1=삠J32" H%Hxl'w[68d520c. 0\*Z]+t]v}NJIPU,(ɢ ʡ1"!7Zh )M'@08%Hv`fnТ)1OJVbVJ"qlI(oM68d#50 3B) 1(/>;x>^;ϼfH?"yIh7Kl\h rHiSM 3hT))׃Hass#Gb 2ևe~Z6I* Zv@-?䕿I}w/bK&Q$ !xDt‰9tc{͖Srf ; B!2m n?Hב|1EkТt6L'ZH!e5\C0 N-9y/$eCdVM KV-IPfz`! \ociʔU7dBE5Zκ Q^p=$+@xvÇ0mJQV" `qX* Dؐ(I.HjIBD~aD#FRX!xDVQ7@-e~;Wo11e De JHA*di]zx&EB6򀲔T:ec9 H|蘿.nZey;lBP0c7A)Zф,DAE9jF%HIZRu;FO>ŨJVм U)7TlWuJVVZz ®TkS W#h<ХU,N@ ϜLMXlӬf9TJhC[ZӞUjM1׾SkY{6ix[p[\6Ur[Lsb,t[]^v']~׻=D#TUz>Ue|^2\o}'LŞU`?)\a _9a!I\b)VYb1i\c9ycA\d#IVd'?QV;e+_U|S-wan\f37gVyHf6hss\ty3g?ٝi Bthё4%]iDSҙ45iOԡI]jSթVYjWֱi]k[׹yk_]lcV8lg+ϖ6}=mkvgmo[=nsSyV7g˽nw״H=o{/w:o8>pWp?)^q_9q!I^r)WY'(yM>s7yur?:Dž>tGz-tSOxԥqWW:õua^viWvq^wyNt}]<?xcF|ⅽxu%kW^ח<5y[w}e=zwuUz׿i_{y{_|\,w|P{! ,   #! "##$$%))'*&(.**,.-12/2,04*1822383766987>39>49C;;<>>A?ADCCDFFIFIKIJGKKMNNQNPRSSUVVYWYZ[[]^^b`^`^`bcceefihgjgikjjlllppnoqornprrstvvyvxzzz|}~~~d*\ȰÇ#JHŋ3jȱǏ CIɓ(SBÃ95Ɉ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵצTDJhӢ5˶۷pʝKݻx˷߿ LÈ+^̸1He#E4y˘3k,ϒ7 tќMFZg֙]Ykږm{Ɲ[iܾ^xpޤ}#'8oϝWtͭ];l9Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`&)\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤj*iꫧ*묋J뭸ikkkYefVB9S#=;T6fgHpƯY 0 ZRyHB@yܻ+Z 68Al;@bfI0+Nh  71!7% /KL1PqH` Ϭ%bA@ ͨ0UJShI#$[H!K&3-wd/#3]-ke_6xf6|q|o]ܠG8avc6d%5dFBcNq2.nJYNlY$[@%|ߺ5|G1leK/3x[ΐ pg,!C %p"a!k] P+@ v^EA( xIDo B Lwm H8%X!e(Xy $(aHh% Bׯ C`$ +o0HAmyA D/B8a]8dFX#~B .(V > d1dnB*ԫ _X8} A 83 cpD•/(nYFH@o6>.@"W h #,A-A>Ì+] YE0, 氺p6Tw YN\<OqX,L!8t5aq~vdgcHЅ^8oi!.7.qWY]p2fdQ7XRq~5?xP 1+`=Dkx:epX;laW`f:vPq Vk7"p|yEX4PN.lFep%~C#3 ka@YjmGl`SUt"c};4qimPpie`[e!Ig߳=(o9{#{<5^C6Ļ>?̫b=Ӱ볺_׺챴1x"@U78Gfa7\5[ [;k /Kc b`)aA "_sM.!VN!;-vmދ3|0!!L"C(Ӭ@]F}HBDNP Km}(XZSM`bM]UW=jle_r=t-oq]z|w 'g}iׄ]؆r}؎ؐ}y-m.@Mq;|٠=Qv1 T$!`CejD,$N7;&ھMatDPpM`cCDfJ ne0 ,w1 yD>Ѕ;@[u;uWm 7'FTsq:.}BvfCjC PDW9`rMk#CvG靏J02ad1*nn ^vsm+j^&~CEO8hDNj@0tP[g׶!` ;3K`q)A;`b6odA2 V>z0OP|~mT.x3h\֌7]HXn~s rhz}^(حD񊗒`y&Hwwp4sEx뾎R͍-~`\)7W-~6t15c.Nt5se7eMMn3け#dh6|ݾ>Z]+8upM3Q3m Be\o.l7@-"?p4,E\˕2bOP` KO8_J1,@Flp,g a*,\8P3j;/ٌE@@$2`H^ lW;˼r`+Pvp.A!ӌ?+~~s__z/@ oJ }L1ԴOAOa?dOڏ؏/^m_/fo iAdC%NXE5nG!E$YI)UdK17N(M9oysaCA%ZQI.e)Q6{NʓOnWaŎ%1U8Z[qΥ[׮ȳi\{]&\y.cȑ%O\yfMƙ֑gСE&]iԩUfkرeϦ]mܹuoUc\\g:/gčOWuٵo.Q:u '_O{Tx?o@ 4в\LtAJPƬB 3Ш )d CqD=C,qE[D{REkQ?ci{Gr'4H$+rtI([RR,2J,ҫ)3r*sL2e꒱/eL6t3K5ߴN<)s9w3O@msO)\O#)$ FtKB2ȐXS`#Pp!)':#BHRZMB"v8 %Bb%4f 肑YZ֫rm$xȇ 'h(3 \,Ƀ 'xrx41xġ<蘤<uu)ؒ3B|颎6P1&Qڨ ߀b,u!-׉ݥv1 17"i2 'mIڠZiĶ*բuȇUyPXƶD Uw lXa_Q}aVpa,Swhȉd@ 'Hh!$PXdl:#LW .<jUg!TuAK{}(g f BXHa^h:!/Jdm^TyXᅰ^£ũ+: AT$Xh(ޘd D~4!a !!!3Hc` ;CV4"u(f:*nqgPKH΀4 H胾4 Y+X]@!,YRx)@#=({=V*u lPQ 6Chۅ!;%ڀ"qp‚ .`lTУC^:-8.pB &f1 ] Б#U@$.X" )`ik>J\1tuRE"6d7 aH@& DC\hqRmt 9B 6 AHy-6$ .yaB bƇu U}mP@K[c t M$(+`1]!cPD0"؈(К%"KӜ`D 6  X e= !D @Xć9(QQԑxt R Q]#PKHHR&RLk*h:$(cB@%vU` A 1\+ʙe=8,x\ΰ\a*Aqۺ!B  &&<7xPUpi d0=S.BB+ W bsy@CA `T-UPHv 9 6+>%?MoBB `M"lZ/R."Xh 7z3 Bo{E;։o)TFTms0òhYM $2RgGeRU҈?lփ ЮI(iۉw"`.,8mbV@1WwH\gqiY0u t8(8 ٔk"xћR#L4 ]eifL A%[H8%\ccw$$$h b£H@tzcU |A^r~;3p,@vZgd  -I ] ildt7 ," l} |)'$і$g4=ttAAE@t| H\ WO{H߃^*`"g z< s$($( B؁س>>28JFXK@<@Z d@ t7@4L˃@3@#{,,(hs%X@Xbc" T!BXA[8*h9c h"R H% tB[<+B5;ӈ;{FHԱ4 !:4;|B(CP@p?B|B x! @@D EalQP/z9!>,.(!Ã+86t<FuDۣ68~ K8.9h?Ip*K6oY Xu(CYs @8 a9yLG(BI$K0hyĘ>{JpH p<8C.ݓGRI,vTw `{÷Bs{CŨKɹ@ 6Gr㸺K>$K$E:(?=CK̏4Ƒ>泙7LȌȒP@{K .K8XLTA M< ,ϓXlM$MyMԕN㬽\N)"q礩N,$mNO$F|NnKOTQQQQQQQQ R!R"-R#=R$MR%]R&mR'}R(R)RR-ҲR/ SS1-SB3]S(OeS8m S; 7;ӡSS@ ?@-ԊT,5TEu92B]THETHԑTJTiT&yTLTKTPO URMN-U8UUUUVmUR}UXU2X=BISPU^T_5BX_`OA24 HT;LVP_AY(i=Nj͈Vr12Ju1Wj'S!jyzVW iOLr(<إ`m!RxxKh!Dk~W؋:0qJp)p. nj052jr 0azd>tY"/*18U,(2h,xB'ëx0nihSAN1Ty6/3Pf@Bp6=?@.658EU~3>h?PE0,: Ihj;iScC@7&hE@1B؃BZ7(10D3h.3^Kx:: hi:X_Imti6렾2b<:H.: P7(N:,Kv9JȂJhhpF$Kx$/.4r.!4B*Hr!7(^Kr.$+y*p+(#xJU,,s'?a*\on,!!/hHp*@gvs3h^w)(X$@,1kfE%p,Ow*5)$><$>t,3@0f,Ȃ&q@i">G)B8:!`<%prKU!60AB,R΃(@s #Jx$h$*]X7&X:Gvy,6smnj.)P.,8C#PAwJo#@xy%@nY,@s*)0 9wEfm4nf!GY>HhWr6!@lP'n0G&xIw3PIXv Gh&(xJ$>#'!xEߧ,Jh߃0@ ,51ߏxoo0X'tLBHQ)zG%AJ;mu#?HX2O!,iIK'ND0T(Z.;*tf=Fbؤ',92 F )GfrJl4%`LE):JQ$y8b2M)'9i# IHHEĉ):ytKyD1.-ڷs;Ǔ/=OI׳o='5?qR) e 4N\quE8E}8LT?5_&ELDy|5QtEWgk8QɈasU$% Z8]urH]F#MTq`ۑYфNASEJ ǁUl[A%YXE "qĄJrF́qZGWL2`Ez !5E!q'kc\q)D$Q`ѧ֡#YiU%^D8DEE ZKMDyDql>(#S`!TGQBA6" 5&biTbD>Tsi~qfvH$Ws^q._ONў_o\>?eQ[.^a;|Ȟƞ<#/S?<ݣ1/??ӯ?/ӿ??i    eq=V^i_x@DD_ē L"Gna AG `xؕ x &\ \#a {vN!V$lfG^!Nʠ Vw0ᱍ!`խ!`[ Gr!#6#""yȀ @Y @xH"a!G"#"*"E 4xPA @ LȀ tb (j"dBL !*.#3R +w Uy '\/G!#wa%Yub#Pa3#>~]}3 @ @7~'~80wdTUFvx(=_>Hr% 7Bv ̀.@ 7n$wcC"9vG~v爁 ~0[tEVDQT0nTf56AAWŲ ! ՁA$^ _ K*d+h 7 NnO$}zǐS<V%p<^Wh@SD0A#lDܚS=8A` AQIG#Hq}@ p\ vAӹ:mcHsX HAA%PAg%HYlDHNg&k^ ĤL)R"f6$.[s` 4^%]M]HDiHA"ID\hAgHq4B 'P"AL UFl^z ajv$l$!^awAlmѲAhAwTFiV(Pu@l $1aaޚeTܖQ]]wtAw ln /赁y [~]Vupi w*720"0~37= >@ts|3A'BӞA'?BGD^CBO4FgU4aF4H GGI4Ε4JK 3 K4MJ;d@״Nݲ4OKߴPuHu04R7F+jS](GL;/]Ukqu'zuVǴBTAZ5[[5\ǵ\5]׵]5^^5__ǵ`6aa6b'b/6c7c?6dGdO6eWe_6fgfg Uˇ!6ii6jj6kk6lǶl6m׶m6n6oo6pp7qq7r'r/7s7s?7tGtO7uOwY :Gz<$8xx7yy7zz7{{7|Ƿ|7}wxo7~7~~v7x~8x'#4 s7C+xOϯ΅8888Ǹ88899'/97?9GO9W_9go9w9=99ǹ39繞9s9:9:'/:9?:GO5;:_:go::w:8::ú:׺?:\K\':;/;7?;GO;7 Mv+;wg/;b;;ǻ;ס{ﻎ'a9C!| n;'!̀ g/_ <KI @%ʀa}Sw.DD}!xB- T =c=PFzdA>gF6'=B!D#\aGL?q]Ypu ? ~sv$}D?4 *{,bƒB^X#QI^Piђ.t']&tA'մY`L/ۈ$<+S?~"Y"P9aQkÛ[vlXcɖ5{mZkٶun\s֝kΊ'+5E$P|BbE4@.\ nSC6fو3#K{VtF* x:%T\a |Il@BY0 MÜ4`לa 3&>\DT%L.&.Є1 0 <߲ d&P$#F.| PHjh:a?!Z \Bͅ.,A#,Dp"$d`IK a K ?ҠV Jҋ2Q# Ɏд00 E".֨D0ΰkL 7#OF}H%J |䳖 ‹!J0 Ɋh@ʈ|*fH!C\`3ݢ4qN:#!@!(!FXp)䱋l(O1 *R5r60$=30c. 0i^]҂ >^XRKЋ,9cU K(r(aH^HፃBbdB yCd^ъ38niTA Y-J@!HӸ?-bha*$'X(aLͭص. >1ʻ28Ì C9@ ֊ /X"RH1db,4*!%~#t<@PuZzG\XKD%!VY`k$IPKq}@WͲo:{?6HJ+ ]ZCz@" f :XAΦB HHH*2 !xD&F*`uh:Z :/hLG|@;b`2B*  @`L>P$K;k|P_kNRD -A&(:XE+^qb7@Q٬," ?@*HvЂL.v.a?Xhj օB 'X` !šDuP R}? "|Ғ5>i(^.B MiD  F|xhqITf0hb>}1:=m?pM=Ne/u7O.<rƤ&nK"H@c4EFL$Ytf<)ZxMը~ !H8э"t'GIZS2)Lyj=LBӜIU] A>+mMU.F]VH)`;XQ5XVVbE\Nt WU|^ T\X>  `i(j- @5gbmW5Ujli[[ږenYV[V4S7҈?Ur\>miY[]^@qv]~v[^Ey |[_%~_JĿI|[`ئ}+`?x+,)9a!I\b)VYb1i\c9ycA\d#IVd'?Q\e+_Ye/aq\f3/gVJf6"us\g]ysg?Yp} m4щhGCЏiJ_ӻt9i0ӡ5E]jLԩ~4UjWֱi]k[׹yk_]lcVlg?і]mk_6c7mo7=ns׷Vuӽnw7v=o{õwWo'M>p9WR p#>q9q!I^r)WYr1i^s9yg;zs>tGyҕ>s7=O˥>W+zSu_/y>r=gGվvq^wyw _xWo7ۏ%?ylW|橽yKvElҗ٧GUzdƆ}={ vu{_|W|?ї_}#wwT[; ! ,     !" $! & " #)##%'-''*(.).')++2++,--1.4 .1,1328224$6=67:!9=,9=39>39@997;:<$;B)>D>>A?AD)BECCE.DKFFIIGG5HOEIJKKM6LSNNQMPO:QVNQR]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "JjefV&KF+LF퇾BL*҆{YSR,fTSQx?䴲L@(Ђ72O|L?tD( LxSL 2b r_pf1F?@dˋ$h25#'c  (@%>v5sĒC4t{)G4MSm7e@ ٖ%u6Uꑻ189klWC,k+Qݤ?hбiV?1OVdu8H.3n>n{mJY=;k'7/^kO;-{N|#}î8[oU̳_r+CĖ4a]eirP#z2!9/AN4B+` ,`uk,HM2y/(`@^ ,a9@CI` tQ^Ceȱ WP̠rЯe0B X9o+: e`qbG 0xa ,0PVhYd,V3lzEZxA ; "K `5 FrM7e`%`[W)^ "g ^-Z Ef0[0Hb0#& w- SeY- XlC7Kl&pXֲ&2#P4Hwը0G)rMԜ Qh0#0l"PYA,54,AЁu "S%)L;ws:QT6QSUH ul&@ `A<pv} B NXbOS >7CXg>00C# ;D .ؕ;\Lc3kC"GO`u0R vE`O#{CDD5t3߳|>OQ3zΠzHxKXǑ\}[؅\`b8^fHhgxl؆۷oXi8' [^Ї^`eY @ ԰@ 0[` p P? 8 40 @oP4 0 !P/ȉ0p X2 (̰ up 0/ x @20@ @p P.pX 8P  4p0 ְH` z_ 0 0? dPn@zp.ُH )()荤XFyHJLٔNPR9TYVyXZ9)tE+Z#ODf )p E p@ OP u 0I@qI R0pLpəKP_@ I)I = @ ( p@ WPP L`|)p I r$ni iP0/pdppi !uyW` )`!`A0CP)|:Оip[_: 9u@Y0:﹢,ڢ.02:4Z6z8:<ڣ>+ 0 _$;4~H`Lʤ@]`Vj~v0qYjq`Jb`e:Xz~Хv0 Pv: Wz\]W:s`jʥj~yzcʥ\jpꦅڦyjکک s] vjJbJVoJ:*ZzȚʺڬ:Zz F FC#7naq 0 r Ppz ktZ s+wrڮ +uZZv􊰱sJ:KP,k+в1{۲z K#r [ jwK*kzT[V{XZ\۵^`b;d[f{h{xު$;+01H\T;[{۸;[{۹po(3fsPۻ;[{țʻۼ;[{+k: W>&;[{@pa/Xc0 Zо<\| .!r*,.0,;|$b9AP'B=lhL.PjjPI7&xȐɒ j;N n%#>'N+)n/NPHt>@B>D^F~HJ[mGqZ\^`b>d^f~hjlnpr>t^v~xz@50,+T^0ٔ ^>^~阞难>ꐮ~꥞N꛾;n뱎뮮0}>拾PnĄv෠;^~؞ھ0 s>^~+[ @ \-tAv = /r U /o|0 P P P< ~)_+1H_3 N `F=Q˘qrGI^Ub/2SC_\lcfon~_psOnxK@Q 4F@qgAya '&@D}pi GrQ ?_xozӊP_yS J`f3qs 3//q@ d?j޿rO/t??kO0 O@uUu׏l2 ]@`99#X`A^R0  1"`-5nG!E$YI)Ud#9zyͤ9 9g1]LIoLzA%Zy.%L'Hѡ3[-bk?bXFزj9mEhTLrȁ%VZ鵥_5/FZe+֯e?G}Wk/wKCxѫY?rmެE؁%DQ!kl- sbVjPfsHG ք 'XKdٵow]”Y͜ t{D'ǨQRH2*"'BTS‹ȁ(h"bfPB#"F(fC#!oQ ,&%"0 M& Q,A Kl%PB &m/e+!+.AHR oGI#0/ܜ 5PDUtэǼ@KڣÔDO#KjVj(D5*? J!H8? i 6'Vr; Qoԋh"Kr MA /V\&p!̀kB*C ‹"s7Dc_r KByF 3-!GQ Uj78c ,UpǀvA @=uGU1;gݯQ2tȟ \A4zЉ1!7#i%v]+p/Ґ÷tJ s5<^g~).zD]q+p:0aX`I7q> bG-ҐeIùAk>@۲c^郏ͳc6H :0ۍ"AYzjЇ|5;{?Bv88#@Az>>Y%:Xo j40o>9q cPP 8 8E :8{>r8 nA4LCK3@KS 0BzӈMH3+}z>RCCbmb7Fb(5%!&E'dH-b.b/b0c1~R^M"V`b5&)*~Ff'^c:.6784c?23a#cC;Ήp%uu'pp&]v,o&!&Bh}j'kW!9гՋ|)_Ȩ0)q"5t"ub')Ŝ(Xo u+uy3[+?w?ٞ(P3@e:٪0 YدJ+$r+)H!^+((u*P!hM - @KwLMN?uf<{+__Љ=rOuouͯz0lmn.gEƱFJG^Eix{Bx__xW.ʑ_yFd9xryhy>y(D9yJyyyX4$1VgH0{z-g zzz{$4D{T{{8zNO4*zXaO|yD\z|_F{{Ɵ|"Cŧ|Ώ{7cGc| ?%/?}CI}Zt}5oAX+PfxZ<ϔTB_AKm@*(a)6q~5~)nNpg 2ة?D,h Bk!Ĉ'RHܲiPRp92"DGĖU#D(c<EOplG/FZx娟#7*Z9.GeŰ1"++K?ft)y.6J\$k *&A^%T#Ċ3n1Ȓ'Sl2̚7 L`΢/h4>X͈2Ke )H29D$&0L%V :jlM"Ȕ@Xa' JfXH{$^sd3|#MPxy!DDaBX1 | syEy!!8"%xbu$1JcH *GV_-5d$19U)\`a5;^CaO`(!r?ž?7dRG1?j=9aSQŀa@Q@^(a=@k8)Zz)NF,jً2#X15L!!9@f4J+@2@`ey$B?ߴ92K(<K)^ВoCR< ?Q]#;h)b% fsq|0 + yd:i2F0AĔgDF^J LUyJW!),T{9ėT*1O94.Atu;K Jil{ {F /;@Teû6m]i=bS|X6F Jΰ$ -O (BPSt?SΎ8t(F3ڢ.כG`4эh&=)JCQEzz (kR*әҴYi"[4ɼL8 jϸ3ifIТhJeSm<"RwDJQBӑ@MtjB!!ǰ_@Aƒ H+ӊmbjSC`K@j@fઑ}MjPlGjaXgRM+6R iZ /APX5 5FJEkƌB LWGeGDJ- [BvgVKz72} 9 1h`^l2LFCE!= j2LU ^.tQ7([5&Mq FmKbЃ{;FA^DC 1JcfB *&Ɉ{bʩT= x.!jT/pW oDo y[\ !`0\ +`e D MV0c(b,/2al9% J B,^_C 9tNы&벌<D?D.t4b iD HFYMj4jj ?a*86>Lk<8&HN 9lmm3T!i'ފ55aZz`[HQ)PKA^TU_ Be2Vx a@KС,ȾAjۗ\U${wX ob* -Q( p|I\BKe/_<_-qvA m)e>얤,: BSOC%*oaayɊ帉o.ej`_mRYCfX_A3DjP *YA::*oEc @1y>4P, "OJr G /cG W0۸V'Ā(BW%-~-rmm/B՘vr {l0-t+T8A %TB_D2A8C.VA@;0 7LYlcITLAmU  09(B9AFHC71`bqC =A1}ZB0,AYV2|A-aAx?AS^175B-mHAFBx?lKQhWrvY %8@ׄd,! y>-Җ0 2Yy  üre>@괂0glۄۨEėuC.A.D^ ,`ECR[詎 D.ʄ 0T!; ~ s*vY40 >2(邁a?$Cy}, 9Z͢?\*⣬ AdW4 V7:`7*6@=f > XIE(%|C)b c1Y7U,0GЃ( I+(B5"͛Zd %MXG[-Y D%%rM0l-M . (B.c @廵98mce|_{cE5u7\%A;fq7=TCp@$,%^O.72yޒC엾`2&2MaM\ǍWmY$sQj->,"q,2A(Lg.T"!H&%,%P;اꌂv2 4V[C`$av7!c ?%8>T£axdýfJAOjak5;;x8,]E4AOJ`C8_)e ݮOó(P1ucM2ڜ@B;@bz_#f>a]M#Rb&k;jIR)UC> sс(Ѓ3P(=8"X k-%4/t]JxG4*:u8ĵ\>e(Q;d$-fb-4Z LovO5(₪s- _lU\`!4Z̉⾪Aؾ`'@\D% n*fu$7جen.v~.d'EWuD$@=B,4_ kоv2K $>zCͦnZHl@aA%+UiIET7!3fB8m$/[dKRM* L E_NV/9\ B>4ãeE(/_MaRp<b,%T2&5 9@C"%d#i(a5P1EhNJD&+Juí}c A0;$+2FE6UA,)(@|7(M)c05[rA)A7,!AX3AlB9 (a/3O<=vzjC rJ2݈x*_2G&R 738_N?46 Cym=8 /h*j+FʈGCD!?LOtt ݴ?5R'R??KRO5UW57E QQCU5XghtUqScE5[[5\ǵ\5]׵]5%5u]wuV5` l5`'b'5aG_5b/dO66vv{E6eo6gהecϵfw6ivF}`vDikӴ^'^tTk6nwjSh5k6p v?0XTOAtpW7MCv\#7%MnB e?dx[7|Ovqw(85oe aHHew|x hi7\@|D}Ib1WhLBp@1L`HH_]+L5(Ň% BTט43"؝3,6ˈׂN [ C12ŖZ7`CUgiC A+P5(£/4yP6 ?uN?CQmI LIn(= Axp(r02tԀu`sD|Cyz@|΀w8Hx8 8|D J7C0x@P3 rMPMIꘇ䌙?;(xwEC%vhLJ4 ̊3LM y`@Ё ([I-ѺӉ -=% EGx@LI %$ H72U*|QkDXHn* ̃+<$z VAJ@(–|(q x8ԈRף`6D"@C[N {FsPQL*o=.T(K%FӑZat+) 8B4KjGBm\uݕ=R"שMرEQ& 2ʛ|[^tlݖnW6aM]jYr!+\#u|ݗ_ j~2p]OX~%_;ZxE\Xc8cVMmY?Ga[Neb>Je>餑糂VkhV묵dxflѸ^[WZָ߰8Gޛ ?|V|j-sz!le3Mq\(?ey]]օ}}}UBg__C=q݃ꭿ>'q遢ԟ' |~Էj[_$")`R.^*(r@5!0>ˠxa]Pdړ ?%B:mBQr"dCF tK4@|>װA#ypC|(lG R1cD#FAZL!/B9ZUX2AhQ l"R2ex%HrlX2,!C$%0Cyl2ZЃ" $C7ae-h9o#1 AJ_̡1 5Rz/$jpҙaa"tHMaZL:ɵƞэ̊ !( @EAGA$4NFw0ԩ MG1 S0 HE/Daxj"b@V@C (axB葜|+tAFayLXL!&A!@*E%dQȁ4t(Uh\& t՘Q#pX33h/&z8OYol'v"]BHQ ĥKAiʠoT#Q )AA,E!?b$DKʈR/K RJ@Sm= yl@` v 5-{9#jAAj|^&G| Z""~!?@G (tDrӥ8`3:/#{ՌZ%/BA_Bl0-3pWZC _`4E_`5xvBǫEYgD)s32 ߅|EEsV[⭘781E&i ˠ¬ E,eT[oY7ˁҊ:a s1~BxQC0]+ajP1t%z(!#M6®`$yGċP9 |PN #BD\. $M *>A>+%j O(KZU Fn"%0ֈsRfxGh i'HSF%)! b'$܄ \b4o@  {dV|A avBSVzd$H+xa y r7!  o߃iFꈥ|b @':Ӏkxle p)( p'-OS`(d݄.u1("Sȡ3ecq>?,Pq&)αQבQZߑQ  r e!e !"#R"'"+"/#3R#7#;#/$K$O%SR%W2 %*]JQ]N(jA'srj(1gEXQloh(xR')E)3E(&(R+]n(j(`dar(+-o-_e*,+-/C/{d..(*R(/1C1-#0c0_001S373*s2J #9Z(2,2B23cS63_p)a`jr ܌3b5^)hE'GUf:G6Q(j/*VJ r &5ɲ(o/_S @ j R`':sdւ0)S)+ D`/9S)ēo( PZ!(A =x+&C@DET;1) :٧BDQDkF. l3(@(aZ!XCfA+pta]QHEH-4"jFBf1M"RI1tAC?Nۣ lNs`L?`@ `F SFg3B(NA !&8 h(=[lԀ`P R5` 2 Ar'p F4A  V)SZm%DN䄤HOQ4).M@A&/Pz4>+bƀ " M&Dag%AD jVX$4bB$  ,@v2,_$ԠAx a(ZWO4eZ+m(*S5+{h(ӎ :A*!e_!^UQa7D &EԠb`TTb   #!h B. fOUjTYp#$;bOk6 2"3ɡVV T4jcm@PNTUJIP"v.>`BevC6G! * BhGB8B  5p)LCS[GjRu)Uo5)* VEx3>>WS4w`vhB@ DAc$TỢ a u Kv AҠ" ADa$AT,z;>J!,p(ۄB@1t(wnw(ZACaʀR))RTa$la2ʀ4,A IHUj3&H/.NUBzJCC!^١~tҀPAy.%?Rȃ*Di:Tzwqp@u~xv'ҚS \?sUd>=-c3#X j'yl~ !XFD"!Xӳ4TAi֘AUDZPg? J)\ R4esg+Uʖ \UvJB9O(NhTvcq)]zUYDh/vJr`ZZ\*(yuCZO(XT5-\0p_YgzbH>{]zp`{< XRX)\Xjвc4:+}Ө6*plz?}j3Ou:&RmR:|1)ZG*,Z3zRگ[ ۰[۱Sh$%+۲Y®FڳqrѫgK۴7,ڴW;QXfgz]?;sm[u۷ᙷat~RFe3q;pۺWNm\{+X[['ћS/[۾ےI[+;-ҿ: C\+KGAWRC]A}@JE?9=3}-5Q%}GW!=S?V[“]ً2ڣ]ڧګگ۳]۷ۻۿ]ǝ]ם}܍G} }g#+/'7;]?^GKCS^W [c^g2os^r{_臞f^ⅾ藞遲^꧞~ꇑ~ᕾǞ.^מ ܾ HjNR^ّ ~RݵSȅV G _'e EC>+-7OC_ _6Gcy#qF;_^_w7zbn-Z_?t _bs?_b#͂SGb,>?-CFFBȯQ+>wŸ ?z 2f0ĉ+ZX͡ƍ;z2ȑ$K<2ʕ,[| 3̙4iU)pyQKߦлh#T:tzPaG_k5?i}'M\Ykڽ7޽| 8pKDj 6tդ@]2ث7#@`2C\:ύRU@i}fIꢂ{ <ċK5}CPBc:ՉD1)6$B(/ B+lj,Ag HS&M)L+DO)tP7P+%DG3jcK+"2>CbpI7xC0\se\BIdF ?4>DS 91Y2;0mDQC 3Xe;0xY|eCS!=V NQe @TSL > dq)c 9TBTBDG >ĠK Qk_+;"a(JmM.ĢJ%$Kl[?䠄\5(e8 &qzW=7>_<#_C?{>nk/ϏoKg?39@997";>;;<%D>>A?AC*CFCCE.DKFFI3GNIGGFIKKKM6LSNNQMPO:QVNQR]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "J,[mf &[R4l~諳MV 7?d`A-fO5$(3N+D,tn@A@ +#PlXl?@ oO7$Af\ tIx0,(,1f ?i[\S  ȵQI$u<MT3 \ ?f}=P_4#i*W<5Qp[6b%Or7R  ]|s}(XDr sF 0w}Ň4ܶ 43!ׄwNRTXMxX8Y؅^ȅb8d8}`HZsq `XrV`W@m 0 @ J0 ]0 Ѐ 0 `p PP0@  0 p X1 vp pw8p #P@ H ~؉ @  9 ֈp ֠(` wp]  o p-`() xP@pԀ` ix0@B9DYFyHJLٔNPR9TɌ`K+xXODjb' D`0 O@ v 090i9 Q PK`IJ@]0 9z{9 < +y0 W@@KP 0 9 j#i٘m ɚi F w@yٖp0 ]НQ w %B -i婝YZ0]@9Yv` 9`9$Z&z(*,ڢ.02:4Z6z8 ӀJ+CLwEPE`ttR~@qR*tQ]Xb\PVJ ` nPZhqpPzsUO}``rZh*~j}Pr~ O꧊z*zr~꧔ʩqVoz V:cZu Vʩګ:ZzȚʺڬJy{R~ `` ` p* Юl mڮڦn뺪jꪮp  jpڰol ˦++m ʯJj/銮 -*#{ ˳+۱0~k  ~N>.j- ^&$)m] ْ`<>@B>D^F~HμKmG\rq`XZ\^`b>d^f~hjlnpr>t^v~xn =0 +Rٓ@>^~阞难ꎎ^~.Ꙟ꡾yNn묎멮{ /,Am |>^~؞ھޮ0 3ڰI>^~^^[|y1` 2ҠZ,Axa nh?ˀawG0]P p 3ΠOm //HEL N `F>FLAuGJ\V`2SoB_XOZjadqslznqOElar;Q 6Fqg 2s PDgQ vrQ -Н}?C?Q[ $0tQ :up٤0-/ 7 s8+OEt?@IPzAo"_#;t!s_UP WF/_С 8oZ AP dؐ"(E5nG!E$YI)U:7 /1aJ&-k9OA%*OQSc59rHuE`V7y-GJ[VMr9׸ĪUTLC19b43sRgtp#LFCN%H Y$ѰU opȋ))b!\h8.ofep9pp2L_$C7~b:"#  ¥r+<Z#晱 ,~Q;c9Dc4te[ .")Z6VI"&QZ[ ! k)jHXtaZ6A !MpkRp"2\]^*/1R~vm!0bHe`Wr߱{Έ^oChF|țUeK7t7d_N$[ғYf+h(Bi/hEjX9"/.2/RtH#b'H~q   oy QZ:Dy~BA,C\h1oa61bA^ץP+dwVW2l؞vF$ g27hB`ZMOMrt<|p2?*!WG䇛q V8Aдd~Ge`/mbo08p1t i ,B*v4Kga)MyJTf䅉!}RPBF2ebbW7~A0Ix/)~ᇅAWI.٪1iP7"D:Z b Ih R Q/΁#@\?l@R8Fw]G)YT6v&\BIpb@\8^à MU8h VU?h+mzSndL-zZ4$dÌB#T#% xO\؋\"4 M@XC u4ES&W]D>MpAnR%d`k7X&ZX" vQAF2 Qr10t@t|S:+}ԯ͚V8Q!Tqݐ{WpM TbA?]cnvx(_Ժ )c$r@ vȁ~p8а;'0F 4P;Z}7hC>x9Xe󂠄 `*'_3y ?¡IpiV!_;B·Otoط(C2!xw 86| @hQ2(0-0(͛}i:7o8 }yH^=apAv88@W"@>'kqU@hV@9 84X:Jp@Cp7ea9q7A4LC3k>䪼I@F+ԈQ8mC}zñRCC<6<%CX@ cCDJ0SĜrCqĤ7 hļVTp GqGr,Gs&`eo))_`[(nȓƀ`r&E9MM x6 {  .ܠtZyu **,* ( /a)&&0/h ) `-mj2(J,%ך\5 }̭dܥb Bߦ@spJ/;4/b#^E%JGP.2P]܆xZ` `T^N _I `SE` &_NaS"` cRranaa8Za"n!GF"nb[;bJF$`FɊlG,b-b.b/b0O !vb4&4(^!)F*~4c5#-co.KEc#dCnYT% L8dGdSDf䗬dL_dP>eZ>;HP$˔hB:KT_U~Vf3W@i6KLS'\]N^_@qHLL̔0pgfhFi^jn RpNp8Xݔ p ΁: DΫ؏|kՈ60h ܍ t>1! 0H HPpq>rsO(!! 1$P`$-I3SQ  8LQ`#`Q(( i*n*5U6|2C ii+i'|yR3Qwұ,MC$Yu)X$B$3Mi5Ր7%EdF*B^0#pWdqu$,# :(#@-M[?x\S)Z=4恜#pA:," :t4ұv#bJm+D26uc 3le!G4H)@Y"bn!K"X>$SU1 G//qN01b]RR@<&2 BW.!,V˾R;-Ed,5)q;&LM/$`:H³gwGuR;)Ё2'Z6~QK?PRhaL2tg ё&>Q~!]^c*pmY-P 0;OӓNJRT%)`XJͷ,j*29D ^BTV1HUڰ|11bsh1Z*KR4( \]Hdn$e(!F- 2B.FBؚ]L[ߣt8ŰdbZX& 12ZЅ[ɨz2#?IAS\b#7(#/#U_-d̂PB1 P6rsK -}Kk,#pZwdiGi J م2 @8n" 9̤(NݰeE\BD/>CMt  Ni)s_ș0W08̂H^(› 5$4u6^`81.?üyP[XaEʃpŞ̛ zpxC\uEܠT^眅&+Ї+xܻ ȉ_UC-W-X KB8)x+ABR]UI>?g_ px0Bѩ>(DXaR%v\1_LQͲo_0CxTE-/ 1PB%'V)D. NBߝ0 ;6U*#4$C\ |BV%1,4.>ȁ*C2_C8!rBCߙ!:.D+_RYi B5tCUyBP$AU %.V^]XmUJ5Ԡ?A2`0Y7dBB9$y/x)A,̃(8"6+%!"XւHUT%8IBTDP[><‚CP#.!V%h͟:Ƣ ,H.`MD^qB(_6[+I1.iU2vFR_tċRV6.6t8؃46(><,9Ii-6Ĥ?ZB^C )(NV6 (xI iObnYlÂv/BmK1$kBh4̟NOCLC|v)8'Rh)pbS~E$*&H<6Sn+ty U^&_8x>DBtB:z9p]n^R);lCGġUfld:dC-eJ*bɃOzD[BbBͅx BAPM*6C7tp-Vne%EmZnfoFe=SF_\8 &rK7P8*16% EC4C8A4d@;;tC8E4A@5 "ߗJ]7L胳b[!ALR׍þm8X[^&C|X1W>ohB,#H;jFN|(V,_5*xW;8΃TμVTBY?u.ݢbMdۓbۻDn() T;Cba-B8`9Fkt"+Jp-.AN@ ]\8($2$ rt5. ]OH8@D՘jbm*J|V^.fn.f?f4D$=B,0Dv.2H )c7 8mEi!iLg. ܙ=P'DP Qd6 Z-&"8+$/XDx)B$.DS 8.%8\. ^:64Y0+;U%lPB4r@^R7Bg}\O Q>d<,X*#Ef )]# &gAa&SgC2_զty`ʩH8Ġ''r27xC#A'-D8`z$')7kD8=L)ʃ7 #uBh68'fX33k<+L=2a즲:AfaT- mH7Z2 41L[*@@2AGAn0p*0,4o :0 sa4CG HRIkM[NQu9t,4:P 'RGTOO75$P5WwW;U/5VS+W5Zu11M!p DL= gT;R9SGv_M~XA@$@LC H7BD2wpV5pv0&x AAAQ`55tdT@~[RqIxH&q8$4ڊBK6ujTSVzkV[vlX\wJWmlڰsn\sΓױq˲JY ,FF/V v(oWG-ehV?9E\P+oIʩMR9?<«;$ yqߢN' 6\?v½Z>Z׷~za+ ګZѡ4)Y鈝xnA"p񇥐(4.¥#H%"R¦eJc3$p$4\ `",9Ġs"ЛI!)D8&H)X" IB"B#tC>@T@TѹlAjn& 0ê)MSZ;1Tn>",ԩ~8ij\-So[ݕ^}Pu `ZdzHXȀ«nj^ahpרa*\UQft*hӥq@qv~2)t^j]vt@x@k-W26a bM>UWrK> c]uޙ[vcc.Y{^馝ngxh2.鮽l :⪭Ff4~_&>c ?_q&yg5v{y~M?/}^')S{^d)m#d)߅_%cG~)坿b(b%i?/xA4B*HA%r>a -mZM؆/ݸSS@^%'jMpۜ&LN7+{ϨcNJ)Ƒ2H ?G-\Q h%ږ dK( R" A wV%VtI%d0)^?`>qw"QZh@"`(% h]'wVC)Zi;0AABGC 01<G] |`+`D-C)P#hHB?N? #$RR%XVX @X|h:Rºse,"C\Ʀ\$#hYȓ2$ԜI )JQ ,g !j4YpΪl[gsJXMAPI+z)XmΡCZ+ }͈#2fc0m&gkxB>ȫY&<EJ!# :SA/(c#5KA*\%_PS#TPXG+H Ns?w^n)`2 =PF~ 5ҕ+% 8S۸& ^äȁDJ28>2ȪBw r[_AP] ?ZanhxxJO*2SAxbW_F+#^Pfu$5iSJRJ^6Ɔ%N@lD2G^#(4;6J~ HMU.q.6BA t`3b<x-'C柒DA7&?ÇC@DwDGN3<"A'/ bfI6TZaBjaHAPaH=6)$j\Bfa뮉MRicr}:M l FOMpL?B^ eE-)bof)Da= ) xb>$AȠfŨ# * zdƢ Д TeC@ƀ$A@I˜V@ c \UZ%N$F OM*,pEPQb (AG$a A B[ ĕA`& ^`!u)e a!!RC-&- v(N3B_A(O! (a $ee&q_<)[:b8œ022 @fBAT-ҠA^iUgQe! .%b? NE M' ZA6# A@ HbV* fOkB >eO *t*?O*P"\f\AV6 T&;UۖPP U_P$/ZadvB e;ƀG , Bi]BNB  Up+aMdCR[HæC8*"o&*(A VxI?XS8aĖhbD D%TỢ a`uJ%k A M D%T0Xz?8@J(pdۚ@풱00H &*EAR aHB[xA` pTiTvT a/S|xCA^~tЀPy *tЀ_Y T8,Dq6zusrFw{z(33 `i@3UۄX7=1cSW!~Փl x4C|uaG*:|]pצh +t'Smb¨Յe()Gȩ$B|k$OZ*:.X+nҬ|'yI+mr![ ۰[۱#[''[HZR7%M(5(ZG)''I[W@{5hƚgۗ-ܚsm{Y`tS۸Ezq]{a|d[6ݍ;zۻY)Z]̑ӻ+[Y[ߛ)ٻ᛾SŻ;1;ۿݒS+) :<\+/3\p. @B\G|)OSHI\_[\+a|[_YpЄ^ C,_ ^~o%W'_7fDM&,E9S?@e?.ON_o5"gbs_,O$%b__Q{ H_M9g_=NS??Ue <0… Aoĉ11ƍQ2ȑ$K<2ʕ,[| 3̙4kڼ3gN)e\ė$;*_58,yKR$+AU!؅!8VFYy¥-Q޽| 8 ˤ!V$PbC)LZHEgF:[VnA]Ъ[v(Hbk*UJV$Lu^ċ?ܲnAe 2l !^e1l W^I_jv*[/C%%m.ay&wld_ یݬG_ hCk} /LҚ? PzԤ.OTzլn_ Xzִo\z׼ ` {.d+{n hK{Ԯlk{ p.Is{ݿK7 of;m|9޷~|g { oáK|*8/pc|8?o|9On|,o_|4o|< }D/я+}LoӟK}TկOc}:׿`};]}U;߾Y}[;O}8\~<5#~KS<,C~KGo>/>?s!(:G%s'6+Hs-21s3H.g7;ȃ=?A(CHEhGIKȄMOQ(Sn!BXgh Wxu ! ,    !" $! $ & " #)##%&2'-''*(.).')+++,,3 -4,-1.4,1328224$6=56:,9?39>39@997";>;;<%D>>A?AD)BECCE.DKFFI3GNIGGFHKKKM6LRNNQMPONPS;RXSSUAV\VVYCX\VX]E[b[[]K^e^^b^`ccceNekQelffjhgjRimgiljjlTkqmmq[ovpotmptrrt]vzvvyyvybx~wy{d{{{|~~h{~mpMyNVNlSj~XUV]cjk^a_bbw_bideĽĮDzɶѹҼӽٿ@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\BD`đ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵW篬YҪM{۷pʝKݻx˷߿ LÈ+^̸ѓL˘3g̹ȚCOLͥIFj̭?ʵ;Ɲ޾gѽWn|r͋'>]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "J,[mf &[RDl~諳MV 7?d,fO5&(C*D.xnDA +3GQl\l?@ o7&Af\|Jx0,(,1f ?i[l3  ȵ1I$ j`-PP#y;!p `Ffp M  XUppVYf]a}5_Y%ᎰAn{p]TCqV2eհY]x0 0d±li}۪hWoXvؠLzi0@竲)Xf xx5#ffF8QX4Q^T,W P ^ `WvO V,w(?3K=p< ׺ q}k][׹l5ɋo-a5` c@ , >ohYq2 zX.@cm/0:}(3FhZҕ=!shЛy3t3)t5q mh(y^V,nJ-ڑ4bdB{dAa۳ . ZlS/yוwwhJ֎;#H[/q! >04}aWP1q2u&7o]/z"O g; BRa1rPxi ;΀.Zyr^|@| AB{36h!5q}b J.xc48,R_DW @o]σ2@yS` w>fwe 5 >0oH3+uMAp\6 b%O72 y ]3}},HDsPsI 0}ǂp44΀z;FR1Vx}UxVZ(\؅X`b8axfxWic8' p^p^pm !  @ K0 ]0 ѐ  PpP` `p PdPP@ 0``0p 0p0L ` l8h5P  P 30 @ P/P  P Ѝ   ` K c` ր͐ 0pd5@ (0PAВxP'  9FyHJLٔNPR9TYVyXZ( $;nvAM4jb)  ` E` OP ` p w` 0YPq R pLpəKP] Y) ?0- XPP Lp@ % P3lPP0p) cpp М #uyX )`#pA0C@)w;Оip[];١p w*,ڢ.02:4Z6z8:<ڣ>qy 0 _$R<~H`Lʤ@]up}~u oYZoPazf_ j bf]Z @ vz`fʥp rfrp~\:dڧ@ cuШz:\:uPlꦐJeJ~*kХ~pp jkʪ}J]*J:ZzȚʺڬ:Ъm(` "7n12 p@ Ю 0t z0u:Zvz*ʮ xjj  w:kKZZ  ujsjPw*"ڮxz"{;;˱* :;6;T[V{XZ\۵^`b;d[f{S[ @ZG Yp;[{۸;[{۹˸`zwI00 ~ л;[{țʻۼ;[{؛ڻ۽++˺Lcq p{ۿ}@vFں/V\7X`+ "|P;r @(74\6|8:rQ…@nk$-t2LNP@0IlpR`bD^F~HJLN>޻-F,}^`b>d^f~hjlnpr>t^v~xz|g}:Ur囬(~^~阞难n^>^~n붎^.N>뛎ꁾQ|m ;>^~@0 @~XڐO?>KcFuQH#tO>T>EĆZņZL$)bP4T tEQjgx`P$&DfH ! ۥOAP՟o LLl7"Lr !0Zg\FuC YTVѼ x@ %' /⊟ nu2!l 2!9K) tdK6SRFEN?y"u3aU}ptH  zUbX/b*#`iPla6文LП<o[G2!R%x e , Ɇ eu ́ Vqx؎W^QDoe[wuYRm=iS9+l0"j/XejX$AB/12.pjIןPxP $psog ݟ($ p# 4\!Œ(7LnH} _D7b8A:9.-[ԣA&t J"]uv3a mٱ(Jr; jwIa,G IBd%@zN#&S&k{r< 2 2| 1 lFnwrW:ȃ@҆8dusҕ zh LDlnA>H04AK+#:P DGH m=de+]JR; , R*CdI0BU#yL-$^`!el-1!BMr$,ϤAD(CgP89 UkZ7#? /AHfVs|g<&sOg̙y&t }XʮHm (ѓt_gZ:ώ MUcv̨ňW H F1ҳusi,ږ4U<-rT2l& u[2ao?}m}mlg[vu+y]Ӄ8PXЅ s]Z]t"hH7I82b:z#G;i!4Xvh[6  9G^I{qq}?ƈ8~ 2a혃 rAt4` h$v:-nG/АĿs@! AAVg~\yMkӚBr :0`bxXr>pB08"{>WE h:` @1k.̣{[>nQۘ2@X-0@<ϋ}i:7o }7zH]=g r7 \A4LAAN<On(}{>RCCGí)p6DDK2Ed43˛CI|KER4L5F4G5HL +EXFDHE^,;EJ8[ũcEdLF WrO!pEWTFjbƬEUŮY p GqGr,GskG|wıxyGHu H\Ht2TGr` HHzWlHH=H,IRȹU#ȩr!'mcX2KdG`&1'A rZâ }񑒐&P^h a19Lo8 Qu9L0L`~zdHmܤpXXǭsԴPN@i9o-2k "ذ+Z+!)(pbhh 9A++,qy#J+ -!\’)ǭޛ\ Hu JK[ ] t*j;-2/c2ݖ_L_^W\Nʴ!_^}LK~`4V[``m`Vm``f>!FV anaa ֱb%!"#I+b,b-b.b/Fa\b3&'֮(^3~CKYcj$cWrdׁdG0KoDԉUjp@Tv\UnV4W_HY6˕_`~Ye8 Āe LRLTKi5iNZj~k3l H]@ e0U .T(@NL oЍhÌڌ]I،pg;PsuV(d=gIg([NX/!!!X P% h%с6SR}ϲ,TQ&@w!鞦)_-\z(/hPfi$1iC$R耩|R]%hDYH"T #A iR78HRW5("/ ٘̓ }#YVo$BoIzz!P^Q~7^ #cdj'oْZ =Y\)^P!2@'# vz'}!'(Xo` &zꅻ+,o-?.ٞ+$^x1(J@ݯ/#(0^ bPQ[,騍ݢ*3OSs,ѧ^p$@t,ޭb6 tl讄.;ZJ+APJuwr `woץq)C"D m~ox1Ýx!\8y^px]-;yy$ yFyIx r^y_ zI1zGbfN睮߼Wﴴߊ/Ʒߥzz7Ɋ&gz6pKWa|W OCg4gf #4,h BQ \5k +  k"ƌ7r#Ȑ"G,i$ʔ*WIn#j-g\FΜ:w'Pz䖅љ<6l%h ÖU$h9E֮ 몁μYuߵ[6\(fplRæHPbқm(S,J[Mٶee.o :5زgӮmIcm3(y-%d.8E\r:KEdt(H%J\0\F#v%WxhjM"Ȕ@\q@(AX4FxaLjp7F4 y^ C8A:QaWB[pAP^DEo5x#9#o=pESq "6越2]a@@_ôg/DfO5:j@iqJY Itd=X!3@pO@C'ڢPQh3d U'?/)$z*DAJGjd-06L9@e46*@=[_q|{., i4\ Y87iO[XFL0d\ 牟^;DA*'b7L(pj@8?! wTM!XTyX=]6!E=lz^Ǒ5D@B6 -Lވ2eIDjeβ %[dGztmY5xMyPzŻKSW(R4>$*PE&ra~Đ q#D$7.Yj82$_2r$),_N$u\c^2"P%]5B]xke47INrVԈ0F5OHYΨTc4/m 1yc!T{!Z)y6L&)"#'G`IR=hIC}S8?*щR)Q y,4EC*ґ$F QZ}t%})Lc*ғ0[G` TiJ&@]')]ʴc4M I,VI9L#SRd#Y*9hQN1U`S%HI2 =:I<#HX ihFfz ) (StKB( >AutH(@Їb0> k~f'#}[ 9B߁gK 7BNI8/q g+E,wCjt ͶTRS#CU+,# `W! q} pAb}LBCNX2A8.A :4p>CACx ETHk]t̡D`LyW09Ah?| ?$ ԸQH70p&=1\J{1%Zcy¥,d́ 12aUB8,?a=6#VB,TC7$:87 $8/J=tdVY$T284$|@: %}.\(¸A,4H'`9+ )ҙ? a'eK !$x"BLL[ n<]XEAH]8$8Qjݢ=:`/J%Q$xE`f~>a¨#ā]5ĵS66D7nRFxC(LU֕:J7xC8؃47 >l$A,%= k-7?ܢw ) 9h]Ca&L\BV X _1؄ !Z[T&7Ph_74'0M8$` O:.j H?d;F^13e*b%e2D@`ةS!N%+%}a&8|>L||`:d`%yi;pKWo"`$7,*8dCR-ԕ,Š8& {zA0) 77Iwf$o[qL J%8-O4ie}*0.* 2`xC;$J^8p>&*da J9@VEi75?@!X >dޑc0p)y>leR0)1E[,9$\9"h'A)t)/ө>؛.ܩB@4)C:E.߮R8@_5,+!|B;8C ҃`WkL?Խ-ݥC[d$-`> LB;Ce)ml,Cʣ<|g-0-^/V\| %8$,,9t&HBw9 RfU9Đ l*d*l.閮.ꦮhGȸD@3ك BAKB-8`E;h Bf`z  g΁- _pw.I =H'y^q1w#Q /2`Bfe,bŜ=bA(=Vb5@/ ] &Iɝ^B]MB Vo\CD7^Q`)D֖7Y`VQB AQZ, "\fBc0 K6^"c.-ޚU")Tg$ bt\vc/Ey.RyY G]UFA0UO5nЃ8|>?9 D>28h2Bl DOqƐ xU'֙wC}bCʬ8ak#7|C(@ls(8c**:?8AE`Oi7P(3A`3/=+Qy;ca9t[(40;r\rVNTNꎉ0{Jц7Bt1% U:t6LPNX4Tc0H/dp=3PI=TetKCtMj1tNt$#TO5UKLK4 7VW5XUMVk5T5ZZ*$VW;Z5]XMYK4MÐP_5``6aa6b'Y+5T)%n]GdS]SYOfoVv5ge6g6iǔgeh6k6E݀Tk׶mlwl7m߶o.6>6p7r_pWjq'7tG/1f9vEuF5x]WL(GCKyrKrss,|" Qf뒄vՕ%yޤw8leD= HTB4[DDJ0_88x1!Ũړ*!B gWx2*A&0[l6$[+Ŏх=UB)M<\ax:2` 8pM ?@=ڨ%&A:L?MҐCY 8?nT\~Od'h*8LLHQ:y2 ~Q@d 'd? _BoCtA\cBL4!_aPyWMG(N!Rq"T^7#B+uh&t qyĝI칮ꪭz£JfܓN>땗հy;eCֺ49~ɜe>C< -5ߜ=EIn!7=E}^e[Sxu\iG=u=.߅_&hYG.坿xuמz7=|?1/ޟ~0ǖ T`=}o2<3 -f0aelx =ື CY(2@](k1Y@nE 2_e4[@E$g)[aE: ^ݫ:F]Fî|&4\ B 3—mD?x$X Xle:\C} pt)R{@bF qҡ&1߂kH{CӦn5 YFA%JjW4sAw.r ` oPh=i@el^<+xp(^nAL&qUA DO$ax 6!旱 #p)הUW}3b&)| H}D ?){!- 8DB%4Ύ~4YHDKN`Ld%-x) &7ㆊ[(P t*bӄ +D 0hΌY flN$P>dzƐH"Hzg.$h7mD.$ Z"Ͻ"XW $h oL8zaaW!Z Kc/  b( P3Dkj %ôe9 KQbt d mckt6 G/  &-31# Q 1#AVp#eQ/H7M1np2L+WfAW R  gaQ!r!R !R"+"/#-62# CR$G$K$O%SR%W%[%_&cR%gAyv! n'sR'w'{'@b"w' bjq)_&" t b(Fn("+cR RC$\k.,.eB,-F--0Z-D S/o1+ -߂02#RRC*2g1݂2%4CSB>,3C0/T8s/HS4_65Q3j& @aڣ.hS/Td:-5c9.fBx f Kb$489ǴeY[-@Ts-!V\bb0it!ErEAKchG!fN"b@nP8UIprla:ihP pৄ`Qu@IGBb" ,HI3GI-|! ~#  ) @̒`dUK̕P@U:@  (雼Y` R UJ];%R RB/2;->sB.a@A bĀ PtȀ> i (] b[rY4T55 CEC L@~ JG.AL@Av ġ(]vS^+;}tI/|3/r." BA@1`aaOXTR! bEeq E PM!VA6J# A`! vX!b$~nBv%ph3D(.ҳ.@MoSG>6?CjCaY 7 N$(X V! @DŽ[%@ee?Cw% 8+! rr (@ 4eA PT$>)N A^5W} Rd3#.olذ_E&uAguBc?^W)An9$hWdkBv!>$NR aȀxMWK AR ">$NAdx}s8CFANshܢ:Cϒ5b^B XuW_A VaBg]b!5&!  xmmA9VB8Õr-5^T"Mc !ڡʗ܀E *Vw` uؑ vt.@wYJFۗGjj-3 )!TX%@t?egZ? o+v%Fd-0|LW @S\!\PXnv yT(BiB H8s/Up,Bxk-ڱ7YvL Eo,.apXS.OЈ88^W1aaiOZ.<bh Kb#GD/&0{ZC.!Ģ ^t9y?}c/d=h=瓣Zh6 6is\zZ fQ5њG3Z1˺b9/颦G8M۱'Lr&%#"L?;۳?C[GK۴OS[W[۵_c&'oRuqUeQ##۹{巟:[}tI$ۼ[s;ю[}۾ѕP`.\\) AS#\2a>9M萅4<谂 41Lj S-(? ^ya^U u<Ax3 NL2"UI,%y3*,g2&gL#fsJ{U(-Ɂ,30z#4$q7s.,WUs.h>J?l> 3J :A#NB<ذ`D 4\O(: _؅6UUV3@A,1(S0*cMd`%9Wt"q&j=0"Ot.R?Y,rJ(г .r$e(p +:(@W"VV^ 5MHt{:Y%bҵ N]Z(8yQ;f'"().c Y89@"5B\BJE.)O5!|4̕bsr`^(i2[|#8UJV&%/*w S \j4nIN}fꔬk7-/JX 6wmtZS\ʷ0ݳ|ˋި0ҽ _ nK%,ž_x2I en_\$poibƲZϸwю.79#:*Y]W7o\迤ֵ_+׽d+{n hK{Ԯlk{ p{.ύt{n x{|{ |/p; oxK:/>c|O;Y$/yY>n򔫜"(__|49or|$9q}:яp#}W:ӟK}Tկk}\׿}d/ώ}lo}tN߻ փ/oCo__??wo>={'zh Ȁ (Hhȁ!(#H%h')Ƕ+v-k1v3Hgg7Xv9cǃ=v?_'CuEh[IuKȄWOXuQ(SGUuW[ȅ]_a(cHehgikȆmoq(sHV&uwց3wW3! ,    !" $! % & " #)##%&0'-''*(.).')++2++,,-1.4 .1,1328224$6=67:,9=39>39@997";>;;<%D>>A?AD)BECCE.DKFFI3GNIGGFHKKKM6LRNNQMPONPS:QV]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "J,[mf &[RDl~諳MV 7?f-fO5&( C+D.xnHA +CRl`l?@@ o7&Af\Kx0,(,1f ?i[|C  ȵAI$ 5 >oH3+eM!p[6aO7B y d]}},8Dt0sG 0ӧ}ǂn44`z;FxRx1VX}UxVZ(\؅X`b8axfxWic8'`p`0@ @ 0\`   р P@  50 h 0oP5 0 "P0 H H D0PP P3p xp {@X %PЍP0@ H ( `  y ڨ X` {_ 0o / 0@P eo{p ,H F0P iȉрXFyHJLٔNPR9TYVyXZ ␀KR+j4DL O~ p `hp  L0 ? ٘5 % 0P7HF%/)pep {py F0 'PU Y q%0p9YP0`)PL {  "tyY0 9P ' D@/P٘){9 x  ;,ڢ.02:4Z6z8:<ڣ>@ J+3LߗGФM`vpvZ`sZvYXqaa:Wjov px* gz]ja:_:YaڥZYzpgJ{gJ]zjڦr:X gX**oJj^^x {sl~ʧ^ګ zȚʺڬ:ZzڬzІ{R~ ` :P Z ztj:vzZ `JZ  {˰ u [ jʯ-+w z:6 {,(!tZ˨kIK** ۳Z\۵^`b;d[f{hjl۶nuЭFz$`^Op<d۸;[{۹;[{w _ }P&P[{țʻۼ;[{؛ڻ۽;{kۺ; o-vP p@ѿ<\|ip{+b5qt  "<$\&|( ܾ-!kr*<>@B,,l[F+B7i7È=C=T]Ո]fҲ\͂`/-@ } P-Vnx1v}xz| `u< Չ ׌o1Ӳ f "ER<mlgRبSuply Ep6|ڪ۾ѬPMyt2wQۡ ܯ}ŽB۠}ۄ=S|tA <um}]]Y|uQیk ^kq^!.#%')nѻj .>427M-^ N ~JLNPR>T^ڛ-i<Rqpd^f~hjlnpr>t^v~xz|~>~A+^.َв^>^~ꨞꝞN>^^.륞^.^n옎>.^Ŏvaڀ[~k `?_ Kk <-s 8`qx., oh1%'o*y0?D_  @ @ 0< ~? E\G@` dSoUW_ynT\b? ctp~rOalR(/z?|!Og_i//@ ? ct! w'2s 0DgQ v0rA ! ѱOo>?OL &ptQ :phI.0@O7@F1t?kSG///Ox)Ÿ $(PБ  bFaB)kcC.ě?V:>nȋ5XJCr itYM9uOA%Z'9z%y-eK 9gINIoRzYny%LM.ѡ#-b"1Jt(UHlY5A̲$*)9^#V ZC_50GXŽײeWEYGSIwċ?oro"GKGzG Cڛ(NAq$A^z˒rܺ,!F3iL{ϧ_>OJ.}}k@ @:˦6Z&%LBp!2rt$%ሏ  b Z"DMП<((R[hz!h%~$M [ gQh5H_*agQw~gl "s}w{fs6zTf袱ሮ8*9b'&!APvF^Da0H"[ս\ *0u(,@ $:IN?w  GH&"7A][C吾-# H1le"+G}6p ; 1yC QΞ2!xc—WXGr0%,LW\§b 3gp²)cqX5g4Hg4 7'$p$tmkD10ذ''tG t^x58#q@,: aD\R$ICuDRR2Wib1ɂġ beʃ |q 61 UM?keHٰ3 YNYq% MX:p>VUA(0zTfˠ -J'uƤj<; unp\VB58dYIJw HKH+p' ["&)=$"t+`N@<$0lXI !4!$ 8##(H˸^0ґT`=`xCX0 AN#8;:״0 AgȖ; z]fWS6~! sU-fx7ETR w )@Cva |ƺ%H{0lAg+ ]:K``#Kj8X#&qļ/ybPبf !&q}Tƹl7䄠ǹcŎ /YS2}6<F *,+a&s\+ 9R%&˻fss4Cܲ΃&t <,n Гt-D}vt =Fң&ug,ZUIKD-\kg2%hR4:(FԦ&vTnW-gx3f [B#=DqI}ntw{5.<;  bTC k?`IV(X,pGaȂh2! 8F+vu\Nv&NAPA107H,U>[p`%5Lbd؅?@ATX7@<Ё`C]u.9hGU&˗]y 7P*PA58:2 Ȣp@@}Khvrac|\MjG7"_ f F;@jX/ bBA&A@  5a{<zALBk0(g"=mr@[ `E@&t#+m}bh q=A3@e<ɻ 5t >lӾ>>1#o`ࠃ3` 1<ԓ}ip:8o }(8zX^laa#> !@>b(>$%>&v5H{b.b/b0c1˜\'+>"b6)**^6C{ccc?c3~T4~>cC3<&=6&>.>dHDiu GdM֮IJKLdRFNOvPQ.eWޥSޝTU1MAK?쉵lK`#{eeݙe#V& V0pLt > 9eaLbcv1d֔x,Q_ff) Q@ x Zᅸ(XdHBN tNPи(p ` ox Jau^Pfegq窂jE33 q Y ] 'X)PmAm#Q*X @-RLRp$Qȧ4jPvAIٱfKpR)Ұ%%ȤJJ YNBTxN o!R9:N{?G )qZg7?$ "Qf1.99z׾ QUQQ+d R1RҔ@d)AA`qڻ!sÒp ė8}|) pp#7Ngg:lp#4Y1[iE~,E,c <3&肩@ѫң=s)]Bv-$FωE2!A~ dDL$ =̃M' Uj!#ĈT 9Q:%^/N%;BL'B4F!  l mr$gc*)fGȁ~D_["Dtҳ 8ɷqI漈>Y=(B|ꐟ,?PR(KCo ˇё&FqyW!-Ic*ә47\)Z D&~ʒeP6¼P۩ãb4 MDƉ(CIVZռx(:T f \UeAwTl %@ҭNEB 9PVa(ZD/%SqU N;*D{Ύ@ p`@6zC-3Qü6$XC^ 0d" f-K b`6Vׁ o v*6\ - ȒnJY|di@K.*]G;xAUmh7hUlX@9QMr.`d)+b5Q_ᬎEZ +ĠEMB^8] `HK o Zp[%_9!j"!m =a8m0$ȘG0`P, P2dA AB ҐEZvGy iMIY5q>W{F01;ύ-v4Mo-[bӓ/Ahy`l;b]fŅ&** YBA I LaBz)$;Y H;*fׂ#pࠓ "^!&ˀ o)Aۚ؉ = qDV"^N afr>"Q &at<ո(܍x̸.|+g^`Ӂ+ݎ5AM:muo84N(+|k&B ĽQ0%(DՀlM:a1,3"tH ]Ї,PTx"-DbG骏q񜿙 ė±,A֧.l 9P@̃I] 74h758IgdBB1 F$V5saH BQ*@xNBDUU>?i=`h(aP@BÆW.Ё>(EUc֢D)_y_FCP_ApC.A.pTANM%+@2 D_ `AU;]M}` :`ei;pLbXo&`$7-&+<"e̓R -ܕ D,E8`{~aA1*77ƿQx據%%o q"LJ)'91gP8gjq}1/+ 2`xC;$R^8Cp>析 +h$ J9@éVFj7C=?@C ` Bޕ0xiyC>tm$1A*9F,9(=bC(iD')Pu*0ӱ>.ɂ@4(*ïFE._Z8H_54+)WB;8 l DXkP¦?-H.Mm1 W+JR%>X_ʂ8H<+nxNh+ D *`Q:ɉ"ɒu:0$k'@%%gh.AM&JVGX.ꦮ.z *O5D$D=,m.kR2VB p( 7 tp+kgj2$$tB[X0`7 1&cx/ /p[ ]MV$D@ۡ!Dd./9\!o `v4\p~%Qd=AMa+y ԞR j<Qmy:E&lEZ", + ìa\H[b H $.^q- bdD+F\I^Q!bV0gP /RVpWE\Z_*U:qx[Vq0A8=(#j> >*g1C'/D -7_(c*) g\}R;}'=7(>کZoC,K2A|7A 7(BJT_TJ<|5;D&3\ kуe76#(@ECs$6g& I3Fmx) h2ߨ]jDorZ%EDF5 C +G03LJ34ÅeKDߔSMMSRWU_uKttEQ#VXMh5puWO5Y5[Nru52}s]]ߠuEߴ \`6aa6b'b/6cuSKUcgr5eWUu1=bewg.f _{giL>ivb6j6l[jhSk6nv=vCݶnposopr/y6b'7sO7ucsVdc4]ϪXmT4IP[|As@tu=9w%CaKm(R.G IȎ?lTzc~{gq|ۆPNԌAJP,EED8_OĉSM_ZEbY"A"Z|EX,`d|k8'؏˟&=֟Ä< ?8 K@ʤ ҟ e&A: >/4 9AȩY>ϻJw~<+HPđjZ`oYb$L?3`B_0EqCt:eUFet袍>iqvyğO z묵޺¥jZ槡Lj~^ KIJA;;/ޛXl33r [񻪹=EM?U_rYtmc]?q׋x"襟kf^v邞cmƞu_[k&uB_rޗo~ X ~KX@>okL-PH""2 Jԅy]rht/AN_2Ax&D: ptYyeu @DHP&2avٹSňALMŠ\%OPRtjE1% -o(A xcAhZHJD$ ĊI^'!F5!RH48!=tL! j 8¢PadhPYu %T` TAKh:pYBC Xr jBz?QNXBhXPEq4kI&l` da86xpT($t^qASAk$^hQ)`A^CºaiI(JW0L1ԞN,RB r, XbAV"#|Hv^g(2~ /" ^a'7trdmpixAO\BK $AҒ#%}% ` !NC.#V y_VK*ܛ'&yÉ!Αhd!h@$RF$Bg,ahd\ P$%7qU G2&hLGa\ܒhL%Z#ڢXd-$$l upL>|Ұ-Zp ӂp7)A )7k$F]VFf DT! ` F0@ւ@" n:Q0fBpWWv1/ $;3 !%q q.$*ɁWR1qBDDŽuW -Çz R  !X! ! R"!r +#3R#72#c#c#Cr!$K$O%SR%W%[%_&cR&g&[^@'w'{'(R ,01enqjr.h)rf*i/`"V'm0rE1x. *R,A,e+;J8+%+,R._hj#c.glޒ.. 001-E/e0'27E2p1;1r-/-#2CS4G2$39d33 3s.Js4cS6 64j >"5/05Bjs696Bx nKb%6c8?LJ%ZS=u9/ne I t H8/s³4s ` @h! B̀6h=h:#=-H h/s/E:.iր//bABkc4j r4GGC-THzK$?_.Ds@.(d:PXAhaDbt.a!Xt8xD*%A.䈁!E4fv7a!iځx!F[jU/*t/!J.`A,IBI/IT.~la $ $I$i@LրhK\b  R:@/s- pNLb pրT~XbƉTX1zwB`h1.)JA `@E!l]d!A A_7}Rht0U/jnظS_Mf5ˇu /&A@|CPq]vMfoV.vwB\4 w Ե@AeL L:!! `\B&ׇ9t@~..L>BujbD \WgAV aDh_d5(a `|m#n9dBDCzŋ5bT,XNeA AҗEA ,w@  # z4/B7oF^gj'2)@נ b@uQD! Nwsv@"ubeJu$[Kvxu!![5P!uAȵ%Vn+OE8C H3Sx95$mXp`]M蠇Ae@2hhuGh[~!v#;e$h`R2/By?CFcLhCi[Z;䥏E x^#FS7m1CAZÞ 0:u:3qڭ=z0UzDکa=7ů+5 L1' c%2LEҳ?C[GK۴OS[W[۵_c[g[('J(s[1q#[RvQ#m{3!۹{ۺzڻ;[[+qq};)᛾V[Q3[aQ{.] *\ \G{2! Sӻ3\./ܽ5G?ÓR S^W[Qc^gkas^w{gp^臞c^Ꮮ^뿞tǞ~^C<1Cq~)-_ ?QI>O'v+/y \#qVC_GKOAݏ2[}תryssf Q_{ f 6}9}_9 713S_ƚk7?Y5Gdߌ?mf__E-7)<0… :|1bBzR1#j;z谚Ƒ$K<2ʕ,[| 3̙4kڼ3Ν<{Ĉ4R-4T"Z5֭\z 6,ˋޖy#Wp?oxSZǦpIB cU >8Ō$2r}GV>9Eq3NGA[r$AQ A'DOc%4QJtpċ?<9zh}.eɒV:ԺG|ގe5Qu-+!?BEAizF0)G``C:h!>x3:%//tСaQd""tˇ6Ixx6TyC`G3b5P=БHod"AސŠ?˰BEБAB2菇}2l]Q} + ( 1ļE4 4޴# *@R)Hhى)1 :hH A`yU#6Ѐ?4VG|7QaFDNj,:5I QM16%(j M.rQa{ 25fmIJ+~#" * =Gλ" ,L%H& pLpVe$+̣ J¼MaCB 7CxEЂQr!8A:K 7 M 60vChIRB,А BѬ'.B9%b07E"0e-B5юoÆ\ 2Q&M_ A<1]e4qm;BgxqKZljQ7MA/c#[Qo.-o\T:tP# 5*K)PR"(3X/CRyasZ` t]L2b$^Pj \AX5X2\b B.9XնeAFiѯȯ'ѥIO4G #BA  CDy`y!q ̣Tc  d:! Cuj`UЁq J k8V#:&#MP(j4Q&8Q;hg+%Ma1^>"GQaE@ FaYe3۩2 rF vBl+!DTo>RJ[5V`vVթV wD 9Hif;5xȩ#:U|ۖ MHy\w-u^h{wBw-yۋ߽0{u x^Pi Kx¶^c enp]<Sx$..AkxU`+bx4f]'8P y#F X (9#JM B<=V0d"ky] 0yd.L*9lf<'$䨆?U94OT_%5_ k7yno\z׼ ` {.d+{n hK{Ԯlk{ p{.ύt{n x{|%޷]~|/ ' oK|_8/X<xX<&O|"W9_q|9op|9o}D/я+}LoӟK}Tկk}\׿}d/ώ}loۓ.}qK u߻߉ OZ+_K~Wk^`߼ϋ>A Tӫ8__~o~ /+o}>>}o>=?o~٣?_?]>7=/߿(Hh Ȁ (Hhȁka'#u%h])u+ȂY/xu1(UG58u7Q;t=MAtCHpwGxFFDŽMQ(SHUhWY[ȅ]_a(cHehgixn\lQ` mv!3! ,    !" $! $ & " #)##%&2'-''*(.).')+++,,3 -4,-1.4,1328224$6=56:,9?39>39@997";>;;<%D>>A?AD)BECCE.DKFFI3GNIGGFHKKKM6LRNNQMPONPS;RXSSUAV\VVYCX\VX]E[b[[]K^e^^b^`ccceNekQelffjhgjRimgiljjlTkqmmq[ovpotmptrrt_u{vvyyvybx~Yyxwy{d{{{|~~h{~mpMyNVNlSj~XUV]cjk^a_bbw_bideĽĮDzɶѹһӽٿ@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\BD`đ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵW篬YҪM{۷pʝKݻx˷߿ LÈ+^̸ѓL˘3g̹ȚCOLͥIFj̭?ʵ;Ɲ޾gѽWn|r͋'>]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "J,[mf &[RDl~諳MV 7?e,fO5&(C*D.xnDA +CGQl\l?@ o7&Af\|Jx0,(,1f ?i[l3 0ȵAI$ j`-PP#y;!p `Ffp M  XUppVYf]a}5_Y%ᎰAn{p]TCqVBeհY]x0 0d±li}۪hWoXvؠLzj0@竲)Xf xx5#ffF8QX4Q^T,W P ^ `WvO V,w(?3K=p< ׺ q}k][׹l5ɋo-a5` c@ , >ohYq2 zX.@cm/0:}(3FhZҕ=!shЛy3t3)t5q mh(y^V,nJ-ڑ4bhB{dAa۳ . ZlS/yוwwhJ֎;#H[/q! >04}aWP1q2u&7o]/z"o g; BRa1rPxi ;΀.Zyr^|@| A B{36h!5q}b J؅.|c48,R_DW @o]׃B@yS` w>fwe 5 >0oH3+uMAp\6 b%O72 z ]3}},HDtPsI 0}ǂp44΀z;FR1Vx}UxVZ(\؅X`b8axfxWic8' p_p_pm !  @ K0 ^0 ѐ  PpP` ap PdPP@ 0``0p 0ۀ0L ` m8h5P  P 30 @ P/P  P Ѝ   ` K d` ֐͐ 0pd5@ (@PAВxP'  9FyHJLٔNPR9TYVyXZ( $;ovAM4kb) p p Ep OP p xp 0YPq R pLpəKP^ Y) ?@-p XPP Lp@ % P9y 3m my ʹ阃I dpp A 99@Yy)`#pA0C@)x;ip[П|Iyx)*,ڢ.02:4Z6z8:<ڣ> J+CLFK `q`VX `sXvvVZp__WZv Pv* eZ[_:]Z~:c _:|y*yjjpzmcpJc*  s\ v*jʧVjs`:ZzȚʺڬ{ І{  R~ ` ڮP : `rJگ:tZZ z[ ` @گv*[;JJ ۮ{ {t캮k3+zZ1++'˱#{Kr Cڱ* {T[V{XZ\۵^`b;d[f{h[upDz$a]Oo<c0[{۸;[{۹;w `P(;[{țʻۼ;[{؛ڻ۽ {; p0wP ໏qۿip[+b5qt` "< |-!r$\6|8:<,&lF+B7i1<È==NPRd^f~hjlnpr>t^v~xz|~;l+XُZ~阞难>>~鏰螎겞>~빮.n.`-ň>vq >^~e|؝ ?_+ N <-s 2]x1( 0oh!o$zt*> 0 0 0< 9?_V?A@P eMOQ_zthN\ ~Qtqjx_l[lL"/t?v|ac/Ͽ0 ?Pct! w!2s @DgQ vr1 Ы8; &tQ ;%p٤0:O7@SF1@v@J_||/q1Kt1S`UQj $Hn2 &DBxJE w (t2.cdYOdK1eΤYM9u9zw %:t 9gA}.IoPzQNZyn%LK,ѡ#۬aR 0Jt(U8lYA$*(] VҠY_/FV}ױeOE!DIcz +?o'_Gg%"=#sMЕ1.\g|EAW>,jt M9!ԈfZyկg~&PEM޽S[栗?ծr)B2$Kp :\HM/t02,BP E+A" ,(R@' 2E. F %h3 Lt#0B 'gG*iH8LH4B&&rCl oGJ#@1 0LuQH#tRG~RSc"p$JllUlEf"&C@[te qVEoxPVb\R]$]&Bږ/$lA"et`:tʈ2NfB0k4' PŸy)*^V+6!R3]NK6dS.yK1 TstTk f8iXZWAG 5g k]ei aa f 3X0LjygjoyЄ ca2сF!ilbUrxwQv@DZlQfqW1$(^B"a[IX[yeFt`9?Pjߩcvuc%]~٫gfAy@w#ŒUƈeP$b +j)u%@ h?&qxxKr! 9s⛁nz@#Q&GnbE*(62xiKwۖ,3]B>6 W] mxCv.; rȒN]KNo! Q(Z}Ԉ!ʘ ޡ6!<`ijP»5 jCiP,P[a@0)n P]ݮ%g`>^#p$:0x0l M aΈ M;1E l]JXr%;T$Kqsb˫86pI65E0,30cq! Tj#b}F #qo ˟jwBnF2t X3-!RWxļBNLcBF@P|d$'=^H QS+gY[ 2eB9ʣbe4YkRfy̟|gQ C0`.ng۾s =DQU87( 2|7w xïDILb (p Apj(֠:pck@ ƭqg}+?.Đӹ )y#k]z 7@$dEn)NA5TyБ P $~)27^G;ޠ } z-d_tS안#(C:P GƋw@c@IPBzhq" z`O~huyGʙ4y$XB@q%t"*Qm~`\ q\1 3 c_OҠ t>,@>оػ5 :0AXz{j~5؅ۃzPh;0A%*5ͣYAȠUH: 85IxA Ex7eh:?rЃ7 _A5\9A;!\  Pn8#}~bCDLqCACb\0 jSDLD.cGˏ 2D3DM !GNa*a`acar_ΈʤaN4!1>M b*bȞb)b*b+b,hm_n@#Fb1V4%!&^*'F1^c2b&K6C+9c^Jc9c>3;<%=cC>@7nԧK C~`Lg]dlBdLv?GKdPMN6K^GR<˝X ee)a;eKeXK_hVeƴdHKLSK5f^Zgvh4]fX]H e@U(.\PNT o؍k ]䨋a0C ` tuFn^opq2h2qm  U&P(%p@"P ) ,*LQh$Q'0iq< ¥5~ˎVV,(舩}R]%xEٚI2Ԏ0#QjR89Ib=xᜓc J1x9FҲNI8$-TScVh9UHUg ρ=|Y!![!! b!kIתy`U`pl( mG^^ؐm2X(%h+YqYԹ*Rpm%'xi)=n P635 o/Li# u=:oetރ +Y=Xa8JelOR 8DHnf䈥Ք٠=:AH^q.ؓe \m\o%0)r[z1SJѻu'xBzIQeV q[k^; ȵr'hm:oAxE AA#H 3ix +2 % )iξ%0= 59ϒ}B !:jGlJ*q@lRo/(u(j0V/r/t߯t(Bsvp:e  dbQL^ΝGPxE5AxXG`9/ym˔oy?͓Ǚyo;Ýy7̜a'-t|I2z߱z:'4G{"Rț?z7_Ļ{gڤb{X_I{D| |Ư|p|IG^|H|W||O}H!h4U|՟՟{Wc`G mLC+p۝BZу(̕hhWDwg0v<C=(5~h%jp0ՉӨB2W,h =Q2l!Ĉ'Rh"ƌ7r#Ȑ"G~$7\5*?.#G%̘2gҬi&=r2lQl #荕IvDgPa˪ SJO*Az/FV-wͩ( #'jY:.*eİ1+oVfy++=ͽѱ[Y4,m4ԪWnu҈(_n63uX͈2k,9È2:D$%.̥qV+@t25d\ @%4#O_M!MPGx#߂_w8Q:QaWBfVA~_Dm-"18#l5dn=Hou#6Ķ)]aCذ\Ðן&cXO5:|hjAjJȅW %r[V3@H@C~h?QT1?QA_(ss:z):*m7>##>yѐ c*8aFkhXe4 xlcތ Fxeƥ|gAJHXA$Y-\ْÃfzCZ[ H 3,#8؍\o5VX; <;?# Y\.}n{2Ұ.dQި?Gڲ^Z174y Ƈ: I+dbMB Q0$l3^t@"O21hz.|! c1dzױ RAf˒7IAf\2i.9YaE{5,C {ҕ+( +z=f4$D9NR$HiYVDdO]7P~BmN”Ϥ3!B-̉Rݨf0"!:ʃo'*)JF=jDBD.yUE(LC _UY#2C ,JMa 7F!&4rI Y}.WڅyQEDLR]_jijĂG e=ruPve T.2ձمXT#iIMJƳ!)Ciю]p(W*YT50=W_be21 g*Y Qv"`(!^Wt⍺r*ØEJQ]tFI\_FW߹xc?pR2[+j0:Y|]Ȩ{AC'[L ^b.w!*.v0$,db8A 7v2k Ҩ1{k,c)x.ܽahrŝm [_y(Ii߰E?X؅=^Ts}Ҵw"͈=SHv.8WcR {c#ЀswKݦפp+v,,i :%UE 58E[eeg˺l+4:ap4 rS0A~B TY]z8E{`7VwQ~C.XoDD^0I1w5(+tϛݳk<1-Ji5t7:rC j(x|Z,-G..+:ꚉAA{H$&!`AFk qAx->v7tJbSat"aB '>baAl(CAXx BTC(OjIs},<iW09l^AP? ܙ? _ӼNHC70p:=1DJz\Rłp YciB,L Vac94=cG`4j=UM\%E7@\qacdq7=HCpAErIOc2pMC,j׿5^!d. a5`A B_⠨W<7@\|7#(M8 ` N.TC|DUH?d;'눂2/2(cB)Nb24(Ad֭Q6%+%} _C&8|>]JAzB_:$_%ii;pIV&ne_$7B,* bdQ-*ğ8ybA0)77Evf%%np^<IaTTCAg 9 "7LB8j17CkIE484ZTei-D;tF;x84ABҝ7%`n7W% C.BّC"'9vAtB"=>Bp%i郼œ&],cHËB;jQY곊Uj%q(3| =a N %XC/8I؂Mj؍ŸU TtH %%><&ʟƂ8,`;fl̓v6(+hwBX^ƥOQȉCbǒD5Lv7 P>S9DQkc*4J~٘~.膮.閮鞖ELgM 'FD$(= +ĺAk. T:2SC <(7 X`o+ZEjCh =LB'UB4\7 h0 `o .<Z\JSY"vbApUM% &N 54 ĝ BI J]]6]Q T YЃ7 A]сPf_)Cʖ7WdSP jA5WI+ 2 (.=,ßȠ`dhU)06 ]9/ z"ScP ."SX9VYc!H4qz :."O!8Ć\Cb9`,>*R&8\rC\) zC蕩TR i..2DYvC}aCuʫņ8`$|7p?6s' &fI2Qԙ.<|4w:i'(;39=")"y3 '_42>2#E20MrT2D2Bkx)J,lAM J*NوkI D˄>$pFE{=CL5ݔN==MSS3U3WۢXq5in3P(v е vjlڶD֯RODL]Xի(%٥ ]|ݗ~ꖭoK\rM\Xc" "Ljx5X/ 6TOD.uCٕ]~昱_]dM&l蠅i6 qYĝG왮ꪭZ£Œ㥙i^>+Czİ3[.վWkk%2{_q n{p5ߜ=EM?XrQT8eڹe{[wݱ^qՃޝwjFub^ceuž??[ct"q܏w7 ~~QgT6$0_,}a8L1ˈ^,Ce[}FYPAjb a4O24faMWv 5g.C Yo"r<2"^WgEm8, }oybÌ%.[ďd.U0 Vl 20Fb|VAAmq 3*%5 b Z$=2/ $ :A-VAG$( ,~Aq oP0I;@[!=aE1!`nXA =0FyhFj-]Ht$,[4'iBt` Iȸ8CJBO`y *8t0z 2BWꥄ)`RMhB DHh#|! 4(p%"B (? K1tЁLyLYp?!&%rF%fQ㮶C ^=< IV2od FH+y$.BDFH]E/p(z8Shkm)kT$= JX b "0tte5G DD nB5ᢹɏ?̂[Ye ^IQ#g(VL@baA `f1Aa,E B^pj܅ H-;EVxID| Y cJad(c9`*aK+f9 3tALgEiaQQ}?j& Б*\a@Xz36B0[M% Q@B54 R'Iɭ3;g.9ҋY&%hkksqTgOCay#@i0CO l$,3Xk-ӨTy%jOaN, jo&iJ|,F&b:AjP4>(a Fe[5m\iLݲIa 13(~G(QO̠^(!j(6C Li)E6+rDdKL@LD%m|ϝ) @a&6[(P r&Bӄ*d .ʉ(ΌY  blN(0> ?1~DG^GE!L}܊K$ Z""XWH#l mK6za!W!Z Icp1IA B(p G !gsp.e@9 @G b -_1؆m d4 0 p-, aN".pСE2N±[hBaD|u'{fAW R  gaQ!r!R !R"+"/#-62# CR$G$K$O%SR%W%[%_&cR%gauv! n'sR'w'{'@bybfQ)_F" tb(OI(B+c 2C$\QpR ,-f7S*nr+B,/[VCJ.*K(f/B02#SYB ,kq\֒2%3?SB:K,B0S(kR/D4[550߇J =4R3U1MBb58"6*bx bJb$4"1=G3Y>9'?^V>H fBv1 T)F5FiT]- 4jrdJ>U-:ts83.( ڂba):N%V! fADX-򱖄J}cjGAfL"bDnP6UInva< bTP pPu IBGbb@" Tr,-Ts.@?ׂ@I 6@߀)abs.I U^ 6iW )a`m䉟~ @5A  @X4nPǵSP Rz*UC#t頪V6PӀ3 &I T a AʠDW $ހF %&+ ~aTQ1NT1 t,7|DbA&$A &a@ɍh7Jbp]B9b7BS3SCe *A&gC fA ~>, VA T6 X  b!m4   )ȡjS+E "J AmUbVr?dD1>QӲ,`u @obDBF/4$׵aDw.`rƙ8escf'ĥttٲڳ />`T3/˚~Γ«9o1Ŧڬ|Cz^3aVRztW'r&¨e3:?Ҳ/3[7;۳?C[GK۴OS[W[&'c[2r[u䑰r[#1ZۯAs{۸[znz{PۻǛ{׼ ;h[U f-ݲۿr3\ %;/\{/)+11Q: sBHL<PwTĥ2>\D8jo'Aw{|pqLJ|ǃ)ȉȃ<ɇ|Ɂ}Ʌ-C^GK/S^W[>Qc^gkms^wa^ ^݋^A飞ܱ^뷞U@^B1e~Y^K) Cf[s PpV/3_7;-oGÙ>Ϻ/g`tg]c̋2WS_ B!gy7#@dBC\TyYF)ڠ( <9M萅4< 4|Aǃ) #-? A?]wYAm'6`=V %?C VM&(*4 (-C L(*Ok*ض (0|E4&q7s.Vn݉gz?ơ>)3J :ARBD@?cSy  ?V!$4! S7As!1Y8S(!B4a Y ( D"dB> 9Sz& l-\ҘRkb_*D:oTeh7BMBg!]53Q/xtqHⱋTFK:nw.)ەg4M"ʒ%4(Wy#G.]滢+_ XNES:0fOeB 4%\pI``ġP5 : rxC>2 J(%rF2 (%S")C CJ 讠 3_P*3LJeŸDr- nXeb&ADg/$'G? R ' 1  BЄxy|e Tc:haaM# rPDԐ<(@θP;MPɬ4yAdA6.)G] DWt0X1.e>KhH b$ܠ9R"!BVBNJ*1Q5<1,yzr`\/٦3ڗ|yCljϺ$\NmoяUo?m1j+lS69"Jw01+AJ]#w yE7uSSFy { ߌWh4Yn%퍯 `7yU`# Le r`_ fi0? Cd+Ӱ<Ӆa鯈_ Tp߳X.vp], pB$$ɕ2sv5a{,wQ貗 0yd03YenstC~uso>گ=??o֣?_?O><߿(Hh Ȁ (Hhȁu\'#u%hX)hu+ȂT/(u1(PG5t7L;t=HAvvG7G8tIMOQ(SHUhWY[ȅ]_a(cHeh&%gvhg"&! ,    !" $! % &!" #)##$'-''*).')*+2++,,-1.4 .1-0228334$6=67:,9=39>39@997";>;;<%D>>A?AC)BECCE/ELFFIHFFFIJIJGKKM6LRNNQMPO:QVNQR]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz? "J,[mf &[RTl~諳MV 7?hA-fO5'0PS+D(/|nTQ@ +cGUlll?L o7'0Af\Mx0,(,1f ?i[SKPȵqI$y0b 0X1/&iXF8-l{@CX 7l*G-ЄܠHц1n 5ݔcЅW.e0) %@^{W|A Ղo|,FT7HKFeL&"0 `cma p1I!@hj3tV0@F0fɜ@ V,8ƀھ"S T@)U_ xL\Wк`s 9N`d=)@wCZ61PZT56IuR )]CeȅO cة_[@f.m8`h |+&@K9NY VY h )$.yO_]`@,0  ָՃa8Rf,*nMd:pd=ƀAZЄ N έF]}ɀ!A "(yxj0t50{&z$^`Or<f;[{۸;[{۹ y]}P'зۻ;[{țʻۼ;[{؛ڻ뻁[;0 o-vP Q{ۿi+b5qv 0@ |\-10kr"<4\6|8:,$۶F+B7i/È=;LNP=(<ĆAK^`bD^F~HJL.޹:N <E \^`b>d^f~hjlnpr>t^v~xz e 8SR- %}Я>^~阞难N>. ꪾꌾꦮ>^Nn>깮.n̾ Åva>^~c\qm ? . p_<-s 0-xo& oho"yT(</SP p SPOqw :R?Q X @FHNuGT_f]j2]5_bOdt_3kǖns1v?x{M r!;ĠQ 2F qgyq 3PC}`igq /}qk}o pOyS M` 5ps 5P9iOHsBM?|y q[ptQ3_UU#XABذo\`/Wl)XŎEvW+#I)UdK1eΤYM9u+7`/A,N3-9SQN*OUe4e5;vJ}E`5WG{ $vΥj-VVWJ,׫?bĪ]*T༼v&+.i%kLnzy׼Z[hrFn!;Y+vjˀ4oKоFNb#LNVIŏ'_yShPFׯ_}Q揪JHZF&x@xrv(&Иp>",D !v0HDB**P k`|j"B!h_,*v@*D1ʄqEi&00JҠRj̊tK w1ҟ'آD 4j1StQFuQHSjϟIH?Nۯys)@./\!(g" mpǙ^!TY rcyl=ǿzٳq#ی$>FgN!]'$h6 31s8ûB B'wCTbc~<`NBu3ydK6YdT)7QOiSPc $bv•ftŜ&ڈ7NV @Xah$୦\Um{褠8!.Le! przwRzxJYRjY8/,@`ȀwE۟GvHV>8 _]V}u[w]Wfyayf;q$# We8%Ê C#ؙnzt)&PBf7p`"r 3s{o1\d818y؆ ZR-~_Aq,ٜ47lIob<[F=c AtP3azb2Ю)]|xݩT(&i 75CLiCFN0t$[`6-%j Q_E!^`9 ōJUr6n/ AP*mخS5 c*&Pde+QrJ?,Hxf()+q<~f{Ap_\ Y+S027XZ?fK7 goa3&,z4{jpB#{PKBdΖ$7Cp בb`x $m…/ф1)#ą396v`Qv4L)F/%ZT;u]ʖZ53A̩-qyTd qE^T *ᵰ0)0mׯPE*(2nc3cc7㪃ccNc;c2;cJc\Zc< a?> ZvBdH2EF7 1CdMީI~JK.MedN eJ,˚p$e5AetL W8i˼L ?u !&hee?S؍QTJ5g.Zh^i~3jN( @^0x eOW .<( N< o i ʌ^ΰKȌP+Hru~gcg)/;GvV.AA!Hx&!&ف5SQ m ؁ͺɬ4Q(P v!霮(] y'1Hchi&# pRh)|Ҭ&XC٘GT9 456%GJ=XQwar~!%w+R>1fTaa͠I=ZxWФϭe Ղխei;\Vu)![)!Bh+!WiyxWxnl m VAWjh䡒٬m51֜%N聅Pnfa;ui^q&ς hn4himmOM..N"bXA0#].&&Y݃"mYFp$BAxj 7'G*^ox;B(&Z_o,e\UYo&H)prxAQѹU'vbрeW Q[i'_rcMZrxmBQv-?)$(ݮ: ]09]$^ bXf~̫Z+Ѩ]Ъ0/Ss+>p%8Φt*t0l:oв/U0jT/rtt./Asvr\ qfx["䮰f9xOxmpsx# ㍫LxHIhy/y07a`y͘Way/Ԝᝧy_!wv.yzOɫGɬ?ɭ7ɮ/ɯ'ɰɱɲɳȴȵȶȷP z"zHHY cGv{H{|V,zo|={1{ǯ|0GA|S|d||G|\|O}F!}74}nD}՟C&c5}4zDbF2j NvK=dԲc}FxEAraF%DpفBvrKA=`dOWf $ݛ 4-,hp^^2l!Ĉ'Rh"ƌ7r#Ȑ"=XȔ%̘2gҬis^eQBtVhr ?\:{S'e YΥzujZZ]9u5Й$ִTWˈ+_D]Subky-EnkXxm BDU.m4ԪWn})ē]i6n9wB ya܎B~ف$MRIv0!;ĖQyV bE![vljGHY tV І?ħ5?QaNH 1Ԑ+2EsM~FTyX< уM.|! 1Hy{8FDXMBAlXF )$lKHMVĥ&:1`ϢЕe4BC|DKT&K<%%\B|1DYφAAjؼo:IH<ȣB+% %iaՈG"(S ATMN4J֍#%˹*0~f!0E \iRҥ97_rU6Y-p"C3!Z|Hqb!$9U'@ y3ngn2} Ã^OBRPrh6!%'o@ҕT}!EwRS?yZd(4 6IS5iKRƴo3MhM9ZҙvhC9!EC0W CUEiDYq4Cr6ءZׇi%Yr))+DƑy:r%5KmaSTd!Ä-:ʺl/H)ڰ%6+[hY#@a?XR첑ʰyEj!ػ6#>>ʒJ0%iIt!TE!q(?ыZd Q fĘ߫@F9rCPp_!;b3t)N6 JNAPJ@< :+2xT}+oاFVd{s],!g\ ϸ pg I!߸KW*$vN.,%2Y4fvNrbwA4/Oqe(5EG#νs ^+r026)@@?Ktkj t<0 A񟉡euj#*Z1Or\r{.ITt y# Fa9*@BfцHClWGׂB`h2`;p@CK!VBa*#Ydj/аobuCÕ]pV  a 48dKny op0N!0"]Mnv ]۠ye`]KAX؜u5]9Q6dl%-6/0F190renyTA,4bv`D!@^,@Q87#=Fb󥐇ݪngn=۞7<w sBuh 1@\b.X^ B{,j훔! nZƗdm(j K 2 B(" 7.n/,?B0A@u;0!7B)D5AV9Ws?_v ,؁( 14A}7aC8M />W!,؁1V/@B9ʃ@юY 8ȁ4H85tINdp~ ¡ȁBV5r! ]*C@AvZhĕ!>Ț?h`H("^0@Ä.؁>(tE5b֟$']Uߍ\dlMt3E..+G5{Ɂ4N%\!"&.r@Ɂ0!; V*c14 CI!—̙1,l/P>An2a8_-Т?C;Y,T7%ȁ9 8 %d8-ZT䖰,;b j-7ؤ?bv[͟*tX9LLAҡ YVD!@/ J44zcf oYpÃʅ~1Bш[L1$qB5WAP4OAPM}N)T$ӈ.F)T&F 'hV WBX8h^`?p8ܡDa/(HW>Z7jlަPeKrC)8Ԃ^!B< @B\ AN)ig =Bq8|CIXdeWm"W^B9i\EOM[xEAUJ9{}*p1A/+ 2x|;%28p>`+L JC9@CUBg7C?@!D &u0X}Cu>TkMR1A(Bt,]9~÷(g(A*$s*C0ҙ>/)>4*í._:8$_5k ;8΃lN\Bu?Bӕ.䝤X[<+`_ !\;ciU,#ʖcDWu~.膮.閮iU4fLqq-DPB2C!BAfI]Ie-88;P!c_~!BAL\Vo:Av*ك%U(\ȅq1BvN!]0ҠcΡD-G:!bA*'Ķ]T %B9\/!_Z4P%[|%NHeЙ<Ja)}C!6Еh<5dl}9v'8X,+lMa0y"!? #BcW11I &J]ͽO.Ua',;%q4Eu\cq1en@ g7߬jCAA)l8 > (Kj"+%3`+;D^JN!NYV?2*?;x-a<8>lCJRQM 8&@\&m8 bd))9'a9 O8D3'31r3i̓&Rb$7(>7l>> ##/$$c%?/̭72g`ܐ0p\jBTVĤ.P#To5Ww5P-4=5Us_VW5Z (X;\5][+[_5\N_5``6aa6b'^u5R׵dOvKU5C+6D eo6g'e5ftYtgi'gX6dkvG6^va6l6nl76mm6p7.v/`p'rqӍcr/tOw46`GlWjTC,reT0hQ7z6cwh7h?B$aCA .G?88ywz YwWJУ;yq~ +NX J(PP2!Q@h 7Ĕ?!c2obvA "\BN5!ߞBXhyB(V8)B1SUaB;uQHvkoV=k-Yq֓\to+W`j e1_1`Cju lpǦTz۽Шo`k^at|m7SLՀ*Vr@ rxW--5fk`I5DsBcMM]~ZEEdMf}蠅X[N9MZOFcǂZݞiN ?P^cz|̜-5ߜ=ϼEr>U_=-gt+tm7uߝ}?y7w,to\QW;E~wuse7uOWw?}ח߷?~`ԋW@~^;9c rn_ o ?Ayp .b`i bp<wXCpy qH!PH$aM;:LLg'.n@@bq8RNQsvaj+R.$ؓ1̓h)/b`N!懪Z,tB\oHG-h0N ZT4pi1p*T2 eCJTF{V@!ydX] r ABZ!b$b&RĠHd)jMbXpjjŞ UH,T]+ӥu%v`u>Ba!(=졧KL<B B ҲeH9Rb MhC5JR^ì0",ȩBj ;T 7s bD`c(D-Cȩ^U%a Z Nkq 14!FX.ߨ x@F9X 'x{ ARB0U/Ļ}x140A Uon :PHn4lv` lOBM!.:Yď ːhǛ\&px)bBnQO"6 d.A&(Tp,A#v1!*nN#N܎j@t^xۄT">D lo +OA̠o@w  E wPN@:`i/a`^\a $w. 5"/  vi20$P VbB j65 jB AT1`&@` ExP:p`$(++NO1v@|Ml~%*&/vQ+< cu0@>bj `6!M41B3@ު^F+!6 >dD. vK+),]h<'Cy$It1 nryADUʁ!tP W.: &ԉ3|* UZ%QGXOaZJ\U]uOtQarTBEz3U_utpQ!iVY.if L<݂O7ceHk\ἨOU\bSщ1 \U[7MO!6 K^M$_2[6` Ld2Y6adCVdGdKdQ&IհL([Md[ۢbPkSfkVgi6Sa~heOgf 5g P!%V6SfvjfPǁgcUkkviig1VmjVXgSvkoVooopWpp pqWqqq7NVjCĶBdee/+fbB tCWGtKtOuSWuMWtK7t[tCwfvkvgusWwwwy`wuWxxxyWyyyzWz]F {W{{{G bZ nN/J,qW}ח})D d 7sgsu/}Y~9I~&sb#XbS0/ƷT8M'XG&eV-/8xdWp,Nk؆oXchxRBV-˃e$t؈[شxB|~p؊CE{]" armxXט!D/ dJaǘ…wǍ.b@EYژ9`޸@ j \!V`@ b.xd߸ ڠja 7zS ˑo#20óCY 8I9.F٢ڠ : )ʡР`zy%KN" d"̠ a AA cZ) Tk,ڀ@+7APQz:'y.@n9a6zb̀ 9a ѠR`!C$J Р1ր7 xL`,>9ٸ8'f-䢝 ش™ ? * AA1[z!bbVPW Af 8u!kA )aBf$B>غ R뢿b[fF5g T$"7=%!&=e?7-A@+ {%.!>(Ł !bB{a T[;=aP"-xKv7y G^ =)a3mA&-x$$TR ! BT A{ B@F$TMa: ʇb3..2_]r|f-\Q) [EA U@ޛ!5 j,f z #&lP8L5.A$Qסعk؀RӹAsyS`݋`kc`oez\/b݅,JaUy\mlO֠xS],a3>!Wyō{% F ް #zɄpQC֡Pa2ϢໍyQ흘* jW[۵wlSL^Wr){8CXhV@cL+_ j`  4Y[F^~1ء aIw8#8Qv/>/>_z;ǿK_.['4M)͟… .WeÉ.+7/ƍ;z2r*Wʕ,[R2̙4kڼ3Ν<{ 4С:T QQ%޼(2ԩI<4֭\z 6رdb59/ӮMqB ˛?>ۻ?ۿ?/ǒtMTA`` *H uYw]E\^ah;UGI݆&b*X!v4bT%Hc6ވc.Q"͘cBIdcF>N> eRdKZneRVeeff`(Gd grYٚ!Ytg~egxr柆h+ hN'I'n)^cJjD~ *jnjnjZJ+ ,`lD KH* m:hNmZ`mmHѹvnFƋF6+oZplKp% +'\1 /r*r. s2Ls6ߌ3ͮT/U,SL1 MtFtJ/tN? uROMuV_uZou^ vbMvf;}o@Nn 7;pMsMxívS7߀T.m8~;7xK^7y~qk.s6G8;zꪯzN{ߎ{{|O||/|?}OO}_zo}~I(~柏~#ߏo} p*pJ/ "?90$, OXp,l #zK ohC( D($*qLlE%cT"8$2@q\DJ0qd, `8qtJ]U*4{ F̡yl3,HZg.ဂRPp#X $ P6O)6Mv(_ KjIQ*?͸2fݒ19;RD\e1 hFEl)5LR37OY=$Lִe4g~s!T7QD,(CNp,3,hó͍l33dA/,aVP"V;#y͕ H( qyAvJ@52Pp4JጘCIAS%5Є&'CR $ $M9e $a ]B p]<"K9iFʒZP4.OT°iN !Ba]> y,D ^iTJ98QG4)l(aSc!$=@H8Ktr#bZ NB!0+ WH_RhX`P"hMz WEdSҐ7 vCFMgrS7\hqIS`Bx7`oIQܠ[G)vЃ` Tz˺30yBMkP Ÿjz )xm9 ?BN5LNB?\”B(7 E)d K,V&X 5l]1ya( _(aE Ћ^CX9Ѓ6mj\0:#C ! X J[.(miG!j`jBѝdi 8(?IxU5م*1 UȀ(XTdDE)J2^B`M|h؁4)7гH ̉A!~mvi$Z xDzp9I . mA;=ct RbhW 7HIQM5@B!b-kSǦw1iC2Z ȼX1F֚@[84v QHK6RIEfiiV kn FxdwyY z$+CYyXVDiyuG㗀Im*B@YBP9?ə>Xɚ隯 )Iiɛ雿 )Iiljɩɜ )Ii׉(tɝ ]I?4剞.tɞ' I4tɟ YJ!s ʠ J3ʡ !*#J%j')+ʢ-/ 1*3J5j79;ʣ=>Az|*E.@jIHMzN äQjSJBjWY<ʥ]_ 8*cjej4i*kʦ0o*sJujwy{ʧ} *Jjʨꨏ q*JʟJ ʞJiJʪɪʝ )jjԉ*ʫ髿*JjNJɪʬ *Jj׊٪ʭꭂBߚ*J犮Zꮨ Jjʯz *۫k ʰ +Kk˱ !+#K%ksX'+O(ΡYY! ,     !" $! &!! #)#$%&2'-''*(.'))++,,3 -4.4,.1.1128234$6=569,9?39>39@997";>;;<%D>>A>AB)BECCE/ELFFIIGGEHGFIIKKM6LRNNQMPOOQQ;RXSSUAV\VVYCX\VXWWX[D[b[[]K^e^^b_accceNekQelffjhgkRimgijjjlTkqmmq[ovpotnprrrt]v{vvyyvybx~wyy{z|d{~~j{mryNVNlSj~XUV]cejk^a_bw_abideƼĮDzʷҺӽٿ#H*\ȰÇ#JHŋ3jȱǏ CIɓ(Sd`đY͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵW篬YҪM{۷pʝKݻx˷߿ LÈ+^̸ѓL˘3g̹ȚCOLͥIFj̭?ʵ;Ɲ޾gѽWn|r͋'>]znՅGמ'Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ:ꪩ*jz ?!넿*uYej,,33[3ySP5?fA,j4 ,0ŶvJ2 ޤ?SB2+1s,;?Yxsr2PqG<1H\?PX$(21/%CI ,P%:ư5k= 9'ma;+_ut.P׍aYAp5fnMn}3ݻ1nY]jO M[ݤs̑gVYYp]OyEY<Ⱦx+qd;ϋ#odG֬;>|fY,[sC~?H ;@3v*7` [XV-Ws@ ͣy.A)Aҗ- ;P#J@ "N_Ceȑ VXΰrof@ -o+ 2# fX/1`8=0 )^2p"N YC/07ho8 `M7eE&l;7*_pbf4z/^>Mf0_P@u06 - eI- Wn/nfyZXA7eV5a@˖9F )ol4ԔSh7' k"@FF<$S5p~9  CQ%S,0{ S\:GNmT.OUjlUNR[F5$! 'Y}fJk &0t@0|V3?ڶzP:PQyc$eW6M aX< 8<'[}+00:X<е\(F@;ApwVs`' >M%` G8&(Gݬ ΋ר&G$^j| [- d!`Vղg[Ehi%^.p YH(@`[ _f!"s4U51EgkplL4X, ~(~v^H_?Q6Vw|%hTf;&MCBudWyGa=}pcv eAЄͅC3a uq}k4Up- 4}aYh1q\p#B5(Go{^?ql2cʽܿS<BtA̝ڍtm=]}ܯE<Bu!ڌkk1~ N  .{jq # ] | 6~8:<>@B+,qpR>T^V~XZ\^`b>d^f~hjlnpr~++Lؒ`0t{>^~舾霞N~ꈞN꯮~N. ^[n D- w>^~^ ƮsPC۞իW1yA`=R %m/?n\ɰ  ={$*   ; ."o%ɀ+Bo-@p0 ft9;_=_{4T_A,H:r1V_fXGl8#/QOdt_ jM?^O`b/ӑ; {_pct! w"SeLD _ӰigA /@ov?Zn=p=Uoڔ0&_7P3T,PHtLOͼk-m}o< ?6/Vu1ΟeA/yN#As DkC%NXE5nG!E$Y9zsdR 9f)M I/Jz9uy~%L&F͙#[,a+?aP&PXi]EHTJra6X镝Cߴ/HVEծd7E]F.ZtK(ArыXIqO"k7p%47QL[k r`SPVS=I|kbѥO^uMTْ˘Ň9yA,zb҉ɂ01dU^s^%h& 0텂!"e, b )RZcD(@ J> =$w0ÛT$$/P,r c k 6ШDHDbC &w*"ҟȂB JӌƔr<"3:pZoQb4O"JnXKUnJ5 B`ha`fz`T%@DB!) `b\$BT#O.!A#h" ف[!%$5.u‚&^^ "zT "%q!Tc!~ {ȟ-P3xc1TAWc}d3JR$f*VUab (a#V9Y Wc5AiDWuA41(@xՠLv誹Qh B !.r%~#L |=[ fKQb7U'4H\ g5ΠEvW6]I}tK7ݢCy729e]$Udq%$Z>efg[D遉0Pɽ[*&`H,zxh;D$yF 10#3~AFd*kܻ,}Y+ :P+NBֱ"] 3n"@pĄeaL6UT35ǒQX0)+]SH0YE<4y 0(!.kH $TĊ!  _0(FDB3N 0JX53 I8-ibJ -d2W a}]$G\C Em D@!Э@(o !.,|a;8255HPHSW|=# T>j+;YF@0.享-e@E3*jpȐ$AKz}97+_\7ahʱ=>vw fpi^w幣dnsk8a7[!"#&qO`80T̐XtP֐JX;b(AbKfr:TC]+rd'gY[|"pT^T.Ykfsu|3pdFOf'ZыQ9(M#ʦHTW XD1pѫfuIP‚4eR!D3f jKB @FDn)z]lhGuPV(#]W"w8pXx sXnejX7 c(ȅ>a }D#Z \C g8ag^ۆrmicZ6No"*1QDq\!QCEUāUX$&Q\sP a5|l! 6oxӝk!Uhh<Er| ]1AqBX4vġ@`!8 ˆ> #9'^<:ӃLk:[RG3j pVC e0 a2&A @Jı 5g"Lk|$7Ґ'׃ WıX7ġprG,`d'Q."_'Kq:<#ø+fa3,1<}hй8o }p7zX\h=_;qBw8?|AU?@"U8r@hUP9Ќ(5(I` @X D8d_9>rȃ8` XA1C/Ss3P n؜3}w"C@ ґA>p cDG|D'#D)c>*CIs@^af>F>aiaR<a.bEaiDDb)b*b+b,CRtdI#b#9:<[$`|*dANd=&dLp`UdIuJ*dM^J.KGGLMecQZ2 6ޓdGMJX@JR_S.T2UXHˊˎ%ѧZV[&\]Ŕ$ QR[my-\ ۊ X<И 'ޔ 7H(@愎dr؊ O cffg fd%`3ʹY*e '`)0п;P*ȺQx%Ѯ '&֐ 9Zz'aS&n.$b'(ORyٔCSKR`Nb2E4y)i եH "Lj k*kS1Ѽ&™KcV$ͳYa;ĉԨ^I9S51$rB6Q~aV>O.Gq]@h3i8' ߑj0"ؕBLOZeS1jc qWJ ;5o(paޘv%!+Ap#,]WY^}*y"N< aH*<SH `>WIBڠm^plpypn΀Z7blB%]k0r$o&8 A)lrrALйeo '%!$)Ho`tڅ{Y"hFOH%>)3P57"]Kݩ*]$^pIa`@]ڄU a}Mg&s#y$ PSC/DEOFrkT/Z2*{>”Bk\ lO4Arp_xOdyǘ>v?|Zvb55DdO?CVwTx85gx'.I;c, O'DkT %Ѓk2 ͋k LE p-pKQ :M^^2bdAKEN3ݓfCAd@K  LA!RP2 d'tv6c`x>-o }vzk09Pbfŵ=Ә9ɠq= j 7;f Yb6-<%*SJ'1!,B wB]E!i `| '0>$  BD6XDsE nkX bE,豃;M:,pJ`d,j1Xn 5Ao҇0 J$`*+0 zhݭ&=) [ٓWƲ%-'eˠ"L|B`Lrݬt&.zJ(ը('@+c ()@DZ3 @Ѐ@"~ κ^ '(׶PT>%q!`bOX7 H>VPs;A! ĝ9/ ݡfWa)h]*Ѣ?iD.K̞UTo6ɠ'aD5鱄‹F=?l/  Y;Hw/*zxh06w#ęqr%xDqo25@, pMZvֵye8,A&n# S84i%nCM" n,{ɧ?*'WY:4xM Y~C[;d\%Ԡ5 G w<9!9 &c a:d#cU\iS94C2ѕᎤ=?Z*|BtfA +!Z SyVnoƻa#5 @3c{!޶m<'P0Ak!jH4'0wMd@Ͱӝ`?$78ԣN+ G47]nQ7Bi q.עtn2 yф|6 <{uXf]O03 tƓI[@IRcuI!||ż;dLdXR(,UTV$0x$,N2RV9R#gxT(W % Ǭ8d27$0=C1,x,āY,.0$1Ă7lB\S΁-74gž؂lP#c*g'9*@\85ك;8+7D0<-D0L:Cn0||1,)o֦;1$nb-m.C.'9FC8Ă0:@'yJ/L-brC,+DilB4PY.艊C#+! '"ˮ|B;BxC~́'D'A1p >-- N,b- BVl8QpLb뉆#!UL( !!(.;$- X$=T!P7ā-C4$>x8؃*f$A!n)"wC$pʨA2x;ԩZd2$P%bįveN*f.. ؂=qC/(<YlÞ*8:Al*>YḖ۲-7p:*3-C1AkҚ7ll> rJ`9 0=BBl$j"&(|#%kx> &=CC4314$P.7y:>@*pk&A6/.<2,LZN Trp#|->BVCŽ$LB^(9 lr 9#+Tk/KXB X*Xٞ$(ʟ2)8\bI& (8 :>CQs3B2R)) f$!;Yp^o90A.+221k>N0TwYBA2N)p+ |C.3-C4K43 (el-C~R0CLC\BQÇ1,._PpmQE,3"3! A11_.@)/ wr;Ų1T~z! $B!@"?Bp3WA~q.4E#t!M2^6anc1r4Ђ?SNB!C9āK|FC:"g@"T2EZO=/=m9+"`( _3h>26T_D$a;7A,؅>O DelBp,R6Wx#Vje%Ww127P‰E?Xj u4ɼcHG=´l?$4q4x8C=pk3 :Ю;t(q,/# nG78 =8n1BB53{9am.w5iG-kOfW-|5J=B37I2Ɓ1pX,$863B1PK.҃fs_v*4>((d"Cj×;P(D/x*SVHlLxOE,G _GI;+Z&.1{σ(l7Bj2L(l{ZCŃXw4k4d %;(I)%N@*_|zXHZC,\0(n'Ö2B G#s4<&0ۇ9Q0᩸Ex j&-.,74B^Iu*7L40l ‘{jR 62 C1$6C87$C4@ǂB0܆"YF/*ǂ7*(lkCѯ18A~J.Nn"-PU 00o9@Q7A5p#C*7(%n/u9_B& "n0=0is<8 7cq@q3V.c2~83 ΌQpZgroKy&5wgFhF&EM/QvZzHiQ$od&kf&*Qcq$A=f9DQ\5j;i(Z-I ڙo:ܣrrfș#a^jiqroLp/vW}/q vu#]v0Y Td61rFbR#mf;OwH\Ba&u%LؚZFz{ @&l0$j6BnNJ:PHQ@x70,F3V =20C=aFņ|% u#;aިmbC'ލ"a6G=4\ {~0lVAPKI(IqmV79AJd{(,iɯ .2tVtf2f]P|!BkBm`33L.3&āhmG"sFΎn*l1p3 \c̨icQ0%g_ kP$E2y(_a\WB,r1 z7vAQL0i%53:-j~X=e7pF &a0ú V;@=0 }1p Lx ❌<~Ln@ [B )aAΡdy0| 230/L`r?9p> A08x0*f (a L kP%S `rav -P)$(/oj/v`nnz/hD/ z⼡   O!a/a/xU0\/ ad / ! f Tdnnnel )M` W aXA@ ` aha w/ !./2a./h rq !bl Nv (aP4!`e2U, ѩBCq F8P J `  ` H)M_p4a@qF/G/` v IpqP !vha0P "ޘa` @ִb+),сQ4&02Va@ ``(QX N2ΐ{r$_/:r { Q$df2j`a/Ho 4q]' rpFn`dhq2Vf+w7A+L,',# mY`܍R0P/ G1 )2 r Rm j n L``xp2.:Up4fn!"Jc N2/c)wtv` $ѓ=!1eb7GD ȂbӴO`Vʳ | /rA4i ِp`b voΠ0A T0xT@֒X4 OD2@D2B#c-b@ Ql2#5V%UWwuTa04, O~R7E6oVyZ5(,̄U320P@U! nR 2\5ɰU\7k]^-F]]w] ^_5Z̀a`VaGT`,_K`Xua+baa,b0bCVd--c=-:vb?vdWedwmc.SdfogsVgwg{gh6|u`cVg=/@eiehsiQiji1jqvjWjl,k`wk6lVmhVhߕVnfϖnoYn omVop 6,Wfpq qSTqq1uara&|QAqT@SsA !VlL,Tq 7rlKr-,Nu+U&V52 /w2@`*kwy)DHu 7vlvv+P4ح H>fl!2`9& FX!00зzam5m5n} #V#(n>+a:J!\Xf`n*CxNDn(c龎Da\: A:\ @o`@wL*B!r/"Dx~!^؇zdWbV2>qqjs*K5<P2^///Kw@p j x@ z`.o@ UڒGaj@  Y#dv@R2KU2ApOh]dI!"6yoY90 3'/15.{C^L'UqD! j!,DIm޺m9-TP/s@3>qFa0 PFA d0P4 ~zfO %co  2sA Vr!2`HR "-3 /'AX$A0'oE33o - vOڐo9gNls n (Qڈ06/`` K s!Nc FA՚Q7{ٚ0MQjU:2Z-`.n4{kt1QK0w1%/:yOkം@ m [&!!夑 /t2q'{/!x /`'#  H/ { \n:ȌZ3PC3H|9EN2ؠ::r;œ<@ГV=E4͟6s3AxY sN0==Bݮoo]h&,VAS70Џ$@ =/>X}D]́#f*eEU>kn4GaG{զ脔HN B< TLx4U @/ O0۶Ndoh /Koh 2 nN2Z wao& }նq14$t *;Tkp>k`winUV#~%\Tva>2@0>,4B &`!!vxs#w9Uvr!0b>ˎUR $Akx˳̀_{-muZbdm1?2T0JT!"0q2>E?0@_L/4U_m#aW?g烩%pcPO*X?4QMɿ˿___b <0… :|1ĉ+Zk;v5%ȑ$K qMeH a;1E W"X eBu!;j>!C̱ !sF1GѢxfsLrs1GSCH7#%M#O,8߼н+Sn#9J xoHn5#6FeT5Ȕ,GrPrc$zXɔM4f<+fPxQ2ed ='=j4Gq(jhdƐ.Q‡Yq43IR.kXK柟(%ŠqR-ZER_>]G >hkkQ;;}N_dFMc 8`!丙;a%m؈; }a؈=05ro#FVѩ^,{! H_T! HpK- Xu$|VU4[ XU\kYGffp'O u0|(C¡ 7 z&T1W!jrn$2ΉAB2f Z9܈# ; S9rjH'2.:"50ZRߞdk h,mLB ģZF(SteX {zt"7#pCEoP%RQH&MG~oRԭxHC 3d BkXJ<%[FQwõ}K(aje{ҫwq\mWrگHgߦxCf` 1I_i`I5n5a8X>qNʒYx<1iP_)&|΂c4xLnrT& :rO;y\~'v̕!3Sl.y͠.`l2>A<9paK.l,H3y)zьn HKzҔ/LkzӜ? PzԤ.OT_کAISXD~m=zt"gKv浱l>æI hK{T~Tgik{^vMbs{Nnzdnw͚t F+oț.{oëp ;#~y[||BN\:&gWzoQ6Ϲ>@/1#t.Lo:V>96կk}\SM>#fd/>}l~]p;%>wrvk< OwÓW<ӮK~򔯼/k~?w~zMa #o_~o~ /+oo5>܁k }o%_??->~WwڷfzHhn;pȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=胶?(CHEhGx醄KȄMOFQHUhWKYȅ]_aHehgkȆmo'p(sHuShy{ȇ'8}(xEH7a舏v؈Hȁ"XhX/\HhȊ  Qa6Ƌ苿S`>a.b.Ȍ(Ӹhmx٨Ve SPxx.# fۨ(qO_p6JQz쨏 Of1Xhȏ d28a iiz 9c71Q)# h8($/IUYi, 9yu9bm3 )I4ђ:thސ ]ޠ4Ep}FDG?BqI mXeY@l2 U;h4FLt8OpLPAA@\P b 0b`-PaɘeG=F0 LZ#t–(p@a'[0%E6YP 0 ð@ Z ٘;Ѡ P4@;PS+" mB 15 ֠CЙFL 8+ :B A VQ9 3-k25J $@ m| r~yO 1 ֒ !E ϐ3 ɛ#zXe2 )_+OA7A0T$ ;=P &eKACR2z>UP?p3 7B )JfCYP`sp嵣>5WJD  q$ \P` DkK!$PL`-3Y 30 4 J>`7 0܀1PSpJ`FYEG _ (@ r 2)PyYpƨƸ]C5P>ңA.0Bs805j*Oq  MB` b!~  ` \F;}<0 gp :@U>PкL0ѝ VivHPR;blpg<3`1]b67 O.$J 0 ס  ` :ҳ a[ '3)6Aq 7Y =P C W)YRfP"= pp5) s(|7NGۚ: EQ pb ċN=~.Qk܄ɳ9 HM? LO% 5O0_`lPYU@l5=PȐPih[ 5A0f  3S>Yj+4_ĪI .z   QJev LZ3R pACP2EXp";P^PD#|>y}\FܾU! ӣ96=pn~O!NH8%Cx)-/1.3N5n79;=?A.CNEnGIKMOQ^e.UVY5]_\.cenUikOoq.KNuwG{^}CNn臎艮.Nn闎陮..݃Nn੮ n.ߵnn߻.MžĎ~ Nn׎ٮ.Nn}^Nm-?o o {/]M/F!/#O%o')+-/1/3O5o7c&9_p! ,    !$ %! " !& "*##%&/&&)('*(/(/')+*2*+,--1.6 .10/4,041:224#4;669,9=39>39@#:B;;=$F>>A?AC,CLCCEHEFFFIIFI2GOFHLIJG5KSKKMNNQ:PWMPONPSSRU=S[BV^VVYVX]EZc[[]K]e^^b^acMckccePemeejhgjRimgilTjrjjlZmwnmqpotmptrrtvvyyvy\w|awvx{{z}d{~~h{mrKwNN}lSTjXUV]icej^a_bw_bdidehƽĮǰǴѹӽٿ#XѢ*\ȰÇ#JHŋ3jȱǏ CIɓ(StbașI&r8sɳϟ@ JѣH*]ʴӧPJJիXjU9xK֟hϖ]˶۷pʝKݻx˷߿ LÈ+^xpx ˛L˗k1ϑ; :hѥMέ+f{͵m&]{7ؾ%;ϝǝG~[tϱ_oݼËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vio^)dfhpriX҉|y~*6J衈&Z62 餔V:fa駠jꩡꪬ꫰"j֊󡮺Fث+X5&Jh:ISlr ΰmXwa?ֈ@Jk+<80c.Ta(SGUԑllh20N LK"؛ q"{ l0$A1b2-/lPr!?$O`2L%0 Z |5l4/1Ȃ8"?t_7-c @ "Ֆuuqmj8eUmы6|#{o+=s2 P dcAFhY볣u]dd铻V^b㺱 O,d?U<㠇1,n=YJ; ̏/ 2:pcq|$Ag@x5pa>Ax `  # b [P0@ a K9 _U [0 |:CWl0+P@d0s,)H4_#8_t -`Z0q4 oBeZ ?i _6E j /P$8a ,>T\a;J 0v .u `Ev0#X M<`p|L2`ILD"}US2;JW‘C@5ـe&]`ʈ9yfvipX3=Fl9SL#&z%a*ų-aP~%s,PwR TG:?lTGkT.Q9+0% `]"p(lȌ m2 6f N(as`<@p mZԒp- \0 UT={m& h`lp3gU `څY U#Y|Ppu[6sE&:Yr QW̰/s?]ll5sU[A>SZ-@_㝞G{ [,hA ߾BFĚlju3@:p vnѬ#ʞuF\5!k<mZk/mq,`:mX? G P]/Ќ_E>~0-X8U.Zjf{z+6ױy`=Uhȸ76l GO@KMegprLÂ*zxa(@ ^,L_c;ϴ6>?vĊ9QxS2%D̸fX0 #+`D03 _Dr@B9DYFyHJLٔNP P$2,75KN}0 0 ip PMP P f t ~w P@`fY TPO MaP v w ep z@Hp @/IV`@( Yf) t  5 `闧PPP}9 H^`aКT wz@ P*PHP2{P I=kIY Y= 9Zzڡ ":$Z&z @ Z$WD~K4JC0 @]p>zwsAzG?qAMSTP P \Z P b> c:q?O:D:NZD@?vvOfdzn Eڤ{*MPO꤄?zJj Eq^Z Шꦡ*: iʤڪ:Zzګ$2d7lpp `* zZ* Э `[ZZڥ֚YP `ڮ]JZ p\گڮj` K* [  {ય j +t&ښ6{8:<۳>@B;D[F{H<{ `ڢEr[`b;d[f{hjl۶npr;t[v{xz|۷~P.{1KNls\p۹;[{ۺ;[{ k'8Kb3P p;[{؛ڻg%0u.u;[{Ыޛ Z-A͛<<\;|5g \&|(*L#1\@,:<>l{L?2ñQ7@ uPRbĭ8bL b1ƀȂ^~˻- ! ">$^&~(*,.02>4^6~8 #0߸M2nQ𮒐\PR>T^V~XZ\^`N>d\ hjIefl>ip^]Ntnw>yl}j.Zn茾=)^~ꨞm=La\ښ 뺾~+<,Aw!P=>Y0 ̮n.>~ID 0j؝ʕapAG^;|C ` cPu?P` `d_ ? Ot"?,p2!O2?k(_v+/s4Bo69=On+Āa 0&pewA 2@HI`ieA Z΂CtM7ڢˮrK )ra v}55m^0`0 o `3p4,ˀOIqC@Nr_vuxz|~/` 5UsQolC`/yECumA g_G Mt ?ma OL` rPhİ @/@@HD@ @ PWY(!To2s e?b mH*u%G^3XGLZhա`JgN\ ,ō˪8qQ !'Kg'B:TZlF[]y_&\aĉ5WcȏkVqe0gСEˋohs,լw'gj8 | I| 0T$Uhʇ*6TJO2`lTQ S*t̐!YkNHwgHOh'lĢ!Ns81@zʧ 2ņ".?[6m%/ -Iϰ1FsqG{,*H4k4&4'=Km5Zˋdʎ ph9'dT )!s7͊H^R$:-mu=IB[p`Dpd&[ƇM8OZ6ӟ؜Wl183 0B >u%Rt=IAթb-Zlv[nvH&S\t0+"Ƈ+\S7Wq(y#_\w:5! 8SI"TkLO6N͟=J[HJɟ[ҜB]^}$S䁚-bLWPOoWVپFXPEG|vj*J`r{l6oMjݳ3,]㖇muW 0 4\š$>k0+~茁_cf|Xx`y4ǔc%|v%WB g-snOԈp=~݈Hʭ3ڥ23e~sYMYŋ cQ\붞%$ dmW}J\qlI $ h>c]`lA$ ,FH~秩m/eC:Ix9DavQ1= ccK'# @AW)h6`8z'ϵ0chy$g1ͻE0QGzߐ7*~kD͸b7^K8|7@P ȭ9 `XĒgNaCstO*u.p=*H,Az~psb [(A* AZ~ސ8eQr?PD@.K?1pB6dDftB;,GXCHNx}H{ -I3Ijdc?;Ͻ.Aw$A&?#f aC"pxEW! QC 8!#C#i214 _a'tKB" 2'!u4"D, @# /EX-@-I1G `0'.iES%,%!"էX06/<Ł\qUf$sl5A85+-jg̶ERXmo][)-ڙlZ,o \FW[$OB֟׽ ey+]W.^jlp;?Wtgl}_ u/+ 8`GX0],#Xnf'aXϭ0X kn&GbXf̉ bޝq}c cRaq(dod(sg|$%%-/$@(wA&_rf$My&6|,gTq2eg R6@SwB(Z8GZғr _~9t蒥B9ac9C C5oC)#+|afS$c0f }#LA LXlhEE %sZ˞9@ 9ۄ* 3X?rXd 6LbhNP!o$ Po  .mGֶ!nK\K1nL#8~Bc g :P;AkˉAiCS2֠oAaXED@aA'~^` t'閆8uU/<6B'+Q~Hp4qLA5$>Lְ sxc}?G]Dz仛tXoXVt j Cб> }c5AB&BorȃX{_K|u.I0AhWX9 @9;=Yk@`9X:Y9s98?,0???<ӿڋ R7x} "B= B!'1|, !|B("#6ȶ'°B/Br5J6C5\C7ƪBBsA?6C<=ƫ%A23 %CAD sCǓCc#DG|DCP2J\1sDDODP EQER,ES.:h,b\Vph4 @։ BAbP [ sh;肆h>DkȃgqgwJgBOI.NNT˲\jHNZvjYʩvjy\Ji>khi4j:_H|j@DkkT1bka$jkNlu _4,n þLhVlldtlVȖl>yk1kmLfFmٞIV0b 6̦m!m0mlNn&y/"4KXn'FB6_D6Yvm^no&nBon;{Yopnd&$pooazmtp 1$}kpq_qЂpȢp-@ Wbq.GMpmqH&Hr} r-rޖpJ +r5',OR-?I.'a=S[` pPBbY Te(=l Xm =@4c8TbL8 $ϝЄjى?w!>G@5i=^pč30W8伍FY p,#'Pe1(ق+#+39Ptv1g200b(uZ78r qJ1\QV"XxA)M9=WOdyȁ60DVa2ف)x=xp zq4|ɬWpWB+Qu@^` E* [Hٔ7# ]BS * aW9z'xWgǛ3p-bp)gJpEi7=IطQϙ3@>yl014/|姰O. 镫w$h=آ'ǁO~  Y}q^b4ӄY=Tgf?B837U'Rh"ƌ7r#Ȑ"G,i$ʔ*Wlќ2K.3'&Μ:w ehm }j&ԪWn5ز#s@wS(ь81rhþ|8ʐ%gleԟ$bN7d+18~5$I1Q._<1? iNZ#l"3$^CDeD>P-C\X A[!z!!Qm6"K"<RQɣMiSG8^$8P?`dDذ]DQ<`$UZy%Yj!H*8&/~T#Qam&qʉZ}9gFːb<9xjDz(rX'Ew*Z{=z)j)1:F*iohGhv*Jڑ+ K&j?ۮ;,J;&Ӳ5Ԋ;.hmA-~ ;/nC-:u۷Y9l+p ;0 C|\OqĺZL_?l(3L*+2̊<26.ӿ@ =4Ed[x꼳<=3FI=5U N.>A}V=6ُv[uO_[vq=gk4 ot7`ڭ"߼8/5xto;8k.-:]ܛ~c*{NQ,CLTWJhLQST ֨<{nS뒾>Q*"ƒ"Q6R0X`6AcWȫꗲ|K}J6!ؽJUQ+4ti$y"/k-WԆC!#l#!Wj!L BAC`!!N0$Oq Qb4-lePB(H3 J؃&^ R 6 UK14y!F^Q= PvkV*PQ#P1!%@A>I8|,Ppf?@$NЂpp [ * -hıA[A8 `p I- aQpBlq2 $*F 2Nb4P"C| *[G>RB䃘h8@4\ js LmJtE&P16Q= 6Jl%X`Z!AA)IJdKgNoY\!p)N@{`x41@! 4R=klHTrكM e ᚮhp1FD U@"ˆ.4%5#O 6|h5[Bϊ*0K +4N ,60TX֯RH ;(a KZD !B":`s]q A{C(㖍Ild| ^K(FIپ`?/:k6̈6fW =!Ve a;-za A< Die)Ѝ2ZMPFh&~+vS>dqđzw_oD r0;Kq2YAW۱e2\ZphK^җ)#g 9tAC@9| ~pJ?.4qҞjI9jn|#u͇xg+6TZ!w7Y9zd0G$ T@?9g:y[&,HfT>C y:>G !E9Ї5q9U.7vC:ԃ5/NԳ,MNE_ޘmfQuÅ?;㾚ik;N+(ТY"e)5oIAr8-63;dd.'WO-8?6" G2ZCO-"KNj)@Cb!%ts5'5E"6#]s4MV7 0ԡ|FxT-S34 g 1d.C /f9hƄY/BLN55$À B2b5:Xnfx0$D2B216DM7֐C2 -<$4-Tb=zv/Z(>ȃ,.4!+a 8R#!BAL^9CmXP!5--Y}b(L¬0)D:LZ^vg~2*LX >%g9&)8]PPa|BʹO]KFsga|9_9$BD\,%Q P0sȁ5Hx} 9ȁ4  >V!b /x^0(1,dDHB 0 A?!<ԁi=& V79x@XtiXL,l4.A2ȃ*LdA>i6d?&?҂^fj. VТ?H1h>DLsM+ zeaDYOUz%%D 1A%҂Co#9%zT "IhQJ_F$1|9$)L8fAX?$Cd ƒh&j0j2)PQN:a44$>)Hk1C2llDt?PO2޺N`> Pv\(FsmBJQNC"m<)t-(v,>-؎*뺊!E~f^L$^"])5A8BĮBcΤ5B,APs1-1BLJ]%hJmGZ 6-<`oDLMn/%zjD̨<&F:CxOIjII̮dSFLaz8C=Lέ (-zes'sAJ>*ú&8ChBጊiBN D #1Ln =B Cm7%5$ i^nAx5DPObnD{)`v)ljrPL&뙚Ô2bF/A<0)*t// .E$?F)7BJB-\dED<󆆃/H/BCvN:cH >|D 0(!>|P,?/wCA_]+Z8i\2CrM>4A:.02jȭ.ԟ9T2*C@# FQ>Tr2<Dh>>r651!9( &綅ZC8VAC->-Cxf.<$\O҂n>6i %/AdTa@ТhޭP9;F.sp%?fأx7yy7zzGL0T0 ڲDğLٷsZhց48%!X61 '!4!UP`cLa=fAÝd|ҤBMX(g9Pɒ\c 1eL^l0}ŒCd f"MVx tZ6~{À ifJ4^"/e;<'#Fa! 8ԁ 0٥1e<)6Cg]/e'V,P)dҤ cAȑbe2-PhB:-4eh.zL^Pœ%9%Řg[ i,M1%)yx``Rd+W")XeI%Ej,܄])\;mp{D9Õzh=ÕbH><Q\0 OČ6 9᫓ѵ}|7>W>F}3{ɬw{U䋚{>[?E>Ǿ>׾>[]{s~~>>? ???)08?_IPX??ip?x???Ә??~θ?Oɿ?k1y4xaBUBJ-F\'gFdH#I4yeJ+Ytf̔>(ehPCgnYɛ9=Ai5b%2>ʆRGR5{mZkٶmKӣMjw{oPJgj)HB]GJ(rp_ɓ)W|3SfY7ohB :ݚ+c6,",=#omP'+`9*53g*?Z6/f˴Q"tM4jun!^y^ _#h閰!F y=94Im4GҢȚ!ÈW l^g (! ,~0 'AepH'0[1- ˆ!-p=dAp '@R!‰*lJ2 GHs0" #0^T|X '$ X‡t*C -pB,m\u=i3:$Sk{"Jp W|H ¤Ň+-g (i* !#@iNA6֟=fuwLUL-CbG :|Ds; dsH@`]~=u_eNHa*64E* bbh_Wq(yNy!d!ccekL$mz8# [ n"Bݛx`DLWkFD(!̟3%ĈM `SBp`؛M?[Y!UYgx琀:% WhFw'f$"Y^IN|%ip|@ -&Ϻ ( #‡ _! .(~=\>`&RA͋c#h g8C8pDu9X%u]2;$C6W p=G?xη!8/kz#ol@kZ!*i>}^>Da#bAFe!b y< ̯ qAu#$PLx~D57l0. 6L<$^#-_<-N`?P aJud@p`~R6.$ Y*%qΠx!/TXȞM cyٗQ%JfZ`ݵ$†FS+KX+֛ mQ3\ֹѕt[' "w%MlG]~n\l ,Pzn ^- /|_LIeKȢU,_wfi~6JQ" b)VYb1Y ~E~7c%6~]i]IVa""쒩\e+Gl\+V <1'fFAf;Yog<ρtcC BENtD&> cgYFXNjT7oi#MI%HSWT aC>8*d { 66K\a$;fˣeZ2H"S!qE.R1,㘖W `qYF6M?Uc s50Ah8&IotҼ TW!:ꡎ+^:4;;AƳ!@(<(8(q!d')B TŇ)ΤS$^^a 8*(0Nl! (hfiifj"*ckx ( %o L"E1Ћ #p )lb\U&+ \Ad:AVB~[dr܆  M _q&X~b % vw~gf yj`vb( z' l{' BbLd% @1|Nf~%l| 6(c; 6C|O!j,{E,t04Q.jeHF,8Rj42s6,x`N5&s_sR_U&KMgqž(@R%"K$j%"K# AX́NYuE8Z cE`\. WbZKwSC$\aU^^_U___i`6`]`^`Vaab#Vb']b/c3Vc7c;c?dCVdGdKdOe-\e_fcVfgfk x+%.lucVh"`*bZv%tVvpVj6%W-4g9LjVlV!6Pv-T\;kk jŃlnlm#(x6nnh6-V%l rpqBqVHbr#ss/g(aV£S@BtOqpKB:sgCIfgfU buum_lbجWvlWZ!";P | {s!$Zwri` Hl@Ny'c;Ҥ~=ò5WnW0l  OFTrOxs j"wjA!j.$ ,x"g׃FDUzSHԴI,H !|g Hg$V vsȡ8rBxA phu@xa^v bf81)sv5fXX8|xR} ?f8 GVxx$bxf8"H}Am a AH j_ց@Ȏ })!~ 䠓Od a&̠A #!A 6 7#䘚U" RTz}p@ Y$"`tx;b d B@(w!Y:X a`]`C@.Ma ." A  ( DT!zǒ'!J*v 2c$D{'6w#%03w (hb9i` hA `&!Æ ȁ 珞B7 %3qKb䑞v%>XK5 þ-mZמl-̾o^]sޱ$nVƒ+]) _#_'+/3_?Z6PlCfkSΕ%uUO6o\gqVӾn_;_h>s_w;RSSٵ=EzVϿ4_ LB [/… :|1ĉ+Z1ƍ;z2ȑ$K<2ʕ,1.3W0̙4k<2Ν<{ 4СDҦҥLc< 5ԩTZ5V0z*󠼭d˚Ŵlim ۸qmknڼzN,`y^Q:8qI;~˛?>ۻ?|큓_h&H`S * 2%KU߂j zh x`RhR}6ވc:c9d<>IdFdJ.dN> eRNIeV^eZne^~ fbIfffjfCfrIgv%xg~ h)hh&I袎> iF褖^iY馞~ j騦jSꪮ k*kފ+Bk*%Kl%.;'KA> ;Olں9nKn枋nNXZmj-Uo pLp /d5րpOLq_q׈#~ 2TAxCL`[rg-,LsN)Ծ l -! #bZXs8wA8az] B9kB %V3&鈅irhuHY 6‹U"B Sb<\qAs0,V1 fđ, 8|+5` By%gx bxF~#! .)$`Av!A\a=C 8P6 ` WthL7:a(2"ǁ0"X2f r3^$¬ Z)B]"XFj^ !@(!!Db|ԄK`#Sa<I(-|pӄlg0pU`0jִ:̫ ѫ @՜/PD0Ld 2Hy^ջn_mUk4KM8 23$j e!\Av!~!P ݬT3̠$$l6 >j^3!b]een])\1d<ň{1Xk\JI0rC:L6`\Ahw<'@zF?b 1ż]E!yjؐlx%.6]݌1~#բjΎ˅+JZرZO)!V6WuwHYoZXF_ >mGshÞ vnkqxX>G/wJG|B%AZ} xT{tܐ=;e|ǔi_Nԋ5?}C"azdYGo66939>*:=4:B$;D;;=>>A)?H?AD,CKCCE0FOFFIFHLIJGKKM6LUNNQNQS9RU]znՅGמ%Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤjhꫧ*묋J뭸ik:S&;XefV謲NIl~䍯3SXxpa ?ӔjK*HC,xn0a[+LlD@|,2M @Ph;l!-CN!leO\i` @%k,@"# cDPl8b@ HСLf tÒc@|*K(5WMX<P6J<'c/:)+ֱS~.S!!h $A=W\|c]h,vd׫91L'9dmh ySA l06~b&8∓Pr %8`/0 Ud1CX2ȅkY0Ї2z c 8x ^846 Pq[C 1 a1D@3\` A0X1MEx0D,@qtPX d,pӘ,,x,Y| ǜ@Hj7NfA&Љ`8?3Eu,,E@SbL j)`k\;fC,@oxjF1 pWl 0Ƅ' cb 0f 2qB3PѦ 9c`dS@y>̥R 4)Pl.da73́5 G@gJ9 @g&pypASL@f!G ` |5 (ZD1 %,[#}B00@Ҩ4C @6(Xo @n3m-dFb (d_8` ƝP !0^h,@byJmȜB. TD!Xa־FY(WdƕX\a9ohd e\LTS='X2^׸/@  > 9xY5* ]2>P4/O /,+@,eѰ;µ%` 7\=Fe#! iTf+K'lyEȍ3HE\"Xm@!>o ,А\lǏI؍Xl[ t3G!Юb 4fiX#Z ̈́*  FXQfcz(6#XV#@y^lnj +Π2GJ/ W}W eZt-ߨ}ŕ5O= -ʢg4 41N:ebZ!; hی nkş6q7%^ KE e:&s- fVUgٝ,&Ɗsa:ǖӨ 82@PO2:ATSg[}{]̐Gsܹ /S#e sPcd08 Ss h3oǢw e>#8} ~Axt#Gޔ0*mQYVLag,p{ y4Esvn?C}5c @Cws{~xp =Bf ,yт0肳-x4Ȃ6x :x<؃?AxCHE(db;ڕ0Xq]  ϐ ɰ ې p@T@ ư ϰ\Xu`Y ʠ ܠ75 P0 0 "|ȇ} @z  kܰ 0k а W #PwX X P+0 x v а0HxY x KpZ xȋ0؋8xk XX; h ِ9Yyّ($+5O `d0ސ z  6) @ I@P  @ kEiN0 "`  `2PB_W U9V`Zp zU锡 @P K` N@0z` P ikP6 ks٘)#@G9 ZErO锭SY0 [Idyyyq`=@JI7  l vpM9Yy虞깞ٞ9Y) $pʔ<0APp͵@oxxPul xlʡ ou% po0@o*z*ʢoP j&z< uCУe@5B DJʤOʢLJAJGhP,J4Ju@XW50:a*P;t5Ppoڧ~:Zzڨ ( )%8lqsp `2 Ъ𪌀0 ꢳj Ы: ʫjګzê.ڦ:Ϛ*꬧ڭ*ڬʬ*Jڦjz֪ʭJ:[{ ۰;[ yP$0>S`в.۲2;4/{8:<۳>@B;D[F{HJL۴NPR;N@qDb+2?> G$`5l۶npr;t[v{x۶/|۷~;[{-{YLⵗ`LVVvSp۹;[{{qn#$^+0 p[0Ry;[~кZr |@ =ǻ۽ ˵#L!`ث;[{nQ٫\|| mkL ܼ\+K<bpbPG02<|$%y%oŽ-Xpp4\F|H6<b@PI|XZ «ۿ'L)y.4[jlKmqmvz|仺{s"t{pn~ȌZ\'k a l1 `@Ďɞ ' g ^~Nz >.$>&~*^+0>46,;=㭪/ޱZ]ͻ KR>T^V~XZ\^Pr pr>t^v~x> {hjn z}Ʋ',@om1NN蘞/V m^~骾 L 0 @ =dqtnц 쳰g2csAq6؞ꥄ #Ӏ^Ƙ^ھ.cRN..k~/Par V}02q }pDo1 ׮m~{23-Knծk`<Ӏw1TfFOkN14r 19`/+@PDboX\o>2o|M6߹ ?}p6vAU5L eq/irn! @tPB 5#{="Ծ>`lhBR#@3F%QTy 45Aph՟ YLdIV9q43Jl80LPlbG%2P1Wz&ҜNYTrSV&6ӊgF"J,4QVxaN(QEqaa b驔0 & /Tib 9bi&pȊV2LflUzb!Pכq,6ÄhM(p-4ko'9pHJ•'RU J^7넄Ap`H_42"gfaPL&#XH^ 7#F10ӡ\?@.du>>&`K5|#1y! \&]Ajva&|`/H6̣8gDniMmZR=JM_KXR#=˄JF&TFɩ?1?P1U$"DfzX:fMR>QDcc|V@J5*[oWPU]Dʟ5QkqBp}^"+XfV5%E+*s-6k9Ubi]Z6 !-(C+ZVx[Wa9xvR}*o\FW7-.US(7ץs]W øKjw?uw^W7)oOk^އqzZ;_XV΋wnlIJLCMzbYq\0Px#&q%> JI`rp h. .DD E.h&誉|d$.nY;v"H``p @Ʋ6deaC7;`Yxs'!c<gi` 3Xq'YЃ +X?цN%mD 3 ?pq4 WDT!Tر p҉67"=6tb bB[$64? .:Rȣa\as 7p>-,P raÁ!ttцTc9 X/4B+f`{6[妪`a׃ C#6;7~9bAA8xm_38^)KDf`'PC4{P(6w@M0 qx%7[xǘ"0oݒN B6xܲ`oqHC`-oa?\&i@8G]_{M[c>6 ˵Tz#QE!o}(X҈4+ȘCҐnc}tW)jĺ-jlkRc_o}z(4?@C1koP$@ @?[kek@ A#QJ@Y 26AlA"ADSsAP2AA(A",BA?Bh4rA{B)B*B+B,B-B.B/B0 C1C2,C3C?C@ DADB,DCD1>/db\/Yd"FhFiFjKDP\&@7k GqGr,GsBlmFƉGs䉝8GzG{JLZGvGw0CĚ0>G59CGlH4G},~Ǚ x4DzY04/L4 )Ȋ0Z\IlI^ȿHvHoBŜ*`'ÝBa0 œH tIJGRƚInɏI-T*\H@K@Kr(  #R`)x˼|KXHz hBJPpCiV̇JL̈́C)\FBz&]plU Ӌ)Y(hY68/zVhMT$p>8M7>1@%݃͞Y0(30ɿy]aPdʤ]؅HVyRyLOF( țBzG ` &Ԙo 88h \  1hHHVH ``@&(Y ؅X(OH,X3MҼO9S9ϯ PLѴ²ى9Qq3lx8D4\0qP`Ht N XO4iqH P1dp zhG#@ y` fXSTO:VjJ;Ϝ>B`(jӐ^`#(A>L,4p&1Kz% h`4#vՃ"*x&8J(q6&YW`،b=4EHyPxjY}kmlmnBz >h`Y(0م h &э ypYKT018!XZ0X@ȴ苗`Uy8`i؅萪-YNM(0֢Yɝ\kQ'Yg,P5%>84]!׬ ش W1X@'ra(YJX一˒Z \٬5VNE Nh8\-_E%̍=^έByA`miF=ʨPU g][O3UOhXzЖVUPWh0 3@`dPMMK0Q@0@$%P>=_JuSGA#PW(esYQ('d` ^% Qb' VYxYAp4 (`t0* {3b2*-ƕ~!2P1SP[bJdULPZ_IyDYjKz_$y' y :iŎޏhP~Nii]\i jixqiiieNjbV%I^jj"jjjkjjn5f^kJ!k2@k5BZ٨%vFl)'l^l*lo>l#;dlʮlq쇆hlF̎ɾHl>shl~mўҎm풘meQtA):,i`9 U .m>n *ΈFU(fԈ6 pmnޜ莥ƈ>7n`y!oQ;mrsX!U[UF Y)UV>zix_]}$ sU3X5勈 Ѓoqo @.} u ` 0#0#  g &} hI K$ =Go@&=2),hz)qD.":蒕Ғ( )ig y d`9Ш)N_ !+Z9Ȓvzq}!DvZit ZhL R #)V`i88IOŨ } %鋥0eq,>ȎB6؝Xay`U`!vW k!КԈ]@!x<#@lV&?ap/Z"u7 Niyrh@PUrpi8/(jp#)?zCI˭mIoh';ў|񑗜zauǝ{\Iz'L0艈ݢZ猀[wНع{AQzeztY!&P!ez1@o3١(`Ц#*#!6H'j9%Ri@%?*l|Ovj^x=}vmX&#wg&jjPg h j&&` a&\>)'9 w?Y>3&0 8FLdAA?'1(J #Ń,42;.7iW!fU 'Qd1%˞l" `p |gxzR&BS r=0>x4#E8& 0e%>A1Jd`̠ #T $x T H CC:@}XT4> 3A*mID32 P…ਸ}S󁻤&TѐOx ķص!bdPV.4Kk떂. 2ip#FaUZ4d܅I#`aFp$FŒDa`}F'Yz e1R=#>*AE`#.py){22jRX>F! C "J`p_[̈6G8ἧx }K)BpāfϐBK0ՐEC fѱ. ɕ8-!C8"ILa_izRrAe D8BZb*;i 0#I &# VY?ڀ,`PՊ p࿬0:8GݮɬAkjА>`6:ž "B4^L& MEЃ !>+G.m 5B&&&q żղl%TIΪх "7Heb\F"yVR  +ӘM}pTa_ \:j7zkd 3a4n4QدIar6@;'Kڱ~zQnV#5svs3_gW3&-y9|WeD юMsh9)ոFfGm$);!_PM> &cSХc5Y.mGp8mkYMTQju)D<-1'G+5O-+q,`!VB1($صK=G:9Ϋ)DXHO(\{KY$*zFp#v5Ul;6\طJm`[4[Zſ]C <^ N"pdX6cq%9vLT -n!3D%EPu63 zHLKc#]!G1u ql)] ZڰJО3N044cZ"Z558;DzÔ*=4S+qi\}|3XpOOq58CH9|ai,EN1n=޴ć.qցڔA6i76.Ft,xMC089T˝JϱG WHC/q\AtBOM'p4Fa#P[xC82AAd3Ơ#Mq "AL`ܐC8I̯i*`eKp⠐!^ABpBtaN %,p e ! *!=t C&!0sqaߴ$D$k 1|MR'CHú%2x`pb -*A#*#C [dĈݨ*M0 d% 0ZbB4aJ}4Bt6: ~B:K`"?VF2Fu/%1*4 -F#4o܁BL7ݥ- C?؂xFGFI`C:/hHAH:E?L؂>P0܁l?BH/9BНFd'LFC,4p1)FLZ*͠~8BNh)=~F4¼CLތt/-A:~uFHCHACBFtB'C%_f`A+'n'R,$q7--‘B8[7xC8؃4A7`?4,)b?z>kc݂Et,%4р'܂\ILD., X j+#Z!fD8(iU-LmDHJC7l:` ~azMCy*<4^ζ$S*VΠyY*&8?C/QVbXB)*Xi#_C7DʠnkF)ͫ&F=@nMJ-eSb+"% ?`[_ĥA7-:y_\3 ao͙gF0ؠaF̟*9B74B8T1C1A7C#5BH9RCJK:F:T\e:lvҢT4(Enkve f* pBzZ.s%9L!&ʭ/|jSv^2",hF-*,xg?@bLjnmWjh$WBoMs:,!҈@%,ZB" ^(nbØ2lv!2lMLJ+Z ?تFEsؾ28^KH^\*2++2,r~Jq"=+h A-"ז"L:4jh(*7+D'ڶ YΛ4`ZKl3=zR[+N1xaiҸψa{^s+%KBaB( 93_R1|1(9Tm;v44j2D _? oY<*3y}KXAeف}pqɟ !0^~!F'16!,LݻyxpOؒxr26wnsAb eXjLՆǬ *3I0p߂Cmm0H/b r'lİ'Ĵ(>(24fņo$ !\! 1 D "<$3"܍9))诋1U|0&¥9Rp>@p9ޣ45LJyDD|󰇐ajJf`f  CB6Cz[A0D!‚Sy~e=gv".ިh&x'B>iH|țst&xi@&aq?zn_?ۙv'+s#{$ohW@i_D?ͯ9s4R=$䈂%!3 ܉C _ iXCpiRB*OX XD#Cv&, D+^YT=5Nx/jiTqf1<ЄXA6y#J3a#P=T$݈@WeIK^&9IO~(IB(d)X*.QG=-gK_rv|*Y]RT2)+a:ż1'f^ 3QRS"8YNpӀ%8#"Nsd`#MiքqOh JHnAAFpa F:dvMJePxh׌$ xHblj!a^Txcˆ#lࣞ 'z,jPYZU0L jo|"=70j#X D aDw `C"^iU'jU\^, G FЇ." fflYp0d`!@,aɒ`Xˆ.xZq9B T, k QȱR>`0pe8BIqp!ڦt Xe׆T %*_LzE%. 2 >u![I|F`㯭`QB ӗ(0!iƵhQpHx`Ul40yxMp1фn7R?LedGp ,rH% cƅF r^@F#Ū@G$@<_} +2 $/h ?bbBR0b`#DPU1KjAP-Dd Sd u831:lS}^>2 rTl}Fs %6I$ \[sĵ9db69}V~r1J*R)Q1& VZьWkfȋ[ )] \!Q P{p|i됉lx5`"  <Eϰ`! WMSk(s@ Bffl%Bn $bK _f3t1AD(m1%IOf~"i #%z*Qcҽ"`y 5XakG5֪$|v!$! yW'Z8+pap,*.̇"|$(o SFЇ"q: Ic?&TlfL]T/(Ҿ#(U)I)"vQx6b$#)XR"Rt!_-#./n2.ݲ&2>R02=!%I)&ƒ&fkd4CS4G4K4O5SS5W34U5*5_6QS6Y6os5_A7_7cs6eA6S8889S999:S:::9ep ;m"=F L$ғwn"s> @a@?CmxE3g==3AB+49d22uC!6"9"T@bB-DOt7J%494A=IDABEQFkT$fnX8\=twb#pFH/BHytGu4$@9#HTJMaӒ $b4IGI9tJϴFT93ZʃZz2&l7KWz6g얃W(Taz@V {as?]! X~<!! AY7sPY'†-b p-=b}(/v;BDG% x~#x :a^!PD 1Wv@x- p4a  \A;!aPY9%@ܐ#"&2 W{fg-B-h!kxP!mae pAX$ŋjAi64 %/@NJ! KYD7Raa! Y! VW٤3" #pf;sDW)B66U `![:UkA@-Sy;m!vZ`u]amwW `# ޶So oKtN~p z8X"buV ;'X]'Sȁof[{&_s&%;-`+񚴁C)B bhL#| f_"DשKyub|b9";b}m7B[|_bpgZkڦYv;;v{7gl{$T h$[?RFIM$[#:nJi3H7|ԔHT;D/dt9<1;KҿU7kos\w{ȃ\ȇȋȏsܧ<ɝ\FIR2sgʻc\ܤ|La̩|_xZ~\ěM ΃( }J ]щѵnFg<+%W(7}0]9ԃ裾^ɞ>Ѿ~վ~^_ _#_'+/3_7;??GKO5IS[_9cko}s{Ųσ?w/___C _ǿӟ՟_?n(e_?2z <0… ~{!ɣ1ƍ;z2ȑ$KbwѤʕ,[| 3̙4kڼ3Ν<{v'СD=4ҥL#iӼQ5֭\zϓ)ǚ=6ڵlۺ} &9&U/re7z/ >8bEy7ɔ+[ٲ<, :щ1f4Ҭ[v9ٴk۾fpG <`Ө=5̛;=N=;b7˛?>ߘ\?9w >3g}7_G ~-`>Qw3.Vj&a~NXMnbz"v c2X= X7}͎/` +jt`HcRN?@CM#dI)?`jDhDGA !$A.403=҈$sBQaDEXXFfMf5?U7A> p䀦ikJ]HHM/& lVϚ6L1 ?x#91G&!FnFN%}b,m æz i6@=\R#H#f%'*\FJ '\"㈭ܱG'bxZ*B(32s'2T -s:e]l(-C 8LH <0IN 3E6C Y8DƊ=`!E 94M#,d S 30HTIF j p kKf1hzʴҜ'I7+9{#4b+i:L{O+6A #O/4O'6 LK034CU?/.)A\ 10,8 80?QPP+&LCO[x>Nuĭp5zB,P!lt"8F'|n,>$qHrn#P t"=(GJ̀ 8!a ޺> 3B]daf 6'@/@{ s?6G# Ԇ`qb'P|5#F' SS`kf7P2XE6x#!f"M+1"5p&4A⽖/4!d!1 #<`%f@'x!s7jD 6$-#0 *F0=C8C EYH78/D,HK[C.ppTTՠ޾hLРma`0; <80#8ƀNT.@9 `9 "R5F  *aITHj|!DϊV)ANr?!V18?U``͠ }0C  !ٰHn"0j4a`e <Cv bH`U`4\OI"I*Tk#/*HUb9{L2 J(Lxq?|$/yɳrG">C_sU0܆ˁu| 6s } :rN+}LoӟK}Tկk}\׿}d/ώ}lo}t}| ~% [oȳ𒯼)o3<9/Ioo=Yدio܇=y_/+oKԯk/Ϗo/G7:o(? H 8 ȀxH(ǁ#XH'&+Ho,/1(3H5h79;ȃ=?A(CHEhGIKȄMO}*,(SUh$Y[ȅ_a(Heg kmqsHgwyLJ}(HhȈ舏(Hhȉx|Hg|gh|'{hh{ȋ狿z(GhzLj(Hh׈٨ȍ(Hhh+x}:R>! ,       $ &! #+##%'&)'2'/(0)-'))**,+3.4..1,041:224!5>66987<39>4:B$;D;;<+>B>>A)?H?AC,CLCCEHEF0FOFFIFHLIJGGKQKKM7NUNNQNPS]znՅGמ%Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤjhꫧ*묋J뭸i눿NljcF.[F+%MQ>88 KL҆cY2lfL#BKt{9# κïK,FB@ l?@ w8"Af| p@x,p,9{|Ę04Z1@?`z`k(H9'O*7 $`#>f֮=K-9/K\@8'KtTMX; uelMCfA9o[N86I>z1 ]se0pd>66B0BٕK!@ r\:DQ[кo2/@2вN8D̜ &@ ɉp -Vy~:Lp[-a1)f3_v  @ Qs4X|SXmI.5k;$W`&#mp388@ a)& CZ(TW52BA0[بRA}I  Tf`_ մ k2zV$kP Ai|`sC2D$X0׺wa^냭AC8= ~,vK? L) bUni")TAWKAIJ2@Ե?V_bLee+~G 鱎%:ዽ@e!kTּl7CYmBhÅbc&rHл dGDX f7D+Ő}v hAzw8 ȁ1X&Hz(ӷ,.!28Q+h=֕{WF̰` Ȁ H V@@ՠ @ \( @7 Єfx.PȐ ZP St8P y؆mrx o PI P `@((  1 ~f P ѐIp@  : XŘאxP oV8 ,P2 (:0xހ X?@؉?x @g؏9Yy ِي0N+rw 04߄Lc*p pZ  D 7`'@  I DP Oi`!(p@ :p Yi? Q@f9 #@U) .!p&izy` i yIi`' idE) jIa9<@ i LIUijb0<?;Y7 ]@>9Yyؙڹٝ9Y)p pi; @P@ ;\Plv0v0sg@vg  : m0mm  &ʡzz-Jl0 +*ʠ J*3j>*ڠBʣ06zgp :Iʣ j.]۵Ÿ۸mۺۺm=]}ȝʽ=]}؝ڽ܍܈ n%+M  ۃpܹ=]߉ߙZ~ ]~n N.N^މܝJD+aޯ] :<>@B>D^F+ 24H=@}XZ\^`ﰵ OQn `pN2:Ln6.nLS fxNm|^ 0.^ db  ;pd1țtnK~c ` @므g/#cksAl^ @c ʾ sT2qީ~؎a)N.}~ܮ.1qQ[ь1 &jk 2qq zDOo1 .m{N{.An "Ps1 }=mQ)0E#5 '3+/_^@/Dd2z>?~5 (zP6vAQ5KdA/S\/n ;/`sa k/./jm kTzΆ;P. V = C l pz`/H`pNn Fp@` M f /15 01DH4'j`FU c ;Qh0PPb3z?2 E _dq _{_vHo.jNR#XA!,jkI()#xIlN^فZ"h {ND<[vth!8U Zf\Qu  au5W4gvl՟Cl?wMbTw]vu]xQsL223,ts_~߼w:^B  Scj!z Eԡbw\Hg^q( !O[p%8% 8))p'X8p`%h_¬'Sgz.l!Җ]u0Qtė{נ wnnw^.owpq^btUkٳDMXJwF>61(\E =ZO-() 1$7SwmD[oC/F#[ <-pM|3`UH: 0XA_lA 8Ʃ̑ъ`d^7:蛇b$<eh2PAXc&shT`C.nN+cC 0Cm欇ptb ɕt8[ QÍ9aS|V4#hB s1Ij/ <e&u|irGC/-0 8#\>0/p_X&4AVajX0-22Z>5i7zhalkla v s$۶_ 3Ѓ#[]mŚnM6 BC?C@ DA(CC$.L&BB|DHDIDJDKTG0W_pWx[&xsP#pl@,_#p=X"p =q pL[5h̑W (ژ)(p%Kz] p@ii%ЃKNDȊF*J [H 8%*p8 O0/XHHT8 HX ]Hq]8HHXNĸ؁HхN*˿4ԘA8G*ˆ1Vp yȏd  mpSNYЃc1<%8_HS+2RyX%=@@HRYՠү"ORR T5;i% '@M8QPAR=Si5 @"e `x p5@ /`x_V >;0UT͊c8ĐLU|UsU  =X_Wх x(#zyhDND&cTO|d8eYF-;G<VkJdvGn|G,fAaGGtE;d~GpXKd"fh&E$\6/Mhv^?j}yTHhi J[eh$6i~h?h7Q$?iU#nXi>jƟfHj3Ezjj꼪j[AR.k(&Gճ~kǵvظkΛȺ6^kwkZjѰjnlǾ˿g~l˾l,쁮v9EliX Shl~,>i>ǭvS[ 5xb`#Zm澥- 'pRd3 n־ pWN0[(l/ЅE75pSd5v(AFM=zpip /.^!N-?5 WXo+y¥vn ᎟V^(-)("0"0xlP%N܉`;{#  #?" R!X-@,xz") p5'Ǭ6юP :Q'O ?9 *19ēh` 8 Zcr s\ k]sTo[8g&s0/@i)W@Tyۚ..8X]HhoS)W`Le׃x0p] Q'vRGS@Huv67WGѓ@)1 k)X(u/吺r !x"pPyp ' 1yqrwiwU'VOy?z %pu!kr7xr(g県h8x%^AL׊1Ha!ʡ_xy ]ʈX A !Bn(bs|Y_2R'(i!'w&a52/ =x]oy}uq9{u[ZF)(bW%. Y,Z kb'%q%X% `QقJRL_Ja:Ч!聵$'!8S}'gw1OƊl,XA%4(!A P!,Ջ_Ixp"iM菤?(gҬi&Μ:w'РB-j(R%iicQj*֬ZrgXOPܲ,ڴjײm-ܸr.tZ]'O^ߪ_M0Ċ3n1Ժ(B.703)2ТG.mQ)y93͘;6ܺwSuC־Yv`:mo9ҋO(zq}UǓ/:Eγk˝wӯo>~ ^ξ=WMw *x~Z 6CTj!z!!8"%x")a^%NU5 9ck-θU4#I*[>[U3=$YjNN>#SfU%JWry&i.tQv(&VdNduy}lJ&p^%gCt9(gt|nU&$J:)hb戌 gz)p!E/-u+cMDj,N*eJdԦKOj`QQ@|AE$6S82\!,R7*z'-O@jjdJlENt0 _ٴptb+"Dej!/L`qc B!+c zB5WatIGH 1R2Aˈު 8FG`C+̨-u=7~ g#Elۦp96AOWC[P6DE1/xP`C̜2D@;鑭 ?_N C0?^,Rpڨ@G;X0q0t %bSPp+2/[C\cl 6Wc: "tr vpzA! lp H'^P+#|m ̻b/\^{5B_ԷM&f"G1,A̶cS#c l Az(Ȯ1/p~yE'l@^SD0FY4$nC`*;?:GW@З.#MHͺVԮ<PXXS,aBQE.&6 lGp!a G q\D<ҐT$\M oiCv{ܵJI7T*SlH!9?0XLg$&g0Otǫj#lc2";@8{H^vEHa:F`AX`:I!$xJIT<#EhÒ '$mU>͙aj+,V&5P&O:5yNh˴+f[G nȌ Shm)@LVjGa_y‰_8uN\i8*~i4;3q@jV~3tBsċ'N8Sp!JqkU73ŭ\`"r8{F铏ww.Y%rЂ:lTMÝ+8\i[-0/ea< s!Xp/|ruZ)3xUEJ|`#pR*]$_|r}h1arԂK8OCb1wɕ!77_، 0-a^Hd`1-Xr:%LsNᖳLYauP핗l^R2~{x[^*)ts շX㍾lO謰XЧɬU?b|W7IP{(Y(u PLh +|A@å&8B8m38K:P]C,1l4A9l#lXtLJ/l[}A_+xAlؠNC 2E+l`Jtdzǐ7:v ʹR J5n9 T!چ-lɬl}'x"i9~43 L BHB0?L:9ǔT)8 [.m"RR =ڦL&a]4ڥqB0Ђ?j- 6` !rLQ=M}}#ާт$+?8#EČ/B<1x8,|>?]AÀtJ1JY?8}/!X??/t9<َ&CCͲ4lA17D%JL%9L%4=x0C> MC CW =+ĥH/!)CI$&8x40 '` &˵B8DQa bô#9x!%BY2¾ JJ)hD~=,&L!A΂hB JL^Ci6g%%Z,ڢ#؄,lKD,8B-1#j~fAq/| MB`/t #AT{TM4m֛\B_#d0-u(D&EM*_6j/T)?df%U$8(#` #,d2]֛AAALP )0Bre%A0)`t8x& :ű'mj9tΨn+{R&6(2u#8,P|#8=H'~/'-:w]dA@i!$=4&h?SZfd"u8F9nEq'+8&9"+Z}8=@|AN'1|Î/K$?%)-)IHr@n -84dB،pRޥO_Bt~*P\ 8yۭJ^n,L@CA7:ܫa'gbMД0X4[NJz^s!P@%$9?(!ΩAya̜)9XCJcX- B̚"=hB:@0)*,^:ʊ/#X1kxdƚZp~MlA,?/nMW$An(yrYyS8?F1nKێ#DTDH<Tȗ^Sp;MG_CQg%ǖ"TW@TS`JT*aZQՓpAGGq93FEEzL9FbMтz4҆=,SpЕ k/[85ܦd(sI\] a:0/G 0@ 2't^p08!x z po Xn`R/<aJ-cp(N+,AFLyAdž!\-p`:Ldk2Ji( m,uO+q!eD'}- *2ǖ-Bꭿz _%~kr;(@jT>9$CɟP X@0^'qnQ)XA ^vs&H=6PR+$A)A}y"9]1L %SCIT .B|GB2YEQ3Z80iTF7qXjȋ1F< uю~L HG>"H0&s'Q< &9YJS`((J,JiK_A".sWT2ٻ~ .Lk^{)M,/·c.8[A1[@$sp&Y~zFj ;m&8"νBA#_ࢆ,_V[h%H-AqآH\wщ*MFP&e"zht[La8,iˑr&;ȆYRli1_Z&A a*T\vA2EVD[l_ 5JǸLUʬXlQc8bc/X҃px2"WAO!s8h GP 8Bc*у+(iY*[4*%>K$0Y>='˪vp*Զ1;氁nڛEzE` Td"iHPX z„led]rSQ$ƲЃ s5iC% .\z`A@ MbWv+N&pPxB;p= `yɕVZ=Vkq #S$ +d@)_\Ij^jt G1/s\'IMjt,Qm V^req l>rEw{; #pM').v@l@p -j2p }(*439Su1jŊmP\8?ưwps(iQ"epIp#0$J e^ ["jhz$LLdNYwTi Yf@ff.<'MVE&1 '@"ؑ1+yGI~^1$c͠RB'0 !,`5@7 t "*{oDSr|r#s,9P@]kjǢݎD!HS%glZu-N`ڕYa-tRP9^Q@aTzw@we\#rK6zS,`d;FǑz mDQCN4H? :T@T6Rv>ĄeH i~ϛyփJa FE&q L-xU>-ɿCbAyƴ-pѿKV@VBa lV?$\h?A ,Iz^LXNtK d@Z,B `P2B :ܣ7Tb/0;LajV O#8j >PAe dd"N> A/w,OqϘihfjN c8 D4t &h@ff"g,8hF"p"f hFyCP]LUA|jNotD D]z#V&&^ bzC]~f pj^h59b?u*Ġ  ЂR sF'-* L $Gs@xGsH@Ah(ta,4r,v1!ma,pe' "r~i.f{@ E4~$.LfNCW"_`|#Wh#&vu%y%-đ,0}2(yR-q)iB!a*rVƱ, * 2!1)&ϲ.CfE'aL\./R///0.M0{/ 01130W2W0#S231]13S373;3?4CS4G4K4O5SS5W5[5_4]la j6o7sS7w7`}".#& f-S9O-@6~!"8 89;`3sSBnfajR,<> A<52;i==@A3 B8{ԓ. T@BA@%ASA/o??bB#DC4.>B#D:AA;,>TD_Fۓ*|!8L \D"E;dE\4FFI(VNcV4xFQ4CᨪZIuTLIͲ,(|#J}J(Kf Ă;0Pa QhܢL"`& pȨ>GNׂ>- SLP3Q_UpfuV%sF4"hf&gg|SӛPH,LTXFfdJ V0f8*"ȡ9]aXa܆2"+hAGX2~a̪``  hz`meQ",Hf5AXBKB,l a4P@cVAȀa@ǾT LT9 L0`V@"Brz`Z=vlB8I܇--rT.6vQ\ Agi ( z cJMLEb Vw:`t.w_Q``b` rT W HUzu$`f~My3-zy綍B,z~V E@Q<`fe@0LwxW Yw `u! Bă\W~+،n\UF!'IB p`ByȄׂ`s5!})5LVG hB_  a̺/A ơ T@!l`5m ,pmf4n"hVU"d*rHi%8 ,uZg"l/ 8WuVf! @eU ӕ|HA Pr &2.VYg\5b1bE"cOVem8 4we#rYqjAԀ  OK5Z aO5!x :P6x-"uR6.YuBUsɢK\2Y3+bȡR3J n٫[Bz-z@(A&^ YX;8UwC۴!ıH^n&.qHԺ/ZA N۷$(A8f-dh{lpvwA-ZTHyy[H7>[ I;/-[;H1B#H;\TP{{B#\E}-i3/{b1?C\GKOS\W[_c\g\/!6{s<|C\ƒ.}܁8ܣ\ɹ[f.|ɣ<`|\ʯ|Q#ZˁǜÜq\!̭|`~穾>癞>^^q^מ^^_ _ߍԓ#_'+3_7#;C_GKS_W[c_g__os_w{__-?;F+ߟ*R_ 2?y <0… :|1ĂN1ƍ;z2ȑ$K<2J\-y 3̙4kڼ3N147mD=4ҥL[I"ԩTZ5֭\4OWZbN*i} 7ܹtڽ[ 8 O;~ .%&9f{ { :ѤKKD,Hͬ[;B̯kkl:ݼ{ն=ԫDn m'=˛?>iŻo]!ɫ?IN_xw_ .`HHH].Wm6az8ǀrjcbGf)_Cck~c>-O@$8EU5;؀Y_9EzjHzmf ) '@F4䰶rI'i >@QD,U\vg\`ZQ8@=Ek#}6ct҉X@M/pjz揕6H ?#9-nR-j+bL!2l'Gf#DĨcC6xA9f8G 3$'s) ԉe 'G㈨ԁ'2u-Bʛhb*? @ߌ/̛j&YDbt ;`2a /@ 8( ĴSx] đ=PD 9Ȱ4#)  /O3hÉ ~kdG&)|<*n )p ?j00#FF2ʞEbCo)E I" n!7=9L >kF6(r K ;p5%)22 =}*Әr4fB+l {a&Ԃ`E'ȱ MH^?! qQ&Z|c ?B6BeA ^7(-|3xl>TO8pp qx>I^FM@+l0=\[fT\Ko/ؒ^= :h|L/"X _-`2 Mj3 #*beGZ!$d0ap*ĘB0pxȣkpE\& =8BIp` 5-[0!fjʰq8WXOV8/*Hs&CQp ic^?nN“ o l)e2C9..oᲅn&^%sNFo 2BfWsrEp) |VdH{.U7 WdG|:t 0ɀ zC|G#L/([58 c| -]J < 3`+l x4c 8Ha [0#d.Ȧ" wrvrbֻ ;#=-TjRx VF֧?˄ '4Kw ;?`jB#U/_0ƜQ؟ȱsj܈v$Ek d9w$Ί[1o#Ցes<%PƑ#h@cd8±$;rA18#CnJM;*\z$ n fXP[Rd LZjT$$R9Ҕi\gF7a c!ͳTCSu%^A;ЊTEҐՕF_ҙ]jӬna8R8eռ`|k;}dj){db;.{vlkѱZy-f8{pnY3:[/޶} 69|{=P+|3f4 񈏚2/k|?%\D-|#ln󴹃rW|4yDms<o ~|)o|9/IoԻo}Yؓiok}y /+oKԯk/Ϗf CT?߿'hQ 耑y(рhQdс(Z#hUQ'+Ȃ-/1(3H5h79;ȃ=?A(CHEhGIK})Ȅ*OhQ("HUW[h]acH hghiȆmo'shuhyȇ}(HhȈ舏(Hh{{lj|'x|hŇ8|a犯{(GX{z苩XzHgǨȌ(Hh׈٨ȍ((*X}%=`! ,      &;("T!(5"'##$%%*)')**,--2I-3223I6;;<>>A?ACsBHCCDJEFVEIFFIKKM{LTMNQROScQTSSUVVZYWWYWYhX\Yb[[]\cd]b^^aBcscceckBg{NgrggkgilCjjjlNk|LmnnqqoqKrrrtrus|KtStvvyTwZwMxwy{ezzz{|{~{\|~~\~lZ`dngneebtmnq{niuajl͠ՠm{¥˪ëƙäƳƛųԹ׹ңºƼϰþν¿ıǽ̱ϣݾұ׼X@*\ȰÇ#JHŋ3jȱǏ CIɓ(KZxK]s0͙)&8sɳϟ@ JѣH*]ʴӧPJJիXjݚ\[/ٳfɪ]˶۷pʝKݻx˷߿ LÈ+^XxEG˘1C̹3̠%{9fңMFYe֞][Z6eڜm]6޲O[hƅ'/[ysđ?rgڹ̑Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vEdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ*ꪩ*jz ?kj9XU&RF m0”<7?T *3$0 G w0\fcJ,?]yRO6Yc-]=򨣎퀷%/1<̓g>=nZ5/fqS0%Q#x?!]ܠB H@ЂzWx (` 4@` ! +|@ -@z8H6"(2)0` ]9w.*` =!(a8# Tr2o6ɮpH#W6+5.u+*if AaQ %@-_0YQ., dHP t%8v`"͛cJi| = lli<䐖@%?V\R@(ta$ 7(jݎj"hP&PK$RGyp@*gP@zKآx@r%>kf{`v3wX640xetnc-sr`o|]YG%x4bmB$f)>W4~\3^ҹ{[,OԻ}<:9wU I[ qT&KPxt}Tڝ{vt=t3\3@/݃oP=с@ p]q﷽sA f]ޫ.*9gq~D5.P:3VtI0S{زrsYw> `cgݷ196r8 JKgtrv=W~sFMH|0@6 Z &QU-GWC~GvC&xi|sIri.NOK["{5+?BVG [M,HV7]t~gfN sLW|3a!M7thtޗ!5hSs>,bazq%HUw t%]4G@K1tk>MzSOO38@645xnLWv }~M8S~P<[ԃ3Cy='~kuSCpl؆T x017m#5@_ z@Cbq.ӁxFm5120 d{1 Џ7 >45|.^c?.:7h]+Ms7VyH$ y)|'ևbol&Nkj 6~5 ]&o[1c!NsV=IY(33hj&FU#f7V!hfW$0Q5Mi4]3&yհyWb}WF?J}y鄜V+`/fӘ `XT565 @0 P58 S 9W@ e[i jV j We[W` fO%S p T$wʦ!7de@B 8P5tRi=}p$x.9ysCW ~n 6bT 3 07fdN>3f4_ O=J(gZ3=_3@sgܰSu BYDeTt 3 `]QAy.vLtW,c mІ_i:K/ Z0TӨE5 @Y$z WT#Q S00Wuj$ 3՟ !5 zS0W=il*K'4Y `dEb >[V/Y=Bcl`pQU/ɦ1 vBWPfg6z d )R/0xJ~bbb=yp9 cҶa28{4 0 8F@z p vm Ece80 B ۷rL&Oжb Q/y| |f Kk ; [o{a53??t?;ūrK3l:k18$o9kNPT>cH9ý/sc=k+󑄔aÛ8V+?3䑾@-cvYc*Q4 ~ѕoAok7MKѿhԵy6!),"HTs3r f7v8 5; J\ :|m;h`cDjMpڮҠ]*x!~ 2 lI`An0g]\.yf e b zsa=lf ;@b,(&m:f }Mw1a`@ftٰ95Qc!M D@HQ[M좴f4b:Mmڸ*:sK 2XnzB$Ђ(DJ[?NpcjP@:0@ A4e_&PGApW ЂK#RO 0mO[]._>a^QQ\i.8 aڴ{^wTS |jӂQ0MXR -u!bjQ|'jn`|ΙB*PG[MxzyОˍ>`  K01%N{iH_^. d7|鶕 c}jMn-H9ji~e}1Qq:B  D_inmS o9gJ\@w0ay%_6|33(ީF$eO>BSm$1z87ZO?>Ҳ~Z zB`bs[ P-YT.ApZ@_9;40jl;? C?R ŃY_q_q!sބ6np ?!1_Oʿ-C?7 ԟoؿKoxɏ?ꏋ_1 $X0y.dC%NXE5nG!E$YI)Uda ΤYӦ@xn;sPBs@k{PFPrQG+IH1'J/3Ml2;%K%gLMjg!yPTZu53p숊z}^ A!gkc`Qj[͎pbU@^?TjZsBNj"ՠY%A!y㒄Y%Qɟac؏Vљ(^@Wi FK%]^a?dVC!->`h1gF'VŏAQ(w^id^]Ad$iuolٙ=a%q qYEZL 5^~j"sdP :h @BR&h'^Ha5#HQ Y(i^} "YP d_ŸEǁGsvtp2F@m7a2aAa&}6 > ;` 2 B)%@!!|4@අP    )$``4T()\#$?b'BrAl L64!C ^(n$?R <n WAl8`0o*ی 9͑\>A&.!@ \4H5y/h: V A p-%h 8?`R!4a#Z9fJ4. !)BdB=` \HC ́qCXAhvc7Ħm yX8 hA` yq!* g#?H فRɐe d*p, ]hgJrrXA,U0U`CIPS!ܣ?U]l3kLyScT)rNd_ziAAM0?1Ay d-DH@@p CZ9rTB^1f=dV?TKK*F B0$; B$@&P=KTpHhHK^~H%b;@?@ia8̱7rHF5*t ]kH18HUa #X]9Kr Zá#"MȦ^3?p`ȫ-mG1 *x#F2F[ڈX ٢|P; @*X2^ F  LAxWnB.$ykQ F|[mKMjn< z za%HPEKӜRXέ)*0l(xW57NK, mYrP>jDݔMڤ) a#gLW8s_3gTG*l\VJq h "7 xLH@V;rP}/g9@ P0Cue*gzUtКSѱ-sc`3ͮ'~_8`P:Fb/*@g;NG%u?'ybxbIM 7]^ao b a&zT9WDF^ ZpCp'?7FF"X,X-խ K@{`B 'Iʇs0Ɇ(?0(S QwȄV*86@: -H# *:{U郜0ܹ a@J H, B`و[>:!E 0vT3H R!!-(`4!lC :∼C8к:r (CJA\*00iA8C07DȀ3D<+8A';`!D9@FshDH`x)L8avb;A]G Z0G䃈ӹ0۹,*xy"Zx~) H0IGEs HBJ:s؛l4%v<5=4=FʶI;L`p?LF dK 6KKN 48d[aK +B*ȥL+LʼÌC`;࿆=s$9άL\D<J;ьM(_  JXK M GXKXKlΠ KNʀαlN K؇|8OLO\OlO|OOOOOOOOO PP-P=P|,ȇli P P P P PPP QQ-Q=QMQ]QmQ}QQp}6΋8khMQ ݄G -R#=R$MR%]R&mR'}R(R)R*R+R,R-R.R/R0 S1eV}pŗ8O<,P8S5Ȃ7S;S8E=S>S?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLES9x4%ϋ|?0CU]UUV}UXUYUZU[U\U]U^U_U` VaVb-Vc=VdMVe]VfUC0;O UĴR5U{mVnVoVp WqWr-Ws=WtMWu]WvmWw}WxWyWzW{W|W}5W}hVj5M؇RREPMX]XmX}XXXP{8-4 XS=T-Y=YMY]Ymٔ%YX>Xq*k Oň|@؍EPݏւٞ]ډ٠Y-Z8ڊYMdZpZY}|Z Z0MۉHxT ȴ] ׂ%[Kۤ%\Z*8.E@[ [[@' \u[ED+N#ۓ p2ȡè\Ȇ&ڭ \ЍZ]=5իmaD \Da( `8ޔLP`=tZ޸оJ?hu]&@Em[{[l^UȢ*@ʎ\lH^B C`\x}KHg]y>| `5]\>XuǍ|&HM;HE_im]'Q~^~܊<S8\0 H yI JUBs$҂k4Ii|tK 8{Hlp p X f~ J< fs)t;ȸi` x((H㆝〛 \#1n{^[ e|`0\5E\H&g0,`n`,CL!H< >Cq @: h!YT i&iVk1܇l?p`4``bCˢ5H,`@htĄVH:X!Cj& {aCmj3goo.o>oNo6_j}|@0ȗK]PQhexs(؝avx 0?(s^n$L90.>@ X?&0a?.6h<3,9  (չɄAȄ` 0hL? &"gQs`^2#?H#'PNn`:ܶڮnpr~Zv]xg@.u6Є0H$'8iqGX(0x0xO6 `s(p>FŪI:3 8H_!  غcSg3%H=( hgǣ|'p2W,#E >>~t8] $ s=/i_0`]6fv8p'm(Zlp `#;xq_)hj7 P* gy%t J*`Z13xJ3?!aJb ؠ ix2)` x,5ot_\8Eȑ__ @aaQMܹǽa h@b)pWHSy@ (a؀+' (s"ih+C3xu\w@leυlV p`1'Jo oȄhفo.䆟?1Hh( 91a6T`A5ߥI"@!CHWʘ2gҬi&Μ:w'РB-jTh Ȕs/ѬZQ;'+ذbǒ-+Sr5(D$q=7u=BmNxP}~DS8ġ>wXyѡ*fd; H@ L C( zp`A *.|<@Ѐ` +B!(Dso^Cĵip@k(H1T"Š䣈z⍖(FO'85҄mF ō "V(;E~KAr>b4?C2$ccsrF"Ƒ'z ɝ\%cQx'?IQq̤*AYҲu4e7Z:KM 8&2e2|&4)Miޣּ&69mr&8)q<':өu۬>{Բ0K9?@*Ё=(BЅ.}(D#R(F3эr(HC*ґ&e@A V')|-?%Е>]N*ԡF=*Rԥ2N=O*թRV*Vխr^*X*ֱUA])SB6!׹ҵv+^׽~+`+=,b2},d#+Ynke/ݺy`,hC+ђ=-jSղ}-lc+Ҷ-ns[ׂ,fIc=.r2}.t+]6npGRFÖ.x+^F vR񲷽}/|͵Y[fa/SiX9'^Wg'pATsyˢ; =C5q!.ƃ3hq r[@ :S>X78%|Jsbi%9&7.qn? c#r8HSg<} BaYw._`ط) \7r/j1L7dsc>u1J:4;p7^Ql&E[=F0 xdЋjGG8(pԢ]E0<[ S(BpG4b. c̨Bj `@ @ ? @T ??9@ |_d#@$AlC%d,@H@+ A 8ə܀ > l[,%ء@8",̀|C >x l_(!C;@|1!A@ l. d@>V/1 |A,A>TAA.C*!H"@Ab:b?A$T.̀1'|X,`5<`M"J *@2C  dC 4C6 $CA ]LD> ܉(HMAZ5=`A43 ,C?C?C$192T:ëY eC+u/::$Ae/.\ >_^A>0(@+e?B\b2̀/:.e;= !8 ><0y\&_!TUC3C?<#܁1M'#8V?ErBvg)$1$8$E1? d9@$dKB&C4CPG L'CM%@M$ X??}2D>CA :,B> 0<5S*dzb2hB%>B(B'ÿU#1AC+l[T/CnB-CC((>hCDC5B,@u,AeC\ > 'D6tB',f:B/TgCc=@A"!U,(t2 1Ȃ>\A([-V"A'>`A@#&Hi}z'xx yDDC P(3,+ ?8 HC Cħ?$rkؽ] * @E `E6$JSA2lDz蘊(A芢0C%f\(/gj:@/H* B%ڀ#BA>c]i,q,V,$ ŕ鿵C&)e>c)5%E-d, b$AVB"$B/H2^%+:d"@,dCjeX0əܬң/F[;A(\ *ͯOͰENd (TC |$@C~6{÷2h2d <%C DCD ~F9 2 LDqQ2D̀C=&g?`/'$g=xBULi'$'>tBW~C%j0AA@. tB> =dAp:X\o?bi; AF[%f?\AC:\aʂ ("41Ii=1C<=J)t*>#a$Bd.$n,X4n09DDC ̝r4`0@.0D0l<d-Ѐ Ht H1 A'P0,5(0`*0C:H/8x!0,CĨ˅0@*'B:0b~AB1b%\)()"1 x$@pBHZ / <6l'w0\2A$8C؀ i1&M& /3N@:܃ ,0.=A1@g&603t0't^Ђ .M@ ě $ +*3vH ,40Ѐ d>DGG] A*C=>nC,"!>4.Aƭ'fA>$4"eāeA/(\)Cu".AVCd," ^T!"#.Az>d8;Di=C'܀Swh#ԣ"$6;@vf%da5B+q{OCCED5ж7x:|15nŘ8l~{01;[)>C:o5(>0[,"jq'9$,74W<7-QzR3,C.V10%,h;@ҦV<#܀9Q0y89fIj&m}mBj:.7:r3tLׁk~WV ;[m:Q99[ٹxmX:VL׺zV=::{DBXdER6Ht!%;w?S ұĻ"PzQ*(*(VSCB E4"pQ0\"O ;NЂuWM;*H4@β/KA NæI0_Ua^sFXX&AN~q)A`p򗏍)A9 N>8v&[ ;՜0g^f&NgV5l06}ujիYvvlٳi׎vnݬxpÉ7.\۪uW"6tZ "a tDLK`IhQ68z @$0 ??68K&2"04#H&3UŏlJ0hKUo`\-xЃ09gE0B$E$NDD{0KɅ ?- q4*'.WD g="qp)by ¢.bŌK6xs D-6lO3J0D+ot*'VyPς\D3jXdg04SȬ) `b cu}Cv5Zb1cŧCa#p(.̧QяHt28%SesiԧE. pYzH =[JwB831c;0f2ppJ md| 4&Mey ?BG.ΟL"Ĝ'S̟h؀ `-W*qlL+dS89¸[<'3থ3"qg]\U_u`mfv]n5yٲl=lJfD4 yu]6¦f|.cO5b᠊E!m1E&.HO L%h"bnMdbSM+ Ф!7WD$0q|a&gGZ8H?3|'_l&`ѯ(sI:f Id (༶Q^Q8`,pG5P_lq[faNXbΎǒ]81QBstaը-V6 G6‘H̏ 0h~~]Ȇ"If:~8 "Pd46ϓ<$% (H715c73p|djp`&@qL>K%㕱?*um|[E6XɰY GN\.zGL=C=?A?…v_CV=H6YqUuf&Kel [p\^'uPvU A"xbu#ВULģ0T (ȉCRvfRR9.: " y| <*BL|nr+SEnO m/&n,^zF$miRhjA4|1-%9hh$&yk_9\vG7!vm}s6Yp g0 =i;~JiRvݮvn!z_ `46vp!5pgp+d`I;\ M[ /̗˴"(PLsu@7MU.嬹Йt?QӉG JֹuKx~uhe}5bv=7jG8ٍmg]5/w#Q{,CWs\&5X9yI_zӟWYzכ~i?~y{_|~zO -v|?їӆ q7`#wvvt>jJ~M!9@Vr*cNO/MCP"0ԏf?Masc VcCcP[m#hgP}Y'kckUP ( !h aah5.WN pYLL@^ :%pec 7PTXCx:x#Q15^`2H d@ +Sc 9֐T#ba %q ܀a(l'X5v@vL F1w,6N 0j(ȧ0>Y#< ^ Qd X#.^`q Qv1.jP:L# &x"؀&qgg3b%llk%(LaJ#*l/3C@3l WHh~EQ'0B@^@~RH V#;Lc^@_re EA0p.@D:B~dH ^q Z S a ^ 6EJ t?>.:#cK-Wqc &M'nk*w26S3%5[#R 'O *TUC˨L:K<c YGb 삻@&H; V;/T v s`t~.D+$3%2/H`N4505 )Va K`҃;ԁ,$r 8i'kn<#Rn$RD9@He'*k*=g4 [#>U4O#4i *y>%5UXY@c:c&Eެ%#KE:qAȂjpDr:o"@eNa nqf؂sAFu Au)WL ؒQH]Cx,^J0DF4l):k0KK#2x: R2 A%]C\OUP 3F=QcGH4!RupR)-u SB,%9'c=Cw.!h:iEr8Gԣ8cEDbڣM)4k;@L dPee hY;6 ]YTP9B5[p[25 ^Ӫf 3. A^Ѡ?jv#D"AM:`kfK` [JZBD ,B'F=AKD+ p cG4UZq@@F2?1P?i["tk ȹߞ"3!EIcݘͶPC?m?5T7R5zt_fo " ^SXԁ@ t7tC5.uI`3IRS[gu?InXY{Pt[# h3_WnPv7p7{}mWxq|-}/O}w67`>ϗp5W{m{U*vp+8u5Y %~-XG䐎y9PwIcX̏5ovTXX8IgCX؈XX8)8-\y~exwtR،98<7jN7o8nA8QN ϐ#y8 Y/gÒ3ٓ?Y69[KٔLO[RYؕgcsJkYw뷌y }ّ٘|[y)IsٙYoYJYp&_cYיٝ98Ǟٞ%H%Y ڗ Z:!%z)-{0:5YCZGKڤOSZW[ڥ_cGa3!v{ڧZڨZکZڪZګZLlZlgGڭ:皮:ZZZگךۮ:z㺱庰:պz?C[GK۴OS[W[۵_c[gk۶os[w{۷[۝ظ[۹[ۺ[ۻ۶Ǜۼ כ۽[[盾뛹۾[a\|\Wx[| \+_;/)\;߹8EK8[_c\gki|ř ̛O oȋȏFuɟʣ\ʧʫʝȷЯـ,v.ǻۼp"p 4e\/"͹<̃ KG.]'}чa*)?}v/.]2]86=:Wգ-Dԁ [`xf8PݎT֋}GaOtv+a A67ط}c4Z7N܅q5!H +(+q3qdCRHw56^#.}^7fLTq`q)463Z]6ATumcٯ6V!2&aAo{޽ Ajx[a&mE< XE.l:^>=6(dLxb": ro &J/b&XI/2]b9!"A9!F|aa&A8!A#?"Rd@R`L`EtM`">!au~ l @ !6&R@8h@,.`4![b6R`yMQ20b. gNm8d:"WA"` <3y :|1ĉ+Z1ƍ;z2ȑ$K<2eHL篡`H#p%c)]F䠕+X5*ۑY6b# zMŋF]M[?N# 2"1F0QUFltGK]X5sY[fE'8q2uipfWS'Bċ?<̛;.ҟavRQ<;c\4a^*Ȭ[OxN, #^\EZ5A1B\BW`t0YCC  ~\v_Bu&C-plDM>ظ#yŒ2A7WAdJ.dN> %HؒB DJ $@",BPР/c 2@>d UVaWE AA' 8xM ;42\P†ATZB# 0!Aё)gLyыrIgI4fJmL$WZБQl.lJ^' FLs5PezbSP?`WAc34vƇg}9 ZhATHBTm0a u $j#4A슬FlA2m哏?$'l2Ls6C [@ EE$40ȗP)4Af(qTs|yڷg$* `)HHBQ(ev$ qQ*dM1JqUDdI%+np2 -" ˋX~(] Cy,ܘ7zꪯ];Pe* £D {$O2FhI-DC +D]ⷖvA†wh `%&DgZxƷr8b+(c)M6wZ X~*t/ JD3pF5ѕp #0qu0 V"D#ɸ1=#CH%Ab6Wl,NRZC( I8Ԡ0.++#sAd!dd՘FF5pa;>cycKGG1 r,v@jĎ~l#LJ,4UECjr$FVr}Hғl+%e#L-8(ޒL,_ ` s"dȔ 2KԬ5 d>sc;;>A?ACsBHCCDQDGFFIIJGKKMzMRNNQROScPSSSUVVZYWWhX\Yb[[][b^^aa_aBcscce}69 nu,1 @G w0\fcJ?]>Rޖ6Yc-]=d l=?fd kx>\lռtœoqc01ſb FPAص ,%-w! މ" Ip@@IWx*?(ATˍIXAJ:yD B00⇒( b2y F0`!e !A D 3MU c4y# 'ab` ?|@vcO Fp,c CE 2`3G'4H)$#o?PDA8 6q]ӗYM5[zTe Qb!, h]E p 2K51 H$cB2$gT'/elv#Pc6|g1xW l&8 ^҂͛cJFMgYy ; lli;{38%?V\T*4kX+2F*5?6a5c 8P8 4, gp|B*Ww+8P4J+8"`NdQ.;M-b,0 @u69mS3h bܫ> V h׊cyo,Z0 02oE뵠 2m#F%6@c!C\# >xOpC&.x7$cF |3Ljj#! iPF`$$RWyŸh *g@jȢC"y<&WnJ@g$b%vz^|m[K6o/x 1eY~6hQ5 C,+@xI:Wlٷ@kX!Y&apc,y]@#eBcWmL`y~ x|˹3۳2X̱fLo ]]TvVq/ ?n-x:`g\.`xK?uP&,Ihr%!_\kU=s؅o uė? ru =/4A-bù7q60:8f~`|\\Ӈcxk@m&q`cީ@I"kA95P?!!xZ+ޮW\πux]tp&qL..6\-W8jx>ΩM:b/ž-r}νUP. tΨ;ff"Shw7si sְPRgAWk=_47SW{u1 q{ yE5\TC@ P5cIB 0~ `<` ɰ J_*VPj0m)Ҁ@ 0pHpgc ` jPO% Ԁ PvC!7q7dKf@B 7P5t첖+j=uĀp@yq%s? ?PgƞJ40 3 .VN=aL5N4I"Y37WK%R@sSg0SpwyX9/^SD_T+ NG \\PAy.EvAKTT,C5753vs3t@5 1/YT3@ MbjE5P4*thkW/]WR A+.p:5@^W.q3 4B #OUU?ZX/7uY88I U[bndƒP/ O0]e3 d *H/pe*~p-;08 5-y[1}jG 9xx.@ _  8 kb0#f=@ BCNF ۹gZdvດ{ ‹۶{+F';N'hk8<?}*@;;S>{޻9lZ;vʼtqlǸ89g9dvF˫*Ῡa<4tS3pEs{/ڄ&̿ 2h蔶)@!:<"&(:CsfCA2ӂHB U|RBvsct^|hlnpr봮̔.>\PQy'_n<+|`^o2zz]Y؞|s5` dž*([r0Pc7ygucnW\N9pji d^d]*}t:P ڴ^䐜ppVhdq.Tĥ o7NWJ@or=Y+) i0O?S#mZ3 #d_br /`2`.Ll>yX_ΚDY @nDj?p ncx@k=b #.yZO?m/_ƿ// ?ϏѯտOןAM_ۃ>;?+-_WAC%NXE5nG!E$YI)UdK17#.M9oysaCA%ZQI.e)Q6{NʓOnWaŎ%1U8Z[qΥ[׮ȳi\{]&\yK/bȑ%O\̚6gСE&T櫜{z.kرcF=UNֲu[ڵuΙqɕ/W\s O^u4oOMtŏ'_yկg{ϧ_}p@҂O:;t2K B 3K PCCqD8PITqE[QKEkQEc\l{rQ/4H$erHII(mI&sRJ,20*\-sL80TsM62LlsN:4M8*N>"M+ #8!|/p`B͉E ҴD"'`$0A;(B)NLl RP(%qs< XTGa:!N ' ǫ0ƒB\@2$C9| !W<j3gOEG=]BsPC(!9iB*H]y s'JZT!<8PAFJt[ -NFGS$A j OF)B0ƵqS:Nt`('?qcCE`P% ' :l!PZS"y5jCdUh=tT|b@Y-lzړa\)1@+^A L~FF thP_x}ItnÂС+ChDbU'1*!h`d-b9 V'X}/ 8lTf ;Fl#uV[j*n9H!l ⾀{AX.dxA_/5dQ48 j9^Y\l  <刴Ru<"+Yg$uWΎ2ݳdl΄*TwNKc񂫦XіYvtkmlg z$fAmCjBD)DE.D㻇1#Pg(TVD,ZFXD:^hqC8d؟AEC h,F~| mt1`;S?S@ TAeV} Ň>7xTH}T-HeKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[T[+!pyh__+c<(jJiVlI8݉l@nėICGRs0΋pb``! PBM fL(}hI`:V됐=ZDkkToooooň5ݪ]2@JbW*اaˎ@(si~.8Q9pPvAaDJ"xO@K:>@(`Gtp14@:IqB؄0 H%v@sU'gQs`gJ,GV,(n^C箣ĀVo#"&[ &kf4|xE:P+!tXSr .x` x[g `wtY 0A:(c'i2!"ǕxXu!Sg< %SpH=(hӣgs=Oa@MP 1 XtF/`H~E\&pݖ:m#m'o(i(k1ma:>8zb"xP,50yhrsN58/BxLjx})P,2sv,#npLЅpp`j"xMu]y%LyI]L`#`/I oxd0@,R Cgyw#gw9D5x|)dj 0;}] ox P2-@d@^M HmD`Xd`ϔm(8l*$΀?6aI$-0 jC(O^s2m)ԨRRj*֬ZrlD<$(omMT>rC'.޼z+<}^@Z #yO !eR(B &DwF$ʼy kCq"/ۢA?KY9ּr,捃-;S }Zd3P e$xf$ix@0@PЧ k#"8 iԂ@/Tf9"@S:sx#9#=ؔ(!!RD Zc?:IP]I9%fb5YcX1t7 722M/r(,3O/M +21D3I&D82C(+ً;jCtBS(w̜ڠ2J4ڌ23ʚv+18 :k4H&Z(2{//;MS pcU:_RuXbe%0N 6Tb&hqhE#<+<.q* 0&Q:981ErM m20sgDkL^kuڴ=m+_fGv^p_ ƅdA &Id#UqЇ ʁqdT܈ȹxr-d(3iM18E3N&'9Y`.ӗ f1O^js&8MNq߬-˨#KG?)yҳ'>}'@*Ё=(BЅ2}(D#O{#=tqPig A䡤&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡ,!@- $GoY\C#VUr^V*ֱf=+ZӪֵn}+\չҵv+^׽~+`++Yڇ~<5Sk𣲖,f3r,hC+ђ=-jSղ}-lc+Ҷ=AB)8+=.r2}.t+Rֽ.vr&ݪϜwӫ}/|+ҷ/>;^.мkF8,|F87_60#, S_'`\0C,t؛ (` ᥔ/~QfӒѴ1'xeJ*78i7sF>?Z3[GNͭrr' ],X}ً1{Xʫd-N\.6e^ cRv2_s,hhfG\w1 wP7%~ezZr3v-;eaڑ*\4<Z k32v:@-9(PV5'\m[уKZ@Ł l-{.H G"pKpǹw}^S 6Am`B "`a~>~pHlqq"#%" kca G-,;pB4_/`C=/(%`a 쁂8҉38=4Ch/2.dյmu]`E% )AplC  x?`A  ܀@DC@  *D | 0  ?A>0A>8ChÀ$ ,A%@9=0 9@#R7#ȁ&= X=8 -.V\bX I,̀1hA#@ʁ@H $B"4 : Ap- ԁ9 C?XA/@1A8uvA.C*\" X h0C?A7CA8" A > x J`AՂ-ZT4#4AB *@aI܀ l@$ L^ `!5D QE`A (> (Q% (I6 ^==dĚ;B4C?|C?A<A@3P "Q8=IVt9XAC?fΑS(=cf`>C;ك$B%@+`f?\Ci&Pd3̀/c4;ē=B(C8(A=@!C;Qgflʂ7#?Q$<'C\$@R?\Hd8~ *K BED l:,%,QV Dt1S^@U4`+ XtTޡ?L">̡A;C+B*@1*7$V?)k,74C[.t*tB1\=A?.dZuރ5C(),*CC=tX\?hA))@*CdaC'tB(=C+% 7j=HA#C"%)S1ȂBc*1A(-j?0A'=d_U$Xg/5~Nk''(_|]E0F`(31!$ @ |!00 DC2x&4a@ XD@\dQ ̨?M!A}H)9Xs.V* a)`j+A!#˽w,, A΅Ʈf.-_Q*ģ;l<+\b`ܥ= A*4B#4i].C.2A=8>f?A'\e\B;%ʵS$kEvd5@1~nd݅ \6B?ĀA  :P(0@h6<& T@H ?@ D@@C@@ =ATd=B&='%/,;~BC' A#(ƃ>zVc:dmCl;IH6CCCzi /@ڃ&b@柶Μd墒f?/^A#98m",Ԁ*<*ڃ:$TgmQtH.~NN(ù6fr2-<>v. DD11N<d- HO 1DA b(A'-C@3\@i(63'H)/@"0dp8,A 1 KV3ʶ/9bϊA1`%ỉ+^1=؂1'2*T-> t/ @B8@ ..͜54).7Cu1C*h L3+bp;0=d",0ԀA{23Nqg\e1lq^tSn \@ oK!ŀ"J> |!д?@J ܀d  $U K  A$1X$$=`-*0.,hAmh>4B 8݃"8&]cpc;P32 )BH?Z/:\D]",0Q;u}#\>8b1(8΁t>du@Y(E*>>;6âjӽhRA9l FkvGG? HH5DeAHSdCwU7AC67>Cl3GiĆuCi?Ɇ5CS8/ Ad^Zg}Eeo;9\C7Lfg݃YZ;k8ω:3Jl ZӔYabs'O0W۠($sA$O>H0 r }H*G|<*(Ql.~\*>H>dPHGU;PHmCO :l"!aA pp1jHG2Mf"FyP&.@<KAkJM}lZCA[yb%5ÐUMx@ Z4A8]]\f`bqDU-68FEꄃ>gOO m0!RFB@?aɰ]QbE|'Me:,cm *a#'b"Jec„cEC4b#k)~X}M5= (6ANO0XL6MK6 #ȫhv0,@ԭA))2Ee|$lJ i%_AVG811&F"ҶyPlrnx@VolHގlN)@ʛm/.\0n5,d"nðqn߰9v`;,ƭno}gt>2P$p4ΖājmҞ<;V B^BA v l`F&mgqg\ǩ +#*Эu+r%7 TcLt?]9G9sG7Rֹu :5np}aWv]'.gy}svݿuwWs]& /_׼Ӆ9䓊d#(WYz׿i_{yO{Q(z_U W|?їeU<\<}Aӏ#z>;7~D=px=<(j_cGx 9pox@#wC3PwG>09"Б&:*P7:pW[0T0DvBo:]Mm+  nkGqPtL70 P А hh8ΰP P\pP 7<bTJ ah#xP0VG*J3ңM*?Q w B&&:an Pk"Qw8zb )V`/ YdQE8N8&xN@`78 sL} UCdQ[D&e ^` 1b ~C}N^nU1ñP{<4#&(L<"&,^Cba2tV!7ЂZ;MOb)qe!YR VV)W7! <4^_qq7,eCPDE#0a@mFҤ=\U aL A\e1dDC!/uDr @ ,!Ȑ4R5}7r!T(=uc,k,â }%FV N#2 ErO,z.b Ck(1!Q  4i FdhĂJS> _̈7\,6%17 b_ ,\'V=nLS\_3Ftd XkDpl뒸'CbPr!^0.f>w4@?-,͂Q3HkS3T T@<*M +FJҢJEs 4,( #h"rF6A j%P +sf $!0<< xTQ0V` RH7,JI1!8L 2$Ht L"BrC`L b!< #p &cĨA NA* MUZpJ`5%7!h7! ASS'"-7D!J+1=q6ifaAfVAG6$dsg)P=A< NrDw^"X' J%;N` d 18ۊN`U&VR ˕@U7 vQDfg50 #vAv6&GCMggD>@r\"#F. –,bmOA`x,,"UŋgWXɗɛɻs55ʯ˳\˷˻Y?ǜz0x.N`S%.3:fS}%ܜiӼ:#]iwM';][bL0:ݐ6S]E}H5}gAZ=g֩ k+bpN0\v}:z~=؟̽E&u=s9ʔC٥١=b)`( Ӽ̎QTBq}15oCTDv=ÇLA)v)0[NV b8,a¢!5]75`\79fXp8Va6)BX1 aB ({Z-aXG0!nP~TZ~ܚ'V!!Z0S0?S3b GGA T J=:Ot"`:|3y+Z1ƍ;z2ȑ$K<2ʕ,[| 3fJN篢?aa?I%nc)`F蠥K+Y6rc 6" L `Qcā?O##2" PDCE68D&НPmb ,OLyM3$g͓`p eRNIeV-*CP*0##T mPz IP7`fHhʳRDWCpd35{g zD*#8*T+LC^dd?©1i6TdlH%>)Fz2?#Ls6ߌ4LSXHBCA&,2 O`9MUd*i J48 d0ć@CXp %MD kdzjD^êK҂I˱\6B 1 2#c"JY< 1GfΪz_6+l8T+ ;`iM:W$% T)I#J*:4вCL&*%p]t *@ dqO*ƍo- QGP(0 dCC # U2cN^ jpHh k,;<ΑsCA#j̨4ҐqamlI76A$ 8ld!pD'KK4iqiqcSD*qzH ·f,!ș"w4I Hŏq$//ʤ'? )q$Ĥ)Ird(_ X1'PeHJ\qS%5[r,1/"̏җ̬"/@&<5l^$y0y|I5t3@ O`⌧CK .r?3@oUAjPO=DWs(` > Ґt$-IOzt,eiJoP4MoӜt<)NsZtD-*uPtpLmS ըJuT}zUB5W ֕ UfWyְulH>*ƴut! Mu|_ v-a*vmc Jve/jvg? Њv-iOԪvmk_ vmovo w+qu7m1JНuKbwuv -yDwI/{ 7Xjwݯ+x| 8 f Kx/ kx? x$.Ox,n_ x4ox< B.Zl${JnE(Rr:l,_Z210b.s'l4jns\8[rsl<_z @ zЄ.D+zьn HKzҔ/LkzӜ? 9Ԙ5-mSS:ժ4[ WѲ5kmkE:׈5 _:4 c#^hK{Ԯlk{ p{.ύt{n}k>moc;7?;3 .# _pC<*8Ql8'1;|$/O|,o_|4ozX:29Z;;>A?ACsBHCCDQDGFFIIJGKKMzMRNNQROScPSSSUVVZYWWhX\Yb[[][b^^aa_aBcscce}69 nu,1 0G w0\fcJ?]>Rޖ6Yc-]=dt=?fd kx>\lռtœoq_01|ſb FPaՍ+%-w މ Hp@@HWx*?(ATˍHXAJ9yD B0,⇒٠( b1y F0\Ae A C 3pMT cy 'ab\ ?|F0vcN Fp,cE1`3G '4@)$#O?PDA8 6q]ӗYM5[zTe Qrb!, h]E p 2K51 HcB2 gT'/elv#PcD7|g1xW l%8v ^b͛cJFMgy ; lli;{38%?V\Tp*4kX+2F*5?4a5c 8P8 4, gpt*Ww+8P4J+8"`NdQ.;M)b,0 @uK79mS3h bܫ>V h׊cyo,Z0 02oE뵠 2u#F%6@cC\# >xOp#&.x7 cF |3Ljj"hPF`$K$RWyŸh *g@jȚCp cWnJ@ g$b%vz^|m[6/x 1eY~6hQ5 C,+@xI:Wlٷ@kX!Y&apc$y]@#eBcWmL`y~ x|˹3۳rZ12L\՞jܳ*{87pխoXK؅` poʄ XN0$ k-*9ܠgX BNva2HB,u8&_jjbR݀!+\Mvp o ]= @t;?  @dq-7 fzj@x':O+jp8𱎎k$nԘ: ņe:K҇95[4@سEnϹWy . p,[0aLw0hv/)c]l:/gUuKƎpbs7bquuWh|N󣄴؄i {*ƇW@fbq4T t5Cdxenv3fc337)[kkX5eeFS1s%0J\e4_3':8.*8p %us)qo3nJ}ȑ8U+pyWH;W iWT5H54 /`U6I.ON ۰ Ϡ 1c PB`a Tb h Wd 6/ T2@ El't]r#]}Cd`4/pUSG.iSW!@ H`aW1.CYu֗)n驞ĞK3P`nPA>bN?3f4_Dc;<rX>cs](-4C ڴ0 mDc WDPzL3u 3v4ʏ2;U[1MeLt WxUpQc'tMZ 25PsS3b9t:^/ 0Z03TE5# X$zVTTKcAǍ@Vzإx% +e B Se`W=iJ#X \a[ōrSaÍPU/N&m*YФe_6>KJ5T*PO~ W+gѢ- ɘps Pcbapv$ 8G /u.p S|Z+-;bֳ /;dv+1hKpƹ Kf K ; nkjgmAxfk8<?z@;S>;ڻ9;stqk89e9dvk*a<4tS3@Fs|;/ڄ" 2hd@ -HJLaLR=T]NM~M3]\^yq`]f}e-AhnAp]v}"-Ax~o՗Հ}؈,׊ؐؒ}٘ٿLaٚ٠~v!cQ4a! C)ڲ=.MڥB؀a/h.@Pd1/0 uF=y!όf`P.֐atb:I=mw1yT0_@f bApubc6=-mjfeluG <`:Unny? dc.T7>.Mmc 01 K 2Ĉ->?E?DR0`1tj ujF@p C4h@_'|CV@:WMX4.7#mPOb>d.f>h>VQJ\T:0$:vR 61Xn(1\PfQx7p_>;+|`.m3zz[)^Lar2` d ÂdLe^q0 c7x'rc?D 6 O~Ӥ*@`MUp~8mV gEIBE\v.$aqe>=n{30OMC85aU5>'z8?bnACoyPvP[X[CY @>O?@juP+@ |;:pʼn?aNqasނ!_n!oR|?ĿӸ؟tGX??ϻןܟA-$XA .dC%N(q1t4nG yUdK1eΤYM9ugˋK%qdQ'SdSQNZU," hWYŎ%[YiծŹ[$d[]yk-ܷ_[aĉ/0WH 3\e̙5#th䢓7&]i?;{ ԱeϦ]j!]moŝ۸Õ/g9PǥwD,#:ٵowŏ'_yկg{ϧ_}/Owp@ $@tALP B 3K PCCqD8쐵ITqE[KEkQEck{sq. 4RtI(7SrךJ,kJ*KQK03+.41Ts͟4ӣ/ٔsN:YrͤЬsO>TNvRO? 5N@s48uQ0em3!,%ҏSPk1N$4TTS%qTJԈX"晧,h?jUWY<+Bd_J`*ᅧ@ A`QׅnbU@^֟?VZ"s BOFp"v#OaAy㒔YeQ?Xe tWb|Dj2$fKd(eVC&CF`hYQWhe=&j|^$_)'f:ckgQj]Xdf9Egyh1_ 2qrZtbX[h!e!BB T yY'hg^PA6!RCJdhloici_ŸE~r#4f(!9dj,!ݛb`|st}#!\ 0,k +H 1JypAT:pr  D׳,^%0Ee' #0F\a*:XD B8 tC%xTP? "b /QnC0h!Pq%3N0sܬ{d?,0!3صhL LE@l+^P) [r'oa AɈC8"NH\(B!6"wKܜySE(Q 1F  D OFxF ޕ LnuAQ#Q8-:Ŷ8G1|a cP<(, g@/n$C9ry$嶑Nd8.w[$T0:2+*N@/\ $!a<$Cu il6m8MXmSMPx*`C1"ԛQ#N8A<B GсÊ4B,8Ot s@x$` 4 إӁo ?+z(M+'U] vU>XP^%WЂWCT ч@!@ x5pk,.H7{Y(r+d^}\^Ex`Uu 8 P ?h=s(ċ:Kya(xM1P]l;@ܵ;𺛃{XH%Js6+"+؆"B)A@BA-Y@H(P0š!҂`NBCd $h+Xm C8JN+@=CjBD!CEHgBD˻.C"`D@N{8EUĥ,Y ʣA|s:\̖haC7d1EC(g,F} l\A:[`:x꓿EKaÔ==ؘ/!8Hb!b 8}<ɻGFI8ZH;c !k:h+xx9h4axn` @4xAId h1 / H(؆m/ nȗ)Y5DǬ˳N 9HL`xL$K`6l̪/ ؆oB{?9FL:ZxIj84x?|B3<h9܄M, Tĕh= lNB,Ap4 p"T XɤLSpM\ZlFPdO Ɯ0OO|(P=PMP]PmP}PP P P P P PPP QQ- ]IihxQQQQQQQQQ R!R"-R#=R$MR%]R&mR'}|@Q ψ+PqhNR.G. S1S2-S3=S4MS5]S6mS7}S8S9S:S;SS?EV}@*+>6XTF],F]ITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYm;B u{@C8@VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp e=^{U\ʇ^w}WxWyWzW{W|W}W~WW XX-X=XMX]XmX|sEtM`W@UXXX YY-Y=Y@{Y,ٌ8YYYYYUYuHQuU^}T}څ~] u]Z}0ZڂZmY@\mZO ڗLUыZc۶۸]D[]ap9Oy[-ۻ5}HͫE/9+X]m\Ǎz]A[]\X+P[8+D}/c`ɛ( #ڕ (mmp0^@ˁݿMZU=aE[Ea `'MdZ`߻p{^'5==ZUͥ+k؆P&hI>VH-8-3M(< Xa~ )F`]>`YՑeE=5|ޘ `y(z]1@&qsO+dly[#Ab9J8E#+Xg`A kͰ*ϻPEh.`qv#$^%>\m9;+ Xbu.A yXJ HP6Cpt+su`g'x *Hh^I:Sچ؀EuFD ] P{6`9j` x0-@PCn`(\$Lʭླྀ\Z FH nSpg02B&l5z-5D;C&Xyh_\&a (jIV`lA ݃Xm?m``D)D\k=м`!Mr#aAPh96`=ClkXQoooooe&pf_BE,Qfxs(a:؜?(shv+8Q9pXa,J!pN?6>?(PGtp1D4?hj8)qфAЄС @#uU,'pgQs`eB*GU*g(n[C䆣&o![~Z]IÇgP/u`M>XPq p.p`(>Qhh w `)lG0aǑi!Z@HDq4p9_r>\ܷKTo; 0 x #N2{eЃ igң8q<pHzp9rCGCCN5bJܺڎ}҃9اmpEPap @vûyPrr /y+>'zr@IJ$a;wa4Y3a&a!b H!Ƥ27Ogr 8KЅ`lx fܓ?ה^mytHK`D|*pWPSHz8 (b8myO#gw84x|'|dj G;y] ox P 7,L4"e@^M& pş C<"uS ŒpضB DBcm"C5%I"PMc%ͫpN#ҤJ2m)ԨRRj*֬Zrݺm$Hm)>~-܌ͫk.޼z΋^tĨ>T-rh^rAD  (=1`]hQ1 xB^wG-p5O9ēi夬P9B@C Ahܟlz?)~NO-2A1X4f7 l 9Lq nh1 Ћ?,s?TN\5x#9#=.%JC@!?}ME`QJ9%_fbLN-u- 5֌2JBO2M/r(XCO/"M#c +21H3 &HI42 +Cg/p 9tH'4bG *H(XcN0j#i-I#i)J(zh"г(&3筈 X)=L`SLJ-()h|##N/ F H&Id#UrqGJq,SL"ēe$3iM2<&R|H_&)$'{JeEK$OPs&8MN2r߬-׈KKG?)yҳ'>}'@*Ё=(BЅ2}(D#O{#=t>pMi' Ї@ࡤ&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡ,C@-GQF#VUr^V*ֱf=+ZӪֵn}+\չҵv+^׽~+`++Yʇ~<5l ~P,f3r,hC+ђ=-jSղ}-lc+ҖٸGcNFe'p+=.r2}.t+Rֽ.vrosێ.zӫ}/|+җy;^Mՙ',xF~0#, U S0CaCu~py.&p9MhZv5sS+ ,!+e9zbiX)GprcJ0nneT^-2;dV&9K^p2o*w݌wan9We6NSm3!fUٖgR2hm_;zpa,.#1]?CS9me:S224] 20@Ў^ =CC0N5DQEPBpI1>BxԜGrN"c}G,j"Q.)WԴ^}4a@a M'kAZJFJuԍK$<#zxAU+Wݯ/p y0=,dRS|C;P 71C]==:iK4.]_آqB?|S Xp)~pn0QAczA .y2r oW3Q=었?1Kx!ED/P: wp[d+~G]0E"hB},*3{ᆞ`` s;EbvbxDTvl. S#-D~HL;oS4x/h5/$%hCa8F҅38=4d/2B.\]խem`F2 \ "ptC р |?\A  ܀CC@ *D | 0 ?>C@,A>8d@#(C%5=A, B:#7̀#Sā&= P=4AC-.\"P,@1dA#AD "4;C@ēAo-@ A:C?TAܖ/@14Aqrā.C*\TAbAd0C?A78 > x0 J  > VI1-e(@?B Ɛ] (*& @^ P?lC !D@D\A > Y( UZ==`;B4C?`C?CA<A@3PT=0̚9CUC+ܼqA7C;;(l&/.9A؃;r&f;=$"Tf)(A6&"E6 ;A3^C˝A;C+B*@1*@8#V?k,@84C'\.t*tB1\=A?.efgAvCB5C(),*ԀCeC=P[\?d))@*¼iC'tB(=C+B%A8C`/C0= B]R靂i;,#HfBtBa%(]E.Av dI'2bRLS ` <  ^ B@?(C.J]B2A @DP 6 eF X̄\7A)j;C%Db flA:/j*bAib2;ܜ'yDɂtk"fB<#1.%$-l,.(=A*0#B4].cC..A=LJf?A'\C?%=_\;Vd7Λ;A(dCej+aX_E6? ĀA  :\(0+Bp:H<% PBD ?0,B 0BA<\%B ,=Td=B='%/8;~B,i'#(ʃ>{rd;x-l;EH6Cރ֊i 4/@C̦fbLC栺ܼ棞f?/A#C:Lm"¯,Ԁ*<0B 8C"AAD_Adp;L/2]%BD?R/5;<",,;u}daCd7C;L['Zh#' AXd"+>C>ãfA$vӵdR;d HxI/IO J߅JS5HF@RlTwF67>t3RɱeSAyC j?ˊC6Ɠ80 ܼfEe 0Qr\C:d7Dݱ惏xQZ;kÃxɅ;-<ƟS8pSz;A(C:`%x8Fxy.]wya$9"B1 u[žyzr/<ZxwEy+>C. hZWi9g+3\_zd::W4z=~E[W$: ằDž?;#:z_;g{T$-n5;[d+mÐԈ~kƸٴS{Y{Sl%"{V*T뮂Z0聣N*<2тbE4G"4W@$/1\"0UDSB9R?* I48<"|Y_3;qycRtC.BI"SFE< B$\3.xBTAC$@! S(RèU"@@#(V("3'X"½3+E4|(AX I֗? \*+?"0A,\E4‘l\OG'.@F\08B#C6(!0 0B,ԃ?,5[FЃ(A<(:(ǜ+lDwh00Z547x*DU3hEzCg8p8ګW ƣx3\$=Ϡ2 07͋FU$\ nf0϶#/ژK*Y5>`CCR3^{fXqt?})9Duc1n5ߜƈ4بU}{n3Eٳy"Fla9xpÉ7~yr˙n:pW~{v۹Cľx:җ`B4Ya sO0Z("1uA<72IHs zJkf852 T*,Qt.~t*>H?dPHG;,PHnCR :h!!B p|jKB-Nh"zI,&\#!gbb)p\)1_П1ѡk0AB+Oc6F<`1࣪#Bg2 +Тш?c  B ,`sJ, m]:3 p${zX"( _Y1W1,c,ĸB.+|a01ʓ # $ > ]4%놦8]]X`G^aqDUL-68FEꄉ'JOOA|C?=,9?2i\,RcMB1bTLADqm(^Hb ܨuW!@ a0y01ujOƚpE نS=IhYBhayl2>,92em* a7A`A\XJE#3״[^qZ߶tZScn">S> `a̓ S1pK1 1\ȑ+Sm܃6Zy86SuCG޽k۷-o㘎7YƊ8P=q<;։GpwB9"Б&0;*7`{pxdPwh9lpR ǏK0NJ/  M ah jxc  Mp0 wPNN ^@<^ 90CixB8=8٨3Qx7 ^b4J b ;q q!` h ,Q"Zqe6Npi88 xN@V18091`0h1b8JFeJhYZАc @8TQNY_}#=8c&&)L<"&-bcb2tV7B^;ލOb0Ar!AZ VV(W 8A<8^@_C82CVdAFc0a@F>B]"V Ag`L "Bb1hcC!.{r @M,+3B48 cT'-+c++ !~FT N!3 rď,4'c cl./ v 4Jjj*"dn$:S=_7L+[15 0-о,b'\֡R| R 6r@#,llIF+`aJiG!W !.{8) %%Bk֓F TQq83s,1G7S?I/!`@zƂBx#`cb!; ĔC a2 ! QDP5F@>K3QH!C" +e7DaJk1>±6Uja@FVGa< >V RU xQY3GGN`&VQ)U[[}O5ddv^ >+ "Df"y:$bF/mhM 7e2hDckK0dAlesIpZ΍cnL ބcJ"0AUm/8 V:T *86XnRwPde0vQsHBB@nWvu'u!1mAvs8nH8PW+Uxc –z|rxPR5||W~gN o`}{]{O xq~XMz% \}؁8 X[7o_7i )d͂E7cSX##/KXI#sXw{؇X0V.OaQ}WؐVFh؊ۯ}%Y7påcָ;X8;XRx;؋#Y;Y/#Ò3ٓ?Y6 OE)Sٕ_{akyZVyZٖwٖqtٕ}YّYٙyx9J WǙٜyx1Y癞ٞ)Yٟy}Y ڠzZ#Z'+ڢ/3Z7;ڣ?:EA6ٍARZW[ڥ_cZgkڦosZw{ڧZڨZiZ:kkZzū:ǚڬzٚ:ZZњzﺮ庫ZZ ۮ۰#[#{'۲/۲3[%?C[GK۴OS[W[۵_c[gk۶os[w{۷ێ۸[й[[ǛA[כ[盓I[ۿ\[ |y#+ܶ!y3;n=Kܴ [_c\gki|ŹI$;MRʼnȋȏ|Db#cɟʣ\ʧʫʝȷ?;1xخ,nFzۼn`#c5I\\a"y<̱)~N<]'&!ѳ I+C/=ӷn =E]W]N::>o3 uԵN֭ q(f]|֡#Ly9=Տ\>R((P ÜγTb_]14oY,@zp'ث'".A0\][NV.c6-"!4}XmX Vtceڅ5A#a 4<^-N ֡@^ "&A*W.(VA b=֬-Y"ϒ7d1`l0XI/AR4(!a! bba~v;1T@hF.!J@Fzd:FCxYGO q%_n(gh`,1 R_5!Ii 61uH5@JC8;#^9z$ _.!.ڃ+n&/ʼn?.D p'Ly_>( ]b0t bs:լ[~ ;ٴk۾;wiccuo%MFagUcJ`î r"L2p4FWDBC,&(2 N\9UGLқ\*Qg  981 {% ^ YQD8x8r Ʊx6B 1 "_"M dɖ_yo*<+H|z1] c F\"9*:4ЀqN%lIvA%5%_ *0 JqN䥩l&-` (2\r`۸?ͳJj1Us,Uϸ9nm::at<;4hpfF7ߵxzr2 6m/8BaN$V)#(1`(Jq- NnfEOKY+ތ;]t"lX4q?B&ƌT;{L @/A 9憎yl# I1r5D%HH ]r9Q$n&Prě@yJrrXyIO-oK4/J 2 -sd*s M[&Yc2s6Xst I4Ȕsܥ7 xBr&$;mU|3Xtj(<ЄЊ Q`E/ьjt7G? RvZ :Ҕt,mK_ Ә5ҦBoӜ~  Ԡ uD-QԡpK*njSJuT(qF[W Vڰ3z4(Yϊִr]U[ ׸ut]׼u|_ v-a*vmc Jve/jvg? Њv-iOԪvmk_ vmo]5mNw q"w̝Y 6Rҭu Hjw$.w ^\y7-km{iw|.}_?7L7.+x n Kx/ kx? x$.Ox,n_ 8Z9ޱ ٫AuZ#+^'KMZ+kYQ޲G/az4+jns8yt:{5_9.d+{n hK{Ԯlk{ p{&6ols81wûm;'7K81 # _ C</k|?|$/O|,oUr%&BE̕Lz% ! ,      &:("4"'##$V$*%%*)&)**,,.2I.4223:24J6<39>;;>A?ACsBHCCDQDGFFIIJGKKMzMRNNQROScPSSSUVVZYWWhX\Yb[[][b^^aa_aBcscce}69 nul1 PG w0\fcJ?]>Rޖ6Yc-]=dp=?fd kx>\lռtœoqgp1ſb FPaō,%A-wG!0 ލB Jp@@JWx+ ?(ATˍJXAJ:yD B04⇒ (Íb@2y F0dAeM!A D(4mV cyC 'abd! ?PvO Fp,c(U2`3W'4P)$#?PDA8 6q]ӗYM5czTe Qb), h]E p 2K51 H,cB2(gT'/elv#Tc7|h1xW l@&8 ^֢͛cJFMgy ; lli;{38%?X\T+4kX+2F+5?8a5c 8P85 4, [hp|*Ww+8P4J+8"`NdQ.;M1b,8 @u 79mS3jbܫ>KV h׊coZ0 02oE뵠 2q#F%6@c)C\# >xOpc&.x7(cF |3njj@#! iPf`$$RWyŸh *h@jȪC" zΫM:b/ž-r}νVPn vΨ;ff"Shw7)c]l:0gUuKƎppb4 :wSqWYyG4?IHL葶1h|؊qd&pNǏL`I_8Dց ]51cMjV@9X`hl?3sUYVf050x9tPFc>si s▤װPRGAWk=_47ّSW{u/隼q| yE5\TCP P5icIR 0~ `

        Sg0SpWYX9/^SxD_T) NpW \\PAy.EvAK4T,C5753vS՞3u@5 1/YT3P MbjE5`4*thkW/]WRA+.P:5@^X.q34B !OUU?ZX/7uY88J U[bndҦNz/ O0]e t *`H/pE*~p-;Р080 0 5-w[{jG 9xx.P _  8 Kb0#f=P "CNpV gZpdv[ ֻkǻ{+&;N'hk8<?{ @;S>[ܻ9l:;tütqk8ѹ9e9dvð&ɋ*a<4tS3PEs[/ڄ$ 2ht >!8<"&:Csf#?bF|R U|P"vslct\\fjlnpr,! kmFdi;Dn0Pg=ԭ\3 xaf  P\0O*N ӋhW=}w1y5[a@f bAubc6=.=mjfelwH luj ujFp700P1@@uGou/sդK"#:fDltpjUKuSMspN-N @jsV벎̒.>\fQy7_N<+|`>m2zz[9~\qs3` dÞ*([or=Y+9 j0O ?S#mfZ3 b?Br /@0`.Jl<X]DY @NBh?nncvk=b з3,yX/?M?Ŀğ/͏ϏӟOA-п?c<q+o-? #XA .dC%NXE5nG!E$YɈ󊡛K1eΜ/͙OA%ZQIdS69PUYnWaSZvTUŮe[qݗh˪_&.^z-cȑ%OxYPSgСZ<5͢Ufkҥvmܹun8m&^q!}frxrѥOG肱Dwŏ'_yկg{ϧ_} ;@TP5N#pB j pC;Ш 1MK4D3 QHLEc|qEsQFsQAkrHzqbTrI&C3H͒lrJ*I(kJ.2,, /4̠S&2tM8;RsMڌNpow ~ߐBxQ-N_F#`rMީh@A~4o`̊2P+`FXD?|'Σ"i<=IK Hə(@2(#!w^)؅,AP?0;cȂ`?'JsA:+*,*"*BA/| $3 ®+i!0AX(h`œ"`RBE0$0#!XbËb0H\ICZ(ȭKʫ$:,x:h6"bxp` X5xaI d83S?S@USW}h L(P?7hTGm-GmJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZ}<CM+{AHDb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp WqWruDV=\U_V~WyWzW{W|W}W~WW XX-X=XMX]XmX}XXAHueu__5QX YY-Y=YMY};*uO]Ҟ{WYYY ZZ%mٗ8UՇBP=|AH ̦UکڪZڙ}8ګ[,9ۇHۆX[E [u]b:SSy[ .[ ]QX}\j,:0ȂFvJe܎\[O]FF;h)!Hyh_`h)d$(jJV`lQ݄ m@o JD6s0ЋHb`^) `ML(|!XJ`:.kx=DlkUooooouE#Mb]e2J`X*ȧak@(sg~-QpX&B|LJ "xM@K:F@0pGtp1&D5@`9q)qB P&w<@#V'"hQs`fR*GW*(n_C䞣Ā&oa ۶vk5܂|F:Xj)tXQ .` ˜xYvg םxx$Y  0B:8a%2!"ĵh8u!؀Sh;SP>(ϗMP / 8tD_PNo[OE⅘I'>yfZhAB"p X^ayPji ?y,&7zt/IZ$`;_a5]aB)a"b `Ȭg2*7?{fr." @ϝL|/]0HH`h~"P-yu="^Jpb v:"pbÓXPShz8 0b:moVjyw62zCJ\Xn;ImtămX+BI3/Rt op PJ ,UP_;51R׀6VCg`j P % .2 kC(o^s-j(ҤJ2m)ԨRRjUmD<(:onFd>jR,nܸrҭkw^xw+T=A}:ѓF"B P@(A@ xGB  Iz(Hj&C!nDfEfr:-z;`F  ).#Qr\MJ; 8;9= @fBjM6{A ܙ%A60̶ c c%rSN"18#5xQ@bD(cYxd[o$M_ fSeQRp2c)X =̤6 2 =4r*4\@ 3 )ȼ3 %3&1)&OӦ/IN9౟0ln )lC&̘# )dfj#Xj0hH4q>*ӼC#*-Z,2*2lғ)=j3҃,=<* % q2Ybip+bt7鴈${/86FiDon9y0KB`&<&` FȱMs19hl2 ld9 G1#,9ˬ_l%,r=ESrF\=Zocr`H uDEQ\dcqP 3\7 >8d L%W0ϳpS O#"&\Ɩs s l椛:%䐞 z{稟z飗Nw~z缣n<n:<<><"0G£N[ t8?K^d8Icw;"(A c;tc6$@0 f!D@! Mx'1 3x%,! _xzq;#a 3hs0V"X LM`,ENJ ރFqn|#|pqrLX.%xkdG (H HEҎ}'@*Ё=(Bi{Ct5 )D0=p(HC*ґ&=)JSҕ.})Lc*әҴ6)Nsӝts !7%Jh+zUx*TԩRM*Vխr^*X*ֱf=Yֵn}+\*׹ҵv+^׽sjP"ՕdD>2},d#+R,f3r,hC+ђ=-jSn layX#ڼ-ns򶷾-p+=.r2}.t+זt-lcK.x+񒷼=/zӫ.׺nv8Sؼ/~ؔ|F߱ؗ>0{7N؀S0%ߣ7/R&м-5yF0r4iVeTY3CĪD={g<$ernI'<2+Bqfځ[ ?C C`??8HA@3 H=D 8\B ,\̀+C8)y @6QD*܃(ރ;\`#: \"=, ؟(̀"(!A;HA:HؖlÀ=k +xpA>#A\^:1Hܢ:Pc?*&x/1'~$`PQZ#EB +_]@ p@( ^ 9(#+Hf?`g*,3/8QZ;=B8,A=DC9%]dj΂%8#?-$9#(8=.?`H}_8$}HfIIQTvD p:@ e OZ BLD1QF@@S4d, 0LR D(@C0=\;,>B9Dk=3@n=''Ʊ1+"`4&t@=,+Б3(;B?B 1 =Zb>c/Pu,$ =A([6x'ރ:B/\1i/& ؃8=(BB[.^)9,i$$¦x`܃ԥC2tA `CG֧ }bQ~:~JjXR_(A@  B (f @?( &ܮe6A CX 6$EAWDΨ85ҁn*9% `Bޔ%j:@/jĪj xi|/i9fvH@Llib%:T& \2&-l0mP\#8B/\3$A0;"+@ibixi\&=A]z92$5;(`CC=B=^Ő]k16@ ?A :8G0@LeG<@& X@L ?@ @@\[t@ =ā0dئ=B=(e/g9B'$#(ʃ>fyBnb;P,9IAF:Cfi C/f%a(~֦ݥzf?o\ 1C"B "+P0<=.:DCy+~-5FDMkT+] E( :r[-@C>^. \1:<hC- ,MKq\ @a,'m3`(C6B3(4i/"4b8PA 13ɺ|-:"ΎA1<%i\_a+1=12()@-> x/ D8`nϥ68C"8؃2t1*Ԁf D(RpC9~p=@b,4@Ay7B_4PY1`\h@ƀ @e H-@**\ +" +B!4LC < ,1 *t ީ@14d$=dC|'n,lԭX>8B ̢6" @]bL;T3A2-BH=./5;T"C,0ё;uY#`ú=j\#l7C;T'WA$%4"+ģ>>n5ёlA.8A@Ec4vψFG'GHRC5$eE^QhS7Ẽ67>p4P舯AyCi?Ȋ6⢓8/dC\BgBe/oc:`7 ]fg8-9iC8a;9x+mòFJn9(؃:85Ưcvo9u}w\vO!"="Ă1 BsXƂ9xlp0D\us9cŘOw>,f6fҹC<`+ :TofwzF{~X)YZ_z:bU |:V⺉:돬k::7?;Sz{l Z<(iC|WDĈ.gY+;1;RhC&B#;U+0BXE0AQDDJ¾RaԂN4A3E#UB,F";RC&4=E1A'E-]E0;4BHC+K-4|HT@(<B`ߙ7A (?4~''SC+LB;R'0\1Lb@#<,LFE00BH7X((U(C#'`A#BR4,A0B$O1`@=1<5·1BȂTH ,6d5<|CW0\F S ,nbU_bႝxn]Gp`:$18͓V2V,(]\0д+OZLJaٵ`;Cr4`X-YM4{@ _:Fs_2pU_€ jShOmc1h{J[4hXUR}wnݻyxpÉOmyT5wztөW#pw^#8jĩL#ԁÊxFNG|fK8 d1FF@L2ZI(2aHA8'P#2T*C0PF&ɂF D0ZZª:,& %k>@2&*$FᤐO˜F I2g,dd B Xd '2țDFeO `O]Ȅb<@BrcX 6)OEȯ@:P Cc݋0l81> ,P&[f}hsNjwcκl:삣ZȢ"q+C$p@-0V& m&ad$Qh1I:ĝ:SFFFޢQuXk,j#becFJ?1lXWdqq=P9wZ%(sv îv#,i|ܘ,H&B)cS'LI>9g:l3G8@+#zٮCͥhbb]7V:zJVN20* gY92X\ItYZYcSsyܰ1Gk]e_ǖu[v2(e*L͂cCFm lj':IU%%>!MXvQz>ez+hIA xs '" C& LTqq(@Fqۑ&mCS65Gɞ?LdV}$@ .e [rC\+6 Ǭ#a`iM-uIUQda2@'' e" Gq2惽r^ꆚ9c|G?*v|vW7M0Ca @C^FONxzEAƷzdO.g+J! b\E=SF4#n#2\_Eأx75`RtL]@"Bqy >BҖD`N3a_o¡ʰbO/S(&q Az,ʘ8pRHpW ^j| H6'&2+uQX-v<+.*H7UdNCHC:NX ncJ :pb xa p\iCGBMMa*Fx@%h#бcBZgpX)0a߂11́jWQ2O$b/Fy.NMP !{E@r@=@1kБZ+QS>a QF)m0]`kudVFPap0x'9 u/i+ćP=C! ƘC>I`!X2Hbn2n%>u::ct$ mj !e䷕a_xOQLW 0IF*e pY_#mC\7?Wԩ^u_:%tn]Y^v\ 纲-q^wإ}kOv۵v S] {?unsK9_ uI_zӟWYz׿W? y }_|W~ϊÇї_}_<(p4TWq_~7nxkk=;o s?,L IjJíFB\DN:#CbhtAF &^('nb;E ak(sC N@tH/?7!l+2Gl(2yAjc`k=a>! 22V,QT jX'@{F GN`%VPZZoN%cXP#@= eW"x,DVE/lLc 6e1Zdb@jK/"dց^1dHPH"b$Mm7Ȏ tAmMbWVrqYs B`ACABAzmd#W\AY>lrc+772sK`3K T ޶dMP7U.Z$YeWyݐvsC! h3}cttw5bx|+} ,R3 Wė}ۗ85wݗؚZ>rEXs E~6e؂/x6"x&8xEu1KX9ԏ7/no48ofk؆osXw{؇OOb2؈0 9ׄt3σXW[tX8[9טΌ瘎#ո_!# 쐧#Y'YY:"3Y̒/P7YGY:SYxax_Ŕ cٖcyoS9j{Y5 ) ٙyw8i(䷚ٛY9 YwqBJיٝ92H癞3y|ꙟY㹟9 : Zڡ#Z'+ڢ/3ZYa5a!FKڤOSZW[ڥ_cZgkڦosZw{ڧZڨ]ڜzs'kZ:kڪzګz:ګz՚ڭߺ횪隬ZEZ ۣPۛ#';3[7;۳?C[GK۴OS[W[۵_c[gk۶os[w{ط[۸e[۹ۺ[ۻ{Ǜۼۊ[כ۽/[盾뛸۾[;\}; c{#/?{,<'}WNԡHO]\bֻ/@}Z9^b}փ]a ~ob.W=9*I]دc4zB +0;AAJ@-\շ 7.Uvx9p2N?!d ׾ ޾J`~ $"a+(>6s==`@8hXXpڗ8(AAk@a!*b "{N,ZAG2m.~288'q:)A-c2,(jcJŖ 4_XmzB&!;G֡('!>Aa'CTe*BT`NFsO`#umB@A'QF5<V BIs6@Q` _wO ZsQ0S2?'Bc?F)B,<f`2PAP(L!}چa"ܼ0TƮ]1FfZ][B9*i߼xJ<2%x/̙4gj{"S'!xuBEBq>t,eB< QACP_ 4t5֜ǃ?)C+֧b>6?bt jONe*/\ M͜;{ :ѤK>:լ[~ ;lƐ{ҟL"4KLyxhFh(Ŋ#Yt r[t8K"?V%||R" 2#/`VegZIX ڊqoq^ @@ D$4`4\!pR*<8C k4Gi&#i-}Y%J4D e4~@LYp0x%HMD Oe,ZkQ%ҤTK&""d|2J-Bč(0a8,["?yON𰂎:L7P#Մ t%2JXl@22Lc"qd?u_mecmW#/@C/ Y _?!Wj0"q8?ˌI&{is>[7+"Z+:^yR׀5 i#9б#iI54iH2X7|4[%yx"<Ộh#|*᣾'7^f@ e0HDS$*qL4 Kb'$  "E 1GXpd,#R49b8Q`,Ix!q|#@^D*r$ =$ዤ F.r"*M摖, '/SZ'_ XR5 )U $eYZr,1QG_*Ap G`FǬ5yL]ngzTd5t,و8/sľ>=D*l< Ѐ 4OxЄ& mC шJtB/ьfԢ7ft$-IOҔ>t9 ӘVZ?Ӝt3G':Ғ>4+]KczКt;?:}5lS9ժ3[]Wzβukm7:׼ ` {.d+{n hK{Ԯlk{vd2o8V1ˍs^7n; 7=l{s808 np #< oK|/k|?|$/Ke!&;EʇLz$ ! ,      &:("4"'##$V$*%%*)&)**,,.2I.4223:24J6<39>;;>A?ACsBHCCDQDGFFIIJGKKMzMRNNQROScPSSSUVVZYWWhX\Yb[[][b^^aa_aBcscce}69 nu,1 0G w0\fcJ?]>Rޖ6Yc-]=dt=?fd kx>\lռtœoq_01|ſb FPaՍ+%-w މ Hp@@HWx*?(ATˍHXAJ9yD B0,⇒٠( b1y F0\Ae A C 3pMT cy 'ab\ ?|F0vcN Fp,cE1`3G '4@)$#O?PDA8 6q]ӗYM5[zTe Qrb!, h]E p 2K51 HcB2 gT'/elv#PcD7|g1xW l%8v ^b͛cJFMgy ; lli;{38%?V\Tp*4kX+2F*5?4a5c 8P8 4, gpt*Ww+8P4J+8"`NdQ.;M)b,0 @uK79mS3h bܫ>V h׊cyo,Z0 02oE뵠 2u#F%6@cC\# >xOp#&.x7 cF |3Ljj"! iPF`$K$RWyŸh *g@jȚCp cWnJ@ g$b%vz^|m[6/x 1eY~6hQ5 C,+@xI:Wlٷ@kX!Y&apc$y]@#eBcWmL`y~ x|˹3۳rZ12L\՞jܳ*{87pխoXK؅` poʄ XN0$ k-*9ܠgX BNva2HB,u8&_jjbR݀!+\Mvp o ]= @t;?  @dq-7 fzj@x':O+jp8𱎎k$nԘ: ņe:K҇95[4@سEnϹWy . p,[0aLw0hv/)c]l:/gUuKƎpbs7bquuWh|N󣄴؄i {*ƇW@fbq4T t5Cdxenv3fc337)[kkX5eeFS1s%0J\e4_3':8.*8p %us)qo3nJ}ȑ8U+pyWH;W iWT5H54 /`U6I.ON ۰ Ϡ 1c PB`a Tb! h Wd 6/ T2@ El't]r#]}Cd`4/pUSG.iSW!@ H`aW1.CYu֗)n驞ĞK3P`nPA>bN?3f4_Dc;<rX>cs](-4C ڴ0 mDc WDPzL3u 3v4ʏ2;U[1MeLt WxUpQc'tMZ 25PsS3b9t:^/ 0Z03TE5# X$zVTTKcAǍ@Vzإx% +e B Se`W=iJ#X \a[ōrSaÍPU/N&m*YФe_6>KJ5T*PO~ W+gѢ- ɘps Pcbapv$ 8G /u.p S|Z+-;bֳ /;dv+1hKpƹ Kf K ; nkjgmAxfk8<?z@;S>;ڻ9;stqk89e9dvk*a<4tS3@Fs|;/ڄ" 2hd@ -HJLaLR=T]NM~M3]\^yq`]f}e-AhnAp]v}"-Ax~o՗Հ}؈,׊ؐؒ}٘ٿLaٚ٠~v!cQ4a! C)ڲ=.MڥB؀a/h.@Pd1/0 uF=y!όf`P.֐atb:I=mw1yT0_@f bApubc6=-mjfeluG <`:Unny? dc.T7>.Mmc 01 K 2Ĉ->?E?DR0`1tj ujF@p C4h@_'|CV@:WMX4.7#mPOb>d.f>h>VQJ\T:0$:vR 61Xn(1\PfQx7p_>;+|`.m3zz[)^Lar2` d ÂdLe^q0 c7x'rc?D 6 O~Ӥ*@`MUp~8mV gEIBE\v.$aqe>=n{30OMC85aU5>'z8?bnACoyPvP[X[CY @>O?@juP+@ |;:pʼn?aNqasނ!_n!oR|?ĿӸ؟tGX??ϻןܟA-$XA .dC%N(q1t4nG yUdK1eΤYM9ugˋK%qdQ'SdSQNZU," hWYŎ%[YiծŹ[$d[]yk-ܷ_[aĉ/0WH 3\e̙5#th䢓7&]i?;{ ԱeϦ]j!]moŝ۸Õ/g9PǥwD,#:ٵowŏ'_yկg{ϧ_}/Owp@ $@tALP B 3K PCCqD8쐵ITqE[KEkQEck{sq. 4RtI(7SrךJ,kJ*KQK03+.41Ts͟4ӣ/ٔsN:YrͤЬsO>TNvRO? 5N@s48uQ0em3!,%ҏSPk1N$4TTS%qTJԈX"晧,h?jUWY<+Bd_J`*ᅧ@ A`QׅnbU@^֟?VZ"s BOFp"v#OaAy㒔YeQ?Xe tWb|Dj2$fKd(eVC&CF`hYQWhe=&j|^$_)'f:ckgQj]Xdf9Egyh1_ 2qrZtbX[h!e!BB T yY'hg^PA6!RCJdhloici_ŸE~r#4f(!9dj,!ݛb`|st}#!\ 0,k +H 1JypAT:pr  D׳,^%0Ee' #0F\a*:XD B8 tC%xTP? "b /QnC0h!Pq%3N0sܬ{d?,0!3صhL LE@l+^P) [r'oa AɈC8"NH\(B!6"wKܜySE(Q 1F  D OFxF ޕ LnuAQ#Q8-:Ŷ8G1|a cP<(, g@/n$C9ry$嶑Nd8.w[$T0:2+*N@/\ $!a<$Cu il6m8MXmSMPx*`C1"ԛQ#N8A<B GсÊ4B,8Ot s@x$` 4 إӁo ?+z(M+'U] vU>XP^%WЂWCT ч@!@ x5pk,.H7{Y(r+d^}\^Ex`Uu 8 P ?h=s(ċ:Kya(xM1P]l;@ܵ;𺛃{XH%Js6+"+؆"B)A@BA-Y@H(P0š!҂`NBCd $h+Xm C8JN+@=CjBD!CEHgBD˻.C"`D@N{8EUĥ,Y ʣA|s:\̖haC7d1EC(g,F} l\A:[`:x꓿EKaÔ==ؘ/!8Hb!b 8}<ɻGFI8ZH;c !k:h+xx9h4axn` @4xAId h1 / H(؆m/ nȗ)Y5DǬ˳N 9HL`xL$K`6l̪/ ؆oB{?9FL:ZxIj84x?|B3<h9܄M, Tĕh= lNB,Ap4 p"T XɤLSpM\ZlFPdO Ɯ0OO|(P=PMP]PmP}PP P P P P PPP QQ- ]IiixQQQQQQQQQ R!R"-R#=R$MR%]R&mR'}|@Q ψ+PqhNR.G. S1S2-S3=S4MS5]S6mS7}S8S9S:S;SS?EV}@*+>6XTF],F]ITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYm;B u{@C8@VaVb-Vc=VdMVe]VfmVg}VhViVjVkVlVmVnVoVp e=^{U\ʇ^w}WxWyWzW{W|W}W~WW XX-X=XMX]XmX|sEtM`W@UXXX YY-Y=Y@{Y,ٌ8YYYYYUYuHQuU^}T}څ~] u]Z}0ZڂZmY@\mZO ڗLUыZc۶۸]D[]ap9Oy[-ۻ5}HͫE/9+X]m\Ǎz]A[]\X+P[8+D}/c`ɛ( #ڕ (mmp0^@ˁݿMZU=aE[Ea `'MdZ`߻p{^'5==ZUͥ+k؆P&hI>VH-8-3M(< Xa~ )F`]>`YՑeE=5|ޘ `y(z]1@&qsO+dly[#Ab9J8E#+Xg`A kͰ*ϻPEh.`qv#$^%>\m9;+ Xbu.A yXJ HP6Cpt+su`g'x *Hh^I:Sچ؀EuFD ] P{6`9j` x0-@PCn`(\$Lʭླྀ\Z FH nSpg02B&l5z-5D;C&Xyh_\&a (jIV`lA ݃Xm?m``D)D\k=м`!Mr#aAPh96`=ClkXQoooooe&pf_BE,Qfxs(a:؜?(shv+8Q9pXa,J!pN?6>?(PGtp1D4?hj8)qфAЄС @#uU,'pgQs`eB*GU*g(n[C䆣&o![~Z]IÇgP/u`M>XPq p.p`(>Qhh w `)lG0aǑi!Z@HDq4p9_r>\ܷKTo; 0 x #N2{eЃ igң8q<pHzp9rCGCCN5bJܺڎ}҃9اmpEPap @vûyPrr /y+>'zr@IJ$a;wa4Y3a&a!b H!Ƥ27Ogr 8KЅ`lx fܓ?ה^mytHK`D|*pWPSHz8 (b8myO#gw84x|'|dj G;y] ox P 7,L4"e@^M& pş C<"uS ŒpضB DBcm"C5%I"PMc%ͫpN#ҤJ2m)ԨRRj*֬Zrݺm$Hm)>~-܌ͫk.޼z΋^tĨ>T-rh^rAD  (=1`]hQ1 xB^wG-p5O9ēi夬P9B@C Ahܟlz?)~NO-2A1X4f7 l 9Lq nh1 Ћ?,s?TN\5x#9#=.%JC@!?}ME`QJ9%_fbLN-u- 5֌2JBO2M/r(XCO/Mc +21D3 &DI42 +Cg/p 9tH'4bG *D(XcN0j#i-I#i)F(zh"г(&3筈 X)=L`SLJ-(Yh|##N/ F H&Id#UrqGJq,SL"ēe$3iM2<&R|H_&)$'{JeEK$OPs&8MN2r߬-׈KKG?)yҳ'>}'@*Ё=(BЅ2}(D#O{#=t>pMi' Ї@ࡤ&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡ,C@-GQF#VUr^V*ֱf=+ZӪֵn}+\չҵv+^׽~+`++Yʇ~<5l ~P,f3r,hC+ђ=-jSղ}-lc+ҖٸGcNFe'p+=.r2}.t+Rֽ.vrosێ.zӫ}/|+җy;^Mՙ',xF~0#, U S0CaCu~py.&p9MhZv5sS+ ,!+e9zbiX)GprcJ0nneT^-2;dV&9K^p2o*w݌wan9We6NSm3!fUٖgR2hm_;zpa,.#1]?CS9me:S224] 20@Ў^ =CC0N5DQEPBpI1>BxԜGrN"c}G,j"Q.)WԴ^}4a@a M'kAZJFJuԍK$<#zxAU+Wݯ/p y0=,dRS|C;P 71C]==:iK4.]_آqB?|S Xp)~pn0QAczA .y2r oW3Q=었?1Kx!ED/P: wp[d+~G]0E"liB},*3{ᆞ`` s;EbvbxDTvl.! S#-D~HL;o4x/h5/$%hCa8F҅38=4d/2B.\]խem`F2 \ "ptC р |?\A  ܀CC@ *D | 0 ?>C@,A>8d@#(C%5=A, B:#7̀#Sā&= P=4AC-.\"P,@1dA#AD "4;C@ēAo-@ A:C?TAܖ/@14Aqrā.C*\TAbAd0C?A78 > x0 J  > VI1-e(@?B Ɛ] (*& @^ P?lC !D@D\A > Y( UZ==`;B4C?`C?CA<A@3PT=0̚9CUC+ܼqA7C;;(l&/.9A؃;r&f;=$"Tf)(A6&"E6 ;A3^C˝A;C+B*@1*@8#V?k,@84C'\.t*tB1\=A?.efgAvCB5C(),*ԀCeC=P[\?d))@*¼iC'tB(=C+B%A8C`/C0= B]R靂i;,#HfBtBa%(]E.Av dI'2bRLS ` <  ^ B@?(C.J]B2A @DP 6 eF X̄\7A)j;C%Db flA:/j*bAib2;ܜ'yDɂtk"fB<#1.%$-l,.(=A*0#B4].cC..A=LJf?A'\C?%=_\;Vd7Λ;A(dCej+aX_E6? ĀA  :\(0+Bp:H<% PBD ?0,B 0BA<\%B ,=Td=B='%/8;~B,i'#(ʃ>{rd;x-l;EH6Cރ֊i 4/@C̦fbLC栺ܼ棞f?/A#C:Lm"¯,Ԁ*<0B 8C"AAD_Adp;L/2]%BD?R/5;<",,;u}daCd7C;L['Zh#' AXd"+>C>ãfA$vӵdR;d HxI/IO J߅JS5HF@RlTwF67>t3RɱeSAyC j?ˊC6Ɠ80 ܼfEe 0Qr\C:d7Dݱ惏xQZ;kÃxɅ;-<ƟS8pSz;A(C:`%x8Fxy.]wya$9"B1 u[žyzr/<ZxwEy+>C. hZWi9g+3\_zd::W4z=~E[W$: ằDž?;#:z_;g{T$-n5;[d+mÐԈ~kƸٴS{Y{Sl%"{V*T뮂Z0聣N*<2тb4G"4W@$/1\"0UDSB9R?* 48<"|Y_3;qycRtC.BI"SFE< B$\3.xBTAC$@! S(RèU"@@#(V("3'X"½3+4|(AX I֗? \*+?"0A,\4‘l\OG'.@F\08B#C6(!0 0B,ԃ?,5[FЃ(A<(:(ǜ+lDwh00Z547x*U3hEzCg8p8ګW ƣx3\$=Ϡ2 07͓FU$\ nf0϶#OژK*Y5>`CCR3^{fXqt?})9Duc1n5ߜƈ4بU}{n3Eٳy"Fla9xpÉ7~yr˙n:pW~{v۹Cľx:җ`B4Ya sO0Z("1uA<72IHs zJkf852 T*,Qt.~t*>H?dPHG;,PHnCR :h!!B p|jKB-Nh"zI,&\#!gbb)p\)1_П1ѡk0AB+Oc6F<`1࣪#Bg2 +Т҈?c  B ,`sJ, m]:3 p${zX"($ _Y1W1,c,ĸB.+|a01ʓ # $ > ]4%놦8]]X`G^aqDUL-68FEꄉ'JOOA|C?=,9?2i\,RcMB1bTLADqm(^Hb ܨuW!@ a0y01ujOƚpE نS=IhYBhayl2>,92e$m* a7A`A\XJE#3״[^qZ߶tZScn">S> `a̓ S1pK1 1\ȑ+Sm܃6Zy86SuCG޽k۷-o㘎7YƊ8P=q<;։GpwB9"Б&0;*7`{pxdPwh9lpR ǏK0NJ/  M ah jxc  Mp0 wPNN ^@<^ 90CixB8=8٨3Qx7 ^b4J b ;q q!` h ,Q"Zqe6Npi88 xN@V18091`0h1b8JFeJhYZАc @8TQNY_}#=8c&&)L<"&-bcb2tV7B^;ލOb0Ar!AZ VV(W 8A<8^@_C82CVdAFc0a@F>B]"V Ag`L "Bb1hcC!.{r @M,+3B48 cT'-+c++ !~FT N!3 rď,4'c cl./ v 4Jjj*"dn$:S=_7L+[15 0-о,b'\֡R| R 6r@#,llIF+`aJiG!W !.{8) %%Bk֓F TQq83s,1G7S?I/!`@zƂBx#`cb!; ĔC a2 ! QDP5F@>K3QH!C" +e7DaJk1>±6Uja@FVGa< >V RU xQY3GGN`&VQ)U[[}O5ddv^ >+ "Df"y:$bF/mhM 7e2hDckK0dAlesIpZ΍cnL ބcJ"0AUm/8 V:T *86XnRwPde0vQsHBB@nWvu'u!1mAvs8nH8PW+Uxc –z|rxPR5||W~gN o`}{]{O xq~XMz% \}؁8 X[7o_7i )d͂E7cSX##/KXI#sXw{؇X0V.OaQ}WؐVFh؊ۯ}%Y7påcָ;X8;XRx;؋#Y;Y/#Ò3ٓ?Y6 OE)Sٕ_{akyZVyZٖwٖqtٕ}YّYٙyx9J WǙٜyx1Y癞ٞ)Yٟy}Y ڠzZ#Z'+ڢ/3Z7;ڣ?:EA6ٍARZW[ڥ_cZgkڦosZw{ڧZڨZiZ:kkZzū:ǚڬzٚ:ZZњzﺮ庫ZZ ۮ۰#[#{'۲/۲3[%?C[GK۴OS[W[۵_c[gk۶os[w{۷ێ۸[й[[ǛA[כ[盓I[ۿ\[ |y#+ܶ!y3;n=Kܴ [_c\gki|ŹI$;MRʼnȋȏ|Db#cɟʣ\ʧʫʝȷ?;1xخ,nFzۼn`#c5I\\a"y<̱)~N<]'&!ѳ I+C/=ӷn =E]W]N::>o3 uԵN֭ q(f]|֡#Ly9=Տ\>R((P ÜγTb_]14oY,@zp'ث'B.AP\][NV.c6-"!4}XmX Vtceڅ5ACa 4<^-N ֡@^ "&A*W.(VA b=֬-Y"ϒ7d1`l0XI/AR4(!aA bba~v;1T@hF.!J@Fzd:FCxYGO q%_n(gh`,1 R_5!Ii 61uH5@JC8;#^9zD _.!.ڃ+n&/ʼn?.D p'Ly_>( ]b0t bs:լ[~ ;ٴk۾;wiccuo%MFagUcJ`î r"L2p4FWDBC,&(2 N\9UGLқ\*Qg  981 {% ^ YQD8x8r Ʊx6B 1 "_"M dɖ_yo*<+H|z1] c F\"9*:4ЀqN%lIvA%5%_ *0 JqN䥩l&-` (2\r`۸?ͳJj1Us,Uϸ9nm::at<;4" ipfF7ߵxzr2 6m/8BaN$V)#(1`(Jq- NnfEOKY+ތ;]t"lX4q?B&ƌT;{L @/A 9憎yl# I1r5D%HH ]r9Q$n&Prě@yJrrXyIO-oK4/J 2 -sd*s M[&Yc2s6Xst I4Ȕsܥ7 xBr&$;mU|3Xtj(<ЄЊ Q`E/ьjt7G? RvZ :Ҕt,mK_ Ә5ҦBoӜ~  Ԡ uD-QԡpK*njSJuT(qF[W Vڰ3z4(Yϊִr]U[ ׸ut]׼u|_ v-a*vmc Jve/jvg? Њv-iOԪvmk_ vmo]5mNw q"w̝Y 6Rҭu Hjw$.w ^\y7-km{iw|.}_?7L7.+x n Kx/ kx? x$.Ox,n_ 8Z9ޱ ٫AuZ#+^'KMZ+kYQ޲G/az4+jns8yt:{5_9.d+{n hK{Ԯlk{ p{&6ols81wûm;'7K81 # _ C</k|?|$/O|,oUr%&BE̕Lz% ! ,     < 'O$(!4!'##$%%*)&*^'2+*,--1=05324I6<:7;39>;;>AyAL?BCCCDSDGFFIKKLULOwLTNNQbQVSSTVVYYWWjW]xYaYb\[\\f^^ba_bBcrccdAd{KfsggkfhjUjrjjkElKl|LnmnqpnqSp|ppn|qsrwr{JsZs}sstStwvyKwZwWxwyvwy{zz|zd{V|}c~~~~Z]cllodte|ktlsmpgux`jlo̠ՠ}è̪IJƳǴúȻӻ̚ӾϜڽİſɱӻϣҰؼ߳\@*\ȰÇ#JHŋ3jȱǏ CIɓ(K^+pb4G8sɳϟ@ JѣH*]ʴӧPJJիXj݊?0/BFV}aY*`ۆ3h9S6ު9~q9o;cCS+ި[lYYGdol6e;b-kV۶F\6_fɐ2ޭGοg!O9n>p7ڦY3dQ,K,A H7mK?;6 o5@q>P@A UH(`GP1Y"P,7;B +A jr$ z ZF8"c! Sd @rpF, .,t@)bB%V!U;\XA $LRa( Df' +xxr , ` Em V(40zM,v@kʇ $%GBցz}o0 J)L`~8feDYKf*@pE%4 ̀:Uӛoj%@k[fΈ51G .k (ᾲX^J „&>HSX03-x$X4%05eEY0"(_-z ΀akز YAdUq. G-0N4^2 @81RyͣY6ΟZ+#2@@V8`,| @ $ 3hVYr W .`wmTk"A{cM, @(TCS0w$@p4]Q :0}ԀL9ؕ%C:v9%8&_eg;Cm[1QeC|eqFhhH*ƪvE͢lsF:*x&(yɀ<2(~lY8Cp kX4WkgDWsa8b s9NjhV$+L /J߲(hd~'-Sk薮`}eyɲAR Y6:$K"]\Q /t{̂i)ρ){z*hx2Zw]0[[S @fLh_bXM0HbY궧G,-"M1ֵEfa]Yr&6tzݪj Ŭ{Z]ڗfy7 ½ivʔj!;6gqqMO2l7xti.Z>gq--WX80oEjù(,i=r}k{[;HH` 6Su/ M,UB!dvy- Ȁ6Y,7('2MS*hmB[D4)%$=8E N.Pf V/zv"~)*yiE N@B;nǧT_Vq v]|Wns|o\/%L$ r7n#8|!uVM#;N4G WM-Y[F2.7ӀPV,TUxPV8Lä5=!7VUPVCzw'_T-0N?Sb8M0sN@%wV0d>Ay ;1J@. tzo@/6J]EHDm{@Z)hbaOJ 5m # K4u bg`TjI,#52V(pF8.ZzQlzh?CE @wd6j P9ƣi u/_/` `+ и|.pe aqk{[# u{S$`;jer0kߒ p,k8|z.6=9KroѫQÌrd8$8|,'>#:Bwċ:8L#Hul-b*7՗a: :< <;e}+} 2.;b"" ` 0pf}~ܘ;"h3N@STZ,J ;,"eTwCĹ1+^!M3oa0 @l!aL"tdQQQNmz~ǀȂ<Ȅ\Ȇ\I|ȊȌȣ·2ɒ<ɔ\ɖ|ɘɚɜɞɠʢ<ʤ\ʦ|ʨʪʬʮʰ˲ 2˶|˸ʻɽɿ|l\L<,ܶiKBEث<\|yG<\| -<]} pی =]}" "=t$*,.&M (4]6}81:@B=DJL|QT]V}L ՟ǝX`bZ Rcjlegr=t]v|~Mxzׄ]؆mׁ}،؎mՉm\Sؖ}٘ӑٞ٠ қڦ}ڨ}УڮڰΫ m^hۺs=ڀۼ=ھ]qs=g2` c5x]MM0 D- Q0 2P8Yd 59v}ATܕ]!R vђ `lS^gK ps1%:t~pLq]V8hMf2H:Ɵھ8RJ+iT+ ^Xv3Ç~׍ -4f[bi B%gQ`D^'1Okˤ]qz(YS^(S/9[_~FT @"$_c*`e0N3 ~V@ eO0ZEDڅ 6L @4jRђ5 ]ES@Vg!FԐZ5S4Z4+t +ŞYorp vVZH] P4CE pdd!蠛SǀeS?eaj|o/=ڿ-|??= zn_loz񄕋WA .ÅWE5nG!E$YI)UdK1eΤYM"ӧA?JQI.eSQNMSՅAWaŎ%[ّVpDqΥ[]yUeVUz&\aĉ3{%O\ei60̡E&]TƜ}>kرeϦ/j}oƝ3d•/g9Luٵ+. uַ'_< g({M}h}SH" 4@MPKA#/_xbлr*,;CCqDK4DSTqE[tEcqFkFsqG{G5_$4H$[pքII(n3&#PJ,24*T-sL10TsM62LlsN:LM8߲sO> )2,(T%-8`.ǒ8hW'䆙Ģ_~adAaPh?' v_ڭHFYT8`lnF&\EmpFRyE.'xdYf+ٱD)gx_(J~wA$*vPa?v!$U_E$(p(zd9"(T(2j,T( ka! a~R(~ea|Pp׹H `BA! ~ BɌN(6CIƺ 00J }@Y(b 9H?nxkA#~qd%0f aD[HJqg21QIC(('+R Z &KF0\MUBaBB@gi$(J':{;)BFfRv$!Ëbv5(yO1"n$;Z$%g=hc%?u/H sH MC ;{Ing|T(FI&QY<(]R^ ň`Ht* ؄i?Qd&8VQz?pe@jjةy Qs#5Xy׈ᐖv a௏ӡ r/ʲlA(kE-*>w і_Qj;~0_hHfҁ2KʱE{0PrSH4RgQ:IMUEKuA'kθֻDk^[}lg;N>ɟl>)b0ƅK dyv$m=;h@t A\nOYVj pn w[YgVR[oF\G*R9qx#PM@w[gxm _׷$d7Dй(@dNd]"nt>3~oh`m4ngC]#p#P@z͑7-*0v+.I9Xo`5$*XEPd> Y$ 0j= nP߈%6."cSEx B9{x%AK@o2`bH;0.20@Y@Ӂ~%Qa@AiH*(e WG!>  B? {'(#=u+k(x`83{ *lZ2/@l2y 7#8P9 A@DxȂ'#, <Ü:7( k;B), c!/m1DCD 5p7r*耋h/A?At D:KDVDEl3=:_80? K;:A?/ %ap<'9Nc=kEkt Y?@`b9~8h`P 2Ȁ$F4WԔPȀ{ T8 <=۳B0D)0ó8+HĉX'DPhsLI,ԕl47HI$ oD2ztHXţyɔ9`P<7J\C(>qTJ-PQQQQ R!R"-R#=R$MR%]R&mR'}R(R)R*R+R,-9w|@@8S4EAXS6mS7MS8S9S:S;SS?S@ TATB-TC=TDMTE]TFMT2{`MM 1%S~TMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\US@hH͇IT1|Ne]VfmVg}VhViVjVk}9`a1K5VdՈk-Ws=WtMWu]WvmWwlnEJ8V2uӤ|@V`3ƎW@}~Hջ/EH+̈́EX ݈}ъ NjmX©{-V݈`H8Nxsٓ଍0(ـׇŕU͐Xz80)Y% yj؁JVؓơ֕WՈFD`͆DFٛ  q_1PFZ Z(3A8`xX ȸSЭ0@(C 5lPӓthk }x0Cfh h h d^AZHXGv*$7Mh xPІL ")>Z.7̂k^ˀ}3٬u `ڃߋj< #9@r#EYlC,r0XP'pgXXtrࣃiWhƊjbFȆ`x0<y3r8paXv)'nC?Py9"PVhhiB؂kj4lllmlp\1_P)F x pfrifmޙ[(kֆFxI g {^  %V^ +Ơ0`Sj?ZB((Lhp"  ˂OT 8)W@# :(^$r Em' oRADhN ޝ9V;~hIZ5;nYFpF7H0EmD> <DirPt+ *Phh X+$Q Xx?)Ph؀sPHhp&A#B X98 z^Sg0ZcYno:1s>plɀ-Zc8]P0;8 FxTfʀɆjƈVw8pvΈoL mikus^o n/Xw0P f3V"[dvgvLs @勴 H{>w CToڛm‰uȂ\%O#y`VaX34vT~~s8F2 WT0 w目 Qt<؈it9i8@򌰅FXld@l Uoف ؈#.%wD'Tm&h =?)oޙs#_tXH{Z:_7G\he zŌqny؆!!p`yH*y@4q hPy~(xfT<3yFdFE#DOՃiPhHA޸,)0P̔#bDy931 Bhx*I@̟!IOy:Mɔ"9-M"Feתsx$`,T(|c6ૈyR-ZӲF%/f I~ڤK]: 훫R%Z?~(lG2v x 315* 1L2ٽ\ 'aنR"!/L2!12!Wb qŔ`,q2d<|ʌ37r.%\7ݎGs5 5'qs4S x```Yi6mߛh ڿ0\gsN;D8Ke8C?8>\ގ{^y8=xS~ZঁG.UT37;/3Vɷ7a{#l?}~OX+׿E?y<`W<|{i7 ^D2?ڏ} ` 6dy*DaF &F6ao8m 0DX(qkbgE/)Pn \Si Oo?я1f<#Ө5n|#(9ұv#=~# )Ab$=+^"ܢ$(!&3}q$(C)Q<%*SU2tx%,c)K:%.s]򲗾%0)a<&2e2s$ 0~4/$}#8 Nq<':өu|'<)yҳ'>|3g> { t,AIpvR& AmF3эr(HC*ґ&=)JSҕ.})Lc*әҴ6)NQzBԑYh(*4mX=jz9h^!>U={j?wپKڸbHō|胪`] 5FuQ/APbO XY"vC4/[`v7|~Ӏ."@3~<@.a B8;l|w0Н>~8 š!76)X  C9>4al+Nj `l4" \aZ>todEhf ?pmLUvE\ax||OL ~Z"u::@mࠅ~@؈x8zy6lKd#JG %qe! g,ax2tdr;er` \D$7ڄAK[$ FG:t! FG&\`#T'7fAT"67NMŅa }(C ]E2O@C9Ff!gl֝5zSOS$tqp3~31l0)ġK۶^u{̎da hF%?jP%@{ p@5@! %` T%@>@+P  L@ C@<84A5A`=TB,5T ,@lA+ 8 ٪+'Q:LA@A?h0| lAHA1, >A@}4 ,",:`AZ?40 t>N +܀IQ|a.C+@\ !l `9>x$A4A Z> p^kEX"@8T(aaB B ^ XBD A C hFae Y XȀ9;C*?A8M6LOІ:. >tn(6 b+AB`6 >B&B&> C+ +*"m4+2$0+|'B? 0d'm'+(Eܥ7 h,B'@+ʱ&l'*C+B'94CyL"؀"%>VB10N+$*C@[=&P>h "A*+z6Zflt|&kfD .@ C>( ?8C  pF0` &ADĦ&@A Ȁei `BE?ātj` mAC2$A'>>C%Ef>De9.>A:k*~27,(A:l>zLA6:̨>̂HA?`ALCރB%86$C 2A|²A`B=$A&yC͆)7v)>>C|6@1<>i0Wad )QI&Z.g?L/ÐV*,ƚamye?8)xi.L@%4en!Q"B-NƎ(4@j  ,H*5n*ܒjs @6B $((dCxVDV>< f@2n3`CJ'5B1v.؀$|*zC,U9Bk+@&x&@A/D$2]);.AB1f&C+'$ 진Ҁ"X5|B9,7de3΂ AUl Baj9| (o0nHnUbB2A"C@n*vZ1X03CO>`p 4DԀB6\f X?߹A9 h? '= eCf =_l0"d?\CA>A$ÁʎAE#>d,L P.Aj'Ԙ2A2څ1B4Alg>B(:"+0:q u% >Hn6TCRrA*BF?؁$Ar.8"InA@,@/^3Wv>tC7Pdq+!:CI~u7(v;4wU7DAAr9`7wEq>[B|w9(z5m`s׃>\Cw'qd%Pi>lATex`vhpix6`e?1() Cg>T#,<g;#[M3k۶ jG7bbSqW;) U:Td…! KTVn)[;29aCٹ{IΚcS Ɉ:cIΟCR':G_ɢNoѣOo:/9xa-eÓ7F96CGF0\5Bg#W"|ifHC0C޳?[,dANjP\:C*B5C6BA*0e 5$YC(;@39B*Cé?C,GD0/{dùeo8C6;'T=y8A"AQe:84ї,},Ă[ 0hF9<=.HC: XD+F6)e C<@C7_&4<)4~Ý5D|Q+',32~JX*YUWE2_9Kxp8d Wiꏿld,P1ڛ7'6Ib_ 9a\*RΜKF0a4Ɯzo^{p` 6<aŋ +rdɓ)W|s #Ixu%2 MDnKE֪ӸbxiD-Fd IdD\˓vE7EtHΒ'DTO&wdI>r? &# h) X)2i$Net@m$\2@cFȯ_`J2|{ÕQ? &P 7,I$ r.7lJ+<W:Fux`*Y|gV3X8 l倇"g >S(L'4WTAMbMp`h H65eXo>xEjkFA'h!TEb59!K-oAC}( 5ً"[{ &N~F )a-$Fd#/4EliDƉ0Pt xKaAr*.1^U>lh ]F7j@#l)Al91{2i eC& MQa7E`N Pp IPDd-+?(qqxI␎Zš3#&&tsÐ'G r .!, '4>>ϵ@EEĿQ#Ԑ9$7poIkP:\1 5Ke30шث57K$x<#m9!|@_x.8i Ju, zǴȮ@ 8F0/ E6ak9 O,8c? h +ңC0 BMvq4RrI$ #´JG& 4 IFp5 VSWp}zYiEnyI!Է"Ak mn  .R-?щ`O@#7[m@¡?&qUbԧxwgdoP_hx7yMt QAK|{\JN881jQ=ܳ\"@)Fv G"|$%Hf$ #$nC@ _S)K&oPYԈؿnuVaPm5h-@qKrϓ9n_ѢW d4bÔ1LMmJe'Azҍn^$-)JE3OFiHl6ڕ?=U+F%l5Xg[ڷ}ƵOʼC|cw=>*w/"V]:ٽd-lZf& P F5^W^ mGw3_-o-p{;վLp?[E7r'q!/팇zYr+w}}rPg7==ugCzs}_`O{1DW1ugv}Huنuu1v O\WxW\xxyxwxyzmzWy7yS{7wz7|w||7{|w}}7}x/v.y5wwzwcN ؀X؁ϮfT&+pCk;X4H׃OlEr5ÄScV8TZmeshTlux83|X}1È؉82؊N-޲Ho8D4͘8n؍瘎1KXPV~Y)׏s㎉+ّy 8j+Y(78 |#pCy1HYW[ٕ_C4osYw{YǗٖ٘YٙoyYYٛYǙٜ9"]8SٝY癞ٞYٟZ ڠZڡZg+&2Z7;3CG7ڤOZGE9:UO:IzCAK[Zsڥw=yڧQz[{azeizئΪz YڪZǚڬZךڭZ皮ڮZگ[ ذ[۱['+۲/;o"7;۳?[5GK۴OۏEW[۵_gk۶K[o[w{s۷[_[d[3۹ۺ#'ڪ-2"ﴷۻ[wd+Z[盾۾ۑ[{k m{ px,X>4--*/3\7;x\Gq.eLPIcAp}h C#Ce6=0o]kE !ش!l´X2}D""\?0eEckɽ/<`A=]t\ xD̍@GxBZCQN!#AzZ."-B8AT0}aL#0JKRE01RapJLpXu{I,AE:TNDB:GOp@LP&=Օu<Λ-Hgߓ^&P1RAJwo`,lL1ߤkqd@" "VYWpO={xe HfPoBdF3 H s|( bOcAbãrb ,oGx 6tv0DYΙ$aIXYpc9K'1&Agkڼ3Ν<{ 4СD=4ҥL:}0s/%LYJ4רDHJz(T$c`wx'3f60J_?*L 2,Sn sȈ0KӦWCE6q:a-ƟՁ%&\b퉖 %dp hPү|%҄=ܻ{>HR"?Upk#V(*Q?d]x_~WA@H*pX ; ;P_ia1g!!ix *H$ "bݖn:՛bb 4PdJ2P6(ב%LXu]eZne^~iTVAq]9d1? YG‰%.( zyIف{b PA_ 2Wg@b]%$"GPZdPcn$%9' @)*5VkkjYY !A3AH lf#7B d@Q`r z>5 qi핀AYtVdUC!A F(P hӹ?J[,J#K05rI 3d,_r*̲Pb P@%b1S{9ӳ;W# pHAK%Y*d~r55b dUA -,JF X"DQb夒R:ު-/x?>ގ8?O9ffސj# e[28n.dP1A孿pMQ>.S<ܝ/|?UM?M;RA ]Ք~#ϝЯ~Om{xv pa^P&)~k8/h@pK w > vp6إpih?B,D4 D,B`u:| (Jq C Q"t$:T,(@ud kYϊt5lmkNָr+Zj׼u|_ v-a*vmc Jve/jvg? Њv-iӪ֝]kvmYꖘݭoQ q)*]s{Jѝu Xj~ݮwyϋwm{ w}w x.{ n0Cp+lc807"/K*^q}[81kx< yD.$+yLn (KyT,;$Z~-/bsilѢ9͡]3?7w6r,;zse:Б4kC+zьn H:KzҔ/LkzӜ? PzFN;;=A>???BxAICCDNEFWEKFFIKKMyLSNNQQNSSSU\TVVWZYWYWXUYbfZ_[[]^^bx`gBbsbjcceAezgfkOhrfhkCjjjlEk|KkTm}mnqqnoqorKrrrt{rusxs{JtSt|TuvvyUwZwwyzyzz|f{]|S}}~~Z~[jbodmeijdlr{wXplafjw̠Ԡm}ěèͫdzdz촽ҝҺǻԜʥǭýӽ¿ɟ۱ɱӮݾТҲX@*\ȰÇ#JHŋ3jȱǏ CIɓ(KZxk]8t0ϝ)&8sɳϟ@ JѣH*]ʴӧPJJիXjݚXOٳfɪ]˶۷pʝKݻx˷߿ LÈ+^XxEG˘1C̹3̠%{9fңMFYe֞][Z6eڜm]6޲O[hƅ'/[ysđ?rgڹ̑Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vEdibl^n)qIx橥zI 蠄&'"裐FjVjR馜vJ*Jꩨ*ꪩ*jz ?kj!:XU&RF =+¤6d}HM 0 (Dhî@@ܻ,:AlB,Z0j0+@J  1!7? /2eG<3 ƳH3#|4Lw#,P 3l6[?耰/\[XEaT ^lZ;4]/ZWsL361_e]-t0 D6V .cs 9.{κIJdpcnEr=|GZ ;D (C zL7a @d8ȀA / ЯBؠ?:xdL ?r1$l~)<P&îB BúБ '#0 1ta ^0 V, CM# hVov1Kp.u%f.wG,a bF,K [.Yf&^H c@2$gR '/lebh`F /00&.Yxs yN\=K9O}码h<` ``&ǜV'40&5NkdIN:-xd8 jiK*6@<~ !~ Sg@ű@ ^ajb,xAP@Xn`bƵZ9%UԘLTp,dkǨNJ;fV/@4gs m 0bHerQP\t$4$`0,86~7 bBp'^9>`ӛn#1Xf_Nج nbF6G>XĴx7a`Y‡ 7`L@> 惥*@V9b T*ܺ#.Ӗ4P7:xx3oB[].?{>GתNda|Jwƭ`ä[3SlA`۽"O;Zw 9mbQd:ץ ڂInqS;gbp9bFZMu >)`%0N}1-?uuϋ~;bFN39`\&.iM 4F3{o5ZLqյ nIf&\Jkg;?^)M.b٩Lx`rsL)GǕ.5».bڮ  ۔>J9{6H8}3^K Gw7Hyy1`n C2 BQi2,fzrzpt.b|=3SS#|;pTo@|`/%7M7c}<sT_~xB~ar~lܳk4.FqPiz@YgyԀ=G33xhS:\U473hK3H{4s.g(^,8i.TloEáG7X|cv=Xi@4(lߗf5be"}A1U>\"'<#q/r`9Nw6 e HKThk3 EiB7N<T~G3cb r6`#`~h.X|/f4U=9fV+7kQHR@e*j&wrSh7pA=z&3tȀۈ>}^Gfslg0?'GxWeP:xP9#wu.Xucf^a]}ĐHszt@phQ1`j T3w\=׀863U>/wg k'a Ybq.w)8_7klCmbc#6|)l#԰u4H3F5pgأ]di=X+t)+x g aR0RF`4 0\|AON ڠ Р 4N5/ b՜W$ p h.YȞ0oMflb` gExОDh'] I\>H\4 0 605`t> c#0 Gd[F|? cɣY}ZPu3Hf: f1]~bOP#9U357PfDTM #wNg.o%0fh~`pFm<Q';%>W_Uzt tR1%\ CAh;;țYq|qeUW8Kj}ʩ/ @Z/Rh%5# X$zVR#Sg(:(`PEVzGRR@3 *Q7HW.jc7J хIp\ ?ăY`NI U[Ru 3 [)fZT 8;U(E"8h.oʤh³-b6];s =R#&={ < p p j bZ26c3ðb W/l {F-Ei 6/? 5 Ve2k wK[Q+l~>ճb9= x8=# <%^鳺;I;˺k+쁊$sbt;~13d'QF' KQ|>5u ~ "g;-؄7RNs@6{!"vm.r z/\ruk 2F e |"N;1!,02<4\6|8l}<>ç,BN6P? 7|sn SwFQnT۵ x頮>kan Bs⥷]I騣1}h`> c7ĵ7}l6;s#bx6{5Fc.;S(p`M77s0 P<gBE\ P@0-5<rk<#\=B0O΅`۽C5YMW#'*k *Xה6WZusP[.`P;/o؊%SPYB \@R/0 @jE;s`+{xTopξLb?OCE ב?oaڤoNj/A_>H_ԻЏ?/l\?!nã?_=oO$XA .dC%NXE5nG!E$qްy)UdK1Sn:9uOA%ZQI.eSQNZUYn-ҟLaŲDYiծe[qΥ[aͱyi_&\aeobȑ%O\e7qfСE&]郛;; kرeϦ]jֹU~oŭ;7ɕ/gܹW#^uGΙvŏ'{w˯g=_}K?̵TpA*@kpB +PYCC06PDST>;31/ WqFkF{Q4H$! !hѯa,c$A LID |^ A h̲c` Pϴ܋|!RI >CLa.9tLPPCHP̃hc '`hFJxRY8RXrנP.^/`dYV]wÓgI=$K~ENe`hB IF\݁f[F6tX87ү@ѦtsѣUPBTaQ; R2&T aUTp!FAt!f@SHe P`Y(@.t"%Ab$Sj@M]ӆ$m ׁIF!MQ!HAc6Ńa4A7M^ytCk*`M2Trr/RW󁮠A+ȆII0B &S:߯%!z!~'g2 `wzK@A CK  B]A:%%+ђ6GօC 4_c s@`̂;B0APDЀ|Z|ƿn&}@)}PDxn Sp!H0u1&84Ht)p 0*Pdd@@р ^ 1 D+3kn[Cmdgq"At3 ЁlO ^dH?hUT` ^f!"Á|z(R:]#w0G?6I3jd=HD,lR9WL1(<`xRy9 P6حhp@\ AP@RX #AP8 @|`?!L VGk#KA2 žSgĤϕLr  x ႗FGu0a K50h@<X#PE.fQ5a@T$ 4- 0B*F0-:0(WcNhu]]T7#Ԋ `f}kX'/t^vw[ӆHi8a^@nw `(}X1؎2p;`[V7+2&8=py wua`l{qSڹ3xA ph56N\J @xA~KC4! U*<8`5ΝNh["Bx7AGDRxziuO7 + `Np@ ^]B( / ah#fl8dHLx؃D &ԸF4 K ԫ@ޡ +AcIA]߆\aV?H*0-`w^@$L# E  0} +=qC?|+*0 XaFp 0M@!; `pkقP\B88P8Iᫀ A RA!0n99$ Aԕʫ=pS)A:d0?C!`(|?IPB&|BB;a3ۻy{Cp d7T8$VA;DB=c?@FK@(A:?/h@ap{a`  X3KF|TOl;m̗c?8F$!nؔyW&zp1Gef\_(G°|a{A?h̒ @?KԈTɚ̒ĨLKhʁ `˹ijG x+}8MLM\MlM|M،MٜMڬMۼMMMMM NN,NS?S@ TATB-TC=TDMT9D=|XQ~|1-S~TMTNTOTP UQUR-US=UTMUU]UVmUW}UXUYUZU[U\US?TI /S>|?SLVe]VfmVg}VhViVjV@H`Sck-Ws=WtMWu]WvmWwMM~mVtp݇M~ }yaIWzWumցݹT2}8ز̈́͌ X5428X؆WX,؉YXHV F B[I$֐Zb+8.F(YOYY$)yЁAؕ0؄`+P!5+K0!_ȯFڜZ'Hڎ*ױ}YE+PU+ *ъY\<?R=pR Zyp{4\E\e=k [5gAPp]xT KJ-0M s4}]xgZ>|҇݅]h@8+d HTX bo`BhCtQPgc( _ bۯ2tHXy(zMPSpK0s +Ё$ȓWPr)`+Xh!@`![.E24:d` Zu *uEY ۴YmܦEڦm n0d \0 @ yhG p7`@@-;6 XH|Qr? 8G?X8$< UFL_ FŀK6h¬99gx"3PHw JghtPy 8h9cxWMyN8lj^FXs0?Mohfjp)x.yXeUtsc^ŀ| s3t0 O2)59) Tp Xtk2ЇsH5 o3=Κu\Xw b/v3W$fchXiG혍`^p7P?'"mWuQ=a (^ K_ j(ܰa}jaj @Ğ$ЭUpx DhH^@MAFe  xThz,1ЇyПu {vhy-F(s7 ^' *ze\(}Gz؆!`zH)z(4ss\P@!?0 Ä4x?) $\A0!Q&TՀB I2)23„[BUAd<%= 4pHcz!X`E !dbOqZD P Yi!U$=z P_ X2n1Ȓ'Sl2̚7s3Ϡ@XP _زYC76ܺw}1210Tm#BYPް U/qQ ^hUFKk/USu^hId&Z1H(3"w׋9*ѤZc_5R8`Œ9ҝ w$r`y8;4;bybC=&ȟ}ށm*P*x'_(|р$$lm&q9'uBbijf'pr dpQ A pDۀr*Χuri`2%ZD`*jŭZD+ MlɪZj,ڪi~QͶ~Z즡m1 X <0|0d'rz(eܛV!-HbNȆ,#҂!(`$ ls%)73%l$?Lt( (݂G/ͳS,-Tu[omMh6V{ r h`Hp`Zu}7y#0zāGLe3`戓; 8A.`I吧Cw㎇9cN93`+`_9 8yf|ߎCwxt==[}, .8^w>髿>ퟯܻ/?s/>7X?02LX(2F9 LWL`hA& C(jo#mBD|럝.ؘ?h@Vvp\ XD0a"ذV"xhQ\FqM̢4ll X'P~'DIVQpG?)A<$"E2|$$#)IR$&3Mr$(CiH|R <~|@𡖶j)\޲%0y˅<&2e2|&4]Rܥ0mr&8)q<':өs.,Ї~l+%?D|@ β=(B:Ѕ2t }(D#*щR(F3эr(H ѐt$IOє%QO<{la ~<)P*ԡF=*Rԥ2N}*T*թRV*Vխr^e*6d:UԦ)e7n}+\*׹ҵv+^׽~+`Ƶfif1 % },d#+R,f+ 8~Z)#’=-jM zdFҶmV[ֺPnq+ƭLpg[=Lrm zQU.Q2B vZ0r>5׶UrWf潥y*Eu׾' FEC1,sx!v2/''h`br?cq_Kbfp(W ؇+,l H-vʴ=1Cl@F`ʌF ;c}0!f4%pFd s.9xg2ѭDn>=7N E ʞN-qٷ%PD*<^`G cÏAG>W0xO ۊCx-li=Gr\fz nY}kWi臸y5J-S7Č%3 A /E.jm@%3 ~"\˃X)rXEtN8>|LB,8PBC-h+C  , B>| A;hAL!@pC+@C A>d Ȁ}Bp`"$ `;A -@ pCO,@ A9@X +`8h` |‘ xz%1vOF9Ɖ? ?  b \BB ji ?L CB@C*( <>X$C;A;,3'8@B (3RA ": , CD#T%^C?0dB;`|J A;;[;(A" ` `>C"AQ> B?3J-'@ A?ԀND"?;>RT$8$@9Ta?Hb'b?>?@`8f~1O2J2F36Ɖy? hB8ЀЀ?l( ؟8AB  <d:n& X`2h, ʑ@$8'J0 >8T RB-@F$(\z>heA>&&,A?pa>hA[!A,31)|'B?B 1[>C1/DA^O-8`x B>)O6l&B+b9( C1g1`A>@ PeVd>'&C-$䃁%B>(%(G[ Ñ$*fit&|fĄfo&c`Y. p$x$  $4  g05?( ABĚ90 :kB6&HnAJ%w )')C9PBZ*.Tnd9@-P% L@A:₦]rL3C A 8`pkv+@C}$d lE.-\,A~A`]#8/`3A1'( ACkSbNBNl'%iAc:(,!'`C kg)@Weh &( ?h ,:j0@0$2<9#@B _BXFBC"gq(\%B@9C'd-m`&#lq>C $djR‚krTbu!X?d傃b^!1``  o>@ݝf"`b;[*&Ub bB ӲF/I2@~--@BQn- f2j8ƣ?hC. | kpA- IlG<6Ag+'^+C9T.8Ԃ Ё3-C B9&Xk ,26n.*(..@'L,%),.+$p7B3~>C6Z>, CT;SL";@)H8î".,z"A.ATwqhqv,Zs^ 亠\#x™Y0KFEl9/4B=<š#0o4<:W #V}IF7(DNdAfV<!B$\sQ0Din+D0A,D,+f"`8#\cL|BLJFś#Y߉0+cHcĂ)Xj  >(_C*\({)lfH+ _C{ڽMߏ;F.@=4ZF f! E>b$ "iPPuf_@;?"Y8< Y85JR->%*iyQƶzHSa#=rGOHR"}lg9CUCPuuبKD'ʅSqe#2$"xfZE"?b.̟K"2'E$'acsԐ"vMfSpdcORIœBǏ. m% WnH?t9e9#"P2FQT@^> m{mEn -&("2%R6$e󚏳E4cE?$}.FfͣƄ"$b[ad[n\^n W8GR@FaYb)nLI E!W6ab9;"FQ$Xf99i\|f~3,'!LBgp:7ĢF&[ri cbjPD+^WT3 V88WxSK22xyXxC0PyV7#ndVᅿo"^5j%M ¡8f&8öD&>mQ#ؑ_xaa,7EB;I$]9E/(V. qQ{b$ڀd<˓5'!Kk8dd# CUA'S $g sH L)7VMFE4daX* +ѝRݰ/C\$"ӮPh>LC'J#桥gRZCҗJ_B'j-rczXMӅg%5^D=thF@l@c`3׳6.qml[D{ڑb6Pn{j2DSeݕx[ֽv{.𞛣2p?Upm w Mq!-nm[uGr1_[ə}gQesAmh/J>LЙt?}է/|IzW:84a^viWvq^wy}+_xWO7{:WRx_0 }p ,o>HHG-ѢCQ ^O PhPwQ"+C+|m'bA-S)!Xbf&rRU*o"VܚC"A%a~XhnQ TT@U` B,A+tls+ЁB7VnR9bB##Abb c&&%$<j@:u  d5`9dsNd,(c>aXC i9A)ER*/+BPoyʐb*t; !8@l%ģ>(S=C fH 55Po/,_SȒ@nR1:C68grZbAC /%#B%B170"_tҊ @ 8K!2"(@q=o A`1S " L`??|1,n"a`A!X-BAg³9-6`(`, Gs- *< A%~ibSbgHFG 5F4b>/+<R)RQ{/HFC/AF`@HbPaSxǢ_ dh@,`$L`2R6HFPnM#k0H.v,C̞.a.1\N!Fbغ%5"|ar?Hrh`N Fft+#bc :lŋK ^Ac?O#2"aʟ> drHK{<$3T< 3)\H 5O*yd0fnThOڽ7޽| 8 >8Ō;~ M vI1"qe!0s,0)Ab*r΃ Br~AĈ"qaКȌ=ӹʟEtN5z<⅟.l7j4uF4O- (d1U.%Ed .`>aNHaz3 (P*( &tV3# &?7` >M7*nЁ VH*P*&*@ 6t :D2H\I]Ċ:p"ܱ(BKB.Sِ,4')~Xgq/H'C Zh> iNJ^5Nyc& X1`I b 5;a@o8$ q]CWS0 K"F;7 1y|t5gy/ >cT踉*ZiKoKat$0sW\bxN&Wq$I K":$Uq q(G ](ƁH48d gZr %e20T $Y_B€JՉ. qD6ң 52"!cHEjrbxXPEe/٘Lzrl+;rHbIKu0mq|/ /:\/%d*sKRHc0l  Np`,9ωts6; OxK|s? ЀSt*Є*t^&:шJtE/ьj hG% Ct$-I%PnNs#eKO Әt|)MoӜ46ݩO Ԡ uD-QԤ*uLmS ըJuTUլju\W ְud-Yϊִulm[ ׸ut]׼u|_ v-a+c"v-iO ȺTe=jvs,g? %z6-mFkԪm]k_KvlkboA w .qܾ6Mr ]>7ԭujww w-yϋwm{ w}w 't.Q l nNI)l ظ9_".Mbb8,N[ c:84kc&8<.{ yD.$+yLn (KyT,ky\ 0y̯1|y~1379r2;9z*:S4lC?9ъn2GC:ɒ/LkzӜ? PzԤ.OTzլn_ Xzִqk[:u{;6kc7/}gCҞ|mb;6o7.ύt{n x{|{̡W8 ,^azУ"! ,   <    %;("/$W'##%$%*:&,**,,-2223f2:F4;39>;;=>?Bv@ICBDNEEFFIIFIXFLKKMvLSNNQQNS_OUMPOSSUVWZYW[kW^W^WXUYb[[]^^bAbsccddlBg{ggkMhsgilDjjjkJkTm|mnqpnq~nrKrssts{KtTtvvyTwZwzw|w|Oyyzz|f{]||~~^~akZmqdekmptTr|dbjѝա}˥è¯ȴ촽˼ӽϯĝܽ¿IJǼϣΰЯұ߯ݾ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb 8t0cʌI͛8sɳϟ@ JѣH*]ʴӧPJJիXE'>`G,YhӪ]˶۷pʝKݻx˷߿ LÈ6^yILeˎ3kgȜCwYthҥMoF]Y5g֔]-Yfڵm{7ޑy Z7qLJF\p͡?\o׭fNËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v9o^)dfhpriX҉|y~*6J衈&Z62 餔V:fa駠jꩠꪬ꫰"j֊d`֘+&$L" ¤ͱ*kbuP`  0 '<h.P{(<C@,RO0 j +BO 0'l?2 ; q@qq,`r|! MR p̤l0Q;FG: K8?H4"#`@P+2ՕeY-jWd[ǒN8aӕjP0+t#%AС#3pBNdPdVA g|{aA"C Vļ1 )t #Ccf,fB΅S8' d ċ Rȗ4 x bȠN@R+A 2A:u\Գf9tM2Ehi0D Lx,` 7p+aZJ߹y ׵y,!È[5$#W/+@Cn X@#-qK05W8{kC<ͨrØ-<3i kjt3߇67~ ^Ն .âp;w ;6޺= Gpܝ0;ҰD\n0Xqnb844ĝ@C/ ¤!M,Ojc\+H\9UW {E9 ;0r81րmcM⯧@>~n1 ;o 4'N1w?8~ Z-_{C4p 者x=hεG1VKo0 %E6*#b.t3rsG {8RMC{g;mpTڶnp{A)6'MXc|0ݷb ׁ^}>v]e}dcTUmDNY`fN,{-FJhrPCYx|<3 sp#7 \sU&2q;z2.`+^ u6`a(s .(u18g5 +piSN}a35:?}x7$\;@ wRsro` 8@ewg<2  hqPNt7Sw,s[ "6У_xD85T6=9xq4+Ap7iBR7#0gwޣ W}C KIXZieh=SI+V}4K0fJ:x]>ryvf`0yKs\ @ӋvxTHgdto1XSs@[Veauag{0߇m~׀a8a&_g0Di@.C[@vXb1.-zYs_ul[boY kX{(,4vog3]Y7+0YWC W{` 4.IU 0UH6Gy P-&VKS. ^~ƕU X„ V@d#% f`EEpD\_ s\QPМ MS9w.FIm" G\M{B?jU C ]WǛ0KtH7y7#TcM#`cFyu3D:NSuX8sr` `NL d0@yt{2KV(lrpj9m7Q+ԃVSl1^•s$ R0[@X{,Dg7K 7Qw*P}[׏<9i/ Y+Lg #4" pXr0VLCR0Rq<+pش@Vt%W@RL  :KGV@.}vEqZJʅG\0r?3YMG }[t 赙 Zeؚa6T::U+`EB,(.i娱JuR-ڐ; 4e,ԃ (;&0 9< ;D jy Н35` p*W³ VWN@e &/3붥 JeAKj[}[h g-3(8SZ:Ë90A=B;[w(uilkys>KYoȺ<]*!L8~[w5y㻆!WG>Ƌ[ԫo=)t  { "kû"[#MKG>u!Ncü뛿һ2NWֽR, m |!"S{,' "[8G:%y ! $\&|(*,Ƨ.2<4,*3q8:<>@B7D]Fm#C}LNAKT]VmQ}S}\^Y&9b;f}ha][} =3`aa Chxr1{  P iEt8ז}p N tB7_Y0KH8<͐ ٴ]Ҭaq1sjVD@\ < 0j`rm`QNܶ]≠M bv=s`9 @\<GLay@CPGDNH1`8Pr}ଡ଼o!7:J p26ZN 4hT-&">bm1x `[3:#p̗rЀ CZwDNLljP[`T'f5LA.o`QpPnRTtP/J uR7praR0w VC~cs Eo萎qsXߤm0%,wy9fN4Fa3lRju[8~~ڦ~vrЀSbSW\:Uj-\)0u+_ MW7X  7pS5 И{h0 uR~]x33@+ t\cN4čK^nE1?, Epx`nj@Uu7Su]X4$85Ͼt @h_A鰹cvbaEBNa\?dN)k_n?`LKx|rz|1^O)~oϻ_;ֆ?_//8 z2he?BKO_ȿПƟ;/?/Ւ<ʾ@]\$XA .dC%NTly5nG!WI)UdK1eΤYM9uOA%ZQ4 SNZUYnWYB%[):aծe[qΥYy硭_&\X5cȑ%Ob WgСE׼ͣUfkON mܹu.){vڼ'^8]߿?s}&WtٵooN:ŏ'_޳eÛg/N }?/p@ l?>tALAB 3NB($+@ CqD8TCHTqEW311񥋈r°qfRg[rȵ^+Ff\Ɋad($gH j_PNs/#$ 2&03:C(Ug %YN2 5*#J3*jh$'f(iCڐxLцKk'=0$t*c`rF 8iB$|eIU6=VLiREG_bg8K@)i=x֤X1@%tr6y8ѦGkAK6Dǔyb!P &3lMpx$'Dg(auW`@N)JaVtyXAx0ɑj(A6@Ц$0J(ןXJ!blc@#JK琋q(aTD6XmX8afC JDdfBQYaK6 vKᏔTh[J0X(fg%ltU!$+. ;KKZ>MԔ{-!.VK쥐lם=N'VGe(%)aV_gM)Ag L\ hər\J\3̩z?$4'#+89M(Wh7uM$8p? ) D+7W$j=$5`"VX J O'YJ2⽰$ I ?`/%?qt8vԨV A::xB%, HQqL&0 c3 FUDfeBȮ$0ELf@IL@(p0${XAǃ$`@Y\Iq$<``8: f2K],N@?EQdFCC i\MC,|O(ͯz#5Ft`$(' NykA< %mЬ`8!S5&p@%,f XAgPS st BrA'\l?*'XnPD<@ǫVHJP5baB$#&ʀ0ٴA&2` Bg(L_zDC `6@+HkNM1UoRe\J҆R#hM-Fxխgm4el<"ڦ+{0?5;ף6;І  +8 4@i>P;@ dc:XC8P>$C(!pqxA}A,;6<71./)8 ?0 pA(@B?/3>+r _p7 8_(ۃQ5`ީE P$`8?\:6h@X(D[۶[ܭ6 +p( 6`0p x1ȀcEn̍@d:Ȁa;XX7KŗІۢ@%1s+zF~AW X, \_pTC; IY6pӲ~>AyX[DbSD2H|ˋ3p[C5:^\𻒬9IHC aIJI 36nP q9 $J/ Gy[J|0H1ɱ|K(˹ (HJǤFLK̳|\LlL|LȌLɜLʬL˼LLLLL MM,M>R"-R#=R$MR%]R&mR'}R(R)R*R+R,R-R.R/R0 S1S'Ճ>;}Ї {:S;SS?S@ TATB-TC=TDMTE]TFmTG}THTITJ{5eSp |=]MR-US=UTMUU]UVmUW}UXM~Ѓ7X6uPO QLU` VaVb-Vc=VdMV>UMN\}P?S>HL¼Vfu[6jVl׮fMV!p}Vr׫0WnMWoetW VxWM zEWhף WJiH֦ZMaWȠH؄}EX9+6h/Ċ}KARn}o؃X8*(*Kh _/C9ٺ'%ǓY{Y|NXeF+(~-+1ʞ ƢX8@E0r<peZ'iFX-Xxוس+8G𬡘r TX]\$ǐ]ȂXF틚!}Y~xZ5K4Ӈ65+RbȂPSXB#(Ep,|hxhZJ`tQMr@BtPJ Эyz^jJ [A?h0_8.QWY±6H;{4!Р_!ZحEZX'PJ3-b9u Xݭ Uِ ()  Zp? y ->1\ ]-> @5f$ 6p8=XXhtxP\ Qqʝ (6gxÝ5ip Xlm@6 #_KXx0sPnㄋ3 Ⱥ~ ))NخU4u=}S#ڕ0x\/\7)k8)xPMFt^]<UCH 'yBD3dmgC$,ig8Uxe8(ۤ؃_ < ,y[tg`pI I8]I0D $ ǣk Xf=jkk.k>kNk6k *]E }(02I+CSD u.mHƈh! ȓ=>'OaVeSfsT]؆=6bDh¦7_'j@kJ'>+x[{ĒP:q9px@#nt^i؆yJh̀%B>.-/ 38z%o 1\8r1Y8りpQ1;'yhMÕPU \!ml @hP p |02` s0 p }O( z}zg}xπ؏ (xh@]cz0 P,ddE!ߑP 1yP/KB`15Bz$4zġi "!DBm. ѣl$Rj*֬Zr+ذbǒ-k,ڴi92*>}j ݼ.l0 >wJcP7i:Y34utҭ3WMcz+EuVn;; D> ICԛu:XcߕlO{_ko:ԟ?>Y?????(< !!cNz9g>O/FZ_O%J;|\ɠaRŃ\U4B>!(!q 4Bp\i?я)RV"E,RØ0dӨ3vQn|#XF5ыq#=~# )Aelc?x>ु]Y"ĭX w&pKf$(17 (O T|e*Q YҲ4-5i]r%0)a<&2e2|&1yKÑSR$#8IDz7 >D}'@*Ё=h@~Xs+fҶU(F3эr(HC*ґ&=)JSҕ.})Lc*әҴ652Ь<JsXAvF=*R2NEGR*թRMjTTr^*X*#f=+ZӪֵn}+\*פjD+1 'xG<5[88 W~9_<ħiPKW臾 pNn_A}DV2*؍ e]X-{\yn13ӹv3\/C0КU a9#fRޯw43<9I.e;UR75 PP_N7 Bc2mG"}m|ѻ1B@ 𨟦m?ӝ&*>nqB 譕LtK80'?dCrP`6wc1>x.l<1sc/U9wS 'Ԡ ΐ*Ch#00<8197E,b!Ȼ :5Rh/CF{_{[1AIFpC+&c[X 4q }>-H,">((B.5N.X),">DC.02`BN!A'0R  > 5&`-L5;0C&_/>Cm-C39+`ɱ)D1B"!5`3 5\"<-\,,%cA3(>,\.`)!2x!b^^됞bURC,8 P6@C2hCp @H?@T`p@?B*@@"8@ t:d8t>pBD@ @bXC@C>@AA>dC`##\+\) BÝC@5 $ T^&A;\ddCA|@6> \AC 0  `'!KAC;@A%@AdCi+ 9AC?c5C/Ѐ0B|&dj""& #&#J$ۻC@,̃-h΃5<'$ `2Pp>lV/(?8C̀4 `4,T@4^0>,WC;9;`.2C'7L B`\*2t; vBDC5\yb$X^C`A]dx2>e5dCA;d^>)l(>tT>!92@/d,;\>C`&@;8B8*# E~A`:f;A$c=F#@&v%&A"c8fCkf38 \C!8 E,D*g ?\HCBHB @*/Z`鼅,Aٵ*B*10 %#xٝ> x2@RB&|0D11ñf١$!h`,CC;·B? ā0d>' C*+A+feB*t >㷂9l'0\+.PA>@ @g~k&,ٍh* A`dّ^QŁQ6VC?0AΩN-M&ݩiԜI?  ?`]$@!PjBjqeăAAB> pkHfe჻b N.7<#>p}AX l(::oz&#D,$>B@ģ7C +P2uMA;|):Ay#Pf$A^C;l51զ CFרqfQCPC'z4H*l@d¼0P+>c1܀ru*$[%Xbo?J]e%H.l?00CtGٹ&K^uf%CBnN d䝎vA\A٭08srpC0paiq DB`0[%u#CDs;*k^A2 `kp`A92~8׶m9[9; :? oEP@3^IT$eC>&A/ ,B>E u|K% `:@(k(C ABx;X8)$Š@/g'2P08\S|AdBLrRԲ,$Ahe`dT^>x3 c`Ad6V#vV0:H/,6XSiC-/66ؖwYC}::Cs64bHC73B5:ă8 03ܪHh:,ae?d(C6@hyFO?C7c$;P~u>h=9{5{xR;C;T2<@yC{Ca%b96{EO;oOFce8kM{Wr\g> s]2`S䚡#z):09zV@Z:Z=|I6}W[ d1*C. bF*d Zkom_}Ҩ3͛{՗m|}c@S(O|6$E}`}7%?~zXEث=[m;Q9WY!WWbW:p?}ip=뛗;{S: 4xaB 6tbDg(VxcF9v1y#I4yeJ+ 3[FpL9usO ӥ[XtQJ4RhæSdMWvlXcNymZCtIkeb5!ԭ 9S "VlS`̚nsMybzujիY6vlƵ}\TP,N3lp6S6IՐS\_n8< IZjq\kB2w$UEƒcm{{LmJf(_-!ud@CHRD|ypMB2e=(F_8q f %CmbZmfۑǎj tK AU(IDBbgxr(I2f=89$ CgyHdRj}r9d}E5Jѧ?eL)RS$GR@GC7ӊ̜e:9C4ҭs +Iʬ\ &B^G?M(ĔC3Ӡδf> 9KK;3*rg3'`Bb}=D\V$@/I d z<a aD9_B\/XiNLfd|q`D8tb)_ Ɣ̸şy Yc`EB$yE g:E$Kyř\:tI[%gbg=JrfPrq <IXdjgiTiR:M&f^9iÔ`H&k& IbeD _t|e &Ђ se H.PT)sh!iW8tRzkYRVy ßd̸yx1}"}6iC66ˤEjf ٞEPfޭ (P. ?E{ @>5:Jg]0%;KĂR/I4N( JpoWBP=pЕ$Pm @3}H}xB ц 0w/l ^9aoB00 15c(Lxlf` nyjCb $ r[-kx0b6 _vm`H5FfgdtKkfa`̃+*Z)J hQ. {E3ІBx@6o@_%R yJxa,=NQJ$L3,#֠,H䲔qA U(D$HAłV^ Vӧ `@*%`1=idB&H<|zLuj( D{52q5m/hIMZ͊{+eR2ᏉCkF<(#q[*OS'Pkb1D~p t'YCRװ#5i}+;=0i ?)5A:3o)}Ed^$1 &i%BjHfؖ55pbNj!h[?r̒''NgxЇ#D54m0& (_r|yF~^{ enʰx[ (!-淪5qQ B਑X[u@l֎OP~W6AF=J&̠Fgo[2+X US\[|!?l¿swM( p~ 9\ g'u&V CKf*I8 r] q%OklI$:dK9 0,$M?`I rbY,ꦈWD EJک)yYjފ!g3 6pzћh0Myh"3&B7I&ģF"K8D!mqLXx=w[˹p? U 2oKQHp]l)1%ax2sa15]6XR( i(¥aB}硾:U 2׺0pA5ͫ7 e+MPv7apa"L(n]v {E[놵#I0T iH|iz%[c38c$}*9y/' 5} @H`pzb摡66ސ"} ZP32(p;OGc;87Jۨ3~QRx=ʹja0jy{S>}\4ŜKr6: LimΘE?^~  d' "h f!jeZ` j|xʹd^yn >mO& $,ގ{pFn.H#nh BNmlI2 J a䀲›Zb0Nmȋj ^iS"j } %VL$֣yȤ:a`ڠX r!a`(iˋE : aʆR8: \qBc "EҦ. Hg`䫦 g~̠ ^ 2~jiW*p@ڀ i..$ f|+0cm7#N a@FB"9A0@ѧ%.231"r&@R'AZvhg84Z$44"s/P$#iHr!&b;!&) $'(*Ŕ"'hgN D+ M 9!7#/pb/b$v, @18c!(.jݧ./-/> "/i"{^@Y  !L++2+ҡrRHn bڮ%0GM22܄^((Ӂr2=0WS7ws 2S3'3'3m,7"-5ْ3s5l9-3̤d3{,77}7&8%j847(7<<=kKs;{;1;858>?S?==/(>b>3b:8T9BB@iAa&j@#"?DCTDGDKDOE#rVEW4E_FcTFgFkFoGsTGwG{GHTH}43A`a0% @Ma9TJJJKTKKKLTLǔLLMTMהMMNK'#bxOTOOOfvDIIWI1c(TQQQR#UR'G&jfT%xG5H U%"LROUSUUWU[UT=bbVoU3W5$v57z#~X[U[[!Z7YVZͤ,Z=[]]^"5#,56@HU.ҵ#U^V`` VQ"uGUYǵr$Hu^ b/c3Vcaa-Baj`"x6aeC_qCbKb+c7fkfov[g">#@`f`~`f@Tab5C9#A08UpVkkUgkfe?" @@>(J@ f eviae5f)BgC 6[U(pq,sg}m@"NVVni _9bfB4B޶=rWvgv d`dsWhZ7V@b"pd`Wis3t7bf@;tA}JAvLlbaz-h84.$.h(J"rb"c&%C8֞4"سvuBdԶw7u5b:@2dmes5g"nunaf3)ϕ@'=#U#E,-">'/~3^;^=>jGK~9U^Y]aE>ieq~-#x SXhKX9^闞^꧞Կ9"T뷞Z#=I^@ iSB!J헔t%^O$+]K/;3?Zt=KA]DT[U_kvcHJw {_]>u_U7uY5_# ~)"=Co_Q_ٿB!:0B\É"F"D 5.cBE$)ФDU2d 3̙4kڼ3Ν<{ t)g=4ҥLE̗ԩTZ5֭\z 6رd˚=6ڵlۺ} 7ܹt~ Ω޽|R l81`Ċ3n\1}'Gl2̚r+rɣ!n|Zqjǘ96ϱ\ݼ{ <ċ?<̛;=ԫ[=ܻ{>˛?>ۻ?ۿ?~`H`߁ .`>!r FHa^aMa~b"&b*X.c2v6ވc:U>d#(dFD&dN>iޒPNIeV2'Zn٠?^~ fbIfffa㏌Yr g6mgzg~ hZm.?iNJi^inZ)*3h#jjj\Jy˧ &EK,.v NKm6匵~%͎K.F&K,.-)n 8;oFop=  \[o_ 2L.ʩ  s3`.q. 3+eqޜs[z96ؙ?ц6,^rF01 "tT+LQԄ8B *TĢS 㰇pA_LtlRJHL͈sٚWi%ж5XL&=b:# {-j# C`x K ,nԚB %!^!dyO^ă6# {/Km,:/^߆$lj.,:n 2lQ[8Ќ%^%8`pm%/qBo !:A~"8NpbC$`HjF3dxE207-Io? V+}K@ V  @5g@"!ϝV[7I2x26Sx,`E1w|  :X C(A $Ks8X6EJц I6X#t- N 6}yqضm N`"&Yxa DjW9 y 瑘7DqsIXHLu m(njKdS0Nz[Bjł(6@7TWp0?˼d,WӬ1COq&} d(І8VnC,Txى x7ǒ:Uu4h)UGW>PgM^]=#>;wn l;sw Fy;İ6^`s~B<)d7O3y}|w~zӯI}PFճ~RϸLy MUZÇHMOM>X7WӇ_*)~p)?qOL*Bh5~ !mG'3((H~uxzd0} 2bh'}ҁRzq| r)ӂ1h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]_a(cHehg35k8DjȆoh6ns3Hw4r{/zȇ8.~H+H('%Ȉ8%$HX$#ȉx#ȁvHȊ(Hhȋ苿(HhLjɨȌ( Ӹ!H{ֈ8ȍ߸MH戎ȎX(h䈏ȏ)i ɐ  )Iiɑ !)#IH%'+-钩1y3Ih79&)= < (C EiIKɔO Q)UiWY[ɕ]_ a)cIeigikɖmo qYr9TIRhw yNȗ}Ʉ J(iFIɘB蘏 )>HɃ:陡)Iiɚ隯 )Ii!y;;=>?Bv@ICBDNEEFFIIFIWFKKKMvLSNNQQNSSSU[TVYVZVWZkW^W^WXUYb[[]^^bBcsccddlBf{ggkMhsfhjjjlDkNk{Klmnqpnq~nrsqoKrssts{KtTtTvvvyZwOywy{yzz|zf{]|}~~~a~]kmqbekunpkTxdrbjўա}Ũîȴ촽Ԝ˼Ĥн¿ĝɱǼΣЯҷ߯߻ݿ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb+ݸt0cʌi͛8sɳϟ@ JѣH*]ʴӧPJJիXM7/>`G,YhӪ]˶۷pʝKݻx˷߿ LÈVO4aӕhP @)t' $%AҡC2}BMd!QdCtVA g||aA:C VļA ) t ! $Ccf-eBΕT4' b ċ Rȗ4x  dфĀM@Z)A 2A:u\Գf9tMBEhi0D &A;Y8C/n 6/ gtg=+ ^K%1Y J7"8W HښQ 0ΰAfW^5% \wCFxe cayЁDȐB Е@w g(V`XbyǖVg \wXG,b{oh qq`fpC"8=TVvhZhXo{鸀{5 `ǒd 4L:tX[i},M΢.79Zk @`\<bynd*Y] dhlhq%;>x,` 7p+\bZJKy ׵y$! Èc5$#VX/#@Cn Xk#>:sq7ǘx/``ym肧`XnXW>maM̀ 6Fs1A ڰteX.yG;ag[LJZ M{&gK_tՕM_K"-X Xf{(tpX2V4 5Bb W+v`EY! J('af[j=zMJрmc=>~n2 ;oyb>D 0G@AϝaL{D4p 者x=hΕG1VKo0 %E6*#b.t3rsG{8RM3{g;mpTڶn`{A)6'MXc|0HPr.EKJS`g`E>۳}dcDEmPZpf,z-fJhrPCYx|<3 sp#7 \sU&2q:z2.`)^ u6`&1G+oQt+qK)@16|c1U>Ѕ}Hv7$\;@ 'j +'Np6\i}cQ.0P6!Jp3:%zI(}8E \x.bC7=uw]ƈaV3MUic(gSw(T(u365ƈ^~=0yG7>d,eiFvv/ӎ9jEAMC4rzve^~}w4We:P9gFePfN7Q6YC=@[Veae`Wd0@yq[ms~׀aq82f`~bzQi@.S[=(kHa%’8ɇYU0'0Q_ȶE.aaĨ0f1`! b`NcWFq&=p[i|ƒu^+ G{P 4- ǵ4 2\d?ty.NM ` 4bb4.a/g\Y m`(.N0iDkJ;"p\1 PVdQƩI G852,eE pMC8w.GYS0 x4UmW,V% 0҅9u4LG'y7#Te(jM#`d6yut:D:NSuX8sr` `NL( d00yd{2KV8lrФj8 m7QG5e͆1s%\8GR0[@H{/dY{pէڧuӛ2m4~01[L# uM`!c4 #7ԓtM|dEW }%@ $4(0i4 p|d2 jWW+m`X\EY C@Z/;ea*߄W/G:^)Z1 M X&jC3 )SVd/VjBQ-ܐ; 9e,ԓ (;&6 9B ;e jy @ 35 еu:0B `BhQ/@+zg1u8 PeGKq[kh ׷2;g<+7=hs#43ǎQFkc2 6%g9烺ty.2+A;cti'b;1@!Vw&ۓJ+ | R{n"[#MJGۛ.Nc#ۿBMW&R,o|!,l @_<0҅s!C\R&*,.02\|;6|8ç2<>@BL=l<32KgH B KqȈȊȌȎȐɒ<ɔlDRɚɜɞɠʢ<ʤ-+z \ʪʬʮʰ˲ lʳ˺˼˾˽\˨\|Ȝʼt!<\,\ |κrL|Τ<\~*l },AТ=Ѣ"=$]LΝ&.ǧҖ0}8,ӿKӆ[:B=DJ LR=հlTZ՛l\b=֊mӄ dlzaws 60Mn~-pMr-14PHOF;\tI` ל1p! N tB7U*8< ٸ aoAskV?\ < @j`rPNa˼McX7G0esȥZLapTW4 uDd`C ep4p].=r^ia'cbm_`ՀHCNb~(N=  j V m%>3'|S+ 2 UM0yN)>T^ .-vP4P[`T7fLF.o`pU>tWYiU PH+ug+vp, r`km>6L^PdY~qiQNߥ6`SBHf~y@CG`3~hu[8+gvNӀbSW\:U~x9 Du5nRp ap3ҝpSE Ѓ}h0 uRۺ ._x33?+ u\bQսK^UnE1 ?, /`x`tj@UeIqSz]X4$C[@H%8+ G/0k>e' F;(VbKM/=j"oqfhtO#jSR_~_Ow?A/=Ӌ_h ?ioeO}o/Lq}b__?ȿ/׻־x_.)Iֿ/W_)^[ί_Y}ɨ ѣA .dC%NXE5nG!E$YI)% K1eΤYf_tOA%ZQI.eSQNZUYn57Ŏ%30iծe[qΥ[[ey_&\aĉۘ_ő%O\e̙2vy,d͡E&]i?9{fmjرeϦ]խu}o{ĕ/gsƏNuٵ'>sŏ'_~jwg]}e˟_~p@TpAl@䑇B 3* B Cq !lC#qE[$DPBkF`LFTG DMxDrƻq&tr>J,#1#1(+R3>Үb Xs'Y6JFuG6UQ<&Jzd6Mzd!xS3^>)Tn U&LG(aS`A@`O)t!`lzH!tW̛hh(6@Gt(9'.D@i9H( 3!ܼ h3-IdJu'yt ȶN*Q<~8ZSA圅{lC-ص^)zR MAipgEF t"qnZ[YQbZj~xJQ]GkmEp^'iJX_ zi"e'5x(6%⇊p'@FwA t|9L@M:,A ֙+sI >@yA#u<_ 6j'CJP! X8A"$A B ׈/g˖?Fq>P>hOR`>zAԉ "V@N?qqCe4?ԉ7), :QD`Qx*O@zF՞O>aɝ`}%!%: RՁ,@OH#%N(V`Vד6VS!C>8PW AhCd,6JXL2*C1C 9.t27nk1 d4BT{{Ū'QtP&0'|x[ -wĄ+g@1 pb>6u's#( |xb!xjD*J4CSTr .zvwh?=F4w%{  uXg' Dnj8(Zgu'BP&c!k. Kd-r'He{]>.|dy>[>J:t@ʴ@}.f<_Yasag@:RTЌ}hDgs,z:t-Iҗt3lӣ&5w]#eϥfujY)HZ3@ L`uֈ:@d#A|lhԨ҄{ۆ@m,`&w?:mjCIoC`[6uzt vm@fx> l{;V?CJѿb47;q@ OA rsZX.A {g |UP&sD19 %.3Pqdp@YE~I^J:*%J_: Ĝ*/%2L6,H쓤?AOXهJ"t8'!6  Y8Nxؓ%g& :Bՠ4 K΃N'Ac ͞JI-ߢXaX *@y-v^ L #MN! (v5Ѿ;=pC|-ȉTID@ 0J@*+(#p?iт P?\TSK68XEỀ AS!0lA9$AL#@BpA/B6D+6 tXh!Pg % mh'ԉ1*jc?; - t0Aɉ$L*9$RI=-g p0EaEA΋;M,FDuc YEg7 +p 6`;p 1Ȁ;3FzldD;Ȁl Y8b42k#J)ɕ$Ӊz@Gtۍ۲\_p,D JPd7{LIGBc3Şm+?TIdS{3D>jмlJ3뉼clJJs ;6ho }\AJ=?x} z[[K\ܾ@II(K@HLL|L+l|M,M.R/R0 S1S2-S3=S4MS5]S6mS7}S8S9S:S;S=S=><}4*R-~hTG}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmL>B*ˢ|Ѓ>U_U` VaVb-Vc=VdM=B5ZeLU-UeVmVnVoVp Wq%M~g8NL ELx }(sVT+RwEx׸Ws}VZ׵֣hwW} ׁ-4|eW}MXhXMC-̢@X~`P6;Xx+ؐ% DNRD.h6+HDYĬ$ޙXpY{؎L٠H*8** )_/DZ&͕H@ڇ哥EуؗՉ`CC`_`*PtE C Փ%&$ GXjئ[Y+Ǧ˱-X|DUXi8%Ѡ]ЂGˍI!=Z~;؇) ݸ]ѥٺ }h:0Za8(-$*z@^Anp?hCr,!6Hy*;Q 0!k0/ &tP$@`\IRYYeQHJXt+$V pnuD_b()a+أ)eti<:OH>^&Y^Jpڟٺ٢=m˭YphZ0x_tw;:-> Hq ; 6pF>X"< c ]L \} 6gPĩ`6ip Hw3mp7 -$lKx@lPyۉ ;+& ))ߟpՌէW08].P] 7!kp0)]{hTGK&lHbx4D z" E"ewQha1,iHgLxI7A `kś8tiXxuߥPAP)XgPȺ-W3k 2kkknܢ剻K}805J)xDTE 1bnih/nHf(! h>?&Zl&f#g)X#D]>މbvd7l0 0hNO>%  hFPE`Bq9pyH-$thF= 뱖l*Y~tnh^ |MYg}pC݉F t0H!n*Jf+h=pPVOc0ͶnGݝe 0SiL7(@̖4K[s8]TiTd0r4"1Cqr%&gv6p )$\⤅[0XU1I0ȃ6ؤXjD0|X!mgsi)vzhdTìYIp?Η9׉20zo2o x2ݞ@rAI8dRq6}H@h.ӓlJylLWgO bTIϥW=uOp|[`u]I] x[uݞj`a OPR G P97 i̭L`}C XmC2nT8w`\1y؀]HLDۋRA HThmpІb^iQ-ܸrҭk.޼z/b:@x;lYt6s3ТGK'lo>|}7_s{R'i@AvW=czإUg{1i[$v^1PM{t K?5]?hV3 8rȋ+Kc~.6%Ӑs%Р (`w4s-zҗY  <³ oXLp\b}$fGb6ށ'^=X!z@lP:띥,B_/J6a<3)$M:$QJi'McA&kSzf9&ju=E&@H  L|NzgDtJ @NiIyJhNXѩf:Ldz)**9yjꦆ*몡A*ު륳Z 鮢鬑g6.hjj)5P%j-z[cM퓙y.Wj$!&h=#w>/C(]09C pO\HK!.,vL1-q& Ͻ.gLs[= 4Mwh7ױ>;ϥ`>x+<;o;[|]~f>x;\k?Ӆƕ~勯'>@V?Z{L2A(s>!(!F<"%2yG>A6]Ə}^"(1f >(4Qhl#(51s#X<~# )A<$"9}C?8*ZzXK8p2p$:)Q<%'AJTzR|%,c)KUr%.sK\ֲ%0)Rr<&1weR|f1 b2Ld@8Crd%}wItz89ωN?|j)yҳ'>}'@*Ё=(BЅ2}hBHz. 9Y(HC*ґ&=)JSҕ.})Lc*әҴ6)Nsӝ>u5(ZQ\(]av0N}*TRV*VU2QmW*ֱf=+Zxn}+\:Ctk\Իu+`*ؿ6kazؾ&SeZ#khLa2%f,h?kђ]jcZڱ6}-lҶ-ik{VVfm}k[Vd%.r{x^Q1K&Υ*vr.x+m=/zӫ}/|+_:wotD]4c*ʋ#f[2g,akX CL.:L~-_5~1sx(1Q/_y㨚ˊ{pLa"@y14!iC0|1"-P&Ӭ5y?rB@"/Inz7&~ADφ>4f8{trg/zWDB0ba(hP^.U-^4}G{8x4|U,9 v}=U5{= h-Rw/3 RY٦0EqP(Cx "zڝ.Gėh71_xBv30'A}>9wm_y]}տi.!SM57LUoafaXC 85PSeNnDA^.p]0><Ӹ~a@*цp)SCA"4 >@m/R> `%zhC"$9pB 1\<#'`>C$(³B 0B0,2!>\C+H B5#0µC4>)Cd-(}2 -B-|\3p Bk`.)8lB;<rBC.C39< \; -tO;n ,\^ ar ,0` a.lC.`-0%Cj|2(>0P/$)"2̞&n^Ei\TՃ,@ P7@C2@hCp @H?@T`p@?BA0@"8@ t@:`8t>xD@ @c#XAB@C>@AA>`CdA$$P,P̀* C c̀m H`><K>A$`)|A C(@ a*؀!PA;@|A%@$dC>؀5/0>fA 0 A PxOvWROA?eBRP't0q"hfy7bh[4==x?l5$($C `2&y,@gPXBȀ `4LT @5h0P#e?#>C[ 0C?|B'd\*3>@d*5g[RAQ%NCK?;/@%'A;!C¨ (>C?0 [z3C;Lf?h hC8+$Kzd i:L>$h=L$&Υ&CH&A??^>vO"h)iJi jjkփ'@ 3\ `=X8pe"+\'ȃ,4 E$/%Ѐ# `C*=C?NbXAЂ?)A޹+BC> @&>A@7'A}z3؀^&0t11lS?B`Cd]d0C ;ºB? 0>ħ ,,NSnC^,'@*[?(,>C*~1؀7f$~n3ݻJ!C*&)7BR)W*kWB}hd~-f؟Pˠfa?P?  ?B#|**pIC*?8C0@@je<>0+\AN@\A&xi%\l!C>B>Ё kNჾl>,3x ABB؀>+y>PlX>dlv/~&A$t-$>B@=CB!,\3n}R;xAQ/$Ч&NA$N& ; 51\02IقF*kZIQC8@ >t@,b4tpꩦ 7<.=bpRF38]ۅ8$*"tkÒA? (B;(ޑ'/,i[iB&%dToej@&+ CóF>,Ԣ+)A)]o?D⾒*p/A(0̚h,*\[*ACB,m ;A{՚Q];PٖGk%2;%+(%0zj `?tV=3CCk7B@%\@FPB:- @" ̣8DnB 13XаN& )9 743(]d@r>h,&&@~/'3/-˂- /$*͵+p-*$`.>50@xCL$L) :B`ue^$5@ƽ oe2 C?~A>a;7qoW<[։mF==šP8ʆX|%d>@B#+H{AuO!$#x;|~RQ^ :@(k($ yx0CJ[ C];@t&(//x AbB\<<')L[AKC+:C.5@9Fq?:cqCWcrwF'Ӄ3/XTyN7Mk97\T]Cw:Cw4|_:8 y\0307@chv[]?lÇg9@h8x9[h^9hE5;{߽;u;X.s<|h{=|.j;+cƻC8;oPy{ÓrK\<[9|([Qa;$7E:G?<ɥCPs?]X隆YUA]T}ЛN d1+,%qI]=Z<$Q>4Oˏ=qxyyXp㓽7ڳ}{||1W8d\;8\ ܂Ez}kUeWzmW9C<>YUzr[ڮ|VZW]CxqdeX;?W3cT±weWSUWUyVV?~|mt4xaB K'_D)NtcF9vcH!?4y2cA+G8KթXs͐μ9SOCSR%QK6ujTUzkV[flXvxeL=\9Zθک{]Jk˼2R-Ćejs7%7YV|sf'tcINXޗ(I$ #7'E%'Gt66n3n` ީ6CӵqQrJOkc̃*y0I,ђ)f(فGN _vӦPK OIN`xВ? ܌=B#ʹKC3:j,QdCd(z9-gy()z)Qr !1EgGz#JǞ%mt80CQ29E}\N:D*!G>&N)G i1q%%FBXN9"1F$ßdhףdi#IX`B}:)yN񨣚YY`د%e aN8E3wߟU@$5$(ь+kXaq!@0?> |(C@ VYq@[YB Cp8ұ=>$ Ȓ0X$by@-  C0"x5aD@d:5#Y`@ES \hy5$xKD@'lIN-Ai*4[Y 0ȢykhpFE~!J@Z\!] X+ƱY6 ͨ6z6jG),t HVTA i p'Yn|h,kP3PԖЃexjSpkIkOsaGM!Ej뱄^En㘕\Y*I4BJ2p50Ub%Qd9#V('4P2V==>(U9#,Yך  -ԗYW*u:jT|?NMl2ic:Kf!f I-&ߴ8ߏ`h=7RTK(oOd0l!kZFEҽXiNlEd8&3#8-~h6k 8#j5|?UuŲ:1ֵ̯E4ga)䐫l&5x%uu<$ 8DBPYCF,䊫z'XWhԡuF]SoxRލl>xz@;!kkx̕5r$ifrZ,TkVcE/:y8- 3w&%jEn}H"O)v55mƯ,U Saz0tprnlT>؁a3"A@4I}>R%`x)Y%!p05 zBא?edM!i?jXP:mֹ^RVIUj(`E3A 腛נŬAt/LMj9dkW`Rk|>D3q pȈSX2Ui'r;P!!ꥎW1368[c/\"|!L;kÑ=X`\o@ i\ pBG9t:-;El=5XaH~@ڤBZPdGjk t,@ h 8lHk"mBjh_NBp!pNŽORȮn+n je )ft j_J!" $j!z-# W$K(: :I~@Qi ~,Ds&j;0Bb` :@Oha :h ߌ C`gBlYzN~BP*F6ۚ!:LL=6BΖY.FaT" e֩ AjyBfz( :(A@+F#`I $Hkxzli<BN$ Ú i ꃜA&!xR2Vn`pEj_NbA&6V/H..0!H }jc&EA6BBW"!#1 ˣ8"#"M%"#2%"_1& [8"9Rtr);&WzRLv-WQ)*1OmKH14h1D- 0ҡЀ,M#)R,,O&/"{Β-C+_,\@\#К.R0S'0%"*j*IC*!nC8"0./0(2E2.Aa23O5 0 31i1Ǣ113Mj,ׂ6SOF-,_7yS8)WsZӀ^S,b+b8:S:789 H9Â9b6+,ܕ`6"$'@iOX "boVoNGD"6bg"@t"N6`W4FhaBa7 @f㬂\ 8qtOu= bc[f atR J7"nb lgg3Qn4a6 D<abBfs-"a~z-A M.b .rmu!IV~Aa!Ȋc6 n&C3uWuBb6v+*t 6RՀ[Ur'wO+W+s pz$nG > &bB ("%Ѐj1@!iMڊ 2p `F!C *hdX8؋re+ %Mx`"bn7U` ?$"B"pDdvhX8)#/" L`2?zh[ٕɕNfwBl'bw(Bx_ xUxHa""'"%%t ycA@ӡXC^Yfe Yx+v=wvӂ+ҡdϔ-*۠K>~  !>^'>+tQU 8 d<4pLs^w{^臞TʳBߔgQkx~qȒ!l.潎%w~qģ VLi'_zpʱ3;ݼ{ <ċ?<̛;=ԫ[=ܻ{>˛?>ۻ?W.O`ޕ߀` . q6aNHa=hana"Hb&*b.f2Hc6:ccBI@dJ.)ޑL> eR"V^?Zne^~ fbIf]㏋Ubf7iCgvމgzg~iڞ?h> iNJi^)*3piJjj\ x˦ ,Ŝu > mң6匴n%~ .6& ,-m߸7nYBoKp- ̰ _l O1 .ƙ̛ r2L\p*/%q\sWjI7Y?7(綳Zz0-̫mtP#)\PWԃ8B TCC ~pA[ ttrJPL͌3ؖG%*%v4H}Hwf=^: w޿rC C `h nТb%L"ZL"T~yK]ȓ6C |Ȣ%0#Kmpl:0Z%hrk: 1\ȧdKD͘"N%nX'yX ے'(6a$bxC1k[':A9dHxSa4MXZ:~ X$r~#\ ҇>D "8sZsD   @`N~!l@h 0p 8R `ԑr%ҔH @7WHa#:1oD':AkK( J KC ?Q4(@Ôښ1+x*@@ri.`HDԪlQKd0 M14&MHaWJ : Yօ#dJ4Cpu7- {<ڌ b ,Pq(%CJp;g4n}^ж#F.$rw %,;-v%"v4C p , 2L_G):Q@"8L6Xx@5<`{$7ҮcK^:\rz3s6HGf A71qaD4n; zpK!L,k=ZA:--K(CΏ[~{oCnqk~]Fq;è6T]Y߻3}x2ay~y?œx,>r9/_~'A.a|+Ooh;V1u)'ga0?04Qt`O'?ԯ\m]HDgno`j=)U?ӊ{'S= 'Jh'C"7X/vȗ/X!hx!'x1$H!&-/1(3H5h79;ȃ=?A(CHEhGIKȄMOQ(SHUhWY[ȅ]4Â_(?chbSg`kEo(shRw{n҇(VhORHA҈(:h3R؆艟(HhȊ(Hhȋ苿(芙HȨa:Ӊ(ьh רQy(7h刎(Ȏ嗀(H(ȏ)Ii ɐ  )Iiy鑥!9#Ih')Ȓ-y/ 3y2i9;ɓ?)A)~HEGKɔMO Q)SIUiWY[ɕ]_ a)cIeigɌ5kmHqisIDhw)y@ȗ} <(i8iɘ4蘏))0Hə陟 )Iiɚ隯]hM0]XM! ,    $   %;("0$W'##%$%*:&,**,,-2224f2:F4;39>;;=>?Bv@ICBDNEEFFIIFIWFKKKMvLSNNQQNS_OUSSUYVZVWZkW^W^WXUYb[[]^^bBcsccddlBf{ggkMhsfhjjjkDkNk{Klmnqpnq~nrKrssts{KtTtvvyTwZwOywy{yzz|zf{]|}~~~a~]kmqbekunpkTxdrcjўա}Ũîȴ촽Ԝ˼Ĥн¿ĝɱǼΣЯѲҼ߯߻ݿ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb 8t0cʌY͛8sɳϟ@ JѣH*]ʴӧPJJիXE'>`G,YhӪ]˶۷pʝKݻx˷߿ LÈ6^yILeˎ3kgȜCwYthҥMoF]Y5g֔]-Yfڵm{7ޑy Z7qLJF\p͡?\o׭fNËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v9o^)dfhpriX҉|y~*6J衈&Z62 餔V:fa駠jꩠꪬ꫰"j֊d`֘+&$L" ´ͱ*kbuOP`  0 '<l.@{(Æ:B,RO0n +B 0'l?2 ; qq1,_r|! MB p̤l0Q7FG: K0?H4"#`@P+2ՕeY-jWd[Ò:xӇ6x y{k}ۜk!_`ߐ5ֺ PC-ZBFc?pX _7—Ct6bee?7/7=u~)8W/c 1|OX]Ε*%,< 8A>N0AUhPG *t #%С2}pBLdPdUA W||aA# Uļ!(t  #BcV,аd΅S0' b ċ QW4x@ `ĀL@R*A 2A:u\Գf9tM2Ehi0D L%/li12TQX@Xe\(PCikPF< QT#`UQ1PJviAVݕp])ZUR!:&ܵXz(`Xtv`"p>u $jH7ʧXsmMA'Xb @`D /2t?\!| S~b İ48TaR",T,Urb&7DR `֎jq kԸ4)NVV+3hgc l"8dInl'(`PbyǖVgw9tͶ XG,bhmqN`flC"8x,` 7p+\bZJKy ۵y$!Ĉc5$3VX/#Cn X@+-qk85Y8{ lC<ͨrÚ-<2 i sjt3߈67~  ^Ն .p;w ;6:> F`ܙ01<ҰD\.r0Xnb844ĝ@C\/ ¢!M,okc\+H\9U7 |E9 ;4qX+mTmch=.>w! vgdع{4)N1w?8‿ Z-x cJ^s\@.v]e}d'cTElDPYpfN,{-fJhqPSYx|<3 sp$70\U&2q;z2.`*^!uF`'1G,oR't+qK*@17iSN71:ce];݇k'IpC5qcpAqpp/5,'Np7]i~sQ.0P6Jp3;5zI8}8E0\x.bC7=wOĈaV3NUic(gxJw8T)u365Ș^=@yG7>d,eiVvv/:kEAMB4=Wۥ?rzvd`0yKt] @㋋vxtODeto2a5snk]&V(vI`hA LV }2Ye&=73x.cF'w/N25Xb1..|Zs5l[bpi lX{),4wogC]7[ɕ7+=hWkp d`L󒀈\ @ EI<y @.6VKS. ^~ǥU 7h VPd# d`Eu pD\_ \ЂaP\4 74s炔8c" GTY[Նo{B?kU B0]Y2ʛT盋0KtOtw3CUhD<Ff1[AOy8DU3'J P fDɤ MCN'.jNVs v3^q8hS7l1^ås$ $R0[@X{0tY{p۷u(2l4~01[L# uM`d4$7ԣ܉M|eUW}% %4*00j4 p|TB zWw+lpX\`UY BPZ/;uadW/H:^IZeIT:KU*`EB-(.jE:Z B s:͠]B= #b`r3 8~O$  7` 93[ p^rL ,C`ChеR/A;z;1ukZ]A q};g;XS=9=xs#4uRF7c}vS%>s>`o(<]*!L8[w&/c4bqum>Kػo=*t r | b;g,47K!Ncۿ;LWR, o|!,a;!P_\.҅s!c\&*,.02l|;6|8å2<>@BL=l<32ǏE}| C KqȈȊȌȎȐɒ<ɔl \ɚɜɞɠʢ<ʤ-,JRʪʬʮʰ˲ ltɳ˺˼˾˽\˨,\|Ȝʼ̴|<\,̩||Σ<\π*l },AĬ=ѡ"=$]t&,[.]6} Ӿ+ӃK8@߬B}HLaJPկR}X՚LmӎZb=։adjyavAr 6 Ll|^q`-14PHOF;\tII2Po8k}ٜ==Ёb OA.t5`*8<ݐ ٺτMWVLe ˓ ,yIo1:ڽq1f*usr@9 ?\:HLay@CPGELH1@7@u^p!7:J p26ZN(4hD.f&~⤌n1萸 a[2:cpGr C[gR>啬m!jQ[pT7fELE.o`pTrVXфPb PF+ug,vd,s`i~k>6KھPe9^Qql]j aSBrG4dH_v1>8aQ75X3Md&j8.6vEC>Ԏ~*_ MW7X 73 =[>؇?̀[(Uoqj7[8ҏNȕ`ݸ4UYVslja ,X+ VUUn[_@GU׆ECQ@ 4_;r@@h_A cvpbbF!`h,- dh6or_bmPO?|~?oҡ}uݡ?Oj)?~_وf?r??1-ğ_/_>oֿqO__s>Ώb}Ʉ ;+$XA .dC%NXE5 6%ýϵxiKTpAiA +0A0 /C B0DST#+qcqFZENɣ`K%GTR.ñ*eB*cCJ`*!%T7I!L1HJ4ჅBE`$AtTsMFI'h X6$(SS 6Li N2"N'T%^|G``QK5<6S.XёXNEH`#cX8m h=P| &`auM]tN!8IEQ>1eXutaWkMIC,e 0ё&JB^XA>/! tPa+a!TAڥRe!׎Ay㄃aBM4]G%m|(6q/Lr d`K0͕s0D]T`[ ,]]䕽܀ `CZ"(lu`C@z@Xe#'$(@Dc WCCu-BP@ ь)QR6Hk`@D$|lj3_py%,8UђZa ;lx-[m.1QUI.1`Qt%(*,am4E} M&gFD 0y#ko|a$(ٰNDݭl.K$ d,gFum+R"iYI^2wYs&l"3Y{Nf>Zгq=hD'z4͡hH7ѻs-}L5I1iPoEǩtNqfXBjX'eԟtu!nZɬS0a^@!f7 '}9BLi;;Xɽf @ϣ&@ hTnwat&%6(|`G-Hza4@;p@ B,q?OeZ)@t}{'B7dnKq(T@SQ[t\*ȉ rsЄ94`bfd@0y~w Y>w=:@ lkM-joI/PTAx]ZI Bs Ex;0 bɂc >@p8{ 6(87?؆  X*0 th ?@<@  g[AH:\>(C`!p ܾiAd{ CB+7 85$2!p   @h ,AhB#CC3s>#ܪ^78 8^`U6`ᡁI TT`8C>Ӷ8?XhD_#7X*h 6`4p 0ErD$;Ȁes X7E؆ #ȆC(:2+zЧ+GB[4\l\^hCs I];7tH9AA}\ėfD6H7tC8rb0I yH˵{ þe+J\J ;6o u9$dJ,ܶ3 X"}[J:0 "!5ɵh˽+ (H JDGG\K|ɜLʬL˼LLLLL MM,MLp@LXOOOOOOOOO PP-P=PMP]PmP}PkȇEn;x2PP QQ-Q=QMQ]QmQ}QQQQQQQ9 н |=؃>XR&mR'}R(R)R*R+R,R-R.R/R0 S1S2-S3=S4MS5]S+̓>;}(ۉ#M{>S?S@ TATB-TC=TDMTE]TFmTG}THTITJTKTLTMTNE{9Ͱ ԉ|<؃#MVmUW}UXUYUZU[U\]M~ȃ7:P"%SMULUdMVe]VfmVg}VhV>UQ%O`PB=Lָj_ݶ6nVp]WjQa"ʼntVvWpWrWsǴW$V|W ~Wlק$UיNaHÃV Q-HӁ"9*6`-CP̋KDrsهؖ8*(#;5*H˦E^@CyY&]HYY5O#Y*(-*]1PJ0 Xx[ŀŬp>IZy`qڅۆ{ }[kw `>[R]dp@HFM IIȅ,`-K i,\]ٛ:}RuK%XH86@*Rb0SXz#Ё+E0lO|`]K0`@tU2PbCBt0UMyz5`NI80t *# Ui12XXet CP_|*x#)^r]tya9N]B\&pل.YܘHYMٛ :fcXphY0p^lp;[({ I\Cy ՂZtcP `( XgPyˡmģ1&KAEPXGyPfk;J_Ȁ@0hɆHp (2DfYgC?& (7N#b񌉎-[IW' ;}b H݂u uh b0Aŀ %DAJ ɛe-=!¬ȡ@G}n<]iVe0h _I;@d+HiXtוG@P. <8:2k1^knk~kۛ٤Y ``ٗЇB3NX>4PeچHh2@(`95NP6q(Y6i6 h?A#ȅl0 F P^f>&0p>8Zm&Xnn@(lM&о*[˻DP2i8px@0-#@ntA՞.l#+pY tXn}WtNg%^}gef}hB@YmE n0P/I^$+>ݖqe 0M`i 7"., 0Ȗ0,Ie0 0p!880O>qBl`o5?|ةj6о p o0ĥ%&fR۞4H؂/6pQi3/u–vm0x xpn3m1l>/v>% x/z(thv!s ^]0 } +)S  h8f( OntH.jo@n>IP`(G7MbMtt"XHHY`a̵ `T0HQtUQtظA eCy{,*,X{<:)%.FeYYYc. # ˡ;C pB#ۯ[n .\8ȹ C"pjqO;nlp<0'r,0f-A =4A;dсMk-bKWHU:UW;PZsT_gua Qu;q4=6=S}=VܶLj]g ?Kl]_}\=gd>{= }/~foj}?/?:׼0Kף1{>կ|+3o|LBp =zp}{! c(Ұ6!s>!(EH7>a?я)RV"-rG(F0bqc"h/n(9ұv#=~# ~{xC?%21vN8Po*Mr$(CiIL<%*M)JM|%,cUҲ%.s)L沗ܥ/I` ,f0wKJ/}ްEzl#B>䡛7`q<':INp|'<)yҳ'>}'@*Ё=(B ڇ;$\5MP(F3эr(HC*ґ&=)JSҕ.})Lc*әҴ6IPjDrrF=*Rԥ2FET*թRmUխr^*X*ֱ8<ֵne+\ַƵs-k]zױ5{e*<r@#J,O=0CEd# rP,f3Vmg*ђvD--jY̦lkU֩mmzR`aB)^aF62}.t+Rֽ.vr.x+񒷼.O2\>Ƹ]ilaKު7Qs+}`uR-Gjzӻ1J3wuZ_c%1S8͐pO[xi-K[l^0`xp'Uòg!-s/qd^-92w 85nv>v3 fPydrfwؼj~ 9'ZkH5A=w d =ms[aG(]x+֮B 8a2$C}߯aD_u=cÈ#tpa'"=|x sؑB̀핳ݴqb973Rwŀ+[FpF\1},=@Ot@(X ܐz6.v}tGq/keqLPo{>\1C'[u8x*ξ)s9CmWLlG` I086 ÉsB70B/ XF0:ؐ-XC(6Q XB:8Da yY4 Sl ! ՕCX1-\(>#(B (0C,A2B!>X*5"(B4\>B%`A-$u2t`B- >A-43hBf\.C)C8d;C-3B9,CL.`)1"&bO^{X:,@ P62dCp @D?@T`p@?B+@"C8@ t:`8t>pD@ @b"TAB@C>@\`#AA#LC,L* D #@e `>8G> A\C)x$A )!LC;@5//9bC  LtJ.eSNJA?=NA% @'P0)c>1C9b@cVP?0A<V ,C?t B`)2|Q>8B!*4DVNLITFCA;. !AyCg;!{zh'>BC?, Wv2C;f?` '8e+#FvA`(:>A$xh=G#"A%&!A#LB&iI&5Q&XIWP"=pBd 14̃ \C!8 %Bqb@< ?`YDABH 8+ /CA8B7]'yv2ZB&\/P00DS?B\٭h`,CB;µB? /t>|'B,Bth,ANjZA,B')C<:^+(+>)z0@7 By:f2ݶ+!)A&)@7CBNhR݁RyT .-*J 2fn%$P)p.P*\,Ty(+8@(d*_f X44~p@ P@+>@ jWx@ȣ[Xz9.@! $WV>VAb.C7nܣ?& 8N[C'<C-A=>) Ă,NQ'C@*A:xl͢dht@+bHF4(*l-J*Z 6<@|bl3P98ԅ)b$kA?܁ `(B@;].VNiB"]ݩhq呥_C/h%el,Re+A$YNo?N[]q.Aށ$/R(],]X+Wv(*ܬ?p;[R(MVꔨ g6[ OF Oz%΃$17$*%,.j ?lV6B@%\H:Ȁ( ! 4 @f2T0J@&!)9h7$YA`Cr>BT^,@&C&؀zA/"c2/XޑB->A-/؀#t*aF+ u-*@$\*>㥲A5,Cp,tG@$&):[b5eYS$0r%B2 C?8z%@66l/W7VF8'FfP@4vF<.3&N0x @m F)C<Ѐ,@@F?mp*,B)8cd8@|6@ Q/li$ 0>T4 0;t /A(B>p BI>(BAt궃%!Mº"A20C>Ax;n@8) ꃈOi#2\ݝ0tl^رtd82S.qehBqel$d^>B\3 #]^Af69:̶ppb6bvB\<4C/@8T'TmÉa/t6:lCrA5z8,gGdD7d_/^C<1T.4oC0:Pme?|64xRO?C7e;Q:Y eNWõ{>t#;C5-CNOQg];籗ڍ;ac;fpV>ݲ;$;QO9>Cb]q^[䚟g6|3a?\A׵՛~|!aYTE d@|C> 0AN bRd+ @xî]h<ԗ0ȓ~pٛ tA?)KuٗQk_W3c_Zu͓?u=mCk~S: KWaB 6D8ĈUtxcF9vdH# 6weJ+Ytf̖"VygN;yLf%-z'Fq-~lцۆJ2TM3R%Z@b)JicfKnj\sֵ{סɠ{O DoՅIsmljUj&Ipm$eWl&Z6ERl<.KͱDr8.)A#)rx0'>8'TU*"0NZ{qζ)>|(ES勁Oɏi<_>Щ <+u:/b DLHɚ"}p9$}6Jg`fDgD}JD-ʳ(x`c}9:2!JGM;K"}F1mٰC!J(ĔCȦF}^BK\D"nj-\*z1 \Ɇ 5a5MD^:3*3MNT9X`\W Hdi \PKqeN6RINksi\ kr |؆$B =+6 NQ"؏@?la(L>b Wb!,p9 w%hS`t[H/bCFl x8AJ(BJ'>"xa^&yp"DjF<ġd C6RZ"D!pG6bQSz>}ᴋW}|bR|! |Fq` ÓPEu 6|_ҙJ @+(PHGB%:N @OTk'G1MQLM2c T6ġR LK]סCd)p) !Umă|`vS))Rzy-D4ZÙ` !: T`l8iup8t(YKcP Z3thM0kwyB) _\{Q.c\ 35Z6ja>REP7|(n:-e҈Qa.+LJ!mReQ)T8I1|;QŒ8 5cDl>9M *jS:"LK %p?qbL}ag3HjRߖup6S>Љ>D/3 0wP3! [֐/AQ+d3q)l>58N8TI6)L\hb.3 2xk7RJͲx jM0{Y D8v8QCq88"u \Y("E$] z\K9%qJepw 13˲z4Nfb' FUOk5MlBnhHFe8tV T@\yPDc\v$}Qј}.(N,4E IeD g+a Ɗ"+դ$āTL(ap Π'Ԡ_ !?mȀb"7@'.k@ \7\ax! Ka?,PI'`)P)DZ𠀐G u>"(> !:u !vGLN!D+l(P0 L" ,j)x {Ո8"bd v V'6>L P1|0!p)[,P&0 ġAg$C+Ȏ!*T$)JBEؑ9= B&c!q1򴂾y#"1T-# q4-r|$4&#aCXr;E$H_&鲑L[b9WD"6 .d+>(-| )'?&F!~R*@"* r1z! D+blb-2h-%pF01& 3n*)R-"O"$aZb/1 -& '.a.0b+i31G( 43GS5W!f22i22 2_"0X7sS7w7r\5'6k6R'/7S99sZ!3Ss0j%,,9Ӓ; .C;Ǔ.A:-:8e?>S>>>?>??@T@@ @ATAAAB#TB'A)b/S0·:i=};0#DGDKDOESTEyZE_VTFgFkFoGsTGwF{EwHyGH]4HITIIIM%<MTMהMMNeL!(hC0't[}Ĕ'Ȕ%4N PQUQQےPab5u)=PwBPWQS?TCUTGTS]"R+-SK/3u TKVkVoWsuMg%X-}A[`0S&xUWUYYYOYUXirZ DXXXc"Z[\U\[QZDUc\UoR.s[a\Ǖ^^_]b^Rh@$tb]Z$[}$^_b_Ub'b+V5a]NT@dcOd _-OgSUb_ck%bogsbd" @ (J d`y6]]SCV_c“jʴ fV]WM $IgVldD5(0gc@4%NV]זi[V6%uc%6q/eiShklq/ r? Ui/PbqOh T`sMpUoj&`%] xG}8$rfh]zvSD_܍Җ"Dbtf]0TD*2 3 kނr|UBbʗstY:`XBbico["cbaoQ\H'h=*zք:C (%(@TLNU FIUN 2x+fp+ـ?9 @aIx\|c\5seBT{8Xtc/ʵ`Nk4`]a<ƼZr 8C(%N l"ZJ,M6  `OLg ) XI'^oq?&^ǖU\+uU/;_T3u=_G?YAAnS_y_-sco&^oQ{0i<_Bٶ??_ _ٿ?_?PC <0… :|1ĉ+Z1ƍ;zhټ$K<2ʕ$3̙4kڼ3Ν<{ 4СD=4ҥL:} 5ԩ=c5V^ݚҫرb=,ڳj׎m6ָoҕ.ެz¥7n`F{]6㲋N 6͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[uxٻ{>n/>ۻ7}ۿ<> gH`x&`>n FHa^Vfa~ Hb&'*bĥb2Hj0ֈcc>dBIdF<@xN>ٝ?l#V6V^eZne^~ SRMBfcn grIgvމgsR&J46Jhh.JWf?I"! j 9HA:i?0j<:diIk=jªJlڊkJ* -Km{ñn풷Jҳݎ[]-,#.Ӣoȩnګoʋž+{Gcj=1J~Lk#l llf#'_pȞܫ(-? ,w'O3*+,,*:4 |: s" &ˌ$,ˌ8%YB K@I6vId31Ԡq61 ,Mͮ-)Pr?syޢ%qL#P5Z^lȰ[vHS*PIb%PNCj ϚB$vTj^h$ŠiHE)4fTJcܒ$Ir1X,C'PACtmA!"P?T>h%O+f|~ITM~.K5Wl"8 e5.1Mq8 kSTCTs#$(C%?~ M'HeN РV)-uHJ<bp)S@"28AdI@>611XSB~AЀ76TDmRy[A VЁGrX YGw~uTJ!HJmn)OA>tu]^ m46a[H,Ē>83y$`ч52;wڌ35ZUART N%OY!Ȣ*[Uۣ3 rE\5CЧ/Ƹ ܄[WY7A%bP/qlL 'K + m+" FTZP08mH5Z뱩&(-0e1pP ԇ>LkAifti G$諹[*?P>Uu~!&G/@_8A R$# ,8!8qb3(.`|Ms'"S䯯#Op?2ۡC8rhlp`1:}lC?6m4*ƲR6 #UTOϕVHQHbp`<3|n{W;S)TuVM[]85;N-#p7Ҏ8m-vOw?1|Ng/Gyˋ>RU)RG{O.um~+TΗ/~ oKԿoXS%bT7Ý.Lo%_X2l_+Eg}H /h Ȁ(Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=?A(Ch!TGDKDO('ӄShRW[腒҅_(Pch8Rg1k*҆o(#shRw{(HhȈ舏(Hhȉ艟(Hh(}H~ϡ(hR苩([Ӌhw8Ȍh(hhȍ(Hh爎騎Ȏ(Hhȏw)Hy 9 IYrȑ j(#i%ib)+ɒ/ 1)3I5i79;ɓ=? A)CIEiGIK ɔgOQ),HUoW([i]$a)cI hgiȖmo (siuiyɗ} )Iiɘ阏 )ɏCAJKpAHK! ,    $   %;("0$W'##$$%*:&,**,,-2224f2:F4;39>;;=>?Bv@ICBDNEEFFIIFIWFKKKMvLSNNQQNSSSU[TVYVZVWZkW^W^WXUYb[[]^^bBcsccddlBf{ggkMhsfhjjjlDkNk{Klmnqpnq~nrsqoKrssts{KtTtvvyTwZwOywy{yzz|zf{]|}~~~a~]kmqbekunpkTxrcdjўա`}Ũîȴ촽Ԝ˼Ĥн¿ĝɱǼΣЯѲҼ߯߻ݿ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb+ݸt0cʌi͛8sɳϟ@ JѣH*]ʴӧPJJիXM7/>`G,YhӪ]˶۷pʝKݻx˷߿ LÈVO4aӕhP@)t'#%AҡC2}BMd1QdCtVA g|}aA>C VļA )t 1#Ccf-eBΕT4' b ċ R4x  dфĀM@Z)A 2A:u\Գf9tMBEhi0D # 0@/   4Lp4C@He\1`_)Ps%KcXP,>&A;Yx,` 7p+\bZJKy ׵y$!Èc5$#VX/#@Cn Xk#>:sq7ǘx/``ym肧`XnXW>maM̀ 6Fs1A ڰteX.yG;ag[ׇZM{&gK_tՕM_K"-X Xf{(tpX2V4 5Bb W+v`EY! J('af[j=zMJрmc=>~n2 ;oyb>D 0G@AϝaL{D4p 者x=hΕG1VKo0 %E6*#b.t3rsG{8RM3{g;mpTڶn`{A)6'MXc|0HPr.EKJS`g`E>۳}dcDEmPZpf,z-fJhrPCYx|<3 sp#7 \sU&2q:z2.`)^ u6`&1G+oQt+qK)@16|c1U>Ѕ}Hv7$\;@ 'j +'Np6\i}cQ.0P6!Jp3:%zI(}8E \x.bC7=uw]ƈaV3MUic(gSw(T(u365ƈ^~=0yG7>d,eiFvv/ӎ9jEAMC4rzve^~}w4We:P9gFePfN7Q6YC=@[Veae`Wd0@yq[ms~׀aq82f`~bzQi@.S[=(kHa%’8ɇYU0'0Q_ȶE.aaĨ0f1`1 b`NcWFq&=p[i|ƒu^+ G{P 4- ǵ4 2\d?ty.NM ` 4bb4.a/g\Y m`(.N0iDkJ;"p\1 PVdQƩI G852,eE pMC8w.GYS0 Ðx4UmW,V% 0҅9u4LG'y7#Te(jM#`d6yut:D:NSuX8sr` `NL( d00yd{2KV8lrФj8 m7QG5e͆1s%\8GR0[@H{/dY{pէڧuӛ2m4~01[L# uM`!c4 #7ԓtM}dEW }%@ $4(0i4 p|d2 jWW+m`X\pEY C@Z/;ea*tW/G:^)Z1 M X&jC3 )SVd/VjBQ-ܐ; 9e,ԓ (;&6 9B ;e jy @ 35 еu:0B `BhQ/@+zg1u8 PeGKq[kh ׷2;g<+7=hs#43ǎQFkc2 6%g9烺ty.2+A;cti'b;1@!Vw&ۓJ+ } R{n"[#MJGۛ.Nc#ۿBMW&R,o|!,l @_<0҅s!C\R&*,.02\|;6|8ç2<>@BL=l<32KgH B KqȈȊȌȎȐɒ<ɔlDRɚɜɞɠʢ<ʤ-+z \ʪʬʮʰ˲ lʳ˺˼˾˽\˨\|Ȝʼt!<\,\ |κrL|Τ<\~*l },AТ=Ѣ"=$]LΝ&.ǧҖ0}8,ӿKӆ[:B=DJ LR=հlTZ՛l\b=֊mӄ dlzaws 60Mn~-pMr-14PHOF;\tI` ל1p1 N tB7U*8< ٸ aoAskV?\ < @j`rPNa˼McX7G0esȥZLapTW4 uDd`C ep4p].=r^ia'cbm_`ՀHCNb~(N=  j V m%>3'|S+ 2 UM0yN)>T^ .-vP4P[`T7fLF.o`pU>tWYiU PG+ug+vp, r`km>6L^PdY~qiQNߥ6`SBHf~y@CG`3~hu[8+gvNӀbSW\:U~x9 Du5nRp ap3ҝpSE Ѓ}h0 uRۺ ._x33?+ u\bQսK^UnE1 ?, /`x`tj@UeIqSz]X4$C[@H%8; G/0k>e7 F;(VbKM/=j"oqfhtO#jSR_~_Ow?A/=Ӌ_h ?ioeO}o/Lq}b__?ȿ/׻־x_.)Iֿ/W_)^[ί_Y}ɨ ѣA .dC%NXE5nG!E$YI)%K1eΤYf_tOA%ZQI.eSQNZUYn5鰁7Ŏ%30iծe[qΥ[[ey_&\aĉۘ_ő%O\e̙2vy,d͡E&]i?9{fmjرeϦ]խu}o{ĕ/gsƏNuٵ'>sŏ'_~jwg]}e˟_~p@TpAl@䑇B 3* B Cq !lC#qE[$DPBkF`LFTG DMxDzƻy&trꉞ>J,#1#1(+R3>Үb Xs'Y6JfuG6UQ<&Jzd6Mzd!xS3^>)Tn U&LG(aS`A@`O)t!`lzH!tW̛hh(6@Gt(9'.D8i9H( 3!ܼh3-IdJu'yt ȶN*Q<~8ZSA圇{lC-ص^)zR MAipgeF t"qnZ[YQbZj~xJQ]GkmEp^iJX_ zi"e'5x(6%⇊p'@FwA t|9L@M:,A ֙+sI >@yA#u<_ 6j'CJP! X8A"$A B ׈/g˖?Fq>P>hOR`>zAԉ "V@N?qqCe4?ԉ7), :QD`Qx*O@zF՞O>aɝ`}%!%: RՁ,8OL#%N(V`Vד6VS!C>8PW Ahd,6JXL2*C1C 9.t27nk1d4BT{{Ū'QtP&0'}x[ -wĄg@1 pb>6u's#( }xb!xjD*J4CSTr .zvwh?=F4w%{  }Xg' Dnj8(Zܓgu'BP&c!k. Kd-r'He{]>.|dy>[>J:t@ʴ@}.f<_Yasag@:RTЌ}hDgs,z:t-Iҗt3lӣ&5w]#eϥfujY)HZ3@ L`uֈ:@d#A|lhԨ҄{ۆ@m,`&w?:mjCIoC`[6uzt vm@fx> l{;V?CJѿb47;q@ OA rsZX.A {g |UP&sD19 %.3Pqdp@YE~I^J:*%J_: Ĝ*/%2L6,P쓤?AOXهJ"t8'!6  Y8Nxؓ%g& :Bՠ4 @K ΃N'Ac ͞JI-ߢXaX *@y-v^ L #MN! (v5Ѿ;=pC|-ȉTID@ 0J@*+(#p?iт P?\TSK68XEỀ AS!0lA9#AL#@BpA/B6D+6 tXh!Pg % mh'ԉ1*jc?; - t0Aɉ$L*9$RI=-gp0aEA΋;M,FDuc YEg7 +x 6a;p 1Ȁ;3FzldD;Ȁl Y8b42k#J)ɕ$Ӊz@Gtۍ۲\_x,D JPd7{LIGBc3Şm+?TIdS{3D>jмlJ3뉼clJJs ;6ho }\AJ=?x} z[[K\ܾ@II(K@HLL|L+l|M,M=S>B<}4*= {G}THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW{ A-TR,|>,N_U` VaVb-Vc=VdMVeM~8 TCUD\^EMXVmVnVoVp WqW?xVZ=ĤP=MΌ׿sEhE,}tW z=WhU|]i= w]طX{%BvWeXU Xu="1X,ןUiIËW X Y`IX-XL+6h.D̔EJ)с׈D DC2Z!@Y0rhIU nh\I䉤X>aZEXY+8=+1JHQ$ Y<?Z=ڲ zhIIy|ۍ6uں kl [ŠeAXFS JXJ--L qHd Z;}Rѕ[v%ݚ[ KЇ65+Sh c8TX#x.F:$OςhdLau\ڰkIJu8ƕT.z zm_t {eI?_89ab*ka6P)KE*2=!`!`X!Z.M[&ˣ)`%*mX-د4۝- ض*  [p? zH p8 -@ J, ݂8[t0( h) XoH+"nϣ:&RG?zHm{EʸfȀA 1hp7цQw (:fYhDh& 7OxbP^͐Y}Y~ I |3 `c0 ;FExii†4(-@>!HC(P,PvFdyt# >FY_|QYM@aAp'Q pJ^JẺՃ`y sYs5kkh kkkkk- ~OYۼԇCYOXGDY(fh2F;[)h5Oqbֿrֿ ؉E9#m0 胉0Y^G&1x>fm&tAS&p?+`_U V#XgQtp:N&mԣ&ɦ2!mH}^}X.d6]}zЇg8ݝhHL<X hFr `+0ŊQpey= p.{ ``8%Y@X6ty#q4Hp!003e@ @!H90#G>0&8'_rzrkH kgF׉#\b0U1I0ȃ6ؤYjD0|IX!gi) wzpdT$i]̀YIp:׉20z2 x2ݞ@rAI8dZ6}H@#h.ӛlJLWg)PbTIϭMuOp| au]Q] x[uEަj`a OPR G P97 i̭T`}C X8mC2nTHw`\1y؀]HLDۋRA HThmx=w7|ІongAi-srGu-ڃ7HEl:Az!ܸrҭk.޼z/.\!ቮ>~vg2f3ТG.M/ݰٓDV~JşԨڥ^E*cVZ/WAmЋZz@AG%t.=wZE(ʍ+7*h. j5\B 9\ :vE*9"ͩ}ۥ "! >?Bp/`' z< 5=r=3|R@KW@iܗ?o, Ohr|S G>!(!F<"%2N^mЀ 'G?(1f<#Ө5n|>(8n#=~# )A}'@*Ё=(BЅ2}(D#*щxx$7o-u5!ґ&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*TZF9.hT*թRV*Vխr^*X*ֱdZ!մUf-k[ַUvY*WU{kU!XCU☔JI8"+Ț,f3r,h1 ђT}iSVV[e-j]Uvlaګƣ8X31.F:2}.t+Rֽ.vr.x+񒷼=/zӋ5..KrF/~w/s ` x6莃|'߹<#&ѻ Cm8b&>1#Õ̑yRܵ(p]7~C2Dˆu˱&O'0 jP>9Smq!Kb91$K8GaX{-FXmsɛ` l^'|x//HNYN@b 9;C[GԻӞĿq>qV T s,?/4w/@6</x *BP6 7NtBgA:hg~h,CF^D@3' d{`D 8 }#<--#>̂,(.5.])0#>H.$2dA2'0R _ > B9'``.6B;0&/C'a>88)C+`ȵ)D 2!B6`36\<6#X9@^>02C3x B9&C "!^eT虆C=\@ Pp??(46T@D4C @8p+TP@(?X@,,@'@t@*,,D T8C9Px6$A@;@(AA8@|<> @ 9@!H9@y]>B8& P&|;P\$Ax6T> P$A0d(>||̀ B@ !d;Q@D,@ 9C?P X> *c<8(?`@MڀdA Q"%98K#AO | ,[!&bu)"F##CۺC,@Cp<\BBH?$h@ p>jV0/@QTBȀ, `4$T@5p0@Q#te?#>U 4C?|B_z\*@3đ>@*a1wZ%Wd>dU$;(>a\v;`^~>*Lh*A{!9C3̀/\4;T\>_&@|A?CZ>@T>_LBxރdd?@h0)WjB?^:>C8i.&)"7%D&iL&C74 -lC*C6,6I%>@A*N3@0(P*(v]0/(B6B*| >#»9/= x/\>@A!@R&4aB? lؙBxC?((+A嬆gQ)@)&mz)$t%P*@p.P+\-Ty0,8(T*_f 44p@ P*>j}e<>* \AHVC;%meV~l!C>B>Ё DkA@H^%øZ%>k3xC <؀>DyA8k>~|x&A$|-Į$>B@=CB!,\A3tn}L;xAKX/$xHA$(A%t@,lb4jۺ-:*J 7-=@h"kZ3@-8,*tbA? Lh;'/ШU:&]ܕ(1}e^nTj@&+⃮F>`lFkq+h)B#WBo?!>]]%C?,\9p~͂ ,q^% \?$(|>00'탾$^Pٍ06gu1m9mph?<"=PB$,d38@P` Y/⡖*@'m,?3p`*t0Xx.% t0$?7b,3P &P75 l2Cz.2|%e8()C* lB8l +; k4Bѝ):`첝1 @L>BxkQ߂; L6!3C))XC3AƦ7h L_B0C*UWC2 ;@1U&+,C@1CS+d 0kk6sq0G3],0#mC:?t 0 T m> x>`s7P$t `B2f6C ,pr=>NB5@RAC>@B#+'{}O!#x;|ASB:@(k,)$/$PB>xrx4D.Cu];@|&#.%P \%pB]X$P^>Xs c^Ak6öl7m80=dg#5 -u;g;م`[khU>]#;}->^uݰ1^_Z_|69bEXg ]Q Ys<ܘ)מMb@W:2+ФCB =ѳY<$Q>?}k|p6ǓԎʓ[uq]`q~>>z>R[v)?;3wrI?sQ[va??W?sXvO>ׇ-=trIW?vtHA 6tbD)VxcF9v_H#I4yeJ+O;fL3iִy30%]LhϘU 7?%rjTӔNgDR1o(`.Djq_4H ᆞ /MDCPI$m`'5d99DˁNJk EmXcS KR6xR,:1@qS(G.ɰV]fU@V%ۜXRdk9TLg`5,CQo|Mԇ=`B6b!d:X< {d58t28pXX P!=EmsA!-(א.DD_◔tA)mc NATBK8SUɒ_!@b ܐ% 0ش8EOT'`Q* T1A&I,(WDٜT]i:V(R`%#V,UG}¢}ݜFZ+bBsRzX#^%QT=#V('NU(=>=C_ .l03|.8ix`*$(_b AN@$[(e d8 'g`B̒E ,ܫh`J6 HzLBi CƦ(, b k dcs!:A Ud t|AL#rLHzB8de.GH6J!HPgk<P"DaR`GlFA8^'D$I ti+^wJz'7` )l J G@:= L{&|n'!f*."A)JD#!)AF0ADQ371 H*6b,'"Aq"㱮W"3#~e6R>GPA%[? '0DDYbI2"`*Рc' '(N!pd)'‚ `4r#p'A :D'Bb\,rbR-Eb&&&W"'uK $#/(Ѳ'd ~i/'-q)!]1)r-2@R%- )B3c/;s)Hs4AS4S,a2I22ӧ/T6o7sS7SӣX55+62S3w9S997!08i88Q2J2-RаQ+S< 3:S3FD6=>S>>>=A?S??@T@@ @ATAAAB#A./g:ũ::$CCTDGDKDOE(yVE[RFcTFgFkFoGsEwtEsGuGTHYGHITIIIvBh@JJKTK-DZ2}6TAB]ʓLLMTMהM۔Zv,Bo~AKLi6"NTPP PQu-U%!O[Sܑ@[&:$UQ7S;S?TC4%URTjuEa6IsD(4$F-7{[ X X@|Y`h)wnC$$t 65}UttUb\h6<@)pG.c g$hH"FT :TaJ **e䩸*>`-$ [H{8\a|c@\NrYbR`{d7[7%ƕBkt\@IŶ@j @T$u ׅǚ @`։(N{;Ǹ)hF;P[}n s@@knG5eSD|c$@jqe+ _F(8tb'V Hb4\w$A<ɟMA.X 7R.XѱS -NwB蔱~[iԁI7;?C^GKO叴SB_櫔zeԣs-Ca]Cmtu^臞 o^闞+t^ꧾ||K>L^>&^mk˞&^g^^&Wc fi3_'V)3~#_?8K=uO[?&S]_g?Mais5 \~mAa!____ٶ????" <0… :|1ĉ+Z1Ɖ2ȑ$K< 2]_,[| 3̙4kڼ3Ν<{ 4СD=4ҥL:}sX:TZ.ԫ%z+رZŒk״j^m-\Vҭj7+[{Ul`ʵ[lu.{x\+[9͜;{ :ѤK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=Q˓W=ܻ{˛?>z׻?ӿ?1`Hw` .m6aNHUVan߅~b"v&bb.i,Hcc:c>dB#=08J.?p6RNIeV^eZnɥOByI2Ifjfn grIgo&I< 7| hJh VifI?HiHG1h&?i*=:hCiHk9zjFJlJkI, m{ð^푳 Ҳ~]`-Š,y.ϒKoęnƺkoK خ ;7ci90In k\#p3 Mmpce'` pǚҜ$?  ,v#3)p+(i:4 }J s*K' %8!M8RB G@E&luE31PӜa)710,2Mɞ**X2?$s$u%)!H dpCc]OQ@*w=h, hpr#:P+ @n@p43@qTV? J}v""Wu Fb0 pC? )),G8 }\X0 S!͑DY!D^Q-2(-r]9BSɅ3 {# aOQN qu\cQo>A X7A%h !+!%Ap'>@ZV֊;Bh0, hBRVȋS3P)qք2x øJ `Y')Yxo(E''Rdb O4:_^M`z154#eKGNq\Іd#8.lkOHXM cݡRy:-@lC/BNR‘>TD!WI?ye3}Q׮uCUWv#Z/ob6=[_'.Gf;pýYmNv ߋGr"|^7(/|*̫ S}e{~. \gOb|)UY> +o;I?7IkW٨8;Û]ΏK)o$b^V~k>w~g2QȀ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;ȃ=(1 AA@(E4DhI M82HQ(-P(U+ThY(X]$\aH#`(e"dhih"hm!lq!p(u!thy(L}(HhȈ舏(Hhȉ艟(hw1|花(hXx5yHHLj؋茹XHhרȍ(Hh爎騎Ȏ(Hh(٨ȏH( i~ ɐv(نiYa!م#IYh'+ɒ-/ 1)3I5i79;ɓ=? A)CIEiHG)))ȔMyO %(S9Uig!Y[ɕ_a)Heygk9mqsIwy{ɗ} )Iiɘ:Ƀ`$$ ɃP! ,    $   %;("0$W'##%$%*:&,**,,-2224f2:F4;39>;;=>?Bv@ICBDODEIFIWFKFGIKKMvLSNNQQNSSSU\SVVWZYW[kW^W^WXUYb[[]^^bBcsccddlBf{ggkMhsfhjDjjjkJkSm|mnqpnq~nrppnKrssts{KtTtUt|vvyZwzw|Txy|yzz|zf{]|~~~]akmolbepnpkuT~cdqj~ўա`Ũîȴ촽˼͚ӽĝܽ¿dzϼΣЯҷ߮޻ݿ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb 8t0cʌY͛8sɳϟ@ JѣH*]ʴӧPJJիXE'/>`G,YhӪ]˶۷pʝKݻx˷߿ LÈ6^yILeˎ3kgȜCwYthҥMoF]Y5g֔]-Yfڵm{7ޑy Z7qLJF\p͡?\o׭fNËOӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v9o^)dfhpriX҉|y~*6J衈&Z62 餔V:fa駠jꩠꪬ꫰"j֊d`֘+&dL1! ¤ͱ*kbuOP  0'<h.@{(;C,R0j +B 0'l?2 ; qq,a r|! M"B ̤l0Q7FG: K8?H4"#`@P+2 eY-jWd[ϒ;xeׇ6x {kۜ{,!_`ߐ5ֺ PC-ZBFc?pX _Xcl G6/a E|m U˘'4@B aS+ֹQ;6"ف'6p'O8aUhP G@)t7 $%AС+C2}BNd!QdCUA W||aA"C UļA ) at ! $CcV-аeB΅T8' b ċ# Rȗ4x XfĀN@V) A C2A:u\}f9t-BEhiD Lj\ki !\ȀTpnFy swQ.`h07_,m_X3@41,͸-~{.V :bKoXE q<`Ga Z/p=5.j[ݐ^Y8iŘ8{c^th2$C E+A@`V ЈbH-Mdڹ=[[m!X6Z7`ц4Ipyíl7eY [N= kAcpP屘67^R ,Z˔xc+4@ 6Cxx2=FRWgw19E~gwvP4%,RS!. \s .W`h+3 :n[:#דXi8 E\` ;y.mT`s, ]4`{ pԧ-/y.&7xaWū6t 5hހ'l y* xw,VMq蛮 guQ |owq@NՈ4AFUr;89 J(ah<juzM#mch;=.! gvgeNzq/p{Ï/ Z-{ cVns!asd=4Wyh!.m 2 PBPQd2%y sqqt.`{8RM{g;mpTo{р)6'MX|8HPr.L%KJsNS` v_By4z}@mDXZfNt>-JiqPCYy|!<3 p&9@\sU,2(rqA'{2.`)^(xud.1G3Xp\o94)FA}6Ioe;glpCĕqpq$q&!sTp#x>Vfq~2 3 h{PN7S,c[ ĥ"6p_~D8Xf5T&=9hXv6+p7iBR7#01hyPx.焐 MWZFik'ir=S)Vt~4K0pHQ>x]@r}ve`0>Ph|2W`e:P98nMD]loYgiJ) 01G3aVf[Ӓgǐd0wmh:#w73x.gF'w/N25P6VDvvF^U7gq6̶E1aaQ˨0f1`! P`NcWFtUqaBu@+W e`LC_4 2\P|OHq.NN ڠ P 40N4.a/\Y m(.Vh0iFs8$\1 PVTQ) G8ŁA44cE pMC?w.MٚS0@€xemW,V% 0Չ^yÙuSNy7#TmhjMS`hyv;D:NSuX8r  `NL8 d0y{2KVxl q0j?pm7uQ!ǜ5ц1psE\!8GN!8 ZYGDaWdY|q5תG|i/ 0P+Lh 4$ pXq0VLCR0Rp!7)`~E@VtW@RL # KGU@.vqZJ̅H \0b?3YMH }[t E3 Z ef9T:;U)`EB4(.iuR-lV>V,7 (b`D ;D v )I ^ sNG $V>0 ];2WN;6 fv 90 RkeJKr[h+rk{w+2y:3=1{B;!us<鹗F{6]1k4=Ʀ)bứѹƴ/c4bu m>˻Qp=1ī< aU,˻""[#Mj!Nc3ۿ!+NWv4s.pw|!,s+r`_ 0R{ܣ<$|(*,.04\6|ç2:<>@B= <,;L:l32gKD{| E KQȆ|ȈȊȌȎȐɒl <ɘɚɜɞɠʢ-1*Y;ʨʪʬʮʰlrɱ|˸˺˼˻<˦<<\|Ȝpb< \ \ڼͺR|\|΢|<~*Ll]} !Œџ} "=t$,m.=4] !6<ߌ>=D] !FLԬmҖN]V}Ւ X^Չ`]f}x!Au!r 60Nh}x)R| @$ jE2o8ly}٘j-l0O*15`*<&ٴ]ռAղ6EP1jj@a}SBɈfy@C@..3*\⵬qu[8ڏf w`3bSW\:Ti-b9  u5mR` ]p3pSE Ph0 |yR^. Ԟgx33?+_ \@t4EYVß yÒi +pXUTq[_7U@ׅECR@ 04pNt @h_A00`ǣ+ Z_BDO b?j=dmnnxδ<~ـ_f}m}n!´A/K"g_~o_?d:(ƫOϽ/0ZOaß9-+_NrooҿhM̏/Օ,ȿ``$XA .dC%NXE5n(ly!E$YI)K1eΤYM9uOA%ZQI.eS@%t:cHajF0AvHV,a!R!Jh(A6@`7gv%.H@B2Iq0o@%-A Vu)o ADN@Q<9~rUaRc!+H$)er`0VHh'%|uVa*n醙?K[J!~ԾQA׉-A)|'r^;瞏lj GX~wIJƟ痴cCE ь*c`]9l$InF=u貕܁$VŠvN\2,n `ÖЀzHZXƾec'$*@$k ƃu.PP ьIQJ8Xs`H$ 4aB€y%+@YZaX h#y-_2m/AH3%8,6%Hn€.a $1{rKoR@Zb6tPa$:v†6YdJ@CIt6Vc#*4:0&Mޝ`P$B &m( -  | q"uI@peр(hAY-VnicoUZU3bp* ^*IO,cb Qxn $vknflfTs'Wa@Z lv)jVGiH̬{NfxEpgѪK_r@S2KVLa8^hK!V&ڸ*B⍘&oMXKfᝈR\F+lH[2P =;PW He r@9/rsL8KGwsσ& ЋftmA7ZғṿyhJgZӖk"M:oZԣԡ#LDj(ыԳR:T;@`j}ld֠Dӎv&[O-זv!s{@|m/{:fqMj7 oZs  ^3pn(8ܐ9 hWw@~+1>zxϦaK~!*V?NP\v:!5 ϭTiڈLRg]FEOБpk@')APOd?bW%mX@ L9&X-c  DaEٸ;HEDYD耾 3b;7`*h 6`4p .Ȁ0Eu3o;2 x ؿ{?㱗"D80"{ z1[GTv܍w<\_hC{ I`Su+  :Bm 5N >MCIY`=#PXF}\ƳID$0_=P;{6xy4 ?J T@ɔ4âKD=hI(lL4˳tԉttLT|>LL MM,MR+R,R-R.R/R0 S1S2-S3=S4MS5]S6mS7}S8S9S:S0Ճ>;}ЇQ&ԉ(̓AC=TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US{>S7T|Ѓ<ެU[U\U]U^U_U` =x>& NBYŇaViVjVkVlVmL~ceUL\V)̓|L״ЇnVd=rpUW{ vcmUq}#LXRzW|uW~̜`ց-X튃pUXlyWNiHPÈMתQX A7EYB*6h.D̐ LD܁}WDםhY@*8[5*KMɎ_P/Dپ'eYȗڄڅπ5W*8=*u1ʢ0Yx<>򼒉Zyp4ۊEۋ [k{ [Z`dHHFM I J-hK ll^Y:}`RKضPg Va8(0% y@P+XAnp?hACk!6x4I 0X!k. QtP]N(y zn A?_@2a[)6h|*x)]txq9zN]\'YhmZ0#ڵ}ؘYY+ ` Zp?0 y mx9-> @ >l % 6pF>X< XcXL Uyҝ fC$ 6ip ةHq˙m7 X-$HhKpHtHts 8;%))hO8ٶ~ Ѣؙ0\.j7!k 0)XLPJhOb‚<^vЊy EpMLn@h4^ $eP > d"3ph aAp!I ?J]IDd tF!|5jkkkkkk Lyuޙ }80H3I/VHE x(i/mP(! > ?'HUg- nv p?A%؅m0 m(T6ήlC&.>f'nn@plM'*[Ŗ`Bi8px@8-$ntB޼jvo tn xeۣf}hCYm o断n00H/I@(+p+R8 p+> u [ФY@X@nxq. !y[lYTiT d8-gj-oHf]mjcpo $\b\\|0H06pT隰6/׵–ֆ!fhsi)~r>؆y(COe /z0f5.օ;)T ؝ Ii8Ⱥ " o /Zp {qn&+107,À0vL-E}4EGd҄Y-n{VZxU:Yc;\^Ucw5b ];4=7 }V<]sW7x?܆uwG^8Kn9މq]'fۃBn7}:ꩫzX,=-l=5RNmVάMmmj<;+OKmefO>NՖomb>_=w>> o>gm???Oћs.{@WmI_I['o$T ? R{׿Ұ6!s>!(!FYMLH bG?-r^"(1f<>Ҩ4f\#(9ұv#=~c{ XIq,"` I8o$&3Mr$(CIK򒢤d)SU|%O)YҲ$,cy]b2%0Q`җ$-9La0ްDEZ#ł=衛}&8Ї̐<':өu<'8)yҳ'>}'@*Ё=(BЅ24{!k^3[ qr(HC*ґ&=)JSҕ.})Lc*әҴ6)NsӝhW(Zk]T,(;ԥ2N}*T*թRV*Vխr^<*cWͪV5k}k[ֵƕsk] h3(V/-GRš*},d#+R,f3ټrm*R?+ZjֱjiC{ڨv-kYZB`'Na6!=.r2}.t+Rֽ.vr.x+^-o%[1}/|+ҷ%} w/䊣z ~~pq'xZ+n0C,b6A-xgo3JQB}ԣ˖`(#T m Ѕa<`,)S-ky#9+3ӼC } 3,gc9HL0|Ǭn&4C%7d4yΖ4[,vzgڸH5sR A% =ibu0<6D]y؋D.La ]s!x0־6iwvR벚8v ,5'92Mʑ yǵև(p]̮[2D‡8 M}>b>Aȇ!f`NP6Snݎڷ{g;˺Ӧĥ#GWpy >7Ds;@C{jNڈ v\ J̿Ua|c8 ӗXC+5#0BC4P>12dAȂ2',CV`!>`BB'd`.l5;B0&/>ğa>B8@)CB;.`;D` , ]  5`B<5#TB9\I2(>0\/19" "!e 驗=\@ Ph??$86T@D4C @8p+T P@(?T@C,,C'@t@*,@4D T89\|A5$ADA;A8`@>,D 9؀(9@}A|A@m \eA;\\dA|DOA C#>J. '@؀! *c@A84?, *؀ \|I D9A?cd.'l0b.fD%",bdGlDCD^EA;/ $$m'C'B>*X(>{!93̀/L0;X\>^&؀|A?Y>Te>^h+xރ>(hdd?`%&C^%A?C?DB!ccRd^d.X##҃'@ A3\ `<8b `H"+',?DYHACBH 8@* 0CB7*Cxv3@ZAT&\0`11DS?H$>$ ^C0 C;µB? 0d>pg * i$i6*| >㵊9ky1@7FA!@^&0+!|lٙtC?(4%AAP*Qxɭ.{)"icPfG+3tCe>>#@LT&x&A$`.خ$>BD=C&h+X3n}LA;|*A^i~g?FFB^⁄j0CVC2 v9moI-|rA ?TC&kJâ& Vꥪ6<@h"]3h98*tb$kA?ԁ X(B@;>(3J%&,>BB(݉^i?Am]oDeD&k6+>eC,VB^CR>lC볩o]>)/9tbٽ laNClJ0 &`!e乎Z\A١6otpA-̩X< 4#-@F#7ip*,B*`d6C ,@p8(!> C^NC5DQrp@)H>0|n%%:D(k(CM/$AA;Ԯ0B%Ox0C>@0L8^ױC|l A eO иB|<@')TE@C+6>.j7%Fl/l5/8HpiCM06:hCp 5tx8 g7dH7T/^C]?teÂ~'9'8t9\dUXeCfTC5LvJC5,.ÂfѵgQyg]vaO;6oK⃱$;aO&9,(P۵5ڞW<`b R]siWɏ<^țqE d{C>1 Ȃa0@$}CxíEXks9sX||t<[54lb9zuk(r== %CQZp?/m?k#mwC8slYGX|'WEpQg>q9<=>~E~U>_CRyX~s~A_>}>w5۔ ?MW_OW: WcS_X/c'/Wt?~u?曼}e؀W?:?sD:t 4xaB CyVxcF9vdH4yeJ+YtriִygN; YFBZyQEicX"VE'iť ְ,{q[aen\sֵ[O{E)g`owy$A4k"E婓G&r26Un3`Svީ6ӥEqkI:oVk}FUjt c_aYT@:06o$>A橙rį0dʯ <$[A +)T*QCfx}'"ZjmcD8eMDX YájB`8+"mGt8 O p 9}T}$ "Jt-YGaB3GN3+8J!f 9hSZk.]9QCt5Nх{fA?jKڶ* IASCP#`*\8>P6|PCZIB _zV2mDq.DP:SdCZ;B *\΃) L ﴖN FP*. l,fDŽa6h*kwB0f@(?@"  D@";\QfQ`ÃI^س;B£R$m R?" ńڠDyH#΄EAs:tUaA6 %:XA|,dhT2aQ .G7BGw9yXc1QqLNB 6`7^,@t 4}.%!8Xmģ|FtSbx4x̃(,cv8` HHvkIs/E!JEPJլDbԟCk})PX ]PJ,CaJFX^X%QV5U('*6Д)! ʎ> ;UtmaIgKn\̉NET.Eܹ%km "iZ?pxK 8p?qemD NK2&].;܊\d38@DxFe h}s)ӎ5Բ- jd@'ئgzfsÒ (eHdArزO> N}4?p~}e_Ok3ˮCH<@#OG1.^^3DԆJ * Q0f :W $Jr*chQ/Ԥ 71 lh莆cI+zyU hHC+$AM\bV!fX 7R6j$R %Xao1ڙ`Xe021v6%:є,f@Gpq$ qDQV ŁkFQIy+#ajo 0k˭Kmk|/xh;N_՜N'* \8rd# ! uQ\ v_h.9)L$/tp>Bha\n "PKMBҞ}'.,2E IeL g,a"Hbjѡ!+Rdq#ޱ# A2-)/+&C*)v !~#q4=R т6r#AAXp]-!z 's*Md_J9n,B": R.D+|(,(S&j~ b+=*] D!M'R.'{~r҂0%R2+) s."L$R|B0+2 .3/K//[/1,Ri4225*5WS6gs 23i333Y0h8S88r627i7ߧ8S::sZ!s'zs%*:<-c<ZA;ғF9??S???@?@ @ATAAAB#TB'B+B/C3TC7B%B/30Ї;;w<.#EWE[E_FcTFzjFofTGwG{GHTHGFIHIm4IJTJJJ]=abh`KLTLǔL7ZF}JT'NT%=NTNNNONP'h`C@T'v[д[4'4%4OQR#UR'RQ]b59w)>Q۩@.RKTOUSUUW6I%2SVS1T >UYW{WXQwU%f53@ [n(r&UXUZZZYZQY{r[ DYYwY_"[\]U]\M[$V_]V50\r\]]ו__`b_Sh`ah> S&F5`3Vc7cu`%@ d@FvLb b[bc_AXb2#R:ghc%'b=Hn@ &@v/5f%hGV@gaTJ⛂mVmF$\[h_@$NV^ec[$ڵc N%FQ/! 69or/s b a;dYrUR *$nb LeiUp1_[]eH%] vg}<mrFFQrQ.-7>ԥI2-)Rku!Gu= #E$Vy<-63}w] V V}WiCoG7%A%v 6w%qa6vuv%9H=)x6x8/ $@PR J! FxH,fDA,`? 7# `oVIW_}c\UtbR|xb X(k]"JblT`] =aZL 8OK//I!RFx1~XqPaCPhr`Cf@\"T~kqA U @w/~v|]9Ҝ//{xևS=l! BwOë98;Xywry <t(O灇98;?/>iN[GT[/n@@;p[fSa8()NBKJ$b!P~fy3P4F7^<<5ģ\!" @` @ ¼[ZU I <{3BHV?TAQgnA\];\/ aExϧv̟:U?Wm/}e|BA]WE%\0,'o -[B7=ׇAyי}3ITOxSأ]ؙ_yӴO/t%]w\/}/]ǝ=ɝ&]i} ^ ~=}Ob%ESPQbOC^GKOS^W[J1%fLgkKö㧝{>e\DP;;>cv/[藕M'^쟞w^^'U]sߞ~' oB^ߓ&_-ש#_]}_/73?W7p;KKUeWC[_g=SAbs_s<ԓ_ԇAa_ _Ο?__ <0… :|1ĉ+Zdټ;z2ȑ!2ʕ,[| 3̙4kڼ3Ν<{ 4СD=4ҥ5# 5TZZu<\j ԰]:Ujm+V*\rm{Wm޳{ lo{ob75ɔŻ9x;{ іC&iԬ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[=ܻ{~˛?>dz?vo?H`Z.`>(NHa^na~8 Hb&>(*bb2Hct0ֈc:xۍ<d} IdFdJ.dN9?dV:\M^~ fbIffY[Jy!W vCvމgzg~ :4͡.h> i.WmnƉiС//;TFOjIΣQi k77k:|Q3K,ʊljk> m^nmz,+rd-mG6;nN{F; 0uo[0p{K+oGoZlD6p$ $8qEkH@ 8 @PU{1С!j@h o 8 R `tp%b  H?$q6OUb ։QtxРP!NtBЇ'fEZ!`*p#'ȷE+A5hp X's1,'H Dt@n A1$`?X>h'g|@~I|M20YXtB8e#?mCDq7XX$'/!O@6$QY"(At"78A,w4(SKQ |1h# b)T@CrI+pco`PȔ?~8(ĀEUWYTb!AߧCxR0)>6&~j *PHCX h@T)؁"H 7Ta?tp$8|'ZU Iv U$&! ʯ-pFY$nHn!*T dMC nUNUD q*@Փ)7(w|@p\"NP?SEgPd' HՅ) X&4/tUM1hHPI܀ P.T"_tBʰe@Vp#K\h"4pPSD8B-F9 C( !!msB!cl26*f1H:VYJD9ށ<_Χh5$}d|Hȉ7į"-#G&JK̫R|.: ֫19AdWد t{c{}pwq_$uK~Amn3M?O,JgN!<_LjT3PZ)<n+ojҿ7EbIi.3CΏLh[H?z?ԋouhA Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H5h79;1 ȃ?B>C(8BHG؃K88FȄO.NS,RHW)V[&Zȅ_$^c#bHg(#fk"jȆoH"ns!rHw8J{ȇ}(HhȈ舏(Hhȉ艟hHWhH2zHH88ȋyhw(Ȍ8(Ӹh٨ȍ(Hh爎騎Ȏ(Hh(ȏ)|Ht lIdh \ȑ T(# %i)+ɒ-/ 1)3I5i79;ɓ=? A)CIEًhIKɔOQ)!IUIfW'[Ʉ(acIhgyiȖm9o (siwy{ɗ} )IiɘI8QrL8HpL! ,    $   %;("0$W'##$$%*:&,**,,-2224f2:F4;39>;;=>?Bv@ICBDODEFFIIFIWFKKKMvLSNNQQNSSSU[UWVWZYW[kW^W^WXUYb[[]^^bBcsccddlBf{ggkMhsfhjDjjjlJkSm|mnqpnq~nrsqoKrssts{KtTtUt|vvyZwTxwy{yzz|zf{]|}~~~~]akmolbepnpkuT~cdqj~ўա`Ũîȴ촽̼нĝܽ¿dzϼΣЯѲҼ߮޻ݿ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(Kb+ݸt0cʌi͛8sɳϟ@ JѣH*]ʴӧPJJիXM7/>`G,YhӪ]˶۷pʝKݻx˷߿ LÈV&G !ø^| `Sa~` İ8XaZ",RTr`''DR`j% iҸ4m]gCJxebaiE ɐ -)Is !PY\F$#SW>H7u8vKlnM>kyb{gmcr_fl#"8=RaVE20z݌~K a'h1f@JϛP_)qu]eFWj[K嚌a,/k +@پU񾳫I Xwm}V?6oo`)[VnL+0͕s@|-kICn @I&^?G"A(0SFPV/1^)O3j90g F}˜9pm7ӽbrvaE<`;ˮ(\wζ1<@&L,a+w p[(¨ŀg7h;AK_@ 'xe b=cM# X#pnŕn r`qЇ_3ϰ*@G궍1N՗csǺʀ2\\m'S=Ou܏(8 ] #~x6$\; ?7j.Np<T6nh~CQ.0P!Jp39ezN}8E \x.bC7;lj88f5T&=9HTt6+qp7iAuR7#0c1G=pyL9:d+eivvv/ף_-)VD~4K0m(O>w]>r{ve`0˨wX~0|"W@e:O9(w.tZfV^s$HSr?Vi_5+9vI`ha Kv Cp\V>W73Hfc250V<]U3Wq6ɦE/aaAȨ0f1`1  r`NSWFrV>%q`i"t!^+ ' e`L#\4 2\ |M(NM ` 4 N4.a/g\X m(.S(0hDkO;"p\1 PUDQ9 F8˕22c 0 74s粔8c"0 pG[&[։T{"?iU 0 C ]ؕ2U KtpOtw3AfD<ff1]7~sOy8$U3*P fDȴMCM'.hЁfNVs v3^q8HS۹CS> 5]1k4=v{a awi))b;;|!Y>|K;!p=/j "2 } 6ϒ+"5є2>46!"om.2 r1@mf!@_̻0"kx<$|(*,.0l4\6|å2:<>@B=< ;,:L3a2I;CDžD @JQȆ|ȈȊȌȎȐɒk$T;ɘɚɜɞɠʢ<,,z <ʨʪʬʮʰ ktqʱ|˸˺˼˻<˦|ɾ<\|Ȝsb< \ \ڼͺR,\|Ρ|<~*Ll]} !Р,Ν  "=$]u&,"gі.]6} 8>@]F} MAHNԭ,P]V}՘,AX^Չm"ӄ;`}hz!v 2pa CmzLւk14@HðOF;[dIa ךp1 N `s_ZbJn(}۸]͞m4 WVU@e ˳ .}Io1:_ڽݽnQf*urrP; ?\;FLay0C@GDVMH1P7@t^m!7:J p20[NH3hDi&~⢌kA` _Z2:pҷer0 CYgR>哬j!j5C E{e^M]D PIHr>lVp.pR7rrcWRPw Gc Uxt^~- xߦ&m0$dfG3dHm11>vaQ7MC-f&l8.6tEC>Ԏ;á)_MW7X  7 ;[C(?ΰ&UンbA7[8╟NǕNK^EmE1ّOʴ/xG`Q0UeeyqRwMX3$C[@DO!6; C/0 -`ǣ+f[W^_GI/pfeo)mpo cONzQ|/aO=o=) ؞+؊~?Ԏq?1Lb?/ /o_^8hƿ¿ӯ_?.ԟnKܝ-QP]ɦ 8 $XA .dC%NXE5nG!E8?z)UdK1WM9uOA%ZQI.eSQNZUDWò%[Yiծe[i[k:q_&]ĉ-cȑ%O\\ř2gСE&f09fkرe=ճuoo qɕ/)|x̥O^:a5Gwf׮xկN<ϧ_ߵuo4@HŦtJcarF>aԟibD怡gaf՟U]}<4ӑa&J"VaN4AvHW0!R!K8h(a6@7gv&.D@B6I,r4o@&-ЌA 1fIoA AdN @nR<yvWSdI:;'+%-u`0V8ih''vV* 醝ACK kJ!価S4ۙ-aV)&;'hIHPnKE +`m:Č%I~&A•$PV*񆗯M؛l2L~("ÚЀ{ZhFi'$,D$䫉 ʃv6QŔ X jvSAHX(`!+Ah% 8ՌaB z8&+PYa[iC?jhn#z5;om7I-faQ"D4e@T$ -[ Շ(b#D ]T;8'Q_.p<`WJSUbOL5 Mp59ץY9#ۍ_(RF>6qφ_gz˵J {S֟40K@KE\lYYLngD!w')q3*8M&t=X<eb8uROU;1O(d$'wZs=hD'Z7ΡhHqs-}4N%t=I#tMPCUVDX3@ _ujԌ;@`l}ldYO_/@ 4i4)%  mxs{ٙ3=:mX[նvx6OwRlCwٍ xMMpa7 Fvú'$;g1 N6k U*j @ CO7!6JϯUj08OTg=NSuZ-)J |s(9<@YId(WIϑu{1/'lD9EEv Th Xm 'U|M5I4Pw2\1w wayʪ <00$`U?ԇ()7 *$|:I_. @ a( )@MA 4D_HG}Ӿw) RQE0HY&+((?fт ?п,῔6#6H8C؆ /*@ i?"Y<#A&dԓ@8jp^8+K!p4?qš#D0<kB8't r耛t@i! uXCϋCJ 9ԘȾ#_7Xh P_6PCI!0Yh7@#Px~\IL0_=`6\JT<:Hhǟ¬xzt ?JST`ɖtäKTpI( ŒT˵ƬhG8L+ }L MM,MzHisBJbȀ.h Or (BfYgD(& HO9(̉[pYٸ݉Hӽ w# 8c0ņt?EXf1 <`? + z ‰EA't91D.,iƈ謕L$1 >;H__hAzA2WMaAp%Q (JID0 S`w ~5kk01kkkk |U}؜ }@0pI3VpE |1`Ni0mP>(! H>8?&g- p? CB$n0 胇m0W6ϾE&.>&nrAlQ&(* \+Ś`Bq8 pyHh-$t0Bj&oVtnH^W{gQ%유N}pDڭ G rj Xm쀵rѫ 8*0"OPc̮n7D]e 0Q,$8 2 P01eH H!H80!>oؕ?66(  I@ukxuޣu .V{;{^Zs^_ے^f <+[y;p;v.ekWVo˖ދ@>/PVZW(fyW^wrt z' ׾~O>0~`W6!s>!(!F<"HC#ϳ`:0.!!~p^"(1f<#Ө}lT#7Ʊv#=~# )H>э A@Hqԫ"\Epx&`Mr$(C)Q<&KyIT|%,c)L%.sYR$/1ae0Sy\&Ә|c2alK#;HE{|8q9':өu|'}'@*Ё=(BЅ2}(?E^s-ָY(HC*ґ&=)JSҕ.})Lc*әҴ6)Nsӝ>u5(ZѴ\[av0N}*T*թRV*Vխr^*X yuN-+Z*ְi]+[*WUnWzWF5~9(rɨ]1m9"+R,f3r|,hC եUldM{UԒVTekOؾj<FR n=.r2}.t+Rֽ.vr.x+񒷼Pv)mQle+ҷ/~+"w5[ Xdc8Л-we3 ,aOp:va0C,xX0Q[y㨈KK\^3a?yPcu 2DO*G(SV2tObw,v1^bZ&J<3߇5ه479ӹ\/tAC2bmXItt dH~v43m^Fvj3D|@AD2~r'h 8hG>1CtԇS;q˅ފK2_n)<ԲcU=\rs|tFVCh"j #5 ]|! e8oC^>=Goxn/~|e_Ǵˇ sɼ4]&Р ΘD*, El2'p$bʤ,|T 95 Tl#/ET}P_}x?1!JE*цCDщBž.QN`CD..B#>2">\C+_5B#44T>22dA2(0CV_!> BFC'd`.6B;0'/>a>8D)B\;".hO;D` , a  6`<6B#X9FM3,>4\/2B9& "!ZYUmM}EC=\@ P l??(47T@D4C @8p+ TP@,?T@C,,'@t@*,@D T8C9\|6$A@;AA8d<>(@ 949Á]A|Àq `Ce;\\A|DAC#>J* (!<£;pQ@,@ 9C?\ X> *c<80?( *؀ \|I @9A?cd.(1b.ma-g4bZ4BV;A9;H,@3(x!p4}!}T^VJd>dU$l;(>HAxv;h~!BCy'>C?4 T~A3C;e?d gC8,!(AE~^;>A=C&AFVfB?^>؁Cىh!@2&)~5%"HfgP@,{]!xC٭>74 D%.p*5FI%>@*N3@0(X*(wڝViZ 6*?09Z(+>*ByC1؀7AB!@gZ+'4C+!xpBٝxC?(0AP6Qxʩ-y"s$P@*@p.P+\,T@y4kU*kMClj?80@[:@ *Wx@>B> Xx HTJ>T*AaC67A_YA8N;A8)>dN%gHBA.<>*l&4r((/^`wC˾,ά$0AeDhk>5@1-҆kӊn #F QC8@ >t@,lb4(*kڶJ*Z*mj0.&j9&eaB'bj+@/(탌6/ԨTfB(!$ܙHVe?fATp10+>iCV^AHr@C+:)/9dljOٽ ԬaNeC,6 &\i"qNZ\ٍ06gtpAQf?<"=LB$,`38@LBDIy.b.C*'m,?ll*t0X.$ t0(?7F,3LY #'Pp5{ p2z.2l%Í%L^** ''Ȃ/"ܝ.CŞ>1 dLȡ,5.*%`C2>ک254Xl@xF%);e u&V;+^A @1*϶ۭ2,kiqq0s\i,,@XC>@#)H>4|A.&'%;@(k,M/$A;4%ꃅ8Gx4C><1D^׵|pXsci2jjVYkc80=8/B8HgqmÇ0|47C:lq5|x8 g7hL7T/^]?di~9g8x9TXirT5<;vBṃ5-ǃrѴsyvꧯw;:i;5K]⃰{${i,'9(OQ:55ڝG|6yoy3Fy[pA Yr<ݔUa@W:2,̀,$D|<гY<$Q>ړw/}S˯siM_i}>xQ~u)?C[qCrISuYs?x ?Fx1/|5PwQ~m؁#SW<D: 4xaB 6tbD)VЙ?9vdH#I^J+YtfLz醕 ̈)st8!ϊζ-p΋KVЇIsgEKÙq&<*En$S ytDdz$3}R4-IE<)t:SRGB X&)c3 _tB})CqF.,JgꃊϮN;2Dey"\d]Y|ڑ,Z+A聅i&ȵH`&T>I%d~qa`Qf$k%aRmԘPHh~k>D9gPgAgt)ZMaE_qfq"Dm K`3+gqvqf&`6AantAYVfnhH9(ZԘn9)Gdthʚ{{ՈgnE VԉXqmՇP,ueצCi I,;ODnp.,pyrNl5km ]+@wEW38@p-BJdT]`!"Gdq(A,abwﲌJiH 0б=^B%(%?eJһRA$"S5B%Rx/"+I }Pڰ-5XJ#Ga 8z%?A3@]q.À14i #ZЪU EJgK;ǑXm(tHo ]hCKķU4IKrO.3 .' fπF?w,)J^E +\6Fn1jX@Zs3Tb1k$Y{\G$yB@FQ+ؤ6JЩ$RNN5 *kB/é;ơ dI SH01x89CCm>x̬" .+R:7"ՆIz%Jʊ%Ԡ@a35Շag1jȖPm05R>Љ^t$zIH>HDY+1Iο-.HLiPQq3`79N8$ 5&T`haFD4q pɐhّ.ꕪQE 'Qx- ir aF^~ڙי=6[ ƨ`K˝Bw 锎Mn$+"E d@ gk`fB€ %*DҊtTL#a۠F(JG 'd^=ʠ$:5D< ڠT\# tr P h' r hz&.` ydZ, tFe& pa_'hgLΗ!`e~ H&iL'R DbIwjz Ft%i D%`'h/ <=d`"P{&0Z4$8ah1b_(,**eQ"Α"ڱ !10b"$*#)ȱ(dq&QX! Rp3ڇ-R 1&R"A/W^U !$n,&cR--LGb{^2d'f@B(wz%CBF-T"JG `+8"$A 2+ldR-r&k-7&-'b'E'wk&C{R*/D>W&{BE02-2.k..C.1+3"2}r4')%5K5Y&'*s.S/2$*5sS7w7{2!,`&ehS}}|S999A8+88e6?1tK'-дq5>>?S?S>??S@@ @ATAAAB#TB'B+4BB.3/Ƨ:ӧ=a==bR1HDOESTEWE[TFcTFQEkFoGsTGwG{GgHaGGH4FTIIIJ4Eϳ$fvKTKKKtBCC_"D;]SMהMMNTN4ZF&h`B4&vZƴZԜ#PQUQQu2 $Oas@Z/s. Q?TCUTGTKUb@magklr#w. r= VVi{.S W#nb !m!ff:qq;,=ƅHE* (H4kAh4k\Γ&e`1Kj¸^SrW|uB`b`wVs$#v 6&}OVuuEbՈS(< (l'vw( #耪`:BL '$# a6H\}c[vsQ# wvuv$ N#P ȥ L j#Ô# >H] na&ZH.M68@)6>F#mG>Γ[pؒ/Y'[$28$Z8#' ;a¨a& Ya&#v54z#&$ZvW@PA%=Aǹ# h8C|QٖsE@@n(5-_t#D#^8(5q&\V%#bj]9uAb&Iģ\ę#V` AR`.ƛњղ?Tʧ.&KKc;CK.b|=g|TgA`\}_$`18S̱S=CT~aꯞ%Ǟu]B^~Ͼ%Ҟ^AY~%^ŗU?g}U+Y#u-_7_\1@C_wOK8[ug4ms_03=w:}_HaAٶ?Mǿ?ן__B <0… :|+Z1ƍ%2ȑ$K<2ʕ,[| 3̙4kڼ3Ν<{ 4С-4R:}t)=TJҬUrSb-U)Zjג-Vlܯszkޮgn`+5Ō{ 9dy+[͎3clgФK>:լ[~ ;ٴk۾;ݼ{ <ċ?<̛;=ԫ[}ܻ{>񕷓?>ۻ6>ۯZ~H`.`>NHa^na"Hbhb*br(c2ڋ4ވc{c>dBIdFH?ژcN~O:n)?@gvމgzg~g*kb3lch.h> iZp^)rˠZ$ёjHT#e r ފkҳ7V䌮#l{֚$>*f,iln޲74{m*U;nrnKҚ;KR[0/-9\?ΛpBދpǯ L&1F+$ 3%jlG@'a cq .42D +C:Syj?ΤPBrDC7!,=/\F,l4$m4t7J %P ;H!YϏİخjsFnC C a =-ݸb%"D".x1]BPT,;#0цmL6S[`fS~z*'0#*,=H4^/ʎX?|bQ!\}~Ix-*/WXxb8 fC? ma7X\&/JN@ 6&a Y*(xB78,w 4(QM{1`bЩ%sGM0% .qxb MEu`[@>PT|Tݭfa n #u.* ]mGDyDʢkKl) FPAP!vI n L)Ĵ "ȟ|!4 F`"? kHx,:W7Dx;S=Ӭ$|OOX}vCuQaЃ"򒿘^qW@7,NGnp *PƱN`7X'eq:F?CSzZUAQRNEUPߌKptMDЄH3sw6 DzB^[}®X\[Av4dgpAU Dz` %&T j,P$Hi'2D`)Q*@@f.aPDZqGgߚ0@I=Bȶ&M3vI,tlFe8Q1ɣ) g8=x9QR41щcvvBmbbxvX)xjV;Gw4+x"h!G*1>yb4Թ< uίn"S`^Qc}rzu}i{w꘽6ho{u)xzޙ[!=@Nīh<?~,O/Qs~yhF4Ur˯Jx /+̿tS#~(ti/3]ir}{WǿHh Ȁ (Hhȁ!(#H%h')+Ȃ-/1(3H51h9xB8=8.4324K6=D8<39>;;>A>AECCDSCFpELFGIEHGKKLULONNQQNQ{NUdPUSSTVVYYWWYWYlW]Yb\[\^^ba_bakAcrccdJdqDg{hgkxgkgilBjVjrjjkNk|NmmnqpnrnqnLrrrts||tvJuTuwvyZww|Txxxvvyy\zzz|ze{~~[~\ckmuaenlqnqlYdy``jwΞleաǨ}ƭ®岼ijǴ˵ʼѽȚܣӯſɻ˰˩οҼ\@*\ȰÇ#JHŋ3jȱǏ CIɓ(K^x 6obDGf8sɳϟ@ JѣH*]ʴӧPJJիXj݊]x篬ٳhӪ]˶۷pʝKݻx˷߿ LÈ7"Kʓ3kw3͠={ZeқMFYe֭]MY6cڒmY7޶'7Ń7r͙vt鰩_6ËOӫ_Ͼ˟O'Ͽ(h_ 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vzdifblY^n)rIx湥zJ 蠄&("裐FzVjR馜v*Jꩨꪩ*뢰j}?!넿VxcjV.KY{L$jV1ij3,p`AHk?df{(DBh.A@:nO? @?8 o6@v< T/7\p0"lFL\ik ȁ( 1W}?~@4teS 4>?0/JFV}aY,A`ۆ3h=S6ު9~9o?cCS+ި[qvlYYGdol6e;b-kV۶F\6_f͐2ޭG˃g!O*c?:ͽ_7{-wE70 Zy w60f(' ),!vCI%v*F ! ,fW,!0 pdA3  Ј"'v`9Q @cHpΈXeF(EYJ`< X0Djg*,ai_!%`FxQ.i0uUH!&@ s FĈCpdp)Bw-{@2aRpf ^u@[:Pf0;@X0< g>Am,( 0nL]WH-HXH'wv3 Ahmk Fe>h A{^E[@4Wk9  4Ȅ` f%n$(8|_1-(@e3壥R$40l5` !@pLxU0t @_hękP&H4܀u8FY!u B&0Skd4B 0 >uP8Xh W-f0 l{[FN:ܥQXP6dXlD` N Ƞ RBvE-4X.`WU$1hUp$ieOm 8FrFb0(v " Q56N1fh4q0 Xh aϿ#T/`K\YY#\e#gb6%0/}3Zq2فTfiю==0kBXϻծe팗+)s&\|@ߢsNhyF*l#V,ЂuKzn"ӂ/,9[S}g:<R5b= -}s.keulCGK3 ΛZP^V%`,"5\q9 =-mKAk$0\ޝZ4EU.A &B,r?/ZRkW mEBY dĉLӒk=Z}[@PvYŢ! X.Z%q R|OΟ݃1KaK+j}0y#lt >]y'nli[.L$ rn"8`|!sVL";N4GWL*YQF2-7SNV,DUvPS8L¤5=~FUPwVWtFs 3 31So7uAf:Zz"iP/6K]uEFDcmj@ߢZ!hbQOK 5m# C K4u Yig_8I,"E ,mfʼn .b dh3E =Wd`7Ep P9ƃi҈/]/p ࠶+  pv 6Peނ.;ku[C oR33Jer0뺐 ߢ @n,_~'K3rk+H8i1O ̛ :$+3Rcy{:#?1蹻zӻC6<a~[)?؋ʒ`8|_t.+ע<a1 ˷> N Q+y#&!~P 2Pf$9a}q~L;"h#N8XR4Z#@ 1,""d$w,8<+-  T!LLƣoa0 =Wb!W,óؑAQcRpcT]=AlR0X0 f t9/ml:#. 1j@ PiFڰ\Ma@Ud5E X9 -n:p1\ -Ai{:5vK @3vL]R ޏE@>Ob~"8[ zEе3 Gs g`s'ToCcN0P`.nHu ]Uh5Me 2@ꈕş8>)Lu yUn7:{_)>m-sk"cU+>1A%gQPD~죾F?AaOjʄ]qqYI^(# 9[UnFT?43.Tf `L?#P dU(@]lO dDS5^~XcN%C+) /E%~(Xta"c-~mqzX V}_%_aP/: Pe7/A `hdS`eC?e`oßa?cҟǯ?jQq?o _um#XA Γ'osXE5nG!E$YI)UdK1eΤY͐>`C#NYQI.eSQ"90Մ@WaŎ%[YUpDqΥ[]ySeVUz&\aĉ1o%O\eiw6v0̡E&]ڴTƜ}>kرeϦ/j{oƽP7O•/g9Kųz uٵ7.ɷ'_< _{Mos/ :@TpAtA#pB +B 3pC;CCqDK4DSTqЗbqFKŷjqGi GqH"$G 9H&t7$k'J̢r-*K0r4L4քIM8djM6sSN<%:l=tP3. Ut= =Dt3}H)t'-tL9u=ō=%uUVg4U5TUUZkUbE(T[{9\Y5XkXEYhcS/T(q6*ai1Zr͛v-f1#,d`]W*nh*HD)wu=UTyaRE`+QhiJKйh(&x *]膈bidK&GmD抄#Ϲ$?g^ߟ/_DZ4WlQ;{o)F%8U[9"FyDf[UBoQeZD&yL ePU^])L!w!#(A ~`]?\a#eat_5#&#_n0yhe0AX1n,X ʈoHe ThwMgG&B >Ok QNjmdaPCj7LD&"vhuDT Z "_cw;(=` QE|@}~0s1m`?*tXgH"R]E7,xX`4KUHu h-XEz>#tqu2A@=:;w1v?%:5نȢwumd̴;f1haUYVk$)7@HŊ[%dw8"B(YF }D *J9')bh&@* 27IQXy4" $19gHOqD($bchhUX;)Vd]a7ъd8ɊSdAh@6,Ϛ ;U8R js.c@/HЇW$]!< 2ԋB@/rD?"ZWIY`5\/m9)Iiڑ!)-sYD5xϋf-IrE\5q3#ӔEO/.}9G JrL4carRdr%Q*NrvC%sY%<)볡- }Jy= &Dȟ&uCEZv>FjXyum YOַ5r͖T˽&~h&Ȁ2<[ڒ:vX8 @ `&]H!N@v hY sWg!ww[wAiMj/7w?x-~|[ %&$x 0S{O2y A tpKNCҬ]^g|=0ά5&z]r$F7)\ۄH]_MzIc$xU6GD|"2V8$X@NuGXwE" mq[@#9:Lx  40b#X`mO#$\ FvVN@2r@ jy&5 F[$,<&)tQ @B؆,BՁ0 DC}+ 7=u˫"$$ZxA$>$ =A,ũ D# כ?,{-q`X`(YL";S|SAV贌:Fyp)Zxy ?XhGnFƏ<ȀuU`;X2rB+yz3G| TĠ@#DQ 9GȞ,m6@ϓ7E|Iɓ3pdžLR JDɗ۶uʩ¨MK ދ4ttDl˰HM 6p=`0>KtK `Iʿ\LLkK؀"+ƼL8 L< ǔ}ȇ| MLM\MlM|M،MٜMڬMۼMMMMM NN,NS?S@ TAS@؃>ҼOːR-HTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXTz؃7@T}PE}F>|@NaVb-Vc=VdMVe]VfmVgM{9U\U GU`͈gVoVp WqWr-Ws]M{87VG_R~ijԈxyWW|Ec~͈ XmK׃%ň5цu{}M`8Ii,șxXؖ;]Ո d;Lt ֌mvEXMٌh+`mUm`+h} ) j`5 mY+s#0`٪]/w͕֤RX,`F`x _`[(;s(arHܑ\=7q=lW[p.ŝL-XPڋh, \,x&mK``G!XA]öH PK\HšfYF@< L)٨p۾%dT[J(^0HH.糍0:z؆`#EZpCm‹H,s@+#,(;pypG;&0;!bsP8'vc Pk# m?pk[`as0pa@B!Xo9#go<񃑤E\ng X4jg/kkklkzynG,@`}qq._ԙ Jm0ali㊹)mhLb&hj>ܽ!CX)ٕ?H[<_1L2$X?$'*6!ҖLr#%Xf +H}h_>,4&l71ktRjJ1H^.~+^,D-Z.{ƮxF5C;56;Cdh@ڥ,0*Qpp X'$+M݊aknZHy[nN:DxsHG`nb12 x02YRg!+cKvߋH `\o@hpʞ6<"yޡfpp0ȃ;p8ˍFmU<m勨ho<8aFƈL m\tr=!`t^x<?f.Xy@`e4ݭ'9U^i| X!ryjvC`=ʾHtk%'Y-]~uu!u}`+hළ1yƺB WU(>~ M$Ḧm69/Vvj[mcZІVxt0=HYtZ`GOZUmP&xm0 ﳗ=j/+((xL\H'r8v\vx7u1[a!~cЇKhl@؁8kxP h2w  8`Qhǀe&0X0ЀW?XXgcV`xg# }9PɻQ@`_ q݉`P ^hс-|pR 0 Ia 1`Ħ1Xx`GpY+ذbǒ-k,ڴjײm-ܸrȼFB<.Uعy3n1Ȓ_?@sX kFiZ&MSwX61MKZckn٣Ie-{5s[n泍hc`4sFy:$V}[s7 V |˙^2ﰗsDr=gv!$LҰJ4͍‹lj8wH$c5x#9#frX`x$XM$M:VemY[3>dP(5D06[LFc 7[9fLA6nifti جqa} j)k j͠~I'm)idH#fy:(SgFh'IibQ){,*,Y`樤Zjag53  3I -B"5&k!1E#@r.;77{4[ p/cI˻q[2\wBqM =4E-EF{4a^٦639tTG]{5e}6i]O=Q^{fS7^ǭ7_CNi[3=8~8[NCREula9{96& mg99ZO΂%;;Zco {<򡏾xI&:O>uT"{Y'~{mjBsκ>'?_jO߿/,`Z8G[ZQ2ӛ>4Ï} 9&!(!q8>9@0 9]Q'{8C 9 ^t(1f<#Ө9Сn|#(9ұv#:1{ܣ(A<$"E24# D'B1YBa(C)Q<%*SU|%,c)YҲ%.s]򲗾%0YY>É_%=L{PҼ&6mr&8)q<8j|'<)yҳ'>}'@*PyF(1dFiF8!щR(F3эr(HCR&=)JSҕt"})L/Ҵ6EGKsӝ>)P*ԡFL%x\(P'-,QU^*X*ֱf=kYֵn}+\*׹N:U&U5q9{=,b2 ,:+R,f3rhC+zó7=-jSղ}-lc+Ҷ-ns[J֦xjB:*ӡԇ3J+X2}buR-vr.x+^.oZ:W2}%3[Ӣwe-d#{[wKٱV>0~3~pd ժޱķ~U bXS@,~1c؀sǨ )B mKϑZ%+9ħ62~1X|-^2hcf>3 d!yS5{$/9M~{a㙳 75k`8cR|\B;i43DN*gC~!+ߚR2U.dm|f-+B#~ð<=x}/-b+Yc=AÏCŰAfhB,θow4-YȟF]aԬlicZU. ?a<1Qood>B[0[]A#d,ab7"`8prkx־]2TAT;8V6=Sڭ|uem*%Uxbn:;t {<({d>olC1c'6}};w/|M<J?D3P'4| 6gv> bxz쮶Mn},H-#~ֻՓVl79쨝-p4<P 0. Bt``-~`Wx#.D#58Xp,p,DB$: '@>T,O5"D!-([03̂2|^(4 a >4P4| &!5B8/P /7'>78*,T#aa0B,.(#\A*DB%ͭ#Ơf5<5`&C<`^3L;0h,B388&:<0-֢-b]pAHd[X׿A;T@ H 6x؁?,6L@@<@L@ dp>B?ȀL <, t9p@cȃ(p@48@( <6:dAxC3PXA;PB$A(A9P,XA@+CdDº)( > d">`d;XA%1eA0@dCQ*؀$>@ BDAD#8A;eAIb(A04^.@FCfX @.1 08T?C(N.C+@h`fAX)0C?tA9%Hz.@(p0*C"obB"{Qde<<܀?@C*@%C \3\'>p@9#xN00D?D $6 T@]C#@D6ȃ0>DBC?T$;fB0C?Bph;8A"TQҵB>PB>C?>h*PzC;he C?Bu%C);tP:A+>C,$3@i"(2B?t&3`(hh8eQ[j`9Cbhi,h?pCӊj*1lBjh?>jC"gpC>*1 gd"X#zI;Bd3@C T@m ,  +Nx+@ (6</% T@^,(UY?@8K^`?0A&>,B+1*A9T%dC`70C>B(\ahJBe?hyԫg0CB;)B+e1C>P,il+BhiJ&(dA,)$>0*p4p'B+`(7B,`B17B B?$B$,\,'0CB,pF)Bp,>X1^C)g`i"胻N.*R%B~F|C&|@H*Cp/H-T-H,w *,@)8KxCN+ $A+P&B0CBBK;0BA8*Cj1'|pV*p(n>B6L0FnƱF^!d0HA16heD? gx' (V<$ ($@Bܪ(9(^@~)Q>8pAl9D>x‡B`(>$rBB0,H>(ʂbt>xAl>0C|q.,x>08T~;p}p>pP;mDB9mkł ʠKzh*8?o9m% ht&rA.1Mnqܱq0%3؂*?%0ce.@+$dN#@$@t0dB,2B& C @#(&1P>(Jr .07ATr.L*C937h(5)>i|qA9k1n(< hW*,;DAm8Wͦ*;DHarc-> ;rm#f"LCN>A sFqF508,>B$jA4bC;\&llRi() X-Ȃ2Ё pNJN(:2$AHLOMN'NW O7FzNC$$@ <ȀLX& CXx L#g 8 -<+8 ?u i@ ,| *Tp@`@,pSg76 918B4D](C%\:A,$] Be<8+us.0W7k2|f;K$A$.zC"(z*FB>$9I29hv[1e@:)gxB h2>h"*P+&2 oC*(:T4klg܁w[ZR3ƃ/D3/tL;/bC5mC5(\4,6'!hb<0$h4TC~^03": |ag)aMiC6x1cF9s9dz^?jf>p>7﹃z;V=cwMha;ʣ1szj2mv;0F\hI~x#ς;I/ƹrGb()Ɲ-Ue&U͔)Fd)KoC3$,0٦%,Ǿ;MX< XoC[X/Xtؒ5[ZKZ;8'{gx刦؟>?C&{|qY>ǿM *b_|9 DA d< ]>v 9vaj?4yeJ+Ytp‚V/^C/yhPC5r3K6ujTSV*D[vlXY}L`ə8#Ç ׮0a̓Y" E|‰[ƒo\ܣ@BqZirhѣI6}eRYvXٳiw%dv7IWsݎѹwZt+nprNY#\Mz?uуoLɗu~?j;Ans-703H#@."N,:(kƒ7uk/!Dz=2!V%`z{(t @*[k#uR/2#DLĔ:n=ޓɛg晖j;(c/gABl˸<oL yؔ j(ƙ7QZ|sV]}*֥Wټd $J^3!REO2%R[GltE4U(OHKŏDSto%cpHtDylyuq4KɄ*y|iϓQThE&IE|TA?%O FG6A.a֢>(Yk][s}Z3t#O*ZaD&gJ}dhӬiFHTz;[E;/LHFcsHE׏*DYEy/}I%!ԇ<'?aMv(\9T[]Tkxoڠ|qD? FRifP% GQe ӈfmy ,|&6acDw~)|ֱ]q ΐG).1`I4~hJc]4p,R2WDg. j8#H6q \8 EDAV0!%m \%ڠ`G58yFT˄-5d0B<. 8 RO[3\;<m#J:KHj-tj1`5gX :RacV%VFef74tFT!9ةVbn\C=RHi <4b F60cDiF =k%U;0g4) 93T_+W n >J`~f 0 ^4FB7YVIBU)p Yҧ~VDZ F`! $9@9F\~GLg(9gCK}bטK76KJ[XAПD u.Cn3AmufB)w{{GZpvŦ F>iP_y_aӯ?t[7ҝum؆I:ñ?dgo.DOՆe@,v01e~)R$u͓"7>q}"ODDAjX:3R!:# ȃ1km/ǻ˱ uuoW%hʊ`©_},8$qP7&` D# 8F|C^:])h o0I+6Oɽv"H{ᅞkA@w J RAN¤>l<҆tZJa|AxA!.!@waFbE!eTu&~.vܢbt@jH̉ypPS*abI>!+/ ky e,KBt.>KB`~Pt̩caOG'/n@*-Ikel l%FӠaa@&>na ؜,|ᅀƀnġP̸nAaiđƠω&& h !Β! ).Q  q %hBg~dMȢSŜAb :T̪-Џr^ @!pҞ:2&&_`/jP!#-NQ.SQiz24 \(E.k! j*a^MH+KĆ44 nq Kv.S_E/ LJ/4qnMLJjFԎy|T&FH+aԫ]d2AP. fJ a :-˰ .@ĦEO!d)蓉멢O_xQ&Da  ybg kv 2kB S桱!g*n(F+h lrRFg#LQ.m.RWx ޥAJf Y14+9cv eخ0HL]BIt *r;^I8EL/'-PHYKTʔLT 48bOHN@B$NDL^i\e!HM $#cq&iCSOUSUUWU[U_V5ULFt4oG'.8ԁLc;X"CLU8$ԠR*G>d>v9tlSM"ZoU9ZF9;RO#F=Df@Q>T^\vFV9$POG~9E& U]caab#VbgVmUG"WWqW/PCbO-\8SUC%?"cB9X#e%[op-.ABF['l[)M5lH(FFmb&GO(ck."S{[U=^u+|>'^=F^ IC5[/dZh Ic6JXTf/ZBZ֧egD;,EVj-jkj&krc[zc8>VUYBNtp{^JAR"[@<Ԡ *uakeu[:*@֛5ڛ;ĩ"LE xј) Daw @ @ a&b1 c$! < ƀXm/f*Ȝ-zV3[Ԁ s} $"}!Г{)mW\) CΗb|٤j3AyNF)!]۷}mz5{ӿ{A=Gyԩ LXr)TY\ѧ뇦@FN>h`3. Z6) ׹OޏX{<ܛLಓy]x5{)!$8}d;ڛnQ)[<D)k)AŜV 4  ⨣*a)0,P㾌3HBܭ"B@: !?Yw{~tuPAƠ$}Aȿ\h b;G컸 `U (%i S :!{R"ޜ) ]S 5#;*]c~wݟ1`AZ @/!泾iy ̗^J\B4\?՘1mTgZ>OX1yНfm-)B<2ʕ,[| 3̙4kڼ3Ν<{ ԧA~̋''(fѣ95֭\z v޹5U紝SLZA5\yl'y[wɹުRɔ+[9͜;{fiTcB#lg~dH#stիak۾uПw3:QX(<̛;ޛJ1/aF /ͤ~*. &Fw1C>ۿSzJ0]r X\ M$^y wMqNHa^}t`fΔ"Lfb*b.tbF}L!X mNKm^mnm~ nBKnn/ҶkW8o.Ym=Zオo /p)a!p_qƗA\`Qq"L2W r.bl^0ߌs:(4wBMtў\mtN? 5ҹuZo5#Z\Mv&OM5V`g%n ^]svߍwsӽ4y x@w~ xGxXxOYCNyoڎy8碏N:Ly骯>|z ui{|O|^34|?}O#_}P}3}O~͋/{~Oߏ?gc*p lJp/ jp?p$, ONy _c4 !p9 {1< m8D"&1KawDFF<" *ZZ"#~aTbxF'x:j߸6qm4h;q|@ r,!D*rl# HJr%/Ljr'? P2q)OTrM)[ Xr_i\r/_ s,1Gc*sl3gJsԬf5iljsܜ%6 ps&9ωts\; x,=O3g"=1EY(3τ*o9шJtE/Qmht60JQj-n12ДTxP^ Әt4mATt3kخCxg PM_eYlBky/_ڭB}oymą86ִ݌(:/5Vwu)#,0[ƤN5 ?u:2berW7CN! aIMh! QPE~ₓ^w*L`7Hv / y ZVVֽ5owЂ'n=_WD gT#.@x7g3-.mԸLFI7A)k, q<"'q._\_\^BHLc%Bs@`??m8@In=cm2N"E*$"/,\Uʣ $Ž`U#:(*@^leP `R&+ ]v:?xnC ,Dgah!acp  h ֗ og\cg|'~=8LafRUWraPG{t(7P ;"0{57bzwƅ('(0r_& /Iai5q|b7ch< |;x`P }G烋HKaݕf!pHHtR@\!X0E~0R2177] !p!`,@hR{g8JwXaF0a_R0 Eg ? U uw@ @ U4v``+ňH-8 R QoXRq^ a32P6y  e`&yIwhivxc QQ&(h.`0΀hP``o`,|1qAHx!\nqc!!llQi`VGQARq[haa…XeRД-1'?isB閃T%[uUf Yc_եUyPWZ~)c9[E g%EdZØə#HIVIi Mٙ9<dYb)Xiė\YY dZn2U ٖV?` IQ`vV6X˩#-%B.: Ii牞驞멞?7eDEiSyɟ%0C %JjVxRٟ Vm&d jBYʡ44G򡶴j')+ʢ-/ 1*3J5j79;ʣ=? A*CJEjGIKʤMO Q*SJUj4ZWy[]ե_*+cj UgkԦo*sjTwܔ{4*ԧjTÔ꨼Ԩ*jʩ꩟ *Jjꪯ *Jjꘑʫl*UjǪcR|*Jz׊ê ꭼ ᪫Jjj骮ʮ *Jjʯ +Kk ˰ + *kk˱zk!+rJ%'j+k-b 13KZj7k9Tʳ= A+CKEkGIK˴MO Q+SKUkWY[˵];_ 1*cek-ik˶)o{q+Ju{w{۟} Ki{븏 +Kk˹빟 +K(+/[FJG RP KۺE@ P! ,     !!(!#$ !$##$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?ACCCEEFIJGJFIKIJGKKMNNQQNQNQRSSUXUXVVYYWWWY[[[]^^a`^`^`__acccdefihgjgiljjlpmomnqposnpsrrtvvyvxzzz|}~~~~~Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,Q=E ͚8ɳϟ@ JѣH*]ʴӧPJJիXjʵW,ѴMҪM{۷pʝKݻx˷߿ LÈ+^̸c^2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶kfɮrYVnfk2[T4llҖl3)lvYmDh@`r( ʰ&@ z+hZl,`Gmܠ0{-.An2P1o |[l3@T`#@(+ nBF ,P6snYwI$)Dz "X$Sȴ)CmB2/KsUNxđ@=f7ڀ#۸|sםݤ hgv&pW&_Cs~1BoZYkY'ۼeAd-~I,,1?|þ8y+|͘nM;py NXdT@ekN \;,bh.!$vm@BZ+.)D .(= e FA \-DWDp ?L,n0@+< h^!p S&Pn"+  }mJ07aFxA H Oa!P-+q@^ܠ0C\*8 ʐ @l?Ld !0a`l3 /җ&([oa4vGK/P@ Dò"g:l@ *H&/ۄ~Vr@aˎ)e7( ~Em&p0M~B)m C&܀LA4#ha@ ӗ$xh',wzMuRMNP<aWЃn6`;{ k[\+uDY" N @|ŎaTM}J H Yep@0JHARV`mZW'U ST;ˈ%jJW/ h@_7xT  +`d*A (_L&8 `. e&@BYVlS FAh`Y3kH@M@ ( A-V@X4K! KoMǪ[Eh vsb_1`LP5@BvevB쬇e=f&,.@&  !gA\0B`(eaYZӐ=EdTsAwRμ 4}7VXdq_ IJM:E`Iw\EtS%PKwv~ȯ|@~0 >Z `6 @M8Φَ̮9K?3n 32 p2cPgٚ8`YA 4PxxxZh@Oi~ B̺"%1M6S  YaF]HZ|3±F*ӝRDnA&Ǹ_ʂ)3oyLn/ tŚĮ*on czq_8hgf%{rہN0'sy~z\E\BXW7{A[=H@/إ bn׈)Ft59}ɵss=й6oƃ-2 Ǵٷ/k/'| <{ǰ+x]*uk02X)6Uk<~շt8|s.dA&0b~wWqاLq1'0 61c.3\t{c|@sSV|;Vo|Q`3U7M:}D8sǔ_g~$~Faw&msS>Xg<T0dtVj& 4? d.׆qxY.:Uq7\h1w3xS>\d}sa8?CMgԂ(.dk20_4xi6HWooŃG?|fvExH $NW{`&DXU3ciGgOD?CTWw3cf6󇝨wr@jSBoo7nюL%S?0h\jBE9{>{pe4pjwxC%yCWԊg5؇XOd;kv ؈[Hmˇ %`1 }Tz3WΗ.gm )v h)K6 DP@Vyk T1 amWV(z?Fqn}!h>4X>/# " lb`Ye.}SA8Vt^c`fF<4t1eq"@W>W=%r7CؖD+zWIqW|{pV5SermUgtBy<{PiKT."&_5Vr9d0W`؅0&]7npaQWRvu45@h.`mvVSK.m@W*0Hs[TUw.CW.@{hPuj}id_u3Lf;&g6WȈ;N]Y@s)uaN@M i0pz|K 00W +k1`tK 0n?3R SmHl0t\dN3Q0٥|q Ŝ8Uj؈%3ZP5&17`\Ur`%NemU5P}='HcdnWj~..U5`;1P}J5 Pqr>y;Z 'P]`YZu"@Y#NF[u0cZ[@ffMձ20]%a/dYɪ- 0-e֤`v < || >S&H |hC*Zv `fc{L[i{r][+#m>e9=kx {8=㺱#@e^S;I;++ኢA/sjXtڈS鱆cia˼ۊ|>=uK ?vm`bI .˼k-ܴ7Q@6;!L"zn/:72xk6v%,<#8Q;-|Üb8<>@Bi˾<\Lw<ќ̼LԜڼȼ \|l<ν<\" BϷ]}Є!1+=Ml$]&}Ҵ !(.0*}:lc8:u1<B=8DJm[R=T=NH]Z\P}]=d]|fl֯n=t]׏r#m|~xr n80bEy׎1w `p)&ٿ<@8`t0lڮm_}zP`S/!gSPKZWpٓ=΍ΒQmW1c8'f V>' p 3fA=ѭ]qfWt .OMUUd?DH@1hp=NMz_n b#2f& QpO!X?hT@1r j9Vj% &D 40/ ~gV>!x2P @VHpzOBnD~FQjQ\UgU߅M`^pѳ6.i1pM=QF+g>7w4ga.^p^|0Q!ApO&7 >>g2zYچ4ދD1*Aao>p}\3n 6kC>'!X9jWg:M >}Aas:.* ݔ3mJ U3qnTȅ& TS\ SS4C+k$] VpO $54_x1 ڒ<,} q@հ ybaU6 [[n`k/z؎JYE`\d/.AJk>eA Q ߓ0w >e+֑_qpf,_O_?oOӡӳ_mO׻1OǬ_o{_^}o@ 4pItA[JPfB 3Ԑ ) CqD; KD[t<%CQE _F11G RqTrI&;+ү#LI*Ұ'+)BT B !LJ6<)K\pMH*D\(-D!ERhMFU)ĩˈ|("80 Xt0h ; H$6uU!P =A a!L .C6~0H|L@f+D(uCE㒅4Mrd`M =tB2# 1Y0!;qTdp7iV tLPd{B9dt0480bX[nΨhRzu!$pe Rz6-"%BjDL؄;.B!-d4H!pm]"g` а"'6!\XKAd-N! EhxpPل84T0pO8ЕDl]QC:+z{>HAO*hPDHTy9 Ia!'<_M P]pxnh@;uMDw`xA6yA=4`6 QP] &4{հNOi@%aLdh '1HܮRl.p-2Ā hH+.34knx(Q5D[+^y Q®LPgD^BSAj^AdzA\0'24 AQN@*c I90WD&HƆ$MWxbClpEi!A,8@qx`M14dy+JD ᑑ\# T$ep0P&4H )ecl@ /IFB nK  4(2  qhaP ) Bu-!PQ &dTp(/;HŅEPE"܄$YRxPhY*+90H+rP & ѠQ9CAD͓{/ 0U1'Ts\@!~P0!qN]zn|;ݶI$RPox[ PL8 Lw=o x.%1;TZ 5&6 ')_4̍ni) Yq GzzENo=K$[f" 9$s.3t$% 0"c=i~^ohqPybuh]5{!ű.r;  8TNxclygݧO;tF<([CP&*8NPtߠნ#2x\"q| Y@P XE(? Hmc{H?.yMP>z?ҋ?ê^!2 0TA*Pp@`$r\?9鈡-ظ>0,`'0C@MA(= A24c3'̈6cHX)P"+…X/Å(+CE \<D C0‘lx8 A܄I([DWFp;8=8((B =@hTey ?]WF9HC C8<:3);p PB8L M X;\:n\řCÓh7@8m2cXT9f24-TD%CMTFmSAJBm:]TITj{TTK]SJTOu LO-ՆxRS-UTMUO]UV%OWyLYZ3*X$^u_ Q^1bH*%?񕋑pSdeem+gՙ;遢*7P"MHx""`"P,)2Atu!tq=8%X68: `jh/x8@! ذ؈! 480@(%"IZM'M02)v*r!-J?Z#Z@%YL5r'B_M2 ]B&'XE +#e$D۔Tۇq8< 4X:) م)+Y ,]/uZHFu(J/HB(B9 ΩBB5Aq6 +ICBVE݆(=;D E]B//MP{?UPQRM$*SGM]J`C}H`b5b&fS'& G 93(2uX,&?8 +␈36@b 1F,U0-@4> 2hcchT=} -c:8XBMh HЂ)*[dh*ЂԲ,ac*;@1:fMM @8(ZEW8M*ㆰ)pC4(B\Bhscڻ4 Cxg1y9ef)2p[GUNb3;2:^:؃8J,Hh;N; sqѲy8ȃB@{Y9~< K +T b >ѵ-^q:&۲n ];(^t܋Eْ沃,XB8`.I?Ft>f7X(>2)8CpB&7&+7ivE 0ɓR>LYŗ$i)a-Kh=p2 0=(քHFn@$S= ,`?@>EXkGp9vV~2)`̂.#**(2D0)1؃/.,@0`o?p-@l6h)1xI+ '36E*p3(E'/+7f@1Rq0K?3)<4z$3493p='?D`0qك'NLL)BxM)6B`@SM1LT8f)Qt)7ecJCS:g''زgӮm6ܺw=P$L‡/n81-/P!CMY~2f g1E}ID91a&m4^6NU}Ŷ`nF%9T$qJ@IhNhArw`h_|GW$T(HQACFuZ ECvh1dTWh&2r~"T8Yqf9䔹UȞ96!eA YC@&Ѻ %SdęgYd {ARPBE_`as[|1kLpy15w"S "ǧ,B%jq$*4,2lNL"npQ=#l+"XW8r*XS$ M@Yt8%_ !j~Rm¡InJ#cQEQ9G"EY8W!&9Cf#>DXc> T3JZL !` 䆾aB Zh$A#-84hB׳mL}O"[{6+${" Z !b[[!8+h_@ ϴ Sf)R)q,p>]% v.tIKMPB r\)!lN%Pք rDE]6\f#ux֔mn&,G={)@{[Ĵ^Y>5#Dzd &ĺGq*6̹4AջP|;5捬wL9 sfll+_m̌ٺIJMfi 7q[DFCc>{&]{fJot?Ǯnvp6Nsal=vK<o"{BA'97\` b XL4 V9ғt܀<yɗ.E VmعԳ.u;aZM!`'݋mqu/6b:;9P~;/ӽƹ{>3<#/A>s3>/Sֿ>s>/?>;?/M ?|6]=)tن-GA__rm ^ f2jh\n@I rPlt b[z\$Ő`șim Қ r&a`mN!V JG)a%2ݪ-`q8aql`!a!6Q>p!qal!a@&F!&p!l^"&fi aN @ 0b $% ix" Xm]QA9!%8 Ѐ/j"3"'F# AVQ )-r#b.BFU mٙ ,bdݟ7HC E3&dDYmA H|n JA8DdB&o8 S&&$$b ll.@?+ *yDvh愆z#_fA$p)% j H(J:mKmTjā6 g)d@C-NDAOu,@pj@e.@dzW `B>o܀Zij8 c \YޮjDATzJ,"'$|,@  l PoV& Jl@RA%HBQLnBKBnX\`@b#(6FΆͱJ(W)DE s@TBd (&@ W8&H V:%<ELBo!@v."e!d @ȤPA -D,& APl/~`$`LHtIЯC@0J:D:%$L@$,@V܀d6D $"*  @ &4@:n&<H p%:UԮD@B7"n$lDm $^}eN n(B*)*BJB L: '4fذ$@C|ENdv6c~L` &Kh܎@T8DFC4"@tC K2?Dq¢MPj?4φ1dK,\Tf> c33f@2n(2lkC7t |lPz"E㭤tWttԄQG*QJ"@@:sl3o % iG"X@Ps"RR>B"A֞* @4w AeD6ש.kcB0gE @LʁY+H@\~"nlU)Xm]xrP~w$p BvE` ,tU63Ŏ⣃]"X`0C`TA ]A'"MHvkc$/O%n \l6 A G!) [L#ݱD,BfځscB5#&soA;>ć}n)@"6oyW %jHZ ހGS! hnܳ᧾DD ^"ăSX&|Chcb??!$GIV,B"o`q??? ?Yn}i?s& 64xaB"arbD)bt"HvDGGM#I4ɣ“+ILȒK0W6LM:ܓ>B =TĆJD}R:]tF#L҈,PE}NtTU]RMUVe\55ք)dB|`b=d]f}hjlݖn\ce\k=t#Rs}xycwQw|SU7>s ~XԅM-]A1dL5>cHGHJ=N\’1|YufZᝅT~)S^i{.fAizFۡO~ ~4zQb.na .$-Fn52;|6z C_˔͉dtS$6Xbׇ "숣PMt}X6((D;0qc,; *1z4@C 0 ic(Ȏ7C>pA;#dp5 x < R?yMx" A8#I RAUM6B NEܥ q 8ƒm pA/ɨ*"l6V4'Cd ThM{2 XE q XFCR P ]#XnDbi yHS~C"0 M&> 4ZD  @qT b #!L{+(=`` JLw[Rr ED Y|dh鲁tgPEu( ^bF90! G蛆V9iG"!*Sx BN]P >N;:*AtJSTvQD&* < 6u6DUH!_SUgNX+@M\x_s! qW! C\GC@ "q7A <āȂb"WC!;$bX# E聘^27YRb @M3$ < Z66!. 8vxGLv-`YM|,!qNέL bB Zh=Ė g `1acưO4 S(A0/}0 zup@FB W(, Mȩ!`35 Yo" ZJ h 6< /7'N 1v r+ Z` . aH 1-PXpxؘ i@޷m5l@'a~q&Ld5.P'$YnBi8^x7a{ p@SA|Il O$+v1quZ $`G;눬᥂!UA @M0 i%{ÔS HLdNCPAWt$yؚF`Ԁ eM8B Tz)B {c0Akԣ6vtB\ޞe->,ƫ "8 ?* `@, ] `ÊÍ)x0{MGFTfJ|z'"h|<ݟB-<K- *am_Q?L( 9߄v۲"޶.V]xBb*Xv_l^!&EX x".+&"Ëlx@[CLd8&@| H{boD_@"f&ܠj 4ꀳ  .䦠 ~/l74 6A, l 8ڦ 4 @.AӴ . u !  '+>m ( "momƅ  5 lmZbג, z"Ƭ Ơ 6ްxƠ A 8C9k 54 N Pn l' ⾠' 7 8C˒L  4\q6 K԰lpoJG. 7 q(,!"a="l"l16lݱ_ 0AL !   o' RO  N-8L8Fn:#SIJO O(|&eR%uF.'{Rv|R((p(X%' )RRr)y)N+*A2+LsR,U,qr,2E270a-D-m /$.iҦ R0c/e&1ۣ0Sy1/="-PG"~ 3CFIGf 61! 4E5# * VN^7ׅ44R6|JS27pvB',Q9#6R!9$@:S;a:;<;;<9S=#===S>#>>d<@{?@qc@ AgC3AbABeA#BU#?'9+>'TC;C;B?D#TDGAKDES@WEE_?RdD/_6 +j+hB+p"HGabHHc"I}T'HI"JbJJJtIsbK{KK"KtLL# +*;f6NTNNNOTOOOPUPP PQUQQQR#UR4&MS3US7S;S?TCUTGTKTOUSUUWU[U_VcUVgVkVoWsUWwT^Ep*XXYUYYYZUZZZ[U[[[\U\Ǖ\\G#X-]]^U^^^_g]__`V`` ^`Vaaab#uww;6zElwG%wCw{yuAZSC3(xxz`l XD BBzzW|Y"Vy%zb"=w|7sV^ї{m}|7^wE{~׀6!%oUDwX ! !^~VDx3wc.X xWlBhh'z"#\rHD'"0nd<8wSCڀ T - jh`zډ /"!ch`~x."Pd 4i6@~#}]鉧 6؊ ik 0""5} T+"! ԫx8}QvB \ xbR'vOw @ xP}fxK!"8% 3\{}ŏ|5I6ِh+'\@TK Nb\bT Y U 6Xeuph6ARntGhd3R L T_0X \^@O(0(9 m.*Ѐ zݠ  AfFu›|^@6 ^vh T@` h`#AHI+mi  Ġ x T@ R@~bv)&pZ!X6z   @ Ë K` R(H:^|u Ҁ7 N~ Bd za՘-S@p r ۜ[x@@B R +,^iz p PsB= 8BҠAz: føKS[u 蟺;q`@#*. p}aC9mS# \` hxz` \Ț؊` l $xHi@,(5Xɫp6*<$ .R i7 =5V7]_ &a.A Tz[ 4^@Wz\`xCWh- R6u_F,.{ \v  R@ !|ق} b)+.878}7! dN z@ N@/i T@ J@ !h@ebf@i  .,w ڸG m׍X'څZ  ̈́`4\ @ X_]ݟ] @v<f d]/aulx`6! bt zxJd  }mߏ  n bf h`O];5 h=6 : \Hb,&:gM˗, h#2\V .L!|M&0B!, ! t.?oc5 '`;e?*eB|m?&8b <0…  c&L+R,0ƍ Y2ȑ.<2ʕ,[| 3̙4kڼ3Νd`H``yERH>aNHaFh_na;m""H&"#)hb2c/*H$yc>q iPFdJ.dN> eRNIeV^eZne^~ fbIfffjfn grIgvމgzg~ hJhh.h> iL'i^ Ini FKmN`kmz~K\Kn枋nn oKoދoo pLpp /p? qo6_$Hفl@! ,     !!(!#$ !$##$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?ADCCEFFIJGJFIKIJGKKMNNQQNQNPRSSUXUXVVYXVVWY[[[]^^a`^`_acccdefjhgjfhkjjlpknmnqposoqsrstvvyvxzzz|}~~~~Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,Q<I)͚8!ɳϟ@ JѣH*]ʴӧPJJիXjʵW0䩬YOҪM{۷pʝKݻx˷߿ LÈ+^̸cfʤ˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k艛*찗Yh묔3IR[%6L0Kxx4Qp;'p'2,"FpGܢ'YCK pf!7$" Z po<$k<Ûyp0+1{I1 ,r |2*7,@c䜚 ;|u!W̴HBz(`-e=2JKtX .X3k q[\ul߶zcvoCڑkָ~nܗ-:,@h/Plv\ ^d;16IƾjeqfQ e2%x# 0b}–Ig'N#?}[46p *2NYbDdpWۄlD&p"W[؁ R "N[Hv ^@Yį 2 $ tX0a a`` VXB4.`ugv`+l4$+ jl)h 6a0Z ,LB:P,eYsM`04\%@Lp"x6# D f pg*Y`: .hPB{-O˒R`튃D>`)5[\Chb&\h){Tl`|锷!f10 3}Vv0P@\=L& w% :.ͳ|¶>8do_Իò@ںEH)v\E`S,ENe zM2X+%u3YZ;7wz7}:|6\O NJErk7zW8=H@/ PxLAV4{6.u4 D/a~-U:@hwn!8N}8۸{߉`\>D 9fYc*T+^+E D&oQ35Y4r.c A&ayd4%7K(h}.myc2 BQj3)N=D\:3255'}`V&ħ9 eW}>hu D_p~Ck`v_E6zPzR~Y E^8Nff47xPxldh.50.`:p'Hxu`y631bȵ?71G!q$F(8"Oܥw2^/u 'hFouƑG.57M^8<$;p2PA$9:elh;lGCqqqT6/? 6N WzEYƀ֔XXE3Si$Kc3?zV~29Fl`:).hS<yTh98;ze4cbi=|S*2V~DQ0wzx>}^C&s6wV0(x5+%YV1Ì8}"RemY,kylS N)|7X,`WVw>ٕqhx+yWzy+W {z`&5>yqlUWGtzPh4KQ. F_rUqEH…9cV`XrupVEŝd`gD]"_98cεluSSC.l3W*Gn[L7UV.V.0zg@5;I}YW Ry=sTtj0Nʓ`kyeeO39U31ǟPfTduM gNć.0n%`ƚaV0t3^ՀNLl:U2s\cfNHvLYKWEeYa|Dq%Ŝ׫Uu/ 0Z1RChs%5*uXT[VRI *{2` E&VywRR#&Q 'HM. {qJl p% E`\DZ{/C{H#[=skpn7粻[uF*ٻ81'@s5y;@qa9͛:) ჃѺVlbh ˽K[-ה7 b?6!L"rum.r:7nq"" _ !3†ȵ,\"6:<>@BJ;F|Hĥ-LNPR |˼˾<\rż|̺|؜ڼxA <\|L <Ͽlϵ <]}Ѓ1+,Laѳ"=$]lϢ {&.0- 6}8z1Q:@6֧ҖBJMkԘL=T]V\܌^=d] !fl֭r&'n]v}׌x~|Ҟ8aDpx ؐAw _p)&Ej#Fԛ҈K&ٮ,auyNP6ezP>,v xrM EBpYz=|0jeasN0p: !uf_V0t .NPMTTd:{DySsV;NMxS_n! #b#2V& P O:thTz)4bs3 MLs=p{3\5nNwns46z%F>2P`zM^#@@=c7A5\w`و 3@,_t1o=\>#l OPd0JNY,?W)i6o4X +MYefX4D\`XJZq '()X2h)"S/Q%B|3P*h0/) P.ؙ'2qdD$^3M q,&3(yb E2@0 qPrH`T$ ! F`A'dh{^pED#ʆĒ p`/ (tp0DTPIY>USk Xd4[A꠿?@ 8\6iB z0`.P-uH$~𸞤s bhHIatfiLg" 5iPtM}Ԍz2Fu]UԯuȰֻPpM#\&6D~Y?dc,0Ŧv rl$uD?Pp}bc[J^[w[߶V72"[ ^wQ2N&w}qzس=i #.0n;A<Ҫ./e$^)T</AŸm@MhS 6h'=4 /R۪#Tִ#@u2!0ud~.s DH{G$vWD' ""o= a^{h1 i] {+ ŷ.sd ꐅS XbXHlyC& %=l@lkB y?}"&Ц)8Mpt"2? & F< 'P)d*? Hn#{H䳷#=c8*C!1d3+pHc'@H@<47훈,(8EAA"0yɹ h"x<ҋ,@7(6+0IX!"A+ B0$Л23L@CM388 9HİG)0 H)$('(C6DOB,`=ElE`D^ۿЃ#"1Ѓ3Ⱥ/'s@?[;WE:E0K#q+8&(( Є,?I h *xzkưlK΋JT(;ȂpۺitK4Ō{8 p\n8J0@8yBL=Lp̖20I4L̵6@K^ɂ<I塥܈G 6 EI^,H1B`)H,J4/3XB)L_320`|s= W:a&:6dIF()@(&h6p]G=89o6Rix=ཋҗ[fG)Ex-O)83Ij#=f6E,2G8:M:^~1"2i=8YFpBzA=I`I:%:xR470jgknnٶ~2CX)8x6hOk?ish˜:hD,+xF/I) &`6x8hY@Xb6)f&Bh7`=x:@Exܶ=큨遈Cщ?X!Vy#D,sO hkd:?=GhI0-ȃDpn6I!2(<8᪖?0?P2=iB|5i~7~G,ȃ>vO(XΊ-Уb+8q&1DP)1/-; 5@"?h,?(5p)1p7p++G+3Ȃ5E)x3-؂EЃ&/+1h)X#,s4=XsF#O)@/+)@887u30&ȃ8pqDX/X) =pN7)3wia0*ll,,؂Bca11hICu2؂& 4fL0p焐Dx,Ǚ^-Z)@+6J2+2Nv,&3+ۃ=ףK75 1 ,ڙk?NH)h1@hHr=W.)&:/xEA1S-/5px,X/P/Z;,6,,x|72hf=˜Z2q/x3r2FG t|ǂ)Nxsz,8 )01B-?r/,3G1ml)冠)hvNG@؂: 'px,nz ',J'7MtC4=,7?V 2@X&Gy'po?#6z@X&%aKF__1x@!N0zO`x暽ǂ3Cp|y/p@q@M)I!OzĈ ayidXLƍV< &$Db&&Oth3%"pǠ$ &"YF #O #$?MBbU8IC,y|ciLNYԱ³x4Rn:ڷs;x$i*o<׳oktIJgʘ1[c%bXXHHI4H^xIDz\ >XDXamyWyHp{pwiǃ^=4LTsEt`akHbQiF8Etbx1Ya JIk6fQzA'cvR4f:jAGYGFgeŌ]Y" Di4'mkwlIV'DmعYzXa gVeO9!%kdP_d^8ŋt$'`Tj YǗceaZ3֑"GBDLlHFBl%5Q3&A/Fj٤RZ/`, *F)NHa8?3iEzX\s>,hxњ1IRp<@((}R/d,YH'0/"g$ X`@yBf5zA~I[e Z F$ RJ6dx"n{[f4ھ][TeK (Ҧ!ij j \C4߈> }jS4aL2ێALrӗHMJ#<3\rECYn͝3&u-t_߽@^B|~;2ws ޝ[#8v.9̩k`'(mc/HS΃.t/n}C3ٸzsɯ8~V3}[F|="s>/??ӯ?/ӿ?;u LU_{\vM V6_qG6B09 {@] 譗@q Z `IL  m!FNa|1d!Vay y(F0"$*u$~ƹ  ܀' ˄()ދuB vM4D-eB @#+~#hvLbw4A b/0؅3|G!Hx_v} ti)`vh @ @jX@x#8~8j9n! C$,v!c"@ ]U\Fwbw,8o@z@D zPJQvt DAWG%e-ZcvCΤD ܀@^ $#ΣMNFH!ZChF A<PXB'BZB+&b&ZHx&HHg|AA,A[A paz i_2JgfD].<#D%At'ADB+9ATEtF fM@Dt@[bAANW~# |( @hZ/~ Au ܀ZDZGM{hb,BSHB4&` @L@j`@ @ST HDmW".!+"AIr!0F6A@FX*#`qЀ (x 'A|)T6WD@@į: l@ZjܬZ-nJTU@+*YjrE>g@z d&X-DhbAj@Z]>cLLm+)'H VĹPJB^-AD&x` )Cp0d'')%xd͖(:@- uh(DĨ]le>ajr@bqHAS@ܬ ee!|jL-SAB,.@DTY~,S&T(-Iha/nx tfjV2E(i>Ad<,AȯJ',H-Bo0NDdB!q '@/kn0RT4Jd 'pn'Xp"#wbS%ʜ/"$bC1Xd@Pz B,?F0ĥ>,Lo!D +neWBL <+SfA.@G`z9NͶABDOpS &l`H&3{ +kp^4JX@[,YAJHF![ A`o4  6JhBu'<D ̥B@_~. FT H. . bA@LC4 g`'h),@Ȁxp lBO @*ox3e (6DX0/ Dl@fJ@ @'3.ngD=~ܢ 0 P7v3'~y<:I^e²6, qr vH4?G,x,B4%6<창4>=&o?+?/Yc??"g!_G)sl' G& 6tL"B`ƌp4vdH#I4yeJ+YtfL3iִy#G~h©ϕ+5pQQjTSVzkV[z ZЄJ>LZI8:vrnN$}Kn]y{w߾YpHn n1y'ۭ0r7>TuDOu~$:YiMJswnݻyxpÉ7~yr˙7wztөW~$w|xɓz,첲~|׷T|(r/ <\4@- 5ܐ0ˆ&,BM<U\ū@ ,¨mu9ՑI-]Temf5!q6c6_>Uu|N\ЦYꬵFrh gx2^Dz<{S;Ů+ZޛonvK5"v]ID-ߜ0wH;>Q-E/3:]u?mpӝ]I/VyboxA~ER`~> 8H἗{ݟS $qa OC6L _vVS? p݀ z > +~; :lpA\Є?X.A&<.8O!v4;Awl( PVYJ#D\H*'z@HĈOַl_%D? 3$1#;'.>O` Y_12#GO128@${>{2"$ .$=/?pG $(6TfX)6_HAXAO8{ r.48B,5E5sq(9 w,70@\#A (,Pz $ӝS%9㾈GX"Ī"vo0F! 7kӿJb k`A= jbzǻXZ-n)w)9쒰B-E`v"zABO(=&B@< < Jh*D$A0,M븧 2o"!` nTk o餀  #b蠗|$!"ڮ+ح@ "Aޠ# ,! $ ֠ A 2 XNi $G !hLP @* @A@ ,PL 4ꀔ$mNd DLBQKؤ#Ȧln hΠ(-H,'}@+ N  <: ގ ٌ= `  ހ<ƒ @;ވ, (l @ ` b ĊĞ(8A׆U$4aDj!Nc  =!q .j 2" $!!;$! !>r Hj ΀J> $# RΔ J&ar ,4$Q& Q & 'Ho(o9ijM $*g+2*oƥl%,˒*,͒-d,{f-R.-f.N*/-xR0mD/f0K S-1D11#sC3.#$3/9x g+3S4e3+FwǺ@ o4[4ӲNV4C5w+(s%@ :z7s+|3.9(2&,.9s&.e;'.]B <ӳ&s/]B@ 2Q=3&0]b` >= <@/4a TA{@c#@sA#E5TB/s(t=t<1CRCB?D3DbDKTEY>sE_@Ԩ`FSE!FIF+3GK9{HCGH5bHID5G@IJ4HJ{JFTKaKtEL}tI!I;M=11 @220:.41@4112T225N?C33 uN33c1%="ON-N?RB(LE`FTKTOUSUUWU[U_VcUVgVkVoWsUWwW{WXUXXV6i̖YYZUZZZ[U[[[\U\Ǖ\\]U]ו][@d4D,^^_U___`V`` `aVaaab#Vb'b+b/v_?h84Y;c?dCVdGdKdOeS6eFe[e_fcVfgfkfmeoVgwg{ghVh+chiViivCjVjjj=6gVkkkflǖllm6mזmmknnnkoooVDpp pVnWqqhq#Wr'rOr+s3Ws7l8s?mtGtKt"4tWu[7-YHDRfvcnwsWwww{ww RxW !NuWyGBz=9#$EI\ N#֔@'{ ( Q9}V8Qրj4[: ^k Pb{Ӈ^TL Rb\~T  \U ?C pXh2!Rn'@h d@; L"T_4Xຼ: dZTM Ѝjy Zۀ  ! DFbjCpr"4o" T|@\@`n$!in:XOi ꀛZ y S@hm R@|bt>-HiOB:׀  T aAj l ,0Җ+[[ֱq@&' y hZ |"b` x`E$zZR T#\  v@8" R #0I~ p K༃ ཹ+K̀O"k]x\ ^@" 2a^ = ^@& wMɠ ΃H| x`xxh эT@ݶ#x P$("#49" !“'M ,h)Q%4#CZxQSF5yƑ$ BdL%Zbْd!4kڼ3S&<{ 4СD=4ҥL:} 5*Ҙ:zV0Jя1˚=6-FoT 7ٙ_iꬋ7޽| 8`WntwͰc:~ 9Ǝ5F Ċ;{ :ѤKeL$Ri쑚r6;ݼ{MPl1v[ۣfl> X|>fTaNHaPDƒNz d!`&byR.c2Hc6ވc2PdžIRHBIdFdJbN> eHHU2eZnɈ^~%bf fV0"ɇQ gr)Zv2Dgzg~ hJhh.h> iNJi^ini~ jJjjj kJkފkk lZlT&lNl^mfmnm ;jn o+oJg 0Lplp ?<]OLq_qoq r"Lr&r*r. s2Ls6ߌs:s> tBC.%qDH?/'0! ,     !!(!#$ !###$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?ACCCEFFIIGGJGJFIJIJGKKMNNQQNQNPRSSUXUXVVYYWWWY[[[]^^a`^`_acccdffjhgjgikjjlpmomnqposoqsrstvvywy{zz|}~~~~Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,Q= M)I͚8#ɳϟ@ JѣH*]ʴӧPJJիXjʵW2OҪM{۷pʝKݻx˷߿ LÈ+^̸cjҴ˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k*찗Yh묔36$%6L0;xx8Qq;'p'3,#F pH'Z[ pf"8$.# Z po<$k<Û}p0+1{A ,r |2*7.,@d䜚 ;|!W̴LB{( `-e=2JKtX /X3kY[\ul߶zco Dڑq~n܍-:؁,h/Plv\ ^d;q6+IƾjeqfQ e2%d{[Cye oZ&Y8y7 cnK#n/a N

        3n`,f`Xj2DbV؞jv s5i`@;vV1s(4g n !e4Cnnpв‰0L уJlu>pކeA~ uǓ޹,Ȧ X: g$8p_> #<%-2Lm~y|KsiSm9R\+ʌ-zTVO^ IX `볼 4@x㮚j@N/pe n6WO͖R M OmF@lˬUGs `Q@0H]@nE hCYp{}-0v'vm]UUA tut o@qĺcl^|XBVفN0zXLF'XBK+ɯiߔ _ /@ Dd33\x.%gźk೛[NU@V8u^UyAwOЇ' EW-{rQ|i|v CEȌ "x;N hD.d@A&azd4%GK(GhĆV|Pކp1&, 60b .3\0te{{>cSS{;Fneao|ʡpM^}>P.Y t_P~ 3j`cł~dW,g<T`pj& >g;PxY%e6/`:p7H|6`y631b?71G xrW4F'(R&pFH0Zp1fY6hz$Sss~\'<'@ejsPspe=Uf xMyeQ41v0Q& 4Kd3CzW}29 Fl`:(.hS=`=|q8X(=w{:+a }KS=0hYsfX>y18;{@e5I'8'WzȇB咑1sAmE5s XQG&s&wW^c̶~ x\PfXP GwxfI|fnu ?p@zt@`\xxeVjP`CGe'9rW\PnC|h>3.lVw/#D36" kauL9ebsw&mbtc>#k(1e" g Vz=ܥqSp} W~E}Bq{{p&5Aе< 9]eSyDI<$OH<`ck5"/r b/\b%`ZՈ.]3Ar5`%G*]8mp]QWNd8f258el vSSB.l3n*Gr[KwU8W.3W/@{hPՖ 9p } gK/DQy=TtjMʳ`mydwAP39U31GK6QfTvM N.0r%P&m:W t3_!NLl>2s\cN8vP0T׃˩KçKQPy~dא_::a/ P1Rsh%5* vYZ=\VRJ0 .i93` &V}5FxRR#&䪨Q 7HN.qJx p5 F\EEZ{/Cۼ:u+=I<Rf({58qq`Wѽ"p!>7Ûtvl bi ;k"aMTǾ,NicRղ HWV ,h ~(2!$lA5 5>L,#G$"=H@ԯB}HJ- -*A*R=T D-}O-Q]\^WYmr[f}h=aFnp Mmmv}x]ku~׀ {}؆}؈-'cceْؐ49aE9٢=]qw `)&ej3FDӘ%KFmuǩNt^z`>v6 Sĭ mW(_8'Pf V5' t SfA=N]lfE> ]pBATPeMfzC}GH@1hp=].|t7`:$6-cVpn->`(CFO`c0R.s 4.j`|iE &D4A0}hi5h2p 0VHy`OS瀮2~Wи3 `E O|lf[]T Vv~hAapN0&7zFW5gCz94wjw3J>]t>p{c\d8.s5'89`hWcd:M@?mY:8:5mJ U3Mq^Tƅ&0dS*ONPR3C+ (] VRtY_1ڒ+L,_ /qPű y"aU7 [[>`[/XfE@\v/-?Qp  d @v + <|y/{4=Nyg!__ |sОEؗXX#bM L_տo?~ $XpӤ@>-dC%NXE5nG!E$YI)Ud%M&Y&MMnDOA%ZQI.e*4̝QJgSYnWaf|ZlMge[qΥYӚ][_&\ݼxVkcȑ%O SfbxWgС"\=P'fkرeϦ]mܹuo'^qɕ/g˦D-uٵo}'_{T^z?o@ 4LtAJPB 3 )T+ CqD;C@,qE[DEkQ?cm3PDrPt0$R2dM1RE;ѳ %#'f00Rᅅ p8J ptW-A5KT8ȇ" @I]?ڰ@А!JdXWn*`"`ڄ -PH8aHC8]0. DCi?9^44Yh>6A#; DH?5$-PIÎW[ec>.]Ȏ0d!<@c28Jd_-rO6aL? 1昡FТI՚orq)܅uj@"~ HO؈XN 6)bf>LŻ"IW~_# UxHR}*BXXqx2|ҤPJ>Ѣ`x!MȽICDN! VrX[@J/}k_*p :t"#TA@^cF#ig`)hCC8y A628m_2*4r ك r'H0&2|sSArP 2Vfp\8[43p'qx# *HbbY#+ B! ; X/ Z ;Ag L B KCH%,B 2 ӏڦK֭WcCkx J]!`Oq+ B_3SVdD3 q?AnR ͞yE&$R%QMԗKIIp!M  ȶΒ ل yo UbC +b*)*2D*DbI@Ye "A GhBʀ9za!p nȐ@8tjB8H4 VD# ;qU^abl@$&@ZTќpi !ZxA 2;0*&d@@@"E+Ch <ءfKq4vafvӦKeW[&ɵ#mn[v q̹%2p\u~H  8. L /36$,` ,Nq`dcx)d)x1. (~q`rL`\x [3WH^q `=/85BzS)XNo@p¥Rs[W]yBC\~ub!(|vc@=nˆ3dI|s`a#Pzg)@0p=2:JBvmygNpO 92d8Pq .A"N~{SH)Y@M @i@ ['p)*p;pZ>D{8'@Ã8S[*( +@ H˨|AHۈ˸ > |9*WY2 !+x]!(H A-8;?+[0a),,'0'BD@OBBB.,:8:{ÌP: Л"h(,v*=\FC@\BL8D:97ÈK9F0ّC"lxOR,s>UlF`E?H0[224B;0ȗ' @ Á@HsF}| h4sj=8#H@Cx'0( -@] h 0+G~8= D@lj`[PFMJc3|ㄥ\Jh`2\=07l4X[9{5pJqP>FH8E V;h9\& Xȋ˹AK FR`Ik|L(L C-P䀱yL|tI@{9 p\ͧ8(K0pÜ<> *K0XxJSj!S@-TO85TE5AB]THD}HTT=TKTMT8iTOTNUS%7PEQ=H-UV}UpUXHUYUZTY\U^U_W Va=U?-VZ=VdUe]VVmVX Iq֌()S̑DEkLlJ2*0/gpq*PuyqȺ -藝a'!Va}al|W:&[S6$M@I"p""h!O0I?u؊h=xO=p/X3H9(]z#&;8(+y@}A2ztU! H3hXZ(z#O/2Ȝ­ʨ$-؁"ILM[u[[ȗML2)(iO2(O!vrԕ=e2"h.PFЂ3\ܟ"*x#ZFI@ڥ,/؁(*]]κ!`E8s9P-/C050I0Yq6IEx^n^_(RW!PK"؁iȗB0@1&C OP@B[>5_3FЭOTCY<AAP"OzFP8ܝU Չb8{bc㬘V5 2 856ֆ %7-`dH& V{ 6pSNT-XZ[6 6-͝BLd*;@5墡P^KG3P2gh6ƒu1HhY1z& CqChj]e4 D`V1琑42kH\kfcS;ۛ:`3Jۃ88Z;nEH.jH.;h=PF;h_뛄Fik.Z8뺉hO6kM@:C`18aOxj~jWAԠ@iFEH.#c蟉@,ރ~@@>(+HI8-E o< j@þ>9xcv"Ѓ21=(=Iv@=xB-!ɂ5JNˆIH?<: )X. %W2 *n21=,15Z+X'*^,10'E/B5F*3.F'/+2h)F-zf)HkO*H/-9P?083x=''P50O=xĞOd4s+|aŢWC*A'G.0`wir0 'gA;j/.p%JqMЂ08hHmE,.HDf0b3eC2v'?O@I' u2852(+n #KfO8'/ApI'31he0` ~v0p)CgOЂy&O@,ZBI,P7E*x: ,9p(Iy3/4؞2Fgo*O82z*Ȃ+B3-(2Xz0-xE`?O1o)xf*(떃eO[;('h-gރ/ރ,W_8MPuS,Pw׏5jAЂki'['0G+6bpZ"&OH5Ov1@0S+~"sfa*dpa4 ,d# QC' =gӚh9N6 vQ&Y&jلp& =ѳB>O,X'Lֽ 4dh'-8) 'YBSQ9 'vk*b6B.l>y"OAГ:v`u}q׳o=ӯo~I? 8&y&{xA$uPA\I}c`GAA_xX8$HWar$zLEv|\E6&~me7HM}m]ۉ5dFWH`y ]_tƄWHa D\UZc|k,$$p $nEtw5j 鑧ݕ'l(v\qmBEb^†bFӦ1M'49 (mq%e[hy {"ZP'q ETԸmHB#`&ImtpT_htZ١#0-TGSlHnlVSPb i(Đ:ʐ"Eq(fȼ6!fq Ni:I` }W)QcL!ve!'%f8ZR'P'Xdw I+4MQK=*m#\ \p$]?I^4k4@MX.=eD |''LW_hr$CƷMXe9wyv6%W1I#]BQH ҙ"ڨE^2EoSGxq4G>H#Pz]BNaRj&W\K]W!/.zPFaLa_u<jf흅&ŭE7PPMB  HI_`l|!AsU! Mm2lBdǓ0b "!tErp+eux&&4ۜ3ݏ``m7֪s~s@T\̵jD=`wniLMv{|tE}xCnx T[@!As/Wr۟?=Sճ=C/zj=se?{~j>3ǻKϿ>s_>??S/B:?Fġ??  &. 6> FN VJ{l v~ mY~I]|$^ Ơ   KӸ߀ȟ{ !V }a{,afn!r2$HQaXu!a|am"f" !  VB|!a$N"%"a!"!*"[&##%V)"**_)S'@'P\+F `bzb*#1cy*&b} @@ @S&."Lcmydc {dQm!8B 4i8#;>2Ƈ2·AbR 4bm#77VLסN[U9#|c|A AG dP":C}c Eɇp}H5#,@J^Xt 04!} Vz%A,D`N}8Ģ_B<PP @G"(e0dBeT$^@WL!L̆ W\$. MA AFBh LE^B2h th ސHϷaB pg~ pe9JmXH$$H  #D_N~0N TIGDuEH [Fh>`(VA_ `@AG饍^D@ @ h `S zZfjcdVD2D!p`lB p$l 4 pD @h |,KSNL~B @ bJ^pj jrȣ-S24 t@^H p#$ x .d){HpH@$~BKxqjΜ h)t< +l |'T+eB`k#P4PVݍe"("&c  N)DNp$CŦ EjVtG EAP'D)hC@,>l`D-1tDjm[N@2Ake&]P$x 4l'Vj.ZL@Tۻ5:::E&O~PEٷ[U $iBh'<hƘd ]2B,Y aK B 1*rA&Ɵ͒b|0¬D64kۅ$,ohBXqWR8E~E%WH(d$F&,G(L,L8nBڇl$xF/S4ɾ@ @{cMu02i¹6T08 rB 0{t&R`'&&taB ,tbD)VxcF9vdH#I4yeJ 'nI%D0=4gN;yԤ'ςY4ziRK6ujTFj͛Av+ΡN5{mZkٶu`هYh3l^`(n` 6|1Qv2ֈWo@$'͛9wts͠E&]iԣ-N5늱eSYܫw]aٷE3OdH8ɗ7}zٷw~|׷~0I*Ž \|Bn+.,ې=ٲB#+ P]|eQQIŮX} ƝrjG!\&|R)"Ƞ,ܒ&rȮ2<ͷs*{38圓:bs/ʾ>P;M D]4A,t'8J-u"!IK=PQ TU]"RKTVeP]}Xkݕ^WC}b6XNu5fdZj6hSl\ݶp=ݓƕt}^M݄1^Cݗ~ >^~%-5ޘc77zxAUU^ۓ_Me6RagϛuOyf砍>:ѡqT~ZTZ 4l/ƕi>m46NղZFlmþlV_C}B5ߜ 9t*؋3XIT1rt'8 {xP>|"_CfI a (iI[z k&OJLS ACpHm-y\#R?Oxq~"d M-",2jsRF@ 0R(ƒh!3&pІࠖ-${#`CtIb҃t1TėIteUNyJ2AuOY(TU13 %@=! _05L  Z1 `8 Ih a8%0 h53U{" Z ])(e0 Y$' _$pF<p5H͌8@ c&'ΘBhcЂ='! Y0PMz$F[g=;P d8a 6AtAC8aj+tW /#ALTv ZSȂJo ,7q~іΗO9Yngg εp!XA }k / i%V|ZILȳCP6ሽS֣:!0p ރ\ -dTI^Y{|B x^Le6Az" b+`8UP=xzBIP6>ڠw@ C*q۳7 PXDZquD 5)sk)V#ϧ3lI4꾺3IP ֫}=.3$čz'd똙,fn*$PK<|.+Dg/P;\A 8! H`Ka Ў` \Oo`ljaB+`B$A}@A & ꀹ>Af+ " ^B'A$a> $a د.A P`  a@4p2j  h` ,`NHtK6! ƨ # #(aˤ - - !a꤬ L J>A(χ``ƀjL ̲& Q!`1R  2 @  <  <1n@pXJAæ! "/"b!$b2"$a6A\!p В $1^N$%7J:D,p!Ljr/) p"F"CT  .%<-&k*#jʳ.@.b$2-ht*.i,R/E.Cp/O20D0'03M*1˄11'3D"-)3[233/3CsH3# a ր-E5b3? NQʰ^7"6= tڬ5sS8b7Eo8)3$. @93)R2 ؤS;?:/ېs;$9o 8S=4o@9I֓>=Q=?bƠ">=%?@< A>Id@A@TBMgA-A'CêBB3CS@o,?DTZ:DST^6:PTE_4""Fg4FY:\Fstl\SG9TGTHiHFIUTIDI?J4CJ'JATKGGt;TL 42''8CMMߔ3NNNOTOOOPUPO)K,HQQQR#UR'R+R/S3US7S;S?TCUTGTKTOUSUUWU/-KsOLVgVkVoWsUWwW{WXUXXXYUYYYZUZZ5H*D[[\U\Ǖ\\]U]ו]]^U^^^_U___P#t`` `aVaaabv`#b+b/c3Vc7c;c'cCVdGdKdOeS?ETe[e_fcVfgf9ekgsVgwg{gdVhhhVciiijfjjkuVikkl vkÖllm&mזmmvlVnnVenVooopWpQpqWqqj'^q'r+W||hp6s3W?tCWtGtKtOt+RuW-h'rcWvgDf| BrWwww{wwW:ޤc6&`ixd &gs L,=#z7gyaW'W0zW|[V^I\@x{|}7d|%0C}9}W',7;e}7'.wx a|~7+`~!x' -&؂?qW@O0XI8ÃA7Aa` FL#`"+´5{񷅏XpCj'}?Mj^Lx"&h b87#h(1bXV`rBRD!$k j+bp(L)ʸ7଒1Ƞ8"Vz@b  ˤ& ! XL YQ)" ^ E٦!Ѐ%}aZ* ` y`9#$m @!îu:E֠ +Cٞ xL* N`@`@: j@`n`P@RX@#!pr@ z:} _!R` L,J@zojV @`g@ 웁 R9 b`#=ObU*ˍ8A@<4Z}` D 5"q〇 R22!Z$Aild ⾀ R@ }Ùŏ/}`?y m 3W=qkT ̠T`]X:@j@ vڰ@ %q<3' #.& G Z!f xB  Ǹ"9!쀬U. `! nР >ΠUkއ@'z|` !_@ fG#$x `! &X m YȠH n@ >_``[ѡ#] @ ҹ:d Hr:⠰"AMVw:A07Bi0{6AAW&K1(A:XTi5 !$h a'b) 4)… :|P&+Z1ƍ;z2ȑ$K<2%H% 様 5TS# X 4СDnCCE:}zgCRZ5֭\zJfM}'Եl=t۹tb5{6޽| 8մ=>RL;&j*^+[9=w~ :R6z`d9~ ;ٜ M( Ojkċ?&驴^|`}b>aNHa^a`G MbH"Hb&b*`.cLH56c:؈>#Bd642 1> eRNVDeZne^~ fbIfffjfn grIgvމgzg~ hJhh.h> iNJi^ini~ jZZਦjJjbꫲjފkkk6 ;h.l6 mo>+m֖uIne~ .ކKnkn^+[Koދoo pLpp /p? qOLq_qoq r"[d#l%=ف(-'! ,     !!(!#$ !###$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?AH?BDCCEEEIIGGJGJFILIJGKKMMMQQNQNPRNRXSSUXUXUVZXVVYWcWY][[]^^b`^`_adccdeeihgkfiljjlpmomnqposoqsrstvvywy{{{|}~~~~¿¼Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,Q@0mI͚83ɳϟ@ JѣH*]ʴӧPJJիXjʵWB1uSҪM{۷pʝKݻx˷߿ LÈ+^̸cʊ5˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶kx*찗Yh묔36&%6L0;xxHQv;)p)ā5,$FxpH)^ 1 pf ";$$ Z po<&k<Ûp0+1{xJ ,r |2*7.,@h䜚 ;|u#W̴lB({`-e=2JKtXV 0X3kY[\ul߶zcvo;Dڑq~n܍-:؈,h/Plv\ ^d;16IƾjeqfQ e2%d{[Cye o@ Z&Y8y7 c.K#n/a #bRY?X vQHSV(!C%&ܕ6fXB% au`$tC"M<&~%S*(aаʔa ` %!XPIJ4B ;㝂 H):xD4A f)Є$l1( (LĤ06b HB6a% +رM` rv ^` r&6+hV:W& –1K{.ui%Xv.v wE,y0 eAD,@6(k[.Ɂ;0zH05Abm& I teh0%rX.@ -^<tOو@M XXle@ѼEfL R@S$wg'+wZStFRh;_l6HA j[`-tHDY6mR( 0.|)/Qہm}hBDG) AA2$4,6 P :j*:*M $VBLQWm0@]'T*- @&40P+[AU2Kh`SUz8>ʚm}j:$]@h; ,Kz|u xNQ"@[ [+ *&qu f|VcR]k֗9%EU,XШ O гCG>Xdr hD".ධt0^ruZщPL уJ5pu>]ygmbopކeA[~' uǣX޹, 7XPap_=A(2#%-2Nm~y}Ksi[m9R\+̜-zTVO^ IX p!볼s 6Dx㮚n@N/pe n6O͖T M SmIHl˰UGs pQC04F,ԓDb}p[G.2^ʒ3oA:4\4Du\EXH~X1'  ʿWS<"*s-9v/^rwpn wv@W;|^>|=\`}GzٓsS;Ƕ-t]Eh:LFU'VKq_&@&2/^K ` GFSrrFlie.7mwyc2 BRj3,O=D\:3755|aV&§9 5*,8L׀H?$vF^o~dW,g?SX0pj&@sw ]Se(eRf3 `Y GyWXh1g3#q-68v\{s.xMc#.^zW[p2fY7hz4Ss~=u@g" K5;XF(jN:ePnU88GCqqqT6aspe!@ef xMzeR41}@Q6! 4Kh3DzW~29 Fq`:).hS@`=}r8X(=w{+ }L%S=0hYs4W>y18;Pe7Icrx{؇C咑QtAmH5 #X䥋0w:.[0(x5ÈwK%fv1 yt7R.(gEfY'A;Ȑ y J0ʡGgfe :vUFtUv#wYe=Wf>f@gQ{REnq@4Sa#vfYg.@)sM.s;gH`&F83v m#lS aY87X,2oog]W,<8po)}b W F}Bq{&5A ѵ?p< ] e& GăO0 m7VQ.r#_R5Vw@ X҅:h0WXrѵv [E xi lD8khJ]PP ]?@050t1 4WtXʼntI?th H]lؙ^+iqAd!P u3LU]ޤ< fewA#P39U31GKFQfTД}M N‡.0s%`&pJW0t@ 3 _"eWI9 SxmA 3;_e{ȜZA|Tq UWv )C 3^ 51;P\Rw5m%5|@Smd`nW&*a.%5`< 1P5 p$b, X+^ pԵ I\UHZ{/C<b* pXe/R7;q _8}௶PK@bM岳#5@]U]/PY}- @-Zjf =0+beSqq9cV7`l3a#vZ2-S VKN"0A+K:Z}0f&c\ i0&wU;oR=17c=8 ڃ4ƒ\f3s@U^S={p >ۼ:t+=I<b4'{58@qa; ޻( ⃃1Jd#Ҿѽgk"aMUǾ,NicR2 KWF"Ro:;"B,A _232"zD"҃>|HLNPR@:<F}HТıJR=?= T\ m&^]f} Qhn/p]v}ԬAx~׿׀]؆}؏!r"2Fֈؐ}A|1a vKڢmє}@; `?H`P;cIy X'K6]quȩN5 tP6eAz`>v6 CĭmW('Sd'`f C V6'y t S]lfE>Q aC7 D2֔QeMf!zCG K1l@=,\qt7`:%6-#jZpn+N`PāCFOpc.Pr 2.0@s0j &G4?1}gI6h2P @VKypOQ~0~U3 ` P%|l^]T Vt^h1pMUMQI+ w6v7}7a.瘞6v.݃@Q{ !Ap!ja{gԽes䢇}JSܽv73S͎Mg7DžM}tg6'89@shWcd:P=bY:;Z&$5mM p Y3MqnT&p0S(ONPS3F+ ] p ZPOY$_1ڒ)J,_ -vp y2a*U:p _[N`[/ُEsMP*%?K?> qf dq @w3 ;Lv/x3L_yO1~MOԵo?a?Q_;o?̿_a}_/oD"XA:C%NXE5nG!E$YI)UdKG!ڄM6洩aLA%ZQI.et̚p@ ̿ @tAL1D B 34J תPCCqD8pITqE14DRlqFkEqF{;s4ʂ:"tI(R23Pl2J,Բ)1RsL2ar/cL6t3KӸ5ߴN<'S9u3O@msϼ)~Z?Bh2- E!APw c`h䜂aa&Q!LkeSӳ8Eъ@;0 2nJ>B M ⤆cmVK\ҕI~¡%xhh4`!Q$sE /phrɀ ib8=x!A Du=1;C|7aC>R=8F҆(ÌD 0m^8.kh& X9! 5oA7Zq}[_ `,GӑEBFtIQ8qr+Ҿ+,ię5?$hzN-b(ʰ<ϫLD61qeYz)v(=M/ZQjtqM !vAa-$Dmӫ6Rsjճ޴3iZZb5`k`{+^ }ld ul3=vIvliOJ-eD  lh-pS$;Hn:XkD|/@`p-ulB_%|)~  ^Ǽ9,r'S})C`q ` 4!@9gzٞ;*xFn TPsU7]z:yFw5e"-(=v8_D4E6gvF!x`Bo#k̝*H@P;@Gȷ!!"v?^9A.@C0 [sKA Bg}[9TTX)x X5p)(iD MhF0أt6;䐂 `F8Q Z h -ؼG d<< |@yI@ФShL#A+I씏F8CX`7QJT{|{FC\TJʋE]l8ô9t8sK‘;H:cìL-ʵ䖑P@;?9 8AHLA ;J@8Cy >ҌMԢP`_M<,Nڴ)$NԏT|iNN4N]INNNODLq+O\O4bt!H1:h*A@C.k!h5 UHB#S14j'>x%$xԫ%iRy!Fc1@F1)MZI;$/ÿM)JX4B!8"ٛ +%肛ԁ ى‚xž՝ҥR1G'M؁"Њ>h$ԂFЄ$`=6ZiHҝ@j\m{^@LkO؁#Fذ0 Sh#!_Z]Y[\NBISFٛt;;MrK<.vΖh'jtH@!v"E5_ ;wb*պV.;/0c2R3>+M0B8a(ґ@<^m;?n |yc6u9lQg A!d@%NI~[1׋@/=`lʒ䌨Ljdd5AIkRF8/͊.X;9dCÂ16HN#,xdc@5`4拠y5r3he@s6FjF6HGe0 30gfzF@L@+xƋ=)>c+M8hf'`?A, 釐>H.ꃆ:cJ; QO@F肍DHȡ N?Q>0aŔIͨ8j͙AYJhD;6Mل2S;x/iDn6?Z60:p+GpIxFEG8jb'>4\9HMi-J@2PʆЄ9!2!֏8;Dn8*vnF:PA>I;:fM@8Fh;^E;mAt>kA@ntAM0Cل5@Gke#@ iSH SC`jOD04fSh .CpL flL/;@2AfIJ8-MO-@vN4F+83108M"#8؂RjC/Dm8s>+ 3:(-2_1CLX,0A3,/0؂.@9:^D_>r2PCgF:?6ͺź& 5gQ 4X);gCG2h+7)ke]6sEyb.h+8s3t/FPdi%'4sN:o?GH4)6_1(6uώ:d)'dYjǂŊ0Bg`Nd-ؙ`?>1QA@tO>KGy,)q.@4N01iMXte6GJ)D-r8rD2&v2 + >SrFSeD.M.D,qFw>.;H"ɪM0y5X1684Jh,S48,-F58/`4y20'oHt:DŽo3H+[q,s>ueSX>`) /gg.5`:؂QtO.G"W2zDhi)L6y64S{O8H 4>Y8'wJC?uQYw1{G@,0s66Р9u*Sd l%)JXM蔠-QLxKDlJr8, " cSu:ʨ?X4 AA(=jpCnbK,*3 T"m4u&DXDCg.=e4d5E &,il)Nah/l:#2I\4Fউ0N+N1jl I1 2Rǯv s[E5ǽ)h{;Ǔ/o<m=ӯoTZG eXt^qrt&^" 1) EOZk mwr reVii` tvl8'plE v"]DtQYG4 tl؅T,XXBcHA\I%qKfYءAtit^[ RZw&&9DiP$'iaW(%uiP$^`)5I1ƂXhrh$QtJr|Jf[lA^Q`}x1ɓSVZSֱ$"HRFE"[`xdKz'Q&q!pOM4g\!().xE Kb)`њ)\05|39}=|<,%|" X&It&WA`T-`/I$"y![`dW IP M]0l4(Vdn!ns:u$`B^-LKG#hzhhű#\&`I&!)r<wyVޅ(Ol 9acRzƥ`n'L1`H12Y1%C$Br GrMƅI"f *a W-])p^pXqjk(tM$bXDVM#)`@" =LBKO$R 8I-2D#-B6S,:$ 8xMC+ LL1a ąbذa@Wb dD$4B Z5,ab<)4NC&Lш w)z45M\PdBV!A4ŝ(;G AC2ա N1 LIk+L ҇)`r*R6h$i(M*>tGWp& 23Eb>6`d(>~أ4l02G"%S8,,8PhD$OPs*)pd0!A pH6PF/QB/O9Rb yaBv]#܄#F<R+K|64b ]xWH4"(;rh"%Qzl6H=-j(:wDOe) !,!q*,lmu az+!ya ]Ce1|{Is6/ly%%ӎhblof, Yp+ܵtP='p15&\ v]8'{!mB]bmRv0YQYa 2 3wv >!Һ @{ѴS&qN@Gf ^h@;BPah$-W * mXI6+]CH֑:0J 4OXh$ X$% HW "{Iw| 1Hlb\Qp4P# w.[/`r D$@Lxdy-ʲ .3Xbe5ն={-zF1xDn"gmy>{g ,AB2{z'\6zmkwyJwl~vlu+K.^`c{+Gd7<3s<#yQ?=SճK}3=s찏{f?>|?6ߗ/Sֿ<ǝg_?|3 ;??ӯ?/ӿ?? ߅G . 6> Fְq_^]~ _yL ]`}`Lq ֠ |( AG G j !&]^&<! a}!x4n!vҌyPY!}`w!a!͕!Y  b a͘a*b! aa"%V%*!"G ) &$zG&^",Ƣ,f)Ҟ$}šGpzH@1$,@EB@GRJ@Szt@A Y'/~xIꤧ('M@>N!O$G&" Ap`4`IpD,,Ai $B$G8'MR#$& K$B L@d#8 {`pA#Rc>EE,AAiHK  AA0= ",) [L]p6Eyove6ݝAH " M\p- A"W@c$4RA4[4B `@ȁ $RG(YG ܀ 4JڢKxȥ&b$x_G?!"p`,A,&@ 4 @ @x @,)AH ) l)ؕրEE@A|)7JUdG,A@SLB @p ,@4gā ,@ @%) \dvHpHC@&*Ft5f ()pL*0 D, DRB.@@@.EיYBŠV#:hG A .&yL*2wn0R&,|d0A@pTSpRb>E\%R>,C4d(B(,@BI,ܹAxpHHODOLx0l)VnH{0%^~ލm]r-cTvՌ=&&M>ّy-]UYY~IYՙmޙgHqP{7ќt.<Τ骭n箤꫽ʬI ®>jkN9\{F;];Hk4[gpv%' u57r.Eι;tU_]#zoeWu߽"aOW؅?>q}3Vu2i2w{dwv#)v!ph}q!$TOIj8?]_~ N1>BCȀM@ʰ l  /Ʊid^NaR@D!Ct40A vG4aVB#H$dCVS  hOH D7eЀ)Ԁ -%8 50bXHg,UB"-#"67).Y4i<$bІġ,7EõO^&9y&&(HS6dKX$"Xt־ف *Cx)`X8OcN˦aFqA7YOMn^B 0qD4HX@ ; F9eFdKqdz$`CBIb҃1ݓGA'S'N?; j<j|\ER-QSw $C6!J&72 ~ BZ%ӈxЭ ]\ȀHd@L\:V#`G`!F",u#suH#X °cx`_y[jR,BF?b M"A聢 >܁.= `n &(;dD$S|v`)Cԁ"H 0qCL"=kOCph A. PHk#b58vʂ0 ^@C]8- ]4)a c0&dx JL”8XœXڀa g8)΁CPxgMQ) ]؄)r6lz$.1N\Ӎ R@CS 2?4B DZ@lBy'!C$ ꃠ\ Ez#$X#ek<-\ nЁI`S&>ڒDy׽u;8X%;v]* ,qëW'DNC@KUN)MtC9 ]['? g` "(!.-"(AT ` x hO~dwJ&DKC"GLoZ `aѰ$\  / T"@ +4Nת"o ރ4l `Uj `F @nOࠡa fM +Ќ`B(xKF ,Py @\)u0Hq-N˦ -ʋ  !a ` DNp(Ɛ  ̬ 2?La Bs-O ƀ@ ,P ( (!ϼ La` p mG7b&h672"`P!Cl!6#!Bv-1(a/!t Д6rT$&/rKbb>F&#oBQiM Lbr+2mr2+-z)%r-rgR.).P*0r"y0/0SWӄt6C2'2+2/33S373;3?3G #k²5b9$19Fg'5c-`ScB6s@hSdZ[^S7s6Y6Q #xS8)!HSB9,!rB:*s!8<;;s1*N%Ҫ4Ss|8*#s" X@*bK ,h!J#` ƒ>W'->s?21x@>AOa,Bń;1$>Ai{~XZt (bB B{C?3T""W⠛1h0 ҅9l!6&&N7(Tɝ@ŠT4StsjhnM@FXn2xs mɚL tl֐Ϟ  Ā z& PY L(pNŸ "> g_!LGg4xUo ڴuj@./3?#b@ٺi!T]@ !M!F  ̬b ʠ& րG `BNAԬHbDG5p PUcMyN99 `4/jM !0! X vtP 2  4N]Ig ڕb@b^g^?:.Ȁ `!^% VI * 8*6ca% B(O(kudEx M!VVUZv"f" lv 6! pb !+kGǒΠ6 fnkE V`USUl%l"@ > 7  P'+/3\7+*d+Kܶ[(CW[_Ł`7h!as\I7?{\vC $w\ɗ|M8dp@މɯuE\"0z-Bǖw]-b`nH!D`jJ4=a^B#.{ j`# .} j VϠ~5o6! DnBi: ^!wϴ_ޏ}"Z``F`]F uYba^T ~ ` |q lvրM> KGpHJ@G=랴w Mk,4N N =v Tf`oA$7]cctt&!$߹\!6LqvNvΧVk@V D@PDVTH ` h` L^m`Y  a ~sOAڕ 4a T\ࢰ`, F̈4SF9|1ĉ( u*ƍ7nqcM&0sc2МsJN GV9)):ɨNN)tgSEV9HSǩG tjFTnP6QtHS9 N:m'T]i 8(Q >8Ō;~ 9ɔ+[93SqbIlLYQ2s H A0X8rŋ|~ NىQDcSlY1d4N%)dlZHɤ sj c@jViC #lqH|bp k4T~ia~b"Hb&b"@͍bJm5ĐR i P"JC 0ęg@0$WM6Fjia^ Q7QrC9zO7%N+ (^ wSf_hgF|Zpǁ8XGdCf$Hц!zb~ jJpȖ#|B(Oj*c<lDi @ uT(dpE&)0p r4gEk)mq&ܼ D َ25)$1c Ct 5 C(9ωtsl; Os-D#|s? }j-AIPb mC шJtE*jt}>t IOZvӣ,mK_ Әt4MoӜt4:B;;<>>A?AH?BDCCEEFIIGGJGJFILIJGKKMMMQQNQNPRNRXSSUXUXUVZYWWYWcWY][[]^^b`^`_adccdeeihgkfiljjlpmomnqposoqsrstvvywy{z{|}~~~~¿½Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,QA2qi͚85ɳϟ@ JѣH*]ʴӧPJJիXjʵWD1uSҪM{۷pʝKݻx˷߿ LÈ+^̸cʎE2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶kx*찗Yh묔36'%6L0;xxHQw;)p)ȑ5,%FxpH)^ 1 pf$";$.% Z po<0'k<Ûp0+1{x ,r |2*7.,@h䜚 ;|#W̴pB({`-e=2JKtXV 0X3kY[\ul߶zco;Dڑq~n܍-:؉,h/Plv\ ^d;16IƾjeqfQ e2%d{[Cye oP Z&Y8y7 c.K#n/a 'rR?X vQHSV*!CC%&ܕ6fX'% au`$tC"M<'~%S*(aаʔa `L%1X 9B ;㝂 H):xBG4A f)ф$l1) (LĤ0:b HB8q% +1N` zv Ӟ` s&C7+hV:W& –1K{.ui%Xw.v wE,y@ eID,6([.<0zH05Abq& Iĩ. -X+إ*8‹.)QB)k C&@TA@6z3]2tN t;X[@ v@ MpKtq@Bi1W6 T {+ N( '@0 A E@ƅ/3j;@UM(!HYp@0jsURVTYV'U S;J%6jA:W h_5bT%`%Xل&tX~`+h@J&` d*TJr +[OMKZr e)BV/.t)]$~ ԲxjA$@E8>3n`,؁j`Xj2DbV؞jv s5ib@;vV1s( 4g n !Peܖ6Cnnpв8‰PL уJ5lu>pކeA~) uǓ޹, GX: g'8p_B #<%-2Lm~y|KsiSm9R\+ʌ-zTVO^ IX `볼s6@x㮚n@N/pe n6WO͖T m SmI@lˬUGs `QC0Ո]@nE CYp{}-1v'vmmUUA tut o@qĺcl^ԜXBVّRHzXLF'X˂+ɯiߔ+_!0@s HdSS\x.%gźk೛[m@V8u^UyAwOЇ' HW-{rQ|i| CEȌ "x;N hD.h@A&azd4%GK(GhĆV|Pކp1&,t 60b .3`0te{{>cSS{;Fneao|ʡpM^}>P.] t_P~ 3j`cł~dW,g?X`8pj& >g;PxY%e60`:p7H|6`y631bs?71G xrW4F'(R&pFKPZp1fY6hz$Sss~\'<'@ejsPspe1@Uf xMyeQ41~0Q&1 4Kh3CzW}29 Fr`:(.hS@`=|q8X(=w{:+ }KS=0hYsfX>y18;@e7I'8'WzȇB咑QsAmH5s XQ0g9.[^c̶~ x\PfXP GwxfI|fnu ?@zt@`\xxeVjP`CGe'9rW\PnC|hA3.lVw/#D36" kau2Д"W0sw&mbtc>#k(1e " gv Vz=ܥqSp}b W~0E}Bq{&5Aе? <]eSyDI<$OK0@ ?`ck5"/x b/\b^Ո.]3r5`%G+];ps]QNd8L0l3nVP]? @05 t"1 $WtWʼnsI?sh0H]mЇ+iqAdPu3KEfޤ< f'dwAP39U31GK6QfT~M N.0r%P6n:W tP 3_!NLl>2s\cN8vP0T׃ͩKçKQPy~dא`::b/ P1Rsh%5+~YZ=`VRM .i95` F&V}UFRR#&䪨Q 7HR.qJ  '0]YĊe?YfNIP [u#񕛎Z[;K@aLղ350\U]/PYzZ@ :e6 ; 0=-Q&Y7f+m s8΋[7W378wf({58qq`g"p!>7īt~@r bi ;k"aMTǾ,NicRB KWV"Ro:;"B,A _232zD"҃>|HLNPR@:<F}HТIJJR=?= T\ m&^]f} Qhn/p]v}ԬAx~׿׀]؆}؏!r"1Fֈؐ}A|1awKڢmє}@; `?HPP;cI9<`t19`l=Х]tP`J/!u TgK ng0,Auf_[ t@ .S`MYUd;T|X[?.nNx_n Cb#2&~ UR(;hT6P-2rA f KV@^` >p@ ؇E^s &&cg$~aqZ^o=`\TfUEMqoeQ&nq֫.˂nQSqWsj7wMwvsisEŗ^$"ja{gӭUs 䡗ӈJcۭv7#T͎Mg7ƅMM>w^sf6~5F?n N5p`M^3=Ee\`و S@\05(tQqo5/E\>crR(@J%OY@?nc-JRoq7Y +VR]5f±XfH@\t,?Po= 0dQ PvC ;\w/y3Myg??|sМ_DؕoWW_a-oL?ӟ_w˯oȿ^{$XA .dC%NXE5nG!E$Y DHdK1I%3&DLOA%ZQ?Q)KO[ԙUYnWJ%3jYaծe[q^[.Ԛhs_>Xݳdfcȑ%G4|زœ5o磕/iSNUfkرeϦ]mܹuo'^qɕ/g^;%i^u >}j"ŏ'_-wqg{!ѧ>}ߟOp@5Ͽ,pAtp#Sȸ9*66)u'{%%e/ZHAË6tJ`D⎁8Y Kϑ&vCSQRHOS#OË1P6SB,ȏ2PD @dc48O>E_/rSHLWÌ#$=ߚ=ퟭSDN78^ /4 CPΐ)d}?$(~U_|-~P2?D 1(7,p?Z#?4k)X;;K[0DP !,8;8Z@Ďh?@ïuA4!0k)IXHإABA48/X: JB B$0"$B*<, {cG0٩#lHSS,s>V|Fps 8346)B;2);D ہDp>уF~l itkؽX;3ȁh[)p( /:C\ h (-0GP= @GP:J@|qT*kI 8G\L@h18{9WkJ܏C 8n,6@Y K̏s@E`883ĹΨK3ܸw$LȄ ËH?PH8;L2=sJқ? : AlË;0KHADÝd>MLP`JLWTNMjДشNΒN| ONS?ֈL0d(^72ViGy`YddBH68e3q-A@.Tk>ܓo%4_H/d=oBNeƐbpe>ep^9/͞F@Vd,?h88RV(I6Љ4Hg- j9@X87([^4p,Xgp(Я9x^X>h[e~A0~miFL+FȄNF]+=N9@tbA,i?.Ʉ;`Fi<@Qh.kQœhS!CPhYb|9?QXڟ!EV;qD6@b78;GxJG.Gj𚼨n4hj9pNj-ȄJ@2rbQl-4j@.ЉL9@ʣ9*yF;4B?XbJ; :NNm։M0 K*bf8F(;hnIw?AnwIM8C 6A HkÃp& AiSH%SC PjE89n$.!.CpLxpi&L 7;pNVeU+0 ނ 4@, o438A.3%5-X%8),H.328)I؂1sɪ8J8,60J)81-4++F/tf/'H>k9$|7Ѻƒ&q6Q 4`)1XtT3BtR>VG|,Ab.@4򖰱Mp6GR)؄D-s^&,`m')?2tJ0/g40eN01@8+kzTĂgH.'4(2W1LhI+r(.P0IO_.H'^ [6.!0FL6|fAFHAP`- 6x^H)*5ġ~EiP#P/GZɄ)poK90O|EB(5M8}r9r@]N$h)4l2)BW*ꃥ`…`1e 'ܸI3Ȝ$S84ѩA[^QL (Nj̝mٲiQ^F WH² ,Y BюW:S^ttsJXڮ$i %[8%’H$2Yt*G?Ϡ!)2m2a#/N!t*A$4%\}ʐ5L0LWb h*Ҩ 8n&j3z#甩+=:5˜ MygX-i>?'x * :H aD b`Ehta^qyaaȈcaJAp \br.mr")^ox8kg.au@0QmqpE#vH"]H& e^vV"#1FD q IP#Wd Whp V$Ƞ^FIQU:E9d`lgӨqH/U@W2d)pJq#e_Ab$Xase$h1">D`AITR6(X(qlg~xAəVqU1 2PQNI2``tSb (if5*'bvj۞qE[Xa[8qpQM;4QKZ}5 F4%W0T({F2'WQ6 X0$Bz![dnkWƉP$8U]y:(\dk%sza>ǻh}pIHP%D!S"I`~@\12 HI2A>VTW;w~8Ʀ~:޾p$rE#T),R"2GT֓!t.DЮ [%IdFW݉6L ύ)1C4^RD&(A yFbr8K{nyבHxPtAr>% m hv X57;ΉWP\ CKHҥ ; )̠Y !44]( w;XJ$()>\l 1hA2 09N\ ̼3ޚ5fYA43$*@zؤrB"2`^N%Px7ITD`İe`NLX/ChB%_Zwf^SDF pvSͷ־6%\rj)(Q l}Ps?Ls(b"1Cпn |Bj n~ϛpïpg8Eq\-2I$g!ZE>#|BLʟd|BGx,ȍ|gN3 mb9I{i:>;TWPoxkov&z~Ȟ?K4;wl{~r`/x?Ϗ#B"x6wC/z "=ճ=c/ӾW곦z=/GP{3>/JՖ?s>_}cۓ?ӯW$"~[=%?  &. 6> FN V^ f"  Vӌ߃h~4^ ֠ _G 9HN A԰` &.a!X~fa!~8!v~!*B'Xa!h}aơ!J":RԱa#_ !!!FB""%^"&[F r'#B")Hb}lb&"+"tb| Aɢa"O+#2&Ꙃ1/ @ `@/~#))7F#@3 ,$\(H42co1">#~H 8V,Tc7(c :V#T t @Q^`/ )9HAPH?#O[m7~4" H>B@ P dFD%na酧GpH7%,JzX @ D,W%A`@O%H"`Vc=P$TJ H0%<#NpHb" Xx#AO "$A AZP/9B Eq "G:hB !xErǽ 8B3&iĽ`w  A AK d$ ph pf*F:J@Hp`Kd4P &#A4=$A)$N\L$$ET AEtK# ( ܀ 4~&F } [K8JPG",IpBH)` @LE` @$IT@ HċL@ )< TH d)T )ZF<F@A)@=J@Z8eA,A@)\P>*@p ,@ȁ <D,@ *Fy) *|HpH@I@&@d BW*ܭbp) `@r)B, FDVB.@E(OFˮ,$i3~ A ȬI%`Ua~HGa*^i @z܀ DƜ @DrNPBTA@ķVlck`-p[O~@3U kH 2)Āĺp(-AkH ۊ}+p㴺cVm3))H K|^DrB-Ӎ )L$ @`<@Jƞ,'bT .@l&A T6€އ~WJ ll*g'pI@*\p!`)lAH`:Afh o%00A`jĴz LUɆ&F fk{8o6IH,^ KA̛g|+@.@QWlx(#q )0r04S.4UT)HqAp/gj&a`@K.5C9FLF}\)jiA* 's@=&Bx )Ԁpd NA(<$ L3#G0F peELKV  lZ"o$~.R,`@ANA".pF!)l`D  밖0sK`d,`BJp x)oAoKH€;l€@ 1UBd$)< ~,Fo\# , @ ȷ}zh}Eэº6ӄX=! P}6Avآ˂K))N4xaB 6tbDHcF9vdH# R$Q예)3iִygNe<hPC5ziRK6aʕJkQ#Tcɖ5{mZk*Uavs]>p` }0nuL*ݯ| W|sf͛N(hߍlwrXJ Mv)i]mܰu7oC$^ֽ3|7tkS=څW^C*}~!IzkjԷ~ <\|% \!~=Eqr=$]|e#K=R5i "Mq'&|(+G$kR+&ܒ.̅r&,w24\6/LxG7< N2 =B?s F}R'ERQL5ݴIuK9RMESAIS]}X#J5%\uZϼu`^}]Xb]Y5=6dj|ښZn lgr=7p v},u%z]~"y!J1ؑ^~%-5ޘ=EM>U^9`eݗuf_q蠅֟>iW褝~ӥlꪭTVVګЬwԋj>{Koګ~.նqݎ-9m%غe*[o gw%׬25<]}}qE=e=sU_OkEe7t9N}uvwx]?//H۟ 1nH&H!wWV|~3bjB<(QA5 ~TP"P?:id '`SPCyP2"~pD"PL dh@v Ax ` ed^ w; 0B" aB vD?jP`CS +bN#H$0 &r(A@@2d%) u"2! RA|JrjГ1 <`*1c IIA*}dA@ `b~pBbIjGP"n j0R3SD|hB VrIvO. s(&2ə Ƞ)4R %<&%`vz!wp)ij m2-J,a݁Vr< hٓ"H-$XAbs@Pꉡ"2 J$)'nJ/*b***ג{E}Nj꿩^\U} V-ްaWD "9B81t9gΌP"m0 BרDA%__C,TF{ lܑ F& ~e ZA`!lBκhE;ڕ"~k*b  $QAᤂI??= p+C&*ч;l$Swh)CDX C2ACP" BOxbIDS b & $a$)!@dTf#p>s %A7vCvOAL$bCڸvBXK /xAX(nqҲ X-p4 ]؆3 i0 0$/S@ [R 0Sl [(@. Pث#c5|ṽ0% ^@a?8f6 ]6)a c0'xJL˜Q8Xǔ`܀a g8J)ЫCPS 8l ;L ]'L-aՓ߆jXdxОBgaL1R@h&ۄb ?K )BW$ X( #K[dRlA[FV@)7q#NGT"GށcA0PtA*Dyq IB;4;y%~Yj2ՈL, R>.aɄa݂lN@$ lo/ @ӛm1 jAc!}(aMrN d&Lx sx|O2 \gр!^hD /"j&9Ov }KnԎP %;%2  qD%oP ;e{܊n?~! Քv5!K~ Ñ`a ʬŶn@(aT` $*!Mm$*A@ Ѐ von(rL"iA Jd$gn aӰD| +Oz t(B9A6NBo 06 .z"G  Al ¤H `Ϙa n M @& dH Į0H Lp ij4R·pqMNƬ'- 2 ,z`  r KNAR/, *κ@J Qz` n , Do ` q  ) 2: N |/ Jao?-#Hz (̣ 2% |  dc !8!&bm6JX B Mp&= (y!%/@ lèr $T HՆ,.ӲNlTAJ" !//f0Xr/1#P2%2a1r.3ۄ20;S437S"BRS5W5[5_6cS6g6k6ix'3iF8т>G3"'8,3yvs/{S9S-SLS:s988<:43<)3!=);ak">2:hL%., :N(%8 ~?>o?xf: *4Y` &Nh$` rAY)#AA"B9 /E-" A m=U%`nDs~~t D3*EM#%n"!`.&t%t#>ӘM=Xn>X%%6 ِYّ?r!؏+y$(ْ3HI5ٓ󘓽Gٔ!OY;y_ RgYgkٖUsٔw?ha9Ms{}S䌏YYWYٓ94ygK 5ٚ;YǙ7YœٝY癞ٞYʙa ڠZ: ڡ#@%#:;ڣ?CZGKڤOSZW[ڥ_cZgkr_KzڧZڨZکZڪZګZG['&@AךڭZ皮ڮZگ[ ۰~ڱ#['+۲/3EZ;۳?C[GK;9۴S[W[۵_ck۶os[%{w۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾{۾[ٿљ\"[+ m0Jn<"/od.;?C\GK=!*K 7 p8+` ]@`i&k7a BESm`9g I7n44d$J<,E*ȑ$K:5SrbV)JmLYQX"3 H ,A284Jʼ N݉QeSlY1 2nXPlX~sʇdR9 <[udZmHnTH} "F~G}D1HcDي.c2Hc6ވH RQwR\ 1CRp > q%VeM-ɤCsܱw1 R7XUrCHzSJ%R+ E(^`WÈb`l%-(K}qG^thG$IR4Fʒ0c kJ+iT"\J%r'?)B2brhdH.I?jl+_IHr:VEKC/#Yrf".]sl3;s q!sdBZhIjQ7Mwܑ1VFml;Sa@=|s? Ѐ޳y 'Є*t mC ш2TE/ZMPG? Ґt$-IO`t,mKQ3%TQf4 dӜδ|O Ԡ uD-QԤ*uLmS ըJyUեV5\WYկudefXˊִug][ W)5t];6׻u|Q^ 4a6maJ֮e/bvŪf; 2-iJӪvmk_ vmovo w-q*wms Jwԭu jwINB+ 60o@! ,     !!(!#$ !###$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?AH?BDCCEEFIIGGJGJFILIJGKKMMMQQNQNPRNRXSSUXUXUVZXVVYWcWY][[]^^b`^`_adccdeeihgkfiljjlpmomnqposoqsrstvvywy{{{|}~~~~¿½Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,QA2qi͚85ɳϟ@ JѣH*]ʴӧPJJիXjʵWDATҪM{۷pʝKݻx˷߿ LÈ+^̸cʎE2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k*찗Yh묔36'%6L0;xxHQw;Z*pa*ȑ5,%FpHb*^ 1 pf$";$.% Z po<0'k<Ûp0+1{ ,r |2*7.,@h䜚 ;|#W̴pB(`-e=2JKtXV 0X3kY[\ul߶zco;Dڑq~n܍-:؉,h/Plv\ ^d;16IƾjeqfQ e2%d{[Cye oP Z&Y8y7 c.K#n/a 'rR?X vQHSV*!CC%&ܕ6fX'% au`$tC"M<'~%T*(aаʔa `L%1XPIJ8B ;㥂 H`*:xBE4A fW*ф$l1) (LĤ0:b HB8q% +1N` zv Ӟ` s&C7+hV:W& –1K{.ui%Xw.v wE,y@ eID,6([.<0zH05Abq& ,I t1eh0%rX.P -^LtOٌ@M XXmХ@ѼEfL R@S$wg'+wZTtFRh;_l6HA j[`-tPDY8mR( 0.|)/Qہm}hBDG) AA%2$4,6 5P :j*:*M %VBLQWn0@]'T*- @&40P+[AU2Kh`SUz8>ʚm}j:$]@h; ,Kz|u xRQ"H[ [+ *&qۅ f|VcR]k֗9% EU,XШ O гCH>Xdr p".පt0^ruZщPL уJ5pu>]ygqbopކeA[~) uǣX޹, GXPap_=_B(2#%-2Nm~y}Ksi[m9R\+̜-zTVO^ IX p"볼铊6Dx㮚n@N/pe n6O͖T m TmIHl˰UGs pQC06F,ԓDb}p[G.2^ʒ3oA:4\4Du\EXH~X17  ʿWT@"*s-9v/^rxpn0wv@W;|^>|=\`}GzٓsS;Ƕ-t]Eh:LFU'VKq_&@&2/^K ` GFSrrFlie.7mwyc2 BRj3,O=D\:3755|aV&§9 5*,8L׀H?$vF^o~dW,g?SX0pj&@s ]Se(eRfC `Y GyWXh1g3#q-68w\{s.xMc#.^zW[p2fY7hz4Ss~=u@g2 K5;XF(jN:ePnU88GCqqqT6aspe1@ef xMzeR41~@Q61 4Kh3DzW~29 Fr`:).hS@`=}r8X(=w{+ }L%S=0hYs4W>y18;Pe7Icrx{؇C咑QtAmH5 #X䥋0w:.[0(x5ÈwK%fv1 yt7R.(gEfY'A;Ȑ  J0ʡGgfe :vUFtUv#wYe=Wf>f@gQ{REnq@4Sa#vfYg.@)sM.s;gH`&F83 n#lS aY87X,2oog]W,<8po)} W0F}Bq{&5A ѵ? < ] e6 GăO@ n7VQ.#_R5VxP X҅:h0WXrѵw0[E xi mD8khJ]PP ]? @050t"1 4WtXʼntI?th0H]lؙ^+iqAd!P u3LU]ޤ< fewA#P39U31GKFQfTД~M N‡.0s%`&pJW0tP 3 _"eWI9 SxmA 3;_e{ȜZA|Tq UWv )C 3^ 51;P\Rx5m%5|@Smd`nW&*a .%5`< 1P5 p$b, X+^ p I\UHZ{/C<b: pXe/R7;r _8~௶PK@bM岳35@]U]/PY}- @-Zjf =@+beSrr9cV7pm3a3wZ2-S VKN"0A;K:Z~0f&c\ i0&wU;oR=17c=8 ڃ4ƒ\f3ʃ@U^S={p >ۼ:t+=I<b4'{58@qa; ޻( ⃃1Jd #Ҿѽgk"aMUǾ,NicRB KWF"Ro:;"B,A _232"zD"҃>|HLNPR@:<F}HТıJR=?= T\ m&^]f} Qhn/p]v}ԬAx~׿׀]؆}؏!r"2Fֈؐ}A|1a wKڢmє}@; `?H`P;cIř X'K6]quȩNE tP6eAz`>v6 CĭmW('Sd'`f0S V6' t S]lfE>q aCG D2֔QeMf!zCG K1m@=,\qt7`:%6-#jZpn+N`PāCFOpc.Pr 2.0@s@j &G4?1}gI6h2P @VKypOQ~0~U3 ` P%|l^]T Vt^h1pMUMQI+ w6v7}7a.瘞6v.݄@Q{ !Ap!ja{gԽes䢇}JSܽv73S͎Mg7DžM}tg6'89@shWcd:P=bY:;Z6$5mM Y3MqnT&p0S(ONPS3F+ )] ZPOY$_1ڒ)J,_ -wp y2a*U: _[N`[/ُEsMP*%?K?N ߣP m bK >pi:t'o1Ӑ\q/_~?}?N?MOԌMo?_ɔOʿ_oOڟ_1Aӿ?߿O$XA .dC%NXE5n"DH$YI)I2%D<ΤYM9uOARKIITZLQNZUYnhS)}Yiծeٯa.mI6[yߟq ,`ĉ/fqT%7=e̙5oygTiԩUfkرeϦ]mܹuo'^qCfzgѥO^ٝ&w5c׮xկg|ϧ_}ზO&O@Tp,ppB +B;C00@4DSLHPEcQA[DsqGj1yrH"Gp,rI&H$MRI*+(A+ K0-]2L4TZ,3)הsN:s7o3;%ӥ84*lP 1&G*G RȐQNTt.F_ڴ!)j0u2hy*v )tW0?%.+ ;0fCTȸ9*66)u[*} +$Ge/ZHAË6dJ`D⎁8YJΑ&vCTQRHSQ@#SË1J6TB*ȏ2PD @dc44ONE_/rT[Rҕ0#l /RЖ[S,pO*4! h Y9%`@nbNEXP !T$jء!R!Tɋ~ /TD ,`|e +\Hq[(*$d" u)RACm `wQ$/n Jn xڄ8!7Vdnx bU|ѳŭZJq|a2THdJ@HA6TSG`" Ә ,A~H @d+;L Ґ il#`&w;`OHP-K#ro;4``PTԀuRpD O*Rηnp+H 6d5`*H@[7Cv! %]ABRtiH f6k# r(39Ā mpCEP < 9 * H !i&!GxиP*b3Ť|$_C.(\XRDp 7@/0ldkSQ@Py[,9)nRLR (teO:yOaoSX\tt%FNYI~~_lL$-4sfMMHs$<vD.1_,-9Bp[B FNxb1)nJ4A238`E8N5xH w(D {`ʩ+FH){X^>{zc ^~-@ pHA~;^S gD`v+>_ A% #.Sq<b9*)x+н+2+>Z9T DP  跋2@,8?xuA4!0k XHХ@BA8/(9 J'B$0"$pB(L* {<-ĿsC@~@$h@,Й)=t>C;#DS C$K{kE0؉!lHTP,sS\FHF 146 B;2);xD ہD@ԬMܩ,508&7L3DN|P.NhVe~A0zhdFL+FȄʭfI_+=N9(obA,i?x.Ʉ;k&J;PQPxF肐Ex ~?Rؘ>8 Ɨq3jBJP<[j&Ji?HNk>7H;k9hT;)6pCzGq;`|xBF3f6AW+=ۂL4 MRbQf-39j@.L9(JHJɑ@(kh9#; ;I BTxj~j؄ Ѱ?vi FIicb蟹▘Dx.vD؄C8BL N`/IPo@ j>k9$x7кƒ&q6Q 4`)<0CG2p3g)h敝WsK|Ē.p+s1(T3BQ>SG|,a.@4؂~0MtlFGR)؄D-hL2v2+GG/g4@`N0188+hQĂg|E.'4(2W.LhE[ VF.0FL6xAFAP`- 6(^Hmy%3!wiH#P/G[Ʉ)`poK9@|EB(胕hMzr9ra;HHT`eL*BW*E@4lNNq r̤"R#,RUGmI9h#NG]2p/,k)gK;F2jf^H5B Ma*pЍv 4Pڜb%P‚ I[()D8ѐ U9x ),oQi Myv TG )nSk`qf=rrHJ#lYQCXtH _ ֽ#T"(ը.sOD奏-^k'ӯo>󷟈) 8 x W2XpH`JgxHeC1c \P"*X*` W!]w醇cQeT\Fxh']a$҅$[HF%qah%ac$ ^xg1і5rE&IyaE]_@xixm#[0ԛ#:&qHqFpug z*)hV 4}(i!P]z,**$^`*}I1FX(sl%c>Jsr`mH^A%a TrXAFprUSbkG'HKpp{N ۞3{'. s;)F"C֎;(77Bާ7wPp-qo\>:ғ>];jEoot>ŶXzpFZ}.4&.>nz]7wP;9HݏonLsw>lw?=Sճ< $z=s\}4?>3~7ֿ>}?v/?=H_P}C;п??  &. 6> FN  ч n v~ Жt_}P_} [%L Ҙ`` }X !N]~ |$^!fj[*'|!@!IPm!t!ґ ݠ! ! bR:!!!N  F$Nb ¡!"a"a5"a|X"%)񑢃pb}` ı~xⵁ "|"*0c0 . @ L-j("/1*6*#7 ,Z$@(HA3#1cm#!&#|H  *<56n#59R# \`9ޓ`- )8H@0H>#NQ6}b~ G>B@ O5C#VGp@H5%,I^Xp$@ @,~,Vr|AH`@N~H"_>c<ևO$SD G %,:SD6  tAf8B܄,,n!(B$M(S#$' O(B L`#xAfLu#Sg~LK, AmfGHN AƠ} 4F"lf* LfaActJys:R_/&Ad*$LHL$$Ex|fS AxEtJ# B&XT0"  4}&}} A| ` c H7R }$p`d@,'@ 04 @ @x @,LU K @i idJ`h x@rģ%-RB4@ t p%* @w@ .Ԁ"D\) zHpH@H&Lwi `)uL+d B)T+g@Xk%H4LdXd$,B@H&br㌎"}HFB`dNdhx x܀ hDĤ @BrLP@@:l@bj@mPėjZf19+Y0JDvº`(@ЫF  akX##U1yi|l*H Փ}KhE>ķr (@hiI"Pj*Pl* x-f󘀧dȚb3V# P|QB)Ag'px@H܀*@`!@-n#X+UnY" ,-.D ZH,@H0kf p.@Syjn&,Al 0n,DHx@f`@.Q װVlx(#q @*gp0ӣ.4S<e* 1DpK&A`` /o.3B`’RνZ FiR f*܄ tn%s@<&Bh k*`$ M(< IL@##F TeELK> lYnn$b*.P,`@@N΁  iLH@@4Ls*@h1X94 L'•,@hpd, 4- @i?)4@E:PDbB@xF#[q>RX {8&A F( 1#3]#%jIlJb0_l W (!+@qo%UC4dLL@ξ+gN 3@.(F0-,O/ H|uP`@c·#F|ArlGvR2d@N%_m GbC:h d@8m>/(moJת , вf1ʁJp@ !7 @@ 3wY@hKqlĀV<(ܪw׻~B.uB7[ @8o@f<kG @I/7)PlA @4IzsPE ;DMJϛ%P {BO_b}R+^&@Bi$8ϙm{O"\m8z|F8 W}}KYهۻ6n!#xH"?}@O+/ "HF|.=ӓ:2DTq/Ҝ#)PBH,JAr/H{cB3Mk?N?*Bdo'D4x 6tbD)VxcF9vdH#I49R!DRCHlDHմygN;Is@)]5ziRK6ujTDdjU&M[ЋT5{mZkٶuK,CJf ίyZp` 6|xhĺH_ן|Uf͛9ϡA&iUfzDر#Μ5nպO&;4үg lܵlۡ)]8Oq3cx[ɗ7}zٷw~|׷~ﲈa\|Aj;;4ܐ=ĵ*#F®2 ]|e yJgܑ}kQ'1$\&LjH"q2($,ܒ( 2+2<-/i2*C8圓ΑJĬ>;37=DRP" iE%JjGsN=Ԓ0]CCC=TUhTRs4uXeV]VZuݕ>m^@):N]f]Yuj hmnl%[p=]նt}ވ֍](q^Gݗ~ >^~%-5ޘc1zwAVU^ړoMeeWaWԛuhKy^砍>СolT~:TbZ\?.Wl_VSi::[)>ƺor{ۼp_kr(ǾrrΛr07O=sM_uy/w5[vV_'5uݮ̝q }:Օ~o#sՖ^j2dbO#)v!ˈow3!$T#Jjx?~ RA ?bCȀNH m 0/T!XyKjH!K 0T ;" $5v $dQU $` H2l"!+PD* BZHKTwqϊC@P6('p4` ?pc(` b G:^2jvc Tq5A&H"U "X&7d B9T4-ID T9H6Е\B$H9Re/w * S)X:SgR qGbpA9OEQoY/;xAr E@`IH/ ҟ!7闑9dhr (*%K R޴N#Ny2=*]E&R*?^fx@mTԒRβjIB+$^e'Ԭ$[u!F(6!^Clդr 0Q +Zi*Z',3d)CbD q& A4v $, ЋA -)7Tlͱ$ 2=hT]!"<􁦩D[0 $~D%p?x P@p;̕wB+1?жwC&rJ`g*QNP ‡|A\p}9qނˁ@ JBor^aD"Ha2}n*D eG"BTK /xAXmͲ X-p4 ]؆3 i0 0 S@3R 0Tl [(@. P#pc5Tv˃0! ^@_+e0 ]6)a c@'pJL–Q8XƔ`܀a g8$)ϗCPxg’Qa) ]*7z,nq^,U R@C `T Ы 2@8B DhAl{)!C(  E`~DXf{L-t4vtЬ͖N(1f6nD*0J< r{++;t v .0-AqvWt`bǁ t5Ã= "РA!.Q1[L*D`a02̌uRvh(:7[L#q,+7Ή wgnaH&| t:޽ 5AQAw*>An^q8U;F'!eփP :%2  qD%;s|P ;{ʊN?n홻 A~^rS1r L-6a 6*.&@*k <$ Hr  ؀z tD)dLB6A}(@8& RAx ` "n  R$ax,*@n6m ϒ@  L Fp)&` $!zH!$ a` 3 @!LP:` $Tpnxϗ> n fu-lbڠʚ,ʀg `,ڠT-R|(Ǡ Ǽ ܬ @KBPa b.MS Ơ 0 ` **!м P` . PQnTlLdj(aĤ 2$OW˦0 36F!6a> PT "MVK$#)&[!zbТC @H 5Ro8m>Ƞ k$L%!Ȓ+Iz($r.h~*//{/Qs 1G*1SN #S22"c@2S373;3?4CS4G4K4I)mg1"&6"<>-Id'6s-p!*3pC7-x!|3r|8S9"9858S:99os:) 9<6WZ3<(j'($䲫53|syؓ:\3ڰ@RK"V"̓6@-u~r"t:5x@?BSa&@٬3I,v`FF "4842 3g"!Dk&%`P:8ɞLư45asvhnN GS[|6x *mʪL Ь ȼ P .! Ф d @RAꄬxB nPٴt(Nsb>NG!O!=@ʉ@!dL_*1@ ."Q! n"H  ܌r, ʀ( ug ZBRalZrlEYp b5Vc BG7-bW@B` HA2Laפ$ V@ b#i5o`/!@^OpR It^y i*4Zr!" Ȁ Z"n&)E ::2&泂4Ckk6_u-6"6&#s1'-/g]:̩QiTڼM*4+L:g [ީL!1er+ycʼn<&1ٲbJAd6R%)شk'\ɤ *0Fl֕Zlu`Y~QI#m"}"HrHq!lx`YVRe,c2Hc6ވc$2Eޑq5S i P2JčC k@0t[FK)4iqc0KIp@V E$EKP-SL7&x] $R -FlvQGzҒ$"N n*iK+袎 kJkRpI< ( m즂nI6 b D\˜#y)haIOjt m°0IZsޑ n[ 0&^c0K]D.mpb"ʥ"JRj*ڊqoqC1Ġ?zM fl(UF 74!EUD^,I1 qXm+i%5KwSKsph,!q0 '4 5`-C[ԠBK`))'E*l4݇&" l!҆S<ONy_e}WE7Q !>, $*(QC 0`#I ɦ']P!('@0K~uKm 5X-mRı C3 0E /c| KȨݐaV2GȥnE!7(Q˜*p$\*@AG,fqHį8`P$؄HT ITB$kq" A]^@bKbr^rÖ@x-R--* ג 0[@D2pT#%k 0QI 4Q}FTW@,qt3#9EK0rH$G !c;*rl*IH~̏9BZt'? P-ܤ)EDҒ+_ X.uU2/ `Ɗ,Sy7cl3 \b\ʬfY>fҚndf4 psA]#yLH8 x2~|s? Ѐ t'` G(t mC шJteF1EMg fL Ԡ uD-QԤ*uLmS ըJu#UլFժZW Tud-+8jִuD+[ ׸bѭr]Z9u|+ v,aѧmckBvݫd+̮gϊvO -iOڢ6mk_ vmovo w-q*wms Jwԭu"jwwwK?w-E)! ,     !!(!#$ !###$%%)*&$('*+*,-.12/2,04224837669:7839>4:B;;<>>A?AH?BDCCEEFIIGGJGJFILIJGKKMMMQQNQNPRNRXSSUXUXUVZYWWYWcWY][[]^^b`^`_adccdeeihgkfiljjlpmomnqposoqsrstvvywy{z{|}~~~~¿½Ŀ#|A*\ȰÇ#JHŋ3jȱǏ CIɓ(S,QA2qi͚85ɳϟ@ JѣH*]ʴӧPJJիXjʵWD1uSҪM{۷pʝKݻx˷߿ LÈ+^̸cʎE2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶kx*찗Yh묔36'%6L0;xxHQw;)p)ȑ5,%FxpH)^ 1 pf$";$.% Z po<0'k<Ûp0+1{x ,r |2*7.,@h䜚 ;|#W̴pB({`-e=2JKtXV 0X3kY[\ul߶zco;Dڑq~n܍-:؉,h/Plv\ ^d;16IƾjeqfQ e2%d{[Cye oP Z&Y8y7 c.K#n/a 'rR?X vQHSV*!CC%&ܕ6fX'% au`$tC"M<'~%S*(aаʔa `L%1X 9B ;㝂 H):xBG4A f)ф$l1) (LĤ0:b HB8q% +1N` zv Ӟ` s&C7+hV:W& –1K{.ui%Xw.v wE,y@ eID,6([.<0zH05Abq& Iĩ. -X+إ*8‹.)QB)k C&@TA@6z3]2tN t;X[@ v@ MpKtq@Bi1W6 T {+ N( '@0 A E@ƅ/3j;@UM(!HYp@0jsURVTYV'U S;J%6jA:W h_5bT%`%Xل&tX~`+h@J&` d*TJr +[OMKZr e)BV/.t)]$~ ԲxjA$@E8>3n`,؁j`Xj2DbV؞jv s5ib@;vV1s( 4g n !Peܖ6Cnnpв8‰PL уJ5lu>pކeA~) uǓ޹, GX: g'8p_B #<%-2Lm~y|KsiSm9R\+ʌ-zTVO^ IX `볼s6@x㮚n@N/pe n6WO͖T m SmI@lˬUGs `QC0Ո]@nE CYp{}-1v'vmmUUA tut o@qĺcl^ԜXBVّRHzXLF'X˂+ɯiߔ+_!0@s HdSS\x.%gźk೛[m@V8u^UyAwOЇ' HW-{rQ|i| CEȌ "x;N hD.h@A&azd4%GK(GhĆV|Pކp1&,t 60b .3`0te{{>cSS{;Fneao|ʡpM^}>P.] t_P~ 3j`cł~dW,g?X`8pj& >g;PxY%e60`:p7H|6`y631bs?71G xrW4F'(R&pFKPZp1fY6hz$Sss~\'<'@ejsPspe1@Uf xMyeQ41~0Q&1 4Kh3CzW}29 Fr`:(.hS@`=|q8X(=w{:+ }KS=0hYsfX>y18;@e7I'8'WzȇB咑QsAmH5s XQ0g9.[^c̶~ x\PfXP GwxfI|fnu ?@zt@`\xxeVjP`CGe'9rW\PnC|hA3.lVw/#D36" kau2Д"W0sw&mbtc>#k(1e " gv Vz=ܥqSp}b W~0E}Bq{&5Aе? <]eSyDI<$OK0@ ?`ck5"/x b/\b^Ո.]3r5`%G+];ps]QNd8L0l3nVP]? @05 t"1 $WtWʼnsI?sh0H]mЇ+iqAdPu3KEfޤ< f'dwAP39U31GK6QfT~M N.0r%P6n:W tP 3_!NLl>2s\cN8vP0T׃ͩKçKQPy~dא`::b/ P1Rsh%5+~YZ=`VRM .i95` F&V}UFRR#&䪨Q 7HR.qJ  '0]YĊe?YfNIP [u#񕛎Z[;K@aLղ350\U]/PYzZ@ :e6 ; 0=-Q&Y7f+m s8΋[7W378wf({58qq`g"p!>7īt~@r bi ;k"aMTǾ,NicRB KWV"Ro:;"B,A _232zD"҃>|HLNPR@:<F}HТIJJR=?= T\ m&^]f} Qhn/p]v}ԬAx~׿׀]؆}؏!r"1Fֈؐ}A|1awKڢmє}@; `?HPP;cI9<`t19`l=Х]tP`J/!u TgK ng0,Auf_[ t@ .S`MYUd;T|X[?.nNx_n Cb#2&~ UR(;hT6P-2rA f KV@^` >p@ ؇E^s &&cg$~aqZ^o=`\TfUEMqoeQ&nq֫.˂nQSqWsj7wMwvsisEŗ^$"ja{gӭUs 䡗ӈJcۭv7#T͎Mg7ƅMM>w^sf6~5F?n N5p`M^3=Ee\`و S@\05(tQqo5/E\>crR(@J%OY@?nc-JRoq7Y +VR]5f±XfH@\t,?Po= 0dQ PvC ;\w/y3Myg??|sМ_DؕoWW_a-oL?ӟ_w˯oȿ^{$XA .dC%NXE5nG!E$Y DHdK1I%3&DLOA%ZQ?Q)KO[ԙUYnWJ%3jYaծe[q^[.Ԛhs_>Xݳdfcȑ%G4|زœ5o磕/iSNUfkرeϦ]mܹuo'^qɕ/g^;%i^u >}j"ŏ'_-wqg{!ѧ>}ߟOp@5Ͽ,pAtp#Sȸ9*66)u'{%%e/ZHAË6tJ`D⎁8Y Kϑ&vCSQRHOS#OË1P6SB,ȏ2PD @dc48O>E_/rSHLWÌ#$=ߚ=ퟭSDN78^ /4 CPΐ)d}?$(~U_|-~P2?D 1(7,p?Z#?4k)X;;K[0DP !,8;8Z@Ďh?@ïuA4!0k)IXHإABA48/X: JB B$0"$B*<, {cG0٩#lHSS,s>V|Fps 8346)B;2);D ہDp>уF~l itkؽX;3ȁh[)p( /:C\ h (-0GP= @GP:J@|qT*kI 8G\L@h18{9WkJ܏C 8n,6@Y K̏s@E`883ĹΨK3ܸw$LȄ ËH?PH8;L2=sJқ? : AlË;0KHADÝd>MLP`JLWTNMjДشNΒN| ONS?ֈL0d(^72ViGy`YddBH68e3q-A@.Tk>ܓo%4_H/d=oBNeƐbpe>ep^9/͞F@Vd,?h88RV(I6Љ4Hg- j9@X87([^4p,Xgp(Я9x^X>h[e~A0~miFL+FȄNF]+=N9@tbA,i?.Ʉ;`Fi<@Qh.kQœhS!CPhYb|9?QXڟ!EV;qD6@b78;GxJG.Gj𚼨n4hj9pNj-ȄJ@2rbQl-4j@.ЉL9@ʣ9*yF;4B?XbJ; :NNm։M0 K*bf8F(;hnIw?AnwIM8C 6A HkÃp& AiSH%SC PjE89n$.!.CpLxpi&L 7;pNVeU+0 ނ 4@, o438A.3%5-X%8),H.328)I؂1sɪ8J8,60J)81-4++F/tf/'H>k9$|7Ѻƒ&q6Q 4`)1XtT3BtR>VG|,Ab.@4򖰱Mp6GR)؄D-s^&,`m')?2tJ0/g40eN01@8+kzTĂgH.'4(2W1LhI+r(.P0IO_.H'^ [6.!0FL6|fAFHAP`- 6x^H)*5ġ~EiP#P/GZɄ)poK90O|EB(5M8}r9r@]N$h)4l2)BW*ꃥ`…`1e 'ܸI3Ȝ$S84ѩA[^QL (Nj̝mٲiQ^F WH² ,Y BюW:S^ttsJXڮ$i %[8%’H$2Yt*G?Ϡ!)2m2a#/N!t*A$4%\}ʐ5L0LWb h*Ҩ 8n&j3z#甩+=:5˜ MygX-i>?'x * :H aD b`Ehta^qyaaȈcaJAp \br.mr")^ox8kg.au@0QmqpE#vH"]H& e^vV"#1FD q IP#Wd Whp V$Ƞ^FIQU:E9d`lgӨqH/U@W2d)pJq#e_Ab$Xase$h1">D`AITR6(X(qlg~xAəVqU1 2PQNI2``tSb (if5*'bvj۞qE[Xa[8qpQM;4QKZ}5 F4%W0T({F2'WQ6 X0$Bz![dnkWƉP$8U]y:(\dk%sza>ǻh}pIHP%D!S"I`~@\12 HI2A>VTW;w~8Ʀ~:޾p$rE#T),R"2GT֓!t.DЮ [%IdFW݉6L ύ)1C4^RD&(A yFbr8K{nyבHxPtAr>% m hv X57;ΉWP\ CKHҥ ; )̠Y !44]( w;XJ$()>\l 1hA2 09N\ ̼3ޚ5fYA43$*@zؤrB"2`^N%Px7ITD`İe`NLX/ChB%_Zwf^SDF pvSͷ־6%\rj)(Q l}Ps?Ls(b"1Cпn |Bj n~ϛpïpg8Eq\-2I$g!ZE>#|BLʟd|BGx,ȍ|gN3 mb9I{i:>;TWPoxkov&z~Ȟ?K4;wl{~r`/x?Ϗ#B"x6wC/z "=ճ=c/ӾW곦z=/GP{3>/JՖ?s>_}cۓ?ӯW$"~[=%?  &. 6> FN V^ f"  Vӌ߃h~4^ ֠ _G 9HN A԰` &.a!X~fa!~8!v~!*B'Xa!h}aơ!J":RԱa#_ !!!FB""%^"&[F r'#B")Hb}lb&"+"tb| Aɢa"O+#2&Ꙃ1/ @ `@/~#))7F#@3 ,$\(H42co1">#~H 8V,Tc7(c :V#T t @Q^`/ )9HAPH?#O[m7~4" H>B@ P dFD%na酧GpH7%,JzX @ D,W%A`@O%H"`Vc=P$TJ H0%<#NpHb" Xx#AO "$A AZP/9B Eq "G:hB !xErǽ 8B3&iĽ`w  A AK d$ ph pf*F:J@Hp`Kd4P &#A4=$A)$N\L$$ET AEtK# ( ܀ 4~&F } [K8JPG",IpBH)` @LE` @$IT@ HċL@ )< TH d)T )ZF<F@A)@=J@Z8eA,A@)\P>*@p ,@ȁ <D,@ *Fy) *|HpH@I@&@d BW*ܭbp) `@r)B, FDVB.@E(OFˮ,$i3~ A ȬI%`Ua~HGa*^i @z܀ DƜ @DrNPBTA@ķVlck`-p[O~@3U kH 2)Āĺp(-AkH ۊ}+p㴺cVm3))H K|^DrB-Ӎ )L$ @`<@Jƞ,'bT .@l&A T6€އ~WJ ll*g'pI@*\p!`)lAH`:Afh o%00A`jĴz LUɆ&F fk{8o6IH,^ KA̛g|+@.@QWlx(#q )0r04S.4UT)HqAp/gj&a`@K.5C9FLF}\)jiA* 's@=&Bx )Ԁpd NA(<$ L3#G0F peELKV  lZ"o$~.R,`@ANA".pF!)l`D  밖0sK`d,`BJp x)oAoKH€;l€@ 1UBd$)< ~,Fo\# , @ ȷ}zh}Eэº6ӄX=! P}6Avآ˂K))N4xaB 6tbDHcF9vdH# R$Q예)3iִygNe<hPC5ziRK6aʕJkQ#Tcɖ5{mZk*Uavs]>p` }0nuL*ݯ| W|sf͛N(hߍlwrXJ Mv)i]mܰu7oC$^ֽ3|7tkS=څW^C*}~!IzkjԷ~ <\|% \!~=Eqr=$]|e#K=R5i "Mq'&|(+G$kR+&ܒ.̅r&,w24\6/LxG7< N2 =B?s F}R'ERQL5ݴIuK9RMESAIS]}X#J5%\uZϼu`^}]Xb]Y5=6dj|ښZn lgr=7p v},u%z]~"y!J1ؑ^~%-5ޘ=EM>U^9`eݗuf_q蠅֟>iW褝~ӥlꪭTVVګЬwԋj>{Koګ~.նqݎ-9m%غe*[o gw%׬25<]}}qE=e=sU_OkEe7t9N}uvwx]?//H۟ 1nH&H!wWV|~3bjB<(QA5 ~TP"P?:id '`SPCyP2"~pD"PL dh@v Ax ` ed^ w; 0B" aB vD?jP`CS +bN#H$0 &r(A@@2d%) u"2! RA|JrjГ1 <`*1c IIA*}dA@ `b~pBbIjGP"n j0R3SD|hB VrIvO. s(&2ə Ƞ)4R %<&%`vz!wp)ij m2-J,a݁Vr< hٓ"H-$XAbs@Pꉡ"2 J$)'nJ/*b***ג{E}Nj꿩^\U} V-ްaWD "9B81t9gΌP"m0 BרDA%__C,TF{ lܑ F& ~e ZA`!lBκhE;ڕ"~k*b  $QAᤂI??= p+C&*ч;l$Swh)CDX C2ACP" BOxbIDS b & $a$)!@dTf#p>s %A7vCvOAL$bCڸvBXK /xAX(nqҲ X-p4 ]؆3 i0 0$/S@ [R 0Sl [(@. Pث#c5|ṽ0% ^@a?8f6 ]6)a c0'xJL˜Q8Xǔ`܀a g8J)ЫCPS 8l ;L ]'L-aՓ߆jXdxОBgaL1R@h&ۄb ?K )BW$ X( #K[dRlA[FV@)7q#NGT"GށcA0PtA*Dyq IB;4;y%~Yj2ՈL, R>.aɄa݂lN@$ lo/ @ӛm1 jAc!}(aMrN d&Lx sx|O2 \gр!^hD /"j&9Ov }KnԎP %;%2  qD%oP ;e{܊n?~! Քv5!K~ Ñ`a ʬŶn@(aT` $*!Mm$*A@ Ѐ von(rL"iA Jd$gn aӰD| +Oz t(B9A6NBo 06 .z"G  Al ¤H `Ϙa n M @& dH Į0H Lp ij4R·pqMNƬ'- 2 ,z`  r KNAR/, *κ@J Qz` n , Do ` q  ) 2: N |/ Jao?-#Hz (̣ 2% |  dc !8!&bm6JX B Mp&= (y!%/@ lèr $T HՆ,.ӲNlTAJ" !//f0Xr/1#P2%2a1r.3ۄ20;S437S"BRS5W5[5_6cS6g6k6ix'3iF8т>G3"'8,3yvs/{S9S-SLS:s988<:43<)3!=);ak">2:hL%., :N(%8 ~?>o?xf: *4Y` &Nh$` rAY)#AA"B9 /E-" A m=U%`nDs~~t D3*EM#%n"!`.&t%t#>ӘM=Xn>X%%6 ِYّ?r!؏+y$(ْ3HI5ٓ󘓽Gٔ!OY;y_ RgYgkٖUsٔw?ha9Ms{}S䌏YYWYٓ94ygK 5ٚ;YǙ7YœٝY癞ٞYʙa ڠZ: ڡ#@%#:;ڣ?CZGKڤOSZW[ڥ_cZgkr_KzڧZڨZکZڪZګZG['&@AךڭZ皮ڮZگ[ ۰~ڱ#['+۲/3EZ;۳?C[GK;9۴S[W[۵_ck۶os[%{w۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾{۾[ٿљ\"[+ m0Jn<"/od.;?C\GK=!*K 7 p8+` ]@`i&k7a BESm`9g I7n44d$J<,E*ȑ$K:5SrbV)JmLYQX"3 H ,A284Jʼ N݉QeSlY1 2nXPlX~sʇdR9 <[udZmHnTH} "F~G}D1HcDي.c2Hc6ވH RQwR\ 1CRp > q%VeM-ɤCsܱw1 R7XUrCHzSJ%R+ E(^`WÈb`l%-(K}qG^thG$IR4Fʒ0c kJ+iT"\J%r'?)B2brhdH.I?jl+_IHr:VEKC/#Yrf".]sl3;s q!sdBZhIjQ7Mwܑ1VFml;Sa@=|s? Ѐ޳y 'Є*t mC ш2TE/ZMPG? Ґt$-IO`t,mKQ3%TQf4 dӜδ|O Ԡ uD-QԤ*uLmS ըJyUեV5\WYկudefXˊִug][ W)5t];6׻u|Q^ 4a6maJ֮e/bvŪf; 2-iJӪvmk_ vmovo w-q*wms Jwԭu jwINB+ 60o@! ,     !!(!# "$ ##$%%)*&$('*+*,-.12/2-03224837669:7839>4:B;;<>>A@?F>ACCCEEFIHGQJGJEIJFIFKKMNNQQNQNQRSSTXUXVVZYWWYWcVXWVY\[[]^^b`^`^`_^`cccdeeihgjfikjjlpmomnqposnqsrrtvvyvyvwz}{{|}~~~~~Ŀt!*\ȰÇ#JHŋ3jȱǏ CIɓ(S1bA*i)͚81ɳϟ@ JѣH*]ʴӧPJJիXjʵW>)eYSҪM{۷pʝKݻx˷߿ LÈ+^̸cʂ˘3k<ϓ7oMhͥKΜj̭Al˵=;޾oPÏ'/[q湝7^[zt걭WZ{㣑Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\vHdibl^n)rIx湥zJ 蠄&("裐FzVjR馜vZ*Jꩨʛꪩ*뢰j})k򚡯KeYU&VHJ9m3i"bF bmxxDAw`)h~h %s( @ "(ohJBŲr e(9 þRk hp̢k<Ø)̰çEgP$Q% +#%$, ΣDJ5T,G(:oCƶpIJcK @{We5S:Uî3RxaP_<۟^Bhkxdx"-2 @>mbZz1HKJ]A]]v"m#Z lypixEt63ƚH@svN|L{lT)hLoe)6-\ b=@P܃n̴u,@l0^uןэaHUSu\xPB e+עR7;.2N↞3ȑv[^kCxb޸mE< 1Izy:V7fuά,c(.}sމ1\ c7 K29w$M ݎ pqcsǵ~Ć! K_$AM1 m]fm.ێ- !ҩgb`he&>w[d{;sM#PDr5D3kBϴбk  g𣶜LAdp逨\ȜrDKavT4rF:h5`t1c2Qg0&rbv<30;35{@h1]0bVЦM+9BM8|@W,Z`^@~tf~'jw~o3m4U:W>Wb(hi$ t-C][C Pi`SY'yTW7; 1wFCp?(3hWF5.!Ed2^*Ȃ.X 0(l@ut3P+6 =: P(N91hC|tأ eqoG|pڢFqdfA@05 eZ(oQY=~Pwb Jg3Wl\eiNXP @Bǐ8փlXuɑ鑦0?x_V Qy sY|X~Ud=WWBg=d6_sQna?NdNHk.ya@nƍp SV.0s?'jloVIs3lSH;o2X583s;5qzR PWx@G菡p0{%5zsEGdi>B@ n2VVQ.^2E. ]^h._X3qlE~ѓʕw@ZEh`m^a\I\9B\>0?05s2؁ {VumP%9ג?mg@DP]a9iodR۶y\DgT U`RR$أQGQ.  i ] (\UYzE7*SJY1NHP %[ ;s^ 1~@OKevjdVT5;tЉScU2EXhr@ Ң<_b= @`,Vra7m0C, aPkp wm@=@wp[ZsKRK۷,ik4B p~_b;lK ˻]n<wc5cl5cW=ּ9;8E9S>CI5+kg_0a.?5w0[3fu5[c0vu+3Mvs-'gd6 .!;-X.m> (2qP_?%v"tJ<T|XZ\^` d\f|Ʃ-jlnprМ-.K }! +}1$PPEsbSS@gJ ,0}\WNaX%e@sVYD fA ]MeV%>A _;G Cp"фIMf!UCGH[}Z>0h4^sQ7@:-Ym2_P@!CN1fV~ڌq xh8p[c $pF3G/P}PL &c,]W^Ŭpg`n<\T7Xfrוpݕ"ٔxzerM eJ*0Cr+\Mŏu{jl-_HVhX…#@!pS@pH0v B9B^b^+d6@pA]Bo`ћBt# @6)L9p \"Pr"RbSܠ]MEHAQaa\WDt߶_¸WR+z=1XWAC@Bxk %#4z ( x: *3z3 "+@Du!D (KyMA  p {HRBj3d+kJB3!\#.$^pL~kPвP"s µC"  .3@YG4@- 2ER>K^FSNv nAHiX)9j/(p.@A HP@ i¿Nt"hxA&IM}5XVnloܘeB R A>taBB . [#q%8JtAp 9 R`grrT䡹^Lte "`2c#5 !YLC3>K>0:g@i$j}Yp&I_x[EtgD | X jx  WВ >hE2D4(D"!sd|RЬ4JJ:D#J>d $8%!):HED a%Pd0oDҎs"BC(X@İr>JxW˃E+[{r!C%&6t ^2wp wf[8BAedjL.Ř\B:UCp_s#q& ۀ.&z'DʨF9 v@bZKE(A]A++RIc3fPpHpcP>XSP:F~A !O(cArZ&|]@[ٳ*pllhG[Mbj-mlg$͆еmpw۷yv}nBSڀBwqkIx܎>m=` wݖo B@C ~i!|1#yb\Ҹ 1\%@j^G^yr)\k$89J~thϝ'ck$.89,qG<'@姇=NϰHPt9Hu@ B҃-v;J*;H 'ׅ@w$'3> x 䰮&62;dLx|&Fdxţ"s@ vSbuiS88nzRq_ FW<,3@gC;\!B"QH@ݿ $78₸K&R#K!qRxV%ֈ?q 0뱌IS4E@ @!h8@|(;?3A A,93!(wBOӂHp80`%tHA5< TK肪#/J CS8x#(@ /CIAS C[CJ6DM弌X-ٓ~jhN7NğN ,NL4O$|hpO\OD lOOP% MPЈMQP %PɈ\P ?*S P?1x;`1'Z#ڋ#7`18;P? % "R1hHB$s$rLU6rJ *(+xN'Ł3x%rRP٧~Z$ZZJT;(R}g@m"2g "7ZlֻK:.`J!1聒B EӚ*B1H8H =H!IHq)'iApH`.ʁ _\㑏ȁH08J]Gp1"**ӠRh XstъG- :DxKJ"E;82B"Baǃu| Uc5*b~]\Θ5hKVV485n}c8VQ9cc491V#>=65H<8b@46.i7cGZ24DW .h8,V N^Q9͉8mIވLj'2&QֈTeIaebW9.HNGG(/3o.13d(1!e8 Jh)hXP40@UvT&WSv瓀+f(@:p^Q?hxq1L  2h+Qf3;KH +0nj+xgO?L[9P.,U;B?=(6I!eB`釨nPLGЂqH/ꪉG(*D:(F% Ri@a=Y;y@HЃ;(0C8?pv4pEHzj;ꕉF/3`6jic=0쉠K3tL(V5;nE=9=%G> 9hyF6BF;IqN !Fn S2R1i;GOK;C.LHD()@x4RnqI앖_".4A.MHJ.fD`&naD9HEh~˾KfB ;p4U64M6@48+33xdžz=&_(+Pݖ-h320+pz2A.16B2'/,-3+0.Ht:f'S ?wI|f+p0h6=hn1@4BN)9 7rBRXg69r'i7u`5(p:@.2(P(3wLH0@0i-8f9106XDӂI.s1N{*,7-+9#9JЂ.s0pv(#E+D3X;9t4Pw,?@#F1(Ha(E/1eZRr/O(?1sJ(.078RHD!9'yM.H9+xKO> .i.1H(HJ%I)KhA+Ӗ߂+Rs4hzӄ=x+8.x31z.x{?6KN?cr(0VჹO1.h)w0GvKHf&wZ+hB؂N`-4p.BI ~޶ #`.pj)hK0uis74Rg7(Sp:篬k@^ʺpHvP`Q,=WL4u ;WJᢩ A9n !81 BT+&4Eˣ+ ):cXRdhsNZ@RN~t%AL  Q!TS$2QS6) s(]) HZ(yբIE,ό e@KuC PWʖʂ@vUJ!S R܇`(Bԃdۈ6/YHPL$RQGHRTLVdRI^%hA1rLR S9,>~l%bA,׳o=ӯo~|EB? 8 ܅_A",u`AJctaZ]o)2bQ U%v oq b%B)]ĚlzQJA)Di]Wfȡ d`8"ZL%8 ^Jg rѕ"!)Ea$A3"-wEEbtD;AoA&&^"Gc^taFK:mE'h$UV4IWQ#Z`hb`xaG&WPDeDGGI"]L$B;xF IЫHa;a_RZknGHH0NGOj% ƚVD"c'x^\AR ҚaEWWdrW8 #_1G)\[).#3A =4W I+߁ACHPRI(hndRoK[I9ws%t_\%UQ"ݶDvy&Y\P"7&tc2W(at*ApdD.h 9(E)ti %0F@QE8_t . vHTM dl$C D"s "# 3Y9ڑ_2匭+=C`iё%ÍoNd5E(G5>D' ETDϺC1Ů4Rd!2%Е~C)B5&24 1+gVC7Pm cY VT+!Bf (2W]86,3de(NRcBY uh8o!@#g@'d.d$ l3Kr':&3Tj2m$Lg2&t3 +<2#Dm\ DO!G*DKa!Tz]$R`C8I LI:`a%P # :!q3 \PI ;;5+򤝸ZAh>L$ ji!Ѕr$ sD$Bx$@(JXOPbSMM `ɖA yeΣE9 )K\Weu$ 6!.# \HE0 w]Y6T E=P G\7\4~(2@ܻ\ATM `;t.s`XW^@<=[. kn!0i^P2FPk_+>5A:g? 6Ap@1=M`ƲGvnsm!7{ @fz},7u~ŰU+AgVù)h۶7;$36 OMp-8|o?>|=mr6B QM:ԣ^4@W?kzIPj>{f1zdӮGC'PяrD-%u~b9̝91`O SnGW/GZ璘s<ƣ_F!#n"'vb9b@|4|H""z'".bE*| @@ c+}b%b&aԕA |<^]EaDAHB0B x.jb|/G@A^ ,bZcQ3]F]$x}<4!DdFS݁@@A@;$~X"(LIH#|#} A pdM2ldAAB[} @}PBx$DH a},AS%@Užl Q[)Υd|d <$@؜) @e@"Qel$ALJȆ# T<)t ($ &N0 D8$$\~%$tP$0ffjE^fw, &A<jlDy !"P)ܦ!!0f_`#a؆srH%rT@7&]E-"d"\EEs'{([Df6G44AypDf]IF4-&A  @/@?WeH‡3"&"K8"$@EhDA(X DoX x A@EL @ DD1$__I xxV bB^P* `j#lV$PbqЀPB h $pȀ j$ LD&'hX@0^!X1k&xتI@tVɹZ@ Xj)$ X$%.$U%$(֨$(^^E+̒2^{DAD^L &df  %KL68(l($H3Kܬ%JAB@s_d +Ũ.AoJ/ T^ bѪ'o$@"ȩ'(1@%܁@}%iw/`s.6Է,*V٪ˀt;s dBD%. Xމ3ATB!@(3ē&k@jG!>G)@O91KSJl<AoL#@xDKb[Ftol/s < NP!y?h"+,2̺h+6b/Z-%@\"D$G   DS. xCҚ $@,4PATV@X+B<+$΁@<Ѭ*Lu NVeCTsTA ,(,@ @wM(j@Gra5{BzlP xt2j z@Gv(H@hp. ,FhK ## $:&2rZطM~~..Gq->OkMGt r8"u>zz Ɂ @(m)3۾K%AbXP&C_(p '\1;/ѻQ7cD( 4xaBML5t";)VxcF9vdH#I4yeJ+YtČi1$iJAP\RMK6ujTSV1Ŝ;n-ٳh؟C < 2Ukٶun\s*ޑ`Hُv6|qbŋ#ը)|,V;,tRELtƫYvEJ) cr1IYwa3w}yr˙7wztөW~{v۹w|xɗ7}u{ q~|'gË %L+% -H"*0.EĶ2԰z]|c<8Cuܑ}lCQ'<$\ k$R*ID+0-R-R4\M\Ll:7()@IO!sD]TB ]QF%/}4J5ݔ$/H;RT4V]mT ZZmXe5KT\}اtݕ`=Pݵb}hVVgl!ٖnpr=t]v}x块z|ݗ~]#jSVڂ U`P >IMӅbF!~T5΋ ͘Ec!A唗,Ueeuǚ7l6gE y^iNC&i^ޚ:^mam۞2jo;_|fȕe6p-<#;ĜΧ}=+ԙ6/UgI BCpuTC"d6(AaݕwE?8PD߾_ɇ1ą3LďP28CD2ȸm6h# cX)I-$Bg;." rA>pdpBa BEPo"9p..C&$FG!hC{`h\0@>1P0L\H 3! 2h]P hbw8 3Ep-С./X'))w1C@H!`|@BbDdpƆPnhh0:^RMwTh lRmTDrhB ,I[Z tB H'1 \t\PF,)u]P lth- &Mr)YBș.9DCQH!Dא.pPԲU7C5]I#ShB ahC*Pz*E9,)2*$эҜRR[{.i`˙޴S5K|!BS~OB6X/"]*F*zVvR0Oa Q Ӎz]+L3c(EqD B`S ,$+T! R>vC} w8C(ч;!B"NPt6! ]pǔ/V ?!N+\ЅۦC@1;4 b݆Jd!}8' +7\C)ސHHadꂊd8e g `8 G]ྰR  3NŕCHXg`+1f$$ ڊ>4aJ ~|2a`4 `Mܠ X2`!BTiMM"!8,2!-`=.@8!! fB `-[ "` A 0.Ka `( 2 A/͠l p@ ghg& `"@ "p!-Ś @ XL` ʬ j1`L ~^*A `t"ڜ :M&@ dN  ,N~ ` ~h,ź`H!J: MA 6Krph1i"!B 7@A籢( b42(B "2AF0!KXo !!'!!2  ""!!HF"N a Xb o@,'cԒJNN a#'W((+)w+$*1+re*+G-{,i#+=.R.../R//R:b-7#- S.Fc6&',m#0*"Sb$2/3*,"(s013B3)33Ks*B3"F-L55!B55g)^r14i7]6?'7w#JA3Ca J栯L"ZB`){v~psO*H2a ST 6"(g%` :"S1e夸# [`:# 6R# .%~=x|T 4:;;>981BгӞJH( "'$BҤz@- 3JKrko,H] $t>SB7"C/ ,(1 B,HħǺ`j J~ LMĤJ ! LK] l"j1LHtPi$fR7?Iec Z͉( &Bx 23Ա@ vR 0@= b@  B 30<uk P_@{2bBua"V *T7`0- a!v Q ҫ $dbJ `d&lJnuo3Bo! ;eR, &+xiUqlB!Ȯ` ʡ;u lp ~4G0 V`=mx}zckruwswR21p +E(XV/32.3#<#srց+" xW"~ׂSr8'g4ŒhK؂OagG3X]88'X6eiU8wq}uxR3|ևy68؉X؊c1$~uu؋3mXu׌E80Y؍K86؎')؇똏XَؐYY#,4Y*x;y-Y,0qxK9>;#5D5Z4^Cg3sY–{ٗY٘YٙY95 ٛYǙٜ֙ٝY癞ٞYٟZ ڠI&*A &+ڢ/ 6;ڣ%:1GCZIzMZW[ڥ_cZgkڦosZw{ڧZmtS6Zzʂ:S˪ZګZǚڬZךڭZ皮z(ZZگ[[۱[ '+۲/3[kX7۳?C[GKS[W[۵_c[gk۶os[w{۷[۸[۹[ۺ[ۻ[ǛssO[כ۽!H۾:[+7j4A5W'/+\%;%<~ \G S\W[\ŁnC!_DoZ>RB c sɓ\7F!0Iɫɇ@@ B #ǜ"E$' .E"@G Ga_a4&A&7M3^DžGT2KSn Pd ARNX X Lap ֓$h J4 y ~R@ @$) \t7h  @ΠeR# D":TA 4 @ Ja .a)A܀)~ۿeMt8^' \BG :!J4hl`)dT u |pCdUt] zUIeq ~vȱ(ٱdu$F!!!jJj)ǽD$tRI(MgJ(F>i |]D >Pe&@#=.URҖ&FDIGRQ&e Ѡ%\UwJl*(2r0{)1鼝) /p? G҆ !D1ێ=q{IɰD]BD D0$ ٔR" vPIt@g,u.P-IQ@/pQ>ZȐUK\!'pX8kT(Glܜ$G`G"ɘH_wtk"&qxOv78$!98DUEK _(]L@ ^5S.WIsjð'!&19]t tE|$ng1W [(kּ2A&w!"}*Ͽ@RGi d$q%0rH#X:x}&O,#Xҳ HtpzfS M?`Gp4L j8kXs΅',G=Bqփ (Jq3,:'I'Rqd,H"+Fl"8Dh4:B;;<>>A@?F@?H?ADCCEEFIHGQJGJEIKHJGKKMMNQQNQNQROSYSSTXUXVVZYWWYWcVXWVY\[[]^^b`^`^`_^acccdeeihgjfikjjlmmqpmopotnqsrrtvvyuxuwz|{{|}~~~~Ŀt!*\ȰÇ#JHŋ3jȱǏ CIɓ(S1bC4uɉ͚87ɳϟ@ JѣH*]ʴӧPJJիXjʵWF RUҪM{۷pʝKݻx˷߿ LÈ+^̸cʒ"Ur˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶kfɮrYVnfk2[T4llҖl3]lvY2hDADr\R#Ґ*D#z+|A_l$H0x{-/A2P1o |[l3q Y`#@(+  $@6snYwJ'){Ȳ4"X$S4)CmB2/Ks NxĝD=f7ڀ#۸|sםݤH|vgv*W&_Cs~1roZYkY'ۼeAd-NJ`,1?|þ8y+|͘nM;py 3SXd`Y @e S ^@@`"hH&vuhBZ0)DW0  @_L$8 `.e$hBYVlS%jFh`Y3kM@U@ HB "A-VX4K$ 享o‰Ǫ%[Lh vsb_- RP-@͒vevB쬇e=&af&,& $P#"ш "g^0HXHeaaY_㐽KdT{Aw˒μ 4}7VXdq IJMK`Iw\KtS%PKw~ȯ|@~1  >Z 6@M8Φَ̮5K?3n 32#E P2cPgZ8`Y B 8PxxxZl@Oi~ B̺"%1M6SIaJ]HZ3 ±,ӝnA&ǸOʂ)3oLn/ tŚĮ on czq_8hgf%{rەSPBsy~z\E\EXW7A[C@ 0 bn׈M)Ft5}ɵssPCйVo-2 Ǵٷ/k/'| <{ǰ.x]*uk02X)6Uk<~՗t8|s.jA$0b~wWqاLq1'0 61c.3at{c|@sSV|;Fo|Q`3U7M:}D8ǔ_g~$~Faw&msS>XW@Y0dHtVj$ 4? d.׆qxY/:Uq7\h1w3xS>\$ }sa8?CMgԂ(.Dk40_4xi6HWooŃG?|fvExH D@H4lX`1bEp.wzYht"Ӆ B\&W<''q/g;>NW`&DXU3iGgO?CTWw3SfT6󇝨wr@jSBoo7nюL%S?0h\jBE9{>pe6pjwxC%yCWԊg5؇XT@y;k ؈[HmW `1 }Tz3WΗ.gm )v h)K6 DP@Vyk @T1 amWV(Y% ]=Wf!@_{2Rn@?)`!vUҗI:cN5mfc@kL(mS|x5Cpg]"w38mI}W Dyw\`aU0U`@P<0] }L&zGrp  qKT.&_5V} 9j0W ؅0&];vaQ Rv1q2@h/PuVCK.u@W*0Hs[TUw.CW/ppuj}d_u3LV;&g6WeȈ;N]Y@s uaN@M 0pz|K 0W+k1etK 0n?RW SmHl0t\dN3Q0㜕٥|q 8Uj؈%3_P5&1;`\U}%NemU5P}AG9Ne@nWj~/0.U5@;1P}J5Pq4r>y;_ %P]Yu"@Y#NJ [uS0Z[@fyfMձc40]Ea/dYɪ- 0-e֤`F < p >rcH |ppPC<ppjsznZ6bw жc0xRK-Qip>* `fc{L;Q&sp;:c9;}T>kK<9{^(A1%E8֛k.ζl ͻ[ Ӄ^ǽreP&F¾[M{.5 Nkb$+MW!o;Bxk,"0 %,<#H#b> 6@B<ܧD|HJ*NPRMz_n b! 2 VpO!X?hDB>!x2p @VMpzODpFnHQjQ\Uge߅Mb^p6.i7w6gaN~p^0Q'>AapO 7& >>W4ziڈ4ދD1J>aoBp}\3^ 6kC>!X9jWg:R@^}as:.J vݔ3]OP Z3qnT5$  S\ SS4G+kY$] [pO $54_5x1 ڒ>,_ !z`հyba:U: `[n`k/z؎OYI`\fO^cJ+ M dq @w >g1!҂+A s_?q?p__oA_<{_?ӫOo/?ſ(/?_Oo<~o_Ԟ$XA .dC%NXE5nG!E$Ya)FJdK1K"%3f'FLOA%ZQ?Q)KO[ԙUYnWJ%[)հiծe[q/4[.K*;_&\aĉ/fcȑ%O\e̙5o3✫\ԩUf)I>mܹuݛl_]qɕ_.y)˥O^͟wūվ}vկgcyѻ_}۝MO@TpA,pB +4B;C0̰6K4EQ QtESqEZFsnFڢ*FrxGm#rI&LHҐ,MI'JMJ K0I˻t H1TsMȴL)/b$L32dO@r.8mB)hPt2@"9-v )SP ԬBY!!C.H><] #

        [ӹHDJ Jwb5o"E POV† R`Hx&s;J`$$:x4minRhh?2Rh4 tbAJ!i8RW IR)h SPcnhȂ *\?=M ְ~ &yn 4}px&VAɭ/^2\"0'< yOqKuM`9 PA Bd`:g $ BXE ^&a]j H iȆAkeVaEAh@aH#)7t /(E(^U d Mx"Tp'@/RĩR!D_:6 d YB#J@ @vQf#5x Mr{$.1DD@A4AL 8+-D < DA7AϢiJp/2p!FYeb.eGAd˦/LB\e); vI[)PjO AJaqs  .$;  j]E8#r8>@SdLF)B&HA D) OL#`0LɐHWrDS x@2 *"\uzTNaXA[QS,B pu|60(#4Z})pFD ʃCt"r'F4ᕦHKTSA ֫u`PNal WR6+tH"4J ,p gy=>Q@[%7S3 \$9 0< zi)0"x*CkKTj @k]$@_gH tD ']r'҉ϞN'WBμG@){z=g h@ ,-Br!!S>gUh;!8xW,HxH8H%)-ʩ8:-qU/F˜ӘP$ЁuHh0x BsUx 荔> 3ZM0$H8ᕄ4ޡC!~^lbƑ84 $nB[ J͒sⰽբHV.*=-c3S4Nc8]cɳcpY:)I0;31Έrd/6`E"3֣8/P'I晃#;*:L䍈/c>bbdVÍO6⡰|?H)厨,d3/x@qcl1,2HU(JExXL0(ג`6XAOVN&Q΂hFH s8I0gԈU|~CP@:`VRM,8F-DގY+,3;ʗUCЃC@>@@}ɋ@1nDi[!A-RӀ.@^=I H8zEC"jQh<Rْ9/a>(i{uNxދ>Ѓ#FЃ"@ȃk5FIHM5()CaIB=ȃYV>:Є>%F֚–A`U;ȃ3C<< nQѝUCC8nnIC>e CiUX2NX,nEز>H`UћE:XFhjLȃK/0.p11f18hN Eʂ5P,4n 40$(,x/Fm:肣R,84,`r,7: LX,72C~#.5,/e"/m>^Yw~,0H^>x5`)>I3(!*Pp$*XSW4o!8ux,)>0V\2P* ͎@a_0 /e:(2H8肈.Pn/o,hUJH&k/XaWNU) ^oE@W{t5<:8U.P5#߯ ", U,FN`_R.O^/)@~ɂKP5POf0* r,0WyL grCq/'5Ƅ;*bZ6@r285LlMPt,U (7ϗ,.HȂnHP82`{:4x,Єy~G'k84;Y&/Д$0HM6GOCr<9.7U.(5/xUPk2Em, ("FM*oPU{o)eh ,hj88e!xp^^wpFY*p!@8Vɢ*NƉJuЬ*q`,VaHy”hZeJ:_8f:\\⬃SR#Rj ,ePLNT /yF"LKYj=T˥\:1H2Gy9ԗ@˼)`8N.KTDP,"Pl>g(2a@ZN,V(MՋj Cg),(Ŏ7VyTMXg<׳o=gԩ?EBBFDdhJe|F\2)in)=B!dlGT^@$a) \`Fu(- _BjJ)Eb*VJpA\AG'^AXɔo4RJ\Iso<#A*=aeQL9$XhLPaɅ d_`C9Qdq[lb1EnvRF.6TDhpϭV%T dT#UP%_dA)&])a%jAf)'Y\ˆBrFE(@9uʪd9Pԁ"1Z$}%I`yT)*tBd :Bz@RnXHR( 5&-*D>\eQ*Q"EQ]TG =3Aw_E}~#|q%B w'=Rlu`bG]HY<% QoL+u`+T,@ĈXehѸ2v 1AG(\& Fo`BzaX1$J%TIMNw(yD`%Z+uNLH$j<ijPm^W֮$` &^ !zKlEG1V9 AQق-9$\,I%B2(sJ&L$}\uxJ.$'c`PKHA /܅}ihJp0 ip@1$ֵ7!]xB'GdA2: 'D, z SAКWL,3Ө5>H{#J"TB4s HL* \<q$"! ET FGB0ABXKp-,0'%u9DֲRb IIP׬" j $&l R8*@P "BGf7nA>a4i(&ٔ/pYL)ZS, &aHmY&pB$&[E("щڀ0GXSPNpM,_j"e2հo!B#~ו؁_*T!: GK@T"Q)"th"WL%`Ԡ<1 c8$+E'vʵ#^B[sp(L2:tBX^2Bjx%PH 1Nlp7O9T|Ȍ:\YDVKD^ #W̸ 8$}-lc86sO],}XXwe|^W2Df pd6$ ^8P\"E-CK`3qۉ4I/pA ԅpB"nk d c)ےn!y 9Cxf o.4!@&Z\2$KP.I( qEJ!2 CDJ&62H!vsRJ%Pz@H]/%JIgm\H!>@º_*Ґr%%m.[25pAdEZzXʐJ&rELEfN( *E% ղlxK#~Atxcq$<+_-aJ5H\ƝBb#PֆHwbe3@-v[jrm{ QI#jzk'Z`[=LϷ->FϽS"| VIӓo[=瓙Ξ;]窚c=ns[҂{bus\-oo'ys.)HiPmZ3ny<=MD*Q<]{:@v{ xDmW!dFF!ɻ_Kx9<3s#/yPi=Sճ=E?zh=s/gK?>3>vSֿ>//7 ~K??ӯ?/ӿ??  z, 6> FAm]e~ {JlѰ J^~ ֠ ޠ͠z \ ʑ.!6%! uL ]G :~!!}t!U \!zaF[&!!!^ vW6Za~~J$!^"&f"%b#$A {t>"$NU^ %j,"-b*p"{ @ Q"G1*BM$@,!4AQp $)LA 6֢:-b{LA @U{O"|+zbnk76Ar@\ 1%c6 r $쐪c xB @Dbi 4P@X@X,˯B@@+$ց(DBj:NЧx(yNG$A {#z#OrǑ|(Tq$劊֟Kk\]I<ܝG~De܃\U!ET$&iu``t@L.r.{x=䣇]w|dA @4~4B@ 5.y@Ⱦ@ Ѐ7菾>A𞺑* )ĀӻI/|\LR#!'T#_)|}=@>D)"V4xaB:rbD)VX#dH#I4yeJ+YtfL3iִyI!K !S+^4z)RHfLhTSVzkV[vQհ,25QY(vun\sֵ{`ۍcUYlfמԋqbŋ7vHT`u^ thѣU$}:iԧ!vvl/VH$*̻ DeF5#\˙7wztөW~{v۹w|xɗ7}z=M~|׷PÑ?z| MM҅F!>T5ϋo̘EcA唙,y>}Ue" uyɚѺyyh}^h.G;@>ݶJm?*n辛チg*&m2\i^-'q/ߜ2/73E?j3։V2vwOa<)v"lSy\w?<%"D$RKh8>]](N^P@J#@(CN $F8#(v/ʈD{4׼/x )0"xJxH "`|A~"@O)$;$MH QA#V!$ Fb0d / H(DP@8(0H'5@#@8*DqU 5ca 1 $ r >6@*x-xc,%`o$5G:%DP^G> 4 #`0H"ѐA +4$%iI2K^rn*qrʐ)`qTx"фac |zD)`pUA昞˔4aH $$|  YnMꦦd7EA;ЂT  D4PݎEGQBsHR%ֆєt-l)Lij6iL0"npiM^xD_TUR Y'PP;jGQr LH2S!XSrUD" p!IqcP}3ӈ*غH=`C> C $CxazD(VMBAK@zWAB B\&J"DAq CH3<#CTy*Tqn'km]|DJdWRȃ[j(E|<#t&5`YFdjꐅE @nޠ,iP!/a(pHȕ}Y *A/X12Aƫp7" ^(CH _`\o|CP! d0OU8GNЁ jŒ;U` n\ Q@,x \HCA`Y˞ p|!iҠ<77T`47Yi #ₐaW /W!Bi^⁍ACptP8>iD .h\'H[!ax6rw _ [ ^gAhAU} 'P8!^}̾>.'x! " *3 $L]Ɲp aXE 5$Ԑ2Ara"&ÌmG/B j8Ȑx3rD^w'2y5:D`NxA#BXoj CjE|.IA{důW,ԗjиWAg#ZdGD(f}2ЁXn/ uЄz۩&m'@LѥjBtlO7g}<|A:Ys;{bXJ`%Cl^ /cʖv뫐7h\ާ 4/unHN"*A8"Axtn., 2" HK4P` :AJ!+-먠=ʀ 82. K4b" ګT!H!0Ϭ$):a *L J6>PPx0 B4 }D^ <@#xLl Ÿ + 1 Lgƾ*jgV! }"!  C`v X  8m' @/ $)B} ɮ( ܧ0p w "4B D>>ɪ;5S p@I*.C'!!:Ҡ"K&3TA4kKAFvtI_@ ,t1ejC$#^lJ Ǿ "Ԫ <,VKa ,L7{41<'Ȏo.aIqxl%hY6`Ֆ#a" WV$! TTu$A` `u"^>_ax@zD;!R|"HA4:B;;<>>A@?F@?H?ADCCEEFIHGQJGJEIKHJGKKMNNQQNQNQRSSTXUXVVZYWcVXWVY\[[]^^b`^`^`_^acccdeeihgjfikjjlpknmmqpotnqsrrtvvyuxuvxz{{|}~~~~Ŀt!*\ȰÇ#JHŋ3jȱǏ CIɓ(S1bB2qi͚85ɳϟ@ JѣH*]ʴӧPJJիXjʵWDJYUҪM{۷pʝKݻx˷߿ LÈ+^̸cʎE2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k*찗Yh묔3qR[%6L0KxxDAx;*h*̡3$%FhHܢ*]!D{ pf(9$.%Z ho<0'k<Ûp0+1{q ,r |2*7.$h䜚 ;|#W̴pB(X-e=2JCtX x/X3k q[\ul߶zco+Dڑkָ~nܗ-:Ɋ$@h'Plv\ ^d;6IƾjeqfQ e%x#> Tb}–Ig'N#?}[46˰"x *FNYDfpWۘa sP(氄#W_ R0$_hB vFΠ P@]į§4 $$tX2, "X ZXGD!/`ugH= 9n>g. 1A ԥJVڴ@ b Єu DЯ#D\1~a3(@"7 ZЁ pSK@ `\R¢(LUф`QxJ ]_HX X d"ޚ- YE@J @>gGn`+l4& j,)h F0$lB6@$eYsI`0,\% @H"x6;۵D fpg*Y`: G/hnG({%O`Cl">` 5[\jHb&\jh+{Tl`|锷!f10 3}V6 E\&=L=&@ w% :.ͳ|¶>8doԻò@:JH)v\J`S#,E:|6\U"NJErk7łWB@ 0 P"LAV4{6.7 Sۄ1b~/U: @8hwn!8N}8۸{ߏ`\>D 9ic*T+^+E D&oQ3ȵY4r.h A$ayd4%7K(h}.myc2 BQj3)N=D\:3255'}`Vħ9 eW}>hu D_p~Ck`v_E6zPzR~] E^xRfF47xPxldh.50/`:p'Hxu`y631bȵ?71G!q$F(8"Oܥw3^/u 'hFouƑG.57M^8<4>3PA$9:e@lh;lGCqqqT6/? 6N WEYƀ֔XXE3i$Kh3?zV~29Fs`:).hC?yTh98;e5cbi=|S*3V~tQ0wzx>}^('s6wZ0(x5+YV1Ì8}"RemY,Wf>__n /TD36 kָanUjk'lPSU;`F53W81e w{opg] gk9?xW 2qWZaR㓖)`>0:\|EyN5"/{b/\^]PԈ.\H3np%G*\9t\QۙMd8ȚacI=\>0?050t21s ~VtSouI?ohPG]jKyuO u3GEV< fPvAXdXX;cNXX>s a`NL0yD|K V&l1_oC m=Q H ĄʦSEXmA ;G_u{9FotdT `\tUTvKƗKwQzP˙~J^3] 519\R{Meh%5|?7XH>^DiW}/)%5@9 1P}5prW+] %]ƅYzu?sYPNHP E["u3 [e@m1T;;t0U3EYRJʺAے@ :Y6 ; P /G{T;n0{H#[=s<{S>kpn7粻[uE*L8\1%@s5y;@x5fv*ͻ ჃѺVr+;sbh ˽;[-ה7 b?6;!L"um"V~ !\-$ _!"3†+"S,\26:<>@BJ;F|HĤ-LNPRH P;bI):`t19@lڮπ}]DP@J eSSgK nn̝αH]W(RT%ePsV6 T ύMjV5>Q `CG Cp"ՄLUMf1zCGjKp1n?1s7`:"-iY`n`@āCO<ϑЕm̪v4 kPVP]@=`@ f0ns &c_WhqDNo=0\Tħf%5M[oe^qjl^n״PGrgsk PMw]>imxN7w6W->z)4`s3ʾ o@p{3\5^Nwnsc46z%F̾>;Ӣ3P`M^=SA5\@و 3@p,?n=\>SҜs OD0JNY*?W)I4_bv5X +QYVX4G\m^. = da `w<_1z\ ~y?|_:i?h\r߻b)=_1o/?@OoƯȿ/[kO߾_?;___{E>$XA .dC%NXE5nG!E$Y!)EHdK1I%3&'ELOA%ZQ?QS8u&ZUYnCPŎuʩSNiծe[qΥ[]y_&\aĉ/f\7*%2e̙5osƔEiԩUf:aѱmv]mܹu[oy'^qI}g.p9Ϋoױys?^tϧ{?#K 4@ P@IA#0| 3pC¦0pDKDCrD[t?ei_F11G G!TrIԊH~drJ*4ɠF+˟L˲h*1SG RXL:) qN)z^a.@0 JRNJ+Hφ8< ዏT1j?RčM dS-ւ0%KS+򡋁A R F9ES1c NME|hUHuc17[UEShŐ\UBčB@9H1M(ÌE d/%HE#VxsJWjZIJ 4UJTN ZqyJ]&NXXjX#0HhUPHt H9bfBC"Nⅶ ~A$~lRpϩX$BP xaځF"TUޠxAIyCHNA!VtZj}8{fޙYa! 1dy!RfٍZlU ( t~Ⱥ@:O[ m QXAtCp _\>~.Sf:+R`JbSE!#0/#`pMw3 [ H5@" $5Pl| 8 ,!s?K;· 4 >((O pz0@Ud.Bz*RmPE`GTћ D-@. Mi">)B 9Hjj>pE}2@ xN6EUO x F8Z"A  rxAyIu፨8(; xA) 3Hb\$P $(aDUW&gSFEt*[Cg  Pbj*0 '^3Ub xD2U 5P4B  qB AE-ك uEg!("0MP8N0SF^r@HT-hS, nNEa$Gpb)>**XJ* /A)Bg L^ @/hq/ B ,#WgH脄ճyA}DfD8r}!3S9x*ry ]HU ]= <"s`y54hX74 B1P $ H!pD!'>B]߅ pS+8H|"u ph(DDh|!S~<SK@ @1,E@ X&П+0zb? +p>}?Գ?*@bA4p!(X)7ӂPx@v =.H99pJ A#(z9"$ATԫ;<M“Bp;qȿ<#X8@!&B 1һ24LP^S8`@9H\0H! P*<) HDUB$`=ElE`D?(#4(7)A1)uKPEEs44sEmXZH; Gi|K4|?ؽ ;L˩<JH@Bll=żL Kō@8SBSB=TaTDSCmTHGTJU6Eu5F4TMTTO Ux]YR4UORTTU]UJmU 25qՆKK@xDD[M\e6+H%`a]ЉbqXfA눖Zٗ.!&C1ZїtjtlVW|V *:xТQ OҁMX#(!#P"UI7{vuWEׄ(B@ɁT(h&89"@&( h?(q؄X@7h1@:P$4#J}J4bz - S9=Wri!!#oGSI@G[)&ќ3#(/<.P¹}WRS}͉֡8"JH"{+`-2(|݊DیzLI_ڄ ?xymzM@E1[Ѥz7,fEXA-AɁȁI0Jؚiqb CНI&h0 ]Cy]Vl_ ʲv,UTIx]H2ؽ)Nȣ*a8۶\\ őس>>SaEF[7P=Y=bKb&TfL}btb*S+ֈ%6;-bыB 6[7n[b>BzV(.P_@>~~#489@L8dx. c؄=h["͌ND~av5a{䎘+TJF:f-cH1cH6Љ4x}r- EPUa:4xcԃx+x(1:x]A=p^= SyrB0ڗUBL+E(C+:ЂjPBB?=0 - N;Q2=@PQDq-XyՊpB>8 b?Hf2X:pQ@Y).Q=piN r 3=>dE;fH7P:x*HJVEEPjqdE(u+9N؃>k΄J@1IB(aHpB<Ub2J؃@.ЉL:XJXJj@ip:73;;mkUB Bmm@iIB;/U+-@4g/j+T+EMPqMGR(p?/JHy4HDV/r)hq+$xCzaeBe.s'4Ů?\R5q17P4J89?w.PH/w+w-G68.p41H1z91'Lz,W슯~ƏP(86=QGq?p)PpȄ.m+B`G6)-6xRHlP9=. VTu#϶"X.hi)xLfb9HEŁ?X|vv2 @u_f%::G)!?hb.K;k{hACXO+p|.z=~.'zUGl KKJ QL*ѥÝQ>8a'edV3tAҢ?HE-xJch8Uavr8T a.!PCSQ\ T 9_D$Ht&T'r(M* ,R [H(4 y: U8-VM86M(' "f3*^Q"Ӕ.p H= WC҅V c` B*-E@D Տ 1i -) q D6iIa*لke6҆*CHtb*.6H<5 JOh'Һ B0D w~ףV ь.@-"‘¹ԉD ](t0coaJVT23Ȧ\;S  \xfK'`<ܸ qpF3u|1(n'ZXt=bWY~*TI,N@m3a'WBBj@хAw"1V&4\bkS,ȶ fY ";pPp|DU!pa/4kSҸYӺgsm>1cP ꈇئߝ1v+QA81NuL]491ۆJml{8v⻡v"g;ލYwe 9LYbۉ ?P X8؀+'g& C.3׺(FZ\;֬/Sֿ>s>/??ӯ_i? ӿ?/wy?w^r 18 A_`w rWn vFZܛsPY w`q Ơ Μ ) q~ n  !L R `s`%r$^!f!Z!-a5!@gIPj!z  u<`v!vaq!ar!sġLjgu!q^"&f" `0@  h@# "t@"axX"f8a= br]AŠDBD*B@ &>fqrxsDA #N+ƢQp"Hs<AeqY@8e%).@B@`4FdǨ(HAF' '&# ? 8`9g#T a8h@t@+r[dn@=̀Jx:$AN>l@쁟HTFG!^aJX<,,b!, {AKPD$=p8"@A<>_z!L;NdZ܋hEh "GУJ0"BB8^X@o>xO B"/B@%dM@ Bl+Pb()&@J,AX5FA"GpP)d@Xx2B jeoD$BUV$BB@pB Ш@ kAPoD+т*1E*\BLJQA~W B$G$%H$qI1q  4J, 1aR*%4O㦀>&&$H]$BB` R;KM^Al MZtm@< "ƒBPO,n  VBJmF0AD%N4WBpfXj"$4myxqts$V,h@l Xilڒ@F;04cFH5.v@*#HkH .r4[@CGpSt5'@ 2R t˒3D"Pi")L1h@>+Aj7PXJĪ<®.ږ0,( B 0h7)`sD&AP@l`%/q'x4@T2 K8'j<%xeG|#Va i8*OpjHJ<B@.fL"@cAF mpqx/3#@ Ht+NqTJ^7d5i@\*, dD2 Lm x@^@D@(+tIAic@X@&C B*$΁ (h 8+  ̀)'we 6Jh/' d@, 0PjvVLuq}kzH x@ G zA6)Hh n.,6J39CrhstG#A LˡMS]t!ӸtqؓmB$G'7[Jڝ#˄>Vs8q0rl=Ib$cXl@@4'rx@<Ws\A ,Bu,@ PhΏ#D%wXQ32.BjzmoIgr  tO,¯;怢g)3Cs>'7tPD@A+)  <@JC% RpA*@ =E pG\]|=Ld1au{B'y"|I#|(K%{jR,ܒ˿2lK0<6|4PL833:@ܓ+D B:tH%TF-KJ5ݔS,!H;RLM]VYBRUZ\uݕ^}`b=d]f}hjl}խ#XpW#o tM\>]xKmwwHU|} .SPԃ~XO'!G3,7oa:C>e"GN=\0ei>c,YÖ#1}Y騥O9& ꩵԪռ:T/O4ɬ^mlR~n7z;ն̸|_o_-zrEH%RHG揢al$JRCTA?8"LdeUɇ14TR(2@xD3(ly7pC(1!i=ۻuUPDu$^b r0>xfPBX`WIoM9pa!xx6,B@8B Q?*&BY @r! QJ0sfO*rp!r?dy"ChDb! `|PCbϛADfŅPoXjE/N`G`.hTEf@EB#%4C\fG@~2b+Gpw1 E^`E,)u]PA Qt!(&A#Kr!X"6*S&̷.p hxD1p"M,o >O.3~j`CA{)Ts :ʉ^4\=F9*fp%;IP"҉pJQ~sbG#HHaӉx ڬO𖝲r. ce9!WiZƀN GO%+X5=(Ԥ3CPօBw IT;px'!72Bp!x(TL!XJ8bxU@qZ^%tIBA Bl"nBw *RQ썢-'\ː[A&C 9>wl:( L;;,Ȅ" iFfR٭+=UpBp h(3 g^ bPE"ЅaWp06dXP| ch/t j Q)A o0%\=)lBR@4̉Rx$A0DU1%9\!"cAF2( 8CpTܡ\'R.h mhbU&4YU0 .' C "\xD !:Ʌc+P{+Z0)Pb)jؚZ $*A׆̡ L1a!o( ۿ CSMX @B <H#(0'2 .ҰBg4 j=Ez!H4 4rhj}'b/$hyf;B9.Y:p ɄjkpZ{"F9b' B= 98V'T EXr@C 1D nxАzND&@iAlqjswyWC%cVˉ+ȡ[tJ|ػ*loI4 @a6ENh!ܠ:%jumzc>O (4'!+T%* aU @^iJn$z$D ;:ԝ6a!LH @嬠@ JM!`~` T܌ LN tc `抺 M!z!@ 8A ! `Ff!@A zi `( H g 3a8,H@ iϝ -Ơ "b@!NPm ´@ v Kpɂ}@ 0:b7#|"L"(ӛJɶgV.C' "tt -RAbkrt ʲ=rR4E_ .5rTr? 1  pȔƠĺ@Ĭ͠j! , G! bGoPx"Jo(!Em@tj\#)g"(a ,( "BL -1 LJ `gGӛ@!@}g v  0Nh6Mn4MM:#;5?- QN!Ϣ&B 欠(&(-؊(5 'FW VTf NU`EU3"V/i &Q!p̿<) ( L1NnHP10``}0x !DynAT5!\ %]4eڀ ^lTBc( ""Q @-&ʓ{@=lyP-n@T@xM[59>"U" 0҇2% +  Ra,CN,,躳#IU$Go~|L F j!Cj-j 38abM RÈ(N 8'v4o ֏!ðG4 .u tĨsSwЧ_Wv&*1."2!p hŭ!(Dߊ{!w -[rNR;}#ia48y~-B}W9b'ayqW~-؀c'y3؁B{r8D#X%-'3XF?sc;i)Ar,W[؅_cXgk470\{,Q|XS4؈{C8$oX1‰%⊳)Wxǘ،W/՘ٸr~ᘇ؀xXux,}s".`Uۂ.y."(*ْ/9(&Y7;ٓ?CYGKٔOSYW[ٕ_IIa sYw{ٗYyYٙYٚYٛYǙٜ=ԓ Tt!âaM }Ef@& $罘BeVw #& d#G\ݫK`RaIa`  !pڀ|䪐&0)a+:PTr.A j ?GA `@ 8P, r#} ]@fKA$}BK&A3Bߕ]ڰR J^@H j`~aKT PZ@Z p &"B`P~4v@A~@( @@6w~T-nSd Ξ#@ a +Ra 8A @<Ǟzf@h; .G ^AT @#S6d`&?# S~@1 ̣4% {Ta* 1)<3c%U:rl8FrT9ʤ*ʕ,WI4g>j394 #m$ǏLrT4PI1sZM֭\z5ʫرd˚=6ڵlۺ} 7ܹtڽ T9RTQ&bJ<0t)DF"J:j8JU7RWrQE: LDeRhQ!Ec6A %)ܤ$*UTusfuo*9z'QG%MdDr,ԆvYnk?`*d(B 9pX)4/A2"A3CAA %8pSh6Kxll*Q>a@D* u8rH*\_f _]Ԡ 굘u2q*F_w1&y9򩂔k!^Tgzg~*$R )MX %F(ҡ rD )_tFڜ+Cl)Eq-E! PEdBCi/pAmK)L[n~1 AxǴ&*չߝKn枋nh/P?pMFJ Q4QtA *1FKpBI 3Ȳq,%3԰dk\h,!k/jD%P 3\)Z̠BHK\!%tyʳIH"@UH$24ǭsnu^ [ qCFAPR-aF3(GJ90x* ʎV✜)KpJn`Ȥ1q)]\J}vh3y /,>s sl sOnȡ%M&;TƵWM||i$L iNJ3qLXR)B3N,2=: @,ե‰NY'~֔*p ৕eM,xoҬЀ , OEbR48ʰ%IgÖP<D}9,b kH1; (J+C8'$Kl0QyU{^8kv);ʰrȸN DտBvl#HN5@TP!%+*E䃤'? ?BNTrl+_ X@X8=b/ ` sBd*Ӊ2D% hJsԬ5lj%hps쏷jRtF";rsYi|s? Ѐ t-Aj- mCЇJtgD+ьjݨG? /v4$-IM8ғt,ZJ[ ӘʔO/MoS44:B;;<>>A@?F@?H?ADCCEEFIHGQJGJEIKHJGKKMNNQQNQNQRSSTXUXVVZYWWYWcVXWVY\[[]^^b`^`^`_^acccdeeihgjfikjjlmmqpmopotnqsrrtvvyuxuvxz{{|}~~~~Ŀt!*\ȰÇ#JHŋ3jȱǏ CIɓ(S1bB0mI͚83ɳϟ@ JѣH*]ʴӧPJJիXjʵWBBTҪM{۷pʝKݻx˷߿ LÈ+^̸cʊ5˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k*찗Yh묔3mR[%6L0KxxHAx;Z*ha*С3$%FhHb*^ 1 pf(:$.%Z ho<&k<Ûp0+1{E ,r |2*7n$i䜚 ;|#W̴lB( X-e=2JCtX x/X3k q[\ul߶zco;Dڑkָ~nܗ-:Ɋ$h'Plv\ ^d;6IƾjeqfQ eI|#. Tb}–%K8y߻n FK.ÊGF*P ) vjW%0`D LC*DA& au^$t3"pN;&~Ta)(!Ұʘ `L%QX =B :x㥂 H`*:xE8A gW*$hЂ1( (LĤ0>b HB6&*رM` t@ 9+0 u"C8a*xXV:W$ –1kp.uI!Xx.VwE,w@ eQD,y7(k[.QfdRT$gR '/lZfbG`o/bԧlG aԄ5] [dtsYpyKpd;wЕ8-P*`:a-傘6)8H/ѥ RB6pL_L PH/v`:,,6)@ HST8g dW8VΚ 5FP[^U WFM+!vبiNk\UW8`zXR.P `:&H@'lH~2`*X@J TIGYNMkZ͂e!BT/2tO*^ PK C*q۵fф|6cEk69%L,Xk6P8oin8f; "afbm@4(L z7{ $p]N$<Jlu>ygmopv?eA~) us޹,Ȧ 7XH05p_=_6"l ȷv%ht2pjX3'{X]zKBiz"emfd'aWWL:fPvvpLo ^] \Yxj8!͵"-x%;`eӄoʾwh[b{Ik l7`,9 Tg(qY'֑Pt[`0O ۂS1x[A .y u YߺI/.I| #Q&  tZC}KǽON0N8V_Ӿ,/ .:-_B,LA4+{CSS|;Fo@|ʡpbVp׃~.R+8L8?5aq~dW,W?XЅ^8pj$ .W.6Pi`YgyWVh1g3Cq-f9x\ {Cs.MctTDg3_.u kvoeơG057M^ヨ8<4?3@A$8:e@kh;lGCr3qrT6/A 8N WD\ƀׄWXE35i4Ki3AzU~29 Ft`:(.hC@0>{t8ITiS9hpuh^}`qmg20hN G@/73SSVf9wXf`ga{Rna@43a`fvUI7U`sr6mbc>3klS^Y86WFzƘqj{֖+{W|_PD瑾W[0aR`{{tEˇdwc@ pDKQ.#v_rV{P DH貅9iW rХxP[EjoDsY8SI@05PtB1u WtUqI?qiPH])GkKuO@u3I5V< fpv@XdWX;sNZX>Cs EapNM0zD|K W%l1` qE m=Q 8 촄SDmA =w_u{pk3c8U4iP?Z˒P\&c1[{)Gg:173>Ȝ43Ǐ^>{9Ø9KiS>pc-;K7@L8_1%@6y;Qr5f1v-{,!۾ sX7d@#kuՂMyck"sNis<$+LpW ro:Ї<bb>sI" E.\[#kh"">8!&<>@BНδzrRЅFP\f = jesNPp:md=`PāC&OП B.ДMm-έvd kpVp^@>p@ 7f6s &caW4n,ApJ~o=`\Tf%EMaoeQq&,AoM QI+@w8v57a>扞6g.܆Q'>Aaoqka{gĽ}s0G҈Jcpv7SE g7ƥ^v889@hWcd:Q0>}aqS:0:V45]N0 Y3mq>T$00R~ m33F+I] Z0O TY_u1 <,G~xP0y2a*U9 _p[>`[/|،EN@)?=_nN ޢP m TK >e <½fA҂o,?_ OAp?o_̎_O?}5m٣K_=K.__ǿPɿoӿy?;-Oۿ_/ղr6"XA %jMFXE5nG!E$YI)UdK1eΤY͐>`C#NYQI.eSQ"90Մ@WaŎ%[YUe{+ZqΥ[](uvS!&\aĉ/fcȑ%O\e̙5ogСE&]ڱT}UkرeϦ]{չ!*o7[/gs^#?Kf;AKb+aJbKE!^0<$p/#`MyC|=L#kk h5A" ؋ ܗ-D5l~"X 0!uӪ?DD» 4 ?H(p 0 @]Yd6B|aW*Q|nH`GVl)nA}xK'HL-72aTc,,bH Ґ=TD[H#.wT1eV9?ZkB-! N,  ! 0)L  '@LRkO&&? k8e*Ag +G0&x #].yK4K#j 'HCre܄ ,0-`" ?hLE 4Ίƒ?xFv"#fwAgaEPeD7ed*ZI5RDpnh*8Q|"A H!(J3RLDj| 7PBC"UIP#6AHli  xML %. p4BGP&ZN/A Ը!Rw?ā;Y."A(L- D\:AR@>@9ˈ˔jI4!(`AAۂPx@ ~x@g+ C /99  J p¼B$( )H %dHTB=óB@,9SCy3p@Fۄ$X@*@ j";JC>S@,o#[@ [@ˆ$i\NLNE3EdT\S@#B`9:BHBx#qDjTCPࣼdGX:1?#˸Ӹ)x /JDRX -R2+Id(GHC 7{8봢J, >:z{ C<8hE\,~)I(Ȅ[?dK,$ĔC(?PICǽ<T< #/TɷsGĬaAoc̦|[I2 ԘXO0TC} BeC]Tf3eTH=DM͌TKI-JTN ?U@TQEOPUTRSMUQVuUNMY]U[TZU_ ^UaE3\]VA Vd]ֽ*օHPf5hijekE+IГlEmŻG1d YHR Wד#X CdtW`сoIml٫pis)jrwkiɗ!:H|5E}- ~-M КQ5"i9Є́8@ OH.ћ، č%)@yBЭ17Hh$9(?`+m !П1 Ec@6TAn /?ˈC& ^dҔBȖ(#qd@HMd cY; ni$RuB 40cHq8HܣZvGH M؃A&8VTv⍨?߰e.fV/\0^~ :/͚F0BJ1TST UDpP:J`(x؛P5H@&se~nGtވG"}e7ПHgװ#(;3hf4hL8]n\cAt뙵-~+<(O.CI沈؄?01zCp4<QMG G=pBP? j1?H-I p3X;QZ)Q=iM zi⻔=eEg;xgP8P:+HJNEE-leEj~+:xM؃ΈƄJH2`ʠ")3ă;p'=:肉=E:hn G;4C?bJFIO(z)F(Sꕟi ꧮFF?lW0"{.91@76ۂ.,TI؂S'/PlGMPx9?1Iq3CFROq,yb.H5.0 t,T+(EMP)61ke2LYsܖ+Xt,TP8HTeEC9-M.E, |w?()=ЩxP)Jp$ITX/LxQ+,T3.؂=p,p4GHC'DItio6ܒRi`; 4Y./0GLƈ@.+BOpRJ;؂QPMOb. OThwiޘ"X/)L y/%:@ŏEh͉?ْN~3TSʐ@] C&7 r*єJlaFb*E%x&!z+Qً}rD#!FuM}-b2ul}2$m Z@5$^`1(C$i"IV&XPH\b2'dHtpђnd气)qETTX (n^!:)5S9+oOr:q)Q24H')& IxJqE]Xb].!8'; E{J=5U[}5f5]S!ե)҇PR(lphRF#NS )GG%u1wa&HUB_]&{H\Q&@)ִ! 4F|)1'[ &'nT24]}[Wԑ7A$SQ .~w4$}TH#i*i]Š$\'!?OZAfc$',%)&W^j.Bo<CA;Gl!'P1a"[ axca~i*&:AlZŽXX.@fh(J1 hPW*ࣁ!4B$z477!`&F`M &r& x@n6GJ*)AjZ"Y!-h' ƨ5@hLbB6T51Q9w@(/@9J|B .' qfByB p!A DN* :",o`m@Fq DT5(哪\vPJa-BbKC 6I 8CP?L|W-<Rr)T|xNOa3iN}sC q.-PnP &&0l3 Qo)E)u0ހ TdA$3]Na3(GLB D#:R(&(4`bR!D R};ۮpM9 +)ӁW)a&JG1ێrP7jp ^JDv)B{v 4hP1kGs؂{BmsXPf/T Ħ@\vcT~pYSogdM+^X `% te⭠[\PcA6Cf~^/`b}"E)FOyE]aBIS"RB@] dr-q3h=֞Q̓q\!yS+d7 d .A.Hk(@8o$\@ .r3.{0䰊pgo|@qi^s|*/}sт!~r{-&7ԣ.u(ة 2 [.2u%·'[o$KѮ}@UW9.%>3xc:lHrpx=>|C/<"=ճ=c/Ӿ꽦z=/P{3>/iz+?s>_'k?ӯG$[?  &. 6> FN V^ fb|  Ie䵟 ߁ AQLX ^ b  &. A5ȃ 8!v~!N&!ahaaơ!2(aR]Z"_a""&bb!aը! " *"&f&.!#R#$"Pℸm*"+_''H x@ H(N$)J*+1#2*bz΁ @ Xb,./b%rH1*A#8H!0 D$l(HA ;&?"2H3&ey 0@v#t"8*0:(#т p H R!@dc Fl$#PJ$}08#A > dLJ$V]$Cd p Hh@6"%$L Ib@x&YB@Zl!`2@-dd ,΀p h @Y6U!V6VL D#AQ "$A'W#$& T, D#ldyd#DfkB0Ap@ ʤA DK!l"f*$a!d#f(wLyvƠ; AOA)BOx~"L$h DVA l@M$̀AECX`@ @  8b% ~)֟8@@FZBG IȨ% ,Njz@\Ʊ&AO2LRO@hDZ*Fg(@IݢHl#cXm4)Hl*@ 0ɋnڭQ(k)D"(F@j*|l@'\֦$@14&@ 2,FiPc -|#v&a'&hإ(AD "@6X&B2eB@= o%H@`:o p}DDuVs H(c(b+6h2 $Dh朲j,@//[:րD \Lo $@04U*@X@1DB+$ҁ() + ة ̀4Se 6D@l:' dƊ, ":Ekff5{I x2+H zL_(Hl.,:FL@Dk?}C)0S#A 8'zzE: iB$D#E"ͳd\M"`^"ׄFY^K\Hɉ#9FVeK)h8#>0fU'@ "@" :Xu*>.D%L<?.u..T#} #f=쇣Bj|V #b)ĀN#S/%H}=8&E4x  6tbDGix1&9vdȊ!I4yeJ+YD!Z:9*MxhPCfMK6ujTSVz2 8̹hXDyc֫kٶun\sFTk!\?4W(YF{qbŋ7v\¼P'{;(nthѣI6O~͌yPj wnݻQ];oO7~yR'k8 !yyز od|xɗ7}zٷw~|׷~l! <\ Šͬٔ 5ܐî$$>B,U\qĠJ DmuQ"ciƢj"<I| 2(*ZIͶ;+0DK& 1\6Q,3J:QΠ@=G? ]FIG-S@#.3PܔS!=TUER^~p#t]U܌5R13ӏE>AI]~ym^te&[瞍̙-+碍覝FZfW'=觭֨KZ٪䒖qiE(yYnm 6ufnܞv&~_yn%|"ǵ,r5 !OE__!*sU}riveGch~ M^H#JȐP o0P/Ӡ63yd^  < /"$Cd=/ `:<(1#H$/ E ,"A@F Q&'A 8$ ! i `T 0@R,}u" (FG 2G ) " 2@0APF>n$wJ/LfEC8(&dt$fX>sLlc2@ v<^`E0A )y^P1 1u0#4&i#LtQ'Ɂ Π؁"MgS眞0D MM $MiFYj⪥1KQTUNyj,"AO%)TΊE1&j ~NBޅ9S(Vl j78z! q}V[GfP)cI@(qk Hao;1ԛ #PއJo$ /4 xdNR3a]&.x#r@;^pĪ qQOw*h ) @z.f#Rl.n ` ,ʰ(h `ȶ`  P L~ ޠ< ɼ&^ 'ī֤ѹ*a .APa (hDn  ^vq,Sa8 4*  p0nbk A$#( bd" &2Da)оl-$#h% ⶆ(J,%b%+.(!B*("`r!RZ>gP `TBӔpl*hh`.2%2,2dђ-!٨+R.D-Eq.Jm/CpR00?;1S1112#S2'2+S2Cr.3(k0?*z9FQ3730i4SS.! sXS5c)`tJs3?6eS7!4MPs7S*rsl.qS8s6{7 8:yŌ3:s%SӃ0%"b% "3Ea%6 ;G;;3)7;bٰ@?s@K"F!́R=spbr"S62.}c{ ހ]= "&! %OA'z~VtE` 9>1>Q4Kh$2 ++C'btX6PkJr)ȿ3O4o\Hj@LF)%t-it{ ђ F! ˼* ( pl͐-#@N`A Nk ~hq/h˼Tp(ALo`vjδb t0fBΈ@! $Nl#!QL{@ b 0l k0 ٘S ` TCL#Bq/9F  lqvLA ֤& Ne @& > ^+T N-Ƴ[ u`$AOUCU'"] '2,&-PI " ROdoP` Q@ Ҏbv`LϳbVFV"J!ܠ Ve޴b H ' 8 7&>TD,X6p@T~\Od*O hm tYW1 A,>*Ӗ 8 2. ƺŖ/ dR?,4Iv7dkUr{q2 3/%$!(K) ⣎ 7 b8t8M>?V!kSWXF\Oo؄wkhXzq88exky:8u9'yX8!3O3xj%0-Xǘ،XϣWg//X=&A-TX{Kو]!Y!)ْ/ eY 7?xDSIٓM9(ZX瘔8gyQٖsQAb8dy7c7ȂٙBYٚYٛYǙٜyw@ Y癞ٞY9Z ڠZڡ#Z'+ڢ/3Z7;5tff̤OSZZڥ_KzU:kڥgmq{ڧZڨZکZwDT:AëzZúT>ZךڭZ皮ڮZگ[ ۰{":fX۱#['+۲/%3;۳?C[G1{KS[W[۵_Ogk۶os;e[{۷[۸[۹[ۺ[ۻ[Ǜۼ[כ۽[盾\y{3O""|+;Å"#(xF|KO|%RW%_G\gIo-,6{܄Dȇȋȏȃ#HQb\ʧ<7aD@}b 4ǜKE&A<\@3D&4B(1޼/E|BY\Y\4/W$҃҇C} =(H}3]E6'݃ \_=S("KP=ET':.>qa׋ۂAf}P6֧Ry"p't}.x}ڃz'q^G="6I,$f@nt)'! rov#S\ Tv$ c'o&T%nсB!b`T`1%dՙ|^Adxhr!Q?Dv@* vbaMg0Ft^Ԡ 8IfXA~Qs*z6hH 9\N lKl I@'Ąڥv^&R2z ? &tGM(Βi/Ҕ,mK_җt4MoӜꔣ*N Ԡ u,QԤԨJmSZPBuT+jլju}*W ְ&Ыb-Yj,ulm+sָu++]׼jĮz_׿ vg ,aج6mlRJVe/bvg? Њv-iOԪvmk_ vmovo w-q*wms'J7 Z0 @K@! ,     !!(!#$ !$##$%%)*&$('*+*,-.12/2-03224837669:7839>4:B;;<>>A@?F@?H?ADCCEEFIHGQJGJEIKHJGKKMNNQQNQNQRSSTXUXVVZYWcVXWVY\[[]^^b`^`^`_^acccdeeihgjfikjjlpknmmqpotnqsrrtvvyuxuvxz{{|}~~~~Ŀt!*\ȰÇ#JHŋ3jȱǏ CIɓ(S1bB2qi͚85ɳϟ@ JѣH*]ʴӧPJJիXjʵWDJYUҪM{۷pʝKݻx˷߿ LÈ+^̸cʎE2˘3k޼yϠ's]9iѤ;6ZjЭ5;lص/[nԹ-rpKN^9͡??\zu껝_'>ѓsl\ӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`)&ÍihY`jpfti'sީ|vg*(j衈Xh6ꨊ>*餔fif)n駠ijyꪬ꫰j謶k*찗Yh묔3qR[%6L0KxxDAx;*h*̡3$%FhHܢ*]!D{ pf(9$.%Z ho<0'k<Ûp0+1{q ,r |2*7.$h䜚 ;|#W̴pB(X-e=2JCtX x/X3k q[\ul߶zco+Dڑkָ~nܗ-:Ɋ$@h'Plv\ ^d;6IƾjeqfQ e%x#> Tb}–Ig'N#?}[46˰"x *FNYDfpWۘa sP(氄#W_ R0$_hB vFΠ P@]į§4 $$tX2, "X ZXGD!/`uCB)OqAGD f (ȜK`*YZF%,0&=N{eMN:5vخE@ jh4 @@=SκQp3SS#|;6neaoP|ʡp`6p~.Q-(L (?%v^p~edW,W>RW ni$Ps W.VPhi_Y gyWXhh1g3#q+f9x\ {#s!.Lb$.]{7\p3fY8hyRs~5@#K398FjN1\DІ~fy =\'<'g@ejtpspeQ?` e hMzeQ41P6AN=TwW,Sa46Sw8wӉ4U=w]+Q7n1 v&C#5^PsC WCSQVg9yh:V,/Ӈ?1pAMG5WERx3ht W3|\eXsP :.38u`V^҃Ȑg3yT@Vpe lGM`Ee$ 1'QEnyh@3fp{BEnQ@4Ca`vvVEvÖ6e_sqmadc>klSO9|8X,aWFx>ڥqiyƖ+zW{y+G{&5?y{sEgdgS@ o4KQ.!V_U{P FX҅9hV hrΕx@ZEŝi`nDI8SsSCD.s CW*Go[MGUW.W/PnpE:˒0Zc~[['Dg:17ӏ̨4׏=냺>;ʳ<%^賻s.{;^+aBӵS5g0Wcb񜽁컊p>9 wuk ˲c0!۾DkrMy."cNicb$+K`W!Ro9BnrI" %,<<#mX""=6!$|:<>@B<ĭD|HJL*NPR,uA yrQ EEPZf = jeqsN0p: !tf_Z@t0.RPMXTdw:t{DWZ>^}=xc_n 3b! 2 T O(:hD<-mǼjPsи`f $pF4,0}a7h2 VKz@O>jnX3 P LU|k^Ӹ]DV`.wh抾pqM PH+0w7v}5~a儞6b܆Ppja{g½ܑqs'8J17C̮@ g7ą^=pu'789PshWbd:P}S:.:VD5]M0 X3Mq.T$0R>~ o33E+9\ Y Ox^t1 _6,BnxP0yaU8 ^P[`[/{؋UsM@)p>7N ޣ` m RK ׼>q`+ۻ * z?bd"?8pa}soφO zK0&9Ҥ/,*o ?ӭſA(< OFm;?{\{OӒ-$XP 'ET-dC%NXE5nG!E$YI)Ud%FR8Y&QnDOA%ZQI.e*4̝QN-سUYnWa3ƤZ֬MNrb[qΥ[]y_&\aĉ/fc U|6X̙5og"eV&MahԩUfkKϾymܹuݛl*]qɕc.ܹѥO^z΃Cw1g>xկgo|yϧ_߾)˿wO? @T 4#pB jA pC; 1IK4C-QtES l1FsԱg,wrH"a뱴,rI&THҒ*H'ʥL oK0JKʸʊ|J/R䑣.s1N<JD3G(f41R)r8  qRL3">k" -H=,Ue㏣qc8ALsաME|股%tX4pCQdeTd.`dǀSi"9`Uje!E ! EWgTeZ18W<Bn9q?MtR s?0c #|ѠuބU.,WR栤 B #BA!E^~v#Xg8[$:‡8}74V}^h+BT(n<`^/H*-/HFo} b%vVAP BHNGx ^@G l#MxD6ʀDxGo23@qU/T.jG!@XŐ#AxxqAhh|1|q!>fR`07j  _E-U ڠ4`xg,ZP``E9!o +\axCjN!9Ђ*8YQ[%g5ű!Q<?Ȅ^p^R]fе !5#`)DA fhh-X325 A$T&999J$QoDL+J! xk)Ԙ ȉLXLUl?#E 'M">pCDwo!l#f*qfx!CIA'*..xIPs@ pJ)s:IGq{gκZ@@vnéc#GH8^{+h)r g{^upFfv`"s@ tU33C8C>BFsw"h!n@hC0c<\m `H&ϐB E| ~J*g{$sV<n D}ZH)+0Q4 僛#3踽G "xꭖi#Rf"Kr@3Q7["EA4@3-xK)H@ l h:}?肖#[1 Ѐ\<#(@ Hp@UA`= B5,!`9}Œ;r9=#X8,1&Õ!C3\˲5lhC`k8x>`9JlI!hh,T`) H`ECTO@D sDYH=$B8xPB@BpTkhD_T:HC(Y?E Ћ[ttcX(x .RDKX ,HG q!k<{ӀnJ#UZ!5#3S8{H4|P(GBNlp9F{I䐘̨43 (s'|ġJo#BDNotwܷKC,@{7i4KLH#.PtHƹ LA CI ?6G.hM^0O69.̉.hLd-KH1hH6P4*~yu EPUb4xt0p&GfGߍdݻ7hHH(3)e**4]Lh_;Al[-X+x+<(P.CI-j?k~Ch3<8QMXGЂG`- G([8|D0WyaP.[EݘBJE~WJ@8˨DiڄDHCLNh/ IHiV"lWF! N4p.BDX^D2.GPII-DLHh&oNBh`*p1+X-XsN4Ip+8b/8>2"9CB(+P֖-)428+q#j.1DJh.-(1r.@:Y:t>/[1PܣD`6+x/+V=h w~4P(=H2p&G!)Hn^"w)PG3k7ph+`(;/xSX1@(s^?^O/s.e9 187g.ӂ.+&UIЂE!ւ.H^ONp+r?1B2Cs@DGU+-@4 w+T+EMP)Ђ(_\11*+T7@TdE5/ 9xN.W+nv?((=H(J%UP!Lp.O+.|+T󅷂z.Ђ=p+h3G@5DIs[^FKshD;3Yq."_/G _L~@.+BPhKx- 4.soUHh}1h@zm+ #jEI)vLTp_w(Mh+Xj7(am>ކBYWn+ʽT.ȶ7UQ5@U,RU銣IV*ѕB 7 |%*:c8ʣ6#j rJs%՝.TB*ЕM])ɍw $%+ TNGR(C T&iP 'EWqD3f.;aG48M a*JC2I!׏@CR8YŚpOk\la(yEQ%l#獕J0nJtEZNLRȥx~ʊF.TBoUh&+;Ǔ/o<+D=ӯo>*$FWm…FctqZe҅l5 bP!WgkqZXr\gFGiLQV:n4rpE $MGr҆\@emCEg*M 1R Rq#ZTGffϥa@z9$#_p"GcqG UM HPw*(ixW %FUTBtq`*E&WP5Rv(ؖ2Fm$(aeNDuǓ6WC %JJ+Ѩ}&GK-U9KH]sFPp2 (y&)δaYZ!nɤh)R ! Bk`pfCA U R<3]Dֆ2kNVӈ+dE;Dƚ\ӗr!P 1b/@(1ެ=>;#4L,fKHЛIQ'fBTJµ kHd"CD@T8Vv…7Tb$/ VFR] D/DQА?G KLEJ 1M*QDH J.R3d]3tH?H]V-ZDH1:U`Da#Y6R+pA(t@&,9"|C.3+DCK]=Y .!~ H%!]%R D Fp~*[! p@Exe4+Ҥ#C` $t_du$ s$H $Fa¯"?Tar4 UA 80ab6M)/ $#jSZ21Mӣ.p h W҅ c8@6qMH@P P 1d -)q#67tI لoA7r#H+. $jkJpf(芍@1Pikz Y7V\]YPRxXqR Z%@|.4DM#>< ZGT _v‘}@KBhoo~㄂8#wa9nlz֏#E.t+H JЍj8#E+ViDh\(ӄ#tu KsUBv!rB7/# Q/??ӯ?/ӿ?_y  &T]}dU^ h< 8`A}H xW z ؙ^y  r\ '! }wN!Vr)(am &zG^!NœL" G!:_v[.||a|!Ga6#> @$6`!"| "|(F0"$*㥂$ ߘ@  '()Х|!= xP]D@D.B@ H#+jbyla,G@A^ ,tb9z03#Lzxd!߉Q!| x(# lh#IL\`t9# ̀DV=ʖ0G?Wy %E& $ $ z,AQ,l4\@IzD\"ZH99#@ ReNNdcB\<Hh,,h!, AS(=Ap"@A>c!?G]<,`Bĝf_ 0iAU](B hb k `3BjgG\8QfYD@8 "(LPDpzw(WicT4Qtb@ XA!́P&Yc@ @ @ 4[`K~\ wAcP%Nd%1h z]h@X$@, '@ @F@,x I @tA"*x@i @ @ ) l*F)E@t6B@TFd. ltG h%靊 @sx x&@ A@)ALjTv@@h@@Cn*VA$& pHЪ * )L@+aX@APB ,@,cRP]$(Ųh$茞,@C'> i~iGdB?*QB+G @zF6)H@hX..T,6nB*86oswwLz#A ;!o:xt_~gA&DBKh6Fw1z 1SxpÉ7~yr˙7wztөW~{v۹w\rBȗ7}z N|kO׷~‡6*;\ P@@- 50?#+&jM<C&Bemd ѱo u|G|$&|JEb,R)[r%2<d3|8J35WjS<ܓOl>PBs>1 ]F<Q uJ-mHN=L5eSPM=UEU@S}XZU\\uZIu`V^kd]v!cYE Jjlݖnpr=t]v}x块z|WrvTh>T ~҅#m-SbD)ύ=(AVK-喵zàATLd~>WkvQCڪ%I#{GV9R}[z׿ p͆p-o$ݾʼqE=uK_]Gz-:'Rƨ;_aP"JRCs8n!؅h <Rn4 4%[fPK޲Lxܔ1 ]|^`E,)u]PA pQtp".i&]"Kr!" BքS&'.lp ز7I5; d rPN(T @)% wh.~_.AZRbTv&UPڻS`ZSTy?1 O~"ȨM DP=tLyzR@0c<ԇ1dE}N7JlsAɌ)jW+~ M1P#%(V ^MRVE*I.\H U$D%?EU"xpD*D!Waxi3!DPT,5 ',z5"H?!2B$Bg`6MJ nU0+$B\ r4\!> q.| Nqp4dT)ts( 3V&2_> ]BB g3܅3h}8@Iar@cNHP# b r)ц. p('Y޲dP7A6]x 3?B8 .pA ohe#2vGHI?\! h 誊9a\hψ"@<" OTE&܃B K .B b ZWXa`ndW#aRhEo܅C **L )`8m#}HT±C;/b@ Pp!{83;\ÅsAyH:k"EcN]@U3/҅#3hr$:Wv!H@1b1x)аVOWO %.47OD8ͽ~s t6W3 tj -LKux1vND!i |r1O[}OS\b`r<q4ΉL"6QN[&8,0J ݭ+WC%PAWjA2ɞk ΝhlzAqwJ@_$*Q ӊ~;hk4NBVeOuU@ 6,~ƀHJ"H|=8ax y(a& R! ^ &jBT@8HA.-­ <@ 6!j ܋@R!H `Ϊ@A 8i `( : !Nk3ll~0@ 0$'",hm @# j"p mӚ @ TL Ġ Π !l -iƺ,Ll'@딋tѶ*A =RA V(6N *H1~N,UAm *a B1B.2k dqX* j Hq 2AUap Lk!@!bO *$r >^l)!i"A q ǾR2P/N/!"Y%ƀ :'M(x&v&Oa " A(y)r(/(&*қTM*fҥ,d**,9d,,rHҒbz;R.../R///$-*20"3R"s+1x11+s/"Y+2-33F37,3O3,BsF4)F5Q65b2!#6o3)f j3"t7#|Xs3&^0$"`>|ܠ)Sys "8 8!HN-!~x:3p0!s>n!S! @Z:р"#B vSq~~B)!363"C P@@iAk CT~ 7J$-zV$}$#k#ȼ 0!4n*(jI CCaC? <1 @Vnk ~ q ` mä,N t H`Ĕ"Q L#~ It@l)J';R3B ֞@#! -$#S-`7y=iHN Ӣ&" B €l&^- ˾lu,l$"lKmXf U`BC'5Z%bZi #QaƤ 0A_-%) L6&TgP||R h Sֺ'`tIT!V! ڀ % $b  ( 4 2&t~AL|@UsVo@T {hq3 52!) ,  RazC,rt3'MU!(5~ !KIU R$ IK6o 2bnn3@X!XoI{35xYRi'8eأgkX>_vqx.؈X؉3[x'xӊO8؋9XA;XʒӘE3x58؎ bXXۘ8Xax㸐9ٌ„يV qZ[+ً%499/9>2YA=n!>4/3^3\Y)&ns&j{ٗY٘Yٙ٘IIa @ٛYǙٜϹHיٝY癞ٞYٟZ ڠZ@nH "Z'+ 3Z7-93ڣ?:AzOSZW[ڥ_cZgkڦosZw{ڧzK#ڨ=!.z#ڪZګZǚڬZךڭZ%\ÂZگ[;?I[۱['+۲/3[X7۳?C[GKS[W[۵_c[gk۶os[w{۷[۸[۹[ۺ[ۻOǛ˛c[כ[Ż[?"ۿۿ°#+Q3;\C\˷\=$$%/Ӽ*DܮWXcC|Oc]|υ@Y"[ߜ% ݯ }C\7 BSO(]C,1 S]W QN+%HD+, 'U"bsU+[6xgc^HGh!8)"f@Dt(r=%v FBo+?3׃;`@j~@l~ "D$%Q]`T@*}? ]Q  Gڠ]bz'ڟtR!Ia Ǡ  !b"g#v˩uI ` H`Zd5vTa&(a"HY~ `"p#!B`䠹! |dLaTaZA!:Q4=A+x "ݠ`TT Rf{^@Rn ^dqmց~"L`~4y@An( @ 6az_T@2sSd ?"$j` a 0,VWRa 8AT 6!>iIQ.b*5/~ CUWTS5m""c$U2ȑ$I$Ĥ,[d)G6 W:*9RTQ&KbK<0t)DF"J:**}21k(BG!UĉlC-*zb̦:L6L$D^QC* q=YgU[8*ȄI~THXVc4و&b*b.cHRv 7 5mikG@):GCCAA %J*RL81KG@?p[%2 B5BJpߜ)Z5 ÅXzZ#8J~r8:zLJ%thH-b1Jjj s0 I*TBJm9ʐ /p*LFZtWbII8|0xR'R;PXS&$uE Z IP[PyKx:"!mLrrDv./f)K(? qOLqI 0Ԁ:G? Ґt$-IOҔt,}Z ӘԤ/MoӃ469A;;<>>A@?F@?H?ADCCEEFIHGQJGJEIJHJGKKMMNQQNQNPRSSTXUXVVZYWWYWcVY\[[]^^b`^`^`__acaa_ccdeeihgjhgpfikjjkmmqpmopotoqsrrtvvyuxuwy|{{|}~~~~ecclqoV]bgq]cjjft^_ffl~˽¿#lb$*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲF0a"S0]zsϟ8 ѣ@*-鮥K:TjSD":TQBTlRf}e*vOu;WnZwŻWo[^Ep_Ãv5lǐ#KL˘3k̹ϠCMӨS^ͺװc˞{bͻ Nȓ+_μУKNسkν캋 O~<Ӈ7#~>?|~ }W{|q>8\ `!~ء8!Q'"+ע87rX#9ʸ?CXGڸ$/$UiXf\v`)[*Ihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*ꨤjꩨ꫰*krj뭸*j"kkn6lw>+V;fnmk㞫6n+/kYo/+Kp'pp/7 +1: $-f=+~'4p($Ccf>Fh v/ng1޿j‰GA<ړ]O1< @&< L`p27! e%6uDEZ 0bfGkׁو_eweUC;j)ضVg8e:6:a e;t:`P(9Q4PqPu]v0 :Pw=0:vD AE[~S e &b `Jp`xgA`_y6"C^5GDd 6pkphZKD@#:@d5B\y163I lh CCe= =Ql{ =0 `O 7# hA;f45KjIT++ *㛶@h x3 0ky16=i2tET"?ItAYtJC>&T EA13A ?)v1(}%HQZ(x>28iq-H\#[rmJ#!&œgZ&P4Diċ;4{A}nDE}4}LNPշq?R}XZb\b=d]֩!lfnp-h q}xzs}u{؂=؄-}m=،؎=]ؔ]ٖ}ٟ1٘ٞٔ/րؠ}ڨf-Cڋfڪ۲=Mٴۺ:mЁۼ= ĝʽ m΁=ݴԝڽݣaݠhyNpܽ-T:P@pNVnq@/w" Oߙq ZTb5 0 0\ eP> 5x pcoWQȞqpks Fd/yc.EXB+)< 1SkVX w|۾6fIdVԩ !kp@gcm~xg>o7 *oo#a= 6S^F :w>Ã]@SJ#z $V4f@SGf^ obto|b XLrNOPOX9H1ib ]0Xd:MdJ7;_Sm_ ۛ1 6^mT`WO P0_JaEnu?w E>  p nŠ`ȿqO?/2-_ÿɏsa2$XA .dC%NXE5nѣbx#YI)U6lJ^}YM9uOA%z0ȗIld̙ENZUYnUQaU6 Yiծe۪`e견Ly_6ҝK6/f㞃 51d̙5oK+/iԩU:tJK]m܁]^;'^n)}nsѥ\xojM._yտ /$yϧ_4(?C?TpA dpB +AB;2QDSTqE[tEcqFkFsqG{G rH"4H$TrFDrժsҺrK.J޲rL2lK0CL6t*4$l7Λs.:O@%s5PD PNIQH\RL˜,SPܔS< TTMMUX[ՒV\blW`ە7r5Xdm׊Xe3fCs$_v[/^v\rv2p-w]v:tŅhÏ\S\ ʂv[9㭈 !tA WD *#Q EGJ4"!d/J8J:&zN1|{>]F2rb)ÐdG8ʘd ^CSu W6dDCNdlhj7AIpҮy1DN$ؑbFW N#: v42,ehqd~;,Z(e^&)}/ 2 hlp%(Bqb%TB"ha'(F thFIz%f*# `0 xh G"X h?2*0¢a tPhyA2 +(/QA b`v%#LpCS0I`;8N!@N &-*`l0SŠ  }иb%^G @T( xo*`(O 4AGQA'!I`1n04Q "@ ꠎk,b ;h8 eA-ABC0ȡ 9 1B/5D\W:bD'̐F8!H81t4,`:: XF2* >(A b(!8S @#!g!w#bC1# ) F6h AĠx@~A R[ɝXz "P-l!x@l Z:4\AJ,䈽AҋII!AE#`@ncR%HhP!6$W*TA_a@DžUJ,ȉ @lLh[FiF--UL%kg"'/}.uE W @0)$`D1^5%A:Wfc37ˁTb;HCɋL< (4a Dj7@NNHVgS^ ę4D KC̢E)\NKX+xXBx|-c f & R~O@cI8.&Q኉QB DmP"v@D*`e%,@@Lb.@$8 C>THXXTbQz^O)EH&RJ,ԁ~uP@a® Y4$EѾlj2a}$DsDg97Ѩ_ LvA ՁPsױbO|3d|멄JIH c#ј+6T Y+JBh_C 0@l.W]^p!'2H:\NՁl'US[ߚѵx^A;%%n wLGtp`3og\w5qmqIy%r,+ʓqupJ>/ zH }}NNǚ ~vC z{I];]njg|վx{O|w@MO![P f'/@^wRoY8~'U4MSN^) a^h[ @,_/տ Ex!4hUG|pPj*8Uy3C:[`BG輪;s>غA2((-P*d@l@vc[=>J8 8387S 6z@DЗ-`NA- #Dk;;I ĞK - ;-#>CP-D˚\5@@)ADG)K6/8#+ Q6$DW$ C >=sˆ(#8G ЀS%hE%(a=#%R>T ,WƊJCa*5Ě%X(ƨ1*FiF@hF~ ndӁF<3#(:FL\!8Gh{$Q~ < (C#.[Q`<=Q0K 拃:S6<:b=8?|JNNxÿ+L˻L5;*p (2ނSX (.J?ӀE{CpJ~Z70:LR\LQpa\,$C8;8МM]bd@ұ;Dz*Mtl7l;NJЂ$LN ,T;NdD;#2$LCO?3#DϪO/̈IMC@mB,v;O?(5tP  Pu =-QQY4Q }QhQQ QQQQ" "MR0 RVR%}ҨdRk>R+PۤR. t. S#RtRS4,4mӏVqS9859ӌgS>F23>ԇ$TDmC %j{THTITJTKTLTMTNTOTP UQUR-US=UTMUU]UVmUW}UXTτEuDMZ[\U_-^Ua Va#b5?e[MV(=8u[V;D=VDCVBVFAfW%W]5EWuSvm;}WxSy6W{ES|0W~Rb~]VaSUu@E҃E5Ή𵾼{iX ؈@.hGr\HL2U-R7W^#(CLp%kW%*HrC* IN3S4YHZi=>Q52R(X[ 8 $m[{b5h(i]LhW[|jLk~xB2<7=7 zd'4)ׅ XZJO>]PQƊMWX.QYee[P\br;^&&WYW܈^`b1fCtGY2o@ t4Ap28fJ*fBN(l u )ciip-(}L1X@fЅ-HBGXXfP88B Z+ڜih脢:@H$WVW({Q(A06拖~QpCPChݚ6AЅЂd]ވ^]9P,IpK􊛓97Q1Y˶IUpQȡI8aaq/qIV"L!2SHIDHK)6H a(\S9JpaA<JOஶreFf.EІI`TȾ븩?S^AG^6օZ88MD~_I85*WJGЅJxKT?܊N0V8 l&l4 Ϟ p ^s;YQ ߺU8VK_<޲^0S҅B(Pʎ Xl1/hSr]q\Vq^rQ$&B*0W8-h2/X-AY(-Ŀ-3~2F8t<2؂Sp0tE -@z-8;jhFp]0/8*7Pth8/Ax-ۻ2ЛBj-/p y6nނC88-HJ3/A(*JSYh;B*P@BЂ02-*v28-8|A u18WpP*V7HBx.Bp*2Cnbp@8.ƖI1-X\hY8؂ral2Hr*pBhb@go1|/XtN`DgW(K*stOIt@w|*hN\([A8APu>378v+Gx-@-nLu'A6MBHv7-ЅWH}hGzeA-z1JB2hA 807F_Oz]xmWo*h^0E-[l1Ș@Pn*0sЅ2r-H-З.B(h/(A`1F2 ZNДq4 hq K)h L0hƫd4 GʼT2 hdR&SǠ,iNNeZILPh8*4eSjҖ E^QҙZqފ Z-&JL+/u%FG6ZUŎ$x2j-S1bjKEKJ$ɺ E(*}8[(Ybf˨+r QbeB $ 23GW EVeJ(펙MwTGQ;PP[+ w TH#tM+Wb &KGl1@g8y 4È] V1 '^vQG5x#9#=#R Ey$I*$dGňRFL @4Lq xTPA\Pn(ӑ(aŚn@zHgh &@  2C\A XR "k1tZH+iJnTH!>tʚvTX@Ŕ̥@ n$Hqum+^R }|X ň!i Hhgq)^KA}BZՖ_^3H2@j 0 GRF[,Ƚ)$@(l0Mmvl%ń]s:P&ksHVS!ɧJ^ubW-$9J j0QQp.v(Cۈ QfkJ)]A"y7}M >8H>Lr,3LrgxZ bdQ-ex5vv8&E+LuZkTAe ֋}@A6 i>i0^dҋ.jsF!Ui=skH-,]S5I-qz1d,DJr۵ey8+y)HWZE}aҵ[EEP*0lE*&a- D!:J)zQ`(#j\҉A9$dQļ8ZkYbDfܠ0d9g1, {& 1TQ*p]UB 䌁Sґ;8gR a2dZ8Ba"hJ ~Wr]j6h`GR$(C)ʾpB7A y`Ff$bCb-D#f F6Ԩ/Qܐ`bZ`bM$4,Aw0: weaZ!FexZ5nSMlLYp߉S`;l x}CIY81((8a;0'-&q8@A1* C՘099h=ҍPq8I xT\^#(62IΣ$?8ph4uN9¡Hr;I県ѣr'6}ӈOt~nޤatӔ']W ;9Gzv+#"[zAc"43(r_s?ޝ#No/O? wws>/ /R }?/Λ??__  &. 2 `_h$dn v~  Ơ ֠  ➍pB !65N!V!jю`:nCVSPB@ZEbnˆBb.a(n1@Cy0R*G,%!*4m/`(n $+4(A&c!@i# `c^\'-؊cT4$,(@A_!!@N@\$) RH$A*A f wlFdI~G'ѾB)h'{H#uf/88j몀QeqP4#d֘#wЀ0Rn,F/ !A+i 4c+^)C $h  ̂:t@p:@D$Fp)dk@@I !D@Vpد X#cD-T(A'ܮT4s/8 xӈ(t(F~XRbP!rT8.iHVHH@WLB*@(D@[Ycȷ&TxΥ+@k,3^_.w@B $*Y`B2n 0s Й/E'\-4@D"^5rI@X:B#0$:͖. l L @=;B3 87@xC'@ 'dCCC ,sx]kp~4Ph6{| |@X2ӈ ~Uw1HxPo $,B{G+G{+H%[ WW,L;BH/tB,>ame e]{+xm f[\]0 J>-S1tIH\  g7BЀ Q0w>_7c|rHcⲏЧ?j}B<@00D@Mb4xaB 6tbD4`dH#I4yeJ&=,VdYB,/c<ūXPC5zibN}lbT.zk֒xilXct ,ϑ?u(Sdֵ{o^{;ibBzU+-\D [,c࿓)W|sf͛ J^xX,hnidΫYvvlk#ҊO+lÉ7~spE tpPYv۹+#7}zg)GXr*BR7}V~ <\|% - 5ܐ=!8U\]?k?[uܑ!1:Ҩۺ$\&jH"s̷Ԟ,r(H2<Ϳ038圓:s)Q>S5t)8=DENP) =E%JjGN=T0RӸ TU]աQg,(NYZu5#O^}\b=`Xd}Z]h[٦v(Ypږ۠M;]v}x块z|ݗ~%;-\WZ-5ޘ=EM>U^]~eY+օ&ZۆE9餕^馝~ꨥꪭ묵:E>^~垛[1g,ʉ 0_%-5ߜ EM?U_]em}v:i&ሀVf<襟ꭿߞ?_域ߟg}hCь piC=X)XA ^9A~!IXB)T YB1 iX Ft(X%cs(XD#ITD'>PL3 D{HÄ}1aXF3iT#*Y@:xe;Qxc;1x|T"G^1TDDB0&d7"{ UȄT))F 2IWICDR 凖^CDQ7,H14XJ%$C)<\<*wYAPA b `8he2YN,Rij& 4u!@L!8Oq:sJT=MN~L@#N*͑%< "- B>Ph3Gv YC8 2!&MNyҙlriF72qȩ8{T姭 .:-jԠ)dWl SZVD!QUmR4!B 6f^GVu?lQ)ʘ Pd|dׅ6)CjQkS*4 XBhR?LTbr+4S ef0 χVeYh6"5K e%nB{BDu~EHua6)ycMeM:UIrtmIVM}+6Ρ&y,LJ~/v7}p2"\ wfI,촑0Q:a%1jb ś/ f<A\d#IVd'?Q\e+_Ye/a'6-* 4q\g;yg?Ё ]hCщVhG?ҏVä)]i8 s8TӬ(>SթVYjWֱi]k[רV8NWp͠%hCcVlg?іAȌ[.%F5~]nsoDF $AWD]o{V#Zq'mjqŌ ݁Ò|74^p8½pK67;=Rgƣ)=9-ʼn<1' [K2y2sa#=/+sJM~$:8gt[O@C81 NAXl#G!AN28p 04wPV/ևt::PAK %A['bP(J#;Ae)`پt!ׁh0P}O@Ơ0PBLT>4,,{s|p"0 b3؂ Q (РԡQ &0+hP?Mļ^ov *AV@ $t@ @D/:!/hhďV@` B~O>dtfA&)` a b `f a` N0 O jFCF` `NF 1I0 pa""&zb\G1= q ӖWULZT!gqohQ?'.nRzQN˄7d;m@1NQ|Q06..1ѱ.Աّ.11-q,6CD R  !R!  ?bcA "d x= h"7"CrI@RHTC$SJHL#U&%#%c'}d&$9%s(sd'""&)c(&)2)/`  n 䪴!At:UT !^EcFsPQX$A@ `Bna &!,d X`  NKB@uAKC &a 4>: N/ tbSO#ڳrn Za N LMOT @@Zn hOB` \ $B Vuv`Юtb A4  a Lz\ @[Oc NB <+]]M "@*u2xA He3 :B"5;6rlU ` cpJ Aj+FDJ .!< ΎJîCM!D! HDs btUĀDA 5oooQ ? $Ot].g+if.! "xvv_Wf{zFBX|{}!b|˗}|s%|b}ۗ~}){0~(Ws,MY#5X"4={r"d!/3X7;؃?C8Ao!ɢ(wc"S؅b}_DOkX"wx,z8wB%+p؉W󉧘o8Wr&)x؋%Fio8pXxd,1X8ي 5 !e<ܥ٥1&+1 3Y7m9X(RaNSYW[ٕ_cYgUY;osYw{ٗY٘YٙYi3aNaDYYFӹyٝϙ9ٞYٟZ ڠZ:WX&+ڢA1.Z):7Z%BZGKڤOSZW[ڥ_cZgkڦosZw{ڧ]Z({ҨZکk6ڪZ"ZǚڬOZךڭ9㚮ڮZگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[MëW۵_5ے1&9os۴g{u۷w ۸{"%!z;{("yyAkۻWǛϻ[۽¶[盾b\[[@*d"\['Fܺ1´/GħTcI(3/>c\ƑA9^bŏƥzȃƕlj(v.zg|ȓu6c}$[|{q;{dˏ:|WX01OƜGʜ(.{Z>̐r%B:w3U}<7O  `Bg9&@B],7$h@`6]?r3&\f+h7\ף"c`l `RJM b\!F֍btEox$8614T?" Z%ž8l=}  !&N:!21ϗ܀6-_Kt V|b@ la@Q")fFV\> & 'B·9DJR=Z;dz!Z֝Nٝ:LiL ``h >@l`T @`fd!r6#Xړ=L l@ VcN!EUB Ha`2m` B AT f@̽!} tMAhA?٫7cr|Ox@` 8v` W>^<[`d>сs 0,\aL !p V@BɊJШ GEWhИm @+Vy2$bEjA+2%JW"[h$CdRP'eer)˥]| 5ԩÆM5֭\z 6رd˚=6ڵlBscI(2 AQa@`88)7v05Kb+ej)t)/6bPcF>BQŐUJ tG#0&A2 [@1%IRY&yVCLj-OS BQB=_-Ԫۻ?ۿ')S$40[ |     ;E2K6T,f6 $Ci`AW-31 gxd$ۏ+&ݡ a 3xGG˝sQ~!&I% gWxy$J!] Rz_rIgvމ{DSK1T֗ | BێhDR+`ZaƦdIQ!"Qaa EtAy10LK )jNyRITBe%" 4=ug4Ix (+4ngnm~ WC 6,!QhF[B48AEq/@Cj֦B " N6 ,X @S 4l!Ч4`[42 e:esB3,0Rdžb 'E2'5 45ɪl^^NMuV_XCCNT, SF0lam0PRq84) Jds&4yTJ8'H@lA_^ID6Wˉ#2#Y;!2P^T1Pg{|ZM*+.O/r8K]n,V74THWR |:*{KBr pq dd\ֽIp҆ j?ܠ O ,lDp4 j0~+a_X qD,bTnh>*f*h(JqT E5XYD!0qv*aϸ:"8,{c[ŧr@B &"9I#'HJrp'"hr'? Pr,&PN69A;;<>>A@?F?ADCCEEFIHGQJGJEIJHJGKKMMNQQNQNPRSSTXUXVVZYWcVY\[[]^^b`^`^`__acaa_ccdeeihgjhgpfikjjkmmqpmoposoqsrrtvvyuxuwy|{{|}~~~~ecclqoV]bgq]cjjeft}^_lʽ¿#lb$*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲF0a"`\xSϟ8 ѣ@*-K:TjSD":TQBTlRf}e*vmOu;WnZwŻWo[^Ep_Ãv%,ӳǐ#KL˘3k̹ϠCMӨS^ͺװc˞[cbsͻ Nȓ+_μУKNسk]0‹O{O~=ߏ/?<}է^G\(1AQ蟅I}|6X8).xb/b3NXc7^c!n#=c;X$Ax$KݓPF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*jꩨj꫰bJdj|Ί뮼꫘*{]&lF+-Nk؎Zmv뭤~+n覫.~nkowޫ2o,nl qWLmAkٱ .čL9r,˔Fv3R`A$ +$019L,r |Kd>34T#C 1#@L3@\9@)o,3>-u|[m-6ox ฑm6ڈ&pk_]w^7}3@6p6,Ԡp XinC |/̾mNxd-q&ssߏ&=DO߽v뾽p_W'oڥ$';c6iL2x4M 285|Gfd&01wAUp{˜[hq0) OdTA Pemc.&"l@8Ȃ0X@R ^0M"h`X&0"`3)AG38a#gPIA ^1"b| r< pТ@,.d! | +`Q Rmހ7>#{<P=cNH]IA7B Sx$+1m``ࠓpE Vp*0 qBj @Ј -,f0!K h"Vvl+4]Ak5@a4CRX!8 @i($ YA$iv1YHa $Dt7@b :n V Y>&*bH a(JGjhmmpS \5TH1ARJ c*D%g azF$'llM4  ݙ5$H.]F4(\<` \ȁ p@ f8aL) 5^ȅR*K]`iIX @^ d-KpvZ 6\jXv[wM68t Q@m HL`[ӞctYNpP-bs;n  o\ Ft8v>KVH3N2"DNK-Fg=$N4R,cE~@%dXQih( ^@r3MACe߲,$t- b욣-@P!0d𖻼) f0HHcB*9ن @ P V7\ ! rH*EI@pl (@ XPo{(XN'a3mx4\!19@so 4:YݍGR3B=Nx"'E BKE6L惟ޜm 2#CSm[P?C*{ _cGdt1&5岓oᖷׇMti5>X{d'DQz(B)Iy wQEQ @g0/IrNC6` Cx,(5@i9MЈ0xe`s[MAiUG6~.,^W#hsO gQh^zgANАzi>|f&8 lou"g0n357?ޖ8TyO E DpKS@:i|vWx3 !o CUm;yvEzZ4=>cc7t71rf|HaefxI{o4CwBAqS1}cAo;Pma|P PtCRЕw 77-C s~c7 H@W38wSTsa @p;e:%sW'DdF7wtrASu.8$r$z P}V6P428fHA9XeVpCcpJS@lVuPD.6@^ g_^g~ԅum~S6w4aR xh艑CRA#ZJ5cR3Pdx\ =t@qXǃ(c5>)3P@C;LHc~ am7DbG0nR #ax @P k[=(0y:A t8E0TsYh08S@;/teѸ3foZ6T8϶0q=eX5m GP: Gcc> V$`n—}PCCP@C3@bDv8ȨNPAS}9=\5PDGrX}sfkH TV @?SَJ lg :dHubc I[2Dax\k {jfr:X1iV7AE]Cd&`PJDEp r^pq0h[Wxe%gK&9 (ǚcqo3j!yDt39A0v^ [ %]!ETvtgv:asjYP %FrW 4tpTL  P>he:>S4pgK&5E8b5 cF:2`\ YW=$\KtEp Jqݘ\IbpCPb> ?:Py@86^C*P 0Ma4D @Hbz0 WY5$6S:fFqU>o>[%9PhVhV>E$Rffvx 7gP rvUw3T=U*17xKa iSJ85hv)5_a~qU`š8(;aObE8cp:F68a :tu:OP3P2{%\Ŧ. X%FS ++^wMR9kԳۗ80 `' I`v>;A _tƯSI@ `ICz>E&69 gikДT ZuC0f:04p;c\ b0. 'ckkph V!{=C=FJ[ w= @F6 kSe94P;5C4#Cx +`fhkw ˾Q S?޳B9;1NBsA}O9t쿫= B[Agl?ÑȋupAA듿cF"#`}1S}=1{~;*\+>Uc$a7&hpgj%Aˑ?L)<:-<@R&SsUNU$O YnW>E}al?U@ T0QP ;A?I">:mڑ ]x'd&k $ &ٝ0T@?7NB>r@ܙle;dP\PyP3SRZ@Z+w$ d YmC\>Dn&(d g" 89W^ UTlHW HޖTho>F^H~p@x  :;%pG@90Y膷l7` p[LTqs~VVVa0Zl>1Rtaf~6N~n-UVhĐhx' PN|gv hܕ%n )o_A1P  CV + |lҟ?=ڿC}aB!_B_qԏ%~$XA .dC%NX1"RmG! &2R,dK1eΤYM9uρ5$Z#IQSQNZUY M5$RK%[YiծeےWGKM]y۷۸pvaĉ/fpஃn\e̙5o~ ٨d7&]i?;{& ԱeϦ]j"]moŝn/gsK.tٵo^|zG"s'_޿o :zW~}{M#3@L(*PA#0>pPeC;CCqDK4DSTqE[tEcqFkFsqG{ĺ, 4Hr:tI(SrܚJ,lJ*=RK0/. 1Tsͱ4RؔsN:rMsO>esPB mO@yPF-D[QJ+HRN;L=BSRK5P9TV[5TYUZkuS[{U;\YU)^5XlXUEYhcS2f75ZllYm71nZp*,7^UH pxA V@#P %Fx8}:߄@"H(ጙ&7jM*^ e/9ߡܸ""1QIHbahuKycHڅ7-%NViiBP!M~FiuqE~&1]EfPH:8EM8o4q?bv;zݮFbMΨ1N%b4f-82~b]r|"aa$RpB!fК`&| pagB y$T^ dv(!vW(?1f!Bf p0g!x?xA" */1 E `u%p`#LPBKA`b9dN]RvF ) XjR`ĘA |x$ZFD >D(Xon)^$O 3AGP?#H@qm/377Q x ⠍c`g0ap |Ex-1> |Ă0/ڶCXԁSE=̏D(!dL+^P8E.Z. {򈄮A!| 7`S >c r{F#`B*# ( Fg  @8@|1̀ RleQ~8!0,d8@jNb 83XQ=[H,=AK%IH ?"^ fbJ%fpL!5g$7)LABZPǁUCm, x2kgYDg&V/%mM^Lwc(Xs.,@&SD}/`;b$1B $~' Ձb)YTd*A *]e@H$8a Q gT:dfYdcAJM(VyaIN* Ę$D ޠJBµCD)\FIP+vWbwt" X6TtN &h 2}K?CG(E."i1@yaЄk}!׵6>) e%C,?DB-@ ?R`)@SBITxƱ&N* ā|q0a -"AQhJ2`E"B:Dc@f5[+97u"vfnM v e3@2V}ڳ{eX%AD6YVwӈX.bBkWaůbasںhKِAvgZܲYيq⬉x=~{'9B\:Fސ\ujy\RX \*P tC`zTZ hz{H@~OzygS@ @,{Gb{.v|g's@yS:ܽ%< x }#-";-ʤI-b @/>$gH.obEm@(1DvQ!30SF|83pR{ X3Ru3 :+ ?ȓF< ;>:A M!@HIP?H)A\T%;x׻;x:##(c0x)8BrA!A:Ks;H`"K x, +":jCH[+*C@~2|˻@?8H\6.x5\#* I3CT @=;ˆ#4X R:E$()="$Ot;|Qd TF?B †gyѶ+꿻LˣYLP`]H)$B7LLM@ϱǮ:~TM ĊЄ,0ʂʰ#J?K>u 9> TS Uf;TDMTE]TFmTG}THTITJTKTLTMTNTOTP UQUR-US=UTTʄBSA}V}UYXU[eZU]A<ݗU`}^} V5%=5V`EV+UeV3)VgRfMijuklmVhiV&V@%W5qEW#UWWeWuWxTy>W{S|W8W~]\W WZ*?X@ƃҀK`E ݢJz؇8'"CXY,%Y}ȧA9QْcنpHمyF`&a ^#%$h"g؟IecTچcZ"P"d$P06AH$E0K"aR !(#6xH@" c.[ۅ(Y?B7@F(ȕ@+aJ`e!-)1Z+!1@фxW҅Ub!!`'‚U`IUJE))]Xu;9剅1[5)=m։pYA!Ƶa"EB,(Ĕ$6 1,ļ:b\%M,J6V)^"$K`$xZV$h%c /)X`d`z aP `#쩁U3D dp>{!@]&f8'9e{\PgVplgK̠zRu|A;.m_9ɛh7InJ} TO8 M+[eWQXeeZ>Q[n^sn;]%V~U]V| Y_ahb֓\^'zˎ P`Ή?d1;As@FOVi~^$)mnHHgp^1vf6x FȂ1P0HBȅ,BF(DUfH7(@P\ Z+ڜg؄:?(`$~ VVV$kgtB(#Wi02:ahb?ȅd\ވRO$H`AZ?P0XHT`PnHa؄^PSVIpXPqM Mxd& i68a\ I)Ipa1ZM"@H#;H(.dЄ>..DMvԾŜ;zR@lF]6Z7LM0VHXZM`0P\FX8#剭لIYP` l VpA]Є+Uj TK\,컞2^ RمAOf Wl8r:~OPH@O()Rm`S ``UdQRE -υ_Ԏ\!HPrjjZ%#7,P.P?XxAF18?'_Z,1ȂR`/tDH ,x?H,t, _6,B38X)x6$;.?h,@"{1>Z).`ui&.΂B87WIp3@)IRXX:>)H? ',XuB?}Wz?B:UW,3`?8w)?8?ExU6wr$#0HE 6x.VX0,ЩgX7Ȃb]:n1JO] _K6)^v|P?j_b,@J2\ )x$;)vEitBw)hM8dBdHR80`fW+GB,K'@P&P@?`\ U,ȅV}kzdu@,x0IA(UR`_X vυ/^|QN/G,p[0|GIM8)8sȅ1{؄,@bP8}VxbzH.y`c|gc6=K@",Ri`XM!lwMI3@q2KBr)M&b+KBtLnM`B* hAHYuֳIYL! Y0*DtE8]e3Zaaa*.d&&YjdF\"d$󘈠bz)GEK,.YeEȭDH Y~(S@k%].%QgQbYn+%Y\9%)_2j1^z^VtJCHaA+HA,RYϬ)Y5].Hc4t^$P2X,'y~e%dH-c=#A 9$Ey$E 1M:$QJ9%U#] 3D10c^U&2s&lLC|![t9 =S |-rL E l !/"A`4,\&}*<3 HT tk[]A2&Xg'[F$Ɔl#~py.HKs.u-vez kϪǖ]q ̞JW(m 2x\cjf3l@R,$6 V#kJ#Ya]rj7ci5 ዟYCHPCѢm[ bgXbGɱX.u6=^2e-f7 >8A.i%+%WJ$pƒ 1PF!&c5Dh=-ܙ'laJ.}X|QdjP)pšT|x \Ĝ!#,tVC_GB0X0BK#Q?V2$A NÒ ?*SD+ @/oV j\1f^*R7(cMYB0~bjHzT nъ0TMyلdžuE9iEtHpE,ΰ!_vh "36D` dK[wCq- CvltV$͢< %B$v?EIr9 3±|YRJC,@=FHA:V,FpAD+NH[FҠN%yD*31"o($ 6!Hx>5a{ , ||PAEsYXD2@; Rا쒦 #pB}Q  †(Rp"gl"Q;Z a(Lpl(g \`TW ! ^HDOY1y%'*Vi7t> $ SO؀{=6!!5b!_Iq`Ob~m8YʋCS1Hu1i\a>q3lC8IF!&7~:&6VseT:.l6 lpGbQ10=#=vK$c/%R,Ǘ(\e $g8o.VO1)< 1]B0JǭYX)rHaBcx+ӏtChW-ӽvn%aE{+^VA <eGCһ Y"#C/)zNzA#ُ^Xlg/#\?$c>`qRgpSֿ>s>w??ӯ_į8?\I &`_ПFN V`,*IE Ơ ֠   &$.!6>!rlu@`ܞn!vR`,&3haXa`!!֡1!  R f""&"^!> NI!H#."'v'~bl=E"Qb%6% (",Ƣ,v+)֝)N *2N+f,0֢"b*"db#1N#5VIc*!#  =(2c%:@#c`5#<ƣ%6㐌 @ B@9jcb*b/a%&H"+ +e%"!HA| `){Rc) X$+B20hB(B$b00hBDlB%. d D@!+8gĒAzep+&'t!'CtT&!((E)0g A{(Bܧ0 @!P.p VB&gfED&EBYBta  AY)hy]4sƉ#8Al |ԦB#S4D&@ @  8lF!\@ 7ff_叔BhX,A0 . @@,|@ @\E E[À <$G W>C ||K\ xxBt0k @k$jx$TK$^6, l@xG h@,䪮 @Q6B|@ |#@,@8+!$* Xk`3h@X@@e(X 3:0kz (@L,k ױ,CCyL+1sQ l!3b CZf (tR,źFn*AVEzJ>0%HdfFͮE~RD.1<|LjU" 7FSq[Ȁk%@&.f޲Zb:xd)\b@> DC$LUF CKF6D<1vDD@E`as$_HLqgttBkR$ B@&$@G5sh0^HA;>ޫrD3dA>CPAC0AAF gI d2/@ٚ)-uo&m4nD?R?/$[}8A@Bhe)bfAx bb/O-^8di-1$ 5&$bHĉG1d3D >COrse2BOH $R0h@l X۽JA(x)Eu*zA  8\p! 0u5IA B 03a2GHGjEkl,@΀Tw܀?BrsC*C B$h@BB2Ap2E@$x^0hB)fJ) !DNqo X#(e-l9(*9!hB"A@B뉹&B+bw@Bmvt(@HV% u^#/E@h E A8R9}Ox: )_(H+s_30*2gmLlpg<D,@\,f)8s,@9ӀAEGo&\ v'@/W&@ 0AD 3p+0C@/#h l ۊb"/@ € 3#xetCLt@khB 0H4kGֽ&@O+g( 9g@z6v|@duL ,@,$,@:D|CܫI*7ijmx8]2+@ g;m;_acݵ+=+\A3H1ߎ\^ ױB: c! Ddc\@uWo|=u=rRd>)4) 2.6~p8}!.d'6Dl? ld3 4.b 6tbD*ucH9vd]ူ› AleL3iִyX?2} fPC5ziRmHl̘IC !W2JbXcZtiښx!n\ {o^{l75|ٙh6vrdɓ)WqFb@U!b„V,3eիYvvƩ~5haцIXvpÉ7~/m2{ކOT{v۹w|s .4ߨceL~|Vη}b!4yݞdKpȪn# 5ܐ=EM<U\]|em>bp} HP4ӛp|(R$#A+p, 0LԲ!.6|8<ͅ M9ܓ>|:(? =D(P4E%JlTG%N=T0Rӈ8 TU]ձQ,5&YZmEUa-K[}` 5]:Ud]vRbijWf>}hݖn[Srpy=v.]uBzx]ރ >^~%-5`[I} VXYU^]~emuޙ}蠅袍>餑V香V9aދ)dyGxJ9뮽>^~nޛ ?_޺[}}9‹.<EM?U_]e?muߝ}?_'=0<7Cf>juf89?_域_ߎߟ X@ T@>`w;a `*g9&ń e)T YB1 iXC9yCAXD#Ila  rЃ2Dq YE/~a8Fd8CVb/VcXG;yG,"i|"ƐPrHwq/^ -Rs&9I-HA ^؆L&3T*6Q|5.ДsK RJ_2LGFZ2(6 –مLk^3J !-wL~E Tfm , X]hؔ<5˛gAĩKI,A<TBcOnsI]'AIbLFAx2!]C'|&ӟtDXXHiZːTTD4сT#iE26td6URXкd.ZT0`d *iBUũԩJ( `aVd!IWZW#ŤIQCgҎrծU,M*ɐ JVG2~ilF+Nu4;+`3<Zv)mDNFdP#M`  md!ڐSYnsK$[*%} ܙ F:vޥ~wXcx7~n+E^7c[ZvG!F z_+U&m ͘2%lalR0yCa {12$[ WxLiiR!~{I9a52hc$,e8Q\e+_Ye/a\f3iVf7qOX 5J8Ё ]hCщVhG?ґ)]iK_ә9iOԡ5H]jS! kÝb_-І׹yk_]lc5bX},NhB%^moMe"Hbb U]o{ߓ1d^]f ^p Wx=縺+\R/1nq;^72*w GN<1shτ2yMsnW\8ЕVC5!1:љͥO:\Xަ_]YOwq?( 8؅uj|7]5 Mp 1"@J10` ." L(쑷uN]38`8HF$ !YX h 3|@y&` yA^~R'Xa#)/ȽW0gq&ba?Nvw331 '&PgL"A ha*^`XED@orzor@ &T(N Dq @ Xa.kPO&!*p4b"O `"6kf-Nro |xo @m ,6p$p`ba|""^ ! ` O ^bA0 Lpo^A|@%"AZA@p$J6AfopQDu0.#3)B* "Xos?J u.00W1iEmNS8T崑ñRqQQQq$Y.KA\1Ȣ1 #//1 r/ R02/$P-l&bp"+"/#3R#7#;#?$Cr#$&q7$[2N`NEW%o2Nr'LtrxR%(?x'Q)J&*9rfj+@(,C,s,/%LR)B("%Q#ڒ#,! 3 R#"A #ap bA (4 pP/Sn|2zѬf01 Xz#H i%HA r(2ϯ}lns >/=/ ""0n !&@.N ,$! ƀ4%sp;aB@AJ!"X!.S1g钠k>7e3 $> 2KV@  n @%  J 4A Ơ3ap ։@RA t`#ހ Asb>m zp6 7d? "`027d 5o j+ A@2 .` (.ન/d+4,! .`=! G`G{ #Hu ! H! J `A! ".``A hW  MCs!M?T*؀~! 8T@1ZOS 5` !QQ1(w JaFǀQ`1. ĕa!vaSbRCX S D pXr> YYC ހЕ@ VTF &1V  B5YIT @v r`ST@ UY73Q>4X@ra." a,! HAX  Ke$ ^VRYN F5.p&w6Ť(VBa/;H 3n #rLɔl b b`e4Vt=4  t$uBv75@@ ppqեq9q`Oh+bz b=#7<zwBX7\=t|w)[ԗ)}(w ~79sh/w 8X.8ʒ#}!!X/~)Xa1؃W"&ukBD҄OSXW[؅_?${*?؆a%po"C%{XxX/YB8_|vXX[*؊،XsËxR]XhVXipT Y-xMِXx븑9$3``4y`8Y`HCYIcJٔOSAgkٖosYw{ٗS٘YٙYٚYٛ8(J!@AיٝBA癞9YyZ ڠZڡ#Z'+ڢ/3s>CZ}0FڤAOڤZڥ_cZgkڦosZw{ڧZڨZu!RڪZZǚڬ::ךڭZCڮZw[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gk۶Ӯo[wK{%4@[[ [B;W#!h {wi[כ׽;۾ݛ[Bۿa" &MF'+/3\+?<H4*v!2_ƿVL",32V<{ǩzY;#B!ǗɃK#ɯʝJȋʽ<Ƶ|J<ǽr[׼\J\ќ| B]\YW@`A6(Sf" VLy$*&=C𙔈oR aehƌXrXͳ!/=[ʕ,[$63b4kd2KBA" T'mJkѥg1Y&v鼺ͭ\z*Lױd˚=6ڵlۺ} 7ܹtڽw-9d,!FSTy'E H0r#DXW%x1WwDQ& )7j%"Ty陏B>˲L:aBVDjЪg*YEJWIUy?`L'0ɨ /aDH19ȰL͐<1D,PN"|-V D‹JD D"pD*8 %8TG l$8F *Ȑ*Y7SWi%"e7$eB_`!(&Kw߀zg~ h I 0#qpXb sa#W3GB +`]V'D TX!.I" QItCqi/tNMmL9SL]re 3I7^xp {D"m"̝)h枋nꮛ3C I+9du<:)(W LH11D@c0K,5p)u*P5p Jd0CRr1 "1"Q0\b3r{"H<'h(hB`K +?++bЬOlfM'3?y lA@O5Y֖*xA$ty8psO,Ep,l _A4UJ%4* Q@28B2 L(Jq`B%nEXa0q+bϸ&\DH8qt݈Gh1y!@ rr1\5#! HFr@@!;Fd'Pr|&!rl+_ Xr*0MKc/ ` s,1Lrlg ZHsԬ5ljs&-vAXlbq9ωt\$M;e:|-ܧ? Ѐ t-Az mC Qq-E:ыjtgF; ҐIOR*4,mKWҗt4[LkӜO7ݩO Լ4D-QYΣ*uLP ըRUQJիju*W Vz5d-?jִulm[ ׸ut]׼u|_ v-a*vmc Jve/jv : b4`&BZ ! ,     "!(!#$ !$##$%%)*&$('*++,-.12/2,08.0222483737=:7848>69A;;<>>A@?F?ADCCEEFIHGQJGJEIJHJGKKMMNQQNQNPRSSTXUXVVZYWWYWcVY\[[]^^b`^`^`__acaa_ccdeeihgjhgpfikjjkmmqpmoposoqsrrtvvyuxuwy|{{|}~~~~ecclqoV]bgq]cjjeft}^_lʽ¿#lb$*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲF0a"`\v܅Sϟ8 ѣ@*-K:TjSD":TQBTlRf}e*vmOu;WnZwŻWo[^Ep_Ãv%,ǐ#KL˘3k̹ϠCMӨS^ͺװc˞[cbsͻ Nȓ+_μУKNسk]0‹O{O~=ߏ/?<}է^G\(1AQ蟅I}|6X8).xb/b3NXc7^c!n#=c;X$Ax$KݓPF)TViXf\v`)dihlp)tix|矀*蠄j衈&袌6裐F*餔Vj饘f馜v駠*jꩨj꫰bJdj|Ί뮼꫘*{]&lF+-Nk؎Zmv뭤~+n覫.~nkowޫ2o,nl qWLmAkٱ /čL9r,˔Fv3S`A$ +$@19L,r |Kd:C4T# DA'@L3@@\9@)o,3?-u|[͋m-6ox ฑm6ڈ&pk _]w^7}3@6p6,ԠpLXinC |/̾mNxd-q&ssߏ͋&MDO߽v뾽p_W'oڥ$';c6iL2v4M 285|Gfd&01wAUp{˜[hq0) OdTA Pemc.6"lÈ@9Ђ0X@S ^@M"h`h&0"hB14)G 4:6LΈX=0$`;@) h`5&P+G :N^|u#`'lr0$|`K3@s De1 ,M ƫ X%q ގPBYkF @Xm nc'8׸n! -) j[ZB@M.+"` O Eln-AT-+AY8/ 4u) `^B&! @Sȩ`im,g` H&XQ5}  +J mPr! Hn)h[%}|ZA]S*d`&p2&Y @ |L4 }LH%6,8( JSf˒!^P 38 \} +DIAp (@ XPo{(.~R2mx4!-983o 4:Y܅ER3B=.x"'E BJE6=L惞ޜm 2#CSm[P?ï&{ _cGdt1&5B岓oᖷׇM8diT(4$=!n8;1JQoM2S輫xl. J9y PpƷ\HF mK-5@pi9Ј,xe`ZMAhUG~.,W#xsN gUg^z8g@Nzi>Cf&8 lou"g(n36?Yޖ4zO E DpKS@A:i|vWx3 p CUm;yEzZ4=?cc7t71rf|IaUfyI{o4CwBApS1}dAo;Pma|P PsCRϥw 77-C s~c7 H0W38wSTa @p;e:%sX'DcF7trAcu.8$r$z P}xV6P42(fIA9HeVpCdT@lVE@SD-6@^ h__g~ԅvm~S6w4aR #xh艑CRAZ|%cS3@dh\vt=t@aXǃ(c5?)3P@C;LHc~ an7DcG0oR "ax AP k[=(0y:A t8E0TcYh08S@;/deѸ3foZ6T8϶0q=UX5m GP[94Gcc> V`n—}PCCP@C30bDv8ȨNP78T}9=]cEt g1f@5_8:f¶zCȈU')V5[)Mtk {j fr:X1YV7AE\Sd&rPsWDEp q^pq0X[Ghe%gK&9 (cqo#j!yFt39A/v^ ١[ΰ ]!Ddvtfv:acjXP $FrW 4upTM  P?he:>S4`gJ&5E(b5 dD:2P\ ZW=#]KsEP Jqݘ\9bpC@b? @:Py@86^C*P 0Ma4D @Ibz0  VY5#6S:eFaU>o>Z%9PgvVgV>E$uRfS(dvx 7h0 ruew3T=U*17xJa hGSJ85h$v)%_a~p5_8(;ai8OaE8dp:F69pa :u:OP3P2{%\Х.X%FS ) _wMS9kۗ8@ `& J`v<;?^sSJ@ `ICz>D6gYkДTYsC0f:04p;S\b0. 'Skk`h 6{=`C=Fk[ w= @D6 KSe940;5C4#S j`Vh{w 竾1 S?޳B9;1NBsA}O9t̿= B[Af?ÑƛupAAs0%("Aa1S}=1{| w <ܧUl$a7&H`gj%Fq=̏P\(Rh;'SSStrx1M\'jC9bsBƣCʼn' P&|C+RQHMdMK6@=l]q [dP= *hnx yceWK% aodUl `5c(EO^m ,ARdE}VH {~5gf>;cpV !Aa>pflexg$봮 {x %?L<RU.ZN<OB 5 @-oCuDG+4H%=)K;L5-OK5UPE%S[uuTy%V_b}mM)W`54^5XdmɊXe3f sZv[.:U(*XMV b8[xs.p]hrxA V@"#P %Fuy βw "H"4>agF4Bv)y"ފ+@ d&a"-2"H=Yy"FLv F PB!R4ڙu6ڙHhcPy!MbBIW M6 ĕQlvi2?dga$u ;(dZ d^"!FaV3)8ϊY& Ex!g"RFN"'"bmb!p&|Ob&2`BHx|_ vhA&cR ߨ(%P^z@( g@HA!bQ$:8] *pR# gtRЏ~!dZUd}]C ̤/1f0;Bd3؞38V2 c[ 4B @*@ H/J$ M_H+^'X/98cMA+ y"!^@ g̠ VAF` PuTHz*PBo3bfWr5@s aV|&DpgIB4J1 V 1Bwp@~FAɃ F(DFFQ :8#)#djΨ  .X!Lb+Ap\eGJ"D8##h Z)ƁE3rgs2{XQy#C97.0  E` SBÊJ8 z$;kH0 SˁY|iy! |=a0NYg{`cF0VLWk 1ղ&2AX.:!xC&djr6ZZV$wI,T@f7mMpSDNDx$ kwQ-wA-U1'gޤ7\{k>qVx=O'B7%gNn$,-繜^ʍpD[ϝNE#MHpudW@ftk)q/Ruo X@:sO)vbzߵut';wk |Sp%< 0t |++"x{I--j @GN$gHﹾnEB '_1'‹s}0'm Oה v* @n~_Ov`;:[@߃+@ M " HIP?H)AC*x{;ì7#m#"c0tЄ)7\2A&AA㻪㳆@[(@I#bgxR@֚ >x#2 :bB:pAB\;bB"(9bPx@PC7:DCē˺2X<<ГX DgHOLX+)P JDWhCgĨ8@Ee QT,PEp>¥II [ 2\"`Z FcelGhF,C|Ż72X   \L* Rrt_@Gș tG<'(t+\;T@B9ę=8P*#R8ˁRhH x0ؿP=SJNk3 V0b -g hM|ˏE: C;0TX>x'ga vYj+K HVE~TB 9:{z{Ldԑ|p@̱F:zMsƊ,KJdM⬊یNJ<˭N*̈́3H> pʺN$ʋ@ >XK9 OLˌ54Y|OCNlN!+3L LЭOTPM PӈPZP P^PБPmB%MQPTQ5}Q }ѶQQ"5 M!-R%%Ȕ%}Rh R*- )*Rcd4@`2`f؅I"䋰f=N l q f!c)gcK`- 0H?q-AFCRf@8f(AZp+ٜhg:?(`$}V^V"kf tB"WXig~P~-c\,HMhQ~)?bF..mI[MI.K1f0MxjPIVH`ks]S肹QVI@XPAA&M M8d&968a J)I(1ZM@H!H.dЄg.@MvІœ8BR@F^6Z8L?nXH)_IFȅIhAS@8""MU kU PؚOMжR %9CHXxKyDZHR0ˆ'R P\(^2XMppV !mgHd;>Vr^ ض/>R5PPX=!.XR\$pgH^qP .c=2B ǁyy@-g, Ĺ%4wʥE}) -(FHG8*X!XЂFςqFm-B4@X)6"C.@h,"CH2p/Z*-hri&ւB@8SwIx/j@*IRXX:;*@?,X!BЂ?x'r? BȂzw;P',4`?).@t@YcAt&m"#0E 68i.VX0r-[gHXpu8ЂbZm2FG^_K6Ωy@hQE@-p$]`͡ˑc) S]wKgBXy0z8OX@)@@q.46#b'6w>WG-XFK'@(&KwAȂ?h\  ,ȅV(}fd@,0t҂0IAURh_Xu{E>MY7tKUiaywԄS/\ 7M g,H'AP(g. @F` .alr #gZH\YJ9#GSd9[E3^S *E"?1BeRH- rH%da4aI/- 鹉3RH7 @B҂ j,M!YP!5-R g3VZV95VV@YӞrbEHQÏ+dDF ߫d ^Bl]>iҞU9Rn.BaBȊ^8bI0vUJS5mv12<DLK…bi\"qHK CQ1K6KE"gT)U(mP2] H!Zu)Zlu\.L1``]$ 2Y'FvLu%taD!^7]`18#5x#9#9 1A 9$Ey$Ic\D 10dQ=Bp=m Fqhс J9SJ|!@ELA()WFh!`t:*eIm, R)hFR^}TRpM. $EiEuj~\L2hm61aHJ8hpT)] wS2Vw_W",wРFa'*Z BZLHKl.I ƎfLjUBL 1˨ ](:W`11|ZUF ViZiFOX_X2SYPD Q!hP QLvx2̥!6y7y75$ ^$ysWJ$dƒ 1 F!R&VaD [-fi{eJ.B ҒzYp$Sr@dK} ӨB@J5ғ)0]\K.fTr^Iqg- ])2L9 V{JK IQI+Q:#\ViYַ&]•S8b 0~R(bT i0O-.x Dp ֠!)L+C ep6-bT EXL0ϢA<ִ!CFE!?ɍ^ 20d,' Iga 2 ^O!aQ$I\L.x-Ho<%*S 4Rx PDS0  $], )E/2Q%|w1J p u@+qO\ "aX`" ACQ,dyB! PȮ'@t)!:Hnn.9A a@ )?}Ʌ QD_&-p(XZ/BtL bdx]rPdwZ">Pd! i+d0aЦ\* 1I`8IRFl @8VhN!_L ! MH'!OH\'C  A b._SwnB㬫h^iх8+C}*L( F  ZL]ySV29/P " }ڬd:m":^Ikƹ$eEJ񒷼d+X8dM26HKK! d0 !jAjLahÃ#>,uoQ 4 / HQ,B0 wdd`TdƫdYBuVLq -dK RAi`ANehCð6l]ΐhYBX&İ}' )$ Y+%ZUe/u` ِ mхy0BGB 7`n+dBq6YGWj0R%0#X%C25dèXܘ a;!C C~08ƗtBi =$8x\.T3q0): \@/!Jx'.S`; y.7 =8ˣXH'hx`+%M|!xA@)$)Gh:`X|I(Sl.#(3rY1$=~8jqhw(INӽ>' av? @LA?<$oy_d^PA BQ(pb ږMms/'}??ӯ'R7~ӿ?ѻA  _&% FN ZR,5`xQ$ Ơ ֠    ތh&.!6>܍~&҈Un!vz`\`8&*I"H=y!aϡ:_b!""15bE"&&n"'vdb9bA$_%%(z+",rb+()^ *,"00V/:I--:).N/b0F4N#_#$!9$.$6# bX#5;!;㍐ @@ 8bc)3!!&D) ㍀B*i"!LBBy X$d)zc`c)$W$x+B64AhB((`Ɨi@l)A/$b D@!+0'weD+ԓ&s@!gBT4 &A(D)(g zA+ԧ0 @!/tIV$F@E*$EAY BT^(Y)hwAZ4Bs# Bf`e)-n*:ވfN&Pt:pB c*\i(@C\(r*'DFe"f1ԮI*CA#kB( @@@@ĭ'A8C!Bpp 1-((P43kk7O&#$@n]@ID\ ܶsn ()WV$@Yί(D hc @u ӈ^^A ܋B U0#a6b kE*l,Tt?©vW@ B$hB8 ¦&DBpB6E@$8ZphB)eπ@K) !DNro X#De*-hp`/Bh.&np(4k/PnzH(̦G@~l*Ur9+(@(nh @AAE58ZyZ> H^h@+_3pax"o Dlqc1=+D,@\@$f)p=#Z)sAHhw^#B@ 1+cw8_N}!-\'"?kz> dc+>3_@ aB 6tF@b)VxcF9nt4yeJ+YtfL"a$Fd"X17s,ŋXRK6ujTbJ)KbdNlؖx5{mZkҴ-ѕGֵ{)Ulp` 6EbA.^L dÛ9wthѣjX-j'|jfҳi׶}wnæF$֒_Kܑn˙7wtr…tx#EYx#XCw~|&cIgHD'j"R86/\|% - 5ܐ=EM<-#xem@@  "31;Dҩ(*kI&)̸خ0s,TI$6|<4Z3<ܓ>ӑ-aB =T9ϴ*<}H%NQ-}I5ݔN KRM=U@ERԼLXeUwl)Riݕ^!5'_b`f}dŔYh[l\ݶv)]=tܤm<䝗z|ݗ~ >^Eȼm]VV٘=EM>U^]~emuޙU;e8܊!Dyꨥꪭ묵ޚ뮽;D>^~垛ޛ[﫝%.9 1‹%-5ߜ=E5U_]emuߝ}x/Cc5B[YF5ȃꭿߞ?域ߟ X@fx`!.qVEq >H9A~!IXB)T YB1 iXC9yfrh#CBLØD'>QXE+^W Aw DXX\h@5R%>Є4!j CB6Xd/PSStQ Gp2!d8J/JT^U-FͥG#" D`Vh! *V֬h"QWcdUu` VDꌰT Ex`+Yka9ٌ"JM b %Z@dvlZGRB\JMbd C11~4UngABbo5:$ծ[ې>%{nH9&!z]|IUdohb,P&{^#Ej"UI_jzv&G($ 0:[I;7VZ/aon+>1mx8ţj,cȨcU}P2d'?Q\e+_Ye/a\f3iVf7yLb1zqg?Ё ]hCщVhG?ґ)]iK_ә9iNԡ9YFnF ? nP߬i]k[׹yk_]ZA*. |ebᴩ]mk_mo(T-[f窱(*nw]o/nU@ ^p<[şݭ.mDee79qs7|9YV[^|m\}^=:FVQUA,k-C]eOx~MBd/b2G?j!R +Bl!;#4``^W} i:1r0$!9rI B MOȁ&0oB R/yo+K!;;/Q,^Pha  M@>,"ý?~I2ggb9A3NMhΘD wgL뜁f(xxopOn?O/btt!&!T  n >감hQiprq1UzMch01OqR-㬑 cǑP0Q$On1'J2b"/1 q 5NQ!AE"#R"'"+"/#3R#7#->rO %d"x>Q6RR&Ǥ%K&gR'$'%qr'Jzһ@1qR(H2^&C)rHb*R+o#+*+R,ߣ+)1- B2+6%v2˲o''-A R R!"a K1FA" _Br.&+N/$Ғ"<  a0`6.[B$S 6@6#r$E"4o!r!Ȁm!  r4aAb!, XANs%.<4m/A $: 5N .=_@ nS$/t?7" (n1k c` A5o24K ,ὤ`  *! 2. bz교Br`A 'ڀ~A .?)N>OI T``3!eH(yA Ja@FɀQ\U1$4 a<*F! (CŔ9B! XAGP}3)aґ8?-\! I]bD!bt!.Vr j"b!V # 4YI!`x! `OT@Y-a/+4X ?raB A HAX "CaC CPRYNB.l6t!sĦ$6`10"Qm5 @ qLk p´ab eBtPKT  Xtv35@! ̕p0qeYq`aO0] 3&+!HbbzS=*!XWWYV|w7P+3qV}7&WYw!W~,7Xw&W%wR,XՐR8++%$8p`-7%'A:K؄OSXW[؅#${,k-Fr8J҆w8-p؈hKTYtX+|ׅňXc؊{%a.B7(N،8/ᘎݱ~ Xe8hw'@97\x82/_^4^8^*CY+JٔOSY kٖosYw{ٗϓ٘YٙYٚYٛYY8#.B֙ٝA!晞ٞ9YyY ڠZڡ#Z'+ڢ/3ZYY|CZG$O:MOZY_cZgkڦosZw{ڧZڨZzB?)ڪZZǚڬṣӚڭZ:_Zگ[ ۰[۱#['+۲/3[7;۳?C[GK۴OS[W[۵_c[gk۶o>w{۴Gy;,}۸g{?[M#{#;-BΛ[כi!z;zۛ[[+{|""F \`!M0c&+/3\7[Y?ϑpd+Cb"Y!1cBc?h"2eiš&p)v<0z}ɛc:ȣ)0\}\ȥdʏ7\eˣu<̥͗Ʃ)/Ĝx<bZP1PHҼܜ=/X:テNݾXSLׂЗ\;]M/ *o3^*&ʇ!&"9"ӗ"25aa\KNa%V<`wVAر]Zbg`"L^@f ? j`>3T P Z@Z@ pNգ܃a )4@VU!~ B@wT; !`@R> }?r4V!o۝Zd&a$|^ZaKxa B^4at@ U?=Wa@`>Y]r 1(a:@ JTLrġ) Ќ"gD^,r*,[lI-gjڬΝD(APڄ ֢Kr-bTSMKaډ%\z V0d˚=6ڵlۺ} 7ܹtڽ7/ۄ/t[Y,B P )+#6#`hSg R>BvW0bYQ:B9\TuQAY!pvAZ&)," tuwƜ5guh*tԠU>-%eP 5v[vl?`3l3 R#3  &B# &4%4?0ĂC 9htZ 0.+R5@ F EBD*(r?0) 5 z/tM^i%K2$IU |J Z-~g~ hgLg0( 2B%bY( 8΀9 1vvF1%0Ķa4E0H5 E:!s9YD%K5a'M2yv^2,(yR$-"3x枋nˮZ 5(DD )E`E341Bp/00;2C R ML +: N ZDJ: *ԄHav]@% 21T ) )OEWn^ vbkD఑Q9  61åĐ ZK /qyx*-..i2C-ߒq ƭEr+AwZX)ħaQjȧDyE"iKE `d|/Y ,ĄZ/ԴK`ZO1`_?XKR,O+0,bЬS|g m'E3?y l@} ,_nR ^04S?u!,ap,l!AphҠЅ<P}9, m,#*Q+Al((KM@Њ3ܡ0yC X$reh 8qb52|#@ r.!uEr~# IH" "@Aenj|" P2@Trl+_ XrTe,z/ ` s,1Q*sl"MbAhJsԬ5ljsܤ/h Mc,,9ω iI iBsL=|? Ѐ t-ABO~t mCʼAthC%jьjt(G? Ґ>ң"-IO*Et,mi UҘta)MoӜɦ:OuD->iԤ*ud*S ՛:5TIjլj5XݪWЮudXˊִulm[ ׸ut]׼u|_ v-a*vmc Jve/jv_g?X_FMhOؕ6 ! ,     "!(!#  #$ ##$%%)*&$('*')+++,-.12/2-19.1422483737=97:58<59B;;=>>A@?F>ACCCEEFIHGQJGJEHGFIKKKMNNQQNQMPONQRSSUXUXVVZYWWYWcVY[[[]^^b`^`^`__abaa_ccdeeihgkfijjjkmmqpmoposnqrrrtvvyvyvwy|{{|}~~~ecdoptV`^akiw\cjjef}^uʽ¿(A*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ :uK\nɳϟ@ JѣH*]ʴӧPJJիXjʵשt4YfhӪ]˶۷pʝKݻx˷߿ LÈ+^p0" F9˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+\УKNسnËOӫ_ϾßOϿ(h& 6F(Vhfv ($h(,*HY0(㌴H8樣f6@cDiCLdPF)e}ONiXWe\vs[~)dfhjgp\tIgv'xJ 蠄(qȘ(x腐N]fJ!NKzR0R̨Z5SPRjfͬAFj^3@Ru6$p,J׌pPJ6^3eaD~$ 5S Pmx.*r15#Ĺ:ko{{.bvmv-{)'r… ˵K/f]3@2.gjkpݩ+$ J< Zg1jxh@ʗAVrJ[fVuҹp3F̼uH׆3a{v5m;Lj? P sLOe @aOVcd:'ސiY8㑥5/7Cg[m0j KJny唩yd"~8C\`{ e V`cgvHV=iنpL3017dm^Dnw.v-tPEY o~-|I0DY9O'U6[eSckdC;iT5H6<0<6fK 6PFs7G0>wv/^g @Y:t BmFv\O'9@ -|:(RT -MAgEG0 uwkz5B7SH*&sBX+^(MGeQfVq㖆.'dl8jK0Qے v+TZcu<Ͱu;Gi#R;bXKGM Pg#4](>ui CxnH7suS!bh 61" Fp'yI 8X{DD0(c9c2^7S#ЀP^@kHoy;p$ska gN)I#ie#pOd9'2AldSZȗՈ'͠ DuTh!`x1)%P ͣY yC*yKO B`41+^,Y P  Ss7},Y<@ *tN(ʼnUքwc1j#S C2p R8~@ K䒅b-cS1  pT.yNhOfv 3Qq,J5 S۩)- @{5TRX0GUMUVq0J4v)ia \JV`mͰLz.s< h Nm^~F1.0pM0";O--mb 6GHFNFMkhm#Ȓt1NI;XS t_ =;ŢwK#8+ Z,ቴI# -_VnR{i{; [[h-kCc6.k)"#0lIWe;k:#c`S %d35x|;~{K5*Wt3v(w79{Y[|xK5V*ןqa`kѷrsr;C֘3^*9{2J!@*7C=43ӻ+(4}A`?+ڛ  *2Rؿ{ B=D]ԍԢ j+FN|ҫԒyqjeO@Pb]|TnL]0<!pBEL@[+Y=pr-hc؂-RB]`.M`@q 2hqjhG S9iA7]9آ=ڸar! DՀOI-6 8 Pgh̀KnA7@}ܣlǁq1c0\Š_p+VJ]Q!$ Hdax.C [ ō=ߓ|rQy7Ef^js ̀ԕ@QKE^lo! v5 S@ep@ S  Еr,gWdB>xġn_@A[XpQ7cUH5^lhm1~hD^fF>HM['M1( Id٘8`YF[[~]>3;N١MXw}̧qG`vU4Af ?HcR@63訞plDEXTIIc͏Е]s$3GCqCʾi.k0Y` dt^]Q ]0mP  Oڬ~]/00I(6 Y! ^Oo1[d@u.v 8_RqA 8UG0&`>W VAQ~KX m>  g P ;U )6?1q\?do̦,x9etonx(~y\|ւ_Є/o{ҍo_lRh_o_OOlßf_.Aֿ!DNN- `ʟR_$XA .dC jE5nŊD$YI)UdK1eΤYM9uOA%ZR>.eTcRFNZUYnWI%*Xiծe[q[nٳs_{0Ӽ/fcȑO>\lTə5o癔-iԩUf V4щ[Ϧ]m#_î,;oaĕ/g9O&^uˣK'K=wsݩկgyĦϧ_~R3 ]}p@"#pAIp,B /CC 방 GTqE%+IVRV*͋qU&y(biPЊ!`Y!':$S"b J(4~f-H8ѪDt)isPB*3=J%!DF21J`RJHFʅ9t,%UṆ`D%a)=EҔFX 80;5D@)!&Ed9L4`$N\V?9[ pťa Em9ICKlSW̅a8YPL ȖpT'̥a smA#VH\b(D2U|Ba%& 2VE$.be$Nb0* ,Y% +db"b`xa#X8fʸxD`a+=f"ADXpz@"I^AKfWCKEOz9Vx h,%NaaDVӆ%h VVu*^@YIko.H$PX{*gJDoifhmvӐfa!]G$Yf@!%$XV ]x]`LMT&yGH"*,sXE օ4 W"Ռ։D 6,~|\ @D"@9P$B(!|! P#܉$6pHzл4|06HT @!1袂t '4 ,ȑ @8q!F"g#_`.pa°Hp@Tb$<*{!\DF2c+JBAH0" R>)X’)MLp$F(^%eK'j>BtE!% _ GljS޸F1}σٌ1E ֌`s$rK,IN#6×" Er-! NHV A$pf*3 桚qz,8!"N0!8Q #D4f`X`\KLRRXV,=$e~-J@ P[P" FQ\pB(a'  TX,`L־BUPA*k' S"MM+m¦cI$JBAmZTnVO\(lI1IsH*ґlMlK(rk2$Al3P<wLؠKT#It Pac@ vە LPkV#z$j%. $_IΪ+ dsKU\’R ,.kpJ|b$ |c+# +XPB !ac$'$qi #m*7)Y8fr)bexc&te$kfrֶYs͛wg:YϞg@1}&؟}hDe2tKĜhHGz*PO A$5cIZ;, <#@ @[j!ZuCsf4+J,yBX`C@6N['[()~N;Ć@]]vlXZ'06}a Mkp106.ju:A0w<%j1h.{B!V, \&h d"۾h**J BǼ'b%H%Ώbj*d~tѼ262Mrqb%6`yWH`Xx3xJ q3PdFz0ϐwӮAuIe0(u` (T!nn$9/`gJ@&Xs.N W")"tp X|td&60ے*{'x @3@ tE]+P|.Ÿ |+%@&%ADk`P"⹂HC? + ؋27h@=;*` T@Wfp@^;ͫ@ $ zc>#Y%XA#pA'AA  ±B:%7%.! Ț%Y(f.$Ga<1(-s AD?Y9+Y#!R蝄:DEPD NpD8 4^D{6*Y 2jR0X p/:Eq 2t 3 5?!Y,YjY QI+q(Ǧ8ǗU@A8d@i5l6)#Hd |<UkB 6PÌ\ 7h4Nж8 Ga3dITKK>=HGb;ŞLʷõ\+9(atlVTJ|l +uJ@Ay컳KHKXˑ3 HH LJ<LH,̛;|LKKȬLLҠL̻\LL MpL =-> ԟSTC BeC]ԛHTeTH} GHTԮTM0:<M NTֲSQR"TMUԚp i|BeD&a IF0UUEj.VIaMb}T0wjYKaLٔlOYd TiB'JYce]y֬VJpbQ/\`Yf8# 0% P!ə^WWPʹ8q8CXE"}Ȅԑ zj**!L8cќaXS5e}#HCϑ:9  $ҕ !8!%NXTEڣSZì<⛯UHU8BG$'讵M "NA]I9z]XI¨(:.H!*2(6Z]wq̩WXA`]؁#R0ؙ٘ GX]ha,ẙU+gXݥEm:X#ۚ*Y`_%؁\YدQ*.rcxP.V*u83[[f^_V0v `. z`ෝ0K 2^aR- *~7L]ǘ!"#$%&F_0bQ!_,։ VhD0m-1!F.N(6VP#g ֯3 Ağ<<<2XЅJМ@̜;f!H A(\(d:䞀.(,12@jÄ1`=Hx>c89B CL Y&8W(BhNp`^%B S0U P@<@qdVL]ȫ =(de@[-d=f*~I9K)YhJN J(xN *>\PhJ`hhN]SdUJ8SGa9*YN喆'>ls(JR Y詬?FJfRHPh_8inSpSph])NƃfɅJv..Y9`HIZEJH J̀SL8V2脾KLh]h&hNf**;S=gcyO(N7ᄫRR P@(xN0Z Wƣef>AOX>\ f6RaV n!/xRH[(.[2nAe,D1jA./UA.ؙC OI<z *(.(f1@Ȃ<*V8+hAfY >/ X*4I!H͊R(bG@8'i>D9x-hJx>`A8*o(Wx9Hq+8O],z- @4<C- Q΃As=-AAQgU 4`*D P~ac.W2 io.P$JW4.hGP ;' YA(4@&fȄ*  *?.HA'O2 p.`8?vp.xV1}.+.. yG0^z &zc'!`n~2xgxDItoYU0'PQHGp_**/9HXYcXɄ-aOfY2E\\B5[֡CP"j˪fp"B٭-^qKR\L8hfki2$Lfs͆ebO¸dHJfe&g (.=PU2U"xQ-:HR[n]}Ʉ\yLؖ_>5 F@@KM[(O4ԪWn5زgV]*ܺw7R&( 2 P2 $˧N **A9F9X.Yzw*2TmfKO[P[QpḺS[DwE45As`F X BFW !Ԓ'sfCG7'dX4!|MgͥQ#:t % +F{6aCW\|pHsԅ&EdKI}P2@I[̀/8 ,\vvvRRlE}1I.[yBM `|q )dJA…u 7P%iTfF|_M:qeuKK'AʼnUEK5 +ZbMĉ !FP\ͼ% [|0zJ/v1pQ1w0 +0í&Kq ò*`,qQJ3i$ ,Yqūo@Rƫa4rK/nj8$11YE) Q؛'GP)[qtGrDSB]%0/_p,Y ң -'":b%*,/76cm%< $xv+7gUyx'ZImȊ`" B?B._dW6g{DH6 ";Khj 7rLc$*RLZQ^jh|ZE/6mܩyWW%~3\r} N5\h02",:DʰJd *S,H(W@E_'<[Td0a6!sȰM>Mhs\YHIFVhJaX VPAC8-TAe٪%##`*nMb E&0.tB% kq% hI%EyD0@A̡ AqK ;(CLdgCUT#э8ýBg_IJd)Yl/Җ2bmxr@Ty _1;R3^ʢ/*2\.RE(&3CȀH 5-^Q=D E"P C:Yz +be J$EDqVQ@rrK$B/ G%h8B2u*J##|J@A-$BTE'-W:-q\+ HUD:q"8\LT ؒ8dMe&#+( ilF$4C$S:|+\*W> l21h[`r: eLS*q'Aࠢ9Ob CT$¸*搕<$'(O3(4!90e Dq5H,1,Pfp,ĉ9DSYod/ɂa"C C)ddR@5wpl.WRxatA XpPDpjZlw_x<<%D7]uQ3p.S~ e c\_c!H"Hq=׽ B)*&8hkrePmTρM \L9DN2d"j{шy[➪9L<&8$-  @n\He Y"j؏K8ۙ2.HB~4CWRbx ,`c^6nPF%kOQG8ݛj$Ӳ9ulH]&4~O{ k G5S?QHM]keåvy]Wa>vK~m[5p񩳉ᘻ% Mm`5aiZߑ70TZb]k*EDjS|a]lfUU[A1Ħks0*h3.9Y3 J˷ 899!BfPxAn;wЗצV:gNؼ:.f?;Ӯz.ӽv;+v{/?|=bG<#/SWoi[3=U !ֿ>s&8ێps5C=ӯ}N1?aag{ꃳz?Am] N VE ! &\Z mu q`\Q  Z`&  ɟn `k`6>1" VB~!!l,@!lT CF!1a F @!@!!Ρ GC¬B T"kH]qAQ "T@Bx (+:@,*$@,>"mD$j!Xl@Aj< B ]І)HQ&@@@@`+J " j  #jc1'PEl<%8>L# Dl@AEʝtyt,K@dkc#j @$@AUBDAOQ"<$'<<[pB(0Q́`/p*0TX., D@"PC`em(cE*'4VE "%f R..q,A ՀN p@U6 *`%fI B 8&|#"Pb.㔁|bAc)$;BJF4D`)X0'E$debHAt|0O^@"D(hRKb@ DMR7͚N2 Bj !dNmQ{%@T0\ D^\ @0@L @RD A3@ 4'@M,5C c3@@N )ĕR()B@GEti<@i2ip@ $x_$@@@ ,$ 4 "H(Aii@p@Ӆ.@6C詟"bi^Th \r@3 $ x$,.(vp{*ڧ+gf &2 `c<2hn%FHcXi)#CF' d"@ (d,tc,9r@鄀$)Cln)w$$$.l!?F/jX`J -R ic(;^$@=?-h5 (@t" L.k(c.(^ S0..TEa+$ BJt.@6Cj4^ "0r);00,Po@"Tr ,(f#>*|(- w(RXR)H}zi C "TV,@@BU 7,.j@#G!p.A%.ٷ%@/Qj@Or(@遤­@VH@^L)@[?SjKB 0i3nu ?+CQ §rmIv $P(( B  D0\92jVt@6$@(,nz;i0 < q *@B@-$p  Rb $ ,z3 2$7,j4z2Bp8k02iU&@E$@TEL(tk@MbV|j:K0H4,@ٞ@jLg8@L0_|BDi9Ey`kLӆ.VK*,@uiJB]$6 /ԄF3=].Pͪ*º+Y 0Tx\<1ضF:Ʒ=lp Bn @ɣuܱy"o &|ʭ|T,.I*cr0)4J2\M#^~%uŽlYvی:# 0L>U^]~emu~}蠅袍>餕^馝~ꨥꪣfy1LFdܘԎs"d>~垛ޛ ?_%-5ߜ>x c6ll c#dmuߝ}?_襟s;LG]u>nu;:?_Ofd X@ Tg co{`XҺ;lv9X]0+ؾgA ~)T ;P%#X D",d8PFEΆ^ rC'>1L>"Ed("FňA CȢA\@iO'm]ccda [ PA"@XHC戍+1B$p!xDDU @P)#!IO(n\$(:B #$qI9 ,J QI#-t B&KZe q"Rlʀʁ1f2,3%/븐2!e6Mw=b3iLq!l! t6YP>GZƉO! x Aldjih4{I*Ÿǀ PXLcQt8\]kXR2 --C0TAt 1R6M)OR e/I*a+OʐRGqhA N`\*.K){ZN h\ZXR+y']0/Fy^Z4p-ENP`s"X6Mm8YQֱ<5mTv>k8aZKtK[ҳ4";\>"{SVvkRZ >;,cPz^|[_~_ \` V^*#k.3r@Æ95|!I\b)VYb1i\c9yc7>Ð| &-+ "#\e+_Ye/a\8ā*(iOԡ ؐ@%vq =AV:ֹ~._8py}K_ b3ؿvɳ]mRolMl[LqŹm7dV7G Z g6*Rn{f}o⽒|d<7o7VI9 NAXiВH3 a մ틈x`($b d H. J.>>0DO B6x`(-JAr.- x@@P+D{M4 bB"VoBrVo?Pێ G - ϐN0O!d ߐH0n PLKI Հ)QGآMZ !Cj՚ 6KOSQW[_cQEQ%q)qp 0{Dr,z-uB(QA1p)D ?Ѻ1ϱ@ȱC=%A +m'a&`a0BQ1 & 6 ` <'8 P!M^!cs ['`VM)X@ kJCO(($RRVRJ 2&InQ-/, 0 VA/,"V)(> 9d:SX"s 2& 5Tڂ !?)`^ o7d@* 8 Ȁ@ >S"j4G f-(+C{@o1Dw%1J8 EA`9ˀD)#P 2*6Sb`6i"W! P ( TV;CAZ1Uˠ50 iP) $dp 2 b@ TIO d RF5G-XCԷ! ^a B $nX34> B/۸Va4O ^ON?*Vfst 2a Q&ʔ厕Uת ZS@u%!$"Oɠ ؠ*3 5- 5@ :DWY5 ZG?@Š3rv Ht")@fbpcBuV2r2 W!#aP#2`AmRm+#djj!Con0oo6v Ep76 N!@q'+L !r7&,sC*<AWtO'HmQuks?1.evowsWwww{wxuy+u7,y+7y7+7z7(5W{7<8J|˗K|ӷ+TW}7&c~}B~~7|W7'1Wgz1wX6qXr!8 r3!80X?-}?~Cx~IXM8BN2$Bŭ`ceX%o$v{؇&K|k.L!X؉XX؋Xǘ،Xט؍X瘎؎\FR@YُC9ّ9+ْ/3Y7;ٓ?CYGKٔOSYW[9w!*xkٖowuwL|A٘YٙYٚYٛgќYיٝM㙞ٞYZ ڠxZڡ9'+ڢ/3Z7;ڣ?CZGKڤOSZW[ڥ_cZgkڦosZw{ڧZڨ:BکqڪZz[ Z%ڬڬڭZ-.6ZZelگlZ ۱OC'+۲/{`:HVC[GK۴OI{[; 5 Zj ~#V#i\{A- =[#HR,p۷[s;B;#;,kla)ú9X;?#,[{[u9{?Ի#+p5 Ŀ9B+bJa69*;m?GX96K_glV[!V!b$@["@x@ 8*7$Aa%b>j-Ƴ!dp@ v! @ 4nհ#|%rj@ R&8!PQ}#OB{8m @"T :; BVhR]b5ģa &!n:X'A3kɞ^y!C?<#@ X#! 80j`Տ_BqV`z Q ") 8p֌ J͞@Ԭّ ٜs"GVƕ,[fDe0a4k [2NNdJ!U>%f=ʴ2ԡO:\e3֭\5رd˚=6ڵlۺ} 7ܹt% "'8;1>A@?F@?H?ADCCEEFIHGQJGJEHGFIJHJGKKMNNQQNQMPONPRSSTXUXVVZYWWYWcVXWVY[[[]]^b`^`^`__abaa_ccdeeihgkhgpfijjjlmmqpmoposnqrrrtvvyuxuwy{{{|}~~~~~ecdoptV`^maiw\cjjef}^uʽ¿Q`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$ *k/_zɳϟ@ JѣH*]ʴӧPJJիXjʵׯTy")ٳhӪ]˶۷pʝKݻx˷߿ LÈ+^lqǏKL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nq̐_μУKNzֳkνËOӫ__;˟OϿ(h& 6F(Vhfv ($h(Y,⋯4hc{ݨ<(c@)?iH XdL6d|K>)TzeXfrWn`ediiclpƙftIv橧x6)\4. yY(hu"*)9uS/E\N@z餠އhdAzY4pƨ]4Lt8$B->pJ^4i(D. |BdѤ?4;k-!j: ptƶ{l/z{El6Vk]4@w G +vB@ ` /E h4SpAÙ= OMhEPmLUPՓ, B9@hpShCcn J- ?0EO(_4?UT! ~U4@Qo2Y1R r]*b OHCzq)-$^ Â~3'pa H"P@F,-:P' L֭w yMO_ p#jA.A,"E8Z L0qOX&C`J}$07+PT 0}"!Ph q%&|.JX&!I}-B6}2,+Da+/KA\@l9ȁ@kv hoq!c Hw1d @* XOȂBG e PhAA@fE22%da  d>]YxB.zE @0ӊ,x(iJohH-^[EPu62 X (6" (#P `ȥ( HULz'Z8 k}%ڞphY.1L,KX x) pެ'|Up pPx1  kl0Q2,p<16^ƨ,ZZ :=]YBW% CU*'SPr`_"PEcEm{,`;]`UP0Bs@\.6њ j[KnhV*րfiokTp-e GHJ`ȓ[/8RAۛ&a'|̓%t UoЀzS"bFdiq t4P P%S* [{Rp vȀ⁥P 9a9mi}@ `PB].n7XcfeS9 F1p2 RH-B- pD9U"I^cU3`@ #ir4 Njqf'06rYD7X30[##{L54RW50GۥMUD:J4vgKg[LJVdw:  PjNG(YPvje 0 Y}:K/-ޣm)Hf7'Hb7N 是4k , Vd1- pU 9i0Sss4yFЎfq'@SDŝ7@O'P>H ׶DY*U`9 uZ,  PY|uO@W<):cu^gZ T+7[5I-pS0Ҙbj& |C 8@#%,`SfE&U) ҉;Р-V ;P P 8\2&0 U387P gD @ nf1KW )H ]I+%K,{49q@K JE뎟@-_InQDS PZ[D3D7;1:tI8{y5w;gK;3^Z#5F`8wbCy++Ǵ5r*מ{8PAji(w0 58c a2qd2̛K2@go+f?ؼ[ϛ)s սk:Ы㛾;;{ۿ2<\% <\| "<$\&|(*ͱ.0|ŸQ3L7<9,;= ?ACEGIKM봮ӯݐ@YE D[[r]U@  a 0bY@ Xhi>s uOcO50M@(8 tY!ޢFKEVޟҜrqq :pUXgjY$ѠE=X PUuUVOXP&?. ;f!  P|k[k˴`'۞BJ/˒vK?(0.!TJOa\bm]==hzQqjpL-onXx|\uzjcOaT`_os͒~N/?oΦo_߷ڽ1I ?O 1ڿ?_(n֏ǡNп<ګk]$XA JC%NXE5nG!E$YI)UdK1;M OA%ZQIԩ͝JNZUYn:SaEZYiծev$Sqsu[]y+\ %\aĉs1%O\壍?gСEּ9pѩUflirQ]m+SNXٹ'^n}ohs1#O^pҵo޽+7yyolϧ_m{qhJz!E"c>\?`z@f4F(%ZXA[ $jAxK80Y1;tOJe_"]t`LNFhܨ41$E+Z&?R#K;LWa"eEqRY$OL4ӼI4hn^!yecJ!СOC@iLDH I2RRfhLhRiҘIj1P6ȄIn#{ĘOYhђ7*R##th{B)fxVt(B ƍf` N (˜'p%`'K"fX$ jqzQu%=(4p(E,D!-DAh #fhb5bH2 sY`hxb =eJPHdY Tp"\x.Bhzic! ';X KePAEX(XX,p(2GY0(Q`p"!"KDCg8$mp`) f `u,wvhp9R\ /Wh×D~z6–(}[%YlNq; 1IڈD^ok!#& .B>O @{B qC(bE"\ `hPwX# $sb!URf` a@8 |8h 1`@4xG]C r % +(;%XP Gu T?}O#>q!†8|."8` q*$R.fgEKSj*Cz;MH h:@!b aY!˃|d$%B%d(gLvl|M%hy]s1Sgfs?f&Y#Fvs,oy)!P @\ }hYr)t!O!Zӛ6ahL!N@!pR ]YM&I/XjS @&I\J'J%G)H8>m<;J+Im:!,KqJJ\KAPKKhqK˳YKKKLLLL0L@L|LOK=sLȬu1 IL8L5L `LH<%L{F@M$2לTͭcMM MNMML0NQN 3<猱իNkN\N>ܳ, O:0|OOOOOOOOO PP-P=PMP]PmP}4pcLP,d+ CNHZH!dxENI4CV08^O0I>cX;0c@E@[$@EhvB(dD> U2WU R;Xٓl RлFE@eo eC؅<Ĉ]W`e*v5,(4f8?thK0/;TE6^RȂ;h0P6[nOI4ϑ/ 1DrɂZPcF;/pK|VMJʂ?I-IF!-XQ`'%,hIjChA%/qJ48>8EȂ"!/C?i7W@6s-PE@RcB`t1K@Oa1YI1h;1CHe+7MNȂ:PXrzR`s?h,g48)CPtP^1pYg,?q4; O[, OЂhhC1Th4/kM/x#RO'vLhhv8Eئ^h@0]X?/ToG0eG/74L8E 4pCxv]8iF`;ax΂ P4ri;0bH 7)-g؅6hm@U~'Sė,3&!ʶYFB2f/hUHu-].h-hE;Eez qO,gERaR`DK;C!,_KT-C0h/X`guh`Bu[[Z|Wxuy,WPZ#,#7B3FIn/@McJ᥂ {A]-Ls/աTK]ZJS^za8Q8鎱49d hwCϋitZM(c`8-,W4lrLRkW 1F,*˭h x.TY^BCa-0IHV1,pcGN(e֡6Wn5زgӮm6֩z7‡/nLfHA+"!CmKSJiCrpW6]ifC "T 5^\XaO%W4Ec!=RO4͵H1hXd$G{hcH*1 ux"h(X{wMaqH4X.5Ztm8אcrY R!bE#_4qu]^u"IwŚ/QBjIݧJAF.\uI80TMdLM)2di10|iB}qBuX̄Rb`` >$`bHvƌ &m3Iriy Bw|ƚ.6}rCc8O4.֡91"?cO}&kӐh)&PQZO-cx̕@%jJpx2R'\ Aih ahLcYR1hcNXVWl]1hJw'^CSch\D-j. qD5>Cf| Y9噆1|Lu!%íeҭ%FP0j0i5L'f>cL0a6ȥ]݅$*N/R"VN$ kc{CA[vT*ZR`iȣMs:9E,)XԢF>ejF9iul2eRp5BJݚ ׬kx YZ6 ]ՔfuFokhr-kjӆ"Kvlp&շ62̇j,95_C8.w]p;Y眍w/ yQcs$8gPD#D`5.?ҍ7iӼYPP`Iq05&W঍`;>9_3q]j= Iz?qC5҉H qKԹ>TLU?;>t z.ӽv;8nX.?<Or7X/S<|C/ѓyQ=c/sK}WoǦ=/?>3>/Sֿ>s~OA ??ӯN4oj_M Q(^ql,W= F1)ʩ\ o( q0kT j Fnu   n`F Ľ _l6>a 2B !!!!(aB~!J:^ Π \!ơ+A'V円 kd7RE 6^GiBX,X r@N=D,@=r@ׄġBFN-\RN!Cg$E(l=%,6@2BFxd1,KXͮFjjt $+*&D/k4@ 0jX2$AAŽj<_!$|(bBkymL^%|NBT.b)dLA*- JKLޢ*M<p@DCi-0/#A+q@7$L-,)$i4p@0n^A@cZ\kK llAFcAX(lmU.,a^S@ڲ1b*`HF$`/CXAX.\@(D_0 D/$ +a,`$H*- li8$j4Hcp,%XB< Kb.1h@\##3-@$/erB@(h@\| dVG0hc4FClCX:AKSLJ?BT+J_(m< +H@ctØE1DF-R߲/$+/B|B MsA(T$H>Um`*|BAC(g B$'D!>m1Ul5L$u/@F 7O,sǪlr*s- < L/#|DvB-Ԩg,N.F+\- Pw`7|B*L%j@~@mC"Tb<@@LWuZBl.'P2$3S(k@Rr)@Dj DX\Bn`L*@Ԑ@],ABj}lmkn,v+(r+S,2Gkr+E27l/.unEr@`R,o*q[`, BD(`p,_'@dV> L ,JE*LB@$pT $® $@ + h &Ot2 -@=2܀A|pk12lg Oa&GX@pO)k@0eꮷ=1H ,Xg8N@?Dw|ooS (Ɖ4yB'%φ//F,'c6PqZ*#$e90(6}]/hK)+R޾,#[mlw<džQD c 149^zC܂cŭ3"bmHƽ#b("0  P,cA[1@>@>a l$ÃC=gn- Ba0BE= 떞1|\A - {’ d@ EM?]|e&EWT)uܑ٫qS"<܀p$|(ZIZ,2"*LJ.L)0\6c<Mݜ:33!|hh@B =D]F}H%J-L5ݔN=P<ړ!cnyW\}XeZm\uݕ^}`b=d]f}VVZXw!._36"ZM qr=t]v}x块z_w!ٗ~ >^~%W]Tn?X28U^]~emu}蠅袍>餕^馝~ꨥꪭ38 Am=n"f#@~垛ޛ ?_%-5ߜ@cev@&efmuߝ}?_襟s=LG=uj]?_U={+#~ X@ ,2a-AUBZ=Nb6 >p>b` )T w=!:;'!ayX  [ Ć8܉1N>Pa2DT%B Eԡ`Azq^Di4OAna$GFc" _@C!XHCK"G: x\VA B`A!9I%ҍbxG"~2.YJAғ@Bґ"$ b/ B&Ye E&\ <K 1f2,S3D IIogY%rM,"@  L6YPf q$$r ! _ҝFkP,t*^>!I,0DK2f1iW<^.b Edij3URRS4*"u4 E! b"0yh$a+Nz'فfA'CL`\Z=|cZPk6ĢS8BZW֔ ī"$ՆTP1yF^5T-ƎPN`IqDfmg=JЂhahj3!iZv ln[\춶6o \$ƕt2[ &en.GW~WUvͪ]2|x4^|[_~_ \` V`WhFWȹsT@6|~ÈI\b)VYb1i\c9ycA򐉼5k @a¡3 8+_Ye/a\f3YP*Լu$3ra=;yg?Ё ]q >ґ)]iK_ZPY;eӡI]jSZ+&i1:g-M+z5ym]6q̰@`kc'Rc?;f沍8XCۈ6j]gtvo=;(}Kv"+Zn{oPumWı'j40DҖIH*IS#@!Wt|%щO*8ypm7DJ 20'> 4-!APq !!""`^a!P "P! &&!JRF((!R' jfTFHHn&X b$ b²F>#VHR.!tFB 8u0 s`)Qr!V*LH *N,8 J >! 2/  (  @3c3 ^n* 2`83j0yS~' )i)J"Z2!j <2#R! X Xzr${ 6@ڢ @* ־dRNjT36 oI/9i:N1%, 5\ bS2 N _! J>bPs !@ B&!5I l$B/1Sr1/;:3\A D#T <2N tI.=k@ 6e3^ R , BLKc0 6t:>!!@;P27OP \!G8 4I3" Tp`Iw j'_A(x$ސ$-!N!’|6ގ\\{h Ta$|:>AHR^v#.UC<~rjdPf"&j!Jar- } (a:" . ˆ(<">A&AHETa#\@-VlAA8 }GKOh`ZآX@p ?=֔X``f n }XM͛UԷ0RtRn ZoRAF`p|.g&u" F` hX#Y"R?!Nb|`au0(A":|ݫ6&| Xa@Z(" |a nh};"x!p@^N`'a& Z@EoĵSI f`>}"r>'bKahAVM=u,afbhxܭ|*4M"a$O >$f C/BP0ῊiXJai`  h@ a |V|!:; &bQhKf\VDGhwX܉:Z11%yUƑ$91'T\E%i%LLKIi"Q${b|2СD+V4ҥL:} 5ԩTZ5֭\z<-x ?hvEh R2hƢMȐ$JjC$hI&QOt,)b[7jf`=iq5l?*qH77hBPK.hIRr'ēMRI)*U'ЯBr>˛?>dЀj[Ʋhs=A A36)3P4dеced:`v%.l d Z 4E4@̰WB"5Ec0p6bĉ"DCMu]"ѐ"It;ZxީGeV^eZn)^4O+UH3M~5 5Ya-,qGSR88JYI؎ˑ- a%-0!SL Z b2`V@A1-<4`BOőA7kJr"$*H!$D$\BQ7%^mn-X(=F8[_f8d?F4; q^2ᓽEb=q"?;|=4>A!o1 3LQ-DO~2I\2KZ"R}L10/bvKtFtDG# -"L_lL/ V dX-[3Hu_r?F׍OW`=+(ohMRiKtxK -yW wߚoι޶r8⦟zwR{u٣N{O'`CV|«{)#1OtJ! ,     !!(!#  #$ ##$%%)*&$('*&(*++,..12/2,08.0422483737=97;48<48@;;=>>A@?F@?H?ADCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSTXUXVVZYWcVXWVY[[[]^^b`^`^`__abaa_ccdeeihgkhgpfijjjkpknmmqposoqsrrtvvyuxuwy{{{|}~~~~~ecdop_tV^bbmiw\cljef}^uʾ¾Q`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$ *ׯ_|ɳϟ@ JѣH*]ʴӧPJJիXjʵׯT{" 4Ҫ]˶۷pʝKݻx˷߿ LÈ+^̸bcI ˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓo\LУKNq3νËOӫ_Ͼ{˟OϿ(h& 6F(Vhfv ($h( R0(l.h8_s:(DiF&"PFIRViQ\v霖^)昺Ihj;)tIx^ig|~*h7M(i֊>V:aN|)zJS-nj54Xp%j6+$17M-R PKM,Ȳ7 I$F:@k4@ZK@Pm7j4Dkl*닶k-fHKa-f7'~!ʝnɱ.V4@mgN[-g1xD:\qi9nuC<: 3o|-[Lg\niQ_'7ӚDY_Vun6lSÖ_t&0'eOH! > (vEXZ0)@PxxDΡN \'҆B+^.14CNK\CZRGGRoFHGr`dE̗<L`$7kO(V Pr$f>-0"na"A&:` $@ٯE|fYƒ |`;/B`\liHy oq %/d `յ1` @*XNBFIe PbhA@iE8$`a  ~u9iiXpB.3M @.Œ]1Atӊ@I%bVUTNfTF`C WX@ 6)H@I*tHu.̞Y-Xz@ ٛ(<&&R[+AJ rziYBZJmad1& xE*X'\4-h@^LC@|P-0,K+L෌P/|`04#(nLAeUp1rD zjNWgjr UA7ZbWYx* gen^q@ &~U Hdj8vilM &8ֺȬI]t݌x-3B݅)j" rZj1|tn c!8 -E:h@j3Ks-'Vi53E 4D~%ؒJ@c< VW] A!׮"8zr:@t[nlYM}[53t,Z t$~6'pfdd $4azIKZ}[d'i& +֨q'z [vgN^ʃ/A@{krr_*lm]4 NEzb RHdYho8S|Ys,.%_oN+{n#@AΠެ34d1J :&+g i`T)ld:wl  CpD(r_td/t;!/n!X+hY*72o@*Ґ-ӿyi`2e6s"L [DVϕP}֮oٽZ`ld OOk|s]Xex8g;,&sCq `0{}{@hA(Yckvu ui.*|1.S w06VvN4T@|}h/ْ|"hEP<04GvnB~K' CR]fk(SD37JW(7D|ȇ8mf9}7bykf} pnmtndĒ5|3p@xC [&CUN J TdNHMGP0 wz5B6G+0#jtfs560f|(GeP4mQ sBBT&2iv/XDЈ5aW;a:3`fii-`g'&6OBgTFEf8unrsF9TEu|ey(KG b]\D  JSr<:5@ N0ZhƙPHHrӐLqjW06ĂYt9[c0.f0`2tVsK#uUo ]KI304-vx=}PcA:O*Sqp V0[w5WP8j[5x&l4rQ YiGסaySy$nDi42Òn/h1R->X WJ5SsvyESJwp4ETz3 1p5G1!mN⥭:FêV/ƀ5  OY{uN0W?Ӫb^oZ T+V[}y8pS ݸb jh8QV:R8BUը !* :`&V 4P P _RH° 53|! +*n21;W۱V @_S &{,w4)p D[t %kb&S V Z;yP3:"ز-:;[tyti35w4is:q9`Pe;}۷u8pg8~[xX:1#(t(C5r.g 8Pg۰tg/p^ )3J!Єok+K1C1b RT!lO>!j?y [*+:+[ۿb\|& <\| "<$\&|(*,02¢q5l7\9L;<=,?A CEGIKMLqO!XZ\^`bɖ|ɘɚɜ|LJɢ<ʤ\ʦ|_ɈǨʮʰ˲(<˸˺˼\Ǫlˬ<\<h|x!pDpELrv:.F_:[hְԨr )KT q"2iqiG 3h~j}؈ʿ|\0T(`b@ c zֽt`Ko7ب]ˌ uqc@\7bq +YJ`pQod GR. E@B]݄jt46Efa@k\@Ӱt~x@UK@}m]=ƀgpWShpBs @b=p p~r͝*%kW$^* rqgpD x7&[pʶ91ܛ2vjD^䩌+SUM:h 0ms7.n:@J]<>/iQ ٤uF~h.HN={54E׆8o7憸Iڒi^.J.hk14%J2Wz534pp~[s3EBns~>m U8]0J%2@  Xpm=P款rXrKFK5VSB(>Bsq :pU X^w(%X$ӐUBE]UGD@ntᰰ@ŀj! K g u =7]c L 6*~>9;_cEH &%R?xLMOXԖ1Zbl}n=hrQqjp(\O^Wxl_n~{πu?ows̓_?}?zJ<o?_oݱߺ}[ú¯־?ȟΟ@ L ;؟ڿ&U\ϟ! I}I$XA .dC% LE5nGcRM$YI)UdK1eΤYM9]Vύ"u%ZQI.eӜpK80q;tpOJe_ M4HPlNŏXL41E+Z&>@㒁|R*|i`sb(*ŘERi39$sKИ05}YO0I)?>U6Y 5$i&iDcR4fZnq6 Hn}ĘODrXbRR8&=r"H }A)fp"Ut " f ` M 'p$)Aq a4XE/f?/bxB%EӉ xB,4!i wX$ mY`hpb=AdJPH`TpZr&"bvciKe2R`A/t/@1gaGlL`a B ,ju eg} &D./i ֛o`s)~F |;J=}Efe.qKfϧ7^6 :jh| F:RflC4/R6HR{T')Vr ' 8 E!;O D`"V9rnPӠ F,AG¡} @@%>˜"q3Ȅ)TO - w<)QK S$n"*/|A@t`bb >ã2+MCnEu\r$ /H$$P  ,d@86olhO`vH EVMGTOP4 =àܰ!Pz*g2eQ,E 08kŐ -N4p1t0#"6BqvAÆ NKh|7LC-i@DhY@(\A E- (HOF%yAFf# D3h"Np-L&RoxB ^Ij$h#-VX@AXV4@RBMH/.Rk ,0 >U` 'R p UHA+pCBk&$T b y~3 4D**ǽB(P%LA3rЂ$AB1LBs%g 2A9R }{3qk {Ew˙w-<;]|F*-vin8=hKֆZ]0$ˆwKku+ tA+@|JnD+dOKBFT 2ZдO%$ބ|W ŀ*]W ~Hv$UI-.A*ep=?jV/ 2$&a'!q*^XNJqY뱏'!'YG*d(GY@r-<4$`(\K( d.b_#.!C| IH%p!,sϫuT k{7!8D:*=  ,͂וƭCz06W'%MSg\$ns'<_KnQOy?V2!F CZ`0f'0N  ^_|UI~DG &qӝsr[,xu ;?YiX?0? ;+@8AӶX 'Xp=Ry\@ :@4|s5໇p6"-! Ծ, Yi$)Y AB{X `y-C Er>0; ,EC"pT r[1{91lD ß0ÆؓP:7VEVCW@c@i@ O"( [8GEDĆ9J^=`D/Xi 1iܞ2/@:_FƞFؿ W @&S$`E8GҞf6hC`kCA 'O`6EYpTY"!b21$ 7Wi0WZy+%x&1-MY=;>ZjI͑[^z/+ﺁ3`9ͭMƽJHYjWPWXZ䚙Nxy6z'.`!ڗWp\|],]qcH'.| Za&8v W,,Zi)JU$\ s޵^L:0.:ikd]x\X0Q&W(#ߺ_ 0    :Wx~3^a=ᕅAanH{aX)S/ VV= XV="6' 5Qa8bXhjTTX* Cx× ;0<2V64L$ʔ@kL; 7~`Z@acx9nI4pJ:V06݉/PIhch9hb@E9<[`$֚HDP߁ $8^ U%W䢄u R8;X[N_X + ?p&EhJdC5d^[Ja]@Q-FP8L'O) :K(K[JQO(_WEWL1BTA`ܨ/PMR [ȏTK苾iPGL6NKo{ ,86,E`I[@^1Z ,/B6qCcv+JI40ʑ/ 1?ZXF;/K~qe:I,[f/RȂfq_67y6G<;g /8GCP,B1ςw/{3`ߖ9FcZZ30t/"Z6/I'2BCf N9PL~W(#(+2rF8ApP9,Ixb,H.U_@ ύ?r6C79L,r^ZqT`3$ς^/t;r3sMC?uL8v8,@[TQi@%^X?/Ta?/PN3Z(/81IWB@W0Twui'v^tF;aw&_3;b@>O@^`6Xb^/b6E +K8:k|ogǑW~􂑰P4WWȂ,hîiPIh`N1浑_^y̕󂰄f A,WK?n&I`F j1'/p-w3t0tn(aI":>gi/0XQ0f4B9-{YJi%ִWb|jD iC "C\xgѭ/"nL+2RY|MCc)4L| rQ^TE,UDCJWIb4W_~/TXh%<b/%4gDM+vDBILF|m~1Ȓ'Sl2̚7CNТG.m4jc 9G4F_2FQ14AcJPI#Bw4B3V6|fDA4xCWF|qF]|ri[H* JuM"͜+14eM#r!w2 !/ mqbrP2!>MsF|vgU+!l" whX*6NC !x'h֝*cY#%w%Qbs$p}K~9!~p$͸thByDsX4obVX_F&D|q!#}]֢DQ$QB5PeJ&zƔ~/@}b&~b-_}Pq"TY%P^y D! )'! VDH#!^_8x6#Sk{/Kg/vo-^bQl0K-k} Dl|2 g$ˆ/$(Ru fЖT$PT):M"I١˖ "#*4w{ b-V+IzTZcvOJ7DG"Q"^'E- 6WTb 4Җ"0!/[: (s靤5=j,Di/ :Q,$z5WJ^"OcIG G"!P~ dQK)hLX ULk`x2 nA*j\|7._E$[hA-.4 g_.|! c~6,6C RCp B a /\ BRZ'ƀ" ^L-~.=&hHy҆9#X?a"‡,h_@E bBf&6w";\^~d ?yĈy^*X,VHb,Pꑞ!IʔZL X/cx0VRd$fi9)^ ';F|Ȋ1 q,cERa: I-l ,F4W0f؄!"Ȫn E^(IoK*:Byx+z}Zr4;X,1XX9yͣiq|QCBVrӹ 1t^K1@Ip㕌BN2|+\Vް6̡fye pO0A Oq/ptgx| YCOYc9Ӹl6T.D_3KAkWyMŖl@osJXAݺc N$"V呙(3:bl&3)Np" ƹR 'PPh+1tlxB)>"y2#1~A `s߰|$YuI6PP㢁y"-̡0Ns3Awɉ:J+z7 k_0įc¼h`%OxǼ$  Z,aݚ!_DG-BmZQ'#%W(# )V L%)-)6%4<Or=4ڵfjQAtk>Ӛh2ƈEҐMz:14e@NG֎IWjfQMdT[ײ/S5LmK5z]- (̫!n;T2nu͚ϞL/]lEg b W nE8#/MVzSj ,筤 8Im񕳼aQC勾[3q柸{WL1\S1 WAҋ.S0ifnpW^:.e:In;.ӽG{Ev~;/x;h<#/y4's:ka|/ճ=c/Ӿ=s=/?>|{2 B/Sֿ>w耇^g{+ϓ?k#~/ҧAd֏w!\eid= FZ1\ `)i0M T i`eZ PQ N`  :Z _!& rB*n!Baf84eIC>Fv!z]3|V  1anF FPC Ld< }E"`Dxbb\5dd $#A PƢ%B"Ib-dfY@Ѡd0 B ]l*<]B0@D@`+;JX",,B!@D+, @0b80##Sdpg@dF-$7B"@4@D2CbF-@@E]t@s`†9KrAceԣݣbԤ$A.^6 8A%+,LJ|$'*<$X'8'"$*@0%UG)x2DG$\|Sf%UH-["@$A!'h/8d ѐG pUN $+\fI,ANcb8.!bA'Bн],;N"xO*G@c&AB$Q*|B\,TPVG%0\PAb,A`n\#P)LLRdB @% O$P d|dNddJo|(Q]E)$l9,2j_2®N8d1lGO:c{FvbF\x(BNgl\+/(>{84dAdܩB4"BNnCb{N$*  \d!>_DrF(F ^@ghq@i$"%D 8$*XцؒbB%$myNC- .D(4 l&@D8AHN!BxGBĸbgi9eN $@c&֩`H- T LzjOMp@o|lXi-#/#A+@qr3EL,X`4\pDpn>.<06Zc0N:Q'^J٢1b*`D@N0~$@]oCTAO\@d' E`foKւ@$ @\d }ArEG*, Di$$4DbP,%0*D, @G`.1h@\#B"-Fʖ/d񒂫B@(\(@|`A.+~@(4|NChADPj/D4A Bdc- f$dTq^@ 0qE$g0Hrb/BB$ EBDg)1p@F@GBn︺@]&Ay>C' B&!@@qdDFHw$GHpt \@ dӞ@b E -Y#,a 6tC3 JE{F@(:!9YqQ~4HoFC/@@N3^B-;Wlc@Kqv#C ,#uB-],D+D- @wPw{VB*H@{&@lC5"Tb8@@LN@õBlz/'82ܒJ'1JvdB‰~D)@0Ŋީ{ ;ɎmOXD-XL*@PT,AAg| 21/F|O+D Q0"Nff=?Nf ΀~"vG~Ǽ< ޮ.k "C e@sD|>Gn-bb#H4{4ߟ+ϻPί?|KkkckbKgFL dD1c 48Wi 6tC)VxcF9vdH#I4yeJ+YT$\RISd*_yɳ~YiRK6ujTSfǪi9D]F}H%J-L5ݔN=PERM=T!@ ZR"cnyWl\uݕ^}`b=d]f}hjVV[\y!PZuA+jN qv}x块z|ݗ~`{! >^~%-5ޘ]7]h\ram< 1\~emuޙ}蠅墍>餕^馝~ꨥꪭ묵ޚ뮳 3\^Cg %Drg#@ޛ ??_%-5ߜ=E]@䐃gM[m/7zAqhtߝ}?_襟ꭿߞ{qD_Es']V域%eF=|a3'P T@>` m, !Sڶ=`L'ڙl# ixu\X-%88)o4>v>aO "^O:b1Ľ$''cHhR(bsP "q㐶 a'b C` g8`a\!HʣAĸ2NQ"\ZA B\A1"YJSN:dyA)!($,b.;jbcC. ˆ i-ʊ4K%K$0ȌWNh0B0@T'zElNI#&3L w8g.O^XiJNQhW|A?)Z"KAP b3yK~Z)] F+Q鰒Cܴ7+!h6d*PIhA$x)9NCX)m<)QՖ". GePS"PаFa(Y WZWu"bRYԎ4?] [XU"z YWCHa)[Y !_4@:#0.hYӞh;w(L$8AiO[[æaemk幑 ~v%Yp:6A [>1.r[vv+aͫuw]"wIކC4! ~_ \` V`?)\a _/4Q@}`5'~ÊYb1i\c9ycA\d#IV;іFmmo׵ &gܑpC=wuZ>;(!=nw;)ЍBz'a,r}wfΜsޟ'`_hȋ^&OFc!&aWHB^1I^s+-!>nN` "/I>0XibCl^v'!:?7ocӸ tSx]_4@+R8!t "3D "!ncN|u\/_40'l|X84n,,bX/^A^Hy{vn['1v`!0B k, >pm0ψۃ? C̀&)?Eo׳@ibo)l}" #Oo| j@.!!f hVN&RanPJ0D/ ҏN(B fpBPx,!'h^A @ޘ ֖p PNpM P -Ťd#$ԢInMQu$J 'Qs N۶M#ja&5JOSQW[_cQWqG-1q!(p{qE|.pQuqBѝ>ѠQo)dqMۼ1ϱ@C>1RUnƱ0d[,O$q1&t/b#`P. hN H$> B!K̂U $2&mC 6&! A26`!Ib)%Or) 0!!%7 &#*"2N"jp^HH$4C'bt>&HR.!~# :@u@1s*[ eG&-Є @` I F!4,z^! a| 2  3q-4 hn " BS SjA1w~`t" 3 p#"j j ""V`,A(Od%qs2 ^8!@#a׼r ^67 `J/:q."*w/2*, @7\ l3  N_ d`!\ P.>> xa! a T pb&!`5I z0`C1ϰ;%;Fʠs\ABيHQBCIE2X 4亴I<7a 6oS#_ f!, p" L~`1!BF&3#iAC27APX!\GU4Ji^`Jݯ  `'_!=Qra'} DuSZ>L}TcD+bB^!"$A!x!=;!@B 6A1A!^ `5 h!O/`pS^!lt!: r| h.=qZ #DU5*A#S"*4#;aPπb ?@K ^ th6UBe'! S@&#' \hBi1x "kvVP;v Ev*_ ^.< _#k!*j#\!VnQ!v[ꯤow)6MI4p WqpP 5eWrqd-"r'Wsrr-Bp7WtEs(FutSu]buuk$;ˑr{wxWxxxw2hwv:F9yW*7z)0W{wKK|w%w0|9wJԗ}7$7l~}M~Ww]~7 $; Xs"7~pK5+p) Ļ$-H7“œ/=}h Ta'~F>HRتh`hSu33@<qrX" &D(Aؠj a.!\|#>A&A4A@TaW\NmA$\˹1zFp` Pfp /tq- ZV obb z`֎<9"PRt^n ZoRaF `Ng`'u F ̏hX9ы$?\!:a}`&P$a:(A#p܃?iSa| f>~([/]1]hz`I>~@>!`4!峠 .pVVW R_X ^-~ ;__`$N=?bKhAVN: ߧ\'@iAyYyۜia2X)`>6t njSO ?JMDcɴThdY$EiVㇱi_Z`&ŢKf\FGiwXHpέ4kڼi,Lc<{|u3Nnb "WDIJ4T$HЭ6_ 6رŊ=6ڵlۺ} 7ܹtڽ7޽|NCf^1CbAeZjI8~$IZ=t;V\ФI 'D"E4ucɡlbiQi'3Gcs$8uj E3-I2yNU4 l`H`L-?+s1X4!,4fad81%ӔTB@Jb+"Y^fMP[Mq*0r4,q)| b aK1֔NMiS'^U0)7a%I" ~ grIgvG 1DJI"DG,HYL+R`1KxRR84wwM7Qa- !RLb .8 (x 8| -(8_Hr hwbǬfv #&*I!$"$,yg o%I">HCc̀fRp1wӼr 3x8d-0KJ&5-38̑I ,0_30OJ2'%0%,"I*A"bKo^ vb}"-ԂbjR l6O V)1h5ơb)7N8Sy&KDWU3q j\yz~QixD :j~S{w'N{uj W|\A>s;OO}oo;s׏O~Og`MξѣOߏX?Т9o~+@޽N \0/X'EpAq8 bp$, #|"Ej,hu; oI(B~ qD,$*FH'ƽbT,jq\t0т-Έ4qll8E-`Ȯ1q|#ְN]YHDql#rGJr%/Ljr'? Pf2,)OJ%l+=IWrc,k\ܥ/ L2,1c*s̔W2 hJ@Ϝ5ͻT37Ups>&9ωNc3l'.x=zs? Ѐ t-AЄ*t mC шJtE/ьjtG.? Ґt$-IOҔt,mKʔ'4@M! ,     !!(!#  #$ ##%%%)*&$('*&(*++,-.12/2,08.0322483737=:7848@59<;;=>>A@?F@?H?ACCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSUXUXVVZYWWYWcVXWVY[[[]^^b`^`^`__abccdeeihgkhgpfijjjkmmqpmoposoqsrstvvyuxuwy{z{|}~~~~~ecdpV^fgw]cjlj^ff}tʽ¾a`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$l ׮]tɳϟ@ JѣH*]ʴӧPJJիXjʵׯT䬬ٳhӪ]˶۷pʝKݻx˷߿ LÈ+&xcnj#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ NÌ+_μУKN6سkνËOӫ|}˟OϿ(h& 6F(Vhfv ($hB,k*(4^r6$@)BiL6 NF)AIXfZv嗶q dYf7p tN)gxYzg|Li(eqf։.JF`NlF)y:,^*3Xp$Z*$1z, K9+ĢI$qF:@ +3@*K@m 7*3Dt+lݚ+-e8 Qk-V&@jE ƍ[nš.F3@mf>-f1w4\pe)lntC8 3Lo~<-Z frnhMO&3ÚDUOum2,OV[ls&,'d82k M0e%wukiݍc܉](;]V8Yu0j@ˢ2.y;yzn9䩪o/wcgϒ2X #D^ u7 +-X0 IhBK}^0yHHۃA ,ĨA&*>Td}&O @8.8ASB x;HA )\ aȂtQ9U`3X8g sFW *`!r&Nq #)@9a]#0@U g.&!"Р4 /PAXZbceф"HKWx%3}GG 8AɸuXWd Opk?t8x,;xT$ (]\hT$>zM!qM ycA] M/EB`TAK*J p#0h̗!;Xgx+[J`O8C/s nDe tA P:s7ΘڊױjZϳ@Y \,'`\#E`}2(Z3 a P"kY T,,8!A`XHJqa`WOX @Uhh)nJ0dQ>+"uX7YLsVS--"P7uPQ[ `N@X Dڤ0TUD X$ Ը,{d`BWu)T\?WۚF]MUR@b04$F@E k\*톍q ,'hB8p @вx.  A`,(Q,p(<`.A^`ȉ'Z 75] YBwW-l`%^ZaI [xkp@B`&yCmS 'xU$ uXe,NT"d?lv53`, |+ le'[ 7b{ /` X %h7M. Û8b@sX 6[`g 9$ ޒF ZJ?(H1BAjpkZ&7#Z50vSMNУ -^͎ힴ4K.?2B f%/X@vAX. ΞЧcK!`DeZk^%,a% ker<,|]㐣:5@QQK#8 kE˿N93W_nvKZ˄a[iW&f7P,/7cQh}7mHpyrOt\AP0RfΐvTׂ3+=Zv 88AdsS7EhP3fCȱ7O`17<5-YJY?;ׁtRY@bJ\L g3ȈrrebihrHdh6Hi,: uFu/ (F]hqƈ{ (`Y&8T`~fa)\ s/X2#`he Zvvs&ep:Ii)_g!ia6N7TFC&8enRqXvB TB5xb9(G a]s\D@ ZC J٦DX*[_7ZuB g (YWq3O VŦJO@ JWq 'P^(moT!u]OR> hW\L+A*RՂTUNX@]վⲰ e@ݽ@ose9P_/maH=!P_Vi=k}\7mǼԗ^_fO`bdnlrp^xV~?G Hf6o!7lT⩿ݯ?ڵ/2q_E-ƿ6M ɟ0<_؟ڿ',o/Řn_F=KoO%$XA .dC%NXE5nG!E$Y!)]TdK1eEM9uOA%LIYSQNZU.eӬaŎ%[Yi1nڶ+XqΥ[]ٺn^&\pĽ}ycȑ%Ovxe)og-c^9iԩUJa6f]mܹ?~3l'.w.s脏#o|)ٵo~u:֕b^y%'&>)D>$~z4d[?aRef3F YXpD@Cm= pbI8A(Й8tpM~"Ő] FDrHę[3 CfYR>8ct2HI*~p$GgVҐaDCHфMgK8әI΀13u1M(tFG?4#R$5HV GgNgRf؄5qי)YG‚Y"@h/OZ,IsAZeʥp;8h)pع&t gpؙOfډ'AUhb=~xd jFH]v[Qr%1Fqh{U\UA@;nK| #@ʁ0Mfq' @ 1j`_ "$n\B'g<q0!`# rBam Tf@]̠ v̨8 0>4@lxC85cLE8GxH\DBRcoA PH X1+O~Gn" #$"3B $8H`@ p4B<l\>=4q „(X- "4^ q)R>!ixȔ6IzfK.*hAt1e9cR06"2ŁsD0B5Ž g@TI Bl % `tȁm J؜+dcb Ks! 61J4')[Q q8Pf4A$xfXZ ]8h"F] ra:ئG7h)p1Vs X`DbJ&4L |B@ @IB DBW!ZNӛI#Ho( 5< T{A/cP Ip@\8\Af *~p ĽW5F 9 cq86`u?vnQei+Ju dtTU%a[hÁ,ļs}b, JfWZI"؅D PEpH{"W!]n[U4Q,j' 2{yzoA_un`?d4}O*7EDf$PXB0da" Éb8W#qqRbG e)}8=rW!;>r<$+y%}rܝ(K&Lr ,K_&smf%9>ffs]-#DFCpL+ vs<4YD @ъF4?GZU t])$ 40M6R[&b8(xCj#5ER)L\"x_.f]X;8xp(!7`g4r|yk+ H$@ 4q$8w^W*|Hu#kAduǛ& Y }۝R D dwЇrn:Ep@lM!X62 l]r ۬@@3qpȂ¼YphB^K}[J?Z\o}IH)I #78 hf0`:}8-`_ ,/{)36X6xڪ?'(?Q7%'8Xks㒮ȿؿ6OS@C=҅'Xp=PY@ ?BA AY{i[8i@[h~t^Ap#B4D#\ $|ֳ=ȫb| @Cp>`8,H"CRuR;KCK,5T6tMC83{P4k5,P 3irQфX h0Dc,LLMt4M6J/"rZ(=9c,HFXƆUH)<0iQZ53G}|0t t ;DM5>S5"M5*D!F8O#|H%u+fD I(h.`;8ftG|I4Fs9MKI$3ư[Jd$s@83|JĿJ;KdlKK$KTDKILL L|L5LKtLȬL`נLL0LL MLPGu? TCAB=TC})eTHeDUFHԌpT,TNIMJ]ˉbT.Yl{iBTU7a/#ZO[ӉX%f-Y,ђ*'/QC92 3i5)QBD= V\*)].i]X"Ȗ{oi%'1"؅{hڱ$3h0 EqKr=ΉOd("pm+A"M+gᚆR{ؿX̸u^$8Bx RFd5HA`2!$$P3pjXTECΉ"bHj.Hd@H UڷXYjj= :LcR.빜FX%j!0(ā!(FeK]OP(Yr(U(U؅PJ(p.UUP} j,|Q,8Hap5u҉pژX&6uT,,.I)U$] 1%Ќ/ >r\FgUX/I OG Ӊ #a-4RY1ItarRaNbT%b5bLE VbxbPXNō bc0cb}V@BYU2@Ï<;s4:~3J#*ˌc N ?vdY8cPAG32S14&߈/x&Ihin{: j )M8!iRh~jMHG]Ijk\@w NUXIH9EZMp3\Gh Y(Y@h~Yen9M;/| Cx(898hRA M@:VgBNlM#+168I څQP&\P](5XXM(9Y(;֘igNANOH]Z@qCΪQ`OT`QF )l\Ѕ3脃*eF ,0P/@*.>95Fp3R@lE .?ȂY/P;Ȃ25p8QkCOL/T!G淂R8AF?8ؓ&,e/88X*oN8,n/RX(C,HNP]g邠1<jy;GBAO.0OA(,ȑ?6ς I/S3Pr1Nnbag Y3/mX5/'Gx'1:Ap^G,BHEQPr 00iC0p G(?߄,Gph_,pR] 7;I8Jф,ev5F?&508,p80H180tL(Y3g'A*$rAr8CAZp\+pv3Xp3X/00O/?8TQunv\C0]P&M30r:;a8>ʂ\P6`6`j>.j&B(+I`:̕Klg_f(3TȂ,gn zg(GH`/xLp0pgi]6~hd,;f_vI7u&F8C6/H2{3t8u~k&-,G":Ӓ6޷Ig. `NfٵoiB9;33U]T9HVQpe+atB !AAqv9t3GqD bf:cOU&alvX|Bp8QLd"b#UbWpC b J Y)`H!Π \AN,C (|&]0)jXB0 X1OL3qMAO(1\+ .F\)D"i cV&AJp@t,p]͆F[d֤A[2/bt1YU PhfsF#~]ccJp3!Bdt,x!dY b:oAJF#Ȑ ]pX M\kE#<3$hXA $'$b׺pb3\ pLH7,8hmB ,<F"6euK >Q1^Rl. fa# YqLRa ?dҵvk 4ͿH6)r0CL&VC0 2$CbWFQa) -1HqgL7oBTj}>Դ|ҝ|Ad3 X̊$48TVR U$Sz3R4&8L 3I1ih̽eS 8[ a,Ԑ93dSD CsfRbf#AFn!M4c~;o҉BM=(Y"[c2Ԣ䍊Р>Ms! %ehzIIzg23|I:[Ҵ߉(ľU/G@ 0\E#t#LfE6N8 ;g̐qH~Bl_:GuE3Ѹ^#FrLLf5ٌACy%хP(Ͱ&] O8j^4&M;kVo:Ƕm^M_z4HF8eF,;EukcC{49F:;NK˶4?3$,*73`{&e=b[4RYloZߎ7HK6è)-FخS`Po+>9s~8xA؞M 9c|6Ne_ҵd!9uI3~M! ֿ>s?jJuý!ӯ_ \"~ ( C=UO?Ν-\dƅN V\Z 1l_=lD`gd \*h``h  `n Р٠` 6 :~ 6 k k gD~!ya*ā8A9ZFn!]2a  1 b^ݡf!]MT$*&'HxYD+@0` (,FF8,*-i!%nJdig@} ]F)HM&@A@E`A,"= Db--F @\*( @@bNb2~n|EVpj@,$9!5BJ$E,@F]tv؇8#M$ch죨f!J0NBZB%B 8A$*8Nh$t&B)<D$&(8( $K)@B %DW(F3K$AMhT~eXH] !@$B &|.ā8 |K pV: $*t JB id99&d*(͙M(<: )(0d&AB$)h_(X%B X#B|ڟ3GelB0Rt8C @rJ( !,:rՄ#hcEF M@^Rͮ#|: P!3EΎ$ ,'ĬfhRM}E(Ĉf.3@ FAЩŠfP 18CG:dD h3p@/x*P `38ALa!Nuҫ^Va@&$A&IN B RD)@E&-m*&DLBLnҮ.A4@/Axzj B $ڤ$`~+AwҲH\"z:Bd)k歞 HѲ@7o# #J3$0I!A*@qd5/G8, lxdo3p.J.I<dp>$%ʚDe nB^b A s@*X$ 3 H04@DJ(pB@ W/H@j/Τ,hE@PKGڐ(HvdWBϲ&UHA\:C.V>B# !D@@ .C8r EEB@N_''*D.l$qq&`( h/b0( + 1,4:34 (eDI.BBӣ, !~$g\@ 8qF3e_CFJdr*oF04.h$AzB̈Lg0zA𯉖EF+Pe,1$섲#&$pN`HJ,@l3NY;-/ )K2Q:ΌH:B͞x%@nTmz$KHpt \ԞbӐsE4 Z#"PkDG!@ tg`to)r SnjH'aI\ pQ3hV$,sf$)hs- 8/!Dv,`( D**P- Lw\{H&B N|&mC5!T@R8@8Qun#(O'!hB:@)/)8B3N(vgC e.@V(ʙ0i)lRXAm[LB)@PX(B{j}3 Hmm?1,hq*X* rGq r'1TfcjFȩs $x( r0\ZRl@DTo> H ((1*8BB@#p{ ҈$@ * h %;Bt2 0-@fD2Ih\02 10jc:PQ4g|Bz? @qҦjs=61H8C,>,H'8C.B0<#o{ dP t{o'$_r{yP|iB+t1Aԧ3*c YU}ygLPr#1Jf@Ԁh0.%ѭg9}AXtFnz @k!cΟǼmz#-&@~mb"-of˗  (!@pt~qޫ C.k րˋF>s>W*!E~μMCW` ?ni1>>kYb? $6e;$?!# ~3 4xaB 6txpRCbI=(ŃtdH#I6$I]4 fL3iִygN;yhPC\8"QgrL*ȓQA9IR[vlXcɎetaMΨLSN8խՖg'p` 6|qbŋ7vrdɓ)W|sf͛9wVa$I6}uj՟vko[ei׶}wnݻyNxțtSMuo˙7wzt<z^~%-r-e/I#1U^]~emuޙM蠅袍>餕^馝~ꨥꪭzj(4XOA ܂Y6Î~垛ޛփ ?_%-5ߜ9< 7YۏNՄAf=9Fmuߝ}?_襟ꭿ~WlR?_域Qd|" X@ Tχ d{b: Or:!閷F}lT Yu ~ZaIRZCr!yT&"awBQ8Ć.G I * āو*PESUA~ `3t Ct(D':~ GCd% *R)9=[f42HI|"L&OdP)-T#Θ$B\Bl J]>%}"Yda\)3a!͌8ɞi^QNe0i3!gC8oYN{s;dݲNUL+>ӅX~D\MB򟡵_oD^=!ISӞQXۙ85 M}E\ō,nXY:`nA@]Vȝ!;An|VRH,f~_ \` V`?)\a _o}kg>H$oPb)VYb1i\c9ycA\d#vx\IL2aYe/a\f3iVf7q\g;yֳ?h@p肋Ȗ _CShG?ґ)]iK_ә9iOԡI]jSթV%-X:.R|_׹yk_]lcVlg?і]mk_6w`%P^Q0\Vnw]o{o ^p W pkD"w1Nq ^9q!I^r)WYr1i^s9yǻm]O&^IWҙt?Qԩ^u|?:A"V^viWڣ ^Zпywnܧ+܆;XWnz_y_Usլ mxǟy׿>]1zS^9={W|?ї_}_Oy]XIH~_i]z?bp"i  6OA-E3P7;?C0HY> H#ZA ̀L΀:a $T !:D  P -ua.`F00h na n  P/3Q7 MIM+̰ۆA I  "Jd ut:@0f@ `HAYQ{io+@  p!`O|4(- R  2Hh g-#dab" `~" +!X@`F!P~qA &k&o'ˑ Q@"A `bq@B '+B(B@!'R,ǒ,vE(@" `H8`h A$!| x@&! t,'2+2-(gh`/`LQ` `PB . Z&5ebX`>"28803cm3 =ۖqhavd#Vz3>aPB[d`AP>#N'8=>/9KK-s5#N:#!PVo*n@$sAAӶSTPz*1[=3tC9BGDK=%Ԫ.8DD_FcTF!P-gTGwGcEFq3կGH2ĂTHHJTJ RIIS%TaiKKL4j'S-oMMM/NoN߯NN/OoOtRHUQQQo!Q#URe*R/SqaR7USS'5SGRCUR?SM5RITU5QQS]QYuTeUQaQmRiSuWsVyWmWUWR}XXRuYYXYuYuW1&JI/'"\\]֕]]5]]]U^u^5]5_\]_]\ ` \^6v]a!Vb!^b+b6c9vc1c cAa5d=d%]%e%!PUҋfKfKfkg gmL(zhgFwhֳ6-UhiVV9TiVkjjbköjMEE&kmCkk!AKkes"$5vBnocmSB%q@U& :kUD[ B`-vBVs#/"p'lTT ab@bokissw7%w}!>wIB=w! B0!uafQ4PWȔ/8 .A18B4"nv>Hb0zu ftw`xvp)p  @ * `v! @ z Bj "$    6 2 ""@,x}Bx@~v xx W#V or#U Ahׇ)3ׅ/A 2!r p d!)23 Ϡ/ p  b7#y+ ؉ql_EbmuA Xl*̠5  &X` `L "`.. !b :Ꮍ ) NX ay%B *h`+5؀!taـ "NRaGYbr9A 4 FY N9auB⠅]T x $ ;:(Tw ba'm"0) zv)I "pY Z 09"dZ p ه P%^W˜ZWȠ=[Z2yq/t!8rA%p!1H F|BT! `T-r/UnMy A̠Xh D" x8!9q1A  *+ P Ȁ5>a ` AEq0 @Bwp K @KB@R\{Ta;q d!9#q [r;ʛO:ԻILQ©͹ѹ7\J.<9S9\ē%Kt'|SGJX]6\k=d>m]׏w;z]L $؋QDQُ=Q]گ۳]۷}}2+Q.J]ם]^ ^#^#7K6;?C^GKOS^W[_c^gkos^w{O$ޫ~J^gtuJ^꧞ĵ^Ǟ驫^מվ_~_#_'+/3_7;?C_GKOS_W[_c_gkos_w{_D_E_{ ""~!_ÿ$$pKu_uU_M_ѿ_E(T" <0… 1B0b+Rԥ*ƍ;z2Ȏ,<2ʕ,[| 3̙4kڼ3Ν<{ 4С'u%䌨R>)ٕbTUĜY5֭\zեd˚=6ڵlۺ};ԙ$`ڽ7$$T7c>8Ō;n+7I+[Joԓ/{\X鰉K>:j#O ;}SvkhY <]>f;=7ԫ[q-+yY˛?>}빯ûЅW?>1 v U|[}A_>!EIB99KgȲN&exA 2 l`.#uh8DI2 %^`A?G{&j`82dR"|Bي>cb3ЂMmEZ2a C*~]8Eeܱʓ'&32J^IFf~ږ.ED)R.h&t~)q&9CK!p&R*@'ן@u2*1G2U8r3VGD Y@I(A^4t" 8׃D[ЭW2} 3c̋*//hD1/ISk_#ؔBȐ5 bT8-#͂D0)qMTU{%'*hA ++Xp Dtaf1"P2{*k0(,|fF V(ҏ6噚" Әg1Qa0:$ÁpbLM .l&Tʒʋ,(ta)|p3p?YQb8` @ a٤F\NbQZH9 M($H'RkKwRjv2D|@C bXHp-bF3B^#c &fE8U y@ h X 3 KHV,<'=,~cؾ&,g_*\F ]HG֑")!*ĐD xQSe EZvk0޺nI)m1hQqk<^F)z҈c\D.ecK8LNxdjyT2M~(w'3?Yl0yZ}<`.C&|M,y@\N >A@?F@?H?ACCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSUXUXVVZYWcVXWVY[[[]^^b`^`^`__abccdeeihgkhgpfijjjkpknmmqposnqsrrtvvyuxuwy{z{|}~~~~~ecdnV^fgw]cjlj^ff}tʽ¾a`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$h.]rɳϟ@ JѣH*]ʴӧPJJիXjʵׯT}ԬٳhӪ]˶۷pʝKݻx˷߿ LÈ+Xcnj#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ NŒ+_μУKN6سkνËOӫ|}˟OϿ(h& 6F(Vhfv ($hB,k*(4^r6$@)BiL6 NF)AIXfZv嗶q dYf7p tN)gxYzg|Li(eqf։.JF`NlF)y:S,^*Y3Wp$ZL*$0zL, K5+Ģ׌H aF6@ +Y3@K@m 7*]3Ct+lݚ+-e8 Qk-VL&f ƍ[nš.F]3@mf>-f1w4L\pe)lntC8 3Lo~<-Z frnhMOK&3ÊDUOum2,OV[ls&,'d82k =0e%wukiݍc܉](7]V8.f9>׉CŒ,:g=zzn9䩪//wcgώ"W w#CЂ]su7 ,W0 Hd2K}o^0xDшDۃ1 ,ä1&*>Sd}x&N ?0C.Ÿ@S x7;D! (\ `BXT\3Xf kFG)\j&Nq (@5a]0T fU.$!Р4.LAXZbceD!DKWh%3}GG 8AɸuXWd OpK?t8xA,H;exT$ Ѩ\\hT$>zM!qM ycAᄀ] M/EB`RAbK@*J،p+0hW! ;Xgx+[B`N0C/s NCe tA P:s7͐ڊױjZϳ0Y \&\\#E`}2(X3 ` @"k T,+4!1`W@:qa`WNX @Uh anИ;gE@ 4v`jź5)n! v+, @^aP[$:@$`]WeO,U NAKj[Ө5jkaE X f(!`-ؕK6ݰ1͘AeЄLb-Z3ϥ! 6hT $ [CE>ץ\" b9QD W:n={0fA(XpchvFm̀;2 G123a`um_D@{\bvR-+OYţ ?o~bwcI*4*t.8`[y9AdO73{/ y"xSH80>{f#K݇\m-%J=vhi@9 Yf;7nG,U78PM5bICt,4-`MBք# G0wzr5B6+,ices2/ufx7T4iAUO,eSh7u/Dޣ5_;a:#0f:'uDh;k6{-A}D\σZӂus`@i3|{N7(#~δw8<'+hA*i%Xr8dh6(i,D u6u. (6]haֈ{(PY&8Tp~fQ* \iAi<%3pAufs&Up:Yɵi)_g'"y6MA7TFB&8EnrrXvB TBExa9(G `]\C0 X TEJSsrtyD`OYJpp1Tz3 t1p5pCj1!pmJtE{T/`1  NXxuMW;T_e^k* T|+'i`[y98pS݈biQ*i R8@BUhʨ) 9 #& u4 3(+ Y@5#| `+Ѷ*PkV2- W㱣_ ";,6`4c)o P@ʚ !;bU5;4 J+U[[u4#)K8/w8>'8G3,r[a6GxZS6c[[s*t9e E&ѨQ(LH8PC/*Ggr)4;Ùa{Jr*q ^[)3L<2ۻʋ;=5jHK͋) \[ѽp+;΁;[{ *ۿ<]B)| <\| "<$\&|(,$" ,Ll ,Ll_IlG1T\V|XZ\^`:4a|hjlnpǢb+Pr|xz|~pAaƀ\Ȇ|ȈȊȉCAȌɒ<ɔ\ɖ|su ɞɠʢŚ!pC0ELo6:*TFR]Wvf}֫Ԥo1 J `q"2eqeG 3k+,Xֆ}ؠq̙ Tv(0b { wչ4 Kk6ئ} ˋoAc\7Ġ`p*XI^@Qdm C`Q-D0?=r36Ef_kѝ\ ͠t~$eDI}qlp1 u65 - j'p L@04Pz*. pRQvK=$~Ҫ}ݬt6MMpX0QGc ] Z~l2˭+#%>D 4M :p6gߦStٵ>د քuE^fGIhx3B7TWvji<0_^d-z^~nQEp?X/T|^s{pp~Ws2BBjc^~')IX $[ 0 ޶ Xpi +5<to轡nQ1X2K}FcKVSHn! :@U W\7(W!p|uUB-U6C .Ap ښS8 Pkse9À0?A:lap1!<_OjnAF;N?T/ZK oJ_\;}Ϝ^_f`b/gg֣n?m!t]ozN dO~y͍?3ng_C.Al?ݮ?ص_h_E= Ȟ0.?_؟% oŔni(o_6=n$XA .dC%NXE5n1\D$YI)U5K1eΤYM9uύ W%ZdKI.eSQN*QQYO"WaŎ%[Uir5[qΥZC_'V/f㾅Oe̙5oq„MiԩU3 ZhҫeϦ]v֮Qjo[IF}gƏL^t9tٵo+}DC&3U駣R08ϧ_ʇxɇJŽf'3FXXh> +[iW h p  3 aB@SCBE'H"3' [r@ $bb=]`@&bGlNJ%Z+ZB~IK@FȖ& 8~¸YpgI^Q,GzM|I p  # hf0:H, _ ,(9 3F\ p+ P'mS+pn >Vf?(q:;?đ#{bs3h \Hki(&(?ճ@!\d@H@ 0Q@-! p, VQl^xAA-t@+6SKZt{-@Bkq78,@p!0Qm03-,Ġ†Ȅ;:8PB86QC(T@a0(f L! 8CE AAx@p9EY;= b/ffd+y/9[FŔPĆT?"<(cѳR3 Fv$2m ]<c 3+8XPvGw`1G,%@FG5^H\+W1Xs9EKkI1H!IG=пcLzIIX9XGJIL2KcJrJKʭ6LK/K|K3˳tKK˭KKKbK Lπ&<^̇\C  ES] a3| O0IC@FɃPc3ЅIBahhL 9毟X0cHTI8÷z;QRdܡ:/ O`Y@QIN9Ix@I@8Hhs}.'5i.M I R`*'ibdM@F@\Hhd[@p]KQH0M IЄF(IpĈRP3ci}#l("37MLйNyg=yN끀zхL%)ƷHQO([\ 4WhM 4';~yfN@,NݘQZiRFfxQFQxlȾ\0Nȷ6M9B0).p0pT@.-B[3H?aϛ+0.N1`f-?H.H;x*4h8QPB OG'LGXf2<a.0x8)򨹂XpZC8x.'Iq^3,x]6.pOd-/7Orz7_G=O<.(J@ +h?2G.xK2H)Ifax\fX2@tх. "eW4.F'+2@dȅ!/K7 OT38,ǃ*)rC(Y :,ЅFcW,-R]Ps/ /r7wD7E,`nSaQH2x%_?t<DsFDOI()v+hYMf&[(.Qb/1e/.x+2ItB3@@x87pyXvcJ7Ӆo+a b L(-+3p75Go4oeUf.Pa 4IW;wy{e:I.p!R0A,[ynF,poBhdp~+fr.Fȅ.BPgr]:/H("OHQf.2g`Cx1&FYT/J7ULgG8Fݺj#|0'2}lKae7J).xڰTp{uX,XR5˨f%%3Ú53L&v +#I"Bxq iXK?aL&ّ DFfr!5ӕTjK*RWPM$YPu%؇D]y[lQd\ZLXGkR&0R(Ȓ'Sl2̚7s,yTaG.m4Ԫ9 Ă" Br')t$,,6#$0% o~r$hj+#d#x(MݭCn*ai3a^+b,!) _ֵU1!\ghC4P6\."I /!6#]D Q7O U0!8( IȦooͅ삿L`!9:$4w1,Ib3VWtJ$ -8,Q%URo+**XKش )rÌ,m gUWP  `+28R ~[BeH"odc@FclJ SV9l L5%G eZ9c2aS eSP *l 'Q`m]x`PItMxM33TI7A"a(öC0HE[#ԢKeVt50.f1rFݚ U2CDAЮyk\v&x^b,H&4-3 ANZ[K$Sj>3L'k,f(є=`g;~G>?<3^;mS<.xcj oXH?=Sճ=c/Ӿ=s=/7e21$0>/Сm_F>/~̓>3C $RjD_ڎ?N^_HPf_je_%.  0D   jd<`v~ vfXa` qe`Ơ `ຕ``Ѡ! Vi`ihdaV^!nF*A 4A5:[zv!a%e  @ `fkPZ!K*#Z'DAKXH+0\ %ʡ)6b>P` @#Ă! A LAbF\&b\!dL `gBaFd y ]t)$I*n@D@\A)": "6c A!." ,\8fDxfB`D,# LD_Af8$1A<$XX`@:g\A!K@9^;j[<0K>2?&@N B MI}B!M#D&DD{d'8AK.dQ*8A\R.4AD!tB@%|h}I|A*E&TZ@x_!%^(K.,eB(A'(4e3T>'8A^ @@!tvhc!\`ߘXDܚI$8c3hT& (`8B&̅T#DerjLDhd $@p}  A]BD`kt^mώVDXDw6B<Xg)vDAdβ4ﮘA#-T#}l0i,^D$) 4iE&>6A]H#hv0@vAD6O o^ /S\".GN ,fHLVVF!n-E  hms@'$$ j3Ge~04DFBP2d,h@B@( DPjEB${̲&RDA\6@+V:J Xd]h! D@@T1 tBRk 0BK '*D@.hB$@o1@&`@ 0ol'( 0,16Cm34@L JEk-'G1:ƂNDF66 }4?RY襩ot2bBB(LCJDx'@|00 _nF^(F&$B/["w:C# gB& @@@rlF0D44!Dn Pu3$CYj3*Wd#$,,[nd҂GD`K 0 )@:X$;-T50k] A? VFACND&B S?4D+g 9Ml3P&$,t>F(#7 @pI7 B\DߤFѢopsh@d(Fթ$g0ZcZ.BX$@l / \@#DpXnd4pB,vB&mL2}w.p]Os*thH|ShG]0-i xO TDXL)@t@U(=?x hlcF*ЀH*ıBS.mvV֢S $CCjGF,p"^! 4gX!ݻ ? D~ sFsF#?W?~hL  CͽD jʥ??D3 4xA$6,8*0)Vx0a2b5aBIB4yeJ+YtfL3iִygN;y&%$L:5Y&$1!uqSYtkV[vlXcɖ5{mZkٶun\sֵ{,ɒJp` {bQjQRrdɓ)W|sf͛!+|qfR?uujիYvvlّEvZٻyxp'׶mQę7wzt_?ccԹw|x;_ǘٷw-/>~~or>(#;\ d -Þ|0BEă6Ë&,]|qLlEmyqF> 3{TG"\&[2t*l(%.,TKi&4\6|8圓:<ܓ>@B =D]TNfTRAL5ݔN=PERM=TU]V]}XeZm\q=^y]LQH'ԠddDD}hjlݖnpVr=t]v}x块z|ݗ~f+eX5vd JS4#%-5ޘ=E5~U^]~emuޙ}h/&c3 F aLhe`c=묵ޚ뮽>^<~垛ޛ ?︃>heeiSZ=8e<EM?U_]emuߝ}x9c'ˑ}襟ꭿߞ{:aGr0gx域G_OœtX@&jIf, T)XA n&tX (׿= !/XB'K@d&! QXCp%*daH\Ya B !+Pr3#D q 2 W.XF3Z )f`1!\,I ?XgF)bAxO1ɸ HGZȏ `x,FB#$A[#IY ET.)L k0Cb7T*[8#2a|+7i3!f.L𒇾0XH 0H*0Jg~ၦCzx@"Iy@AaըX2uf&9n[< "_!WփQ[ny[p[\Ur\>ѕt[]^Ck{j- hx[^Uz^|[_~_ : spl4롔$cPa _9a!I\b)VYb1i\cx,_%E/ IVd'?Q\e+_Ye/a\f3O,zp/Qg;yg?Ё ]hCщVhG?ґ)]iK_Ϻ0\>ȍh:. SթVYjWֱi]k[׹yk_]lcٯEUi.rQmk_mo]nsVnw]o{[ۚt.R]p Wp?8 ~Qq!I^r.x7[S^s9yxjWIW5= }ԩ^u_Y7阏;zN[v z*J.i/u] _xWx?)_y__zan$̞o͟WYz׿9/tJy Oad#HFF7 /\(h_}_}ӽSĽuv}00QLav+Ҡ#a`Ypb `@#Ra "BO'+/30j$FN.`F00h` n a n b  p4 P 7l@. H (Hb!B `` 0f!pR8` 8!`ڮQ8P=M=0?S?CR=s?@ 3ꓕV" 1B#TB'B?RA1:C;T*`/D_oD]D[DY/EWoEUESEQ/FOrᓆ͈.al4zG{THHmGIcIIo!I4JTJIIIJHTKGJG4KH͔HTIIMߔMtNٴNNItOOtI5PP uOO5P4Nͨ0>n %2US5:S?T!aSGT!TOSKUUMUOuUKU]UG5VCuViV?V75WuuW3WSWY5XX{XSUYXUYEZuZWYZZ[5T#A\#Fq,UP5r(.C˪ޕ]UU  ]_! _U__`j`s`RSaVbaR#vb36*65/%8VcC@;cK"4Xʵ&! &b\Vdo6Od*I<֠ bai a I "  2 w b r w  z )> @j׀#tw~v@|n o;{k"@ibR!ޖg|v} yv `h~.IqT @f m-h7$& "$H6" 0 !P 7 ԱC @ P D z lˠְ 8ޠ~ pX-# h`"x+Xp}$r!{` !̸PAcʏؐi7A 2 r,Y 8!]C wG!`"6Y!#~`w# q3wMP>)rYn X ҹ .(w ҄ UmSUmsa y'% Z9Dr0/8!a^in@ >a !6 ,*@Dw R ! (lF| }mR7X . Rv|r 啢% +QBÜE9!Xh/A b$ o &Mr 0< غ`˜ˠ C!h' p b±Vn 1>!ߎ6" & ] n Djzt}B[Qc:1!zFʔ[Ĺ=zHWv$7;G;aQۛE;G1ֽ{D\V[+]GdW*B \a{+܂H:,7H084CF<6@\OEH|4L[_c^g9~ks^w{^臞^闞^꧞^뷞^Ǟ^מ^~k9]+#= | "_'%*%3C_b}gS_WNWW^_g?ys_w"0~_pR_5_>0z_"Raie#u_ןp) f/lw?cɬf ,… :|1ĉS1ƍ„m2ȑ$K<2ʕ,[| 3̙4kڌ,a{ 4ha fL(4Ro4ԩTZ5֭\Sܹ4رԈڤMB 7ܹtڽWkh(ƴ ClmŌ;~ 9⽆+ֲ慈* :ѤC7&ͬb>r盟K۾;SY.8fb ҂ju Y{ܻn 8j 2W5dC(WꩋfVI#J!5L*uMyaNU3ЂL qݷG$#0 >Ҍȁ%T.>h-`!V&vA%B"JP T=HaRNIJA$yHB hbx,FYO.P20Ѕ> C bGBbЍ$ ҈!|@ 9Rg3)oKR]DXP0# ȁ͐' C *$2J,p%,֓{Vl:L'i 3C&8lg3  +4q 1ͼC,\RHP:pH3J m.2W`.M p(C ƙ1@ ,P+Ԫ %ĚI2 d22d!$H H!\b#"P N? un4Bg17J#  2hC 4E Hdk,:䩋7Bo?Ia7CIX$  iLM0I37~Bq?`#1#'r+2:!$JݢI8TMGM|OFuTH#X:n0CPBvq( $44 MAq+?EPf )tkhk42ӱj)D* q QE  Q0v !dxk _x@MJ$1. z`Zt@G 7O AG@B,b( 'ьTSt!ћ {$fg x`ZdAQAX $ $^ BFc aPY0%/c/K,q,za0p2 yB^[c "A&a.:\ٔ,kƹ(BD&$ -:rj4yA8yt>A@?F@?H?ACCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSUXUXVVZYWWYWcVXWVY[[[]^^b`^`^`__abccdeeihgkhgpfijjjkmmqpmoposnqsrstvvyuxuwy{z{|}~~~~~ecdnV^fgw]cjlj^ff}tʽ¾a`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$l ׮]tɳϟ@ JѣH*]ʴӧPJJիXjʵׯTdYghӪ]˶۷pʝKݻx˷߿ LÈ+^8q"G~L˘3k̹ϠCMӨS^ͺװc˞M۸sͻ N5KУKN뷗cνËOӫ_Ͼe˟OϿ(h& 6F(Vhfv ($h("0[2h8\<4(DVdH&$G.PdTVi%xS^\6e`)fn_ihVfl馎o)kiV։|"g=&'Z^J.]zޤ$V**~j \0 =  $Q =##PC!Bkt$A:=sFIhN&V )óP(V -V{3Nkcf= ǸxHr 0r0sL $pRz30'>#|ZZ K][ε>!p & i"[*%OYKꢉͳ&3֖Q[-ݨԯᬳ<-ݵ p lَϦI3 ZM2@/kQVꤻJ8[zH7~#0Wu.ӨVF >hWNy}u߫g>9m[Ď ;wLR0-`ސJ 80Cc6LR8R#R8!j1 8/CRw&X’tUp`3.KB@\jYȂx o1!d X1` @*`XNBDHe PBhAhE6$`A  @|eheXpB.= €@.Ӌ,x[VJLsohh-f \DPu7 *Y4(I@ H*P(@e(sejVRD46Z_ 6'pV@fIC_T m !d6NЄ*Hh9b@iQaYQ=DZvQ{qcʁC*&ZKt:9wѝ XJd-N7='"-,ض *JM8S-h  N80HA@ !"'ĭ+c3 -ZPH^ ʄVXf#mW.L'Y|P5" Qn{pK` E0M.(PЀo4@sN f̽*LK Ғۄyx18_ @roFPo # bzM$WpIvka*Χw?!T\֛# ju\T$eMv6 Eu6. p0I 5ܠUa3ib t׼YJdVm xZ6--4X5UۅVGG8̙ago _eW )k=# EKǡXx.o5Ymζ2@WV{J ׼A[|4> 37O Qo [Ea _! f=B>Q&ԸSNC^lX"iui/M" (NK{-. YE֣˅L9:څ,d pN 0pF $ 7v Ne ^o,Xg5hF,{F9cf/rZV)[1ܘUf-8c6b4z 8a9IG{~sK!]dOts{%tso/WDp^*;f' 3+3Z$C/p^O23admcDC{\v-G~5@Yȳ Bp~fxI-DRQt1$8[y89O:c{/ zR{H8@?Ї}fSK\p#.)J>viD: @Y;67VnK6,X79MubJEXt$-d-MFV~3 G@0 wz5B67+/Cjc.gt6&0f{8Wu@4laO,Qe lwu085cG;a:Cpf>guF ň>ck9~C-C}F\Z֒u(taic| {Rg('6Ѵ{68?+7+j-Vv[h)GiÍvB\WlW'cϰ 82n׵a(75kC|CFP0Ȓ90jNl!=2(3p^U.g:'iPrR דW\BV06qHHf#u.q7yFl`dSZ/H8)l:YCUT7X!xݥ1 IlE@ ˣYpyvF7r$ @G+B \B|R@ p8{.y 99pm -Y?0 'TNWiEs੗H00s:YD E1 q^h-> ISb<:5 `N@ZX ֙@HhrπLrlG06ÒYd9ZS0/V0P2t#xitK#uUp ]KI $-vy?G}PdB:P*S q@ F0[{5WPXj \ExClTrQ YjGס`yT&yDn$v41’t/g1Sv-?X WuJ5SsuyEΆRJqp4ETz3 1p5G1!mM⥭*F~êX/p5  O Y|uN@W>Ӫc^o: T+!wi[~i8pS b@j7Qzi:R8pBrq*9妏d:_Φ zbΦ : Xb4 WC8璛 bm2 `f( 2Kt尘5%K l 3VK#8 0h+ zH묚'_L[oUF# Y˵1 Z 6B:p,l;Q|y#t4ƒ|K6d~gPU;jw8_趭ög˰y4bPO8Ss/.wjsY7)=K11)a^ (#J!@~q[+K0S1a(RTAlO?! k>i ' [ۿr\| & <\| "<$\&|(*,02¡q5l7\9L;<=,?A CEGIKMlqOQXZ\^`b\?`R@f3F%"YXpA[ $jApbI8A(Y8tM"Ő]"F\t`LNFh܈3 CfY?HI8$!U"YeMCIb !E<)4〣? 8SC>gTqPtH;(šMPӇ4i@|f^}3Z}gqDZ0D<*GZ8G]&)F\tYJԨ,bD]AHqqDD'X¡$pSC)( ~!g@]';"f0 tqȋt$=(ā` tb"p( @-b6F"h!^9\EeOhH9Ue%8U]R&ZJبE‰"8X #eM![CX(UXx",p *^GYQ`p"!IDnCg䙈 ?ܡUf] ~]?eweېhydH}dQ/vATkGkӼ>lշAWCs!qAU{V2B | #dm y QCA\qПCpA4 tz]P 9;PKwA1v1B ,0BR@ ؄& OB$0RH6Ap@Ȣl1tT bЉ3 4p)?0V&V3A@* \Z$ r`?H~2YBmRL"y!u(fw!n)u圁B2}9Aa,>,p/e -Ia`؅($n8WaWi_X/_i,sN"B#܊j"U {6_oDTRl"" o1 ]Ro=P<%YqGu?b6"LtyD OЬY(1LxKfr]l[6YSړ Y*gY-r-Y鲗v ³Y,"'H7 @~w=QH*mj9dr$#@!=.kFcaxDkD<#o)2Pʢ>~Ć0#w.jl8 ,~? 3NGyסs|q-u#p 8C; /,R}C>?T {z$'ou82 M@&2'CqH-> P9"h ?6|롅x(#8m,; u @TR 8CdAy,$]}>,[%@4$ H73 CP>>ྎ8U 8p#khY?@'(F7%'?k{C;lA27%17U@`Ic҅x'Xp4>W ALA?B0@@p_pBB8[h%|^hBВB;*t +܈>@hs @CwY?8h,N8" DRxzRCRԎc0g$q@ cFz$S̉TLOP CփCK 6a˱zLHYGGc 4ߋ88^Bȅn[8ЄaCrZ\5hcAlIPzɋmdKtIlQ#J;@4mԸNI2ȟ4L K:SKKJtDt擈 GJ̾춭 0:@ȲKgJKLLLL1@L|L`pLȬLLLSK3cI LL< 0MlMPވApMtDMTMἍ4NtⴎߜLNL̏朑N$FLN<9\NJO?cO| ;TOOO PP-P=PMP]PmP}PP P P P P P%yܶ:(Ļ[#Q=\Qe tQŨQQ Q"-R%e#$]R(&'R+ !R.e,. S%S3 23]S&dS8R78S#S=4=ӞSTB AuBMԖ8TTTG%) *}TEIBT0TOTTRQ$Qi$ )U2 sbsUU5/0`$]N^S_Em/9\!3 Z\3Wm\A8cUdT%mqх )sG`aPz!]W&H$1Иa cWTpYTQ2Z&E8.%LUupB(iZ0ue :/ +38oܫ7 2XPBP]%LPQ<2', '.2U𩓴ݤ]:]JX8&<|hT8-Hz.Y)*V$]-Kӑ/ sz\@g#U/r>㍤8HEEQ%90H1"n̵0 KF}[X!"#~$N%&a(/+*6Ua|e-2.^(ѐ`D +\M B\OJ@:GJc";5ވ]",>d# C3@U@p/8\038kcYs:e1fQ(HđLo5AxMkC>R0UzUO;0ie LX] <&J)o@@\TdN [3DJGkM0J'MxaڭIIPhZOքa؅I0QI*m]8N8V,UT+C  /808UA/B#3P?i ,8/ V2h?;,xU5,p(CPGZ60qY,0/`C58@xm+O!3i.0DrY@ bC8.pInl‚?!,e>/8OȂe}?8.xC@q(8sLP9 3 ;B".,hT8>| f .hR8$I,i\N,hBpe0z nqG+gyF/iC8~y]AIr)_IАQ;fg.~3ghC@9soZTP7QSGpFȒ'^r1*s13Qm3~|Lb($m8I^v={˨g*TIvQ #YY VY "Ăt3GqTbf$>cOe*GJhi.4B(f-H^8L*w,1^$t!I$*zمNgAx!H Foʲ~j Ș9z0mRjAqdjF}.)iga S,tiFJ!jfJsuJA0.̨`iNEB^-%4f $xn,3Oe$/9JcKr1-eCۈ~YӢEVH'dH41!m+,2zg 2.˰ш.&iR͚*$bFgs KK(_*d!z@N?#Ɏ|7J0x, Jx!%yH.Њw8C]b\8C F- YatѸ8F1^ĥ ZjR-Ra>!0IF \OBI EqD] H4,p!!^1֞! 2X)T8I]a4e&hYE P!$z^h0>1 <ѓg|"8Pdb KMd2Ȼ.Ih !^zaE:QIgHlLjk8z\F qJU`,Ba _3A"m2SHNv2e)gMV<-(A+hğ|I)FLs G4>M1DvFIU#vB3w:4Dͬw֨z5&ͯej 4uA`)IhmmYD26M9:M]835u}l%ƶijS?8j,i E4}ᾪ"Xk3M"޸j\ 'd̒t1|z6yip4|ByWF&&FyWR8BIꈧ3^7w?_?;Ӯn.vې]b;~>w=bw<3ǹ_C<3s^<3mΓ?=."2s=o,YL=s=/?>3>/Si4A$p>/ҲYnѣF?/^5D $(bnȞi E\|\ȝ_\fn "\1 U`n\ i|`   B`j¡ i` a !p`` N!"&RNl8mh\aa*ā8=r[^ֆ!  2  A1!&\za`ah^e%**̀''HAD+X0` @*".U!F8,4*!/bk&!b`dAklk8`F 'kơ$@]b.#50x%"jiB $7%.a&>cF)QakHkBcApLD4Efj$5Ax<`>k`O=@3*0" 4$B`qb4$RMB!<#&HAHYh( A(hSBI) $r"A$9,tp,D @@=B#@,@3$)B@`&&pl\@X(\ diBP3A&" DdH* <1L@+AgA(A 5R&'B@#B.(@8D@8RD!lDD56glBLT$+*DLBd§1nALXoAxAÎjLdB $@ۼl$akAx-ΖHA]BE|:Bil)ퟶ HhӲ8񯲜#-&#@J3$B/0A!A*q@6oH*8, 3p4b.A<V8%̀F$AX(}qZ`v A ms+l$ 3 'Hf04@PDL@B ooJ,hF@dHC0V>% d!D@ ЮEP (Gj]0CO?'*D.lB$@sq&`@< ozp(h?K1,5>34L <DADBd,4e#ht񅪆 PGGDKdB⫲HHt o|dA|BNCzAF^.Pf(l1$@2%&$qP``L,@l3fo@[?-=2>æ̡I:BSϺo%l{$MHpt \1 ֞bEmむ[#@:dE_!@ nix+ ̓k.lqJ?J\ DS3j$,ǂ$)1ڢ@pD|w B&\DL㨂J֢@v@wlh)K%$gv1@`Z.B)% 0 \#C+A!In)`߶7e8.銆5Y.TI*pޖF+\e]|d@7j<!bA)F 2:F,Dbjlybnqk<=P#XB 6tذa"UcF4vdH#I4yeJ+YtfL3iִy#GŒéϕ)5PхQjTSVzkV[z j'KJ:LZIun\sֵKPVWI4=+3MIZ,ٴ&Nrrdɓ)W|sf͛9wthѣI6}ujիYvmIh׶}wnݻ?FxD7~yr˙\KЍ&Vyv۹w|)Z?=|zٷw^xE~w/+> <\&DJ8ňc -C|0)*0EC"nB]|e "gܑ}pCq<$ !Q(m *ܒ.ebJ2 0+6|4M8O圓<P 䳡,=Ze]F}H%J-L5ݔN=PERM=TU]IQХ܉UTI\uݕ^}`b=d]f}hjlEn]- X2efdD}x块z|ݗ~w >^~%-5ޘ=v-e\5]#1emuޙ}蠅]>餕^馝~ꨥꪭ묵ޚ뮽zk(4hQk4WLi6Îޛ ?փ%-5ߜ=EI< 7iܵ^fcda}?_襟ꭿߞ^>x=ه]:G域TgX|kHl> S@>ݧ e|jEb:mIX}0h4xi+ iXC)bN1XDxP:  B4HD$*$L, BDmD!BxiT;  y3(C#X,bk )B_è<-ˀPB^<2#u'hePT*I* (3.Ć %YK_2ȕ;\byTa83єfaŘ2LgA#g4YT3'i6nJ#,0 /Ҝv-%(d<>P#TJ@ w6W,@p uHI vDG"yB`gBd9I5갓@EYQ g8. QɛQ O3Ӣԝ-IB T~)*FZ҉%IB &kA 0}ѕt[]^v]~x[^Uz+]U5wۆ4~_ \` V`?)\a _Ɨ5 @!rPYb1i\c9ycA\d#IV M'ks$ e/a\f3iVf7q\g;yg2#R-WBVhG?ґ)]iK_ә9iOԡI]jSթV#]'(TByk_]lcVlg?і]mk_=\$R_q[BVnw]o{o ^p WjWB 1[[r9q!I^rỀ*i^s9ysr\>Wҙt?Q:ЅNREOwʹup.piWv}6axr qB-C$ H !ZA ̀"΀:a  "T !OSPW[󔏓IvV`X.X  NB8V `P80(8L  P `o ՆA I #JdAb `2PhApTa8`" :!?CQGQ|nǮ  -h@ >! aV8 H!~ HAQUJfКJ!da# `~"-!z@ F!P~qa !/cPM1@A `q@B  ' }B`"@!!_&cR&gLњd/o O$# Z!zF TA   Ta@(!%iR,ǒ,rmrPQBh/`P q p! o: Rp/!v.#2#S2'rԒo'wVwAb>G3>a&B\d`A&> TNU2sS7w7y2 'R_\lP$O!$2"ebvA8n7;S;7#+837Ǝp:q7n=>s;;?-?S?SNh J? @>sTTB#TBRA[AT-oB7C;+ m>jT ESTEWE[T /DGs,F/GoGGG/HoH}H{HytHTTJKTKoJKeTLǔLqKTTMMLTLKtMKNJTMJMJTKLL P UP5QuQPuL5RtR)5L-R3US95R=RARPͫRFi/'"VcUVgVcnWsUW_V{uWW{WWVXuVuWuY5WUV5ZV5X5Vu[[WU\\\\u]5][5^u^V%_%IH&aK`K"F_ v`&/TXabjb/sUb7.8!6a9Vd-U殇$vdS<;AeUfee56fo֜f?kV-BbLZ5&Azc&dgv=tvA;){#. fe `wBR#d b&4 iӶ8¯$B1>#8 IF"I$F o$F %q q BmCd('# 2B0o a Hv >A4aJ5W1 .!+#`B4' v>!Ha0tWy ftzw@rK>$<h @ ȶ `v! @}@t B@`~ @{ɠN ̷D7,h 8"@Зzyt &wt+w#d Ė#H l R$ap /,ŗl J d@,?Aa/ p  7* :qABDof=B$ 7 !R W EK @ R F/  2 !  5 6׌c* RҍnsCBڗ |!8(89y ĖB `Y Y D /IAB@(dYkB zE#޸7$ Xtp "Y 0C#BW p Fف@Q@'Vd؇V@YCZڸzoY;8@plA"pA1H FwBT!`;Ia WX 0 ~;t XYu#.IBB5B X@ z "!4z ў&R 60[ Fj'4 ٮk[*ڄj5`!kO d"!8w § ѹU&;Q.ض{&pʟgڻ:ϻJ[j/W۽Dep۾$r1ۿg$e\3 \G$Ub{#B U52\7;?C\GKG%턯_[\Ƒş#g{ƁscdK$cȋ\Ɂ$$ɗ):ʫ|G\]˅s˿D-]}=CǼ#];O"./SR23}GS>ԇNS]W[}~ 0Jos]w{؃]؇]׍؏ٓ]ٟٛڣ]ڧګگ۳]۷ۻۿ]ǝ|)f]]^ ^=ȳ)"-C7sv(bC^GKOS^W^Y_c^gkQYv{珁~^y^e>^꧞G^뷞^Ǟ^מ^^_ __'+3"7;IC_G| b臞$N_S_}#$c_g?0ths_w ? {._!u7_ V_ǟc_C^7^ /~l_?0 <0… LBٰb+S0ƍ UY2ȑ$K<2ʕ,[| 3̙4kڼ3ΝǡDr,HF:gaZ5֭\z 6,ȟA={4Rl3FJUܹtڽ7^d X ҈k&Vjܽ;~ 9d}[~:XiH'xѤK>ݸri of 3Шk۾;˂;T ;̛̅;T)3sFR4 )_?UۻLS8p$[ՌovϨ DqUAZ #!it.FQz}b"#4CDoT23 ϨHdCNBMir* ga!DJ!ll^U#~ fR O.2 vqhR'g`23Sg!B;zYP/C1 ,w`T!g1)L", (D!j9#>韓G!x`Ei҈#hH >S'hWL) )I#P䡘nhxR&!(0C 8h,CޘD ,D3pC W<>蟢C DРC1P8-xC*3/#,;CЂvg@,p ⶶGNn#jL*\ &Di*8"(4b,H#ѵ7em^M#4$貋,< Eh -<-$`.JK\Gn?S Y\* j< ;%`9? IH}v K&ұ] }wE9 ,!dB 21Mb=w q(,$ ,(Ϡ@TАCHZAv n !%TR?8 gy!hC`bQF-=c@>Q-Ek6n$>8AI+G4 X@H %GD Y@ $AVA(E(hq%{ >PHXe7PFʣ+-"hD#w+I4R2^#d oӡ'? ʒ}fREhQ ,3!\⌉< Ab|6ADv?N`J C/{^ɤТCb!gF"I8bG7ќ+ȶ?5;5U wĭu`Q)Y~[~'YE+b=b14?XygTAH/Q,eEwu2]  \JxdmH,>xa x$ ?`{^-_ c6,[cx>A@?F@?H?ACCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSUXUXVVZYWcVXWVY[[[]^^b`^`^`__abccdeeihgkhgpfijjjkpknmmqposnqsrrtvvyuxuwy{z{|}~~~~~ecdnV^fgw]cjlj^ff}tʽ¾a`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$h.]rɳϟ@ JѣH*]ʴӧPJJիXjʵׯT}ԬٳhӪ]˶۷pʝKݻx˷߿ LÈ+Xcnj#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ NŒ+_μУKN6سkνËOӫ|}˟OϿ(h& 6F(Vhfv ($hB,k*(4^r6$@)BiL6 NF)AIXfZv嗶q dYf7p tN)gxYzg|Li(eqf։.JF`NlF)y:S,^*Y3Wp$ZL*$0zL, K5+Ģ׌H aF6@ +Y3@K@m 7*]3Ct+lݚ+-e8 Qk-VL&f ƍ[nš.F]3@mf>-f1w4L\pe)lntC8 3Lo~<-Z frnhMOK&3ÊDUOum2,OV[ls&,'d82k =0e%wukiݍc܉](7]V8.f9>׉CŒ,:g=zzn9䩪//wcgώ"W w#CЂ]su7 ,W0 Hd2K}o^0xDшDۃ1 ,ä1&*>Sd}x&N ?0C.Ÿ@S x7;D! (\ `BXT\3Xf kFG)\j&Nq (@5a]0T fU.$!Р4.LAXZbceD!DKWh%3}GG 8AɸuXWd OpK?t8xA,H;exT$ Ѩ\\hT$>zM!qM ycAᄀ] M/EB`RAbK@*J،p+0hW! ;Xgx+[B`N0C/s NCe tA P:s7͐ڊױjZϳ0Y \&\\#E`}2(X3 ` @"k T,+4!1`W@:qa`WNX @Uh anИ;gE@ 4v`jź5)n! v+, @^aP[$:@$`]WeO,U NAKj[Ө5jkaE X f(!`-ؕK6ݰ1͘AeЄLb-Z3ϥ! 6hT $ [CE>ץ\" b9QD W:n={0fA(XpchvFm̀;2 G123a`um_D@{\bvR-+OYţ ?o~bwcI*4*t.8`[y9AdO73{/ y"xSH80>{f#K݇\m-%J=vhi@9 Yf;7nG,U78PM5bICt,4-`MBք# G0wzr5B6+,ices2/ufx7T4iAUO,eSh7u/Dޣ5_;a:#0f:'uDh;k6{-A}D\σZӂus`@i3|{N7(#~δw8<'+hA*i%Xr8dh6(i,D u6u. (6]haֈ{(PY&8Tp~fQ* \iAi<%3pAufs&Up:Yɵi)_g'"y6MA7TFB&8EnrrXvB TBExa9(G `]\C0 X TEJSsrtyD`OYJpp1Tz3 t1p5pCj1!pmJtE{T/`1  NXxuMW;T_e^k* T|+'i`[y98pS݈biQ*i R8@BUhʨ) 9 #& u4 3(+ Y@5#| `+Ѷ*PkV2- W㱣_ ";,6`4c)o P@ʚ !;bU5;4 J+U[[u4#)K8/w8>'8G3,r[a6GxZS6c[[s*t9e E&ѨQ(LH8PC/*Ggr)4;Ùa{Jr*q ^[)3L<2ۻʋ;=5jHK͋) \[ѽp+;΁;[{ *ۿ<]B)| <\| "<$\&|(,$" ,Ll ,Ll_IlG1T\V|XZ\^`:4a|hjlnpǢb+Pr|xz|~pAaƀ\Ȇ|ȈȊȉCAȌɒ<ɔ\ɖ|su ɞɠʢŚ!pC0ELo6:*TFR]Wvf}֫Ԥo1 J `q"2eqeG 3k+,Xֆ}ؠq̙ Tv(0b { wչ4 Kk6ئ} ˋoAc\7Ġ`p*XI^@Qdm C`Q-D0?=r36Ef_kѝ\ ͠t~$eDI}qlp1 u65 - j'p L@04Pz*. pRQvK=$~Ҫ}ݬt6MMpX0QGc ] Z~l2˭+#%>D 4M :p6gߦStٵ>د քuE^fGIhx3B7TWvji<0_^d-z^~nQEp?X/T|^s{pp~Ws2BBjc^~')IX $[ 0 ޶ Xpi +5<to轡nQ1X2K}FcKVSHn! :@U W\7(W!p|uUB-U6C .Ap ښS8 Pkse9À0?A:lap1!<_OjnAF;N?T/ZK oJ_\;}Ϝ^_f`b/gg֣n?m!t]ozN dO~y͍?3ng_C.Al?ݮ?ص_h_E= Ȟ0.?_؟% oŔni(o_6=n$XA .dC%NXE5n1\D$YI)U5K1eΤYM9uύ W%ZdKI.eSQN*QQYO"WaŎ%[Uir5[qΥZC_'V/f㾅Oe̙5oq„MiԩU3 ZhҫeϦ]v֮Qjo[IF}gƏL^t9tٵo+}DC&3U駣R08ϧ_ʇxɇJŽf'3FXXh> +[iW h p  3 aB@SCBE'H"3' [r@ $bb=]`@&bGlNJ%Z+ZB~IK@FȖ& 8~¸YpgI^Q,GzM|I p  # hf0:H, _ ,(9 3F\ p+ P'mS+pn >Vf?(q:;?đ#{bs3h \Hki(&(?ճ@!\d@H@ 0Q@-! p, VQl^xAA-t@+6SKZt{-@Bkq78,@p!0Qm03-,Ġ†Ȅ;:8PB86QC(T@a0(f L! 8CE AAx@p9EY;= b/ffd+y/9[FŔPĆT?"<(cѳR3 Fv$2m ]<c 3+8XPvGw`1G,%@FG5^H\+W1Xs9EKkI1H!IG=пcLzIIX9XGJIL2KcJrJKʭ6LK/K|K3˳tKK˭KKKbK Lπ&<^̇\C  ES] a3| O0IC@FɃPc3ЅIBahhL 9毟X0cHTI8÷z;QRdܡ:/ O`Y@QIN9Ix@I@8Hhs}.'5i.M I R`*'ibdM@F@\Hhd[@p]KQH0M IЄF(IpĈRP3ci}#l("37MLйNyg=yN끀zхL%)ƷHQO([\ 4WhM 4';~yfN@,NݘQZiRFfxQFQxlȾ\0Nȷ6M9B0).p0pT@.-B[3H?aϛ+0.N1`f-?H.H;x*4h8QPB OG'LGXf2<a.0x8)򨹂XpZC8x.'Iq^3,x]6.pOd-/7Orz7_G=O<.(J@ +h?2G.xK2H)Ifax\fX2@tх. "eW4.F'+2@dȅ!/K7 OT38,ǃ*)rC(Y :,ЅFcW,-R]Ps/ /r7wD7E,`nSaQH2x%_?t<DsFDOI()v+hYMf&[(.Qb/1e/.x+2ItB3@@x87pyXvcJ7Ӆo+a b L(-+3p75Go4oeUf.Pa 4IW;wy{e:I.p!R0A,[ynF,poBhdp~+fr.Fȅ.BPgr]:/H("OHQf.2g`Cx1&FYT/J7ULgG8Fݺj#|0'2}lKae7J).xڰTp{uX,XR5˨f%%3Ú53L&v +#I"Bxq iXK?aL&ّ DFfr!5ӕTjK*RWPM$YPu%؇D]y[lQd\ZLXGkR&0R(Ȓ'Sl2̚7s,yTaG.m4Ԫ9 Ă" Br')t$,,6#$0% o~r$hj+#d#x(MݭCn*ai3a^+b,!) _ֵU1!\ghC4P6\."I /!6#]D Q7O U0!8( IȦooͅ삿L`!9:$4w1,Ib3VWtJ$ -8,Q%URo+**XKش )rÌ,m gUWP  `+28R ~[BeH"odc@FclJ SV9l L5%G eZ9c2aS eSP *l 'Q`m]x`PItMxM33TI7A"a(öC0HE[#ԢKeVt50.f1rFݚ U2CDAЮyk\v&x^b,H&4-3 ANZ[K$Sj>3L'k,f(є=`g;~G>?<3^;mS<.xcj oXH?=Sճ=c/Ӿ=s=/7e21$0>/Сm_F>/~̓>3C $RjD_ڎ?N^_HPf_je_%.  0D   jd<`v~ vfXa` qe`Ơ `ຕ``Ѡ! Vi`ihdaV^!nF*A 4A5:[zv!a%e  @ `fkPZ!K*#Z'DAKXH+0\ %ʡ)6b>P` @#Ă! A LAbF\&b\!dL `gBaFd y ]t)$I*n@D@\A)": "6c A!." ,\8fDxfB`D,# LD_Af8$1A<$XX`@:g\A!K@9^;j[<0K>2?&@N B MI}B!M#D&DD{d'8AK.dQ*8A\R.4AD!tB@%|h}I|A*E&TZ@x_!%^(K.,eB(A'(4e3T>'8A^ @@!tvhc!\`ߘXDܚI$8c3hT& (`8B&̅T#DerjLDhd $@p}  A]BD`kt^mώVDXDw6B<Xg)vDAdβ4ﮘA#-T#}l0i,^D$) 4iE&>6A]H#hv0@vAD6O o^ /S\".GN ,fHLVVF!n-E  hms@'$$ j3Ge~04DFBP2d,h@B@( DPjEB${̲&RDA\6@+V:J Xd]h! D@@T1 tBRk 0BK '*D@.hB$@o1@&`@ 0ol'( 0,16Cm34@L JEk-'G1:ƂNDF66 }4?RY襩ot2bBB(LCJDx'@|00 _nF^(F&$B/["w:C# gB& @@@rlF0D44!Dn Pu3$CYj3*Wd#$,,[nd҂GD`K 0 )@:X$;-T50k] A? VFACND&B S?4D+g 9Ml3P&$,t>F(#7 @pI7 B\DߤFѢopsh@d(Fթ$g0ZcZ.BX$@l / \@#DpXnd4pB,vB&mL2}w.p]Os*thH|ShG]0-i xO TDXL)@t@U(=?x hlcF*ЀH*ıBS.mvV֢S $CCjGF,p"^! 4gX!ݻ ? D~ sFsF#?W?~hL  CͽD jʥ??D3 4xA$6,8*0)Vx0a2b5aBIB4yeJ+YtfL3iִygN;y&%$L:5Y&$1!uqSYtkV[vlXcɖ5{mZkٶun\sֵ{,ɒJp` {bQjQRrdɓ)W|sf͛!+|qfR?uujիYvvlّEvZٻyxp'׶mQę7wzt_?ccԹw|x;_ǘٷw-/>~~or>(#;\ d -Þ|0BEă6Ë&,]|qLlEmyqF> 3{TG"\&[2t*l(%.,TKi&4\6|8圓:<ܓ>@B =D]TNfTRAL5ݔN=PERM=TU]V]}XeZm\q=^y]LQH'ԠddDD}hjlݖnpVr=t]v}x块z|ݗ~f+eX5vd JS4#%-5ޘ=E5~U^]~emuޙ}h/&c3 F aLhe`c=묵ޚ뮽>^<~垛ޛ ?︃>heeiSZ=8e<EM?U_]emuߝ}x9c'ˑ}襟ꭿߞ{:aGr0gx域G_OœtX@&jIf, T)XA n&tX (׿= !/XB'K@d&! QXCp%*daH\Ya B !+Pr3#D q 2 W.XF3Z )f`1!\,I ?XgF)bAxO1ɸ HGZȏ `x,FB#$A[#IY ET.)L k0Cb7T*[8#2a|+7i3!f.L𒇾0XH 0H*0Jg~ၦCzx@"Iy@AaըX2uf&9n[< "_!WփQ[ny[p[\Ur\>ѕt[]^Ck{j- hx[^Uz^|[_~_ : spl4롔$cPa _9a!I\b)VYb1i\cx,_%E/ IVd'?Q\e+_Ye/a\f3O,zp/Qg;yg?Ё ]hCщVhG?ґ)]iK_Ϻ0\>ȍh:. SթVYjWֱi]k[׹yk_]lcٯEUi.rQmk_mo]nsVnw]o{[ۚt.R]p Wp?8 ~Qq!I^r.x7[S^s9yxjWIW5= }ԩ^u_Y7阏;zN[v z*J.i/u] _xWx?)_y__zan$̞o͟WYz׿9/tJy Oad#HFF7 /\(h_}_}ӽSĽuv}00QLav+Ҡ#a`Ypb `@#Ra "BO'+/30j$FN.`F00h` n a n b  p4 P 7l@. H (Hb!B `` 0f!pR8` 8!`ڮQ8P=M=0?S?CR=s?@ 3ꓕV" 1B#TB'B?RA1:C;T*`/D_oD]D[DY/EWoEUESEQ/FOrᓆ͈.al4zG{THHmGIcIIo!I4JTJIIIJHTKGJG4KH͔HTIIMߔMtNٴNNItOOtI5PP uOO5P4Nͨ0>n %2US5:S?T!aSGT!TOSKUUMUOuUKU]UG5VCuViV?V75WuuW3WSWY5XX{XSUYXUYEZuZWYZZ[5T#A\#Fq,UP5r(.C˪ޕ]UU  ]_! _U__`j`s`RSaVbaR#vb36*65/%8VcC@;cK"4Xʵ&! &b\Vdo6Od*I<֠ bai a I "  2 w b r w  z )> @j׀#tw~v@|n o;{k"@ibR!ޖg|v} yv `h~.IqT @f m-h7$& "$H6" 0 !P 7 ԱC @ P D z lˠְ 8ޠ~ pX-# h`"x+Xp}$r!{` !̸PAcʏؐi7A 2 r,Y 8!]C wG!`"6Y!#~`w# q3wMP>)rYn X ҹ .(w ҄ UmSUmsa y'% Z9Dr0/8!a^in@ >a !6 ,*@Dw R ! (lF| }mR7X . Rv|r 啢% +QBÜE9!Xh/A b$ o &Mr 0< غ`˜ˠ C!h' p b±Vn 1>!ߎ6" & ] n Djzt}B[Qc:1!zFʔ[Ĺ=zHWv$7;G;aQۛE;G1ֽ{D\V[+]GdW*B \a{+܂H:,7H084CF<6@\OEH|4L[_c^g9~ks^w{^臞^闞^꧞^뷞^Ǟ^מ^~k9]+#= | "_'%*%3C_b}gS_WNWW^_g?ys_w"0~_pR_5_>0z_"Raie#u_ןp) f/lw?cɬf ,… :|1ĉS1ƍ„m2ȑ$K<2ʕ,[| 3̙4kڌ,a{ 4ha fL(4Ro4ԩTZ5֭\Sܹ4رԈڤMB 7ܹtڽWkh(ƴ ClmŌ;~ 9⽆+ֲ慈* :ѤC7&ͬb>r盟K۾;SY.8fb ҂ju Y{ܻn 8j 2W5dC(WꩋfVI#J!5L*uMyaNU3ЂL qݷG$#0 >Ҍȁ%T.>h-`!V&vA%B"JP T=HaRNIJA$yHB hbx,FYO.P20Ѕ> C bGBbЍ$ ҈!|@ 9Rg3)oKR]DXP0# ȁ͐' C *$2J,p%,֓{Vl:L'i 3C&8lg3  +4q 1ͼC,\RHP:pH3J m.2W`.M p(C ƙ1@ ,P+Ԫ %ĚI2 d22d!$H H!\b#"P N? un4Bg17J#  2hC 4E Hdk,:䩋7Bo?Ia7CIX$  iLM0I37~Bq?`#1#'r+2:!$JݢI8TMGM|OFuTH#X:n0CPBvq( $44 MAq+?EPf )tkhk42ӱj)D* q QE  Q0v !dxk _x@MJ$1. z`Zt@G 7O AG@B,b( 'ьTSt!ћ {$fg x`ZdAQAX $ $^ BFc aPY0%/c/K,q,za0p2 yB^[c "A&a.:\ٔ,kƹ(BD&$ -:rj4yA8yt>A@?F@?H?ACCCEFFIHGQJGJEHGEIJHJGKKMNNQQNQMPONQRSSUXUXVVZYWWYWcVXWVY[[[]^^b`^`^`__abccdeeihgkhgpfijjjkmmqpmoposnqsrstvvyuxuwy{z{|}~~~~~ecdnV^fgw]cjlj^ff}tʽ¾a`*\ȰÇ#JHŋ3jȱǏ CIɓ(S\2$l ׮]tɳϟ@ JѣH*]ʴӧPJJիXjʵׯTdYghӪ]˶۷pʝKݻx˷߿ LÈ+^8q"G~L˘3k̹ϠCMӨS^ͺװc˞M۸sͻ N5KУKN뷗cνËOӫ_Ͼe˟OϿ(h& 6F(Vhfv ($h("0[2h8\<4(DVdH&$G.PdTVi%xS^\6e`)fn_ihVfl馎o)kiV։|"g=&'Z^J.]zޤ$V**~j \0 =  $Q =##PC!Bkt$A:=sFIhN&V )óP(V -V{3Nkcf= ǸxHr 0r0sL $pRz30'>#|ZZ K][ε>!p & i"[*%OYKꢉͳ&3֖Q[-ݨԯᬳ<-ݵ p lَϦI3 ZM2@/kQVꤻJ8[zH7~#0Wu.ӨVF >hWNy}u߫g>9m[Ď ;wLR0-`ސJ 80Cc6LR8R#R8!j1 8/CRw&X’tUp`3.KB@\jYȂx o1!d X1` @*`XNBDHe PBhAhE6$`A  @|eheXpB.= €@.Ӌ,x[VJLsohh-f \DPu7 *Y4(I@ H*P(@e(sejVRD46Z_ 6'pV@fIC_T m !d6NЄ*Hh9b@iQaYQ=DZvQ{qcʁC*&ZKt:9wѝ XJd-N7='"-,ض *JM8S-h  N80HA@ !"'ĭ+c3 -ZPH^ ʄVXf#mW.L'Y|P5" Qn{pK` E0M.(PЀo4@sN f̽*LK Ғۄyx18_ @roFPo # bzM$WpIvka*Χw?!T\֛# ju\T$eMv6 Eu6. p0I 5ܠUa3ib t׼YJdVm xZ6--4X5UۅVGG8̙ago _eW )k=# EKǡXx.o5Ymζ2@WV{J ׼A[|4> 37O Qo [Ea _! f=B>Q&ԸSNC^lX"iui/M" (NK{-. YE֣˅L9:څ,d pN 0pF $ 7v Ne ^o,Xg5hF,{F9cf/rZV)[1ܘUf-8c6b4z 8a9IG{~sK!]dOts{%tso/WDp^*;f' 3+3Z$C/p^O23admcDC{\v-G~5@Yȳ Bp~fxI-DRQt1$8[y89O:c{/ zR{H8@?Ї}fSK\p#.)J>viD: @Y;67VnK6,X79MubJEXt$-d-MFV~3 G@0 wz5B67+/Cjc.gt6&0f{8Wu@4laO,Qe lwu085cG;a:Cpf>guF ň>ck9~C-C}F\Z֒u(taic| {Rg('6Ѵ{68?+7+j-Vv[h)GiÍvB\WlW'cϰ 82n׵a(75kC|CFP0Ȓ90jNl!=2(3p^U.g:'iPrR דW\BV06qHHf#u.q7yFl`dSZ/H8)l:YCUT7X!xݥ1 IlE@ ˣYpyvF7r$ @G+B \B|R@ p8{.y 99pm -Y?0 'TNWiEs੗H00s:YD E1 q^h-> ISb<:5 `N@ZX ֙@HhrπLrlG06ÒYd9ZS0/V0P2t#xitK#uUp ]KI $-vy?G}PdB:P*S q@ F0[{5WPXj \ExClTrQ YjGס`yT&yDn$v41’t/g1Sv-?X WuJ5SsuyEΆRJqp4ETz3 1p5G1!mM⥭*F~êX/p5  O Y|uN@W>Ӫc^o: T+!wi[~i8pS b@j7Qzi:R8pBrq*9妏d:_Φ zbΦ : Xb4 WC8璛 bm2 `f( 2Kt尘5%K l 3VK#8 0h+ zH묚'_L[oUF# Y˵1 Z 6B:p,l;Q|y#t4ƒ|K6d~gPU;jw8_趭ög˰y4bPO8Ss/.wjsY7)=K11)a^ (#J!@~q[+K0S1a(RTAlO?! k>i ' [ۿr\| & <\| "<$\&|(*,02¡q5l7\9L;<=,?A CEGIKMlqOQXZ\^`b\?`R@f3F%"YXpA[ $jApbI8A(Y8tM"Ő]"F\t`LNFh܈3 CfY?HI8$!U"YeMCIb !E<)4〣? 8SC>gTqPtH;(šMPӇ4i@|f^}3Z}gqDZ0D<*GZ8G]&)F\tYJԨ,bD]AHqqDD'X¡$pSC)( ~!g@]';"f0 tqȋt$=(ā` tb"p( @-b6F"h!^9\EeOhH9Ue%8U]R&ZJبE‰"8X #eM![CX(UXx",p *^GYQ`p"!IDnCg䙈 ?ܡUf] ~]?eweېhydH}dQ/vATkGkӼ>lշAWCs!qAU{V2B | #dm y QCA\qПCpA4 tz]P 9;PKwA1v1B ,0BR@ ؄& OB$0RH6Ap@Ȣl1tT bЉ3 4p)?0V&V3A@* \Z$ r`?H~2YBmRL"y!u(fw!n)u圁B2}9Aa,>,p/e -Ia`؅($n8WaWi_X/_i,sN"B#܊j"U {6_oDTRl"" o1 ]Ro=P<%YqGu?b6"LtyD OЬY(1LxKfr]l[6YSړ Y*gY-r-Y鲗v ³Y,"'H7 @~w=QH*mj9dr$#@!=.kFcaxDkD<#o)2Pʢ>~Ć0#w.jl8 ,~? 3NGyסs|q-u#p 8C; /,R}C>?T {z$'ou82 M@&2'CqH-> P9"h ?6|롅x(#8m,; u @TR 8CdAy,$]}>,[%@4$ H73 CP>>ྎ8U 8p#khY?@'(F7%'?k{C;lA27%17U@`Ic҅x'Xp4>W ALA?B0@@p_pBB8[h%|^hBВB;*t +܈>@hs @CwY?8h,N8" DRxzRCRԎc0g$q@ cFz$S̉TLOP CփCK 6a˱zLHYGGc 4ߋ88^Bȅn[8ЄaCrZ\5hcAlIPzɋmdKtIlQ#J;@4mԸNI2ȟ4L K:SKKJtDt擈 GJ̾춭 0:@ȲKgJKLLLL1@L|L`pLȬLLLSK3cI LL< 0MlMPވApMtDMTMἍ4NtⴎߜLNL̏朑N$FLN<9\NJO?cO| ;TOOO PP-P=PMP]PmP}PP P P P P P%yܶ:(Ļ[#Q=\Qe tQŨQQ Q"-R%e#$]R(&'R+ !R.e,. S%S3 23]S&dS8R78S#S=4=ӞSTB AuBMԖ8TTTG%) *}TEIBT0TOTTRQ$Qi$ )U2 sbsUU5/0`$]N^S_Em/9\!3 Z\3Wm\A8cUdT%mqх )sG`aPz!]W&H$1Иa cWTpYTQ2Z&E8.%LUupB(iZ0ue :/ +38oܫ7 2XPBP]%LPQ<2', '.2U𩓴ݤ]:]JX8&<|hT8-Hz.Y)*V$]-Kӑ/ sz\@g#U/r>㍤8HEEQ%90H1"n̵0 KF}[X!"#~$N%&a(/+*6Ua|e-2.^(ѐ`D +\M B\OJ@:GJc";5ވ]",>d# C3@U@p/8\038kcYs:e1fQ(HđLo5AxMkC>R0UzUO;0ie LX] <&J)o@@\TdN [3DJGkM0J'MxaڭIIPhZOքa؅I0QI*m]8N8V,UT+C  /808UA/B#3P?i ,8/ V2h?;,xU5,p(CPGZ60qY,0/`C58@xm+O!3i.0DrY@ bC8.pInl‚?!,e>/8OȂe}?8.xC@q(8sLP9 3 ;B".,hT8>| f .hR8$I,i\N,hBpe0z nqG+gyF/iC8~y]AIr)_IАQ;fg.~3ghC@9soZTP7QSGpFȒ'^r1*s13Qm3~|Lb($m8I^v={˨g*TIvQ #YY VY "Ăt3GqTbf$>cOe*GJhi.4B(f-H^8L*w,1^$t!I$*zمNgAx!H Foʲ~j Ș9z0mRjAqdjF}.)iga S,tiFJ!jfJsuJA0.̨`iNEB^-%4f $xn,3Oe$/9JcKr1-eCۈ~YӢEVH'dH41!m+,2zg 2.˰ш.&iR͚*$bFgs KK(_*d!z@N?#Ɏ|7J0x, Jx!%yH.Њw8C]b\8C F- YatѸ8F1^ĥ ZjR-Ra>!0IF \OBI EqD] H4,p!!^1֞! 2X)T8I]a4e&hYE P!$z^h0>1 <ѓg|"8Pdb KMd2Ȼ.Ih !^zaE:QIgHlLjk8z\F qJU`,Ba _3A"m2SHNv2e)gMV<-(A+hğ|I)FLs G4>M1DvFIU#vB3w:4Dͬw֨z5&ͯej 4uA`)IhmmYD26M9:M]835u}l%ƶijS?8j,i E4}ᾪ"Xk3M"޸j\ 'd̒t1|z6yip4|ByWF&&FyWR8BIꈧ3^7w?_?;Ӯn.vې]b;~>w=bw<3ǹ_C<3s^<3mΓ?=."2s=o,YL=s=/?>3>/Si4A$p>/ҲYnѣF?/^5D $(bnȞi E\|\ȝ_\fn "\1 U`n\ i|`   B`j¡ i` a !p`` N!"&RNl8mh\aa*ā8=r[^ֆ!  2  A1!&\za`ah^e%**̀''HAD+X0` @*".U!F8,4*!/bk&!b`dAklk8`F 'kơ$@]b.#50x%"jiB $7%.a&>cF)QakHkBcApLD4Efj$5Ax<`>k`O=@3*0" 4$B`qb4$RMB!<#&HAHYh( A(hSBI) $r"A$9,tp,D @@=B#@,@3$)B@`&&pl\@X(\ diBP3A&" DdH* <1L@+AgA(A 5R&'B@#B.(@8D@8RD!lDD56glBLT$+*DLBd§1nALXoAxAÎjLdB $@ۼl$akAx-ΖHA]BE|:Bil)ퟶ HhӲ8񯲜#-&#@J3$B/0A!A*q@6oH*8, 3p4b.A<V8%̀F$AX(}qZ`v A ms+l$ 3 'Hf04@PDL@B ooJ,hF@dHC0V>% d!D@ ЮEP (Gj]0CO?'*D.lB$@sq&`@< ozp(h?K1,5>34L <DADBd,4e#ht񅪆 PGGDKdB⫲HHt o|dA|BNCzAF^.Pf(l1$@2%&$qP``L,@l3fo@[?-=2>æ̡I:BSϺo%l{$MHpt \1 ֞bEmむ[#@:dE_!@ nix+ ̓k.lqJ?J\ DS3j$,ǂ$)1ڢ@pD|w B&\DL㨂J֢@v@wlh)K%$gv1@`Z.B)% 0 \#C+A!In)`߶7e8.銆5Y.TI*pޖF+\e]|d@7j<!bA)F 2:F,Dbjlybnqk<=P#XB 6tذa"UcF4vdH#I4yeJ+YtfL3iִy#GŒéϕ)5PхQjTSVzkV[z j'KJ:LZIun\sֵKPVWI4=+3MIZ,ٴ&Nrrdɓ)W|sf͛9wthѣI6}ujիYvmIh׶}wnݻ?FxD7~yr˙\KЍ&Vyv۹w|)Z?=|zٷw^xE~w/+> <\&DJ8ňc -C|0)*0EC"nB]|e "gܑ}pCq<$ !Q(m *ܒ.ebJ2 0+6|4M8O圓<P 䳡,=Ze]F}H%J-L5ݔN=PERM=TU]IQХ܉UTI\uݕ^}`b=d]f}hjlEn]- X2efdD}x块z|ݗ~w >^~%-5ޘ=v-e\5]#1emuޙ}蠅]>餕^馝~ꨥꪭ묵ޚ뮽zk(4hQk4WLi6Îޛ ?փ%-5ߜ=EI< 7iܵ^fcda}?_襟ꭿߞ^>x=ه]:G域TgX|kHl> S@>ݧ e|jEb:mIX}0h4xi+ iXC)bN1XDxP:  B4HD$*$L, BDmD!BxiT;  y3(C#X,bk )B_è<-ˀPB^<2#u'hePT*I* (3.Ć %YK_2ȕ;\byTa83єfaŘ2LgA#g4YT3'i6nJ#,0 /Ҝv-%(d<>P#TJ@ w6W,@p uHI vDG"yB`gBd9I5갓@EYQ g8. QɛQ O3Ӣԝ-IB T~)*FZ҉%IB &kA 0}ѕt[]^v]~x[^Uz+]U5wۆ4~_ \` V`?)\a _Ɨ5 @!rPYb1i\c9ycA\d#IV M'ks$ e/a\f3iVf7q\g;yg2#R-WBVhG?ґ)]iK_ә9iOԡI]jSթV#]'(TByk_]lcVlg?і]mk_=\$R_q[BVnw]o{o ^p WjWB 1[[r9q!I^rỀ*i^s9ysr\>Wҙt?Q:ЅNREOwʹup.piWv}6axr qB-C$ H !ZA ̀"΀:a  "T !OSPW[󔏓IvV`X.X  NB8V `P80(8L  P `o ՆA I #JdAb `2PhApTa8`" :!?CQGQ|nǮ  -h@ >! aV8 H!~ HAQUJfКJ!da# `~"-!z@ F!P~qa !/cPM1@A `q@B  ' }B`"@!!_&cR&gLњd/o O$# Z!zF TA   Ta@(!%iR,ǒ,rmrPQBh/`P q p! o: Rp/!v.#2#S2'rԒo'wVwAb>G3>a&B\d`A&> TNU2sS7w7y2 'R_\lP$O!$2"ebvA8n7;S;7#+837Ǝp:q7n=>s;;?-?S?SNh J? @>sTTB#TBRA[AT-oB7C;+ m>jT ESTEWE[T /DGs,F/GoGGG/HoH}H{HytHTTJKTKoJKeTLǔLqKTTMMLTLKtMKNJTMJMJTKLL P UP5QuQPuL5RtR)5L-R3US95R=RARPͫRFi/'"VcUVgVcnWsUW_V{uWW{WWVXuVuWuY5WUV5ZV5X5Vu[[WU\\\\u]5][5^u^V%_%IH&aK`K"F_ v`&/TXabjb/sUb7.8!6a9Vd-U殇$vdS<;AeUfee56fo֜f?kV-BbLZ5&Azc&dgv=tvA;){#. fe `wBR#d b&4 iӶ8¯$B1>#8 IF"I$F o$F %q q BmCd('# 2B0o a Hv >A4aJ5W1 .!+#`B4' v>!Ha0tWy ftzw@rK>$<h @ ȶ `v! @}@t B@`~ @{ɠN ̷D7,h 8"@Зzyt &wt+w#d Ė#H l R$ap /,ŗl J d@,?Aa/ p  7* :qABDof=B$ 7 !R W EK @ R F/  2 !  5 6׌c* RҍnsCBڗ |!8(89y ĖB `Y Y D /IAB@(dYkB zE#޸7$ Xtp "Y 0C#BW p Fف@Q@'Vd؇V@YCZڸzoY;8@plA"pA1H FwBT!`;Ia WX 0 ~;t XYu#.IBB5B X@ z "!4z ў&R 60[ Fj'4 ٮk[*ڄj5`!kO d"!8w § ѹU&;Q.ض{&pʟgڻ:ϻJ[j/W۽Dep۾$r1ۿg$e\3 \G$Ub{#B U52\7;?C\GKG%턯_[\Ƒş#g{ƁscdK$cȋ\Ɂ$$ɗ):ʫ|G\]˅s˿D-]}=CǼ#];O"./SR23}GS>ԇNS]W[}~ 0Jos]w{؃]؇]׍؏ٓ]ٟٛڣ]ڧګگ۳]۷ۻۿ]ǝ|)f]]^ ^=ȳ)"-C7sv(bC^GKOS^W^Y_c^gkQYv{珁~^y^e>^꧞G^뷞^Ǟ^מ^^_ __'+3"7;IC_G| b臞$N_S_}#$c_g?0ths_w ? {._!u7_ V_ǟc_C^7^ /~l_?0 <0… LBٰb+S0ƍ UY2ȑ$K<2ʕ,[| 3̙4kڼ3ΝǡDr,HF:gaZ5֭\z 6,ȟA={4Rl3FJUܹtڽ7^d X ҈k&Vjܽ;~ 9d}[~:XiH'xѤK>ݸri of 3Шk۾;˂;T ;̛̅;T)3sFR4 )_?UۻLS8p$[ՌovϨ DqUAZ #!it.FQz}b"#4CDoT23 ϨHdCNBMir* ga!DJ!ll^U#~ fR O.2 vqhR'g`23Sg!B;zYP/C1 ,w`T!g1)L", (D!j9#>韓G!x`Ei҈#hH >S'hWL) )I#P䡘nhxR&!(0C 8h,CޘD ,D3pC W<>蟢C DРC1P8-xC*3/#,;CЂvg@,p ⶶGNn#jL*\ &Di*8"(4b,H#ѵ7em^M#4$貋,< Eh -<-$`.JK\Gn?S Y\* j< ;%`9? IH}v K&ұ] }wE9 ,!dB 21Mb=w q(,$ ,(Ϡ@TАCHZAv n !%TR?8 gy!hC`bQF-=c@>Q-Ek6n$>8AI+G4 X@H %GD Y@ $AVA(E(hq%{ >PHXe7PFʣ+-"hD#w+I4R2^#d oӡ'? ʒ}fREhQ ,3!\⌉< Ab|6ADv?N`J C/{^ɤТCb!gF"I8bG7ќ+ȶ?5;5U wĭu`Q)Y~[~'YE+b=b14?XygTAH/Q,eEwu2]  \JxdmH,>xa x$ ?`{^-_ c6,[cx59A;;<>>A>ACCCDEFIHGQJGJEIKFIFKKMNNQQNQNQRSSTXUXVVZYWWYWcWY\[[]^^b`^`^`_^`bccdefjfJf%hgjg2g)i-jjlj-k*w}@XsA{ZE .@ <9mԋ01IIibS阀ӞUJ "BJW+,@)ĉ``؂N6KF%PRA#5%l(;P (NI.M0']RĨLrzC Hk_ 4Ke*6@WX32 d,hU!8P0Y0L 2j4-( f$,v8aղ<'L @3HlOP{ԋڂ,<bX5#@zبx3`Lrmjw H jLO@I}WD: B (@%  Wdk Еa '>JllGPX#0Y(ײ {f1F,!os& 1-4,N=,**VพX :d01\JhY^AFR' {u(z=uv.ʰe-cU%ު[Z<9tΰ#%dT&mD`: gCq FV"A9} 5K&ָɯyU;^Jΐ چޘI66T9C-$D-7tĦRzm{s*絔5)%kwq 9X͘ cmݦ<7LXCCUU֨ڗn FY@nPv5!޹,e DN-^ EW/>钫@$VmEi3)(fP/SYԊ% \[hn1u0@?yU۠ei+Ow (Y<1m)O2oI^sZx(1 MCi䮶>' A߅I_&j\5޿SF)08= rNmVZWk&DGqex6C㝎/ˤi"JA f>6,9 W/~I59r*K1cWK-}y>ʗM*`́Vxab@.KRkK?nRpSwfQ]-T?[VQB}LV|wWoT;h} p:N-v'=`0%vO"SCcfAlj4oq3<РJ sz8D-t\{b<3nU23p(7jmhv9uR8~9Buom0=P7.20\YG.bOCaH.Hpjc8Pr+lH[;5,`2Ј20,@gK 7e yc2zP n#n4&em>k ;2 cgE|sNT9N6DH 15x+8{R6`C7i*džS/rt83Rqև󇚦r\Cqg9k=.C8 h^ke~T(p25j)pfib԰V8BcDIXFM9nxsNizTL hTn)yu2 9}up 0Eaj8 p S&, u\҂|E( \;+0B @|3%P C$`\77ZbXfY 7e;Z7 82 qr95ǐRTk$UiTI `ؔrH)UEks'1Y;e31@wP1{f!MgR^51WH_N_VqJ2 +@TWQ ~`AܐiU$j';ۖQ0fpc*1;;pOch.zyzWc9H=t8HNM{X:Z , Lv-'e"u2# U 8S'3f:,P7CS9^0% t2i0dj2mVҧJXx*@R [YjzUWI#Gi_0U@k# UxMa@cE;(R,C2V7ڨ:+`*596@9Q p^f2+œ bs)^ ǐhE y6 z5D{KbڦfM+2K!*9. #+5; Lc&bm5 w ķv5E)])5/|C7[,+PYS;6Ckph3H Aqmv»۹QWaW5 3᎘B+k; i —s:82 rA*)ݣK;!baB l 209+A\!񉻃<\&*,.02<;6|8mR*<>@B=< G;I$,ȊȌȎȐɒ<ɔ\ɖ,Fqȗɞɠʢ<ʤ\ʦ|ʴ2ɨʮʰ˲<˴\uʶ˼˾̾ɫl,|ȜʼzA̹l<\|\<΍,Χ<\|σϴa(ϳ, LвaЧ=]Ѥб $]&}yү1(.һa0}8,ӽKӝ{:B=pDLlԫN=T]ճ ժ!V\՞թ^=d]֏֨!fl~֧{q0PaЕn~Mpmrm2 7E`M[;{z0Kלwq Kg p3fA;|C۾}FdȤ]T 2 c  foidGt7ӽjuc\s8` qp,spJ|Q&E O$b.8pw ~R|ና7Cg~`k N]PDA[VL ,LlsaI96@ 7^謄6 7 ⴨t/0 Sa@wpL.Z~0~2. 6>}PYQ cE٬EILl39sg|o؂8a(yVqhX~`Bvm\yϐ?ܟR@8ƓZgcd[G96ek"UD9pacP^DOYbYFbgr}kXáeq#^xA̶{A0nקּ_a`z'+m @骠U`HօTM²8p(T MN^,h( < .Q8c7אq|j ,i}U%V@ Mx8Sr]BlS"P.Q@Y4¦1d;?4Y dH:p)vt/ 0.`v"dH(D1(@sЃa67D+"Gyp-~ Sn4`a+лF{0$Pk.@!C-Ow( C "=ԏ 'CثDfl3TeŲsm * f8Yc?\-RYϝ3&ZыFd $FGZ)2iLg<~&5iPۆӆtM}jӌΥFu]mU0~umhK$۠\30 ܌XuXx@҆~Pcg[Iv=D;~@=n$fw\X$A}$ NP_w|^вt 76 \&xt?`v x]ݿLW CE@ 8tI}iE4nN0ZE y U7nVrCg Vg]G7 2G]EnNC .C8CNG~Co?K=" K£l?%^A|mzXGH yܛf|Gn;i7؍ E۸^$OtI xE{Khe=GXp"qȸ# l>~ `?>Lʂ 8x6 ?4ÉۈC7"J?`@Ark8:@hx@عr #-X> ,0+(38؂ lAj@+=[Ek:{Ex9|AMظ|Xh{ `)  WY `k,hŃFȀp ?F؆Qk22K<I Nߖp\b5+-aXHl >28_\ 7^8&:;<=>?1 0dcXE&& iz&FK&UЈGNA&QPJr 㗠0F ^ӓ,zQḦ8B@VR͑eV-^[Ipe!-;= ˼APaBqTn|HJFcȄŐr҈KYȣ\nQg.eIh)eMjHpSI^pblS/Jdqe3.ڌF^.t bcNqnlaj;[8j|ݺhj|HbUNbb^ꔮHbP c^qApTR;;ЄK|=P?P ׮JЃ<_Bpp!PЃ8 8 =8A0)HE9 NGhBenxqqȄ?88PDr)zetQ?PpY=Q9=D89VH8pLbQrJ`sMuJhs̹CH8*'90eЃMhCȄCфAfPDM#j@AvwW)O=W=Ph!P;n J CpB/vq8H%$B 5LY_j0(WwhtJv|I8H9 yt@v JH8hAgO`tJ DDPOǃATAԃrw^A`AD8mn"}B*do*šҥ$("4Bf'n-{z\ $'Y9KZ3-IFW)yZkX3򄇛?~ 8ն{UOb@G[ 5W\vWo=ӯo>? 8 3W~#鸢$ 6[%4!z2aT%ܩ( '%3H528D-`&]&3Z%BH"TĀYXAm8@,x8B Qb%4jR@mRBH)(#XG$4b""d*\Gx8!K&*1hm%N%nG5Ruf^TT !z2J&:BH% :ҥ"FC%?A $PnS@2#$Ŝ*q Hk/;=+l1,44sL_q 6G-$ivs03ӑ0'3A =4g I+ A2Em 7S?x7!EG">Ę(ۈBا ?f.; $GPK)H1a)*6tV h+\N"dRM"h40xR&uOSOT3*xBme UMנԻgHSI)wKc 74e;(kQ҉;%;&q-l{h QMGCdrXE5\" <;?B5qcNZ)8`Lexb9 A.x FA.n `TNu`BH4`ĵ³ RvF | ۆ˙*=HB DHC*P t-~'PT ECb8wJ y"2$L;ymzD88g ;8DA,ҘZɂr菻¥[Id:aJ(@6F\Wyp - TQ?wcQA?Lk94B3E3*D0ިղq#lhЅzBA%|vvk ҃" MH[*IBJ!b~Bqm81F"ˇb#:K6:m?*!mLw9kV1C@SMNzI!~&Bq Hmx~ "VAF,MKV bYWq+C `.r4x% K A4=JƗ,# CPtۦ>HPBTXa%@4!9v8D lCDl{UPr}SWi!\8 )ŠOdUu8⊖9d-q1F`Q7,nA׶ϻým]=woWн20gȵ-zDŴKnQ|%X|y9{35<$w6Ѓ.@[Y=,Ggn{nt!]p4dZ~+w@CKo#/rcByEx.ˑڗ/S}s>A|9‘?<]|lc?/ӿ??  &. 6+V^ fnݳ^G }J ^M[ ‡} {C 2}ܠ堁l N!V۵| Ν! []]![ j`ԡ{."#6" *baġb:"'v'R$*$U @)%~ !&2&&'֢-bE| ̀ @̀ "/%,&H(> 4@4/¹xjB 5|c7:..V2G x5$4x@ (c5 :G6&G@n{P8=?L@?ҖEf*  pgJTc;;"(4 @FGG3  b{jkX@~< 6$F>&C AdG0e}lLEHQELJe~A \JGLG+4 (܀ @ ̀?za@ % B~T*& c4Ft&dr* p3E_*l%1h4rQR±Ame:)@ylVxB),-v @ & ]O҇"8?@WOa"*&P&PDEā=L@pLd@|lÈD@ <!@1C$^TA@H ddZh) f>]8H*ZhZ$@OD( \., X6) @d d(&@^&0)@`jh*y <X<EcC?@X>j@N$) LZ@~?C$L$6*T(4f Ȁ(5(LGEM^GP"&Q(<:$A(EAjyBd |hTl\@ZIlÕVA܀|OT_ m`:- x%@tkVT׹Azzº 0<@+h֮ 1T<%r^mtL)\|~͆U4 ĴÖv-{|=@VXiFVd% ?l;P|C$@Vl'j`ҥ ۵Q|,#`֑"(ar'(B:XH%8%E&| 0%1>@<8n" dje@X](+ATX.A$<o*l64*TAorJ, n*EAH!B>K< bfm60 7:H!$@2@?>0opDǤB(@PX?0AXĮnSlK]L { % d|$o`=e]J!RJ*4%@n#[88?@ F 0<0B@/4@@TLV8%ATEjeU1|-jD$?#맊a:&C@<yB+I|@@1.D F//|@@:$VP+PjD+ خ4' 䪚nqP؃$ˬ?0D@S|/ޒ6^J1@>D2@4!?#A·Xj"H芀ˢCڍTD /a]uu|ï^ U@W:%j@m@nC1B'>spJ{- GeYTD&1&k($ޅŰ{$`X\@ L{l q~@WGtGtu.24| Lϴ'{ cMłQl" %[m5.6ֲD@/n|?p*X+xBb7%lzr.FTk-Ts{o*@1PBUꆳs:U &@TA=`p@pC(t /@@\+m 3݆w @i /=kiF*I-1!j8h؃(钤?DPB2@|@mK.["ms˱/}P7w4@_GMla5xk"S|PB>nh62}@PDH#3vr ? dh $φA{t @(($节~A+Tk t.sJzkDJ4'@ 4+Tê>(7=j$r`u{z< d@hV+ fF=@`l(F8dlAD|N(QGM${@F ^z&5|lOGA:>5,={8H({,A$\]1\GmEGX1ŜKCޝRGV7vOZ=lZPGtg (B24( bwwxkZ+ͦN>..q->{eۇ&Tk, 2vWaf:A//~l%)Ɓ&[!;ѿM?{ͫsW? r|Pf~'>? 4x66<͜@>DmPCsH%4Fm RJ5ݔS,T"1;RTQM]VsBRU]ZTd-h^`b=d]f}hjlݖnp \7t5 VGw]xGmw_E|} S`5 >ᆛLؽtɄG=>\CM9ב'Z]4>Umy@ӸN}@>iOcsf{XNO]Zͦ묧zA"_G~n0;Ml [p;q~r#׵5r_&{n]\~̥mDWEŖ~Ubچm?S'fEJJ̞R0{E(IGW9G0{^E4qZQxݏTu'P׷@a! d0@`7@ X?X WAAůg, T!/(P: R$;xa*$ !A ς9֒* 4UA(JA = 3C/_c 1D# db4$HX@顠cA2q!Pp4 ,`1P A `HژE" 8&CdwS`DHC s1<@%! h!'y%O.)sY IB8< \p3$?pD$'Be^~H|K@yl! Aҁ)&|HyS^ S0ON%o(O*R-4u D&N F^s!IEmO3!TwƜ=XEyyEN'RT~&%"^!<D-m= ͆B=IM =8<ȣ"(ӿ5*yE:ށd ePQ XA,=i-_Fj,5y,V |h=VV$@+ܺUB!6nX{NN^ 1[{nȯ! uB}94^eG:X n%*c//đ_WzDiJQ? J$( J & ^/@=9(b: MCuTC) ʋ&n!(qS9X _1tM>?pe1P!'%' (bD+9H B@H# 8=Ato%/+ƕ@5h*z?G;@! hAn " =w Hhi|T5<h!n;Q hﱘA!jUJC#S(adq$X? m$ȊA'Hm}eMpC+I/ʙ*1PslOHW ti<B8RDy! ;I$2( E(j:qWuDafۃG3!1DCVg^.!(}UQ CYQ2w8"Qr̃p!!8(bٲ3izqs=v>A[ZW :ltp#8N=B DķEk~(! )1} VX N2b|cR4Ŏ=ls\ҫݲxAxSGj5b| 4iQܘCkT"#,mǴI2(0Y ^l#VHN:CvkdP @?$<~XndAhB lM0C@b3`AVټ r  a!С}~pO(ak03;Rf HaFB*AA`BK ,,fк!(g}ht +Q!0tO J!Dk'&P:cN!,tP ; rp LGHh( _fza"N灣2Clrq !PÑ 1Hh Q 0ұǑA1 TKAl"&r!]FHLA@*%'<$3`6reJ$WQ%cIPfd&%_#o'QF'K'Ehi@rzG9R)))*R***N( fR(/\~(Qv-,Cb+AR.b--".R-ǒ,*%/*!-0B0"'ɒ+1"1 01+*" &%N2;S(0 &74Y33O4k1!O3y" & 532 nz$ZӺ^s;b$f!{X `(*a Ԩ X*a|L(xn֓=Q` S//8K9b& 2@`,(3V2,@D  D3~2$=jf@D B8EsV>  @ T,n:4!DTDS OP'.A\W!&P{^T XFa5^QYYw4CGx,PᐦثcWc4dSREsfѳfEfkYuvgSgeg2gViKUO}UGvi6/h,Vjv/GjvivkEkvh6l0lӯl 5RnnnoVoocCmIB3Vpk"pp^erp q7p7Wrq+sRrS%N3Wp/sCWo67V:WttOsSWu1u[rQTla7tegiWummqvI;rySuiwO5u}w4twx7)̆V {W{{{7|W|w{7}!̗}}~W~~~WXxx!J!!؁#X'+؂/H7;؃?CXGK؄OSXW[؅_cXgk؆oo#ͥiXXyXXxX؋Xǘ،Xט؍X8rz#X,؏XYOYّ#Y'+ْ/3Y7;ٓ?CYGKٔO_ϖ[ٕ_cYgkٖobs{ٗYiYٙbٚYyٛYǙٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢgW5,6z#!bp,Kڤ٣h&==oVkڦoBv{ڧZ 򁩛ک:P:$2F"|ګ:ڞ1z/ֺڭߺzE皮{ﺭZگg0ʦ[۱vڬ+۲وC7;۳?w0- ڠ ր ^c[Ϡk۶k{_aY{Uᲇ9~`yv7a!ۺۻ [ `@ AB۾yz>CBv w: \<` { ڻ 7Ó9Q@)! ` @Ň Z_[Unlwlj`Z\ő_\{ Aß#D1Z"JS|_ˉ\ de #YV @,om!\v"1gd'c2؁:̀ShR 35l8!EZz)~Ryzj*r.?Xu?l- ( C V"6[=30`Zp 861%kR :`[ 80+7)QI3);72xVVk `pڣ~,R|=SO. C]9ϬC,1Y\dWt1}!ߦu:̮{T>Ħ4=qKRU b 7=$Nu5m#C ^ f5ei͡j ǐ“$ (`%Y`z` G} qQЀ v2d kcNu`}N25Ek _J.tp h ȕ#n#y! B2FP! \Rgm.FaV1 .%``|pX57 p5a(A/+{S "hxs)Ql".f{1AkB*!H92-o\%Z?Ƌl) 2\50@DP tfh(+WsU3nd  F2YjDJ9QP.}7 z+$Z'D$0 \!* scD664 &z`La ]Br,mK_jШ;c.3KӬDwN%dmz ?FwϬDIV?m%|D@\A cP`5a $$!4a˂\ՠ+a{PHK:R0mc Z&EEU Wl*X? b͟d=@I< T@PVJ@mj:Ev-qxVmhIk笈 G:$A #:܆(zߦTm{ _*wέ}]6gGߚRn_"iQKxv|z k5bIij`;%'!"" v0 \x4VЅ7c ״%oz=⑑Ῡ-0 Y<'?85n e,7Tnn!gķ@U\:9HN2` (yl~6 L1g}|gw x>o.K~+k>T߼?zօ~/,#oԫ~6<_ʻ>go߽wo{+oKԯk/Ϗo8>l@ ~?#! ,    !!!#$ ##$%%)('*+*,-.12/2224837669:7839>69A;;<>>B?ACCCDEFIHGQJGJFIJHJGKKMNNQQNQNPRSSUXUXVVZYWWYWcVY\[[]^^b`^`^`__acccdeeie%f*hgkgIfiki5i3jjlj,k.l3l+l'l&mmqpmomMWV>h=۷pʝKݻx˷߿ LÈ+^̸ǐכLy˘3k̹ϠCMӨS^ͺװc˞M۸s r= Nȓ+_μۖKNسkνËOӫ_Ͼ˟OϿZeh& 6F(Vhfv ($h(,zѽ(4H[6)TeXfxWn`>edinclfp)gfoie։|Vgz䟂jh"(h֖Nڝfj!Nz^7ze?r0+v4$=7 dMC,̾!@aH^@,?< MԶy[zpQm[7^8OV {zckpbq1(,Dzr#G=]) (!7;g@(zw/ (Blۃ|D,8C'.@(!Աɡ30 N}7a `|`AHC2@A䠬FW`?܇?eA ?lq3=х 1PJW00 #H 2.u ʪ d0#C,° x\ N#@A,>:gQZFju"i/`8"pG gu)2 $MTJ@Z"'iW4pW(3ʀ%!8]Hd $R"7 %@.DKFSl$Y@A (*xqb* E* BVy%K<@geYY ȺpJ\`)@V*G# @:2AG\5c22RgH( <XX`@&@rlF_F)J!RG/mec:T=PS˕ 2H 0ҦR_3lCvJ(Š @{h9BF0,An3& 1\@-pN3@-,+WฝhK:d0D*hNIi=8ղnP_'jC me/ZG+T-T84qerC0+`ӄ$qe7/`hG[:5cˮ*am Zh\nT97deHF 7R9#%'fJ 7-,L8\qxb{s*tq.u= ͽfpmXL pco]V3.W+/r.Lc}B;]Do-iuHHnvZo!!oV`bwpPm 8ucW$lg" Tf#K4 3Q:[^c2$ rSB3.eXt@jJ/D;U5]uuNmis|{U(7~ID6+c+׆i7g00B<`Y6TpchsReqw 98Y9T~m <\sxRBp< }ŷhh UVnA+CvP (Sq(C]&Cm` $yhQ Єw&q do+n5I8rTNU{ htnx1Bbup 0E#ֈkWL pFHc+ u\R|%S `8 TaY._%` B癩 A7Wc1>Su  C+[8۲l#p DBXwR;Ph WZorĖ( j!]gaDro0~V7cp284%h9yK,V 3pT^KM# t-w4yH  Tx`eCj O(Pj0 Y':ǖK(0 u-#~cVSyn'5 ;J2ǒx/1Y-2@Y3 `u2<1py8 y%؎>=Tz(` 1-pK1nS$RTC|7 0ZVz}=VuK] VXBr# %8cpjQj9R,B2 7Ҁ7V8 ֱ#]4@ \9gB ǐhK# x5 },;1]+5,zK@2T[Oc@76`Z! pk[v649XCbS0oQ:s:|Wcf E[~g8۸iscID׵5K1{km1sHK+#h#Ƈrֱ# ѩ2trO5[(aTC S 2[߁A:Vi\{<}˿A <\|6Λj)"<$\&|(*,.02<4\6|8:<>@B<1\D|H@\6.- ,,+L*l)('&% $,#L"lv/<1{Hpr9S3^.5 4T3$7pȞơs U,]Jחp  pn~e`Y p=Y>vp CY BPL@1VlrH_x .Vߚc(er-pUеbU2xiu7nārpo#{+mh Ǡc]Z/@?Bb? a#dvuql_v_|z/|?] &?npO_?o/cQ?>!n_.AƿC֬/?M_g-{ ܱJ?_B WA .dذ@%NXE5nG!E$YI)UdK1eΤ1uuPݱA%ZQI.eQ=N]UYnWaCFZUiծe[qO5[w'Zy_%\h`ĉ/fر%e̙5ovyʜE&]鈞?kرeUnٹu[emeq&^Os+_޳tٵoJŏ'_c{D/}{ 4@O@CA#DM@ 3pC(BN'&i|i"{1Cc@ C`aGyI"ƗP!)C6"nDEF( ltNjvV\yҟF\Y:ft(z1sΡh\ʆC$ cĐMFnD!t1J3d%Mqtz"%{69FNIF %TX1d,Ug_d!RHQ &ňde"DvHjdM,]T$5hGnVGD yΈĐ1aY]xǢ2@|#(#ՙ0PZ\G#ገ`!Sø+X fGѐn@aCD&">PPG"YP_"0 4DDGF8."HgH%gcu1`:ƅ@av?dja$fbo9^dHϊf|ÅA{XwdAd(wLH"p8V&!S?9"|!jXY\U(gXGP=jP8>Avԅo$u S}񇅢jh&>ao6 #)Gs#tb 4&vO25O"VLD0}]#FOwXIԍ5z#Wrg#$   V[YIh.[gVμS?ޓr$iD,gqB`WL""YjQLJ=Gjok&DPqJ6uq}Ƙ2L:5D6c(8B2(gYJQe096]|f45sƬy^ms9Swsےg9#Xs ]'SFV7&A L D}iLu`eZի.ɦ0$@ lMkZ du}Wgk$ Np_G[]۾5 K[ܬr]?`6 $w1MZɘv%CE4[7 Ow!4-kQbEx vx qH362QG L񌼢 &PnY5 <\E NCx/ /5-su :'" vCTSd$da |YJuȑ~x,eZ͞y7 @#K CUDazĴ^  -rDvEXG,Sv,>@>Y0E@w@ Kg_+>P8[=0t#pFͳ !+(X#.?d3;|A@P@@7[9P7S+PD>B",\@; A*  S6<@7..&!P|?: IhBX'$?*CžBؽ#_6` _kHHbչC<783:=< YDCXduK6 9 Cxb'P  ?P:CEk, > ?{ 5 eSn9ohaK{' F{|l܉mL_ $CכMQcfC{\Gǎ 5ࣈ ZBȆL4E\g+C+zs[5mI|I(࠳~ʫn5MI=s<0n 9PIԏ\ A۽9h4VH@s;,ɐЩ"K4KD˴/K:KpI°KL̳KTL|1|L<@̉LLLL d MΌE => VSNSA?C]ԎHQdTHGHT7NU#C"F(N]NOѐɔ0^R STP!.q "ӜU lAYBE)r8kKMA[1\0QE_}I`)V Q(ShРz8t`*0p+0#p(Qop=-4_@ő| X 9A$8hxYYHq}kX|}k` a A= oPqJգA>ZqZBУНE q\4ە EjiH8WXiXP.85+jkD4o{]3c"pw*Nqf-  |8ejoYH↩ri X= #Sr%<'+"]LT #SȚ`Qផ\a[UFE~"#$S 6!nb\O}{+"n](Fbb@c/^2bT jFaaU6~I@DC^c0 tpƩ#F A(@@Q?VC0E^.Gf QC Kt,e #8U B B J=P`pDP J 90>8T(P }9hFT $>XHo:'ME]_EPq@@SF9IHrVٻƑno[NX4q0kv:8o=bjF@_|P成>P:Q 1Nt%?rSC@jpI3:iVrf)DD`)S{XIul@T(Bxp>$pkDh>h)Qg.Qur?XrM`0CСISչBP?>؄=pQh$χBZet8:w.T^ohE= BEb: r-P([BX :8Ev=(=H"B>eXrawB@Ep, F}R=E M8rJolr(8Bwe7yy'>(@piI0fw}o'is/l9pq% Y9Pof:B`jGEfExÊxsJуJ_-EqC+PAt{ѡ6-$&:£Qȇ;B{)XȇBЄPP=`MtcqT QN@SbzzK }R t2kof>H_(f=B駈P󗆣AFe?_2d_,=lIoW}"8UŁ'M"JE4DqS̟:fc|yw Xϐ(3Jꦑ(͐;uJXQϐK msl`]+'IpL3Bu<J ]#ȍUBg+] iXiܫmԢw7‡/n1u3o9ҧ z=(ANHS=C% /Y 3#3I-G&_o@""js"Cl` O#3 %mCزTD%r$SH#bg1E,1.k2?]^11N!i&A)$ $A( 95.1b? V$U}c#Is ѧN(r4ntTeQ'y^x*SQ*cv`%Q~v GFt!|OdH!H|iyH*qPɔN1$2(tgU|73D(u@SS&-%"*͔覎ɂG&IGQMC#K!Ar"Oj}rGbuK<1[ri1Y78z,JxcO=v܉:ސ,|77y4M͜<3C7nh)eҮGX19"$,NH=t \!hh^mUP.K:޸e"hrwxTJ$xc kKG7=IBh׸c`& N*%)-P&%J'u6R527sM( ȟ\2J5g&cZ&rK.QBztL̬5(sG(,rM!/WT15IR7#dI9ezbmpG! М/7I@qE~֨=ٙ&HfAp?1=$ nPe(jfh,"#o -%Z,9{"1PJErLUC.F>\% y?35A|шa(NFw\CW1+<E(H:Q[AAB#-,xH'F; E%ҨM:Q/%1Ũ%!Ibu~|_:>C<2PG#(Ձ?F9EibFLg0 HL#  D( E} ="( $)qjLǒC0 1D~bVːYNT!:#CTFr؅;B!} - 6rHÑ2A=zĤ&`@uIo((3ܡ?xz?0Ȍl-|БGaFuThDu 9hQM(a-,B"& Mma`ᖩn XA?گD71}lcFq!Á(Kbw.")D! M`S,!9bj|0! C/G7 4H}WjcBƣ: @ܰhUKaB ·?XUK,z2M_t ! wts((C\1CD!`h>aAhdk2!B=!j+&z JEQlR9 F-&'@mL΃UTtŅK1 {];YZWԿCAC\5` 쏃J-U<ڗ#2D,+OMO|7`s>/??ӯ?/ӿ?O?  䜭e]!^1N V]p- u$TLYMGwY ``op`፠t o  2 :=o aFN! `) 2BV!FabGR\>!*Y&~!4`9 "."#^5 \|% $ ~z "`#")"#!p @ Ǹ h*Gb^G:V>Z4//1n D5ԏс ,)f㬡bpl"pȁȀ(T)C' .#baQ#mAqH=aoL›L;^+c  c̀`6n$p[ppcG"o4I $H:do"&f4&]m (GXaAF&) 1tA$,| ){h\@YN@'/6٥V Ā @:* dŁ3:ʀR%\ea<1$LDܨ=L@cLd@|tÀD@ <!@,C$C\A@@D ddN() D)Z>P*+ZD%N$KD( \* X7)~ @@qd d(&A &( j(?|XrL<d0LiC?@&얟)@N\ED) LZ@~?C$@E$7*z<]5h Â(%+ͨG\ Ĕ.֨ oȁ?D#]cIh-&l?tԑA܀HNTS|jpm-HikL̚Hcq2O k't?NCD/DmQd-ª2>ՆƐ:?<$n\` %Ek~ :,\?A$O0@B^Cn??\A2&", oh\["^vl/ZƪrpY*4%@%ܸ* d144+CȀQQ^ޅ4bOH| &Krmz]A\ZD -^Aڣ!*|ↁ?$@qsECB(4Y ?pjnB`.(Bd g?X@ʮEtA ]L. " pHF[=@v:`M>aNV LBD1P@O[nD' U[D=0E@@4bƯ@@\Q$@1@k&@GALC@8BΚi &C@<uBjL4?q*o2x DE/@@:$@I 2 Ȁ,P+ n0?m(hi#=(>?0@6%EDoB%k#7`/ncz2\!opCD0c)l:$@`Z@ĀCQYOA<Ĭ(eOf4>vCЅ,Eɚ]gn>{0^T?tD-\~{C ~Uȧ*QBOcG;8SDEP|\6685COc$@Ejq*#EHw B;2,nd#Ț$V\-1i*+7@Բ@9**x .x+Xn+tU$p`)uk-swG-+@1LU T(=lD@:l+LA30nB %^A--x_4VTn@Y.s0@&dDVbn%g.ECX$(A pw;6AX J7pH[eI_l;ִMN$+J\(7|@PKu@Hr PG d[~s@ )6tʂ @)N|@L&O>($抂~؉,hk 4)Dv@B0'@ X,Tæ>6W=j<BkTDn|Sz|d$+ fB=@4l(88@XtDj|Q:InH?1'#oK3%Q:n4޼n@ngۺq1عCrߌp:F`Wy Ci<֔FFdȿ=o% &ʔ/ wctۨt=F#3Ukxl-nߛqqĦ½t*&= 0l+@rϽ>]G޼Ճ*07 8ރ x{p6@}7PPlJ  /;D?OWϤW#@S(]~bs|?ǿ f~ʥ b]2? 4xaB 6thUC{@=(ŃdH#IګW$Iu4 fL3iִygN;yhPC\8"сHirL*ȓQAɊR[vlXcɎft!YON8խՖgYp` 6|qbŋ7vrdɓ)W|sf͛9wVa\ I6}ujվvko[ei׶}wnݻyNxțtSMuo˙7wzt<z .;Ôt_vmP]}VfdƏ矍>uGd~zS\i)夺hz8I,Ũ!+FvC#4_&ܱB"{$^hH'A` d^:Lȇ:oAՐm1 "bIHBE$Q \ ! IbHEQB#6 ʢյ˰ʖȂrXSB{[HC$G!^k]Ne>eAL/֯G!\RD|h4a[{BuZ LŠ6;07 Vrǯ N[ Cԣ"QXobH,dhC`K!RfUM\ޜVsĸVGMﲦė}!-}Erz1 -f7Z1 [ĩa H-u}o [c#X2|0::l@*ȖAI,ظ@. łm W[oC!4k,w9)m3w&C'U rbmD( j: rq"cC(! E/A2nj Ί+d`AfmQx/^+axA kxm]}B8F(^^; M80"߫\7^&lLe_P4v̇X\bD޷+t{ ;.k0-R4".JҌ%6 AB!lA!)tI@$T azf|A,0$̶0 x狚f/a؊ XBP6Aa: n̶p6al,Ϟpt$"GN a  aP ̌B m^)l0xUPThPr,lOB BjP [ 3&Ʌj ai bbj"⮴q j 6A^L  "^ ni.!|.nĝLIv*g'! rYƜJAz"|!uB")!!o#?r^1 $KI: MR%E$G2%W&g%y1&kNZ%w&3z'(R((()R)b&u%&R: Yp2'!+c+)+27r!R+͒-{-B-Dz-,2'"ޒ.+!*R0/7+]r-S100G]12qb291l4B2B2a.e3/3" & 4Urn`b203_4-]FG@aωsAX(y! nv+T5|d;Q l4sߍ3Ѳ& 2@`,*S.X2,D  D(X" @ӡ;a`.<+7aLXl`"L!a0WJ!Ո! *& >n G,?`A&@]׵$4?#s!j"ǂ f+ cRcspˇ' o;&J]:>"_BC#L3 7.+\TO4UUMW.h"K(,.P$P"`b#+#Nj4Ba3P،B(0CNVBegȉ6M?Ï'E-,#'-^rN?q)sut I}hJhZz)BSm"J#LS-W (+.I+͎#UV B0C0xzUgP&PQ!4 2X aIKG?7菏{B-gA %L ?f3"F$>lE2FX 4I$IDsA'u)È> qOLqs SK ¦@)%"3 ,Y 7p h R^bJ:PkK]p 8@7+A&8)62S`2 ,Ua֭ω0p ,=WW$M~vhѡ =J?kXOj,0n`{t8s lB)Ap i $ӽz!ɚ Cc-Gh!  G|潖 +Fpj.$)VI .AKf9@` B" 5Δ|L@mR(E?⡍^LX Fэ@lF-KO \HJrEff JW eC d)Q!4G/;7$Cu`vY rMj=NY0& 3`vv$ol0$h*Y tca61gtN;A)L*HYr mCqCܰT1:uG:6Û =HQQ?aKN24EBd,c)>q>ZȠ.dasPpJT"h@S5A NX#JEhѴuld~fg0mlⲧ|_#́my`pf3KA A98*g3ݬ6%m-iOZ$z}__ [8:y3& %nP&L!mܷD{vԭujwmmܱ7J[BX:in+h{w\vӌ|lP?[^:7C=lzً& 𭯃 plŽu ao # O#,_ |mb=HÆ#{Ϻ yD勏W 4J;0vT,[Iް yCD.|]uW|_&B`qzCdFhv8 HKzҔ/L?z;>mzbUmVPT: n_ Xz֭>Z=^cN (d+{n mo0ZBqs#趷 p{.1twoXG x[wPA ª{{|/+ᄖA; /ې?r44C:|7K^9C,os58oK~򔯼/k~?Ћ~/Oԫ~o_~o~ ė\ , ! ,    !!!#$ ##%%%)('*+*,-.12/2224837669:7839>69A;;<>>A?ACCCDEFIHGQJGJEIJHJGKKMNNQQNQNPRSSUXUXVVZYWWYWcVY\[[]^^b`^`^`__acccdeeie$f*hgjgIfiki5i3jjlj.j,pknl3l'l+mmqmQm;m*m&nFn3n1poso:o8o1p5nqsq3q.rrtrSrSrKtZtAtEuYuDvvyuxuwy{zz|zazF{K}~}^~~~V~Z~Udd[πL~ldH\{rhюgZŜu֞cƦ٦|pxή~ƴߴﺐ껡›ijĭƣ˽ˮˮ͞ѱџԻ۶ݺ!\@C*\ȰÇ#JHŋ3jȱǏ CIɓ(S\)KGf:uWϟ@ JѣH*]ʴӧPJJիXjʵׯ`>MGhӪ]˶۷pʝKݻx˷߿ LÈ+^̘ǎIL˘3k̹ϠCMӨS^ͺװc˞MՑͻ NȓˎУKNسkνËOӫ_Ͼ˟O5(h& 6F(Vhfv ($h(hs*0b4h㍕͈<8>)IH&J61 TVٝVfa`ibi晥lIn)'piP։| gJ󢡂&YbFg8cޤᤍV*}iL  a )TBhCtA:s@hW-R1 ójP(ǡZ ɪ-Vk?NkdfC ȸAIs r0o%$pRz?0/3|zY [][εX & i"W4%OY;֪Cͳ3JKM[-ݨ׭39厥d}^.>+;7jܩJr7)70 }#xC:k7r @ S=A 夌q܆*r "(Y? ip8-`pP0CPG%f [!n(>!gdɡXڛ#p>o~H$+" `8hws`HACw8 4qCJ R0ȀRGP,iB# *!> l ; ƀı X0!cr |eJ',ҐPY RZ.@zq0!ix>>z:&0B>@߮жOf R Io"?@0@?$1G>` 1CvK4RxlRy#O> !i!nmo2%-EBh&t$CHPmK*kM/c,Cr,U RX E<Cbm{2΢ l f@&@Tr̘ p h4gG$P=E_AxV-P L$2cWF,Ȅ62z6H9٣d G f"XZ 7( UۙP8%i,ɩ+̸ׇ$ j `@F21n]إFwtbP,fDZo/E6|,= :K-?lF@,KxjƠg|=hIpv@0pz6Hk6(g]Z޴+Pq-aK LlwhǮ $n8k^4/m9j"o/GPֶGnmi4ݐsD1} RrMo~n!,MůvU -7H l ҰU=ԍ`,,G"Jsn!n`Z\>sy E?$+S;Q@kVvȱޜtn{ 8 7v?Q.3U<{i錙o`h8eO K< VX<7~ l7R9~\z'->S\vC->m'>{Tu}w`uIm -QtYbbM p6F7+qmxc"'i҆.Ҙ6(0β3=XW/vK] a4鎎Xjj9V߇;P0:7, ӣ/^{ƉEBvFsV,Ep;>i-$`g &.gA GTFCVEn1 5yr`TH hmhxݥ1up 0Ec}3+Kc ڠ 7`51+^U,Y, *!8A <Ұ}Ah#Y2 (NX 4eY]v:Y7@ @ 81pr 96ǠKSUq!5=EFr<= W@ZklyF( ˕LqgG0vVT9echP2E747ZCK&Uo]]@KUi@J2hGK*<~F.Sp F0[nKhi^@pEY;FK/VBM95QxmDk *, Wre"1# U"7`S3iX:,P~pSG5pOr Dr+dI3Gr9 ` YfEW`W+8e^vJU+9[y9~Lcp+FF ,&($,_{*ڠ)t bS:p  _CAF p5{!t p f4 1( @ kp㗸K6qGrC{WSc4s+Xzy*G([ᶛ{㙤J}㒣KqA^H{{(CJ;+CK0#۽bc0T~ƷkR 2P۾7ۼۡ`\K!SÌ;| G\|e) "<$\&|(*,.02<4\6|8:) <@8 .&L%$#"! ,Llp['!;HqhjlnprdFsM.G]RT33M@|M̯qKy%4C `hcep@.v2x ,p;BX4kumcM30C}Z3*2HBm뾮^`Nls, ]@J6 c6NX8+3=АX^q1mAXLdxz@1eV-lBh,q .Uښ[g(Ur'>Wp6Xi@"p7oapjkFg PcW+NO46Vt:X3wpbl?x\mr/m=xSm S o'f/u&=֎?Ow?/?/o_ɿϯ? d +%ߟ$XA .dC%NXE5nQ1uD$YI)USwK1eΤYM9uύ W%ZdKI.eSQN1QYO"WaŎ%[Pir5[qΥZD_'0ʽ/fcOe̙5oQ2ɖ;&]iAkرe+Uoٹuݻamiq&^qgs[~=.oTK^yg?<ϧO}{{ƯkO@tM@K; : {PAC`aEIfæPC6 mD ED tL\ EvW@`G\p Z~:t R)s̮ H,CcN$mHSBqWRgNG0<%hҐ,N`Z'O>tQ$ǕCPu:{P Z$DnqDVR)ҟCٹԟA0!E }UWIRW%L2&3mC3%5 ¡MƸQ\+e ^H uq칂XŸ`V I:9DuiEw700nFeJ@av9?ƅ@ao?dja ` fW`ohy\ێECH\ A{X`dbEP!HjpHxT(TX  c~!hܕ])|S*QG\ iP=Atew$niEM6>NPlwWPHS7"A{+ZO:V'pJA!L(bh2İ&'!+v\a *+4+':qz90 lx*RN|V" d'N8Ix 8J _X~RоeQ Iew,6#v>ܡ}P=87PA *Y@#@!8F9D?$A9*t ;s"):Q~|5FLJX" zE` ]K]қuKWO:'1{?ґv;!At!~#GCh `Au QvtN)R*q@wWH J쏒-_#fG;J$$!N|6 ZФ@C:JɥK|,- @ B+c pq"DQ@nq ZPǷ9BcҸPBkg]g))UJf=)F| 5H+FEކ3TacXд! 2` ԇc <ފI H6a0R#r+jOulX\5ӆjnG" J yZ!GX_JVR~وp)~AS"߁(H/[hR򽧖rSN!wqZo^ cro WKqf=b*!.L:ޤ{2NY\1cPxKfT@lc"Sq VY[Ε)sYc.LR2Y͌13Ѽf8Ǚ/m6d9YK3lmPb@E Yы&W0/@x@Lc¬iP!spNuvZֳuժnk_'8.}섌ڽv^MVGխ6Vllc[3 ^ `ڙ3kp75ebYn Bx0$j_o0W>5B'ABc<\k6Z+g]ℨ~4Bbq<\O[^paA-."&@ ذ?≖yDs؜"7J@tA( P>]ч%H/0AV;O$䮎DPoa\P A%@ӉAeJ Z}'K>5o"o g:Gc @, :?@&e靏%9m[ؐ(A ](o "?_~Q[5̋C66pp m ?ɿ+(Q#0@x㓰+A?U@0JSR+P =W! A3A%$ t[[.! ؙ $?; B`"$7%lCh•x6a,I68( _s@4b͹<<љ7;sCL 8T 9dZнa;QLp59  CxwbP  h@DdDMLNd{ 85 >_q6Kln(NQ {KFueDf\L_#NL 6a˱u iG A +d=U)Hmk7PFHEV6H쎋;7Px@l,;Jɚ2:@'JT LKɯ-ZKhKKKK,LL L\@IƌpPLɼLޠLրL̼L3!##M L4,\M,{ټl͸y[Mߴ2TQ7QQPQ ҜѵR!=R ER&u23#mR) '(R,%u,RR1 01=!RRR4mӂ(tS955]666SS>Ҹ> T-SnSA C]ԇHT3eTHeGHT=:FKeNLNPbIWLOPΉ!&郼y \UlU@}Xs =<ѓ:ɨ? T9B!DqF9 TU 0R8E\I]5OPvyz}A(Tp z8xtp`*p+0#x0p lVb+QY`=F@UQq= JPxOGT衑]Jp%`&9?"pC ʜ%Q%#{=`|J`|WՆH.*Em8Z ۑ2Ho’A՟nНjJ=y2jZCPFu>jT܊d,Va"Fit#J}Y0@hH0ᨏkRH=ux3+pkxphnXp@ar`Pɇ4W-G&ޒބ[ qFhWnR  ~,nJk@1+a&T4Td11vaSQ NuaW9]b9%bn5#aSR C'bЋ]ō` bc8~0Bi GÃEU] -c=|_ɵCJ:R`Jc8CbHX5njc N ?氟M9d* >8l0CXbb$q(##8|`cN7nX%x֚8ٹ;:M6^J`>b8'T\sNj0UIm_dNPn'J;dqXR$]Ѓ CA1XX``^k"m Zا_p`&z@hZwe0UhpXǛRIY"efe`Xd 9Xpb`ֺ0hvJW'R(Z@_:cjܡ/U(jbeZ`mqLU`#QXXB>nGGH[`i`@WXYTWn[ CqTmPm@a~9[i`U牎MYUHGb]ih I i ulh}>ikOiWx'M9;1Z _i;9t bwVQN8]۾fi)]|j؅ iu n@wje kk`!@bqnod qP~"4ُЃNx*>ChJ>'J؃ ?QI`!&98>8U0Q(u9pG؃Up>`In6NF_qFqP@PTÚB.dJNym`[O`,168H=biG@_|f>;CFEG=8EC,6QeVsZCPNP2OCQFOg kXC0@wP@PG")J|P*/9`NI`8eM.jjIR .kN] ڃw |;'e@dFO=pCF\;q)WQrcC`QwuCq?>`uYx]Cvl'J%GHuRDŽ=FNJ؃nl7>xX_jCXPfNC`JxG QqPfqOk9a34HZ9+r6C(jCFf&Fo8sfC Z#Rp>`k C`@PUTgg/Qh;J~A9=χUI=3tvC#П>A룮V-?G!/k}Q Xc VdP!$;D렣J)⯅Q<❉G`w;q,Icpe y'})l!Qt!>}a#&%4CjSԟ"RIh?z$,Z CϙWn5زgӮm6c7‡B{ -6D'z&::DIR_.wLf&1bo> Q"o>awlϸ]{aVrRh"8?T"]Rb-g4aI!g]M2 'BxȈdp!&)# @aP _2?1 %ظ%A8u.?) `K}E1W:]ҐUvէCLLp!;Oc$t1B)%$b y]5#Lʜ~1'8%_6 z=! H;QS mjK7AΤ⟍E"3Hv341c;&:r8-4d02^I\6Y.B;}Yf <0|0l0 w챌+Ӎ='t3?1?|7SD#r3hՈҍ#_S1&zHR%#0Bx刨Sa4Q,د,tÕ=rb tD`tJ{BJ7Mɠ0|[*L(-Te%[v-41M7Y3 n}r?|7>S'SJO'fS.򢹽-1XN>28t L-+4.J!|l #"iC6CU3;/~hh9,ԳIHFI8aeP Ժ`|8x !0C[kGԜn*`BsLa!XP)ʔPICF>>EJYZp "|oHGyEBp(k(`k}=nqeFrx$@ HDrx)Ȉ8pw0'΅[wp$B C|KI~b>pS;Q$'NHe,Qw2Q!a10j~CsH$GMiVr8>1]=E# !>IcX 4wB?(qXCx(óUyQa54C` ٍ=|d;ַnbGd' 4iأ0\!TIu)09b( f*P"| #"T-3 I&?:qC~(X 609D!RxUadB>0B!NU+e)ղd}8! wed`!G6qygipqag!阬ٜ,46aEdQ+wж<_J CK,ț!&f2"Ey F[oYYWCI' %C!_HA!P,R! qF7NQY"l 1j1UDk2c]`l8h( F *!˜m:L Q `S|.mp8^nbc5 "9Lެ qYYkMfZff16kr=@>Ȯ}mjzݞlD6mOe≯tζ_3ojj}Ոd o٤yulH}8mPЃ)qhbBrkSrU+1іá#,B9p/)Ƈ`pK_A 5Uņ^h:K ˆ`ػHOzpCVv;~;#w?<3+|{3<3s萏|<>ww?=S>gXW/Ӿ;&}l?>3>/Sֿ>s>/G?쮡ү?r/Nas ln pqk0N V"=$`e2o8p@kd  b: _ґp`k`  ~ ̅ _FN!l!aa *6"$Fb#! < @!^m b:!rTb_-!@ bl]`'AP.J1%^) 4t2|@ ",*"\'4m\_%}L@6i+lc @_̀1u=L6&-#k8A Ckt7#-Pcm@mhCc';" Bd$mhܣQGňLB&mA SAƆC†!4 ܀'K*#GG~qc#&fB@Q(SR-2$#C;Ђ1@\&82|:B\2J0#48P#@cBZ%DucJF'<%@-P9\H]h}BR|P&/StCjG>vٙ&j!-\AA&1tBԌ]^ 1BcA\]G*iD\|*B)Y* @ Ȁ XTRFΆ#.6@NR%D YQHCX L%A:|  @(@dH @|"?d@t < )( ?@@@ĎZtě />MBDhBj^@jhviX $&@@ti|)$ *StBA& <X<@<C|?֛̀iN) LZ~?C$@<$6@*#w*e5Ph N(5\(h`@<LUk:.#LiD-pELF?C0ZK(- (?ZCd@ʢ6fHhb۬dP<ƨmLr\Ď#rO '4?@JDr/j/R#ª (LpAfn,d^Q4 h&ΊjCZ-] fV\rI x.j"AT!*4HV?$i;@CB(4@Y ?ʯf6BW$5$oHpIqo4C%vY%$pb[_(!@ =Lzܺ@p-Pl4'Ȏ҂ )D|@L#{>)$ᒂ~A,(k &ssۤ\A,'@ -T>=hjiO5ky/z4dqڪ f?w=@l(h8S/o.GJ$E4`p9o9wƼ9kR5Иq5jHjx,cTq1U!GjңL[ĉӑRC4s?>mhC%A'h4oa{>r=oF>䛨7*b~s?zLJ?O7= 4H ;bD'xcF9vdH#I4yeJ+YtfL/-ř7seFFd 塕^PZ5EꬵjyQ*k~#K4[h.Iq$i O"ICX+-w6fI Z\BV҆/?}%G RJц{PIDhI$NkHGAzDUg$ r\aa8q0P`AQ Pn{<7+n (D\G"#P?vp"{|HNHw=Tߴ? @%Nh݈:H J!7  r*(/h$!dI&gC҄5!rd~Gl&8ɹ.qpTg"m'O{>>'b|%ň:~΀>)-HaN"Fup D 'y /҇f$8fF~DFvz_Дci\ZȐBJ@n+FD~!` Fi Zp01\w`8! W`5B`F>A bbpE ~׍bp,bh#(q *|wE:@FSG>nA[-4Vbx6a!v[q(#Đ%Xԡ5,C'jC}!vᏡr}*%0 Jb`$ىIHOwFw8xINrp't";aG8""$^pDI)1`B1;P"ȇ:nҐÀ Q!>8"Bs;LKQ$>! 8|;8!NpBdO2S$(H6)Qٞd* F;^ Yȸ[MdCP;,W羵EfCI;`uy)nhJ8T/AC3 |%hjZC4feJV!W#P1#'>Al0C(\lN~;I<^9ny'F8Ism#FnTӓv%>P{:C}xG R(*(z%SK$KRTޟ^: [0 tAFɗKZ[A<[ 1=t4DeGS0/2Y y "6~ FrM:ʡB Hh0 E,|xuzE?G bnA^`.rTM2,.jn !iF`VaFArjA.lVJ a!ʋ"»wb&FX໔M{0m!8 *+$"ސ:vL )apDgDμw **4d.%P !V *섰 w 섺t0r,FŽX\i a +pAVHު"b1G"vϴ.J5"A:#`Lȑ#B$b!z+jv~+.".#F(ufoơR!%L'!2 O朴OI 2$~"["12"e"#GJBI%$ 2%[R\R&gd%f&orEjk0.$'(R((()R))#tR]'R:MX &Yr$"*8)2+w2),*D,-a-;*12..U.7b..5R#r+02-2ز0*3#3$12i0 R2n2e?b2/b m22G$`>%p5q6#Ps"J,Eb35s hJ( 8)dtXG\;6/SM2s$v#a D&P`AX= XPA@@.,2 T;JfB]ƓEr=S7 +虀&?R 1BRB-4s#l8;<45"D( "M`@.@ `.l#wGg # 9$`(`n`& ':!`G,^S<L f; #tt7#"N!B `@< @~H2u*R'>aF@H9BS;SoS=T'NF">@P\n,"L%A@Ru5NEtVtSuWuIu_t1ue7giv_ws7u1xWs}xativxxx2yfP)!#{W{{{|W|w{}C͗}}~W~~~WXXc*A؁#X'+؂/؁GH7;؃?CXGK؄OSXW[؅_cXgk؆oo"-kB X؈X؉X؊X؋XXnzXz)w֘؍X瘎؎X؏Y ِYz8#Y'+ْ/3Y-Y;ٓ?CYGK99ٔSYW[ٕ_yckٖosYwٗY٘YٙYٚYٛYǙٜY baY癞ٞ﹚C4z6} :49_z99Ơ#Z'ړwYF Y5Z:ڣ?CZGKSZ_c$be#ja#~-6zMZfOZZڪQZS9!ZךڭAZZ::Y{>[ [wb "['+۲/3ۀ;{䡯GwY 4tzaz::@ z۷ ;}۸s{ AܹWyv?p@^; `[כ۽ `` {:;yQb{<ǷƁ#Ï<}̑ N<ŝ|bfߜ>|ƭƳ̹\ǻ9|̋\<͍] BI|ü \Ӄ|B\ɟЙwSJH}>=Aɜ7̃=A]\͗9F=d[]p)BE?"j#d"o< n ʠ <rBIyԙY,qgyP&B#a~Vu}#۽=Е v{9 "@o\#Б9w'Ff`q"Ѫ|C-qCpb$ԡ; X`h$rg"i  |! ̀ ~Z|` Dk~ԏ?Ap )C)o=oF Wq-Gs݉gzg~w) FtB#PWO#G (l+2"I+M#݁H(30C0XzDRipG'pM!8 2 ecЉGG?7Ȉzʈx cɘcicõ ?9 K6pfZd>$N`oiKqctp /p7..= (Fâb +tw3`C@hM .@#s>J:ЪG`p 8h7+Qcb*;2#R "T)V-N0xGJ?|8mAYfƒ Zίù NSuf*p l 84LHJ|=`c!ѕ#8cPX@bl(7^QbbGʪF@Pb r H4>@ xd  F01aq!l8̐ZM$3>n nh܊S /Տm4kp70BGl# HZgU@^ h 2`NjE1X8 4B#\2:nкЂ6IJ'dIyW`CWYNy>Q}@\:qo uǔ. n_@:atbvp7rAy"8AqJ$Є*t  m(:`g#2hTtfYK0.l+}hE)Ý:f 0oڅ2 ]؀/ta~ Ԡ;a^j@jІG <J2d-YϊVt{jkͶRliN׼FfzcFl-a qLc`")2 cs!4 i@+k^+q5`Z? ЊV3JԪl_N~ vMւ}se}['T Snf Y.ms "uIZ{֧ q>v%yvJwm{zw+Ak./.-"=+x FX| ff"H {x$.1uu=ͯφw4y ^x69A;;<>>A?ACCCDEFIHGQJGJEIJHJGKKMNNQQNQNPRSSUXUXVVZYWWYWcVY\[[]^^b`^`^`__acccdeeie$f*hgjfikiKi5i3jjlj.j,k2l'l+mmqpmom;m*m&nFn3n1poso:o8o1p5nqsq3q.rrtrSrKtAtEuXu[uDvvyuxuwy{zazFz{|{K}~}^~~~V~Z~Udd[πLk~kH\d{rhюgXŜu֞cƦ٦|xqή~ƴߴﺐ껡›ijĭƣ˽ˮˮ͝ѱџԻ۽۶ݺ!\@C*\ȰÇ#JHŋ3jȱǏ CIɓ(S\)SGu$gϟ@ JѣH*]ʴӧPJJիXjʵׯ`>UGV>h=۷pʝKݻx˷߿ LÈ+^̸ǐӛLy˘3k̹ϠCMӨS^ͺװc˞M۸s 2= Nȓ+_μۖKNسkνËOӫ_Ͼ˟OϿZeh& 6F(Vhfv ($h(,zѽ(4H[6)TeXfxWn`>edinclfp)gfoie։|Vgz䟂jh"(h֖Nڝfj!Nz^6ze?r0+vO4$=6  dM C,̾!@aHZ@,?< M2r}W;,{sy-@ =9mk@ 2IIuRII JWl,@) _B>6Kx(eF2 o(,p!ZfHguP2`X$-A΢NԥJ Iq@zs8W`_2Ra ZBn+Y`yr8/H@U*KT@d8P`@@nXZ֑ r0aiN,s8C6D9Ǻ(0,/(*0 cD%22@dTX Z,6@z>nK+ T (ZW HIр@ P3(@浨u`c^G95ږ6a*7+0WxrWlC6at r3186VE41 h1v2a@oSn>"of`2qpmh 8ȅcGEާhO-@Ne_KD CQw0_S2D rB3.jxtӆh1 g9kSwdy684pA!Q0b[0w7HBw&(좂 'jWsfDf:N8Qj8,@TC]f-JȊL;RE[gaGbS[uZc8M DhA4s&g@rr0vs(s`0-D%}ch snpb4(oCUo~m 1\xRBpq=Ƿh_fP 8SG t&C 0UiհSXylyPmd`Zؓ1(MTD`PAR P^y]7 @ 3 Z@b'vZ)84  p Sc+ \r|5S `80Tb3% B􎕠A9ff1 hfSu  C+l# ECX RHTi+CT(@ `E.ilH(u&7w QGgJ]?Fw~2ӕ74*X9zK-V Spd^d^KJH t-@wdyH 0Th.pDk %Ojg䁟Pjqf\xldR YB>G8Wynt'5)CJ5ǒ/1Y-2PY3@ au2=1py8Џj>T{(p 1 -ЪS1nT$Ҧ UC}(P ^YnըVW*,39m%_JpU,&W9 \;`%0HcjlQZ9R,B2 8+C姡d{h*)y !c: I`&D!K 5|&t € t 92- @ JW4[%B I) -8qY ڵ^4@ =c6SkF poT8m#+Ksa;!6;FuCzpt`:S;6^U[s58ô~ iƳI9AA,g5K;[-k}˺Pfo";+ȧr!P_Θkz2rD1;՘|<|~Խ <$\&|&*,.02<4\6|8:<>@BۮͰn@00N(H Z`L #\neV.ɏ^?)nae`vR^^*R1Xt`f ,_ugVVPYpvy>^N$[ =Ogqkˀ 38``?1\?d)#exunx/͇,y~_b],ioM&1yOae?$-o,-oӸoo?ؿzOor_ s &?_$XAC%NXB5nG!E$YI)UdK1eΤYM9uyu%qI.eSQNZSEnxWaŎ%[YiSfږWqΥ[]y_uw(\&\aeibȑ%O\ٲō5;|gСEyΤUf댦O3N mܹu=o'^\fomgȓo]u%K^vŏ7˽կg߾)ѣ}p@?{tAOAB 3M($A CqD8P9Y I=L) a:R+pR;DaPT#zFhC\ m\H fQOFfbf8ILaa1|LPHUH>\Xn;!NTGsX!#9s6Q@e3bjA]ٕeEtu3(kpwFRן1XBe;AX``NJ]AahRCZ }C1ld#@SN8X, ?.GȚ 0ԡt:Fp0!J#VP`YTX%8щ," %cÕ?PFtFpFXw!=03 (;P T" `c@ FkkWf?(#@)|2!;]?dDiʠ?Lm.c 3 '6?@lp#Bp@Q@Õ*Fd]CWlrC[xLekT+@&HȌ|@pbc5(j v/SL=Ɛz4PG fDmGnЉPnDF $Tm"@(i#GؼuML"3bY `CF*aH>"#w" d֤iMq#yt @؉4~F?@ d!hsE50hX~ɑ# @q(p4B !c rՈD\@nq ZXG9bc8#ڈPbg^ddjHaWS=(VG NSH14U@ SѐAqe'>L.`P6MO#]|F61 ]#3xԑUרcWts7'&  8 \yJ>F\jV"2Ͼ)3E5ޕBh˟F rV0g7[#YeURV$:Pltvm<܌I$ÛmpRUlo|d$$:a 2)򻁓b{%YI^2aoYcJue2Y͸1Ѽf8Ǚ4mכ|gIA f`P%L iP&Ϣ`5U KԳuKH}E!N@^ `g}lܺ;}^`? Җv"[Vtl &7=n yucg `[mag@/jjƵG nM!F"@w}B1o2Ka]{}ʔ+3<h4]g3 )xGl|$(Ara E^~tߴ_Z:-l)WBB @ 7$[HC$x9O#] _feRԛf %ƭȚ#(A CPWkDv;}yG$3 ()۸\и2"PĈ yHR ƽDιG\'/v,>@@Y0HxRm܇_=wKWya'϶f $EQHBT"#` P"x>YใX>k 0?_c=0y#uˈFѳ 0a@+(\98#/@<܀@_T78Z+P>D"l;A.4 D  3x6 x)S*vB0B@d/Ԋ0@-r JNAF;Y+pDdd໨ DW󗕠DHhEڢ7i&Xh{0(((ZB `kWĢ(ēȺȀ];pk>hŐ؆Ú:Iɔˈ{H'F p$ q4 L`\ۈNHV6kH HȀ+ P5=_2Hw7kc.zw_qIHٰr PI,<>90ErTS,J B>c9DJ԰ɎplGK?I!K@0zKdl SK$ L4ʸ@9|LYL ȬL)LLLpL Δ<0x0,6I[M\%8𦁑QIq HF)Kɓ_1NɖO!QQE_q`0Rab8]e'ZIY!(T!z08u`)`p+0#x( r-@M(ՍYt\lc.)XkAR0XH,hQu'ڦ񢙪O;*a܅D'XG] +0akxp opLiraɇ3(XF-Mߊ\B\LE0J"ۆr行hPXխS] [)l'8- ͉HzD] .5(c Q.Ƶ S=nDTub@b>Me[b+>O*&՛x 1LA_2^`FC_9ck⽀Kc.\RhIdUX9 J#F d0E u# DppDBCpH.J RChw,fX;` B8=RH>ȇEp@NX>n o9E[@lXJh>`㔈8,THC.1Đ+Qi> `h<kXr =Pđ e,6܅<4z19H #9UxfX Wo dw`e(`hpXXOQ]A*UYֈex z ,ˈe an@XpbV.,JJpW(RP)Z@fdjY0iUxlf+lن&h8[XfP oF8ȌP[0j=WXdIDo[ BXrTxmXm@1[hhUPhmXUb@N^i=Q&9uhjkYjW(nkYAG)Zpk`iGAu(b"iYN0^྅f0RqkchY慍·^(a^bwhe( k )@bornifnrXhΗZTȃN0+ ">`B`®J΢=?aDJQ$ 90>@U(Q 9hFЃUH$>XG='NE ^`EPqH@TBIieJHrZ!ɑm[OX810>8o=HbjF@@`|x挘>?;,CJgI;8rTCHjpt3c;flsZBHNH6BhQEOpkXB(KɈw[@HF"J|X.g#9XN#1a0k /`sJ“عB?>==xRh$Ee@qrEFXN/JX9hZ"o2E(E@Q~_=(#',\yfb+vX(dZj_u0xLЃIXr#=~p8Bwf7yzO'>(@lI0fobx>kp'l{Gl9Ve Z9\=BxjGψEfNEÎxMNу!Zs,4w0QPBHDȬ| jJ=@ڈeD&;o,"|n#"8|(YNNkg)rUhT^@T0b{z~וO t6%kof>`(f@{~B9hA$RV(*CcuxY诠]E0bUmz[g5>DZ2+=Z(BRuQ%{\=FRDz'NHrvx#0;RQ֣^eqyҧ|-L#Qx,b1>+&ggB4nC_"R ?zDt,Z,E]֩ܺw7‡/n|7u3o9ҧy\=`HrDi'zB62D `2j$ghf&-ZO\(ѷbf,r?A/z,0^~H>%J sAO6&4 )|$pL!kiD 'B2?M^1,B(A*|$$BF Eh*p?L"<5Q42_}"G#&NQ67G2VB& TҤ?UĔ{])<$r }%T#O N1!*&)x%l^6.:)vB9# u[U+r5=_J!ۨl!"m6GCvW[X`&ABh܌:cexRQً4ɇg250EF=rjҦF)?q|L!E# #b.7B>{:>=\CG p#;$jyDr`-p$BD`xh,gZ#B#D4t [V(Q}ꐉS(CDcJXfrcME mc)]R&:0\0FT >lf 0Pb0~$)H '\ ؃j\tL&g%+3f!>OcL4wBN(җkȁdJ`yEPG5(*y]P(E!(! >4k-!0:/Ԯ4D#҈ja_!AEBWI CpZs?c-vE%0D!aH/F1E:H' cp;F f % 3 x(3U 4nD!zj9TQcՀxeafVt}FӺX֜i㼷ENk|LInV*ɇAw }Q>I|\BQC`1m`쏂R@-U8Tb ٔ!dq57 RX%-9FѤ\^VfUz"pCt2@$^`TSO+Y:,-Fأ뵗= UغQpc#-$7SJ7w{IN7ʹ<8 T&glr;HM"ƶlg"=c:McCMro[⶷soӅ/u28SHk-|85uA>DqcA 9(6@6[7  cQ$07k{c9ԣ.Q9˧h Ņ.v"Ec'N4Hr#c%E׃C Wě ϮV֗k?<3~s7<3s珇s>/??ӯ?/7?q,5uoН- 6_ GYLAA)G>Nv= `oi6GJ ݠ`ɭ> Z FG  6>q,an :L:% ~!YpPaə!` .jLơJPaϩs$n!"!b ]pDC#X ܀BNL4.0Av\D5ȏЁ (Vccboȁ)T-' -"pd-ru #uAqD@!oP۵ce ` :" N Fd pldMLE^eqA <"WDGG)F4 @+NfJFK$sbPAjDUdV-2x`E#AG-- C4x:`X, @'c4fCr4#UH4B4|-`ք!(`'dht :PBByD#׹zX)`Ah]~U0>@'|& d'l֦ EН+xP?` C' ! 2x#!-t*&|X\DYN'0]6$V Ā @9嘩p4(E X~dea\"K&P^ܬȁ=L@@cLd@|xÀD@ <!@+C$BX 0?@@D@@@3>QDFH*bnlC)X $ g@@i)$ DVt&@ <,X<@ "C?ViNP<) L@Z~?C$xE^$6*#{(]b5h Ȁ‚()L ʨnX ÌhFF4b@P.)X t.a + rd7Q_?h_ rDB+=hnot&U̦:;ES07W@0 !-n@i4j( (@~(*(xFjE9_D pHF4;stKo\F3:# E5nH8n,g[E 2][q-%όI:pET!WY1N 2=AMhMj=od܏t)ynk #H[<ۨͣ"/jxǬ(*qqν EXpĴK>?bsx?Օ>5]:? 4xaB 6tbD)VxcF9vdH]5Ȅ'S^D^L3iִy=z8oCFJC5ziRK6uJ$ʤ,1yLYgiXcɖ5{mZe?s$U{enub[W 6|qbŋ7vrdɓ)W|sf͛9wthѣ!mxիYv6l`yaw.ൻyxpmQqztөW6r̳:|xɗ7];OXw~|ɣOsGレi?\鯟 5p%@M<ʼn<0Ğ,Le%lѦiܑ}qI<$ |(,&{q,ܒK=,2L46<4]|:t0N9\>siކhZNꨑZ:Ք묕flh>!l~ {nѦ6;h{bȞFq@ w"9d` hHisM" +DmmXؼ#\bnhDuPğmhhyJh䑸j螺Nj` i$׭wbicCWX9  X}fn`!dH\Ӟ(b (@\F 2+ KOR:(I&ر"V%(!t"|(@A WP?:ȀlaR`qL'$Dv80w@hbXP|P H'B i̒:0P? #YBXA0*ΨFCNWH!# 1P36P9G=LR"V120DJ\!9"7O@AO x a2@*i0P9B豍 hI)l dX9qS]NH rg y[lLs{ɢ$0H:PDEPRd b.$ ^H-b"$q|%xdш|ȅ#т4>|4b Hj$|u!E/ui'B 9@I>,ɋBl,hMp,,\An [0-(7^B6 @Ît2F`h?0:,;Q)n!d\#/*\Y?2!=vk>AeslnQF3"ȐC'jRCi-/TNPa&A `L6;1 TjH/)^BDCxG" шFH! *#_hJ)`  1 ;P:o!Րw1Q!>4fs ;L`I#>"0~ ;4^!NpBvw{ﶒ"(Q=W=NZ_,ѐ*Qxmov-t麚|= `z ^{b,&흴I ;<5i3jx!!6;bX@>wu̓vZ" W:Ѓ,Rm[ Jb ?#t"U:t6H% ZنX2ވG|!n M m>B؃:G!PX $K3dP<șPR-F?! BjiOx|`"8X@@`az"&?aȳU\ٽ׉m! 9aҴ6bfIv| 7Puӆ2Pua E"ґ $5A%b0j h"a0:w}*/ikxu]~BP0( ڵ.M Nk0՞3 F *٨#* Ɛ CiD" |'>{M xAA֋Ί d46Njzk~ FA`VnFM~j`ozA aKwȨnNEĢ-|IA~b'H 6`+:Ax )!qPgN ax8j6aj. aaV8 axa.  Q 8!lh;ae_$ hhbp i BB­p,q a).*wgQa$#L%$R!KF!I!0##3f6MR%%r%_GZRc>&kOR&wRFdrdx(S'k4)R)))*R**'sr&"(9 YR+(,r b(%--բ-b-1..ɢ.f,i ".)R!,0B00'"111b1%"22?2F,2]!3/433p3$3"z+4kBEJ8N3"RS%`Z%%p7q7!Fӷd8h"l3!`JG֑@ցﭬ!X*Aya nw XG7*}dڳ=Q 3,Ǧ 96& 2@`,*/\2,D  D |XB BS=a`JI>c> 5 .h A R  DRDK4s!s6! ^! $nKID 3Fgf+h2Ih tRBJr+[T!A  `n`& %:!`G, &z3>N*f= !Jo>u>U )3X@  `d jH>5T'F`!PuE)9] T.` *@ >o :$ \@XI6%OP"? %a0A\ X( P`xh,XFa5^UYJKi64ѡr:6 ?vPBTfCfeU]2ZshS^Su/l!F6h vczO[Uivid_)Sj6|v//Vjk3"plSlg*϶NS,UTm "*oVooopW1ڶ!&mwSSq q#" Wr+W-WYrr7ssEs?l;tO8nQuMu?u_wscWv+^ɲv[7thsvww;w}totw՞wv*zzxtB'"{|Q!—|79˗|}W{5q}W~~~WX ؀wP#X'+؂/3X7'>CXGK؄OSXW[؅_cXgk؆osXw{=R{h(+Ŋ؈X؉X؊X؋Xǘ،XFWuXBX瘎؎X؏Y ِYّIݘ+ْ/3Y7;ٓ?JGKٔOSYW_cYgkٖKyoYw{ٗ79٘YٙYٚYٛYǙٜYיٝ+Y!ٞYٜK/'e}ubßZ 77xڠ F3Z+}zf(da9KڤOSZW[zffcZ9os"ru!za!/BzZ+DfjZګZ˺!AZ皮ڮ::! '6[۱{p .zz!  6;۳?C[G۳O ޠ^ڰ[۵y`6y{a H{BZ``@ [`۹{[ _ûs/f(w{a [盾۾﻾ [ ߠś <;f$&y@ &< (+)')B\CK|G+\A-@f/kocb&%7<5|Ņ<œM\'<9|řŋc%ڢo˳6r?v#Ï|<ȕ\5ģ|/<͑ͥ `\ƭb'>͜K͟|Ƨ7 e[© ԗ<-Tʙ&Mg} BNJ.]>2=&6=Ѓݼ›I\  }UΫ|ү֫eĮ,D%"F7"x|]́}ѓ@@ Ԁ @ Ā @-<rۼV]c}ڭ]a.`r*GzeP8C!A`iv}!ѽ ='\ K\`"̃5ѥ菙Ff (sD-%~B"ց= X`"~gb>  ~  ~Z|•@ XգD֋GYs`B\!aHLv8auNSbT]/>= R@*!T M.QqFbBaiD PyF˾h8! ܾz !6J `Ja a!T"E(IRaE($Ȅ mٳGō;z1#ȑ$K<2ʕ,[| 3̙4kڼ3'I\_@@1-DDꢙh@Fa_'&VZRo^еl۶]')\s bĊfȒGiCV9>SgER͟ HBPryiBٴ6aG~mUW@WTtzyW"Dv„ n/qbŋ"s׉>ۻ?|HFHSLJa2@ 0۸:FpXQgYibPp -c?0DS ŒV?7(4"ф Bf@V 9!xZjkqWlݶ68?#?la :s#iPw'Eayh> iN:_})̐GguB#PX:*H (+.+ cZjMIڈV00jZg`G'`V!4 2`cIPF?7$ H~V%aluIDL ?:KbL7vNX\> DM+wJޢ7Gioq?ɋ? *,l V"&_=3Zp <61:[#VB *ꤚBAy7ެ`D%#O-ʐ$",b!clkn B'{O?H\L4 ; 1A14x1ȢNz馟~ )xQ sJI&[‚ׂ 7d:D2&wkm#C OZrX[r\2AMc? @m[4luʯEvkn E7C+8c6 nq!p9vinP;TjrAip# ^ Ѡ3`TT H, a:&Ă)h2Э<\-\H-l X,P>AQTf |@`}zd#$ЏQ ap4~~F @|`c%V(ep&'? P$B 4`ؠHc,zٲ!d2>Le(@ZQqߵ,Z:!^jV`-DV(bpy>T|@d"ɒ% A &v np E:Q34%鰎 ? B-6ʌjtJhlCxgA!<{HiP: ϤHqBLcQ?:Smn"} T?!b;oѳK苟/k~?Ћ~/Oԫ~o_~o~ /sΧVu/oϯq! ,    !!$ !$##%%%)('*+*,-.12/222483766997;29>69B;;<>>B@@>?ADCCDEFIHGQJGJEIJHJGKKMNNQQNQNQRSSUXUXVVZYWcWY\[[]^^b`^`^`_^abccdeeie$f*hgjhgph3fikiKjjlj-j,pknl+l'mmqm;m4m1m*m&nFn3n2poso:o8p5nqsqSq2q.rrtrKtZtEuXuDvvyuxuvxzzz|zazF|L}~~~~V~Z~UccŁW~k\\Hf{shюg[Ŝu֞cƦ٦|qxήƴഎﺐ껡¿›ĴŮƣˮ˯̼͞ѱѡԻ۶ݻ#`@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\) KGf:tWϟ@ JѣH*]ʴӧPJJիXjʵׯ`>M7hӪ]˶۷pʝKݻx˷߿ LÈ+^xǎIL˘3k̹ϠCMӨS^ͺװc˞MՐoͻ NeGNμУKNسkνËOӫ_Ͼ˟Oߏ:7(h& 6F(Vhfv ($h(\,⋯4hce2ި)TreXferWn`edificlRfpritީA矀pXhyghXhANg'it8iiJ_Zr(fHsAAwh3J2Թ?ApA2jlzD,($@K ,hq*pA÷.`-Z+j/v,".-zH\:#  $@$nvojjw:$ˣwR1R3B>oժ% sFtRA|ueSF3D3k7hKgmr+㸯gAsOx#z_c?7d˚Cčr.i& o(8P zCݏ.Bxc6$aB(a`w .xa=a-G['N0 h@tqg H#H€ykD !o$(=~{ T7Pz[ɏfx$|[ fdxaB`7!+t" 8XA V0 z0 .DB0a8)GpA T )y JZ@HB eW+Vh \fGh\lYF@x:( A6!ݽI .'`^2JX Qf3F o,@Yh@Hct@Ir_ $-͟m% @( y%tࠗ$@Bܲ AHlKjc.xn$UR E@FBl3΂ heAx(@Tr ހ hg#!P=U^yAV/` P) $2cWB,ԛ62;VkPԞ-(@V 8@maH4"8 f v\JU+Agy6}ͣ׃ 3  rW4 CMh!dPYgNR-M`_tK}$ P7w/YS,4 ls2Stf8tdRmF:S6qȀG5(z04k1sBV2[PpQ+o7戳b0>\sć`rf¢:EP7.S#~3-F}IKZtue"PXyYbBM `6-'+8r/V[/r؀r2,;c^S@csިQUq \S i!Y}o~h,i\', ē/eg|h^k~g<7i0P R \BF0$;.gQ WxyIlpdXyZfԈd93rFT;ngRn ~]d]8 0 4YyvSY9Ka ڠ 8PK~1r+^E,ƧY, @*+(8! <6iI8%Y3 'N9 ù dsQH-4Yav:Y80 @ 91@q2 ^X-AUɀISq!=%Fr<= X`Zprٙ@H܈rL0rn705{VT9صco@2wD'9Y#K&U#p ^ K[x@HJBo'K*<@b.S@q 60[}pKiEbpeY`&K/V7L;:UfydnԔ"d, `MBCe21% Ut`SCfx.P{L pSGupO PՒ Do*dڞI3jGB9 ^@YfEX`W+8e^v:U+#7[~;~La.V}s .&',_5{f 27Ҡ)68I u3Yx ; 0 V87 m 9F :kW%kp_Ц /[,ő౜W+ O{)_T;ѵI YF [vx6V4V;nv/soPwt{6Q#36c8P:r+8cpxhc1I+RW{RS437y2Al˹KFo@3{q|''A^8;{)3B<2޻KC5h&0M)Հ\bÁ;| <\|db) "<$\&|(*,.02<4\6|8:)<@8 6L%l$#"! ,Lln&] Hqhjlnpr~4GؙTW=fo9P1/򄠺瘞nA<AY/hؐ^=3/c@5Pp.T-6m麾R壳6 $}/]fp |00]nPu -# UOx pуXK4xj@1eVn4k߂8?mp 0UڪbW(Uo'%PUpYUg@XXM,P =бAg]S(WH/1IP?:|cIWZKM_76d_2~fl&O}ojt_c}5v~xz_v؆~m8|/oϡA_gUoOЪ?_ʏǿ{MAJmǿpB\:_Oƨڿ $XA .dC%:LE5nG{M$YI)UdK1eΤYM9]Vύ"u%ZQI.eӜɠ/(SlHB7 z {ln 0_1U68hsY /miEFqBo`|DN [^Jbf o AH F-Z=K?FA2FtK`ѢFF5y^l*$C ya#0șb`[$ =F Ĩ#$+J+x)g@awX0 CW@WdhGtX=%TM`ۄ6W$#Z+H:ڥȭJw,A,% P @ƫ%G q"HP Pnq Z@->JE@ڸCU F >s`%7LyTT&acEqqt_[-"@Ic_\S:;z. ;cX8 hml{=aL;8mպTC8a_s620&GZ_NVjCHE\D 萆K_#HwW!}K[iR6)DM}t\ޅz=̶7}3qoV`KIf?b$"6&|U 'ڛoXCEhSH]/7BT˼ n#jEȻ ?,(P#x/8?ۓ:+A1<<@0ICB,P=V! A3A$||506(L! ș ,?: Bh!$6$lCXBhB6`gIME:N+dx뱴97ÞÆ 6:]#M6^  yi{ '( Z6 p8ML.CA ( >^aLl0. {SFu<f0ix@,$=y_6[G N Ot P;JXC(G233#yF^Ehm$UT5gȈ Iȶ䰳x3h\FIL ? 9 AhI|I4G=8pLV(H0>x@m<;J`J53p~J쿉*K( \KuRb> Թӂ7TD(B8CS/dT IT=%TTдC Z=HPEMQuԉH&v=;: ?S!BCiE9STYQ VuW1Bzȁ|ASHy8&t Wp*,(#x`!g}֐VIɛaQ_DM 7,@PXX;jȜDPTY'y=MJ}7\@U NЄESmI`%TʇIozy#" yjY|ك# /@ !Fg)gh!Б:Ն8.*C$BH@}IiU&ҮiPܙ/hXȦӃyjA\HD=%ʵƿ&"Djht#.iiH$iH/$(j8bU~],ݘuѐkx`oP@qւa@3xWEύ`YEFVo:L*kzjP='t8!I#Ⱥ_߭߀ =CK1`>[S 3a9߽nSv4 a3ᬅ ;:b(@Г]ŕ a⃰03b% jEÃOe bv_ɶCIQ@ʃc4%'tx1F7.`ؼè 6 6B<'=nQBf`5AQ=:cȇDX^HM26 oH%(֚Hع9c:TN` g)ih:ucsMGXte+ HXSdw"iqh s8VXX[~ak a%ywfTihWC4QTH+`[&J0`%5_@XoxdxV(ajh[XiJiF|S%^NwnNj`Wih[HgQtxT(ӃqIXyt؅kTIe WQW8f~PBgHy.hNb{Hمׇt@[xŖ,iR4nxjTdAi~t(bxUAM0]ԖI4^dٓ]| jit(o1|fb_x貾%bP(dБgnq@Bz*,K;؄  =I<?!CPp ~BЃdPPHxEX?ȇShbo{侟T u?)q>/kogA3o6~i{~#˓HAȇ䏐X{{.مdW`A=aAI?R%GE)_h]2=&ȞXPj&J&tz~5h wGg== N!Æ%%2a(BaP %ug 5Ǜ?gz7$bo 76=7/v7TH_ƢV<$3ТG.m4ԪWNزgӮm6n{ Y7PVz$IJi!Ij- HYHkh IcP i 9nDAi'W [ٟ$ SC-ta MbcE2 :,]zI($3S ra"iI>XL#-&O]"]1`(1)sHbȋ I zBUB#FBd(ؓ\~4]"Y2Zӣgyr13W*LS;O`3(I7J>r5I#\]vJH*qMHȔqN1 zFVBA!\I`tڤ+3 @R_Q*/H-x?׼E!$Ilb4ё$ |4~C WC\FH"Uh?U˺z0g o|0 +Lk90Ĵv8x4ӊxc28tK?$a\3|Tc]O*h#=) f"1Қi G}';A?MxRQ"S%J$aAAl-BH\ ;J"FFHH"BQq0 j->!ְj tcwIbr|2` I# ub#+03NbH@vЇkc;GRvabcynb5KNBNt`c UBJ:a- KH,:b0m`4`N+F8A)B @]ӗd"4б$!8CD"s?Dz x.`dL8hP8Ry)RbG]Cha&EZ! j* #'rC!H. y!5ްw.?;~AL4pE< gD=:a|:kIš1lհ$x 51!-y(^t"_hBMC3FEm tMEvM0~+`:D#HTMH!OCP7I!L ThB^+((!H*!| xivd&!1FdVPNQq$!H2:X!ڠ kS%a61CbdJ+@Dw,bۉJ,ĹWֲ}D$D,Zt2k`ICtKrɐMLkKG$WDsJ4; ٷ,Z#8ˬ!. 3C"ӝP!E65a|.!{ 𾆤ɬ}'W vZc4m,@Y Qꐲ>RM3%D`5CD-H+A]9G(rDX+uyb^gGw@LHD_(L+Q7-,vXCkuI C֟yMit#]3L$4Av-3. Ͱu8khؤqc8[7g\&n6yHb{v˝k_s0FǹsgZ[ڣ7JZrZؽQg$q:ljR\и4LvK-S4Nun1=,1`!7&?90VZ,_(j0Qۣ"˃.9NtICu~(h/zj1 b2FТkط}F?zmNUv;~;g#?<3(|c3x<3s萏<6>ww?=S>XW/Ӿ;艸&}iъ?>3>/Sֿ>s>/G뢡Eү?PrS&q=O߾?ڞơA^nN V1h؃z\j09 n@h` "[V: Ɖmh f Nzi`m`h>!F!:!IaY ʆaRao aaiFJ !֡ᴡiH"`DBia !l0!h>"$F"#i @ "!-H 8iB遝&ABT آ$QiX"i (T1C'  )ű!*#~,&4j`$/`#b_6@@B@ 1#BvÂh#2Z)"@4 =B>)vcl|gcW\k@ 6$> 4l`jJ6@@L`@wԊ`A$R>% dinBiB@-&ٹ\A%O2l^&R2B`AYB]Z*\f@T P@'/$)RF @5Nqi,BbB \ dUvh%Hxd\ P$hB : @ @(hH @Bx"?h@t) @ )8?? hhE iR@B@H) i+^"E$F6D( `@t \6pi* @mh h(@&A&(i?\lP@0P'j:h Lji: (MЁp)=D@(+PgBAhC(@(t\5T ̀R%h(ch` c,bqcYRh:6"H@`-d<&@C p?8PC$XKDlhCiFD$`jіlܩU8Ҧ@v <0mB(Sz@j0"J$`hGýk|ƍL`͵:Pg$=@ܨ=btأ%?k@;CT@$kj&F 8jite1X:*&,:\@i@%2d1ւ@,B+*J ~Mb&ߎ6^YKHdfӤjCnaA&ShRIt i".nA88o<(n2(rmC6eFFd 塕^PZ5EꬵjyQ*k~#K4[h.IY$i O"Izc\+!a-w6fI  ZZVƅ/?}% E BGIц{NFh&HMFEAzDUg rZqHq/TbpaUMTp{<7$,p *DZE"%`?x"{|HNHgLBߴ? A$MhOވ:F I!8?Q:@!)pe X7CP{.D~>3 !B:[A' r 0a͘ſX/"PA3 'Xٹ"3DaB` 4DU qY ހB A`F"Q*" VH[ YJ%l$ 7B3hc2'> B7A?B GidI&N6 -S^g9q\lS:y-uj|;W'O{Ի>%O3(.ZKtT(SAhxE1э\#IQQ N O,,p %H ⇿hE0w1VCx-_ ;qbވE+hVm8x [ - ڣ~7~BkCjD]|2H24_ ?,:N.'- kDHE+&V!H=gڦb8!bcӁXeΞ6Dz㽹odlF##$$:Eb\-8B8q#Sj`4DDL=$SBt5DPi b}_YD+TS@ 2?lŎ0D,bp.!e,{0-w CoC| BNEI9'ц͢@\N@.,~4D;J3hb{jp@'t6a0CmCCw#DS#JԎ " pIGH -  Eg`f+G* V`<6-3.A` `8(rb48yf@p`dLQJh <"Ho#I9bDN! `< B~h4u" x&U:JtA9ɷͩ|Y<\I|K}\7]ЍC͕͑\ɥΧmƟ<9:,|; >} λ͗)⣞gJ hi"#M]!kCqCpb$; \f$rc^    |  | }Ǜ灀?ę ^ǝ>ӡ^?ߙr`ޕ׀a(raz | \ 1Q.hھu)„ɒ"L,bC'Np'ϞyD<2J$W| 3̙4kڼ3Ν<{ 4СD_-1b.hkD"TI R,6@Ed*ԟ ڽ/0y]^9``H%Z8KF?IȾ_:,$XF mq4Ċ$}^(ɛf-}Q7׍Kz1/zR{Ts 6dHo/f$_G"[u_4ۿ??r7O2$f 9r %%A/hW5mq5`Pr[L&B t4"$qU 4Ge tlG t5"@C]  0u H.Xk^hRƛm 0 sb2cZ,s\7ldQ2@J(!/h{  r"L2O.? 3`$$rCC K 8Ch# Ұ$Ϋ+˔0C9M GLRJߪ BBB"+"Z B>}׺.[DpG<9РD-MYhS,C]1{qɦzꪯ4 +xQc*+cݚ} 8:H3+4vi3 UՊ XBfx 0FB*G4J+]͆]zmGgl3^`Np0*!Ɖ)ei*DQJYp$TYTx!3` VA"5GF$ o =sE" P D`p =KJ?H" j gQ*p. ~pA @= ! D2v^ǿR@P3Lydяn<#Ql₝È%D%,)OTʤXA8) 30Y50[ `R1"3(#:p0<Ј,v *+}LwқKOկ<\[}d_]ˎRg_=tk2}{;=/|o+_C~7z+k~?Ћ~/Oԫ~o_~o~ /+ {FaE{E! ,    !!$ !$##%%%)('*+*,-.12/2224837669:7829>59B;;<>>B@@>?ADCCDEFIHGQJGJEIJHJGKKMNNQQNQNQRSSUXUXVVZYWWYWcWY\[[]^^b`^`^`_^abccdeeie$f*hgjhgph3fikiKjjlj-j,k2l+l'mmqpmom;m1m*m&nFn3n2poso:o8p5nqsqSq2q.rrtrKtZtEuXuDvvyuxuvxzzz|zazF|L}~~~~V~Z~UccŁW~k\\Hf{shюg[Ŝu֞cƦ٦|qxήƴഎﺐ껡¿›ĴŮƣˮ˯̼͞ѱѡԻ۶ݻ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\) ;G9tGϟ@ JѣH*]ʴӧPJJիXjʵׯ`>=7V>h=۷pʝKݻx˷߿ LÈ+^̸ǐϛLy˘3k̹ϠCMӨS^ͺװc˞M۸s 2 Nȓ+_μmΣKNسkνËOӫ_Ͼ˟OϿ[h& 6F(Vhfv ($h(,t.(4c8㎚@yBiL6YNF)AIXfZvq df暪pƙri'tީT矀g36'ZբrWV:mޥᤍfjj~nP # q(dBhuA {SBiY-fO2@ôj`(˩jO&͢-f?^evC ȹ1ItKs;1$$ b,?p/#Z]țϹ\ *Ki&k4)_Z#ڢCη A3ךa[1'ճ@}ݶ P #UM3Z`6e i\~7O+Ӷ~[++\;}6GQ X6.i" e`0"pG k u)hIF ' lR9 L)5. G| ,$@@%X&HÅh"#BP)!pJmBp87$B$p^Αa* E&,BVy$KgeHY] tJ\`+8*F#  @ :41 HZ%,Uc4C4Ҟ  @ꪀ @(Ӎ $2cV\Zpo(-v\98RZ7u `*@[+)rv҈@ @3(@(u*^ bG)ږ6Za,0V̀@rؖVpC VaT q36Y4h)Dt@mcp[D[ARsu:̑ML@5)~kysݮ Y݊lmXW,T-LطvH4q[\- ' Yx,rXMsB@c p$#炗*[DpPNvl:! JɿE\2[lv]$gT6 N60 0Y /4]V5BubVڨ&jm 8Z+7V&.+5!ۖI98 욽㶙Melho_|40wssr 0\{G<{5^F|jp0W9P{p8XCFg p;*փ7fqVvTeKs0ܒuP YS/~'04C+EL pCbee8 cVx9J$Wc<(H.4phgKG]tc.1HP(#|.H~@ Uon=bo&ebqpyh :Ё b8ERhN- Nf_K4 3Qw0^S24 q23trtSjdRs:6}X (4p1&tBb\V2(\+vׂ &6|0mv,tC>KY17PE[u0v hZcuZb̸ڢM Dh148s)WcjE<i(4G20J<쵀C:B ^gb6/83!Zo0m S9\x"Op<$i_PVhBiP(S(Y]&C 00;f.hQ y3mdfZ6dF 4BLTDu7n P^Sx PEaqLb ڠ 9K1+P_ȕ,Z2 Ё(+581 BiS89%Z4 -NI ѹ s[-AZ0g: Cw+rT% DBX#wR8Tht+3T*0 Ň1wly .)WwQMhPK]Afw`)3|hM5R_0 w NUDԍJBvK'+BVr;:Tq 0 \vK%jՁh qY`K0 %W"78Q;@[ynĦTw/ ei, MReB1% USCgx.PxL SMUO ڒ 6Ep@+r#4GRF _Yl%YW,39k%_:PU,)'8 \;Lbp4VFs .,-d,0"TZ:|Q*)x# 'b4 I`( A 5|s +&+ i |e7;1 em@ J R`(/;.f `+/F`eKѶZ iV k[64;s; F0oV76V#6hP;+8iDqgxm#IÍA1,X>ȐW43/'8gA|˺Qo@@)|-'AP_ֈ֛)D4eD3 "Ij+@W)Ɣ\Qm <| |<$\&|i)*,.02<4\6|8:<>@B@;#ݷ HJC=PRЗ,EoG=Z\ MO5 _ Y Slryq@$ \ մg3CndXj^֌ ׬x Kפ Pڰ3harhH mA7jجQxqLpppQ/ : 0hhpPKrA7lݮ !wd\7qڐP+upJ}RiV 4 La){ 9`ԭmC\pqs_ p/vw@L eD 53+ 9Z pU0+ {6V /@ 0Sb`w`L"N^~&NM>xNzYQdEJ@NmhA]2n|1T.T z-N_(1d 't`0pTW^e.gN3F Nd!AtMh^Fd-p iF CI)tY誒^n>na4U瞝A8C3N.53T37n1Q 7  }1>0]gp }0ƽnepY$X `=0%lS^G00Q(9 Z~@Ln $#\lEGF. /)$^_vR^c R3X^]p+U]gVYPYʽBN^&[ =g{t9rpC^qd_xQ;an`/bM_Lxz/b],so,~&ϗQ?!yo_C/nANan?!jOҿ_=[}ȿR\$XA .dC%NDxݯ{5nG!3^WI)UdK1eΤYM9uOA%ZQ3%C'S%KZUYnWaneُSǮe[qΥ[fYyѪ_&\x'^5cȑ%ObiVgСEۼٴFƣUfkON mܹu.){6ڼ'^x]߿?s}&WtٵooNŏ'_޳QÛg{/ }&q' V$ؒI< *DL|I%Y L*$H^7k0l|&I n1N` N=p `6 G֊j|@(1sv+&K/8OkCI!TKF $qT!hZ+j8ʁ $Ph ~Z|b5A+!9$1(؅L=*"pA,u f\bUPmkrI K J!aӆܞD*i@4|Oj(gQ$]s| Zwe£dU]&ިIwZ/J cs6z@sʢFEQ:}CPޘ&i`BH|0JΩ`k j'p_"hp_D o5{S2,|e 9#IgO!Y9V 0,Zc5Y^as @׺50-X[9uz4-:ˆ@l$ æv]R0$6  kmt)=@m<[~v t{VNUmP@5p`fs{*-I; @8 hnx)pD5_4ȝlڏSjE}@6y̨ 6bC,i\r > CvL\󜓠%Ѐ pqI !p2Jn=B@nj-ubຮ{K&C(.0 ZBnl$$y^C|WݜWi&*8^h2TF vUz|G{X-pf'_BWoM\d&pU z ]pqM DX!@[Scz־n",I?pP1X; ?| kޣB8` |̂C8 j`?@P9 A%4̋k3 s/tH,#q$’"4[B8&D' 7P=7#r_7 XA _cRbɁQL8H:Ka ZDS fT8 Bb1P ȁ ?;#Fy L4 M H ?z7al mІC"@ )3 |ȰGz{L_D;M]7r LHș3H C >fCɕl-[$r D49hдVIHA\<,JLTIK p4LALLLdLJ\ MӔM*lͼLM\9ל ;M5M`M,NM\TNNtNs"*NL묑NE:,OO4Otί\O$ON4IOcP4-$]=PKPż y1 P P P PPP QQ-Q=QMQ]QmQ}QQQșdP  pД!N!MRTR' &U'O@R*RҽR-RP#RN0-SR4S5u 45}#ӟ$S8Sb6R;ӛhS@ ?@-ԪT 5TE- DmE}ThT)TJ<3=ETOL@#%UTEK%A#T}k[U'lUQU[2YCZ[ՓN G_UO`=՛pʞșl|c-du՚!8yZurKwOvQB@rYy+vI\aRhםW^r5/tx:)$pIA8iȂ@wBh2 XMI]M_Ȝ͡| PȂ ֹ$7qZQi(ёuʙjVNFS"mJp eJ)& PBկ͛#!{ r|PCTMK oXWH鹅IbLSv֓N gB ip;eˋMYXs`ÉHh(eIf: iq٠s@[ܖ>hd6nTdB֔d8b(a(qtЄC؅kn9i_Pم.]FbZDw0kf(k)?bpqH/+Vt(]0i/g[Mg=?iJ=0IȃĜB8I@  U8(=HA8`FȃqEp<)MFMC_rEr8?PS՚V6 #E8r=Eh:W.dMpσZ)8P`N:t. Iȡ:xM؃Rk*NpudHB@S>JwEi CBWB0PEM8h&Bp=$k`sF؃dsJH|@:/8PM)y1au&ڼDRƙqE=pzgJB@S/ Eg0EXĔ=H_؃TɃ {ЄJS6,w(B)iٞ~a`ק:@kqM|p{g'#7| XPMGMkx똉?T?ȇSbf՟T( *脼d=yx-49Ĉ#B"GF(rH SH(_Bs֞sv WGrBDG?i{mP1-O1G[?I(_!ZQGMF(uޞXAW~џ<" NZ?23Px\=ɢ+ZRB!jۃߡQyHhyNAn,Z|fFXڷs;Ǔ/={׳o=5ХC'MRi^!1R$ -AA$N!`I$(H>OL"a"E(?dK 'LO=g#3 %L\ED%e%(HHÌnI28.L*"&CHV82"ĶSP0I׍8HLrHM"$E2DYJRs6$8%M1D!#iL)R$ IOCV PEB BtM!{OCHH!Hab)9{\CVKTk{S JL(_ j$D4J$Vn3XJ/Y-"GzP%h$(jyT3SL!-,[DW"b}?"8;A4r<35|yͷ3=WL+ņ=TvH'xc-{KPeJS_8Ӆ͈cbkD0y&N*n$SeKḤ+%#X/yszRtr,N;v\$.ƺw(ޜ05uM'+YO<}%hBN+"vK50Gɶ(gRUM2y87W^ Bq)yJ%{*"/&J{#\@(0`sN1UIF>E{ H!"D D" E08DŽ"v D(6!w/[DM9i{}-y[ß \чIws=iE#w?U#+κ˸mhޱ ؛>>wvp{'7c^|Vns7Gn[LH[F2Cexy._X;wwƛ;ώ18Nhj1 8N:͊\,LjXxe#ã0$Ӯ@ЉVGI6FuHR#Q]9kGqwТNm2FAS;w7/ _|OsFY_؟V?/ӿ??  &. q-N V^ f4yꝟ|w8 ~BA Ƈn} ` w܃ xx`ݠ5w!FN!::d!(1{v\a!j"aqx!Ё{avaa}εaa8w!."#6)bb b` !j$:'~"($R1B@dC@*)V%^b !bwtb(.(Jw @L "0!b>]>Ђ4.z/xn@D5`FԞ±B 0Xn=X@PhQ'h&D: kiyJB]\$BB@-Tip@ ( Bv kqK܃<$?0D@eNo|1/@Zr0ϞC.VB 0,u#L0kQXRL H=$NȅT ̜ϾJ .*q5Jqk$K1#N C@ Ot'@ Po)TO骐Dz,jǓ6&NX5:@ۂ3jC xtb e2) 8>0憀7,@'O6p DĴ^4x(ns-$$T hp=#E9lBl+@0 P jzfN+q%fA4ݭ8-Ѐ4C̶vO9 fGHaEjy@-ǮJC\$0C  Avvw GQwxHare5Rca{[$KRZ2Fz+vd/$@\)dod2+k(, @$VMr0vho_u q&40 ; FS}U _+Uq7͐j2y$N>/2&W0z[K}Q _ø*7h0 <} {xh@twDT>%*& u!铺'CQK>{C=L${= 4x!d6ta+)VxcF9vdH#I4yeJ+YtR"{B8ds޼iiRK6ujTSjD%%sQL=T4ݴ JC=TԱ:UXeEV1u\uݵZ[ŕ`WR}Hif}hjlݖnpr=t]vݥb7=vzUU^I齗~-7}>T^8̓L%a !㌕4Q7K}UE.bxU<&e<du@zU:A7ę褕肀(楥Q򽜩ޚk[첟F5B2U԰[op[_Ñfr@-_3lE_Ch{| -r(m4FqwPa0$!,HH$m\ؽ֬CʁQaSPF&A!ZI&GP~F6Q~)iu裟;BpATd *}POH1dAY qA p!5Q!B AGB!Lbpp&o4h$\X?h(rYwX3qm bC@T!xracsD\Ehc`)`@F3KhHBp\PdB%B18Kd(\`HD2JL#FMbT f&ݽh4H1L*:A!jB H2ui/~ )]{ )N13K"AE桍0!ȉ|ӝ<9%P o:BuE91r#ZPM(0ƍ~Q]$Kx[A/ RD6ڷ A7>12?9 #ĂHKfD(8="`;)=t$B4 Sx~pX+CA#M*VshE1HW!ъX -XՆ3ъW<E+BТ=Zyc'?Xq00:L$ # <~qC ajrQbr(V68B{OKc+ q0CŐyVH6b{ ,!vA=hb{m%1_H>7!S(DqBp!F8D! q $` DBl9BQID87 jAfH(cmh؃DIHŐC8hM!!BH8#A؄&ܚ:׾4skAAB=akW1 IC f"n! 8 SDvqՆQ-"ʿd=xpx8fCtԨqɺjڞ%F+v5qՇ_AME!P;< ES=s!!͐/}NڤzzH,$F~-(BP#U|p5C`Exq$=&QUy(6Cib+~paD+QV@!"?(DDE0Bu.F!g{HqqvxC!|⎣NEӑp1c$qmA%,#Bqoׯ8xQxW_]a$cEB tY>ECpNߖЌD;S7-1  #~:nw\]?7q} oxXǯAvEê'5%߇xT{F嚌8w)஍s\#Nab Z"Lm!Bba~!a |*aB !  a^aRaΔBᛤAu$l ~+P$@D GOg/h cx(`!VLbא6!@a"D 6ތ= lTy$ahG A *=AN<&AL)5Ƙڌȇ_ v5-F-)6PI@H B bk"K"$/#q!6!" " Y((O*LVblB$;Rf*DF8ZR%f&]``x(S#(If(')))jv)g*C*r>| =7,R,ǒ,,-R-ג-R-#2*¬.pGAR)F/0/+B.f11b0)021,s"$2/%,o(3?)48s<4O)DI3zL5_%TsrXV&d6s#p #n)t#x6%C~7;B (8nvr@:s29[e9;8-xF &! `k='a G 8TTAs`@ T@;%9;9;)b( 4.@,*5Z4.H  H \^@@@ej@``2T/t#t"!r!P@I !J0T GjVG{t#z0+` "r`NGH` u "Jih+aLJ ̴VBA3$);  @ 8 (jb48~hhE r@daQJj@"3o*(T/AS Ab`~T4z` `}rՠ:Jy$uH)t+`SKS#T(@@N`Zn4`: ѫ\ 6u#uST#""tj( @ @ȇ.\ X4(a־VR riV0Vl֥pc5&/Ui6"&5XHSjAiEg1Bb6aO"lsUli06j*3Vi6nrn6ln0Rou&oR;+Rqqqr#Wr'rp52WsS"s7saHE*?s;tOWB7`Fut[v-ucv7pvsw6oW$u7wgwcxuxOMx4yYwyyWxU=v,Jz?7y7{77zyw(|ݶy)(W}7}~2~w}w}~TwW ؀X؁#X'+؂/38!y(CXGK؄OSXW[cXgk؆osXw{؇X؈X؉&m%l̊X؋Xǘ،Xט؍X瘎؎8szYvِPAّ#Y'+ْ/3Y7;ٓ?CYGKٔOSgyו_cYgkٖosn[Y{ٗY٘eٙvYٚYY5YǙ˙ٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢey/Z7;ڣ?CZG(×7]W[Q]]ڦoqY}MiC~ZڨirIZ97Z.q"z9SFZZ#kO皮뚯; {c!ʁ۱#+۲/;$05;~G9S[W[[{@P` s{ v{۷o;[{ ހ䡴۹ =9(\(}~ޠ `[`۽{[ǻ Af\Y{^Bt{!@ #\'+/-|  zKďv@f| b! ` ƙsqo}o\ȇ|iƗƏoـDakį˿"'S ^dYAAZa~ax,b4吇㘱&vq'aZah%RCW'&!&aINa!N}yZ4!!9BB޴4D9h… .y&[~*ɵm\ I RHD iԑtI& 4r'ɓw޼yA=4ѡJ:} 5ԩTZ5֭\z 6رN?n BE 9"V. g )AbDThk3f O{k+[| AU00Ċ-%$p\rU0Z 68 MbE j1;|OH4p׏_. JQz̭."uaNHa~(.?E(蜳 ]RC G B/9Hp c{yVd=GZ -b ?@CHC d8•Y?[v 0B| @pd& 8EtFU7PAٴB=7<?bH--u {E)3)_M߀=Ԃbza kJPCFE(u0 ry<9pZઈ#@P65dQvsGFB ,BQB90@Y]A&k!B+&ح"f\@uA< ?ӏ9ߥL7˄MZX>(K0 `j\k:s>??). +K g)ЂZiXC8!64{%$[v$%r+0 :M HPR• / FB"F\ ]mYgv Dh6pG<aq?O9ФD-Zl-hΌ*d tO|ƣ- _TS6Q/rN"Y"B=lƌA^Ke0Cܖb݃epB2kB%@-9(Wt!}ܞ0lN!!z׼ ` {.{0#Kq WJ[ilk{ܶ6 jkt{X x{|{Fܚs`#/+| ox4mX/մE8Dݡ|#OP|,o_o~! Ց˃ Ώ˚U4!QSK}T unL;P׿,b/>u}lo;}S;[z~/|n+~B<ȇ񒯼/c~󜷼;/Nӫ~hO=_{>}go~ /+oKԯk/ϏY-kN-J ! ,    !!$ !$##%%%)('*+*,-.12/222483766997;29>69B;;<>>B@@>?ADCCDEFIHGQJGJEIJHJGKKMNNQQNQNQRSSUXUXVVZYWcWY\[[]^^b`^`^`_^abccdeeie$f*hgjhgph3fikiKjjlj-j,pknl+l'mmqm;m4m1m*m&nFn3n2poso:o8p5nqsqSq2q.rrtrKtZtEuXuDvvyuxuvxzzz|zazF|L}~~~~V~Z~UccŁW~k\\Hf{shюg[Ŝu֞cƦ٦|qxήƴഎﺐ껡¿›ĴŮƣˮ˯̼͞ѱѡԻ۶ݻ#`@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\) KGf:tWϟ@ JѣH*]ʴӧPJJիXjʵׯ`>M7hӪ]˶۷pʝKݻx˷߿ LÈ+^xǎIL˘3k̹ϠCMӨS^ͺװc˞MՐoͻ NeGNμУKNسkνËOӫ_Ͼ˟Oߏ:7(h& 6F(Vhfv ($h(\,⋯4hce2ި)TreXferWn`edificlRfpritީA矀pXhyghXhANg'it8iiJ_Zr(fHsAAwh3J2Թ?ApA2jlzD,($@K ,hq*pA÷.`-Z+j/v,".-zH\:#  $@$nvojjw:$ˣwR1R3B>oժ% sFtRA|ueSF3D3k7hKgmr+㸯gAsOx#z_c?7d˚Cčr.i& o(8P zCݏ.Bxc6$aB(a`w .xa=a-G['N0 h@tqg H#H€ykD !o$(=~{ T7Pz[ɏfx$|[ fdxaB`7!+t" 8XA V0 z0 .DB0a8)GpA T )y JZ@HB eW+Vh \fGh\lYF@x:( A6!ݽI .'`^2JX Qf3F o,@Yh@Hct@Ir_ $-͟m% @( y%tࠗ$@Bܲ AHlKjc.xn$UR E@FBl3΂ heAx(@Tr ހ hg#!P=U^yAV/` P) $2cWB,ԛ62;VkPԞ-(@V 8@maH4"8 f v\JU+Agy6}ͣ׃ 3  rW4 CMh!dPYgNR-M`_tK}$ P7w/YS,4 ls2Stf8tdRmF:S6qȀG5(z04k1sBV2[PpQ+o7戳b0>\sć`rf¢:EP7.S#~3-F}IKZtue"PXyYbBM `6-'+8r/V[/r؀r2,;c^S@csިQUq \S i!Y}o~h,i\', ē/eg|h^k~g<7i0P R \BF0$;.gQ WxyIlpdXyZfԈd93rFT;ngRn ~]d]8 0 4YyvSY9Ka ڠ 8PK~1r+^E,ƧY, @*+(8! <6iI8%Y3 'N9 ù dsQH-4Yav:Y80 @ 91@q2 ^X-AUɀISq!=%Fr<= X`Zprٙ@H܈rL0rn705{VT9صco@2wD'9Y#K&U#p ^ K[x@HJBo'K*<@b.S@q 60[}pKiEbpeY`&K/V7L;:UfydnԔ"d, `MBCe21% Ut`SCfx.P{L pSGupO PՒ Do*dڞI3jGB9 ^@YfEX`W+8e^v:U+#7[~;~La.V}s .&',_5{f 27Ҡ)68I u3Yx ; 0 V87 m 9F :kW%kp_Ц /[,ő౜W+ O{)_T;ѵI YF [vx6V4V;nv/soPwt{6Q#36c8P:r+8cpxhc1I+RW{RS437y2Al˹KFo@3{q|''A^8;{)3B<2޻KC5h&0M)Հ\bÁ;| <\|db) "<$\&|(*,.02<4\6|8:)<@8 6L%l$#"! ,Lln&] Hqhjlnpr~4GؙTW=fo9P1/򄠺瘞nA<AY/hؐ^=3/c@5Pp.T-6m麾R壳6 $}/]fp |00]nPu -# UOx pуXK4xj@1eVn4k߂8?mp 0UڪbW(Uo'%PUpYUg@XXM,P =бAg]S(WH/1IP?:|cIWZKM_76d_2~fl&O}ojt_c}5v~xz_v؆~m8|/oϡA_gUoOЪ?_ʏǿ{MAJmǿpB\:_Oƨڿ $XA .dC%:LE5nG{M$YI)UdK1eΤYM9]Vύ"u%ZQI.eӜɠ/(SlHB7 z {ln 0_1U68hsY /miEFqBo`|DN [^Jbf o AH F-Z=K?FA2FtK`ѢFF5y^l*$C ya#0șb`[$ =F Ĩ#$+J+x)g@awX0 CW@WdhGtX=%TM`ۄ6W$#Z+H:ڥȭJw,A,% P @ƫ%G q"HP Pnq Z@->JE@ڸCU F >s`%7LyTT&acEqqt_[-"@Ic_\S:;z. ;cX8 hml{=aL;8mպTC8a_s620&GZ_NVjCHE\D 萆K_#HwW!}K[iR6)DM}t\ޅz=̶7}3qoV`KIf?b$"6&|U 'ڛoXCEhSH]/7BT˼ n#jEȻ ?,(P#x/8?ۓ:+A1<<@0ICB,P=V! A3A$||506(L! ș ,?: Bh!$6$lCXBhB6`gIME:N+dx뱴97ÞÆ 6:]#M6^  yi{ '( Z6 p8ML.CA ( >^aLl0. {SFu<f0ix@,$=y_6[G N Ot P;JXC(G233#yF^Ehm$UT5gȈ Iȶ䰳x3h\FIL ? 9 AhI|I4G=8pLV(H0>x@m<;J`J53p~J쿉*K( \KuRb> Թӂ7TD(B8CS/dT IT=%TTдC Z=HPEMQuԉH&v=;: ?S!BCiE9STYQ VuW1Bzȁ|ASHy8&t Wp*,(#x`!g}֐VIɛaQ_DM 7,@PXX;jȜDPTY'y=MJ}7\@U NЄESmI`%TʇIozy#" yjY|ك# /@ !Fg)gh!Б:Ն8.*C$BH@}IiU&ҮiPܙ/hXȦӃyjA\HD=%ʵƿ&"Djht#.iiH$iH/$(j8bU~],ݘuѐkx`oP@qւa@3xWEύ`YEFVo:L*kzjP='t8!I#Ⱥ_߭߀ =CK1`>[S 3a9߽nSv4 a3ᬅ ;:b(@Г]ŕ a⃰03b% jEÃOe bv_ɶCIQ@ʃc4%'tx1F7.`ؼè 6 6B<'=nQBf`5AQ=:cȇDX^HM26 oH%(֚Hع9c:TN` g)ih:ucsMGXte+ HXSdw"iqh s8VXX[~ak a%ywfTihWC4QTH+`[&J0`%5_@XoxdxV(ajh[XiJiF|S%^NwnNj`Wih[HgQtxT(ӃqIXyt؅kTIe WQW8f~PBgHy.hNb{Hمׇt@[xŖ,iR4nxjTdAi~t(bxUAM0]ԖI4^dٓ]| jit(o1|fb_x貾%bP(dБgnq@Bz*,K;؄  =I<?!CPp ~BЃdPPHxEX?ȇShbo{侟T u?)q>/kogA3o6~i{~#˓HAȇ䏐X{{.مdW`A=aAI?R%GE)_h]2=&ȞXPj&J&tz~5h wGg== N!Æ%%2a(BaP %ug 5Ǜ?gz7$bo 76=7/v7TH_ƢV<$3ТG.m4ԪWNزgӮm6n{ Y7PVz$IJi!Ij- HYHkh IcP i 9nDAi'W [ٟ$ SC-ta MbcE2 :,]zI($3S ra"iI>XL#-&O]"]1`(1)sHbȋ I zBUB#FBd(ؓ\~4]"Y2Zӣgyr13W*LS;O`3(I7J>r5I#\]vJH*qMHȔqN1 zFVBA!\I`tڤ+3 @R_Q*/H-x?׼E!$Ilb4ё$ |4~C WC\FH"Uh?U˺z0g o|0 +Lk90Ĵv8x4ӊxc28tK?$a\3|Tc]O*h#=) f"1Қi G}';A?MxRQ"S%J$aAAl-BH\ ;J"FFHH"BQq0 j->!ְj tcwIbr|2` I# ub#+03NbH@vЇkc;GRvabcynb5KNBNt`c UBJ:a- KH,:b0m`4`N+F8A)B @]ӗd"4б$!8CD"s?Dz x.`dL8hP8Ry)RbG]Cha&EZ! j* #'rC!H. y!5ްw.?;~AL4pE< gD=:a|:kIš1lհ$x 51!-y(^t"_hBMC3FEm tMEvM0~+`:D#HTMH!OCP7I!L ThB^+((!H*!| xivd&!1FdVPNQq$!H2:X!ڠ kS%a61CbdJ+@Dw,bۉJ,ĹWֲ}D$D,Zt2k`ICtKrɐMLkKG$WDsJ4; ٷ,Z#8ˬ!. 3C"ӝP!E65a|.!{ 𾆤ɬ}'W vZc4m,@Y Qꐲ>RM3%D`5CD-H+A]9G(rDX+uyb^gGw@LHD_(L+Q7-,vXCkuI C֟yMit#]3L$4Av-3. Ͱu8khؤqc8[7g\&n6yHb{v˝k_s0FǹsgZ[ڣ7JZrZؽQg$q:ljR\и4LvK-S4Nun1=,1`!7&?90VZ,_(j0Qۣ"˃.9NtICu~(h/zj1 b2FТkط}F?zmNUv;~;g#?<3(|c3x<3s萏<6>ww?=S>XW/Ӿ;艸&}iъ?>3>/Sֿ>s>/G뢡Eү?PrS&q=O߾?ڞơA^nN V1h؃z\j09 n@h` "[V: Ɖmh f Nzi`m`h>!F!:!IaY ʆaRao aaiFJ !֡ᴡiH"`DBia !l0!h>"$F"#i @ "!-H 8iB遝&ABT آ$QiX"i (T1C'  )ű!*#~,&4j`$/`#b_6@@B@ 1#BvÂh#2Z)"@4 =B>)vcl|gcW\k@ 6$> 4l`jJ6@@L`@wԊ`A$R>% dinBiB@-&ٹ\A%O2l^&R2B`AYB]Z*\f@T P@'/$)RF @5Nqi,BbB \ dUvh%Hxd\ P$hB : @ @(hH @Bx"?h@t) @ )8?? hhE iR@B@H) i+^"E$F6D( `@t \6pi* @mh h(@&A&(i?\lP@0P'j:h Lji: (MЁp)=D@(+PgBAhC(@(t\5T ̀R%h(ch` c,bqcYRh:6"H@`-d<&@C p?8PC$XKDlhCiFD$`jіlܩU8Ҧ@v <0mB(Sz@j0"J$`hGýk|ƍL`͵:Pg$=@ܨ=btأ%?k@;CT@$kj&F 8jite1X:*&,:\@i@%2d1ւ@,B+*J ~Mb&ߎ6^YKHdfӤjCnaA&ShRIt i".nA88o<(n2(rmC6eFFd 塕^PZ5EꬵjyQ*k~#K4[h.IY$i O"Izc\+!a-w6fI  ZZVƅ/?}% E BGIц{NFh&HMFEAzDUg rZqHq/TbpaUMTp{<7$,p *DZE"%`?x"{|HNHgLBߴ? A$MhOވ:F I!8?Q:@!)pe X7CP{.D~>3 !B:[A' r 0a͘ſX/"PA3 'Xٹ"3DaB` 4DU qY ހB A`F"Q*" VH[ YJ%l$ 7B3hc2'> B7A?B GidI&N6 -S^g9q\lS:y-uj|;W'O{Ի>%O3(.ZKtT(SAhxE1э\#IQQ N O,,p %H ⇿hE0w1VCx-_ ;qbވE+hVm8x [ - ڣ~7~BkCjD]|2H24_ ?,:N.'- kDHE+&V!H=gڦb8!bcӁXeΞ6Dz㽹odlF##$$:Eb\-8B8q#Sj`4DDL=$SBt5DPi b}_YD+TS@ 2?lŎ0D,bp.!e,{0-w CoC| BNEI9'ц͢@\N@.,~4D;J3hb{jp@'t6a0CmCCw#DS#JԎ " pIGH -  Eg`f+G* V`<6-3.A` `8(rb48yf@p`dLQJh <"Ho#I9bDN! `< B~h4u" x&U:JtA9ɷͩ|Y<\I|K}\7]ЍC͕͑\ɥΧmƟ<9:,|; >} λ͗)⣞gJ hi"#M]!kCqCpb$; \f$rc^    |  | }Ǜ灀?ę ^ǝ>ӡ^?ߙr`ޕ׀a(raz | \ 1Q.hھu)„ɒ"L,bC'Np'ϞyD<2J$W| 3̙4kڼ3Ν<{ 4СD_-1b.hkD"TI R,6@Ed*ԟ ڽ/0y]^9``H%Z8KF?IȾ_:,$XF mq4Ċ$}^(ɛf-}Q7׍Kz1/zR{Ts 6dHo/f$_G"[u_4ۿ??r7O2$f 9r %%A/hW5mq5`Pr[L&B t4"$qU 4Ge tlG t5"@C]  0u H.Xk^hRƛm 0 sb2cZ,s\7ldQ2@J(!/h{  r"L2O.? 3`$$rCC K 8Ch# Ұ$Ϋ+˔0C9M GLRJߪ BBB"+"Z B>}׺.[DpG<9РD-MYhS,C]1{qɦzꪯ4 +xQc*+cݚ} 8:H3+4vi3 UՊ XBfx 0FB*G4J+]͆]zmGgl3^`Np0*!Ɖ)ei*DQJYp$TYTx!3` VA"5GF$ o =sE" P D`p =KJ?H" j gQ*p. ~pA @= ! D2v^ǿR@P3Lydяn<#Ql₝È%D%,)OTʤXA8) 30Y50[ `R1"3(#:p0<Ј,v *+}LwқKOկ<\[}d_]ˎRg_=tk2}{;=/|o+_C~7z+k~?Ћ~/Oԫ~o_~o~ /+ {FaE{E! ,    !!$ !$##%%%)('*+*,-.12/2224837669:7829>59B;;<>>B@@>?ADCCDEFIHGQJGJEIJHJGKKMNNQQNQNQRSSUXUXVVZYWWYWcWY\[[]^^b`^`^`_^abccdeeie$f*hgjhgph3fikiKjjlj-j,k2l+l'mmqpmom;m1m*m&nFn3n2poso:o8p5nqsqSq2q.rrtrKtZtEuXuDvvyuxuvxzzz|zazF|L}~~~~V~Z~UccŁW~k\\Hf{shюg[Ŝu֞cƦ٦|qxήƴഎﺐ껡¿›ĴŮƣˮ˯̼͞ѱѡԻ۶ݻ`@*\ȰÇ#JHŋ3jȱǏ CIɓ(S\) ;G9tGϟ@ JѣH*]ʴӧPJJիXjʵׯ`>=7V>h=۷pʝKݻx˷߿ LÈ+^̸ǐϛLy˘3k̹ϠCMӨS^ͺװc˞M۸s 2 Nȓ+_μmΣKNسkνËOӫ_Ͼ˟OϿ[h& 6F(Vhfv ($h(,t.(4c8㎚@yBiL6YNF)AIXfZvq df暪pƙri'tީT矀g36'ZբrWV:mޥᤍfjj~nP # q(dBhuA {SBiY-fO2@ôj`(˩jO&͢-f?^evC ȹ1ItKs;1$$ b,?p/#Z]țϹ\ *Ki&k4)_Z#ڢCη A3ךa[1'ճ@}ݶ P #UM3Z`6e i\~7O+Ӷ~[++\;}6GQ X6.i" e`0"pG k u)hIF ' lR9 L)5. G| ,$@@%X&HÅh"#BP)!pJmBp87$B$p^Αa* E&,BVy$KgeHY] tJ\`+8*F#  @ :41 HZ%,Uc4C4Ҟ  @ꪀ @(Ӎ $2cV\Zpo(-v\98RZ7u `*@[+)rv҈@ @3(@(u*^ bG)ږ6Za,0V̀@rؖVpC VaT q36Y4h)Dt@mcp[D[ARsu:̑ML@5)~kysݮ Y݊lmXW,T-LطvH4q[\- ' Yx,rXMsB@c p$#炗*[DpPNvl:! JɿE\2[lv]$gT6 N60 0Y /4]V5BubVڨ&jm 8Z+7V&.+5!ۖI98 욽㶙Melho_|40wssr 0\{G<{5^F|jp0W9P{p8XCFg p;*փ7fqVvTeKs0ܒuP YS/~'04C+EL pCbee8 cVx9J$Wc<(H.4phgKG]tc.1HP(#|.H~@ Uon=bo&ebqpyh :Ё b8ERhN- Nf_K4 3Qw0^S24 q23trtSjdRs:6}X (4p1&tBb\V2(\+vׂ &6|0mv,tC>KY17PE[u0v hZcuZb̸ڢM Dh148s)WcjE<i(4G20J<쵀C:B ^gb6/83!Zo0m S9\x"Op<$i_PVhBiP(S(Y]&C 00;f.hQ y3mdfZ6dF 4BLTDu7n P^Sx PEaqLb ڠ 9K1+P_ȕ,Z2 Ё(+581 BiS89%Z4 -NI ѹ s[-AZ0g: Cw+rT% DBX#wR8Tht+3T*0 Ň1wly .)WwQMhPK]Afw`)3|hM5R_0 w NUDԍJBvK'+BVr;:Tq 0 \vK%jՁh qY`K0 %W"78Q;@[ynĦTw/ ei, MReB1% USCgx.PxL SMUO ڒ 6Ep@+r#4GRF _Yl%YW,39k%_:PU,)'8 \;Lbp4VFs .,-d,0"TZ:|Q*)x# 'b4 I`( A 5|s +&+ i |e7;1 em@ J R`(/;.f `+/F`eKѶZ iV k[64;s; F0oV76V#6hP;+8iDqgxm#IÍA1,X>ȐW43/'8gA|˺Qo@@)|-'AP_ֈ֛)D4eD3 "Ij+@W)Ɣ\Qm <| |<$\&|i)*,.02<4\6|8:<>@B@;#ݷ HJC=PRЗ,EoG=Z\ MO5 _ Y Slryq@$ \ մg3CndXj^֌ ׬x Kפ Pڰ3harhH mA7jجQxqLpppQ/ : 0hhpPKrA7lݮ !wd\7qڐP+upJ}RiV 4 La){ 9`ԭmC\pqs_ p/vw@L eD 53+ 9Z pU0+ {6V /@ 0Sb`w`L"N^~&NM>xNzYQdEJ@NmhA]2n|1T.T z-N_(1d 't`0pTW^e.gN3F Nd!AtMh^Fd-p iF CI)tY誒^n>na4U瞝A8C3N.53T37n1Q 7  }1>0]gp }0ƽnepY$X `=0%lS^G00Q(9 Z~@Ln $#\lEGF. /)$^_vR^c R3X^]p+U]gVYPYʽBN^&[ =g{t9rpC^qd_xQ;an`/bM_Lxz/b],so,~&ϗQ?!yo_C/nANan?!jOҿ_=[}ȿR\$XA .dC%NDxݯ{5nG!3^WI)UdK1eΤYM9uOA%ZQ3%C'S%KZUYnWaneُSǮe[qΥ[fYyѪ_&\x'^5cȑ%ObiVgСEۼٴFƣUfkON mܹu.){6ڼ'^x]߿?s}&WtٵooNŏ'_޳QÛg{/ }&q' V$ؒI< *DL|I%Y L*$H^7k0l|&I n1N` N=p `6 G֊j|@(1sv+&K/8OkCI!TKF $qT!hZ+j8ʁ $Ph ~Z|b5A+!9$1(؅L=*"pA,u f\bUPmkrI K J!aӆܞD*i@4|Oj(gQ$]s| Zwe£dU]&ިIwZ/J cs6z@sʢFEQ:}CPޘ&i`BH|0JΩ`k j'p_"hp_D o5{S2,|e 9#IgO!Y9V 0,Zc5Y^as @׺50-X[9uz4-:ˆ@l$ æv]R0$6  kmt)=@m<[~v t{VNUmP@5p`fs{*-I; @8 hnx)pD5_4ȝlڏSjE}@6y̨ 6bC,i\r > CvL\󜓠%Ѐ pqI !p2Jn=B@nj-ubຮ{K&C(.0 ZBnl$$y^C|WݜWi&*8^h2TF vUz|G{X-pf'_BWoM\d&pU z ]pqM DX!@[Scz־n",I?pP1X; ?| kޣB8` |̂C8 j`?@P9 A%4̋k3 s/tH,#q$’"4[B8&D' 7P=7#r_7 XA _cRbɁQL8H:Ka ZDS fT8 Bb1P ȁ ?;#Fy L4 M H ?z7al mІC"@ )3 |ȰGz{L_D;M]7r LHș3H C >fCɕl-[$r D49hдVIHA\<,JLTIK p4LALLLdLJ\ MӔM*lͼLM\9ל ;M5M`M,NM\TNNtNs"*NL묑NE:,OO4Otί\O$ON4IOcP4-$]=PKPż y1 P P P PPP QQ-Q=QMQ]QmQ}QQQșdP  pД!N!MRTR' &U'O@R*RҽR-RP#RN0-SR4S5u 45}#ӟ$S8Sb6R;ӛhS@ ?@-ԪT 5TE- DmE}ThT)TJ<3=ETOL@#%UTEK%A#T}k[U'lUQU[2YCZ[ՓN G_UO`=՛pʞșl|c-du՚!8yZurKwOvQB@rYy+vI\aRhםW^r5/tx:)$pIA8iȂ@wBh2 XMI]M_Ȝ͡| PȂ ֹ$7qZQi(ёuʙjVNFS"mJp eJ)& PBկ͛#!{ r|PCTMK oXWH鹅IbLSv֓N gB ip;eˋMYXs`ÉHh(eIf: iq٠s@[ܖ>hd6nTdB֔d8b(a(qtЄC؅kn9i_Pم.]FbZDw0kf(k)?bpqH/+Vt(]0i/g[Mg=?iJ=0IȃĜB8I@  U8(=HA8`FȃqEp<)MFMC_rEr8?PS՚V6 #E8r=Eh:W.dMpσZ)8P`N:t. Iȡ:xM؃Rk*NpudHB@S>JwEi CBWB0PEM8h&Bp=$k`sF؃dsJH|@:/8PM)y1au&ڼDRƙqE=pzgJB@S/ Eg0EXĔ=H_؃TɃ {ЄJS6,w(B)iٞ~a`ק:@kqM|p{g'#7| XPMGMkx똉?T?ȇSbf՟T( *脼d=yx-49Ĉ#B"GF(rH SH(_Bs֞sv WGrBDG?i{mP1-O1G[?I(_!ZQGMF(uޞXAW~џ<" NZ?23Px\=ɢ+ZRB!jۃߡQyHhyNAn,Z|fFXڷs;Ǔ/={׳o=5ХC'MRi^!1R$ -AA$N!`I$(H>OL"a"E(?dK 'LO=g#3 %L\ED%e%(HHÌnI28.L*"&CHV82"ĶSP0I׍8HLrHM"$E2DYJRs6$8%M1D!#iL)R$ IOCV PEB BtM!{OCHH!Hab)9{\CVKTk{S JL(_ j$D4J$Vn3XJ/Y-"GzP%h$(jyT3SL!-,[DW"b}?"8;A4r<35|yͷ3=WL+ņ=TvH'xc-{KPeJS_8Ӆ͈cbkD0y&N*n$SeKḤ+%#X/yszRtr,N;v\$.ƺw(ޜ05uM'+YO<}%hBN+"vK50Gɶ(gRUM2y87W^ Bq)yJ%{*"/&J{#\@(0`sN1UIF>E{ H!"D D" E08DŽ"v D(6!w/[DM9i{}-y[ß \чIws=iE#w?U#+κ˸mhޱ ؛>>wvp{'7c^|Vns7Gn[LH[F2Cexy._X;wwƛ;ώ18Nhj1 8N:͊\,LjXxe#ã0$Ӯ@ЉVGI6FuHR#Q]9kGqwТNm2FAS;w7/ _|OsFY_؟V?/ӿ??  &. q-N V^ f4yꝟ|w8 ~BA Ƈn} ` w܃ xx`ݠ5w!FN!::d!(1{v\a!j"aqx!Ё{avaa}εaa8w!."#6)bb b` !j$:'~"($R1B@dC@*)V%^b !bwtb(.(Jw @L "0!b>]>Ђ4.z/xn@D5`FԞ±B 0Xn=X@PhQ'h&D: kiyJB]\$BB@-Tip@ ( Bv kqK܃<$?0D@eNo|1/@Zr0ϞC.VB 0,u#L0kQXRL H=$NȅT ̜ϾJ .*q5Jqk$K1#N C@ Ot'@ Po)TO骐Dz,jǓ6&NX5:@ۂ3jC xtb e2) 8>0憀7,@'O6p DĴ^4x(ns-$$T hp=#E9lBl+@0 P jzfN+q%fA4ݭ8-Ѐ4C̶vO9 fGHaEjy@-ǮJC\$0C  Avvw GQwxHare5Rca{[$KRZ2Fz+vd/$@\)dod2+k(, @$VMr0vho_u q&40 ; FS}U _+Uq7͐j2y$N>/2&W0z[K}Q _ø*7h0 <} {xh@twDT>%*& u!铺'CQK>{C=L${= 4x!d6ta+)VxcF9vdH#I4yeJ+YtR"{B8ds޼iiRK6ujTSjD%%sQL=T4ݴ JC=TԱ:UXeEV1u\uݵZ[ŕ`WR}Hif}hjlݖnpr=t]vݥb7=vzUU^I齗~-7}>T^8̓L%a !㌕4Q7K}UE.bxU<&e<du@zU:A7ę褕肀(楥Q򽜩ޚk[첟F5B2U԰[op[_Ñfr@-_3lE_Ch{| -r(m4FqwPa0$!,HH$m\ؽ֬CʁQaSPF&A!ZI&GP~F6Q~)iu裟;BpATd *}POH1dAY qA p!5Q!B AGB!Lbpp&o4h$\X?h(rYwX3qm bC@T!xracsD\Ehc`)`@F3KhHBp\PdB%B18Kd(\`HD2JL#FMbT f&ݽh4H1L*:A!jB H2ui/~ )]{ )N13K"AE桍0!ȉ|ӝ<9%P o:BuE91r#ZPM(0ƍ~Q]$Kx[A/ RD6ڷ A7>12?9 #ĂHKfD(8="`;)=t$B4 Sx~pX+CA#M*VshE1HW!ъX -XՆ3ъW<E+BТ=Zyc'?Xq00:L$ # <~qC ajrQbr(V68B{OKc+ q0CŐyVH6b{ ,!vA=hb{m%1_H>7!S(DqBp!F8D! q $` DBl9BQID87 jAfH(cmh؃DIHŐC8hM!!BH8#A؄&ܚ:׾4skAAB=akW1 IC f"n! 8 SDvqՆQ-"ʿd=xpx8fCtԨqɺjڞ%F+v5qՇ_AME!P;< ES=s!!͐/}NڤzzH,$F~-(BP#U|p5C`Exq$=&QUy(6Cib+~paD+QV@!"?(DDE0Bu.F!g{HqqvxC!|⎣NEӑp1c$qmA%,#Bqoׯ8xQxW_]a$cEB tY>ECpNߖЌD;S7-1  #~:nw\]?7q} oxXǯAvEê'5%߇xT{F嚌8w)஍s\#Nab Z"Lm!Bba~!a |*aB !  a^aRaΔBᛤAu$l ~+P$@D GOg/h cx(`!VLbא6!@a"D 6ތ= lTy$ahG A *=AN<&AL)5Ƙڌȇ_ v5-F-)6PI@H B bk"K"$/#q!6!" " Y((O*LVblB$;Rf*DF8ZR%f&]``x(S#(If(')))jv)g*C*r>| =7,R,ǒ,,-R-ג-R-#2*¬.pGAR)F/0/+B.f11b0)021,s"$2/%,o(3?)48s<4O)DI3zL5_%TsrXV&d6s#p #n)t#x6%C~7;B (8nvr@:s29[e9;8-xF &! `k='a G 8TTAs`@ T@;%9;9;)b( 4.@,*5Z4.H  H \^@@@ej@``2T/t#t"!r!P@I !J0T GjVG{t#z0+` "r`NGH` u "Jih+aLJ ̴VBA3$);  @ 8 (jb48~hhE r@daQJj@"3o*(T/AS Ab`~T4z` `}rՠ:Jy$uH)t+`SKS#T(@@N`Zn4`: ѫ\ 6u#uST#""tj( @ @ȇ.\ X4(a־VR riV0Vl֥pc5&/Ui6"&5XHSjAiEg1Bb6aO"lsUli06j*3Vi6nrn6ln0Rou&oR;+Rqqqr#Wr'rp52WsS"s7saHE*?s;tOWB7`Fut[v-ucv7pvsw6oW$u7wgwcxuxOMx4yYwyyWxU=v,Jz?7y7{77zyw(|ݶy)(W}7}~2~w}w}~TwW ؀X؁#X'+؂/38!y(CXGK؄OSXW[cXgk؆osXw{؇X؈X؉&m%l̊X؋Xǘ،Xט؍X瘎؎8szYvِPAّ#Y'+ْ/3Y7;ٓ?CYGKٔOSgyו_cYgkٖosn[Y{ٗY٘eٙvYٚYY5YǙ˙ٜYיٝY癞ٞYٟZ ڠZڡ#Z'+ڢey/Z7;ڣ?CZG(×7]W[Q]]ڦoqY}MiC~ZڨirIZ97Z.q"z9SFZZ#kO皮뚯; {c!ʁ۱#+۲/;$05;~G9S[W[[{@P` s{ v{۷o;[{ ހ䡴۹ =9(\(}~ޠ `[`۽{[ǻ Af\Y{^Bt{!@ #\'+/-|  zKďv@f| b! ` ƙsqo}o\ȇ|iƗƏoـDakį˿"'S ^dYAAZa~ax,b4吇㘱&vq'aZah%RCW'&!&aINa!N}yZ4!!9BB޴4D9h… .y&[~*ɵm\ I RHD iԑtI& 4r'ɓw޼yA=4ѡJ:} 5ԩTZ5֭\z 6رN?n BE 9"V. g )AbDThk3f O{k+[| AU00Ċ-%$p\rU0Z 68 MbE j1;|OH4p׏_. JQz̭."uaNHa~(.?E(蜳 ]RC G B/9Hp c{yVd=GZ -b ?@CHC d8•Y?[v 0B| @pd& 8EtFU7PAٴB=7<?bH--u {E)3)_M߀=Ԃbza kJPCFE(u0 ry<9pZઈ#@P65dQvsGFB ,BQB90@Y]A&k!B+&ح"f\@uA< ?ӏ9ߥL7˄MZX>(K0 `j\k:s>??). +K g)ЂZiXC8!64{%$[v$%r+0 :M HPR• / FB"F\ ]mYgv Dh6pG<aq?O9ФD-Zl-hΌ*d tO|ƣ- _TS6Q/rN"Y"B=lƌA^Ke0Cܖb݃epB2kB%@-9(Wt!}ܞ0lN!!z׼ ` {.{0#Kq WJ[ilk{ܶ6 jkt{X x{|{Fܚs`#/+| ox4mX/մE8Dݡ|#OP|,o_o~! Ց˃ Ώ˚U4!QSK}T unL;P׿,b/>u}lo;}S;[z~/|n+~B<ȇ񒯼/c~󜷼;/Nӫ~hO=_{>}go~ /+oKԯk/ϏY-kN-J ! ,    !!!#$ ##$%%)('*++,-.12/2224837669:7839>;;<>>A@@>>ADCCEFFIJGJEIJFIGKKMNNQQNQNQRSSUXUXVVYYWWVY[[[]^^a`^`^`_^abccdefif+f*hgjgIi3jjkj4pknk9k-l'l*l'mmqm5m1m*n@خ9dd%̚AfX ĮEΖq Gc\o</| yl8*em~M^7$=|փ.?* +\bHZ_3Xq7[*@V@"Ƣ V0:(7Z2#FL bc`A <@f,v5n X| U1 l p,Xd h: "ZĀų-bv tڒg pa*g* bt2Box:]pj*@.CA.@@TAA3Ʋ Hl=xC(@pՋu Z @  n# vƁ;=@, 6 [jx$0@$dXs?00(@\#-y-t4 /ڔgTc, 8""+Fw(hn0 j({qX?jh[W](|;AuĀg,+9߱l\Jk#&YR @䡭[AF`1^\lAdlbS? ePE@RpsԠ@mr=T N8OP 쎅 <\nuV?Wc+ƴaUuڈ`M3Xy,ڠ& Jr&5 _;ӟd<`\ HdȺ$1@,pjD';X]IsAc,}u "ekcj ̂^\+40VDނ볼wlS ]Mc7ب+A:X܂nu7( lm^Nln B~ po2ej9tw@q#w5QX{̾Ptg Wx6TrhN|6F7f1kZDnzygu `<.貆Zr6v؊ב $ "ha>[9/ O&WðAԱm%cfM;-మ O/hIPh+Ke(#^x}cv[=3n(xSb%+s/D]c~6.BA=$x';s.A4/VGDy)y1]7;m5hG2pwQf/)rq`tp\eXNGP5IӄBe @ `JP. 6_dQ'H;^1 lՖ7CP ~Ee`i]"hH\9B\6 0 7 5Pt zqEʰzVnPhIiv^m E]+9kIi}Y $d[6z;CTuMu8{pZ*|kĽgFlK3{[cQv.8g(;AK@91F}Hx1QJPFR}X"MaZ`b}hLm(prlmf=xzu]w׀؂}M=؈؊=lA2a Tؚ$}ל106pHO|K= lys2r0pl}۸-Ѝ=*n-t CN t6cZ0># c}؍ϻM<}v`L[@< jc cN$d!ٝ-=-kV>E ?pѴIMd!UpCpGL6[ ~p6@=$^-tC_lb 2&rN7$Dc%^F')p#0V*pPR36)}bڨI2 U`@zOGrIK2Oޗ;Hkf^7]IdoS6zc3>\qm1MpP[+gw.\`n拞f^WǗ>.Ԟ-oMjpawg̝(X8.UpCe~Z^}mo:PwC\Ӕv7f6ecCgH6yE^. ;ʐ1 th3]d {3Yhu o'@)ural;#\<"^Nͥ}C5uYW @"`y`pU:uVpXgH0T \`ho Ep g_еbSwiri?ۄoCmLW sroΊ/aۨޱ_;oD?/şBֿ̯o߿F?_|o/#XAC%NXE5nG!E$YI)UdK)[M6洩aLA%ZQI.et̚(D%WD' eDYR-ԳR$q A0aV Z;IDRZDTDjȈa׆z%{0Qf^N=xaE@:wL~R `lhD ɑbAvhl~ןq_[K EpHXaVpuXgHdRU%نt\*Hfz!jBɔhԍ X` `0du'FUÄ-TGџ47P`zҾB܆:ƅ@A?ܟR@Pzz~Yi{/2hB7"A{X@xenwu zn([ GJX㡽ݠr\X=h'J`XC:/:X`;9+^`0p[ xG ڠF ~O2BTfE]liCXN`zc j e.(D\P O}#0OS1 4T$V LtrClPJa$BD`ECX`c=2D(p;Pp L"ꈢǻ!~ RD= <`l8!Ը(Z\& 􀅌|ִ.>V9>73CЁ R7yb4+'1:҈T67)XG_&r̃8R"beN\f!i)f0)\ z!ˬ# .(Д1P! p/^a "jAbtR R ^`CC.'(Sjz[LTJ.TV"A1DڸG z0 e`P+8c+S41!H7W(C炾mLg A#"(7a$_Wb< l ea'§9? m@# j960PD@V^8yk_JD!'T9c^5m189jCA7.zQˇ0J2i߃-~5\?UDM 5\lMER9f3v\XzC+lMRm3d=x]Pd@ =sy,cvt-}H'їtYHӣ&yzmԫf5Nj&Zֳf jZZ@^D][peHV QaG;˯#@ @m@b&cG v xH}Q;#YnyC x[ַz@%䇯|fE^;; % t> pU ж ?t򳒏(y?kS0Pii(* @$ʉ lHh[@c :x>#kDц $,#+7 dAl@A0,{[0;mc9*P&?!+lpB.lͻ0DA58>9El p8 2Ch?$g=BL0979k HL@D8q;Ee؟C;U`EEY oĄ8P7 AcQP p>ɳF lTt<v 0?F-;3 zp{h'i/{|25+H\jPIt鶂3B+I$-msÇ({EI1VYF|r7¥JiJDHxE@PHyKFLKʯɑ;6gTK9@AB5T?BM5=TGTTIYiTKRJTOL%MOT(-M=UTTU-5D]եlUhG1uDY=MZy<[^_ň8)aiȖmA-iX8y,6gݲ29_KN&QWX~i[p[?IJqVx.8RS@TzTeNPRehT@ipkpC.(HqKKYWj(frHH|] aj@:CJpp[@`rpRmpt hږ[hipRgAY am@TIep__l6mh_P3e!^2lqWYlVYԞkQu8cjq[2lzil|V G~}ևI]ևu8fqvc{_ ~9?cPrPOyh&kV PalgK@ՠɃI<ˡFo)r% 77OICcpQ_`D8 C)g.QArd O;i=`9ehq@c#yWS)䡍2S*g;b`B`RP(A"HL6˨QWRBb^Hid,>&Ċsj-׈;$$9'D^ YK1QC"`KLYm/ Yj|0¯/NЪ6S ҉:_3S}QTϐ S\8u ?du%A$+ޟS! ]H)ɽCS8LIH4r`t24ǜt'eB'oـz5 5,wF}]C4SP6d&bfwy#FT *jI?SQV Ǭ;tJ-]+FR/6bHD 96jiJb週N ?u -J#JBCט .VՈOD DŊ=]- r-YDK8% .|! VѰYiDwb)ʘC1 }ѤR;R,9L*]XP{$u-wX'QiEJNq5耐BorˌG~HHD7RɟT )yQS 0|"Cs8R,@la[hR5Hr@㎉0D{4$"ЀS3F>KH 0X,H0 z* X51 X K g= :ȈxH+HD&C0?iWb'1ڠ=‰ F *׹u6k qX"`_́y8DLAԭ(&p\q@(F2a"`.D4`c/Ӿ=s=/?>3>}ֿ̢>s=:Ucz?>MIhz$=X껾zx3u?`_gA\h^Fy^ fU-K\vj iಅ`! *\ r  `   nZ_>!Fa:*LRQ`XahP؀ PC؀h`$ukf!!" F" | izma\,Ԡ Q hgP] a &AA`C  " b bh"i@(Iu Ȁ"%6%nj(&5iPLv$@Թ/ Jh+xb [Rآ=ՃcA9@!zF"@5A 9z[2ڠ.#ν EV\i@$6$9&&6 @Bh@`$GBGҝ`vT=i O=?2d@r5@ D" F#?%Bj4cf 2PA+5`Nx,3lG?,l QPˬC%3@t5RCYJ0F"H4F@"PC!͂V&%M`FL $,߉%/2?|@f/h%I"`KfG:b e @)MA=V(ÂJCdfmHBDXY)P\eP\ P@'/d-v Ā %+h$Tf@ c $CFgL%UZeH2$@ج=PD[Ph|lȀH@ @ D@#@$I@IP@ ?P8)xD@+BIRD,$* `` \64 @h h@(&@@ @&@&\jP@D]0P#N:h j&B)R( P^~?${D$6$p@4,@~R@ kb")hhP |#>6h`(DjxdcB$_4 eB0 |SC0^@I`$ (;^}jDnr6XCh[$@!Qj$=FD#N @k'?Fփ2/lfr=i$Jj)RF|@jhÉH\Clf=P1Rhc%h?d@;aTM&kb"e u kfDb a2rRढ&$:\@i1B%ظ@: `1`l>%B$+pjI@{*IRAڂ&[JH (&ʠj?^"f@f2i)ؼFH bBS(xq-Cl6/^:0 $3P$@ pizb/+m(li$o?\ nRA\`^"鞯)$_+*Ch?4T$5ʯ0bA(j P@oR 42) Mh$$ 偱dHz2M&UAP@/Fi&*mC`=X@PP'h6  $0$pBOڀK$B@-x p@A Bn뼁2.܃L?AAB| $KJA\&:D/K=jHDhl kB8 q"CRe66Crݎ@J.NydA@{CȈJF CFADF39-5@{nC%g$/EIo^ *S~v$~dNNIB̊O3sF0OST8,`4<0[$=0##!Aw zFC[@6 g@TbF uOЬ)W)#6؀˲9[,4N*qqC-+\*t_7$hD"GB*@-rBp,+$@}&g/W1_ &D@P6$P1iCjF(@? @%BR&@-{5@NfAqV1upfH[md?H@3@PXA?!H8-h1/5 LBD#\F6qz$jU c$@x|1X@[(@S@yغ0-T0 $@BB )E|@P@̢B@(p*$@݆'|@-h ft $I@YCdr̂Pk=@|œڢ&_g4DMo/Pw[ f@ 3cCЎ(.(@렂'8Ol&ĢfvjAk膟C^&Y5i6}oF{f$EY~)Of %jF $33$ #LW3Ôc΂p; >iH&R=' h`Bأ h!blg!o^Ճ>L@!>a<='/ihC%&hT_CȻS>3| Midv? W"7'_} +#DN?kT??[\;$UU?F㿠6n> waB 6,"B FxcF9vdH#I4yeJ+YݳygN;y7Iez5^9) UTSVzkV[vlXcɖ5{mZkٶun\6qo^{K(ѥ{&%lKŋ7vrdɓ)W|sÛÉ36}ujիYvvϠ7&L:vnݻyxpԳi=p˙7wztċ/=4t۹wOlEmlFk C{$G"\&AHt* (137҆FyH%J-L5ݔN=PERM=TU]V]}X-I#\uݵC `[7d]6K[PQfVY_DlZ;p݌Vt\uxŲyWz{;t=;.%<m>m[&I޵nCz#X!!6DꁊYXbP҆<ɆDZHf{JiEdfFFtLBEDy]EqXaAP-Pz`!QPlί=\>` *P VPHD a Pvrձ '? Ή~ z H u`Sl<sA¹R/ӔAX|d >0&,pAN.!.g=KE}S"ш  44 u `*k!\T17p@A0EC. 'B=R B~F|1!`Ab "mDtA>2bQSH HvzhÁ[M̓H D6YJSnܗ2%Ns+mdC9 8oH픧ɵe̪aSr.!JFdX?)Ä"bD!^FIrFdoyȥtbp{(< "\H.j}$˜EP:Byȩs~C/[i@27 5s>hJEVB`0wV4!ڈ+Z_Yc;Vl%;n h#8*.zVv,j96v{XY;~ѽ_b/jW_Ec(pEYQ?qUhC** TĂ9cȲ&LіHh"Bc#pl.<4ּ/A4BhD(Լ `yP],ސK! w"H(zBBi h 84{ ࠎO8opxCg{cX'D0o->bbXOAF* ~%V8t07@x?BF9-̒#]-P4ڸ3ХY~-<~p/7g䡄A=0C4Q TAxKz5QՄBi ]D 8;Ŋu!5 }kAb@$!!Hx0($YL^ H4B†ީ4q e=Č}@2G 4wNtJh  D,h$R#N!ui¾?a!Nʁ +fvcA~Bˁ?z9AB Ҟʨ:!2ЫSG6rj#෢ AP+?8Nb!ǝcJ^5^' 8hC#-fkb`!Aj>!m6)!!DHPx+ȡIv-4$$0,!&Bͽ" K>Д 0RLva\ΆKj  ̨Cl,q:Hr'F@vm̽A .AV>AϦ. _fN !AP&dg! P 0"a 0bm !0aQbiR"."<{H!X̫e Ba:q%r _!!!'rI"e(#"i&!3#j:#K@6h@%[%_&cR&g&k&o's&#Pr$C$28<'()Q#r)7r#(++2$I),w+3B+A,˒-Oc-/"-?-ے.-c.K$,Mi,/2$#.0c0%#1 (#S!"?1 (2pl4C@#(S6F jg.=k >uZK['1-J sjuA_12`g6jT#tb7V.eAcG#*vVJdIVe3d?V[WvZ[M06FegcEJ6gVvgCghivhR.h'6i/#B'jkVkkk6+x#iv1l6l,WHRm"nV$n'Zonp-opO3jp2[Vqvpp#WrV`rqr7sUvs;q/@wr\@NFt-teWuO`teWJ$Ӧ(!SwA{ xx")x7)WyyyzWzzz{W{{{zA`J&}W}ח}}~W~~w}=WX ؀X؁#X'+؂+زlw0+~?CXGOSIxU؅O[]8k؆osXw{؇X؈X8fj؊0X8XXǘ،Xט؍X瘎؎X؏Xp ِYّ#+ْ/3Y7;9b<CYGKٔO9'W[ٕ_cْUYkٖosYw{ٗY٘YٙYٚYٛYǙٜיٝ+yuߙٞy9E2ٟxqB ڠZA#z"*ڢ/#2-z;1JjElOSZZj$ڥ_5njns{ڧZtZoڨڦZuK&ZګXYzڭڭuhz Ѐ[ ۰۰ !syz0nlvrbpC[GK۴OS;x!A#kW'(JH@۸[@ bmq[bz qa ` [;@{[[ỽ뛾۾{{ d[&=;obۿ[ܾ{?/ ; f[}Bzeۼuwǁ<3|ܾG|P$_ݣsbs1<3| `C|̕\\}bK|Dޜ=\u3rӿˇ`  eՇ9 .f-8#,3  @ ˝;Зp ]S_]}'puw±Phc|j}VI#קӭ5 }aԀ@ | $A=<ɿ]я7R\@ n@A!{!Asя"7b G HTC"v+2}‡{  |! @  xy|`V\= Wޖy|a0B AnbA)lNsAae\% UXKa0Q&Vo*!q!0!Jxu {<^1 ؁v Ԡa,@DA D!D!DQ|pz"0؝R&a\P`szF@PV" ;0… á+Z. R BcB"EJhH *pO(FH4 lq #f]|z^uƋgm̐#C $XBY-_?~ղkt7 ;~4ͳ<~ lWCx:D5rz;{ :ѤK>:լ[~ ;BXWaPn Q_=fͅ hꊬ&pz#B>1KoyQmpoH=PS #C T& LA%U ]V5Xeq`3"5?d19C"XX_9dY&A%dN> eRNIeV&D 郥6 4TJ=6`D !ܰ10u'фe /Ed&~@?:.PLT ٠ )Gh"T݃V\Aa_ /<|<|9\TZ1E# @X=d"^uf枋nn ,ZEB 10$#O=TP=2C`C 760@ͫM *급BQB6pØ $$2#mJ*UZ BKz!Vn-[庫&vO? ;scBo'* =hL{BԧiqEL dpL3+Gˀ-y" Eѣ^N UIuex(;UX2iU5?̰ehתvmwS=ߏ;`8m2rȀ51LGD o=@"$B`XGtX cX4#Cu9{1G.$:Vu1Ar\a'6 R? (`' @ Sy<- ӈЀ~O E? _X\0Ư =HF-gmODWlƿZGy! ,    !!!#$ ##$%%)('*+*,-.12/2224837669:7839>;;<>>A?ACCCEEFIHGQJGJFIJHJGKKMNNQQNQNPRSSTXUXVVZYWWYWcVY\[[]^^b`^`^`__acccdeeif+f*hgjhgpgIfiki2i3jjlk-l;l'l*mmqpmom4m2m*m%n3n1poto8pRp5p1nqsqUqEq=q>rrtrKu]vvyvZvDuxuwy{z_zSz{|{C}~}\}K~~~^~W~VdddҀKj\Gdzqk[ɐdyǝteaأȦtqЭ~ƴߴ𻓻ྪĴĘŬƦ˻ˮˮ͟ѰѝԹ۽ܵݻ\С*\ȰÇ#JHŋ3jȱǏ CIɓ(SЀqbK'sr8sɳϟ@ JѣH*]ʴӧPJJիXjUiyK֟hϖ]˶۷pʝKݻx˷߿ LÈ+^0ݓ|˘3g̹ȚCOLͥIFj̭?ʵ;Ɲ޾gѽWn|r͋'>]znՅGמ%Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤjhꫧ*묋J뭸ikk[XefVBm13č6eOLʯ# qÍ(HBpAܻ+C@BlW,^2r0+N  1!7? /KL1,,{P Ϭ%RB@ @ͧ0UKJS:! 8!K&3-wc@p/#3֘]je_@x6|[9|oǽܠ{Lbvc6?OF,CcNq˦.m:YJƶ~0Y$[dC5ÛOq,ed)=.˳8l {C<^3Ȩs>& "A @8vZ7ⰂpY(X'0\!u: Nhs8p"pff2 :z>TB"(!(8" 7a `{PıH#18/cWؠ?:xe!?pa 6 = &0JW ĺԡ0"@A 1u  b 7,   Oa"8AXVv1 {.u遰!pX.vG,e cAF,y@N K[.iWyW 53ac&Z tX02.9 %@^D@P5`aqBpD3!4xH}c\:l@O]@c${!ܹK}@ j   @~i. `_W c fPU#o8!!=`cQGv6 ġ @պx>-qB agcc`85G 0[bZ@W~ʎN+vاafЫ\QWO@{XB5R}P>i@  p &@YV00p(-N[dE<%xe.<JoTcq)?Z|>w]0AazD4$GKG~}d.ƴmwyC2 BQh2)cW@te{{ e-FivGtTrATmv&3q(;^878.lSG'7x\0fxl Gu(wӂRwkuh;0zd@@\&W0fc2v0q p|(0J[l@;U{96o$dT p\ 3A{9]jhħKQzlY~ewR :T/ `Z/CPSh5" XX+P0EV|wRP@ ڧO 7Hq.qJCk ѥZp\uWZ[/3H@XE/R';^m:[1 a_FƂK屲c +@[]/Y }- -# J:f= +R} 8CV € 7Ҡ Pj b[;p`L.d/{S2ai 0cbL۵> [%Eo97sxc43wٓ;3/; >%^胺kŋ=sW.C<[Sڃ!!ɴ+u9&aX.yzZ,!۾\3AV ;,bZI k䅽$5Tu݋ r?t6)j!,"x"VxX$!<-3"հ_%r \k;0 ":>@Bm<и hi5 > 705H20 VaypO@lN!v֪@\Tf{]D6b>whmo>qP -QZ+g5-F|a~6d. Qr1n!jayg}Ss~^H3edNe7ąM}ph59fWcD:o{1Q3:, 5]fp |3gDE\@nʮv$ R~/h33M+) \}`e;dO^1 z:o,Bn yaU0p[``;/z،f@!p6;?Kw kR+Ȼp Y:doQҀ< S_=_ nm?r?Ӡo??t=_?σǟG?!տ~1“/O?չ_r/_>bo$XP:d-dC%NXE5nG!E$YI)Ud%{Y&MznDOA%ZQI.e*4̝QJgSYnWaf|ZٝWǮe[q]BU_&\aĉ/fcȑ%O\e̙5ogЉ[`tUfkر%4];-2ٹum7qɕ/gU8q7^u>>|vŏ'ϖ{˯gїV}˟~p@TpAJA +— P 1CCH oDS mPEc=[ sqGj^qH"ڀG#tIՐ4MӘJ,JҨJ-sL˨$sM6L4$R̦(g<tPKԔ(ab8a!iRk"da&QuԆ E QH+TQAɕPYL(d8IǡwVTb5,TkR4"a( B8QU:YURED7ïA][NY(aYG:6PGB\u8 fKF{sYdp9䐆)߄g\BDw{DOaBjUG{fX<֬dog #Sudh!8yl"+B0c! VP0lbXi+"NYh NMSBV!NLob90a(9 N!zԾ`BZ!Oi+Ng>7d>CIEfzxzy"T(pz =ZPpg9 aG|W a8f_[O0e{Za!no߾NP n`"Bq mCg 8+_#8qocG0<+lP'4PtyC󦢓 I"hSd"|փ GPj!BK,~{ȐubH1XWh%T@MpR[b^o"P 0' Fz!#Npw` !Ԋ+ E@@O(P"m "#FzYD@Q l6eC G (!1*W1} F&5BQk<D  0c* Y B T J+ /)'j3S,TKa)s8 :vK(;٥Uj9f) ,T QG ACfsH v` GmpOaCjV*!CBH&+E㠔TB+ oXH%MG,$Xs "{)T6TRT"\H5NFNx`=7 Y X*HC:P@W]!8A ֐Y("=T dCTB@,.p1 Qe`U,# D]omJp[*DP^,Dsz(aX%=}UM{FZ S1b9nĮQF ]a[K(j A]9o0paaeUɪÏM^4FiY; ക-TW otzYTu`f)i=p/'Cet y5QǛ1җYoZrd<#0PNs.Esh#瀲C7(W=%H{GlYM}FKBu]}PFүuֻT/Zþ='b'[1SR/[Nmp25J6M3w@=lsG Cܝ?@8{' <@*^(VxOp08~H]h 90w7x*\Jf}#r! 2mÞBN],:Yideaĥ & @uB:%WDg4ͺ7c{?4$vD8/ 0=EN# =(C.nç-z;%fA M{[3$Ģz3_>`ﻸB6 ""LB=aMJYa@>;P=Iﱸ7d@Z &@ |`?֋C:+8=8ԘJ3@X8Qj@ : K  A&d 6:[? #[E (BZ+(Q"-(! # &Cx41Ì;v :0BS+P%|@!67Å1CLlDxCT@D`I$gILDA:8/[+JNAPE9z+PFd d=Eud`|68@:džH8 BxbPP  p>Ȁ[G̍vT-c@Hljc_D3)C=|H,+L`/SB-@mA-BUTG FG8ITJHLTTL4%9%USMB UU.}UUUY5UZUOUP;Ջ`ˑD`Ma=r=h.[YefRUjȖmYaI1tYvjQHklm%!Iuh25" HR(wAPŹٛA׍׉`}@`DXMi+hPYP+RlzD8TA@E&:i MX0LY"}XDKxꦀ5"h7(ը/` p 8=p}Jp}  (4)CDn ,L[V!/@+P;Yf*-)fJhYڃ(IҭC}‚) DjiH(W,ЛؑiЂЬP^-T+kB^f{=&L^د;Hhw)vigx y}0] [_ZC(2qIiXf4sIiQD!GVވnZF84_VW}J2"#>$N^}CU+S,bMb.-F9<2*$ j$ 4γ6s}!1QQ`13He]` 5v J8A8ݛ=Q̇i 7Έtp9CVah?ݘd4EBKnL= \A`Ac@@IA"+dЇEHd(MPJ*ʈvu djjOp@m& idix1mdNw Z)cՈ`h>mN[^*Xq0 =0Ɗe/t=ǝAW `P`pYWBYiah84UzݢtH giحג gsQ׺b]qYX3[e8=`hodp%yߣWPddPfTpd0j鶞EjX VLF`KQWqJX\tST_ufop\APqpSnXn-\lpS@=TTPkhYwyVV>Cڕqhffp>jn@lY:nFt(bQM ^j osX ^h} ju(>!p^bвgXaWbP(do=kUuo2@;qSD`=H @HpJ؃ߦ=gCDP؃I8 =@@@*wITp=HGЃPHnq؄Aؘk7pD>@J0=؞EBs_:_)sΣkރO8 hp3pNH?K\p:؞9QpO@}rN=*L/B9hM8uI+sB8i8_Jm^=0Y[CAPDOg3csTAi@0=+Qx"&@ Ju}Pt+8XX3;g$#tJT؃PHJ6g ,jY8Hd&ZE=Eܘ;XDnЇJЇIFCDPOv׃ATJl`lw^D%?fN@*uKDNJЃo`l@OAwЇmڃAWp=I gDXWy݆G;hpY؃8= dzN8Yp9B`=`؃==ؓ`wG@J]vAy9҇fGzb$ܘXB9qx'%Q?dRyYX>zUb\p|fmS+_SySbl >}vzmJ[ pƘo=ή/ gkСAZ_(Bdџ(@?P!zCE?Yzړ90͆'m:NBqE):45@܌Rl5f{f5^ Q qI3:Gqsx#95}(O 3ֳ̡8RO]eq9ꓞo,Gqlx!UU GOC@|o&f9Nl/Rn:ڷs;+o<׳okx%B:k%J6p!H.<4!=Č$C xi E$M"LWqp4Cm& !t%C^O#CpB EI:8" Ҁx͐,#CHoW2:?d`HH% ِ3zE! %%I7@/bb?x%,bJF["EG}3KJxMY;UP17CG(v$'ͅJ:{p *);#''!o$KA@L9[@Dѩ6˜"JCA,LwcVC rP3c"Qpِ@2\|)2-,y<3]B7|s='|3}~C)L+!L:7IRmx.Tz,q 0sIbC46B(ܦ%,㌳=M",P11OG^3*|TఊR]sb0;|LHC DIh 3|5 LVq)V(خfC; $&&P1;:׸b].}*@IMWqp %7@EI|PKvF01Ucaɞ$D8^'j($ᡆbB\3 Mk'{`94ETѾx b8HB1)Kn q^S1q=7Q+ 5(S6FDiXPPLm0 *qd =Hҕ" A =8+\th{=x<qPegqJ0D7;A% N }"5$ #@K.IArʹ",B*bjҲ hNR@Sea6xEAIG$EC[uO^'YOd9"[: } x>ؒ- =fi\#pQщkCJ#MY"TU +Xrtp U| Z<Y@s8bנG2ICCWJcjU8G&M@BDI㤃bQN,h(2gW1="{zPSJ!3 !Na!JB81b"q1GDr*T+ u$YaIG1%7ժ!kH%bAv"C *e.7k݊a*V$1``A˽ keC ky!cHS81(+2o%Bav~RͥFMD>"P(q\/n))",lCb8!V"-ypN TMw @bUn+ Pu?O~<% tW$ mn(zsYDNzRoe/~íQ *ÒQQB]mi=~=SR#j̳3lQAugl{'k!v-m<=&EmucG1w ŒvC-ofMm wkg[> u4c}Hȼ~xv.v-lуd$6̹899й]Y=eg`YɮIva6V:ccy# rzVӞY(Qޑ(>`\ vt"Cqw;rs=53<#/y9?sճ=cқ3ï˄_*s>/??ӯ?/ӿ?_g@? ڥLeG5N VawC<̰Z^bG{Y `ujm^  ^ œ:ʄ``{u aFN!R `he!(!1!{8U!m>!֡ޡ^a!˵ Y!!aw؀ \w ơzau(""(( w, | @ K%2b&y"u"h,haI vC큣 'ACT-C| (#)fgwAĀ(8} @Ȁ%v0rb''|4@x\Z%uQ0w Cge=B;B <@C@ 6ndx=CN/ *f"4 B2$.;£'U\wh@%B 8DĠwAOv7JaҊ0"E=Z"H*B^&@'h\pT:P9B~"<)K02?x&\a0%Yp[njCrmF !@26ZF^!ÏAfuV2h+,PEx)LD\FZN'B0CWfhCt @ @ *L zv,\Bu@ c 0%L$%iE("2$P6DR=L@jL@d@xhARȀD <T !@,@C$;L\ DC ddg0 Lia>Wj*Z@$g$KTftpCX $ (@@Bi)$ P<(A(j0jt@ <X< ̢C?Ȁp!j n>D@\+x@_4hCApl@=,@i(GZ@ ,lV(u\ d`L%M"vA?nş~`=NBJ xn@0ZApCC؀LVZll숑mq %*rBN$Pcp 'l?@O҃6ĵ.F04EYZePj2ԪRx@I]DqFQDNȰC>-u=` :^l%?;P"?\Aب&X v"Jj- ƂLn>""',:X*<%=p%R.В d1l%BQ,**LĀmR^6Ů:Vn.EA(i=@%(<(^* & qwMB,4@Y@ ?0jrBT(J?CX@MhAdXLnz %:ref Ān hŤjƆa(0D%[4"dt?D#w I,6=0@~k@@4Cd4D6PTO~@T kRbf Cֆ&FALC@8B̚«6G'i ")'C@<}BȪAD?1n3 Eo0<@:$`2 ,P>N Pb1f6J܃ܣ?AЁCx SJAD T1)r.QRdW:2ר\q]soȦCT "P6 80@,uEqLЪPSGˋۚ#8=$@E,Bη2%<@($@劂z9`+ <*x'e(vCB1' ,TC(qy݃&n'=UWG0췧W^|@yrM WG fC=@(l(㠂88@_hA;bsh5Jq'tzDz7tulWC5HF#S$Bq#&-2+v=ީ`vINc5no<@|*nvd<_DY´wA",Cy,"@4WO$;7,w2>)N҂lmߏCs'( , 4u;sl䯞C{ @Η!>kG>|s>>̃7\B '8lq ξ=$=_;|ǮG,cjw?!~˨B< 䇇1? 4xaB 6tbD)VxcF9vdHU5Ȅ'S^D^L3iִy=z8oCFJC5ziRK6u0BIkV: iXcɖ5{mZ*%Ɨ]ZDUp`}Kpᵋ7vrd*2_]8qwHYUjիYvvlٳi׶}wnݻyxpÉ7~yr|zztөW UuIw5-|xɗ7x{zC]׷~cU> < 0% -׼B =@UF}4DՒQH-S%-3P#۔S<TU R9uXeUVK\u5"[9 nVb=d]f}hjlݖnpr=Y$uR`y}^xUxwy~T_< ́ ^?t̆%̲&)ޘ%-~N+x̐]~am1fT6}>ihA~ްcXVk25{왼~垻V|mk<;n!c;p_ Å%gq'-=z:tCܢ>gKo(VX0&Q`]U+fQۈ|zP"H(Y1YYuEd q39YWc%B&f 9wP tp8 wZ8 <va`A l O!$V+ W8HrE 2+/TORҼ'':"W%(pB'@! UPb?<`Q"MGZE8' pH0 h@h#VPP @'"U 'a(#ǒ b?LqHErvؓiT^R QrE9/jr)24S%'H`WuQG0\RrD =8<§RyH:"u{}b)NYbCPx"${jEzi (¨.n,Vx?V T\c :y1Up,:ACp?1YP,& g\#5S;p g(*zU}x, Ub)7Jk qCtG0 T0t WHw}B5[$iB_ dܣ~&*d1Y}cF1ukq-DNAg%XJA$qI0*AoG1@bޞ,ⰈM   wbX|*C98" 60!(R0'q9#s uߘ4b  B|b%Y $!9`sDrG|!4$ADHBh aA D;3gEDf8P?D! z ;H"p!8wAxq13͢ʵlL@)D;A>z6ƄYgWW[ܘCDZ;7JQ"a*Tp ?vX r="3 B!jA $AQ"35:DD&;8% Y2݄@AE8@ dZ Έ"D|rރYWlH|q r[!šG:A3.B@Sc? e삔|{`b"e@\AzE!k C %p$"{.ő5^dĴ:SxH7r [\ۃ(aC|>v'=8C&HrVG(?NMC@?)#^@;΍]5&}' hH^#zFa9RC&y?+*i,C|@Aldaʬ>bN8K'`\'>:M xA`, 9x. J' ܁6П +Ъ BAaa$HPP!L6p^P܁  |&N~6WMJB'^~-8Aø$aA@!LxAFH)u$XQCT 6 d>F. (|*LSaaƠ ?17a b&F13&jpbܑp K&k!Ab j :L!q q R ͮ')>1iСD#L%\$o2zDD!'!"h#v'kanRd))jt)-(W)Ig+{*f(+f)IaPC9,-R-ג--.R.r# ',WIa+1Awb+,0/"003-rb1',s!3'-27(43!0s09S434b4S)JSA U$S5cS(X N3"6eS7CW\s44*%o37+Bk7kr!!b8575c7" &8ϱvlsb998qr"S!\'r`ԁfoAV*}! l`{˵:-Jb4AO@ N“.!!a B&NAV@C?C VL!@ .`32b@-d@H[ +$!( 3Xh BEEP GP@Ht!=(%I ! lOEBeJe@d+LC( TP NQ<2Ad R6&`R26b F;}*բA4S4+! aT" UA`bX(2{ X>ADM"YKY 2H 43 *@A Am 8$ f ]!*H*^T*A&R& < g,`Fo@a&@b'VޕSU! j)QɌ ^eK]. hJh'hN8VQ!kklBlǶjb4*9Vm$0vhݖ+ySnm3ovoS%bkV4Wp7pp6q/"r.+r/s3Ws7s;s?60uLqO6I7HLu[7N#\Wvv%wvo7koqwSwwW!lSx7uwpWyytyxxWzzw=yzUwhL{{W{7|{l|gw|ME}unwW0v'/C0/uXu؁#X'+؂/3X7;؃?CXG~aL*[؅_cXgk؆os{؇X؈X؉X؊XX)c7CƘ،ϸȄAטXXx帎X؏Y ِYّ#7m.3Y١.6ٓ1?ٓJٔOSYW[ٕ_cYgkٖosYw{ٗYey=yYٙYnYٛÙٜYYwǙY癞ٞYٟZ ڠZڡ#Z'+ڢ/3Z7;ڣ?CZGKڤOSZEVڥ_cvmDcyesZy7٦wZgBZکZEڪڢ "ګ"Z:Z8'bbڭm뚡 #Aگ[ڰ;vF!ba.3[7;۳?A0ڮO Z[۵_c۵u0.$| ` [۸ ܠ![Y;Y'!nZ!pۼ[כ;~ !a[3(DLZ\ " ` ;ܛj$̇&${  V< _]œ``ek\u<Ɖc}slj`LkÛɱ'd3c&LU<{\W|w\_[ˋȓɟ߼BBS|q|<Ł<Ї<˅ȗ` m#'|΁īί< <{As |=W[]&`)=B˽a<£ Bř |]O]\H|N]YDDh=Al]&ϳc r \|?}׋}Ћ<ՙA٣A"H})R'Bcs=п}#  @ ` % "q$ Q]6|]3vp|Nd=!a.BEo( >3u} `! <؇@" R<`ͼ;WP@Z@ n@ F,r!H&p!A V@ʕ"ħB譜> " ` a @ & ~V|@ƕ='{SF^ٟ,H ALv"6!ayN SX[ i[@Tb2[g/!(IDA!XM!~NHa" ,x:6o"H$!b1ƍ ArF[~,ȵmXǟQX4 Ӥi΍zqŌ\Hdɒ5 ޣաԩTVj5֭\z 6رd˚=6ڵlۺ}_+p 7'DQ+pO!@\D %w0Au1ZK=Un _(h;Cw?J_+!X4nmس;!슾P!C%RPHl˗_,>~򳎟NyBG_? DDQ)Ŕ<<[Ea^ana(+v!#:rp, )! 7-N*\a&g]GZ 73ˈ{8"M%"\j!+\?qH@H ]si" nKBSu7QEHǑE5 yڞ&!?A( "' ,N 1a@E?6Ϝ7HݠjKiO'N3y(>l12cXL>!GuF j㔅 tBMtF.tKAf/ V^q)Ƞ]( 57Ђ4d D @梀@WP 7P7*Q\))1I bMPF(xSLH܏`#W`{ "b"@N7| ̎ ( 'S0J:mcB2g#~?쁍Z԰#7Yw+! s,1b. .e  +2qUV{,"4yhgtZ %5P6Api=~ dK y톛6 A|{C"H  LlF*huԣG8D αA  RjZӋ,!k Ԡ uDM!k4@7A!@TДϩ7tc\YTuc@@Ií T *Qr#UC+`! pH?X~C@) iHpF" 3)'Su-iVir`kM6ꬤmo=9!x^AW@Cp%#;5[%(tN{ jww)܊w=z[#QhoM?2S$#G|;wC0uC x.vY[*x+&%"Q#ҕP$_VP΂x$.}2x,z+ oJO=Ip8i| yDP[dƛYKc6P"ky\2Y›0wəhp)z*S0T0},b/ytr:Ōř< zЄ.m=xΔMkM *mJi\zլNz[jGȃ9"-`^z׼1a.d+{n-lXcp ʦ! noWv.weÝʒ d/!Iz7o{ |/7 n*:K|/k<ӘF6,$/?d[ *PY9_sc.1 V|<tC$Sɏl䥽yП?}8/үS bt}d .D{}hj=|/ ~r +_=򔯼{k~P;Ћ-OL>o~/=o>}w _?v#oKԯk/ϏoR.h~P2 %! ,    !!!#$ ##%%%)('*+*,-.12/2224837669:7839>;;<>>A?ACCCDEFIHGQJGJFIKHJGKKMNNQQNQNPRSSTXUXVVZYWWYWcVY\[[]^^b`^`^`__acccdeeif+f*hgjhgpgIfiki2i3jjlpknk-l;l'l*mmqm4m2m*m%n3n1poto8pRp5p1nqsqUqEq=q>rrtrKu]vvyvZvDuxuwy{z_zSz{|{C}~}\}K~~~^~W~VdddҀKj~\dQzqkɐdyǝteaأȦtqЭ~ƴߴ𻓻ྪĴĘŬƦ˻ˮˮ͟ѰѝԺ۽ܵݻ\С*\ȰÇ#JHŋ3jȱǏ CIɓ(SЀqbK'sr8sɳϟ@ JѣH*]ʴӧPJJիXjUiyK֟hϖ]˶۷pʝKݻx˷߿ LÈ+^0ݓ|˘3g̹ȚCOLͥIFj̭?ʵ;Ɲ޾gѽWn|r͋'>]znՅGמ%Oӫ_Ͼ˟OϿ(h& 6F(Vhfv ($h(,0(4h8<@)DiH&L6PF)TViXf\v`\dilfzj)tgxw矀*gjh袌hF*酏Nj饘Xivi}~*ꨤjhꫧ*묋J뭸ikk[XefVBm13ԍ6eLʯ3 qӍ(HBtAܻ+C@BlW,^O2v0+N  1!7? /KL1,,|P Ϭ%RB@ @ͧ0UOJS:! 8!K&3-wc@p/#3֘]je_@x6|[9|oǽܠ{Lbvc6c%AːSKl[NGd"0Y$[C﹯%ÛOq,eЗřސ~p2,b"!YVpal7@" H(p68AVfEΌ arZȀQ `FD'02H)2P |2 9CE\!` a9@^ FhHP0+,2r8 @\R*`183>J{b`0w$@?aa"Vɠ^y<. ĥva"oTX ۉA7agУc`8贸a#@V˫JVa*uP4 y+(@K@B5 ]: $4.@$dX\=@0(`\# <*˩x냬vŌ!A;ڝXqM, ,Bav?홾d?yG.c0 ,մ c^gbj%FZ,X& h1):Lcovh=5*S1\tM"`k-7 [:*g[Pbź{Ik8쌢7@,8T纺AV <֏{̽`ԶtL[Pm/GLS0fw|Ahv٘PmX:)."WG{ް} [Q堅0= sZ9]Kƹk.0 N 46Ws$ :@A-O0ָfw\G܇UWg2+kE}]Cĕ<*g1w4֗eCݯ`\:xC5bc*C_1(: +~24QzE 2axD4 'K#hf}|ĔmyC2 BQh2(vN;s>\:345|`697 5wQA±.@D_}xÁe`v_Fyy}`EXsf@c@l^H.4v'@:pHz`Sy41 b ȵ?Ր7,'RWF 2OPFauUWp*hfY/HxSq~5hu8gBK+P1?iN 1[F`3~Ov<\< g@csj0N7p @_bF4R8%33 h|HND ;T7,S`$ b6pcvsci32oxgJ7lA T/3cQ^ 焁x Q8r~86,/c@uqA HmW4 HWീ07.0w3S}WKb0 s|뢂LGj6u8y80xT@0\H fc4YvT sQS~>Uf=W@d<]_m/S$3"5pkШanTd:rPGi.pu5`F43fŦ1ca }uo`g֓]7,4oh|W| ?hCpvi{5;i͕6 2\dFW 0 `3VO. F_~V@bWP r!` EeDc C;f Ue pQC=.m" Gp[FWUW.W'@  pU щuK'p$Lwy;TnMȃ`iyu:;5R8;sNZX]kWz}' +560ɰ4p$ҩ$W+P ХZ`\իWZ [/#ӺĈk;7L*qL8cw_[5}㽊V5du/j[,q;7 ~P ;,aH [LսbMw.R@t6!,"wj "x*!<-!- ` 6 #fG 9|@| 1D\F|HJLXNR}\^Y[d]fmac}lni 'QbSv}x-qk~׀{}}؆}؈ml2a WxؘР2Mԋ!` %jF2бr9l}۸ϋ]=dP  `c3t@eJ Cne0}tqz5rrEMb< jcsN$}]m=hV%>= Ap2NEMdyCĠGja17`">ϼra7@:!+i~ n!`0`DۘC&O0c$^FМuͨI_+ pVP5 >S 70H2 VayPOG>tIn (3 PM{hv^]D`6jwZ^loaMŤQZ+Vng0Wv-`w`~6lQti~닁o!jpaycg=}spH]v5^Nw^ e7\Sn09fWaD:pp~{9:2 ״V5]f }3p>TÅ 04 RNK>h33M+) \~0OmO^5ކ1j@o,!? Ex`*U0`[``;/[ٌf@!p6 AQ ՀkX+>j _;@j_҆L#YC/ ?ts?ئ;=pQ//O~ 0?!ԟo9_/o/?OO_$XA .dC%NXE5nd$YI)ѣ2d<ΤYM9uOARKIITZLQNZUYnhS)}Yiծeٯau]yOtU:ĉ/fcȑ%O\e̙5ogСE&]iԩUlw뤅Φ]mܹ[%L'^xm޾=sѥL|9ٵoޝxu뾱{'_yW=>{ϗ`ߟ? 4 PtA#JjPB 3pC(P 9qDK D[t?S-kFbqG ;ñ,1H$T6{+rJ*j'ANz=JBoQ Y8+CKMf&x/+i>p| R>Z)pg9 W A 9n膵]O0 d| H r*& 'ȠFP< 0:b@6Ώ'?V9CtUqnL|HGwI/,cE6تF'7㣄5Npt1GlAXW\A4;A xxQB'lpEQ 6`%WA-)PN|" ((p.8p 6J VP.P,$CJ Ib=(Ul9̸Jrt 1 @]F 8Bq9ē'Al#qf9at%AMR67 7?"X @KMHYh=ġ.z/QG IEnH vt.Gm O!A9j`W2!āB:H'3G#t@+ pH%MG.@\T"RJz9E(*f `vD0 uC_qS1~պ-@fd@P1US  f72F.fQTFhD T0ԒuՕ(эCDN A x!u_L7JWFIk`J dZbmF$Ui@1> 1B>8Vu {[] 0zmfdߦ6/g.Sg:a;a p+ ћs鷠ӣ&uB<HZիf˩jVZmquoR=k\:*nuk`Kׯu}l ?lhN;RGAf`%Zmp[ق)^w[޹0$@ o~ NwY]o! $ OPbg|g r'>rZ+G2@O <@Y󽎻0D٠ 9*(4Э~DF]v\RdWg{}W b+:j& 1]z)|Y"O'ҩ O s3 hۃ'}ΞOD6_7B.%`Ĵ@*p DH0 !gez= ^q+8Ⱥe,1~ $0 9dO>\n%^PpIhd@Z &` |@7?L3#כ;۔kJ (ayA188P0<@(!B9P9Xn B2+(1:#-PA ! ;$Pj7.C74uH+0$&@CY639C20A{?2n  /A9 9pD`H$i!>KED78x(JNyA0E(9x30d 4[<],E} C@ GFp s33I@G(L`-$E#Nu4\JV =tB7DJq9YhGz${ClK%3ltK,C; GDoK쏾D>S;DĬX^UJ@’=MHj{ʍ<8W"M؄LجM͝ML" K|OpJO|KĒOOO<-PP4P%\P=P&O6OP P6 m eL"2[QmQ}QQQQQQQQQ R!R"-R#=R$MR%]R&QRR, +R.M-R0/ S2U6)-S5L5}ӠhSS:3ݑ4S=e9=SSTB AB-CDU;Dm?]TIԋTKT: TO]LTQ5GMHU2 UT]UiTeUSXEUYUQU[T\ ȋ\]uHGJ Vh۞X.]9KfMgezUlі-ociBH&Lca}ysyJօV橚))+Sp#z0t`XX)!h+(#p 1 {8W`}``DMW "&8YI@3YKDلx O؄ES$UJp(-҇H1)9حo"p#B! FZZ){B=x}Jx}k44)CFn *[9ۃ֪/ Cբ p BUZZRAPI`Du%>4#D],2HlhJ0W,ڑiЂPtOy O90-YEN)Y@-ڰljlphphhryk ah3E_$_p22o-lUj(343u` ZDh/\$ac B34RS5IJ#7U _bb+S,5b..S/8:;1)U*4^ ȍ 9c;[Kx4 cHĀ\VBHc!B=4JHމBcHWeRʌ N H@!?1> 愘8/S]E=l \v~`@knY^1q=Fý$&ۅ=!;Y`P`pYWņ:. usf@BS\-zHMy@pax`{{@Y0{>" 3`SzY 2IWuipx-\нLyUxINU*lVY@dnOHSjnff-3Unx Qux6opEIH\jBU@kzpx\AqxS8n`nx\8jxS@1TTPl aX!p`^mni `d_ ^VhYgQdA!dHc0ahquBli\i.WT!ևJ0^aVcjwkf0+`x1@c@qPonuF+adNh-uHHMMJ>mJIXq9I`$+ >BdPqG9@yDp=.D MC8l8pDqAS؃!: XEc>f>CHW0 焅*J9WjG"ϡ9Їi9NJrt"OIR97'CO_E9ffAjJ89/NX{HIz.il@Arap>Y lA烼)JkBZu@rYDpJ!3asH*@@>q@JvztY ;r}9/ftH9%߰XEq%E;>} g}d8AH bxu؃ATxIfl`ky'J(aROq*=y>p}HJަ)>@xgMBxJxE0DP6wqHO=wxy=FIXlACg q 6\ =`w؄Sw@J]c AC.}PvH=+"f Q9pQЇWe{ρYX^{=\{%SS/9!Yf0kOfDH>xl> P0 .6h?S E8&("GQ"D }'k=\|ŧ`PcQljBBHT7>BP@IFҢy,(T"N$$9q!wC7n ΟRТ= 3P!O d&M>Lc|LsgLVFU($AIڤYpmZҧSn:ڷsz2uƓ/o<}`CRM%\DH$2CbCH", 9B$$BM`$/{1!\B>.DI%RW,3<''$3#2͇ 31K& "T2:?D`HH%My2.su! Q24 c "&!SfPCvn&Ї &N(r,tbe$,&!33Hr TrfTP8BG(V ))M2#\zW4!%lrV]vsB+#vĘC-+*CB/A,kiĹ*(-gdi{T3SlKu3B 2O{nW*`ż8̇()2-'{1cGW)< ߄ }c x>4#sHBqYaؐC`&c-Z9CBvJ"rxl%K΃B~0|2GuTK!Sa7Rz:8C`l fu88ÐiX?8/rb(Z2;\! KQW(Dhl, a8E-lbu hKУXD1nRj r[0SCjW)K n Nhe2Vtk5 ),*eOp~* 5!5XQz- !9!A@ !&V/֌n]U,PJ:1p8V=/?!ŷAl-bQko P~ᎂ lcEZ}yO4n;۸# I("+UBrm)Ex3Yd!ƱY Dc=d;d ()}ֶ{B;]ˬݹU1ŃoNH`m錇iiNISmrN{;X㎲njDvrnꌻ:ۮηoEk_gf !Y~w1v)pF7|W:þNrp\&׎y3zc>!6+\v,t> 6:I5l$;ջ{1:v^tϺe;K.b|y/?<<~/S<3s7/Sֿ>s>/??ӯNY?_G5U &.`9vAB̸Hy z u~ R[`i] aG ֠ ޠåɩL N &.w!E w yt8!v~!r!|D!MXaau!!a!9!!` L !%\ ȚB h!R"'v'>"̍v, | @ K$w{l"g,P!M uC 'ȁBXC-݃| 'Nbv@!)b@ B[' D5ʢwb-fqAwLy#uPL9Vf*"( i@Q#E C BX㲍v,BM d e"CEdpXw<@ pG7$@Ac ,D wMzI\W]T$U~"f H$vpdJfcuL -*@NFb:$y$nB]L'($,ê00hAO,'M\֨%p3|B=N_0"'gf$'$! B$*hL%xP2I Dl:t$BTf_.)NdH_|)-U2D@ @ @ AWҘ XR"|%L@9ƀQZ[\u$CX@ L%B :x F @(@dtI @"?d@i< @@) ,?@@lFpE@42>PnFd* \fDG X@7V @od d(&@A@Ӎ&@*'XxL<0L@+j:d@ l*A'BiѝN0 LZz?C$腁*$@7|*N ݄V5l( j5|hjGf?ZJVa%(cZB,xV <NBI x@n0Z@tB؀0DV@YdlȏB,@nP&mf1-C3j,<򦫠~C $=DB@aR U䤪cK8*(?<Ef$Mxk:J\?AEV09^œCzn??\A&V ubN,$R,Zݪ',:X)$%=p%R@2Ԓ ؤ1,ئ*P,*jKRP^*z.$efQ'$;@]؀hkmj7mdoG@t*nB"A )<@A0(((@]*@&@ ug0MB04Y@ ?hbB@.(I?BX@x.MhAWLz l8jvdJ @ u,.b!N@B PB(c2PN 0A$@=Bp@Bx(f LNJ02D#&R@ UN~@H 'Be,_F2Pmi\D$L?p#)B0rFj`r=TL<'d3C kf0I(3>@V@Z$>.ܨ l@E B Xȁk0p(Ti=(<`?0,@&M4/Ӱ02%Sc7P/%EWj.3q-fG7@3@¯ƦCH O* 0@595q%@KOQdFKښ#h=$@fq%`kBP,MKST?|*DzC HV V{H"PBz;S7MEPNJI(195C?i$@EZB\Єz H'ut/,vdc\TGnueh%lW<0ink7Ѯ@9À*'Õ"rz?܉'؆ySB7,inTL~0*Ѫ B2Pmp 8(=h3D@:p+t"<x3+8/Q0@@\,h2,4tÌD1JG @02 d,9J0EL . BHiDP3@<fG p@@(X S! +@@ rG|P@a?j+ sMB+=<@w=jFwsZHt}wzdItĀ6t@i(k (@z(<*(B493+lK\H/7ϧM4& \7th5%.#K$~>pRѭt\A[iv=ܩñ\ vtMN 5nKcѸp<l)ud<ߧ(~F>=o C ˤJ%k"? 4xaB 6tP܃xq!E &SwdH#I4y&%OK3iִygN;yhPCbQkz\ȔQE4kV[vlXc*d5)MTٖ*GU{o^}o߱ 6|qbUdOZʓ߲*ѣI6}ujիYvvlٳi׶}wnݻyxp6 yr˙7w1sD]tB QF%R}H+ݔNӑRMU PCV]}UTUUXmWėib=d]f}hjlݖnpdHVUk͕vU(P}zsyݗR}T~ sW^\%58T5nEˎaU^9JOYf)Ue7tA碍h>覝n0i 觭ڻG$찴&q2>mkZNZ;Ʃ!W%m?q;ݛ,m-G 3lE+?$Y]d#V± A}Wr~ +fQézWc%H(Y1%YYued q$29YZc%B&=b | tp9$vZ8 "މ`3)A'Lj2#[z<#|T*1`"*8p?1cGK1qCd lfp.T }b@O @E_ YC iy!jsF C0=cV\FqO4 TU)\ҍdܣ~&*d!Y}c1)t5lo}ENAe%WJA$qI0*A1@B|؞,䰈M   wbXv:C98" 60!(R0'q9#s u4!b  B|Y $!9DsDrG|!4$ADHBh } b&l9MC9P?D! z ":H"p1 9vAx1?͢ʵ`L@);A>z6ƄcYgWW[ݘCǑU>8JQ_*Tp ?vX r=B2 B!j!diU&VdFgD1 @3FG4'!p [ ^M>A܃W}lLty p[!ʢE}4A3.B0ST%]ROŔH"Vlc+APG;dd!ģDd,&d´:SxH8p [QDS_+ч8VYrcǩiA@?1n$ pH6396ACR8;A{5%6h\_OLC+:NwL!aDA@T>`n6K%@\%>fAxa@  .acҡP\'kB^P!" .a$HpP&!%H dpagOK^DmA"Da\L%p 0A +6pʐDl$\1ACR 6 h>D. .|*alaƠ- E7" ILQbf&bq 륞O!!> r k:  GB!)r)':,o*/!h!qgrd',(`%ơ.LA"&w'}&3&'(P0BG)RE**P*H++#Bc8,-R-ג--.R.r#",+2!ؔHS8R``6&`,26bE:4}ARݴ:(*StSB `@A`X(2{@Vqu>AD@MWTX,SK%#X<LTp$"QVSAUNHBB5"a.AZZ( N|f^tVDa `r\A\ɟxp ̖¥'f6k6T!iV\vio9jV!S kTkkilaBjjT.mvHU^Dm6lR'!kv5oTo{oto4Rqqqr#Wr'rY.SnQs1psCW:>Dtg6OWutvu_!Rvgs[piw'sfssmew}xwxgxu/)iwiWzwwpzUyw{MzwybU|Oz!C0}0/W~"%7%X ؀X؁#؀RL*A7;؃?CXGK؄OHW[؅_cXgk؆osXw{؇X؈X\'#ȢXȄX؋8xXט؍X瘎؎X؏x3m ِ١- y &+ْ/3Y7;ٓ?CYGKٔOSYW[ٕ_cYA"Z~+(!pdA%l!"tQ"ھb$Ye/!&IJo4pn$," m&"O=a,ra~a~ a~5ʍM0MܨGE$hbD6n,d nݣʕ,[|2%̙4kڼ3Ν<{ 4СD=4LVϟ>8!b,BX3Ӏ?N'J(60 Ƚ|.F wdQÍDk"EgɲGiZ9>Kw% 0@"Կ_˒AQ-"A҆[|eU?Wԟu|uW "DcFE:9R2W?`(+n*(G]r "Ç@L0ݴ V:F\b)X^zcT,ap?ȇ#T! "G#ǒ48 -di@?\cm[<qjzt\|Ï'DE.)B>s⺶*%< ? 6:L#3GM 0p,^դg~q D%HFH2UQ?7_Ԇq=_$~A V8~b ȇ36a h?Q AF@5=3H5p,lޱF 74:dK =q=ia!aa:F)CjA^`/j&a*N01z V% *2 V ҄qEFj%|ec<0-(߀?٨E4BGd(t+_ Xʒ' ´`)a"Qa!b>e'8 ᔢ/:lO b(C`,!iBKX`HC00! iA"'HL:2tmcci뵄EM*;,#[g?aD 8A4=EH-X%=b w6[M*w-iKV$ q:8Q8NȖ@:FWDoRwm/R\2w [UBwMzRV-pȄІĺw n_Jx/~x`"HK>x,n1a x04|ҍX=#5܆Qc ~$3n2hkaX;/"\ ) 0N.gFH a Pv 8yݲt $)I)_y4>|'ok~߼??΃~/Kԋ=o~~o~ /+oKԯk/e\؋foQ@;amplify-gettingstarted.png000066400000000000000000001611331465312036400343360ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-aws-amplifyPNG  IHDRXe(U pHYs%%IR$ IDATx[Tۖ}{o>ݧvo(*#F s""DD9g,9DArNE1VnYߧҪUc}c&|m°;_$`IIIIIIIII%KJJJJJJJJ,)))))))) X$`IIIIIIIII%KJJJJJJJJ,)))))))) XRRRRRRRR$`IIIIIIIII%%%%%%%%%K,)@s BJJJJ"VCC{Yf dߍ'eBpkw#KJJkf:"`eQ9n#iR~?RRR/vDlX6n *c?]uc`-C]I s _+lp 6 `fDŽ, ?+R:Ba2f@`'r%8m {Z`7c좃ݒp XRR.`MޅUzem/nl6&e06{1m0`Zw&%ϣ C$i8[{Aw> Sֻ˩8k l898{p`G l,kaV pne殾ۤ퐀%%uo#޻{&]ŜKf KhY0|{TJ7`1wE1jØ1Goa܊Dw(ȎoCrx ܛq^@V-l-jqx"&8Z`F_Ւ%KJ1u?/f (lt XI5J.Rf2?KJWf`}$E ?эp+NO*j,gb[xs5CU|xj”v' E)m(hGajBtwު`Uc{۱~S'U>1ŀ TЂTAT[pyg(V|kYڷpf;0eϒGIƖQ .@Y@71e :NBНazdvs 6؎.)P}%P\eȈocoAX$=u8B`Kk $ (LDE>; &roы ВYRRs5CKLj]Q%*wU.[Nb`Y:N3g[>M%)aȅuHP֎6\;U۝na&]uW,)O .e,HW,F9;z 3ei C*ϒzct)j=<aU(Nz1Щ=XQȐ…~ e"  ˴ukYx)\= Y h]tJ=*;r[t-> Z<`6&sgY6P cXuz +`mIYW,%%4fl6cH?;̞z)(J|)3N=ctt)BG%*6m #(K|%ꁬvd&Z٭,ҩ_,9%%I֓FDsэ Yg/+r\bڿZ`ݰ[8VVifoFTVtzQil|"7qrc%錘*ut S:PڎKn` G9rڊAL1ͳqb_ NPt̺Q^4Uَ8X)崷{kq|#f8#'b> ZVH#BkqjdǷ 'ũJFTn;fmfۧyW)wcܒ?k\9$%p5(#y^E*qI\3.8#§L?*Q X9p vЙC暢Z Cw7 :X ݪ7 j-ҨD@R a SڐۊSp}58'c7k\ #KJ#,=X; o+_ܢ6iХ7:>VN^*NƒcIX3& ۃ޹pu(pL\}7ațg;1r, {ճPL\qb `SGb8eED}iqp,C֩.ضJL7r%%`II}D;OKw0Dl6a%}*Х؛@7{dU]lBv9s[IȒxȉX4~+t|;oeխo{؏6]WC9,ٍKo 6sM~Q5;qvw9MlW؋5n3¼JQK#EEuVչ\kePHzO݌_lQi[g({aʪO;;}+Wz4V&yzW س!^bkʫKČ7Q<A 2cT5^xrxէ9?+Va{1pXE8i K-n2'{ >[#2LH!xӷpw{pŻe65HV8o&LlR&zOqh`=I,[ 8m` ]9܄)A X;a;8plN`|3}OHEYU-F-|F\p~3b XgyN=mՀ5?2 !(VFWV'SQ rr:/cu% %h]*[8ۄRCq1b.RΕ||'X4 Oz D}W}mVhjnergΝ&$*46p@yIm OZrĤs ƅCUvn-CYAֻ49~4KsK}ެ=N4n}C zBtB9hkk'ۛ>㽈O^vWyG.ξj^37&*YM?"iTzIT#+ܳ gW Rniƺͮ2L(ָVhl9Wުظ<ʪƐ꛰qO `WƏ #X%u46h1k~>i_tJXs8&SYӶa32u# 6QTX5Tv D@R\9X]?7skX~0!SuwNQi2ʉdw+10;'gNZa6Yөod9V*~S\0Aa];nŲx{1XN[cެn9ώk8}}LfK,CW}weJq'nאi$lMj``d؝{ q-⤛O"!AqR#( GY^+T坨D @|}3`8mpëINt'ʈn|+ SyHJSvzp#OD@3TYJ ~; i 8aV1T8 sLPuf<l`zv󸒗wGt!:v͛)pؿ W\^jpG`Iƿ,L[$n#= `e!V'ƊC$N?\|8}9vHL{hqy~W0d0NW< j 7zMpEa @JV߿p/_\ųilK̲ozKok&7[p>ca]y  ` M5 Y-Jr=ǯS8?y* `i,{q2 φhL Sa /7 gz,WJN $* YcOTOn6.ie7tWx\ť&l@na9), Fo1IfZX{Ow${F.d7ț*.DQb?FB (ma觷.[URah/ôI'Tϙ1 jQW*݈Uj_;Gq`w, +spoo-j/CУ6ؔl=q^0~=H{(ߦi-fYYe RLgXpSnQ9Ѿjd;::9,an%p}9jU]3fYR5W x襷ƑwPф&qn*0Uލ.W]Bs 8DZ4uQ@Vk7*[(n!'O 5,,X_<w+Ѐ´zhPrD[~+Df\}+ M]kU)Ȏ@,9 |6o}K*M}h|WXTžu)v}C&K5uHHbG " z, ~nROhk*ǵiʬA]`")[\89+p-+ٵY ax"" j…xRBh*T?OU( gIfʳ;Q%?S(gZ/fUf? X) TR XYwCUjM]s@2DK|4ʪxXqܸ&w/=XŨkl|%I8sۏYdu{g+qM̝(Li t zƯC ~n =y^R X4&DKpC,`ǫqKӺ)d7J}0d!怱#]RZU+1WWC-b[ 6%`}"`HUM=j9Bc)8ĸXb6^hrTGYzW "Ut >HCth%*pU  jO XX螅s V{ SQQB6.XXA-4)t_(,Ĉx%vA-QC $J/V J4ԗ-@o)6o !7n }3 k}Dע6P ՗ .]a>:~u'8fAȈjbϮ*ִ)NřmxBlx%k+Q[ɐE,bQ R XG,1_n;2`[*Л<8MDQv3(<؅6>QSոj׈G"S`iA% r:ՆdNA@e~7Jz/ = ىŃq!۩͋VRV) )q5HBi^+ 1VO^\X7jK,~hP<26Z<[ƣX=_CLfk<; 9Þm Vzeҷ/4:d M<1p G=̠U pѦ j Z~?ٰ:[ܻ UY`PJnCW-σwbQކ.-ZQgL#^ϵ',4 tBAf2Sנ8Ce>DH9:p>j F.%` #X`5ɣ5A}c3)WƦBw7]h5eO w0xՏGk ܺ͹?E0Uq#·`=;9/WjqH8Wxp ž< V82d߇,)- q'Ÿ`Ư f8qhFz\;b}A7JnDйFYBk GqX!~PAR;RZpF1xj3VxޫĽ+H(C"xT!! 9țEk]m1G X%ޓ C"*yZl~X:,kyNpm-Bw+v%DtGb0cvD•G\,c+ __7Yp⤯[Y6ء( dgR?xK7^ ǫYgq2Dm%%&R iCFBkދ郜1Qm7g|WZqPfi+pZgū!^q|6n_)gBO cxU">1a-JG\gķ0].ԖQ8ƺW{3! ENV9Yp {-{{L[R8)U) G;`И0gΗыe!bu*|]"0j>љ}#+܉g@EEbZ1cS N@-zI nDZ*x :Q SWZIKld  XRRo6$ 7/rڋCcG<8;arG84b!/ÁϊoC\h \"y4"ܟnJq|*pU#*DZ`Z>Tǭ1!u"%eYJ2V w5F}W#Ʒb_SUjb'&sgK?hkyٝ3G@b%jUGT+N䒇=bN۹ I}L+ )} !~;?^5ۜ-b/5ؐ2m8u1r:^, ^OJxbm-7_(鸲wYk55zўG+0a#.26mwFrd583-wpTP?a|qr.n^x[e|?"Bt/ x)E|T;+Ыr_Ąbx븈try-"t,f}21J~CTS㩩@'Dh:`+ :sLR'2-R}]6!> ` m*!Kc~tߥcm& ȚYc7nXjDZl=L[FKx? ݈y`vqaE&xÓUs8/ Z2]֛ &MZ񣥮N+tTfl])WCSAz͟zVOSx^O| ،D+B?d|D0e z C!~> ?f[g>~ C# xfǪU Ru.A%"~DυK% ۔~1< jwDh} ל8X^D5P,X`T+,*ĄT0ho5[/G94XVR])st?y%C-^45h\(] ^=UVn{19>QeyzP5v S17-2T9?%@yheaɫxH}Q<[c8Y~N_#J`V^ωJBZuǘ{o^[ZO̹j˓ , \dջOqUOF'WnU]YOURwΕ5˲8+UEC͸:HmȒ40Eb/7~]d x/ڦ.4K`b{ Vη=RGm.hT"mCZj R}nz,8uK;pɈ wB]Ljr-oL_ňqrMTf=+(J1Wfj⡫J/s%^2W Rg.|_R߽!5hEJqo^aHi:\*Bm1Z0Ah}k vR?+Lj>oXva}InhR}F +ZZM5hkQڷtt>YS`GŢ56Xf̿{wΆ}'z`TƅґA)ԡf v')0JNo$*XGm}_u dׯu=lm/}#FGOGiF[6`ƺ|d3>RJM S*Ao6|UijlQH1+jl `%7d+`U#\-?e X]yCp^7[H}G܄Hq;zlT?&׀Uf^!\afd4vYy% c M4Y|V^)7a'^rNۮy,yhE$d`M<KsѸs=1#G.wQAVg7=و+ |3v-3I5ztlIܴ>K0s8.&sܚ&w'DHq\>d9R=3Za8gnaɫw7N- O{U\ 0=UwoGfd V1` Xr ^W#oOSK+G)<# yo30ay,j|# #b`T \s aHVlK3Ϫz~p/^-2E& /36KȸŤd!'/)}.۴zO<c;ӄ'o~ɶ|j n87†aéh|W@fYoUB/W# %W!b=^% NLy-](|Q>y~hVK.Lё1%FFfU/ )6FQ=^ Ҭr#,n7 -0b!@K~%,=w@@#0#y(TGJL[{ #'zo 睻ӷ}كF`Ky(1-S y754kbiF{D#E'N 3BBp=_Q߯ĉ^HBe:GSUX@Lfl"j\0Rȃ["u"1Y{ Sɠ!B".@tmGS^VRT Rc(Bⱬ6N'Vyv7V\`L~XcدzM<GU_$*t z,P\"}8) Pas]G XDlO$Ohx/d``!Ot1~'1񩹸*&5yRBD6䔘TEgpHR"h {G^Gx{tI [I4Yf,Evv; %e CIz'hVI^_ QBю 3>s0ұ˜,r7('B4<1јޖg|8LHG z:6ʃp%R~ )AB D /f3b+ɃQB?iѾP()b7}wYh~̫i5N$?a |=`>0~1Gq,ٱ. (=q ku_vm@wbUuɇBD7 -SqaRyW !RV%QHǑە!: k,4է IDAT󩀟{ci۸{UP5~SOTg0LԽ)4szO3'M(Z](PaQ꫺X{?>?ct{Vw:Mϑ{.M(RQ4) &Jm1}J'E(EϞaY[0h [zY[ݹ\aVG1,"GT>W UX91pLr.@ _K4(.qs~~fUNϬȡ$Am͙ zfӊ2Rf@slZ6q`)W W@ csJ⮉zu6J%ӞԬ8m)!_}w`<ۤr sDUZA|[)|w*&}egLC"3P.`r+ $!!nV\=ЛMW'`Aʐ()# )1m=`wX@RV"N{b;c0*d&t~BVv&-M fvrvOiehVjl³+tyk4v4+si 8ӄٔ ۞1PMb̷ Gt`9܋S%`]S< Tqy"Y@^zD77+a%B+Q*ՂؐZ>(Fx,.E6pL C^0A݁y.m9Ua_&FVx j:iؽ}=[l"O,//bjDچ} 9?k>U"LhţU?_g~XkDus׾k/Acŀ1s'-.vCb@ K2ŒwJ{' DI@_؂f&F!ү~)@Sؗg)|k$ a ]'2]PFB~.*@ŠFM)Q$/mDnr'7|D"(C1Vza#5a t bӘ,Q;3ag=]PJL1M~{P [aE^?9 w7jCfD^D&xxs(WYq XRRoE+gov}(|7Pc5_`whTC&z(p P7s=,Rd@3QmG"& xBw1܋ru#) ХnEH9Uxrd'3xc"$/V6Q3n>Cya0.WZ8wv<֚G coFCgbc;f~ A~[ɽaZOIJJ꙰!2Qh}|PxJA@+/I1+!yJmGO)כz,zsw+qrΙJz6+YVf_G//c#L~ m/hd'raά6jf""E T*: -,J^'Ņ5 j@|HBM\+*ZW"{Lp-?"**RS {(\H)n"OIzOF>Jı5p]+ LFMp9_ 4US/N+N jONgM3ue ^(j }^/ͯ{QvgҺ8u!=J&*ҷ (b*P =.aLuNBk _D/}@~zg 3N|ZJGSzgy5iذ[آFӤ˭qLI|׼ʈD,\{ߏۉ de/ lPP;-aT(5ro{K0Y*?0A߂ְYubŋ%WJIcz%y[E I: 3Ykk6]'Qd%`IzgEI7q!O S/j$}H{*F:(nWCUމ ZQ-jjSD`yQyBZt=C<R\a$1AU $zZ-v= K n@h :i&׈9_lƎX",#qQ]w ]@K *]MUoEEIꐼZ?Z=_\k{ZԻ+2(?q}?*3h !eQmبs3ׂ2fʌocWq߃o;YP"jL.vZJyVb[j\#.ҧ &ݠ;( F_Ua |5x2;AL9eƇy;mWaͬ&1@_Ν̀|=x 4Yԇ5KzZck{m#K;uSE¨P2oYJ~~VLf ;ەH VqE.^eU߫8_᫄73xsF?=6;1aqh;Ìړ\Agz,\mkl*v,Q .L))< U07sUy >-ptzDϣZԇ >z=*n%s$`IIJS r^{G4?1K=ܯIu\i$w S;XyJc q=<)zŷæA0h2jIXY>Ssʱg^))A NNEXXs]`y`W {JgM+8?kH^T2%*B XRRo XJ oYg}6`$~?~ڊ` p;'ݨAF9@e6y CW{hkYn4V<%VX? !h6&/)E8 Vaòj+l/ l gkՎ(`y* ,)w+mJU-lѬ-Btׄ {:P~Էz^u$`IzqpV 5Bfo6̹)싞C9kF7z=M>/5g(0!K@ d~Ճ:4E gGOLwR'ʛ*HneftHRl_1}bh?kY}9x2՞i ̱ll8XWi+JXSBVT\1,ŪJSre%MΆLʤ7` AO׃k}߫zW}1C?g&ڋ7RoafoeODZa+x?7jxqNl+YhT%+7qxM8QWȅ~ݔU1jkm?BKOEx5. PM^wY}c:gt Yt t,tLtl(YOS֠ϵyӰ~1X kqZAG!*&Χz XQmwac~ QgǕG\Ƈa0o'8Yu`q-l6Z+qh} \_UepZY 'RW{q}di)ί:؛Fa |w~3Kr\-/$Cfzbk+cGηx~4i?OPE{z=kl^F/~=1\ eԴ^x_OZXsםQ' ^w~?aj[߹w}vncQ$P9g PB9,$ $9sN3YB`vtyUwGgk`:m%ȧ@ k0)k, mO-\u`C2*T4=>,Cxc3_g 4#/^gSK1\Q_V_cg.)C"}vERQ3}Pͷ/-XƠUf\|0qCnm\_xz}owU鞘ͻX*qzu0cIVXx3V飭 c<8x6/G, \y?y@KKg ̛55r"~t|Lc%GQv?L (xp_1\ sxK޽V&4Zw`E[<$[Oܙ ʍ;,{ >wS`Kn+(5i3~N_+5>p~֌5ArDa}4a&:cM:lظsB 8 z6w e{{>~B!bՈٍ5\xƪh} .`S V,d=P~<O1<-pgLn:` /ƾ<F>\<6*;0;ނcD%!)U~>"2jYup-c<i5X%8du"k@%[bxceZ8EC'й 0sȺt6<<qɪWZMӨM]0uy^Qv=`]]<1qq:'+H#콪q,K{ sR\#*iP9By?8PıY魳Hk4WDZki]hΐW}>KZqX% -WK`⢿C~KiIC~o5÷We-&)_ _Jտχ{<|⛆^Ԧ=BQCB^-FFjwvQϏT@.;X j2.#б~PH·$ھMx 8fjmAXj { "$zw%MZU Uy17B?ykpY͟8}Ԝ-",Y%ƝIa5?i?B{sOWy10q+==<ih89gy64z𼑿f9w5Vw6s=F8~{V䮕~h߾/~,j&,; So.󟢺J^(zh{uhoDw;0x {%QagNg^v X.(iv~Q5u `ʈlB'2C'.МTg/oQ5m#{ =rV`'BcaF9'=X4/^cih˛7cz?=V|yE pYAr]T+nC#;#/WPtE7"SlA]9:U^;mU\}Zz^.c羾|[;݇NѓXmXZPZ~?ף5t">t&9+ ]wGoEڷ4|q F~?|iaߍ3M0cJ0s/f- qo,&*VBJm;Ȋ0uLM*Z!!h#PR?)cp}#~ZeѠym ̙nͦ8妼I}_/\qƹaE[qy铰sP.|V 8p̱]?{YwEl~H`tnk‘wG{>:"6莲[>O@{e~jZچo7OѫN2Ov!Kyzwg-qꘓH}Ҵ{(͸Ǩߡ+/V oDG 6w}+r5 iYC5AJk]%JQ ԋ;nR+ N#UZzzqU?W߁kThhF'eTo1O✂4XdT @P3Uϭm"t)b&8p5ie_9Qs'l:|Z yic;]=44t(jۼ[0]j\L#i8w&[.Uχ Fpdؠ{Zꞯhr^/y,qCߨO1kD&&|cyO*X E|8 8=+EECH*:}1e^%АE*Dȕ&!+R_ d FʣW'>;ys|퀳o(#ʕ(2fR-ip~7-jEK!$ _r&Bs@ IDAT/e,heBtCC[w `1+ B=W~Zjyj=/q/Wȕ0C$`|#X?l?;邗,wocc-0n'Vc} hnqӗ/$K Ϳvm[ 'vt@}tDGMtfBgMl̻]OZxJ]vU?!̓=Ǩ%wv'm\$JoC0DO[`L/0sqphDs{1 qbJ쑍6 tm/pN-WSl彴o\^Gm SPG?[&;jqA9|I[`.$l;8g>6khBx,^ 68?̨]q7P6JzʼoPS-J_ 4ռ@k!TѢ }] 6%v^ pf8+ %ͼR&`Eo]VEK] 1'JA=tuh2 @J %*jGA]AI8$AVFCLg!ޝG1HcLCF1'7K$\ t%^mbir`?t4[ Eg.2R!B9ρ!A=$>YN!Dڮm|,Q?<75@:9^WzrR9C1^)z^scX-G)89-a]:yAηE1h#-n$ b6s}b9G͠}cZZ\M y7܃1M;ą#m:C zͣM\]`Ա?zǼ!B71Wb^DQ$CZ)dDEvE+&Sn4!/!T8(6kA(<@OC%[d}av_$}j.v&2sM6hAt=WLXk\5jU/h/w0;u;Ly>s3e&ɧLZ8*&~s|/H*j[M5B cϐܝĉG! hȬX~qP%;NTg \sAH-z/0$+mgs2DdOrmђK†?X3|m愰",syl8>!>]M3HYq *t`B&/C;m+ ~wȅaszw\e^&A^(ߔ6%.|(ypPrМ|3ytp#KFc+ s*a7( (|/Ý\8f퇕&n172.<7pk[l'Ղ6sP9y^zxݜ.ApqkR`uI>})'N/V9]F~u%BI]g?Deޓ%Kxg*4Al2=Ç/%/K )7sdӼ#Crhlmg-ƆjR ׶Ok2 a; Xn˴-QƅeL1H=|i@Ф8>ucM2sVC -OBb+ޯ|!OAVQXY* n^%W@3C˘*D nľ=@G-LZ-,tۯ`;L~~;+qP3~8y$䏱V1TP协L=Fb2_|K_@-Bá%y1aeh]b2E&*P~%rcXW+E/,#Xti᧑yٱj{Ӱw͋M/]ہ;`*xXzoB?F~_`TsnbW+oRp>T)SJՃk~M m&-EpBRaD~{b08O/Gއ+6)ۦnj*dJu'$dlq2yTKh4%o2 IZ6Tvgn(+3&O3Y_XKԇP?̘$ibG ;zf2iXV7sIqI;x{;م^r kZ_ZlT!Cd11P;0H?%9յݱC=ŸnӴ 5+Soϳ 7HgydSbZn}zRJq,;EM e:ny ¹em"0i!CP/[S݉}2 ԡ#PˊT|gʦ;vVle\(TL^),LF9 i'/Tj6Kt+[F .ev?5|w5?& ŵpY'u؆}Ȋ=GhD,&6hc}/k dj 45~oQW-5@kwn96MeȨNM ;DQݳrO<}V u`Nc**4~E YCyV҇<+ p6d aAslo9 */^ JS:-%aXo`q,K%X#ѩNДj N cMPz?m%XzX)&Dz!G }Rp4(o Kn:M0E)|J];^+8ͻX?Ugs?V-vstfaE1ܖZ,m@&CVM9C 9oSxUybm ֵ>GZ1*A5%!> 2Ρ#}X ׭> RLnPOd sXN TpW,SAO}~6gYzqz&01 u| fn%BŽ!] ѳDq[zXxL=f,!Ho>lUEԙK}nѳQ^aӤR;[L-`ޫ>(m˟gxJ#R/ NXG)C,αP![۵CZX_fz}Ӂ0ia' a= K౬ i .$FGnyVvF5* x!rnJ(8$\EznFe% @;$N"~FX', 5u|<4LWt\)޺PTRg ݰ^XAa;wZTjyV-k@h's2x yV?MS*Cr1YZ+.)=IGN]<fzI*z]}=`v`ѓd*&3Ǻ^Qs|a#h|) 䝍V] 7k0q^W!o ҢN -"κAV!ϭ];:l==S/`e^CY-TAi5dFU"o#7*¼vq2WGos= ~ ]Sm^ HkL[ >(/#p ]S+{׮wb< 2_⏦o ڦ`w]d ݭXi%itG?tt'I,&xG<v:}9润kLHWvKfikT;e研2a@ҨochkzYsPI8ڸ0elЗ?`RJڤxM 6mwb1Mf.G5TB~)KW W>ז%h&&b/ѷAֆHݍَD-NrnlaQ<[2tb"58BakYfep]܈Jvo@Gv"9RÎCJIdE^h߽ʈ=hm|NN5@~97Jꚾ^ v?Z`}j M."lK5+hԽ:`]d(+K2$9u?KW/_XL yVC1wcVK/M4rwxægI1ց?z]﫴W{zd%^Bmη4>\&ME`[aI] xCpviI-UmFENyInX6ֵϲv: XP^Dn)0gy+}k?hӤzn cP|)Pze~'uPt ݈݋3J`3Ჴn˚43ȋ5pZYQ۰c"vXy;v!;<ڀ~'(F઱JK}0fQyv`4wq@cw3ĦmX|b#]~oQTgZ _c$V511mi6J./抱.uc]@*j[vb`PѾ1k|6L-mS;( n`u)զ΋TkM|ukP[v_Td=Vp~ND t︍6*Fn ժ^Hz0j ~>GKxꀥ7MozXMX z$FFYd\@0 .Wu+ u[^V%톺=ѷ%)ڹ.09o:xش s32O".*2 &r"[{Ro׽@M]']GA-WD#+?]{uĞ#@Y?ܨȎ8LW+]-We($=VQl 1UBX:`Mozӛf zY=w"8}fDYMEꂧ$avGblR;[_b>`Kdtw?} xU!7t adž'|X!7žr-/{'%rbs2FZׅuқ7miH?d#H> ŗX|x]󆺀o*kKFOw͋e OA֖A QU|> hvZVӶ [։ u IQ$WAzIE~y+"18|7!o c/;Mm{8THzūB%Cm+pP]ǖOY-,tқ7AxGqއxH9$^cClz~.Myz=PpOכ̓?سhYgZkI*8̯}B{lmDc"]c?#3q3\60$)ji~Bq.{kpL1m{VH: IKxže7햄1:`逥7Moz{=X *O!(y10z~^/i >C]Hxګ |ۑ ci;lkᾤsCN$JXށأX )!weĹk׮ {ыe,$&0f=k=*P-dġ#gB->5K,Moz{:d wg% "-kLC;kOxP3pYXe-ߊ (Icw.jV/]'с{6mZ4"&{N]ׯeXsx!7ߒ>|s0āFK,Moz{/`0q~R@d޷z~$=bxMIx/zJ Oxt)bn&ۀ \>BeC%^CZyƝCnu)}6UUIu䬼wE*cd-tۄ4Q+`;Z̈́w Ū}3 0 X5iXzӛN48.A$EQq^Kx7/5ݘ$N/V%kyF`E>XĹ5[?NEփ(˿oXk걂kq\B;^uN=Rp,+CLDC#OKx?cHxjK via'c/aΌ",4/M|:0߱ Q2u\lޗ1#b\waN(Ʋ5RP:ы䘃J: (P0qzQQx' !}.vz8/a][,7Mok|~F[{sx(o ύH=0СOιspj+=1 FVײ.nDaell'X}g*`mslDl:~||0u)>4Yq&ޘn+bMf.!靹X'BS a@l*M(_LCϼEYpi`o=Ȏ;wu$7*`6$ӻ$xBjIWvNԅ3}}7wFkykT=X:`Mozӛke?ND8o\+ᱼQAVmFl6d'EHQqA-\a,c?S UBMolּñў|j鏑Ci7X#-<ܩR7毃Ŕ\,0+MZa?In/J[H<0 ">jCU |[(IPqQы8~L(1GabL0$FcIƘxʱ5fh~aaeMpYPFnEV&\Ezlp_%-YޅRiC* J <*x5ϰ21K,X sX{$aAim&]L9 {ѿ)3t2ihܰ'Q޴ h/;LF4\܂{cM)ˢa ,}(\4 ^?oYu݈i+7] xN]h^5[C=uYcjeH 99#196B$C'V JL!Kom* gܼ0e^L6u 9563Wb+e#X#0lUjE"EU'}pN.A"Dž0_X89'|mѮ> tB['j}1sN"sDrdDFV,1ƼYp^.oWqA;~Eѽj~һK xm$SbCvvX5@Wֆ?`#c !&`'2Oc8XB̩F<$0 #*:Cio3R`hjxb(*M)Djz=@ʋt݂p-h}m{OZ耥֐=7ik7a2^:8=+^_\乫HP+|<~A}"bLiv8)#ki!xszw6K3a>S'/byH6}Y.gRk998&i[,mz@QcrU Խ=2>DZ9rF} kq/E.Ѹrxh. { 6 f7y};箈h!s0|=bBЉ (SsuU`6>dwknT%ɜvuUy8upeK)k㛧ϰu+,zlxaQ QЏgzج 6VUZֆ nuIrx ރa|TvAN%Wuڌ ^T\;Bj69y4LU$#)"e;lk5HR?a-٫Ha (N3Ȉ8&W\B60Ď fkiXةW:ͭR0V7b}e޷O} 1ƗANM:~]!I{V(Pk۴[l%`FJqcXs~YVu=w)ܮ!KDrh+{p^YUub8|]@gk` ,HC\XK]!GW‹|=q'22j.l܎#. HqA8EiyԂEç\Ps.,G?1z1~a8<ªS;̘(uܗRꀥeVGkO6"ຸ~v]qEv!q츋 ݇Z["3 IQu%p>_[ɯBaR]ZEa׌api෼Gc:w NDmC~GZ)D{ND@Cltmx.ʜgh,WX Įd,-h+]]7)m"\VW++P[*0]/ɮbDixB1'qEDFb@*rg9P#O=eJѥqʔP\18!jWF!=̄e2:}s۠Lxɒ<+zZN@W)ƹL/h9OOB5GD?;oߗ9PY-}2zwG礝c1Ȥv.8FאUIoϥߟk `1@iq=[eZ?(K䰓W0fNXv1upYerA;p`Q5l&X@MGU3I/L'G s8{'Wt2b WLlX=Gp?PXy C|FCHX#]y=Lt5h;x_{?ᘬCz{_2ΩƹGqrN1pC#6^ oN=ڟ:yyux>'om|?eHKO]Ĉ"BVR"ƺPС^ms2QDEiԕ=G{P}9qQ*y&_I٪fN "rQ >j~\.30~?XhVE=l[/~ʳ"=B=Gۡ Y]/aA EX%93K0[]XE FZJ:`4V̿cTu,UIX"[:wh9Z{ 9Es󾖗.\-͐km(# 5X1-5qɷEHꢆ2n" mj׮U FHsM)b4'97$㱖>m) 3vlW0'+L3yJӇ[P'9SYcEl ]ItIGk-aR)Y0J6祍'(ŤQea>t Z*ѭ!hp%(e:Ԣx'wQ+V Df \};#;ZQFђf)@@aB9LA+ =4iT])%SF DZV.Aʩ,Ur۹iйSR/vL:*K7d.QP2*˵G, k5R8FX} 9$u9)9+yjN&P;ר9BAvSɕ2(|:MH d5R6g@wԭ]rO,<~e IDATTuiOhX}a:?KU_<]OLvԲu0ZQVŘ}:)xJS.G@P'/uR {FyiRb&% (1{r!.l';h hV`aI*u ZfN̂"wն3& B1}ZFIٛɹr-k?11xV վᕔT:aIF,1]U5v9Rח 5pᵴ. [pv,zSun|XN%5=L"d=F[x逥0 ,R.>D!`P0K#8)R4bԚX(<׉(.He^yWQPah{ENJ(+D*AA5o?5m8v5wcJ]TD$L2@ӋIJ8,nĬIN5)Gxض"6t|\fMXiM}U6ROU<(s[e \\r;`&`Sõ6qib*cT&`;Y,NR71C.yJ`1= _M 2^"Ktz]*@"@Oi,<@ `ѸܺPhxW\JAe)FH-E|ҫtѸaI O#9qS0[Q׉Fn~k~Y{V#XޝGa(FqTk/k,<ߦmEA`(F@~)6J ^s4 `KZDxWڣTHg*+Mj0;aaz19P.vy j qqcmGuwʦhL%O_.|?NϯEp,EoQS =ϊ֖$E=cJU}u] Jk8.V"u&. }nܾ/ǰ[@ }b, FcIM`9H@de҉ z-lµt\wx_ љ+PS9Ȝ*un]F `W&I`\*P!LҴ~ v٦Ep>ya~[ Kk Wli4>1qke' KTܹ£#0H;Ck6P Ke2Y +)Hh9p<ƕxX OR3J*\+r8,ºnY2> PqrUc(1Qy$>oрZ IM.E*^neKo`dy S8]ܺrx{赦*=}z * A\s|Q^aQsk;ry&8<=-\6 5 R\t1(zJOn!޷> ':.i5b9cl׳L#P:`5 tS*_}*33dwjv1Y)sx鏉TT'`eƉ᎑/my<>_) -$¿j|L -{EbkLJ%ȱlon\!3^5\!5misr֊ljs^6XI,r<-˹Go#!ISX;()l]u:sϝ3sL8TtFA@2 A%I$GA@D ADAuL3cվ߳njv?Vw]N6IP4yF!ǾUZ Vkn7B&^)>~+^Wm-vm~| iOq{Cp% :)}%X 0^jkG`R/,Y P,J!Z TR74Z{j4YWɤN׵כU@f+"DP cRz1+H`J kYCXJ$/W:H0#XFRd4J D)b1 ȹ e CDUx)R {[z+Ҕ7P3u(( Ijv=( aIMګCP&6aL,^vdIsV)iMn3=Eb5`JCHiC~VV:Z~@*\4к ^"H9T&Nw+X,д뢙yWIWjn?_6*mf}_s5>gl-՜KRܛfi-h=#s$!WD~5R:,"=g3d=e5V22 %u4G* _`A@xS}ݧ ;g^c8xKXJECbW&/Jc<=78|F cSWv(%+,WNo"kN)ug1[4¡(g~9,_9/g)m,zdBa 7V߷)C=W4}//i硳tJڟ'YhFq5.] =5R2FY<aF`Hc$ ᙉ:h|WUqfPpm!ghİ HCoh|}C`B\eg/{tR ,Fuh`d:5f;} 4t!aSgN  Y&4 FO 6H/'g# 4[OP>G\ @^n8?:=wpt՟,c( `okBVd?VAȼ]tEu n|ZǡY  >—hrӔLB 3VuEùnR>\]U@jF+LV)Mw=G@6Z?rRej-N*br纬 s.%"81H yY'ډ&&`=B)9CeƖ!{ƱPS)*}?4\6*qDC;y͖AFF}:wIRE}ܜu/*J ,umm!"y AJx GFek9F~7f!"U zFu )B|:vꂊalsAg>б3l!Tb`u K>?af32rd=(أPJr@R-t)@b$rP_O0ɕb#ӄƊ25!5rX?L_s+#Xhfi!jofk <( _6PCL&qm~a%amTx->q\:@D;Pvp@CfUQ.h;(X+#T ؗF[h^97e9S/=8-|8e)P"EԐr,= f-lX5:k8%1M#k~Bn'Bj [J _C0D/(ʢOwӞwםZ#J)>)Vl?~Or쾽D|*ϴ,N*=@H=c{SB_Fg#ar DYAe,Ћ7Ҭ栒]Z[_}e~jٟ?W-g7%d ,P&m>R:~d)9Sm. u_AY32\z ^/*N܌`H /{pM;;f˳K#-zџY8g1şdG53G{$1ūJwLfE=k=ҽVv k,E_eъΑjmgg)gɧY:)Y ςpсP)Yɰv̜#}E|C#ZAt.xK]h+}X΀QB&r2IR蓢';\*=iU2Ui4hd 10˄ aAr*УBv3];1O_V ҝoOȾ|;C<Ͼth[ҟ}M@eXw.nCKͺAccZl+qZV@cЌ #[$B*c L yjkUAۏ kV4#cш{zi1뗶HxCsSڀN-uk3D_׃n~{j\S{K>'L5;҇2W!bAUw1 !b]UU%CdKYiNi L.Ofr+43= jȯ ]]XYeY2k6 b!GN!!?KN1 mBbu8`%!%X$ޚ7S8/XixNT3Lޠo2G&BLe):& d,CiC^;2Lq/LWiG48WgmuoӉɩT]aԛ}<7to~Pj0δS\s냖jw]JhMC9P- a. L1VKS49z22/2_ D:3#@0,d>l$0\.\kfɎ#oU@7OtK;0yNߪ-uR&|KuEs7HJ0:2k#VFnJ C3^Dsf`bQG!Av?Rø4B8aٮ)" fHvąmzuNɅ :9 ,L3cPqCG HB"qcKR>x\z@ O],O(︅e]nUFkqpd#!,x!U5 7D>b=hB9z w\`[# dѹ"P#S]"\=- 6gVʷ%X-'Sg;LQ7XM̗ aF 9DARBвm% ;9UhL i2(C 9"ǐBē+6wWR%lMh'@ >] n;Ko6 H)fǸA,-r[DGf˷h:LIyB~'(/%@XH~hcyeZ-E@ވP狣E~)YCpSUxEE>o>qS&؇.Hz;8b"knNX@D} !/q]8Q\'L["clL20k2Q~X/6Z]LAWr?61]V-l|Dl9pOG ?re#'4Dz`떔 T}uRjD %d }K(ˀch(G8<(~  |uy.!a#.6" *s}O&4—sݏC1) S/ a5yÝAllʎ`kT=6vm_aC66TAT.%k_$fT2U~'Na@xϋ3IK>{[g`0uSdK@mc[ZVWIS"$&~<TP*u AuYx=x=uLs'nxrV4n_R3?c ;tʶj"*FS5>xŠ3!$( IDATcJs3iioV peLFR55o}^ `0c@:OC fw _Ok5KKe`UN7$=uSgµP͗ {2P6T.][lR]+sPb`fI`qϚD&Dfڥ"18(4shZE\O^R~!V߫q89x$}_-Oxev  p$F=ҀNST0$-4?a6k/, Kɐp B)|pv"4qOz~ASt؇=-T0m ̰ ig` Bf6í/`0uFT8kfujbuBz|8#gRթp87~f웩?SzOXgR`Iѭqr,D/t LRgyXեx4T}`o0B>uʗ1)d#:L cs5Z U]7w wjc!Ph%14\IEbC3:L/M\4CykegwOAდ4^k[uA`|~ RLc,&=wo~dX`&iWU4fĹȹr:2hΠ(@"h4qn$ F`ׁ@0/<3zTmء:" u'bN|^ST(iC b%#ٌ#̀>cTs?pc2 L[E4t7&;BYÖ7= hɡI$0ےGUy*~K/@H~e*5B(б3qǃ^rW*~)+lB^;F #X7c{JbN_L'^TǶd%CM\zT%QwmGTn*Ye("❐iDB$y:R0V|9\ q,þ8'DJQ_m@P]5J'kQ-f0dΎ\adR69[&sM#ZA$`S1sCYL+t E/O]:aK7?fVx܎ayRB[ v ~_zߕj"{9|[tDz`=R EY%DF5 KCX@cX&!-':~:]ɧ_hz59/ lfph: ;66u@'E(p oȔbEۇr"J@tQë`#LO6Y%2:vK?(~QP?cd'_Hh! (<7DYZ+_ItO8d$ AV M<0H#tY,,Z;%Da/uokfsY/G޾JȸQ2 fML%k4 D8+"NHiV>myz.HCpduG#Ia6Xy(@pDUZ R],ygzpdwvXQmElVᆀĠ1A8Dq@. &k@nc4b)H\f/ 4C·Io/=!6L #XF `0` `02 ( 7!,`q(Z|#X#XS1dF F `0222e0`` Fn(K'ju{qiUNod,[L 9GZ~WyҪ!aPZ5oעunōuVV$Klil&X>q_5v0Jtn(M^l.E/Ne`"E%2%!a{AKvdQ T5BVi[0JW!gwe#uڍp$+9Dϝ#hFzhƣeWOfW &9+It2Y#X؅Jdſg`zN2[鿑$bHhȄ܎(NׇkenMRzWQ if}rtY\U(]͒wK z¯IZ*]ϖ3Wśˡj!R鮙Eܾgy~@<*dyJ0e;&ݣ5ײoff1ktBEFax@8{>` XyZԫf~힕|e2۟ʈK9Gv Ѩ8p 2]fyNX*<.~:gM+۠l}X>" "_Hs=GdުmrS2| %n^YdIFtRL3 fO9ḼWZ63NlaL/Hsef4&ld`+#SFrӶ~ b7e[d̕#3/(æ.-TyAu3Y@- Uh2PK27TGOKb"~>y%JG%Ϯ|%Kc/}CN$}W6mv^v$9`\V"X<{u=Փ5Q{k޺GbΎrE`}`?ΎJ#XF`]EbBǸd r?{?ͤ2EAd|dRC b j]͖(K}q#I:s}˯(KE*8H\LKGg/_Y) K49p2{EF_/F%_} uש.dCYI\,#X"L+6RBPv2~:%D@؅5O"!_c_PLmԫ+4s%Jn7@O.IYs`|R*G / 7 KA12nm\ذ8yZ").#X'X~*kK3}VFZAI4UigΎ*6t-#XF~/Hd/$2[LD&xr{ףxs,qO>#~ ?ޔ\1/s}"W%> ~,ߴS>AX2jn\8gǔE*N68yNFx]VJ;9vw~ s_{M_ɡcg!eB <;)RkLG=[Jed~MRl{^"˘-r]jS?2|߇Oȝڏ]>}<r'o;Ʋ ʆ^(qgkc^^v`?"o{%sTq-!]%Df$F'n( msvJ^?DVd_[w|(sDfvο:dΫw׉m%#Cpu%}ۧsx$ 2ɡ,ͽ=G/K#剆}5bu!ᝇJEbTRPeݑ)=qwUBte?Ǯ+BswbuMY>{=vPHD$XvPf)]O"l6kDwܲzuwnl~AH {KDV>lK;.2]gry@p̬93qz5OLM7@΢ZJY8-4)?{VG^Vw3{ulۗVb##X"ȇ%zꍀ@FD?"уՙEf?*ѕ$z~D?;MR0$zxmJ"sHdAyw~D~9?S9R"CDW蕏ԙ{kia*Z&pgu*ѓ$ka;!lP(62\Wk3;YKmhRaf/;c+2 ?Ԭ$q*Nĭqd('D 8͚wr_a%چ=GӨ}ᓚz+>g+ysKM)%=Q_k7WxL "*=V"ȉb'7 kOpM.s|ʴY1%=N[חȐ`+z~#e/g %o.9[_J}~,|#i莡"r70%۝W,7]V[7nڲGm vd΃ 3%]m6U TR7s(,ՒWK ľw\Os?s93n872[GF8K- 7 s{97,NxMSu9%25u?Gf=9N؝7zrsIZR+'X XU;jZ^{h'ISu?pL-YC-eᚷƗ iH3kUv ,ھh*Ef EYta}M}f4>m6hO SlK]`}>)]B@&bVk$%0"DЄ]sDl~lz}+ װ GIۚqV5_h'ѣKԗuS4c}o&r >'=D_{Z"/QO{|#8zdor;1oE>WG!s}=7Uj%Efa3n5SWlu۷hV12M BA9QKKGk$с{;GK܀4ŗ6M87%`8[2T@iD(Eݕ O A9Ir~JZQO"о 2mzOX$2y,"f*Ekߖ'!SIKG6:V6_G !k|O %=Q>ȒyUSi ֛3G6{A?V<>Wo}//}_'|{=a:c_1rhB屧}H|e72 $kݔb%-raD6 5;NQA>ٹ|}n+vo?Ւ %sM@m]=CI_dO%#n|-Ȕ|" {} YDHv?wNJqML Z"tiTG Jo 2E`E;+EiiГ`HJJ Xq`W7GމAOdi !Dx;fDw -Nwǭ J b ҃:3Nau\9O[SzL@N#;1q2 eCi/{t#~kt.gergju1/ d Tc"Vn.SJz}`%p E>Y"38? Wr9?0HrȰkU ?eAǥs;!.-2Sq(> Ngoo_f)J$]w& {,/_J7`0u5m%lF8RT鼇SU"e*g>MUלsr %j8a's ʅs۹4ʓbhS~Vp=NN8ҟ*%vhƪVۗu2jbYچoZ3iIɳdJИ>izYfuσ "VsS/2lfކ@䪵#Ҹxm J *Pn7){H'>`jP Ϻ.r)yG80$NcL׆v=~g<$%p %8GpN^ݟ8뮟Ȏdw Hy,-͢$H[n~^laDU4sue~85}{8T?Hw8^M䨄.EƁ9 a Ԓp<B{;ₓb:IQorZ=-&{eRMѨN0B[%WeG>5Z |j[wܠ]݆V?:dL% B2m)0>aᤱڜ αG=$J)6'o'@/{ݕoDi|YrJN@}gC=F͓wdPvW  FLh_*, I4Zi6.sq'UEd2ղ 5X ,۱Gz5 ʼn'8]{?0D_Z.l)=IJ+mo_ J0cڳi#XF`>,r9Jcy*AJoKP*U_3A^>>zVW:dumLL3u/Cd*SǤcہ D~>w$)T2?F 9e-T c$Uh7d}!V|NP-cr #XF`%<&A~PdXք im #X[B #X7I*o+Ggs .ѬCA o֏M^\Sd3FCb=J[7o"j5#7e8ɹJu"uz2Pn/y~Wy{P)3\cH\|밨SRNp2KJݗpȇ/|W^ PW ־z-J#X#XŁ/cV۪c5$.7eu{!U*,>VT@%WF F~RE 4IDAT8VC₿e` M[:`6 22 `r>`` CeGJM|#5E22 k/KWn,՚ A|6J̍`` CF+~e0d _r`0EGf.''"L0![uKJH^#X#XzK-WRY!Kqզ6a0e0 Kg{Kc0dGfO#X`0 F `0`2 `0e0 ``0 ,`0 #X`0 F `0` `0` `02 `0e0 ``0 ,`0 #X`0 F` `02 `bIENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-azure/000077500000000000000000000000001465312036400261105ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-azure/basic-app-details.png000066400000000000000000001521121465312036400321020ustar00rootroot00000000000000PNG  IHDRJ sRGBgAMA a pHYsss"IDATx^\W +ʼnVH=s*sr+Km6~VLQmĭ *{"zby9y99{>{/b{|J!BHUR&H> !{ٲe18?W^ժ*B!>^|TloݺQB!$&$- DqP 7+hr!lFQRĨ~jP!BȳJEI=D,6qT QQQ!BHV@ iSM$%%k_!BHAĽ{R4*,ɶmʕ+WX1%49q3Dz{vwk*4z |y9ʦr?~Ȑ!?cٲeӓ#<Z~d]%ok{+.«TO&M߿?$$D[e8QgbA8u*"`*:|$*O F#E;hM>,ͧ4!ȍ+s|VueS P( dh\pVZ~XPwРA` |ÇxZf >,ZD۶mыdSCFX3$r+g̛Y$%C!6B5Je3RYdӧׯ+y l '|Z6M#ʸ˓DhdI|\dCd.j/Y#l0J"` \s]/^Ig@0IB^zp4¬Q*Q\L15 \gd ~(Nm4M`,9dgPR 72ZcǎKz}Bys";{;n8-{'jޛ1re(8-uhiIv7KN| wz߼Ɂ] Z(/wZke,vݑ8ȁ2 y%GLZ1(@j]|JShYIH) P,.#E"AU0Q5ejt.///hI;73gNDŽ 0`@bb"*UZlYѢE,YҳgOR3 Mboo_N˗/Ko&6ft9 5j((V çz7-5A,ĉfjOmŠ+0Kh,ڥK =bЦZDV;ER FeX"l1J " R" 4шmx%;Z46k#FUL}VEpe+/'> Vq KzԖp<Ə< О5:u렕/Ew]J@HJ>[}Pey'Dؼz)n Y #QF\]oV./~Y9Ң\vڮQlj!a:@4t셡awwͦ[-y c9tLo"aGC|-)BE|׬0u,:  ~0@iA@Qwm68H]zL/Z.f'qC2-w CWr }c-DգRIs(Q"&&_~QٲuuǎznZH$d5k`CE8~x6g͚>eʔ!C`j@3gTV iR$ ¤.F(B˘dggg g&ERfԨQ ]&'<<<_|D qqqh iBQ#MW-Je&W~1@)%/;]B"Eݒvك 70 XJ8Ȼ)qR`ck˸./gXlIHHz1pޜ|!ANXSF(_FM+,nVΰP0 壪F9 ޯ@:XJEy{)щ0LKC>M7ˆЦR`kۻzRTz%ORR}ħqXFw\syj=7uw(Q'!0kJm*:uON"-_FFaV'z%S#Gp[aX`X3f +W.b77O> x֭[Wr5''v!ZM6 F?Ul7/!HP y.\i|ٳGpѣGC!@wlmKX\2Fɒ%P$8 9R"`u&#/j#Wo(+J<%urN8QF I> &G6>!X%eHk*ikg?U |w@>lؓ$9OPmԱR67l\r"FjYgܹr5W@ k{]aknd_}ȴ?ׇ)G$Bă^n Wa;nm =QS'S7̞yȮh#ݷFWEhLBܪEM |iV./}g#e0>P2SyZ{/.Qwͭd\aJRtdll< ܿ:=K`nKBÐ1pTĪҬ:9J9ʛdh"5d3_~Mʕ+JExy'$$(Oo3P?{,+,%K smD ! #-TP9~GLFC-ޥKtZnݟ~IJRJFÇ1Ū:u0Tf̘'Owww9rC6U6 drWΝ;RB9DCWGs̨X+&7uA̦y1~ysl???|Ė-0pKoܽhx@~ܺW` ?,PH%:#vN9W(͛%+脬F$<_jV^{+GWHҪ2'Cju R`!ZTnvW}+Q=x;bCUQN}FjzQn_& <rKgct. HիǎCB/^Xti$#F]tիߺu޼j*t>@)Zh!q̙3 ODDˑ@'OTV:Z~ӧt`` hPnW>+V,XE ͤM3CtY&ځXJ*ռy *HvȐ!XW\Y*TӵkWqΞ=/_>(A7"f͚A^~aGݻw"T $ّP U5M BĉhA̡ءH6o\zuɪ`2G.テQ4 (`a`1!k[}ó`S7bOǘ6\Kz{a *{ET G2n8h)(%ѣGgG? 䣏>*o!d @t@ݒW" seߡv)h%P? CAC޳i^.re[A yzh[$1za@}Pg)NF-qС"Ebuh17|ܥرc|~Q 7nسeS*UI&~.@Д/_^{KǎkԨ7Svm̔=YN>}H+Rl{vrέZjM6=u4b888nzƍrB^znܡEbI'4%K# traQ?*W^)SR`Brr֭[ .\@ٲe7mڤW;&m۶կ_iďf/f͚(:u`TϞ=;fCz~w_q9j_r%@9r[`_f ,C}ӣG+Bsc"JՖ-[p@qp:aI$ I!TRK)!=54 Ú&O<ݻw~Ue [K._kի?,kO?ir[ V||R\raCRP GTRժUu7Ν@Qn_~~…H'>}`4h$U! 2 5$v?$6! MӹsBȫ$4ݺuСTRRE 4J! 7,, 3VP!dco &i0oO>_~ժU9p6.^PLٳ?!0k׮}W'/TarDH￈l6N>mz !UdZФm&`WsiUV/ǜ9sbG]6vhdMŢ(QQFǎ+[,6u4. Mxx8AS 7oz q=LĨd M6arF!i$AJr(~ )Px#m-z-uaϘ'O@<XB!Dg;4 Ѩd@ɒ%ݻwknݺuPU2o߾-[Rltq+WN1Ym;(({|ikkC?~<&&W_}_oo9:: /OUZhkI4n ۪X$$$`GGj<~´xmC!5l=y/Ydڴiٲesrr*Zu ;0J!mϟ̘1СC/ VZHݻS^`'7{PP<=:ZjfRJA80]^u`-P'|r…k׮aP{p#rʥ!>r5*!`[ٳ!;Νk_Z/xw?B:(e 66G$M)i_yҥKcGƉvُ{ꅽYK߾}y>+@!ڵWo$R ٦PeGŊf ,8p2e[;i"ˍ2vXȯͪ*h< 1c2)Zf͚Щe˖ 6TD]Ǎ7* =:R4( D$Zx7x[nH4~ߞBHVC*&Fȑ#G9/O?]l7lPnBd;w()`? ; JݻW4HZj!*&&$$`cV!!!eR-ؕQ3 bZv>ۡA5kMGpmL/iܸ;'ā}M_^RT)TYjՈ#6mC# GLi12 t-ZjJ}C.Bȑ#0;,hĉիWW0̉H !KeM5MDD˯lۂ1c+#P7氰0|B:Ȗy3gJAk]6Z?+&xxx@_S_P9Oٲe_uq.VSƂի۶mS}Z1@0X4Mۼ|rN0=zȣݻC@65mtܸqu[nhZʕ+L 1S$ TiRdI׺ukt*v-an6%!ĉxbyP 5eIycGMC!zT"k#o~~~" %   +W¾j*|G?$z\hQ 6{O-2EbvJ!22w߅]~I~uh-Z@˗;3ҡ^zHc3H]wеb0g1mݻlGqƌ 3sE) af_\I+VH:pd!)y  (=/`?'ݹsg5l ME39ְ,&3,Sbԡ'BLB3RnݺwM7nȑ#! 47nѣGա_PYfioB!Za)R|pŒ]5? B!V'm۶}EDD(K.;/hܸb"BAMOO(Y={+,xI֨6%%ERB!/.|D!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=@MC!=4ͽ+H~~kk))Jiz _WS`ܸqiѢŝ;ws>{E}MHH"gvz;@]ooo%,\P)~V)R b6;9Bȳ ߧ)ΏuW AbtRؙJ`uԙ1cb5 4˗?z("ٳgO>}ڵR P۷;>2̙3ɣ_4 I!L͛ױcGE 'M#|i>xzIH!!!hZ!**ʕפ:i&|"/n1-[~Q4k L|[nԩ v1PB:*Pf#C _29+w)_jA%AiJ*~/O?J,YreatqI]D-Vn)رc s"y{{%AA^<۶mCi HTXQQ**!:ܠ!` 5kČ*UAQ֭ zVz۷l6m:Hf#A0L/Zf-@V !oذsϞ=n>EhI(XM4A AF!$Tާђ{o7^ {{B[Uzs?R]kzuS\;ș'sQKѨhlo_mZqG]P 2 vW*tSdI% >{Bnx1BV$ IJzPQ*s@"y={i Dm!9A :T4UN> n+ `tL1 fW ԛי3g=zTB. "ĔiTwe͞#۵aA;8K_Kf-#a@{xȑ[yNx+"a]q} 6l]ǝ;wI"_=X%H䙋<%AGYf!ٳň=6=z`*LYh#Aȝ-/^|rc-# eCFtڑ̃HN%3! B/?};X@J A˗O Ҽ <%6:~azrӒfSϋk '2$WWi|7nħ1ʕTaÆ:uHYL.'K l# ('5qGڵ̙3ɣ>X֭;s W~H273OeN?j)4ٯO7tУG>&jF&5 fv%KR1e\8\^۷gųtm6ɢӐ\=eܸqcIg\;^4MH{"䉒IM)Shݻ;47 w;[6lKooo~qrrZᦊw)V!M͞=Q+ZJ-Z J%b6Ю]Yfխ[WbFҚTZt.h"&&F,W\'mOhӲ1 qqqh FKl,L.]Ɓ ߨAtz=X,⃬:E-Eu9[n dxՀՉUkԴvL,s"@ɒp05=FhGm_7`]X:kU6eҐmҤ %5h_۲Z#B;X=vV jwh1",rrAZS6P<dU6:U! ںhP4TZ8oVCf?bLfN2bKϸӥK.Xi3&4$ N+ʖ,` 0H`=AK 6V3;vD]+,{UsݺupFP䐠)S\)p5ǧ0H 0q#T$gMCLcЂz-CYV iF:cVdI,_d1>a}+WlC\Pj'B }(B J Mj5 XQQ@PFe'FO4Uxqի,hJJZbԦթ3E]h#*KNbؿU4-PRY1Xtt4P&ɠKWu /Mȩdcdt}D8.+7XA} w_q P 2D S45qD9^ G]*fZ҉y6{Fh1\]Z\զ=;TNٵkFn!+][X jk&o޼وfW_|+Pi rMnr#Df9e|T6#p(q@ehfʅ%db:㪫A4!V} qWIsӒ渴ǐz\Y k,1OD8$G'\ U!"Ck-QZLĂ ޙT E 6okrݳgb=X9*F#XRЅ)'rDrPU*K,QO  ='P7NM6T |f+\-A%ͤ 2 SS8ߓ^d֮Ii:V#pJCҹһ+UPcxvktPWZО\fOF,:? ~,׹s+T``?N00 T7nگك% H|0V:>v؍1XHTJN0`=&f@1{dg@ p|bŞ&3 䖻g؁iXX XS;yl->S>h DHmҪsppŒYG;K.ńșnvf 7Yq $rZ=y>`6o, Aqidb'rpu65>W>XQjztB0̂/Bϟ-_81F$^,ai\2K ’`z,-I5 >8$^UGֶ_~uY]\\ *#NW|`7\Hu@0dI}k,ի+@ځPG# ]:ƀZS~~˖-`:u:$&&*VÿaJǏ@7okI"k:;jɉ Ю *":B7oӃSQn0$n-@$=C)0sXnd(wqĉhP*h !}ƎlZBq}r.9mO?O%&ib7`bzUm ӳC)0J ffFe4yêڃqРAӦM3ZZNɅŀ4:̢m #Jfeta09rħdΌ*؎;VbBhi+ӪU+)T_a{dઘ)e`Ljdf2X^m_7Kkn}Q%-MK-kѶetsJ Ȣ'‚ n\HN:ioّg f^ޖW1{H:ieL~[Ȑ3ɲd:t& /,/zZxiw y`|S@:[׵s@^hL~ WL^14d \F<%iJ=y_h aqܑ0<'θnW>tm!By}B!jB!>{"B^<˧m;v5ѣGaE^*2|Ꮧk1 (sta:ELf埝@T_:Qipi5BA edL̏@[ÿր;|z4B1=WC&B 38Y +뉭dliN31}cԳ%+A|>۶m+/!OJҵkW:_FPN~A0w^k + Ťkp^[̙3=2/L46QQa^t#Tcܹ5r}Yk4"il ӵa\m}||FK=C``e8fWi T`2ֻւl`_3MZaS0$"qZPҩ61xU"F1ϟ?_y s*maHZ f׳`頫AO.-LS ֭}% P ሯZ 1ҙ3gazEwa4zj;vjժV5&_.w|G972Sm۶T޵zeƥTh6%jc^GC~iU8e«[>. H wK  7_߼Pe 8O^v"Ұr7}E h\{J,vc(:~?#~PJbrbD ^;4/ݚh,#\2p]U@Lq҆s[,۷y0\D3bݻBq h֫W/$MKWml! "rK'/'+`Q,&cǎH`,)B;Hf@@tj/^h+T  FK*´ޅ>qH?fG+ݦM5H/9u*]W[NJ6LטٹTŌ!(WT鬦a7KYtU<| TebZ,QE1p +si8j8XQQQ͂]=b\kLO+H9bccFży(PҪV/ce#L{5{ #N#Ij+]W7W4Fܨ) 0I&OҤeϥԡ-zʸ*/͘s|ۨ,AXx5JE$>; ܰwŮR-^H4p]^MG&>Mz ~\%Ʀo W䆐Zjh!-"jLbN4*C˦kX'`S7uM1=JF_}*a,']zqr ن0ݓ?>'Nht 0ۣ&Wj]< "F#W`n&3^NR`6>GH?VfטٹThЬ`}=[:*8%'KcH|+WɤErbQḿ[8HCmhC26#E \@09"|ZYl$C Uԛ+֯"LĖ/OYgD1"y X-`Tbb"'mtiRl@oNs(hQ~)nVP0rAHpQ:U OF<ѣKjSp2WJ:B={ĈSNE̺W1BH;Q/ plK5Kz|ҏ| (\pb`Ac!dIs'._yO:%K.U!C|#e#_ҼJ!4hE8w|>6iSvvvQQQ@YIgqiҷF~y$?A[V4W" rP⨔ʟOy5_Q DYغ:_t?XrZr3K\T<@u1+V&Kr,"[f7H<6Qy qJJ2ZHcɚb R''fOHq7z%iph7갡⪍.Z|nU1P_AӧOgtYZς\U<ŴX'-k@ ׬O-^XF4,O}!=#]v!j TU#%S}mxw4%Q)0+d:MAVBm ]TXQ.@ 98GZlt>bw҉+vo@ȭhK<&785mB9喒7GC x?^6}|Q9Ukkk} ۷&dmkU4W+/b͈> ԪU  Y{:02|8B۠ѩ(>ዌ4]WzOLj.& `DUݼyse=`# 74bӦMիWU`E)0lSK&_=^0B7;Ѐy̎qG(¾gis/;ʶsn~T t7 ?ْ;l]D^ѻHo$>ߙvX_~Q^2Fンʙb!gd jXKc.Nv@ O>3f%srfٳg͛'%!ek? 2dR3n877ݻKR󀧧ȑ#yσr¿M!=t=B!<i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!2ikkɩ]v;wLIIQݻ?P%,\P%KO8}7FwYoootB!$4m۶ݸq+ kzGFGG+qM(e˖)G)[ o>i$ܼy~J9>;w(y!e_B!iIMSPz5mt„ wV ANGTTj%%%)GZjÆ ۵kh"ӧC9)^~1GV\9tٳ+&B!dU}9sȑCƍʙ5k… ߿Mo2eʔi,Yf͚NNN;v<%[n >dɒ9rǎhرcݺuSZ@6-ZTv!ƍݻw6|իSRRܹӢE J*gΜA;h ͞=[B!X?TB:uIJe˖p.]}~ppa~iӦ%'''nŷ~{ĉ|DDD@Y|ʕ+w֣DEE1eJ!M&5ͬY @3Ck׆ɝ;wddE:uGyxx|￵O߾}[n]D g۷ɓ=4M׮] d˖ =wl+vvvhA/(S |z Mvm nj>c%O!c#|ȑk׮A"#o޼Hܹs͛P$2mB"""bbb _~ U^|999ԩSJrwwW2 zG#Pr5k@xկ_e˖C>>>QQQŊСB!ϗzG;O2}СC ,ػwo h%KP ;vl޼9Ll`gϞ=x`H?[n5?~|Æ w]~}-uw}x:tAA֭[ M'gΜgΜTRʕ;vRF!mJF '¼yf͚hѢ%J(&B!iݧ1˦MWj… +VB!j'OiӦ`C ɝ;b%Byló'B!'3OC!򔠦!B!B!B!B!B!B!B!B!B!B!B!B!Bxٳ;ws玒<`P2ip¾}&$$(LŰap,|x )s能{ 28qd.|d(O/hEX9Q,:^i|CQ{9Ɍ ObtdFP2@ڵ̙3#E@!Y.Q\.f^y† ԩOl j'ydX@ 8pҥXˋ;.!RJ))B6OSR%wwwIiFC'Mo髷vޢT]vfͪ[>Y-~CBpϞ=MvpܹI$~c@#(an%-Ξ=Q;3QkmDEi PZbW5ٍ:ju-j+&FЋD"c4=̀įP\4Q$4kXLǥ h-yFgxb0. C}QdԔi*j:FX`6۷o5u5-QmᛝtOΦ hGOuan2!j|TҢ*֘>ѣ TOr#&-HfAA@PCoiZL4:|fG!ȑ#fW0fGS2UTj23Q{QRcCU j(4kZ*F 2..N**K iQBmmʈĮFh >K5 Ltt? 1"%%eҥGV' ځ<ѵkWr̙W^yeժU}0z^Rm޼ye)JY?TaWWWba13q9vX@Zg4;hРӧKwV܌3,#-F5+:IdƜkԝ:3 DwTM6Iu*C"""}^hQefv 9c:v=꒳6PE),GvbMA8XlHԫWQ"BӓȴGKGS]㮶Av-[ڵ̡:'hnA=z|ZΧi {8CmfBEHWC#LS=:$vS0j;a㑙>d} VQQCZjNtTTzO]j`=<<0! W t*7k uAF "lҗ.]BZh-<ӧOi h_r 7MfૌN.dȢ;t%$fСDPҨ޴iS'QZ٣.Kk[F_=C@ՙoӦ jau-b~d4AjΧYgx䘚JJ͂#`Oʜ ţ^.!*++aaaCоҔhI3`D=VK()+guhjO̪hI3`K.0Eg\:OIӣ 5yHg+4lXjbҀ1I.C< >_2iE̾t|;Qў0`J0g.QW^߭vR\UX(PPN6 KE;BzhU{W1ŗL#kϞ=f=/]zU8_IAjbuaCRS"E}#FK\r"%-wݵm4+ٓȨG?@ًۗ5%kԅ|ɈmR 7_U0lA^TҜsxΖV% *hI3`Ɖ|e W:GSR{4% A]5ydy"#?VGnh*rP;)´+V !`}ϝ k HjPmZfL߃qŊRE8nfg6jwfDi)eFէc 00 katF%Se^LM6zo[s+-Hcc@rLb>(g  O4I"Xի/ZF.4Zr"qaAbY|FFtwiY 04>7o~I8|F%&A*lŊdqFh-otS"}Mum03`2FqaY4(-|7Cc2 3c^-`}[|T$#r ō3\ɿdUzi&+h8Syn%961!`b7nѯ//,=4eƌuĆ իGAC ";o޼"Y<-9@ 4K4$wAHHȐ?_ax{{޽ kl F>i~7tB!zi!i!i!Ycȝ5$B!4B4B4S"b(S*wٔR5 aÆ%$$H `6eC{ߠڋ~QQm s4m?nڣ#B!ِaM<..Ng:u[VPرc;v4hR % ,(=*&Z meK.qÆ /ڇ e˖(5>/M B 4yݻݲ]hx֫WOƩ[(  ݻwWC+TТE %AC[j iGmJ56x`x6m \L{tK%Bȓ%3Ϟ>uULVZ*dC*U$@޺)#Os2MDDQЭ[`t+e_Ȕh+y=/_pKS9B!BkÄByzdXӴo>$$D(tyq(B,]_~h{Kʕ KZZldpOC Q>{,J ßECNKY[^}i8y])ys>}ZxNzjW d,ZKnm۵ fB!O kظΝ(QXbSbbϷSLz󫯆ը^oʕ+_~,͚{.X~F ԪYcE7;?޳Gհ{ׯk/Z099]ɍ7#H?))ieol,00H8l;“忼q!JYݽŏa\%$C`%kOLF:ũYBH'Ú}x'N+VJǏ曫נGΝ  >G/ s__M\3%%e…-w-[v׮]}}'3~yɍ6Q35i٣ۉ*&lڴYJƳB(ٓy^ 9xhӦx;;;BH'Ú&Ǘ-[?Ot֭t2iݪuؤIqq/W\zrHŊ-ڬYsF^^lmm%Z]usssSNժʙ3cly Uw{+W $ΜQތAw^IO<|ҥcbbnܸOdolРTTZiwum'a6'My05o^|`4pA _ P18(*UHSQw|8r(iM3H+Vnݶe| UΟ7OzjF Jᣘ4'O׾ UV{x@k׬>qm`!!!^̯^)))z+WnǼp(]̌_gJ} ^mrܹM6޾}{5'[s` ־/z?nn*RDi֬Ŧ9:AQݺqϹUH@ԩ[WMYl9Η… â[8ŊI{P"JpTZcvvvyվێ^-T+"QtiS-LmIrAO{ G!B5TLYUЀ kǀݺviN7B ..._:wz?~r:oհ>~~Μ9ϟ?עy}:ϟѹs~OMNԴ@r޽޻5oذ^{5K*M }ֶK.iW~tiup +b I;{"OhӦmᮌ~ UQz:ke7K2C2y2N=X]*Ez-GGG)gtd)BY̝;,+hRIyXzU=Xg%._4bW ˆ"}?^I8`@`+鄄h+HСCbDBjjFnF]>HXjPu! xmwfp,!D9ry%J@ZZ%)iYK|O7h&PbS'wxc"En d7~ JSc×U?H Xf]vkۮX@v6[,BH4vWD޽qzdd$AAA}R |͛ٳf5jؠV>KJJZl[-[j\xo -N.;M<Qnݺڢ758D#i9sh1q 4([lF쌀{ӏ?~G^t/@T͚9wwE CJFJ?~ᅦ?{%C[Or?H X`ݞKYHʕY2RT2Y.WByؚ&n"3g.\PN"E\vo6jc箆 ֭[7oںu[t2_pE ]?F@EQs@'(}+W^~_&gM6ٶuY3OvЛ0*5SRpЅ ͚6˕+bzg;Æ-^8_h_߸qCfVZ?˴iLz9>uF&<{t;1WdM64kBxV%cc={v)b:?6rl홐 TV.i)C6m$K!ό4~O,YIF]tWC4;v4O<͛ț7o5CB%Mw^\\KVZ%%%޽:B!3gkRtڵkg˖-66vÆ |a-P7cg5n\7,u=qܔ66!!!@H˭ y HnF*T #G.]֪U;mʔN:óhѢm۵ <Hq,ZųJ& yMd>p|k /?~&!ڵknժ~۹G  -]4␊#d͒3'R] vlrRp?jt17W g @}œ~E{EF %JBI5.6N{ǔlٕ#={vIh唷?U|§RYi[bŊ A>ߺu+dZg+N0^}(FIO2%_| ޹s#$'^珰h'bG͛ljGU[/j]xBǹs–8RiAn,i`TÈSĨ]?8UgBSeVd(, @jtWUl%ܫUmGJ*>xժW2eJ9 *tႴJk~WɊw#sQliŊ_Cǿö+V)] t<$R(J|RLr7;59sDAIFQ.x4-P+Eڻ8/9e_8UIϟghI?O6kcA'7n3"<C{֮S |^| #,v7oEXM@}s);"=jԘ`テ7 Uu׭w<<5JvPP._rŊҐAL) kйS6`ܸqo۷o޼qƤwW\lkk O͛^˖>|nH꫸(P`5?8~Bׂu]p];Qw?ܽ{zVܽ{ѧOVx(RH/~?a<~8.Q*UE 2b[~]M peok׭?G5їR)5kIӂ%ccu)bX NT =ڹsG2e=<<.]?%:@i#Ыwoi[Л©Sꫯ`Njժih;RTo ;pUC 3VA)h]ʩS.#KNQNq*$]`ժV zNj[7!i|**h4 ZZ5Fsǎ͚-22"{ٳgۧwzu?xv6mjo2jh"؟Rt~uj+k@S=z{Fl'Oȑe˷tݸqM7]`ܹfYAJ y1أ{իW)'˗F vqqqbAYQ$}?^IotBBRt!-^H>MT߼iմꆦ 0edSVG-&iF:jZڝH/ZOKhAZZhS4`@ hGMy69ry%J@ZZ%)4I^o|ߡ?0e$WW|Q8111k*'P'O^^VXatuWTiշss7n 7NJ.}5yrTWC$whW\!>B-ZS+x7W^D!0GEW._0hVAt!Ty%yΜߴogB;v?4{{f[@LiҘqAO H2e!>t^ǠAۡ{"B!B!B!B!$ N@oNptRqF{k-k ˆrb[q[qvڽbV؄o8R-.-~/<*u,)nǥJ"w.{b9ܺ;'6S3}_x&sAo vކϠ:n6`̈́{w,KwkqEh㢫7.`hBtb7f~Q9r=qMu^s3³kN.yzR܁_== cΟkYٗt. w9i>$(M?$(< _ݫNo_ hjJgթ_G4.p*nDBn$uFdzw< !yAMCEݺ[1{JQ bJm ˓.$<ٻH [!.遭 g!Ӽ#fi >^:y9G%&C܎60Wu OR{/Ǘ/ _w9"D\s@ )V-!jB,5s'>94';9~鰻EƟ ONIǡ:3/pnpr*4G¾gܺ{=l!J$7cZ{˛c! .ƷX=Ͼ!^E wiH99 l sU~.lx OrޙΔօ[#⪡[Wr~QF5RfysJuYX\OQܾ~IC! ^o\!!DPb2wNW^;G*i}E OPD!rdɕT=_ކBʓ#۾+wV8wc:; 8![>{ӲPKۃBcZMR{.߉O.뚫B7$xSBK5 !V_+(\m G ;4Z X*O M]=?>ߘ4}ZRߌ<~:t{E*L:_ ]K̓3{*9َ}`^):sŕe}Pn<ً9@G]s>&B}B!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!jB!h[n97nT 2Hhh觟~yf%o}{QQQb9~xrd̚5QFׯ_ƍkѢŝ;we>C''{*L>fo믿RRRΞ=pBBy Ȱׯ߆ ƌ}vwޅ͛(˖-7Ǝ1bĉ>zhR#O\Cʄ=x@1B!/45ϝ;7lذgϞQQQKJJ7@ -[,tIVZ*r " ƍrc&<<^^^vvvLe˖_?޽{whhR^tJ(Pʕ+={vD!LdX@7888Z*&&F1xzz;v[n؀?#WWW''޽{ߺu F1rHyԢ}D7|EP'Ǐ%JTTСCH߾}ȑ#;wvqq9q,7iÇ40f̘Rzbg5('ܹsEGh@lhy (BŽ;0F= ;5kb84Q3g(V/YUZǎϟ?/0i:77qAΚ5KG,NJNNƧt1b?h"|Ι3=ZHKN>+DÇCCC1"EԨQc֭XMX|9J_H͜9: Ä5j,P]o޼p%?s]iLZ||||? 3xxA;P6Թs#*4(ZS{!BtI5 Dvmoʕ)[l9rxw~ 4mڴE׮]>6ia/wuuEE |WeʔAE///@_}ՠC+WXbUTt΀6ׯGT*T]￿yHPpa4f7n FBBBqhΝ4DluEA)pA׈cՇh_|4h$]pp؁#BU8@ 3hD#TH}nO>P+Θ4Lƈ1Qٳ'4` ԅ㏕5j(#0;ēdQKaaa/:D UVpw]f P˖-9$#$ FB!#F(]t͚5ϝ;ggCj+>>~̙vӧR`WWWlgϞ5ݿU䕚ף;yuxت7lQBXOٲe,^EB$44شi{キsN /11BD0e)"T:utsΛ7OѢEo޼$Z<ˆ~' ^0zH,X0rnݺ]VZ{Ŋ4~HB!!Ú>|͛w1{l 4prrɓ/^>f C" }ĉ/\bR-Yf bҥ8 +V6m@ !$#$L&{B!r)f49s󃰑;vvB Xk׮u1bbz ҥK˗/!ͭ[~X%ej*B!2i5je_JNN^rEvmT~=zƋ/z-?}U pիOIJJZpA ޽{О[Or?H 򜈌8pֶL2?JBqIOYMɤ)QD^+8(H1H?~_gڴysRgϞ#EG>|g:֮]sQ nݺuܿc5:XF=b"D(y@| (iBy ζJwWQv#7Z\s7lذPBn5kՌKNN/^U (vV˔ZZbn ޽{W6mJ,U3*By@}! V+G5Mٻw~-[6+&V<,^ﯜpeo-{.|._ܧw ӻ')ҶЅڝuш8HXefa"$3m"fd)G5 (Tp>};_Dڿw:u׼1M\\\\]O>ogg%ھc+n~SN)&@Liӱ?ׂp3>pРgVgu7DfnѲ4CB|Pj˗O=rs R jŊ:L *#(TD%Cw() YJЀ4V[*وܹsݹsbLy֬Ysǎ|}ϟWɪ8s@hvR`Ν;ʖ)4>{֭[d_}UGG7n, @)NԆL@)BH YN>vfӦHwFKH)RB 4DU/GH*]{H}PK _~1 x\M={N:.Zj{yy}GSL(UJiFzYr lެJȋ{ w%e+...ƚwtpvBk޼ K( ؇6ed8F%{}v' 8P:-S={G #f%!dJG>=&%E5YPЀ k\a}}kXb~˖*k1.m'|?^z_L׭[irn&Mi?}Nԝ>}F/\4阘IjXA"gmkoCЬ\B'mb;Sqc۷`u bR _E7"k^L4qBpw^$"##L,F/JO>7n܀J2eMٜ:u*66H"`ڵ 1!Z¨-7KBYU7n TȨuk"TXtsgu'_}YS¥ΠYPjB$ 4`@(:kr#FP_[iTךЛ(ŏR .=)Gd1 g$I~V:s.Prc*];7iܨ=jnBtdM4&LZ4x%:eJ:u^E5rU.^3v8(!D!.V}B)R_'򤠦!s?Q#G37!gOX8%gOB!ػ{"B!B!B!B!B!B!B!B!B!B!B!B!B!BMIIQG9:hפcJBHw?mK+g5 !`e !'跳JgOX$>"B2.&75 !B4A.X<>>^gQ2ByɰILLJ7Sz~> T͕WVZ3ND|ƆGB!%i:uuve'KFIF/XXH%q}=|YJ!B^J2ir˗D:{HSTo=zժY'~SgR֭[}}Шa~Qŋ[R4UzA[Or?H B!$&n"ə3 .Sn"E]7 5ܱsWÆ ~c^]{o9|X(ѣG,_rΜO>5}ڴ$)=zȈ#}ݪUQŚ4_! sHs%c>>&&*/h1jJ5p{%o&6Ѿ<ŏi]By9ɤYxqƍvR^Ε+ױcGӼyy֨Y3:::$9rҥ[:uj֬ŋA.AѢEK)Ç mW^TRQHq,Zų}J!}|IM7@|74w;vZr\K( [[lٍ|rPd]\\Iig. \Nyk}>S+|*<JN1EDFF Y;<<\;ŊGZPiX`?s挏Ϸs9v!=TZ5_|H@6ٴ !2zh+F || ʕK׮9s999ٽ{jշm߁SJ… kBB# -%J$$#`pww^doܸ2iSM0pР >e===}}Q7OdJC!izjF Jᣘ4ٹs7lؼ*ݸqo۷o޼qƤw{z^vmU0]f=J͇xx*]_ paѢ5vuJ:4իWuϟP-e˔@ٹs:B_ҙ-Ϛ=|Qe >SV44 ZZ5EFsǎ͚-22"{*T[˗nׯ@G n|qz{}DH:>6."4E DDD@⸗psOƍ=^{?}hJ~B"k>s"e xv2**a?VLdm&z-z1!11qҤUߡ:2%!>⥋:uҦPwܸwR D 4A,PK V9 e6l8x?3%iis 4x+Wԫ__)#"񫯆UXQ^`"O+Vh[B_V\BۄB M^oYg5 !B=B!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!DPB!Dئ(IBHZ Yv"W"!/gN@!yAMCHIr}hRrJ΍K;ʟ mAGnۅ#΄B=4͚ N}pӣ<>`݊ !NCn\xoU,cH!DK5'Nxb5=u"E3{5}:XF=b"$ p%ڶ鼙JZ#埮;w_|Hܹltҥ bֈOB!Z2󎰫밯Z|7_u5wn.]~?1"99YIi唷?U|§R@=_$%ccӬũ5U9 8Pj;OQ !/(+^ޭ1Ep !s玒7ҥK/_~N!d52iΝ;7lذgϞŔ>2eʕ+Wv܉6mڮ]ѣG(!**j߾}IIIJZ*f Q-ZgGUqׯ+sdϞ}С+W,Pb"BH&4êUbbb lNNN%K>|xxx8FG@FǍ2k,OOOj@v킶ZÇNnݺQFaRK@@@It5?a0 履~1S}6Bs(y R;=ݳg$wpUǹ!D@PAL˝f4QP˲VR+[?o6*_4qw8'EEb?3gP7{-[[3f'|fٝ;vԭ[wڴi$n`Y Md$1#G>Ci׮lΚ5Ӓl${?~\j`DGGoܸQvMr}p1 =تUu&g\N999r~衇֨Q#""Bp9CH{eee:}2CΝի~z %ÇرcxxW֥)+ @B&MdqID1544^ѣiӦZL&Dsss[[*UHn7w\)))gϖ%ȮɖHurrUH!CO>}d#%S܀l͚5_uGPLo.gԩHΜ9hggu5 'oYHLL e2Eɓ /.x\ƩSd#gg焄(R# ,,,]޼$HDId3bbb*k]kԨL~Eׯe˖aaazmy$ 9rzibcbƽ~4lP_?L4k׮ݻotHLL1b޽k%;%%E+Ygi2n'^0w~3wEgO?ؿo_aa6D=G24ӧOcI>jժU͚5۴i;lNNN)))}z\+/_pa\ݻ;w!|yhٲ?),lU|DKh׊^|3OKٺu3OmF>=t萦M3gJeKGJۤo6b[7߸t;v̊eL+es`{\q=9mxm0ϊ~Vz׈^m^?i~l^*4ѧN8ѡ}ɤW]ozzzM>QoM6O8#G )009sF.a;w|w:v [ju5111o VZ˖EgϾgڷnաWXaee5dȐvg5kիWOkh챡 ]O*CM v6FܺjN}套z^%[KiW =oy"#jԨS</5kFh4jTvV<T^q<㥅HK)sdEmxEszOh2cJvt07UXOviwbޔmnt<1B`5g'6*i$\x)99Y~ɟ~5ݜI}9+裏 7fcc#H$,'y^cZBXsԩZ(uM8uVtus,,-D^4vq"r@F9s:==]+^L(FryZhpY{2P|n-7?Vov{ٔAq@듖KfէθZ$#V&v u%- )}\FWU׫=*1pNffNfNߙWX<@_ί;)vE2mrvaOֽ lRqX^ڊkZf~K3Fv7wL3Dgݷ~0aΝ;߿ef GW݀a ?wʅm۶n޼9))i [XZH9{56k|ժU/~-11_)yLgRgϞKmOָ{׮'N7oz֪UKQ+S)_|ꫯ0pysR[o03kԨC";oݲeȑzCN:z􈌌 *^i_ݹSe$\_#36**Jj9sKۦM[1tɓ'wIFFcG;=rKDZ?ń8[tV#_#% m{eZnѱXPXT\t $A∾T(õe U<[$΢c-{;Og[Vu6{|S5&ffkťh7!;dht=(sH;a ܐa!} mCM"/<רJ_#/kFw#j;L')c{MNR^y !ص'3p퇿%:AZyp ׃q%^pSj^Ytaށ[]SFiwx՘Ob {;e瑙i2\X)}A5]MR_$[}}J/Vi%pޛ~ %O/%*|&]bSOV J,**!r3 gvdgeu$1ŵ&l3 W%i987ݮy|.ޯ6wu"X%0]8eFdT1>RkؿMT#piܢ"Sy?Qk/?"YX}V_t47$d{7A@LZ°Bͦ 9yZ͒GT^87VI91{紬nJ3ܢ%G2Xv4Xp/<1J+״?=ysQYxׄkps#z2_sRz|u;_LYl9gN'{02 pCr> ?d>$m#P/n7Y|ٯQ| rs+ h˷~[q'ڶlզnzz™ὣ5C-H/*.6%`w˷`D/oo;)…?}2{O=h*C K(9b ++@C%14@d2 PA4ӻaqoۻwOnn^ݻ.]RXX޹?|g#Gpՙm]Zȫh|LnM=/>,Hz)gW_v؞U\JrrlLl=D $ ZMJJJ޽##j[?kLoJ_V*6[͘19k֬pܝ4QIyƎZWXܧs[d)q~9g;Kƒw|Ts6T BjR_ãysnݲE/T#GTJɰ7XvݨcEzmyz'2=w'{ʘ5+2l5\K )PG'{=Y;!{^ r*ȏ:y:5$h<Kɧgp|OVodJ3YY|GזU=e -yfKBց%[YlO:RVSޫ:fKVY)ĉo:hH/]yƕ+[vQ5eŋ"e‚u֮[@.YС[tIfffIejud_lVy:::r/2,kd,={v ,;+5W.]]bb^+Wv k`ӏ>$&HZcbbeƎb3g4lPIRΨQM41??_sӦM6j$520shY.{[KgN~6i^׫=*1p _`T=C/-hQ?\ϹC_Am<-r=,huĉ>}VZ~-[ʐGP'}4z_wQ'i'6z@\.9:g#5>6/)@bsrx%K4jبVő˴i%?4IBp bcc݅G5K.W~vדcYNj ?鮝K>IU§H^_|$XRi]uƓ(wȾ 9憇2rV+,nk_X\?/^ ٥[쨤܂G/otn~)p'(wJBrLf=~]jɗJ"?1sc_rJҪUǻ?$ǒc%x{_ ;Z1;'[[J.t]%4~#4hpŨǵJGAxx9?i;w޳{;;;K \tI6otmxEiӄvرc(**bGfg,Kŋ$Gʲ8 RĉcF[3fY6m~ڗ뉌.ơn9SrMeXK nẤ#.6}/k Ԕ;dgLvV^}^VGsOM,hR&1p|#CUS*=]mDwy-Ml}zT0hn((2mkd'Z眂bgkցvn5n1,MNQzՌe˿j4|X}|2ia6lٳ%tJVTBnpvv6gdddpAAVX!,?ܹsz:::̞cllڵk-]7!?UV=Ҿt*7py|#9> lc!ҡSn6_}ILڐtGc L}Jn6Nȵ47I-;Ḽ ^'ɦE]/V7:شɪRs~>|vs?)]K>u^v4]i>9ܫ-׺UFF)vFMppp߰aNvo_vMJreɣrvppz^&&6mIE5Ӷ[ ֯iMV%K`=bm۶{xԬUt*88 ffaazzc۵m3~ ;cnnn][vr:>董]"/,5iDA/ +L&??Λ7_߾!!ykpOtcm۵ʐ@ҠA͚5 !vҗwR0zwUgSC* i 4@4&>{S`ا`f&Gpckkw^&Z^pOggJ~mq|F^9 BgU˷ ??//7?{x?qom-$дlզ-Npy2 PLT@* i 4@d2 PLT@* i 433qi3YIENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-azure/create-in-portal.png000066400000000000000000001743031465312036400317740ustar00rootroot00000000000000PNG  IHDR-v{;esRGBgAMA a pHYsss"XIDATx^ @TU3C@P|>1&CZ9f*iYmkj%)dVnVV&C`Z>6sHQFAy?ν޹3sggY׹ߜsfܹZ|A8 ;x0@ޗZWF# :a4j%b8 c/ M"I%ꀀݻqW3gTTT!10߿?2>|~$\""",>Ərʛn%ǎ7o֭[y!AE]ݻwW=zГh[2`KRhF-u@ (n %kkk+88Xd8\n!0J20 K[>>>|ߟM .?胊>jjjx GOf1i bQ*qp) n9stb$@(9>5Inkhh~x\8S (/'SèFbtҪZqzГ>ʇ$/?SƇJ?Uxj:\Ή {9[C&C1n F~vhW:bK YN` 5tB-*)\`s_6Iz3{ uvFCwIsO"nhfLj8 }{C6gk>.Kq* s.\`#<뉃=S~NV5%KvI˲|e 9#lYr0h(KX{!ek_%nÄ~E߸XL7e^kH6a߭B&)˟iNU?['$4 Ⱂʺy_K Jk<!`H7eJS> E^4t"K1w\^v3 qr:FN;'ȅntu[[@u`„<O\i.7ZgGV۶ٟ[B}|*1Vau뻗ZB%~)Z"ъ1۔vUI 2at)i90,-EP< m8j y!ma[&Md)yS)|t 54#w2nxIr@J Π#G?~շE?on;QNGViWVV֯[i~m90C 8XVf~qUm;;~+/cWYS 'gv8)^`]4U.f.7ُ}~UϡYL{!nגu,h4NKIC,gjq*i]Vv\?#A~;<6]}C4^4JcQ5İghxci4xX͵k ShcT!+@fhs=^AsɡHPF P"j<S'o9taw [0;U2uːE{y[N ʾbWa5Pp OF잰[t4y%oe+W{YcUSXocK,Pi>kp'$[5ɩ(V6B S84@\"n:E)"T^z9Rmw]D0} U(w[iz18*1Q]^LNHOؿ/e_1+TNTXG4Z2ep.~b݃Gvtj|~a{ƫX/&Hx³1º@5Oɣmqn]8M!@B199-y%dl#(%E8b4s^X;fmt,qT'0V] tSܡA$bLSW yȐ#b?"c8t̗!+fܹ>  ?]SSSUUuҥ[•l=cE:[l:kIU])*">LU Ԯvb&EL%Gƿ Ə?xA>a44hЭ:?W_kWj4.C=٣>a_6gD>t֙}ߊ_~Eⷿzכ?ʾ`Х[߾SguB?+Mϲ_az`˹c>qf{C Uՙ +ϖTZ*׫]7Uqa\Q2. pE@e}o40@/9W:z2SZv~S-W:z2֊6M{+ħTMMMeeeIII$WӧO;vm۶mڴѺ KkæM&aF޽NjVh4&֊+D|a/b]]]iiivx6z4C Pa񵵵%%%;vЊ! hIr% e˖\tk׮<Z%9sDc/91 ⰥK)xQuuu‘) ^T$h-Ya/^ٳ'φG (+_|W>@ˣJ,a 1ΪxJjAo۶m鿸~[@G4 s߲ J|sn8Z?:ǯN,ޙy.ݛ~_˵&{G/ HՄׇ hpZ!ܜXN䛵]{tZ[wOmHޯtw M+xjhUpsnu%ON쫮,- jiZSmSU> v>|wY[[[QQʳ( gѧ'^Lu%EmTVն%~~ҟ*7Rzc;ʎgW uWW[~|jxX|9O5~i9}NkT|r>DSO=5{믿_u1{.WIedʝb|h0ԣϽ2)b(nMhsTqjwoG* j˫IJvWG>_ ~p9 n_u۟4AB\M.IO{wȑT[ꟂҲcӅTUV˻5M:0Q˄b:YnrĤ[:%/*p+cįTyޱ7@%rY>𑅧I3sk o[,1>Czܽ{7O4O?t၁_:sS>eէ UnkAJ|}AOK~槐ugD5VMR+þr_lAB1f…5aJtٳgp=wrsWdA3>\#GQqxذa4 R+fB/+_Ŭgsjuxշͥ:Rj}4ZkMMZSWHh4 qh[M'5~uuy'LCFiACq]QQal zz<N,ߜh1V?q9v9<@aZƒ.ΧCi?Mf&kW|E\0s?;0g ]w _f[OQ 3¦7L]ԗ[l?߿%E2WGW<>|$F/o#Ϡ1}nBt hy wWuu)j{|qV[ oK_۷Q}:%Ijj=_fZ뚫ʇ$46JhhbuxVDc޽{7׺c:\yJץk㛤ڵ ?/sB Z!g]ÆVD7yɟK1JҟzC.vͲ^f=ó8c_/Ͽ7w/6t kVBPe Q)"6[g+XjRӢDjt bS 0ܬnV=]WG=Q}}|;QuaAx!ynۦOommV# fo|6~>+'MR7ӚC¨8t]< ))i< ?&ʞFSeI0gC{;ˮ>L LYg.FXHKœb5Z.=vH.&WB0&D0'h0|~{ѣGt<Q>XkGn?/.񫵖kF[[[[S][W][S^]UZ%jVc #-Z5v˽bi;v/O Z&_.zꩧ+pȟ~ a^kb@G]Rx=R#Kǧ~KA1!(̄ӘL(G'QXg_vx05϶v֟K |W5 )чB4oMZmU-^4]koBxڷfܹ˗7 8h(FCisuԩe0Ι3xZ/'<@0 jkkisߎg U;}s?U u'ͦEe$jp|P,z~ṍ F馛KՆ~{i;6i3,h׋L*_[B'ݣ!5Pk#5: Q[W{dSևh0k׮-QtiwߩFh233khFАy}Ta4AUɓ']ⷈ5VK" F@|wWǮ Y%Mb\Vcz]ڰPv4.0à9SaV#<0h1MXvͪ+)ݿifpu~ƯNhTbƧZ@nvWCg릯68?wXm ֶa- Z rs~ !?L:0 aWV-kյoߞ]xQw_Pv9ww+ʭuֺ:"~h7%C|CǍzE;5+aW1%4%5ں_ D~=w@C4=owwho_/j8 aڶm*zO.--+(>3ve/ooUU EoYhaWzkښkyF_V$r]J"L2uuq/ 1b_gcq4+x9 @K/0a]y L!\!R!.D`pXO@KVx0@gРAԧGϘA}CPvt]K|$Gh7Cԁm, JT$t0h9wvB۷ibe?}k)OH o;/R,^X^:_WV ҶiY1Lؖhd:?Ǔh q@ p'jzv Ғk%IMuMuUuuU]]VG|}kB}{'.^*#*:E~r7+PAw_c=q'+.Vjj>VS]))pDBx,}>_ ,||r~;^Yx^[Y_=]}iř.f-3j ~!8(`n_ÇgF@s=hxm{L>>>'Y>Y}'{OgU?VuhuK5mj*Jj*u'[%m_=ԇ3=Y^Qz2ң_N)>y/W|^]qR]eQ]ũ{K+>[YLkjVwpHh7%:A;BJ } rWI/ZsFߪ/XǧLSB|Z?%Jku9!uUU9uុɏ2 V olܵ/߻fUV-e|jNϷ"?[~RQ\WSG.X 5gkuuVjIP smTUԞ:F}XXފ%ww+ ^YϛMy7B[_b²u ג~pkg-G?ֻoKHi$8+s[MCe;9%ã.&7߼8vј< l:gPEm9ghGvvbnjHBI>ת/让~oE {jU5YVkTY=}F~>smjN ]ηMS~9Fa6xOvOn4 Zm`F9v1$Yn9BSn@,ǃxUG'DQu:NcPĤ;4 Xn8τzۜE"-!mǷIg gvhMFx_CZ i|눕ǧVa_4iI/ xhSS9SSv3jK|֏X υv%+52Y9 -{wɓTmHq' >gρި #75Fp&ƈ]C}ŬbSAHUKiA޺&y̴.4 J#V^Ϻxb@|0w|~Z05nCvD `ւ355542{SmZ-1Ū44j  }zҏUԝ?MrO_ɫv>m_r}ޟs:"b$~xyg:&e\wPSjM{Fn&((ݦ Asd>=wmleO[ÒǶ7g_WQZ@zvLsר.B[Mcg]8\}Pt8{QX SQϏř-;^t2>mN%iN֒@>tj%YcukFՓmSUA+KrTGCsw]29w;y)%T@'g[[Nm.#.(fڻ<\ȢARH@,?tZSVd |#zly L'{uaت,E<оCɱ;6' sz{Sl':~WZ`aJiIs$rW#w hER~v=~,gҜσ[\Dщyoxalf:щBL[lq#<‘Cdʰã9TctH X>\EJIQE#b$M,[@XCF Wl7٥'MUP)'V qֺRV@W|A:3xA*G2&8j:gGHmT&(Z !Rjld5}uh@g} ?}V`]N-B>u#>4ʫ:"4 ]~8Ol{D~KyUHif-ٺӉkgk ;yy4[q z{1h4&wđ|3m}4JuR%CعRt͉%,G VK9υu۶7SeNy}i6ߒS9tNl=<,JU?F,C8QO) $D]8oWu+F ?":QN3DIiST?_ןҴmKkXXZ^:IJm\֯ZAXj}j*4>~}gh+rCS:ﴺP@U<%We+}d)a_ۄ4 `-=܎E T-AJ5gK4ڰ 6 w zv~w>qS/>g89}D|(M`hȺםOGx'VÆilZEJ}드6q\ 1D`DT+kEYVȓc$S,T4C.-#+ 6۷G+#᧍Ci/@k G*?O~m,7&{}XilQ%{g׼YuuVg߉6'||󠦨]6=m)6D䥟%[݈\:λVXCOD!ie^ڈT󣟜 ;Nk>m\C|Dʗ9؀Hg:ZWur=HQ%Kք(oPSOm ى=\LC:ZiDZ󓃰뺱aP~uGNUW't'}M+ՠ\8rHs}X R/H{/9ͅ-5Y*~tzT>ܙIniL:6 ht[r08G ,zL8XRw=%Tyk? Ja}URy|떼WPt!G{4K;̪6]zƪ!m ~kʭU夦XDCښj/蟕њjMժr]W*풚?NY|+O7MKy8*|LP/N */٩οmڀaDٿPI?M&rۑq7 --]?dκ\;wˉG29ŦBbhO?9c$s$W#}r/צ d!߈ٶx9>片ͻnfMQmI[ w$݃Z7PSe:RU _]8zaAXNz4f{M~_Ӆ^m.aQ)'H'(ޗT|ѫSa.*[X /⩼lS4뜴$ΛyqV+n:E*3#^Ǖ5;Ftz_VWK*?QUM)HNV{(5ʭ8h&/ )p쀎֖Y4V%?V]ׁZhe,Dhyx im1"pteaN_SW8Lc/~."붎 E:ٶt8Y{塠8qVeg\c[RtEVeL[SFeEw oKHqabY(Ƣέ3k+o'Ǭ|Y[!atbc 3w4}o]^!ۢVշ9\THO9EƗ4hr j@ܭRܯK}.UW|StRKoj|ha_J%_tRogE+h[Sɓ5fQŠ;,Xtaq{GtFCHjґ%9uZ{iik(-ih h;ݤ.wf+Mmn'P Z-ap@Ԝ_QU%u>VM[zb]F6 t#=|ڽ폻=W73/(ӄ@t}||ZFcTyZٰZ1+jU5!7v2vXpי_|q|ڧG?PbSen^M X5R*_aI~cnc%>?u7;]\;Soqӹv}+Vm4D+hܯMxσ k>|xoO4|@kw6gzkSquábcߐ.ݻ-)j~~ZZG|}|CBڅ)7?Ϙ)}r/ar.Uf4{< btz{Q7~[ۺhߎF`ZB}>wO0gtnKc#$GzD<4ӫρ4Xzddz}w*<d=uqw a?3UUUu}W)@~H"780/ $tjWQW11R%^ Pa/kh(F'c/y+R Z(FeT+^xFWbN-7ĐK:`AEe˖ A:< P/e8`a b%)f\hLŇL_G_|]:Z9 4C1GW98l,/S+4CC1Kr%Pa/s%^<KOO={t:1-L3w޻Mg7_M3b%8~׈GI|RV ۀ0xӛl* W7χѣ333O>{5XyPrA9A)KO)&\8)6UOW>;gӃʤ=C]*+sXe|w5nx98;.Lq@F%Sr&i4eʔ̙3<U.ʙ=)Ҁ}q^Q^OiN 䅯oiKF i/YXEჇnatPCHkWC}^m5fx._ߔǓT3ewyJGX,N+o8X* NM]lm(МS KνRf4ydT_!G ú ?qjKHڌށ/ uT/pa336gSɦ3}˝ڝLj|#%-4o<"L-F&Vkn-o|2qgffn|ao j $UUϱ:wivW1'? 3tw;L(o՜SQd7B;L` cߩ#mre7ݷ̸~v%0 l˪RE ޹k0w/bKJ( !ܦYq*fK F^]Gu B!O^(4¾e^W G/oefأ3v9:s}7iGͤ; ?f;fW1vʀL9\/{#q_||abh*vCDCCPѡ#?|3hFuasկԩS<\O,JÇqa lԄrm[ӻ6k>x~q Sdqi]ɢF ܲy/]ٜ'F|kz"L q*_&;aG^Xjd3Ke hy/p|(2qݛSm^ ?ض_nBu@1?4 +9E 9CKg?zOJt˯]w@\<|x4g7z~|~&^~,L찦^}o7o^b Ìu]R8e7Ds\lS?rh3xXF樜M1S⯰Qb[`1b&DH?I6 @m;c W&pnW,DS>]}%pG7X9rlD=nX0@{nveÆ ᑑ<]ԏ.]ɓI=ϧa>s]lC*YxGfK gaFfE iW$znk7O,_oLiS99\ zK1to+͝3~oR1u9| 棩l=GEs3ӗ,5:msČXi}S. 7 C('|0c}%8<Œ%. iB]Dᛃtaa1~7ni.ݰ#w_/EV70gwшGRN@7.x޸g#,k#n_lPEg_2bc#]ik3-F&ܾ{ot䉋 u-˖{|L#FNK(,%qN4(͒ŒɴNjB~گ_Uwx’FF؎JpHiOd C({|&yGz?cdd-J{,2aM+Ӱh@O F%&c#Z ~4IvcÊ E'pMMv 9"a #5/#mzŤfD< x1DqfLjc"6ų{6t޿W$1֒_r%Oɲݏϯ[diivE3 L0:/K,)SfǴ%0?9@kt׻rL˺?p|ap/[v5DaUhư4Qs]jOZ0@x Z ޗKx0@qw aqaEE|[242O,-5|-MʒDa,Xф 0>""D?%e2+`YrWd 45fnj5;*xwS m7 AOI{%-lvXxDiqo\fkք 8N(:Oњ`L>z1F_0 ˎ5 \)<}>\Oi c?iA4Gr ,&f,Q VlNbeSu(p̛fcр0Q3ԇy\۳̋gE$^dW xZ֦tݱlQ93n'&!UNBv" 8'f4#YO y|Slu Kx6 P΅4|3s:|҄bU acOt)@3t wM8ƾ8ZNvv_Oij3-9YȞMbNQҍ9WM_8SV}H1F)ɎdΊEL6 S 1NZp-Κm{S#V#-8WRcfOGr[QӺI'hF޲eVL t㊖>`Y Vu&岾a`uD^/tyޙ,lSlӋS_'͞هMc^Ϸ 0'-o2ۖM1h@dI]rd8)2BP*%<,.O)?91Xo|UMS=a1Q1,[ͮ2MLRwEYźԄ jq*$lpVH|ޒ[qGQ#G6'Ɋebc*2W y=*,F?V(+]S MZTLӚ#ǹ0~~[ʫ1%1f !A}K[̟ڿ"3Rw?jXϒ.9O/HYORBҍ_eMc^D[gт RX|&vXJ#D%<#Iɶ^Gb'NSb02nqjNa᛭´tmoSoKcW҅'%wl] պwz+>Y{ԁL\wRn"[^aft;eqKy'<~u¡0XHQl nSQD7n,'FJq†[Y}g|4%O'da:'L|"٨ +:%3:Z"d!3G)jnGGxmJp:膲I }GO)VldvﯳbA;j44TmHĦmp[欿g~XMfκqwys34Թ՛Jb{ grnT|+v5qtW=h7O}c>OMqgW9}S:-͒u!"CB4]>";,0臎 egf=gԑT˚Ȟl2&,rW͑bMniǍc>3q"4E9}T,x{5XE {Ü*#hLHD!L;>Y1KvE&55=zgNuP8 085utKFrhn|p]^2ú؍Lޓ𚿍%l@LR-`3習G8 [E5lI7R(`c,e_1Q2|^9&"B2faBvGC082Z<.bib%ՔMdlnh(e0ғPLE@?FYŎu2gM֧㟚51׼|"h۾5i2f'6Lc]>HљHTAt\Qg1{Ҷq_%B,,\e,E 1?P^ᑝY?;}@'NqΝ_cU+ytv{f1X'$*_1Q~B k7u Oz11|פP֦DE#M42*5 $Ejҕ̺5i9|"sM44iP sz/XGxdbNq5oH5VӲW"BggJ:y ,07k^I2ٚ?qIJfoMd(~Zٟ5HLT~alN6k@(7e35Nc3eMInsz3Lz Li(6w\Ui/g.F;i} 54j'裞JL\48 $mwo= ]q&]~wu}ѫ %'Ο_'Wo>v8]uX|3|H,Ty}ZTeǍ;k!/*)/%JwK|jg|% J#KN٥{\*"1ݪL~҃7u>-m+_)^`m ?M|:NjMf$Κd;T=;8k5 =^O|:kČ|qz8*<2?J f^s$gGc)pKO9JYΌO^=,+>31](t u=x.sjexhOab7owZ( èC튽3OzT:ֶLYQ*~֥[vbk*pLXH$rbZ\⡅qk4{ d^3#Y&e\{+5 0^ey5.8;/ 8Z>ipЕ/MsUT5F k>4WQ[{kt/[^Qg~L7Q:_YikF ˫eS{YݙZ6n>5 ˭acӷgu_t:qt95,os:բùn'jh]n ϺO~fOѯzbX5wsM~5u=Vϒ][0qjp5qs&S['w Kvɿů?rn_UX2Uf 8%ai:^e_%K?M]ƾ96ʇw*&|~̂.&a5 m*)Qƾ|d.t[ƾ1D@cVdmywkAoTpgY:-Mx~T@ + s.t)$X0:v -|C=O^EEMXy:~.$Wvpo@قŽY2C:Jhʟ.,Q26K *{'TfalB腉4Y<%;N ,]T!M,0:6 /Lj[bBrImK_a|}ᔶKB?*cZZtPI)ظ1mK.& Ŷ-ybBE-yR%,vE|)t|]W/'$jWM^l^iKPگ)a. .^yBr^Vbr׋[H=_B߸v4v?C.>RT܎䬐KV 'B.7_C\wI/ vJi.SJH>RdEZ`ZlOIH|8xAtc&$XkKC^.y]/]dcl[E(}ms/ҝLw5MҝLwuJipi[׾h}ie;Զn( ~T|hƲKAKB 顧'MN *}!Izb#m *-'=hTRTbO˃QȒgeAcXr d4MғT'lU _VνPZǂc_X@/@z݁ot8O/Oz$MTtގM&ޔl0vX:j34Y X|떥bJ8vV8v lG ѲqئX(uϸup13'<4n¼w +?͞REE-+rG*JI =?HމX"myy۞;Lb8Q;0QmILb\~slofJ37ŮCYǤG.dNdo~["7eV I~id ;}ØbB'N\>ayQEw1~SjoY=rY=`)Wd͘sTfT+ YqFe[WG!/%n:y}M3 ?~7+!>4T7x'hfVWG=Ggz3t3g=tSWjYrZeMJKY%6 `\JX%}sT&X*1R[0\4H!#I,aYqQ)3ff2b)jO MO$Gfyq;hC70,b>NSmF qd1/JfX$N[@,vvGA7uAtb 7se,Hڛ garL3^>ľmߑ̜yR0xVr:\ónjb"N@ IlW2,f!(iD~^2ś-Cr]#I 3SPELkNC:RB=}(! 26N5 =zgR0xW9Ws\Dm;G4t856yyM̀=a3NMcV̈́J>|0kix%~|M2=l;ĭm)|5zΞ GgZ0êطH"! ŨaQ::WImͼ c )JRxtI y2q,GI?j1gIn!?$m>b) a7%8߈>JNHĔ`\l{ V(Lbŭ¬5<,,hV=cR,ΠK1yOUkhĕYb]r86aͣ;Ŧ%QtƉ|L3͏ СO~m @Hxeώ|€ЊmFv!#ƔQtJ?6[oJ?,Ѵ"ąv2>CI^H~mga1[z1?h&tgL,5kauǤbư a*ltz9@ml.Bnl2RKX8¾H1#֚)wbg=dSZaEn&0,VyܹR$ݖ/lnjj@iSpM̝;wժU<ވ֨@h/YϊoD |Y ߃ .7OP 0_>- aށ8 ;x0@-}gC-źf>*> ;ށ0@qw aށ8 ;x0@qw aށ8 ;8,7%ZS-˔$dD3-D2hx ΊV?=2cdYȩY̍VJ 땇)7.{q5BkDg`{ubI܂ ;<_=Z\qpo@Ev] .c=cR1=yrZ î8.!i5{b5°j]d&Ңϳ:=I75պ1FS-ô&$ rSFf>v ܫZGNHE97Obz/Y[b!5SFK=Doae)0^2e'F/%!xZ t,ƓW#HS yƅcQau1!/ gB8wqv IћmbՍ:d9$>~RGLvcf^ےD?43~I tq%hw{Ҷ>c&*$-&L\Pa=,m\`y*3ba{C8X9N%yc9#q? mrI!S/"U?pbI;PMSnlCn,/?BRห2(T%ᐣ2mIN)=_Si؎(;lDIvrכy@|sWlt- YKVR:1u|@C4Kfjn'] #UJ $ cOq"x35d3Eo}Zq#J=I9bILܧbNSBD:O`XhKDBX%xX]4.m6a'L>b,{Rę3'=57)H$R bJ!Ἳ%r|\L>d[R%BUsnLw;ewntPX.f#ݙ$PHY*l#M*&>ʷה.$vmCĹXffB#}g _C⍂=x-RJ&?l$]qK6vO4} Q/.f c‚BNyQH-欨F𥬌g[Wq^Ҩ$3m1 u Ժ ޯK3/^\rIiɺfBiI€N?He%3mk G_LŰ$="bN9e1-D؝=cRlw3Fg:F}S)2ݞ!=Qvgggtftq Vq -D'0NN vR FC|)wףZ*nj /D7umӄ ِ/;坙c!y]:v&OW<5oriİ~f j j8~.Oc͙﫼gIz#=XFBZ^,,bҜ:WMG:űRJy9,Mo)&`".nfMvsOI>dG:Xj4cE9OfX>q}* C( x>2)NTSn`zgsҁ\)>?l=_2ݮz)Iu<[Eto{Oyq4L z֥YcA/|j7&0Mg껦] !8۰kVX<԰Leo(_g;ݝ9ל|P_]]#N1xgj8E ;NشMkԞ&ל5I!0|a^N'^ *9;'P/s]$4[W)B?i8?S2hX&oE{Mf.#PG*.ccC@fawػiڱAA4fƱ ߬UB]ROxqv|S'5SNq j9Iw8.f^=VlVӳڞ[no0 oW{@yq=Ҁ:R2=g&J7 ҕ${5U&D=)9լ꿱xPFK>wH}wfkW.PNp0>Sy&[o}XfBv#zmg [1!cXt"trCgHRKϒ*dBCrSR23^#Jea`.C? u5@L띃!~R\AL,|P6DJa(~LZϊu8d%)A^KԸJzOn.?z>hU:zS*rTeS;Xm1ô2*sRe_pc5k6GH76ꜯH:غ4 €+vp/R#Gl̈ C1Yҳx'?W{xe60^S^]a,S.*W=Y#n,n4I{C~.}r Te8~geJk,}Hf€We#L)f · j8F!B7&h2OaW~Q}Ӆܰ؁])̾Xs'0,b}?y1½oq\|zƤ>¬R =XsI\]jX25I.L:?&৳HxA8Avҏ>ۓP/tSS);1&":a|4%:fj8T\v7;y9D$4`jܱEGa{ YM_v)nB3}:8,h@}80.n Fe~{iT|K⻵yCp6 {؃UQ[Z as{ֱv zZ%wsgR;KI]rM_NYĮjugʹvkȍ#=2aXh&/BjYZSC\ݙ%uEٍ_}(^#OmBG qQ.-}s%%8>'xJ3wUVTsb-&rS~.x5ƴILVM 瑤n,WĻ254K[[4&7%&\LNo4?@Т4-]p#XOy^#J_+\I߯h6wjԻAjvIPB}w aWл$4b8 M؏;}.~yrYG/b]c}M0r m 5k\EP>XV@"ԸX[KFP_f};\Feo$49c :@0a8-TfXT04Taӏ؈=^M7fAρ@+ o R-{ V;@ʶLz^p-r$~s Jq4l SRF w||8(xPS/av2mA:([F>v)g;K׫(FIWPFJ.|hNX&"ʐ2m-?!EX&--m-LR9,PFo ʽ-o l8' =V[-A*'v{va*hv9)f,GqgpQ6kSq=/h+ @)뱁, aGSy)EY7~ҏjR~KYI35Y[8EOGBgf%zKP̘3ːK~QBC&TB+qXZJ*|2m,L-xITjZL"Y)̦ R%8+ܩ{/[ <*S:+L1B6=[t(7S c6e-]_jJ=nkfߧE$RX*쮅D$xNձE`ˤ~cX1՘ndS?!D"U=P̵$:ʵa).TeKtQ=f@xw$?v9yћäAjj记/sL/~LP'89W]F 'P+³KgL*6e}H˰n$~7hmkKy2祈@a=¾5IQgkN O&%#WdlXJuKf>NY, Ig|TYWtWT/aJڍ_oն;bFzM%iAw]ޭ!., l]~u^`JҒN:=I,9:TNQIbt?T L*RI]HY:1cSX@fLq4R*I\0Ak8,*G-)+MMRjTJИN /ɤdj -CQmRo{ԋwOcr~ɟDy8.bqTSe%/7S7eLt'H,t]kCZ[uKzjtS )WPϮЁ\r 2S^Y(M6V9,_YĎkR!z]^bJ.Q(XSO2v &JW@׎Tfv3Y =NB-bΪu8-xM釢t^zpyV7Lf]>mD:@{%,wMOuj۝Nvm*/@Yצ]k[cI̛.]ͬJoJ{`a@004 $'yD:#=g+F)k֛$dR1@t8tAJ&''!B֪4o0}_ .#C r[^u$5] /ʗdj0J :;\}:tхVq*RIvAX&g)sJaIOzU\~'-l BVFnpy _71m}*-8nh1ھ]awEG9]t]+³K̞mT>miꝘNZ&iS\VgK(3=k1fL8'fTJbXĪ6Jz,pD/]ֳ1&"\մ=d_sckXԌs؎Za"w:E9]9ӥM9e-$irmoɒ%|Z璘fE;ֿRkm͋,'sDZ7y.>*ErD?f09k|,e&u3ynCNJ?!JD 6dS[2p{5ꖲwTYۅc0 |zWutjEpf:c.e 'b#Ng]f6^0.1'.Q\5gMd?;KCaVEݤR12Տ@Mk!Ẋ?ҏ4tjECsw CI҃{pzUgP(G>[P5˭Ia0KӨJ̯vd(fU;>p>ŭ+=ҳ>2kM!~p5zYJ_%*Lt_'ȲU7my/u+ X8ң ǞiTwv#@*XrS  ~K(mZL]\"]&^>B0tExxsBlbwޢyi$V321K{1lIy,5Q™NY]R%섭+,I RuQuE:5VZ\iȭI7ueFk |[3ӎ28VD=>: ;ƍЂ~~j>-JL>-HKJAhAڰ|ZGAhA0@qw &,)5N[x"sE|Ѽ8T؀'dZbN{b#a)tdph1 SwLOmq+lOؓװfZG6 7%kb ᣗ*(uM +L!cWM%gblWCu3-L)ڱ&.Ӹ3G68o@hh #ChhhC WAׁ-/-f3 C4O&$\O!1@]s>QX~݇+BF,9p<*ZUe}b պp8iaOi;v zFW%׌(*WχᴟnIƞ|0Uu&܎ MY}-B?M$ΠqxmLS"VxP1N"9S`R*!^Hʟď5LC&}WT"[!,͔2YvwXEQţ JZ0I3bUTd Ŷ-8PeY螏NɔQyFRl]>MZ~p(pr%BR-U{g2\(VͷQX|ZXmo8-M+R6)yUvLXTع<*Ed5X)קeGս9XnS*nm83D&kDK 3ŤŰ#,R+by\Hb+5( `RT'hʛ<9$7g(nJR٤i;%H*@Ņ PR%m=/+t b3^oOw4i}XOc4 sILB٩^ɘ*4YİК<ty23£gO$auTTmq;„yɇ"Ud[(2;JJ#) g x2)9qbqּauHV܌q{ii.Bb{if}nI?MFٯN3=6efBfDi,RR5lؕBz:fj{$!z$N9%g;*%T,JМ~N l Kq4v9єNKq-jL2&Cc}'rs8E 1쓞n:N\Սr#-. vGr3c6n9ְۅ[}O7bXDOv+V2^|\n.f#=\8MyWĘ4q M)#~q>DKE*w6)]LbgIBA^H{iDž[7+F#mT ) : 0ҽX@(zcE2MIOe!bIqKҒVв"E* rZsgeWGaby-(Ō6jKհLn!S:=B i"Ase & )e?xʹ*ݮP+2mIhW*6t2[T<5jvKM7쏅<â(eX'Q4ni*nQ;F ۊ/Obox)8Z(\: -_WH' &iRQEҮ[PnQʤ  qd`BK ^m6XIгBr5,Q?wzlhL&o{)B"UmB)P]8DƑ,:b%. _71vz臭 B?FH )}_ay-S:^$w_Hh֜BȇԦKb{iYq60٨h9XF^tʹ.+N%j'=%V[&= <<&洁z*#He r:ˎټ)i(s!ָQbX>^ӹm%*'V)Fy@Πr)ԳE,RuI[!ԄIo bYm*w?Ϸ+ΣK}^ngA}>7e<[5^=w6H,%ŃE!n P߭h;7mo&t:TΔEN],6:ώ Y5q،)(V,h$hYe>kXg.w!J[G~qC}J=>hmwG7Izۀ` =YdHKN9W%qEÅ"c44R(hRuѐq~*s,CrbnmK#c6mn*&v*FyΠz[S.bbWg Q)R S_շھzF-rO+ΣKRy44iU)yȒ2/5zrhv|8U8VȆw'ڎ6[{pnz0ntj8aNhf%[ˏ<{ITʼn|2"]?$Kەk/ʹC681*n%EWمz8h\ik1I@|)N9W%qvϬfqr?ܔD4p}J%IbJn/"i6Mq]kMkT>ӍM:z:`C29S8eGjȮ0@rX2{ }׷CX*꩏?Od jBrH-€ -f <>fcFDLճ!v9+\l5L䮊g+\^qz'`)ݽ4ھ=+En,*Fwz!n P>3+yu?<<۱U9G5)+b f7,gpx5!|M]@BVC@|4%Gf Zhc娔ʵd0%*!L&8b5zO2nj,ΟN}1+e&0hX".*{ akhw@6G'ZσFþq<'J@ {];PqwDzp:zIߡpmC}w #A}K} &',kY:K&R Si8kʠ^:mə 6Vm.ĊmӸy4yfI?-0{'-f-eS}!nCa)ּa*8f'.$I~TOH" @hw5~ta Ʃ13ABMbv5PgT-fHA;s Կ-]7#dpj8b"RbQ}eޚԁ ՍZ)QYRVŏaAN&ԜyilCjz}JSz%]~Z<{z:vRi4q|Hhyh҉gapc!azƤJZ 50<$6e"󒣄<h/Ԁ:1zuS/M73,f ˦<"Q5-:=N3wUVА(_Z&4C?OJ )ގÄM W-oa=cRVF[mb>-H;>-Ha>-H;ehw>-U|5qw aށ8 ;x0@C3wUVx3AAAw9jA<} CHIoɺ0XR?8kyvIF*++C0@qwx5;oe(>)i*_CwD''ٽRb<+xƒcGܦ'6BM$QAAAbɿ}-\&Lp&-:NBSa9?~^vM+$W{>_۵?lcQx'1잹뎉 tg{!"|1,̼e{F㡏4YaTCĜ-gYsI1|Ȉ(k}]:M \wBJi:vb&c. 6t/]%.[\1Tĉ(K;.v/K,qA=/aa!~Ʒ?u'+F\9㕝|Ɛ=jH-ݿl_y~kcC%7oޜЍgH6|ߢݟxקʬ"gzm !=~)ScW+=~/$6Gpޠ̕/|ʂ?gѣ=7ų\w5Ol7&̞};<U}TT]"RI߱Do>O{{w ox)0`ʄS;GhH;=0jwGH;Z8А: ;?fϛ~7mX:]'OԒ9R&<2}owtۥZlMFQY-k=)2c)ݐoHE< AX5}?}oBoim-\[=&/OPc-Tذ>!ڈ،3}DP 63 e۷|+ݔ84|r< jÆ~fn_}|匵;q>UkZ񿗪 P[~Ad߯RIzMEG)k0x_%G_c޾47g$Ľ![}ە&7Mm6ξ.c gƽάA#Gfe헿'&8L3#py8Lu{'TvN2i|:jh/Ni^]/Dܝ>+٫ۄ7X{!sNhLT@2}o~'q ~ k(ܹsWZSW>joCn=[!v|?'OyW4&Df0>l~?^]JW<㏦|M>|tRuݿv'[y3MXG's/6rƋO Y#N. WK-bfV{V}&.x,?6ٖnl6{6/NO7viq Eoa{I>…=woNK !Ixjk+/ȇ=_=K*U^*.*.mo)ڹpcޕ^6c*Rm ;޵t"^}fs%8}|/)[P!·zs><\EΞ8ZFޠAHH4L+w?_o3dI2&Uk=KhH:u;-FH%!uj'[\'g.-ˉoUTܣ᥄s&# qF f̘$ڿ'd ^IЏ gޟOkwe79حO W3_Bqy:c'J_ өl2=]/q<n ud>!!!P^#Ⱦ9R@x UE* IU)-WLqB /ߐDZt 4ڵkܹs_xa uaOiM+=Tiϼߟ.*.>kؘYP|jɧpݷiz]{/> V!ׅ!tԈ#y%b({!kk #Gݼ&q󄄵;Xp񎻦YޙF^Bά>02ϼ Bn[l}]ƨΌ{Yi<7i?L|=Fme2N]e&44͹#zΒnN='~~ _^&޿9XϿУKlz**3r<W?ܹsWZSEU%?"(&*Zk/a-ò43zZXJdbR+WMlטiXX "ܙãz5?׼sϽs牢/\3^+>Q/zXcgu1)snS|7½S;, ZF+͉֨Sy AF>>떀񋊢 |JgmmF9s}"a݉3 geT!2{ȉv%OwqR?\&oJ788{ߢi+ aU[mj”3#'! df[O-(0W%/=q"xUaǢ'[1={43Eq%th5g8&`Q#"ݢRzm=gb'<|;/'r++-.N^_`N %Oce%kfNaW?)-;fޒK663v-*kwpѨjmrpٚL=sw<⟇Дͧ<ceѣ.?Ol&O"[g3UG!̿YN1%Gb AF2`GRџmVߵ8\ݫQV]LI[A9 @0}8R\U!/p8 ᣊ=\TWA9 @w9 @0}A9 @0}A9 @0}A9 @0}X^^]\\TW r>a +Js_A+0j]jTG3F[G98TU݋ȧ~\²@6LחjgY$;{lVasv~-y/qeV[;M簬aa+ȷi)şҌLJUnM5/K25o9q]xykaY1ad@dEiN9jfkBS}9EMMAOCk?jI\r眬9'g$.! v?/C H̱YMqXjmkN_"L4^@2LHÑYR'o> 9gTO5, JS6nB$,Iԍ\c% 02q؝x`m74>},0Jv{?}f2V"[ۤ[E}az2$̩[mf1A+I|1WoI9'yJ<<,sbVİ@f4C8|lY9%v3۬˴+HoV|=$檴u+k QR.mIp؜Ee)1feDl_&n7 gDJskQqbgM3_ ]}eŔВqڀ!qϦN3TZ)w%4O)LO.,n|+]<:.Kx|X2UnݸdL1jmNIa€̸{Yqsc]rW3y&W mꮈeo m ۆh˫d51ЈD7"*ChZGtzUI3B5Cc{Te6Y_Tڵ#Фgzy+sطqa/.JlҜD \Y?ZSͫs2/L5g[n z1:뉰Xs%~6a Z$L>"qV ?&ܕz|U&ŒEj=3mQ<ʨ) FЇ`S5\-믊EU}j:>L;w8...tw~TF.SwG>4ʣ 8kaag#&Uo`KAx2`G9 @0}ayɫCU\Uƍ?nO+v93T7&aū&-ߣR~wZ+ɕϗ*jD=^@7b`m/^2E^sgW,fظz|'\rrݬ&l Ϭ[ [ ]o崪\iZ?0ojYU= ["P/I2DnO*8O:ܶ&i,ykM+,*e[bO:Oǎ)~cjmt]+v1`ĥٕZUs7o; ;Catَh8t҂-^ſ{,@>dAVZbцLAm@, >?z$C m mZ!L{:MkV{|o$cáݗs ջl;/lcuG'G5~QCSmobٳ-;=Cx|]gٟaS 8wb-{ ^"ճ^yd =ԜRMayVߴ:רvKm]6v #s$kמv;/7+NߩڬUj@Kq<0䞁 .F=һ{C{nQLiY</'C#vlQT)kFL߉϶[V@O#uFALSKq mmud'/!,mΫP5&^qC>VM#O;a\mM}Lʶ(ZZZPPoL&q9Jq";5czXmuƓewcuu%Ĭ#Fu>l_A9'VMޥݛd?/.(p9=C>q^uGmMkjMZMRk̳=Eʀ?bs׸QYLɯP-͟9:t?بZfwK3g[Mybӌ~FX5M5h|OI6z]ꤷϗx45w)^_WMaƿkT7pyut.iA{ܩI#80ړWts`ZOݽLe== }OAސ( s.ûsM\V |jjƟ>_k@zA{үoؖsGؒ3t}i=%C؊n*Mm|<,*S;v!us Aݔv NCo**$#K;H!,;~9/wmn YTFAរQm;V|]htvVsmoϪ*rκK̺7Sy ;\3)|Tp ʙ3j[C^S ϛwImaQ$ؐ͆϶UMz84b5^M\xsɽbüyeByofmTǡ!2ٖyl}au:Mj˾ҮfKƲƿ=CZO6]=5o떚5.1~>cf|ș ۳L_} Q)oC!hS^ho9녗 ~mf_K{->-?d[ËKP+> .? !!ѐEo"us֤?Gps _ءRX /F&_Xr>a r>a r>ap<  C^^jqGp9xhܱc_:⸸ }S9 Ls(OOU\kaag#&Uo`_L0 œ;r>Ep1r>V'mU%U4y+^5gyo]\7RGMre2+V/x&c%lJz2`! 60bĈ۷JcVGUpW&lڵ_x#;Kq7 3W;HVdҰ;Ek&JRَ/g8tU Usl34:$fſ{,@>dAVf̘q(faL;qxzBM=#؇_m=6{Lbi3]pwsJѲnڻE) `݆u\ejXR=x4y g?w̝e}s 4o}ժUF1{[eՄs292r?׾ >x٧O{O#pkϞ=K0y9s樚N.z`ekZkozᥩ] ؿn΂Lg-,7BQ\?laFU57O/<.+^՗O7]s \&ka.|/rcf/ \ovر/k6OwOo`0}0/ r>a r>a r>a r>a@YS6vy-obz|ȂFa@ؖ|{n֍v5_Yr젺PZkrommӟ1;;SsG! Qn4X^^.ݶ#׸eRMgdٍQ1@]...E{ Ϊ&tUݑmG,l`|U~ՏU;෉\;dAVF1Y*mt䰼*!r-3*6*UEY*gǻIkVͩۿj0CjpkV{ݜȐ C~*f[U? L R?]&3}UДGMRzG'U??62XQvE4#o1gX>`&.m\:|l&G[6U(X-g}ڟ^VYU 0V.fg+Ytܓ#:*)Ojh#9lw1Guuu'G~(;LY0nAު"lP CdUmv[C"Ľţ~,wQYz(ǩ7nm\: șϚ9jړo~ .v(ڎ ϣcv}_5׀n.柎/:j*6*UEY*e/TJs`6}MÜ=xK9fqo|W5kVzs눿y7S HYo7bN|}޲6z{odV![}߶2~ɇ,ȪlT.r"fhFu >#}ƶN>zT5>vU`vjFW>$Uۢت]_Yd7Yꗡ>24\@h#zprᱯ(_jS͛0e&ޡ޹+6eԬU q'Fs1bfw)Țd6yMv.xݎ=e-/H;z{WXUe0~bMۺy˦3_5<>#{Jϋ;*ր$;nuhQ߂I!C `j5"vX 3:oG!>:D}zGg>`\NY?;EFV:#CdU6Mï9La r>a r>a r>a r>a r>a r>a94'ő4֕vNvB=G-Q}#F.j52\w1<vOe^3Ԛz>17aBٗ5Jb1+~1"[78t K"9T6jgx5~9`bTHݪ=L9˦k'[bMwY OZ6@7wvCοYiVF9T14us \>G!O5[X映?F[S-%ag/b/fIUI=+Œc33hFSI%y'MY[?`cPպlF ^W(L$l6>l>=̷aYsa!f, bV{z{ulv, 7J/)LtK%,I*7NO)))y.@ʴf. ȌQ(M7!+pIJ0X0i aUM0} AZ+"ŢՓ 1la}kUUIr?VUMMb0Q%#RJl2cobbq{ͦpyIEZI3Bhy U˶ovvEI }yk>]^M׊O]֨{ҵ՞+3CTYFU+ڞ4v6չ>Om9GX?+~I# ”ȊRKEaz!|k abѫ泂gOҳw8h;!.ӹ/b?M!yl"հ|b|jaRrm<|:D&feFǚ9۸%i6iNxBk"`R0=.j¬=֜/#]Lx)ۅVq2`D۶#KVx }+)GY%9bv7x!yA֘!>Cx;1UESB|Lv5|"{N[ddljx>ڍ23dAѦ6'hR@[2/UX6vpn.03}sysN5Skqn%Js}8O|N36wTm@wO=l?&EZ̏"pWxmig3NܪZaڼgSa r>W2}mɤVVui.! .|/rc#P;r>a v_]jΎwWtÖz9zݔqK 'U2d?j>k+#U4ؽd֭p29l/?g7kw,,[lǢȐE۵TfcVَ<5Mpѻ$֪Yڣͣ9f{Ҧ_gcV+tnsI^Qx>ֳ5uuU i'^zLs'm|Oլ U 4}^8~ {e;eDeaXݗ#Z鷪2/+R*~+br"qo S)10Tn]B 0MeL`{abG=+)%[j?%Uj.';zA ^z >PrK`!Zw(h-Ѳ2_y/6dM/vk8Wg6xKJk>vXVAd9l큨}z|\2__$>vKVՎz~ş0/MF~z?[cTÉFZDi7y̼?9Cæ +~g\c>A/{I^_~eWup+N{Z˜%Gck- tv.9|_>Ϊ1tn&ZF99\PVe3:EVson)5xhs᝜DYeҏZMNQR!,;-MgJlu1v7*Bon.JE+TCcKАAթΒAg;-"FѿOꦎ UkS:'AR|w *tXa[6'k8Sq7Wm(47sWr| D[|\}\r\LU*I {Bkeu–gohFU.#H TQyLKm˖&q/W׶uCyxՏ~jE]JP/G׶'OW6dꇟ8{Qleg=MZR N g_Ʉ?rl3]5ir-8SVW-y'JEs- %'7T:`l e]PôN-ĉ뾶N+f&g#st;Kˊ?hu ?o..ۻqGi#S[y*\S9nz!A>Qu)n a0{ҲW3c'Y.."Ǫ䯎Ξ ֩siΩA!}pж)Z5՟=KLް6 ]pCXgjg@=f£14/"k_6'87vsGNmU\3,qKvz.jؑO2mˀGGV5mS~&7lG4lӋO݃gܑ{MAO^ѥ6O^;!Ӡ{'z`_g2p'[]wvw&׿S!zThVeV]%S):7scY5w g3y\$a}cU]:$<>+Ă*^;uq;~¼Hڬo?f=2kέ˼he^ߪ}y Ųjdpy.%G a8L=jPGլ[U<4ݲ'wlxSvFǪ9 αm\0SHa@=0h:Y~S3w>kA9 LmS px #y _a r>Ap1B=**b^@0}AЇc>_@z?9 @0}A9 @0}A9 @0}AЇ!UU`0T W>EpN@0}xG.0}A9 @0}A9 @0}A9 @0}A9 @0}A9 @0}A9 @0}A9 @0}A9 @0}A9 @0}8""GUUļ$>a r>a r>a r>a r>a }U WcVyI}0y jZd{tΜŪQa r>a r>a r>a r>a r>a ɓ'ϙ3G~-vӪqj^/ɓ'NTUU:.S˖-Z8Eعcdž,//Wu\I...tw~T M\_%]kd+GU.±egT EVGm\U"}wC<<=UW0pmhyIB5R)UK'إ ®yzp b}>a 㷖2d?jQT>}Vy)5$?Z;5O\Ujpùr{+Vͪ~+mXtnsIծ]2{ ,_%}l$wO~E()踪(3ڨe?5lv|4;T'NZo9ݧKmW5@CxX]u4k+j`.>mQڧnY5WR/[qճ5SJ2 1{<$C<罄{y}n-%(M1m Usx'IZʖ'Ng]-6Ь[onvB~Y I붖忤{6fj7yGNcKa}g뒓6.ef[u֞ [eWIn׎ql)1U\hz}cLgX&ߠViIkIWؒSUI>TK'W7W=0@i#sWm3&cAڛy%ߑ?LW&scPc$KL¿[=m[=`_܁fA f%¶GtVΕk ˞9gK :7<:;9ʤ.IC7[ kI}Q9Dknh[ƆyGxN^g#%>$Ӗi]0?9֥Ct_/Yĩ([/<z%u[5CuS,/>ȹO [Zwn+bG%L{nkͦJۥCi}oC٪,[Z*:I|]q2ˆ%XiE! &;ǛL}nA/{yCD_(ەjdxtP:wф)G$bSN}s0z`' =4amFu7灢{ q[+q"iyᢼS(NƾbJNyc{LG4ˡ$;UriD}hnT.w- /:2r`+'v t( {¹SkC9Gg%[%gd¬y^`2 z!w5S[Sq('wf7yw[vGkmxhɧ{;zĭWwWqh M' EG^ut]Zx{v׳8B[#N7LeEe3Y5_gy{«[&M)Ouur3잁k_Mg/EM;vrrS}WQf 35*nTOxGzwvu}d샪w랿w[Ic~VT/ͫ&o>6UM6_,&ajctHZ]*S[jz"}-L>>U9{-uԒqbV}Z\Eiqy֪<})[[<6L_uVgib3N gW~7PI~}Y+mƛUfFIEʴC}9CB,˷TXζK{7mQJn<}6wwEk>[-?ݗΚ6qlFwFQn xjȎ~/:^:$G]rigO\G/l kzn ~՟Ňʒqdx !rN3Z?|?T9IfJ$(}4HXSd̉jKq>v+ *9{zuI)#Xe닛9*ښ2K_o[?`Ƚ)NZ ѶTe.mѫ(k-7yN\()+8%v?)#u;F\Xw6eGV_aMREYss7pN߾MMa 裉sXh~ozwL7U8...O_䭖7\Uğ[%?Z!A؋tdeUUK CS˖-Z\§ܱc_^["Cؠ?ݷ%Urš8"> @0}A9 @0}A9 @0}AЇ`S5\-믊EQgUU:}}A9 @0}A9 @'OVE\5B:PIENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-bitbucket/000077500000000000000000000000001465312036400267365ustar00rootroot00000000000000hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-bitbucket/bitbucket-blog-post.png000066400000000000000000001113211465312036400333230ustar00rootroot00000000000000PNG  IHDRgDCNPLTE1qppp333Q٨YOأpp}ϝYYYyJ٦|opwpp`MѢ~Dppvvpo񱱱32^0p\描|pp0߭h/{ԥ٤Epp󹹹qwtp|He+0sa͕ܫպl32ӍppL۸ʝws\32“)jqٮ}gt1Sp৵㏸cīEtn[ѠPPN{pJһ]©լ\-nq̼{Cϖ.Αz{zs꽠…@~/bt%z34F}31_˧W~Oq30wzrpƕQД:)E22+ʩG31ovwTm嫺W^͙ͫNSQ]:]]o,W,:q{BM偙SjrjݯttmE@KZpJlOoB$3$) R/@I '4F&$l|OHŽF]0-9?ںms [WfnYOu6C 2=e}2+nC[Sv46E9_fh=/=g1Ⱦ+fmysV- n5%KΩ@WL!KniS릮иl {ߑ}>Hd󯼺wj0ɖlǩ$[wv=D( νsfIH-j=ƮfՈ*ʲz<6c"o"nјmpNDӝ))P>W A$78- ]_IDN@/J!M̒'I[Ae#5<'X){v!Ibi$^Ǭg)&]WǑ8f)$>ܯO.*A,JU9*XQIegUujvZTs+#x+HUuTx5f2~!I *{N i\vx(H<@p윅t}%mzH|oV+yEXkAe#]AN`P|TnS݇kM8!EbxH|tnKuӴ$Y,م#X-l QtR~|emSes)Ml"oKS$\ݴiZW$k_)- !}> WL.=t^GW;GƒH|deEF07[0kTuR: Z7 + utf~ү +LŶZ#PҜ '## -l^F@N l]rN*:by?!JFM| ~#d]}9o 4wm5D4NUE tLOc@}BCZcP]n}[`hCe <RLa}Khϓ10$0nFLt9:֫TӋ_Q y; ۣp.{NEX\,`e726*;ʐU&E&Kƌ&esazv[rkex6Oĸ lao}SSc /RH[ tjT'߼ sWw䋇ġL ]blu8ʆzV$vu΂kqj*&75m๼3Q((*AE>Y)r[,OY΂TpiE 6SZ N] B٥EKF /ɨe3HA eAVg='BTҭ2,9dň2."?$j(&`-k.M_"<-5Uξ="@EJD4^lg 3̜dwwuO;PTLI/h Y F93/a״#eq.Jޗ^j1s-4M(&bդh=Y*A/56*2nF&uulڦU|(i5T@D)>iGFEQ`PwE|Gϙ{v;;#7g3}|0ȶmCb~ޭv'9NP%QroK XP%' TKzF* 1 |k۾d.h-ItQEOcխDT,1<8 +Wdx&P&x=Y읝̸Dxv϶Ϣ)R$fm-A`&$@`.@2wbߛcd/5mWA+!n95vcU6GjȶW\v(-)6lO2I.HdP`W(f)W9{DkWWoD~Ì64 ٲRmB݃-~C/PP5 C̶Z@[v'^uZ1csC.۫X%;%%Da 6{~2b@n_@϶Q~8#z1ek],"EDȢKYP{o.xT&z׫c+ld?4N {!y봰.|Jd6ݥ ½w5v{gqj5ʖܸ'kC'O%wȆC7Wm||+ksrVZ_ _]S?l {Hop}@x<"|N1pd5cRd)IJ_c=%606b/Sn9'tMpe*U/d-18q=a KDd/q6K=#،'7fM:DȾ.UG+!jPG; תy(QfUНm4"֡;$ނ0lQ,v+cβ\~FȎRѰQ9OC'O%r|/A}FJ߳'N=Bߌ) 7(4R[Լv੠Kdb&DcZ  aSFKc@ܢ;$FV6#߇/l~kC#jnK3H0<+pl&"!̎֔Gzy[H5#zW1M-'5d[ٸ} K~8{ ) nѐbs6^xޕْ#~W(f)|da^v8E4 M򚜘j:UId#uY&wlƓ1F*/(:˞!{u5 ٰ6\!j+DեdpmFqf]5At&Du;;k8>4pZ{lO2InI.jgj]iᢗ7UÔӜ57Գ9-륟-zl8L1do1%eǿ:QZŻa֠^HKc9h]6f"&7;*JXHdG"}0Ԅ*S }?%W!ܥ}|[ʽD?HU*P;/M:ZIݗbu찹qD~=yL+XZT|;j?E+'~@#m~hyyiR-O1ϖof8b<*#85(k`LԾv-2b\sY[aN*쬮ʼnA\A dj,10 Ċo}}Q xK'ڹil)d.njBq8$Sv.ZGފrje܉,:tvlb1_ ٞ I\힀Gd f@6N}bCvc6Vf/ ﷸe,RnJa@"e?Nn@{WNXD=\A dw'xmf G+b_|Σj S Bv ێrA1c) iEX5 [5" 'Z4F$X}%9 v4l`!BJ="q]=\y EO_qj-uhŗeoJF8KA\l ӎ{aOnL&D2KL,ND"[V 9qZlŨ(> E~Bw1̕[RTK>iKdeW6àm" ޶@ќL^3uYOnw_gJdemUŽԾ N&@JdcglyaJl'3JTPICJNbu#[[WDW_]ɦlB6~Y0@'3]x,?`$9`amK'Ii螢XD6XU/i\@6dG}k) a~@b : `M^^cjbwBКBp٨zޟxV\Y\yB P{vƸ'O(W~\Ȏ]>ɏj9̏Grsq G14Ajv&ag[ٷh첽;w58"WϢ{qDz0ڰr /[]8dw[;YO j_;p/ ~dl[Z BӶ|:?.=V8uƪDqw>nTe2( ljgv'`o8Px-dueSz?y/;Y]!r^P5d;ٞemRi2WjTYz:,$u1FrwQ&?GP.]c$BymX ڼq2ND+W UW \sI^_[B`b}".?1j|6 7g15d2f"iǚv}.̿7=d{!J;2)#Jy a?F/#2Gw* CQ= :XYK ND..yS7qAl?|7ͽ$(j\bS ǵ3dxx_D˛+ ϸ: vzG2}&E{*<}- (2ˍ zxf<3+Z}78:s/$HJXHv$% l؂d$ -H6lA~4q~!VLii -1 +Cξ$+Y2Y߃Lؐv'?y} l@ $ l@ $ l@ $ d쇏DMyaѭ6ve[;oГ"PsCH?-q{|W{M.,D"X".ʷ" cxS&m̉Κ&k3ߐ -09X ٷr.o$:G9,A`c;gu$ ݿAnI-6՝z.m-6x1d֣/:|cR8~~^aQKĚ-_, 7-1 3{yS*Ri<ڭ{yy%BZ>lYZedȑmɪEvl>G8VQ…v\*s⪁ɘ`,w+ 6е$E-y#Ŧ)ΏUN}gٴ, zD`aك`YØ{U+/jɔ+QE1d;=qI,@]5zG/>)B_9 5EmDtyz\'tDB{̴e^V:M ++m )ַS*놇DoBRA#:y#C6Ui' =.ƪwz?!f,ra"Z7릲1``{3*إ+mm>FB}ttx\9d՗O QdK,?3Q!{Y0 @HKh萍)p*|c@R#><(%=Yo m<ƬK6V ^N'EO{@;p| UDќA6od_%SȦјm26}>>?YJ8ST>P5]!B,3r=Em&KwyGFU|I#GW!=.h }ʒ)Lo/?{4>a}nʿN뒑84=W_食,]!;/y7c l &Gz<ylB'>Χf4M)GnSl"P.yQV~Ф&owدy,2<.5SNu ӭPk*FyF |oۚgSEd6uo&h=.#s6-qS_ ܾ Q qڔ].*>mSpULd@n!6:nf.e}_V]lSD6*7/'JW/<US.Kcp'DxjUCP+gƿ~(jdL5V"CF=U|%kӈfvd9Fc&Ef 6/+(M]G;]5v)Tq߬"=UohZ'?h]?$ʫww1m3^^^uKEN`&8|2)]jw4"{y6E~"ϴX GئÑm#DVMiP|6&>(N,dh&ޙ"#[+9dF^9CUͣσX-d#K 5~Hl7ZyKۧch'hIը" 'NeU29/ #oΘʼn(")So#"EpNHܥ88"z!'I"@Kce'?q6M_w7{;5J6!^TQjr>;\$Ay_lo2`5dj"+}l`\ݘ,&c+׸.sy*ɖX/_qSK"~䘀C%KzG s@ΑdɆJ"Zb G*~P\%2K\ɹ#&نaI6Si-ւAb%O(=#qx żv gM)DŚw ^DCm@0V |\Rz4"L5ȯqjkrh&\-.c=v}$IR[ 6 C0h.cɒ*sX:x~'y% Z5w0 Vzqqe1^@K ?6 #7U z_SnT(7tK9ǁTK!D[F]Ը\֭b_l_#^2ͬH W쉥%{D>N1xi3)`3y;"IE54*g*X+ߥ!j%;B%򵈌3Ytm]@[V #M'枈j%K'0ɞ0~.o/[wAԪMCؾxGWP7M*ۛ%B9Z>[{FsYCA$${εO%;ONU޲ $~w!;DQ:R,/dKdϒPk([BBI>He}Bdq:cg;ry>U6>5E_`}hm׻큰)X+*f[NO<^c|?l}p_ Dvg w$8R;8YsYLw%pGEQSL%~ɔ]**Nq>{\YFscPN]M'j&É%]19 /'B42 ;MxKqd?˛2aߵe$§Cf ]gw?/8_7q 5L~WWx2lEQV~dʶF%9I'atǿT6d(^^>Ja0$u&NiR_K2uhe$>kVf=c% n!}@GO J>cg3EQSP/#iEueo_/D)S ?<6U>m]ɐmíPr$+i1/}wͽjK 3jP;((E*(}eeUL_2;]~B Ǎ"nMָJ4~L1MU6'EQ%sOLtY~# F% gb-Q#wP*o^P6*hm oJmPa[Bkwq2bIbIeW[ތ7zqʖ e`^V(?t <`KYpxql<O*Kc(J+ ٍ);/n|ϴ%/P^1?n?<S8xZ6DzB͊$Q9Ի| M^;ދ8eR";+buܣʞ\e_(hxLg*[Q%=+H(fG%g_|9iѸ LRT' H+qIU.{-;P.PUJGUeDG츪@^%}qc;#5.A6fp"̲;Sy5\KA\1 ~Te+ _=K'Wy3H( q}@<['v*V3H =YPTgy~Q؝ϰɵǙi1\*;:DfoIs9jm0]b{8BCH6$#Uي(hmY+:ދSD\ e_0Z’uPhXnЦW 6t ]śimg6 T7<4SNuJS6^ٜ@"M;3[>oc:tއ;igA._ ͶÝ HU(JZ+sߟ%`iM:C:JN+z_P1)~jM5eUT_el0YO0^݋_lnPD)tj^[4jtׂLȬӫҴ;SKOr^ uxtyNe~?o57y:ʯ oܗ{)#EQTBn'b5 LReK!G6JH-Zq7@ Sf D}Heˎؗor(ʮ Hm+sԨZOdVFZ͢Č}322fx9{j|FFwHͪ32OjcOV&#oà1%X6,R6$( e@ A^ eBG(`!nbbɦF]z 8K.EG30t_0x<0z O."ڷf(aw{f8#wQ0 U  ZHՙP/r` P&R:|#([=h[p,€KJv7yDSyqc S-z ŒG( T .DWو;&ɮW@]<Z(1 l*(C J-  }I|h实$*Tٰ0E yT|bZ7ZeQ`wگBȞ29YS# έx񳞥=yFlƊounddWsF50ObZ\v{#[~H4OqFv\lYA\Tf:`%Q"{}x156dXl߆0)ܳgs'1Δ /z p`}H /'=6`Ls.=7WԜI'G X%b@}X'5xz0"̳ %8/*U:q L [xTȠxGELp yJjn%C)[p4^81gN~!FVB)ӠFކB#f+%eٟl )Y베HiV= `sl21b3 SݳVF#-4Fm!p+αI-TgYv|]m!bD$ZZZ "h{F2eZ)U;eDAafwVFۺ ##=d,1ȅ_!9dx -](|yjStuɼ2e\lj<'c`2l=3M_ˆ@6vDK܇ͤ1Ӥ?+Zh:& NªU/ =޹g+>uo0 O6'@|H7W#[KKW]:F&Rĺƕ^634Ur9!4b#38e^b< {b Ids `=X= ٟ1{ 5@Ā=ڴ]p\ފ;m/2@+:N0g;'W̐՚fNe+3p{pD6 @6Rl1]J8M ---SN==9 )}:[<[Ve>а&6t!cR1-z= Ɨp{pl;ʿt\1Y6dqMȅ YWdsN$q!e]@#[KK+q߽Y*:9bfhlne8D^հ9efp<֌j*e;R \.Cٌa pG$($<^pEz^Ȧ lcY= {ZBM|al2ngd'͜x` 6AmiS:<:\?Sc ; 0sٸ~"{CLxa=FvDk0JLd;?͎6+ ?KOnǒY) 3"#@B)E" f -Zgd Ć4"ÇmDwa ͋']ݑ$ DXN ¸GϷyoX*cCgZZZ x#{`Tȶ1ٲq+ZL (+(,!Tu,  W@tqY-Ѳ/XsdaaӤ!AeOx-@1:]Ë'7N-oZ*^r#NzeVN^r*dgYds YV8ٍh@셐c2kG*d @ $H6"lD @dw:9v1i ]fdMk(õ; )8~m0C:Fm%Y] [!ךtdK<B[\[E$x?1wnB~Jǹ5so?=n*ٻV%e~&R *GDb>p2u+~Je5m&TJԮ[Jk pGɮҚE"Gғ=mI]YpG^f->"d}::ȋQ6^zIwe[+ݺ%N(dg}G'H}a<왖قgr^񧓽SeMvkD֓A#G,,kޮ-S\.pZT]Yd7QId;<|JҶd;6pIl=ّ\d/ ٽ;qO~Hmub-;bϚ쌞g&l77ɊYB3v 6?JH}̞X}}n͒lsvCeU%dd/ׇ%q=uTقIT;{.T=\,ٓ-O7m[dOv4O~KN'(.p>q(٭Jfg>4?mkdMН8J3^I⬮8,6gdݾocbYnjD:tQQ_֖G%b^LJ o\$;doӵ6ㆫ\sו)6d?"xH6@ 'lٖ2C=w>̮FJ67'z?ݻQLoeG.Gmc)|dP%9&^}xjca_OMƩRI6[?įb__߷ɞ3 :>~'3[˙!TI~b0<l?rJޣ]i&;a6]߆"Pd?j-'Ua[{3Co֯uq:j*'d!U] ENv/Sq,PdollRl(Rl(Rl(Rl(4akBTb V$Aoc"X wyx+ɞs0lLAO~Hj,Y6TO+lY%'{^ms"P=ɇgP>C2ll(鐌%'{O@H6 Ђd@ -H6 Ђd@ -H6/{:cp{~eާdWR"- d%)RFĎRsz=ޯ?X ً Vs1aw[^+9~ "u/DSԺpFdx<ʖ,ٲl9Q_^1T|RG'VkJ_=b)ْ2dH\CҶmۧ(jו6Lv؝I#{{$?m?3cdZ4d;e -,I CRژ{Wl̜l<.uTdWoeX)}Kg? KKvԶZ6X6%&hdez4@JHf,tɮKo5rvmTYXm*ْ6D1= 5$oUS?=Iv/mdϪIgŹJ햵X[dɞ#@JH0^wL)>^2(&ه n>c]Jaz'l|lnNL~2!^bWӪi}](lu~|[iTd;oY3w b;|;ywKܝ%9#T@=#9i#ΕqWyO/y]pެ:N7VK}Ldc|Y9,?x8J/4JeHh, UNߴ?-Dmm Q:FQ ώ28 $;X^JᲔm ΨSy+C*n]KԟݰKi'"d# @^  @^  @^  ?ػc](ù79 V ŢMK)BIT[hZ-<|_3g&3s El(d@0Wu]_J6N`d@d:1 7ه{70/6+;ߑlȚA'z߻3ɞX YId@dthf"%&{s8=d@d7VDe@dwGѐlȝގXwcR'{bm#/( ݻlHaD7ٛKQDlH6MG q8$'nӪlȝ/ d@$ P"H6A>;(8չܩPYQ8[iJV*`U*- "Z#A-cE_*<$hD ThQ#Ј8ߛݱ;sڣGs-Ls;%^)  zl  W@& ^A}iwI 8VS$)5T%F2;pK[a+†B;{n.O`k~  xq¸Bb֧=}36@nT\4iiu;"C oÉ\t^D VpXVuHhYVIb;UiaOe#\i:c9A)B)ƓhKӽ+.SS q,9q?2VuZ%p8]he!z3l_+L"HPw1)+W%U+ˉc9bHzN٧BR7gR6A}@c`c=+gq.,~*wD+;9wvϝ  ʉ 0SL(|̯T0eJND H^pI^݇{<{^70VƛQbLmeee,'Z(;uJt.AʮNF:U"=[0eW6 qeOzz)xu{8(z{t519a쫧gtm _ DM i~(((X>}e홢֧KZԺN`7cqdyēו 7ݫvxk}wxVA #A ƈ)kk}VP: ۲Pܴ9Ϲn+ Կf TOl1vIl5s{0:ʺ)_' 6ue#Vo6IVk9~hٹ+:\XuT~snsUO)Y(kateQO(pO˨_k؂uJKPh#4\$[AO\yyD6 MU['r|b]ʶu!vt^֘;oZsJ8F"{J&uS%%v\TSMGr7'^|գKS6&tUvY6F'|Ka13<.::o*pq۽l%fk0 +ʎVT~KuSO5P|) Vjʞ*c8˃-TUqڧG"|>G.WVs?pUvmAJti <G5SP'"EHޏijTN揼l¼Ʈ.Lm#_('2,+[Nu7/sʴ%ݺHteW;*;K:Qߪ,S3k K" Weg*[ѕ\ǮC |E :u7_0וƦuSހX, "I(g}d\tPv}KWnSbp179*y)Z%Wr[??ʞX=y}6>u^weðϠ ?ǔGjZxT" ec*[Vݙ[nS'鯹Q<'nVAЀ lV|%"Qecr=^>R>.KMDU$GUi^^{/ DRL⡩3 5cF2\X1 dUlq]gJneYeoGJ dT&ȹܕ]mcQ.># އRq|W;ɍy ̈56x*l* RQɘM-c RT6LNn ܳgAek.bS6ﻭ%? >C k}O 毙YSt6!swZ0F̌KQpJ9){BaZ~ǘl\PW/ pF" `Pu"lƈكusP6;.{=cJ v^=Aέ>-Ç < =`ЯV3CX_g:I:OPXG0VC%l1u$Zi"*HbP U'NelA y$z[Efqm)+73lkaeaPF(i @MnD+A:eւv Tl>o\G \|9e΢l"SM5>KzI2'[e9Njʁ6c{oDWXٓWLmkD*wvGݚ>')bDk<يvnnb^4)b;b+ճ;`o`ٓWLm+ҹ}ݭbHvkϞܦ`jo1dzC[oW۬_o| 9Ow*ݗk_syq7(Ms>ݩt_Ne8DBT^!aWo|1&8]qwyl1D첟[5e{ &1&8_iN/;.@A@0:dj,W`"R" p J.DJ )HED C? gQ nk`!{}@>ewi;s>y7lyA&qݥJ䎲I,BPQv3w*y;ʖ'dB./Qͮ:XR0߀ 9=z*|ַ}Y[]OC!fVAH\7 r_IOq^dbWb-/ g6&_+b(Jm< Wv,܄:x6 rm"XC/DX`0Xs[U~GiTZM~AD\D[a i#N׋`LlJ&Bp̝Rh(J  = BH\)IJzG=+3Qv*Yv$+` =24%NʾkFb6*{ l&e27OO1ƚp^#+;GI02FeXI ++3l5vAnH٭ l|qٔ= ݴA~ʾ{ӄ܏ +ߍۯ@Sk㭛`P^ظ L|)9RN[A|C?Cl>(Vl,+0*;Ae*O<]!ɕ}w-RO?'zCQ4`1XB4*%n^"1ťXKc6JU⣐(Q[X"Ĉ*)">@Z"Ǚ]Y!{9=ؽ;  M<, wlN ZIR xF> e%%:$dFKiEeew'ڍwP/)eHPz2dQSـG^锨W*+L{4iF<=-#h|%e m_idjj7)pc,L_diW ]ېm-nQfs@9\ j*{$_ d˗J4J[a"ua'˸:Y}M)b-Q#:t~"=)*,ʍT9` p97~+ʻiUaB9|B6wB]#YE0J%*(ޓ6=eqU<e[/g[Yr'KCܑ$6 P/I ڇ&Bov~ڨ^odÕe$K_dsnjħeXyN  $U1P ϫ Vc5BNdm/E'#oZEO4FM.WƸ.Gr/5nz"HY[Fvكp7Ԟ5;2e o^Rcvy3blm^y,=[a wq+^ SfQ_l~L +uVhSJ#ߙD_ #_c?su.&wlUk*]a( XvѡyFD[g0p ;(@Ax}UϩQ n/Gʫ2C,#˕@ s;zA|GuGh#D)dMb{amU*sCS9%' 7SLkw^Wn]Y@һ%/{=LH2!Ҟp}:lu,I׈CxKn6s1bq?#J2ő =-Tg@y>- ܍H_:gUE6T: +ModF—k 8U5h-QT6K.VźiuM ǁluU Sj{v`.u у:. Ct3/E3j@ ʥGޕ+S%>,.Tk$@pc_KH!a#H=Pxs@AuѤsϠఞ>Ź Avi\ Tc>٢leF8x(!XMIW{iZ p7:T\x6 'AbC̳T#RPA0)0S ѭ A 66.? A.fD*u_dCލ 49[f.)ɢϪI+OBr"{sha-Sz9;ͳׁq` d֖6y-2vSuha&sk&%"_I0z9\fwdשẋ*7p rEM9dz!gh͋_0<5F6?bM3F3B6:/lݔn7HMG]a.٨]]rFA2wd#3W/m(b._Ґ[֛,6f4DPZ OFtcl7Ur^izK~=\Q= v|"]$d*3ր]Nz ۣ1裶jԋdc Ģ+RqQM`ek7ێj/Ҿb5*.wOj^v;X5Uv(q.): .s9d{ldSSÎ:Njg9~fAd/t#ZbwM.ʵь!I{\Xuo^NDQ s y"vTfϨds}Hpd#Jlb" ^ وDbԞsx#l@Eτp9yCUgc->>+(jE ^%u߀D3 8Mbљq(qJ?׉va6Ovwٜ 19Y>j |gg2N|DW5Dֆ]E"cAtyҴ,g>0"PY"]>,-4z7isPlw8*`AyƸq&1Cje2 6,#٭}t/\{Bݮ%>8N/Ay k铤B&l%7ۯ6 EQI6T &K iQH*[>G,`XPe)!ZC#,UXQ+Sԑ_ >:v#NTkgI߇}'߇i곟@qb%{A[E6UI6u:~ ivu>Gq%S_mzhhb-޿ݠ `z*^03xFHk#EzY8+llĵGo#NҨ&~?/;pS=t|uJ4t1:GW/4֫>^a&mmRNHvÞZl|L$9+He=Ǘ:7(v qZԘXF$]d)&z#W2/uO Ziӳ4ܒn+$RO&㽪pܒͿ%ۋC5܎ʽwDeõPf>8{t5$ ðf nV oY NԇX]X6nY *T5B;.F%{:bY5n9Vӳ)}KE_c!̖sS&;G;>+=)\|ط@S;Nu)6_dZOpܑC"'ɎM8f%]]ƗI*@r|.[!+2?e;Hɼxaz֤b/4ٗy9ZVH d_ =MI3!v,R/ z[TZe' DZ@Gb2~&q&@&4SHd"OyŒ- 磐lKhC DzMwKBΧ6}> ~DXB] ғѓT=_bWWe^($ΡKhC ąKv^"/~,P}> ɖb m^ 05 w{'92 i>w?~.{4|cd/}}U^&cLp01@ϝϻkd{ &H3yWy͛l1i>w>*y1&8 M]5o=^ܙMǘ`b4W ޫw)Q@^oCN \F 􇞛&69K>+f^d3ZccڡuuLڹ֏YM1ڱߏoZ릏 0s?.n7S=NJPֺumLT|^wk]>i[렏g0}]lׯ' ѧ6Û>6%n3gj_h{}'0L6`  )lHd@ &R0L6k :kV^\ͱQ=Vvf5bAZvY{6eXNKcqs`O;2GI020I/nѠ21Z/韗\oŞ30tivJ0M[z0`v\$$$BTD2/c-32_ ],IDATx`@TUUUUUUUUUUUUUUa~B8{l-VwLx{BaGJ c LPA``+*T" zICvu mz ^vIEYk>4$<clt^;;::"k'w˨JHk=+B 1f_5젖+k/MїbNϱ j- = bيs UB[ZP (yq@1[B xsq .jPM0I(f7!%T5T;psA(f3AvIks@(f7sP1QF"7[(J *mcZljQ[!ժ%7TmJQ46j% D@/T@ >>xwwۛٹ=?Ι=;ze\4 ̦Ezžz=B/CN5o&H!'sPS=0e k%)Iσf;긛q]ě_@)Ow.ko>FSV`EYƨ iWOPl]|q Y\9c=s,Ҍόv,gv3:%ӿ= *&?Ϡ{vWdY@uPXsxK`#B:i$h,vu5]cB/%¤*WE-c-b,E͠W]b}XC햸0B L5uv nw٠⠭-Z (A$n`qVa~2>(2EAg`$lҴll"\>C8ng˻nwxt !(X uTWPĖ]vGY!9c?I`F1,] 1Zk< RTBb> }d@q43'QGNg,DP۔@ao@NoSg8Ԯ23h=(e-Lh18yHw?n\H\zY"B70&EȤнX. (jxaiS/FT GykU^l@]J%ƏYl26yHGp$lV;gڜĀچa˴n!%"(O>FjW56256566f3y:HyLϊ`8Qg상Iֹ9hݡiUVciɇZY1SwQR9kw= {1 "熜6PB)ɥt<k90qԆC +j$2|EL6w@s7ǷrmwF;&?ζz'E|F:vkPiX`|{ko.-#'xax3P10QˑP+pFxnvb}=yTF|@rgqPB0MlA%J%4BXcF;D_s(X)! c ʣPef$;/IijK(ЂUS;t>9"eAuBЖQ 29+8(F@)^f걙}+)AuPyZ. X ]o̸hœٝ4/^TѮ(gBj n;U/#Z%2rIŧUAjvrzkmŐgծhQGʒ) <]:&%"'n<ץ[9RٱV;|C?p[x+ꁡlNP`1,6:1yahRFxQ(+r;^g8PUj ) #n["j16.OJAţVys٣& (rDRzb<אPwVf[MՊvQ EPkP|` ,u8(WTsDTD/@7iAZ3RnW|&kVr@2 DECYjmou-pذ{w G;wiI (ͼAdϘG(y:J!Z6y@u1Ճ$^Mv"(WLм|hU S6 @eDթQ~ٺ(E@G5o4%{+_q+z=.Ő X+_O!Ji\<<sFVN19g["%y@4agaGC_4wIox hX"a1%$(d$0(g~k8EԗhX!B*5Yaȉ[czZcQjL+( WgLYP,a7)@ɻ 1hBN7%1?(jbs8E8D{E||)Mc| (B%·hqUx"$0% Of81_?;V{C|=PQ @ \'m݆te=v(yQ,pؒuހ>;\F@OeA򎠌T2II R@h6k8s D,l5M#:):&6Oj""oV&d-r%\ '3b@Mu<,v(I(ۀ(@sj0km8WA&>QL(|Tc2ri+͟#!?( dJ( pu}=h%O89nKSs*|TwDz&%6X  R~6&\YaYl[VƓNl*#K}~TgKKC{$p9mn<¤0v yL\2_$xiMiv}P4Ö(99(J,$VһF\":3PrlU^uPe ުp;&43ҰSM[m{ >]:sO(ՒRž{#q`Jz2B8Ђ|$e;Ml@ќEP~+1ڦ-اQ 6"PTI>h]1+A J up EKT4K-n҄QYx} XeD)"踆B,>A"0hWTWJ+ sJr5?ސέmX<:.<>Oi=0$U(qbsr +'˸3(h~e#c\5?v( PemnDA;7qV(Do0p5)eL"AVfJ*]I'ť2J jEӴn|={# 隶D"J14 4;ǭ}ۣ&%rبT}@Jv҅yP#ξHd{e퉼9KM"Q r l&[wgAX0 =O&Ft>7gW*W7zlϝT@w8 a@'MpM0 ,`0O6qՕ]@[BҟI+ݙ7ܙO<+AIU-Aщ̀RD@]M&~^#2>ËB@M}B/vIn Ivd/x8-t#,ZR7,!8~g/͞'t@ P6P@`@uK+9ekF>2aiDN &] sPa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUU};8aLʱMdm]n) UN\,J,"[n{]3dArw~EH9՟`S@$*d<%Dt$b$ H5I@c) r,P 0B!B` "BAA*4@B P@ AB@!Th(  JJ1FEh/a^M8@?g QgLL"VgDCŊe}-z(d-%ZբA q0JX%8oܹ>_=sf%9氏Z#=5 hX .9Ws0)U AAO[6Ub{W/v, KAaę̋7u}R$Ek眸_ jG`ypyI{2,(wr5Lo%e;L!c)rqRPK ۵Ģ4pQ+uOBI4@q#S4#TQCvK rIo!%GP Â"yԆ96I/YwPFdPUuA}T8ͼ^HjSF IV)"yx BLS5j$BK)򌒂=X$mhXm4F{rPM!$KI}RIϑ,y.1ASHb2 A./\ EYA_f+& N'g=pW*N!ߪ͊BP8iGDqXEAm^hX#Hٓj(kPORPcH6Qalc#U(^Mrbs&|YG- yBE\?taq2Lg0%o|%EmW T_v FSd equnAACBItGog BPE*Wfhju'H$aOK'.]z@[o."_k#ޓ,ZR<7LsH*~C "*K r\f4P8HRDUCL+(ݑ(wO3 ΂R6WƧr%XjsxTAT^q$=SAUJeSM)NxH3t0I2XA;37,b~ Pw'T41wާ\ ڱ 8!e((?ISU Fe.s4G~R֠V=@ kPӤrcTQT5T~AGTA)(L}BYPܨPK G'Ft,MIɹ2T]/j`~͸A)5[Y+5+x@ʴn*A-4p9ѰY2zJ?tfOYP,(ϰ$)M:#!Y|.ZP:pA U@ Xʟ J%(܆r>h`; Ar?LAU(h5+?&= S1{ϝrYOjsIdR A!j}1!U7\ w<265=*/q^Uv}P *|D4j ^wﵛXH-eI^aQg xv_X*olxAgM!(⡣< zm9PX =PCC҂-6h#tC.|-=_aKPXԾ& j%ɍ,(7Q)(x~<! qԓ r=A ʮ{#x<D@l~lf]oLAxBcȠ0*N=Kz9:NEf;8QC`,b"EAk0{n/דdXP e@y'<Ae7kBHuHMsjU,oZ_B1~՚kUC`K\gWk^˹e_gҖgc5ٱ4H̼cEܶ9fh^RT$5s+F0142_łb ԂBfܦ3}HqoyB J*T^1]=?uÂb (YcDV N{3d4YsU!"_0.\pXJ9BׁA~0B:7Âb"HP `Ao `Ao>_6 @)@2P΄VԵ݄#FHD(jD"~PH(1 1d1bPA3"\3(d^ 2UxߺOJWsR#Qο;D` U? \QVDdSnk56V4 #؊Opk=g + 콜W$]qΝEnB>ec(Q(DAj u* [{S 5ƽ wI{y/42(QrφFPd*#P"PiZH 1(gNB4> P(D@C@@!g(fJDO=_nV9^y+qj]|{4y6ܙA!P{Y<771EQy^.]Z iڛN}X?o~]1 Pjl&ؽ?L>&Ɇ :gY3^:ծ_0<1'.޽&fV2C`&PJ}%z$wֆyY) y3PV[QUD[%:$C2z QV[%%Jt5KtA8wƝa0J;w`{ޙ()G*10ZSK @yy|!Fey3iy |sC!\-M\wV6j.ܙ% aJz:-4Z<7\;w;J4Uf|i~-`$ޝon3)ɏq Jɔ/f:t"i$FrIoFP1CWAN%R|VZο"ٷNn[۔n.b^/,.ZZZiwnm⩝i!d~+2V~Tmً OR0DtC_H7$e; $]mkwD/&pU˜7S\/C Tl" 7|%zC/Q-f SU S sڹŀD۔ D&Z# 1^>ff!ŋRPmCʭK5H2NݵQ:4֪43LvMPb$SBx#kFOQAyarx S D+ǫDbʒP75%MYPHQs6e`+FPҨȎ,UF'J(1|zaaXw_:).M^梨UJS<#Xl_%/]^AR:ZI 8>C ]:gYs.,G_<;RF'l2ႂ ;Y<%D8)|=DzrJڥIbrv]UARds)30IJ(츸09ԊUTt3R٩ʕgFSux:7Ҷ\h%*^P# J/쎯 pezQ< blh#pG|TH kҠp T&a9M^! X%W㏬N|ЖSM(}`z\I&[70C! #-XJ; \sޕ-U]A}>U>BWݙJK. FP l(a;e;-8=c :ytU>!5847Ian  *F-(PP&ڒ`(JN>&õ,tnhJH^sư  3\#dKotvV v™GpybF؉MZF=Jоd mƔ;bnP +Ɓ8:sE|/7*A @tܪA `NcNz9ulһINǵ^jb W%ߠʧ\7* b!79N tIt'OLM_.wxb` QGx_B2o6 Wv6\Z|+%~M_BB1(|$6'*'n#(Ao, J;xURb'.9itw x&[!ÿϟT) #_T.L,=)gAop![|*($rl#+.Dzd~忊CAb#(?Ta:(HvX =En,}Mnz4" GHC(z4"_fP(r֟7"k?K>R'>`kc}<-g8`sol3#v7bm(9À"뤐+,Y;('ك FPUUUUUUUUUUUUUUaߪ H+!V)> ^nТ;`'УrbS @ш5t/Cdߙ2_1bwH~]]y(F={4pvIT!4d9tlރsnq1Բh .@_X[n͈"^Ю\o2A,Ś tp W%Unܦ4A9B_9SVٱ׫ֲ""#y/!})޶wJ 4B/PKi7d&IfDpO`6F(nL( 7ǃ3oĮMQ G2 <GjJLvBYFMSˏEx16B4Ai%`ҎxuZrU>1>4%!wѭLa$ cjE&{ U{"AE]m;:(zdawC1[};6zy&( dbRwHo%` P!{DpeunQ7oT]Z7!O ʌiq=q :WEͷ7u&( ھYpQq^n2f"c ,)!lƒTk*mK<]!(6G^o.j“mh6|7{l81= ط4jQd!mK սGsYo3[p=Cv*ـ?{d UąZz؋GI^57JIIߢO [Uҝl %tU hu<1/T@"feԏB#W&݃ ?3 Mۭr:('NSH%pMcRMP!tچߚT%UƢU#0) J "i吖B{qDNiݹF Q?-1څZ \P&u!fGPJP9s ) S'иR3.a¤!5AȸȜƜ hL hPnryp K뿾?QG?ߚ?Z4NXY' @1;. ☆GLc\bjfCQZӉy8 7.eoZ0 kFL=|ReASjI<15@H@YȨqR%e?<@YNPWYFS6 Pb!| c*3膯Ȱ_k}^ (s¤P1θd,"b @*Ef/n)E*1grb5 6(,K9ɽ ԏ4ڴQj6<:(u܋(V)yܤoN>@]G[[o @ t`"߽.QkbmD9_FiuQNN) M4IT}&Z ,MR@bwsUjpIMR@ANG/.%.bP&J5 (SmO7 k&+CFhHC(u #[WAlT^Fu6MT lMx,1k)Z@ؕs6~yPG+-SjٷY nAPZ>P0c#cӺ]I[ (,㶧od3".ҡs4[GIXT~ZiKBu6&RC]'16lka&,m-oxXv- 7T ڵPȫCOV?BfG%.GhC$t#PA#%qq5(vU )# OPUuOy6 ZvYFoE2 ~f*NRBZ\:vF;6)VO,L+M`qZN)#Pvl'åcJÿf{’m4G̗]7/ Eim) kU4'ZR Bq¬ݒ?|mѯ잖| f L}b{Yr@]tAq=@?r&('VgRNs9S+ST#uz}; "&a/TLRd(u-ϲZ^/"dt0=-@"g~"2z,w08GR%J%,Y VV,%?ABI)s:twq?ťzY}di1EYKg0$j\a}SuѽP{ICdukj2_~q:@miZ;,U+.Z0v;I3P3Gt{g#C#E Zľ Ӗľ%6քD%Xھ$;#FAĒ_4b$ˈ%B`KAoQe[n9OU JTiOe*Cп?mTn-5q*VV}#9>T  ^%1̐J %ZGZP-\j/y5+iH%,4IKAU!ZV c7 3{tgVAQ!Ŧj,pFRj9ꒃHBEP}݇BE&p.)T3y"vD\|:P7 }ItÂg`,6Uv B fMlI Wq JEB3 .-j3ZٜU'G[ݬkovP1+&7154n=44ItTm&J R1=L34{KYZB 3В>4G>Z*5*F^ުoNIwgץ_=$B`AD XH7!-uC[ jF볣[τ,AwKzi%'RK0G?mϸOٻu)߬vL+hHL>-5N[<'A t}RtwGAH,zMTR*[g1";SEaV%(m>t% (ub)ϋ!.I&n@}1> aj!mǰgb˥jfQkÕ-(XПAH7)jҨ5=]c(Qj ACr?%g ; KmaBTV'v)%N&Mèc}Ǒl JJbNNqeK_ .ĠU"y\b)uR,}(ʇX*ĄT2"(浸 ;8]f'"cs{@P綇;6;w.`a|+:A Bc;JS0W1I{E)Dk;C#JAmvjP\Bvwf7r{CvŜ9_#Ԯ0j0RJʀzDto@6G4f 'wU }D-m\ T }݂ẐZ6A}gYA}%~!o ԩ@ *KlnAbТs _KU۪wR.\>Z;ߞ3ZM^V&~l˞ lDK i$l;hʒȁ{̲P^.%I$I2#~z^מL%(0a ה_gk3^'`" +R]f~=?bDyjOjo//a3]^d% -p dQp@M(g<󟍇tDOxݤMHNq*`i,0t PTD{.P+f 231:"ur4 = ԍP-,*3UJFj22?WjH[M+Oa"P \AV-j\SxJgaSdu%Y['e n4@u1ޅ э5d*UxHgJe?Us5g,âQ!P ҍzb>""{Fd՗M(RfF@~)"P`TxKHxr;=KG#"}Mpd^O!Pyx-P3ΆuA=nQBljjPep} I.Ԉom~FE[t$6;,?ڋe.=gӾw̶'ǣ=˛"PT]eHif3E#C)h<*;P4c: P PDeMr1xRG8H|{IK]Y¡ HzC7vɍ x=~LK7UI8~5Tof#)>E -}w,$K ᷖM+o E^Z*U˞<b_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa|B8<ƢVADZHb*)ŃXQ#X7ZZ"SĂi mN BzS/&7Uefެ|}[aaaaa|xYxX*BXƣB`fpr~)e(e>mFv7 aM`T\&(@PII2&eA1䫦EΏKEiLA:@kNK`fua]0[P;J"]q*44}/G:)\:;݋uC|D&v8=^A!e`=9k쎴 ٶ6s}}È@0LóRIjQ JP@ŽJVjFInE Z\6A7 )~E'D|cFFA2ix dע~1eC[eWa|@n2̝:9$7KשpFid!m9Q zΔL~ &Ң*|4Qd1m*MuNBR8T3U ^5֧6ʳ/e-AEʷ$0LC']6$ 9CaL*KWFA~ flaⰮǗ~œSbG~,ZaVMA(-7x*?cgzMءsUX}P SJI (vڂ *Ϯ( POP4C{(ili\=U+(!1,AMAYeʍs)OK=k,fRP|R0 LkLR#Q;z*(|L0浽u5*`j2V|hK,VulXPQh|1 ^a6)iiD7vErٛ5M {Kϼ]GL8nVAF)eBF|*vzDcf'uWMy)V3UEC9:H%)lo0FduܭaUGEmaMWɂb͋yt'LԘ>(Od57^AĤOjD+F=}PHM wV%a` A[9݅HfBO66\,Ld#xFSZz# ^#SuTWi񾊋=]$=HP ~#TJ(yKIhe}0̦ŋ߮B+9y`A-Kwj[Pʕ! K%,7h=\ lN2RNE*_ۅkmV#81 i`0rk=Wq!>cde[fboG( |E.gM=̻3Ϭg}T9EMを}"38ڍ,(!zI̡4|RAAyM :)@&8,oEvAm} fXO {/>=[O qsGgYP ·T҃I0M ^$"4?a\Z)j0OuTi3il@'q 1.K֒.BB"e2sENnQ-6G('7MѼ/I-;rc#^fcos꽙͂bT Z:8*"钊l=]$*/ObS-@d @R#h!vjP rrju'ku+R@\1 `8?0?! jO-3et}aEreb "j5M]S3,JX̘ade9 2Z2Z\[Z,( d,mCӬu6+(;OŁPUD Ys}Iu!A%4~&ATƾWP nz"[(ɻ;V a~XP-^f[S Q:peAE coeBJ>C*3|ETCij@b[<֫gZ }YpǂbT"Q}_. +()RWPA`ާ짦|g@PML )Jo}..ĮwZnÞ}3(c-KE o)Lb/:~>D}f+\AB  >A=X;GXA\gPPZT8o.9 נE9-lE;5-dri 8ɖM/:䀠p}iWP`AQt=v›x蒄4"TM|ZTOsP アUT|EP-ɤ(JVPvgI/CS9 |r$-j# ( d)?r a~ɇ,唨ZP~M.3ScD6$W)TVP"J# :4˴[|* 8$RPzZO#<^yEfJP3Wy7x羰.TSVBhGڨAD j06ͤZ·iaG :yH1"x zJ/~n.,0+Z]ҧkf(Z&j>4Bly#ءwSO|F@ \Ai }8¶l1WWcE}oRLPP'HP>84\}0Ohja(JACVPqBPVqmC`8w"_ߑRlQP5{VZ֬YSKzL,yP &?V=C1qۗxM̜93ܸq_8ౡhb[l9M<T!vNJ£Iݹsh8 (\g ׯ_o𨿸T… -e£I ~I{m]v.eDQx4%K=w}w]]]E?3gN{n^s΅ӧOٳ%hDЌ4Q.^8zI^NjիWGi63I… ™3g˗۷z7o,:f8?8Qx4K.%h;vli{7|wvL'N sZzuq?~|Bʅfڪ>cٴiS3,i֬YaŊ5W|pҩ\9 h2 f*zy駟&%mp|嗣ϩp rQfk)۹A xLgk_OKI%oE#ZO{"9c3hh\j#)nqFJh{˗/Ո3 ǽ;Z 7xjʅfKfʵˆ-4AAڡ=HS.415RuQ=IPnR64*unqVt,H(:YgN})~c v曩} @4j1o޼]v%߸q#@t̼66lie@,Rq9&-%ywѢE!ogI]q Jł!z,WxTGWNpKU+i?j˅f5=+2Z$ĥ&Jz6.]*{,i•+W<6O14QbIt%ԘFIAl^ǔ,l̹ځ8ܬ>ӆ ⠜r!Pg1,<&&J[c7>nv}iHNM$m?_$H*qg14Jٹsg/m0ޫ۵Ugxk$g&{i$iOT=Zx,i59G,~,*j5Y{xԺiy3$IK<3СCȑ#e}}[%g"7w1ToN]i6l#HuSsԟc ._|at,SJ ݻ7qŋ>AJʅfmIM5^:Zb&s*ujf-<7s/wGK~)={6[Հƍ'`}\ֽ {Β` {@7ήH|-xLj#cժUu{۷W};Gyջǔ;*L|gFlNE0~+<޽v͛:g/ O8OvE=ť|W^]ϟ??GF$IXj gJ>d,S)6ԺGL,>^{-|7e7I/%¤=:s7B\%ݻ˗}@Mq T,f_~eعs>1?5gIJ s?y>}ztɶ} {M'|2Qy?Z kq?W0@)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @M """"""""""""YCDDDDDDDDDDD""""""""""""^x;v̉&vS~0~L$rp5L&vSB͛7EDDDDDDDDDDD2cʭ[H3ADDDDDDDDDDD$˙244DDDDDDDDDDDD(&8G3kL1\LӬYs_dp_eg; a(PRx.dz ZjaG\ҧx-hG>{0|6`0ueWyasmެZWm Ok~t ޽Â-q-}n}﫰c:-9礥eVhm_zNH}F 8[=Z~ ;,u|o n}wX1:cuUnZsֲּM 맿Jg>ڞ){/,];:,{?r9{}2SrD^xZRg7_EjpȚ7@Z\<\]믤ozqp`â;g K7:_#ﺘoxO\3'{W}^mxfm._xi CVѠ܅ ‚f6;PZ:ˋ~|PC߇e--sGi¹Ń`lpw޲uf7[/.*7FCks-KLl1v-e0s*h}9%w%(y+Z߂%J=rk[n5plszk>)*<~^8sitNH<s æݟ|vlXZ|?#?3>loNZG0W}@=4`뽑r`.y񬆤ㅶm?bgq*XҨ;Д ևc- ! IDAT4x] /\u 缿oO슄,< _]Sp}' \m,(J,,7@|'iQU rK|~\ { f_h[:ٟzyE]B:Kx zx`ٳ}DJWFރ%Zng) #H(3ؙ7phe%?T8:S!:gvXr g .0-9<G7[7*ڻ"wFHaIQʯ9EU{? m%6`}Ƿۛ9Ǭ Rx+rp՛{m[aQ| y`pO`Px>cnAmm51m/n@xn7EJ֖|Lmmyx w?8] pkڰ"n=xm#;qY%^x9Z n?`{- f=k.VW:\C^J1K>ޑ/(T g4Gᑰ\5}~gޞ(iWe}}rf=S%bG7~ ===o^x-H3D1¥ kG5)Ux,|a%yiW¥UvUy*’7,oe8vt ˍԦGOӗUܺTᑷ7·Wx<U(('@}H7-]3;uyzg8os%=*s*2f/,o㫫!MitqG7CՉyUYm{Txn<#W4W(=2seUGrճջ!Y3-Jvp# )<~95#Z;g?ڸ<_Auy%̻=l zf.Y6셎#_//| Y:ӗL̋/ة:2Y|[t/yY ŒBŔe M{~T£h <;zS6|Թ5t%r>#ec졳uff.<ȝ2O־Sk撮p%N};[x+O WO+%}3f, 6-*Fˊp!m#?[FޣE?L~)9[Вkk~ hӧ邜;w% \½ֆ %ΦL_ oT M+)|v~Nu-J:Z+7ۊyoZ]}9ɦkJѴY憹fŸ=/9}$Ij[8vMBkr;/l\:tV}UGشmWL>4@Qx2Od<y  @)<Sx2Od<y  @)<Sx2oJOOOr"""""""""""$ @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od<y  @)<Sx2Od7ppp_^ C @jhqNڰv]uyccL_GƎw ;ݮҷλ;>\UnO#pVUC oVWUMi;p|YzN6vOC7\n4# uVUC ގ5h`s2uzGvWxrj|Xx\V[͙h~c*WWS*]|򥑌e_&9׃9F[4)t0; ԁ{vמMB0-yuu8tz# ;_}*L{HM_΍੏[s~W|O o- OOK(%=M)[xG*]r1е0i?rҎ#aSO'zz$=+Gojkk}m/ _}&\s]AyFMy anf^Ia۫h)gpzƿ%.+-EӦ?'C;-qCݮ$)*Ln O?iF}*fp4/<|L^ӝ@XlqQ;ptX;K$S?>Mnj'8xbQ&₁x{R2NKK ɰqppя$,PRx

        fζ\4;hi_q˅psZɇtGڿ<n@#y9rL'-ko(WxLOtdO֩=2~fǘ2c FkkR ox3$뷒gx/YRrIͭK^RԊ=KƵiy7K[3S ®{i=yG#5#i: ܿ £jhᑸRyj~hiϧXx;yjj7m^cgKzfɺ ~;l],6wvM%*-<(oMZqᑴs ?4eϻ3F&h Xx$*9ߪ+:zq_U>CQx-|T0Dk+GͰ|Ԋn; EƵZ`Ԋms#.Yܱ> !a k"5#iJG NxM?mƂ?V|,S['(΄߻RtH}fKDkk?“sR8s|t|8w*qj8._ Ϝp΄3?^ w2Td\018@)<Sx2Od<y  @)<Sx2Od<y  @)<Sx7i͛7ӧCooo8tP8x𠈈$~V?C7)G1x%""R{g)48q>\x1ի"""Y?3ghL྆c3;zzzFmGs Ie쌟LGVxǾzҥAo֭[}ds2~f?K>WclvG\#~S5A;wܽ{WDDD 29?3ggVfy4rh1444:xs޽/"""?CgiL3qװСC݈N+; PX?Cgr3qװcly\C+=giL|x5ݡPx#;7`Ux@mgh,Ux<+d2FPL(QxSx@sٳ/LhcNJFQ?|=L{0Bm T}mz dxraCߠ޹saگ~~ Ӟz:pwz ;_}*<97w/oNU Of+NÉ'®]† ƍæM&$cNJ;cDѰ㝰vڪNǶpv<`P ;ո='Zڪ]p07veٶwGVM%nSb㦭k__{Nk*{64Vׇ5,F?dK7Ksi (eĺuڵkX1c'Qx0AJvp혡6 ^SIƌ~VWxCl;vawk&vfn O'VT6X_6|^Ǭ&@XSx@>Jڸ-YdJطo_X~}b)RE5]|I! Wᱲ(v;y{4+¹{)ƒ;޹;:ug ۃ IDAT˘7 .<5ŏ2F{>@8ӳ?,g\IF/Gr|2/=#2I%$~o?<n,BnܸnݺUQ>VfUxwoU\y}?rf_1y)jv[yTjRZ_NXϥڏ[w32%Ӣm(+5Q*Ze8|r c?-$?q*FʺOYU-OIw X帱1VR90.ܫ:o05xGZ*# f8Mo5PZ*o߱֕n24Sy\jv_X2bm?SךMz%5oQ>X+7'our~[j_/}d}wuM6\.]o#%^=ցOc/׎im˦s3wKnw߸Rk^yz [>!Wdj|nNYY2@0o'U6v%Qƣ 礫\, ͖m9ƃG\k N&FŎdP&kNȤVFzȳvX{tKN9H3\v"چF7+=tʭȺ,G}=|}U_ L};פu϶Ovzv6"6rMԕpyLJarums9o?)b)lINXnw& mt]:,^WkiU;->ʳ*6FNl~'kCuW `Ѓj]H;MM_ԩScԶ3<2nc`zD04{ӧâCy~d=r&nH>o G7|P'-7 5Y{^|wi`|E`3\Q俨pcw+s?i?fbW\=sB"ƹx|tNku_G\"̦moy7'vhnc9o~NP4y[z%;oڢN]Ye J8^th+g2ԘN)S][8QJ#AL~@ߡa*=O}JL՛jH;S $iG4FJ;c<[UOGN~ʱIϹ>晴TP߹aiH_Z<.%=kl?cx]>n^+ࡂ6LPSRիW%sZ,p9*]}i'T[TϗOgv wzk٩azkAvjŁ3>s>-5uܷkfA^\_[v<0lʟ{'Ұks:ࡧ}Jl1uٷ G;|1Z7half_U^UNJۉϗFY xz/P%W9V'\qH/R^[gOvUYey_N=aDe/pu[)C:[b ʭ=Ѧҕzpv$u_c]gXyr:ζ`ϗ|GP).?Ϲ_4xfmFQq(?h8zpmXN8I\!^ܶUM(}YWYa/?;jsݿv+GwґA#LVFN$z9J{i [Ӫ[=чדS&ډ@[ڗ[],um ۦqǃNcy^,qcһn.gu*EiȻDH:e)mjR 2?::>%{.S{VzmYkrWi*}E/{s7c~_O6H믙?ZG}z~O_dҕ*>}:D#Sh: c[^;o Yf{x.;[ >-_9y/pOYb:jN4>쬕ֆ͝ڃ}* xwzmM;ֺN$;S<0p^AGnZ3 xubuj\<"S\K#6oEQ77AulS |IXfkhpβ }E{ÀuwY>ב`x #UJD/n]F;ur2 [?r=QIMh~>>UUxm\l置~w눷=_kC Tyvl,q_0vͶ>Tڭ*𖳀!paG"c+##ȳOx$.+Vp䤜x+~/ 98,? CtG;h4XǦ/c9k-O%R{沜?s$Y9S@#g˟.VNG~Ea+j~fgˑ77gD}]]]01ޯȸtCi@Y-WR%Gb_T1mp}oHedtuܔm+zW x|GsF'ﮱ;[HmG蝂;NAm'ö0{gmɦ zج: J;OiAt:X}Ǜm#Ǫ빆CA2 xOOovͣS xx/^)7w\nJVurcm;(M7N¤qj#L:S+(+t6E>5)S<=5EZ?%k[{5}c lxtAv뷠m6qN/Rﰯql=K6~F3Fb _ˊJ+5}ﺿHkxϮ| 똵kۈgc'&ԧl:>旿;k=2/{b+O^vҥKE#Ioo)z HuBc_,Z7`ѿwd3 ܺAT[Olx%;aH.f5i<,ML)y3'Gl -z%G3x & 6A#:ePn;W>x x펀*M<2cHp}Q} 6{GјT-t^;=a#=ߘ'-|Xt/x}LnxAXB_ȹnϵاcԧX#Dɮ뷠mV?e~/2}Jmi*Na Xz`ied}1GZ1yGM8 Ƌ׈ &Hsz=2mS5-u26_cgs< ehhH"Iooo<5ᜧ6̀GP C! M~ԿwAҡ?{=e_>9P}wOe9**Phls>+on%Z/(ІɻCYۀ|` IaQwʈ<~o|+U.a;xX b<,ῚG} kHNY265<Bk& uS< HN֏! 9nGӝhH׈A|'M݉G&36h{˩דi|˓G77)́r6'ݭKyQ1pv?\h'dڞlt)[}I%݁.;)>VƵ2'_/1c}tNGB*uBGFz~| Ax=~z~ZAzP.`/*0)y xEbOS<=DzP@Ǔ7bnŃ,i澗m>N<"< {wNkoJt %>yŀǖ fvy&jV?g==9Oi$6)awx0 YՒT@+:f Z^q䣆VwѠצ蔪͞#0i2qTB '"O;S^(J3,ǙRc2>CM+oOw4>iK_ lxQSS[hj[倇-wNoFE+;/_~`~qlwCkpwrۦnoo…`YJ2=hy XZGH֣59-CLj i l;Q[UMAur mqш'_%nGwFǤoY`{8i@4=ՓYmS .vJeIAou^*0턾Kkd/N9N{ z x8D୽ w@nyʳ펿> ϦFxF*ފ1ۚ+y-i=hظU6W27 +W^n{gQWlȐa x+ھ>{_Q(uF(xӔG|R^éSѣ7j(Q6$ <{[Հczɴsr^{C{Zf_{_}JڙCVXJBN"{'>-Elkށ뽈n*N>ܫtƳDlԧp.EՀG:ڛrs?;~slw).wHҿ+yn_`7zt])2?ӵN6E+E5 dnډ%m 6O\<+i/sXQE#}{NzoĄ6t!m4If5mf}eUIjI-dȬ_:m˔gQ_ޔVkZOkP%gkg x, M|wW7'ڔV,6VGssss IDAT Kzokm%$wn~sv=79G@UÚs5 xc*ms&RnԧxJt~y{ 3?q#pwkYvuHko:Tq֙)JmBG`g̵הxt"<5jd hyG!΂cie<ޖkf넚JcĻզ1:%eH:o;ݞ}B֓;o:\9xX72Sksَj_ ߪUNh_Bw^SzzzVo,]_BFTxGhذmm4tvČ\szPG+322<^ڃE6k-,y='<+h/gVn>eQZGtoie |j6=ii!ۅ^_Q ~ ~vdkH}-I|Mi .IsEsЧ8L4S8.83D^X L#tI xXh>*{sPnƏ##<ŽO^mQW^䋮mԶ3*Fu0!!i?40p+uS.5++)pg9mY%]22:"פjf׃Z<_ǮXF0aKN&0?G䜖Wɍ!Wt>M(n3!]rW%[NɁ𻑿UBGsHGn9/# HCxi"ZmlS4?įg砕]rg"BtY$rp]g72x8n [z;dx!KuJː=Z7Eꃻrk~T2엷ӝux<,0}ru[72SX];`j%#x~MYHK htPڛ?'+mTʵu&ƺbqVרUuUYRE9YX^\N;]ߴ>w2Y{3ܺ #5GĸLYmݎRN}KwoV3W9=VONY~GZ>/1GWɼp^#om}+eit@lS{B#ry>d~ ]n>y)txzXMgȀoʷ+>MmG@V!+#NEێ}'8&@(^|?D2߱/3eku58jՋ!e ݎ}WXm݁X~jGԥFl<~X%sP5<=lopzpyf@òw6s;pvELZ/Co\< cS$Nu׌>ikU۰+{TηͿ]1k8xy]z'uJNP3i Q ,mVoh )WnJ.JNN-e;j47\AC*xJ/Nc mJkA{7Im4R$.S9q<3&OGsFl9;iNӘ,<-CmJzߔ}6 ;&]@m>}u+#}^zM{O{9;o$=x=hTHjU!fî7Ś}odzޑТt|}*=Mrg2L7ESM=h|\Mȍp(/(;yY=7ߡR9Ԟ-~S=?{.55| ZC TW.L ({6{vt:ԛܸB9A=𕄍!~|Fϥ ׌NoT7yZ%K/x"[uJʐ۵ճ>xVzF\7'xۮ7"ҎjM)Ei!oڛ>*AgIWԶYOL'Iw\cmg+Ჹ=]ʩl𑹭3e\eB#ʽgSn?;Kխܷuê7{ԇ [u5e.+ץtA-?r 2Oaj~9ϳ~겺h Kk 4NWi3~JvnY,ߡWV]8{dX{xrRJ=m=Q"}mu}R.v I>8XBOSReƖ6ŷ;k9v&:q9Sr~ vm#MZm딘kآ7nܐYyoRۨmc%PM#?MHdʅ4 sepb\Fc<=0:.V~Fj,RL*g#:`SꡠZt<2MToo3.F\\??*m8'5Դ)# HYPeb\]7 Ƭ!_4cw` r~"s\NE;j[S|e4r,28W~[e}W8zEgbl|t #j.H33Gbl7j:D{7eh"VO-e֋O)LډH~K0remv=ܧ#& ʾqDu\7XѠDZocۦ֩uV>R'LyUܷw?`<,KU/ǚ}cW Lx8V*{ 2i0 ˇ grAap8^{䪵_Y9]wSk zvH+6㯷ɡ }x%={6x/rߤQƂA>Vv6!`]x ȝVm$O m\%KmGӟO,z#X=VYYkO'kmGgFlԑ)"*~|zj ^_udF,$SR;wY xXxX`o^KZfB?\|92UZcC#rԾwR9¢!%\`<$ʳy).*pصxt#, KWMiiP֣G_z{{swR酀uiC@[xX3X舾cAj滫eJes^ .-?ڊa9rGn9.}*S2G r@,5M98O:FITm'kv,{<@#xG= ȑ?HP vˍ \"XQlڴJoKL ]K 'Jt@ &;8$>LJވK6W$A ;۩7RM;g<x|<}4B ;vJg3Q29 `C#IxWGRi~9.>NosƤKid?~PC { w,vJ_.v&9grso;d- 6ai( msm|dF}m C*-}<-Ǿ ο3S_WqFM'|3';Oˢ72Iy-`԰GG*wDЧ:)2-T^(&<~#o+)PYk}$*!;bF)(k=P+ 2 -;A6_Ii<رIpGWcҴ+^Gm#v톇=yĶȈq vm=~ظؘm~ɸwi;=:uq2mAӴ:?={̸m;U.L۩rS̴*:UnM۩rSׁi;uueN]:uS׵NT}Si;U?۶Si;U/TiNճ:USNT;d.6$mSvІ$oC 0mڐmHM۩zېl z6mڐ`mz(mz(mFy(mz(mH><_l6>iCZ_m}Tӆl>*<x1!A6<x A<xGEG<xG= y{<@#xG= y{<@#xG= y{<@#xG= y{<@#xG= yʳ_L;~Lu`UӽuRߐZ:Q(=ZrLK㩴<,kf[@LWn7OZFdfa t<;}غx^!0W,6wb4 md4sx̝;\i9% #? a9o|)vHayFaIi|zw*SZ|mhK-6I(-JaQX^NGY xLr.ټk7Ɔ#ֱoi_\F_;c!:`-}77?ynxNv[+[ְ#Q[n&Fptו/nݱycRZpTl;w'[BeR.㮅ݿŴJ+|-RxÕܘ/Nȵ{NoD^RZY3Zke{P#A\SD=uQ^׺/wuƫAl?A֕P#XvJB\R#'NwӽV~)q܁]>SkɌ,<;#WJ|ECkVem~o9/K)&4dXdzs {}92آNwS)?g!E(V_drFʼnpHw{ xȃӾ*/g;QJd5؃Eɟ_/J;;2s<:Cra#Kު41< vk*́)~L4 O)ۺ.ǖ$Sw<˚<<+mLcreA>.Se͒HP _߃lV(1lX "bަ) :#YS ?`WWf0GP^߹_+З%pZ<ퟙřG\Iza 6ᱥ<=eN)́LV풮u7f ;;5o Q>zEo;;WqS@u2͐aqk͏}ʪl<ܝ;e/&K&}E vߑ,%ӂ+Ź*Eߦ)^oU~~ 0(gcu/nF$l¢gZ(ͻpjV4Wlq mlyn=c&~S.5|d :ݟm3[Rn}pyd?;S~6T<׻LhXpHr\on+r,06W?l |:[o|:l<'<3K}4>tΏ;1Wme" ɵ .~H2!2,J }n{e1QkdLD -AGx#7wb2#t'd ?Kz:I_:FxH,6U x4J?គhQ>պFKΓN)yPQinY0%ݭd߮yC|*-Bi 6X3D<,ME|#o}hmoj{L,9ᘶ@]i)k G,ΌO@Lέ̩cb\F#[pˋ2ewx|S)H~MIFmFm#?qG΍u̓cOvnfdm*FʷXOY4 @#xG= y{<@#xG= y{<@#<111!ߗ씎D"HѤFFR0[Q8tfH$<ۚ<7wޕHӧOٳg$D"ITmj3cjK=ѣHgԔLOO D"H$GRmj+UNnPo:i~Hșyy,,,H$D&66RTmjCc)[XՀGl5-z[UuިΜ/^,--˗/I$D"EjUJPmjCU[[P󏫎꼉9&H$H?T۩PՖ`*<߿ v>bAՖ6UxխZ#6ZpUMc;@rzCMeZ+tʨ7R\jjF Pmjc^uP2*W@zQMUxĦ"@zT֊Ux)8 ZXA_9h[Gi2_"!K2 x|NU1&NJԃOI['e[= Q'F1ѱxw<2huCMs)8n:kuLI-+^I<(paW{-G#ҡy# o&Җ\x1<eі[p< /{lG'*=|)CtBЗ vJ: g=,NHcuKq4rh?m\H<,Iwq [Xܾ&{YcL7}.u9,GľN~[M#I#ia,WZ_>oI+# ҷp[OɁpy<*CM2bꇘ|(-u7VqkHTˋ2) Eqv\kƼܗsv*ζgL_|:7fD_m{\1?)'Tٳ{\*l*1M;9\,ɰgZ&q]I|UIw|;7:O9}}*ok} JE5eieܺuS^W|u]hN= WWk7{MVIq~ 7Xpzϭӽ\wc]ym}Oi.+u1o?eZ^~7r}ij1:3IJH:YL{U^[ƊxVlk~NYa }: [+o\ nmHuNU+}7U=z=ھ$HUkE?QxtҨFհ2Uo8q>Ol6bhI[RYuohtIz,{W۲pn`[#nݺ9!u^?74HKlsYw<#%I>_+%.Hy^yէ}{&z!U4vů͕r{Wb<ZM~Xޖ)v.'զ(/q٪=?=MƨO9:_6TGYũ^3KT( RUY(; ;g\&귏Pϱx<-2{|潗3<~ o0#r+g$ =C}Ԧ~+i=Svd ɵ,ԡʏ5\D .]_Ce}m omϨ.ܿbYgG="f-m)_Nve|k8>{S ֬7ԉ.CZp2XzD?wu>gO$䫞Fz8.kTϼB)wi3NڵQΟ۾{?8]^75CrQnW\v^{GJb׮QI3%<<>7gr ˣܲ=Ԓʏܫ/g *z&0xx:jwE5~Cf'h,M,{ŮԶ.kuwq Ϻ$<^BCk"h$=g/X>;~/7.Pë=f*\Ϥn/ٟk)sMx|6 -wK񯾔}+S F&[Oז?E;g]X={eo4TcD2I/GWH.3>Gt_UFӲMmWɮXo]Ʉ:G;,}}}ɎDτGCBU?w!z#)1F{qEiu,oy _--%׆-*6DZѓJz­sL?hHg^ .gv[sјpVÕM8~^ҮQ~@ڿCdׅ+-q6VgA;~?^vco]ߐ݋|%=Ķ3Ĥh[m]KO79*uݿ#\pr7MxD}+垝+z,oT_X e؟Li& G$~БzTcm@{;p<єTjmxu?%}wԏ _zZ&U97.Ѥ]o fo.@ IDAT4 t$]s ]{~qNz]:~ZCmw?|q\%{=~}u*<(gηt_콂c{Sb3։9[✴|UVpR9ݓ~3?Mx,\SSN=8|Q=@zv4>h>$ѿD#zs6OSOu=oލZ~#@o *o2Nwl.6A7ffA]Kֻ:rɘ:׆Oy`Md 87 ^OIFv}BڠC28̩rwY8^= I4שvWeuzݳ3iVi('*Og7~o\ͬ1grxΞ 1's寗=kױc||VvZn{rxIbNxd{Y{x_*y_#g\ųF;A/]]7w. cǻ`kY޴I-XdL@4: 19\\|l3XY&7OwJ4ž#- $>Лx~16 Ct: gwM蟽ѫ%yB4h!~{ !3!Ҭo7fڇ\ʅe(|+kνr?'s.ov'OI#֋`yQvI#͛ o=z%DedP=DF2?2="xA'<29_|Yݳ}} fVYb*OFuN%}}r3b\\8uw3n$<>X l)`:RTV)Cspc#g\ųicH-ܯѡU]nÌ~]BiC-9)~ol|ry7.'D!1_~b!&/W \M`'< ?_=b=skXHדĒtxx:/Ӕ߲K7wx6W#rqAчHՇHsݘvַ2]F)|Ͻ3=#1=5^#1FKfŇY5E#]O#ݸ^`iGs&?_M4S4V[ 74e{#`'<9~7VϹO{Gϲ9?gY<1)P({_]Y{t2>(z9o=3'* { mɀRnV/<}:aM|kk#F*? nۙuntU ?y&1ŏyʵ%e<3ӆq=-4d^og4ոye;'s.i#m=JW^8_ 9KMx= 閃}û'< \o.鎻~̂Nx|T^z-y\isNc_6=12gٹ~w^zũ1 7~Gy*frԐcYkL8$?m|bÐH%!~QTcOx9jZc}sF+I<'<9P .z _dy?5^g̓{,בu&'ƴ9<ҝ/޳hk£1({~>dRMI{z_-=üSjߛ{rJx;Yʝ/W|c#gٹ~7S׊[/iGZ cIS7s]BY=hzx+D}|N22>_OޗދSG~K NJX| cnvG0 `4R`5S0<~ߞ|4sH߈fzt?ݏ@]JxXgOTKa7.~1|jr9NxБ`;H5Ʉ8's.2nlXq}v?kdzvLt-y_ekITk>I-Yw~7c{X6>גsל %MxxI&{r>_Y,x6uT1 ~C61鿟}Jd7%vLx)0{mLߘI?4TrJ).x䍵7^qѱ>ǚw8+p dǁHx"6}USE[};V{> IyJU= fX;otN(\ 717:"#ɏ,g/,w .aߟWaYVkw{L)&< V:\ꚫ7]suwH00o>7ۆI;4 }خhltUڹ}^>-:CbF!ܐd j4yHڰ_xc#O۱wmt{&>òxFOX,775zsſM[mq뵌rkGi\Z]}sITwɈG6ԗgJmGe/9g{]͌KW}sHROv[to/}u@ϲ>V?0%# 뗬c~|?3IdF9PzLfdQ }㵵ғ~1-er$(Tl9(c|1%cx39V:D;o+ө)zܞ)gr7Hy-E?-ʏKpKE?gjlLu7_'*:oiuo̸?qw#Dl Ue!ihnfinSKeָ?ֶ#pm-}X#^ii꓾>i9bh0&lP c"]]][XCr9\߳/Oy+m}mk^o\`Cg6v/4ߍct]Mrl[qsm&mk]9m9ettr蒚ʏ, O9A9's.ҳ. J?~x'3 g#;vw]Rxd{]& 52y UXA[F|P4룆r.Vgd9Fmrvٿ XI*xߠڗ[Riێc,/"e}Th]eɑ!>kdz6?7h_CgW|n8ם/V5{OCCCfF!{鉒سPhP+l.}%{c[ bW/_/j=s:ާ;rWM-:X{|,#ZӐ2.bR?^/F!>=,u)>GtcUc93e/5P`Yk2+fRWHw9y˖<7\+ ]rj^[I:gٗ}D?[Qdy =7~{3sK+*$<ĞxTD;o$#9tj*Z,e*5tw,z9 XDZZZZ)Ixx7z)k o~ ;pa}=$约?HLxx޽R}$<Ӵ3ccЇ6Ceƹ>k{7f ᡿6 YstLp ~ ?RyhR?yyHx k|W9|˱{R=IKR=rOx{IJirK^ՔY#{=)cuŅ]ncfz-j:7wcu1Ї+zxA-=u/{X|©|&<xruGpw/3p6Ml-9AcA$>B;,2eee|v `6kG#W-&7B ' MRʦ~tY}"m49mY!;RoûtoH!oJ6^hT.tF86S}e:enkyMy`y+k?ë|u"o>4ټqJͱ\  A^ZEzMKO3!G.z̙HJ߻a'{> *wYz%J&1]g^'LJ60ކKUY= 6Dd~ܸ=UmY\{ΫҥAu&5}m,K7?Jr:5u7X'\X^4O}rKF'fϾ?6ˑw-K>5;9^*µ=CwȅoOZ*kf96˪|n$~9={yh|s񾗸&>gL&j'1 ĩGb166=21r$߃<LJ xxpDihJ:cCcY>>] 㬶3o;;goW.Uϥ>Gn:j:gFᦴsf$:Z} \|Ap^q՜||fq'ꧮ֙^!7wu%쯿Lc>du% u r٢{ }|r,W_Z?OoI =R= k~el^6,[n, ='H @X dHx43 VhLg#9!= @Ȑ`}})XN mj~@nHxp ,Hx2$<55r {*ܳ v 'eR${U%R\\}1Ayp`"@Ȑp"@Ȑp"@Ȑp"@Ȑp"@ȐpG}}}Afbb9H$w@ܒd#z;5 YTufg U nP=W7Ϟ=$? '9TĜ$;VCp$  _aP6z B U7:RՕ$:-@ؑG z$<@G z$<@G z$<@G z$<@G z$<@G z$<@G z$<@Ykii2*~r7o4.733cY֭[^xaYոevrn߾m\nbb²ܝ;w=ܲ\GGqgϞY4.7>>nYݻ,ݻwϸeD"r=~زÇ X{q9:i99:~2-AӴ*:>=}Ը\WWe9u^SNgySi9uu`ZN]7:u]SסN]uSr~Sr2.fYNL˩N7M˩N݇M˩NM˩zδ\.uHu*SrPC aZNSC!A S*!A z6-uB}Xꐅb!bCRbCh:6UF5?ubn"Aƒ *$jzx3OnG2RCF#ՖGK&:jdtW?,";G9QyBN>Sr74?.^x;:3%CMezr,׏À\<+DoL-c'iphSNYó:ko=\,YH;3~АX/n37 + =pr{JNo[- dM4Cz)-s{7ɑt@KcYoqF>>(b9ʧiƹ`}G5(X/)ּ˲.?_ eW}߻$S]'z]\aO{RYVdLl,uͷᘠof"sXLNcl2 k`{*V/j [xw^7P~oz^!GOPQ'wHko ;p̗#D`羆Z^tL|ȋſF%:cˏEd$" =?>ڞeIeU'8{],ߝa( e.,3,z:/}l,6/5vo=& ;MJnM M8{gL4生[E/(I.<<9Wt&7SbhqK g#_Nv9?q*yd7)eL[q|2rV&KJx:3i.al\Nx,2Q0 Ե92OoLx2 }y |^J9J80NJRsgb`VĽ3%`VUIss4yDCLZ`<pVL=7qLSS2FinHSNm\_=aJF+C>V6L",}ĈuȪLxm|sx +SlKe>iyy+K3 ɛОh@r)z/qܶك$1Q2A$%-V3%Y 'BPsF[k?8mLd0$2F]nN6.8C4yy;?.S.dSĸrDAR)]MR^n\>f?lXa4DdOe d[SrVyք-Tֱ_$(G#yW:eC,";0+ˊ<)TԴ&a[cǃ})}C/u~tFcuu;>JꩳJx$`=<$@:UiO.dn E}Go\ǘ`)Cc1z ͪK\:8|]ޛ XcٛI 0 ᱈9z [R?wHx<`Iٵsl+ŮGm0mהKqqIrȃG z$<@G z$<@G z$<@!MMMR__/uuuAĂUJUg%H,QmmmUOюN,NVFەkesy\ FFr;-MB?ăY<[ʯk߲@BS WqarIr>n9{{gR@7[#[Kb8|\m[skiL Y=[qV2rXW_ZĆ:{ܽ{W>|(266&3_Uu6Զ6նx}g$KCƒqSuxm XX;u~pe2`ބd ;& e G׵E?O5 Vls#K$<ARgz'zGCѣXmKmSm;΄_!mG_h]WNœ&1=)CQ6%2X?\}glY3Y򘜝$<4CcE~3>M92gg8\+ʛzu|c[r#wcg!5v!|\f(/xX $C˞7 \ u2hSjJCuB [Θx7cC-!!RQQ\\ G-M@<  =MuAik3r-IvIHUnya ioBȗ;mh-diMhN.Xn{&v۶32)lstUٴŖX:ړvKͲY]؟F}F-פTV~VKz^ eEr=sMw{^/_os_ Pb#Tmjtݟ_*ghk,. 3 w}Qi\|=z9s[zHX #EͿ6(-&-4-*k["$<A9qTp]HeePTnG_e0LH{.ۋȹƊÝzrn}?m O(-,Y#a@Ei?zmTcpeo`}6G˥0O tUZ'm>u\vv[=5X|jm9o?<7 x{'r[_iu-9:*k"z~Ƕ\\ξKߑ>߶Tcw0LƦ<<ݢNx \.v$(\۟'dG"ۍ9y%<Զ~&XXz-p}lo;zEڛyok CuIRM:}1KڄA-|rWfor,Z'rs.IzzGJm[7V z<-1nHycHTc3M£5>c]M%BgHo^Wdx-G&&/mt(᱌ x[l5k֤Ix%hh zXQzU6oiԭZ Kk-s_=1j|;զz8'q&D3k2v{mL6^lK,Xv{m쫵%rlo{&<.ˆW]{XVQ,mYm9Oa7s|gk۩BArIx]?WJͅ[RfH&z.e{cCJm'e:+W' i5 5{;lNUmRuqye1Yי&)%Z=sRE#{} KsmlL$;L=ғ $<[Vk%lQ4׃LLI׍yېE%<7^Y23k?sxx:KH^E>XJxX{>gELspEcӹ葞dlg @ȑacr#ap0MLOIub{['oߚ)ۿi7 u1照-2iIr,~%Db>t7.V_u0\s__m4 ˙&7pbjy<< 9N:9@XJxe8s}N^|X,?n+QA0w4GI5w~wc|ౖJxDÒ皒:.,zN45獙鑳y\9zuxfĹoeIxʉ'<p]GHӣrsfgc$%4K"͓\ ag™5S!=z>h&ʦ {>5:+JW]{5zOlngܘ:wyNfiUٵ;ٰ珱@|hʪtCjZf?~W=w\\n˅Kޚ$9l\@Z̽arRsiIlUV<<˲s 7rMV4a"sZ6G IDAT߈:l!RMI!Nxf5ic4~!ɱT9܉3 [lc/j=lݟ›‹)x$T  NR xXcҥ200v"r5}v,QQ%-<ZG8^}~=>GK"㧾橰bI|'q0CaŦzK+Wy}RŊrռ~ño!֎4d>ғƛRX_tY6)=|=19]yj9XX'Ή1՚dm>9)~%g:$LF⺬Uղm  ֭[}/K#EPCP]zUΝ;KejFP=;fdrhHz?;gH&_bcdDϠDO^a9cCM!c148{,")2-Dzfϲy>.IZ3{G'c=8~?w4=(~,.?D,>ΩG%UBHx2$<Hx2$<Hx2$<Hx2$<Hx2$<Hx2$<Hx2$<Hx2$<Hx2$<-Q__k @ UUձyKx455e" rHx:Uխx[£#(C&@TRUUձyKx eZ[[c4333$=Ȑ;URUUձ%aa=zİVd!1K e^^*@;TOd?+HNM$=H|`'U١Bթ[2>TOzUͳg,  IUG21g%/9= d+%/{TMGGG, BՍTu%wK(v$<@G z$<@G z$<@G z$<@G z$<@G z$<@G z$<@G zK={&?%BG8TcIssAAAAAA9RAAAAAA6Tc$bhh      "8D"!     e\ǒqQ166FAAAAAH9<\      K&&&      "̱drrR      $<      AAAAAAAƒ      AAAAAA$<(      HxAAAAAA       AAAAAA       AAAAAA$<      HxAAAAAAƒ      AAAٻ|9gǹxW89qBuG$D|iTЈ T@E_HD1Q:@HߩU\kU*7G,\oAAAƒ      AAAAAA$<      HxAAAAAA       AAAAAA       AAAAAA$<      HxAAAAAAƒ      AAAAAA       AAAAAA       AAAAAAAƒ      AAAAAA$<      2/ᱰ AAAAAA HAAAAAAdTh9-      L޽{'Ju|fx$<@#2 HxGd< x$<@#2 HxGd< x$<@#2 HxGC(*E;%y(o)_͐6xQ~>dMk'ٝ/-=[W=_'٬{?:ZNx:TC8zFZ!y*sٽn\#&xz- {)_IJ\- $#5GJ~^ѣu.Ii9SDAKÏrrW㲻Y]po]$'׭[Vѫ6rt >S/'#2\o•x q.#rcSɹ-V|oA|}%+RSCBJ%9ݒ|YK ݥl͈s"`#y*ɂH #rfN-aGx:8UѫR$=^NނIc0Mibj[?/GRH@'<:pN=*GFޟh6˯o  rn=E}o]َoLXЗgN)?"&{)b߳[7ߖqE8 #۩FjVCrJ]^i>T=?w)d˖Q9]YrGC1r4#Pv)ǁ88ˀ~꿹& ~HƆ'z7. oWnY^u;^G!vɀǒ~{' Qy*C̝ёasgre|PtU!C4ގ~pO| (j٣[q%N]%yH v>vG,D~g68$b/k#]_h|G{ci5JPNò|5L$&1c_ߛw'TV..ZdyF~h"˺üGÔ[D~ʵ})vq-mb+ZռY޷>jӵw=yPW i*ɹgد?1'_*?ި2ɹ@"?VP"Hx;#/&nяn0zJ~;JmU: N:u7a=o #Ty˿rTCuM6#Ӯ5HےG"r̅i-r>ayJHxF{1C'[z7b(L :s?)I?Y4]WC7 Q\70Z&}  i]SI~%Qa(6Zis-$G$v)ݫvju_,*OeU9[|0>:4@^dpW_N-͸4+ cj|HhF|G~$lI}r g\I <{[^e섇~ĀtwGi:$Şr\-СrǛR^d]Ļָn.o$<ZCە)'SZi#EZtm{m+N B!iyO~s)dr㩡qZ [ꨐ$oG*~]Ӝ!'\^@S` py%n==5|k.ל\Iyr;pU~zY@ ҠǙh!cuo:OۥPXdaM尝􉕕΢QX(Pk#~KA.o$<=䙜6j4\uRRhH\\vGrt _̙@6<  lO]c0NS@WwVJgÆz(vmeKGn%*\'g9Vud ޻&,9gc IKxT2%s{k\,oli$S).ǔECQUC|g)Dv-%G9w^-ƺ2{(>N;HErFylD֒%< ŬRw?-PÂ[^#H}؈+I'tbHG2Ox7R:j@,InHx,Rw(BnU]Ol\S^:z\QP˫6lҬlS?iiVםd%"3[Oxި=jiyP7 *rP7%aHl׍(zBI嶝 X$ ۯmr0 #OdM-Ƞ hdIdVr߽$/_DIyB7jyV~pomtE7y!GKbEaNٽg,*]W6 DwrhubEDzfHxb|45RGJ&~Ga#H$<@#2 HxGd< x$<@#2 HxGd< x$<@#2G}}}BAAAAAAƒ      Ox0d: x$<@#2 HxGd< x$<@#2 HxGd< x$<@#2 HxGd< x$<@#2 HxGd< x$<@#2އXR͑<[&ORn ǥkrVJmvUؓv4|YB+mUP\H(W-ep 3GcjPn4Z'n(x-p#OgٙJٴi./9{uC6du9UW/t IDAT +q]&;Tu;eCiT>FvCnuvˣ7q!L5utWYSu[,S'S[<^|Oivw`s$i4q.V#Jפ ȩVllcyBڪLvQTh'weǖ;=a]s;{MнYrxno}Q'hNxXh,zOwda?pN6-^FIq MbK ah5cߍg}!oguϸEVQ̙~mN?N/ߟ]-ʿ[6^k%< 19^t:NsFܞTl+rdco~x$%1' R@ !i;JXHU6éX6_Ԅ[Tw-(o i 'kI[`,JKf6Xf:-W I6$a6}4Br_NN5XqHT9ӳs -Tdٴ|b ⟛]Ė;e -r󖴶|-?MX& OQ siZϕ>IfGkDqI ;Cݖ^Ŝu{-ZZnl:}|J}6QugC) eYt?fKNn^$Bjuꨩ^ fI4|YBht-B9;0oZ^,rb} \V)ge"Q?p_~4JXrpc=GngXcd&<&~v]Ska-l) 볊oVg*]rYEi;)Y29#I"Lm$ktM=xѦ-F ر kZ6mZv^|JsW=)oS R[=+ OޗmdI4M>풞İDZWulҺ6Y[=nëI♁kֵཐǀqX eDamG7-Gu{@k/cڦWNq}Qݿݡ,)~SIx^V:*=mtٟ]LZEmGl<|D1dy[5/MEqtUD7'}^m؝gdn p)OxXusG0ɼ.iϬ-{e2qo*a(Necؐ`*<#sl57룆2 R:&<5YSWC_9>U!9Uﭒ _8|'S8?z|: ǜ4y cAc}萎Mցl\zqu&8.G Z'~zl̔VӴDz]$)Ѧ+mrql_9R\`l5l򤸸@dۥL 50v :e0 ֦>:Rt7Z#6U\lJ+4Xv$EE޺}և$Bm s#F=GSRNҹ%rG =;TaN nȴLik %%89ɮNYrm#?\l;:<:%Y 0Lsd 7M4>cBj-zNWSTE-_U~%SI"[fn8`=D[UC/X 4T#r\5]X%6z>xc=5K[~FmN rO t˝x/~EG5s[u:m:;c/8#k j$̡{%iU *[, Go 'a9>Jz#Ŕ'<, STp6?8̵>Nf5ՔXЩ[?ƬioཕSZ_߲vOx|Zf['7!5Ԝu7lЦQ TǕNuj{'*1з$6ER)Ae] 4ȁ{m-b՜6=䳖I>JZwW׿4zޣւ!pdMY;wG]N\ OS%?GZ^Gx6;&<5 á{VC{*AȍD2gzc32ed ݤo壍NLmeXGωc) m.v,;km&,9>I$!ͮH԰]GRcyk/ QkTcC=iʜj}x6cq\7}ц/t4NYcۡ[nwOy>pi녒 aF22.߰\=)s^JO1mMs{yYLTTf[~h%(-ùv̄i?n  bX1ɿ O}a3»ASj7>L$<,kJf蓊l43<$%sZ-#uP/_U<!<L}ڴcCb;6{r|@LOM\w5>f㥫'yGFwD c'$ccsqdI7gC$<\PMi;%G?px9%=tjPg]c1a)E6 A#2 HxGd< x$<@#2 Hxe H^~^4rByra`={}D^dw6 0)OxȦMtqk=sr^굨;%W&?=!UYoɻ*~dA&_RKxʫ7/q< 'cm}OZuU,cXM죵K9nHlk|yIί$6>zF^ UJiwUfꨏWsI#6Bjzj:n 7Lt-8l~,N[ 2\2/9za*-]-ʿO~Wf1q#zEtߤ &ӿUdT6}~S(G Ʌ/OH[67? Iŵ V+\r"U(jC- Jmfll'v vR rCIrvɖR&u/%!eEv: Fnm? ջA)1,igxa,P9(dSZ$<ܣPZc6:eճBv{b e}V9)18,y zVfM>nN?SUt>~}Df2[CLS IxhW׿6wOG!i9u?y[51д{ñZK뼏 [7DA@@ +*pc9HNn>kSTE%Y,yڔUVߛ#;V>LiX+f=bɆ 2z(_UU#$הQ GmVCO7?Iaٵ9aT qi~nlZuI+K}n$u#VFG9<ϬO'y*_eS?byD+5J U /8>lK5$lzy_/'8?ee-" 1i].ߺg>Y}!N?r^aƹ^ k'=VKv[evp#HxX%1Kd8.Y\(ƴ2i)S Zfmr.w'eEbUFd&̏lV HJ£D_cvPŸ&=k[]5赝gsǮx#kJ4pJoi4VOzXNe\P<{wS~{ yҵOUMr~EmH[.bN Kz"P2h9)%<6Y"V߹nZ'GR?q(Rn55JЌ/ )'Trs$'7OJk;t _8|1"wG dt£Q9R\_#/jNXN%U|4,y!-6:J!>b`uūCy9%V$n3%!*k K;əZ]z5L>q\pG 7"doc{j퀄rs$!yPW7E(7OENFYnP<$-J[in>=G>{ .ȠcuKjA$'@NQF'<\ jNXtFpl臝_;x=5>hi.z!f[_훵[.s@99P/qJnayM^ÝTCL,{m/3PNYƦ~Kdz[\.Ԫ{Nֽn:YlG9x3ܜԮY1mGk ܌~T]h|mvCSKw2 C_wnGv$%5'GGKs=9(SrlMxqlu1ևO)?n32k -)/ngC9;ݜR}hӍN\'6E,8o|8:+o-_7]MJՎlO+d"ɋCzjP|z{;to6YV\3!U,":SņcR'Guǫ'<y*dѲ_~"MSO3 YELץ d}0Nt44ʐʓM]5ȡ J٦,8ևӛ;Iz ̰n&V; ;2 {Nx8 7iu,ơ@}r|B#kg=Ir'KguӀe~ fbNtM%o>܄GzV_@>ar'<Ժ^ۛE'YTQ̵'Y2::*ϧ<'O#{:|];Pԓ!_^9y>-SP7]quwKww2w9mB}0 m)AISJJMXhHЦJ1 IDAT*{j{Y0>} 0;"M"xuDA9,m;߲2~Jk˰qcӖ}GucQZʾi&W>{s`[A䜶ߟt)zkr̰s29?4pXm;ypekY9'ȍH Ƕ_Aqk|H[]2USr^lnSZW.J[^tyNLd]/(:ȑqkOXQs7mcdIiD9R(wH[ծyq_z7nWzv=r=i8sL}Itl=Rc+YOG~|y:F#Xm5\{7sEcM툵pet&XjH.z3]p9>g7k`t.LDmۯ#v3cƺHY~qv jbs~_Õr{|t6Ui۶!rLW7"#9^mtH$#'SKxhLYEWP١boO >prlsm[9I]~aeﲮSŲ^`megj'U n%v]b=qԹݬU"79r>տ%9x,@ ;K1R]pQ\w[~'hZgbE5,vnmhb_Eڙu/x۳[?Ɩs]^!kΕ}"UNm""zj]_Y'uwR9&޿;_:%<:>pݙі2{xӹ]7vWXS|~t_RZlk#^{2*ѰA ozIAƒ˅hD;ȝ0Q"_|}+Tn-kѷpG߮*h;7C` Wf]2=7Er{rzIaQ:JAdB꺮-h\X@+ [ #F{K҃rz죷xI7b^6zYM룼Ԣ&iUA"z wd [MeN,{֮3^gjL#r:\]uNߞۨbi4c9UGeOw+u9ʼ?,N"/sɻA9^=Y|VP 䡲=zisbumԝEʏlSȱ隤=d!5`ꔀׄJsC[2oϴ6R/l-3'㸞 v&xK$luоvǖW7Z;r|gJ\i/sv3;յ߲:VP;O|yTj<q*kDS|י#mHeΊ8{,X&ڏFGO8c8=孏m,c4z߸ һa9o*ȫ>6(rjֿ^g_J{6S$<Ino0lU2}m-GWnG?Y]:_<];r_=plYun?aد+Ro/eeML#T`S+u{fFq5YB)=vGLc}W7Jf .:^jx0{J3I5ɦٛCM>}9? 2m59 o= ᠳ\¥e4RZA;ҊJ6?IJNWފ{(Sؽ!>t،'AYextNvy)YVsrsV#OrB[NW|Cr(d3MSZjވj,m;߲`ɵIW;!#po;um# By{WWEf{]4WHNĭ)'`$x@y{e&i=wIL]b$]jba%K:y]D{ܗxi>ۣV3˂9WeS{aCIN6ne2\8_[@ۗDSx쪣\ڷcc]<  8piKu#̄GtG>=7dQk.B@7!$ o4IcSe74JCa"q%<Zl!m!mut77j~^7>dޢtʍVzG[I\'?a_Bn\nE@Nϔi!W)2M`lօʒ5&NּIvCP13knj9vy#Gnu웋-S#`AqMoznޓNׄNx۵O񦛫>N}%<`Ε^۷s3u*{)LKLٱOmjf^m'^'|}}͋~n{jtuIZ- Ové^9g .=D 7!$ J&zSўh ~^j7cpci[!>GJ!JA]mId$q6Nnc vݯwd2A/ѸoB#H$<@KsYt,nt##9bSv%vsr,= ;wZ4  }gۍ9$'1yҔ\˫oݫoﻱ2Gl4^ەG2vFb!TW8EM~'ݗ5 :"E&jfX%P!Mn:WI\u<࣍/encKrFxDW#N}%<;9WzݗͱLCc, ~ucp>Ţ ;}'<$4icOLƑ&K?N^6zJ+ 2$PdCc&%xS?kjծi[_B]L>~۷~ߛQ~"Zw ; {N̼tz'5<7-qz\G)Gb׽9Ĺ22"׵Jw4"3y @{)Lx:DwpUz(xLMU|~yMHx`i}O?T~m!IJx,$!S7T0t&SxL)l /ޞW;ԴN^s]-;b £!ۑ@IeNV kæZuԳJ }!kx!7}wӡ Ŧy Y'y!)})R6y6IsVJ}OWmՑ[Ʃg&͎nOx,Og< du3D{'GYGAI__uߑ֦ޱy,ΎA/;YQy-'}TY|/{@_tt\S{WGi;W:Z@dt\;u+>LW8},\!G*A/嵝>d_ 25pNiN췼RڕSn)[9Y=n^#ן[m`fӨyǥ{`l 65]<];ڞ@A+SP≯qQ|244$oKc^yƿ|wZ{'^kS|쪵r~_sڲWhG:msxSg>+&=cJp]V;oIc]Dr?I+mrKۮoܿ)mD&s1N!_}F ꇎ?,Oj#Ȅq^`p.l>ŵ,+8ٶ7[$7;kiK,:קq]gCforvȹ[d4ӽW&]:p+Rby]C3 i*uov,8Cr3VgBJM={N1vp|>sT>p# ΣauOݑtOOZqҿ?{5ZmڨׇvO:Ӯ÷g#/Vu'x\ K{msv x輝>C<(8kNL5suVF -CIm| džc:3a}o_/VqCCgL2̏c$T3Lԡt;L9Aj_42#ljnsv֠Q@#o#݅&j8`\hlzAw!~xAulJ8 ݎCbPy}AC_Z9DjZIeGZWC9{~8~vI_B/e=J4Cei9g`רx^jpF_.9(4^0aQ7֝&/}wO꼁!M Z<#ۈPM6eO+ZupH+4*˿%qR?7N>F{Nxth7k?u֎C4a݃i>mM/ƕs3nlI#.2N^N]8g['3ۅʆ_ie4AutWs6Omrt6Ƹb|aLJ2X5ElF}el:uXg EabU{4Mxh7-B˗[jbCC^JW<=C[mv4ȾsD9(G>;!yrz3*RݦO?P::Ʊ.w%O 퐥2Ynt/CirHSIwN'd 5,7j?7&yb1|6YxOeo$_Gmïlm(_t:[#q«*I\gӥ۞m\&x,Mv*6OڨV7;} HZFZOJ.d|]†>,Fh<~_ҰAZvVR muv.b ݎ:  ޷ܨ?s øy\|Κ<׆Hr6Py5k-`Nǽ]n޽tm.<^sj Kt'tQCK35\7#tRJѩ77$O&bS sNT++( Yd a"̫[N{SZ*y?''d)1S[􇍴l/}i.=X O!XX/М^ڱj[Nѹt(9L5v0\~pPK|Gf QJ{PrEо惧i j&>}_t%Oo p1.W mTDaCGz+ 9 )QZxTE6ѺuWTs=9z-oS-))ʧoGޠmD4<~S9Zx|m nf\=tVɲcBuƒNftcCޤv}v%q.rgq{}S z]pH=D T #Hrߖ8=7w%xc.x zn5ƒsܙ<:v8etL'w,lYzIv,W [;qCs?G?WڇͲwlsmnJb[S;sd!酾j8lUV?P8 Ӎ50n,ϭW,'b]N>+j;kէ›jvщϓ> `0UҶi $?E]Ngk03) ,KHL_^/ӿyN숗8bGO*;З]ӼV/gn0RIGF\)k?*--ِ鐀l߸2O-.Kqna&ma^1H ՒhΧY.P xD9?]O1Wi'A-Tܑzi.`E"tܩ[r ]}[!#EY>G i-Y.~)x8̵$gc=9:"J~f9a}<<2Ϊ<֭]px>-7md\_itݕv'6cH@~9s Eܙ̟;#-3< w5NZ6|+u(Js:k7q-vieu+وqEiCdžTm!W; N9rd|ciiHǖ<̙!xd߉9 yUf&Jp;6Nr![pD:&l*+G;V=8au|D{8垞bޮ:v Nmz Nr S9N#Q-TuOzl;jksi hĥ̓?M@69~wm<<͙E9<2{#x4,)! pȟa}SW\w%pDuF9'`G"}1;ՙL wݝzDyL<]#v>tE_%IЃ{n=:57=_X/.68JF>[H/>Ę\c6ݫd[$B_13:-{2]%ꁏۅ#TIp]Vƾ uOÏacZ*΋Fz5WwAc4l3ѮZ]7ߧ!xhuX'VީO裍Z炟Bl}Movڡ=Gk^/. Σ;ݰ?qQU/ka]8I86(,.6ƌw-MYEhE;f K[Q~8.s8=8 d-.J#}bJs,qhY6L192y.yal>gfG\ߘ}XG4ЍkVؐa}1> g:Ld3!섇tP! #qʝTKrkxޟc5}ci#YO!z<-o`+Bwܒ'*F%BT[L41-?fm'v4wJ[T Umj}2Mmf7SFMm5Ǯ=B(O1~??wgɤtF jmJBFڶbpwv}͞OY~Y\E*.KpU~Y߸ )Q\s]tnnU ٨ޡ}H1eN `˞:{-i- ;S'-9'8d !3%Sk}.v=Ϋs>Gz;ܣ>0_eZw˷ԩ9pgک9p eޚvoۦXh8S$|w]L4EH e,JF&q;þ\"wMۚ xqp'U:es[\h_&BKo  =x>aW2;ti⤉ٱ:y"f8/=C! LZA59s{zHn&N<Kl̍rs? >l;Ovk6H}jGV?\4$N"=3m3|"aEF+4_ ZDTtm!XhD *b9ѷw*Sf|-MknTPmc-o855v,W žN_\NáuݟzQq~:T]fs^?H,b^E8 '(:E??_!X;[)rqYS*p\.$&Ms;Ίcꁞ/}qm}-E,N p[lwrGOfۺV[WH{|sKB,BGwDvSO)[;p_6z)rrB2ɞmSJ˴yec_'>dr9Z*₰cGҾs,n0$*^xӱBW|n=k,{zk4 1թbFR!IzmNX. O'_:ϫ>iO^t/LSO?HĊJ%f'@<D`'р݇Uj&~=ܖ<^_Mod6k7'? g:U6v$j~7MmşI_h"(oˢfn'~7ZLu6c @뽝UO8y=I7O hir: IDATaW.qx*::iy,PMaLs=aR)+iIi/#ϗ#tgγ94gmaά4H8‚c?)v'1l|7~oƢS1r}W2?1NDHYC:J].9^jӵDuU:ޗ_f[*3AI EsoZ^?NFq#L8rr߀(veTV.}{IiĎ8׶:|x>͑^zoWf/LhP|E.[O-/n>]n9ORIL9#6ȼx?͙|m} 'm1m)}qp_~\?|7<c,N4s 4ݲ?9 %.ɩO} 3u_ˍyѾd~a!ۻcvflԐ,= XޤsוS4&=UhUSxvzr Wc~ζ7Ѯml9|BTZ6+ucaOkюv;qp-a <2!fTH mʻ(=K7 wVkPH J@,UKdc*mr?`\CU ^uCBHKDKk@n8?&U\.VlHCnΊ/qWn0uw;;Tv|=D'~vnջg}Ÿۑ7-Z3&x8% Nmgoo\rt؜, w1ܥ=/ߕNcns *nBLXvzv* ߺØ1[lSy'3xG"vH͡9gGxVH/x8'2V_|@es=f}B{Ls'G|^ymk1JKHL͞O ;%Iuԗ>?sfmK9!xG61AuYҼ `0UވԲ7P?#Qaykz\LiuGMEN7 p^B/!O-&cVƐnt8w}9d+jK pmɋ]^Y(x69QzXظr 0a<qsBI&z~NzZM}Ǥ\p9=Ng'u2K<Zߎ|[v #gߋI ;᱂! +ՂʱA = 6~?ǧ&P$5_nV 7l']6Dq{{@?y*<]tHz.vԆp%0K{Ɩ _3&<H:U`~d;j7;&}]9//92᧯YQ)D# G͚]Ŗ/XdV>tl/ޱvѵۓVٽ۩״;vjmsn[@cqY x88XԖwvvϫ,Nq%VMtP_#F2s Grr2<;uXC8.iYVO:-ul:OdI: ς"L."›'vbyH<ֿY1ʧ¼D‚\uϛu*(pKd}o]^>qq }mwYx2u1\Vn dÙ<0f^LΌ=- )x/_^v+SW(e'$/s4\1{ⴙZ &p{3:6IK\HLAQJGm૯7,|~ r< 93`!n%eINht.6ݯ)!~l&gO\>aXHYn+ lf!g?ZTLggf3<Y!Ɉ#uoM-DBtߟqi;cSi뀯"x'marPZrncbwq ?X$ϧ68Sx`"w20r];hg.62 ; Ѿ&+I.cbLeQ?ʱmP棽S75{ZnC =&lHc$u7αszqr~'۩h~+jG0%;!QrYET׳4.L::_2\najf,!ʱ-&gU4BuȜ/т83v"9-s@'m4w]=ש*4#ѡ$N}N %p#hw8ju3h].,,d<]Ӻk.Mڤ6JzhTV#3e2v;'DX`y!bF2ASS&bmqoy}eMh/k+}l'!bcm #-<C[\kTLC.[فncwN)mǓ~Hoiia|&Ogzy{57Qk[+55RY&G!ͧgiD0t }8N6YC|bݍQ=5NCjtgxCtg<`sWЕ!szYzIj3C5(C,k&mBKl\N{SJ5>/is>j" rgvlP=6X6ZsxM6cml6{oŶK~ZV m߯}s;ɴJVRH |m2/VEڜI|Qam #hw'Y_)@'WJ&a rڜ8<) *"i׸Pc]nc;8zNM_=y0RE]s^?0:Υ~ \Z1nu\HW\A]#3Jg<<^+0Iɹ6HPJL/I))= ߨ%k3O1er#2y4Ș^U28a{wz>9w9Lv2 x<9n`cf?g3OhttzT?"?:n|_k'lD_!(OGQ?eѾ?=,,~`<ۨlϦc! |Wt2gn$sv/2g!lj4>Ջ`O9K+9Yj~@3MltEWMɢF6k:}jlg.?!wﲶk= ~.`c>T<5O^ͱz6՞o6|[ѸaG`ZeddF9GbHL9  ˀ!9!<4jdX- ?9#S䥉/yɅq$݉vXyNSL ڇt@ FlG__Y\\ABߩUO [۹ C"xX{@XL]wBx;{\g6d?&x NY@$[wp^_H cC0ٟ*=ɺjv*XNylCX b{-*TB213Fe<=zd8enKKK<@*P]Sw}X8GyTF2oSwfM}3nǒ8Z˩ZLĤvB T䲪,АҮ)Tg6d?&x';w.MWw{7G XRyA[m`7BX+ ':PV 4 8l$;)!OءK3tz?6#kg}t$BHo+Cl#s^GaYͻIxZ?z2<.92,ߖ߿ܑxu2.\p…ߕ;3Jw*o+񣉓p… Ԯd[Κa .\pR\Rg1g*@Yd=<@@Yd=<@@Yd=<@@Yd=<@@Yd=<@2:Q(/L4-DiChݺ 0@i~Q~* 6P8/D%P`x7I%Zl6/Jc_\-};B IDAT;fm׳߳\ VNtpat X ]cM7'Í{3~}tBY&suc : `t W.{GC5[^ݏ] tcڻ&9cܷuz͑-v9٫vl;E&O 7ğ'LWƗd✹{~c ^+<]\ߖMDbup|#*_gwOw2n}խj3&{d}Xn)gr|`I@ C!LߠJ:?^jܩJ/7զ E(dr*hRA&H'LYH%BWhjl J{ cծ xj}wɮ>x5@mCk>`5$<;+4wowW)o #/>vl?~vKOkde3'^sG ce< d/tkl>j3I=MNf<6zk*GZ=H]w#Mնe:?a]qB_o>YQHg5'ދ3^ՙb9#r^ l:fC,>!6JJړwlƪ;\.qx򎱏^ͩ/m-Za.q#.[q,kzh:JAyS71zIoK6!xgQcl.9{W4Cd-c_XҪ_;ցJ0MmZ mFH jrP 煏;% v(1P}NOyx/.CՇ(bq |w,8%i~Vcs xF*"s4qع~ H1W!UtЬ-(H~*DвҝQVw#TtvRdձ:Ʒ8ޞl:%4#m;BW=spyyb8 tc)h\pL۴ ӯP:xݦ Bi0˫0sR]8QKybU#w lgSQp6/ dۯqd7[6 ;YT?zYq"ճ7ҵ'3LkZUqx[Z}eS?]b,|\_} %F9C3#o{rsr{6~*LIS\_+9G}n7  !Jc.ktAf6 i:Ճ!*榇l"a$6m)N Ķ#xevw>W8_ o$'خ*7WsDCuL w6N'ck]- 'fIaqԥ788Lrvѕ9cE\IcWMj3z''bMHJWGOB}\Jw pdM?lT7ә!&nUq$'c'x"S>Z0yq7>#?^mutܑsxD]QL0O|lVrN-#:>N+`{$6ceyEULDJrccGcvIџ,cvݮ&lvUapJ+`s.AGMR3( {1NʂGse{X. x ;at.iO >bȫ;en/,G@Fcc>'[d6 _S.S1gN(_vi4I6.XmD<Â"Aؓurvq]5n;!TzFeS턟,w(3Gζi'NH) ‰"{i4?cz,j.Av/KμNx﹏r6:X@͐q$窇vIџ,#Ss~Tx:Q' =nI \L{isT&=;M*ʍ@+d%_rE.2&տ[Q&[96SZwMKN!,듋㋝G%uz,+?C(g[u6tF0)RX}nmc"fm =un%if%Ȁ=#EYxo-\c0{Ҧ U[3BvHuNd~kK Ԟ,cdc<얀m!<;?a%>ҹ3JC v9(uh(xB%!,f:T]~rW%=BNp? i'u5CGcwRPs~qv2Bo(9ts2~rsxFCkqgB( qe7@d%JGL3BbJ O|Jٮ@'555… .\v Cak 6\Nd@8ܗf~L =q>7q-;SL~R_?1'6kJ+)x >54T]u\\z]+(xi^a^Ye!r۝DM֘Oc_"g .\pA(L)wDa vJV΀/2 d$K&Q,yit#>G'"^}i{ŵGdS$]YA#M;!xvקG<K G c׹Rs<9Nԣ ;-,W} X x +Ҋ}-TQ`pTb&U#JmM*V20.l;E3X~Kř3lcF;%v}L2OBǩ/1rzJNө4}e[o/ -8Cl ђ燲fo/mw| l9;I=+Y>ƍ@hGzcvIWHuLV͊ .4*x,`$UvV`Y -KZ'㹪)3m&^&jj>FǴ'ӯvcE.W;]$^?Pb!L?|:)L;&`8 [t.u>e`}d}:'D v}gԙ oa̘_9SĶ]<}gEw._$OSaA]ͶR8d%)?cFO$I]DNC0a=~fJ0liIH{IAc3u u1GSx12Ncsl/){Zcj:,q~;R<wP2ǧ,x푻Zf߹$\F` Q_DTmN1k䕘۬uKYЌPgY}f-cсvj8ni|B^qxش-M?2H/GNw7I ;0[䕘۬QiJ!j"䆽 } dn8r Y7F1ImҳC1 gyqd Rĉ 3)D4w] bhj$QO:KB:ޤővoŽL}Fwi|.5wzUЯv;hp Y .,Ekk,bK`=]b6vpv ,Kes#>yrp.dWoqc"˦flOP-Fzj0"!*>FWzyF|+Yy0^1 ~鴋juZLC2ߤmG)}CÙbsnHqyIoneꪷZc PKSTƟ8Ꝿ8,EڸkGzNh/E9 u>r]0]͂!S ^a㻺m ?g1n6+dϰVWڽ̒xe? ۚ}>Lb<^kŇ1& `;Ц_ohg~~̱Vusz:g+<} ea(SdVfYa{͋}ןkr8.+Tm5bcei#?cGzcJmVBHz^صqs7J[_9$Bxspm X. x {vVv7k,NRG}|!h:]<X0RAP~RMRnΙm=w~xyC}l)w\r^ڡ8ʝ)52KC ,:y 6qX.΄TRFw^6G&2.=yz+:H~?cRb<RU^ 'XR E9N!g'{iCh;y[h2өjZȳTW|N!%NmK6ic2d5<nE2$(N=gS㱰5{igPo?ݙbD/륮ҵ3NTaM}L΍6]‹]u׬rj>ճKTc1iU3HAf߃9A&䵄1ޱ؜4n[Q9LfO>?,\'v8;@k죩 )qg2$]u'.@UJa$zB5vb CC  ,@@Y{)4/v^uqI8yz<ՔtGTvG @`55mĭ }椘 _}}խ5<0/UvwMS{zT~*O X x5snvߤ1Kh/.&jծ2ʷ&EwnCXKDr SĚsV(p^!E"Ŗ {y2 ñ 0KQCrmlk\cBn̠vHo=P; {X榵l@<P~*+-H"2:TDWzQS=G֟,.,fӥdv/3vմu#eDc[Z׉p2 x z x z x z x z x z x `XxJJ< iS9Z3"nݺ Q=5Jg bHYwB:2Ot55 }3sZc߹2dHklfJgjM}BQoPX~$JhowbǦf}Koŏ)2xֈNH)MQҤ4ES)×BEHq/as9Aϵ;n8}/~7>s L,yڻ9ҹxW5%=U_$IR-2$I`ׇ:'wu0]m2[]aqA7?3vbK/+tLkdk_kYc{tU$Ij$Io/']pʄWn,̎{?C~ i/+a\ZxJ8=nxa{]l{}n|$IZd!In f>ߕatvac+G6{P:1k;20$I҃C$mxv5嵴 od.2-λ|c,XYצBw_:???y< sD8uвsGرjWKx?\(wkp<rߺ>;FhmiZ>MLf? v<)x/LUZ7ƕ0Asg{1VkKhm;><<\ #o<ճr<익iqZirО{^WU>H&gҲZhΣe&Y#wOE{(QGc6u-(Y_8{cʟߘʿi_^>Yڟ ν&v^M-ñ3e:O/gZه;DW:n=C7~Ɵ^ fscx$:JN߳ݴu&V^bǠ) 7 ~f,w9|V9|4M-XyG͑c!I$IX9]s|kʝ+]7~B/S}WɰL+|]Cxc`~=|jߔ}cي?_]swvBN&]8/~͏;ĂKS]w΁cyw'ž?3*߄;Iy/j^ɽ_ k©/>{?>Qu~r3 k̜Ov\C|f`h\{PuZ<xH$C$mH(rT3o5FNݙ[h"ٵ#8%,}7#ŋ7]W;Nj;]Ho;^z1h(sw{ST2W ô7Rx.J~֎ϹvK~%U-`1$uTw{Gu$I <$IBx58N<~lPW59yy뵓ey'qb#_LWU<cZnRz3s'\KOmr(|:^z9U*uO^QX{2kOxg n 8??JJnKz;/-{Ycؕ ˷KU+ǔGݞQm k,k蹽1X!-xj?h|VfD5oQXG-tڜ\_'ʽޫ}7SX٢p qk|3v˷Zfd]%Sm?ޞ0qv%I$"I1z/U^.{`ߏE; ^Zj??/ٷ^JofoW}#DM{2*"ej]Xe% '˼^_&O~\j-\]Sve$IzPxH-څ қᏗY'ἥU"Gbmᩎ06[z­6wJWx҈3.<2'70HikITߺn+<Eϝ.n#%ŏxUOTG|mJ'GrqRX=V!P*Y69oxT{۴آ{S_C+>E$I <$IҖ晬ʼn] Ctҽ ӑW߄GH.^-s-#@ocôS_3_> <dꊶ}0e`4kQӁG9c Ϧoxk"t絛8Ly^brUZTn}*444 $I <$I,B}0<9.^ ӧ? b'2OĀ!Zpqz4t<[=JNP{{¹8ŮHUttbO#a:gɗ';߼yٛyr8w1?O0>x/?6p&w<ùalN~O]~~8}:>? ǻ^̟^P1kv285/^^{~z]Z~P'|08\ ';#W_cEǼ+Esvws`|~-^[̨*Hpn\}wp[{ Jjm[݁ĭ/ql<;SkkN/.y]H$כ$IڲORYN=xhL0}6og[AU;Ȣa1g}l -Od?FlbJY'*?7kDc),$=浌6jV/fѽGZNԡU5H\t8d0vvΔ_/e!,y:|4}'}7[f{1쬫Z d}쑳/X}1$I <$IҖ|뉿.plo}hjD x3ʅma1Z dDy^0rto7aq5 1V<|b$mdY &Ǯ$nt+{zr{~.d9=hcܙ SN(g, ^؞q"~_1Nڶq۞ͮ,qJ}=E*XoX J4?z:vg wg3pDs+< W^=~UΛ?QJ\Rz)ֆ_vw nUgFTsufد+UVBX*|Yו_\^$I*C$=]n#5w%\ߋ =M0={mֵ0=9#/K/zh's{_?6a%%յ{ck1:W,~2:1˕e֍NO|piÕٕwr2Yzo'ܫmqJ5kf}ؤs۷-^ Ãal_l$IZw$IRMVZM3"I$3$Ijl>u?t@6?X_H$Ig!I$mMs8(p€-s&I$I$IN;Meg}ra8>Lи)Ÿߟu|$I$xH$I[Yu Φ4%;v1h!I$i9I$i-]}WG3&67~8Ѿ|sn8.$I xH$I$I-$I$I$IxH$I$I-$I$I$IxH$I$I-$I$I$IxH$I$I-$I$I$IݻwVfxxx```x8```pxxxx`@K <W?sN <Acqq1le` xqx|q֭x|188~無PM͛톇S[XXHl722O?JƍFGGSvZbӧOnwvgΜILlwۍn?$;w\vsssSrJbo&u˗/'?ݿv]t)dvΟ?ŋ}w]p!ݿvSSS$N.E_]8H.vϕ]tE3mǷ糚v"mu.zm.E۴y|}]oҶއiv:]]y.I.|owv\vb|s3ms6]9].\O.=P!m蘦m=~TR3 ~O.:^!Ӷ~T;aGwG/!_<*C_<*C?CC~j;Q>GX\3IENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-keycdn/secret-api-key.png000066400000000000000000003500641465312036400315770ustar00rootroot00000000000000PNG  IHDR pHYs%%IR$ IDATxsgy;sb6vĜĉݙnߠݍ1Lc{bA眝nsl #  7M #a@rK*ZHEoSȔ,w-RՓOfeVDa_aUfɬ$?|''B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$(e8\Ϳ W!>@䍪7io6c)ӸQegqُ~˿!Y~K;/ӎN:,.&Pd(5JxˁDO;e{9(§2>NC2x<ؠtʩX)9J ̐ߐŋۦuܙ>l{Kx/1.B{鿫h%5Qwu߷|H3M\}~UZ!<[l`!7E %9=R{0-YfKVĐ~{w6x>V^;f99ryfDpCo#~d[?wu+ǻl\/;sö: `!m._5wNl8$#t̟SqikVimk5I:#lARV HBnԵɟWX X,3 GOE;d? 'oMSath>CK;wo^7L?wvu??W9a"'}X /:c7;z鴡UF <!>6OC|CZ*З7w;կ˚e{2-, ݋.}NN54IS\V0 /^:s s"_$2oY{~/+޾o9@]]B}OL0}xbtωHT.+8!?0tzQn?lp7ȷJ MOxQszߴY6[{OKgd,0al'>|]e5]-+*R^}h<3u"&:i^jō7;U>H׋kޗQՈ7סWӟ t{5o%fs:-έQ{hoק#6W햦~O'^u~N7Rvsvi7 s\}6a$15/CHONf)pP5com ^ܘK Yqw2?Cc+]}p'|Wrݐģt9wsR]ARTs\ wX%ճEٴszx#v[W$KeVY~;o>\6$jޑg̟Y/׮Ne[,ǭF?zMtƼ>~_}ڕfmMΗ N\b.7]|2AeͲ~_,iMcLϛx%u_yD4ǵܵgez#Ҧ_3SyEڎ=-cU~s\Z7 [r/x C @^Fl}= {_~'j{}{M0P ٦_}xm۾cwͽ-٠Jp=ֱ--c1{KjX޽qNu^t'K?eSc{a< 6K_o ѫeݕ3H89"W<aK=ʑrBmdM(C={ BBlcցP(u=$4/%%39M =#eu/3|]x<0W{fy0]~] .{>ďv WlY9|%g~w"Soy26^4cx[>qm}AyRM(+\]W/rDϿzq.izytɻͽgnl|fjD*K+ȱKuUoZ%^ _j'm:lK޻5 !~^V\x8[߽c\l(M\fJz+ai!KDZCI` cWLmzư=\=zvЧW!F[~>{$h9ݼ]xMfT6&aB?a\.1/SoyO_:+;#g8{o+޾3K9׶c$uc _ht_v;Ql'e8o|s^]Oɀ 7Ol/-vwͯOܲ'[m{~ǽs>zoݣ"ooquYֿ3ѷ;oW{l޳b /Nz[ڎmqD,վ š!~nMW=x-[)K-痕 JÕ/uNBÇ+ (rGVCbk܇j[z~=­rF†jyޠ!~~}א^b9P/6۵j!_ti nw' E8[1Ϡ]f?˧ 9~5oZw{= ~  *:w󂻴ZRX.7P dJ4lc{Tr ze).p3gY7r=Ǜyl-=~%Oo|GƘsA!@~e/yЙtF$wKmh{-r6=ӕ/GGgzE^^KWTɩnٗ,AmTm2dtxTFΧ+[d46:!0f\ҲE;dDa VΥ{1tho_밷Mzc%MM2`305Uo_!] [dp<.Ƥ!ؠZrGeC|w0QxLť+﯏$_'c8f.ʽVCQ~7PoM=eW=.~  IcΡ/)^s{ Px,y640$}]=c}!e3{qxwYd\bcdHYީncZC/cX@}}\ws9ZUr9~!s{6k?Yg& P8O lyki錌/X;ۻdbmPj[Pz -3;x}#g5ׇ C˚v<$zIp4Yue_=d.Pv7~*|օJdYHp_2,w[іt}uٺʖ>~xʼn; -ٲYy>Y}Lv'C|rs םl~  Ξk/鵦>=_@gP'B\.7pLFdOY?˓6V, V*kBRLJSYB|a1Ux!>ybn!^UGoT]͛kCp̓`ĵAmlY{Pmy-P]{{9h* K+_~Ξ]pc5s䆽tomJ цE.v_ON3~%ӧ '~ !uo7!wcyˠxŷ qᢲf9xf}L t]S];%HjB!Wgݶx6cFm-Xo8S{(_Z-W!wzK6eu/iE۲σy\;Ѵ5wPtqNgBc%~7?tZN5tvls)Ä.ǟ~VxKnv_n!ė{gKw q\SEH73rIZ.& ~ h4JWw_=*_^nmx;ґkrpZS 2By]0-.MGߓ7*^ 0vt8Bogi\'wT3N_`B3f5v neֵK JW{:OW!+굫e՗(E |e 2z3ߩ.ol,˱-Mrb,Y}"|O)Mdk$wDy}C{eYh o_=˖ NӥrVI:h!7iB@nlwr u||ޠj# 1qV}zUy9 ՟~Y3oO~=qc;Ϊo^HLJW[z7v\&{̕p<72vqVF>3ܾ 6h>i?eSY\]`:Ar[#۲!e\'] [ݚ՞m?{ _.2ge MԱ'e7jUl㽳}SाW]u`19"5y1ijhJmWNt9x\b{5d棲}ˁ^XyIŏ5t6tK 4?hT;\=P25"a5ߴz؟爞-* ˽"HO\}oX1uB0_?+tQ:Ƃͫ tAjp~{g\CFm-t7w~K;{@"zZOv{qn9VLޫyK,+ՇƠy7|)W|BYFGZS4{"qJ}{q>9.鋛*卪ev6!LgFfn˶!̱z/D_/Еu/ @zbnxoʬ=M5,9-l[IoU-3Zo1+]^̝{G[/,ɧgoG~- IDATC| ;]ܶUqt{{+k~-KO?9tKl9y@qxb>o|o:.f]~P-]C/31#_xAmmm5>X_~Q2^_ae꾼vA{4^-eByv бZt|%P{g[ZEF @z;C|iPmr45/$,+)p/I_t_>"ļAiJyի|[^Q-z!@k|ҲmW">0yw {x6Ѹ/Ϻh(?u=-ߐHAϗ^~\/ BuGmy͵H@X;Ǽ*1+- G/LhO/wXB|#u~d+~! #.7;ᔼww3T%鋌O蓮.1>2k%6<$=e!7>m4M[jI cEGe4c1h1m&asgLb}ߐ]sٓ~0p&9 I,>\ݸ,ZN!uw<&1}.mS}zGvc3&֏cr°#oȿ|%; 1E@ HP$( B|!>E"A@ HP$( B|!>E"A@ HP$( B|!>E"AHjN~ֈf>kM1v _@Pd2Yxqr*]rXM=#KRK~ *qK6(!~b>7sTdL #rVzW?5"-K+:]@57RiNB%GX|`D坪MzjY_(MMSC܎y(0 M϶P4!LHkkӽˌ}$J\ӊ-boȇkms>ѯaJddC +B<ɠ+ci")' mHdۘ}3cr7O)>i[Ǽ@1#ރpzt+-S۱+)%\#,[6;FAzj9#sE{čSh(o]/&Ҷ~^!>RnWZDL_`cBnOY3匃-|w>Ȕe>r/sA1տ5^!~ϥ*{/}>,oUPD5{On7Eim,QLY8>*%%d}MŒ! LƧ>  F swds/aqJMi{q<:3ӛ {.=hWwCARV|>Rn@y]0-rGG>!+!"d휞@n ǯt}8ݻ>FW_|~i$G%Bȱ ^u!+礩V,>y_zc=%{#2z3z_bK*A|jX}DrۑS PĜ!qe YՐ.sݚںetgcˌof+6Zg ,u|Ͷ1S d(׾<"n3c؜eَc֔n7Vاq7Ϗ=$gF?3/u>moֆhrm18#[k=c޶6g:6sV$}O7j7#F&ݨόO^R%EpJ,=hBG W8j{ Q>qJ= O'ķ^;}{=7x?-s0+]oa6p4%kޕݵ,*@[ϐx<6}R 9E0R]洼F;-[.w{}ҽ~כ.x o <_ի<-ޫ (=K6;/j׶6T:3bf%4!5p<~[*y*sz4/jȞ=}v+[>X O'ķ‚l=~MCڪ 㪮SW4Lo,WW aj }%`j&)yUU {&+0|nzR mx:!f]ed wz[1VJ>ķ/9f> ~۶}'rk1ͥKͬKV [!Ⱦ {g,5y^P=ȾcPޭg;mh\ rnƤVK0;PQk#( 9<88EC~z6mBϲeeνO3;!~ר^UG>M?7}quװ9z-S1/ ^m1'Z{E;\';dzNwpjGYzi"6d^#b6Dty$p#B.R%>cNW/em7J$ׇ'$Umwkynյ 5>/WҼej~isDw=ZQtZѓ%ܕ:ʃWI@v>h~x"y]t._rw6l+GQ^=l ~m)S?gڢ^{%ual1}9xs{R*-٣y˺d 5nruoE /.Wv7ʾwd}N; 0sō?%=h3{򅙠@ײoݏxj+L6)A]3y,+cʱZX×w:8C;/k_:>!՝ްQ@YwmX kO {&n{;9X !~JЌ[Ss<%҃eӽm 6~wP*9mr{j9j7۽Zmdu:ۤ^!+ t8Go6y+.}\>wqkY~ygU~z;#^"qʷ;e 罹ҋz,Evѽ9| wS/}z9%9dL1/d$6hWCrV^FW+ UA@CcH'?=$NN tte}uN7?w2PJeՐ߫;x q\,gl!MhC!=961Dzz2eDO%J.g"'ͩ/=}g)-Drmȹ}{A^|C2*T:uwL/nv?*;_Pʠ2CE?n' {aݥV64ymS[MAv+b?oԽd tL{MkXۭZJ?*_{C|J =霖,[5W=35B|B|^ڛpARéɐD4C=jꕵt)Ub?p/YݓDވaC:5prVK ҃ט.O?3P?vo?:zHXgWsY;>~V{|~I|c,gBL[-Df)^~ɺR^ >dz]R$4&˿ ] Uj~fҽPtl/>JVIݱA"w\7]{gȭ^۩ }+&(肋]a);^1C>O{B9^KuٯMqz 8B|4{/>f:d[/?:ZWaPS mw;?V=KOю}R6wgʱ#򒁽qtt3ɱ-׎ll!~l=m ׌-dڛ 5ǥs`,H Δ ez|i-=T7y=ߪt1Z8dzΞ/W+v \kV}=԰ۻ:(]{;jg+ |۠Oss70*r[(hA眆9^fRMmG{(vElPFeez J[;m(- x#!‡FPcbl)_3R-/]r8t/:f_<Rwu[[PL>dz[̹^64w!/="3׽0m׷x!Cԟ]M r/8)HLS}%b 2R+4c߆\ח,'|/cf-y5qm}|>u鲎ͨM,W TŎ/0"w샚_ymy_ykb msXFVIy1mKr|s NqX켇Y*qD2!tŷR4= 3c[5VKoPz:pMS^w$݋ޚ^iێUJ~+^q?y;}!B|0ltm[E[}JSfzatGP ?i9W+0LwA PJ3_}Q{>sm(遭jE2ᐽ.ǰUk9>MDz{M[]{|;;*@Hz@R{Y'w$|&_ԯA'Fe~sبM1 IDAT.Bɟy0:+{BDvLܸ_:ɞpMݰ[:mp9f-|[NiGodek=[Ix>*/6|JB[ ѫ1z}|/Czj/ X5T\.9*.A[>G0Yr;/_ԈN}n]A}z-6] !}AW>xkWP^d289$ 3v#|49]V7Cu߷ִp#Q#!%6~G`2Gd4:*CC!>E"A@ HP$(@_~|r=FLLLLLLLLLLLLLLLLLLL>.>dszg=Y B| ^ܲƟ/,fv{!>?E #.5 |M۸1۸> #e'15s-0#$Eiuߗŋⲕr}CN/m|\\嵟䶌-YZFB|?P c+tV#(*1i${ SޟQ*X# &; õߞm{%O hcQ \I[ `Ơ3x#D /`_ui. ?\!GP Ү{ߡBu1HO|$̈ ݨ%bqItF2Q[b &Rߖ&9U*9vG$p"]m\&BʲT TN}cwT3s}s4rr^zob|>l9:s^:O^ڔkV{Lרۖ};V`!K:)SJ[t0Q.o4e׼9RV_NozҶ%S5в濼:BMooF{xnϮ;LDW9 ;[|͆tpF}?}:eK:蛞(h{3sòR,YlW!}=crP٨4oF!~z7sG׵Y]m:HM9.#}vO;21ؐ>G3ɈHwe0y{lk]lӥ+vmw(פ+ݜۅ=^Smn#K aׯyJ+\d·}[9Moi!4W=]K=׹Rg5>eIl=+G0oӒeNthݳYrʇBþTC%FuyPS[ٲO;7rNOm?AvMO0O ~l[K^AC -߹\ksL'rsq |t/lJu:Ɲ/u|bo}u7v$w\Owlwjm.͵@oj9YvBne+G0M%vl:$*[C%re+蕈' 1&ˎ/jwi4Fy1>3?Nх+*ߗNluLL4 AK270$kj-=E'LJ;=o9y8n ׇ'3Um?246'W 7y|p@4V=}jM\Q[o Us:zgx{A; n{e}YȔ}mӾ!AGY > ՗:݌&C||{zAeb.:Cso܏^׭UFH]NB;4(]Q\ kq:T^jX*T'g]<7ݥ[>B9ϳwes9N\VbqUzO_wS穵׵ g%3nћ\mv}W7wV}q=K5}`^!ğtLVuM艫o+=ߵދVEϼggi‡5klP-ߩz֣Ь{_)ATv; MV55"Jdɲ%f{zz潯ASzrL?P%)[0irVvlٞ?z5uh~wl!n!UDV^$ ٣MmŜB{go -ް.}cOWxۅmX_D?^s&;`;d&n=sG{./_>e)B5yw k9~+j)}m$_O*oj0sv&tʔAV$+ E [0P.ZOQ Pߓcݜ꽂<~rJQ[us5^{j5#{ԥ`:rl@!E)Ne#7~\97^[ mw6C|myfk^cF^cFc1)m .|' ۶yżvd?Cñ'?TrlfnJ)}XLq G\e|\7#߯Lu14\jwVV$YM}SR2tqRiގM{!/q!0Wl>zkgYzYulNy-_vwM]Oق~_ސ(H暣2qm>$=B `|C|5ɌcYtuSC9ލnJ  K*\.}\^}籫;g'=-[G{]Z^SJp R9uT̹f?7lO= OyO=>8"Jۯէ1kO伎??"Ͽ]8چw'Sc籫%Cj1 ќ"Do{9Z)Un&WnWXo;v3 ڝ?(]r`ZW`C|snh ޽=Fu=}blY۩pz吣OϔڧB|;]oPjD{8kmg~F [߮W~ytwtˈQ=b_=j y.RlXW{m8v*#tG_?\cAB1gȎ9r1,KBf~xƧC_kG_kmz3,Ҧo^*Te{پm{vt]PjT`WR?/|t3QƙH\Ԕ]<_c. *xx#kBRB|&A+Ԉ l\~LɲʬS32ۼiO*<,g-7T=뵽ؒ?_5c^WN_sFoB=>Ivqmm19ce];ȻkUKܔD1aMu} "J [cV~)I,8.P&׏F~AwZ[mZ~o,P$Xcn'o 5+#^cϢ,e)}㳜=:rog(`e?tv+=NѪbB|3+?aߥv^%w蟗[T!aJcV99fs-cg.4eUl5=r.U{,=\J}: ױ㑽c*-\ I+mQ+?^k]~]bkv|7+<|?[k7i뛲瘻ɶݞq"Շ3־2Eǵ%Z N%!Js*1v!=ro~\K(%|| kk3dU=T vss%Q Z£NSC|22^?]g".?vdPH;}^.RH7~o8e^(lWauXbg,_Bo%@ˊ!g#lUrWCE^*x^oW(ĿqY!tLTzÌ9PwFbw m%ѿb!;e-Ѫ!IJ(lѡ.m#m|~I M=?CΣw+ˁ5f[¹xWzOX~?|x"X[Ĺ~_QC|w^9qaٗ?eRrv1CٱNW4-7X<27;r& /7SxAR#14%7|Cʌi{\!o"{PSǢ.QسTK p͖CZIך/qB+cٰ=r'wE 'A>~, !>~}!7+Vgi,_戴kjff#ķg.Xf$8O|KL{|!-J~x>`U*>Xc8LF2fO񞠲cvLvKW2ׯ_|?/(γ]*Q]wX&9`Q,&ȖO%G%/ M}]g3w-m IDATP{C_#yT]_/|^Km\||,rRVdۥ!~>o"`?PZzSQCΚ5;mo.'Y{Jx^tY*AmA=B|{ uU[>s{B|-K/xqq k~U5uFP(=ڪv5S9Vv'3 krJGۊ UaZ/hEBrInOt }}l^>gPO~-|LC|meSe{N{?l0~|2!P!=k&~n_gVI +ώuWB00;QuV޸E䷷dbמ_:,.B|KGzLt we;ġ_D(﯄vlJ._SJ[e;۸!~bϵtJF-%I]a.Z? j~ dܳ+4Xw{~7XTGC=Ar[S Џ7̀/1D g!RT :"Tǚa`BZYfޕ}C|eCZʯ5.!0?VKEE`qIPWW)oGQ`qBH;7!J0ba[&Ie ll~Tƒ .e>(Q]I@Ն%Կ"$8WW09\Z!ZE jI{rZ筃qG 6B 5 kQTXPoa(jw`y7i(Եm+B|'B|KB5ZйBN}6V Dկȿ=7}!,ğMJ׬+D f)w_̇|~EꎋۜF ~7X43l7W!]\ȩ2_i LHOk;ǰ. Itv! G->HV"?,0WKﻪ2zֿFhWsDiZ.tgkو9', !>%alZR+̇RC([MCh w[I!q_ZTE>7}&O6:'WӾ7p%AYs# s'oY *7ך7gۏ⅜UE ]o(s$=ܫ-rex:1oֶJ$Cgώu0=__1η_]~_ 9_SG.k\.}&~KJ7$B| @2%'KCiH!am3&}0|[b$< ; Wze~Uy|]?G@>2֙fJ|έ{ZӒKC_ZVgEw9m%h0VؗR] V]r nGҶۄEYnϪ̊*f>ygkޏRץ-ˍ"cTR5?_qŅ @Y~&aᏓՍkE)GM%TQt#5ug9h kP;>FKd21z]fǘ1ewƈtٶ; !>d&9"=R<ev} 3V_'įe'&mi~IHT3KOO/b[3_g13#r眜>3XJNx:̍{ 2|ηJ%BeUέjaq֢W5ᳳJ*O俘#e{y9{.ž/68V&':emGt6_Ssǿcץe{w\B`vY{Z}ao;?Vf4]ai!;|UCV'S[Z-{%L9]"?>y<{}6wb)0_{֗s"}CZ6ך>\K _ 9fUp \N]r+0vDI,ԠeD{݁~۫{tR[/[͚>?c!¶%6o+拮+DկpͦuW.%;1yȞ7*}(u?W>g}7?AC|k/Cta,365LusY=.9._gµt~;@X 6&#S:Dvv+:s:ײ%~sKuj34kVD =cbYm3~K;/rD<-݇Nk<@ 4+/1_~{/O%~Uy}G{eGJOٞ!=kwӘk'vhё OMCa\֐ =+a~M{7cWBW_{ QD)`GjZe{L-g_b9=>͗xz;C0=6,TPƊtK9K&iv9ט#ZY?W ZtUŞ%U>ZCį>Z..o7 m#w<=S4^Aڼr@ Ǟ>>|y0˞\jw5;ʕ>p^Uz>VBQ; ./g=u:5.﷏(c-{%+jOizZ/yMg?$K! .yAם};7ej,>f%9005h<=l.zYs{FJz/tp!~~Ǡ?>|ۿ 3]禔IN v|BU34;?MHuDEz_ z l9SZ4<{q̌ȁͲ}fY.?\)[WrܳLF6vwֳu~SA%8q}S@l-۶˖-2j|ZԾ[JȘUw#?>}IG1ƽ9f#!Ɨ$BB/eKc1%̚C}\couٶYO F`)Z͌|x?`\IƋ ԰K o0N䶉O+b>~:]389x2B !WM@=Ve&gOz_Z%WY| |bٵW{Zўq1P}`X/.1o m?f?#vxkΗ7rKfoZ`N(%xV_hllO?p07eӜ2l͎f9ѓ,H!~! Y? 5Dm#T: ٺjI}}vga^G+^pT /V|bp١b:lTԠ 6*@oWGXǃ 9qET_콭smىR} e{!~ I}("GLȱmu푛|~I/4!Id49f)eoU{#^|=Tfi!95!_j@6^!qE]oGtg9[|1B|5^(?}㏑օ!XϺ_AH_D cxp1Ir._.=XVPn};CJuOc K%}HXyԟ]^cɚ1d;_l|u=/ ! N 1wFz0hVab=փVgT.:s:9 kϥ!٨% >V4_|gB|vf fY5YW&ֳй@"e;So .aee.oŌ0K ݏ:;)AU=/(Z__AM 9]Ϗ.he/})aX"gc:ٕGkQJuuyC]!~߮CC<`>\V'(9/2fW߳H_zv~K<̙1  ĩ/ BSKf9v/y5 r%WUX 3fK. =ڷZԹPfeg;}k԰'g ]¼p5U;/cΐw\URuȌ3]_RG>@`o`S֏c":}v-û}7O^e,u Tamk,p^Z?n_tWw XhX=yyq&!}gcO:%h!|Ψxtwtˈu{v\hYy~UI)>|&YFi΄!NWxsMn߽-W;ec}plG\=2Ǧvgu5q\_Bn'ʩu[~?[Dv?rÌ1(WeKZ</{7>7d} s9Cn)+J+so?ħ'Zuu]O?9YV6S iQǁ{&S2:< [78~+ť-=bo(LMM[79os薋,mJo|Ɇ D-5k61>h6f܄B{6$˾cbes^YB|q_Z]vYg):ķ36OE 5ٚJE3xz܌],A@_TQ}5sO_?,vG%gc'ҳG^WN_D{=dZKpRiO==!~CDoq+Uy)6/EIyamgSn8,7~Xk3S]ަ,mw6gHuf.p`{mY,6Z] ZپWrqlӮf,/Z{+o{z@$=َA3g^ynge϶Ͳ{ySٵ} 7[c+}<8׿ K=S|fΦoye]Mȱmuӵ@{ t>0`A^alw1Szaƿ,a\coD$,{?r~fL<-Ttp,ɾq]0j, cn1#}PV I{el"j@~& {GNyCxYzmTwӾllllllllllllllllll[N󓿧&$5T:%!\e;{ƐLz~7M#3wuQgFi=koYBqţWՇ͙[[}U IDAT)[/Hf8 c.d0sj2mqJ?#gIc\=s8Wœ]%6gxfv, =[r|Tz>ޤB$>WviK[IHF3Wh L[p=$#="֏\OvɃSʤd4*,%XLcB~,-'D M3K^`,,,,,,,,,,,,Ltɣ'PzibXir*rO&fhXBfG>_~9ugܓkUw.Vٙr~Eگ|2M Ȝ1Řƞz[ nt~lͅy:>VYwt:9Ci P>";h~d~Սr)T'įȦ3c4<:>= ʂX$j|ƐL&#RK( g7~V6}fz;zka_^y0>םys6QC9SF3חЗȷQ*ړov#p_S_͟ΣYK}~̌w{EQyƸS7fXƧ[G;|R\9?  }=}ҳG{ Ϡ:NgOuS>qm5'kݚjumwb)r'>u_l\ ɭ~OϿ: k;5<}|lЃ !Ǹye)xx:4}jǣcqp_W6;rSg֌r>[O ?{/W#rՐk>^5֙?Ɇ~ɳ9bڨegΌ9T_;mT1u;ȧݯ>MHC7v%`v'͗?6M HstWўlK{C dwt$ȅvufNfNHVzi!~S>sX|@mme2ӦuX(]Ci$NN{|COo^=7se}-VOO}}|ws#="vi?G[vt%ٲsȭLYmzy2d g2i6%]skk^]6S>{,Z|JGܟ 'K^; ]߮ awWCzXS7V?}IAW5u_>fZ)̲YV,p֏Q8y/+o>?_KxU߯V<+iY]wسZ)ųN^6QQbFJX]E8q\]C\ e6̎ 饠~}6=rĝƷ_;{/@ٟo|Qrz9wq->9w-W+7Y`U |v? ^5P *[m-[[r_^wN5}ۻzMv_u{-~ }< ڨc~:".pԾ7>sQC|g 16p|wf ^>Ϧ cfمgE=c+ 3QG5 ή{?- Lj[U!dׂn% n|C_}%aՉZr %\i)qB|WYv*)ďqkB|s15lCCDgnƔ cѮikx-\RJ߫D Ch8D:)yZ%dE%])BU߇Syk tCVtH%eit}^I%[ly@o)~-A?ւ6=eh1>; >ډׯhRB8<*⛒?.nʹ{^gJ ~wMi4b?{Wge>bq3#ovX?=CCv`֚ A)_# oQ/gݮ=Pg>g*^h9qn1oI̍XǹBګ!܄۸"K(į^i=LGI}(GEe!~MC"cМ!}Gw[? &Y!~aroG~q;+ڹ=QF&SY:,T׵;_=FݴGe4ebgҳG쉜׃ͭAyp>d CB1yX{/2WKgKo= ruMe I^U_gwtY}.R4Z*?ЅRJ/Ct!q0WJԯh(tuor LI%HoG-WjgB~NX ]v>!-kؙ 9.,W/rs Ks{v!umw_I: C'~T ^|.O_?JþeɧV^]\!Ihv3_\ؗ)=b黏W&W#A۬] qcVRۮT`]#ޯSj_|ze ȿ=Պ5_ϵxV(P۫v G_KvB]_V TK렯+t!q0B۔ѡAmm3FW $͍)c{(޷_sMWs9~{=A%u 8o@W\?߇N{#x`9r6{rWz{&Z\3!!:̮?wV)no7ytˡmkCZ||Pj>fm}k=#_8>鵮gZOG5UZ轿G՞z!WDlhsu=3v/7HAkjG< ZTk\{zjǫjzH]^3FlF\K1,Kh}Ƹg us5}\lwݿz'O_~_Ǜ-ǤۺYvƶ𨤒c~M}Dx`y)߸`V(WýKw=~~~› 9/oZٳ2Sf>Ff?3UlE>ޝvșʞm;Jhh3 %?-73m?=꺏蚪KE4ijݽoŴQe8҆57gVqMߒk=C20>]q|Mߐ].rQBg?g skc< }%? 4Ռ1rk>LaXOoCX)Ff} &bYǸp~֖),ݿ}َqaLٛuZ/kƈ9S2V>ou2S3uԄ md.uŗWsB}:=Ӂ1OF48Ѱ MQ/{oَɹPiU,xnE[Lr-o{{/B|<*,;l ^RgU;eUa!>[ɓ ,*W(_(g_߷umw!B|ECVkѾ\ ]YT=(6#nM?&[6-o[crnpC'2-ݹzC̽߁qWS#}bl6ˉst_kuhYĠ7=aڽ]Du!0/<hh2&T֝=w,;c@(B|__g(֧Ͼ!aȩƗbK_SfE".%_۔ӗw߯7n*CIIl!8!ArT}%'@"9Cm-8OYySzH{G}}3OO_sT!>PGOt mQ|?sO6(!u$g{pTpҙ8sBz?~,5!Dia4@(U\=3!=X!ױYt6L&#+\*t?t|[H}9QO]P$B|ɮ=CU[.FO_~?p/w}ȷ7%Y=^ g@R|f⛐7m7 C|y:"5Ձ'd+ķ̎u};PB|$o|Iދ8\;ó3w4G]%t|L{w>7!=-T&Vx:aHf2Ii}v*9*)I3bA>'i}N,.,,,,,,,,,,,,,,,,,*4 14i `IޛsKͲͩ It=;mmi&#SX3y嗥˻- vbbMu=j_g,̎|o; |CӺ)dm] 33;ל g\nYOX RS1Hx!9b{oѣGN*&g f% IDATm7!֬ A>=6)FjYnMz ,H' !ѻGluGy@ʏi_)y) ,oq[.a?!-5u70]oFr-0o0Jy/0 X\f//ğ'r 柎Cȗ_)FkP(N̙2j{K?d}3[kݿu{I.A`fRτMG:ep(畽'k!>:*=~:dBܹt/Kg#޻v9}s۲ˣS2םV_ᠶ Ō'sU9^sR }w+=֝GAV寙=.dfb)Q8acu {|qκ.v >XQZd|~ܾ6_~Rb 컈"ѡ+TƛYP [n[~!,bg)I-LݗWhխjGr+^q-׭h黝g97\46VrYdO!wzs]>rZ?.F|t}n5 rkDuC}ňuV|ferm:3&GS*A`o`_t?K)v*wHǿ,,fJ>)euجj̸)J)5G:Wt[ ނU[.zQߕb3]Ŕ6Kak6x7? Oq" C񞛞ky#R;~z海 ۬߳~0}6k_黛wn=:>T9}ƅ=o]M9wG}x+fȫXcXY^*Jw)cEG1Qo_ks`_x\3YmRRSPSLzWS&f*լ;h?լk9+iJIs;,B?yev o$[۴HߗS;CZ3zGs5 vbMW_P~3$:[C %緣#/mniQgoV7Jאus:3ʈa}LF/7lm,[Y絮>ٺΩ)#{.4si߅x\㞡o.gR`1+wmeL9flxJF~^HN_̈wܛv)|, 3#SfpVFi&X r ( җ>ZoK8zNJ$e(gY뗬qG}BC| \^/,A`HK*Ɗb\#Ɲ t8p^`GУk6ȇtk6@{?fo{"WOw\Sf~ͶVB |*"$U[ kzM*zTk!y\ƧcUl(5W_vӳ۸5zO f9~ ^}({ <+Jmw?UG}ҤF֟v~θQ afiJOszs̳dPo|PIoWwt(U Jo{3Z_*>=VJTXyLζt<ḏ^k}^QƬÞ% ߏ _7l(}:V}5D&5D/ 0FP㫡l~' O_~ 8(K;J ; ߇BDv̈h,۷m\wLȻٹC3Ez{7TtH] *Qz-6Km}F zFLes% jr'icVNܟ5Z#?{_@}B+競Z@vRzU7}r16* 4ySK+J>*Y-5u3$3Bef:yKz? \/JZyʧt?*>JJ+]π@#;Gه, |[ s1edK ?/Rx!Xab!GYly`O@]ڰı%uBXT Y+/k:Sflk3GmU$¹wÖRf&Vz`\ c/B۪% Qiۺ#W եq-!k[KW]wcաd^b]XQQ^'5uJe%X1;`wk/H3ls ˘A]lgϙ,zx}J_Rq^ݍkG-]Ԛ!J mהV+w.{hGqn=V L?ț`ĸ~ZW:/xR|_ !B'?Wf9ѓ9ud)S(#&^i}}~ʕY㜺l_Uab~BSK; OVK}:V}TKq*,G73!wiHϗ8S^p{ƤR٣$o`@:!."Ȯm9~CqWcܪޓlv!_!xvmCǓ !Ǭ_I7[*}~:}>eF}g'ǘ_0% cEG߶,EQ3kOdwcEG}_ 4y~^z6K8"J)}ٱNu㵅HNņ j% <\HKv>u%gC_+J`rmnƦɀ#J(;3G*A%PЖ:+Bgf.6LPBA h.){-nߙ!yb?ߔLB?P?3d},Fċnߥe j#!rjؐ_9„Gؗ9%Z\)='R~x!~cFLJFGwwQ\wK<$ߟqcיl܌Cl47c @"q`Dر gA9%K,VUTuK{Wzޯj9APkn>c'֢wf) ۰cvL|+ +3BKƆe'f❿ OtWMQE^r}2~쵹k_s)!~)Ɠp3քߺ6_}ÇZUbd*kH{enIϗuS=%m1z]fc+dn7oogsF8wŏ;Ggr_NUB_%XaWJ|zl;Y{)aG{Y 9gKIV-p9KDmϱ[{.[%-yhy]γTWs-dΎZz^9[KΟ ݳ]w+z %2;k|VS[ snhPzv[kxZ::k/Ss5\NwS}?1Wow=~_wZ9j~\II \uqPAfx k更<}ˎvJ_}n[m|}vb=nv;kg<N YHn&=?Yھ.n((92|6g>\uϰE|IVB`vT5ö' O{*Y1)e|K+R7'iF`gm_RQk F:]3ae'qo>o_)XUK7]yơ㪩[O"$7ǾdNyL!~fP~*R; SQ_c^ ;WGͦڸcl 3kQg[ιwrMLZ,N:iLU "QڴF=7 7gaZU gBQ]XQQsa?ݛ&/0%CM!3g8d%~SS+:XlZ0s#9Vo9a>4{ٱbqkPe{6љIk*71;!f/NȢ̖uWR }Vg 1s3ٞ(7Ss~{'z[dV 'DFCxacѱuãp(Qwi@n[K@&sv?bl>2>c<=? >>zʘ^&ߏu#~DkŎ'5yUB||X_Ǐ"̵3rӿrr5`qq׍|~;sa*uSQAn|G#?{>ncH`|Z}׷3v˰Z.j(sdMH]ynG$`!_u,I9ILqdXr&S2Jkt?'17Cq\{q&'%5^o)F6μ~vKIz6eNgeD⷟V[1f]pee_N;/CJ-m\*xϷ2lvX1NZqקqƅ2lN/BƃXYN|;͏O!2wNJB?$%A,'B|TfTz.d60Dg֟UZ K!GXr.`yJi%a)YVG:mE_l47=΋糗vrXqJ%-Q1Y+7P B|ƒ: |IXkj,PHiYh,1{KUPL޹*玽'{^{f˟[{d,1M8Ic(,}kBw:Ӓi׈9KYJeϵ̵wz>>yMSqz"Oկ .ʷa[e5|g{8~``>-ýȫㇽ8|ZN& ;cy鿓\Tϟ,yx BebK Q1!O$hO`9>}@ "Kzy&Y,7/ K.qg#/K[rfZ Q6}076U狇B̍WcBsw3,|MÕ硫ǹWoPҞ^y^j8]l's#_FmϠ}nV"+A䛌Aw_j)Vqn>M>O|go vG{OeGF91ߜm_x*3aҹ3{ęA$/B21Ot!V)7Bd[ n5tqoohbO8o"O>k{9B|w; eĥ,q=6l[#c[-fjԞo|M;O%ot-2.--B| @_v,Q8*ݽ}k}|y7^˖xvf[JܔuU_Br'v]xֺBj)KX%rB|g1"l锤RiÍ c&eP/ԥܔA~VwՎZ_n{$;oE΍7=Cvϸ~=!aSrz_ŭ51λϺ6]ʼnX(P/_ k>$YvoVNmWײ3._{sKx$◸2p˵ }rfhgi\uoZŷOf캃2Ҡ 0! [[KB*>WZl{`o<(y+6ķw?Vtc|KZВho޷-n1?<wݶ b?k!@D\)v݇XKRO\jںe01(!~j|Lce23%#7.ɹ'ǻ^C=s=Pztgnl;FoÒu㒅^SKL.n;v{/9rcv&yzߵU9=Ϲ/4!ď.cCB|私^!ⳏ'/X!gד29g_?51{$psj6J⧓ٱ,6>}T~(3fa\%rʾ?E]Rڧێq*F8 %Ⱳ$=vgnMzCۖ?cВ'o( IDAT7.9]Px`}%avB>n.mߔxa!~5r_"nn'd߽ڼrf(Ro>yK.YNߓZyLTЎ?Ե{;@_[p"qe=8 qS-&w0Q-y#jx$G/(2EB_I׽z氺yтC!Sw<>ې=^MgCk7b\N? !K[>|\T@:Z;ro|ۭ}$9^dx-}[;36~(ozi=O~+RM?sd2`,?LgsJ5ygB|G,GY8b|> zYa~}6qP۴Z0e+w81MY~~.1]rA Β ɮ; ϖmv*.G&Śߞ ous}5 TuU]4=[hC }BA=Y s=jz {$*|-AQ?I(7DQ-||<BqoZw=rc{lL\|M!N(lӒ7+ isB|`$b_ȅҨŽK{_Sa  I[X \|;xmkToٟy1?ΌFm];,Y$rmO\f~m 7pO_]'w[* vP2%;n=\nr6ߛ6{͙}?|N}[j&_-b.UT=K(f'өQ9gpy?xzgz -^9!dƘTʴ6#u(?٥sw]u?w/dr Ӟkؙ3p]cC}U) _5z>廔R߹c|0WaN~]m_}}=lyn>Wie!Y37򁨫,2??,͎7%g:ZMό5;vJ+O-?`-|'K_;LglqY=A \3Jgn)0ܡ`Xf<7kdRqf:tS  CMM#o?{}^|Bu: )!~~=,lz!Ⱦ.qs8=;ߨSDb&R5{>>}i>fvly:k~W2˄,^¾ֽ"{l۷7FxxNkA}g]?nOdfY>@JC,54[OŐƙu;}<sS7i2hv<ԺQ}&/W81u^|.)m k [}.]VzqNLLJ*5)ý=!guH }!{<)YoZm_~8W[[J$ڸ0jL)ǘ!z2;Y?36|e_} Jgp:op8f|йJ})>g)I9umRj1=\׳iI\],0W{8Kvd>]>Wiep|Z\N%8s,"Wgiܳ}_Aul[J6jWp[lyԛ5#1ڲ ؆s rx#9_~.Wf/gC2R嚉 ~15+힍^!V k1jrA!f@tCs%؋ $BZ=9.pvޜrc†#\<;綾 /ۆM@%2BC'xrIȯUj6>/7GO{PZQk+A)5QRW xS5GaekzQ=ʌ8kχW1jμQPYyI> uMvfis=Rhs3[1.9w?4VFuAeJJ{_4^ N;F|dc妚k+(^ߩ{9e澱MQ9s`ge/1gѴ'\!*K|ZzN ;~LC?J5w(a{g\{r ׵1s{)CgBEV!ҹs>}4[ء.o҇ЛYϭߡqn*^Y!c-t~;1]XhZ͡!b3>U.[FM7YkMU`vTC.P7Ul -A˳.-TW X @%}Id2q_[u/yy,n-į!߳E/_?ǙZ85Wg؆GeVgkC5ud) M^!V* ٴ6kWyOgϻiOҗ+-gg4_\ ڒν?6Q@wnSWC"8DPS!d隆+AY Wo"*{/ֻtvp"k琼slߺ=d*!۟?d׿{KU^$!r}-SbuLz:|:v E^BX>R8冢7hkهEaL)!v ׍i&O52lJfN3reg\Z#0Rc倽50?-R, Wo,O"sOU[?$ToPan F{J؈M{'|38 !| vT א׀#W|_ge373L+,M8aI;]n!>+׸̗uIfâhe)-ʌR.yCJ v\;_*yzgqJ5&{llP(8;WʞzGB|gG=Ǧ>V,GkT;qvy\ ǵ {É i7|DP'oن/(!>\[! VrzY XCE |I58}^-*ܹwŭz#gF fo@/EnﹹzH{Lھ^l<(rKKNgDZ a)B|z tm^@L7X==i 9s*Ѓ̐$a,U:7ih}^kUi k]BB|Wx n5oCkIȹAiq-ug}Lj5p{1fhwjܤR_-FhpTBY܏ˉsߔ7&LC3?A,}O7}?]!٦n'Y}&|:/K P!BLYSX|I~=sc}n=$k'(QKgdSK .Juzt5w- `o??!}!lW?`0 HPt}JN_{ٻgoVi|~{Kgϖ7Rπ K@q{^^_紛υLr|avT0X;&Ǥ,W3:?u[3Zi s>:TB_u'm|UK=ߞE%!: mܪ<4Bʦ"BcS>[X})-lBۦj%o?V|so՛hm8WFKon}|iG+?v9!UYƙ6i: EqWN!~fi :GXo/K_<-ik݁y X:I堜?D|1QSXovt-a|\~0 $6>7˿F3E:Z[`_ؿUB|L|`IWfKBr>|{6Թ~j!k]BŚ$wK2i2C%-lmcC3s3ٶ>*7J)֑N^V=nu=l~Y0*t8? 釧EOC~uȱr(n嗚+S7$/lz!5#MuҞFiHDNpwE &RJ1wzzJ_ sz??߮\O>7. +x͌un~Co ѯ g|`xWue*]$p<~L[䅝/ccU {gQ9s`[N}on mc~l:v7mi8hfSi<-7n.2WWƨC̿UB|LXb,S-f ˹R9o;ל d3l)=nRf\iZhzB;; <X<6 ܔg׹<4 om hgwۙB|_Ggk떱L6JJbm!w6.Cok'!=뼔=g3 n?5gBq5_.Bg~(}~߱~kjt9>kbؒ+k:G+pg&|I{'?Xfnv;Ogt*[Rҿe5osN.m6S g'7GLyS-S;Mwn/3S1&\C KA?Ot]O fkn2<.r} 8rtZRVzB綧Oo ]_N̍uTB/,ķ<.p2?j$k5*_s[ iܹ?#1~3*[O?cGn&ϯzfft̗RgX?)8Cfp䓷KxY=9^>1 Kvq[&OU_& eg-ksMW\TˌsG]qiV>K:_5OI}#5`<32$,ñJRscgiy癈{b%z(Vy EV.{vKz/hݴ!%}?D7%<־J㦪׫LZuo?;fʼZz+Pg?tK~k1?p˻w#FkКEXq$c9wT|r(kE rߚJ\/6,QxpJEoIW gf:^oک~o5%~.(vJGk5JerT@ekw?H] LwɔcLߖ;h1g@}/Z~S<rFښ6ղ6\ɕItvP?G:cNzd׿+n+oެPTVCW΁NՈnv9VÒ!~cBnVv]K_vf}TnCm2%GP6J{b*)j/ / f6{H)+-}8+>-٤Wn{2"_?oQ|G i ^';5z1J'_YS?[4U~frћdWo Mk4\@iڕ|oDj#s>mC/ w+!緩k;3k6mȴYО"[D8>h?F (!`=R |IXJglT#6tXs 羳XL0ʌˇL,fG:7Cg|g3CzZJ\NqSpwdd-8W[嫆j/B }y,'=F[@+o*Κ>DԙbhIΧ7kbI%_Y{R'jQ|C|rQw2M *Z=ߖJYH7GuH<__95/ HKSfo9(lӂ<ߡs_E {:,Kg{½U--Ovn{u`bREdX>wSf ;V}5lFm3Y w+D \9N=98K=+\~ʵzIsB|2WX`s{39& 727t$.G^<K#_ v/lO: țf﯆j)munÚ2rlgQˊy&S֜Vy}r3kje+ozPMRJູ{Xn{A!~.nάi-@Vf%jWSߥ pKꫳ=UJܟcPzÇ"G: % Qo`!K3h}:l[-,SJ;ejO='oP^)C|uFR  ;wCCpP._ \ʠ s}B|'uwu{.V@x(I.u(zj)=K?-߻-3̼LFs^F>J|I*!;ߐ7ӂ-*̔_%IKo).䃸\I}~:ދf2v\:uD^3O@)'jeS_:ݥ ՙNYw'\wdHMņ˟/NA?IIOJc:B|} xx4T_{ IDATpA) Wۻ?,C.}@/+.?- PdVx>OKR|*|죄RxfBqaxrdB)ݖʯU4?G2C_]+>LH*,璆9ܹ͇Jy~e|{+.Wg;7jB| yMNI}/kp][^"lu>^[__Dz28he cgk]>J|I*!?֛'Sfdl_~butkr~sM\˼lZgK_S~Y'=wRo? 7(m+vJ2sw?TB>4@!r0՛5<?A7bN`f6r2p5z毛O.I.`x?)窀_DlyUUl-yT B/2BJ+b&(?]{~5e;ϔVMZc['P1I3m i!tC|'ljO|~EPyJ rtZݯdp. 3[obwyfa5J֟kvnhQh[^e~+C/*?,Wrʷc|}L$E~!byM J_[Tr@_R0SxD~-[XbRFnLJwiSX]nXuR%5gDX}SAw˥n/ggc(:z"\To/׳3ߝUcTD2RWծм,?C5'{BC|u{t\}8[{_>Z?_]` {>M߫˓_5ofL:Sޙ-4HwnAg.Ϳ :h\.M_>w dn b6@A!s_ l'(>gK@9,yusq7ε.v\3>ܿY؁h~CG?ڟ3y䗁ϭ޺;wSC!}P%k }T!Z@ݚ$xUbެQiT/^;-GêXlZP`zT77Tԝ6yc:9))0V`9*wy[3ϋ`Ӆ̾E/]n:ɁVl9o8 V3]kք|:~pr^b2ʝZi!ߖtI(hrEÝKrI+AO&̍?GsʒAcz@O>R8KB, @|I@tZ&'e2ioX5kQmcٍl2^>JŚRw f?Z*m}hvYoey|IKٔ`2lo`Rov _5<٤.:Jvf'ni`U!GY 7³Vu3{Wj\+K⣬!O$ŚЀ/f\]|IV!B|5=!ITϕYvb29&c)*UbVX_JB`UI* !>U%$VX_JB`UI* !>U%$VX_JB`UI* !>U%$VX_JB`UI* !>U%$VX_JB`UI* !>U%$VX_JB`UI* !>U%$V`9˙m!> !>4|B|[ '$K/wX_;/ R V`)D VܢB|DfӒ7ˢ-¥v^BzAߛϊ'B|hQ| W$_z* CkU;ʥ9r-V(3B5>uxΏuJuczfb&Rڃ5rfa19!wX2Ⱦ~>9yK hLOk?vsS:}nD,9sc>=5& },x&B߰ԜV1|t_x]osv?kb7zH%nKw[G5m`tְWmyƗ3ܾ9[[2ksiWSe<[iڴo!w_g&Ϳ=%o8oo yMkSH|{{KRɛWhi>uc݉hIWݏspUC#<+Mt*b(m[2puW۳Ik}pt4l]oQ!~DgSk"s7?oO~nNߓ;>doyJ6FV-^gvB>n5?S&}2qcavMs>Q?z^>J?^[c>w7'a,Zg(LOOK[79osV BńNl9 /bIOuxr_d`Xo]Xg xB[>mR/,Eo6s=="󶓷bW7_|%=i?}pnDQB|%4"A;?sj552MC_׎2?r%A,+wW\9m}.=w7E:UǙuBq h֟\UݕQɉM"F>F?{\U𱕿?.C/qcjf㳱-m!>!~?mi$Sز,Iv(e;Y]29k֒T4lfōƩoͧJ{?,6lÆ!%PuBË9ɑ=SVCWykjT߬LR+/&%")S)gwfvu}^GvrP$3)yiש^-qBndt-#1F博\h~'A}̴&llH9i>1?_n"(/j '3gXt}{ͺvD}M_gű.y?j0~qr>Dٸ_މѷcKHSQbBk6nJfJd{cν?ʷmGw5gnQKoJ2;7/ɴ=M޹.7 BBrE{gy139+XD}n_|66666666666666666 ɭ!S H*EپOMu|quw{v{3fӆLn(ԯz 3/waܶ&,Ρh3'm- ^Gfֽe&fq gLc~%,}s<7Ul̄v::;V ]ש^9!]}}pg5u59:p?"&|\R~@QoqmT#[|X]ƙj WUMq5u>pcތu#:~M,I# WY37r7k lKW A!~ǫ!~9cP^S*UtJG.RgWg|KYb7Z@I}=俚bt|**ޞVzy}{׉Dr۸Ô٫Z$s.RgԻyq(!!C <~wU:g+874uK{M2u={-_k|^o;Y_!$k{K2DYV0TRPC~-A!g=:?s_菾Wex>z*t,!bB|OP>'2lYr͒CR)ey)ϙ>:ܓMe n3wO*ՃȡZߙK_|بym̅CNYS:ٕAc8rCDRR~M}15)=W?=gA;?~ ,Vf7_kЭ N:m]bʡ?& oǽI=a7`#Yjh)+7z97b>3՟V=h `◩?rA7dٯҌE#_PLs5C7'4ZUccI}ug+uO>_K◻nuRYyױ,Wy5l-_\gZ Ւs,9Grٽ Âж.t)>m\qKpk"h,J;jk6?(q{ltm\Zq?ϐmkYA׬}[=$mZv#S?3՟.z)ƫH!~cBg?LaGGJ3ʏA1!~PH?U1s돆N)M]?c2/os%/fRM1g3;jH)EH݈%/fˋ&!~`kcOkj[C6ߘ ZW*V<6i9/p_LXBo˻K)B8UEq>S\E#_!2+yMCL&'e,1.pn6RJglbwl g?&%==/^ho BGM}DfU|3 ٙ kĤX;c2DsS3XG[zܿݏT:/}_>D-p<D25a2ܬW غt}L%TX?hLr_NԵן(w29>zR|N]|SR?6g"f޲,{{s o1'µ/xU!R!t,SHGJ3ʏR:!k+F:r?V9e 3A%F,G6v>$KY6ye6Sg9ejZ}fod>hA]rKyM)=7@,yK:[N?:FLFƒBJٷ+g}f?0= \/xU!nJᦘ""@/X_ /Β~M ^uO|~k`OJWo8 \T/,r'l6O^=(/:c<6mCjIr?}pgnK{Lkƿ_ׄR;>A%vJ_r(`\ZixPFݝ1}O6U)Zw{k6ϴfAqȻ{oY,ϯF~]ggo\3wr7}8[ `}5Ҟ3\ﳹP~ >.͝dΠ5M/'8/h3j3w˥g~;wwNg^󬼱{T}v[i픾>n=qY#s{,?rCگ'"zg遞Tm.u[a47zs_oBޯlq버!8s~_:~]֭w?-[/X϶{g1 G\ׄ3 u g{veΟ\!~;7=>g O՛rР ^Ӎ~TG E hks282&X{)8!ٞz{<]gٖUvY_ot\|~T)X(?BC|evn!#y!@nryߙϋqrtT IDATYٷC-ﳽQvu2fG9=f2߆ކ>k:sZ-t]P%͡;p=px>wn)feݻ>i lr_3C^=,liUE\a3JrZnk/ 6{N~%)޳05Ϙi4;Rݽb6֎շλrFlx4= 4aqv|nc=6 u'r˟{o̧w7V{}Nշ|ﺾ_Οyg3ޥ ch1 X9xiTŌE#į V:-2TJ NMJj:m7%iǜsjڪvf^x>8gwl{fԲ8mSz^Sl[p>̺G~=fgL>ƔsSڧmzODz_yݔ9^"VU N-TQ|c0`Hto(WS V/mM5 WhX5*oTgM;X琰,=n", BP!TB|*!> A@ BP!TU[iImz2 =*\kL҉'yx&qS.\ t^?$s>`\UVʞksY!%m]#O?ToPO;ׯ6kgߕ6U[/Z"_dVn7:ޕO%{Ĺ>]_&Wc,Ṫ s'jJ>'+ժ ?O GO^èQ71JBaG !s|榯J֯:(>5k̰g U%QCmVf&DTWJ>'+ժ7?!_]x~bih;+,Ïui){N8{u~ab|`ҝQlr-#?1c$!>#B"JIj<>fǯVe -IWi~-&įDE5y?1`#f&VeǮ`Oι;f`=rzB;;srNJDV{I:zd,5ۏĘdV:sq8;$)Ro2AfH'?>ۨc|_ùMLK_9n9ߓsӏj;w^bdv?3y6Uů.T!^cwnJGۥq;ݨ'=~O:xW#^?}{îɀk?ێqd%MS% S#9nͶ͒QC|5bkKg|_ kN33/TB|cK]ںVCڇDaoitx&} j\(=wWj^o>;m4mǺ 5Vpn:m g6͞ks _Z=wݶ!1=il_V%?47eb޿w8ط?{kc> .ߛ'7qZ>[FFg㜫wξ%{-Hnk!\5ϩN1ΎqwtQh?0]#qB>n5?STq.I LJ㦪p*&~Ϳ }nͦ 6]?s(R;l;yGrbӺ4\q|B*?u|օS ڑ_F:%ķBc95ڧ$w_XՒAۺWͷ7\_k \.G4R;>Fi)`F̗)7]#=g XB?rЏتo*Uc>-ZɁ:e1^ۯSgeK^[VtV=\j׃4 -fbJliv fC|[z:%tJzχ=2J?٩^-LqBnψ5kI:5*o֎ϴq7QfG; )-+-- ;l>=q7)[r}6-i{W$NgKJ+?]{AnoR{֦Όr>[]ByK,;F:WQbZ`a呤}w]V5 @XSͽÙ}1cZB&i}49dnFWqUX(Wm>]oJ2;ܸ_rp< }[Q~iۤXv GgMz!#W ḧ>,suu (nPgCR{ҙk I6)]c( -pwUE(,+l>?rw1ak?oyA3x\7pl7l,`:nuƺ_4tK _?WgS~X~3 %'xרפv7M%]~_pQiP+FmMISj[5Йnn qNה U#1oPՏLCnWLwJ<1-_I\mS\?f%!p֨퐣XBHm6Ӡ =C|5dw֝ gGh+w+^W燆snR5fo(|ߒ*{\Ue}__t?u]acH : פ]+AדWPͶO5?aJe}, ;P 8V9{77.Ok}.'{͔Y`E W~184G<^o3f3|Ix:٬Yea_UcFL}}?ՙlBB%|Vf+o?WKo+E0_~r7i?)IWl_K>^lRSN_J /> LRIt4}~C>im}1;Ӷ;bݗsiwܞ{nwRQma ilHI TXd K,EI 6JUuN'Q l<ɓܯ׈:Be-2eڝyuĞG\ZI% o5 fF>TWcD*5s>7tyYajrcwt k7(dGdۯw^;5V~[܂@Y+A >!ʽwo>+uˤ ~۲3Ëe 22  KLO ?\zd⚴j֖ı=f䅪_?'mΫt=Dss-λrT9N˲2/T~\3פu:yv,2.3 &>M+jr.=J=9Mvɾ?fc?XXqSXۇ6ug~Ym!kWl}bZɢ4 UoHC1F>̄t>+1/V1c猿?+gOwp]6 yg׊yW(7FZ\;_Ms"KL(esqvjub|5eqv}ntݸ+5sy.N (+7o*;?ytG+7sw=d\:Ԡs~4閑%F$2"9LP;LvjW{ZOݍu]_8+/g75T @e^7\g!1oܶ|?M_M<XI{َ6yY˟xSˤspSX*[?osk=(x^Nޘ,=cAlx|MceZ/N?{-Z8E}}hkmy!s>c >KR/eyve>-S)>v>v:^h0i4181#ݗ?*juM翾)s T2ʹz^:u֚~6-F҅ byߩ4`Dύk1G{Y*\CvNϝ+~8e5OԵV9u8Φ:[G|`eq_Fu_ZR#l3O89#-4Gg%̲u0Az sn [q}M5rD3/U /.Z/n:X3/6N3/Dʹnvz<~^mAi}fIW%?~vZ[ڣI[ښ >3SK٨3(YHni39<_X˫[XW}F,cV0*23Hs[sǫҺ};BQAgcYzr1mz`t:h^}Tީw[}Ԓ5 lTN.Z3us> g_)־YڂKw@ ;KƳ*>*F5-l`@Ut;nZ=3+e_yhJ5OfyV;N0Z1K > A|k}o ;.cem}: LTvˋlAdleT,mc9_sqهmɄg^n˞ˏY98Weď%yycN9uP;}(sw@Ҩe6Kyu]V'}^PُX~a[ޞ5k!@ o%yx6j8U"_\qR6jWK7s,5j?{v#L'׀ZFRG!^W:\hAò>݌$FfR.BئVv0&jv<_.8m7mۚFz[[[n&`̲tBYw];q/,(S;vis勲Gq@)/4QϏ-8~I6W!X#z֙\iX͠r]k"^\0)s4`~FKkk8By|0! pM?6 |'Ǭ3ԥP^1Wf:} ]ӠxY.'.K-_[ 6[2yݕgrx)+hPGY.@A|}D ;,1 IDATEL?%pk dij)">+qo[CPiJ03m" eƆ%58,3fb訣x~(td&OlFzܝЖ>ݽ<1<\8{z1QMBNN6h6ubB=F^z1*U̫#SN3fއf(y_ZȦDXȧa#|6Lr1lysݐ{sy߇ķ&` :eˀnk7ɦ#Ytn;KGS46약 x0dkmoQ|c SgǞurl|F|dik([ۙU ď lxZG֓|^$l2Һϟ'Z8rf%ݬ x4H!p7on;:O+g:@6J-LF&_-X{r8> gk7_,'/_/>1ryc|=jjFsFC8(Ħ`JR)?%"5g{YmvxLzrq W>(Me- mjw%8˻q.0 /8v$=ܾP(瑾 ~e| Ns"&{l#qKi z-3Աmz{J 7c ηT>Ϙz[2eS\[Y`;pp _9B8t^?vϾsXk K356'LHR7mdw<;k8e&&&ntͦgؖP0g\&p\̴c|07Y ߥA|# >oY|Clɟ?a4ߘ$Q# >e >e >e >e >e >e >e >e >e >e >e >e >e >e >e >Ԕ7|#lllllllllllllllllll}qf7G'x'`k>,4 /3>JA(!? >0>hJA(!?mWisE@E?$ >~H A|*!('TCPNP @9!rB@E?$ >~H A|*!('TCPNP @9!rB@E?$ >~H A|Cƒ I-_&Px =ӟT~2x@0 58kg=df)v@!`nnD6p%)Vo~Nf0 ݹKm-k >H-KI,==*A|!!3%x<7O?s Pۇkyf{)/ 0 ݅`co?z:oO@!`:F쾐[~&sr?vI-[*d*A|!a C%ٹv>T0*!('TCPNP @9!rB@E?$ >~H A|*!('TCPNP @9!rB@E?$ >~H A|*!('TCPNP @9!rB@E?$ >~H A|*!('TCPNo $0>9o죫FGG ccc9bř}rfߜGW)%LMMF㳱f͙}th|m_lllllllllllllllllls7*)O2B2A2A2A2A2A2A2A2A2A2A2Aҏ{2=1.Fge3mĉ >Y ;82|-1 yÜ~ā >捇1 D 7 >gp<$ ӮAδ쒏wKW*) lTdf17IU3<7=05/?W|"M &7g!c+4MOPc?'MݍɮI G!s} 8mygRA:|=%+!%Psvn}s;O̸Ը6Uk? DZW`13W+]cܳ,=/3KO"L(?\pZX7Vƾ8G-M M"a'(SҮZ|4"( >ܛxVt6P%|@ޅz;mLJ0MpweU/*igtZ3tRҙc[2/eq,W]/==(c9(SwّJo[h[́xGʏ-ᔦtO|xOY¬IkWaήxrTA|7]G%{|( :ZY]|^r 7퉱Y_DWY_DAEW {ZulzPWwS_?j4}}e4.d_><]0KNz&H2w "G榜j;"ۏk۩;3Gڎ>N;#244$٤Gy}7"A|~5%# wqiUAYoʇr(w}t]52GVA|c7\3@$Sڨ>'QD?0E?3DTA|mFw>PGG##Gd9 >:5F<35/ښew춯Snzk(+=}=қf33,YNuI::~n#Helɡ{mWCn9ґ>{}WkoMmml\)>%G+xggl0ݐНu-+fe%reǐ8A|#{N䧑^Mt߭oٕKFiכMh>=d4Y^ɩDK~/{-ǸTz(e$Y,]1!~l(=}B:tH=[T-ب?h[|k)IGOk]klyPoj4}|`,@]ug`G.|. zx#Uksԩp/zy;'3vzb.4SmlmS ~^3|=ӝ tO)ԥ -W+A| co tnKL/`tilZOxk{_s/Ƞ'+V]E?oeeoK¾ӻ}y[qn+-߫- CaA_v@F~5\\%;t0$Z8i_/+K>,+(9c|k䨏8A|s=K{$mm١8lW\ӻjI\ Q-he_Ȳ<]AܯDba{uStK}!V~wmrs=/uF]4k˔U'].y+j1V-1~gu<+Y"3v6Te>j96㾣ԍ[C4\\"{u нp4qнe \P_R^qVmoTԺWK!LZyq{~۶m+|66Ezͫ=OBAsѲS^k˭liĠBH'_24x:29{cY1sG):un"ےHIG+5|]KڬiVSR/eǥC'm_vnޟG'+\m9pAwl-Y17vEg9;ch6޷i9o;9ex6KW-9._w(l69o~A=4m$q`eɶDmS[fڻ>N iZ][\Q>D WTT˺!X~_r>ˉMנEg}_}UO'Em_9R'5maA皒aJM)NwJi2JhOwTiqσ򭟲8AZ@P|.:]~+ϫAgTf<^qI@m'JM6}t|u}]UKˑZ\뷫#_?/m nױ}؂n_(inڹQ}W?sY6>eˁF󗾎wx@yav޿SOiީO8q;Rh5.y].wy{tTiĠllKu{j:[]u}Fkwk<ںA~v^yB빢tW[^cw-VZxr%/~tD=~}V-!#wV}40a/{$0_þi_zleٮ}Kd֥Z?sEy!D1m쐁LeҒڣwdUmփACFf)=/׿uW3sqp2Mlmq/d?`qS2(,FFjŝ:CSVv+Sy#S0-!#c2>6"6k`վVE㒾FY.ALYrto2:ȫ,E_4q#GlVۃl_N13.}kב@w')-(ғ1)IݔFy֡d~:\ܫV&"!7eC^Nu]ϖyΖc~3?8KE s1~ȗ̸\S=il;#y} 1%-^tv?.9\ , G26} O;={9i~(l t `srIIڨʑI~_[_n+1y.+([֙Qe0zn-MGO껕{LLM>)%b=OzJM7rwg$;CVG5\$sVh6FR]߱Ht(6\CSz:jZ keWǥܽ!݋|:ޤ_2tj=@};oیodRz=2){S:~Ж;!zYyƩDe]%loFj9l,^kӖQz4=j\FyR_]fѡ}u<&~Ɖ>t}P.+m| ȅ|a~3 A|K]Lh֕%Ai}el& IDATBמQz8[ތ:n RܷsJ=c_?6yϜiv[Q:yWyٸ lSsI'O]cj]pKMfQ\QvD,As}u ?XX<Kt=/vX7r8eU!jjZptiuK) uZr״2Դctx_JGJ2{uwiU?e,P?LX\^RIl_2J)< :U]L [;?Azm*՟ȽYsd׭V-H.GnKrvjeP^5%q5|*@[%r$Z:h(ptP`lv|f mƤ;_IeUd}[qh@IO^-Ah"uĭ 3X_PGCڧ׃K;=Iͧm9^/zeaC+b|Ɖ~MFQ*>b  gtx_˿|7A|%V,skJx_^Tt^mSYҲ~q_iuSe!~.]`犲D$Z߫)g5О ̾%{20:ù*`;uDS촓IiSFoi̓}edI(EqKΤe<;ޠ$ZZad-#w)> 4H1AාNehK;SRF6.J_r4Y^57z=㛒WӻCQ^&ז5]Ͳݱ3utNѽkQo\roԝǽ{HPn>25=<;90\oj/y}º׶jқҧ=eL t(/I]"'S=i2v[qCO]i1/5/&.ۥr U%`%s/"~PfeTv Kq~DnyEJԋqC+b{ƙ35ߵo/F[|6l,S/\U/ǺzߟMKv*}sɡ2/.+g~zgl=UmMK<{Oos*}s\'8z{O\QD o>W) Zؖ5S'BW;TsO2J{lqU:_u{ j>;cU&-ԡ(P2Vk᥀3|Nj OswTj~7^c,=>`N⟖:GjMcڍVtlllC)Tbw{%?T~flX7))׫AWG/j8Nl:]t:u4;:g/Nop--_# -2jP0}yzaRtaw?TėZ5J{ r1)?.QQχI\//S#3W { Ǩo{-r=^$1Lcߕ>_*uďܖ7A8qfᚌoZ&:?ڧb2xkyi#M[e=y?k^u[{2+2h>c+RK./K~n}Re -rhRjHFGq(OH;ѵaFy׳3nFV>u >#|Hw;~oqbuFDաAL~d9◚W}9B^[F:8Gp)k;C{FH:Bkeu%RX7#"ovlh3g,\K]K˹)ju/y]굣c<}郎Q \oOG-;!ַAg#ig^ѤaQAfei{g0ׇķwz>̽(Qijq^?KR1^7Ar%3lT}k?/rirժ<)gw2vN Jƹass{R,犲D~ɾ=>ڔQ; V7It<%{\:=|6{ cPGXn :f{H;eXZiڥő|i.;̦-+ܔnsT]G;]ez-қz75QuȔ(B^ӽK]3FHءԢs|id;A_dR[|i.Qu9 [=޾1v})ޤ-d0kxYg^vb|;sȀK~~0?IL|]}v GhEM3h5|Uڵ\A|NeE.Sg.k(|{QA|M5QrZ^uZ>ӯX-[Oliо8:I)ovi4˭-n:D V8H~{k_lXL(SE)?c\޷ծS~nzs9 Rv9r}i|am*rx:Z,=0s,kO2b"Vw'7Omߓʽ( pb ýnփQr1Smoem6㞺ONMsO,q>N?rpҲvuS!u$~;/B}r}ۇL.6rrDwEe;{B~Mtɞ}vFfy&{Yۦjel{ԨeRc:W@$E$WF\Gmp֑E~!o}|wӪk AkdZT'<]^-nˡsNmA2yS?a.|6bϺ-;ҩ5%J]A#Z0V>}Ņw cn{)巗v:d6Ru3_w3|e$mRÛǸG8͈wI{絡X{ZAcUr9 .uEۋ1~p}S_:;M. 6މDDtt ~z-r{O{b34pW*KoXq^KӮㅲ<^w0oy]g|_)-yܵ/~x!=1jZ3Kug5O|t.>? WNn>_lej2O 簝Se%vGJ:-݆q~gs,Px|S,犲BD_vu27Mi0ŝș[YعMrq4 V({ӎ#jctJhcqmTsWG:;>%s#62`ڱtZr?%u:ktr"Zian+uWYTk9B%u])ӧn >}SF1[J.յqṺEL]Ojoe7 3wϭ5z6zEы#uUϜ%tg:x_=ӫ,EP_/˖I6nzWygjK+-q/R2ا?Y!;1 1heu~Q zO:j|P^~{E⸮MsSwFkNin;mG޳E /\?=,Y%kx}SLk\wgI04 SGhU;3Ѧu:_=w\̏]ۦ{R3uMk6l؈ rЈ1M ee|tHFƦc!sty>42iӁH)G$9~\+nScN2!cf%g?40 sg|x 6ƹ*b.o`pLIT6YgZm^۩d)Gqwrv<崑w20+QЖw2?}ng^4/..B]FJgkn9do$FM|fw$t: le 6_Grx'neƠ3S `OrG5t޴ >ͧ >D8G#$NK>P~T gJ6=x"ρaYM-;T\&(=zŶ{'B >q{^[wAa T ;l^#@)<ePS%55ղ`5` t/]]ǹM~%oϫ5%,@EDӺM"!QG,L@r@Rқ/Leḛt~*(n-? r#!#b0=1o@T0oЂo@T0<_4  q yɜ~6澙B@P&P&P&P&P&P&P&P& =6.Ɩΐ<ɥX:ؿg?ș]QnJݣ7wZv7~$0CҰA>J3=w_,ߛ&@j6?@zVbR]]+]w|vqy[˅w IDAT韦 ̰$7 r(;FZ<s.m/^Ov0u2R!II&{e`tn7Hy`6JIeLm/;eXZ+_n/3ĉ >; W.;_jIWr~DNKn|CLV-#VFue.`RWVˮo-̄2W\̶4-}n|#kf,:k@,)휷D_CZwFYztHFd"RʥTEʫΞNyHF-Ѿ;#'>:ojHi\ZбB;;#L]-0_~C ݕ|tys?8xdF. +xI]״P;ScSF⛮(lrvFqUǀ|m%Ə?uq 05zSz8ҡ$ɤ=қRv fS״[vہ#ғ7-qz芜jk}Aɩu`;=1uRj3WzҒ4ϭGs0oޙc1~#.9Ҳ/ro!Faq4?;Jwo(Qo$NJswHGBǥy\G<,s^~1moL̹审3=)fؒC=]nf\̿W^kW[6fL5ӠTۯ\ZѮԽ8s3e١|d38G2voױq5(Pz`JG(e󒤧c+3znj6>_6TY;XZ˴Zy޹z/SSc&0rz#I8iMfv%eMae\?Ir3,Fm707m@o?ž9*۶~>$lpl/N}_}YRg~պ6i~]"z Y]?z|a-.ȥu.&L/r!矹8(j܏jItFȏaigzr>ĕq>RvVmo.~K^ii ӣ uM7l]S;%-_,#v_ jK!k%K H iZRrղ~{c{PntL^=Mn5b&vn rMQ*]*Q/el׽1JZʴt6|lm UiK6Vz}|=޻SyoOkݮexohYwW,WyYܯ0(u :m=^'mNi{Irþ>~&8,ߛ# Q|t()ԵkJe?xW݇80 cZF:[OXG}KdBi_WSYǑ2%m_[ا ֝XҤU GI/ue?eK/ݛ@#:eW2ηo_>Ii|_j?ׯs Kw^-90z{~mg=ʟF)AŠueu_X|s[)ej7Nwe%(L}nMaUKv9m-SR湥&ďY^֠jucoҎa!=CͽÄۏ mʞWCxl>-ݦ\8>gejqvJOCJ90eǍ=m!pRo͙.O}/w?V▕j~\_lci{=l_̶)/]ǧv}Sn$\Xn6Zx}t };k*1,,V'{[{~>ޯ?v|Z?!>W@7O|w21}LcI}aM?c9h/nۨ?6ՈC-o0ZǤv;E+?Iw=~o>EC6ti﷮.W_#k*_avC.X?:+olyq~mS)yO}$Kifk]_BV!٨K{kRw#ď_^"=>ac=@ @^vp+ul {.4wE=X++]BɱEigړj>mJ4ďP|/}ڥB$Py6&6BM큒!-ٳ,t_>} †^7ܽucwf k!:!4td8ov n7>Ԇ^Q"!~J&{,0hC;N&]zn,dBvžB 6:M;]lËז:HzmZ_ _=R?\!>+fOKĿ|v_l¢zoـrgc^O^n,BZBWK:ԉ!~^Zjq3!X»v-:vc\se #T:T0IaTmmע_iC|}>Y?cdB{i'ڐ֑e'^ZZ?!>bw9tWL6x0="ׇ2^瞠?܆ /5Gz%ߜQV "rҥ,-F BίEѣ<4_Wo۾!_zD]~B|k[xC0=pKÚs[Gtq$z6-uo\K]Eܓ8K&7Bx|ԍ{퇭S7 _N=j@\@\M0]{%tqZ |uK2SG{e׽{Q}- ruAՒ-u-,.܏XpB+_MZI8`̄A{TQ/kz|v{M4ߥef~w\}nncC[@Yg}=!ʪGlžOk6~e"۳hrmV}I= kzlvTK1Fjx4'tg MQq!TUeN=ށ !'Hit^ƿǜ ~{}d_)p KVInZ_3t-Sbҕ#C"/e=6/oos>\ڭV˰ۋ-DC|CgmN"7ځ:bSZnC|1¼hpc1B|߶2/-ھXSpy]/f~yXeScoms-c_.mSi!:k-=yt4noctB|򮇎sQ?^|F?@{lpW $a\;n9]V4ڍ측6 \r唴uc`v?= [-4elC1/p|/JurmҸ}cp?<˅6W_c7kO! !lM{Mm}WTl=ҟNKoI.7Aa톤n0H"m礭6-^k+WN]T„q2?mru.N/ B-rɎUH̴۪U5 rW~к\6Ln^{ K}WVԛQ.m y>]_=Qe;V i?X.p6u>~Ljyt%~p|8optA-@ﺣsŀ:f[T7ɥgk矰eX0DC+z_mk槏]u}쨩[Ȏ&9?@>,̱pdۘ]Qy]Egwww(K7w=l4RK}@SyL/gg%;:"#٬D䥶s2/-d3226"H ?rYN˰\,~~o/UNL&MBYe32/,Ny=*mL̖dSzn/w V>$~轭G(JmZiT=F}xqm2sd|o<:fO>J?~(WS!>%{^ջrr3`BPr4D 1YNoamYDL荏ڷ? ^-G;SosyH]tGQ%iTUWIU<kbRw)EqKl`URS-x,ek|!cm%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"&&&GZZZ䭷ޒPzzZZX\~]N8!G>L.]hQUQUPŔm,3~q >TSNI{{K:!vZaꫯ<שuuu&#/%KO] IDAT#7'ر)ow;?XB|ɓ200 lVdrrRܹ#\.Т^ޣޫ֥֡֩֝{uuuu'!L~UrEZ!{]&J?}wK6,WÇDa(uuu'!;iZ=;bJ~K2z9mǍ_)S?2gؗ11,gm>7H?8Z>~NNm׿a9iOK׵{_@|'XK:n*W;eW?U;䃞kuF9hvT,Wf}v!ZZwbB|ډ=ԟ s(yo?pfOXwͿ 4ww~j&rH?'JcG{a^?,CG.X֝!x^n@[~}4@1qy7vBg KO>xO~k /6PL>DBݳzߵ=tݙy6=~ۗ^t_JO<.{ߞ>^maG/ğ㖡փ؄Lݔ@F&̼L~jXv/PSwdj~+ >le'W;ߓ^>Zڋ#o?{o۽ν:-Snw!>cy!eZY]^n!O&?N-V󟬯]'S>agyWuI "i}Ͼ;.fy`'+S̍ 8+B|eCߛk{瓟? !h%N7v[륾nnyKvUܛ۰go:mLF]&|}.ʏNBxC'~zq{ZzN]hw!t@ܶlaw'r_mwmWqk B|ǣbgC{!ð\ E񝆕t^u[bl=w¾ B|/\-疲_;#_ܼ粢p!ܺ`_9p񑳿o~#{crs\]#Bm}:*~MeÓO,Cenzo!C|sfo$;~-zGpNCۆ9x}›䷕/ʋ/V~[erlӐ>B|ɓ'ettT|bTRTNS) ;^柘c^c Dp_,*}(k?-,?7C揜;^+}`㥿KNP7mD>!>Ap ԔLOO^ZZZZwb,WCW;~q9w~'4`WZ=ҸQ:nϿm7lg^Ϋ_H/3oچ[M;C䥲7W-6O}0e6^~c{?!>BϥK&'' =jj]jj݉Y_ݡ7\8"[kj yju|pmiyǡA|>ܹ#$JwՋ^j^0zzZZZZwb榏N~s7Uo_:je>r|!:ڿ*m'~F!>^_۷C-=jj]0(+?w{:5ߵ\@^*maNΰ~S쐳Wo{:V핾JjrHw c?ç#,6B| k^ )NcǎZ{{:_dZFPsߜsb?rB2_> sֱ<%7r zq P"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|` tw}{ɮ %Z[+s7U'gd>Jf1{dܫ.fyn*Z/<:+rikjeX#0b{%'\>nK/vv|ٶ¢[7AL$ˈv#n^YbEas;WY}keSUY5e3-+ҳWW)]ϺxT7>M<=׋½\3ϲ{$:ll,e?(|/mDObzp}5#])sI7^^B| PeM#nQ`K~奥l sҴ~feލ|Cq춭{$B|ϺxT=&WcAqR\a4e#e٤gWpՂ]7cϏxMGOs?k{Syg/7+}{ޣ B| R ^+VT?apRn|T[Xu0`D WACՄI?g>{xuԯo_ !~~A+|h{-X#Ti\_ Kk; $ru^Nٷ._˟x./g.ݔ*x1ȧG>J!>KSRቹFE[!=4S z~J'~qwBP/nܑqh}N`)M f7fG\19tn!ueқ̄nJwuh:&R0r.; edʻc >ӕVחk]QeV(c6S:b~:;?j:,S7B+ֲIw;yP^ѹpy9fԗcͪs=`+S߯l}cí?#b=i_I6 m:>Bٶ:y] |O,3e3s>9mo*=ϴZ{^Nndžqmֹo:TKc<-I1e[;԰k_ho[kX푵 ֓ yp˱:!c~ߩ-l0SHv*vmT<&0ydו_l/Sg8[.#uP:Z~]3s?5ƫO3z&;ikFWm1s- \3C~I*dіS>'|ctFy:ܯ!blgk\k=N.ğ2(o=+әsuwztю{\ ?t}2{^?B=`np]m;9Л Z͏sii~8&c{Ӆ bƐB{9Wǎ~c̴'s8(sgNKqN^{ ,%B| x!~~ߺv<{CIg6uqoB|ǼT?3V6ouicc_]n-﫜/6so8 z\,#d2uT˙ !~O˫W-'Sڔrftiv8}+h!Kz6y)#7oakykKcS,RUOWJטӲ:,׷ȈKp7Ԯ/s}oy2ܮjCF/JnknisyIWK6 }l9Yct﯊q_\׳NNxa|_;^H S\Z;B`o v2Q^C/dZŬ^vn` WT VVȶ?`)[gqY+uάZo9]ݜ8zC/j.'AU>ycLZ]!~^Z }o^SZںL.20~SoEy\R!_QQyi\r:.,@yaCԶe^ѧ=\ᵨKlпl S'Cɵ!O:>)#to^g`ecquBvcZٹO^{S61U,JyyxO<5Ib`뫁=xݷ"կui+d&R``!Zdl_=SŚ1%mmQ2\smkX x%^3Ik*ōͶמݾw}MrejivMk햪ڦxub6`ak/b_ sIPESԝ*;-:g~ܟ~(?8o?3Tns\Z7TXbs!H7'oDoYn~?o:ddvrrDֺyxYuR){ hCoV{k!Mfw:/KҸew 5[hg[.+ď Fn푑qVKO:~Fͽ[$=:.ɜdSge)TK!ʹ׽&ĝ߇YSo#!v#dOFƍ*ln & #sxt J=QzLT^cYhzY>0G73byɍ I{~x9*9yȴMu"V2$+h`wl=ڙSq>ķngOej\,ީ̯Nl~F뱑b;9@c2{6;b%'7MkҨw٬go15sFYH$GC@DNxͳ|ۖF/lvrC xar!~84(8HjVx%t- !~rtV;b_9#76JWfP?U9{z067%U󅡉b6a MKcz} \3chkGF/iVԍ߫9?\c}uRN]Cr5~mf;^6dy~UF<#57HF/29eޖ7eF37/13 ֙9m 9Mu곯MQhEu]p**gced/B_59պM{Ɏ^qZwƍB۠ʢad <1[V?_ў;WX*@,CnFJ,W9,9sb^ XeÐ*M Ǯ:Y1pxOrCɩ, 7r&cqdꅯ]nZ#N7$ ڍ׸*t{TLt{h u\RW9>2h onW!aTz<jciQKۡzϯP71;mЍk Q)о_cid|ơݫM`#d1\^'gWC27-77+ס0Dg) wM`ss$Bv˲HFH́O?,Le;MhJ&_p}r|U!?yqSk5LJjL "_U^.[2A6\iFٻ5]p s|TK1߯z;]'~RΘ׮:|PYU݇KyqpkOC .ӉdIꁬ8rƶwb3km_:}b~}w~Ĭ=ۜ lrGcO{w[x)#ZG)^7=C|mY7_ ,B| x!3ASS9|n7?\CzEC*yݾ Okz 7/z>\WL7VqcҴ}?,l>**兹MFnb!C|pݲϴP}kՓ670ɲAqݜ]g~s!%H=:yqf!mp^={Џq} 47^Ǭq 0)qQ?.8{%.3D~==k"Lx۫]J8ďrֹoͣg=;z/]RtC;aOg .8LwCy%k/Z}[Z5/˛,vƽv5ױMweĨX!X^dþLmø$.à>}y΅e1b@~<=Yna-$AofoM淰oYXڗ3INg/Zeɴ<|h~d^rGQȽW IDAT !>K?i_y0nC=2<:wՂ`SM`C 7.#jxδj\ϰao\Kc+FQޜs ^9?TN KN^+ {ca3uM7K[zJYmoeaS[yO%\5u4ͬ뤪3CchZe?bcte،ކG8([rUuY6۔Xog衁G< Pvʵ޻2(׏]Dﳳ7C/C)Ϩ0 4~}ʀ;0?|{,[i3]22y rcdr=uD A?9i3&|?Ck3bbk_c&s!n{U.#=8}NŴJ_M4sy&1v,&y6=crR^onexb\F-,=Ԙ9%h>|Lc) w] -ur/r}>}i}s7K{kReVDn\D}?ችn$7-77B|L:TWZ/]L=k;L͑/]RÍԇbOzsoW⹍~xCR󧾼 |(|07({>htnY {:onC"$ֆ*": }C|5BFCJʨC iSx }F}QC]=]?g koJ͞)#S tD z8gvc! !~sm?c!CQǻv ߓ 9a>amD,_;f'{fB b]W 7LQCBf+FޖSή@!65 ,B| !~=u#+ruܲis  _V0-i܈P(mWSiɎ{t&܆P3-G8(|DҙMK:}I}Zm^eu!X Ѵ=}WG(K3 H ;q}`zOKTVɱsF}^c{#j{_d^=!y+PϠu?, N˽>KlC|,otW:Lo{jtga~_8v~)}n{;_%ըaIy$7\`sj:'é.9l~@U ~G #(~D ?!aJ'˹65fB A4/w0vƽvs~u)|玠uT"`nJ}-r˸v5%3YMX_ςBF㤼UY^CLm:n׸!Pxj;e?ʢ ,B| xԻvs*vjs -,tnX)']'Iq+=5PAOהM2HuVE7 ͯyΩ~C7Wr FinaVC'O}Rލ4e~4=_| ֆHe`юp'g|Z{M-FF=014,_u~i9$eN=umhJ9;l?^Ǵ(A-I81uS:_nB|S۳~^7M&4d׶ow~f1Ch0טɜ?q۟{桻M2x{)8a8}=]{Ho~v{QB=)تi?#uuQq֡e/>#>tlvQܺi@^N=b#b)?Boi|#l777IoJXwfǍ$B`6[G9 jIw׊sWt&_{r} _{ۥ  %

        fw1{/m(ǺOll7u8 7Ii]C&(:yӧMaq<ď~}dulw]Q#SJAkΚru)}Ƴ2##9ns[nQos 3J?U[dSEgY%dKGË{؄,T /s)uŽVm7Q]>{ݻώنLz.ju6c3[`ۧHVB,@8 :%ǹ0n!U!hۯ@֞K BtE&Pu̇p}sǬ_q{ܾ??K7NBbRU‚c0-ѫ ݆Rq|U:QF_{Cz-N97ď~}!LoϘ뵪X`::)vƽvbt~zK /t Gp#8u: Ȋ@p'qp:-+ojԳm`\m! oQUJ!>y =v"NH^>}H盌7ɥ*no&Z5V.  sSm ;Gm?Kgk7kp1Uz~K,=j|z"ގ3 MCt~3ͷYz=9/+mCлIݜ|=建LAǑT E ]nwܨHxH{OV6h6AK=fF KO7ʍmSƧ=nWKTح glc.R^oq/ f7utcn\G/z^lpT\Inհ!FUݾ_vTwʎ-[dGCg:5 elZ܎eטI?ۀl~DlcufMr+vƽv55Nbur^Mz}Op=Xv8+FyIM8{cg+95%y̌DQ<IDoܶ3N=cmBgRFxFpmOwt׉g5RUS+;o-ȩLPJ)A^~C O|B|̒oS~,[ؖѬ6e$1SSInܾJni*'}: =谤g['XqNs:gԗ}? 7Dv4|5Hmq|KϾ?;V;;PLm| Uk}zm-qd޷*q#s/),ƋǂQ#e8;gԹ/7ȩsv:~xA&M\^,1v)F;?Fd3XnA3*ёkɅ>>gmFeab^Wi?G>Y߂qxRu"uu(ug,2ekSʟ k\*(%$)<2߬/K~`iHWhEaq} kW8/|(̹Mٳ\Sx9r"b  ISL**VH⯓]79زmfo傄 ~$dv}ch2?Z9yDε4ˑk=?kA $e8=,Ù~Og \S7Z;j 䭆7䭦òrgkX !B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>%A@ DP"(B|J!>¶?nJ6A  }B@GX_ (]XXXXf&A h3 ||{0.gh}!>ceKHzDDU!> KFp%2nE gaa!AB !>,B|!> !>X,B|B|X,,,`>YXXb!|⳰B gaa!AB !>,B|!> !>X,B|B|X,,,`>YXXb!|wCX{]Day-}6HVpX~q"n(4qvy9{r;!>x>*/ʤ.<!~}TJ.({+?EAC{uCMV nJRmTJ"7Ĥ@Ԑ Li066JIvl0N1g̽w;0>{0o<'̥19_m{=0ic^ mH_uy-. @·OY#Y vwńP!~2&Y^3F86?&n^ zvW10N m16'C{ޏN~5]}zG~MڟSa{d80jվgwj㏮<ڻCv⯫˾vp|6ce>IDATS}cϽfclig1dyo{i;I{j8^2~Bl<27Lio{C8>H+3揷6WWk(_~y/Óy!Ca{6hTb|5ݗB|(? [ccibWkT\eOn!m4ďn;Daur?y\A5me+TП m{ϙ⁼[Z66{EY2Cy!~sw w\h$}~|!>YB|(llݹՐ1Vo.%]#Wcӕ6G;S0<=v {+!ś㡷<7/ao\ڽlXL,H/7~wTS\z6wʇmstlyy ʱ6/G[cN/Y{&?&aB!_ڼmȾLٟ:_\\~9z( WyBt!>do_'dzVp~oV 38RSjR!m1ď{\_;C}%s;AcyaC[_X,yb7F˞VɅ;.Lvo/d_߽^*Bz'1GmƏdc; t*O+vMkhnwxn_٭w<ܢئD;y;ߞ v7<٧tƵϬ.x/V> ׻4nAt^il*h_GmG^ K|޼}138Xd\(':rV+!B|@Bx.}[C\ xU~"^2|M7q|iڱYgKx=;|? onmF~\؛ӝJXTx-CucH[^=FIE "mSN o7o'[?j sk~Blȃ:|mD~VwE#V0Tk  "gk];+>wܷ[{v7F?0NACBtDowů1}[*5/:p<NϏ_ҫaȅm2lq\@!~_S*MW3k!>UP`C(L>Lx&:3<mkWR!r,{[4Ȣ{'~v}_5v1/.o,(ffmg:/k}ڛsrC!=kGd!ޙ"u B^g#0v@{Ό{GJ 4ݒ|?uAk}AA|unPGC.{om M ܝ |f4./O/iz»Czf!>UP`CnPo?o:~ qVR83ryKK&~>xS?k6N|B(ѹO&&Vml ׍_;*B >O|~f.%^*oYB|(!~jAM4v*dlzw*t?~= {+YY kcz^3[cmKS/dõ{]ʜ\xw; rGmcp)#\L%nXG svϿzNdkJ"='55c^7;z> /^j꘰2o_g.L?ܘ}7~|t|!>B|(!vCWcžM]}k G_ {J}~|hm|_ wrکEsr(dɽ/ݞ?ܳ1Faokw~sԳ%_)uJl RB|SP@"B|!>+@_)%:EJ)!>)B|( WJ N@!RJt RB|SP@"B|!>+@_)%:EJ)!>)B|( WJ N@!RJt य़øL*+3@z !TJV]}gD%5zx5v?ٍ*ޅ_3@~rA~VJ~B|håW+T;`3Q{(K?V*+NJ]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]B]R,*XIENDB`hugo-0.131.0/docs/static/images/hosting-and-deployment/hosting-on-keycdn/secret-zone-id.png000066400000000000000000003361311465312036400316040ustar00rootroot00000000000000PNG  IHDRY pHYs%%IR$ IDATxswn6fc.fc/w3&5qqwq=il6c#v.0L plѷi@$c$ HnIkJβE/$U}2YU%Q#";ʬɬ$_y!G@@ P(| >@@ P(| >@@ P(| >@@ P(| >@@ P(| >@@ P(| >@@ P(| >@@  ñ/oYnNf<'n74rJd޾I,LFޖe?nIL.vKg/mӟ?}˯8-I1y_"C3ӨčGH[]| É.|*.4$(7c!V9u?%S^qvҼtR۴;݇-}oqa)EW`7wCdී"0׿#JP:ڞ/rﻊ+d0´|CZ*7w˻oȚeŞ{2(Ϝ+{I>'~>+Ձq/ d9Y/7=\ dy -tdૼ| ¾'&Xn>_C:ݡDS*iiNВqDORgo(G_D4[ypoզw^ h9WIo,32[ 6_.wښ֮Rp)|ot\^@lk4YG5F\z*s$%s5HͨjDS:q}{Ֆ^L\16W햦~O'^u~N7gt!yox[9n~lz=#acƟKe(pP5com ^ܘK!mGeCyG r?tћ示bC2Ts\ wTeGKiF~YJeW9Ao>\r6$jޕgȟY/׮Ne[ ǭF?zMtƼ>~_}ٕfmMW MXb.ѷ\|2AeͲ~_,iMcL/x%q_yD4ǵܵexd#Ҧ_SyEڎ=-cUnsZ7 Kr/xw C@NFla}={_~'j{}K{M 6_ _}xm۾cwͽ-٠Jh=ֱ-𺕔1=JץhdJwU8Y/L:ݓ!2G10b?rAzyGzzf ѫ3H79"T<A˵=JrBedMK$C={|lcցP'u=$4/$9Mo =#ޥt/3|]x<,W{fx(\~]3.{>v WTY9|ef~ϰ㿗,Sᅳoel _k|PVzl~75+]Z\q{ͽgolIfjD*K+ȱKuUoZLV}aɁm wm6ץKNݚq?}Lu/*.w\)1{Z._]vd} =Ai>BZCI] cW3Lmzư=\=2zvЧ7F[~>{$h9ݼڇ]xMft6&a?b\R.1/Soy_>+;#g9{oY+޹3kYWcdYvܣX/ʻOn q|-'=缺nޟ^X4_)ߟeOۜ{|xoG%"ߐ견g8ovؼg{k_R/?v͉ (Ӿ X~nMW=Kw,[)Je!Cp%Ks|JZ%1܏-z~Hs|.c΂ ec9=Нވ] lOv۟EԆb=lOCbRY$k*9-}7eGmShtTLeF?3uUW~y%φ˼gl;2wrw8/.˘K̺ ɐu?k;5m [b%!~ (nݛ:wSZQ6/wyf'|do@A?ra{:,[#o=-1k{e{L ~ IrI%Scv&yo5y8YxaPR~G/% XSԫ0 cۥy.OoӺrYQjKȪZJ5/2Jzmɫ}M{@l;'Ni'oɖe dۭgµm'? ;?hW'_ʿXwsޒ5,8{/,C7{ך|MƗ!# ]NFbC0=%Eڗ/NېZY,XժߺzdK*LeT.Cs { >jV=zG43=j]߰]k&Ƿ>t 2v\lcz[Ch끪zKfAS h_\|Ea8{tf-O8nC^1/>!o{ᆈ~LZ+`L t]S];&Dj񃟨aWgܶx6c\Fm[/͸R{ _\-WWzK&eu/h%۲Cy\;Ѵ5wPtqNfCc%~;{uZN˯1tuls).ǟ~VxKnv_l"{gKw k\S=H7ԳrIZ.& ~ h4JWw_=*_^nmx;kZS e3!W"ץfK!ĖI#vSvR{|G5 &d98kN|]OmK YZ]ؠt7ʩd{՛b^:YJ4DQ]䓯m]ߐћvnvysfYo/L ']mib{Oil&-t?@^X%@s q? w.*Cke|:8]lezurY&q@!ߤ勽<-Ǘc=keA"۽AZwGcV7;>=f{0Tw ޺7#FeʐxtPښd+=5g3K_t=_丑s6ywoa՝u|PW9H /!E4쭇{Scm+]rb/9/>m5RwG)v1d{kݲorIqWD?q瞡Kn>y1ijhJeEsWBtYx\b{5L棲}+^XyAŏ5f|6twf~~ѨwϺjLejD*Ymqi?=z/S/{EOްc8%^-΅`,*.=W.&tW8:BԆVYK37s~ۚ5N5W"w>tD*xl3u !X{u_$FٿECtϱjC5iKM=W6_ g0EYz`3+e3k9^&nȸ E/Ş8_pNV ;|uw 㼇qC9|ʀs~}Rql=sGs2mJ\҂ d`=It5կӌAjuaUjqY䅵e9TjFm]u$٪#7\b$zh{iQuܳ!x'to cX/`W~ťBV}݁OB:B/T:)wW1K"RYD:WKU>7)Oͳvkv}8!L+lm4P%+eׇ70Ֆ*ZҼa^x8h\uL#GEbSm&~a۲ eAo_HvuѫiJ {%>5`-eo @wkwetK h[P>' ҡ(Y]]ve0mLÚR#͠w\=KC8 _bx ~q ͱ[+D^e|kxgH[ .T=[\lnNo捻}ڸ|ʦw+/[3_B(0xLFc1O|9~ˏ.v!^xr̺a#791qˌ 𨌚S!?da>5_"шHs\Zj&^9( u/mi{uږ}?Wۘ4qUŮ;y 񝽚t_ x]zk:o㛞 0q]7]6z~P5,ߐ],[;ئ{Ýp0g,߽/4HRYq/} o, ,Vn5dwesE8q >in9VLޯy[,+Ơy7}iWo\9FGFS4{qI}{o>9K*ͪv6Jgxffn6챳z|F_Q"`/fM5&߭}5q~f&Xu8Pgw8wSW|c!o|oʌ=3M5,Y-d[oU-3Z7 IDATo)-]R̝{G[/3 })geӢ坮vvT=5׎%<~rAizBeX&G͸[b\_fbݧ'.#ڴpY=hk|1_ңL}`Ji([J+s;v@c|y>j2ζd}=edlwe{Ҷ뇡-ij$1V_F(%֗)p7.I_t_? v)>(5>^)o_Xrzr+\o4BHw}o8Z rJg4on~z 6]9ײ(%vi;+ۏ`eWҢ-Q kw|P?fmΞVo̜_=ϯ2|ΰh/2^oA{g[Ρ#{5@ૌ씦S}S͗/2[h@@ P(| >@@ P(| >@M֚c@Z@dYtir*.=,q&ҙϥ>,l@[A VCm=22.GjDv/[b WuA17[~i4'w|ad/=_X!Fyj^ZWdzytF&sD4JSs$c/ LbCSm)| M?[?+t/2cK"׼b{+?}Wy}yEU22š ~x\dЅ4SGߗS6e$EmLѾx19u4B-a^< \7BU2/Y) թx{r_wNKsV#h-?><$Cq!-Y9vy-A;[<|5H︀ko~Ѿf`CT-lȉE3aWDe˼@!#x2qz'=_EcWS۳3[ @[ԗf~QN׬s\kގXh] -?qp5T ۲fҋ1l w؎rl%L;mOJ6vjm>JI..Ƥ޿ZA;q#*-\34w/_\w1vϔ,!#۶}wKcW/} 3n7ZDޖLgcBnOLX%-\]w>Lb>r/sA1Sտ5^~ϥ*{~}>,oUPDu{j7Eim,KtY8>*%%`}MŒ LƧ>  Fswp/aiJM9{q<>sg.]{Ю.KX5r}2+>B vAZR7 |yVx5 yD9=< '_q ;9/w}(qꅑ^0c? V#.}WIS)9eM 2 X}7ʱy{J.F>7dfg{ͩJQ6brwӱ&鉌e#u9 o1>"CgFafukjqM/32:}c7]L}6?` gKZl8pIbpC,rܾ6<8]mMvcl}jzw>C2~Flt31]־nm_s;|9Vwړ:9e-;aP5ϙƟlIޗlMʾl߾9C3}+1/p]{f˩T{i8&fH[Ogeٳ÷g똜loNe4wgDۑlʵ]L^fc޶6g:6{V"}O7j7#F&ݨOG^T%̿EspJ ڽhq飍?uxN={Ue(kzzs(`\|k,赃Y_y޷SsC 9UiӁ>Hz[= M2 |ǃh'CO[$ 뾟*5i/)kNkoвũ':~y"빌O^sٯ9]sޒ&AңjVXym8je9{vlXm,_yv \L]OS&uٳhCs̫y쓬c^j^#c9LlmoU:6$m TU^=שP^o^闡}7i^=%E{6I{+r SO_,Đ5w; #T¦T@ =#f^A%]U^ - 㨛RCsso;j\sx{ݳ%Շ{AٮEm cZ/wLyosq{V{0!}~|k?Ӂb~L%.[ סc J@ۻ̝~m;-Ձk!A-zc=imsDyQ"<'~fhhOߦ^̼5_\?Y${&ի|ȧ'/4 <]/m˂6oA[xѥvgPXӊʏ ÐuG29kx,c=Zdt<.Ƥ!HTa+Թo{(k}ɸt;z};K;c)+q{ sȕ#0 і(=ޯ?su}Y34gKGֻK\q9YxhO) \F_қb܈˹TefmxrAc[ujwCϋU4o{j%_}]VT~ V9dvU1v]g6H^;]ݒ o#ڪ(/מOk?6UG۟mh0e՘پMmUv}p|{R*攔Ѽe]g`9ں7FeUpDe_ͻo>y]}9B D5_fo#|q:$P?譬{[Cz-*sQ0ԕ\<떸{&9oYQ)֯up g\,yYjl1 Ǯլ3 ʺkB`zJ*0qBKVJfngOޚ|.At/<.%h!CRj;<k e,1WL?QՊ6nXec&p SaHsy=zX/vwXa%w^x<;@{qq/9Sm߹?m/R~?5^c*2רu`^wv,_m2oj j*=0_#vWh]j%ozMj(l6U>k-s*O @d״F9ݪ ԈTf_.tHTT?kzL}+f(H\|^ڋpQ3eoӓ!hg{԰g7ކKӥާW.½dawOUz! ԰;X-.H]c4r|p|zC!3z5Ū=zzۗoe|:qSHJS9P{Zm!2{ՀO \uoKՕRjX9Nפ7Y_mV,ۖ}jcIq*𵪆Nꎕ5Hc8nzN54w-?`[)A~/$JE 5NY"79tS;5}0}^~m c{u,x4+Uy&}1BE%GP( <9z&G;vz~J9ܝ.bS2 2j2f6coY[ '?A=zַ'@K>d75b+am 7jKXVZo-<>Kz6T{oqgrI |=<_-W"G ׬ yAwku3Qʿ_wԠVF_y%A8nơ3U]%Ŷ@/VyIk=y F.[ڪjOQ6KݣD}PƉR=-޺}Nw߰[ڻfz%,c.\!pj^LoF7żB)CF#}Z_'oVj7cf{eU^o\/l̾a&r!u0W)oz$n+V<64z:W_ht*7se:VQp% =ug+T ٘Q?/[x\~~A{R>'jz:||q}Jgk")ˊߡnkm\ fՠ֫iǟ{Uãzlme5мJ8F\L&th;ʙLN 53Oik# 𗖹ڂ|S9i#Wz )i% j*8]0}0IYFEc/0z_~(Z1!f' wȚe!Վ,|żw I sL}JNpmIƇ1"==ip<[erJkjm{B1}ՠ!~`/]&^N}'WCx Gy캺E ʹQ}su鲎ͨM-WUŎ//#w샚_ym@ykB smWsFVIy)mKr|s NqX輇)sQ8!Wwo=|?]m!MGC.)Ahd ~2\ӔIWec2JplWO#w??up>H/)!md}/[osӬcY[Tx鴁W#j>pƷ:RA`V4cxgZ?u-=]=rjCrVF=bf~u<w7R:NgRcHkO_dNww.#wIhmɶ +/0e?|>Qmk Mױ{nM:+?}_|Iznņ:֋j{^H9]C{u|dȱJLn:-ЎK;d[ޥ߱}rt7Jg]pehsn]\Aor/U~ {{Eeߜ.UٷocUrIk}ݬV(ζ<|=Js9A6ۼm ӻ}ٮ蹵$lXtID5q^kީVimo{7U=#l5/Xs\4q٦^[ju?׶j$5ll{3|SCwasZg&U1OUoS4x\+BJl|KAig]@Җ 6{_? +5S/|LgkM5j+S,v55b]9Y33dBJ{n]af_Xa\8ꂺ9yWTO{d r93cZ$|.m(遭ZE"ᐽ.ǰUkY:MDz{M[]{|;;2@ՒHzy@R{ IDATY'w$2|&ԯA'Fs |EO8{AW r^e"z]v;zwzn/bO tzzn-Ԏ6zco齭7iX'G䴣d5Rwឭ sF_>ڗ! 5kx*.zyt,r_/\yjDv|n\!}z%6U~ת!}!W.xkWP^dG28Y$3v<[Ybv<5ץfvϭn,صG5*u÷ 9{&K2ݗ6gU;6޺mQV* xGvm?T)5-UekԴrh7ƈetxTF&K,:3o4&GRŘ*2-~u0cdx:Ccos1e^[fױ`1xe϶pnm(scIrv]l}>k,Imu!ex,~>arTu2<#DoK; tUZ[7`#@@}[G`r+*?| I,N{x(| >@@ ꫯ>{I4ebbbbbbbbbbbbbbbbbbzg=HLLLLLLLLLLLLLLLLLL._!>>qy!;ֳ8뙜lzF#}Ox/l/'>l.o<#P1͈KyKV.-InO[F▬YFqpg>ȓȱs:x ~+/Ƥ-hLy&rG3M(',m[a&@_uӜQD?m< ͗]>TB_xnxO< ]WB | I^~B#lǕv]%| I>߮ Cz@PO*#.C2t^JgEU1[dȜFm!-C|67ɩSɩ;""ץ;zʜɩK2Kd=JNquu;&'S M2^^l2wA4uˈgx^踑ZfO{GC ECz;^`6N7;c2z"}63}~!}vg}CtFR<_yn]97}:Zƕg2nscz5IOd,<9!5/n^9SVncd^K\l'2cuyc)5%Yt݌?oHWL{oT>wJeIL]&'>1o*癹9g9 =wb|>Rl9:{^;O^ڔkV{Lרۖ}U`!B%nHکdr*(zMnky̷F|B۲k^sze'S/7=e[nqrhb_w7ҽ=gW¿XV΄TW9;[|͆ThF}?u:eK*䛞k{3sòb,ZlW!}=krP٨4of~z7sG׵9]m:HM}9/#}vK;21ؐ:GӳɈHd0y{lk_l+vmw(פ䫾ݬۅ=^Smyn# aRׯy+\d·}[9Moi4W=]eRw\nV3y2wϤ>Wd~X0PYT?MИ{6c4]BP0"1xwj?[RhwȨ.h+Yy{޺s\'g@:_=<mkk2hH~eP;ߐK*yMsnI@pn5$\ߝkO:|,[y_Uɠ#{ْ@ǸsVɑ;ܭ jʐX,.;gSQI7[,W"4ĘKG/;pD^55Ǥl;6G௨@:R2ó=2a_4O0G/hÐh;rĶwHt-sspYO$g<6(ǫۖd+iNolNm8A"[o΁hr;vi?b 9{ѣ՚6,f;ߚfulsOm~vVs0>)6ڦ} 3g5W_8w3WE]; ͽks?k]Vkc:vgߡYF2Fo@-[BC4FƒݺS8=vF~|+<{|OjLus lq)Em=ר{m=9xQ_~8hk<ȱOY O<>89(+^͛^Hqxgk5Hݹ w[QKz{kz^z! "'cmRwZ]Ov_^::ZLJ!/?$qvmÞ_~l۞\| I 僙z\z;U`!e;{yEla9dq<.qd[97.>SEYYLVQnN*<᝺nrsmʘ.Y=S&{fCW亯ՠ/pz籯2P}^?ʹa(|T9 s+C dZϯzP!GVzr],:/vU*}2Wq׮ Q~%.ɒwHa µ$J c|u*S5_ k{BKp|0OX<^]_\z8x05{~"XzοƜ9ǖ4Layy 27 FK jR+M?#WN^Z&72:<$C)8AKw>TNQdڟbLXƜ_-by>~sߪv7qT]f&]{\Z& ~1.ɒIQ?Sx^|[fskTSO(km]_]+{/am E/laig_+=<,50+y+{3Bȩ~k;w3'[lfG maw3TJ17׽{Z:Js#}=Wʓ#-10hÎݯ)lϝm1YOb8fȍ҂bH7㉺u.ܟp%|Zn C}=TIJ VXルmQz 񯴇N$[ X[aK'}|Ϊ_͞›vioMhA>yBߕ7ˉj?/q>g>Ozֵd!Z7w uygF g櫓ZJyڮ?D ~\N݄u =,HIC 3{C{jvi#>b>OVp~NQ>{nk 73Mgg*rt-kz&w͙hסj>-.q.ΚϪn{~Fpݯ%ioilue]=.0{6wܐq^omv{5遖\U8Ƃ23c9slmY> BfzpF&_MμRiF&UYMS UT`Ek_ȶͲmqiմeIj~^:f6ɔʛ02Ͷtcyh[7ɦ] [es6% w>n3o53CnLJ,y)`o6k0 /ԺzP}M@Jxذ5$q(UYlV!Y_m\:~ҷ^ۺITf~fݶ ;fnlkBqv2ۺ7:ߧ>Γ־m8!w~vAپw_ IM2ZZ֯ >wA{|YAavkƏ3^r|Qrxr'>:I?6n וRO{g `Q`'C_j ,5n=vi? |Bָk˹>K\Ն>/끳;驀ft W ːmAOW?|e{1 dĶ׃S*w|qO}Xmכ׻*W}&sIkhާ^,\p}ɥBdWc6vT)ǵu[ CeV{$Zq6HVxHf{ "}G֭u,`Uޭl9(Qe܉Ga9-?WA_J \G,_ԇ|*Lo xHUBo UY}onYB>T?V#'%ffV-y1~{W*?}8wiR=SxlL9K yAk2(Wn32/=1d/o0b#Hv(uRp\c;iC2ifv_@;!;äzD726_c!^ǹ}d3Q%;>*-\o땿sׯcwcǓ}VQ2>8{}Sq7v3=Z3pWH!(~A?B{ǪFu;ՐrϥuuI-m?e@=NTF IYc9l2F^Z_K+Kw\t,@[h[t/5]ԯZOFT? toyy5|{nriW-wsXʔɃ0 ,{bUofd:`1zz=kV(ݏr"tVj1enz{-~ھpD+Ϋm_?ÇJګ,~]bA,aYHmde JÚ YJ$s_ IDAT1-\Odh,_lLgZ@[w<(_oI'%L?:ە<9ol&#sfo='pZ me԰Ђ'aelzW*P*wod>fn?B m<X拑͕O%$/5 Um{ Ҿ|SwtKsmqUs*SUR|VawEe>m<{>Pч"b9܉bδ= s}^lkKMP.mjwvcUkwsVMN}c4^ έRR>`%2C\im>_4( ~]B }6ٶ!D8Xj_ފ>h:]!gTb^gjgNX *!mW'2={W>:mwnp|.grf>"tw=<||c=J}_j BgO>fuAY{~jvi9 'nIFmw)lP?L~? |>%lDlASARƟ\% D˱OFlowgzwmZ靗羄 | -ߡ̊WK[)Ys&7|/1 rh_3Ѐum#eL:9ouF2QJy;&| h:?kVg8;?~ϝ-¹03a7ƮKIgIhk:G nP;T{7j/2\pa=`0V0W/AX6ܻD E 5r Ywm?ϐݯ^Wx->O)Z> W 9{__]]ѧWt`mELT@ "0 4n&paP^Y39QL o{CP?-KPb_*U)n m !zHcߺcr}=-)>p ;(Dgـu^Qq|a`._BHVgXCS?K NOv<9* oZjcYIqM}c&2՟8UI4F{͝.&|o=N]>/~F2"CD`~A]RʪZCJ볶mm;<^]i)P n y40$wo^з1Xۦ]lP:|O{G-R^Yߵ=9ν1( k*y[=4H65uruy-mO\&M>fovǻr j !*q_&gҪUh!7\g@nUJ[/]g@'F:}(ג5=_qssRQfzҧBصbVKsOyB`~APXQc kұhAdŇ2hVzcP'Z^ުkk/X}wk%tZSí6 xϷ3CoycN WˁvRT5{Wq9zq*=춼S5rUredʳ/mX];5OdM?#W4Fɬd6_;1K w.A3mc%0rK?ץ?)|7E$4۹K߼+פHBmg0)%2C,+SPaK37s]csSԒe;./"l~GMwCXt|_{s2 &"EoI#7|T[8Yz#uKxRt1_`\Jw\)()G>fGjg0YYKR 5+;WU?EhAْY 3Z#S m0 /͗J&x6x3_c%f;gBK#g@(8#u9/aKK293"ylkf >B/!FfPw\3Es;.wc/6$50$CIsHycO͟_Pޟyeg)#+5iomkH}OCjb/%uܯud|²̈ylQl۾ZޝѐA\6yM2̾.~Vݼ2n-3j=}k㣅cLFzegUe>|Z-ߎ}HPfv/}`=/?kK_w:L|r}-%CZd:7VIqnOb_67JZ8Hcۘ0PlOk+^~^V>{ ɏũ1tDKԶ۶ؗΰfA+W}vnӒ8K>>]ywa.UMwKmsֶ}#rʨggHg^||~붹lnf}Y圪ݖąV:(|cu\ؿ*J!dGSYq0&T^ұf{ f3ұmc]-y~7sa}VtOʧoi ϵϚmZF ^ߔ8%}Uw!jGO>ޑ+>4XF|v|Qqz-)Tek\mm D>>u;^ ;OS>VC S<I;͝W%cj ij8=SʿF A kl읭`Ds`!"_zYiV9Z)?~[kYs*TmŚV2[ZC¯:2PZsh_5zaP ǚ >+9+}`ݪ%|U}H1wYˍ6Tkg1@D[A=-C[%ǹ o|Wʕ&wkgmvkOhzZώyŪ? "q_\ה]?h~emq6b|j3"3ݭ9z#_F>B|25R*3o3m?w&?#rpk̔!x|u{?W<z{olX+HۺTJ3w,sqC&Sy@(>/]2[/<3z5-a~Rg/)n7^Zi\m{nHHcvvI wKjCr͵RX}<|}ZF_ߚ.j79J4>sr>gެ@1Gލtq@C<0>_gK+ Ij%7{?e\qO5[q)nߍ,y֟,cізn"NwP<«UyÇ?}MvYQfMU |ǹ_>Zon u]$<yoJf'Ql_^ / =-j71PyR[PA{~zTNlX=*/VDq)nߍ,y/ џԇ*qZ-Le@heewKj$%C!-5KM)u;Usms# pCDk`?/,. |%ÎjkrP{GJRQyq==w~̾{E?=LAǒ3rټ-( G`<5LV?[lľrYYiڿVqY^ٹ\0W? lA_DzW}_{c߫9Wvr\c?^ArVQǮ.)pHlbyya%tL7 S)1P}rF`\Mq.}yV@[2 vq}7J1c)ex{u|2rV_zU~A0pmp3l|}g!^dq_yÿt_{ 嶔{s۫xO*3#^?g׺|z=]20=S@ ޡ %23} rk˯!C}r%'e %tK;cUqXq|(;쯋ŠCwz""*A?nߍ0fΛߵHL,8A^S=Z8S1jqVv6Ɓ_i8J(V t_gɺ梁Wseƿbp԰C82y㍽_F?θcs[PDmxL&!f}F{~5ˣ3HVt<;ǖ{ix\˸Sqn"w^AD'uk{gd,}A>-/b?P!,~O~Ax9#or欿-v?YY ڭ?^%7gfޣ;ΕT*>SWs2}|Co[Gtˑk}(zeh$%9Xp[[AժU=D-rlgg[o+=~93,uu$-27>kڶ${>}A׬~rY~YgzTvQY'ͭޚ=`;nwzkle䲣~rCt.,3\G.v'n⺜mX缾egEN'g?Bnmq]zڤe{z]CXp6ۗqW+so=yL?ԙV7SQiPǁZ{ %S24+7|*Z\/ <gMۜ7'KR8P/}|ַ=Qg9!K՚3=*'cwE,C3S̼+Ko>ed15]ąJ-Cmd9|kMv}>Rgjjh2\p#^.}]|{_ 7_,1{ck˓Y8t~}kBeccV4_s%N*m;V}Ը`36ߵ=ɥ^r_uR}0b}{TϴUBb=ms]Tn>r>f.㧺MYl w6gK:flPs-)tZ] YYWrn,Ӷw49f*φY:}ՉkokrP%'\CY~3w_~n=dM{%SYC;f IDATctl}wҮw{EG?ˀ7T{C`a޵_| I8;zNٿzG&w5>('V{Oǒ%g19=igL-ZSR *?r~f4[K%㙜Y`A;<ԮʭkceJ6,w )f7=Oސ`~* | ,e^GfzTT̔og|F+֋r\ny42;%LJ%ȎJ_wס_-rç;~ P2&g+wlF6+Ys3 ӜJ{9-4RB,0Sʕ+ [kzj]Y;oXegȹek4 B3cҐtZto Ȗ|~=Uk_Y}RBsU)IJRy45|ή;5,up!Q's?/i.yׅujGB#L&#م6^dkg y7ḄP3 *fr"7.gN-gI %S+-9WJ8f5ǧ;G[g̵}iSb9:?==}Cұ=]b{cPLJv ұgѸ8?nkze{U{ÐDXZ{o(7,|ON}jfWY}NRíŵmoʽơxcܴR0xja<_Կ/ہvUͪݖ3VO=(|UA9RF5n/zݙh |Cw4*s}gdۧk_Qtk\嚾}I}>XhkkM{]Lmu+E/<ι6*w'3$G_3&\1|Rv};;s}ljGk;5:ϱN>`z[W 9f=;`rT.5|}>k)K AiXSn;.;ޮ{*8PDZ/OoX F!Ծnwqm\\ l!{'iXUm뻁Xtۭ3ȥWBC/({ ϬxcT'T{Zj'@VlWp_rp͊Pw\]S^Oeg{39RS [{Mm4c޷B] W;϶׃?+`_2>okS9?x%?LXʖlc׫z0{LcÐ@Ö=v >>ޑ+7=4(|Yoia쎖dUjCYKFYҠf?6oSzx![ʣ{N>ۦ2&ѤumXY'miI_yܮ;{;Ϛ`^ˤZשL֙Rƴ!Uچ.ao]ҖHJi?ȗ7*3n㫒ɚ=1pLkf!Pwxܣ_ c~ޗCd5qzN-lcg_@hH,3pH2F{~/xϞX~._}bVM~{Yy0{'_UjQڨcb_K6/nlƼVϖiʄuصݶJ潛͍/{_}~g{V%ύ CTxF>@{Xi/,.=`Z,_&,aK3т&L3mv沝WOVK[Րuv39aTj^Y3K #w˚mm!Yi%'n t a|/7>{WĎk--z;vp~=@_ n{(uvV5k֣̾+KŪ"ӫ\nSmKqvjR}~߷=ƙ}m|Q]{_wֽ+ԯ[jޞG]+R\N(d85M}.$&n*8SdIӾG 5@fWy۟^'L_#d, ܙ(kz{S Y?Y]/a"\_v_Uʵ s#TU:yh]|@gگz7T+H6dDc}+z;v皾^\^~?~mT1Z?{m}\P?^ik<Ɲ)[}ϳxYZِDͲ T 4fبCY?P{se)Wc{_v-V,3g^JgmVā}5+{ĿbLlvJY^[S #\ߘ)Y*~!߿3Dn~7iHDZh5rpY)gBm4crLT~{Fl3e!Sb5Sym uVSD'sZ]EW]g mºZ6:(mz7MgVPk!yͮ 3_#lNAWkrR ջ4U?5j9 Ij+/Bvvk- {2l=ηO{m4c1q|uf~ '#g@NZ^>n<+c,ߧ<, s}\[۱U|(ITE =27ovp]B?c܋ =Sz J֖2ʤ|%gƮ_ז;MJ_M̕u282A}q|ӒކoH\39WΛ}u<)d,?p̓˯dxZ=W&|Ai铻k*s~ϥ\*3^KP翹>]j?c vvJ*|F2۳\iCRG,{td)[7}TTd_gH)mf~Sĵ>\-i׀*?ZZ,aV 0r㞳3׮Ji (.ͣǸ૟_tJ*U$t+z"Z {urF&%CC-;u wkm}2#`_=ƷylSV]s{,O2VZsr#}_]԰NjSΫUj{5սNS+}j_\ .o&Gmp|fŽruW}Ƹ{9dmP5Gɉ!I1-S/%k%mޫPf/uaky||uu[T[W\ p07{ki|16t zVe}Nʨ-<Ѯ6[W^eר[ c>S{jhin]^9TV-ވk7\U/Uo.ƨPO"_Pl<q/.})@׽or.j {jCJֽr+adgL?r`1R=qu\bwttɥCεmMf৕5g#r?[+lYS9C>ު?*=h#[<!k{w ݛDo-Uzm4vKy=;QT>-rOwۿ t}\lmПٽ׼AoI_O]sG{>V7ϼg>g[ۦKf;^WÆB2.w]6faޣ=0 ___~a]I%6ƽz@ٟ;nwzk۽<~G>i8!=ݫK7$w$|$]- K2>tS{$ [e\K; w/k_qt~-87ӣr^ |Tlk je^y}uJz@!bp{?}\?<[-{_0yT/9|&x՟M* 8W|:K3u۶qo!<_5oBW-SeG hcϱ%j}LX%}x\y8f|Sx(jcPvעw 0T:r[*rD,*kV)[uHΏ${Nɖ s28nCw4i:=fұ5yϋFD͝omԂ5PkB%Vý䄌O*w2ijuOk)tv>w{S%[-(5=&(}_=kbe̿֝r e'6{D+'pXT>y}Ckj=]O{܎qJ 1kohu^'/1#ֺGwd/6% ;Z [} JSz_䇜-,771e8ޗ/_yX$~B03Jg$_\2Ys-#RmH63]xc=?s6;]1>lf~kѬMbkֳɆ!B_+s73y2㣒)_(cܜ#sԧCS=3 Ca!IK ūE"K-:e2c==?8sCxFWqmy2:گ%eC,x%j0|e<~}WW7+ł/t֞]YU+m)̽V#47e{UY&ܵU6oxO6׽+m,7kӞ?viom7w1>(ȶ;֝r#!i>}V;t}ԃc몖*O]^QU'ǝ Jj *W}&G ?Nʯ' @&k %\{ݺc8^3vmw`x_x`V-sr25Yqҽ$@ ;K;מ״KO;_Sv!}7ֵpG +K 'nqoqڱ %Ϯ[y=_uY~ꁬ͐-}LN,~^6CzT,^ (=ZOF?n~M+oΎJW~u+6w h8߷$gK?kV(?[-WhLf%II*9$CI_O:_h?}sD#J|a Oنw45uݶym? y(Է> k_grHW@D@ɜe2ҹ;}#GV]imןD/{͊rN%G[rDD`ݺMj =]O/|g໗࿱6#@ێ'o|&ji38_u^ %9eèmX-i1F!ca9|c7<\噜Ђxe^o{V{rT:|c3B")LFRdg͊}$3KbM?#T7ݣk1%w Wl}-Zy)oiW>^N/q 廀7ooս|PvVUcS245;澿'r=Ȯ0,grJ԰t>.7* \gb }_v?TF~l=!YzP*|`!6rgYɌM nJHJR%FI? @> > > >o IDAT > > > > > > > > > > > > > >9ed57à-yoN,&c|Temmk~۵W[o jԮ+WJu7K-rŚ\{X[{k05Y}biOqc!6 3#7ט􉠧Ȗ|nID2R3ґ:9bwɓ'O$Nf-9EmTYnU>QB| yׅ!Rk{ᄴ ]I:17/,'gccccccccccccccccc{qARl\jkwG#3kOM? T_L1@:~o!jݱ{tc_ )_qy9 oq䬿Y[h?* Uu7/mC:Z-0so0JNy/sbv==0_f?@CE+?,+WqfGJWE9s\<}F.Xɇ #kf(2^!rFδXxF;2 $;sOOT0(yn^i;ͭcɆyhbڐ!k}F{wN7ױ+,wF&5Lp۴ϯ]u^kz_puCұBTbH'ϥ}\Zd(=}*w{f!>׭v0Ǵޖm.}|?0RO~vO,eL\38-^ROupͬq!3aL s154&9ngb/qZ5E㜬לj>lg~iƊxG%^#}Cr97 /l.o}niJ$ ˴rVSxڃ+m;xKkuv~V;{;݃^o.cMv4yix!y;;%;sU3$G󶁉ٱg4﷪VL:h6giUF:+CNY{kKq,;kW[Y}NRí>moǶo"3>}Uxۧ}2v=?>37%Z[l[}Fo/_dh}oSc%q;cڽW%?Kedԭgʵ&sߥ1JFw_>ԕ7_E1z_Js֦N9!MvGc3]28l0kȍ?uoܷm+6w:zaߵa3\Ő7CAk6{ĥo~ N+(@z[+2f^㽷]vvh޳w;`<857k_黛vm p^CK%7O.zL ޻X>PNȭHcTY^);X(5Jwymn>_EQ3kѷE.Xek#J۬ǒ4İM<xd4J9oRժOC{ _Պ})|]rm mU8#ӿ~nVyǮ֎-'se rvWw9qKk_k&PFvTnޡ6cWdVAhIʙ[;e뛕uo^{\{35?C tKLF/1jy:eGfvlMuNgsI5y;o9c=s50m\)jf;Am5Yy>m-1Cen!_Ozc3-3(l]bݟOZ}fp?rU%mdt#1;[9[(k_{x< 7dGzfFLqo}X6T?*wF&r"`!_l!xY/$}ӾkkZ/wY[F?gsC5zgA؜ZHWQ !T"x￵ʺTZYnm![_e|.RۮĆef5QŇZw.40W~pCkZIBkn~'kPsrS{`y1rUD?ת"_S7sΟogu*rр}A&<[=5=VƊ?3ֹ-mg7wzݯ*cQׇƒmj/[*6n(}qNJxGQO*ncN,2KAvPԽXvz|ՏJz|m}W ҼudMɩRyA^-/14փw}'jSB kU={,nm~?\mUD?8vofp?T~-&n(j+rjqn^%%l[Qe<:)۸.cAk>wJwܱ"Q)ox|X,.x/!;ql̳~y&>bp(w>}Œ.Sf*C8x8lCa߉$ ]JaJB{WYMlU:q-{xE ?_l3bTZ\CmPst(18nʌ #aO|j/;p%7֠Tl[<{U!=$;ǶX1Ugu9mk>ٻEQK;FC Gz2w͵Rw}T5IMU_`> KeKC}rgi}khRE43{ZY1BκwQѥgjXJs?>SY>JXoP㺖y2%Q noQַղiAiև> 77Z>j^zIެz2ӂ7p~'U/Yq3}mk߭);8ǒA br$>˽{k\fa0ΩK5xUC}&¸u1}J| cEVU `)"\UPx2JIxLIK^pqxjtbz4u% s}PuPzR%7o!îhvmǓ9 Ə)217lY|:}3>e&}kG3XX0.cΫ%mEIJ-'et.&嗰cE9l}_yz9ši}2u=gmvpH ejYSídk6Y _5J  xܬϸrP{G2T&+ɫDDgӃ}Aks6ٯ 넫}sjiPML~9/GT:xC#h's5>uxS;Qٻ({%I?qc1JvMbsF# @?ӳDptYF9(aɚ႑(jyTuW _k2鮪9| ^4#U{ɥCV"sW7٥Mv}*7}6Hz6Apײ%=mo?Կ)|"eX?.(:rfy瘫z a ;:#K9*il֕>֪iT#nR ͌0Atx93h:B5$tnB W e'45;UV7[lFgہa5|s^pVB_<sSOP=#ú_}xdXl*m]7&;~d"jS?3+=&="ߧ,ݣS{I"cv/_UH_|R?p~en*\|iD~m&gV\ˌOԩ]UކZuƲ̣y͏SnR0]JF} %jknv}EQGd91B a wNioOݒіhUצuF6GCC9ͻfO9 Xr说餵 fI_K;[>CKf[pvCe.mlX;rH۫;ս\PͽyOsCmqmӴN҃O#nB Aw$PdチjYèbg`=h}RR' a8j֬ݐ}9m6bX)5<=٩nYIwחuS<0OԽ+C4B`f]翲Ţ]oUMxeׅ U]ynHyk-~ǡ8 6ƾb.NyL~C<ϿcהW0ckk'ŵUٶ[w?Zf:>.Iҗ[\ R۹BiPmTɎu~_MksqsFF PkW~Wņ{ G k `xwsp@1֒ Fg=6P7oLt?gkjT>82=4#@kLəۍ茠5M18+]ӡc(dSB5Ց~usXln} U՚o6y'25w4ó3|bKt>b"bK=>H_%Jy_~VB)m-63Z[v~:0.K>~?S}G Qi]/}ݔfSm8Җ |yn?fb%+ }?ʿ\灮b |q"G5JemBF@4,svdQVFj:Skk7<ABEeNwdQ&Z~Y7ZP |ƒONuLF } E#2Z[L|E3#_*\g~-~$ GEp;|"e@,}uE6y} !Y3g |A߷'^1}VY,hۆr.k>;}5urk(~d GEg%!k B{YXϛE+O=oY[j?xbX/ mDF/iˌFo?;{%ᬌ\ȓ= T@E}AX: k| ]hˆمN+kkɾm,* #9St&n{{K.GW^EI9}3sSRO|a柕uO֝N-_#)tN~W#d/c j?x/䶍#4RO.| БܣYcOxEGe'o׮Xr)1;^q'j&i+k.dWs@OH"?zOݢ@%AXc}G'Ԯ%OD|5f؞eW!>?;9-Tg+~6i|TZqoXYu{?(P_b=-|Ǟ IDAThi怓P{#9S}k5; ֮/~P״}ηNT@N5>u5ݿn'HB^wyOwg 2<h,*#}m+[w,|m}}D'BNUZiK.(wJT:5]_Yq%Hb)y g>޾rw7j5[TA}=>CKVe> YacedGyW,? {r=s7s;mUygET@#_D'e:bo~?.>N9v^.{I#7g8`%l!e7*>ͻgeK9JPm︒N)?]3 +6ov9GsX?Os?s {+O#_rtcmUC[nR^G6}?Mi9:-|m)6${6 g HWn 'Z~y6mo"竫#ԫvocy*;kNHJ9l ;2L ~|_b7O篏\Q+'7ї  8+T>)S'}u%2t (k䚦ͻ}:ֽ熙 Xm_뚺/C{޴:ޥl[s0lR/vקqKg'C618:o?ϔߖ4+״UOnI_mZ{lQ&ufHYt2oLIc4L)9? lvnAZlnxg:TpGy֜M- lg$nZ;fض_f m_Q- e֪7d*M֡-&U>ǻ>8W KԞ^_mS4ǡ#>y:}r^oM6vj{S^7L_M Ä"sBHt>!֢%ȰPCz=UFHl@LH_6z/Kӣ-vn%@{qnHԙղk>Z=Pv ` 9ݝ|z^pҝsk8+WC $sLܒc{V3yIpM gtoC:{xK'`l\)q~G^mK秎~lҝCԅO9ڏQC|1uw)#O۾}l=)n9p3|fw^\_@Y7J^7Q67NmX6J.k$  _Ӳ3zѧx zYu)-(wo1/? v'JV"uZXkѽj@{0Z?Grr%\~vw1Rڔ)Yg4:[?VϞ7ڏ߾պyفl;zu:zNԀ5 D[}#(}|'|/[{.SޠݨOmlY~}QuΒ k+ۿ@4erN- O,5z",YeG{U>'j#dHTErPFݔ,j_Tp3)ш'hVBaBeɶg]9n C[ 9m-ZSf*pK o(}vd{4:km2yf:z&?f^w86-VnbPo\|) @/1@O{ֵ'G^ٞ:e3Ց7'\__ oְwM n'GۺC5:x@0';eP/?J9'32NnY_{ólz'P#sV\hjj |.nhi-2uLoI6||A4?9z< |y9+ʌՂ2e|gjk큯S70 .ûRHWώ_`3734)5( 1OQ;a3!2gR3&S޳@s|;7ʈTPo\IT5KF /@"_zzF-RVEOh,*ӑm&n8lF_>?pńLK+{~ 53Nݟ1+۪Ku2u1= :;)?1SW\v^o n[z9ʱi }wo7zMQ~mw~FB|YΞ#DЦ$gVf5(>TkZ6`T[_<ܒ25xznKGdEPGH7ݐ 03i]kY錢uy\ϺA wt'}/3{NȨ@i|gwgpMt s9"&YKnS9;EV88ziw9[}us RW]f[Vܨ5r,cvVWm~y _Ӳ;t:cz%LLgkۏwqY궽ZZg)-PL.Hbgqt§4nqgj|qE?I Srv}87X$BS75W|F-)}g QdNUܐ5=5zO]|ahŵR%JN"H>*ߟ!%>y _k]/R׭N`-7d tȾm߯#53Mͮ]^ߺLG2=9,jir?RQ?OjzW.oЏ3=w|e{٩AOXdᄀgRw HW{ޠ`?T{sRGtFzALxw^N gCp/}itWzb۳<-228 *&*ӗK*Œ$`m#_Ӳ#D͡#=-qW<lr-ho'\|Gw(іu\yo2PG,&ϮqIŮ#'}nX./PPۿ#` Gls՗]}7ĮqG?ogYs5"յ274+k q37*WgPff;@hkZv]5n֔V&;w)vK0U/6ᙅHn0e\hox5;_s;ڍ?-q0fP9,ƗVG0We}o(fQOWnhgzIoךٶ5+];j~Ǯh4Q|{Ͽ@A՗=Mt7!x'_>C83H, 1?*E]Rԛ}f 1iugt5u3_#V"!љDcWNUeK׵D*y%_ˢUN2*l,PMsl ]NYia󡛫۞k-{e8h첳-2K^' >V)d5K7|A&|bjDxw>t֍֊3=2,'7k $(_ue3sԹִ֝;RsV:/Cq;|"qրt~5 lYƢ2=9-+%D46-3qfX/@%" T"| P/@%" T"| P/@%" T"| P/@%" T"| P/@%" T"| P/@%" T"| P/@%x饗[>ux=>#|q q ` `5 ` J$$aoEYxf1U6E ~B,'d܊-U^X+HPǥwk\|ymbdSΟ>/WK&1%]|{.۪U%ܞ潢8@ O#_32)l+?x/ޑM5i&2%>,-$K"Q>,V]/w)uz:(˕U?-?O[MZJeΩL7;svmo%9%ۦmëJV^z >r'{% =WT|4†R6t/dIھk)|]6q~-uvT@e-Z9FKRޥhݯz*wDοrlpŧ`5k3~V KV[8rCm+ '_UdC4$nU>,:|덼g>]FsCG2eOJ~t_{%d/2%o^m5_{gk?[^Q,|85˒{? fۉ͏wȠ1}2Y?{HOHD (!r߱u\%>󉲴]/~d6" WLx _"_ʄ~~Bp#K{=\eVCk /zZὃaSo%Uj$Wc `ws$㑂`Lt٢yzr:}+>%#}]srKFnX^/:oG_^r3SWx@YEe>V=mhDg hTv9hdN͒s>:=Ѷ ϩr.tO7#ذVV 8v7g)ZS_XfP.LJ{~ꦌ^|Նb>-s I$ʁڍRpt7yMd`~]6}Tt/>mvvnO?|> 6ʱ=O>&굀KmJ)2ȾWc8+wsސo\|!۪q>JWέ1{sׇz7&/ZϾ䗄yB|`8999ѭub|' m󡛆X|:[H~ r_f``HNnP+;uz?Qr3jmKc<4fHsyf^fC] @G?W6kB[Õש&%WCo,ٚ S%kq}KmN螱Ҷ7ضrޟ}.klh1᥯> UUw C:prT]QmCV G{~s+{Y$^LREw}ƶۜ>~?8Irb˲$1s5s|j,su|BEKa9J 7Ϝ_]Qޓ٠a4+a^H>.ܢ׵Q{Э~Y T. k+;J$$nKY Ix[ȃY\ُr,~y?Y;XJ):ׯUOʭdιu2)y:P3o 9ʽ#5z>bcs{9:qP:G#{%&P?ɑ}&5%>/5O{.v>Qj2>OZY\F"Cl=(oѶH=۞$fZ+XD\FҞ+ߛ7Otlَߟt׀?^v3ϧmO K;7.gf/8ݗl o޾.7rnEk'y13w/".y/A>i~ IDATor!'/qF?cF=xPS!p%G]=ٶ%tOFW  ngyxopC|bacTAu^ܰ`a>o]a<7TlMvow7uuTS}Ƅv͢RM# PyQe֏];{cWWe[)}ZvOG4m3_ ;kMQsCGφF^7Q>`FRMqߠƀ L!+ A~~9cPPfa =wΔ/঩#WpzYi` _YR7iz<gS@֢r.7-sz|o~i;f|ZĮ:N]wyPfp5oOތ]uZ]/wb˺cpf{su7\ (X/+^v~}޾ kCfMcu.}&M0{k 6Me.w6/G{}mͷ}6B"@+ =!0Pp9eDgWn,5ѕ=2oк˒=Fg ]93"~m)ezp9R;B2`ș.9h*Sg:vel=ʮF_"㚷b<*}ʈW?W;ϷBV?~KFf7_ktN-:eZbڑ~ JF'sߨ:G|kG˫g_jNx$^yTsy\~`~JXN|3S|(7ڎʾr_+Yօ9ӫ/Wu"ZmrysPKdRW*q_(|ŪhH4t6Ĕu3=`L՛uܛt#*)G} IY ܣi|FgT]\ewc9;}3g/Nr9D,kdE!v1'$f8>}gn6QZߴU:o$:3O]gl*Ƌ(e˾Io{EOO1|M9!  reJHi"@+V;]αzk'oN os58]RּȻ #\4 pQ(7u47?f5J^t]f_] >?utsM\[ VK{ ( 8- 7j^rLݽe7?,_t+^o2S?cdв26ʭpz_Ub3yS sCSD_(|ŪJp.tLȘ݋,tnj8v PTg\f:B-'}BGrF N}>9sd)T]wF VI-qvʨg|"7Z~ Ƃj_}^󡶎wb5MC:>/y߯V-QrGɛ!ӃODJd22:!.,UezKo9"ltgVɨ])sCǮ8 ]w?jCX!J FYrC 6z\ҝsȻސqJnB||uz~\KF39@)o)Y?)wHc Mn|. c.*}Ǽc׏hSWxNiMZҧuGp ,^y7tFqMS<7<Ҏ! *37\;/vIj)wcLܕ۪ipK>n dnw7B޸_PvGn\ ;27|8[ W}5uY2\ケP>)jӁ@K =&-o["K'Hd}r7wW{=gnk7x/syonZ}?Wk=Q.utI`$dy۬q9;e.ӑNiߡ> >=u쿿Y[!4s@v?2)7NUB_Omvuk[ׄԄt.T7~cSLzO_9[objes^7_iF}~ #m}2f MzylzóTKP_R|y;u6+}={=3蔦/"_[h 6Gޭ0J./Pws<.>xj~ۿggvԭ1P^b`}n ӈ0#msS/GyڬbC~[usr89wKs^N6Z?;ʱ6˙a2QuUkba=ܡ{{POpAsеO/ʙ=O.#'^,;wbt XSr GdFf]HǠN\~ՙLWs~yn0m;oλ4}|j`]i}6+S+YO~)vKF fFq6ᙅ>{!F$FۍhX}FOZҽkKҼ82Se/]9߼Z{D=~z_ur5WCwaћ*nk|rWVfws|.b"@W+LT1{ŪoxT qIX>xVEbub,MS=%ny~ VJʺSd>iWsvs;&;͔O}۪vsDz7쿴 "B5}aW*^T;+__>@mE~|ꑌul* 7ӷKݦm \\`"x)y:l-ǻDže`}"={T|*> @@ PT|*> n|k1!-ZO $oEW8Ȱ\j\儌v_][>>a˷*IZNPz4ڧeӦMR$w ^3?l9!7ޓUg[믲^⸉λNn79,ޑݛj2ej׃f|]fzl% 4u.SϟǺ#+N֚u_V폞@)y&Wo?ky%hYU%QVrD̪m\'kͺ?_dĽ] ׍gM.FM-ضi\(k w+xnXq6nfgrG.y~wOLIz4K|<>&/e-˖+ּ]/] +QrM'$X=k4 FFe-Wb('iq{}d6K. ׈}2/QmRGoe`_3lmq" Iw^mym-!R;H"qWvoIO>r̾V^#u+}qs[U++S4XƆ6%C9Sٿ4pvj֢_5{ssX-?Ws>}N2߾{y[:kc>-#=7N,ņq>pV󩫕%ikC$v_ik\w؞}S/ \~wɘtD@w?Yܸw5?{C.ⴇ}ׇz$̇PYM5%۪LxF[~5۶<%q=2#a穛g>6fk1{?o9_yk22Ӄ[r/B#y[9#9S ]O3 g?Wy6n 3~|wx!/p]y׾7m*$_<06k3쁞23wnU7P!nO;|CL5HMsmY)RGW8,Ñ9SAw@0qI$|6컟x[>?kAbrkfAEK)ppvu|=?_2\}4׶D[ Auw龳r/f]]y7+;bBq_{W 6I- a-@HxnQ*F7XUFv;#/(3\=z w} SX|=zHttv1akzܿ~ۆilۏ|f><&:[>Ր=}|G8A-jK<[7kSÆFEvy*{uSӾwQn&9i #ou&G6Mjo8%H ׈zf$-)FGihLCBa ef]g塘 ܳf UQ#}7Uh Ig7<]i|]s\dh#;b9ᜟo֔rovy[S9GljPne;OSreym~ }eT3ĵ#gj2ўk/=JTTy~׫2{y|fY L븥MY>i"ƕk i3w[m uir]ֹJ V-wJo_t3 ^sA +F_ Hk|#8뻫#W74#.5+wcke~Dluhi5`7mӃFB e^4[|^MMO?CojKI6񻖟P쓣m2_ٞ7Wkvt\u^C]qgYVFg0׭ֿΒDFԙ徬/em坦 2<9筣lܟ<]ʹtFJ=9-n'{?/ֿ.;F%~ a9NjCgd8klLo =,NWʻFnk]'ؿC}_/}~\RfV+sY* |<&.luzOz[/$SoK;קRo7u&gk}~}35\O.%dzn\|w WLDM͇~^:˅|oZԥH*NY'9{Cn|>Fc>e:TAǯL^ _ s- +_9#^ínH>R~D~ϧ:vAnSURe.xک84Jț;r_js߂n@mOz7?S\?d<#jϚsE'u# EFlĘ ?_G}t͐czW\'x]ؒ}x꜏9 -Sr6s3}_{9a͆9cq>w@iX?paxR׫~$'j7F)%tw:`Nt򖌌;#c-}?3 2GϚ1)wB|gr0@ Pv5;8~Scets[osx5NUgRoْ}wa+uw@vz~챨!I~w:PoZZ#rB͖b=oj?kWWF- IGBU<Җ&ԧ_{xzt9yF縉W> i0`ǤF!=k>vd+~4ٗ\-g:\. gh,*c=Yf-_~3;^6.ss_{Mky9)oUde붫^,; iFwA]PqXNeG[26|qW]o0vHԭ}f|fՐ;Nú)B #sNH.?gٶ+sNȷ}77|kR̓;"׎STáfKB`ŶӉu4iavM[HS_- ̄w?\|oxGvxgQʺCfܡG Wol eij{H֧wt獣ڌ{ vLˏ oހ6HuWi ߾ ;ɷn2HP]Hό/|~ܵ\Y|33]w=3{Q{ޞ=У߻~voK_|lzgP(Źc|玲{TSuӞq\#3K\s]7;ګ{?g\ 3\lh~ @oHQQoȥ^ʞ17mYrM?j9-#dSw(u |#Q<]N=u l Q6GGF;e=\S?T!Q.utI`$t ,' nȩR#um>Zީӣ7OO妽ӞוVFO^Sιɨi]~tu?0=5mASh3o26: wu׉|:8-}q>_[GN(d5LaoGi!Tz$ԏ,ɹvM2'>m0clץiOv\d^5]O]7$,ʙ*D9 \ݟ7}W8, (J㚿 I<#`Qz0'Rƥu7U>WoTSJ⺉-wWq3K;Cgc{7z:7>fQ8pm$q ~ڶ[?~AF'$:H# -+{Mpa5 .͆~DzPnGvZgC6S;֦̎}\+OH5s;c:$ѯ⚕n9jn]wMo5{-ooM>!f ^5[V3d>-z-ns2U.<}rQi@i/0yLйwک~wDfCt > 3}K&m w=M 5Bg"٫ ^#Eh{Ϸ oD =cN}gJepי|=7~OƌۘL>7f]Y]>#ᆬ||BÅѩNOWoGa71Z%=!{יh֒v?|nϵN\ZA)34̰P"͚K4 HOč2{=܇=Ĕ樽wix37clzq1Ab-}{aDqfWvǸFe2 9:p332sƾJSSOf:v?OLUhP}c!_3i( s?\z8g#1 Oǹm4>WsfnE}+ ,Md" C+D^(|KU4yY5WG!_O>XF]6E2 FTFzs}^Q"uz`x">*n~f6:˔2Og~ G( ^d}6:Ő.N#=^eD) oٯG 60yQy3usPz_!{r州 _ßey˿w[zFzN4BOCZI"nV3_ɱ?z_y|%(?G.WS?/_>y0_k}uQꤾ-KVnXY;+2;`Y"EiӶB`%U;:[_oo[e65˘?ۻunSe-Ҽ[v<ڀJ_;OK_Gm~"7\z?m]wiFyv~C۷3>:s=6vcfc߾@|+o唵mȑ)+99?g[{9h 0snFOuKIZooٮ.tJ<: @>`V/sss23> ş؂ w|[gu}׵u+_ ҿ||=1#3S3sm߽QJKv_,/fyWb<ܾu~G>?3&v_zm8=mFe1q{@=j%b ȟ8~"o.WsNs-f/Sٵq!F3iIOѴPX~_i W͈37@e7ۆsW韺G| wM8n_Ҿ@HO ~-xo͗3@fh@  z*zM-ԷS>U\߾//r~ me|ߜKW>f+p nlu|oɷ_1z}}_t~7}ʡc;T#S4 ^@s_;ՠOa ןH9j_]л_пk♼l?u_!?KTJwɱN ;/,|%/+oLԫu?SLhZfG?`#F=k` Q&@/\Gu2ykq_zO~s˗?p| @ߖZ͟nKeC?|3>zkSxI:?Qߗ8ܝ1]~.lDyffY&ϙ/2ML`τ9 ޖҶe1ŀO5[w*CxՂT#>6zw?&]Q(D@  PT|>U*@@  PT|>Ui~~^٬|72>>R|g>3(,,,,,,,,,,,,,,,,,,+䯅|׼Q X8l|F>,'LnjG4TV UA>5wT#|kF PXs7@5"njD` ՈA>5wT#|kF PXs7@5"njD` ՈA>5wT#|kFVI~-_ߧXGCD~F`Yod`Qջ_ s>z|} ܿ"ɏO7ev|v(u0d~-k >AS6Or4*dX, Āl?xa7`"|73_yݗ߿A>|v(u?=#/ۏd|C`Yo^l:|0b̯; {jXl,]Xs £Vz ԰ni>y>Xs7@5"njD` ՈA>5wT#|kF PXs7@5"njD` ՈA>5wT#|kF PXs7@5"njD` ՈA>5wT#|kF PXs7@5"njD` Ո@7|AXXX0ed>3͙V;|l6I",|&g>3ѭv^,,,,,,,,,,,,,,,,,,,˻gt!/A> 3P%T|>U*@@  PT|>V'seafZ~Vd1 >VNA>V " bip  XUV*_Z ,|`LOMp?)m@T-|/;e ﰅ}6=;Kc*jܫ.yn.^ SK\5_nHWGuȝ X5ZQOPc_fp;r'!9i𹯏=|h?3YC#|$ˤ<>(eo~UQ?o.'ҏ?7ʦf@}CM{J~ 2 {Wa{j|X]Qctl~nl=^?meZ|~Ms}* "[W+OŚԁ(c5J\> =lS;t.Wvԇ'~X.bЮxQ0GҏU{}}<8K߱\=){{o6 8.>Sz3ˑ:+ğ'U# 5?opdʮe]w^?m2}u2ɷ.1~+]*4ח^p:44CTR5v6U?>Ոk\9+{kޣ0\57g{ =䳓ddD6l(ɘs#\ Q)~EVgndX{iN7ה=W ~_ IDATe-US~U𹯏D϶F@dZok>$ӈ?0|,C"uCk7{B鑤~U{*|DF϶F@dpn=Q%;c=r2JHch͹ ;S]rq )2244_&#e2dn~-W[a9ۗ23X)wݥmZ(ƵN39y}?\0ׯmw@2b}Ie]Yf2vo:`~G_]\#Q^R^}Cw*w. y2O+]*y$]F}41H2s:X<ʙLi}(#ngmy|t-|vudL~[yO,ȣT)2};LB['vlƪmzǝYRGOR4jLN81=10?vSڣcڣҶXyI%c<. Xw_zO{xٰ}.K{ʗ݈Fc|W*uIvG CK% ķyj\a]yu՛(s:"~pl¶0+X9PL{1\OZ^۶cgw2}?3Eu. t {~,{}V}ss(ǙTu]uuz,z-g(\-IkC׶zXxn6uy<>6- |mg`W?kOPUU8s_o=<^E=vJ]%e v\+vsCml{\R;3:'M69ԓpWl+V>7Rh(-_*oFװ ])͕WwawrNdmgzv/+V[O_z۝;glVjk?Cְ>) 5.(R<\Ht~r&A4r{f뇎^zQ!7?Qԗ-daQ6wͦV6Yu>-.=20~%W兖nty0\ٺrcֹ]ԆdH9timje = ۢeֱf;cJqfDZ]gtظuB9yLʹ6:/ mDrT^ު@{mJP|Yii:mKoݷ3f'>^okܖq}"Ju=t2ۅ.^/Gd祷%6[sp?rW2Gf;tsKqfN[t,׺yszKur xOb}5kN׸zhuz9&g:kGunkK{ZNVk*zIӖ㬴uE{ei;c> #ll\\2Q}t~}osɐ/?d:d"(~{iDֲצ3CC^3kkwyOHGsgm&m#"ז Ujeom7!U~g{}o`rsy5o-Ko夼4Yo-RlYv_ֻLlj]Qڵ2ck|/=v?J<C> kw=\'9{?ozk|sQ ѺAvk'Uybu_QJr,㵲Ju>Z"'qmgð_d|~˙ty r_Ǟ}|x]{]V>kɍmdz@d>\NRGX5{@X{8O&)7zn\/x5K=GaJE wYc{e:}MwzDjĝm)'T*y@ '!S2=5)K~+p^z/nIe%7L4Ji6=j}Pё\:GW]\_yq&ic^5[l&f%v I oIuby`i -5{FKn >51 KC.VQmku"RrG|ΙlY`CkgzǘI)u,_eزIz1;)oxƼt7=R۷6X~d&t)Щ#ײdEӻC?>{(1߽ 'S= OYLsCim޼C=2öwPh4F~ J3uDn#1̻n~.v+IcNf)S/'ݬ 1^]=T~2)۽9/ov2?2F]:"~^ rLX~ѡ?gϷv$Xr~lC}Ås>v.r:@_j UT۹:% ޶/# %$3W=:r|xiZ/1r6?Nυ;')qn;#_FP>d~Km|jM|S/mei+~QBQv8_ߌ6nlv셺)w}ܬPNBخM}KUvl幩Y.,g ǘV ;塑4 C4#l+>Y]&-D7w3_7n gX]05[dr7.{luO> #VKk/mwrPhwzYzC {Y{>0fQn/!Lso<^jƱ4L~Rz=߯7Sԇ`/\~9&eGiC}G n8/L=۴z=١=@ Z`l\p:؜w; rlx\_rw旞#؏Z8DŽ^l0Poij /;GC{muiHͥ!L0Q:V6wge(s>)#ZzPe{Ȫ/Yh~˩_ֽfXsK^ֶKjB3c3p;\d=_Үmڻ޹g:~ mr+ߞKZvNՂ_Z,굜Zm}CA rccYyS31EP7;>=1½‹g*be_&2CvovGJ\c/mqnˋW|3Yv`#fygc„-rmӶzE /PC o 77J"k@oR0smW`-ۍ,[/y ?j9Q˪ť90`8{\{ngJ;UO[C j]GLJnKǹ%pgաT?u,P+NڱtCz8!dVa;/x=Pugjn}ul !:f]NiQ ^ R{uujuV{ MWJkE*Oڮk8v);ϖ3r)iKin"l"1B0; ZE`[GLp|:uz{ŽzzNRSk9Zͽ]ޗ姄 zN u]=Nmgc2r{vJ!\n=-W?Ӈ>k:~]׼c%s|c{S-#y]Myx Z[刯 U,Z)Lg5d/hoBƲ1lzݩC#޽0dL懚LIu{ e4z*[.ooXrs9.9y8?p|szz=nc:JnC:<@RA _9;?|g%6wQ/ۋ٬f}- {yeeæ2+;k6Du&=?ju8^9ezZ1G]2>ܲ3< džH\{~=B=p^("Tمp=[=v7o{mΡA앑>y(SJȡ Q*w\HQ0> wze?}ApUzuh~]%.+AOv>̹;@}|Tam˔׵~|Z\%nZsq庨Lw"{Jя(UqzPo]O#!+'-áojsCK$?|9P~j4#>u=v9Uv6-s鿼ͩ > ssR,ۊBD-{徯9-7s_[޲YCW$=+=l.+oȖ .Wj{uP|~nb.// IwB+sZڥNtNr^Wz4]u,9> ޜ uFe߼Elk l\9~\ϲ: mJa}^Zﻝwe+3NnehBsߎ/Nq/6>Ʉ꙯~,j;,މ=C]]z=m.w z 1aihÜ$Ya՞UrS|ֱmg d? Aw/d6E.[ЧT_}Qv˅{qf@ZaC}tʦqϩc6 D6yABkǶE R,{cg}ڜŸ)4Db9jب&{8ÛQA  t7=LQ{-\:ui}J#)<8oD:Ce=sr0C_atu,}n NhZ9> ܆|@We{CcT큊:|!l ˟Ӽ @8iz6kqH|o3wcIItNH>l\g{PKwbmJy4qKRql[ܖ/_z/֐>g0}9LPT~+ĵ6@}gޑ3NvyPɈ|嬱u_S^u;PzfpX۵0cQo{cu|_W"~/FnC$ưD]2|~c#Tù~kUyS3c2 AW]-gd2Kr2e2ml/U4G?(CFId s\ﱕraR߷>dmݽry2ڥtFӑ8Յ|ݼ$zՆUμoo r%xrGu\oqǭm2H{B4A:-C_n^Dzzl`LuP}w?}K]{?T3!j|a}!smKcP `\|Yqx,_uؾW\^SᮟҐ;z9^{d2mv{cIzab;RO5eZ~e۵E::j#l-3T״W=÷aEv+NIS/˼ C_%1\˭?{J\8&' ́Sgiy| k%T/yuDںf1|J^vկng]MiInˋw}|^rsR,ۊBDV]~.3*CCCܾwC6N=QAvu.fCe\Nհyh|A`R i9|cM/#foc}z{\=}\Z/d$ HzOލJmȼt+x&25ɹän7 #  v ].Ko|{l:~;)QnfER!H't2|r]g(_}!e{G{jT税s]r 8K,e=N%de`o{aZ Lv\Cow]xI-^] 9iI?4DBsc7_rf._J={Dz*@d?s|?o:LIeeأ<|` uCD+q{up΂!M "Ò~L~~8!kH=!Ǖ`[B2V^p~nT+]ֱV_Lʠe+IEo'{^w+ǩ˽}n6D *Z~呇WjeP Sl\W/[ y$K[8]-d-ㇷNkïǫ ^L>,s4z\kۃkށUz k0M[~v-zifֆOh K*ૣw+{3e:%j;\|]^ފWǹ~kRci/~cpW^w ٯ5nC+o*`VN߯Noc{JdI VT| ꁟo7ʹ\{u^3 ٻA[͵5Mr~O_JQ!?47,NJsce.Bз,C9/;L:ܾ+q_uji^M^sCWE_Ӝb}S,IvXag~_\c)=傭 ;ٞrHvZ+彻l_Q_ޓa{k}ߣP2%#Cpˮ anA;/>}W;x9mw(-6ve{KZթ\]ߩ9+Xz;Xg&ͺ{V6YCtYsmZ_8vh#.bhmބR2#26Oe\2}rKnLx}RFv-H!TA_rta7f/ϯ+RY Kù3L;\o5\vdj8UȐ5Foh~LۊAD /nKWuL8j;#_Zk{z|}TxRaˈV~q>Z9-.9]܎a5>ҞR׸r#ؔMl+>>Odno^%CvN=f7nɖ I^!ײѷ\qٿî~N9gOJs$/0suPs[z>nF!ܸq߽*R3vm=JR\{zEeml>l0{=9+eԗ̹HCdٯKqd>-a+#5]9oqֆKu\:ezFyuOR{rؽ3;ou[Jr2u~xcCeyV.q~y/q֫[2!Weԃ[oMN+{^^sK{l7L7+8ׅl_=n0?w'~Dm<뱢^O{s6kچhr(=걝^u)r^dpnGy5ٱM9ԓ(}K- ·8ǁWL*$Wg?Υ)Bkuu~Q vO9y2_sE8·MvF>צuwن '>_^h1O&]r8-`>(sscgkZ5.SO8vkӣދmq-m9)mŊ#VԤ KfRr +NSLg3295üLf(\h|gjie$ǽdXz201I-=Q0rF}Yܧqn:FdcF}-SbRdF0ӋklwfRAlm[UT) v}Rf^re{8Rf\Qۣ@=c;LzG{=[cwz)o/}>ϣ/m[sѪP纸z-6JzbǤQA[Q8xwxMys:c~diz o;aϧ 9(?Vy?S|˶b7e^?-S`N`XlBYi|ZM>#tJRKXsr稴jC˹ X3,-#@ ۔3_r >>q{pEwA4ёVѳX{78x͇ xZ벧Fkn;ܛձmmKU՝`t `MDǮ~xZTyKXzDFRU{anBo˱69ۗI 1X^mʓ+ a`Y^>Ve >V-sHJw3l>PT|>U*@@  icQUlP.S`-|/;e :LnG$d%vM X6_Mɺw|! /0mwJ *iZcYUʃj%._. 20V m,5;etz&$LHrLrPwťl,[n/?>X:D1udȤRJXvyygȿOϖ]̿3>Bn6'ӳ]-a+Λ95?Y7/kl!׿^8ڽV5mPS5Hn-eI'{ufT*j+JX]=A]i.rhhfy{G@Y ϖ[ocs]ol$Tx7H5̭4q, ;e3Lrn 73h0?l567í<+?e \bZ]c9ۗL^6e~G,~eFeȨ#Kg!'#p ]J{|v$L8>%yX flQw珗zI9Xg2-o,jPar\\:P?b{e3s='푁sjS>T&~CF[0#JBm^;v0ʞ }+:m68enw݋m ~~ߩ]^UB1y^?__leXc9lsdi=e/.Ls;ʘQRK8-B2C+ KF\{m7?m-gƷ~uO{W !%>Ͻ>Trf@Z<~wLO^m^a+Ź׵]].۾sҺo.e^lw_M2?&%<:<ĵ?~L%tš^+ݞR+ot'?Z?\y}11Dȵ̺umJt7>[g]2wm;~W,!o\z]x{o{mvz9nP"Wz9zm._vn eh[=eeeFI.P\J\/0e9~\5珠mSi ݻ7~v2s^_Xn86Z+iv=6mq*aetۻǒ}Iy9wmB&fig>o~/>Ps֗ jn'|~r4Y]k:l);<Bfk khmrc.0-J_u8Ku~eپ=>[5;'J`49' 𣔗:˙%:RDktRV'9 ߷g׹)MڎM|{V~y??KSŠme|ή/vlwꮴ֗evKwYwE%(wn?ôMaϧ5y:^(>yo~v6ʱ^(mǷ:KV9 /k {>Vjt6ͅ9<:_OGWRziohnn~NJ&;-Iz%3eLP2zϵz9m驖h{Ly9:';0Z{3X=r-i/TNrSwo$dX\vT-=rU˄PcS\JK(i}O{د,mY^fy_XWo閔Yc%/gVLrW ߾}X,NWc߻X //t_5i߱^[,}QG/i&c7:[;z{VoϤ˱fKyc ǧSW<{D95Zfy:söz7~s~oc-gb)I]SFv99DsJOiߧt0+6lG=qc?6f)JyʱRz I-Vm㾘(wiRxc%jY닭}lF)ElOѶpj ۍrU9SmGPףQ|#j"Obu&go] OߛAGoLAw{~Y)`|}pL/v>Rێc}w?61w^lS _l[˲4_]:TzZJRmouh"oaՀe:RHpR 7-%u:V8MxT=kWYjڶ#*8TpwNm r^h=.{ڦS?xgwĽ\ 8Em!zLqm=-C:s}?%?0">=5Yj6=^m.p?0vC_۹8u*q8vR3>D9؟(?\~?N[</~K%Vg]z:gd8%=Joe 𣖗ޝ^PzE[WF[ 7wqlQg_1Z(G˱1=;ﰟ`TAL'WRM&d,;QVE^bU~ۦ80uYտ~-#_,>bG4pz`_gI6;5_ c[+g/8ΧLA!TG4j4ݻo_l)m} +q![64]𣗗pLVWWGTQ'̢+N~>ۀ|eTpϢwjFM-\֩^heigÖVglI{2m5Q|{2P~rhkr٨:< sH!悷0|esM`pmZ_}],lDZ\5/)ʴ0e'^/ȟ .ACeںfJymG%|u>tKujt6/,.qO志9 s 5C{QAθVCW\Q}{;e.0#N Կvy|>@&R-N{%HۻҺw9-%֑\G( kV:F6,׻\n8 ˉOr~:5 _od.{m.n<8H ʄRTeo&pO?^.{ղ=J>dh K2[ϳwehh(L8Lc#Ch{W#Wڋn{|^I~{4ȅ~|ld'ו޼Fdž岹z{V2LtU:6G~*С-=GR3ڔ5[ߣ"M IDATAϧq~ 9,ܱ\=>\)ѺAWG 4(aes~ƿr+3="zxUMe=^agoH6Ãxw~xOK _u[;d7YkOk@Wܱҫ k]S eNVr9ۨ9 ~57[[oevYnXcnT>W{/fw!mVu,B_ne_)+6ׄ wu>jY0v-P{mm z>=7~;Q ?~,WOo!__qK+ߴ P8\,[X|(Oi7Ýd;j =[Qw}}ÜFee^w< j|,]aySpq%vZ{9Tt|Y{ư?M}>~V nKpC8m ^S^p< ,_^jNE=Wqt_uq<[,[~~L9?Nw_jvڂ@֗ߎmeN}7 ^٭ԯe5uE}x~gEkOm'r/ϞuGG?gK۸pG4֔I}BZ}st>ń:O-k1?o~>i.u uXؗC[8~aǁ|[pMY]Te;akz=Y]0Nu,Z ֡PdN_άw9DٟIHbS\J͸~v蜭,Pakpgyfc"vcƉވ{13={brf;bvDL_-F6ضۀ  m67dpH]Kd$E ̒JSdmK˼kTjז]r[7m/sy Z4֭) 5sW]cBۭ$lZՖMǯޮl;2~l*:Y4v9K w\8\yn,s9,]W-_VoVjON/Bd_u{nWxMCZsGzh%W-Wmkj9=Uv_=XupTscZZj6zȾIE뺻 0wΕc>H"F۪禙⫷XN&Akc\ӣcSc立ʃ˘?P}Kyf-٢ּ7&2-K3k/a-7#%P$Wd̸~XOͿ7(|Z/ խ{N}hlt31&m{d=K7(<߭G >@LT)˖/eHۣn~V9ci6dߚqLVU2 +x|%lIc`?#’29 P|x '.UbTMV;8f >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@022"---RSS#yye,|ׯÇ MMMrx99 sY2b44nc>ZѣRWW'mmm)===חK)9ss^se%H5֑oJȍ;|[ߚ< .9"L&ehhHFGGΝ;266k2?kck.\LssU~kzV٩rFnz5_S ;~`` ƏDfz)ys^se.{L?;3>X_XaCh+H,L!|ؽ{$LnQ0e.\v 靋1 !6e{L!|t}N LsY2eC-5Rs1{d${m_IǻIJ|{HB1e.\v8ZCK{SHɧJ;{TQ^!/6~r/>SczFv߳cWNxS~wHOLJwIm+74s\eo{ϭS벍qqQ6.W2~7k_Gʡv,ycCE eL*zmRwk_N۱WgXYL^Yԓ7VJ,m3>Á $<5Oχ.[(s_Hӝ;v Õ!:|dW/9~pyKO>,,y~S9eJ |G/O!K~%;NHbhDFnH#!#'?b_ywꕍKP9׽|NJRgu/Le}^Yji9O.e3O}lڶ9z0˳Կ{ۦk|չwJjju|!DpSilYn{`Wύ}ɟ| <΅}UzI*my˿Y^(Ⱥ,)ea =:v!C0~Ԃk{OǏrtjXii/8__Q{B*ʳ{qOyǽueSS2u`jI*s5^PN@OdS[ {͟[Zʫ_Lowhn+gn[N)?t0۽8eN+˰F(pҡeS |ߡ+WBN]64:/Z۽8e/V!>@><,٩w$;Nȵ\,[glݵKǏ^0|ݏZ䋖fi~,7Vd݋UfˤCҧ$x><?E-`o|/,vW߰,w:8uoIHu8#,xI^Z񊼲r٩wվnFpt:]e2i.`Pm!ϴ.?_};_,|>EOT~˟gnږo>/,zÊ})sa64[kedk}OgΜ.IR211yy2e4]0/w};t]O^a59-sNi=ѓ f>I\D59{][O}c2̖TΞ>(+J_wrʜ0Ld_.m<^*MMM2::i9%75a.\삙lɡKOڗ9qU9Np>/k}9E~e2wYe>Ý;wO?Ln7Cxs 99 sY2eXaõ߹*0ov]^Cػw~ǎ/!YFyݗ1(sJ-|Or<' "Oxfn77ہ&ss^s/(WuYZc{nܟgd}y2p(mAoN][0g˩+02oK7ŪvCK6c?߄ )@fkyF9z1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ ,Lp5[wȑS5qKvVISnAgã IM-ch^uql =Cz([S `!;k'ZŽ>rΝO;{ѭ;i)?-IgOf&Ϳ3 '_c&m!!K[eΜ9icEQ7)v.mQucsQrnKi-Gࡌg]sNL ==½sb{:\s1<~Q#4t|e]O}\+s\(9.ïzNgϚq@> 3m<{`> ԵoiYm Ie,~?ÔK;Lm#{{d?|ᶧrXP@1埍:PD|^gn bUܮAQ#osʙG_q㎙yD 99/0Ks,$B,תq"J༐W]/$G@ͅ`xCݲb/wq{Q#cLHQ` r;~bӉﳓ9 `6~z;Mu{d댿?s\V^.ȃI&26cIc HaG#\ Q,Ee=-sOr0kZ粣G[28&92N6{>h;`,sehjTNחA׺bn6vou\F_]mM5w;nnϴF}9߬/{%oa̗92>K%}X"ɔkPeU xZM0ud~1הϝ/[3w-܎A8>2P5U߫k&GnMO 3Cz2l;Ƙ]E:<p0ۻdq\ qZ"7?e.ta4 {-5sBE wHْy"Gk!{zv~64ʥ)$E d=IctsqM*]XxaP9yLϑI<-p8's\,{…mh|ojܸtuZѾ{O IDATg6]OW;Mj/['eY qvH}krnuk9\<02/U]ѷ״jTދt2.!w\R^̗Jln~dOL2uQxK[}}(݋vmc8 [vlDvm_~ )u|LAyu yg=5)M]o/l9yw/_RkߗʑDKJ>q.v,ZKk],ɿJ͉}q_2>d;Eކ3q p'o])QW毎5B3 K?/o'j8y֥5*13a.w~ephuby_3}'+o E/-u]wݶݜR8e|oݾ sL#"gfWcNIgn!dIY퇽cX}𶺺A46!ԖZNA_(MiǖJw rE hNe8qQvZ;=\]V4^6inuG*Vȵ-204,CRkiAgoQoTQ#26:&SV T]&js^y9C=m]ȫ.D<=Ғac[ Zr?䫳f cްM;e4[;5p*-顤4Tn ,ߡf+}Қ0iꑺbvjuոGZt鑲9z==ԕc:[|lK3pli̼0{.H9޻v_akqkf=v Jd~ϰQ2W-9]SVotڬt}CrurKu۵:\cz67 ˵ox0-O>)B\k~="W;\殕1ңI۹MŪcSc2wF`n5пS<&=;y?oh˸iϝ5 4| 6QZ- oL*|$V[׿Ѝcd+40q+NOU ]Z&9rZ냂He=Y 'FVoZWV9G*n?fࢶi}踆$q;ҥ %R/5*q9u;hj9V~09~iQNjW);92-p~?>KԾ=T>кj=XˋSf7Cz˃CAeiQ~ug.clti5/KV ZÐUUX6%t0~8T[]?g-s,[lG뽚 5ur<;W 6 h6 |a[/-[֑ \kc˥zQ7[;' R3DVǜ1P5_Qenqp;/4 !bMJ͖9aUZa[;ݎ>uhayFN:akS*-}ۣұzLZ]3q;{\-㋢l}˦ ;̺=N/ L~Ϛf>YyIj r|@ծI w*8nӺm.K=pn1%kakv#%~+] /fwԂ=CE1|`ݲϔOv.UOڕpO2:`\y0^yg<?ulepױ!rǙ= *-J^-zPq}֗<}cO^Ǭº0:H!.Q0˿Ly.BWPoٽ*~ۼKڽbkˇN~E+j]ya'hiOAAm8Z~sOYzV-KͺUWՖ@29޻u5ǰ;ST{,Id鎈sð]]>|OW336ex{F=g UL^K[Rſ-or~0_)^I_ZYS<M˷~8l`E C= kEz Jl{[^}{ne`쒳SjV 뛧+-|RԐB\|5d,5&ÙiLZ}Rȡ\Ku+g;R[eP~;ӭm{%|>l-@maY_G:f2>+}1eWU^sl?=XId-v5vCų-Ya:1G-cPx!ǵ!O8X{wjY_=>6ZznOu_ uz~G]6_R&`ء>G;ֆׯǡHK*DS #Cky)vOxvQ{q C,-)^۴am\3F~rP{ gZ0_iޭC{nj۱X{sS3nȦuҖ 1Q(}^1~ j//iLo!+ig\:>f>Yہ{RW1%z6X\6\ 2_}v?o7`|[-ZR97CeP%C$[?-U}6ݥt㹔֢6ܩdVv]wz+WY|ya>2K}u},[ɶ*Seag\L:t u;=U , Z|ߡu巯kCprJsZkaqJĮVi9J0O.u_8~m.W0S{.z^5;Tkq 9Ns[ԐnuÆ}Ky/N(]%siv?ZzRG!?^]xz#o){d޻y`|ǔ׋;n,D]g_\Vv4H2t>_n瓙 Xn ' ;ō.o+ZyB,Zia.kM%ɩ૫>U (;% G)8{Hu??qx XJrݼf˓IṩHal$r󾏵ܰ9s 71'z&ǚ9=([VoLJo!!.9Q?bf*Շv(Msv[0;mlrw5![W{3wH~߳ j8Fvc!|.]-hZ"r(f=h//nۅ?ڽk^[s/Zw+^0g[˫K݆`:b?APm 4bD74 ͮv"-2c{'lޗY} F}.V-]1 tsD=hp3꽫zW.U&>uT ; ю:9dܻ .Ro^^}{C=36# G佊b=`8hQ P"ms@)ݾ0l`;ץa֪vc(6)c Q:8Z.#.kKBQˠR{Kt. Z*r۠Y:t){9VF\}8ϥPc P u_GYNvk2=xYv-^a# B w?CZj&|Rnjc`Ǭ~e9}wOוȩA!=BkVaҰuz.q ڞ6BSf1֭s~f&p ~:u_7D5꽫:}Z0}{f'Dj0:cmcF|d{ 94Z;WG go-K=;SnI˿x0:OEqm`+KvHkkkr~6OsWWK֗HIyx˃x̅AzkV-W[Kyף1im:#>|Ƹ_ds Z\n=þqq"궸!ԭ ;%[. }\&0ovzx].T/swGSlLjo uCkmika]A=PIKR8/)8ww1﷕ln[n>E [ 4+9m[<smU<=,εbQ1#^X>wh_u6>wX {ԗGq53[(]?2;nLWm]L?w'!X΅MN˲f+B6uXk=_^7sxq;-ᖯb>>+f >l98/nWa~N-8ca}5-J{Kv?CdYX.GI5ȱ4~km{B\?wp>KȼObhQHIyfh`zǜeiX}C紖%xq!ؼۮ{ [sWV_x6bNt}$ ^?}ufqczo|Q5TNu] lnw_Cwu ef>YZ'jXRN4f=SKf*ZciS>D{vu52+Z?`3ጜi8 Zw[ޟ̻5uOV#pnzV Vk!䴴b76K}}:u#ھ__9fes)ٻsC2f=jLd"E kXvI<~F}=)ua|Hk}/Ik{'9$m{\MpR[+[[1vtsZ7V0mJN1g*wG^݉biiC+{7hGmGkReݺRUʲj}o݆9G3^w_\Y>ԋ[[kqN#V8[{VUVK9vs{~[{(_P~)-k8W-17_Ʊ_gJSP{Z|YIN:G=~kma_?L1V*Vryp޸Xg'9CN~u|C*pи+D=S߳agm UGՖӿq8{5zO4l/jCQE#։C{]u-)Glvw+}ufqEm͜JIqw@br]NMNm~qAԺC;>g.\0[w%9WZP:Ycy )RkKnu[W*__w ~^V6뽬ґrڧ<r9\V z :]+ |x#%1Kǵ޻W^c0O~- NVX9Hy}:-9)PY+ J0. &V3־g^~,'c0}}rFwdG _0Nf0&M=-~Z uX[rmWIrF֡? }t_u/d&qs7$yJ9svпSt37f>>NۚgP[@jDgT]-r~t]\,䗔CsWZiǷK昩v;֧ݛ*/u9t<6-o;>\aKCMRniY^\U);G8 mr\׺umUab{snWJ/cOHC&uyh0ݕkuvXcH18oIDATokqo:n/ʻ'R_kEe}D;e[ɍo(۫%}jn/90?5]}t)_Pyl袌3uj~ӲH|yeej>|>"q=˥)|I(]z svR=.cOcWkW#ׯB7r|n\.,ru_؎V7:_\GUUW\סn_L^]A֯Y#+ԸaqUֺ\ gZ׏s@{w~Nc{hpNWƴ{l=l"w'=ǃznr+g:1z˄Z'N!K9|2)o# QcL'VɲUeaYnml<{!%?w6|764 )9 c_P2S 2e i.cr; YFc}SjLS71^rQ.4'ƌ2OIcj8aN$ѿרc3t1cΩCOXpXUkuHo~\&-c}8::8gz0Xחb/?5;m00~HNюsjvYY1^Ϙdb淅ڋ<"N~Vy{3s\d{>hL]>F5TV|`vɾLk"xHqT>LpDʵuޕGf̷x&Oמ=673@Ph ` )R78EDS9r= Ę5QƇ7? 50Z%5Tz4a˗hGz 0| Nui\=mռTngcҺ^xx{.,![8\kJ?]a!Ph/DJKՇ-_,ysA^> &)[RLޱLN'ck-̎oן=lc  6+6iLHk8qQjյI"޵ș=^fyz0ܼsԷtq DD@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ >1@@ @@o~Kv߭O߿}&&&dsy֗p);~9gA4ޗmAir2 %v6'gbbgC|A>d[ߛk (M>u)w+|a;"|toLLLL~y/||&&&|PlLLL𙘘@>311b#| gbb"F@D>>>(6||&&&|PlLLL𙘘@>311b#| gbb"F@D>ãϓ_^&o8r~[e<{v.#T76'ڤm$! =U]Կ1Y_>_+ߍPg?1>xd>VD&|pfzš._M_p; y+τߏ g^,زGƧ=g|#a\i7 }~`f#>{AR-L32ٍlÏ \|w3ϓN%I3=>;|`.K/N9!mr~CRyaM~3ꏲ-qAO-y}u|7bF6wmeT+_]8":2ߓ)Wgdٹ׵:6 ksȥLòqVἼM[S:‡FeLn|8̵MKdc >LHޚpmfLi},cSWJHYWg]_]QBݭ 2<|u*9`=x̳~׃ڣoR3bCGN4_y׹즾ﺾqR5r-y؟eW  =/<,5lwTuBiX{Nml#| Z+ㅶg$]W~N`)h =Ar]޷M n@[쨼m ;)+|^paNBy!2'~ [=7:8eO,uvEC||>Ìh*`TCԭxS/Qi訒gϮkP4j_B}S7:Ou^ߐNK{Sް,_ 学2/_9'ڋz`?7^}?Z)_lp'ywԗ !&/U%c얆[w\l}1$M25W z#~7۳gߒ5]lKصGug_NrRԭZ|3]O睃} oZBLK_-@^SH|5VYm3}2}_lm snh/JmAtq][߳wwtfweǡ=lRW N~w.[sw>uQu|0f*jpDZ֖ͶU]û-K ];AF :Gnm~@gkӇ%л?p{jsݼ+맇yֻ}-O}bu~{j2B?llCD1m'߶=܇P |PL3Pmݾ,m]ҟ)W Rs7z.ݻ1wk/]J{E~S/\'o[/^9;>C|3Hgq0uwhڵʨmb_ =na䅁B@/ȵoR?^sLE~5ݽ]G=_޼~2Xgv2=RX>p -XsE>C'>;U~%v6hSCj#kאZ/L?ܩ|63Cm=RsFv_-[scܧ1ԮtmͰyzF!ӯvmc۵0~2؆>x.u&7snEzK'`_}fZ#| s%-?<}8izYW+]g1O~@ t0ְzxYzڶ/Z4lr2߻rݯ g>V3=tujQ{C mBP^T^e$|bnɻߪ[^cYkr^$lwKj-SxR<#$ya!3;f0>p>3{Mc]-.AQK|K!~̸g D]~mH^I}R?j|c}T6뾐Q|iE*+ F mw>7>y rMin +Gk Iu3:ʅNgOj;I핮lhk `&LW}}1ӭY~̷j YquT_ȻOFz>Oߨ~R}kt4ϒqۋui{=qlGg |>C1|mZH5w>.rT.l'vb'?:-$-C*ǯjaoRpug~tX״KrmwKx.ͮPCf~DzPui޿Ouޯ/WՇG߯?ϻEwe2@S%&>0 h|h0K2/ɀf$>0 h|h0K2/ɀf$>0 h|h0K2/ɀf$>0 h|h0K2/ɀf$>0!QRꬨ3.>4|=Ƹ_^'%mΊ:32@_z _gEuvt`qZC?}sUj3`>TĮ!P)iS u6xm>p_|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|`|l\$I$I$I$In3K$I$I$Id$I$I$I$I-H IENDB`hugo-0.131.0/docs/static/images/hugo-content-bundles.png000066400000000000000000001031321465312036400230600ustar00rootroot00000000000000PNG  IHDRPSFj pHYs%%IR$ IDATxw׹-ۤmI^,;/`V  r* $(/H 6P) aQ8ykWo$f$͌$˲Z)왽] eժUP @( Z4%_ TUY棞@U'&y' P,IjKl/i_lk*9"uiʰ4=UnbY[oϺc)|#MOϧ(~K+>i^ӶH KCl=Ұ1}vQle~ִa[kSҲ^ipn_.iؔ4o访 /D꩜0'!MJKWHHSa *"k vqT1"-nihmd* J)MV/) K+ez^KK\_X"P=ڋqI`ƭɇAJjAL^MдwU$dZ-G6)dϑ[{RM-!v'E{V֣oOhntQi~2/F^/*t`fDLA-/HZWa+w4EWT@-\=` >T${(&7[*/&-*ó ee>$P.YЬ^9kZLB ʍ\=[G1Q%'K4-7m9R`%$PM>JUM T!X4@$aj Ki@:+PE#POFL KeWeϴjRjbS}[>hŤO#PPUxjuvKʬ+QWer)ujllĤ`*|j|jC iyd*Sl/ dG >o%cMPU^1^Wu̧g {& uSվ'[OXJYr#bۨqmɍ2įiz-~;/cId efji`vC35f:ƈ ou@e| ըF꓆MSoeb2w &rL5as|o)48 ,-;E=`) Tt] GiG~wTSónZ4pSS ?sfRϢOX&e)cSָ( KK(@( @LH@ P@ P Pu(N>p} (@ m8muGÏKK*Iȣr"P@-}_J\m7=V59)*R{AmcCZ۲$oK<@^P$V)@AUR(@(HS04t@Cmo@v tU_-.[n8_mshWa/}x1,St_ PAK@ZtqV ~Pr;6iR6ǔIrY|>G.(.$ ˵#W6T~A(j= x=a=}27Ӳ;^ץ H((CCA #OM0έh+!SQ33I9(($KǪwe4e,> 9g}@%#P>a"-3r4DR3c0ͩX2'JԷeN2#BO*9*t6EM %Ws~@(P Po:J2*-y/H)-C˴o}-rm4l#y T\~A(j-lq\ P۵Q;e{KuT(OsB킳|{:xug~o6?ʑ@=UE}\S PSxsF+ {eW'P]r;㿶n>%5]2m1BǛ{ߵ/]rDʌPm@ PԜj˾J0Xd{F^hʊ;Zu~,@z9y6,4@ݞ/@-rR0"tG9ÊU#P<|ۧu]zj@%$P1Is^ѧ> #- 1PĘŢPJ;o75ic8;]s0X@/@e}NH2xUK;)Ӻ]l@8rA]v~M?V) yk^@rZ͡_()6Axyӻ\#}0\9hC :+;Y&8Nqt.P_/\"i'MvKaO ZB#VGk{2} ȧ\_( 2a۞2ɹ+Z( BB'ZD[S΃;*=[\n.qvn? Q.$A::iOeSmZ}-<~ARJ/i\2mnn^;r5:iHOh܎Ã#u~[d H{J._58(2] D r2[n?r~@P/mp,&hTcQսD&KǪwe4T<*ŧ4q94[]tR" %H-;Ck [XvILbe,C2$L`{žO'@ϛu oJt VZj) T^t(Q77t@IJ"zٲNzӌ:t̓@MDE+J~AZuʀT\ԷGh*!ACJS@T#P Ԋ(u%a1Ҳ;R'逸mȽTnUK%oէG|_Uc P@-z4Cn>0֡Kn /k >;6eHcJGkT@x·"PHҌLNꓻYIHIhxT8|]y{%S_V5)iNdu "Lx<%LȕG F܉Dc ^6Ny#mD\ $`Hxiӵ#Xϝz:=ӌA"Ps  Pߴv2jw@8r rߔD,VJbs1"fvt>tM?yO&Χu ټWǓȳyP<^+]^W<~q9w7.HpX@U@D2JP̈ @1 @!P\@ (^P@ B>e+PN@ P@!P P P@ P熥}F_lʭS:m3@@=R*4'#CK Bb}@( B(@Oum_Nj5)r/4>\b{F?b{ZHzO6' rg}g^ilM'{צeeXjF_*!M4nHTRZI#~kzړҴ9( "hO3@-@5QEe5Z櫃@JR\([40jPҦ^Yh^@ejz}(@y^/\Mڨ0_2mA β^Ksiآ^f.ti>/o jYG4JJ˳ sNis7Su;Fʎ!PԓLc`'4i PesIC[vr_ "P"?8\O*,޿S1 @@qK[ vOS-F R0 PԂ i a=UlVɍf52j=.*ZSL941C';RXɴ]~?LeUmxc$\0*-Z*9}KnumSx 1me'lU2m,l6,KArΦעҴޟ^X$ثSߛڔnI`4(32rӼU~'La)3MSoeֻ7=gNg4tH3=甦g ϺWlkz_Iiza;@ PPmNC4Rf:qJi Y!7dkKHӦ+)?K^i\wET3hxFM qi~ y@Hs4p$i] Ln{~@(j9333@%(P XB @( ( B  ( @B.P#X)vm֏$Pmp(l{}?~]ZRNzFp];ޒҬr؍ܽ+= Pԓ|@oL#,PiX#.`olݗ>2{ދI9ށ@@=v964-Kts? M PPH0  Z!5IUiJ?`P-  (HS04t@Un,vt%N._%Ems/~Q2~ѝ;[9^6yo+}O|X>Ggku۵_<>R/>Wխ8_-{s]şi'[:`FyT}Wr E(X@䨄cMF7&r/>f~*ycJ^07z8O?]ue:O˾wE_sĒ9^nϗ~%rqKs%Z.-\csm_@*j1r[n'Uѹi R+c93Nd?LE*pngٍAwWuvE;ѷRʊ#mQpLӔ? WyG(:N:ŝ -kw]jӡZjWbc&/_<) G*G[ɋ,ģ~)g~oZ mHGdJtΕ4VkjVyG(:)jDZʒgS@姡ƿݾxK@>~nቢ~H%QYzG#;w<\/9ky~t IʩΒL0{"! qI1B`5#P@U!P[pP2\;=דqu ӞsfY]֧js|숶8|]k7{stAٶ@ PJ.::!D\**O(یZ.@e=kO$ ZDI=Sz]eVR8;6/I4(ZIBŝ_h/T2.а\ ;>@<!vOya$?mXX[c YcڹW$ѫfѻr1ߠCz'*W4o_M@'PG%u*/Y#6U]ZS\8?9Pd2u@~rAhm^K]Iސ#b9_22~)N4YL:\xo$Ee_ 7N9Uy(@[Jvsׂo`xױwt+oyggkw?{lOeTg/1B=ڤ)O dϴѣR*]Y_f>gTZguM? @!P,r|qŔ IDATUq.O?[O BZB9gHھCwzzkZ ۑO B`e TذA|Ѐӄ^ /mu,2WBCgvlܟ P7 zݴy0W1ao>43oq@ʤ]r}uW6'lb>5gz ܟ@!P<(@( Ph~@( @!Pp@' Ph (4,6v\F?p@%28p$"cѨEBr1pLz:8+c7&Ϡ Py巿f/_ ~/5}:d@zޓryFB{ٯ?iu٩\r{Iڇ\#2]> Oe|'rG$ۜ (jm_HBmwPn mrS Zr5B --qWܿ^}$OqtSr۔<(^_9Ѫ䫯Q@3LYO:,*)m>ZzKW-nKG"P@!PK#uEֽzsAb)m7ʰnKn3U(;OHR-}#WTzrxpDR&e&BveۦL_xOnJ?rwu՞Mʔ?.d;Rۚ WW﷾"~x<r1hb ;/mSz"5y]:V+q2 X|Jk9멥PY86< L9HWE"s#J٫Tv/hTc,N;έh ˜3kޖtR" %H<^vS+L62u{ܨ?Gb,^ܩ[ TrT±H^1^ޟs=3)\;Kv$ I($Ӻ`$$S 6)%6UYR?J,k7m|-:*]E ;r0X PHޭ{8<,MLUe,P|V242Vr=fw'#?·OuYʏڕ bLU DsBZ P'i/…-lpLR$VU9ܺ y{q=/ZOL6ownE ZжQtR )/c%=r6eݾO#,im*וDB_ rt`ahC;Ώ\/C/Wx͓@USU{Ϋ!ޥ-PF"/rt$,F R" P@!PW-ZEѦHR2͇ԑ>0e]œNVAjxc_o2zod ߻3֤  Z_#7/yc ސ>Պ?]UVymDgq*='d4X,Y?X׵8k7{@oJHe9RS9v Yg<@4NI]}r7+O) #P@!PK]קPFLD F޻(P3ѫѻr1ޠCz',co]TM^i$X;?9O $g+ 3柪9;6mN$KDtD@!PqrıXv_nbxwr*(PEC=#2 (cqR ťd4[%ި:f1i\\-{"%S䂚ɜ4@!P9b]Gg5i]l{sJC^MOe/@@?;OHJB*r̶za?#?Yur;f,JaoE#)~djsˤw2*h6oUP P@!P W bF%:x*]Kz IdotzWFӹLţ2 X|JsN%u)H'% PPBēu8P˥elx@od.#/c_FMe3,<ɉ?jkN&o/{O;x<x=KR~[~ ( >?@%G MR"\MFv&o>z9Nt{[uAʝsm,/rQqU2WN=^(}zT#H٠ Trĕz\[۩:GӚ|(@@-,J+2T2S[0LYKr=*2hM߷{6 e|N׽VJL}D-?flc PԒWbj sR+wӼgsf3N=3._ TRNuP m_)%(PQ?eĤnY~*Ƭ\^2$ IKBw[txBH\O' `m_ Z=6e1J 3:6]h.Py^4#i] Pw>5dъҾ_ ZuʀT\ԷGh*!ACJS@T#P P@!P+BԑHO$nH_t#RU/uT~T P.H3jc䆚cS4zNqTqvϋ@/@@->4#nVR77_⠮y4=d(^ԗUnM2=eڻS9v Yg{j. P"Lx<%LȕG F܉Dc ^6Ny#mD\ $`Hxiӵ#Xϝz:=ӌA"Ps@B@~%ȅ7+qSi|Z)EέƸ'ѥs4_PP[i>1›;֭_ (+xu,Qm΃z\\%t*˹9LwwACgeb@Bh2Y&7R ʶߗ ( ?Bx@ P@!P<(@('p@' P(4  ܟ P ܟ@!P<5mp(l[Ry(O 6~"s/%^g3H:?;~ȧ@X,<'a=˱q˒-]z.|X/$Ҫ4H0T@@Ft=zNm:| BBھkx|~ y풮ev?P=,eg7{qx~JO| vq_'[I=WFʶM;GrsJ9o`VgrNe(nqVg6yo( $P:8dL26>%#$Rp7'褡HOuÃ#2iߊIsJmT^239r2[n?rӸ=ؤ@!P,}B_~鄄ēz$HG ߊ$2.ޕQ5'p0(c)M9F 5wL L}( 5'P7ߗ=F G29oHB( Lj1Pށ}'}mՕyU9ۼTSwTLTi+pSMwѣGs2Q +P i“(T:0grSa$@`eTVBs~eN[_P)90^8+UlQa:+`_zBTRNu[xdhZ^p @;SGhx~=k9SEE>wJ/وI^rA%h9Pcv2#eݥ@|SxURɒ.ceL( /P;0JN._F>3Tṳ-*ORzO$d0'PɢwmԦ GJxB(XWm]$rU0u'c&!+@Ff/PZuD( e<].LӥK*s^)Yh1QVp@#P hAF( u-:߽2o3+Zl_ɥTשو>h >o5\?Mqvϋ@wG}ar#D+%T6%:}wq{ FO7Fd-gL &og!v5Ayt{O,)et{ra3,PތLNwݬ<$&RE( @e^{ʋ0$ȘDcK$=_깒)/Cm?n~X쨒6ґpp mCw$f1=ѫ'jѻr1ݾA ُO OeeTn$8xZz.qtv*e^x:/Q;( (,(4$^гg8] I݈wvx@!P@!Pmߵ_<>~vIW[2G(e2۳כ8^yP~}G+KMLg~~tlY,aK\5si[>usJ9o`VgrNe(nqVg6yo( $P:29l/)Ӻ焌%MO&SQ'${te\NʏTw19<8")v= Ht=M5=um*[vNi9c 9iO랏vlzA( @>!/tBCx pXIׄ$'G=20Xұ]US 23_Kn$WXV 5&S\Tɬdε7x3'IjQ*-@X\ٚɛ;Ox }O'T}oKt]oK:)PP Gk%@!PM^ӱF\Lp#5T0Q*I%r5R͋IrT±l3q} I&Pȿ3/[d*!Js%N˥B9y4csA??\7@%J<o}@RiM(w|>j\"ΰ- @Zx@AwV][Qo{]})/&F2*?AwI6zHbNFrP77 ԂlTP_yp]m+gIm*3S~)0N}D@ P2KnNEQ劰;e^o}~x/櫸*d0/=ki2_{ kmKʩNc}  )R NV!Pbޑ{ϯg-]#]q('.3rU<1KN6d-G\jNfT26>_7yNt۸7/[S@_% K/O*y74@IJ"zY׳Hhx?u"/= Th]iiѺ@( @U(;d5UN Fuۊ#&eTjqxz JkS(@ Pe5it)51P^{Ϋ26 -&Jjw,n?h+!u3'RG#P[?b( e@ ,wơʽWer)ujlx6bO7Zϛ@ͦ#zwA޻RϰnxL"M [d>׻øKzЂϧF#23&u7*!v5Ayt{OZ,ղ\Nu(}DoF&B'nVRR"P\2/@}WD" I$2&X",DeϗzwK0Pϣ}d';t$%~dLpD\~oP!=sOz{eʥs9d.pvLK:^?{tD+EL=2^a(e"biʌ<܎Mlks+c]a4 IDAT?3y9)iX|Y/QLOWMX TѶ]2(W\~AB%~x=swŠm΃^7A;{_Ggѧfh7[LҶEYZiC :+;MsrV@( O@( Ph (4 @ܟ@-[ P B@( a@(@B( ( @B( ( j.Y 摆inF4+:Tb{--6rݵz@BMK:>(qi~>@e2CK ( Z4+!iy P@!P Pt @ P@!Pgb[뗦W<Ɵvgm^nS!f'i|-M/#[R5GĶ. MyKjPQmi|O\=mk}gwJ?~\VwYy@ ZV蒆MI-W ..&J KK2V/ɧ=Ұx<~ִa[kSJԯoLb^FeeG6-v8Xk< P@@- 4rgSd^lM4-Sڋq  Tr/5A۞AmPQ#m^HZ~ v}Oi{Ll[Ju2ůէm\^ɌlR]PK}<,ß (PkW)z֯GK~|؞wԧy@j b^PfjUќ悡܋эǭ RnZq!7$|)_FQUk< P@@-*a2w@O m8uYSOb{]5}*5(MwTw.j䳥Zs (jMQx`-g8. wV' Dوe`T4"& jKVqkUy@ ZQy)PVkHK /4m fh-~ó^iܔ00Z,+ej69@@U!PXrS1>gU4QOᅟ԰.IE}jhsY@"jMjk/bRG^yLޔ{>P?g@7WmvסnJ@ej: (@)P?RF\Hژb,&͆rmҬBLN/ Mˮ|^]Z^ (jE :RdH}Pmό>(/&SxDnX@<՗-ۆqk,b4ֵ 1g5Bf4ه鹎968T?LlN.ZN@B@sHTӖpQt%bթil2Rar?ѧ^zK~"ɚnkgilSdem$4+mRdj} W!.z&lѧ>s#bۨZVڟ8fiOJ#?e6zL24e>,k™oوQ9`џLbnir2J2y*>)k{+^izU:Ni|Ol)\3mf//qTZs) (jԊ`lN7x@-z}H_)3ųv\zk (@(njYA ]v}l[k Bm+.bQyQWc% I0PXbL,?q.ö!P@!PU7> FuX Crwǂo,X@@!PP&xaV9n  BH"{%x* (@(j)`ߵ_<>~vIWq?qv%'>@c@>x!mՖO:WzTz*Mm=!jjxKwE}.<mZ}Jrб¾s׋r}9;۟@!P@!P#_GV|IFa32HYx!"Poy.H,5cyzyBRhKaV뵾#WTy@RZPIddIRvNGNϱ[Xn&-!@@!PK'A%NHxh@x}K_.CUn/mp,&hTcQսܷMM^Uh:_ߨ 2Ӥ\ER[]t~n&bN&o/{O;x<x=kߖ*%HH^ Gk,@!P@!PRr7?-9\΢EA.G'$HHB!ͼHoy\M Fi8<0@%GΦ cqzD'_P%CRTi$IˏHR\L+q]Wgs;{$%rLKYS~7÷( (j%bnKgEn&MܩmN;M}ML x/IR$W}U-zgJ&/iŞ9 Td-^2PM1N?D@@!PKHt~6Ź|Qt6MuT#Cbqn~,uWbXQyB1P۵ѬɵϔqC Cp*< (` oSx9=f}v9(T; -lDZ"j5'*3"TQ D*<]~ڪOj+(4i*mHY1@@!PK_rG*.q E' 0mw\P,x쇂g-P۵,JKYܽCJyNZFm//~~BB%C_wgւ˽/z TaC#HTς@-@ݮF F%4(Ļ( ( ZljXz } ܑt~$**W=sQ}^ :@@!PK m%LZ.7T)ZLKɨhrbď)<|xq Ta`wrBZ&7UWw@wG}Ɉci"P@SdV՝a%nm 0~I_mu).OdoXtъ'd,zC[+沺'PR.,@eڝ_05v0I\+H`a}L.: Tf,I>ğ@-v}g"Ϥ S^h!D$K^~E+ϼģղR,#fm}$%? H4/p*HhX.2l>@C2ͼ@e~,dB$\xZ%[|JfV%ŧK0P;?*|FTs(c_҉X;#H B"};swFlhtbTNr}ơK *4x𳂑.9v1#VKDoyM*}nf6u@ %"/C|{+?2?_j&h.c\~ ( Z"%~x=sw%]}m]5#cضK^|8;[9*BW<ʞ7C Gz+$/ ( @S(  B(@(  B(@(  (  B(@(  B(@(  B(@ @BҔYlguZ3*)+u\_̺_/)} Z[L"r-v_n燵l'~ueG6'g_nmtVJ hUԑl*"A~>l^au$,)-/ڋ:'{2xX]ZE (jv[,ԵW/P6PZgC%9\S-v,ꐙ*TG/ X\֖#{5NǕ]mOK{ B#Pئ|B)z\ӳj:7%_(g&P4\iVՑ`quu,֠4= @@1772̬OTj9ꐗC֟15!=۞0`kkSͯK;DQxS[T6x; ( IJ2U:*U*5,NF* [&Ltvt zqS°yK@!P@!PT92 (PO=*&_/{(UQ•G.iXbG( ( @9,G~:+(uu(<zS4O   BK E(d2rW4ST1}CXS+D}nq@@!P"Pl҅!|-:qIԑ*ay/+Ouۆqs{&A^簈I&4=gG  BrYm,m iYYʌQ--SMi{u`5\&{؝ [I1e[o5F=yHR(Sm"S3KyW}*V%^rS7ǥhϯXL)$@{LZ^vX+ qhPצy<)Z%oeF1@-gZ@듦iZ9pϺs^(34ڤ>앦m3-3W&9Rv{;{S_r@/>W.骢qvolEϋ6INHCK`/ ^ ?d & " i4 rbe|K^K^Uh6wL~~g3xm*9VOF3;.~)Oj\lqBBg]:YB6&5I7P%~o|5~SwϭvQՄ<MSi+ke}sZ@qҨ/ 7t 5mg6VOBu4,GVEǪBBgǵiRF6lm6}ҹbLRFBx$ ,FeE:8,PHBDG>$V$9vSC4y1Qo %WS3.GqV1Esu82KDN7:чzd_ (6ƙ^X)_j}6t$uCYbʙ:/i,~ {ryў*E׎r%fTV *U9limEˀ#(Eqvʍ|61eZNZSW|M1g863#!2(QPH,~]rl+~/Wuh >ޗ Ztu:,v]J,ob!vX-riHGF? e\?eSl{rlly1A񌟕@ h>X,ݼamx_2  B('B9e H_wO Bu`|B.ٷ}} PEX2Փ#-/;..gb!q F2bT}GB  «'ۏ/4kU B~`sz; 5s:WN^;@@!Ptzjǘ>x<%dn jT:vPͯy 5}=֟@@!Pp_仺8OEuo|zL~?(@(_&20uO|WfSXlpyߟ P#Q}SX7S0@:.j6I}[̷imMmbЮò[.ddjvJc;>-v%NCFlV)#麟O6جVmlgkc TKg2Ө/ 5xFJԴݼ =ijzXn;VЗZO (oɣN0o< zt=}ҹbLRFBx$і/FeES/t6emeDrkz񏏊n-^D{31>#AQ>g3{5[i}uzf1Uy{+?P($`H"XyW@-@CB*QEΠp@EoU'Pt\~eJJ fϴGL.EOMˎ;2MB+Zr]_{@{g rhV5eFɿ~QEYHe\ $p[%娰/?(@x#P |m]&IpܔJ+C,lc F[ b^5MnNoЂ6QQLnDB( TqU2DXUuiE(wk~_jp ?X{ "ts_cv0=%i$t<SXF傥QwDB(x PIj"eji jQ|wσti-c)w {T̩IԶߕK&Pܟ PϦ@I>/*PKڻbr hJpcz 1ܕt]$m˭*1_BB(zJ?lB;ᅜh]dO VR-_O:/&J?F<-Z BB(ʴ@m,R!*!LK9vq\VM 'f@m^G \zYIy"P PU$zSD3E=(\+th31 iAT+]@yk\^~G| "i7%BB@%" AIe:ZM &P+d$b9GՓ)IsC i鑡ѧDKUOʽXj?`Z%q,6iRׁZآ?7/:Xe;|ӰL&)*>LUI (@` TV=D~ fkeM{NQz$y=Qy%|'.>  +) Yדu^FBWk31Ɋ喋6|^^OhLS}۲vV(D("WD [~,L* {ryQ*E xTyǑޥ Ȩ{=bl|^DhlSu=Wj_17Mb߇29b!2h`6wra䭊TJO ( F:,v]J4me$%}7j"#֡GFf-x,>fK ďg/1f2 񳲣WtXv^'Rc ( XbgMm`ƧJ"~︸56.H&k* P@AC=_A"~Ʀڷ_h݀QeZ mf(@( +aq26}PzZz';].qr P@!P@ P@!P@ P@ŵ@B( ( @B( ( j,b"Z@Br9\t]nI,~n~q ( jtzXC~Jx9M}q ( j|:'6" @! @! @=Z;r۵NZv t{~lbY![> Q crruuvӟ6u~wO1(mY4[vsm@@!PKOqjfC:NMlLk)WCsrk歇vM3Q806ex|JGߣr;#Z#5]r"棷G9]q@B'E% I(H4VC(q.+t,5&HH#󺸜-ɿ*G=$Q߬.&A8vqL\B^D /hm,<HW׾jO }wF"vb~2U'\q@B~leNl!)47)pUIEvf3^%8/y^{9$ ^sr{*u>d͋45/eҖӺGMDqexMrnG'9Yo'Ӆ}r\(@e%PB=C_I˕?PS[ƒ/ ̓wQGBqB&,LLϴi@sVi#9]>V;. P,;j=KT.X*Xm3ݙnv[Φ#_NmK=1+~ *' 4[ X P@!P|> TlZvT^-WKXUQD) "#Hl7il&Q󆑞Z

          7|(3%8|q@BR?̊6rC+}Px=rC+xYM|ALM)UY{D (/uK"PHҢNd>4,II;c( \2<]'eܽ7oˬS.e";UU˸[ ŗA*Q;$QTEYʊ%Šgޖ#]}o&-nx|Jݏg=]; ϳ+Sa㒩X CuZ@(ԍ Psz*H@q[%ڥ)J̨&VTr^dR|3]:.=Wmse\&AUx5qZ@(?:,P"Sbw>"VKo}k:oyAkM7ce]u@!P9R?xdjԄ%$^ eI*Ͽ?^mUd>oqyiD$(B+Gݲš@!PeTS[$IKYo.]^hufJR\jW$WdyLj?+[5kStZy@-@5 (}-ۼ L>oSQ7fliqyßͫ)՝+^KnBW-EYFDgr֦ԗ6u)f4siWz< sD\šn}tdr;%'o5$M[Wqy@X| yRosyI 9X|%V!*Iϭs\ e > o6^m2*'eZhedDB*BpgE%gR*+_dmI P`&P_34%HKnCH3_-eU3_5[6`^j7:eGӟά͏ ȊJ¶/z2m_ɚ{!M-^iJ}ztUKX3S P`1YկeڀjT7,@Ud!iZJ?okaW493+"cf;nOJ n} 11=شv,~tDr< ʈ=xĻ /j,?$e-^y/]iw5^wd _@qT>Y+4GeB6YCV쐦ZyZoݲò:^x+?/,5tP~m1UK@Aye   'Ƌ>*q PP睲$S P b     (@(@~ڴn8꼻ݒX{t! P@Aet퐡!V!@?veI@q?+hA.z[z( f+A5Qb4ǣT@@/w7[{@U m[r,rq,-86:,N.n@m%;: Ed)%1e?Aiڦ2+[Wb_bfC|- P 8ɔLl\F[KPY>ATwRYiVY$u\~&y?sS'R>z+g\uak/ (@bZhqknH_ITpr/oEۮEaz3sO 3]42-]Nt'JBP E>S<jO }wcD"v^žd1%"uJ\%Jq1 (@J%D[m~&Uo{d:-2lʓGGʙ!g G.fEUQ⨱`(giԨ"F|'"+k~;89Ȃ?O'Ӆ2EXHn!P@F.MV~r;MbeɾӢ)CZyW›Fi@)l&Píf )Tƒ/ Œ$r@j@{mms= ޤiUdŠGnk9ISTrJ0/iH`T'CekdR "kR= mKG P&PErĦew^Rw23Od;&lADXitʏʥJYq/C4_k` P@5Z\&֦ܔ=+UL"PE"U-vLp-"c TH^W:   rCwztmUaדdN '$D]OHb*1@T Ѵfu~L"=mZ|D%=5oJvڻ$J}@T@G>vػymߑ;ڔ||ADAt$iž5}u\2g>.*0.;J4(.EρL,Ph]ze2)OQiJ(@jZ KOVkUča]VE5%NK<zGd:BTH畋cnqۍOHD}m"'+"3obdEzdΈD")o1Q"ϕ6rxT,}L#qI f^S +9%&RH(@L ťc[}$ߝ7o^kmsbBtUB7`ŏۼGn/.*3#Y—Ix/y{_n2Ձ*\7k.P Jޗ Zex6 PO5j`Etba-vCN؇55#ېHtЈ]Y-毆6t^Yѹ$5v*o@e (@(@*< (@߅@[@@@@ P P P P P@!Pˍq B t.>t%}\O@!CCCb(c6@fț >> (#/=^r'q;-C6uwǿݲqI"D(;( g}DX:%v=A(@lc $uYv^Aq⎓hZ{tiN쒾''P!z^$Ʋ53'1(mY4[c}J_6lVtwȖOE!GSQdJ6 \^raha%,$fGejlq7/H8j=[dY=C#wd:.j|_jмޟ~3Ǻ5X P 1-8tGc!nUmOq;22bQLa?E#r.NK.z| Y$ qtʝKHjGIDAT@'Nw$jǸ/')Q'wN3}yd|#>@"j  C )Q4VfI9t:Zd Ir5' {=W9S[9LЬ"J|$C>KFVFI׳g<5Rqɕ5s}PdA惟B"X?okB/PB]JĜV~}떞wL}E)1=8S 5=U~67QeAʻwoJ1fK7n5KOLB|a($T 3on^]67QaOEsҢ/ U9hirzӔ_{} ]T9]x7P\cu*<@dQdŠGnk9ISTrJ0/iH`T'CeޫZ?f^Y7Yeh[:ChtRo|p'v%uO)1Mc D>7j܉>ݥty^T.%PjΊ|ҧ"_GhycimM=ܳ"P*+5Q$Rղi%%RIܪGFRھ2 ާ"y]3 ( rCI3=|y-'7'Ȝ6tOH,{_JeyETV  ((iZD{ڴjŹeU3_6oTzӵ5W؊W{af^uEhǮSCw66<_6Q2IgMu` {G&\%UnmY3uJF4޶\dVgJDȴ4,IyO+P@(5ߟz֪^ ú"jbK.x_(DՈ|^8WD׻ܗݭ9M*~h[.'>Gr\XIL-@9̼%%VrJL& P &PRtɱ>Λ7h56C9z1!:Q*rSs{29 _*GUl3]pެ@M侲f4*1z_.h PO5j`Etba-vCN؇#ېHtЈ]Y-毆6t^Yѹ$5v*o@4v  >(@߅@%G( @@( @ @( ( @( @( @@( @(XIENDB`hugo-0.131.0/docs/static/images/icon-custom-outputs.svg000066400000000000000000000042351465312036400230140ustar00rootroot00000000000000 hugo-0.131.0/docs/static/img/000077500000000000000000000000001465312036400156155ustar00rootroot00000000000000hugo-0.131.0/docs/static/img/examples/000077500000000000000000000000001465312036400174335ustar00rootroot00000000000000hugo-0.131.0/docs/static/img/examples/trees.svg000066400000000000000000000160271465312036400213040ustar00rootroot00000000000000 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 hugo-0.131.0/docs/static/img/hugo-logo-med.png000066400000000000000000000417721465312036400210010ustar00rootroot00000000000000PNG  IHDR|& pHYs  ~ IDATxϋe} Am@0̶!0Zd-T-ċ7afaS^ 6CDGI,,w<-ċdQzO:9oꮺu<]\\N | | | | | | |>>>>>>>@@ K~_;z̍CW[BNs9EO>|{u/'w/z٥X@F.EkNk#!GErTb_ DEf|r#~&zl & |^ה |VZņ8S W>}bE貃@3}{eo93 ȭG$_9X{9q})rzDm|2.eDNorN>Kج`[4wù*wpi(Snm>szʬ@ti}9=ӷi@\ck&;Ӧ P޶ڴ9`;ڶ}y2+rzxsM@yeVM@;%6hS |2=ЕS>'wN^0 wZ i@2sz &L |)9Ц |)%}7]0}NO;4|@L {Y ۴w,i~w$ڴv}Аsȵ >eDNL@̊i@BˬMǯ}|?} zʿߦ)>`9=Fg{kwH܃ߺxSo^A|k$8ףq ٻ)7Lbt.](9waoj+)xcM@93nD.S{H޾)GǮ3}J陾(z!OsO׎E^1JGr=7ڴ"JG"|ޘ9XǸW>A}1eTrYѻ|@UȞ^^-]ʺ(һM|@EDXN;QCސ|ʸr0g9DszC}!΍^c"SN=pwBNoH/dع+w>`L;WOԵ)M@ʬu$:dl=חX"+w>ONO;9Z ivN)>UNgރ"k#,;ߧ @Fٻ)2-ߧM@9s9=eV%ZW{mC-2.}83}q6:Dqř|2+Ӧ6m} |@ywZwvWN/2.!^e\@BoCL/$9ܫ|E/8;s4/W9|9=mps/]fENG;49}!^cV>`]9S(а?ߧK|ߑ{-kFӦ} |vhٴCӃ6m}' |<939^|ZO>e\@ ۡytiC/}ڴkh&#g]E<}Ц SfE;4,ЦMWO6>cNO;Dg0f^rzo;NAUijwZw0Ki~m@@kGrzڡ!|kW>>lvVNG9=!\ڴڡ{mmCeV:wj~>>VfENO;4_N\}Ǟ |=w=Hri;ߧ CJ;4m6ͩ|r靻iw#:Di;LZszgnszʬ` >mڴiCܜ;CֈEH}89=eVC:i6m |=JG3vh6m}}ڴavh=e\zqwKeVm#^m@0XCצM}DHN_9=`|{6m |mueVmV;L.;{mg`|2.}yAp̊vh_<`'("#, zrz݉ rz"gW6 ,"@}ǞɄNhCp(ߧK|ߑg4xw"}ʸ)B0̊^vhrzi#|m9^| 6mq!|hMcNoyH%RwO‡zLR}szn szʬmzi#|i ˸\m1gmT2.}8#|[)9=ko&ׯM|+MCΣȦKrݫ|+bVNO;4/ʸ,eONGN/*{h(!۵i#|ڡ‡ޑPdO~>NA\fENG;49=Z^cA֔;uaj}ʸq·k`>e\i#|ڡMNi;"oޙ {Np|6m}ʸ>ӷki_zi3KF[am[F,f5k  fo&_/ٻiOT -"ߧSV0}+Ӗq9#|doD@6GȞvh }EIˬ:}HγnWn }hγ>qw`/} 4>u\ڡ@%3l'o}qUnEw7O7ߧN ܉%hVx#·ٻNTr2Ѧ"'2+|6m5{1齣lX'#§ޞvh۴mkjwKw;*kix+Ood rz}e\6U/>4."hˆ۴#|ߦjh43U9=X }gt/2+rz)}o#w[mN+ݔ6P>3gy60OK=!Qh=—𝕘Ջ B}Q—TbeVk"ʀ(}7 _>w/*=ZK,AP wUo't.l;'|jqHi],{/X ,պO=t@V)LӜOU&(8s9 z~'V'tDt|·N" C hd,|7r{;!|9L_f(؈ ӷrhI pd(|gOl5ٳ>#|VЁ(?Ff/r iȣ>· >.zVp>WEq<`dk>{>G= #|Oe #|\A5GC.n+K{ 75"N_g|G>5h&f+Bb%u kǯb i]G'ݼ7 [$v1WK_"0+-Laup>2#|y YS~e)|lGm @ 7BG6-|QO @{Vq>%Y(4 #|GG |@#|>G>#|@#|>G#|G>Ghʖ~C!Q\MG+67x,%{ ͖~_Gn>?7Fily5md4$|M(|A3 #|@s@>#|G>G |>#|G |@#|>G>#|@#|>G#|G>G |>#|G>G |G>#|@#|>G>#|*{Ń?y /~o%}ktl>81u8?G_͡p#h@?{1h3(Ycl^AK߼7d1cs"΍toU #|SnkyumTmSoG#|o#?c% CG(y!Z{8*]#|dU"r&۵5Sy=F$yxqO(qڗ>G6[]kiFJ>¾Q.[Fo #|d>GFRRď>G6[\J)nevu-9 <#|l>· Ct [\c%/bS]Gnsj>G#|L[bBiӷΖ&>AQWBo+z>G#|`Xe!!%-žA #|dY 'oy4hז[7oO>K#e}0BK}DҞ-#|l>7ʘH[ޣ>A[ɴ!}>A~92#}>A#}dp#| GHk%(}>A#}2{K#|l>§ #{oKl!| GHŠh6WQeub.Y>G6# +ߦ.c>A Iݣ_!w xI_f1Fqj:vq] #|l>W"A ޽}b2㳭Q1Y=}F{meXA#u&kb1FG ݚDh[8k^"G#e6lcG4eJ>{D]vG#|o·)u[B/=qLtS>A_6Sk9^1=8(gز8./q͵j>G6[j Zpm4M=B4ՊNbcq #|>·[jFK]j{*[jv1R"<G |K,UltϽrʨα#|dUOIGS~%Fr;KIԣ|>AFr1o8WW>AߪFr!%:KߔGG |o5ѮE6q#Ȓ 97>G6kE!k^ٕ0y-7Wj.5@#|.|s.XTuH8ShG#>~*k邾K^ơ\E`ka##|l>·4`iSMmS1b4甤8ψXSℏ„/D+~L]P)|sM9ҵP·Ҧ%m/OcU!5\S[:sMq_"|>GkQCPtx.LQ>G[$5UV 8.qC#|M E+:K8?M>vyG#|os<s #|IoR=[ ^risL]>G}Te198Lp>GX[95պYG#|cK|\Ck#|s%L+8.jG#|oVQXzVo,(~aNG#|o҄oXq\kCN#|>G2X;>G>'|lm>G>W!|>G#|>G#|}z #|#| E>g#|ot؟>G#|)B*E6G#|~ O]t |y0>ᬗnۡswћ?>GOX5"|e _<, ߴnnB1ݚP>Gc—^bژM=Ji$>G6͟[@q":6v֕>G68.\jz[ #|dE"|mq!0J)M>A5~oN~jUEL/9H>G#||vJ|ۖʳ|ܧ>A"ؖX[ur1qj9ɧȸ>GƦo-Qst}O2>q (_|9z#|mZt-?g}s!#s-17E~>G6/|KujZJ%5eWvoL$#|mZPӌk,.R α*ϱcԱ)!#|ZxoK1+7tTXs3X!5u9>·j#۶#i}sNcŔRŘsZ 8g6SO>GߪoRl4d\SY)Sc,9{]{KL|͹Ç^>—Qnɾ9i+,%SCU;eoNI">Wq]r j:iCqsr& S/kquyǜuH>G9nK`+[5taʜoQEs[8>—P%Vczѡ$ k]0~s%q#|,oQZ7R-BPVeϱ:,uCX׼z77#|e!|sfj51̝nK^rorK}ut>##|e!|%{h̩14#K}Xj*9k(xmsGB,~:-{SLSYohߜZjhbK֦}K%>—-{ 1u0-K CKM}Ml_s_e7}9e>G%<Ƣs_koǜ )XHR0gTg)xxG/>G_q7g?ЦoL}C:K^UJ.8Ń=}Q5Iԫn8ɸusoHot4 IDAT>—-Bi$"Y&&: >gرUR eq DZz,KH}}>G%GrR)eR #|/+[(ڷ9*kʁ-Qhu5diGN.mj Jٖ,0Ôh= #|8[UܥAZڶTq(^O#|Y Qyu+>:[r+OK#| _D2X]tb-"}e#|e-|Vg*#{<#|*eK=+rI_턏>WmZGҔ;Y^Vli>G_·Ց5!Ss韼c>G-EC!{S׷>G_1·e*f1XCSmLǔ>GGrJ9ZoA~Sŋ>GH1ո}GazٮѾgv->G_WR(i.yQhϿ}^quB/\>G4kGJ@0Ӝ>G\GJ' %_-^Ӣį>G6#|E53g#@įI#|(I,,zM/}sxRI#|Eg\je!klBwkE+$/%'| 9MZD(~sr#K,a7 ;FqN] $~^F`ǽ>Xo GZLihd<`$%ICؿcTT)gz,ǒ⼈׍yˣ>Co1q:4zG>#|@#|>G>@>G |>#|G>G |>#|>#|@#|>G>#|@>#|G>G |>#|G |G>#|}G_?wӵ~@3{O9?}[{ͯ { fa js_;t k#|n}*]l\%-q >8Qwt?%|>cG |>#|G>#|>G>#|@#|>G>@'||G%ce'|_t@_tВ= kWnhÅ>—}.bZS>~m1Y?}P%s2 ً-L Qq?soO`}wZ", |=QD҅}\;3k kgZ?z"!|yHdV1ŝA~Lg{Ō[ƘBTZF-*F꣣cNɾ |@g}6{/1ea25d+ M}::?1vc˴wűG B >—!]XFv MX—.yޖ"k}~>gZSi*7c XW㦩1Xq s>=Q"O5ˤ)bU)FFLWvI"|?KG>]7k:T#|r[b/`#I^].bI1_};JH}/,{#Q(x\4w%y U/05-> JGj9!yx.e}>ILy6%vק}$;>o6}mzO{!F[##| _q؍1v_AxX$ST ePĿIgS)Hd/^g̚wM#uir8ٮQ4*7ͮ2ҔELbXi?X(:M_/"M6GKEIѬuH )2ZCD6~N?=)ZcrX4Mѻ׏jUO#ur|eFچJT%F_K_/;1ʇ3XERmezOu+|!it.cN64+״O$c1w|FCBXboKDrxf?OnpC&.mi*I4| HRk$д]rw]%X^+hdkiCean%0Bn OQ9>B҄Kh5sY; QpM`C!r."WmF|M*ЦӔ*|]PW1w_msri?k}$i-$~^u$akjt1pi*>7U]١ѣP4qϟjQ`~n[Z& hMkc"~^aL{d/I-}繝Tq!!lcFܞ\R^Utd_*^ů-Z.,ד"@D&=cչ[O8 {-o>@ne[|,DE _ |`wn>|Ͻd `UW2_[~>T2ʗJDr7<+ `kY:"+akk;1gqF462wsw)}KOU9D֟O?AZ"wO/߼Q?xן݇p{%|GOѾV> -b ->싮.(nQsƱ#CyFAKUEG_vSyT+]D0d 'QZ.,|[ b?E%>;KK ,ص4x}BKή5rY$ ǔwl|_LQv/_&1u,|KtgRmffRn~?Hbu3Y1%F)uӈ`Ӷ7T<59%,۷Μ^Tf]yZVmur;ШWW9\RB;շr U#"lf}Ԝ76ӭ)ߘ/Mڗi:w,#|5WXM=r ߵ<'9qHf*|muGb_K-W`Co{6+|%jG\}FRً6AL{VdF9uѳN3ǟ X% Rpݵ"kt`C*|1I }M'iZ?^7^9>e ᫾~9(MeWs:Nmx컖.M_v|aK6X)^U-U0JGᕤ3[>fI>2n|itpiߺ$6$niĿ~oؚ2>WUb6E=U2Fҿ]%&},&mtҾ}{:kN2+A,Y%.~7eJ7'=d)&&Y%|!4%99mBo4w>I?>I @~^k7`p*c%M9U*|險I~޾E|jdvmE"|/I߽^On}/h$;I _CS[}v !ϾKzӹmW6(QCtLiYM}ױj:w5XW۷}c-*i6:2mFѦM]!4ԔK?0>S!—LS֭`&nŦJC Iġ}%?4E|)o%yv;$|u O;׌}a9=GH6mZmHՅK]+| ߐ]d>*?ШKUeid0}Cԧҭ,-"|C>˔·K>[[ڵ_eڮN̡}{Mk}4kZ Zj"|C>/M}A2r9e5.V|ʸdmFVօKڦ.׵ӺI|[U]Zѷ62V]ogYuɅ-V疈NJU9.ohG.mik ,=|e4ESYiZ`kW]&C+?wI֮Y"|mVVk?N%|]K rz178 KN=\%{H瞧$|ito}#2nŶiM|L]j6eUۭU OZ,MyY"|i;gRajK>9nE;8#|SHK[_[Zƥe! SmC(h%IUke""\FkL5]X-Fv﫴OǯZu<K&Nk _v̡Co9Q6BS ߾k)We:ְd;4Ϟ+ 3{LKY}ޮ]W_FRxX -RJ]X1۴Q4S34>I2Ut7>KuJwgilmeпϩ#|S/ڨ_K}X}/%f#3b&!|K5{+M[QKF%nNڴZo+ߢ{Noɗ8[S̅k/|m%m9陾ȅMv5p YSS)c}Z*TNFڡ]!GrqK+rSonӷ.w=w_ -tX6)Ǣ'-3 9k9c@Jc>7 REinssyL̝Z9=‡ }ʸTڴ#gJ;49=‡}ʸTڴM;4RDy>cC#|ЦM6eL]y>KLh޵ޱg+úXj 2+rzWszo ?m*_{YӻSf!2.}ڴ>|{vhŖq$n}vhov36m}6Ӌ=}ϐ#|Цm{>mڀrsz^^39=‡m>vhmڡj )ڴY;񬃝zO|6m@~9=eVp*‡}S7e\CMN}ʸTڴڡi‡}ʸTڴsC6mڴEދo]o&‡}ڴU})"w-w‡)Hj4/0GNJNO;4>*~}W}eVL߂a6m}ڴYӻSf)"W)t}k‡5q$^}@vhrzWo@M[n{9_=GN5>yNkwCCa37CN[iv̊?E6l1ʕމgJe\!HPzNO+aKS7e\vhC>e\*mPrzrz | ~ڴiӆ"x[rzvh |uӦ'@rzۡ}ڴU}0%-2+ |@;ﻚSk":]i l&ߧMVTfENjN-0n6|2.XδC+"W)スڡq.h6;TL L^iØ9_i.xHaHNO;keV@<赻}3}{̊|2.6m}8SfJNĽGNqvhڡ%N=ȞqC]gڴiӆ"ӻ;vc> ^{"PiV "6SfXOJ/B$^t`qn_)l|6mrzWszڡ 6m}_;49+Rf |i^JO\N |@|߹Si[W;49+eV3{ӦmٜǯMs*>`|cB:iv̊@I}ʸTڴM3}{̊@Y}ʸTڴi@RDyDЮC|6mڴ ӻ;r6;ﻚ39k9ckc>RZۜ[6m|_,B yˬ])> 2.}ڴ=}՜2+*"wIH}_-@M 6@͔qѦ+M[L]?zc39=[Kg ~O}y 7{ۘ;q37zIDAT|2.9jh2q*>}5Xihrc9=Se_Lι#/VGДvh0EO=Dɓ [/7׊<0ڵCs8M! qۅ}4@LӦ k&`Z;B9AW0WN-@,;+߇)szʬʸA;4H> LO6tEN |2LN |4Y}DGN1' ([N6˩@l+wJ6MN |6Sƥޱs |M[М&Ӧvhrz>m)$~G}n:g>C|zszo>cNiH8@%~ڴ?}+X,gwZ>3>Qʬ |VSƥ_N9INZs*9wJ+O9cD;xI;4` 6mY@l1wo#9=eV>/rМMw|'ڡ |P=zLЪRRw\_Yu w|ٽ|.œ |W~twT-ql>>>>>>>@@@@@@@@ | | | |C@ M@IENDB`hugo-0.131.0/docs/static/img/hugo-logo.png000066400000000000000000000234231465312036400202270ustar00rootroot00000000000000PNG  IHDR5^T pHYs  ~ IDATx]g'((*J%(Am^J@X龜W{Kd235ބR#1L|DSC6d78q1ͧ~+tW=y83]U~~s6]>r8-2[Ձ8 ̅r8Uv*Y`Ʃ WfF޴Vh Ve͞*7 03z#.403]V h Bs8u=˕rW~˧:0Sgff7qU1GmMȾ}&GeL-wf9Te8GD(,pya /gZ0X|)X63FoFԛ ȾdjMjZƷiHf֝%U ;{3ٗoS i.0#;m 3ߒ%Cu$ԉތͷQ3|:K,jI% 3J%mT+ ̬Ef,ʀ Nb03Ϸxд"y36F),ȷIfjz3ّoSд f,`Q7cmMyD=6iM+oۨ f`P"͎|0SǨf_#Qaf=o&4mFLhPa_xU GJ 3|l:HvPaf-Ao2hGz ɷqj98h{3F0 3x3p~!L-P`q;x׵#1{^N9>ܴۘIf9]t~{y?{b6a;4\8iʿެv^w|Vvis.{[N^={o7]6a6~?t {_˞擟9psDkg;ݛ]rӉ5_o9>@nr! f;'{e7-7fZ4 @gSٟ~Sw\=s󿸔=֫37 e ppӗoԙ 380͛ON8dF Ԙ 3oABY?p L͠2:х@B " `NSu0S (tWvc_2l[S]6saF]mpFe33yŻ0f fK6@e7fZhQ}|6@+L03O?1$o+&ZPྷ>ff 82+@C]m+@s8>W._5j81hyl'& nm&ӛ'lNؾ|[M9 wQgƚx__~۷Y2 .cz3Yʙ&*ADfF}y;4M9dߦʾM X0o[ؙ& ѷT 4#]Lh_۬ X03\({@Cf3 gیVͷɽSz36Uj-Lh#پMW.3s|Tr 3oz3yYq1WJ"`f6U|*M5 ^K 03ے۴*3 7Hhf#6 L,3+Ojz3m1fBr2%쬄ocXF#6 L8̼ nFmt ƫSلUfXތշ!oӬ*̬+)̼M0S7ǒW6۬hZfRh5-My[M6*ʛ6p3o^mOJ`f6q31%U o;M'b6 uƧ1F]&m} ՛AգL03Ϸ!^ڷfRo5-fʅ of@fvIқ nI?m:I6LuX;7&XF#6af`(Eo&4!5Gۥmm7SԈv p3HʷfzVu›1\6`fڀ ތeٷ[7{3 $gx3uTFc6^+ h۳Kͤra)"6aOм)6F) uUJʭ\`6sތiu0WHK*j2{3Z*i*mVbB^mѮ7cmܒE.uD<߆ܒjDFX|8DDiEL#1raX|L"+7cm#|! z3V߆WihvzUy %Ս46Hٷ!\6ʫ RM0&)6M f{>}7dz~C|l'ӷ!M5Fo;?=s߿f>Go^zD2_<}c?f{B&6ƻov/ܖ{|s8xBO<iB4mjUfLr3 Ą/:A?f^|-t߆4Nw!8793~&n@'0c-Yԛ9/? ~_Ѡm+Z@tBs;Ms % 2=bƎ'?38ҥ6##ϑf2ʞ ξM/67#Xیƽ.ԛ6țq[h~&!h]_E*8$Gߦ45 b6@UϊLH-o`CMߣ@PmBhE6φQAV.\F7n .jbTeR6# i{x3=7߹gyq|Ȟv2.e,6%lFZE`TSh٨P c;-l9@MzXƚjBv*H))9TiFVq0ݔ`f6X-)EMtArw8Mx hAM4f=(c7(`r +aifWP )C_¡gAͨHDjE&:ج:РRiрL(ش P3HBzuBqUqԽfx]'Y^ 6:6kP3 vhw6 jKc1@MrL ẃrF; Lk[O#[F;qc1pTƌMjǸC`AݸF?G\iAFl/ӃRĸƴb!7N3e`AU&D Lf;t cƞ&, i/ecYyy *x 9:*ˣlgckI@ '0x0c偠&ۇ# o4i ZC kAU6 ,>5ѫ5qPoNjX 4, UM:`6`)ӥ 5]NYP^IjȡI lݚ(P4tlpp7YPcˀI(P$1x>,԰V `9F_wy ǔ lG@ cS n 7Ka^WP#j5@ui%gՠrУmU 5AFPcJ+xY RvbOy5F)Kj5`ZqhAMZPc\cNK j5A&"`9s/ \Vj,{R^dAFP#5QnI \Vj,"2¾-j5XZ:P$fŢ*-e5AFPc$ij@EN=e|5AFP j,!hY93>Z:AFP#5FqNiHUj,Oepoj5AMPcYb jR AM%a+,;-j5@A"4p FP*Pcj5AMPkFPBZj5AFP#j5AFP#x&AFP#TjOFP#(M,JP#j5h[#݂㥟c$KP#TjxF-e|ϲRPj^嗴k6XA&-hՕ֚I j5AM Z~ԡG5Oh^Ij㇢U5AFPcC ~c\'Ij,^ -Uxm;AFP#DVRjRKJPcՎUip j5A&|-U15moàڱjFP#j PcѾ2XG׫5 VLԝIt'5AFPjp%;xw?ڪ58-Q)(<LM j5A&2Դj35]5 =X i5AMDaÂ8ƻc8GW[`KcJ j5Bſ j"AG ^Njm(&,?{X&1Y*RA&"ԼDT᫪PJ59( /Xo` U$C6kr٠FP#Q[% 5HKU<:k$]2ؠ-fu]WA&"\}tφ U0k{eL}z:Ujmh4VgHP#,SE[PSxUkQEhfUjM /Vi5AM@^uwPٗ&]t=fcc*h<ީ*xUk` h<&J58<5^%bB/Дjq<ܔ-'F MjP̑'itqoL9YqcFPc}`rPsN41&RFW@@ 6X#)'V&Uyܺ;nGac{Lw~\P j.A 7ha&#N9vɁIB 2K붪xA*@^4HoIj^mվX 7Oz]( ZW^P ԜtWrP|'jX\çٹd?$3i  fXh@͹^xqfՠS p]^\ϝ\P|_$5O~+M4ٹpۯo6@$jۗ܍:7hMBȁz2H9R󛿷/IA>Dr.8rӜNcMQA yC5 Acܟ,\ۂv{@&"ԠͱS%v~Ma]\9/_qb U`UtiIjՂGPAѬ˲>*3ay ?OjCiEUex-B^XPSw\6 g@3yNPèjCjp*gfsfŗ#x3av@̸kmCL8au|jsُ:t-)zZMX20oS4tpNv1.蛝` `j+3iUM`tx|͢-)Aͫ[M7o Gsv^sxRa9 jX'~ED`<_ޯKۉԆc{hǶ75ũ 5ےb^Է9`p2,gfzgj;{|5ɲElnxKzSaUe_LK8T'16|W!Gbc,Bތcis(#E lȼLo(u"x3f يۜؗVfniP#a;m-䵘___q+09)М6a;qF#)'~vXo~ZKފ1[T$wۤ3nZhҩp6 @:x1oSKf^,puB`P*vSS{|t7ddD3IظÆR;dՀco)'@y:x!mRJTH45NphTݷ3Cmq7mhr!of173v̅noO!3w6mӉ Mゾ %MQIf#G~Mu(+(sћK-7̆k36QA#FN$0IDATۀ/u۲ω7 Y&xތmkX`,ْJŷahZMKM=oqPSo7nkIi4|.0sdvn73tY{u_VU÷z3Vڂ*8<"16>\Q}!ƈsY}s7m^LJz^!ത+9fx&x3RrٸӦX+ iD{"ܬyB\7[LsGb|XtBY|j"̌fl̀֒׷f#7|R&+qD;]QTߦL-)ܢfJjZҷ[H-[h'|0g\pf#mh#pRRmH fGUy-շIݛ!68V(5oQhH͛0]7Іoa'` ?g{3ǃ4oiW6]ȏ'd" Jfݒ7C\m0Ѯh÷ᎀ'Df+e÷0GSmtm6 ̨rތnlߦ(o 4j's잦yG-c!L]WQCVE6IDATxr@FfPYqDMhY WG8I%Ɔݝf,nO|~:ɯxمq6Ky*eqHSnq bgc*<^ich[p̲ɷE[n9p^f80]@kf<ؤk?& Pl0KNl@Y*۶X~1ԉbݥeҙI%4G}H4txBP&?5{J53_V,Z|sM} r{u,3*&@zQu/PI1*D/`K[ԉ^ ZQ^K{L +(f$Α(/cϞ/N@0KD|:SDe0TvYq N40">^{nvwp2SDS;eD|r:cOМڱ'͘S;%D|)!˫N#^vJajPgj/pNϩ">_vr xpK.SD{w6EaxH D%oݣ ۍ oýt<@  Hj'^ Jj'Gڙ!IQR;3D| Jj'GYfp-怗׽Ej'Gv/q¤v1R;3D| ">@N%3Cڙ#袤v2|\rӉڙ!⃠vrD|/u!h 붭뾛M!tjgT+T2EtS;S{Cne2ئ]ڱPDDS;+5?hLNݤiW">#ڙRe7OZ$S;]i 9D| D2ӕvg?PL$ ~G {q艹`wu 9D|p#ǩ);ŕvdH?u\vN-dw*|v-rx݋KyN췶CoY~">xNk 90ūv>L#8L:syK9YWv3_^";S3_">yNt=H)x3S;xD|/uU ">xyqکpgřWfڙJ|K~S;d2gD|4sڙ͙/KGD|-ߚ ^jm~">pi~">piLOXCX +ADro3g3ާ7y[W#߽">H5;">,)sGćŖv^aD|igjN#3_v"R;g">Hj]7#">y[} a0sD|(#sZwH\R>Cj ԽNćv>^wO; gO3">OjSwJR;ig}֑ +SEj'v%|E|ZHd%5D|Ojg&q+3$3_v5GjgęivfJ vAjg^lR;%"~\R;E2{|3ItII$'q+FjROZ߽f9v%|E|2mx~<D|*W::f">IP39OjiR;T|E|ΐAj">D|ڡw+_ (h2, dQrE ~Aw.4|;<('Ó?{ߒQw+R;R;\t/#äWjIw^3_&3_\a ߽">R;̺g{v|E|v|H0(H09_V't|E|vu|E| xaP{zGjY^fg3_]̈"Fji"U{Z߽7|Jp#">R;|Nwo}Gj3!"g$~|vȒ8m%O+CĈϦ{{">R;$Kv|J.r?#3v.HGdgwDF|nF|vX'q/#F3]^2P߽;">R;,8+~gWj ">R;JGjS%{v'(Ri@@ &P}/6MjՎ8a܃{Z,daj I{F|AR޵N%aj){F|Az?۽#>L bL| ej(;xć YwЈS;@v/S;@ʘvwF||[/v1vajH}5L2daj<滜x9BL]:c] BbjrhBٿ:jB`z_+y.d {f+v uz޵s-Lrq-L r#>ijMEYb]hG7qgzvPm~a1ߦQh.ޅ6z O`w:yߣ {;{#0Z .j&K?9vP$#?S;]̈7~b4uvo3'~Zx=DS{wEDqt#ܓ sN3 63aߊI0|tUO-w鮺;=g{vqGyC! /P#{0r^&u"ӽ˞@(BTѱ00zzt|s5]Ν\G'}=}Sg6r5vB}36>sws<&u$:m[:bX7'g"l3p􁺇_>$}niI @oS'ѡs4nCb*^ )3@~9}>~ON`t4Z8buxr4B=O#>rYlhr ؽɱX<)G6$K>n ŕcɑ)<#Gjx%0/^9Rl,;#=4iHgHt 9>4/^9ΤH5q9Ea0 Q 9JF~ u r?tv SrW2n0v '2} 5}rct :bWR]r{}X0ȝ#[W{!.`rsv{wt@ Q뿡tl+=vc v۷}@ڇrڇNڇNڇNڇNڇNڇNڇNڇNڇNڇNڇNn$ Da^iP RTy>(&D BF\bGcL4Ag:>:>:>:>:>:>:>:>:YT4KCO9$'t=t=iø): UCOs *hVd65j[˴+ٴάeKb'slۦVclu+pvgQN ̟[vhs!ݹ9pܛcO|:,G۔stdL#G5sَ7v0"Urۑ7ee7q|Y{)ѓxI\#ynDє?>@h}@;tWve%  SQt2;@6FDLk&JwQ gqch[_}n<&j4L)'9jfW%jqס}nR_PxRVs%_D:nMv+/^z%jq,Q3ϡ}n5*H+Cou 0cJD>oyLYGS”yAsvœ]A'_qܾOsIFy)[0aMb܄i ~ysn`^};w|Cu`s6eAjrXbskM LIv kcn۷E 9:ϰ!}ٔ> ҇]Rn۷=]Wԍ}nߚOTpas߆4}`qܾ;OF>oASK4}!},ï Z}np lqܾ3V;}G--WR%l >^L}nX{(;ugMqݘ =A|m,Ţ;̨sƝL7c]>wPH*ժo7|P`qܾ*Gs}Pvfq1Yjs&ڏN/ ATfx mP[fsP?ي#TᒈM%^Jg}Tr~PCHbS] ye?#A"nۯMYWez.)I}n_$ip?P>x}n y,=#!g< q3nۯl)呪H$kC>}n9Td1H Rv+.r!s߃2$:]x&2ܔ;>_SQ WCR9@sۗ/dOF8O$|Oki#Q($ {$`\pa]nۯ5VP0;jamnۯ[+b#9db >}7dɨ7^B)u!js_:IBE¼ 1c~?}n_w j AO@P5e_D[E>Ĵg|7GqS9AL_(SrڐĴIM !es: dT4qtޝ DaH',A"\\GB-Kӷ*mT|^f ?~ g?aғ5ת*v)gQ籛 Z"%~qw8U"ۖPd)embQRD& cX|O >/g?=OJ;,>>/j e/zOb@XJނBNJ5^j۞_}_DER^=4DJvgo/% ЫH٦{dl>_Cs+ޔAmez])zWl_j9&8p /I?^[B2@\8aVl?m9j;-ʼnzl߆AUBRq jؾ Oway4$7P{7P{b6l?um 8Rքymd1g5ؾ OׅZXKK~:پOAk%A7aZ??Xq {oS-<#ewyUh »yK2Jؾ Obe|M}֍So{xu;zhپ Ow[ٲ4V훰yfJ,7ؾOCC ٮX֜[y+(]KFïI䓛@4Ch]} 6Sڻ О85 ۷a]C)[Jĩ(-ؾ ?ZQ`נ46Pپ ? nm5dlsۗ u9*G>% J qk*wOQooũoN}tq.Kqj ko[@iq!@Cmy/Px:szЪ}^ ZUϺ:zzbyr=КEKЊ_ oX&΅tly8T9gy߇V2}y}q'Ak~Ak4L߼3ژ<ۗZ=o޽ aGOR 4PJτI*!@-~ڦIvkA@U;Nܙ=+Gy.To߷oU՜mbVU4!U}߾jl+AʞQ$oFodԩlmBegGۏLW2(*}_PYh'ў(GQUo+@e;7ۿݟl?uW*~Z}?ۿki3llz ehR]ݷ+ÆTrgٜBHu;kR̯f@ʾxbO{bﴰY o[yrB>tv'ok߾=,@Uc݊DeQhH|j R;{8};u|η+&,/L) pu+yxBͧהEƔ8$wZ:xcKob%ķ~#`nj̝[8#D(%w 5a셪Z|@1F+05T')% @H)qo'r. #)_zGl i>T5縚6 {$M\[|O(W{*G !eq-=GMiR~%گQGʷ Kk}> PΔvj_ga/[݁s#GH) ~5sqDϸǀ.?(W}t6/2!.@iSj?~UNS=ޑ_7"P0}hƾʴK ۉbO9lZ-)SbW)|i@ujֿ@w o)̡b@ֵ)5}i?P]O/3 WBu6+R~u+&Г|@%Ԑa&PegشSn&SQo^a c5;ٙr,ig԰oRbiBՔZs.ԭ%{aOY÷_y!ʮ5zayKh>W06e ~OR|!R(rTHM%K#dF!r~UouhAdHH];۽Sʵ?аUu n @=k!Zг8UozcF 5A>FFM>=c)s~ۿ~Kf^NR+hb^@"@4o[ʽW~C9r*6M#d&95j[÷_:&1j\P06>0On_4p55yodr4CWC-^+zFܩZ-@#YC\|cYXk-7V-Lil>+{'?]Q0.~vZ]iM;sS0ެ{aVlwWdK3r~SZCGҞl{ yFcCבVp8F*_1 fг]&ot|Un?5ĉ.W}lXWhU5|oO,[3ԏ͏sKۯ|ҿc#E_0Lۯ|h\}=1mRje053lxv5}M Y:L[>o6 ci0)gزq+̲r76OaO߄ |>z,Dz +: C-oC!ʾ& a'/AAYmBDM2`20yg*sE&$C_ $e$PW}W]e:kK~¦K$$H~ʞ8~Ri6qH(# /{PW|'5' ŏ0|e>H`<*iD"cɊ jcx{rH"}HLگt^CzFG$ OTn>r`Kz >{o~g?#c` }ܤ C_1M襯a u -j#+|qz]/%Qנ}1Y6h+a~=¤9)b+H!oĚ~=:6,qWJ>B%ۈj.#2'@X%t6b{:^Qצ}5,ɨ1b/Ft+!ӛk>0mRqцuHVkRcoRת}mgN>kETv yېʓxjfSS)J!}dtͤRDR׮} ?\ i,w}Nx8JCJnkKuگa&ݧrf-|飂EgZAK׊Q{M7IJrB[!;#VrQjrfC%DG7,e/+*(4wZ(L_sԺ͝kdV'<OÓ><OÓ><OÓ><OÓ><OÓ><OÓ><OÓO'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'}xr܇'ثՄa0W4|, hkXMuw;V;rH<q^gkmY'N9eio8Rʥ}z0I>l!K/f,bR)I,ޟdJk Rr77|.HnUZ/FeV&SpTY̐ rGifg}Rg̴ch:~ hF8Kd&'F 9ZVi-z"o|昖M8uB'J|5!CFN8d$ 'ӇAm$֮mVw"+y@qBqBqBqBqBqBqBqBqB_Ӂ A.}xr܇'}xr܇'}xr܇'}xrb׎mb V؁HAWܑE<7nM>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>d>dZcmj ͫ-66[hsWK>6{hsVK{m޵N۟@ f}=^|w?K0G N$,I&@LӢ-HѻYq[='*wxُ|ͳo̭nu:Z>hn_S?V̭.+@?.`_Y8s]Obzk/(߳[Ma{3w]OUFWaxWpa-ma߭'{ziM yd*(ٷg05OU>Zzy?|0MÇM:exk<`1 [2[c_k4͌e/}__ߙ('MtҀjO&S#;_k)M0a55_@Ƹk_ֻ+05 iDfudآ/31;)h65"XAn|2*A~@!o_Chz6 eV)U U,6d9L'?/A܏}ӿC.o`6jzxǤMecVrJڠ9yPx՟}/*vg@ew tx>قig ٷg,4俀} b'qN=Q>k9q9$ψ3y/h{П)BC nzGFrٟRfL:t<>pgPk҇cH}OrB+SċrO<_rjɇk_: 6 Ն~ +$5MP szc/Gym_J<׏{̨gU)d1)"G8Y MO-"l[# Pp\A& ~h0 ]+2dAQs~% ߚbG"Ot}E=3 yz|'9akԶ4?$ \@ QrUՂ(EoľĿ1i "-o&ϕAfQ mpo~)*-=Yi\풀EmK.1/Y1;un6KNZ>#&}\~kf}^Q>P7ݹ_>edǺԍ͸U ee7w~e)OIgSfw?e"m$Wݹiz5bEHi2wMfAT%}/#5"*5]>ʾ}1|I@ig+j\~6@O{zqo)y6iddJ/d9F$#:q.2&^Lբ &of:JvF}1s78!"{tQWs_VuP}iMoc~@sR0p4=PE4"^>{ȒW2,cJ6} #5ek3W?тAŽGFӨiZmO+uD\߄28q+֤EN&c߯x#ɄʠmQs-Y|f5s/t[GfAv^C{TݟuA *-fьtޮlz%"ꟇPLԃg&: k֧3U>}oػަa(*Ghe@ @ qɳ%D$ZZѭ U\,]uI{wٔu-Mg74ɝ$^!\}4Z~ME0ߡ^gFM[#Wvd=Trh_`jgڃylSe6En>)~<YX:܎ĹJiws؏*e6"}GMsd=kG[#W& U%vNɴnsszLker@ooiV۬2Sv46tÂDP*@ko7ʍ_A&v&F,ziwC0{2FJf3d0<)kqYR2I|^Juܹ<3ze/B4J(C*3gA[VO3x[&@jsǾ-½}G,8=@:=ScV<CggcWLOYr%IR]UE&%wkRxӫb]emC],9 -v>m-f]js.|u`/E{T9rGA,)AF*.6Av!ޤ3Y<,"<Lΐgy "!S!Qv' \E&M(r "YPiLvC"L*崅4\߃C_)3*0ljBS*uAlv["OE/W[X#"qk}X"!Ľ|#O..#!=@N{`"8BlY?"!Vfc{ 7\qaœv.|tz>"!fׇ[>D~ q {n{>i~B8D^kN@'1AOaN~!SX^!z6esS+lsKAW{Q?nL4n̝WpW P\`7n|ƅ b=;{;?\.J.ul.%h Neb86RWؖKP_T}w[T09\۫*ӺW3\oj- SWB2mY%avZJ砨mq}J#m=|H.m]]ph+K>jzcq{/ù/_^4KqxWWdc^Gb1S6qs|fxTMԈmS RW66Kuk6WҳhH_|5qa?<jV Lo^ຊ;#+^{QkJL"+HsPEIJ>.?3ptק`%>#p^oH_ػ( ÿ:ihYVPZ"<$+ :h+ط],sO]㳋t )1gC&t@) ~e?آcJ||YNM/QxOG%SS/t 1^ 3m}30%">ϋi nu-"C5"|^"v^mWGw/!*鴿3EͧɌ^H=mN)1ECwɅG̗^|.JjǬ3E)VErdw/ Nə)1Ňv쩟z߽&ԧ!]g?{9&nM/ v&׾1ED}^^L$p0仗 Nէ/B}lDY.]x 8H9#LoAީO]">(^">(Q-4kn3_{w'D|PS;5D|P7O]">F;uک ^/ ">M(zR;uD||/SGibMA O]穝*">C~{OA|Gjg_D|57NU^">S ">Tov*">ȑS7NgMj">HOeO]">pH><Ԏ_D|^oN &,yMć?R;y 1nT EQ(i( l ֒/RD?Ic]Xz}!Owo^KćO] vD||9O 7 R;0{ӧ%v-K휈pU֧Ι}.MpWء7s"IS;G">!R;gA߽">]JMćOp+^R;Wp+s7Y^D|~-RR;!b+0vAj3_߽W x} Ⳍ">x}"Fקn3">+xv:W+ӓO6D|V*J&ЗO'P">q?|!e;OO]aD|2ԧv|#SOݑʿ{E|J%3Xקd">SJ'3RoqR;)D|FJYjeR;qD|(Hħ/div+|뻷Wj'OKR;K'XWjg fOR;k4R>EħO]mD|:(O|H?{wGEQtR+eH-H_e j)UCC-W~+3+R;3R">;$-uviЗAħURWjvR;D g+Co9">K]D|YOgCRWjfIK]D|Z%J S䀗t+O^D|%J *i+Oc-?AħQ.">mxviu+OR;쐔v6IK]iu+  R;"sF.o+WjD|6=-u$%h+;D|6H퀈ЩK] Z)_Jpϳ-D|$-u|ЧuRWjD|xvI'# 3妌8#>R;tbORz1Qħ/Cw|ϭ{xv^K]z)?ڡ[^zځ#>R;0cħ/ ">R;>sԕa,SRWjєG|?RHjAG|_ۿ[JY2Sc;_jG|e;֥ؕc+?ycڡXHPNxg,u(<ⓞEG|rڡObx-<ԍ.G|ڡO6R;7 : !C3vh(<Oj#>,ui+<Fj#>1v >@jRD|LjD|Hj2E|LjrE|6ԅU">&Y#>$#>"M׽R;0?ځE|v` S;0##>R;1#-#>xcGj:F|vc/4<ځځ.c ZE|v`YځuG|z#>R;AوlT5c [HE|v`g">R;:^[ϩ.#>R;eT5#E+s>ڻ0T"*ltm *)s8aGE|v`D|v`^E|v OcR;LjDځ">R;M]S[tЗځl= A7?|g@Š1pgBwW;avWx_7aRҤ(mVu+Ou IENDB`hugo-0.131.0/docs/static/img/hugoSM.png000066400000000000000000000035151465312036400175310ustar00rootroot00000000000000PNG  IHDRkXT`PLTEe5T{:=$xٝN/܈gݯ4.x[b}tRNS@fIDATx^YAeK3̇˜YqGdu!2],jߵ^A7P-Kw˵k_t)p ~GK/)z %SYf ?c v/]UYǾ::7i@oiݽ7:K}2^>Y~a5vo_ں7ZeMuݛɦ5d)s}o iL*H̞ F^?x PK"C|€>gݛB|JHM|?p?NCy?{0,&D&@Hi?6|W)^b|T\ra(Gh Kߒ]v< ;K3zʽ2P2zj0-ɎW3{3"zG2dee|}(أ_} ``ر'їIi^C+褡<x/C [یVf̽30<~_{?յU^NO{cM/?M #Felnf9@(˓b/GƁEyK %*K-/ʾ+$so{ Vqh% pW_{JwxZT~4 >,@S l@uY)l@r>% dYFIToн˫V@e޾ݗo)jIk2 |=$|m.]Y ٨ $@7MՖԃpd: |u< /ƙqy; 3noϣ)οݔXbWr֙@+ 8Wά$Φ3+n1,3zs%~)v^ 3@(韙X(w ?4 Iar=m?\M}Q[d~橬7ߛ{Y'SyFc^? {{{}揞QP{ =\Խ>}e{^? |Pܽ^|?+{(7Y'1xﱄIENDB`hugo-0.131.0/docs/static/npmjs/000077500000000000000000000000001465312036400161705ustar00rootroot00000000000000hugo-0.131.0/docs/static/npmjs/index.html000066400000000000000000000002021465312036400201570ustar00rootroot00000000000000 hugo-0.131.0/docs/static/shared/000077500000000000000000000000001465312036400163075ustar00rootroot00000000000000hugo-0.131.0/docs/static/shared/branding/000077500000000000000000000000001465312036400200735ustar00rootroot00000000000000hugo-0.131.0/docs/static/shared/branding/hugo-tall.png000066400000000000000000000233631465312036400225040ustar00rootroot00000000000000PNG  IHDRJ/QitEXtSoftwareAdobe ImageReadyqe<PLTEԚڦp$h1YƳM6=@,D<9LQ3~P߿?PIwȩ\%|I⹥ #䋾kĢBЏg) q_mE^е/͆2ԼB_ՙRO|˯΍/oνԇtRNS8Kg$}IDATxCTƗIV‹Ez) ׆JԵwkw]dI"'39 MCQ"J D(%@Qb JD(%DQ"JD(1%DQ"JDi2ܛwfdH;ňRb?JED)#A~Y(12`ED '#JHv$18("y' %88:"J<"#20v$Dc (IDDy$ &$cQ^&DH`1tx~Qx5Qy#%J*+ʑp~Ӊ%KC fKכ~Du]iG.#w QuH&)l |?XX"Iyi/%K HCQ:b5b2yM=H6A$ޢXiL{I.1 ,%JXw~F XU2]$QB4H77).ꫛdc^2&#I%]%Qv$2Ms")KκrĬHJŎ%jyQ&F9HjQjLe = ,%!(>&7Pl%؎.Qd>D]d,c$͊)˘N/Dž$tVgĺD(a)ʑA1 %W2ىHKۈ򌨕Ja#VZX(ْy>-I)CreLbSRM0Q6UX-cJO*ʦuW#L2dt&6ʦjj˘S?iJaJy:&JMdbGᣜ N&P6#b(CTosHUdS(-Dxt؎Fu.eӌ('DY&;QVRMes(lEYzD e(%DQ"JD(%DQ"JD(%DQR1%DQ"JD(%DQ"JD(%DQ"JD(%'Q"JD(%DQ"JD(%DQ"JD(%DQ"JD(% %^夭(ݻVx&@]o):o_e(KD98IQ{Grv"A8PyQ gl2מY ePbPJʨ֧VOQNL P>MOj eMS铘)yYe(i-C92: G,C9f.JhfPR'm@O[^DCY(21S9e-eu('KgmJ&dt( %,z>kY#V$E'"@9H!vd;=l,4y(4b0E2XΔr=#LWr4a5I>JR<ID$%y!Kfu= ؎n.ud"񔸀̿JD'L JB܌dr{tj@n')d@ׅ.ʬdv哀h!.J&ȟ KD$KڍrTI$%WU-QB4HJHf;DH$s/+M %s+M0%3J  )KڇrCc"2%Y.jمRK/7PI^2$DҤf ʭpDҠf J]b轤(t%-zi@Xd@$}z[KшxoYr/2%*F'RJQrIۿ̡㑢L/Y"}i[Q*KQ[""Q(3}66436\$f(Idڇ+x Џ7fu(3T&T'OnP扒 ec#m(DI/v,qt$ev?CGU(ãBx>JJMdJQ%IۄrT4Wr&C-7lB!xzG+eeපe((Du"BYʯʓ<FKQᖣ,e!DQ"JD(%DQ"JD(%DQ"JD(%DQ"JD(%DQ"JD(%DQ"JD(%DQ"JD(%DQ"JD(%B QBD Qr Q`k@%(u|iD_(_TCQLJ|_0HRR?!;<' +8wAm 03R5^M 8?N9@e!͠+SfYnP gBI%ο!#a4<>G6](eFo]O\PD90HfQp)/%7]dƼ}ߖfms~kK?ޔvy>UKUJڸuFbqk-'< W4MoR|_ JKl`ֿbKJin5YKIV&Iu3)yUiBIN)"DI,gO"ICʯTU:)j[DH7jJ\+m$}K26e(3})zؒN'bdT!2sv3ARLQOd~ {Xx(Kl,oMHD_Vd/٘l{)Dr' 9ImkQY| nm"90`03yj%9JW/_V~^\ 4q%I 3X*uH; ֠$dCd E! 7%IkL I Qyd~@ۅ2+#hTl鶡J& C}хۇ g9D$Y4Y-U[2+ #HVJRLP(bkQ%A"!ޡ$dKdDrT~,|J卜/g{Z!oڻĈQm=='843:$Sfʒ8i~jY2&7VZ(;2K ~dy< KWP8ʋu-K# QJeɗVHI&~gQ]3H7{IҢCyU K7XKWP8*yY Jj% n  ʜRvמ&<*=1+-t%'ZUzL~3dRF$HCudV %%%SHCl2>cpЎ%%SJ eNOo}uQv^oV+-7`"w<^~=Veqe8xוߢ<~[ J3"?rm Xi+-(K*oki J5okXi&QB[q%ne̥ !Xi-Hf g1[kUoC%KdB5::*D (!Vh\otxWD$+.1E" J& NOPh#YW%@ Ҡ5o+otՀI JbyY+rzdM K#qv'Л< =j$=VT-.?̡-˷Y^ Y=%ls,څD b%bJJ~!$?KM76e8eCېr򙶹 y5Q0V t bAc8,nOC魕$ycO:uMι 9miNM$֣oʂY]D['A,߸+"C7כaMtjMTJ^~Z%їR% e(Azgӈ,D(%DQ"㌲Qp㸉(uE()(C ʂclgQB ~Q>spq^;CQWe߯_~WSY ޯ|jsVy_,x2 /G ~ OAqoѾ+⻂?(ވ*)um)JN蒾#%>ݝQ~'nZ&n˱@ɺ%P+֭%rm$[  9Ud#Ρ| U ܹ윜t}21K{(HU? (su.-oO|s:[ ܻ69v]]Mϖ/]1X^MWΓ`>=8Y,098{] 1q!1FXʌԲe\_ .%^VjɎy̒Kҁ1o仝>(=󒾳#1j;W1Ue|p,$Vj,zҝQ됹v 8-.Z'= Rq:wlͱx KV i*ɞPPek dcNے-S7NCIW˃ )sCpܦz()#0y3 9qƺt( @nA^.g%KfK6pu N C$ֻ(óO,/=ㄸ2ϮF&l=QB\Ah$ >$!Ɖ$"c%$%=$\drA(I 0$ $U0ɌK&J&WE̻% ֈ<ʬdB #;%*(ID$vʬdB 7 BAL#$KRBBi|)nJRtKԍR憕f >+ l/A2uYi+m 䣅'W9@"/&.&XGPozPz`Jm]D0o0?dގwڛ]t IV,J[(A8E] NoD-)F%ӄ;"|+me,)cB ߔĉLa=#kQiɁũn/4EcbQ]2?Zr袆.q9[`Gw66d#6u\A3&E\S-$@azUP)nɁ\y]B|[FrVqح0E>ޖ1DryNqwc\ܖBRiKB7f  S :"W6?څߧ -UM㉯ȝ=Ev o]}vD:PI\M(Ȧ(6 t2.{!TeND(?: \V~zaQE9pQB|Q!JWPEP"JDiX cra#rXgP'g9 SF=_'zΝcI|q7s,)U =__ e\4WjxmOP{w*޼mh[ÿ  fr~/(o*d Sq-ךy(o w ʛ`>ǂ9bfoʣ3I}q`pJƅM{r_Ƨ{8LJ7aq/PJի;4nǹxG %93BbUP^M ݰb>BN\cc (8woYtt죜;\їwmrdkg|;Ɍq7P ~Ye^v=iɶsx1XR{ oFu5.i%k|-3lI_cZT:h3$7e( 8dcކ$8jg99> %e-T$+DFHz&f><2](WW qx74V"_ۅ6i}rY`Nq|βYRGdpXr"Ry ^F#\ %ul=esbq$5u(WhkM^绹2ݔL[B@`77ˮїFݔQH2 n &lDI+E<"kY(.9t]\ؐ(ɓ1溓@YݚoO++ aJ).$d3wgݔ kQY%͝U_ͽ~׭o1Eb|ɝ0ZRd(,ʌ$/m@I\~ arE2{vOQ6Uk2oP4D@I\N$ O &bDAHvl~kP"dք/9ٳ"e@ ۄTDrEdv$ dm!+3*rPf ÅD$MBپܤdAU[KJJf.Y|4aU%ۊ2+K&D$/N.^YkADrmF %kõE~+e9RJsM4JU %chW:Jv(͚ -%:2K%:UQ[sv ? jyf ǻUms%~GWJP/ .} ECXoIsVO(a1+/^p JP/Hf2kmٖ_-kiҘL@|a /dǚĚ^e N&'2Ŵ@kh%QecuG'XSj`x2>&tI'ΘĦg4<< ZXӣ9R7'HXHEnp=*!XO|`9{R_}ω6ga-e c5Eg(!.Wfr./iGo9<DB(<{nn3r!R0,5I- vH[u$cXsj]\TRfJ$2H-wV+D'lzZ?Ƚ9ZR/1lMQ9ŧ_sAt.$爵\B0gph0ipwǃ2KODwlxˎLk> kr?Ѵ}d(egN NKI@=+MSH'(xspK.qsA@FmWI(7&`RTby\.&kVaVbVh[{1`/2̫&`O1{]ւEzmq -H{2j[GD1'-7>kQ߶l hC>ǶM3k}< ,Ψ1G1Q*\ֶ;G%m+ KS HhKv$նiAi ٶ^)Ҽm=#yyLN GĶƶZ|Qxk1 hHɋՇŀ|!MnH 6,9mkNĨmbVP֣9|:N}<v-ĶՠuCֶ5{ZضApv"Q+[}XZjPZ}\ @!umUŷ$m[uNaTdV0ګݨ68%7<|i*]-mmp4jUJ6@ "7^ԐrHJmu)5rFC{¶ lQGA[BW_,޶ZZpž!5xڨ_K7FѶUB㗆JDmЍ$aV~(l5`Դ#ըݰ~8OZd"Qs$-G۞mg"gJ6EZYvP`R>54*?LV)[f[XJkB!T;kbIh /L1Te &;<lM޳k V kGB!&T]X Q PTUjo OlGmZkGV'2(7|@IW5^dD$?aX _lu8w>CC~k[bl!ִ6A_6U ` V 5P Y{+8T ҨQSc֒4jlZZjolZᰶssW55Xhk1(f&]PSb@ eV7-,XV˪ov_NbPXFЛ ?XT(% "wGKȾM% RmM7kO5~c*@|O-okZVzZb `bXcἱv tqRam՛4ؗ|::YDk7JV=b0Y+knc]?֘f-I֊DX+֘R`[DRFk6B],kĚOkPbX܀Xdm`X۰%jLh-{rkcehQUr=ߞ5޻#k{O$Y@۩Z^p{_ngMtVґg%YI w3AٱvmqdL-RޖbF~X{x\V={Zx/2Q=P{-ѽȅCn R X0Twk56\;^ko}+Ve|kܣ5V-ѷJԒk@dgOƽHlÍ^jyw"(Ě=k?bEަl U˅aa,%x곙WQ9QB{zͼ攌>|X`rpEpTe8 jz8 ?y9h*ho޹iF=]7^VƧc}i~GН2\W|G:u,>X >p}j?,}K$3@S-cBvuBwoۇh{w}w,xRm{2 x;!oex xغ=k ~C jt nKj˾Rz":)0n->Okߎ ov,n-PcYˮÎ :h DqX+^oY{jѠy)ozXAW"h8c=/V؎mPc"hͲfoGZD˪gV}m3WK6tu- lN[pȺ6տxA&A*xfYʚ#Q|!Z[w2K,g.x.֬v5le.7mo  l2qt ^e>N֘ lXP[ai(D tM@tg^^"cG,jLM[Da+^i=Xe-ְ kwGt%z+@PP3(l{mav ص4w8/QKAin=m>ր n G祆cXn}cpXI=Jۆ"i%Ǵe-`t^6ϰ<`ǖ?;; :!'i ji[}G- k9)WOC)*lܨ!iͬm 4<>3Rh_q3AZli&KX҄Ul<2@ӟ:KE/ґ}(W#|Қnր(6_7X i_|-!gmnC'WEƮVpX~O߭W s\55:HZ: mWJO(=!~Y+AҸ{%#5)dXC`65mvߕB m7H&ֶZ`ƚJ\59ԤXKoikx vaN0mǕ_O_o\opP"|!Ҹ"akۜV3eqW-HZ羖+p uaې9ڱmjںAe!lje6F-谖K0W)l2YA gp T(ضHܚZ xjR %H^K. A]ܨfc0jmaێ#uZBXFz2kiFlT5jJ( Q^QO@pyPv-mGuf mfvՠQdƶ=ugԂ nUǎV3.w sXKZ[&PmQh0j Hs ݩ@ŵ`W΁3j*6̨S_ j=.'EۦǨ1mYɶ! )EL o[aFmR MQcfkVXCj+j)kc 5jk鼱Nɶa6ZʷRbm[4jm,iІTU@ 6̨ul5HmڐH6Ն;45 F͗ˋ|2jV5.Ѩ1ώJ_i#۶^NRm|4j^Nl|0jV}ʧQcl۲oFSJQw!F>5iK4|d 6EVա|,%lm`r(s;'qm+_C~7CZl'F2{[o{?rI)Vs)ЇH,ϵ8A}+ʨ/{{{zCTcc㇩O5?(M"#bD5X#k$F"HD5X#k$bD"HD5F"k$bD"HX#5F"k$b;*nՀiIENDB`hugo-0.131.0/docs/static/shared/branding/made-with-hugo-long-dark.png000066400000000000000000000216341465312036400253020ustar00rootroot00000000000000PNG  IHDRy%EtEXtSoftwareAdobe ImageReadyqe<PLTE_ ;qٺqƦEdxۧm>5%vLUFeYL5ʔ]mZ!1 ,0x K<4L@C5" 9L3Q~wwwDDDfffO"""333UUU I\~h ھI|Џ*#)gq~l^еEĞ$?45+͆Լՙ z˯J=U|o_]ctRNS8Kg!&IDATxCIDžp !h#$n<|SEPFuͿLz3 00VWȐH H$›D"$&H7D"I$M"$&H7D"I$M"o&H7D"I$M2':-/T,5 *{sK=__ZCxlU Y?@[@ |hktSYU*Pm2MBEA^՗KwcS@Ϸ}ΕaӾTNx@K0WmaK 4si t&u3ב# ܼO3{!@/zotaU{7oh ؂=_~&w[|O.-x{mH*C𮼼\wV}XᶰRmYp9R=2wCJwA a~xayB2Mb b"@c)WaBjM›nɺrׂw44Wn΂7$,[7\kTŘn.Cw͂cL7g{ot{ag2rv›LHW{ldv72C5{{,߫7HUY}܅,0w._t`}HzW\SLڇګqOtΡ}A57tc"&DnZp?Ёm>r*ԁ:mDۆ6Pn ;@2} M7􎈴uE u\ H,}LnըHw\SmLwG@T 4ݽk#.^uɂLwk׸eýMⷊBn T #mֈD.ʂ٧ Q> ѧ ml4&ѥ3}Цu , \S u~ TTfqVQ»rt,í>M}zU uv)z'j^-t媱>Uhg5 d(ԁ* -P ܆,8}$БFZpMn,8ԁzzs"_~tV}w%+#:Z3H6 VQǦ;,8d;t Y_3k#-8vӍ @Enom^ Ӷ̈́2[#TQ|^ਭŚn΂էS-aޕaa"S nt#-Y߁wn}9ЧRGtýreĹ2ݸ>UVQhQ-a 2ݭc*G)tkwtQ?C3( .vi%z1Ӎw J)4ݜ2toy^* ;3ݸ>Upy0M LxW0ݎM7O }[t?_x\W4[WcCTKKϛoYp)߄`0ˎ[N|fnn0Co?j4n~{&`WBN.ϗk5;PכVSYmzck+X4<\Zn ӭ^$k}/oLPo^>E΋5wL9p*sTV@ r$63>6OVgM&yYKz& W]=ւwҮc-)m #>T#x,==oTy] =@Umim-ˋxӽ:rh-᭣d&ީf \^no-z Y-osS~ [[o>xG6q[m6UE1m|w/hm3Ӫ P4'ߵfG>w,+)o&xnsxeꕊnx+.349|0wwN>G\)ŧ=8_]s^Yvέy﹋yo{Q>mm]Yv2's-[zXL&*?gnYDj&a;\{YL}mۺ6t?]{_Dsz&FV)ޘ0FU4>Pb'6\z-Uԫs%dljnn!߭Xsxg&~r;'/t\^ro.|=-5'W?`7JxDzRײ/UxO+sjoxo!>l]ewKAw +·(\)٬zJe-Uӱx_(kf溅\]mawo^JgM9zכ~~03օT5*Vxhߧͧ4k^݋{ w~kzy&&| wPx:̉ ֿ/;e]'.ܨ[sO+>'[qlaŹi/Lv-Z)f]-z &aE[e>$jZ%J-]+le-,:%G쏚)Wy,g,"r-]a0޽={kPxwhM`,4fSypkS^k1tmei?%nL-=-M@ͳk o\j>Mrˆw!=Nr;{7mݦq6MNj,y4;O=޷偷=5x*=[<3݁IWHV{Lº4]xgdM+Cp c!\)QsxB}U:fq i yP[3$IzA]roj]Hx6j[st^rt.NJkܿ7Ӳ;qx'Χ /e?» ׼_b_MR?; ? ͯb7_M$IxgZ~U<:Z"Fx|j~3Iw-6-n=+ vtEXnjk%'يP\K ukC}q{#w5kNqn*m]OEglj)ɏ0@v΅IyV6by'#b'㑩iuoxo;Su``U\҉񂙦q[xpx 5-mvaMbϲHɂIM7^,lDsmφ%1 ttԥ- bM !?̄.8c IѣaIvIU띕$V]»iqq-]x۸u'٨J.Ŏm,?m3GŎ=Fq9xyn+ 8b7%m{DŽEG8K;! >{|^JbN RLv> R =-xZEo#U0DV;b;v8.9.-9-bO1 P`Ou/#$)9/[-,ςV͂h@MqI9Ț4KvM>.#ބwٖb;4ɿ'7H(7v\")IfS.ATj o-W%˜fdji6q8=#PEPxf OuV]k}7bZߴ~ ?roi*-E=!ӞI otR/Ύ_4?-C8y_Qxo"*e'O7Po Vp %mnFVtu%d-~rIFG)dF_3ȁSpx- a761;+i7EFA -d;ۦ"sU۸;_ W&13ф5n:hIl==) WPxUKgÇQxR] ޡVCm ;Y[Ce9 ny)52[v2si cܷxvﰟKpm,wo[f.,n7[<՚nma!XEIOWc#JһObp#|gy*jaf.,oɧst6vWKxeul72S:8 276w%\πo sExWZT8S=7Cܵ^q,xR|*.wTz8ω9 Zo:cwE~xt_k\=rl M|+uP5xcw7f·oS]T/tJ3] #%D[;lj&+,|'ֻTL^cg[3>7>8Υjv[dڰk_. ;!t&XnؖY\_>c _+W5n|/]vwNӅ7pZܛk^ۧҳh/t>(9\Db2}'{w(I_jri B{<_15eTB_Ob}-E|?UץGlU"}g¹wCzڻKO֎;$CxWB ݹ[l,C?݂AhӠ;rìDyxGΠblf,Mn(~,8R}ztۛ[$CxW88/v>L8?ϟDu˾b e!-1VaGQMw(Tۜ!+(IdLwoP7tp1C5 ~\(RUr_װ|*O$wNt(!sȠ }˨>W?k\w arla﫧5dԂ;b9Cx =_ /U^.yGyyæK N- dZ͙͘{p9z 蹀\qn/MYptsi_4c9ݎ DNܱf5 2tǦ[Ȃo0ݷu$d»-xutO52\aݯ_߄L[ݹ.kr,-SEn.C/΂iMq2̥8 t1 ,\tpn!{Yp"Y` X$S[pt/k¤, ӽbtY.^^;SΧ"d,go[>QSqbAOۂuqsiߧz Z Ѽ8]\$2i(k,8Hnsi״&L7]\UtʹFYpqdFէ a#sT;t:P9yȂ`Z:Pq-m@ũmw͂_)X%=486<w[ɯ)fks,xKA }U 9^K OSmts`̷;x:AZՁZ\t`ہJxWpXpݸ j0OUaSTRo$CީO +S6dts>/z27I][ mmȂt(ha42tUYESFYb;PȂ+тhYutsw ^lV *ЂtXp>V3YFmw}:OՌ&t-xcds5\^iRL*}?'W].\!ǀs|._d}si9]zxRY9L3Q~DDDfffP"""333wwwʪUUU%I\)Џ 䋾EIg#m^еwȩkĢ2_͆_Լՙ/Oԃ˯oν iDtRNS8Kg!IDATx_I!-r$! &" "窨$ITTOz&kgzz|{,H[b1,fX7bY,bofX7bY,boxX7bY,bo+[|r_k7KKlNk띜rK@__RuU@/3,*w}*%ƛԩa]dwZu˂7.V% Uƛwys؉JݰuW_.r"7T.Tojv'y|t>d-=t=-,Kl3֥}\B-x97bϞ<37JbjONը*PzhBxQ ^lUW[F-8]*P;Em 3f ԁsv:Us3'VDmom *`2>܃VaSLw9@֩. YZE}K;xb'O_a} 3 7* }>}ipX!P+H Ԟ.Se [Hp 7]i>ymuhRubv;X꥾ ]U.h˻UB-xdH T>B(ٻ2jɦ[FZE6H3v>kNk=gZuX'hi,?1uFje VX'f% ~`(Vn)C5*UnmTkU@;e"5ƻMw-VQ./ZEn$sbI*xtdi\U3ݵ4TkNƙ&e蚭X筊ta*x6YM?t6ɾhXpw{HK+'S>+kR6uw @nQ&т7dei:UwUyNby&J xNeki*}M7 pRj#fWh:U#.|S5; ^jJ:ې> aܮNuI8le J_ nuXۧ<:U TwTa6ahN.Ѽނxټ>CWLˋL7͂4efpNP.im,8c|u n(ߍĶOG|K&*.^0&Y߫F64-8IIM}?OO4-xj}sϗ=mi?0EMfGXn4o)5+Py䙎r w:ñLԦp1`C[y:C_6ZL?%u@hl]@CYxZI${U xGFB/ϫ+PM o&op#$㭨@}گVr\&;rƻkfoNԲ%fg/2tK[Ǣf-)T-4*P+ WTo e>+mXCo˩,m r݋wR% LE|P| :}kM3w(oˍ=8(Q nsx[w%~?#-UL@e3j3xw$T$2]ҦMK!A-|cuvt·9J~}ݦ 6ЦD4=b=GFFž~GޮtKnv[.I zP1[T\ ?ЁKas:52xk;3;YҮPbnA)WbϹ9qjWl +e)kUsz{ck҆B P nQa<{gd@~WmM-祊uQKe5~Wszw{_7 Imj )ޔ0nw4Xա{CLP-8[&_?Kυʵ 0զNMZr+Q<9O =77pAoCQG6ӷ.t|dxGϽZr+3͍4&x[)߭{ix-xx>om=|Z=͍Nx `k~HE/a¯[>p7Xȥ-}/fo<=a=W%'uM?h&_S ژq8;/.b|?2gR펙{,r yf YE?/2K;x_Ӧ;'9-h sD:)u7g*Af\eۗx%>Ļ|=HMn|Ŕ kGcoE/g(5l|{ξ_m>xJUk<ښY7fuxޖz'7\Kx$7%.>p C?zO5sxt%b`vۏIGAnssφ-b_MKxyfŵ]u4Gxٹ;S&l{ʩU*C 6-n=+VtXn ~$dq-a_wxN'o;$Ghq GkNxn:,]‡$3 `Ji$;)x:3).M#RǍ3Ǎ] 0;څ7d2"{*_3.MW=G8#OޖKxO1Ttf֥S@΀R̀_fZL1a11*r']p];ixq-Zԃ?%gtTƖ:.X~8.n3'煁|ܺ`EC%uw,DRgo7}C:Fm \Oׄ?,j̟c/q)3!oPvET2֣?lcu.q'7wTTo9; f/&sY lS??K=!Scs$ZOuQY?xvoj ίi].[C\^Qq aӳObğY<$#4ҷ$4bo|η+xOuqMiWŐ8r,J\ K_)$Ours ޖg^{e!ܲ&F\4-uܴ2-ʋ[qx~oܜ40ޞ}Ҏ*'kkg3>X%2 Gcq!;Z g=Zog`+vrvp\Hs\BqZ 1;YGA<'=xsrx%"@fFgxD&k긘u⚴+&2. x1ތw.EOhL~O/Q>aohS&OepQ=x{\]8p%?6ƠQXK؎О޸Z$3sq: Մ5Be-m W2'lhSe`1N)ҚtFvS8}ݐ+1ycx_7wktFiVseʣGZ$xnK-[J|x%W`B|dhNg3@֟Mvw&9$eOĆP~'֒w JG=$pXv򚃥i#xf6/4ٍc'l.1~û|;y7Ñ׎&ŰBPhSҸ۝?(<I[r.$Ç4bG1^tF8/ ԥLa1J(E[?JQg҃װ* >Ql3KPfRSVON =B~goti6̵bj e Myi=b_MU?wk j?3pRgo&^cn ̣^kVcO59JeT9x!CԶ[MtoL˧.l&WjpG:Dg:y{jR}wyzgd^!+(x$M'X7Zas%ORO~\ؼbLw;ʔVՇuYz<1ޝ-8/ź~V]U6D$]zPzix_nkZ*w}xwΓPּkL; "/թdA]v.Tʿ'2yFog|08?ӷcn cn}V^if(/'伃A,og|/IMf(7]к-ox;&"6@]<l~Zܺx_D޶7%^^f(K"n]O{-@t;x.I7}b$z[Rj|+ޗF2,2s)5*cy%׃|IP񪔚.0ޅqg\{xy1:8tsYb,Dެ`s:kpc bXDl%[ j-$].d}gKm^!}Ҹs**n17[ It ݯV:?7wMJwPV~A;*ߖe7hmmWRKwO6Swt ݁wa p x߷ȓ70}vw\ݳN`|?"89d~#_jY2}wGn%_]*p7~4g,SK({?M+NӽSkJ`WuZf2}+&7ʝWm$]:5ofQZ/1K>ivG = o+yU8%u\f̂cb1 7fN` QJd1n Ww5 b4-8P6衬fX) ƻ0 Z4#Npoл-Z֋ezSxfi1}G;QM22[adD rFX^"Irjwna;}Q,Xp+uK fWNBYpnͰ0N-8R:L( @5KGM{3XptL7]DYpXBATwۂթʀ\,:,*PQ3xaqYQ+c4N58;HZ\?i,!nHE uK}wa#']. l֬@Z ZlBۧ# }VjvMZ𠋛a/Ӣb{,]ց[.z*%PVѬ> [pM&2ĶOѷvz(Xhm,oC2yuxmNw<$澼'XFobyIm_;vD*QWriEY^&.x:,>Y*w=/U垗W=ƛ9{`EۂfȂBMK0kit"Ut}4eŋ T~VidJ Q#.fV F*M@h[GnBT_|ƻ-x܅,X:D.&aht3GXirt2ڟrW_olkI. \u,.Ohƛ*Z1,boxX,ƛb1,foxX,ƛb1,fX7xX,ƛb/q `[IENDB`hugo-0.131.0/docs/static/shared/branding/made-with-hugo.png000066400000000000000000000213041465312036400234200ustar00rootroot00000000000000PNG  IHDRk g tEXtSoftwareAdobe ImageReadyqe<PLTEЏ˩?wG1g$9ۧYƳpKM->D@9L3Q~DDDP֙fff"""䋾333UUUwww%I\)I #g^еkĢwȩ_Em/_oνԼ2O˯hBOtRNS8Kg NIDATx[Z[v[AAB)]K ˾((;^o[@dNryޗHO333I<)y5b1k,fbXYc5b1k,fŬXYc5bX,fŬXYc1k,bδ3X4dή#3h$c֘5%?S1kjl*kXH_'9kȰяt$2ȬO+$RSȸ_!ðǬ9HE"тbmpAi"DدMc&Y%u t3p#dR(\KV8)aIyl)rH)t<6oՍ 2kxC(1qD9&}I+A4mvo͑5DsY;AYc{8 $&epz:GQV#G %"a9] n`Ģ>jXCx"}Ă!)DŭC$NpfdBrLlJML1!d$tИ~-?ft0~0)\t%|ۯrL4e1%F&'&XѸ:ZnLYݚ&_CYG#y йF z:%S kHΚ6M$-m.Gc2W𐤱!MlڑI%6$If t6 CUdBL\MB5?JuA;V7GI329 f kb֤ AT 13vxfrh MI1BaMS̚5i=vw8k$^1:=B)㞃Y$ρkHQrS)yI>h Ɏ[D`$)v֦5@ 9X$k(d~i $&QK329 X2kj$݁nu*'Nag<T;; dL0kh.nFX#]&i^ chJT aq:27*d? 4R?c7tʬ(}b9yRcg|ڔ!, wwXf5բdr.W ̏I%l^$:rx<2 Pf-[#ts[N gD51l%!IVc5]lVR@괓Z$+D zZG1f-[/ɉl͐У2=/ҧ_It.$瘵 gssGqRa06D<Ɖ8}WY˧NP"s̹Cz?4=zT4xYL3shC"!c!71كt d$bҨ78YsK]k3\?M]o=hdzst}) DDzMf]<6cj\G/dAn΄L]f-[L$dYJ;e٦uK̚KŸB]SbHV!ه,~1Ӗj+1k4Of2bvI% F"9t&YKiM2k,bX,fŬ5Yc1k,bXŬ5Yc1k,fbXŬ5b1k,f*.~{LD^|:QGA^ײڴ;Qý|.ev,|3>m#揶SЎT1o?-g}:唎< tk4?^OyYNego>P7n5!PF`>@-ֹ0g -}n.zFC:j\u>L.ofkèjiMVr+df7mjgb77 Qsö9>eFކLt53la>= V=D[Wl AضҊ0AfKM۶QߝmFMȨ mY[GFQQgmj&gmQm[rOJ-3j!)=rжVٶa)]=h+ginHZNٶEm+ҪxXpm볢[!+u¶U6{>lIlnb__lG+fԮVUUS?FU_ޏQooohos˶mcF円Ά7mJX{9꯭ ?[Ĩ]=}CGJQUP)ڢOˤsRvFeOq: c8iH"} ;& m!T5d)^mUfu5my_cVG<=3u)iYڶ&]@_cZ)a)Hl?&SkY`AŠK"lL](i(eT'RIX^RvZ`MDMWRSƚy2AMkz[. u) [##/eCBք*1~3w譚:t *jOdۺ0!\~ %R` R݃ƚЛj Y<+ }( S>+x2S%Cձ4'Y+P֊,vٞh4lV0zNIP%k"4sIw揼ZA<~|;yTɚqu3kZ560345ZH_2km1ަ|4%B.V=L]d5ۻc}arXSΚrXd?*.6g=@2kǚ8L4[܄ Y+8&?<PIe "gRք#dVUndw5=QFjDV=+%YaY+ քѵydMh.IVnD`M"LY7V*lkڙb.ƬZ5Ƭqe֘50kDf R?Qk.ˬ:kO,vW5k\og{7eZu+Ziv־g\`MHsL3⬤)kEg%=vZ!JhIp62kF5-=S~oԤGX'/}x¿*{ ]qz"kUh&CK[&{WcXX[ޣ{T!jWp+d;Κ6iXKH8abͭOPf-ńf 6 k&58Y @!h5Yӆy֪h]usZ(4YK- jܚϷYÎwiGjBX ?Tڂ5gYk?f-ڋO݊)t_҆lh/~2!fܾV5k)!sO~ZYJk>,+O{YJ_D+ԚhACQ{, |XIBk (rmc}zYB *dMk Աv]MRjBlf(-J󲮽{ViPk.Ekmk >Bք$ "jtakoDn (Si+MBW)>6< O=jS YK kWVOz ,e$$vhhvrqGL"Zh{s-kAĞ,[8܀6g iQ[c*eM(5fͿ бQ TOX= l:|]i).ZZ*DZogS^Բ&nE ]|M`)!*m;KUGN˪H ӖہXVH{w-Fxܨ)լm$TE3~2ɣ?Z6րkAM{ExxRf$/;P.6"#muV9k l}ׯК}- Rކ@VVLMi~ b`ٗouuBo2[pO8~z=hިetiJ=kl}W55686O} fZ*U FpYgmuQa-umiQKݐm%VSA6jVcp^`"pF2>}Rf+@" lMm7[1rnm+~F-.eLEܴgI3VQCZiW Ӷ?a54߇ky}vc- òmCZKӵ܂C[UE!3|`um3'ب-e< m`M9ɚA"}akX\ ,Y& K?HnIVl2b+)KyXVh:PiRH(K۶+X$.GT"5BڣVimu-mkS>ȃcԂۆ5bM4Ĩʜm$>ZĨ5]X6HLZ!-`cTjmWl9KeԾmÌZ*1FO1*a۶v6k 3j"W0j#ƢjfCQZڶ[mhゥرmQ+vZ.6ٰmQhi-6hc21YK6fԾY^KUۆ F,emϭ{ׂ?ڬ9[kiΊmÌM;K9lۡZRuVl֐ Y,VhАjTm~Yۆ5^m[I滬mCR#6!۶'2ZmjJck RDVʶ!*QԽ&֐h촭P:lZ8Gn[hHm-mѐ"ڶ m5a!e׶ITYK6qM 6j}7Rt0"U0:jRꄴD&:ǪතM[ŌC(*ߐRJ6Gg߻͔J PUQ.=}Rf_~'b#fŬ5Yc1k,bXŬ5Yc1k,fbXŬ5b1k,fbXYc5b1k,f7 c,ѕAIENDB`hugo-0.131.0/docs/static/shared/branding/powered-by-hugo-dark.png000066400000000000000000000067311465312036400245440ustar00rootroot00000000000000PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<PLTEL~@@@e ?wwwUUU@"""333  000```wI_2 DDDo#fffF0~O8L /(g&WDPPP?(-;pppX 7r G%3%8BtRNSD [IDATxi{^{DUjv. 9gOU/{F"^IB@ @@@ @ @@ @]KL̃8l$wtK,'N|8#:9@2*/HYcE;)%5J"LJIuy_ %p@'Y)q̍ǹ)~*./y87E>IT2~,eJ1Z;b}r^?/NxnuSɑ d.5dW]?tSZ}(պbyD0dp GjP w&ˏ#7a;b Gy\H7,:c^Tūfg6]]ߙWS7tdGyM4:ʝLgɁ9SYAJkAQ1ͷGȊbA#{kF⫯>7VMNe^ NԵ?!3Vsbct|b#f2s3ef2qi_i@܁HCWY~f:9|YlM% Ĥ5zZd% ghN>s$5%B_ɜ5 kvR2y.t)Rigvg뜻"4j}ͩv.g6 R@޶Z4#PM fR:U.K%+-r-o!J1@~ C:lw7;nWUM9x;bq}= U!@[inm.{vU0m͛M!@P ;{ u}jPD Ul^i!Ϸepi @,dQkbSz5dcZN YչkyEG2;uS϶58P};볷[ü\~w׉I:YM@Hn]]K3̋Of\S8=n$ML7HndE @X 쑪j @I,5o@o2x3+@@@@@@@@+zOVC_z>;O,Ch5?e-5vK NgN 5ci@Di޳&EtY+Ƶ"g}gܬ  Z܌wHG?u € j܏ BK,D8]ܚa[ָ56z."HsFWK^CX[I^! [[fw"j\hR] l >Gq& *Unj} @RഀnJq_\˔9-~?n5@  3u 9Lxjow,<}IdX+*qZْH6 1?:e8֛H9!>Y ILW{dגUZCDr*"GTfKoYDteoMe}!@Yd1id3ͬ?,J؇iQZ[|W Ċ bB iԊK6\ [@t"1G-X9Џ dgKCƘs==Xԥ^p\# T*y9ϰQ hChȇ"E3E>Hxǣ@VYfzd@K=bc\!m zeghLgO+]Sz|AG 5-q"2hݒs *̲EA72nh=SVzNfXi 'zn=uo y-`FaLKnd1]ڍRCø~ JZ'9(SS zN!Sz(xV.Y>壇H[ }; ߢ B>tzQ+)o,z'%H*}z{üa3ظ!sұ#=g>Lzг@4Ӄ>33=-2r,zs)pB1;=2Zy==KRɹ##>3+l8^ל֪-N2R#=/BUi'fxj؀U{fH\nfzAO=c;2G%zm3.gw8#=O&Fx\Ci7@z4񇙿OlJϭ=Q冟f~0z>eJ\Ge5ŧx7$uķ6<7לYeG-0=NӒ/' l)rFq:;驢:g t+=nkEDZ$kyD!SԐӻl{q2ueGϮrS%C suJ嵿(ݽG/'1C{txS&Ii"ѣ=3cɐ> Ow\f]#HH=I=GzzĽ5H?O??Psu MOKkH{"_;j9HY*}G*vjZsݺJwN5j;Tv4b9aGolD}eja[&zt emBڼc%8qi"|$9]1Y3:)N> ~DNCj!- DB8NmQ]1Ib!D 3 ґBg5DKGF8)N^'G:z;"D&)LJݛO(<_!ӈMo+$*Qx A.8iV,E0I{;\kÐ+)I_tIy m"c QCyC ]&<ҡҍH~5|teVz'X T-Q%7]lVbN1kZi!.m~] ~G{t?Y/r"JeM; G촽EiY>ot?W~ڑdRa&I)z. >TN$Ј'=ixq:}_tzb5΃HE!Fх4,ެ=`Wz8]"9Ŝd$ld5R7MPhakqDg58=&K(ғHeMoN$.#ֱDUdݴm[U='<Jp{z#iN,HƞB)\Cq8>q(Ҷ+b%c?Œ;MhR )k$IʒCAz4ӧ0c3gÃ!IҢhTv:ѵIw2谤di QXĶ)x.>Ԙ^hfx{݀NqSgMtW` no,2ha6B!JQpRP9H#(H2V{t{x~L.nD^{Dfkz>a7zD nlxPJLHvAz& 7'zaM{|T?uᩗo Bߚ[֚X)ӅN2s3P?!5Ne77')[89ҳ}4"l8Z"}qZho .=mos}=W~xog9A_j{ȁ q_YIBm4HOεWsy$=O<2Ó"P^.Mn>As\Π]{-l΢_d_i+qR+Y`oWKqio =,z(|*y*Y Ѓ˟0;A=Y òVv0t < x=Xl_<@@z)ە4aJ fWiݳ= =``@=``@=`@ EӞWIENDB`hugo-0.131.0/docs/static/shared/branding/powered-by-hugo-long.png000066400000000000000000000072751465312036400245660ustar00rootroot00000000000000PNG  IHDRJXFtEXtSoftwareAdobe ImageReadyqe<PLTEDDDʻ???Pfff0̙"""333___wwwI%UUU///䋾Fm3OOO#(oooB8@;|_D%-3h~L$|FtRNSiD /IDATx{CJ Yݽ};rhs3kQQB-@!J(D (P QB!J(D BP QB%T)P:~:9Z,;xQtmA o$jXB[(Nmo Hx3<:<]HtwQa.r]eBTM"[;8CTLbN2!JtzP=TD)K/ Qhfnh%*2y7#!ˡeB= &e4`D˄($v]A8(eDt3u!Mge,(%&I%=2=߉ o0~IXx%`)R%$KI~N1'cv JYу,ʄs)[ҡͣh^VoJݞMݼz^oJIw:z!K[ DZ}PJcF%Q"_7Zk^E/ǯֳUu&\to}(һPVJoU%{SjmOЙ31~.%-edk5R?e8Rr[tLʡ|f n (M<΀->鮋އ@zReQ |z\mIhEn Fi%(M۳?,D:E[0J?s٨2J~gn`j7N{8o:(MaT%E@CTN߃J2@ EKiC5॥\uW^R?>'}z,Y0omhVDIDyPRJAP҉ ;VN qCPJ0H{Ĵ#^$A P]\_zwtc:'M%IGb^j9Q5RL%4%xS_dBfg)5m=(JyX1SɅ yAI:_jQ|(0A\e䤚:3]{*%F ]0GKiztZZE)ڶ|IJ>q=l0zܭIQ;S;i:#B'HV5p3/OA ;㗁\8 \v*V{o-me HQEl,/ɗ+Q٨'tUq L]t/X>;+,Dԩ/uXpxZ1Vw&<;,-JO9YO*D\pQ Z,+5 D`TE)ܢWLc!f#h|ǦҒ8FGTt/JͲg=h5WW `r z=99\ HAQ,ILl04zJnciPȔɁRf!@{&KEWy Ҭ*nq{Y}_%^[,5~{/)@G%!@@ @ @@ @ @!e"n4~!{nƈ!8HCODN+XFhr*5G4uu@ qN+~A@z7b$MQT J܁bF*DW@ H"&;RIN@V<Ϲ dΎ`듃nJ@^88T 8>r)J2┺9n RI&@ƜRwx:Or(|>@xɣ&zc>{ [9UwUp^*bZg Dٽhf|U oIb/ZWV^@Z D#3!+vaƐnPSwS=_~p]Zw~5![!w t@TFZ dawVW8-8y7sY d?3ρ YӢ](ܒ DלlX+ivRy 5첮^9E( H ^VE9 d@jERYHPg3(:+ΒkT;COWH 4@ - 9Cc_ HJCu@3> 4@6͇3EWt%N; l -]X}K, `"ko!骽wW4mi@ݹPkhu^QҜze^ \%˃v]s΢wV]S P5:q=0/ߖ:Ro+N]Qζּ$7.b fؚ)ty,{}a!}X>uu[)ÿ  4j~4i ֧oɭ? 两҅7^ZP$/ :HN2> 9I9&HS>k, !>>}TV~4Xd?B}>oݸ~ssxG 6H{@O3ҌMHAb蒱X%Rb:f&ddؐx:?1 ї~DD$44IHȳ ]mϩ;83yre@ibntK;-5$kQ=}G?$-{̓?Bu ia&K:S } @䵀Vt*YNd(2 n>]ϚVD k͞ :D IO@1rɯ2{ F$ > N 5K쁬l)u!@>$*BqdKg@b}EI=iv I]<+/1NA d_PZ@ 24"Y@jb@yvWሔ6L`Mctrwd ;AlB isߩ֝m=d3;2ccB03Zr+6G{.,n7 *GyY'( R0Ex2ʗNE 3E>#?hE?ڼǹI?8rnxqoO l }G?) My7G]=?cy!c@n@SĿ;tF@G2z+,~Dr<1O?cwv!ⓤ}05k,FJ$7vvLdFҼ=S'Y3RlTcn}CZf{}Á~Bݟ8;G)_F4۷ww l ]N7/zܝ} C ѧGnn?}EY0֨ay[.wI* 2~goL㋙5/y uS~8m> n /yT@#3 8$`̿`d 8Dq88&cMZ9t9{TC>@|^4')ߘ~ \c&G$h̟'9,,y+ flF@ @ @@ @ @@ @@ 03*DIENDB`hugo-0.131.0/docs/static/shared/examples/000077500000000000000000000000001465312036400201255ustar00rootroot00000000000000hugo-0.131.0/docs/static/shared/examples/data/000077500000000000000000000000001465312036400210365ustar00rootroot00000000000000hugo-0.131.0/docs/static/shared/examples/data/books.json000066400000000000000000000117361465312036400230560ustar00rootroot00000000000000[ { "author": "Victor Hugo", "cover": "https://gohugo.io/shared/examples/images/the-hunchback-of-notre-dame.webp", "date": "2024-05-06", "isbn": "978-0140443530", "rating": 4, "summary": "In the vaulted Gothic towers of **Notre-Dame Cathedral** lives Quasimodo, the hunchbacked bellringer. Mocked and shunned for his appearance, he is pitied only by Esmerelda, a beautiful gypsy dancer to whom he becomes completely devoted. Esmerelda, however, has also attracted the attention of the sinister archdeacon Claude Frollo, and when she rejects his lecherous approaches, Frollo hatches a plot to destroy her, that only Quasimodo can prevent. Victor Hugo's sensational, evocative novel brings life to the medieval Paris he loved, and mourns its passing in one of the greatest historical romances of the nineteenth century.", "tags": [ "fiction", "historical" ], "title": "The Hunchback of Notre Dame" }, { "author": "Victor Hugo", "cover": "https://gohugo.io/shared/examples/images/les-misérables.webp", "date": "2022-12-30", "isbn": "978-0451419439", "rating": 5, "summary": "Introducing one of the most **famous characters** in literature, Jean Valjean—the noble peasant imprisoned for stealing a loaf of bread—Les Misérables ranks among the greatest novels of all time. In it, Victor Hugo takes readers deep into the Parisian underworld, immerses them in a battle between good and evil, and carries them to the barricades during the uprising of 1832 with a breathtaking realism that is unsurpassed in modern prose.", "tags": [ "fiction", "historical", "revolution" ], "title": "Les Misérables" }, { "author": "Alexis de Tocqueville", "cover": "https://gohugo.io/shared/examples/images/the-ancien-régime-and-the-revolution.webp", "date": "2023-04-01", "isbn": "978-0141441641", "rating": 3, "summary": "The Ancien Régime and the Revolution is a comparison of **revolutionary France** and the despotic rule it toppled. Alexis de Tocqueville (1805–59) is an objective observer of both periods – providing a merciless critique of the ancien régime, with its venality, oppression and inequality, yet acknowledging the reforms introduced under Louis XVI, and claiming that the post-Revolution state was in many ways as tyrannical as that of the King; its once lofty and egalitarian ideals corrupted and forgotten. Writing in the 1850s, Tocqueville wished to expose the return to despotism he witnessed in his own time under Napoleon III, by illuminating the grand, but ultimately doomed, call to liberty made by the French people in 1789. His eloquent and instructive study raises questions about liberty, nationalism and justice that remain urgent today.", "tags": [ "nonfiction", "revolution" ], "title": "The Ancien Régime and the Revolution" }, { "author": "François Furet", "cover": "https://gohugo.io/shared/examples/images/interpreting-the-french-revolution.webp", "date": "2024-01-12", "isbn": "978-0521280495", "rating": 5, "summary": "The French Revolution is an historical event **unlike any other**. It is more than just a topic of intellectual interest: it has become part of a moral and political heritage. But after two centuries, this central event in French history has usually been thought of in much the same terms as it was by its contemporaries. There have been many accounts of the French Revolution, and though their opinions differ, they have often been commemorative or anniversary interpretations of the original event. The dividing line of revolutionary historiography, in intellectual terms, is therefore not between the right and the left, but between commemorative and conceptual history, as exemplified respectively in the works of Michelet and Tocquevifle. In this book, François Furet analyses how an event like the French Revolution can be conceptualised, and identifies the radically new changes the Revolution produced as well as the continuity it provided, albeit under the appearance of change. This question has become a riddle for the European left, answered neither by Marx nor by the theorists of our own century. In his analysis of the tragic relevance of the Revolution, Furet both refers to contemporary experience and discusses various elements in the work of Alexis de Tocclueville and that of Augustin Cochin, which has never been systematically applied by historians of the Revolution. Furet's book is based on the complementary ideas of these two writers in an attempt to cut through the apparent and misleading clarity of various contradictory views of the Revolution, and to help decipher some of the enigmatic problems of revolutionary ideology. It will be of value to historians of modern Europe and their students; to political, social and economic historians; to sociologists; and to students of political thought.", "tags": [ "nonfiction", "revolution" ], "title": "Interpreting the French Revolution" } ] hugo-0.131.0/docs/static/shared/examples/images/000077500000000000000000000000001465312036400213725ustar00rootroot00000000000000hugo-0.131.0/docs/static/shared/examples/images/interpreting-the-french-revolution.webp000066400000000000000000000310641465312036400312140ustar00rootroot00000000000000RIFF,2WEBPVP8 2н*^>>I%."']) Mznx|Ρ}Cr?>{F߅.zT?ݧ7^}? / Wǿ~lړw'_\?w>߉ߨx3{s6aOhMK~a:Roн{p4Tҳb>ȉFa摠1hv$=KN]%eY,ᤀm:3dv8riT٦|DGCl=3 u3Ur }ܾ-7n+ZvȮ=Zx&pWp= :-t@JPZjΡwrLa$GpCH˖_xŴ݇QPWʁ0N+T)M7O? `՛n3#! ˕ѐYx52Z[52:GQo fB"Y>ه[=5 e4 #m?0q˰]vX~x( n: aHg 5=w0ŚE6EތKeTe APo@ńz8 HL iP8H>Irzj8.On{.g 6.jH%Thix W>0-ހvV5"˳T > 1+`>פ/%^rGÔ8j'Vo)Y}B/̖uvdM˅°3, k:!QqsieĎ6o*G{nþl@f抍}D6ߨ*nɕN!\p'4XU"f7J&f[kܰJr*7("T=_X{-՘i7E+MV=IH!~s<:%ıwwx9FğgJR%TVrLu;a* t8iX -9oI.g)qc0I%!sU=Ro=U|FstUq#:^)u_@Ρb?lQwQ's^cSnd9¦;񅇷QQږJ% <&VT|fGe˝ÒKdug3M7cI]pkJ)Iu%"7. \2OiHwcG)6P$fB\!,QK‚ #Y%LI51KF:HQۚ~D6*, KIJ] &hT:z:w*qq _K񌛙 ek&?}鄡 D!QEJruWx;: :bU!m)R1:F2Nƒ9XWF^pxľ?~p>\RXHQٶXe!\ H_ΌQMXuv}gUF+R:dK0M$^&1R(z\m:C3.U1YqϼtBy"Y%0{(Z|o(h*\ S/Qa@*6\1\3;J"Fvl3zNF ER1q5u5eBR3rP {UU82Z^f4^34@B?5ۧTK"N!K^KJi\}i[™i_X%&o qVs8U.!߭f *Ezx͈\HnmK`KOLA-囨:Xe8 EJ?5#UlwSa-XLCVe sQ*LrAf țzJ>\=S oo; wA@& L* ӓfxmV'>tުl켧9*vEqF>/q<@btgc{>?i{H4j<rF3rXiG[IJeH;kYTBX[ldTJ‡x2Vab:؋<.%4۱v2臗:L4JU28xAvBx05Hd6hEAXϨSciwWޑˀVC>#Wm`p^+RF: &I~pٓ`\'CoFkz< ѾoPB4,~k0W,F>&9:6K , WE ǯ㋢ȑd`EHJėտ`u>H'Zl;Y#OFoWW1Qs~ezYxnk)81BFHN8E֠n޾]_^46?@YEm6xSԎP`_UǽȂ; N /q+ԝ9\" xd8.D$m.DY e*[ b}I<{I.c?FtWi{[2xn%^Cj']0y7.wp뮸1a>q:BBɦf[N==~л `B}s ɧ׬mp7?@Zn立y&|> Qy!<l5>K*yׅ(@B1>jԷ[*>?q.g0S;&i~jmҨјN 8^Námj#mNp}c^}l5YX4/^b BKDc=wz`aؙ\ɓ)qewṱ IC,͒4^Q !݈r;\#CsۯF4[jϟ>38>WqJ;IH}OLoOˆXxH\̵^Nǔu]ֵ dKeM%KN:#}R<˦1Z1/2dc6y. z[H}&k-H[[Jk3(HPmo`Us9Ş>+0`&u><%ӑJ}kdؖMƖM۵3q]TxɃGX U"̓LS޽j}0[/UgȖ'Pɕnʃ_&mrb6T}%((EB0\ 5g5E߉"(QG'%#22pmivU*̓f r~5W&r/qy XٜɍY'_Hֳz9KRvE~ݭc3;d}zb|;I2F?һ~I:26ǀ*;<^P|;wU%$ DOP&6YL4ZRTu4bPw@N+:&0=$Ki"r$@1U;V׻͋1?'6zZ_@)yi |Xw*rǧwvlעIpkDƭ7~rb #qth&U׀"x|,-K{Sspg"g\:  z< Ł:j47eR!Cy&jZnsMu5G<&*EH1<p&TX siڨ=) O֙%6 i+`ƣ.x\q MFz0vaT[F1!}d8|(%l|] D8Xlsz{#e/B6#)7mo{8> am8["q e.$ V>O3|~wz})A-a5 :H=k8 S,fVi&fՋ%#2сx i\!`**I?*CXxc/@-9_c͡Bx &NlYEWi|d9wW:x$P Ê,7vjF4*EC&rf2Ye%La/`fI"<$yQ` xb++^oj/C~xțud0~׃ȸ O2g?s4B륋^s n^df&+?~)]JSHfk^ㆽYGH"mf<"ZdIޭ׌{9]x.F1+mE_`\v Q~c$+S63UA wNipf2G#G *K}Gf&īȌ{vɚ02 `FF$^|n/}`n>RܓdkFppg򣳳ȘkmeR"POjpdD]Ha~3hjotaIAk=R#a\UZ MmS` 0֔|D%o(`sTa&Fw6t t8_60>,Kd?[+q񹂙`ٵw!I#: ^qs+Jrx~=sǚV=mkMX b'*o+@zV2+pjs"%$_w5T~( v`oڱ9H:GG4GMbSUW) 㮒6\E#&m;OP9A# )pt1h*G/w-ċ3``1 {JVa|ӡ ֯*(Npb}\3\͔ QWO>j\4Z$ M~Ц. "j)\E[ҡZ$t^F$AUI! 0Hd ?F(@[q3ph=3D֐ӡgvcd>:@񽐗'L߭!ڥ"H;_5҃=; +^O!j'siDFe*Fpl4CйU񕖖8ajtCKQՀ836\tmuPP=Ѥ:yiG hE`('&e``f,iMFS-X:qdR{oN@wq%j#bms[UW4DICMT/mE$jNC)u1C]\'uò:IwX/ ,^Д_lZ౔A҉ͅ"VI:QKpցŋ"Qc8Q<?|U#mMIFq-kR'=q[nÕPk@v78=Q=K!v s=]Z߬Wt01:C@< L}m|!%*n=#@]:;+CF$9ẔQ8z{;ڶY7;IZM殚x'"l V(k6L[wM 'ۼ{R{ngxBo+LCݩD`- :gAmQk>it [+8מאTvj4EGSQ=@dah4x[yUuw} Tb8kS%46FQPd}E*]m+.#FGQB.Պ_&0 Qy@Unc7U۹p  =1fJ {GLf{B^wӎKȤj8"Dhj^ 2C.摼x=k/4B F^{%!p[!j>݂,luѐ< p}>քddžt´ *O.Gim^Jl3?;PTw =v;B!({vL0ޟ 5R Rک(K\ح\tfx=E}H~t="VR{k =@<7j%)#unX39{#_?8F"ԔN999Qp\-82!,F p@^ :'YUe FcO8Z[GulLO^c[j?VJirI*H,|U 譟,"l&!(4{wɦ6a13zDީjOڠYSH"`',1Eߖi`P҅$*Cy*O a^uUF%c˯u 9²Sc쵈 [?YIitmXouSNEB'͚b^)-pkgh-T&ovmP=[Wl|+l Ak;z٭''Ϯt}P!sU?zBL'Ll%])c&9x #T/6#a%QKӇ0ά?U[Ԁ#6wH_S=%`ye"+ӯ^XNgXjiTVcJ;/+ڐ/)˶P4.x,91x 43*<~aVVqt396Uw&ZbІ4 OMKmWNT} #℣ ;f0l w)1l= P`X":)3 Iwa=DWVBWg韉~ N?feh6?-%4hړFVJ52ꮍnqL,`` f7Sopu+}DN^&#(qc&O`;rmB*&J<qƀDti&v=- gt_O0/a4~ >V4m6/ Yr,%@i,9?B fpGwiKcf >}ZvrU#:9lD[@=AE aarWHت5+X0uf˹_ ̣@l}=u=T&/1Isۭe<]aU3N !l24ygu2^_HU r9 µJAuM|%1V[^V.";҅wNdS(^&x S J ">W'*^X}@Ηd`}# CЛ~/ɘ 8\R@ 1eVTasu Rj|B5~ķ+R #n$r@5$kz.NJd iF}!C%ooYG'&yK{ _yzKڊyg1mW>/.2m2_T;{!8m0 紸X_ŏ%_,dEJިve0vڼ)x!H^ׄNa"Eiw64zuskO}yqA0,zʓ,=(|mkasAwM䗠{{bNrs͆<)C\G,ht$ i+,]Vs:;G[dxw;q}5-D~9ELSXs"{lM6TE@13z%Sn3!A6`e}Ff@$F%jxz|g(b, = 9]qӆm9u,I:6 , \; Պo֫f /!tpJ>UΩK ׍ML Ay%^ Wv}G 5RN6T73tf)+؎: 0\㛹i8sb3uGziw> A_ 7U`K'̽p_X8ApӂWKCZ>5;jAqR=pWb*\ZmC XW3bɕ P}AAfֹ]TmyQKg^ rfI/ݯxAߚނ=2Y':t:!p0=@jIY[%qji:~)P0 ԆcIe!*t2_ lGiuj'!?.ʣxgŗ0VVw=e1`e/st4 m4!E^׻ؙN0qi.QQrBq +>A>IAUsc*^9*+k%4X.pϠ]эڿ^u%k@v,F(RhfLY1uiqv\69,>2^O K.=t=_b-HЬzT`ʿ2yK *pG(.@R4npR5 qZ:mȁiS_KYy PttV!1D&c`X) 6 ܸFbCxԴ"2GRȈ@qO%Gl]6rW# ZKbugmmljT@iXF^湾5,alBK7@^NM`㏅_XR_@<Ƞu"ie"ǛL2|eew^[U, $;\ĉ5dMuc DMPBIƅEZKKDW.\&"[ QTG#=i,=5}s?Xe'woK;()᣺< {"3#hJvJwKZOC#ÅOY nSMPȒ8M76H mIg+"3'nz[&\Ս;BƁdD|½.4C1RN¯Nr^-P=StR\r~Eҡ]T>Jy#1P)%v:_ɹ!dREG(bȐX uwXr@. 40߁pIH$ 쓯ww-a?m~7[Tv\+#|7aJg`Of؎C3 ZRpwY $xȕ}ifu~+KgjѶFϿBٜY,V҅paMeZM5􀞙stP󎔆FƥkGSd18(ZsDVu**#zI3mBDhe_`YD|㘥9u4,Ҳ I>¥ #4iqq|#G:"|3za;a}.ZS-XڭFAb7^NJs+hyMs°CVZkmT4-mMͯÝ l|MV}>٩GBR#-g 'Bk@Έc|-\ӂ&8#hޝG4CcE&+p%G2966ـk((A% *F|==CG⤸(L iI룍Ix,O~}yFN5T2SYq.ӿhugo-0.131.0/docs/static/shared/examples/images/les-misérables.webp000066400000000000000000000323201465312036400255670ustar00rootroot00000000000000RIFF4WEBPVP8 4Ц*^>:H*,yP cnl`6H|bO}q GoW}C~zv~|-r[%D烿~_2?㶠 Nbw`lwzL'c)j{ΆmWIS0`}$_6.لH~˂{|"E=fWEcT0]MeLtrdRD)%AZMrl@G;+E=(8/U^WV竐!2\BfsF-Ҝ8CX!5dƽ4n`ҁ}tBd+J=D%5o 4w WϏX:ڬƴ^V}-T?>w:`N ͣUI )Fok&? 3 AIpS^uA?F9c!%PM2ɃmL&,r',oXNP`OXat6͇l',o!A }/ i !h@&)^ z@EpdPB QPNpnڭUrqUI1,KJzؒ4o ؗNx|F{;}`u92HHz@k҂6g<^cHA4 RunZI#"#E ^躢/VK /pXth(Yrgb#;vZ/d*kUgzA 7IUY돨a:[Vw-Y&2 ˥ 'nP\FBm+FaWe>\=IR*KCq57S+.<-_t]o ge9@-Ú74Z@}wT䴬ӆ,號(3ddw+?LqmIz1$#@4+%0A(Od+oE513+A:ReX W&y"f/Bqw$bߡlYHEf5sc7U@zӽ 23wYf}_`HQ5Pޗ0~gh@*/^Ăţ9{b_΢L•]'8slUЗ,$YBW*ӟGrm9 iKi"&7:|_N%SI ]M;g,Uq+lz-H% ݎ9ͳ=dx29gŌ>:ZD^"oqxڀlsʲ4{]Hw+FQ r(gK0d[w_|[_A/S͂t[+=*ջ:=k1yYvc͆j7A0 (Ώ&<-g5Zu WR")v-s7,چҪ:$$ <6ct|q]od+jfL hЕx 8h%O1;}MI+Fl7[GDcymOR",Bp_.f 1ik%JZEVl^Pd6W$b+qTV45picvp_ˆ⬺`d{1U6ApIMRi RHOJ=Bw[Җ6*</BE2stxXjGft lI9m24/+^{p2Eq+A9O1[G=e] +rFO*cPʚo[4kMlR&(A.+Зv5>鸤mEXvE"_lVw^KdAʧ _p2EO^xM#&̥kA8X8-2B[hG Vj? +m`),u2=i+rPLn:IM,5'ط U?.UOjسʻb+iɇ@]uE;KkE dKՙX#c*,/ /2`I%pJ]:N|^#q㴍WC;;ʏCn]ROrAD|mrtwo2T\V}ZFw+7QȌ֤Cllk\FgQamviIyj (F* OҎRJNQB%>AR1| u7.3G$ΥCC{~TCT6vց1`qC- kQl'7*Cg^~ܟu"%؂a)Ko飓n?Q=DnogkC1 T[hSoKX`r#Z%"ۤQBiE6DZ|_xwrr1͆q4j.iY9/;`fzĎ-!J[b+bt{y$abx0lJZGwMc@`!LZm.?Z1@+28͉=ɲks8.I2ALxO/7_n=`sr[0K:J+4T; fP)F+ Frֱ^f`5@ u܄YgԱZq)_oMx86LFJlWssAZ}b2y( /,3RPQveHB:ggyy[ԯR>L^Cq3Za>7jq%qnzUq̣bVgʉOo ;wdpIgעEt->O^hl8^[V^+nQZˌywAÑ|@;T78! h7leou O~2 |6&4Qcx0E5Qb@ֳ|ֿX/"IcCU#M%v7y#ۡqښov.DD/cJ a}"2B$m첚se۪m)fg0D-Պں\L5X*,@ I]'m<Ұ C V/1y2Z0 8j:H 9j#S[ ӧtEHZ4~&QͨF;jO]}FBf|љ<]u1ɧd3,&0 w"آetH(ROsHv, Cs >;Sd>)T+ٞ|hkPoSsoS8ם?pQu5Ģ HȢ!&kM%)f XK> LԸ)W #XӜtZ6 7xP fw{c-~$.O @F)(gA [.TYEf-GTc*4<-P2 {a"6:E̶i}w^mzxѾh|U#v]zZ?m%.pJicsI\|hF輞:SҫHD(>xv_C>`{R:MBGmFUDyj>OoՍ3x,9՗d~k nFC=BŎ )΅g 0XpD H*Ɠu.gBpB&'$|)uaQo]vb |"ܓ3:`C`/bw]>e{ԬF=Cf-fJdPEHuE4b > VߕaI>"ӈ09@ƵP+Uyg0qp5F},K$HsOaE3rW&mYC@iϲb@ĢvQrIζVp5#hQl?.jkz#n$ɫ([Dujj;e_LtsnWV ;{[ ~p3QU JBm\a>wed' ^m^0q kL:{OFKxhF);<iW*J?D5Gl^5> FNހhۋ0L]J;%DL KPs)%n'tJ ɟ],OBI! e&aDŽaJ"sA􀟭zWۃ(;U4{D{R<咾+Pct>t[E<(߹Zާ0}5MjX/\$B& ξo-7\mSo-^VpW|U7ig~GD?-=F).NXǮ )MK إb}QB( [|_SBBҘ 4X\4t܉yxm rdܛS>K 54~vs%JJ&s:uo4Jն09"6oVQ)O&J `w6VmI{P * uGmmlgޜ1@Wʳn ]$3TVO/de>iE,{RLg,b) Bĺ?U:Sx布7./C1v0.xv DZlNb2M *>m@ -R(i~F<`-AQ>_uTat-upW,]\$y<ɫT.(u%T2yd,i$߲s.}&RE,r͂Xb /&*blJ8%)CS1G"2R2PrfB3U[ۃqǡZ!wcdsK7_~|D& oqCN"_U3![$k1 Z\sPD^ZQAij1x >?D,7/X3%.uϭkRIyLNe]`Wr6]B'O߬T[d8;Cn<ЖvA|9&;B<]FLݔD-c$Y"e8y>vl2&)`7Mp HQpRXe k|v5 &Ӯz;q4~Mű!У\b;d1Eq)PgԿmB0NnQKu_P;gᩋMQl)t42H?Th`Ra}FpfODM>֞ g_L50Q7fBj5Oe*#S=IྉNr[˷e{⢏҅dqNOFYR(4A7A-<)5"oKwo=vFcPnL~K&+3 pGc7݀ύCtݺ[.gDrokՠU 0prF_z k)9H:$Ι{BAב!-Ig_;$NHH$?o͹}*L`c/${/ܰϻam>Ip:?qc$qիv’| n' !S)22N"Z1XucSpd8$[ET2Ue\ [PP\qs!;ʖcqfq,q5M %.T䐛dx>,a@dknkV2OK(fi:30Nm ?qđQZ.ȉ*踄xv."5+)ݽ*¸I P9$fs^dOd5?/ΊKCM6J`qP#= J#C+|/8])#7;rC'ҘĀD^CZl!#\#p-j?cN52f㿇RTTE9*ۂ*QcY;ĦѮBe] ;,ԱBtthBH1-fK?sM5{lc{jj!KiUywt*?S#s5%ջ뵜> ,y#øБtCFP,g\{MbF,@Tèu%{nBt`㱌F_w2Xw%NG 298[J_!Gn!_I^L--EKie&CҽVk݌Zy7=nRH,Ob05DhN@-,#$Ėȸ,,R,v^n& a26Eȯز*R2231Agy5Z&5"cxTeQ%ş$KIKyIhGʫ`v)RLϮ3sPEwK0ן0`S]sKuP,nL!.LM{P!5nYʬxƥ:co 4c*.LpS! $+!E;TwhQw&(]n5btަ4WPP{9 8;Kgz D52֦@\/<<^X E}8!l_ݳNL%w1~7ŷV_X5x5) ']U IDfL%zʚj(? ~qTKw;5B&f+IeTJV\sD#_T5/fXwkE26&knWQ)q {{Ug3 QKAuPOr^k|f6]*IW ד;@};ZbdI9DN!M >2յOi&<"_DIwO}9|آw2MUOs j^/X޵;3Im_@5S-AQKnVw#kz@ R֟ ,)Kn#NʶLw?j -m;i]xt4xHu e^`zh\@BF;DYuUnTP&5ZBI <4_=7Kp3Q3$:Qnكe'㪯ఋSi{w!IxX &J1Og23 ] րrW PhlNEfxCZ;M͉K0keUu~AH:O4'q_tМ@"(׀3\wwv3gE qx-`Z/*jUSqCYte{!`o| C_AX%t`H|# 9xW>+Dnי*[~Og>SEV݆Wr4:#JG|23$vVc$Q8naڥ Ȳ`ɮD \uR~͠K[ru@ >"UvDӲ_vcn7._#pj-sFAmPⶀF.wj hY TA0_l?N SG!%碘G>E{ZvFxP5! ~M~cQ!nJd:DE}FE]jar4`?,M^- %~FJR27wT.\(;zlc-wN]Rߟu+4jl312 &cOlhT>>EKi}۱z WRBSߝ'z $OMs;.~n&,_ja< v F?93uyEDOS uD`;5+V,]]r!Y`mYT4oU[ePgR<]O֐MN(= u>|Ÿ́ 'X6V#|b،Io~@Ӂ!['9A㈹4Kd_EyZ1a+=MC0̓"ds޹] PoT|d48&ܭ י^q+bghECkEy \7ހB@s ygFUtl"ڞA􂬒<"`i6^,Jz?6!Cq-,,Vȳò*~;3ܓ^Lִ}.L0ka|h3tDk@*K;Fbm üg=+>xq}dY?5#/QY -5V(\z Hb5KXwǒfO_] {6e=Ҕ0j^qRRyӧ˽-#A_YiUQq5moDJ6X M! Qw6no!/S u=qy +?_߲^eg#O?пRڧp^nTٯ|xz>7gOy?k^q?_?`/?ha~7ܿ8EOh|m~y9YbB@j&OPgqH=ba.fR~Zl|#xE eFXX 4G9jd n'+J?l+f탷?46n<9m9d֢(!wةT;&ӼpHPLӜjMa&+ai5걂H $Ar7 D!i.MZY:S2\_{Gǚ8i.NK.jS n)/\{xd}u?S4d 17N杞hOesנXWP\S<qs$]RqܑY5A|r< 3~Snb ۄylm iѷ颃Y8Pj~ѯb*\Q_ϾM߭,S0jmt 72#w/|Wn_Ap5Q9$4y$E8X4,/$Bp: uD-pQ4L-̆:/azLhb˱ 6AŹFuLK?Bi}^-Ӹ jEO6J=N+>4{1UXw%ʬLޫYcB10%z9~v<91{%Mk[-m&w`o l-ejEAGN_< fۆ{3-lrfwCOO Z3#ZrgLGX(7O:S] :@V9v@+w|x vý%oGY}MSm jEE!ۮ|9lo[zFˣv0ckA^b|E-:RkHg.ݐEb B?΍S ^!|HwNTIa9Y'pa9=q¶j`GBX-U^osTI-SˁPDTC|G_!ycL4 ;CM NGؒLiT9+C"X-*2-=ԫ]W*ӬCzlg45]h s}e)<[aZ{c;$|7tfVvg<\d_}qEw$*([ZܡvXoT:4FhXEƐr\qhI1-.x e6Wk5!Wy;*SO(uj&<1jZfɩ esтFkegvJdG? v^Os3]^PsƢrѕwzm\pOJ%$ cyWek9Gv?C+f{gyS l:{L],hr\-گWu{&%O?ltY暋\ȮMY Lws.S6ѥk@b7JiM[vruy(NRy:jv@uɔIp&Mi{v"`HXGWN1c{cdZr3~-Bc2- Qr84ndjp2z+@ ^.EL^HCtÐ,T$Υ~b0*o5h|s վ&!Izgq'[ؙj[Q\-Sdi=O@_MM%r.M -zxu.'-?ʩ'mU~Um vH&cgQ?^w>5 O ;Dn29>)ȅkhI9*(L Bw"S {M ",=BgT_ɜœK<}_HbVGO!6'Tp/ue!BchK@;b,.GAP>&iB^jko%M=m&DJ m3)V iT*y"4]3bd_Ylb7G];&Z+47TD`HMoȴPMmT ahZ.*zPc-ME¿0T#Q`A$zS&-U{ˈf/+>V] K3h2TC;(r|[40Ud}5zUQX QbCGAx͆' ד}N˴qI+VΏe.XJOukR9 a < 0 iߘLt ]i=[jٝOMh95X,slc|zBR,N W7-9*G؂N/#fwc'}2A3Ctfc?*8ky:3SGQy,{Deɏ&ᜲ&bpA:,jJ9c5de.`{;vmdD߾k ̊XT*+ fN&YFcAXA3tM o֋%Y)" B؅і&mI>].?(p5>6uN<;7,A8Xn2*ecbi$#vhb)e pp+ ڢbb .QfOY?\-T=uTjц *1LD"~2Dٜ|IeiQ/Tx&=s kq,(Gc/[{}e-RT"5t)ŝBnF/O͐e{*bH@U:YNk{a"-LœrUOF9!'ACC!mJ`l+An:y[O|[Q>o:cV\<,rB`, .iS>4fsy[oҺ&/+u<;>S3@)xij8 L }aa[{d(:f2]8,seriU7 zDS$s oz,HbԖ !k NX6BdB\;,m[& ])cT)7l?z7Oʯf_t$BЇu3Dp "j^ YReRWi]͸V10v:H]+ 0rZcR\aGv =*r/n{#@<:M㺹|w9fg=AN1eE K8:%*b&n {C<Ώ̤^?Tz?y>O*5lft> [SKv{Q m1hts2nܓD!gwJd -5rއ6O\M٦?y=4tZJaX%')\7 G0]%xp0pWjD<=~r n[Gbq)~!e2]<Asz@) 0m&RY_'|1FFu* P ` ȟ-rgng9$pqrf [.*N J,@,~ib7Qgk4~#Hc9/8\ueif60\'> cEJ D9\"KV?Dĕ}-Ē hugo-0.131.0/docs/static/shared/examples/images/the-hunchback-of-notre-dame.webp000066400000000000000000000563441465312036400274240ustar00rootroot00000000000000RIFF\WEBPVP8 \p*^>6G#")4W  dh]?/ܾkSwNכG0; f+k/&z sG/PP>s޼:twʏ2"?wg}Ko~ 'OMoz_?i'sO{__cg{p??{_}Vk_O{_VM%ڿv71e@И7(F [ƠEҮ]B팷{\ X\#, UgUIqv n#{6kf]8)GGWrݽ}e,MzGGzwD#Tmv Oy:-@k N,sO]n+Rf[211!][dox燕K _Ew58.Bnpb "e+idn_[);`&d}v''ȑ_x1u"2fqJ$գɍwXk<3*QiE91^̪ցI[1NL5xyŚG`(hsS@L~yrt޲j{^GQlAj( ~*;F Mrap 3kh+p@&@RKzd+[ԴsaP99t"ZaTxlN7`m"O70Y蜛BT)2dhK/+kpbGtn~Leyb8aZ0<דzGUO2]a\0"̞I~7;#Y<>>(& ʍ咅M.Iž$92O8E#ik$ B=~ }ے[VYbinFGFf/#ȟMm# \FyG^7OԢیByJٞRfϡhgr׃Ek+JA}s&N9@ όx9+QIE՚ $|ZLǦ9=Y1q6i27+)lLbS~*UĿľ=cS|qT;\߶kd|nHG a ؗ8&sLߵm XcA"5O?mu0|Yb88.[r=-\-͛qxzTI9Y۵![!+yY"cpbYE0a3^(Tnf9%O!$` GT9WaIM r)d/NjA(T#.xt c,k}GZR}HV./<*f+Iw֒:+]95 Mt; O nZ-m`(*R[˓֎ړK}g3N0 }Vf%/TmuʊhT!?C C1˥O] s)bԿ%"˞Sd\~ ?NTr^FCV~'m*Ruѳ u&_voZA_' 3ʮ v҃Zś:ѫ<1[P;ZF&?wKͼl0KMlLyNMehoWHXz5w(~E@#"[O9VZ ;:'Q܁0S JƨAc?f;Sc a._t[sW9h?iڜ&d`'gY<4!|9Άe%4 ^Z%ʃqvmr$LOMuJw@%7k?=X8y#@Zgؕ"85F r,:C @ejrhW3;$!I3A@7o=ζ0%+ "Wʸ᜾~oN.o沈H=*#N;/? Ge)O?lfoB#c|=^ z 4 ne&ItZqA/!z"'l"ʿ:g }Y:5vb yV~;r ;qb 68TfEC:e<;M]ZgFmhIrnz o@3͞'mvV +rݛU:PeW'%"Jb!dˋC2/=Ed"X؀^1,mpa-u7[~mc3;5+5}u5eUE#viLNDZ`Ȗ=#vFT 橢B| H&YZ-y$̮[ёd☑ny&] !R uLxBsY#YEcl(_(Ms9 r1^8] `+,A"oZuXJ$zadwpVHJ{;m_@kU&Wb>_{=.g~v4ÉV[`]+2;At :n1EKݰ $'750R fg֛x@oH8| Xδ! [h)(;3V ؠQ?n naD"`slz%eE2D*gyj) gam$HReA7[VJ&LFjֹ5G w5R`pj Aaj?_8)iM{kB0y8ހ0  Á'_[VblK볺B_ IL;Z^&mR NdRCq擕xP#iq͑lAp "M'6ĭz8aM˨L)P)& ٝ ǭ<ɕQGrŤ n5S`^kT+@jEIF_}\h]9pLv6INEHЯ4@dESh܄;wǫTdwvς4!M+av:Ђʪ]Ղг-v Ync16xx&i $ ]kȔ_f_[G>mϩ S+#e5)cVdg^WL3⻽bQΕ<)}[їc:̚mA%eXF\|]ކ֞FxNW!Hsk@84YHR*B/ )Q̜?z7Z" }8>>3iy+w5`cVm:YWzs4Y=-vs`Πj ݚm%.2RM.O٧x$fB-Owoe8@epq! ֲ4i[C\£afDVs@R1AOK0b^S4u`}HYBĉHthſtK[XoId[W=_K'{#bmZwj|徲qѪ VTW6A[BT#.bXp@z= I+u|.E]4*=&nB56mFJH7oצon'G8нPn06?QF@O_N,llù ß ?sm:eOc]e}.ö1df>f%sMVIDi8Q $zܴe`Wu 53ނ[!`4PZ8$+2h.\ Ft4O+ܗ B+9 mU壞֞X*de侳2%J>dA̚nkݦڶ^;O" #\p;3+dT⇀oxo=2bRZ?\)/hNT 2!8Rǎd_ V9\q61~H*8iд-#(=YhY[ : d0Z+O6/3g)OR_䊆vq36/TkԎɲ gb{`xdm̩ҿѵy`D)tDׇJ[s }^M{o{6! ˡ>Ri20﹎yRwY{Y֎TXBeJY22 ^Ù$; 胵ޟF4hن$KqDi@£}SoV gʟ'2 hݬugsD#6yeINoAea#"x2%q+ZuqPTB{-%ec+C;߬pKp `Bڦ{8:^ 0OIm v/߹t1{WYQ]5'W >~t.Z,d၏:Ryυ^q̥L7$$ MEg ,tVǙ@ [="9g;6ZY "eE2=G&YUd5p7n͓e ۈNI2%JK6b_q}81QFUCk7bJZE 2>3x.JmXd"\S뜛 D7Goi8on0,ZBV"H117@7stiiR'"G + <2Y?yk خ[ 'Xcw$.ljwg͘2ݗR4,{T'`4Ugf:VGM> O8W';X3:qrAJ;%&40Gmz򌡟s> Jxkx~b?1.ӖX}2upP2)Bᇏo4aW2;-]U=qY:A%-XX>ͳy}n͝ᴩW{,ˮO-ïGWB #Մ~%q~ azdl_i{d"Q33N@ؚ[Q((kh0M1̈́ō=R4PȺ"Vm2V]ΪY(:Yԣw@['1ܼ2B|!HqSԶ|厂5_.zѥTe5\K(a`J7˦ Q2q7u4jg veF.7JiJw>#u\C^r6į8FhVvD`sW`QP^!2҄7mLfk`GӤd~qHQI^[Cj7WQKI%a$fY|:rÏRS¶m6D-Z"I1L;O GM ih8|S?uSCvܹ-wf3nU6ebCK ГmP;r[hb+cCU>k t6M 29M\qN}.?.C9>TKMTۥkL/S]x#i(A[s:oN̬OSP{rVW{`V6H;W( a0H#WQ& zwBe:~N\Ꚑ(&_:6qp 'C5+<2Єup4pQ8&q/HȾ=췄+{{/o&S\WbNZP P]PkGRtXptU<-ԇ׉B`2F:Sp#;Lr=gFULD.͊ӂECpb~@x`& ܷd6vr _!JRw@H%Vc gPCsPgL|2PAi2\oi>:8P4hKD%2iwg=iC7*8 ׸B˶U%r YaswuQ Mf$2j?ӹH|,qv!U?}7_}n0uΡ^F;֤!"D :'DG woC īH"4Ypx3B6Ֆ:^HPCܪ? yifŚX-)f5m@;:)DE`~KhVaƷaqD~UvYv#Xh8Au `β)\&ga3|nH"_c0"4֯ڕ̯؀5?:BԂt5 `6:YO!}UG_Dj+ج OJ@c@ɣy}N4іmfg7j6Ur1_e7]]ހ^Nq\sE<*SB[<Έh H8v;jlSWOJDum]v)T.^T?3Wj7cʊM BNɽ3&=ssSx4ɪ:ʏ¼tL{滹 }~ Έ_'y+(X\W[7T G幼![WS?i2&7A\j6Vyh5Bl 1ud M85MG쇱5VaP-D~M0C7׏ۍoUbMFu>zS^w9sƧ,U"WiW7sօGB3J"̨S6bE dp4#\W >%|H# Q Ŀ/8?XMB!|:Ő9pMSC(IrBj;|?X*Zޡ3tKj=2R:"fVI[V! f5}3B!\G? ض̴BTcLE6ɨ!AkXiE|Ikm )i9SP;x6wzd広=Ͽ.CGޗm@aD9\ec߯Ϛ,>]h,4}l;)>~˿Ah$ >,4/5wYۙ|љۜ9NJ*g2oFgL֤MDGr] VQY 7a.ISL~Xj R$14ׁM.S<| " V\ݳu}=D<-˸ޘS$K A2K82 4Y>=oy8hI)YxH :7$=|՜#wMaA؈=[w\SN8KS (/~xɺsDbWHݹ/pկ1 ^ͭ:aYoZS O/ I嫔UAB;UZ:SNkIv<ٙ4*-4a ͖/ʯ1(/*혆KLQ-{Hd]*>$;mj3ur)-Y~o:ƕaq9V,E/չ^I$]ѩ,"%mW" #a@"S؏W]Y*0rD6A=0.e39n'< axel|ȝܲ:=BLqN0BC3Ὤf\zy+Ei ~+/9ˆl~HjKjUϘ'?yYzwk>" }҅tw>z CGX!zi][[+ lV }yZ Q6T1zȎMt]rmTy?8lWQhArbHoBV9}._`RCAe ԦW#ଔbSt9TZ:~\{ĽNZ[^=ݾʙe܂#lu u4oY! sM+WcsU_[pauhV,jhjãg|7$\XBn(uM Z;0yי :8m󊓶FSӻxt[r6i74TsϙO)SN$TMfs_ID^?'::'rd;ܣ9i$DC^ aK3PĽp  !+LV({!盧hpo6a;ݏT:> 3ΩGx#Gix~N]@ؒ*|ZJG\XCP;/ P랤bk7˷_\K%zK==yx>qY'R'A@*ct8S'('H30*7n0^@׃~Ȁ\WȨH`5! |iI zzr9dnF_t|Z9=[הeNĕݮ~fո.8.m0+f zp暠__~$hZΣ]Us36xƃ 'Q{`~ f?IҸڹekvS<S5f- +Kf)kNGrl"]@L J2goVHmIJ +S2{|qQ0 %=]͛X S!ἾSsBX kX+R1Cz"BJd{ 4%aN:zwnA˂3b|[4Y"5fexɒ+]}'v)'y>$(A&>dћ dʧ =ߺhnJT17p'4HzL ltb-lη~(ɭNf|NIu<ﻻmZ]Ofdf wG~=5)1ŘI;){&6P~b$k񍢩X f&$.wfh`|% a!1C7p#=&V\3r#%em[yij24S_7v4r@BfQmJ0_'k:ĴEFkyZh`}h9?)n+#P,5=r `@º5p@Y !yl["[JVޔmSMS\Lkf9ɇEmVw/Qt׶$cǹk#Hj4xQf<zuSO pHaDJ._7 \&dh2d;GgY;%_7MHM"nBZF3.Ft/U+X.HRwOqRUw{ƠpxFiF( S`nmD>!=6= 2nGmr; E yHS,e¡8ĝ^ޠ )Y٬iW4v+}|x %pл$ehhr:>uXoiG8%_')F!غ2ɰ{xRnsӸHxzX22ख़%_UMrKvhò3&JíMgRKBT w6x9h2e.dVI9G{lۛ+˛|1~a+ /hP=7M!>MMO@*``M->'51C|pktiU4 gQQ P;ϮJSG@dͫcK 3PlQgUҷx1yJ.(NtQ xCUIey RCg-DtL䓍]#rmR/Eav<垣M©JBPnӧXԸԹ¿e<_d2MqDnApNg泆H.UHv?Wm {qB3bHn&NC2I*͓/t)+̞u E>Be1>4+  FB}Qua}Ӛ!>lTeK†QwNAO"lz٫@WERs"XA%;izZz"pre<)INʠ%Y11#bpWLrBW>!g7IUKC3LZ{;U0)c-e"c#@_ãjy>{~V1{; Y#\-4nvRXdH^ߗ؜%&\bR!wBEc#OIL. @CG:9uNH;b{υigG핝gM|K>LAc+o6v+_cNQ7ʹE-4Όle{ςˢh0h "0uls r4_~ާ!\R謞 l*;Įas|zx:'δ1k?Lr ~'7&#ŜQ֨/VanA c Gc0V&joi!cߘC|jyq P 1!qs:1 X'G@zzͼnmS\;+.=l$A2sJ OIFi4"K<"3hD9=aWU~!뚺R ?*Zm܃һ3xGb j|t^WHu{V5 H؄})\3> d\2O{.DOn$ޛϽ}Fdk~}wDM63-lĬlЍ@*#vFf㿘́i2$(YL 蕲Os.鵋dt-yQxM;y('Nʭz~EsYN7BpwĨM8m gvL |(' qVn"N='8jH1CUh8j0z;zSHp0&tG>MquY@  ΉRR;]ikp8#`9~$z׹sC \<8M^V&Q[8xhK\i,8Gi{QEms Ðdoj'a[#vFwfB1pS Sڴf1Nl8QlͧzE *.V=[vJ@0eYẘZsU1,棔7^>'1޽gP(X6?gc w(Z"5~¯UU}NPZa.֩H;<|`߾M U[\JEgΡț'LEc9;,.no+䚤anF:;IԠdd"SGm;c(ZIdC9ߨAT y%<W4;Rj:,t[H㦃A~, #%jxtoFb;:XۅZŪNk;"IdX:앛[ 6!%(- )c#$-ďNh"J_ϡ NOin)=V $m\WjV`Fv3C6܊Fizc{s"/6ULJ3*e#ci rQJ`42$=7VX[Z-آ]֭8\K+#uV =-}w8W -0#qR:(M§x0,\oBDb*%0sfyۭYSȨa˦'s > o4 FzzWJ.*TJ~%>Nc:a?Et/=Y<,`$Ɂ)zi~0hlV%ߡ. [híк< fe,$}^*}?U?^IMlʀǤx̗Yڰ(H2yPo &Bܫțʟq$p p$/DATǽ?rtH3`DV}RGa`\ή6~'˒z0%ڲ捻,H1iүkPNUǤD\g<}⋏j%P˔p@|pCF.KH+X x챕9}E(n1̸ n{%'P9 SyE AA)'h@ӆܒHlawjB7U ]>3Cێcs[}SG,s( NcM;wE#j1%')F_SW4hiس~hjB4W>+{7C$W6AKwKk eCpkS}_G Xn4=3-2[2vJbJ17ȐMN':3&ĕpG5 >:{~kdN;p/CU35-tP1wJ|_it+;[XX+ ~'ȹXd׻ffU i-/.BAc_+淯F3 %UAxK^qAٳS$EؽGzV2d)ʄ*=@ T`6˗p$*J]=kFiA^UEġs-|a7C뙣̫ZNJSj`7JlwVEl2Mpq0irwP0}2]/<8:헚*`7A,*yqL$l-眡U43&] &j#ɟh)27MH̖eȵ'gѣ+3oӔOt> J4Ze_~\L]uodi9e8k>p(dckIrvRaX4++Kq, HD/sUoΡ.Md!Ok/V]X{$춿2^N.~sSЂ))~i@w,gP04l)%O} S*dpAR{c_ \JgxeFw1՟rp>2V6̷1e{iVy燅-&/SX.!u"|@uicj`Oafsp(n 8Kz9&axeYyc=Ȣ G2c{'̕xVy&4nI3P M(u!VS G,켎~aVqz2BYXħ"$e?&KCqIsMGB M/n銇e&)`=+VqD;Z4[ƀ5s#7''Z7Pc>x8v!/ T _<=75#Um#PJF4cJv 0aNZ¿%OS`#{QL kߌ?r5m;A`oZN> JG@wWdbH?q%0Ok$dvylW5?M=#u!7eCbٱt$ExI G _ō\wgB274J6H)CkEgko5}XC ~$R}%EB5SU27;"R=4۝b^?5o|rs;\A18#b-ו@[C`PlU}dv|=ssn ˏCګt?|-_ҹTCO<vJ`7S{{5JXEV > V{|16i-{1 gJiz/='7E_z0| ج@Eߗ4|ꙩ*SDd'a/',ypARsZ偝\:~BA] >cs*"n$PH-/o:q;gmĆ?od\JEhiLG RrXn@x)bA #7? my &]IUzێDZ cBF BX/ٔWYt][[kpfwc0dsd_ľ}CcQՌk-ܪ_1$g昷 Wb&N%*rX{ yuV'VZ:@C{lZ(K[9uܲ =N ,U? ]a*־Mt48o`/:c?83ʚ;eR[Su[ 2Hd *^}).bG$&WS4 O3Pf[Yi%xy(,-jh{fCIŔ☾ZOY 3@BKmW".|A%= D/0?g7s,xV>B0/k̒_zvtE,D}Qm;Rv' {_8Qq2'#XR"pgiq۳Ċ'drE%oy5W>哳{t 硴?7fj9=p^s wG òa]T(_ExЫ| U?ZY?q[4E #NCK,=玽:/ul3e|H GKh#.lC`5sn^~|_F_)i5TsT[C01yA^J/` 4|vadk%ORHLޤg>۸5}H<sigjlV E>>By4DL|K&N}5HlO6o\KGu dOk-Ь0=>Qed FZJn5s:R!}U@酃̻߽  :5"(+]O3>sN8# ݋aJnCH'#g%X&""<fZך !h)iHϬ9`@Jaorm&u5^]qY kHg60Dr<~uF?CS}Lh+ruuI]>N~0k~)%k^TM݄>,/oG11_h<5/ʤ]|΀a+$WxdX36T;3Ke#&vVvU{>E?]Uy]v-”sxKyظDZsz"TwQ s*u@qټ0C[zV3q}_V5:s,q<c(6@ @%a *H]wsG +*!:]"/P4NL¯qvR7gNǃ\V۽o;-hn ހR9XCmF'k]hhE.gYD[*q8o\|+BpdNBY wR7W%‡28Ãі֧A[b@Cv5s8nЦz!296ҳ -T+GC k1$= MOa8&IܱBL`Y`!xq^jlLDMf@߯= ey?}3߹q 0KdW6:wUASC0V?.B!,tr ?ˈ+vj9![w3"Bohugo-0.131.0/docshelper/000077500000000000000000000000001465312036400147525ustar00rootroot00000000000000hugo-0.131.0/docshelper/docs.go000066400000000000000000000026041465312036400162330ustar00rootroot00000000000000// Copyright 2017-present The Hugo Authors. All rights reserved. // // 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. // Package docshelper provides some helpers for the Hugo documentation, and // is of limited interest for the general Hugo user. package docshelper import "fmt" type ( DocProviderFunc = func() DocProvider DocProvider map[string]any ) var docProviderFuncs []DocProviderFunc func AddDocProviderFunc(fn DocProviderFunc) { docProviderFuncs = append(docProviderFuncs, fn) } func GetDocProvider() DocProvider { provider := make(DocProvider) for _, fn := range docProviderFuncs { p := fn() for k, v := range p { if _, found := provider[k]; found { // We use to merge config, but not anymore. // These constructs will eventually go away, so just make it simple. panic(fmt.Sprintf("Duplicate doc provider key: %q", k)) } provider[k] = v } } return provider } hugo-0.131.0/go.mod000066400000000000000000000173261465312036400137410ustar00rootroot00000000000000module github.com/gohugoio/hugo require ( github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 github.com/alecthomas/chroma/v2 v2.14.0 github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c github.com/aws/aws-sdk-go-v2 v1.30.3 github.com/aws/aws-sdk-go-v2/service/cloudfront v1.38.4 github.com/bep/clocks v0.5.0 github.com/bep/debounce v1.2.0 github.com/bep/gitmap v1.6.0 github.com/bep/goat v0.5.0 github.com/bep/godartsass v1.2.0 github.com/bep/godartsass/v2 v2.1.0 github.com/bep/golibsass v1.1.1 github.com/bep/gowebp v0.3.0 github.com/bep/helpers v0.4.0 github.com/bep/imagemeta v0.7.5 github.com/bep/lazycache v0.4.0 github.com/bep/logg v0.4.0 github.com/bep/mclib v1.20400.20402 github.com/bep/overlayfs v0.9.2 github.com/bep/simplecobra v0.4.0 github.com/bep/tmc v0.5.1 github.com/cespare/xxhash/v2 v2.3.0 github.com/clbanning/mxj/v2 v2.7.0 github.com/cli/safeexec v1.0.1 github.com/disintegration/gift v1.2.1 github.com/dustin/go-humanize v1.0.1 github.com/evanw/esbuild v0.23.0 github.com/fatih/color v1.17.0 github.com/fortytw2/leaktest v1.3.0 github.com/frankban/quicktest v1.14.6 github.com/fsnotify/fsnotify v1.7.0 github.com/getkin/kin-openapi v0.123.0 github.com/ghodss/yaml v1.0.0 github.com/gobuffalo/flect v1.0.2 github.com/gobwas/glob v0.2.3 github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e github.com/gohugoio/hashstructure v0.1.0 github.com/gohugoio/httpcache v0.7.0 github.com/gohugoio/hugo-goldmark-extensions/extras v0.2.0 github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0 github.com/gohugoio/locales v0.14.0 github.com/gohugoio/localescompressed v1.0.1 github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95 github.com/google/go-cmp v0.6.0 github.com/gorilla/websocket v1.5.3 github.com/hairyhenderson/go-codeowners v0.5.0 github.com/jdkato/prose v1.2.1 github.com/kylelemons/godebug v1.1.0 github.com/kyokomi/emoji/v2 v2.2.13 github.com/magefile/mage v1.15.0 github.com/makeworld-the-better-one/dither/v2 v2.4.0 github.com/marekm4/color-extractor v1.2.1 github.com/mattn/go-isatty v0.0.20 github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/muesli/smartcrop v0.3.0 github.com/niklasfasching/go-org v1.7.0 github.com/olekukonko/tablewriter v0.0.5 github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 github.com/pelletier/go-toml/v2 v2.2.2 github.com/rogpeppe/go-internal v1.12.0 github.com/sanity-io/litter v1.5.5 github.com/spf13/afero v1.11.0 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.1 github.com/spf13/fsync v0.10.1 github.com/spf13/pflag v1.0.5 github.com/tdewolff/minify/v2 v2.20.37 github.com/tdewolff/parse/v2 v2.7.15 github.com/yuin/goldmark v1.7.4 github.com/yuin/goldmark-emoji v1.0.3 go.uber.org/automaxprocs v1.5.3 gocloud.dev v0.38.0 golang.org/x/exp v0.0.0-20221031165847-c99f073a8326 golang.org/x/image v0.18.0 golang.org/x/mod v0.19.0 golang.org/x/net v0.27.0 golang.org/x/sync v0.7.0 golang.org/x/text v0.16.0 golang.org/x/tools v0.23.0 google.golang.org/api v0.189.0 gopkg.in/yaml.v2 v2.4.0 ) require ( cloud.google.com/go v0.115.0 // indirect cloud.google.com/go/auth v0.7.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.3 // indirect cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.10 // indirect cloud.google.com/go/storage v1.41.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/aws/aws-sdk-go v1.51.30 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 // indirect github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 // indirect github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 // indirect github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect github.com/aws/smithy-go v1.20.3 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/dlclark/regexp2 v1.11.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-openapi/jsonpointer v0.20.2 // indirect github.com/go-openapi/swag v0.22.8 // indirect github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/google/wire v0.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/invopop/yaml v0.2.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect github.com/perimeterx/marshmallow v1.1.5 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0 // indirect go.opentelemetry.io/otel v1.26.0 // indirect go.opentelemetry.io/otel/metric v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect golang.org/x/crypto v0.25.0 // indirect golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/genproto v0.0.0-20240722135656-d784300faade // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade // indirect google.golang.org/grpc v1.64.1 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect howett.net/plist v1.0.0 // indirect software.sslmate.com/src/go-pkcs12 v0.2.0 // indirect ) go 1.21.8 hugo-0.131.0/go.sum000066400000000000000000002477341465312036400137760ustar00rootroot00000000000000cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= cloud.google.com/go/auth v0.7.2 h1:uiha352VrCDMXg+yoBtaD0tUF4Kv9vrtrWPYXwutnDE= cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= cloud.google.com/go/auth/oauth2adapt v0.2.3 h1:MlxF+Pd3OmSudg/b1yZ5lJwoXCEaeedAguodky1PcKI= cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/iam v1.1.10 h1:ZSAr64oEhQSClwBL670MsJAW5/RLiC6kfw3Bqmd5ZDI= cloud.google.com/go/iam v1.1.10/go.mod h1:iEgMq62sg8zx446GCaijmA2Miwg5o3UbO+nI47WHJps= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0 h1:H+U3Gk9zY56G3u872L82bk4thcsy2Gghb9ExT4Zvm1o= github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.0/go.mod h1:mgrmMSgaLp9hmax62XQTd0N4aAqSE5E0DulSpVYK7vc= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0 h1:AifHbc4mg0x9zW52WOpKbsHaDKuRhlI7TVl47thgQ70= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.5.0/go.mod h1:T5RfihdXtBDxt1Ch2wobif3TvzTdumDy29kahv6AV9A= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2 h1:YUUxeiOWgdAQE3pXt2H7QXzZs0q8UBjgRbl56qo8GYM= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.3.2/go.mod h1:dmXQgZuiSubAecswZE+Sm8jkvEa7kQgTPVRvwL/nd0E= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 h1:+tu3HOoMXB7RXEINRVIpxJCT+KdYiI7LAEAUrOw3dIU= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE= github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E= github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I= github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc= github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c h1:651/eoCRnQ7YtSjAnSzRucrJz+3iGEFt+ysraELS81M= github.com/armon/go-radix v1.0.1-0.20221118154546-54df44f2176c/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aws/aws-sdk-go v1.51.30 h1:RVFkjn9P0JMwnuZCVH0TlV5k9zepHzlbc4943eZMhGw= github.com/aws/aws-sdk-go v1.51.30/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY= github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15 h1:7Zwtt/lP3KNRkeZre7soMELMGNoBrutx8nobg1jKWmo= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.15/go.mod h1:436h2adoHb57yd+8W+gYPrrA9U/R/SuAuOO42Ushzhw= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15/go.mod h1:U9ke74k1n2bf+RIgoX1SXFed1HLs51OgUSs+Ph0KJP8= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 h1:C6WHdGnTDIYETAm5iErQUiVNsclNx9qbJVPIt03B6bI= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15/go.mod h1:ZQLZqhcu+JhSrA9/NXRm8SkDvsycE+JkV3WGY41e+IM= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5 h1:81KE7vaZzrl7yHBYHVEzYB8sypz11NMOZ40YlWvPxsU= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.5/go.mod h1:LIt2rg7Mcgn09Ygbdh/RdIm0rQ+3BNkbP1gyVMFtRK0= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.38.4 h1:I/sQ9uGOs72/483obb2SPoa9ZEsYGbel6jcTTwD/0zU= github.com/aws/aws-sdk-go-v2/service/cloudfront v1.38.4/go.mod h1:P6ByphKl2oNQZlv4WsCaLSmRncKEcOnbitYLtJPfqZI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7 h1:ZMeFZ5yk+Ek+jNr1+uwCd2tG89t6oTS5yVWpa6yy2es= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.7/go.mod h1:mxV05U+4JiHqIpGqqYXOHLPKUC6bDXC44bsUhNjOEwY= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5 h1:f9RyWNtS8oH7cZlbn+/JNPpjUk5+5fLd5lM9M0i49Ys= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.5/go.mod h1:h5CoMZV2VF297/VLhRhO1WF+XYWOzXo+4HsObA4HjBQ= github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1 h1:6cnno47Me9bRykw9AEv9zkXE+5or7jz8TsskTTccbgc= github.com/aws/aws-sdk-go-v2/service/s3 v1.53.1/go.mod h1:qmdkIIAC+GCLASF7R2whgNrJADz0QZPX+Seiw/i4S3o= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= github.com/aws/smithy-go v1.20.3 h1:ryHwveWzPV5BIof6fyDvor6V3iUL7nTfiTKXHiW05nE= github.com/aws/smithy-go v1.20.3/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps= github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU= github.com/bep/debounce v1.2.0 h1:wXds8Kq8qRfwAOpAxHrJDbCXgC5aHSzgQb/0gKsHQqo= github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= github.com/bep/gitmap v1.6.0 h1:sDuQMm9HoTL0LtlrfxjbjgAg2wHQd4nkMup2FInYzhA= github.com/bep/gitmap v1.6.0/go.mod h1:n+3W1f/rot2hynsqEGxGMErPRgT41n9CkGuzPvz9cIw= github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA= github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c= github.com/bep/godartsass v1.2.0 h1:E2VvQrxAHAFwbjyOIExAMmogTItSKodoKuijNrGm5yU= github.com/bep/godartsass v1.2.0/go.mod h1:6LvK9RftsXMxGfsA0LDV12AGc4Jylnu6NgHL+Q5/pE8= github.com/bep/godartsass/v2 v2.1.0 h1:fq5Y1xYf4diu4tXABiekZUCA+5l/dmNjGKCeQwdy+s0= github.com/bep/godartsass/v2 v2.1.0/go.mod h1:AcP8QgC+OwOXEq6im0WgDRYK7scDsmZCEW62o1prQLo= github.com/bep/golibsass v1.1.1 h1:xkaet75ygImMYjM+FnHIT3xJn7H0xBA9UxSOJjk8Khw= github.com/bep/golibsass v1.1.1/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA= github.com/bep/gowebp v0.3.0 h1:MhmMrcf88pUY7/PsEhMgEP0T6fDUnRTMpN8OclDrbrY= github.com/bep/gowebp v0.3.0/go.mod h1:ZhFodwdiFp8ehGJpF4LdPl6unxZm9lLFjxD3z2h2AgI= github.com/bep/helpers v0.4.0 h1:ab9veaAiWY4ST48Oxp5usaqivDmYdB744fz+tcZ3Ifs= github.com/bep/helpers v0.4.0/go.mod h1:/QpHdmcPagDw7+RjkLFCvnlUc8lQ5kg4KDrEkb2Yyco= github.com/bep/imagemeta v0.7.5 h1:swAwB5GeCIKcjS7+iFruIiuUl6Kj0qIGYxd5/EC67iw= github.com/bep/imagemeta v0.7.5/go.mod h1:5piPAq5Qomh07m/dPPCLN3mDJyFusvUG7VwdRD/vX0s= github.com/bep/lazycache v0.4.0 h1:X8yVyWNVupPd4e1jV7efi3zb7ZV/qcjKQgIQ5aPbkYI= github.com/bep/lazycache v0.4.0/go.mod h1:NmRm7Dexh3pmR1EignYR8PjO2cWybFQ68+QgY3VMCSc= github.com/bep/logg v0.4.0 h1:luAo5mO4ZkhA5M1iDVDqDqnBBnlHjmtZF6VAyTp+nCQ= github.com/bep/logg v0.4.0/go.mod h1:Ccp9yP3wbR1mm++Kpxet91hAZBEQgmWgFgnXX3GkIV0= github.com/bep/mclib v1.20400.20402 h1:olpCE2WSPpOAbFE1R4hnftSEmQ34+xzy2HRzd0m69rA= github.com/bep/mclib v1.20400.20402/go.mod h1:pkrk9Kyfqg34Uj6XlDq9tdEFJBiL1FvCoCgVKRzw1EY= github.com/bep/overlayfs v0.9.2 h1:qJEmFInsW12L7WW7dOTUhnMfyk/fN9OCDEO5Gr8HSDs= github.com/bep/overlayfs v0.9.2/go.mod h1:aYY9W7aXQsGcA7V9x/pzeR8LjEgIxbtisZm8Q7zPz40= github.com/bep/simplecobra v0.4.0 h1:ufX/6WcOtEVJdCd7hsztTWURlZkOaWYOD+zCqrM8qUE= github.com/bep/simplecobra v0.4.0/go.mod h1:evSM6iQqRwqpV7W4H4DlYFfe9mZ0x6Hj5GEOnIV7dI4= github.com/bep/tmc v0.5.1 h1:CsQnSC6MsomH64gw0cT5f+EwQDcvZz4AazKunFwTpuI= github.com/bep/tmc v0.5.1/go.mod h1:tGYHN8fS85aJPhDLgXETVKp+PR382OvFi2+q2GkGsq0= github.com/bep/workers v1.0.0 h1:U+H8YmEaBCEaFZBst7GcRVEoqeRC9dzH2dWOwGmOchg= github.com/bep/workers v1.0.0/go.mod h1:7kIESOB86HfR2379pwoMWNy8B50D7r99fRLUyPSNyCs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME= github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s= github.com/cli/safeexec v1.0.0/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= github.com/cli/safeexec v1.0.1 h1:e/C79PbXF4yYTN/wauC4tviMxEV13BwljGj0N9j+N00= github.com/cli/safeexec v1.0.1/go.mod h1:Z/D4tTN8Vs5gXYHDCbaM1S/anmEDnJb1iW0+EJ5zx3Q= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/disintegration/gift v1.2.1 h1:Y005a1X4Z7Uc+0gLpSAsKhWi4qLtsdEcMIbbdvdZ6pc= github.com/disintegration/gift v1.2.1/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanw/esbuild v0.23.0 h1:PLUwTn2pzQfIBRrMKcD3M0g1ALOKIHMDefdFCk7avwM= github.com/evanw/esbuild v0.23.0/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48= github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/getkin/kin-openapi v0.123.0 h1:zIik0mRwFNLyvtXK274Q6ut+dPh6nlxBp0x7mNrPhs8= github.com/getkin/kin-openapi v0.123.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicbw= github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI= github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM= github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e h1:QArsSubW7eDh8APMXkByjQWvuljwPGAGQpJEFn0F0wY= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e/go.mod h1:3Ltoo9Banwq0gOtcOwxuHG6omk+AwsQPADyw2vQYOJQ= github.com/gohugoio/hashstructure v0.1.0 h1:kBSTMLMyTXbrJVAxaKI+wv30MMJJxn9Q8kfQtJaZ400= github.com/gohugoio/hashstructure v0.1.0/go.mod h1:8ohPTAfQLTs2WdzB6k9etmQYclDUeNsIHGPAFejbsEA= github.com/gohugoio/httpcache v0.7.0 h1:ukPnn04Rgvx48JIinZvZetBfHaWE7I01JR2Q2RrQ3Vs= github.com/gohugoio/httpcache v0.7.0/go.mod h1:fMlPrdY/vVJhAriLZnrF5QpN3BNAcoBClgAyQd+lGFI= github.com/gohugoio/hugo-goldmark-extensions/extras v0.2.0 h1:MNdY6hYCTQEekY0oAfsxWZU1CDt6iH+tMLgyMJQh/sg= github.com/gohugoio/hugo-goldmark-extensions/extras v0.2.0/go.mod h1:oBdBVuiZ0fv9xd8xflUgt53QxW5jOCb1S+xntcN4SKo= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0 h1:PCtO5l++psZf48yen2LxQ3JiOXxaRC6v0594NeHvGZg= github.com/gohugoio/hugo-goldmark-extensions/passthrough v0.2.0/go.mod h1:g9CCh+Ci2IMbPUrVJuXbBTrA+rIIx5+hDQ4EXYaQDoM= github.com/gohugoio/locales v0.14.0 h1:Q0gpsZwfv7ATHMbcTNepFd59H7GoykzWJIxi113XGDc= github.com/gohugoio/locales v0.14.0/go.mod h1:ip8cCAv/cnmVLzzXtiTpPwgJ4xhKZranqNqtoIu0b/4= github.com/gohugoio/localescompressed v1.0.1 h1:KTYMi8fCWYLswFyJAeOtuk/EkXR/KPTHHNN9OS+RTxo= github.com/gohugoio/localescompressed v1.0.1/go.mod h1:jBF6q8D7a0vaEmcWPNcAjUZLJaIVNiwvM3WlmTvooB0= github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95 h1:sgew0XCnZwnzpWxTt3V8LLiCO7OQi3C6dycaE67wfkU= github.com/gohugoio/testmodBuilder/mods v0.0.0-20190520184928-c56af20f2e95/go.mod h1:bOlVlCa1/RajcHpXkrUXPSHB/Re1UnlXxD1Qp8SKOd8= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.6.0 h1:HBkoIh4BdSxoyo9PveV8giw7ZsaBOvzWKfcg/6MrVwI= github.com/google/wire v0.6.0/go.mod h1:F4QhpQ9EDIdJ1Mbop/NZBRB+5yrR6qg3BnctaoUk6NA= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/hairyhenderson/go-codeowners v0.5.0 h1:dpQB+hVHiRc2VVvc2BHxkuM+tmu9Qej/as3apqUbsWc= github.com/hairyhenderson/go-codeowners v0.5.0/go.mod h1:R3uW1OQXEj2Gu6/OvZ7bt6hr0qdkLvUWPiqNaWnexpo= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY= github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q= github.com/jdkato/prose v1.2.1 h1:Fp3UnJmLVISmlc57BgKUzdjr0lOtjqTZicL3PaYy6cU= github.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyokomi/emoji/v2 v2.2.13 h1:GhTfQa67venUUvmleTNFnb+bi7S3aocF7ZCXU9fSO7U= github.com/kyokomi/emoji/v2 v2.2.13/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5CqkmoirZZP9qE= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/makeworld-the-better-one/dither/v2 v2.4.0 h1:Az/dYXiTcwcRSe59Hzw4RI1rSnAZns+1msaCXetrMFE= github.com/makeworld-the-better-one/dither/v2 v2.4.0/go.mod h1:VBtN8DXO7SNtyGmLiGA7IsFeKrBkQPze1/iAeM95arc= github.com/marekm4/color-extractor v1.2.1 h1:3Zb2tQsn6bITZ8MBVhc33Qn1k5/SEuZ18mrXGUqIwn0= github.com/marekm4/color-extractor v1.2.1/go.mod h1:90VjmiHI6M8ez9eYUaXLdcKnS+BAOp7w+NpwBdkJmpA= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/montanaflynn/stats v0.6.3/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/muesli/smartcrop v0.3.0 h1:JTlSkmxWg/oQ1TcLDoypuirdE8Y/jzNirQeLkxpA6Oc= github.com/muesli/smartcrop v0.3.0/go.mod h1:i2fCI/UorTfgEpPPLWiFBv4pye+YAG78RwcQLUkocpI= github.com/neurosnap/sentences v1.0.6/go.mod h1:pg1IapvYpWCJJm/Etxeh0+gtMf1rI1STY9S7eUCPbDc= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ= github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niklasfasching/go-org v1.7.0 h1:vyMdcMWWTe/XmANk19F4k8XGBYg0GQ/gJGMimOjGMek= github.com/niklasfasching/go-org v1.7.0/go.mod h1:WuVm4d45oePiE0eX25GqTDQIt/qPW1T9DGkRscqLW5o= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd h1:CmH9+J6ZSsIjUK3dcGsnCnO41eRBOnY12zwkn5qVwgc= github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd/go.mod h1:hPqNNc0+uJM6H+SuU8sEs5K5IQeKccPqeSjfgcKGgPk= github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= github.com/shogo82148/go-shuffle v0.0.0-20180218125048-27e6095f230d/go.mod h1:2htx6lmL0NGLHlO8ZCf+lQBGBHIbEujyywxJArf+2Yc= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/fsync v0.10.1 h1:JRnB7G72b+gIBaBcpn5ibJSd7ww1iEahXSX2B8G6dSE= github.com/spf13/fsync v0.10.1/go.mod h1:y+B41vYq5i6Boa3Z+BVoPbDeOvxVkNU5OBXhoT8i4TQ= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v0.0.0-20161117074351-18a02ba4a312/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tdewolff/minify/v2 v2.20.37 h1:Q97cx4STXCh1dlWDlNHZniE8BJ2EBL0+2b0n92BJQhw= github.com/tdewolff/minify/v2 v2.20.37/go.mod h1:L1VYef/jwKw6Wwyk5A+T0mBjjn3mMPgmjjA688RNsxU= github.com/tdewolff/parse/v2 v2.7.15 h1:hysDXtdGZIRF5UZXwpfn3ZWRbm+ru4l53/ajBRGpCTw= github.com/tdewolff/parse/v2 v2.7.15/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark v1.7.4 h1:BDXOHExt+A7gwPCJgPIIq7ENvceR7we7rOS9TNoLZeg= github.com/yuin/goldmark v1.7.4/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E= github.com/yuin/goldmark-emoji v1.0.3 h1:aLRkLHOuBR2czCY4R8olwMjID+tENfhyFDMCRhbIQY4= github.com/yuin/goldmark-emoji v1.0.3/go.mod h1:tTkZEbwu5wkPmgTcitqddVxY9osFZiavD+r4AzQrh1U= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0 h1:A3SayB3rNyt+1S6qpI9mHPkeHTZbD7XILEqWnYZb2l0= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.51.0/go.mod h1:27iA5uvhuRNmalO+iEUdVn5ZMj2qy10Mm+XRIpRmyuU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0 h1:Xs2Ncz0gNihqu9iosIZ5SkBbWo5T8JhhLJFMQL1qmLI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0/go.mod h1:vy+2G/6NvVMpwGX/NyLqcC41fxepnuKHk16E6IZUcJc= go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= go.opentelemetry.io/otel/sdk v1.24.0 h1:YMPPDNymmQN3ZgczicBY3B6sf9n62Dlj9pWD3ucgoDw= go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= gocloud.dev v0.38.0 h1:SpxfaOc/Fp4PeO8ui7wRcCZV0EgXZ+IWcVSLn6ZMSw0= gocloud.dev v0.38.0/go.mod h1:3XjKvd2E5iVNu/xFImRzjN0d/fkNHe4s0RiKidpEUMQ= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20221031165847-c99f073a8326 h1:QfTh0HpN6hlw6D3vu8DAwC8pBIwikq0AI1evdm+FksE= golang.org/x/exp v0.0.0-20221031165847-c99f073a8326/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.18.0 h1:jGzIakQa/ZXI1I0Fxvaa9W7yP25TqT6cHIHn+6CqvSQ= golang.org/x/image v0.18.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8= golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.189.0 h1:equMo30LypAkdkLMBqfeIqtyAnlyig1JSZArl4XPwdI= google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20240722135656-d784300faade h1:lKFsS7wpngDgSCeFn7MoLy+wBDQZ1UQIJD4UNM1Qvkg= google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade h1:oCRSWfwGXQsqlVdErcyTt4A93Y8fo0/9D4b1gnI++qo= google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.64.1 h1:LKtvyfbX3UGVPFcGqJ9ItpVWW6oN/2XqTxfAnwRRXiA= google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/neurosnap/sentences.v1 v1.0.6/go.mod h1:YlK+SN+fLQZj+kY3r8DkGDhDr91+S3JmTb5LSxFRQo0= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= howett.net/plist v1.0.0 h1:7CrbWYbPPO/PyNy38b2EB/+gYbjCe2DXBxgtOOZbSQM= howett.net/plist v1.0.0/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= software.sslmate.com/src/go-pkcs12 v0.2.0 h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE= software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ= hugo-0.131.0/helpers/000077500000000000000000000000001465312036400142645ustar00rootroot00000000000000hugo-0.131.0/helpers/content.go000066400000000000000000000155721465312036400162770ustar00rootroot00000000000000// Copyright 2019 The Hugo Authors. All rights reserved. // // 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. // Package helpers implements general utility functions that work with // and on content. The helper functions defined here lay down the // foundation of how Hugo works with files and filepaths, and perform // string operations on content. package helpers import ( "bytes" "html/template" "strings" "unicode" "unicode/utf8" "github.com/gohugoio/hugo/common/hexec" "github.com/gohugoio/hugo/common/loggers" "github.com/gohugoio/hugo/media" "github.com/spf13/afero" "github.com/gohugoio/hugo/markup/converter" "github.com/gohugoio/hugo/markup" "github.com/gohugoio/hugo/config" ) // ContentSpec provides functionality to render markdown content. type ContentSpec struct { Converters markup.ConverterProvider anchorNameSanitizer converter.AnchorNameSanitizer Cfg config.AllProvider } // NewContentSpec returns a ContentSpec initialized // with the appropriate fields from the given config.Provider. func NewContentSpec(cfg config.AllProvider, logger loggers.Logger, contentFs afero.Fs, ex *hexec.Exec) (*ContentSpec, error) { spec := &ContentSpec{ Cfg: cfg, } converterProvider, err := markup.NewConverterProvider(converter.ProviderConfig{ Conf: cfg, ContentFs: contentFs, Logger: logger, Exec: ex, }) if err != nil { return nil, err } spec.Converters = converterProvider p := converterProvider.Get("markdown") conv, err := p.New(converter.DocumentContext{}) if err != nil { return nil, err } if as, ok := conv.(converter.AnchorNameSanitizer); ok { spec.anchorNameSanitizer = as } else { // Use Goldmark's sanitizer p := converterProvider.Get("goldmark") conv, err := p.New(converter.DocumentContext{}) if err != nil { return nil, err } spec.anchorNameSanitizer = conv.(converter.AnchorNameSanitizer) } return spec, nil } // stripEmptyNav strips out empty